diff --git a/.gitignore b/.gitignore index 504a21b4251398698e2099cf82d3adf1539b435f..ed5197b86de6eddcb1e4017f86977744b599eb01 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,8 @@ documentation/design/*.pdf *.blg *.lof *.log -*.out \ No newline at end of file +*.out +.idea/gosdn.iml +.idea/modules.xml +.idea/vcs.xml +.idea/workspace.xml diff --git a/Programming.md b/Programming.md new file mode 100644 index 0000000000000000000000000000000000000000..1f2cfa542ff47e019dac01647d0c5da8cca1f72a --- /dev/null +++ b/Programming.md @@ -0,0 +1,33 @@ +# Collection of programming stuff + +## Dependencies + +* github.com/spf13/cobra: used for basic cli of gosdn, such as starting the daemon, get versioning info etc +* grpc +* ygot + +## Structure of the code + +main.go: main() function +nucleus/: core functionality of gosdn + +ygot (yang for go tools). +Checkout this in go: go get github.com/openconfig/ygot/ygot + +## Usefull things to know + +Regenerate gRPC code (https://grpc.io/docs/languages/go/quickstart/#regenerate-grpc-code) + +* ( cd ~/go/src/github.com/grpc-go/cmd/protoc-gen-go-grpc/ && go install . ) +* +protoc \ + --go_out=Mgrpc/service_config/service_config.proto=/internal/proto/grpc_service_config:. \ + --go-grpc_out=Mgrpc/service_config/service_config.proto=/internal/proto/grpc_service_config:. \ + --go_opt=paths=source_relative \ + --go-grpc_opt=paths=source_relative \ + cliInterface/gosdnCLI.proto + +Generate the ygot code: + +just type: go generate + diff --git a/cliInterface/gosdnCLI.proto b/cliInterface/gosdnCLI.proto new file mode 100644 index 0000000000000000000000000000000000000000..e53443f18a8ccb3c02ca38d373dc68d940d35fd4 --- /dev/null +++ b/cliInterface/gosdnCLI.proto @@ -0,0 +1,25 @@ +syntax = "proto3"; + +option go_package = "gitlab.fbi.h-da.de/cocsn/gosdn"; +option java_multiple_files = true; +option java_package = "de.h-da.fbi.gosdn.cliInterface"; +option java_outer_classname = "cliInterface"; + + +package cliInterface; + +// The greeting service definition. +service Greeter { + // Sends a greeting + rpc SayHello (HelloRequest) returns (HelloReply) {} +} + +// The request message containing the user's name. +message HelloRequest { + string name = 1; +} + +// The response message containing the greetings +message HelloReply { + string message = 1; +} diff --git a/gosdn-cli/gosdn-cli.go b/gosdn-cli/gosdn-cli.go new file mode 100644 index 0000000000000000000000000000000000000000..bdec44088f2fcb059c4c443e1d9ed24b00189c52 --- /dev/null +++ b/gosdn-cli/gosdn-cli.go @@ -0,0 +1,40 @@ +package main + +import ( + "context" + "google.golang.org/grpc" + "log" + "os" + pb "project-beachhead/grpc_interface" + "time" +) + +const ( + address = "localhost:55055" + defaultName = "gosdn-cli" +) + +// Based on the helloworld example of grpc.io + +func main() { + // Set up a connection to the server. + conn, err := grpc.Dial(address, grpc.WithInsecure(), grpc.WithBlock()) + if err != nil { + log.Fatalf("did not connect: %v", err) + } + defer conn.Close() + c := pb.NewGreeterClient(conn) + + // Contact the server and print out its response. + name := defaultName + if len(os.Args) > 1 { + name = os.Args[1] + } + ctx, cancel := context.WithTimeout(context.Background(), time.Second) + defer cancel() + r, err := c.SayHello(ctx, &pb.HelloRequest{Name: name}) + if err != nil { + log.Fatalf("could not greet: %v", err) + } + log.Printf("Greeting: %s", r.GetMessage()) +} diff --git a/main.go b/main.go new file mode 100644 index 0000000000000000000000000000000000000000..77f20684dacfe6f9862c4841159496bf1b1b2623 --- /dev/null +++ b/main.go @@ -0,0 +1,16 @@ +package main + +import ( + "gosdn/nucleus" +) + +// Generate the code out of the yang modules +//go:generate go run $GOPATH/src/github.com/openconfig/ygot/generator/generator.go -path=yang -output_file=yang-processor/gosdnyang.go.go -package_name=gosdnyang -generate_fakeroot -fakeroot_name=device -compress_paths=true -shorten_enum_leaf_names -exclude_modules=ietf-interfaces yang/openconfig-interfaces.yang yang/openconfig-if-ip.yang + +func main() { + + // hand off to cmd for further processing + nucleus.Execute() + + // nothing to see here, please move on! +} diff --git a/nucleus/controller.go b/nucleus/controller.go new file mode 100644 index 0000000000000000000000000000000000000000..1c7edae0d43013e7bef2ab9f720ac0a2d12de2dd --- /dev/null +++ b/nucleus/controller.go @@ -0,0 +1,49 @@ +package nucleus + +import ( + "fmt" + "github.com/openconfig/ygot/ygot" + "net" + yangPro "gosdn/yang-processor" +) + +// This is a test function in order to see how to generate JSON encoded openconfig stuff + +func AssembleJSON() { + // Build my device + d := &yangPro.Device{} + + interfaces, _ := net.Interfaces() + for _, iface := range interfaces { + fmt.Println(iface.Name) + + i, err := d.NewInterface(iface.Name) + if err != nil { + panic(err) + } + i.Mtu = ygot.Uint16(234) + //i.Mtu = ygot.Uint16(iface.MTU) + } + + // EmitJSON from the ygot library directly does .Validate() and outputs JSON in + // the specified format. + json, err := ygot.EmitJSON(d, &ygot.EmitJSONConfig{ + Format: ygot.RFC7951, + Indent: " ", + RFC7951Config: &ygot.RFC7951JSONConfig{ + AppendModuleName: true, + }, + }) + if err != nil { + panic(fmt.Sprintf("JSON demo error: %v", err)) + } + fmt.Println(json) + + // and now try to read the data from it... + // Device struct to unmarshal into. + loadd := &yangPro.Device{} + if err := yangPro.Unmarshal([]byte(json), loadd); err != nil { + panic(fmt.Sprintf("Cannot unmarshal JSON: %v", err)) + } + +} \ No newline at end of file diff --git a/nucleus/nucleus-core.go b/nucleus/nucleus-core.go new file mode 100644 index 0000000000000000000000000000000000000000..e7f60b1d0748230757b96c8ad869d772e4a340b0 --- /dev/null +++ b/nucleus/nucleus-core.go @@ -0,0 +1,83 @@ +package nucleus + +import ( + "context" + _ "github.com/mattn/go-sqlite3" + "google.golang.org/grpc" + "log" + "net" + pb "project-beachhead/grpc_interface" + "time" +) + +// TODO XXX This has to be moved to some configuration file +const ( + cli_control_port = "localhost:55055" +) + +// server is used to implement helloworld.GreeterServer. +type server struct { + pb.UnimplementedGreeterServer +} + +// SayHello implements helloworld.GreeterServer +func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) { + log.Printf("Received: %v", in.GetName()) + return &pb.HelloReply{Message: "Hello " + in.GetName()}, nil +} + +func getCLIGoing() { + log.Println("Starting: GetCLIGoing") + // Boot-up the control interface for the cli + cliControlListener, err := net.Listen("tcp", cli_control_port) + if err != nil { + log.Fatalf("failed to listen: %v", err) + } + + + cliControlServer := grpc.NewServer() + + pb.RegisterGreeterServer(cliControlServer, &server{}) + if err := cliControlServer.Serve(cliControlListener); err != nil { + log.Fatalf("failed to serve: %v", err) + } + log.Println("Started: GetCLIGoing") +} + +/* + * This function is used to start the core of the controller and any auxiliary services. + */ + +// Next-up: backend database. + +func StartUp() { + + log.Println ("This is the network superintendent...") + log.Println("Starting my ducks") + // Start the GRCP CLI + go getCLIGoing() + log.Println("and ready for take off") + +} + +/* + * nucleus.Run() is the "main loop" of the controller + */ + + +func Run() { + isRunning := true + + + // Test ygot + AssembleJSON() + + + + for isRunning { + time.Sleep(10*time.Second) + isRunning = false + } + + log.Println("Good bye....!") +} diff --git a/nucleus/root.go b/nucleus/root.go new file mode 100644 index 0000000000000000000000000000000000000000..c934fa7103018aebb7aac480af3a82ff17bde378 --- /dev/null +++ b/nucleus/root.go @@ -0,0 +1,39 @@ +package nucleus + +import ( + "fmt" + "github.com/spf13/cobra" + "os" +) + + +func init() { + rootCmd.AddCommand(versionCmd) +} + +var versionCmd = &cobra.Command{ + Use: "version", + Short: "Print the version number of goSDN", + Long: `A version is a version.`, + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("Beachead -- unkown HEAD") + }, +} + +var rootCmd = &cobra.Command{ + Use: "goSDN", + Short: "A yet still incomplete attempt to build an network operating system, but...:-)", + Long: "Incomplete network operating system. Complete documentation is available at XXX", + Run: func(cmd *cobra.Command, args []string) { + // Do Stuff Here + StartUp() + Run() + }, +} + +func Execute() { + if err := rootCmd.Execute(); err != nil { + fmt.Println(err) + os.Exit(1) + } +} diff --git a/yang-processor/gosdn.go b/yang-processor/gosdn.go new file mode 100644 index 0000000000000000000000000000000000000000..4b91b328fa68a65aed67ce0f578ffd7c58a3cf76 --- /dev/null +++ b/yang-processor/gosdn.go @@ -0,0 +1,9 @@ +// Package ocdemo is a demonstration package for use in the +// getting_started ygot demo. +package gosdnyang + +// This file is a placeholder in order to ensure that Go does not +// find this directory to contain an empty package. The structs +// required for the getting started demo should be generated through +// go generate within the getting_started directory. + diff --git a/yang-processor/gosdnyang.go.go b/yang-processor/gosdnyang.go.go new file mode 100644 index 0000000000000000000000000000000000000000..19137f98ab1eb15a525d9cfd77b6f3574056414e --- /dev/null +++ b/yang-processor/gosdnyang.go.go @@ -0,0 +1,5833 @@ +/* +Package gosdnyang is a generated package which contains definitions +of structs which represent a YANG schema. The generated schema can be +compressed by a series of transformations (compression was true +in this case). + +This package was generated by /Users/mls/go/src/github.com/openconfig/ygot/genutil/names.go +using the following YANG input files: + - yang/openconfig-interfaces.yang + - yang/openconfig-if-ip.yang +Imported modules were sourced from: + - yang/... +*/ +package gosdnyang + +import ( + "encoding/json" + "fmt" + "reflect" + + "github.com/openconfig/ygot/ygot" + "github.com/openconfig/goyang/pkg/yang" + "github.com/openconfig/ygot/ytypes" +) + +// Binary is a type that is used for fields that have a YANG type of +// binary. It is used such that binary fields can be distinguished from +// leaf-lists of uint8s (which are mapped to []uint8, equivalent to +// []byte in reflection). +type Binary []byte + +// YANGEmpty is a type that is used for fields that have a YANG type of +// empty. It is used such that empty fields can be distinguished from boolean fields +// in the generated code. +type YANGEmpty bool + +var ( + SchemaTree map[string]*yang.Entry +) + +func init() { + var err error + if SchemaTree, err = UnzipSchema(); err != nil { + panic("schema error: " + err.Error()) + } +} + +// Schema returns the details of the generated schema. +func Schema() (*ytypes.Schema, error) { + uzp, err := UnzipSchema() + if err != nil { + return nil, fmt.Errorf("cannot unzip schema, %v", err) + } + + return &ytypes.Schema{ + Root: &Device{}, + SchemaTree: uzp, + Unmarshal: Unmarshal, + }, nil +} + +// UnzipSchema unzips the zipped schema and returns a map of yang.Entry nodes, +// keyed by the name of the struct that the yang.Entry describes the schema for. +func UnzipSchema() (map[string]*yang.Entry, error) { + var schemaTree map[string]*yang.Entry + var err error + if schemaTree, err = ygot.GzipToSchema(ySchema); err != nil { + return nil, fmt.Errorf("could not unzip the schema; %v", err) + } + return schemaTree, nil +} + +// Unmarshal unmarshals data, which must be RFC7951 JSON format, into +// destStruct, which must be non-nil and the correct GoStruct type. It returns +// an error if the destStruct is not found in the schema or the data cannot be +// unmarshaled. The supplied options (opts) are used to control the behaviour +// of the unmarshal function - for example, determining whether errors are +// thrown for unknown fields in the input JSON. +func Unmarshal(data []byte, destStruct ygot.GoStruct, opts ...ytypes.UnmarshalOpt) error { + tn := reflect.TypeOf(destStruct).Elem().Name() + schema, ok := SchemaTree[tn] + if !ok { + return fmt.Errorf("could not find schema for type %s", tn ) + } + var jsonTree interface{} + if err := json.Unmarshal([]byte(data), &jsonTree); err != nil { + return err + } + return ytypes.Unmarshal(schema, destStruct, jsonTree, opts...) +} + +// Device represents the /device YANG schema element. +type Device struct { + Interface map[string]*Interface `path:"interfaces/interface" module:"openconfig-interfaces"` + Vlan map[uint16]*Vlan `path:"vlans/vlan" module:"openconfig-vlan"` +} + +// IsYANGGoStruct ensures that Device implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Device) IsYANGGoStruct() {} + +// NewInterface creates a new entry in the Interface list of the +// Device struct. The keys of the list are populated from the input +// arguments. +func (t *Device) NewInterface(Name string) (*Interface, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.Interface == nil { + t.Interface = make(map[string]*Interface) + } + + key := Name + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.Interface[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list Interface", key) + } + + t.Interface[key] = &Interface{ + Name: &Name, + } + + return t.Interface[key], nil +} + +// NewVlan creates a new entry in the Vlan list of the +// Device struct. The keys of the list are populated from the input +// arguments. +func (t *Device) NewVlan(VlanId uint16) (*Vlan, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.Vlan == nil { + t.Vlan = make(map[uint16]*Vlan) + } + + key := VlanId + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.Vlan[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list Vlan", key) + } + + t.Vlan[key] = &Vlan{ + VlanId: &VlanId, + } + + return t.Vlan[key], nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Device) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Device"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Device) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface represents the /openconfig-interfaces/interfaces/interface YANG schema element. +type Interface struct { + AdminStatus E_Interface_AdminStatus `path:"state/admin-status" module:"openconfig-interfaces"` + Aggregation *Interface_Aggregation `path:"aggregation" module:"openconfig-if-aggregate"` + Counters *Interface_Counters `path:"state/counters" module:"openconfig-interfaces"` + Description *string `path:"config/description" module:"openconfig-interfaces"` + Enabled *bool `path:"config/enabled" module:"openconfig-interfaces"` + Ethernet *Interface_Ethernet `path:"ethernet" module:"openconfig-if-ethernet"` + HoldTime *Interface_HoldTime `path:"hold-time" module:"openconfig-interfaces"` + Ifindex *uint32 `path:"state/ifindex" module:"openconfig-interfaces"` + LastChange *uint32 `path:"state/last-change" module:"openconfig-interfaces"` + Mtu *uint16 `path:"config/mtu" module:"openconfig-interfaces"` + Name *string `path:"config/name|name" module:"openconfig-interfaces"` + OperStatus E_Interface_OperStatus `path:"state/oper-status" module:"openconfig-interfaces"` + RoutedVlan *Interface_RoutedVlan `path:"routed-vlan" module:"openconfig-vlan"` + Subinterface map[uint32]*Interface_Subinterface `path:"subinterfaces/subinterface" module:"openconfig-interfaces"` + Type E_IETFInterfaces_InterfaceType `path:"config/type" module:"openconfig-interfaces"` +} + +// IsYANGGoStruct ensures that Interface implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface) IsYANGGoStruct() {} + +// NewSubinterface creates a new entry in the Subinterface list of the +// Interface struct. The keys of the list are populated from the input +// arguments. +func (t *Interface) NewSubinterface(Index uint32) (*Interface_Subinterface, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.Subinterface == nil { + t.Subinterface = make(map[uint32]*Interface_Subinterface) + } + + key := Index + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.Subinterface[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list Subinterface", key) + } + + t.Subinterface[key] = &Interface_Subinterface{ + Index: &Index, + } + + return t.Subinterface[key], nil +} + +// ΛListKeyMap returns the keys of the Interface struct, which is a YANG list entry. +func (t *Interface) ΛListKeyMap() (map[string]interface{}, error) { + if t.Name == nil { + return nil, fmt.Errorf("nil value for key Name") + } + + return map[string]interface{}{ + "name": *t.Name, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_Aggregation represents the /openconfig-interfaces/interfaces/interface/aggregation YANG schema element. +type Interface_Aggregation struct { + LagSpeed *uint32 `path:"state/lag-speed" module:"openconfig-if-aggregate"` + LagType E_OpenconfigIfAggregate_AggregationType `path:"config/lag-type" module:"openconfig-if-aggregate"` + Member []string `path:"state/member" module:"openconfig-if-aggregate"` + MinLinks *uint16 `path:"config/min-links" module:"openconfig-if-aggregate"` + SwitchedVlan *Interface_Aggregation_SwitchedVlan `path:"switched-vlan" module:"openconfig-vlan"` +} + +// IsYANGGoStruct ensures that Interface_Aggregation implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_Aggregation) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_Aggregation) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_Aggregation"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_Aggregation) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_Aggregation_SwitchedVlan represents the /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan YANG schema element. +type Interface_Aggregation_SwitchedVlan struct { + AccessVlan Interface_Aggregation_SwitchedVlan_AccessVlan_Union `path:"config/access-vlan" module:"openconfig-vlan"` + InterfaceMode E_OpenconfigVlan_VlanModeType `path:"config/interface-mode" module:"openconfig-vlan"` + NativeVlan Interface_Aggregation_SwitchedVlan_NativeVlan_Union `path:"config/native-vlan" module:"openconfig-vlan"` + TrunkVlans []Interface_Aggregation_SwitchedVlan_TrunkVlans_Union `path:"config/trunk-vlans" module:"openconfig-vlan"` +} + +// IsYANGGoStruct ensures that Interface_Aggregation_SwitchedVlan implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_Aggregation_SwitchedVlan) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_Aggregation_SwitchedVlan) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_Aggregation_SwitchedVlan"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_Aggregation_SwitchedVlan) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + +// Interface_Aggregation_SwitchedVlan_AccessVlan_Union is an interface that is implemented by valid types for the union +// for the leaf /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan/config/access-vlan within the YANG schema. +type Interface_Aggregation_SwitchedVlan_AccessVlan_Union interface { + Is_Interface_Aggregation_SwitchedVlan_AccessVlan_Union() +} + +// Interface_Aggregation_SwitchedVlan_AccessVlan_Union_String is used when /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan/config/access-vlan +// is to be set to a string value. +type Interface_Aggregation_SwitchedVlan_AccessVlan_Union_String struct { + String string +} + +// Is_Interface_Aggregation_SwitchedVlan_AccessVlan_Union ensures that Interface_Aggregation_SwitchedVlan_AccessVlan_Union_String +// implements the Interface_Aggregation_SwitchedVlan_AccessVlan_Union interface. +func (*Interface_Aggregation_SwitchedVlan_AccessVlan_Union_String) Is_Interface_Aggregation_SwitchedVlan_AccessVlan_Union() {} + +// Interface_Aggregation_SwitchedVlan_AccessVlan_Union_Uint16 is used when /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan/config/access-vlan +// is to be set to a uint16 value. +type Interface_Aggregation_SwitchedVlan_AccessVlan_Union_Uint16 struct { + Uint16 uint16 +} + +// Is_Interface_Aggregation_SwitchedVlan_AccessVlan_Union ensures that Interface_Aggregation_SwitchedVlan_AccessVlan_Union_Uint16 +// implements the Interface_Aggregation_SwitchedVlan_AccessVlan_Union interface. +func (*Interface_Aggregation_SwitchedVlan_AccessVlan_Union_Uint16) Is_Interface_Aggregation_SwitchedVlan_AccessVlan_Union() {} + +// To_Interface_Aggregation_SwitchedVlan_AccessVlan_Union takes an input interface{} and attempts to convert it to a struct +// which implements the Interface_Aggregation_SwitchedVlan_AccessVlan_Union union. It returns an error if the interface{} supplied +// cannot be converted to a type within the union. +func (t *Interface_Aggregation_SwitchedVlan) To_Interface_Aggregation_SwitchedVlan_AccessVlan_Union(i interface{}) (Interface_Aggregation_SwitchedVlan_AccessVlan_Union, error) { + switch v := i.(type) { + case string: + return &Interface_Aggregation_SwitchedVlan_AccessVlan_Union_String{v}, nil + case uint16: + return &Interface_Aggregation_SwitchedVlan_AccessVlan_Union_Uint16{v}, nil + default: + return nil, fmt.Errorf("cannot convert %v to Interface_Aggregation_SwitchedVlan_AccessVlan_Union, unknown union type, got: %T, want any of [string, uint16]", i, i) + } +} + +// Interface_Aggregation_SwitchedVlan_NativeVlan_Union is an interface that is implemented by valid types for the union +// for the leaf /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan/config/native-vlan within the YANG schema. +type Interface_Aggregation_SwitchedVlan_NativeVlan_Union interface { + Is_Interface_Aggregation_SwitchedVlan_NativeVlan_Union() +} + +// Interface_Aggregation_SwitchedVlan_NativeVlan_Union_String is used when /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan/config/native-vlan +// is to be set to a string value. +type Interface_Aggregation_SwitchedVlan_NativeVlan_Union_String struct { + String string +} + +// Is_Interface_Aggregation_SwitchedVlan_NativeVlan_Union ensures that Interface_Aggregation_SwitchedVlan_NativeVlan_Union_String +// implements the Interface_Aggregation_SwitchedVlan_NativeVlan_Union interface. +func (*Interface_Aggregation_SwitchedVlan_NativeVlan_Union_String) Is_Interface_Aggregation_SwitchedVlan_NativeVlan_Union() {} + +// Interface_Aggregation_SwitchedVlan_NativeVlan_Union_Uint16 is used when /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan/config/native-vlan +// is to be set to a uint16 value. +type Interface_Aggregation_SwitchedVlan_NativeVlan_Union_Uint16 struct { + Uint16 uint16 +} + +// Is_Interface_Aggregation_SwitchedVlan_NativeVlan_Union ensures that Interface_Aggregation_SwitchedVlan_NativeVlan_Union_Uint16 +// implements the Interface_Aggregation_SwitchedVlan_NativeVlan_Union interface. +func (*Interface_Aggregation_SwitchedVlan_NativeVlan_Union_Uint16) Is_Interface_Aggregation_SwitchedVlan_NativeVlan_Union() {} + +// To_Interface_Aggregation_SwitchedVlan_NativeVlan_Union takes an input interface{} and attempts to convert it to a struct +// which implements the Interface_Aggregation_SwitchedVlan_NativeVlan_Union union. It returns an error if the interface{} supplied +// cannot be converted to a type within the union. +func (t *Interface_Aggregation_SwitchedVlan) To_Interface_Aggregation_SwitchedVlan_NativeVlan_Union(i interface{}) (Interface_Aggregation_SwitchedVlan_NativeVlan_Union, error) { + switch v := i.(type) { + case string: + return &Interface_Aggregation_SwitchedVlan_NativeVlan_Union_String{v}, nil + case uint16: + return &Interface_Aggregation_SwitchedVlan_NativeVlan_Union_Uint16{v}, nil + default: + return nil, fmt.Errorf("cannot convert %v to Interface_Aggregation_SwitchedVlan_NativeVlan_Union, unknown union type, got: %T, want any of [string, uint16]", i, i) + } +} + +// Interface_Aggregation_SwitchedVlan_TrunkVlans_Union is an interface that is implemented by valid types for the union +// for the leaf /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan/config/trunk-vlans within the YANG schema. +type Interface_Aggregation_SwitchedVlan_TrunkVlans_Union interface { + Is_Interface_Aggregation_SwitchedVlan_TrunkVlans_Union() +} + +// Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_String is used when /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan/config/trunk-vlans +// is to be set to a string value. +type Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_String struct { + String string +} + +// Is_Interface_Aggregation_SwitchedVlan_TrunkVlans_Union ensures that Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_String +// implements the Interface_Aggregation_SwitchedVlan_TrunkVlans_Union interface. +func (*Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_String) Is_Interface_Aggregation_SwitchedVlan_TrunkVlans_Union() {} + +// Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_Uint16 is used when /openconfig-interfaces/interfaces/interface/aggregation/switched-vlan/config/trunk-vlans +// is to be set to a uint16 value. +type Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_Uint16 struct { + Uint16 uint16 +} + +// Is_Interface_Aggregation_SwitchedVlan_TrunkVlans_Union ensures that Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_Uint16 +// implements the Interface_Aggregation_SwitchedVlan_TrunkVlans_Union interface. +func (*Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_Uint16) Is_Interface_Aggregation_SwitchedVlan_TrunkVlans_Union() {} + +// To_Interface_Aggregation_SwitchedVlan_TrunkVlans_Union takes an input interface{} and attempts to convert it to a struct +// which implements the Interface_Aggregation_SwitchedVlan_TrunkVlans_Union union. It returns an error if the interface{} supplied +// cannot be converted to a type within the union. +func (t *Interface_Aggregation_SwitchedVlan) To_Interface_Aggregation_SwitchedVlan_TrunkVlans_Union(i interface{}) (Interface_Aggregation_SwitchedVlan_TrunkVlans_Union, error) { + switch v := i.(type) { + case string: + return &Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_String{v}, nil + case uint16: + return &Interface_Aggregation_SwitchedVlan_TrunkVlans_Union_Uint16{v}, nil + default: + return nil, fmt.Errorf("cannot convert %v to Interface_Aggregation_SwitchedVlan_TrunkVlans_Union, unknown union type, got: %T, want any of [string, uint16]", i, i) + } +} + + +// Interface_Counters represents the /openconfig-interfaces/interfaces/interface/state/counters YANG schema element. +type Interface_Counters struct { + InBroadcastPkts *uint64 `path:"in-broadcast-pkts" module:"openconfig-interfaces"` + InDiscards *uint64 `path:"in-discards" module:"openconfig-interfaces"` + InErrors *uint64 `path:"in-errors" module:"openconfig-interfaces"` + InMulticastPkts *uint64 `path:"in-multicast-pkts" module:"openconfig-interfaces"` + InOctets *uint64 `path:"in-octets" module:"openconfig-interfaces"` + InUnicastPkts *uint64 `path:"in-unicast-pkts" module:"openconfig-interfaces"` + InUnknownProtos *uint32 `path:"in-unknown-protos" module:"openconfig-interfaces"` + LastClear *string `path:"last-clear" module:"openconfig-interfaces"` + OutBroadcastPkts *uint64 `path:"out-broadcast-pkts" module:"openconfig-interfaces"` + OutDiscards *uint64 `path:"out-discards" module:"openconfig-interfaces"` + OutErrors *uint64 `path:"out-errors" module:"openconfig-interfaces"` + OutMulticastPkts *uint64 `path:"out-multicast-pkts" module:"openconfig-interfaces"` + OutOctets *uint64 `path:"out-octets" module:"openconfig-interfaces"` + OutUnicastPkts *uint64 `path:"out-unicast-pkts" module:"openconfig-interfaces"` +} + +// IsYANGGoStruct ensures that Interface_Counters implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_Counters) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_Counters) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_Counters"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_Counters) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_Ethernet represents the /openconfig-interfaces/interfaces/interface/ethernet YANG schema element. +type Interface_Ethernet struct { + AggregateId *string `path:"config/aggregate-id" module:"openconfig-if-aggregate"` + AutoNegotiate *bool `path:"config/auto-negotiate" module:"openconfig-if-ethernet"` + Counters *Interface_Ethernet_Counters `path:"state/counters" module:"openconfig-if-ethernet"` + DuplexMode E_Ethernet_DuplexMode `path:"config/duplex-mode" module:"openconfig-if-ethernet"` + EffectiveSpeed *uint32 `path:"state/effective-speed" module:"openconfig-if-ethernet"` + EnableFlowControl *bool `path:"config/enable-flow-control" module:"openconfig-if-ethernet"` + HwMacAddress *string `path:"state/hw-mac-address" module:"openconfig-if-ethernet"` + MacAddress *string `path:"config/mac-address" module:"openconfig-if-ethernet"` + NegotiatedDuplexMode E_Ethernet_NegotiatedDuplexMode `path:"state/negotiated-duplex-mode" module:"openconfig-if-ethernet"` + NegotiatedPortSpeed E_OpenconfigIfEthernet_ETHERNET_SPEED `path:"state/negotiated-port-speed" module:"openconfig-if-ethernet"` + PortSpeed E_OpenconfigIfEthernet_ETHERNET_SPEED `path:"config/port-speed" module:"openconfig-if-ethernet"` + SwitchedVlan *Interface_Ethernet_SwitchedVlan `path:"switched-vlan" module:"openconfig-vlan"` +} + +// IsYANGGoStruct ensures that Interface_Ethernet implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_Ethernet) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_Ethernet) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_Ethernet"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_Ethernet) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_Ethernet_Counters represents the /openconfig-interfaces/interfaces/interface/ethernet/state/counters YANG schema element. +type Interface_Ethernet_Counters struct { + In_8021QFrames *uint64 `path:"in-8021q-frames" module:"openconfig-if-ethernet"` + InCrcErrors *uint64 `path:"in-crc-errors" module:"openconfig-if-ethernet"` + InFragmentFrames *uint64 `path:"in-fragment-frames" module:"openconfig-if-ethernet"` + InJabberFrames *uint64 `path:"in-jabber-frames" module:"openconfig-if-ethernet"` + InMacControlFrames *uint64 `path:"in-mac-control-frames" module:"openconfig-if-ethernet"` + InMacPauseFrames *uint64 `path:"in-mac-pause-frames" module:"openconfig-if-ethernet"` + InOversizeFrames *uint64 `path:"in-oversize-frames" module:"openconfig-if-ethernet"` + Out_8021QFrames *uint64 `path:"out-8021q-frames" module:"openconfig-if-ethernet"` + OutMacControlFrames *uint64 `path:"out-mac-control-frames" module:"openconfig-if-ethernet"` + OutMacPauseFrames *uint64 `path:"out-mac-pause-frames" module:"openconfig-if-ethernet"` +} + +// IsYANGGoStruct ensures that Interface_Ethernet_Counters implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_Ethernet_Counters) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_Ethernet_Counters) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_Ethernet_Counters"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_Ethernet_Counters) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_Ethernet_SwitchedVlan represents the /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan YANG schema element. +type Interface_Ethernet_SwitchedVlan struct { + AccessVlan Interface_Ethernet_SwitchedVlan_AccessVlan_Union `path:"config/access-vlan" module:"openconfig-vlan"` + InterfaceMode E_OpenconfigVlan_VlanModeType `path:"config/interface-mode" module:"openconfig-vlan"` + NativeVlan Interface_Ethernet_SwitchedVlan_NativeVlan_Union `path:"config/native-vlan" module:"openconfig-vlan"` + TrunkVlans []Interface_Ethernet_SwitchedVlan_TrunkVlans_Union `path:"config/trunk-vlans" module:"openconfig-vlan"` +} + +// IsYANGGoStruct ensures that Interface_Ethernet_SwitchedVlan implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_Ethernet_SwitchedVlan) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_Ethernet_SwitchedVlan) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_Ethernet_SwitchedVlan"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_Ethernet_SwitchedVlan) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + +// Interface_Ethernet_SwitchedVlan_AccessVlan_Union is an interface that is implemented by valid types for the union +// for the leaf /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan/config/access-vlan within the YANG schema. +type Interface_Ethernet_SwitchedVlan_AccessVlan_Union interface { + Is_Interface_Ethernet_SwitchedVlan_AccessVlan_Union() +} + +// Interface_Ethernet_SwitchedVlan_AccessVlan_Union_String is used when /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan/config/access-vlan +// is to be set to a string value. +type Interface_Ethernet_SwitchedVlan_AccessVlan_Union_String struct { + String string +} + +// Is_Interface_Ethernet_SwitchedVlan_AccessVlan_Union ensures that Interface_Ethernet_SwitchedVlan_AccessVlan_Union_String +// implements the Interface_Ethernet_SwitchedVlan_AccessVlan_Union interface. +func (*Interface_Ethernet_SwitchedVlan_AccessVlan_Union_String) Is_Interface_Ethernet_SwitchedVlan_AccessVlan_Union() {} + +// Interface_Ethernet_SwitchedVlan_AccessVlan_Union_Uint16 is used when /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan/config/access-vlan +// is to be set to a uint16 value. +type Interface_Ethernet_SwitchedVlan_AccessVlan_Union_Uint16 struct { + Uint16 uint16 +} + +// Is_Interface_Ethernet_SwitchedVlan_AccessVlan_Union ensures that Interface_Ethernet_SwitchedVlan_AccessVlan_Union_Uint16 +// implements the Interface_Ethernet_SwitchedVlan_AccessVlan_Union interface. +func (*Interface_Ethernet_SwitchedVlan_AccessVlan_Union_Uint16) Is_Interface_Ethernet_SwitchedVlan_AccessVlan_Union() {} + +// To_Interface_Ethernet_SwitchedVlan_AccessVlan_Union takes an input interface{} and attempts to convert it to a struct +// which implements the Interface_Ethernet_SwitchedVlan_AccessVlan_Union union. It returns an error if the interface{} supplied +// cannot be converted to a type within the union. +func (t *Interface_Ethernet_SwitchedVlan) To_Interface_Ethernet_SwitchedVlan_AccessVlan_Union(i interface{}) (Interface_Ethernet_SwitchedVlan_AccessVlan_Union, error) { + switch v := i.(type) { + case string: + return &Interface_Ethernet_SwitchedVlan_AccessVlan_Union_String{v}, nil + case uint16: + return &Interface_Ethernet_SwitchedVlan_AccessVlan_Union_Uint16{v}, nil + default: + return nil, fmt.Errorf("cannot convert %v to Interface_Ethernet_SwitchedVlan_AccessVlan_Union, unknown union type, got: %T, want any of [string, uint16]", i, i) + } +} + +// Interface_Ethernet_SwitchedVlan_NativeVlan_Union is an interface that is implemented by valid types for the union +// for the leaf /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan/config/native-vlan within the YANG schema. +type Interface_Ethernet_SwitchedVlan_NativeVlan_Union interface { + Is_Interface_Ethernet_SwitchedVlan_NativeVlan_Union() +} + +// Interface_Ethernet_SwitchedVlan_NativeVlan_Union_String is used when /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan/config/native-vlan +// is to be set to a string value. +type Interface_Ethernet_SwitchedVlan_NativeVlan_Union_String struct { + String string +} + +// Is_Interface_Ethernet_SwitchedVlan_NativeVlan_Union ensures that Interface_Ethernet_SwitchedVlan_NativeVlan_Union_String +// implements the Interface_Ethernet_SwitchedVlan_NativeVlan_Union interface. +func (*Interface_Ethernet_SwitchedVlan_NativeVlan_Union_String) Is_Interface_Ethernet_SwitchedVlan_NativeVlan_Union() {} + +// Interface_Ethernet_SwitchedVlan_NativeVlan_Union_Uint16 is used when /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan/config/native-vlan +// is to be set to a uint16 value. +type Interface_Ethernet_SwitchedVlan_NativeVlan_Union_Uint16 struct { + Uint16 uint16 +} + +// Is_Interface_Ethernet_SwitchedVlan_NativeVlan_Union ensures that Interface_Ethernet_SwitchedVlan_NativeVlan_Union_Uint16 +// implements the Interface_Ethernet_SwitchedVlan_NativeVlan_Union interface. +func (*Interface_Ethernet_SwitchedVlan_NativeVlan_Union_Uint16) Is_Interface_Ethernet_SwitchedVlan_NativeVlan_Union() {} + +// To_Interface_Ethernet_SwitchedVlan_NativeVlan_Union takes an input interface{} and attempts to convert it to a struct +// which implements the Interface_Ethernet_SwitchedVlan_NativeVlan_Union union. It returns an error if the interface{} supplied +// cannot be converted to a type within the union. +func (t *Interface_Ethernet_SwitchedVlan) To_Interface_Ethernet_SwitchedVlan_NativeVlan_Union(i interface{}) (Interface_Ethernet_SwitchedVlan_NativeVlan_Union, error) { + switch v := i.(type) { + case string: + return &Interface_Ethernet_SwitchedVlan_NativeVlan_Union_String{v}, nil + case uint16: + return &Interface_Ethernet_SwitchedVlan_NativeVlan_Union_Uint16{v}, nil + default: + return nil, fmt.Errorf("cannot convert %v to Interface_Ethernet_SwitchedVlan_NativeVlan_Union, unknown union type, got: %T, want any of [string, uint16]", i, i) + } +} + +// Interface_Ethernet_SwitchedVlan_TrunkVlans_Union is an interface that is implemented by valid types for the union +// for the leaf /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan/config/trunk-vlans within the YANG schema. +type Interface_Ethernet_SwitchedVlan_TrunkVlans_Union interface { + Is_Interface_Ethernet_SwitchedVlan_TrunkVlans_Union() +} + +// Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_String is used when /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan/config/trunk-vlans +// is to be set to a string value. +type Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_String struct { + String string +} + +// Is_Interface_Ethernet_SwitchedVlan_TrunkVlans_Union ensures that Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_String +// implements the Interface_Ethernet_SwitchedVlan_TrunkVlans_Union interface. +func (*Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_String) Is_Interface_Ethernet_SwitchedVlan_TrunkVlans_Union() {} + +// Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_Uint16 is used when /openconfig-interfaces/interfaces/interface/ethernet/switched-vlan/config/trunk-vlans +// is to be set to a uint16 value. +type Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_Uint16 struct { + Uint16 uint16 +} + +// Is_Interface_Ethernet_SwitchedVlan_TrunkVlans_Union ensures that Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_Uint16 +// implements the Interface_Ethernet_SwitchedVlan_TrunkVlans_Union interface. +func (*Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_Uint16) Is_Interface_Ethernet_SwitchedVlan_TrunkVlans_Union() {} + +// To_Interface_Ethernet_SwitchedVlan_TrunkVlans_Union takes an input interface{} and attempts to convert it to a struct +// which implements the Interface_Ethernet_SwitchedVlan_TrunkVlans_Union union. It returns an error if the interface{} supplied +// cannot be converted to a type within the union. +func (t *Interface_Ethernet_SwitchedVlan) To_Interface_Ethernet_SwitchedVlan_TrunkVlans_Union(i interface{}) (Interface_Ethernet_SwitchedVlan_TrunkVlans_Union, error) { + switch v := i.(type) { + case string: + return &Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_String{v}, nil + case uint16: + return &Interface_Ethernet_SwitchedVlan_TrunkVlans_Union_Uint16{v}, nil + default: + return nil, fmt.Errorf("cannot convert %v to Interface_Ethernet_SwitchedVlan_TrunkVlans_Union, unknown union type, got: %T, want any of [string, uint16]", i, i) + } +} + + +// Interface_HoldTime represents the /openconfig-interfaces/interfaces/interface/hold-time YANG schema element. +type Interface_HoldTime struct { + Down *uint32 `path:"config/down" module:"openconfig-interfaces"` + Up *uint32 `path:"config/up" module:"openconfig-interfaces"` +} + +// IsYANGGoStruct ensures that Interface_HoldTime implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_HoldTime) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_HoldTime) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_HoldTime"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_HoldTime) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_RoutedVlan represents the /openconfig-interfaces/interfaces/interface/routed-vlan YANG schema element. +type Interface_RoutedVlan struct { + Ipv4 *Interface_RoutedVlan_Ipv4 `path:"ipv4" module:"openconfig-if-ip"` + Ipv6 *Interface_RoutedVlan_Ipv6 `path:"ipv6" module:"openconfig-if-ip"` + Vlan Interface_RoutedVlan_Vlan_Union `path:"config/vlan" module:"openconfig-vlan"` +} + +// IsYANGGoStruct ensures that Interface_RoutedVlan implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_RoutedVlan) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_RoutedVlan) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_RoutedVlan) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + +// Interface_RoutedVlan_Vlan_Union is an interface that is implemented by valid types for the union +// for the leaf /openconfig-interfaces/interfaces/interface/routed-vlan/config/vlan within the YANG schema. +type Interface_RoutedVlan_Vlan_Union interface { + Is_Interface_RoutedVlan_Vlan_Union() +} + +// Interface_RoutedVlan_Vlan_Union_String is used when /openconfig-interfaces/interfaces/interface/routed-vlan/config/vlan +// is to be set to a string value. +type Interface_RoutedVlan_Vlan_Union_String struct { + String string +} + +// Is_Interface_RoutedVlan_Vlan_Union ensures that Interface_RoutedVlan_Vlan_Union_String +// implements the Interface_RoutedVlan_Vlan_Union interface. +func (*Interface_RoutedVlan_Vlan_Union_String) Is_Interface_RoutedVlan_Vlan_Union() {} + +// Interface_RoutedVlan_Vlan_Union_Uint16 is used when /openconfig-interfaces/interfaces/interface/routed-vlan/config/vlan +// is to be set to a uint16 value. +type Interface_RoutedVlan_Vlan_Union_Uint16 struct { + Uint16 uint16 +} + +// Is_Interface_RoutedVlan_Vlan_Union ensures that Interface_RoutedVlan_Vlan_Union_Uint16 +// implements the Interface_RoutedVlan_Vlan_Union interface. +func (*Interface_RoutedVlan_Vlan_Union_Uint16) Is_Interface_RoutedVlan_Vlan_Union() {} + +// To_Interface_RoutedVlan_Vlan_Union takes an input interface{} and attempts to convert it to a struct +// which implements the Interface_RoutedVlan_Vlan_Union union. It returns an error if the interface{} supplied +// cannot be converted to a type within the union. +func (t *Interface_RoutedVlan) To_Interface_RoutedVlan_Vlan_Union(i interface{}) (Interface_RoutedVlan_Vlan_Union, error) { + switch v := i.(type) { + case string: + return &Interface_RoutedVlan_Vlan_Union_String{v}, nil + case uint16: + return &Interface_RoutedVlan_Vlan_Union_Uint16{v}, nil + default: + return nil, fmt.Errorf("cannot convert %v to Interface_RoutedVlan_Vlan_Union, unknown union type, got: %T, want any of [string, uint16]", i, i) + } +} + + +// Interface_RoutedVlan_Ipv4 represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4 YANG schema element. +type Interface_RoutedVlan_Ipv4 struct { + Address map[string]*Interface_RoutedVlan_Ipv4_Address `path:"addresses/address" module:"openconfig-if-ip"` + Enabled *bool `path:"config/enabled" module:"openconfig-if-ip"` + Mtu *uint16 `path:"config/mtu" module:"openconfig-if-ip"` + Neighbor map[string]*Interface_RoutedVlan_Ipv4_Neighbor `path:"neighbors/neighbor" module:"openconfig-if-ip"` + Unnumbered *Interface_RoutedVlan_Ipv4_Unnumbered `path:"unnumbered" module:"openconfig-if-ip"` +} + +// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4 implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_RoutedVlan_Ipv4) IsYANGGoStruct() {} + +// NewAddress creates a new entry in the Address list of the +// Interface_RoutedVlan_Ipv4 struct. The keys of the list are populated from the input +// arguments. +func (t *Interface_RoutedVlan_Ipv4) NewAddress(Ip string) (*Interface_RoutedVlan_Ipv4_Address, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.Address == nil { + t.Address = make(map[string]*Interface_RoutedVlan_Ipv4_Address) + } + + key := Ip + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.Address[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list Address", key) + } + + t.Address[key] = &Interface_RoutedVlan_Ipv4_Address{ + Ip: &Ip, + } + + return t.Address[key], nil +} + +// NewNeighbor creates a new entry in the Neighbor list of the +// Interface_RoutedVlan_Ipv4 struct. The keys of the list are populated from the input +// arguments. +func (t *Interface_RoutedVlan_Ipv4) NewNeighbor(Ip string) (*Interface_RoutedVlan_Ipv4_Neighbor, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.Neighbor == nil { + t.Neighbor = make(map[string]*Interface_RoutedVlan_Ipv4_Neighbor) + } + + key := Ip + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.Neighbor[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list Neighbor", key) + } + + t.Neighbor[key] = &Interface_RoutedVlan_Ipv4_Neighbor{ + Ip: &Ip, + } + + return t.Neighbor[key], nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_RoutedVlan_Ipv4) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_RoutedVlan_Ipv4) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_RoutedVlan_Ipv4_Address represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4/addresses/address YANG schema element. +type Interface_RoutedVlan_Ipv4_Address struct { + Ip *string `path:"config/ip|ip" module:"openconfig-if-ip"` + Origin E_OpenconfigIfIp_IpAddressOrigin `path:"state/origin" module:"openconfig-if-ip"` + PrefixLength *uint8 `path:"config/prefix-length" module:"openconfig-if-ip"` + VrrpGroup map[uint8]*Interface_RoutedVlan_Ipv4_Address_VrrpGroup `path:"vrrp/vrrp-group" module:"openconfig-if-ip"` +} + +// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4_Address implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_RoutedVlan_Ipv4_Address) IsYANGGoStruct() {} + +// NewVrrpGroup creates a new entry in the VrrpGroup list of the +// Interface_RoutedVlan_Ipv4_Address struct. The keys of the list are populated from the input +// arguments. +func (t *Interface_RoutedVlan_Ipv4_Address) NewVrrpGroup(VirtualRouterId uint8) (*Interface_RoutedVlan_Ipv4_Address_VrrpGroup, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.VrrpGroup == nil { + t.VrrpGroup = make(map[uint8]*Interface_RoutedVlan_Ipv4_Address_VrrpGroup) + } + + key := VirtualRouterId + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.VrrpGroup[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list VrrpGroup", key) + } + + t.VrrpGroup[key] = &Interface_RoutedVlan_Ipv4_Address_VrrpGroup{ + VirtualRouterId: &VirtualRouterId, + } + + return t.VrrpGroup[key], nil +} + +// ΛListKeyMap returns the keys of the Interface_RoutedVlan_Ipv4_Address struct, which is a YANG list entry. +func (t *Interface_RoutedVlan_Ipv4_Address) ΛListKeyMap() (map[string]interface{}, error) { + if t.Ip == nil { + return nil, fmt.Errorf("nil value for key Ip") + } + + return map[string]interface{}{ + "ip": *t.Ip, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_RoutedVlan_Ipv4_Address) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4_Address"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_RoutedVlan_Ipv4_Address) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_RoutedVlan_Ipv4_Address_VrrpGroup represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4/addresses/address/vrrp/vrrp-group YANG schema element. +type Interface_RoutedVlan_Ipv4_Address_VrrpGroup struct { + AcceptMode *bool `path:"config/accept-mode" module:"openconfig-if-ip"` + AdvertisementInterval *uint16 `path:"config/advertisement-interval" module:"openconfig-if-ip"` + CurrentPriority *uint8 `path:"state/current-priority" module:"openconfig-if-ip"` + InterfaceTracking *Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking `path:"interface-tracking" module:"openconfig-if-ip"` + Preempt *bool `path:"config/preempt" module:"openconfig-if-ip"` + PreemptDelay *uint16 `path:"config/preempt-delay" module:"openconfig-if-ip"` + Priority *uint8 `path:"config/priority" module:"openconfig-if-ip"` + VirtualAddress []string `path:"config/virtual-address" module:"openconfig-if-ip"` + VirtualRouterId *uint8 `path:"config/virtual-router-id|virtual-router-id" module:"openconfig-if-ip"` +} + +// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4_Address_VrrpGroup implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_RoutedVlan_Ipv4_Address_VrrpGroup) IsYANGGoStruct() {} + +// ΛListKeyMap returns the keys of the Interface_RoutedVlan_Ipv4_Address_VrrpGroup struct, which is a YANG list entry. +func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup) ΛListKeyMap() (map[string]interface{}, error) { + if t.VirtualRouterId == nil { + return nil, fmt.Errorf("nil value for key VirtualRouterId") + } + + return map[string]interface{}{ + "virtual-router-id": *t.VirtualRouterId, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4_Address_VrrpGroup"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4/addresses/address/vrrp/vrrp-group/interface-tracking YANG schema element. +type Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking struct { + PriorityDecrement *uint8 `path:"config/priority-decrement" module:"openconfig-if-ip"` + TrackInterface *string `path:"config/track-interface" module:"openconfig-if-ip"` +} + +// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_RoutedVlan_Ipv4_Address_VrrpGroup_InterfaceTracking) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_RoutedVlan_Ipv4_Neighbor represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4/neighbors/neighbor YANG schema element. +type Interface_RoutedVlan_Ipv4_Neighbor struct { + Ip *string `path:"config/ip|ip" module:"openconfig-if-ip"` + LinkLayerAddress *string `path:"config/link-layer-address" module:"openconfig-if-ip"` + Origin E_OpenconfigIfIp_NeighborOrigin `path:"state/origin" module:"openconfig-if-ip"` +} + +// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4_Neighbor implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_RoutedVlan_Ipv4_Neighbor) IsYANGGoStruct() {} + +// ΛListKeyMap returns the keys of the Interface_RoutedVlan_Ipv4_Neighbor struct, which is a YANG list entry. +func (t *Interface_RoutedVlan_Ipv4_Neighbor) ΛListKeyMap() (map[string]interface{}, error) { + if t.Ip == nil { + return nil, fmt.Errorf("nil value for key Ip") + } + + return map[string]interface{}{ + "ip": *t.Ip, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_RoutedVlan_Ipv4_Neighbor) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4_Neighbor"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_RoutedVlan_Ipv4_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_RoutedVlan_Ipv4_Unnumbered represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4/unnumbered YANG schema element. +type Interface_RoutedVlan_Ipv4_Unnumbered struct { + Enabled *bool `path:"config/enabled" module:"openconfig-if-ip"` + InterfaceRef *Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef `path:"interface-ref" module:"openconfig-if-ip"` +} + +// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4_Unnumbered implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_RoutedVlan_Ipv4_Unnumbered) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_RoutedVlan_Ipv4_Unnumbered) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4_Unnumbered"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_RoutedVlan_Ipv4_Unnumbered) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv4/unnumbered/interface-ref YANG schema element. +type Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef struct { + Interface *string `path:"config/interface" module:"openconfig-if-ip"` + Subinterface *uint32 `path:"config/subinterface" module:"openconfig-if-ip"` +} + +// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_RoutedVlan_Ipv4_Unnumbered_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_RoutedVlan_Ipv6 represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6 YANG schema element. +type Interface_RoutedVlan_Ipv6 struct { + Address map[string]*Interface_RoutedVlan_Ipv6_Address `path:"addresses/address" module:"openconfig-if-ip"` + DupAddrDetectTransmits *uint32 `path:"config/dup-addr-detect-transmits" module:"openconfig-if-ip"` + Enabled *bool `path:"config/enabled" module:"openconfig-if-ip"` + Mtu *uint32 `path:"config/mtu" module:"openconfig-if-ip"` + Neighbor map[string]*Interface_RoutedVlan_Ipv6_Neighbor `path:"neighbors/neighbor" module:"openconfig-if-ip"` + Unnumbered *Interface_RoutedVlan_Ipv6_Unnumbered `path:"unnumbered" module:"openconfig-if-ip"` +} + +// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6 implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_RoutedVlan_Ipv6) IsYANGGoStruct() {} + +// NewAddress creates a new entry in the Address list of the +// Interface_RoutedVlan_Ipv6 struct. The keys of the list are populated from the input +// arguments. +func (t *Interface_RoutedVlan_Ipv6) NewAddress(Ip string) (*Interface_RoutedVlan_Ipv6_Address, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.Address == nil { + t.Address = make(map[string]*Interface_RoutedVlan_Ipv6_Address) + } + + key := Ip + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.Address[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list Address", key) + } + + t.Address[key] = &Interface_RoutedVlan_Ipv6_Address{ + Ip: &Ip, + } + + return t.Address[key], nil +} + +// NewNeighbor creates a new entry in the Neighbor list of the +// Interface_RoutedVlan_Ipv6 struct. The keys of the list are populated from the input +// arguments. +func (t *Interface_RoutedVlan_Ipv6) NewNeighbor(Ip string) (*Interface_RoutedVlan_Ipv6_Neighbor, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.Neighbor == nil { + t.Neighbor = make(map[string]*Interface_RoutedVlan_Ipv6_Neighbor) + } + + key := Ip + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.Neighbor[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list Neighbor", key) + } + + t.Neighbor[key] = &Interface_RoutedVlan_Ipv6_Neighbor{ + Ip: &Ip, + } + + return t.Neighbor[key], nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_RoutedVlan_Ipv6) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_RoutedVlan_Ipv6) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_RoutedVlan_Ipv6_Address represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6/addresses/address YANG schema element. +type Interface_RoutedVlan_Ipv6_Address struct { + Ip *string `path:"config/ip|ip" module:"openconfig-if-ip"` + Origin E_OpenconfigIfIp_IpAddressOrigin `path:"state/origin" module:"openconfig-if-ip"` + PrefixLength *uint8 `path:"config/prefix-length" module:"openconfig-if-ip"` + Status E_Address_Status `path:"state/status" module:"openconfig-if-ip"` + VrrpGroup map[uint8]*Interface_RoutedVlan_Ipv6_Address_VrrpGroup `path:"vrrp/vrrp-group" module:"openconfig-if-ip"` +} + +// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6_Address implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_RoutedVlan_Ipv6_Address) IsYANGGoStruct() {} + +// NewVrrpGroup creates a new entry in the VrrpGroup list of the +// Interface_RoutedVlan_Ipv6_Address struct. The keys of the list are populated from the input +// arguments. +func (t *Interface_RoutedVlan_Ipv6_Address) NewVrrpGroup(VirtualRouterId uint8) (*Interface_RoutedVlan_Ipv6_Address_VrrpGroup, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.VrrpGroup == nil { + t.VrrpGroup = make(map[uint8]*Interface_RoutedVlan_Ipv6_Address_VrrpGroup) + } + + key := VirtualRouterId + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.VrrpGroup[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list VrrpGroup", key) + } + + t.VrrpGroup[key] = &Interface_RoutedVlan_Ipv6_Address_VrrpGroup{ + VirtualRouterId: &VirtualRouterId, + } + + return t.VrrpGroup[key], nil +} + +// ΛListKeyMap returns the keys of the Interface_RoutedVlan_Ipv6_Address struct, which is a YANG list entry. +func (t *Interface_RoutedVlan_Ipv6_Address) ΛListKeyMap() (map[string]interface{}, error) { + if t.Ip == nil { + return nil, fmt.Errorf("nil value for key Ip") + } + + return map[string]interface{}{ + "ip": *t.Ip, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_RoutedVlan_Ipv6_Address) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6_Address"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_RoutedVlan_Ipv6_Address) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_RoutedVlan_Ipv6_Address_VrrpGroup represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6/addresses/address/vrrp/vrrp-group YANG schema element. +type Interface_RoutedVlan_Ipv6_Address_VrrpGroup struct { + AcceptMode *bool `path:"config/accept-mode" module:"openconfig-if-ip"` + AdvertisementInterval *uint16 `path:"config/advertisement-interval" module:"openconfig-if-ip"` + CurrentPriority *uint8 `path:"state/current-priority" module:"openconfig-if-ip"` + InterfaceTracking *Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking `path:"interface-tracking" module:"openconfig-if-ip"` + Preempt *bool `path:"config/preempt" module:"openconfig-if-ip"` + PreemptDelay *uint16 `path:"config/preempt-delay" module:"openconfig-if-ip"` + Priority *uint8 `path:"config/priority" module:"openconfig-if-ip"` + VirtualAddress []string `path:"config/virtual-address" module:"openconfig-if-ip"` + VirtualLinkLocal *string `path:"config/virtual-link-local" module:"openconfig-if-ip"` + VirtualRouterId *uint8 `path:"config/virtual-router-id|virtual-router-id" module:"openconfig-if-ip"` +} + +// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6_Address_VrrpGroup implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_RoutedVlan_Ipv6_Address_VrrpGroup) IsYANGGoStruct() {} + +// ΛListKeyMap returns the keys of the Interface_RoutedVlan_Ipv6_Address_VrrpGroup struct, which is a YANG list entry. +func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup) ΛListKeyMap() (map[string]interface{}, error) { + if t.VirtualRouterId == nil { + return nil, fmt.Errorf("nil value for key VirtualRouterId") + } + + return map[string]interface{}{ + "virtual-router-id": *t.VirtualRouterId, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6_Address_VrrpGroup"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6/addresses/address/vrrp/vrrp-group/interface-tracking YANG schema element. +type Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking struct { + PriorityDecrement *uint8 `path:"config/priority-decrement" module:"openconfig-if-ip"` + TrackInterface *string `path:"config/track-interface" module:"openconfig-if-ip"` +} + +// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_RoutedVlan_Ipv6_Address_VrrpGroup_InterfaceTracking) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_RoutedVlan_Ipv6_Neighbor represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6/neighbors/neighbor YANG schema element. +type Interface_RoutedVlan_Ipv6_Neighbor struct { + Ip *string `path:"config/ip|ip" module:"openconfig-if-ip"` + IsRouter YANGEmpty `path:"state/is-router" module:"openconfig-if-ip"` + LinkLayerAddress *string `path:"config/link-layer-address" module:"openconfig-if-ip"` + NeighborState E_Neighbor_NeighborState `path:"state/neighbor-state" module:"openconfig-if-ip"` + Origin E_OpenconfigIfIp_NeighborOrigin `path:"state/origin" module:"openconfig-if-ip"` +} + +// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6_Neighbor implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_RoutedVlan_Ipv6_Neighbor) IsYANGGoStruct() {} + +// ΛListKeyMap returns the keys of the Interface_RoutedVlan_Ipv6_Neighbor struct, which is a YANG list entry. +func (t *Interface_RoutedVlan_Ipv6_Neighbor) ΛListKeyMap() (map[string]interface{}, error) { + if t.Ip == nil { + return nil, fmt.Errorf("nil value for key Ip") + } + + return map[string]interface{}{ + "ip": *t.Ip, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_RoutedVlan_Ipv6_Neighbor) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6_Neighbor"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_RoutedVlan_Ipv6_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_RoutedVlan_Ipv6_Unnumbered represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6/unnumbered YANG schema element. +type Interface_RoutedVlan_Ipv6_Unnumbered struct { + Enabled *bool `path:"config/enabled" module:"openconfig-if-ip"` + InterfaceRef *Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef `path:"interface-ref" module:"openconfig-if-ip"` +} + +// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6_Unnumbered implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_RoutedVlan_Ipv6_Unnumbered) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_RoutedVlan_Ipv6_Unnumbered) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6_Unnumbered"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_RoutedVlan_Ipv6_Unnumbered) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef represents the /openconfig-interfaces/interfaces/interface/routed-vlan/ipv6/unnumbered/interface-ref YANG schema element. +type Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef struct { + Interface *string `path:"config/interface" module:"openconfig-if-ip"` + Subinterface *uint32 `path:"config/subinterface" module:"openconfig-if-ip"` +} + +// IsYANGGoStruct ensures that Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_RoutedVlan_Ipv6_Unnumbered_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_Subinterface represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface YANG schema element. +type Interface_Subinterface struct { + AdminStatus E_Interface_AdminStatus `path:"state/admin-status" module:"openconfig-interfaces"` + Counters *Interface_Subinterface_Counters `path:"state/counters" module:"openconfig-interfaces"` + Description *string `path:"config/description" module:"openconfig-interfaces"` + Enabled *bool `path:"config/enabled" module:"openconfig-interfaces"` + Ifindex *uint32 `path:"state/ifindex" module:"openconfig-interfaces"` + Index *uint32 `path:"config/index|index" module:"openconfig-interfaces"` + Ipv4 *Interface_Subinterface_Ipv4 `path:"ipv4" module:"openconfig-if-ip"` + Ipv6 *Interface_Subinterface_Ipv6 `path:"ipv6" module:"openconfig-if-ip"` + LastChange *uint32 `path:"state/last-change" module:"openconfig-interfaces"` + Name *string `path:"config/name" module:"openconfig-interfaces"` + OperStatus E_Interface_OperStatus `path:"state/oper-status" module:"openconfig-interfaces"` + Vlan *Interface_Subinterface_Vlan `path:"vlan" module:"openconfig-vlan"` +} + +// IsYANGGoStruct ensures that Interface_Subinterface implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_Subinterface) IsYANGGoStruct() {} + +// ΛListKeyMap returns the keys of the Interface_Subinterface struct, which is a YANG list entry. +func (t *Interface_Subinterface) ΛListKeyMap() (map[string]interface{}, error) { + if t.Index == nil { + return nil, fmt.Errorf("nil value for key Index") + } + + return map[string]interface{}{ + "index": *t.Index, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_Subinterface) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_Subinterface"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_Subinterface) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_Subinterface_Counters represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/state/counters YANG schema element. +type Interface_Subinterface_Counters struct { + InBroadcastPkts *uint64 `path:"in-broadcast-pkts" module:"openconfig-interfaces"` + InDiscards *uint64 `path:"in-discards" module:"openconfig-interfaces"` + InErrors *uint64 `path:"in-errors" module:"openconfig-interfaces"` + InMulticastPkts *uint64 `path:"in-multicast-pkts" module:"openconfig-interfaces"` + InOctets *uint64 `path:"in-octets" module:"openconfig-interfaces"` + InUnicastPkts *uint64 `path:"in-unicast-pkts" module:"openconfig-interfaces"` + InUnknownProtos *uint32 `path:"in-unknown-protos" module:"openconfig-interfaces"` + LastClear *string `path:"last-clear" module:"openconfig-interfaces"` + OutBroadcastPkts *uint64 `path:"out-broadcast-pkts" module:"openconfig-interfaces"` + OutDiscards *uint64 `path:"out-discards" module:"openconfig-interfaces"` + OutErrors *uint64 `path:"out-errors" module:"openconfig-interfaces"` + OutMulticastPkts *uint64 `path:"out-multicast-pkts" module:"openconfig-interfaces"` + OutOctets *uint64 `path:"out-octets" module:"openconfig-interfaces"` + OutUnicastPkts *uint64 `path:"out-unicast-pkts" module:"openconfig-interfaces"` +} + +// IsYANGGoStruct ensures that Interface_Subinterface_Counters implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_Subinterface_Counters) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_Subinterface_Counters) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Counters"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_Subinterface_Counters) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_Subinterface_Ipv4 represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4 YANG schema element. +type Interface_Subinterface_Ipv4 struct { + Address map[string]*Interface_Subinterface_Ipv4_Address `path:"addresses/address" module:"openconfig-if-ip"` + Enabled *bool `path:"config/enabled" module:"openconfig-if-ip"` + Mtu *uint16 `path:"config/mtu" module:"openconfig-if-ip"` + Neighbor map[string]*Interface_Subinterface_Ipv4_Neighbor `path:"neighbors/neighbor" module:"openconfig-if-ip"` + Unnumbered *Interface_Subinterface_Ipv4_Unnumbered `path:"unnumbered" module:"openconfig-if-ip"` +} + +// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4 implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_Subinterface_Ipv4) IsYANGGoStruct() {} + +// NewAddress creates a new entry in the Address list of the +// Interface_Subinterface_Ipv4 struct. The keys of the list are populated from the input +// arguments. +func (t *Interface_Subinterface_Ipv4) NewAddress(Ip string) (*Interface_Subinterface_Ipv4_Address, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.Address == nil { + t.Address = make(map[string]*Interface_Subinterface_Ipv4_Address) + } + + key := Ip + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.Address[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list Address", key) + } + + t.Address[key] = &Interface_Subinterface_Ipv4_Address{ + Ip: &Ip, + } + + return t.Address[key], nil +} + +// NewNeighbor creates a new entry in the Neighbor list of the +// Interface_Subinterface_Ipv4 struct. The keys of the list are populated from the input +// arguments. +func (t *Interface_Subinterface_Ipv4) NewNeighbor(Ip string) (*Interface_Subinterface_Ipv4_Neighbor, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.Neighbor == nil { + t.Neighbor = make(map[string]*Interface_Subinterface_Ipv4_Neighbor) + } + + key := Ip + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.Neighbor[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list Neighbor", key) + } + + t.Neighbor[key] = &Interface_Subinterface_Ipv4_Neighbor{ + Ip: &Ip, + } + + return t.Neighbor[key], nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_Subinterface_Ipv4) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_Subinterface_Ipv4) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_Subinterface_Ipv4_Address represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address YANG schema element. +type Interface_Subinterface_Ipv4_Address struct { + Ip *string `path:"config/ip|ip" module:"openconfig-if-ip"` + Origin E_OpenconfigIfIp_IpAddressOrigin `path:"state/origin" module:"openconfig-if-ip"` + PrefixLength *uint8 `path:"config/prefix-length" module:"openconfig-if-ip"` + VrrpGroup map[uint8]*Interface_Subinterface_Ipv4_Address_VrrpGroup `path:"vrrp/vrrp-group" module:"openconfig-if-ip"` +} + +// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4_Address implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_Subinterface_Ipv4_Address) IsYANGGoStruct() {} + +// NewVrrpGroup creates a new entry in the VrrpGroup list of the +// Interface_Subinterface_Ipv4_Address struct. The keys of the list are populated from the input +// arguments. +func (t *Interface_Subinterface_Ipv4_Address) NewVrrpGroup(VirtualRouterId uint8) (*Interface_Subinterface_Ipv4_Address_VrrpGroup, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.VrrpGroup == nil { + t.VrrpGroup = make(map[uint8]*Interface_Subinterface_Ipv4_Address_VrrpGroup) + } + + key := VirtualRouterId + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.VrrpGroup[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list VrrpGroup", key) + } + + t.VrrpGroup[key] = &Interface_Subinterface_Ipv4_Address_VrrpGroup{ + VirtualRouterId: &VirtualRouterId, + } + + return t.VrrpGroup[key], nil +} + +// ΛListKeyMap returns the keys of the Interface_Subinterface_Ipv4_Address struct, which is a YANG list entry. +func (t *Interface_Subinterface_Ipv4_Address) ΛListKeyMap() (map[string]interface{}, error) { + if t.Ip == nil { + return nil, fmt.Errorf("nil value for key Ip") + } + + return map[string]interface{}{ + "ip": *t.Ip, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_Subinterface_Ipv4_Address) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4_Address"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_Subinterface_Ipv4_Address) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_Subinterface_Ipv4_Address_VrrpGroup represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/vrrp/vrrp-group YANG schema element. +type Interface_Subinterface_Ipv4_Address_VrrpGroup struct { + AcceptMode *bool `path:"config/accept-mode" module:"openconfig-if-ip"` + AdvertisementInterval *uint16 `path:"config/advertisement-interval" module:"openconfig-if-ip"` + CurrentPriority *uint8 `path:"state/current-priority" module:"openconfig-if-ip"` + InterfaceTracking *Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking `path:"interface-tracking" module:"openconfig-if-ip"` + Preempt *bool `path:"config/preempt" module:"openconfig-if-ip"` + PreemptDelay *uint16 `path:"config/preempt-delay" module:"openconfig-if-ip"` + Priority *uint8 `path:"config/priority" module:"openconfig-if-ip"` + VirtualAddress []string `path:"config/virtual-address" module:"openconfig-if-ip"` + VirtualRouterId *uint8 `path:"config/virtual-router-id|virtual-router-id" module:"openconfig-if-ip"` +} + +// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4_Address_VrrpGroup implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_Subinterface_Ipv4_Address_VrrpGroup) IsYANGGoStruct() {} + +// ΛListKeyMap returns the keys of the Interface_Subinterface_Ipv4_Address_VrrpGroup struct, which is a YANG list entry. +func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup) ΛListKeyMap() (map[string]interface{}, error) { + if t.VirtualRouterId == nil { + return nil, fmt.Errorf("nil value for key VirtualRouterId") + } + + return map[string]interface{}{ + "virtual-router-id": *t.VirtualRouterId, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4_Address_VrrpGroup"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/vrrp/vrrp-group/interface-tracking YANG schema element. +type Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking struct { + PriorityDecrement *uint8 `path:"config/priority-decrement" module:"openconfig-if-ip"` + TrackInterface *string `path:"config/track-interface" module:"openconfig-if-ip"` +} + +// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_Subinterface_Ipv4_Address_VrrpGroup_InterfaceTracking) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_Subinterface_Ipv4_Neighbor represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4/neighbors/neighbor YANG schema element. +type Interface_Subinterface_Ipv4_Neighbor struct { + Ip *string `path:"config/ip|ip" module:"openconfig-if-ip"` + LinkLayerAddress *string `path:"config/link-layer-address" module:"openconfig-if-ip"` + Origin E_OpenconfigIfIp_NeighborOrigin `path:"state/origin" module:"openconfig-if-ip"` +} + +// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4_Neighbor implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_Subinterface_Ipv4_Neighbor) IsYANGGoStruct() {} + +// ΛListKeyMap returns the keys of the Interface_Subinterface_Ipv4_Neighbor struct, which is a YANG list entry. +func (t *Interface_Subinterface_Ipv4_Neighbor) ΛListKeyMap() (map[string]interface{}, error) { + if t.Ip == nil { + return nil, fmt.Errorf("nil value for key Ip") + } + + return map[string]interface{}{ + "ip": *t.Ip, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_Subinterface_Ipv4_Neighbor) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4_Neighbor"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_Subinterface_Ipv4_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_Subinterface_Ipv4_Unnumbered represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4/unnumbered YANG schema element. +type Interface_Subinterface_Ipv4_Unnumbered struct { + Enabled *bool `path:"config/enabled" module:"openconfig-if-ip"` + InterfaceRef *Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef `path:"interface-ref" module:"openconfig-if-ip"` +} + +// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4_Unnumbered implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_Subinterface_Ipv4_Unnumbered) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_Subinterface_Ipv4_Unnumbered) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4_Unnumbered"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_Subinterface_Ipv4_Unnumbered) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv4/unnumbered/interface-ref YANG schema element. +type Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef struct { + Interface *string `path:"config/interface" module:"openconfig-if-ip"` + Subinterface *uint32 `path:"config/subinterface" module:"openconfig-if-ip"` +} + +// IsYANGGoStruct ensures that Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_Subinterface_Ipv4_Unnumbered_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_Subinterface_Ipv6 represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6 YANG schema element. +type Interface_Subinterface_Ipv6 struct { + Address map[string]*Interface_Subinterface_Ipv6_Address `path:"addresses/address" module:"openconfig-if-ip"` + DupAddrDetectTransmits *uint32 `path:"config/dup-addr-detect-transmits" module:"openconfig-if-ip"` + Enabled *bool `path:"config/enabled" module:"openconfig-if-ip"` + Mtu *uint32 `path:"config/mtu" module:"openconfig-if-ip"` + Neighbor map[string]*Interface_Subinterface_Ipv6_Neighbor `path:"neighbors/neighbor" module:"openconfig-if-ip"` + Unnumbered *Interface_Subinterface_Ipv6_Unnumbered `path:"unnumbered" module:"openconfig-if-ip"` +} + +// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6 implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_Subinterface_Ipv6) IsYANGGoStruct() {} + +// NewAddress creates a new entry in the Address list of the +// Interface_Subinterface_Ipv6 struct. The keys of the list are populated from the input +// arguments. +func (t *Interface_Subinterface_Ipv6) NewAddress(Ip string) (*Interface_Subinterface_Ipv6_Address, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.Address == nil { + t.Address = make(map[string]*Interface_Subinterface_Ipv6_Address) + } + + key := Ip + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.Address[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list Address", key) + } + + t.Address[key] = &Interface_Subinterface_Ipv6_Address{ + Ip: &Ip, + } + + return t.Address[key], nil +} + +// NewNeighbor creates a new entry in the Neighbor list of the +// Interface_Subinterface_Ipv6 struct. The keys of the list are populated from the input +// arguments. +func (t *Interface_Subinterface_Ipv6) NewNeighbor(Ip string) (*Interface_Subinterface_Ipv6_Neighbor, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.Neighbor == nil { + t.Neighbor = make(map[string]*Interface_Subinterface_Ipv6_Neighbor) + } + + key := Ip + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.Neighbor[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list Neighbor", key) + } + + t.Neighbor[key] = &Interface_Subinterface_Ipv6_Neighbor{ + Ip: &Ip, + } + + return t.Neighbor[key], nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_Subinterface_Ipv6) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_Subinterface_Ipv6) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_Subinterface_Ipv6_Address represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address YANG schema element. +type Interface_Subinterface_Ipv6_Address struct { + Ip *string `path:"config/ip|ip" module:"openconfig-if-ip"` + Origin E_OpenconfigIfIp_IpAddressOrigin `path:"state/origin" module:"openconfig-if-ip"` + PrefixLength *uint8 `path:"config/prefix-length" module:"openconfig-if-ip"` + Status E_Address_Status `path:"state/status" module:"openconfig-if-ip"` + VrrpGroup map[uint8]*Interface_Subinterface_Ipv6_Address_VrrpGroup `path:"vrrp/vrrp-group" module:"openconfig-if-ip"` +} + +// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6_Address implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_Subinterface_Ipv6_Address) IsYANGGoStruct() {} + +// NewVrrpGroup creates a new entry in the VrrpGroup list of the +// Interface_Subinterface_Ipv6_Address struct. The keys of the list are populated from the input +// arguments. +func (t *Interface_Subinterface_Ipv6_Address) NewVrrpGroup(VirtualRouterId uint8) (*Interface_Subinterface_Ipv6_Address_VrrpGroup, error){ + + // Initialise the list within the receiver struct if it has not already been + // created. + if t.VrrpGroup == nil { + t.VrrpGroup = make(map[uint8]*Interface_Subinterface_Ipv6_Address_VrrpGroup) + } + + key := VirtualRouterId + + // Ensure that this key has not already been used in the + // list. Keyed YANG lists do not allow duplicate keys to + // be created. + if _, ok := t.VrrpGroup[key]; ok { + return nil, fmt.Errorf("duplicate key %v for list VrrpGroup", key) + } + + t.VrrpGroup[key] = &Interface_Subinterface_Ipv6_Address_VrrpGroup{ + VirtualRouterId: &VirtualRouterId, + } + + return t.VrrpGroup[key], nil +} + +// ΛListKeyMap returns the keys of the Interface_Subinterface_Ipv6_Address struct, which is a YANG list entry. +func (t *Interface_Subinterface_Ipv6_Address) ΛListKeyMap() (map[string]interface{}, error) { + if t.Ip == nil { + return nil, fmt.Errorf("nil value for key Ip") + } + + return map[string]interface{}{ + "ip": *t.Ip, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_Subinterface_Ipv6_Address) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6_Address"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_Subinterface_Ipv6_Address) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_Subinterface_Ipv6_Address_VrrpGroup represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/vrrp/vrrp-group YANG schema element. +type Interface_Subinterface_Ipv6_Address_VrrpGroup struct { + AcceptMode *bool `path:"config/accept-mode" module:"openconfig-if-ip"` + AdvertisementInterval *uint16 `path:"config/advertisement-interval" module:"openconfig-if-ip"` + CurrentPriority *uint8 `path:"state/current-priority" module:"openconfig-if-ip"` + InterfaceTracking *Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking `path:"interface-tracking" module:"openconfig-if-ip"` + Preempt *bool `path:"config/preempt" module:"openconfig-if-ip"` + PreemptDelay *uint16 `path:"config/preempt-delay" module:"openconfig-if-ip"` + Priority *uint8 `path:"config/priority" module:"openconfig-if-ip"` + VirtualAddress []string `path:"config/virtual-address" module:"openconfig-if-ip"` + VirtualLinkLocal *string `path:"config/virtual-link-local" module:"openconfig-if-ip"` + VirtualRouterId *uint8 `path:"config/virtual-router-id|virtual-router-id" module:"openconfig-if-ip"` +} + +// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6_Address_VrrpGroup implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_Subinterface_Ipv6_Address_VrrpGroup) IsYANGGoStruct() {} + +// ΛListKeyMap returns the keys of the Interface_Subinterface_Ipv6_Address_VrrpGroup struct, which is a YANG list entry. +func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup) ΛListKeyMap() (map[string]interface{}, error) { + if t.VirtualRouterId == nil { + return nil, fmt.Errorf("nil value for key VirtualRouterId") + } + + return map[string]interface{}{ + "virtual-router-id": *t.VirtualRouterId, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6_Address_VrrpGroup"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/vrrp/vrrp-group/interface-tracking YANG schema element. +type Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking struct { + PriorityDecrement *uint8 `path:"config/priority-decrement" module:"openconfig-if-ip"` + TrackInterface *string `path:"config/track-interface" module:"openconfig-if-ip"` +} + +// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_Subinterface_Ipv6_Address_VrrpGroup_InterfaceTracking) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_Subinterface_Ipv6_Neighbor represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6/neighbors/neighbor YANG schema element. +type Interface_Subinterface_Ipv6_Neighbor struct { + Ip *string `path:"config/ip|ip" module:"openconfig-if-ip"` + IsRouter YANGEmpty `path:"state/is-router" module:"openconfig-if-ip"` + LinkLayerAddress *string `path:"config/link-layer-address" module:"openconfig-if-ip"` + NeighborState E_Neighbor_NeighborState `path:"state/neighbor-state" module:"openconfig-if-ip"` + Origin E_OpenconfigIfIp_NeighborOrigin `path:"state/origin" module:"openconfig-if-ip"` +} + +// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6_Neighbor implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_Subinterface_Ipv6_Neighbor) IsYANGGoStruct() {} + +// ΛListKeyMap returns the keys of the Interface_Subinterface_Ipv6_Neighbor struct, which is a YANG list entry. +func (t *Interface_Subinterface_Ipv6_Neighbor) ΛListKeyMap() (map[string]interface{}, error) { + if t.Ip == nil { + return nil, fmt.Errorf("nil value for key Ip") + } + + return map[string]interface{}{ + "ip": *t.Ip, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_Subinterface_Ipv6_Neighbor) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6_Neighbor"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_Subinterface_Ipv6_Neighbor) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_Subinterface_Ipv6_Unnumbered represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6/unnumbered YANG schema element. +type Interface_Subinterface_Ipv6_Unnumbered struct { + Enabled *bool `path:"config/enabled" module:"openconfig-if-ip"` + InterfaceRef *Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef `path:"interface-ref" module:"openconfig-if-ip"` +} + +// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6_Unnumbered implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_Subinterface_Ipv6_Unnumbered) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_Subinterface_Ipv6_Unnumbered) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6_Unnumbered"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_Subinterface_Ipv6_Unnumbered) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/ipv6/unnumbered/interface-ref YANG schema element. +type Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef struct { + Interface *string `path:"config/interface" module:"openconfig-if-ip"` + Subinterface *uint32 `path:"config/subinterface" module:"openconfig-if-ip"` +} + +// IsYANGGoStruct ensures that Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_Subinterface_Ipv6_Unnumbered_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Interface_Subinterface_Vlan represents the /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/vlan YANG schema element. +type Interface_Subinterface_Vlan struct { + VlanId Interface_Subinterface_Vlan_VlanId_Union `path:"config/vlan-id" module:"openconfig-vlan"` +} + +// IsYANGGoStruct ensures that Interface_Subinterface_Vlan implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Interface_Subinterface_Vlan) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Interface_Subinterface_Vlan) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Interface_Subinterface_Vlan"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Interface_Subinterface_Vlan) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + +// Interface_Subinterface_Vlan_VlanId_Union is an interface that is implemented by valid types for the union +// for the leaf /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/vlan/config/vlan-id within the YANG schema. +type Interface_Subinterface_Vlan_VlanId_Union interface { + Is_Interface_Subinterface_Vlan_VlanId_Union() +} + +// Interface_Subinterface_Vlan_VlanId_Union_String is used when /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/vlan/config/vlan-id +// is to be set to a string value. +type Interface_Subinterface_Vlan_VlanId_Union_String struct { + String string +} + +// Is_Interface_Subinterface_Vlan_VlanId_Union ensures that Interface_Subinterface_Vlan_VlanId_Union_String +// implements the Interface_Subinterface_Vlan_VlanId_Union interface. +func (*Interface_Subinterface_Vlan_VlanId_Union_String) Is_Interface_Subinterface_Vlan_VlanId_Union() {} + +// Interface_Subinterface_Vlan_VlanId_Union_Uint16 is used when /openconfig-interfaces/interfaces/interface/subinterfaces/subinterface/vlan/config/vlan-id +// is to be set to a uint16 value. +type Interface_Subinterface_Vlan_VlanId_Union_Uint16 struct { + Uint16 uint16 +} + +// Is_Interface_Subinterface_Vlan_VlanId_Union ensures that Interface_Subinterface_Vlan_VlanId_Union_Uint16 +// implements the Interface_Subinterface_Vlan_VlanId_Union interface. +func (*Interface_Subinterface_Vlan_VlanId_Union_Uint16) Is_Interface_Subinterface_Vlan_VlanId_Union() {} + +// To_Interface_Subinterface_Vlan_VlanId_Union takes an input interface{} and attempts to convert it to a struct +// which implements the Interface_Subinterface_Vlan_VlanId_Union union. It returns an error if the interface{} supplied +// cannot be converted to a type within the union. +func (t *Interface_Subinterface_Vlan) To_Interface_Subinterface_Vlan_VlanId_Union(i interface{}) (Interface_Subinterface_Vlan_VlanId_Union, error) { + switch v := i.(type) { + case string: + return &Interface_Subinterface_Vlan_VlanId_Union_String{v}, nil + case uint16: + return &Interface_Subinterface_Vlan_VlanId_Union_Uint16{v}, nil + default: + return nil, fmt.Errorf("cannot convert %v to Interface_Subinterface_Vlan_VlanId_Union, unknown union type, got: %T, want any of [string, uint16]", i, i) + } +} + + +// Vlan represents the /openconfig-vlan/vlans/vlan YANG schema element. +type Vlan struct { + Member []*Vlan_Member `path:"members/member" module:"openconfig-vlan"` + Name *string `path:"config/name" module:"openconfig-vlan"` + Status E_Vlan_Status `path:"config/status" module:"openconfig-vlan"` + Tpid E_OpenconfigVlanTypes_TPID_TYPES `path:"config/tpid" module:"openconfig-vlan"` + VlanId *uint16 `path:"config/vlan-id|vlan-id" module:"openconfig-vlan"` +} + +// IsYANGGoStruct ensures that Vlan implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Vlan) IsYANGGoStruct() {} + +// ΛListKeyMap returns the keys of the Vlan struct, which is a YANG list entry. +func (t *Vlan) ΛListKeyMap() (map[string]interface{}, error) { + if t.VlanId == nil { + return nil, fmt.Errorf("nil value for key VlanId") + } + + return map[string]interface{}{ + "vlan-id": *t.VlanId, + }, nil +} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Vlan) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Vlan"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Vlan) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Vlan_Member represents the /openconfig-vlan/vlans/vlan/members/member YANG schema element. +type Vlan_Member struct { + InterfaceRef *Vlan_Member_InterfaceRef `path:"interface-ref" module:"openconfig-vlan"` +} + +// IsYANGGoStruct ensures that Vlan_Member implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Vlan_Member) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Vlan_Member) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Vlan_Member"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Vlan_Member) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// Vlan_Member_InterfaceRef represents the /openconfig-vlan/vlans/vlan/members/member/interface-ref YANG schema element. +type Vlan_Member_InterfaceRef struct { + Interface *string `path:"state/interface" module:"openconfig-vlan"` + Subinterface *uint32 `path:"state/subinterface" module:"openconfig-vlan"` +} + +// IsYANGGoStruct ensures that Vlan_Member_InterfaceRef implements the yang.GoStruct +// interface. This allows functions that need to handle this struct to +// identify it as being generated by ygen. +func (*Vlan_Member_InterfaceRef) IsYANGGoStruct() {} + +// Validate validates s against the YANG schema corresponding to its type. +func (t *Vlan_Member_InterfaceRef) Validate(opts ...ygot.ValidationOption) error { + if err := ytypes.Validate(SchemaTree["Vlan_Member_InterfaceRef"], t, opts...); err != nil { + return err + } + return nil +} + +// ΛEnumTypeMap returns a map, keyed by YANG schema path, of the enumerated types +// that are included in the generated code. +func (t *Vlan_Member_InterfaceRef) ΛEnumTypeMap() map[string][]reflect.Type { return ΛEnumTypes } + + +// E_Address_Status is a derived int64 type which is used to represent +// the enumerated node Address_Status. An additional value named +// Address_Status_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_Address_Status int64 + +// IsYANGGoEnum ensures that Address_Status implements the yang.GoEnum +// interface. This ensures that Address_Status can be identified as a +// mapped type for a YANG enumeration. +func (E_Address_Status) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with Address_Status. +func (E_Address_Status) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +// String returns a logging-friendly string for E_Address_Status. +func (e E_Address_Status) String() string { + return ygot.EnumLogString(e, int64(e), "E_Address_Status") +} + +const ( + // Address_Status_UNSET corresponds to the value UNSET of Address_Status + Address_Status_UNSET E_Address_Status = 0 + // Address_Status_PREFERRED corresponds to the value PREFERRED of Address_Status + Address_Status_PREFERRED E_Address_Status = 1 + // Address_Status_DEPRECATED corresponds to the value DEPRECATED of Address_Status + Address_Status_DEPRECATED E_Address_Status = 2 + // Address_Status_INVALID corresponds to the value INVALID of Address_Status + Address_Status_INVALID E_Address_Status = 3 + // Address_Status_INACCESSIBLE corresponds to the value INACCESSIBLE of Address_Status + Address_Status_INACCESSIBLE E_Address_Status = 4 + // Address_Status_UNKNOWN corresponds to the value UNKNOWN of Address_Status + Address_Status_UNKNOWN E_Address_Status = 5 + // Address_Status_TENTATIVE corresponds to the value TENTATIVE of Address_Status + Address_Status_TENTATIVE E_Address_Status = 6 + // Address_Status_DUPLICATE corresponds to the value DUPLICATE of Address_Status + Address_Status_DUPLICATE E_Address_Status = 7 + // Address_Status_OPTIMISTIC corresponds to the value OPTIMISTIC of Address_Status + Address_Status_OPTIMISTIC E_Address_Status = 8 +) + + +// E_Ethernet_DuplexMode is a derived int64 type which is used to represent +// the enumerated node Ethernet_DuplexMode. An additional value named +// Ethernet_DuplexMode_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_Ethernet_DuplexMode int64 + +// IsYANGGoEnum ensures that Ethernet_DuplexMode implements the yang.GoEnum +// interface. This ensures that Ethernet_DuplexMode can be identified as a +// mapped type for a YANG enumeration. +func (E_Ethernet_DuplexMode) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with Ethernet_DuplexMode. +func (E_Ethernet_DuplexMode) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +// String returns a logging-friendly string for E_Ethernet_DuplexMode. +func (e E_Ethernet_DuplexMode) String() string { + return ygot.EnumLogString(e, int64(e), "E_Ethernet_DuplexMode") +} + +const ( + // Ethernet_DuplexMode_UNSET corresponds to the value UNSET of Ethernet_DuplexMode + Ethernet_DuplexMode_UNSET E_Ethernet_DuplexMode = 0 + // Ethernet_DuplexMode_FULL corresponds to the value FULL of Ethernet_DuplexMode + Ethernet_DuplexMode_FULL E_Ethernet_DuplexMode = 1 + // Ethernet_DuplexMode_HALF corresponds to the value HALF of Ethernet_DuplexMode + Ethernet_DuplexMode_HALF E_Ethernet_DuplexMode = 2 +) + + +// E_Ethernet_NegotiatedDuplexMode is a derived int64 type which is used to represent +// the enumerated node Ethernet_NegotiatedDuplexMode. An additional value named +// Ethernet_NegotiatedDuplexMode_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_Ethernet_NegotiatedDuplexMode int64 + +// IsYANGGoEnum ensures that Ethernet_NegotiatedDuplexMode implements the yang.GoEnum +// interface. This ensures that Ethernet_NegotiatedDuplexMode can be identified as a +// mapped type for a YANG enumeration. +func (E_Ethernet_NegotiatedDuplexMode) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with Ethernet_NegotiatedDuplexMode. +func (E_Ethernet_NegotiatedDuplexMode) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +// String returns a logging-friendly string for E_Ethernet_NegotiatedDuplexMode. +func (e E_Ethernet_NegotiatedDuplexMode) String() string { + return ygot.EnumLogString(e, int64(e), "E_Ethernet_NegotiatedDuplexMode") +} + +const ( + // Ethernet_NegotiatedDuplexMode_UNSET corresponds to the value UNSET of Ethernet_NegotiatedDuplexMode + Ethernet_NegotiatedDuplexMode_UNSET E_Ethernet_NegotiatedDuplexMode = 0 + // Ethernet_NegotiatedDuplexMode_FULL corresponds to the value FULL of Ethernet_NegotiatedDuplexMode + Ethernet_NegotiatedDuplexMode_FULL E_Ethernet_NegotiatedDuplexMode = 1 + // Ethernet_NegotiatedDuplexMode_HALF corresponds to the value HALF of Ethernet_NegotiatedDuplexMode + Ethernet_NegotiatedDuplexMode_HALF E_Ethernet_NegotiatedDuplexMode = 2 +) + + +// E_IETFInterfaces_InterfaceType is a derived int64 type which is used to represent +// the enumerated node IETFInterfaces_InterfaceType. An additional value named +// IETFInterfaces_InterfaceType_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_IETFInterfaces_InterfaceType int64 + +// IsYANGGoEnum ensures that IETFInterfaces_InterfaceType implements the yang.GoEnum +// interface. This ensures that IETFInterfaces_InterfaceType can be identified as a +// mapped type for a YANG enumeration. +func (E_IETFInterfaces_InterfaceType) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with IETFInterfaces_InterfaceType. +func (E_IETFInterfaces_InterfaceType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +// String returns a logging-friendly string for E_IETFInterfaces_InterfaceType. +func (e E_IETFInterfaces_InterfaceType) String() string { + return ygot.EnumLogString(e, int64(e), "E_IETFInterfaces_InterfaceType") +} + +const ( + // IETFInterfaces_InterfaceType_UNSET corresponds to the value UNSET of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_UNSET E_IETFInterfaces_InterfaceType = 0 + // IETFInterfaces_InterfaceType_a12MppSwitch corresponds to the value a12MppSwitch of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_a12MppSwitch E_IETFInterfaces_InterfaceType = 1 + // IETFInterfaces_InterfaceType_aal2 corresponds to the value aal2 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_aal2 E_IETFInterfaces_InterfaceType = 2 + // IETFInterfaces_InterfaceType_aal5 corresponds to the value aal5 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_aal5 E_IETFInterfaces_InterfaceType = 3 + // IETFInterfaces_InterfaceType_actelisMetaLOOP corresponds to the value actelisMetaLOOP of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_actelisMetaLOOP E_IETFInterfaces_InterfaceType = 4 + // IETFInterfaces_InterfaceType_adsl corresponds to the value adsl of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_adsl E_IETFInterfaces_InterfaceType = 5 + // IETFInterfaces_InterfaceType_adsl2 corresponds to the value adsl2 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_adsl2 E_IETFInterfaces_InterfaceType = 6 + // IETFInterfaces_InterfaceType_adsl2plus corresponds to the value adsl2plus of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_adsl2plus E_IETFInterfaces_InterfaceType = 7 + // IETFInterfaces_InterfaceType_aflane8023 corresponds to the value aflane8023 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_aflane8023 E_IETFInterfaces_InterfaceType = 8 + // IETFInterfaces_InterfaceType_aflane8025 corresponds to the value aflane8025 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_aflane8025 E_IETFInterfaces_InterfaceType = 9 + // IETFInterfaces_InterfaceType_aluELP corresponds to the value aluELP of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_aluELP E_IETFInterfaces_InterfaceType = 10 + // IETFInterfaces_InterfaceType_aluEpon corresponds to the value aluEpon of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_aluEpon E_IETFInterfaces_InterfaceType = 11 + // IETFInterfaces_InterfaceType_aluEponLogicalLink corresponds to the value aluEponLogicalLink of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_aluEponLogicalLink E_IETFInterfaces_InterfaceType = 12 + // IETFInterfaces_InterfaceType_aluEponOnu corresponds to the value aluEponOnu of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_aluEponOnu E_IETFInterfaces_InterfaceType = 13 + // IETFInterfaces_InterfaceType_aluEponPhysicalUni corresponds to the value aluEponPhysicalUni of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_aluEponPhysicalUni E_IETFInterfaces_InterfaceType = 14 + // IETFInterfaces_InterfaceType_aluGponOnu corresponds to the value aluGponOnu of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_aluGponOnu E_IETFInterfaces_InterfaceType = 15 + // IETFInterfaces_InterfaceType_aluGponPhysicalUni corresponds to the value aluGponPhysicalUni of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_aluGponPhysicalUni E_IETFInterfaces_InterfaceType = 16 + // IETFInterfaces_InterfaceType_arap corresponds to the value arap of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_arap E_IETFInterfaces_InterfaceType = 17 + // IETFInterfaces_InterfaceType_arcnet corresponds to the value arcnet of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_arcnet E_IETFInterfaces_InterfaceType = 18 + // IETFInterfaces_InterfaceType_arcnetPlus corresponds to the value arcnetPlus of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_arcnetPlus E_IETFInterfaces_InterfaceType = 19 + // IETFInterfaces_InterfaceType_async corresponds to the value async of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_async E_IETFInterfaces_InterfaceType = 20 + // IETFInterfaces_InterfaceType_atm corresponds to the value atm of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_atm E_IETFInterfaces_InterfaceType = 21 + // IETFInterfaces_InterfaceType_atmDxi corresponds to the value atmDxi of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_atmDxi E_IETFInterfaces_InterfaceType = 22 + // IETFInterfaces_InterfaceType_atmFuni corresponds to the value atmFuni of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_atmFuni E_IETFInterfaces_InterfaceType = 23 + // IETFInterfaces_InterfaceType_atmIma corresponds to the value atmIma of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_atmIma E_IETFInterfaces_InterfaceType = 24 + // IETFInterfaces_InterfaceType_atmLogical corresponds to the value atmLogical of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_atmLogical E_IETFInterfaces_InterfaceType = 25 + // IETFInterfaces_InterfaceType_atmRadio corresponds to the value atmRadio of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_atmRadio E_IETFInterfaces_InterfaceType = 26 + // IETFInterfaces_InterfaceType_atmSubInterface corresponds to the value atmSubInterface of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_atmSubInterface E_IETFInterfaces_InterfaceType = 27 + // IETFInterfaces_InterfaceType_atmVciEndPt corresponds to the value atmVciEndPt of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_atmVciEndPt E_IETFInterfaces_InterfaceType = 28 + // IETFInterfaces_InterfaceType_atmVirtual corresponds to the value atmVirtual of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_atmVirtual E_IETFInterfaces_InterfaceType = 29 + // IETFInterfaces_InterfaceType_atmbond corresponds to the value atmbond of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_atmbond E_IETFInterfaces_InterfaceType = 30 + // IETFInterfaces_InterfaceType_aviciOpticalEther corresponds to the value aviciOpticalEther of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_aviciOpticalEther E_IETFInterfaces_InterfaceType = 31 + // IETFInterfaces_InterfaceType_basicISDN corresponds to the value basicISDN of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_basicISDN E_IETFInterfaces_InterfaceType = 32 + // IETFInterfaces_InterfaceType_bgppolicyaccounting corresponds to the value bgppolicyaccounting of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_bgppolicyaccounting E_IETFInterfaces_InterfaceType = 33 + // IETFInterfaces_InterfaceType_bits corresponds to the value bits of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_bits E_IETFInterfaces_InterfaceType = 34 + // IETFInterfaces_InterfaceType_bridge corresponds to the value bridge of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_bridge E_IETFInterfaces_InterfaceType = 35 + // IETFInterfaces_InterfaceType_bsc corresponds to the value bsc of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_bsc E_IETFInterfaces_InterfaceType = 36 + // IETFInterfaces_InterfaceType_cableDownstreamRfPort corresponds to the value cableDownstreamRfPort of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_cableDownstreamRfPort E_IETFInterfaces_InterfaceType = 37 + // IETFInterfaces_InterfaceType_capwapDot11Bss corresponds to the value capwapDot11Bss of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_capwapDot11Bss E_IETFInterfaces_InterfaceType = 38 + // IETFInterfaces_InterfaceType_capwapDot11Profile corresponds to the value capwapDot11Profile of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_capwapDot11Profile E_IETFInterfaces_InterfaceType = 39 + // IETFInterfaces_InterfaceType_capwapWtpVirtualRadio corresponds to the value capwapWtpVirtualRadio of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_capwapWtpVirtualRadio E_IETFInterfaces_InterfaceType = 40 + // IETFInterfaces_InterfaceType_cblVectaStar corresponds to the value cblVectaStar of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_cblVectaStar E_IETFInterfaces_InterfaceType = 41 + // IETFInterfaces_InterfaceType_cctEmul corresponds to the value cctEmul of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_cctEmul E_IETFInterfaces_InterfaceType = 42 + // IETFInterfaces_InterfaceType_ces corresponds to the value ces of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_ces E_IETFInterfaces_InterfaceType = 43 + // IETFInterfaces_InterfaceType_channel corresponds to the value channel of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_channel E_IETFInterfaces_InterfaceType = 44 + // IETFInterfaces_InterfaceType_ciscoISLvlan corresponds to the value ciscoISLvlan of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_ciscoISLvlan E_IETFInterfaces_InterfaceType = 45 + // IETFInterfaces_InterfaceType_cnr corresponds to the value cnr of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_cnr E_IETFInterfaces_InterfaceType = 46 + // IETFInterfaces_InterfaceType_coffee corresponds to the value coffee of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_coffee E_IETFInterfaces_InterfaceType = 47 + // IETFInterfaces_InterfaceType_compositeLink corresponds to the value compositeLink of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_compositeLink E_IETFInterfaces_InterfaceType = 48 + // IETFInterfaces_InterfaceType_dcn corresponds to the value dcn of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_dcn E_IETFInterfaces_InterfaceType = 49 + // IETFInterfaces_InterfaceType_ddnX25 corresponds to the value ddnX25 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_ddnX25 E_IETFInterfaces_InterfaceType = 50 + // IETFInterfaces_InterfaceType_digitalPowerline corresponds to the value digitalPowerline of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_digitalPowerline E_IETFInterfaces_InterfaceType = 51 + // IETFInterfaces_InterfaceType_digitalWrapperOverheadChannel corresponds to the value digitalWrapperOverheadChannel of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_digitalWrapperOverheadChannel E_IETFInterfaces_InterfaceType = 52 + // IETFInterfaces_InterfaceType_dlsw corresponds to the value dlsw of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_dlsw E_IETFInterfaces_InterfaceType = 53 + // IETFInterfaces_InterfaceType_docsCableDownstream corresponds to the value docsCableDownstream of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_docsCableDownstream E_IETFInterfaces_InterfaceType = 54 + // IETFInterfaces_InterfaceType_docsCableMCmtsDownstream corresponds to the value docsCableMCmtsDownstream of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_docsCableMCmtsDownstream E_IETFInterfaces_InterfaceType = 55 + // IETFInterfaces_InterfaceType_docsCableMaclayer corresponds to the value docsCableMaclayer of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_docsCableMaclayer E_IETFInterfaces_InterfaceType = 56 + // IETFInterfaces_InterfaceType_docsCableUpstream corresponds to the value docsCableUpstream of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_docsCableUpstream E_IETFInterfaces_InterfaceType = 57 + // IETFInterfaces_InterfaceType_docsCableUpstreamChannel corresponds to the value docsCableUpstreamChannel of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_docsCableUpstreamChannel E_IETFInterfaces_InterfaceType = 58 + // IETFInterfaces_InterfaceType_docsCableUpstreamRfPort corresponds to the value docsCableUpstreamRfPort of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_docsCableUpstreamRfPort E_IETFInterfaces_InterfaceType = 59 + // IETFInterfaces_InterfaceType_ds0 corresponds to the value ds0 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_ds0 E_IETFInterfaces_InterfaceType = 60 + // IETFInterfaces_InterfaceType_ds0Bundle corresponds to the value ds0Bundle of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_ds0Bundle E_IETFInterfaces_InterfaceType = 61 + // IETFInterfaces_InterfaceType_ds1 corresponds to the value ds1 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_ds1 E_IETFInterfaces_InterfaceType = 62 + // IETFInterfaces_InterfaceType_ds1FDL corresponds to the value ds1FDL of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_ds1FDL E_IETFInterfaces_InterfaceType = 63 + // IETFInterfaces_InterfaceType_ds3 corresponds to the value ds3 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_ds3 E_IETFInterfaces_InterfaceType = 64 + // IETFInterfaces_InterfaceType_dtm corresponds to the value dtm of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_dtm E_IETFInterfaces_InterfaceType = 65 + // IETFInterfaces_InterfaceType_dvbAsiIn corresponds to the value dvbAsiIn of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_dvbAsiIn E_IETFInterfaces_InterfaceType = 66 + // IETFInterfaces_InterfaceType_dvbAsiOut corresponds to the value dvbAsiOut of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_dvbAsiOut E_IETFInterfaces_InterfaceType = 67 + // IETFInterfaces_InterfaceType_dvbRccDownstream corresponds to the value dvbRccDownstream of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_dvbRccDownstream E_IETFInterfaces_InterfaceType = 68 + // IETFInterfaces_InterfaceType_dvbRccMacLayer corresponds to the value dvbRccMacLayer of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_dvbRccMacLayer E_IETFInterfaces_InterfaceType = 69 + // IETFInterfaces_InterfaceType_dvbRccUpstream corresponds to the value dvbRccUpstream of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_dvbRccUpstream E_IETFInterfaces_InterfaceType = 70 + // IETFInterfaces_InterfaceType_dvbRcsMacLayer corresponds to the value dvbRcsMacLayer of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_dvbRcsMacLayer E_IETFInterfaces_InterfaceType = 71 + // IETFInterfaces_InterfaceType_dvbRcsTdma corresponds to the value dvbRcsTdma of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_dvbRcsTdma E_IETFInterfaces_InterfaceType = 72 + // IETFInterfaces_InterfaceType_dvbTdm corresponds to the value dvbTdm of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_dvbTdm E_IETFInterfaces_InterfaceType = 73 + // IETFInterfaces_InterfaceType_e1 corresponds to the value e1 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_e1 E_IETFInterfaces_InterfaceType = 74 + // IETFInterfaces_InterfaceType_econet corresponds to the value econet of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_econet E_IETFInterfaces_InterfaceType = 75 + // IETFInterfaces_InterfaceType_eon corresponds to the value eon of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_eon E_IETFInterfaces_InterfaceType = 76 + // IETFInterfaces_InterfaceType_eplrs corresponds to the value eplrs of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_eplrs E_IETFInterfaces_InterfaceType = 77 + // IETFInterfaces_InterfaceType_escon corresponds to the value escon of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_escon E_IETFInterfaces_InterfaceType = 78 + // IETFInterfaces_InterfaceType_ethernet3Mbit corresponds to the value ethernet3Mbit of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_ethernet3Mbit E_IETFInterfaces_InterfaceType = 79 + // IETFInterfaces_InterfaceType_ethernetCsmacd corresponds to the value ethernetCsmacd of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_ethernetCsmacd E_IETFInterfaces_InterfaceType = 80 + // IETFInterfaces_InterfaceType_fast corresponds to the value fast of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_fast E_IETFInterfaces_InterfaceType = 81 + // IETFInterfaces_InterfaceType_fastEther corresponds to the value fastEther of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_fastEther E_IETFInterfaces_InterfaceType = 82 + // IETFInterfaces_InterfaceType_fastEtherFX corresponds to the value fastEtherFX of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_fastEtherFX E_IETFInterfaces_InterfaceType = 83 + // IETFInterfaces_InterfaceType_fcipLink corresponds to the value fcipLink of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_fcipLink E_IETFInterfaces_InterfaceType = 84 + // IETFInterfaces_InterfaceType_fddi corresponds to the value fddi of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_fddi E_IETFInterfaces_InterfaceType = 85 + // IETFInterfaces_InterfaceType_fibreChannel corresponds to the value fibreChannel of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_fibreChannel E_IETFInterfaces_InterfaceType = 86 + // IETFInterfaces_InterfaceType_frDlciEndPt corresponds to the value frDlciEndPt of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_frDlciEndPt E_IETFInterfaces_InterfaceType = 87 + // IETFInterfaces_InterfaceType_frForward corresponds to the value frForward of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_frForward E_IETFInterfaces_InterfaceType = 88 + // IETFInterfaces_InterfaceType_frameRelay corresponds to the value frameRelay of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_frameRelay E_IETFInterfaces_InterfaceType = 89 + // IETFInterfaces_InterfaceType_frameRelayInterconnect corresponds to the value frameRelayInterconnect of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_frameRelayInterconnect E_IETFInterfaces_InterfaceType = 90 + // IETFInterfaces_InterfaceType_frameRelayMPI corresponds to the value frameRelayMPI of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_frameRelayMPI E_IETFInterfaces_InterfaceType = 91 + // IETFInterfaces_InterfaceType_frameRelayService corresponds to the value frameRelayService of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_frameRelayService E_IETFInterfaces_InterfaceType = 92 + // IETFInterfaces_InterfaceType_frf16MfrBundle corresponds to the value frf16MfrBundle of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_frf16MfrBundle E_IETFInterfaces_InterfaceType = 93 + // IETFInterfaces_InterfaceType_g703at2mb corresponds to the value g703at2mb of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_g703at2mb E_IETFInterfaces_InterfaceType = 94 + // IETFInterfaces_InterfaceType_g703at64k corresponds to the value g703at64k of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_g703at64k E_IETFInterfaces_InterfaceType = 95 + // IETFInterfaces_InterfaceType_g9981 corresponds to the value g9981 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_g9981 E_IETFInterfaces_InterfaceType = 96 + // IETFInterfaces_InterfaceType_g9982 corresponds to the value g9982 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_g9982 E_IETFInterfaces_InterfaceType = 97 + // IETFInterfaces_InterfaceType_g9983 corresponds to the value g9983 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_g9983 E_IETFInterfaces_InterfaceType = 98 + // IETFInterfaces_InterfaceType_gfp corresponds to the value gfp of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_gfp E_IETFInterfaces_InterfaceType = 99 + // IETFInterfaces_InterfaceType_gigabitEthernet corresponds to the value gigabitEthernet of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_gigabitEthernet E_IETFInterfaces_InterfaceType = 100 + // IETFInterfaces_InterfaceType_gpon corresponds to the value gpon of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_gpon E_IETFInterfaces_InterfaceType = 101 + // IETFInterfaces_InterfaceType_gr303IDT corresponds to the value gr303IDT of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_gr303IDT E_IETFInterfaces_InterfaceType = 102 + // IETFInterfaces_InterfaceType_gr303RDT corresponds to the value gr303RDT of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_gr303RDT E_IETFInterfaces_InterfaceType = 103 + // IETFInterfaces_InterfaceType_gtp corresponds to the value gtp of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_gtp E_IETFInterfaces_InterfaceType = 104 + // IETFInterfaces_InterfaceType_h323Gatekeeper corresponds to the value h323Gatekeeper of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_h323Gatekeeper E_IETFInterfaces_InterfaceType = 105 + // IETFInterfaces_InterfaceType_h323Proxy corresponds to the value h323Proxy of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_h323Proxy E_IETFInterfaces_InterfaceType = 106 + // IETFInterfaces_InterfaceType_hdh1822 corresponds to the value hdh1822 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_hdh1822 E_IETFInterfaces_InterfaceType = 107 + // IETFInterfaces_InterfaceType_hdlc corresponds to the value hdlc of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_hdlc E_IETFInterfaces_InterfaceType = 108 + // IETFInterfaces_InterfaceType_hdsl2 corresponds to the value hdsl2 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_hdsl2 E_IETFInterfaces_InterfaceType = 109 + // IETFInterfaces_InterfaceType_hiperlan2 corresponds to the value hiperlan2 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_hiperlan2 E_IETFInterfaces_InterfaceType = 110 + // IETFInterfaces_InterfaceType_hippi corresponds to the value hippi of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_hippi E_IETFInterfaces_InterfaceType = 111 + // IETFInterfaces_InterfaceType_hippiInterface corresponds to the value hippiInterface of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_hippiInterface E_IETFInterfaces_InterfaceType = 112 + // IETFInterfaces_InterfaceType_homepna corresponds to the value homepna of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_homepna E_IETFInterfaces_InterfaceType = 113 + // IETFInterfaces_InterfaceType_hostPad corresponds to the value hostPad of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_hostPad E_IETFInterfaces_InterfaceType = 114 + // IETFInterfaces_InterfaceType_hssi corresponds to the value hssi of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_hssi E_IETFInterfaces_InterfaceType = 115 + // IETFInterfaces_InterfaceType_hyperchannel corresponds to the value hyperchannel of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_hyperchannel E_IETFInterfaces_InterfaceType = 116 + // IETFInterfaces_InterfaceType_iana_interface_type corresponds to the value iana_interface_type of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_iana_interface_type E_IETFInterfaces_InterfaceType = 117 + // IETFInterfaces_InterfaceType_ibm370parChan corresponds to the value ibm370parChan of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_ibm370parChan E_IETFInterfaces_InterfaceType = 118 + // IETFInterfaces_InterfaceType_idsl corresponds to the value idsl of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_idsl E_IETFInterfaces_InterfaceType = 119 + // IETFInterfaces_InterfaceType_ieee1394 corresponds to the value ieee1394 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_ieee1394 E_IETFInterfaces_InterfaceType = 120 + // IETFInterfaces_InterfaceType_ieee80211 corresponds to the value ieee80211 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_ieee80211 E_IETFInterfaces_InterfaceType = 121 + // IETFInterfaces_InterfaceType_ieee80212 corresponds to the value ieee80212 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_ieee80212 E_IETFInterfaces_InterfaceType = 122 + // IETFInterfaces_InterfaceType_ieee802154 corresponds to the value ieee802154 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_ieee802154 E_IETFInterfaces_InterfaceType = 123 + // IETFInterfaces_InterfaceType_ieee80216WMAN corresponds to the value ieee80216WMAN of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_ieee80216WMAN E_IETFInterfaces_InterfaceType = 124 + // IETFInterfaces_InterfaceType_ieee8023adLag corresponds to the value ieee8023adLag of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_ieee8023adLag E_IETFInterfaces_InterfaceType = 125 + // IETFInterfaces_InterfaceType_if_gsn corresponds to the value if_gsn of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_if_gsn E_IETFInterfaces_InterfaceType = 126 + // IETFInterfaces_InterfaceType_ifPwType corresponds to the value ifPwType of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_ifPwType E_IETFInterfaces_InterfaceType = 127 + // IETFInterfaces_InterfaceType_ifVfiType corresponds to the value ifVfiType of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_ifVfiType E_IETFInterfaces_InterfaceType = 128 + // IETFInterfaces_InterfaceType_ilan corresponds to the value ilan of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_ilan E_IETFInterfaces_InterfaceType = 129 + // IETFInterfaces_InterfaceType_imt corresponds to the value imt of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_imt E_IETFInterfaces_InterfaceType = 130 + // IETFInterfaces_InterfaceType_infiniband corresponds to the value infiniband of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_infiniband E_IETFInterfaces_InterfaceType = 131 + // IETFInterfaces_InterfaceType_interleave corresponds to the value interleave of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_interleave E_IETFInterfaces_InterfaceType = 132 + // IETFInterfaces_InterfaceType_ip corresponds to the value ip of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_ip E_IETFInterfaces_InterfaceType = 133 + // IETFInterfaces_InterfaceType_ipForward corresponds to the value ipForward of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_ipForward E_IETFInterfaces_InterfaceType = 134 + // IETFInterfaces_InterfaceType_ipOverAtm corresponds to the value ipOverAtm of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_ipOverAtm E_IETFInterfaces_InterfaceType = 135 + // IETFInterfaces_InterfaceType_ipOverCdlc corresponds to the value ipOverCdlc of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_ipOverCdlc E_IETFInterfaces_InterfaceType = 136 + // IETFInterfaces_InterfaceType_ipOverClaw corresponds to the value ipOverClaw of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_ipOverClaw E_IETFInterfaces_InterfaceType = 137 + // IETFInterfaces_InterfaceType_ipSwitch corresponds to the value ipSwitch of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_ipSwitch E_IETFInterfaces_InterfaceType = 138 + // IETFInterfaces_InterfaceType_isdn corresponds to the value isdn of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_isdn E_IETFInterfaces_InterfaceType = 139 + // IETFInterfaces_InterfaceType_isdns corresponds to the value isdns of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_isdns E_IETFInterfaces_InterfaceType = 140 + // IETFInterfaces_InterfaceType_isdnu corresponds to the value isdnu of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_isdnu E_IETFInterfaces_InterfaceType = 141 + // IETFInterfaces_InterfaceType_iso88022llc corresponds to the value iso88022llc of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_iso88022llc E_IETFInterfaces_InterfaceType = 142 + // IETFInterfaces_InterfaceType_iso88023Csmacd corresponds to the value iso88023Csmacd of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_iso88023Csmacd E_IETFInterfaces_InterfaceType = 143 + // IETFInterfaces_InterfaceType_iso88024TokenBus corresponds to the value iso88024TokenBus of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_iso88024TokenBus E_IETFInterfaces_InterfaceType = 144 + // IETFInterfaces_InterfaceType_iso88025CRFPInt corresponds to the value iso88025CRFPInt of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_iso88025CRFPInt E_IETFInterfaces_InterfaceType = 145 + // IETFInterfaces_InterfaceType_iso88025Dtr corresponds to the value iso88025Dtr of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_iso88025Dtr E_IETFInterfaces_InterfaceType = 146 + // IETFInterfaces_InterfaceType_iso88025Fiber corresponds to the value iso88025Fiber of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_iso88025Fiber E_IETFInterfaces_InterfaceType = 147 + // IETFInterfaces_InterfaceType_iso88025TokenRing corresponds to the value iso88025TokenRing of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_iso88025TokenRing E_IETFInterfaces_InterfaceType = 148 + // IETFInterfaces_InterfaceType_iso88026Man corresponds to the value iso88026Man of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_iso88026Man E_IETFInterfaces_InterfaceType = 149 + // IETFInterfaces_InterfaceType_isup corresponds to the value isup of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_isup E_IETFInterfaces_InterfaceType = 150 + // IETFInterfaces_InterfaceType_l2vlan corresponds to the value l2vlan of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_l2vlan E_IETFInterfaces_InterfaceType = 151 + // IETFInterfaces_InterfaceType_l3ipvlan corresponds to the value l3ipvlan of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_l3ipvlan E_IETFInterfaces_InterfaceType = 152 + // IETFInterfaces_InterfaceType_l3ipxvlan corresponds to the value l3ipxvlan of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_l3ipxvlan E_IETFInterfaces_InterfaceType = 153 + // IETFInterfaces_InterfaceType_lapb corresponds to the value lapb of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_lapb E_IETFInterfaces_InterfaceType = 154 + // IETFInterfaces_InterfaceType_lapd corresponds to the value lapd of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_lapd E_IETFInterfaces_InterfaceType = 155 + // IETFInterfaces_InterfaceType_lapf corresponds to the value lapf of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_lapf E_IETFInterfaces_InterfaceType = 156 + // IETFInterfaces_InterfaceType_linegroup corresponds to the value linegroup of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_linegroup E_IETFInterfaces_InterfaceType = 157 + // IETFInterfaces_InterfaceType_lmp corresponds to the value lmp of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_lmp E_IETFInterfaces_InterfaceType = 158 + // IETFInterfaces_InterfaceType_localTalk corresponds to the value localTalk of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_localTalk E_IETFInterfaces_InterfaceType = 159 + // IETFInterfaces_InterfaceType_macSecControlledIF corresponds to the value macSecControlledIF of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_macSecControlledIF E_IETFInterfaces_InterfaceType = 160 + // IETFInterfaces_InterfaceType_macSecUncontrolledIF corresponds to the value macSecUncontrolledIF of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_macSecUncontrolledIF E_IETFInterfaces_InterfaceType = 161 + // IETFInterfaces_InterfaceType_mediaMailOverIp corresponds to the value mediaMailOverIp of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_mediaMailOverIp E_IETFInterfaces_InterfaceType = 162 + // IETFInterfaces_InterfaceType_mfSigLink corresponds to the value mfSigLink of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_mfSigLink E_IETFInterfaces_InterfaceType = 163 + // IETFInterfaces_InterfaceType_miox25 corresponds to the value miox25 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_miox25 E_IETFInterfaces_InterfaceType = 164 + // IETFInterfaces_InterfaceType_mocaVersion1 corresponds to the value mocaVersion1 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_mocaVersion1 E_IETFInterfaces_InterfaceType = 165 + // IETFInterfaces_InterfaceType_modem corresponds to the value modem of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_modem E_IETFInterfaces_InterfaceType = 166 + // IETFInterfaces_InterfaceType_mpc corresponds to the value mpc of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_mpc E_IETFInterfaces_InterfaceType = 167 + // IETFInterfaces_InterfaceType_mpegTransport corresponds to the value mpegTransport of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_mpegTransport E_IETFInterfaces_InterfaceType = 168 + // IETFInterfaces_InterfaceType_mpls corresponds to the value mpls of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_mpls E_IETFInterfaces_InterfaceType = 169 + // IETFInterfaces_InterfaceType_mplsTunnel corresponds to the value mplsTunnel of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_mplsTunnel E_IETFInterfaces_InterfaceType = 170 + // IETFInterfaces_InterfaceType_msdsl corresponds to the value msdsl of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_msdsl E_IETFInterfaces_InterfaceType = 171 + // IETFInterfaces_InterfaceType_mvl corresponds to the value mvl of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_mvl E_IETFInterfaces_InterfaceType = 172 + // IETFInterfaces_InterfaceType_myrinet corresponds to the value myrinet of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_myrinet E_IETFInterfaces_InterfaceType = 173 + // IETFInterfaces_InterfaceType_nfas corresponds to the value nfas of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_nfas E_IETFInterfaces_InterfaceType = 174 + // IETFInterfaces_InterfaceType_nsip corresponds to the value nsip of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_nsip E_IETFInterfaces_InterfaceType = 175 + // IETFInterfaces_InterfaceType_opticalChannel corresponds to the value opticalChannel of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_opticalChannel E_IETFInterfaces_InterfaceType = 176 + // IETFInterfaces_InterfaceType_opticalChannelGroup corresponds to the value opticalChannelGroup of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_opticalChannelGroup E_IETFInterfaces_InterfaceType = 177 + // IETFInterfaces_InterfaceType_opticalTransport corresponds to the value opticalTransport of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_opticalTransport E_IETFInterfaces_InterfaceType = 178 + // IETFInterfaces_InterfaceType_other corresponds to the value other of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_other E_IETFInterfaces_InterfaceType = 179 + // IETFInterfaces_InterfaceType_otnOdu corresponds to the value otnOdu of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_otnOdu E_IETFInterfaces_InterfaceType = 180 + // IETFInterfaces_InterfaceType_otnOtu corresponds to the value otnOtu of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_otnOtu E_IETFInterfaces_InterfaceType = 181 + // IETFInterfaces_InterfaceType_para corresponds to the value para of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_para E_IETFInterfaces_InterfaceType = 182 + // IETFInterfaces_InterfaceType_pdnEtherLoop1 corresponds to the value pdnEtherLoop1 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_pdnEtherLoop1 E_IETFInterfaces_InterfaceType = 183 + // IETFInterfaces_InterfaceType_pdnEtherLoop2 corresponds to the value pdnEtherLoop2 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_pdnEtherLoop2 E_IETFInterfaces_InterfaceType = 184 + // IETFInterfaces_InterfaceType_pip corresponds to the value pip of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_pip E_IETFInterfaces_InterfaceType = 185 + // IETFInterfaces_InterfaceType_plc corresponds to the value plc of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_plc E_IETFInterfaces_InterfaceType = 186 + // IETFInterfaces_InterfaceType_pon155 corresponds to the value pon155 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_pon155 E_IETFInterfaces_InterfaceType = 187 + // IETFInterfaces_InterfaceType_pon622 corresponds to the value pon622 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_pon622 E_IETFInterfaces_InterfaceType = 188 + // IETFInterfaces_InterfaceType_pos corresponds to the value pos of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_pos E_IETFInterfaces_InterfaceType = 189 + // IETFInterfaces_InterfaceType_ppp corresponds to the value ppp of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_ppp E_IETFInterfaces_InterfaceType = 190 + // IETFInterfaces_InterfaceType_pppMultilinkBundle corresponds to the value pppMultilinkBundle of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_pppMultilinkBundle E_IETFInterfaces_InterfaceType = 191 + // IETFInterfaces_InterfaceType_primaryISDN corresponds to the value primaryISDN of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_primaryISDN E_IETFInterfaces_InterfaceType = 192 + // IETFInterfaces_InterfaceType_propAtm corresponds to the value propAtm of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_propAtm E_IETFInterfaces_InterfaceType = 193 + // IETFInterfaces_InterfaceType_propBWAp2Mp corresponds to the value propBWAp2Mp of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_propBWAp2Mp E_IETFInterfaces_InterfaceType = 194 + // IETFInterfaces_InterfaceType_propCnls corresponds to the value propCnls of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_propCnls E_IETFInterfaces_InterfaceType = 195 + // IETFInterfaces_InterfaceType_propDocsWirelessDownstream corresponds to the value propDocsWirelessDownstream of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_propDocsWirelessDownstream E_IETFInterfaces_InterfaceType = 196 + // IETFInterfaces_InterfaceType_propDocsWirelessMaclayer corresponds to the value propDocsWirelessMaclayer of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_propDocsWirelessMaclayer E_IETFInterfaces_InterfaceType = 197 + // IETFInterfaces_InterfaceType_propDocsWirelessUpstream corresponds to the value propDocsWirelessUpstream of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_propDocsWirelessUpstream E_IETFInterfaces_InterfaceType = 198 + // IETFInterfaces_InterfaceType_propMultiplexor corresponds to the value propMultiplexor of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_propMultiplexor E_IETFInterfaces_InterfaceType = 199 + // IETFInterfaces_InterfaceType_propPointToPointSerial corresponds to the value propPointToPointSerial of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_propPointToPointSerial E_IETFInterfaces_InterfaceType = 200 + // IETFInterfaces_InterfaceType_propVirtual corresponds to the value propVirtual of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_propVirtual E_IETFInterfaces_InterfaceType = 201 + // IETFInterfaces_InterfaceType_propWirelessP2P corresponds to the value propWirelessP2P of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_propWirelessP2P E_IETFInterfaces_InterfaceType = 202 + // IETFInterfaces_InterfaceType_proteon10Mbit corresponds to the value proteon10Mbit of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_proteon10Mbit E_IETFInterfaces_InterfaceType = 203 + // IETFInterfaces_InterfaceType_proteon80Mbit corresponds to the value proteon80Mbit of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_proteon80Mbit E_IETFInterfaces_InterfaceType = 204 + // IETFInterfaces_InterfaceType_q2931 corresponds to the value q2931 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_q2931 E_IETFInterfaces_InterfaceType = 205 + // IETFInterfaces_InterfaceType_qam corresponds to the value qam of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_qam E_IETFInterfaces_InterfaceType = 206 + // IETFInterfaces_InterfaceType_qllc corresponds to the value qllc of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_qllc E_IETFInterfaces_InterfaceType = 207 + // IETFInterfaces_InterfaceType_radioMAC corresponds to the value radioMAC of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_radioMAC E_IETFInterfaces_InterfaceType = 208 + // IETFInterfaces_InterfaceType_radsl corresponds to the value radsl of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_radsl E_IETFInterfaces_InterfaceType = 209 + // IETFInterfaces_InterfaceType_reachDSL corresponds to the value reachDSL of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_reachDSL E_IETFInterfaces_InterfaceType = 210 + // IETFInterfaces_InterfaceType_regular1822 corresponds to the value regular1822 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_regular1822 E_IETFInterfaces_InterfaceType = 211 + // IETFInterfaces_InterfaceType_rfc1483 corresponds to the value rfc1483 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_rfc1483 E_IETFInterfaces_InterfaceType = 212 + // IETFInterfaces_InterfaceType_rfc877x25 corresponds to the value rfc877x25 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_rfc877x25 E_IETFInterfaces_InterfaceType = 213 + // IETFInterfaces_InterfaceType_rpr corresponds to the value rpr of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_rpr E_IETFInterfaces_InterfaceType = 214 + // IETFInterfaces_InterfaceType_rs232 corresponds to the value rs232 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_rs232 E_IETFInterfaces_InterfaceType = 215 + // IETFInterfaces_InterfaceType_rsrb corresponds to the value rsrb of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_rsrb E_IETFInterfaces_InterfaceType = 216 + // IETFInterfaces_InterfaceType_sdlc corresponds to the value sdlc of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_sdlc E_IETFInterfaces_InterfaceType = 217 + // IETFInterfaces_InterfaceType_sdsl corresponds to the value sdsl of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_sdsl E_IETFInterfaces_InterfaceType = 218 + // IETFInterfaces_InterfaceType_shdsl corresponds to the value shdsl of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_shdsl E_IETFInterfaces_InterfaceType = 219 + // IETFInterfaces_InterfaceType_sip corresponds to the value sip of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_sip E_IETFInterfaces_InterfaceType = 220 + // IETFInterfaces_InterfaceType_sipSig corresponds to the value sipSig of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_sipSig E_IETFInterfaces_InterfaceType = 221 + // IETFInterfaces_InterfaceType_sipTg corresponds to the value sipTg of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_sipTg E_IETFInterfaces_InterfaceType = 222 + // IETFInterfaces_InterfaceType_sixToFour corresponds to the value sixToFour of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_sixToFour E_IETFInterfaces_InterfaceType = 223 + // IETFInterfaces_InterfaceType_slip corresponds to the value slip of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_slip E_IETFInterfaces_InterfaceType = 224 + // IETFInterfaces_InterfaceType_smdsDxi corresponds to the value smdsDxi of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_smdsDxi E_IETFInterfaces_InterfaceType = 225 + // IETFInterfaces_InterfaceType_smdsIcip corresponds to the value smdsIcip of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_smdsIcip E_IETFInterfaces_InterfaceType = 226 + // IETFInterfaces_InterfaceType_softwareLoopback corresponds to the value softwareLoopback of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_softwareLoopback E_IETFInterfaces_InterfaceType = 227 + // IETFInterfaces_InterfaceType_sonet corresponds to the value sonet of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_sonet E_IETFInterfaces_InterfaceType = 228 + // IETFInterfaces_InterfaceType_sonetOverheadChannel corresponds to the value sonetOverheadChannel of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_sonetOverheadChannel E_IETFInterfaces_InterfaceType = 229 + // IETFInterfaces_InterfaceType_sonetPath corresponds to the value sonetPath of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_sonetPath E_IETFInterfaces_InterfaceType = 230 + // IETFInterfaces_InterfaceType_sonetVT corresponds to the value sonetVT of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_sonetVT E_IETFInterfaces_InterfaceType = 231 + // IETFInterfaces_InterfaceType_srp corresponds to the value srp of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_srp E_IETFInterfaces_InterfaceType = 232 + // IETFInterfaces_InterfaceType_ss7SigLink corresponds to the value ss7SigLink of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_ss7SigLink E_IETFInterfaces_InterfaceType = 233 + // IETFInterfaces_InterfaceType_stackToStack corresponds to the value stackToStack of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_stackToStack E_IETFInterfaces_InterfaceType = 234 + // IETFInterfaces_InterfaceType_starLan corresponds to the value starLan of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_starLan E_IETFInterfaces_InterfaceType = 235 + // IETFInterfaces_InterfaceType_tdlc corresponds to the value tdlc of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_tdlc E_IETFInterfaces_InterfaceType = 236 + // IETFInterfaces_InterfaceType_teLink corresponds to the value teLink of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_teLink E_IETFInterfaces_InterfaceType = 237 + // IETFInterfaces_InterfaceType_termPad corresponds to the value termPad of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_termPad E_IETFInterfaces_InterfaceType = 238 + // IETFInterfaces_InterfaceType_tr008 corresponds to the value tr008 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_tr008 E_IETFInterfaces_InterfaceType = 239 + // IETFInterfaces_InterfaceType_transpHdlc corresponds to the value transpHdlc of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_transpHdlc E_IETFInterfaces_InterfaceType = 240 + // IETFInterfaces_InterfaceType_tunnel corresponds to the value tunnel of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_tunnel E_IETFInterfaces_InterfaceType = 241 + // IETFInterfaces_InterfaceType_ultra corresponds to the value ultra of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_ultra E_IETFInterfaces_InterfaceType = 242 + // IETFInterfaces_InterfaceType_usb corresponds to the value usb of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_usb E_IETFInterfaces_InterfaceType = 243 + // IETFInterfaces_InterfaceType_v11 corresponds to the value v11 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_v11 E_IETFInterfaces_InterfaceType = 244 + // IETFInterfaces_InterfaceType_v35 corresponds to the value v35 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_v35 E_IETFInterfaces_InterfaceType = 245 + // IETFInterfaces_InterfaceType_v36 corresponds to the value v36 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_v36 E_IETFInterfaces_InterfaceType = 246 + // IETFInterfaces_InterfaceType_v37 corresponds to the value v37 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_v37 E_IETFInterfaces_InterfaceType = 247 + // IETFInterfaces_InterfaceType_vdsl corresponds to the value vdsl of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_vdsl E_IETFInterfaces_InterfaceType = 248 + // IETFInterfaces_InterfaceType_vdsl2 corresponds to the value vdsl2 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_vdsl2 E_IETFInterfaces_InterfaceType = 249 + // IETFInterfaces_InterfaceType_virtualIpAddress corresponds to the value virtualIpAddress of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_virtualIpAddress E_IETFInterfaces_InterfaceType = 250 + // IETFInterfaces_InterfaceType_virtualTg corresponds to the value virtualTg of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_virtualTg E_IETFInterfaces_InterfaceType = 251 + // IETFInterfaces_InterfaceType_vmwareNicTeam corresponds to the value vmwareNicTeam of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_vmwareNicTeam E_IETFInterfaces_InterfaceType = 252 + // IETFInterfaces_InterfaceType_vmwareVirtualNic corresponds to the value vmwareVirtualNic of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_vmwareVirtualNic E_IETFInterfaces_InterfaceType = 253 + // IETFInterfaces_InterfaceType_voiceDID corresponds to the value voiceDID of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_voiceDID E_IETFInterfaces_InterfaceType = 254 + // IETFInterfaces_InterfaceType_voiceEBS corresponds to the value voiceEBS of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_voiceEBS E_IETFInterfaces_InterfaceType = 255 + // IETFInterfaces_InterfaceType_voiceEM corresponds to the value voiceEM of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_voiceEM E_IETFInterfaces_InterfaceType = 256 + // IETFInterfaces_InterfaceType_voiceEMFGD corresponds to the value voiceEMFGD of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_voiceEMFGD E_IETFInterfaces_InterfaceType = 257 + // IETFInterfaces_InterfaceType_voiceEncap corresponds to the value voiceEncap of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_voiceEncap E_IETFInterfaces_InterfaceType = 258 + // IETFInterfaces_InterfaceType_voiceFGDEANA corresponds to the value voiceFGDEANA of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_voiceFGDEANA E_IETFInterfaces_InterfaceType = 259 + // IETFInterfaces_InterfaceType_voiceFGDOS corresponds to the value voiceFGDOS of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_voiceFGDOS E_IETFInterfaces_InterfaceType = 260 + // IETFInterfaces_InterfaceType_voiceFXO corresponds to the value voiceFXO of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_voiceFXO E_IETFInterfaces_InterfaceType = 261 + // IETFInterfaces_InterfaceType_voiceFXS corresponds to the value voiceFXS of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_voiceFXS E_IETFInterfaces_InterfaceType = 262 + // IETFInterfaces_InterfaceType_voiceOverAtm corresponds to the value voiceOverAtm of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_voiceOverAtm E_IETFInterfaces_InterfaceType = 263 + // IETFInterfaces_InterfaceType_voiceOverCable corresponds to the value voiceOverCable of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_voiceOverCable E_IETFInterfaces_InterfaceType = 264 + // IETFInterfaces_InterfaceType_voiceOverFrameRelay corresponds to the value voiceOverFrameRelay of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_voiceOverFrameRelay E_IETFInterfaces_InterfaceType = 265 + // IETFInterfaces_InterfaceType_voiceOverIp corresponds to the value voiceOverIp of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_voiceOverIp E_IETFInterfaces_InterfaceType = 266 + // IETFInterfaces_InterfaceType_wwanPP corresponds to the value wwanPP of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_wwanPP E_IETFInterfaces_InterfaceType = 267 + // IETFInterfaces_InterfaceType_wwanPP2 corresponds to the value wwanPP2 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_wwanPP2 E_IETFInterfaces_InterfaceType = 268 + // IETFInterfaces_InterfaceType_x213 corresponds to the value x213 of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_x213 E_IETFInterfaces_InterfaceType = 269 + // IETFInterfaces_InterfaceType_x25huntGroup corresponds to the value x25huntGroup of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_x25huntGroup E_IETFInterfaces_InterfaceType = 270 + // IETFInterfaces_InterfaceType_x25mlp corresponds to the value x25mlp of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_x25mlp E_IETFInterfaces_InterfaceType = 271 + // IETFInterfaces_InterfaceType_x25ple corresponds to the value x25ple of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_x25ple E_IETFInterfaces_InterfaceType = 272 + // IETFInterfaces_InterfaceType_x86Laps corresponds to the value x86Laps of IETFInterfaces_InterfaceType + IETFInterfaces_InterfaceType_x86Laps E_IETFInterfaces_InterfaceType = 273 +) + + +// E_Interface_AdminStatus is a derived int64 type which is used to represent +// the enumerated node Interface_AdminStatus. An additional value named +// Interface_AdminStatus_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_Interface_AdminStatus int64 + +// IsYANGGoEnum ensures that Interface_AdminStatus implements the yang.GoEnum +// interface. This ensures that Interface_AdminStatus can be identified as a +// mapped type for a YANG enumeration. +func (E_Interface_AdminStatus) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with Interface_AdminStatus. +func (E_Interface_AdminStatus) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +// String returns a logging-friendly string for E_Interface_AdminStatus. +func (e E_Interface_AdminStatus) String() string { + return ygot.EnumLogString(e, int64(e), "E_Interface_AdminStatus") +} + +const ( + // Interface_AdminStatus_UNSET corresponds to the value UNSET of Interface_AdminStatus + Interface_AdminStatus_UNSET E_Interface_AdminStatus = 0 + // Interface_AdminStatus_UP corresponds to the value UP of Interface_AdminStatus + Interface_AdminStatus_UP E_Interface_AdminStatus = 1 + // Interface_AdminStatus_DOWN corresponds to the value DOWN of Interface_AdminStatus + Interface_AdminStatus_DOWN E_Interface_AdminStatus = 2 + // Interface_AdminStatus_TESTING corresponds to the value TESTING of Interface_AdminStatus + Interface_AdminStatus_TESTING E_Interface_AdminStatus = 3 +) + + +// E_Interface_OperStatus is a derived int64 type which is used to represent +// the enumerated node Interface_OperStatus. An additional value named +// Interface_OperStatus_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_Interface_OperStatus int64 + +// IsYANGGoEnum ensures that Interface_OperStatus implements the yang.GoEnum +// interface. This ensures that Interface_OperStatus can be identified as a +// mapped type for a YANG enumeration. +func (E_Interface_OperStatus) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with Interface_OperStatus. +func (E_Interface_OperStatus) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +// String returns a logging-friendly string for E_Interface_OperStatus. +func (e E_Interface_OperStatus) String() string { + return ygot.EnumLogString(e, int64(e), "E_Interface_OperStatus") +} + +const ( + // Interface_OperStatus_UNSET corresponds to the value UNSET of Interface_OperStatus + Interface_OperStatus_UNSET E_Interface_OperStatus = 0 + // Interface_OperStatus_UP corresponds to the value UP of Interface_OperStatus + Interface_OperStatus_UP E_Interface_OperStatus = 2 + // Interface_OperStatus_DOWN corresponds to the value DOWN of Interface_OperStatus + Interface_OperStatus_DOWN E_Interface_OperStatus = 3 + // Interface_OperStatus_TESTING corresponds to the value TESTING of Interface_OperStatus + Interface_OperStatus_TESTING E_Interface_OperStatus = 4 + // Interface_OperStatus_UNKNOWN corresponds to the value UNKNOWN of Interface_OperStatus + Interface_OperStatus_UNKNOWN E_Interface_OperStatus = 5 + // Interface_OperStatus_DORMANT corresponds to the value DORMANT of Interface_OperStatus + Interface_OperStatus_DORMANT E_Interface_OperStatus = 6 + // Interface_OperStatus_NOT_PRESENT corresponds to the value NOT_PRESENT of Interface_OperStatus + Interface_OperStatus_NOT_PRESENT E_Interface_OperStatus = 7 + // Interface_OperStatus_LOWER_LAYER_DOWN corresponds to the value LOWER_LAYER_DOWN of Interface_OperStatus + Interface_OperStatus_LOWER_LAYER_DOWN E_Interface_OperStatus = 8 +) + + +// E_Neighbor_NeighborState is a derived int64 type which is used to represent +// the enumerated node Neighbor_NeighborState. An additional value named +// Neighbor_NeighborState_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_Neighbor_NeighborState int64 + +// IsYANGGoEnum ensures that Neighbor_NeighborState implements the yang.GoEnum +// interface. This ensures that Neighbor_NeighborState can be identified as a +// mapped type for a YANG enumeration. +func (E_Neighbor_NeighborState) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with Neighbor_NeighborState. +func (E_Neighbor_NeighborState) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +// String returns a logging-friendly string for E_Neighbor_NeighborState. +func (e E_Neighbor_NeighborState) String() string { + return ygot.EnumLogString(e, int64(e), "E_Neighbor_NeighborState") +} + +const ( + // Neighbor_NeighborState_UNSET corresponds to the value UNSET of Neighbor_NeighborState + Neighbor_NeighborState_UNSET E_Neighbor_NeighborState = 0 + // Neighbor_NeighborState_INCOMPLETE corresponds to the value INCOMPLETE of Neighbor_NeighborState + Neighbor_NeighborState_INCOMPLETE E_Neighbor_NeighborState = 1 + // Neighbor_NeighborState_REACHABLE corresponds to the value REACHABLE of Neighbor_NeighborState + Neighbor_NeighborState_REACHABLE E_Neighbor_NeighborState = 2 + // Neighbor_NeighborState_STALE corresponds to the value STALE of Neighbor_NeighborState + Neighbor_NeighborState_STALE E_Neighbor_NeighborState = 3 + // Neighbor_NeighborState_DELAY corresponds to the value DELAY of Neighbor_NeighborState + Neighbor_NeighborState_DELAY E_Neighbor_NeighborState = 4 + // Neighbor_NeighborState_PROBE corresponds to the value PROBE of Neighbor_NeighborState + Neighbor_NeighborState_PROBE E_Neighbor_NeighborState = 5 +) + + +// E_OpenconfigIfAggregate_AggregationType is a derived int64 type which is used to represent +// the enumerated node OpenconfigIfAggregate_AggregationType. An additional value named +// OpenconfigIfAggregate_AggregationType_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigIfAggregate_AggregationType int64 + +// IsYANGGoEnum ensures that OpenconfigIfAggregate_AggregationType implements the yang.GoEnum +// interface. This ensures that OpenconfigIfAggregate_AggregationType can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigIfAggregate_AggregationType) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigIfAggregate_AggregationType. +func (E_OpenconfigIfAggregate_AggregationType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +// String returns a logging-friendly string for E_OpenconfigIfAggregate_AggregationType. +func (e E_OpenconfigIfAggregate_AggregationType) String() string { + return ygot.EnumLogString(e, int64(e), "E_OpenconfigIfAggregate_AggregationType") +} + +const ( + // OpenconfigIfAggregate_AggregationType_UNSET corresponds to the value UNSET of OpenconfigIfAggregate_AggregationType + OpenconfigIfAggregate_AggregationType_UNSET E_OpenconfigIfAggregate_AggregationType = 0 + // OpenconfigIfAggregate_AggregationType_LACP corresponds to the value LACP of OpenconfigIfAggregate_AggregationType + OpenconfigIfAggregate_AggregationType_LACP E_OpenconfigIfAggregate_AggregationType = 1 + // OpenconfigIfAggregate_AggregationType_STATIC corresponds to the value STATIC of OpenconfigIfAggregate_AggregationType + OpenconfigIfAggregate_AggregationType_STATIC E_OpenconfigIfAggregate_AggregationType = 2 +) + + +// E_OpenconfigIfEthernet_ETHERNET_SPEED is a derived int64 type which is used to represent +// the enumerated node OpenconfigIfEthernet_ETHERNET_SPEED. An additional value named +// OpenconfigIfEthernet_ETHERNET_SPEED_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigIfEthernet_ETHERNET_SPEED int64 + +// IsYANGGoEnum ensures that OpenconfigIfEthernet_ETHERNET_SPEED implements the yang.GoEnum +// interface. This ensures that OpenconfigIfEthernet_ETHERNET_SPEED can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigIfEthernet_ETHERNET_SPEED) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigIfEthernet_ETHERNET_SPEED. +func (E_OpenconfigIfEthernet_ETHERNET_SPEED) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +// String returns a logging-friendly string for E_OpenconfigIfEthernet_ETHERNET_SPEED. +func (e E_OpenconfigIfEthernet_ETHERNET_SPEED) String() string { + return ygot.EnumLogString(e, int64(e), "E_OpenconfigIfEthernet_ETHERNET_SPEED") +} + +const ( + // OpenconfigIfEthernet_ETHERNET_SPEED_UNSET corresponds to the value UNSET of OpenconfigIfEthernet_ETHERNET_SPEED + OpenconfigIfEthernet_ETHERNET_SPEED_UNSET E_OpenconfigIfEthernet_ETHERNET_SPEED = 0 + // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_100GB corresponds to the value SPEED_100GB of OpenconfigIfEthernet_ETHERNET_SPEED + OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_100GB E_OpenconfigIfEthernet_ETHERNET_SPEED = 1 + // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_100MB corresponds to the value SPEED_100MB of OpenconfigIfEthernet_ETHERNET_SPEED + OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_100MB E_OpenconfigIfEthernet_ETHERNET_SPEED = 2 + // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_10GB corresponds to the value SPEED_10GB of OpenconfigIfEthernet_ETHERNET_SPEED + OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_10GB E_OpenconfigIfEthernet_ETHERNET_SPEED = 3 + // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_10MB corresponds to the value SPEED_10MB of OpenconfigIfEthernet_ETHERNET_SPEED + OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_10MB E_OpenconfigIfEthernet_ETHERNET_SPEED = 4 + // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_1GB corresponds to the value SPEED_1GB of OpenconfigIfEthernet_ETHERNET_SPEED + OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_1GB E_OpenconfigIfEthernet_ETHERNET_SPEED = 5 + // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_25GB corresponds to the value SPEED_25GB of OpenconfigIfEthernet_ETHERNET_SPEED + OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_25GB E_OpenconfigIfEthernet_ETHERNET_SPEED = 6 + // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_40GB corresponds to the value SPEED_40GB of OpenconfigIfEthernet_ETHERNET_SPEED + OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_40GB E_OpenconfigIfEthernet_ETHERNET_SPEED = 7 + // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_50GB corresponds to the value SPEED_50GB of OpenconfigIfEthernet_ETHERNET_SPEED + OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_50GB E_OpenconfigIfEthernet_ETHERNET_SPEED = 8 + // OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_UNKNOWN corresponds to the value SPEED_UNKNOWN of OpenconfigIfEthernet_ETHERNET_SPEED + OpenconfigIfEthernet_ETHERNET_SPEED_SPEED_UNKNOWN E_OpenconfigIfEthernet_ETHERNET_SPEED = 9 +) + + +// E_OpenconfigIfIp_IpAddressOrigin is a derived int64 type which is used to represent +// the enumerated node OpenconfigIfIp_IpAddressOrigin. An additional value named +// OpenconfigIfIp_IpAddressOrigin_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigIfIp_IpAddressOrigin int64 + +// IsYANGGoEnum ensures that OpenconfigIfIp_IpAddressOrigin implements the yang.GoEnum +// interface. This ensures that OpenconfigIfIp_IpAddressOrigin can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigIfIp_IpAddressOrigin) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigIfIp_IpAddressOrigin. +func (E_OpenconfigIfIp_IpAddressOrigin) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +// String returns a logging-friendly string for E_OpenconfigIfIp_IpAddressOrigin. +func (e E_OpenconfigIfIp_IpAddressOrigin) String() string { + return ygot.EnumLogString(e, int64(e), "E_OpenconfigIfIp_IpAddressOrigin") +} + +const ( + // OpenconfigIfIp_IpAddressOrigin_UNSET corresponds to the value UNSET of OpenconfigIfIp_IpAddressOrigin + OpenconfigIfIp_IpAddressOrigin_UNSET E_OpenconfigIfIp_IpAddressOrigin = 0 + // OpenconfigIfIp_IpAddressOrigin_OTHER corresponds to the value OTHER of OpenconfigIfIp_IpAddressOrigin + OpenconfigIfIp_IpAddressOrigin_OTHER E_OpenconfigIfIp_IpAddressOrigin = 1 + // OpenconfigIfIp_IpAddressOrigin_STATIC corresponds to the value STATIC of OpenconfigIfIp_IpAddressOrigin + OpenconfigIfIp_IpAddressOrigin_STATIC E_OpenconfigIfIp_IpAddressOrigin = 2 + // OpenconfigIfIp_IpAddressOrigin_DHCP corresponds to the value DHCP of OpenconfigIfIp_IpAddressOrigin + OpenconfigIfIp_IpAddressOrigin_DHCP E_OpenconfigIfIp_IpAddressOrigin = 3 + // OpenconfigIfIp_IpAddressOrigin_LINK_LAYER corresponds to the value LINK_LAYER of OpenconfigIfIp_IpAddressOrigin + OpenconfigIfIp_IpAddressOrigin_LINK_LAYER E_OpenconfigIfIp_IpAddressOrigin = 4 + // OpenconfigIfIp_IpAddressOrigin_RANDOM corresponds to the value RANDOM of OpenconfigIfIp_IpAddressOrigin + OpenconfigIfIp_IpAddressOrigin_RANDOM E_OpenconfigIfIp_IpAddressOrigin = 5 +) + + +// E_OpenconfigIfIp_NeighborOrigin is a derived int64 type which is used to represent +// the enumerated node OpenconfigIfIp_NeighborOrigin. An additional value named +// OpenconfigIfIp_NeighborOrigin_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigIfIp_NeighborOrigin int64 + +// IsYANGGoEnum ensures that OpenconfigIfIp_NeighborOrigin implements the yang.GoEnum +// interface. This ensures that OpenconfigIfIp_NeighborOrigin can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigIfIp_NeighborOrigin) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigIfIp_NeighborOrigin. +func (E_OpenconfigIfIp_NeighborOrigin) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +// String returns a logging-friendly string for E_OpenconfigIfIp_NeighborOrigin. +func (e E_OpenconfigIfIp_NeighborOrigin) String() string { + return ygot.EnumLogString(e, int64(e), "E_OpenconfigIfIp_NeighborOrigin") +} + +const ( + // OpenconfigIfIp_NeighborOrigin_UNSET corresponds to the value UNSET of OpenconfigIfIp_NeighborOrigin + OpenconfigIfIp_NeighborOrigin_UNSET E_OpenconfigIfIp_NeighborOrigin = 0 + // OpenconfigIfIp_NeighborOrigin_OTHER corresponds to the value OTHER of OpenconfigIfIp_NeighborOrigin + OpenconfigIfIp_NeighborOrigin_OTHER E_OpenconfigIfIp_NeighborOrigin = 1 + // OpenconfigIfIp_NeighborOrigin_STATIC corresponds to the value STATIC of OpenconfigIfIp_NeighborOrigin + OpenconfigIfIp_NeighborOrigin_STATIC E_OpenconfigIfIp_NeighborOrigin = 2 + // OpenconfigIfIp_NeighborOrigin_DYNAMIC corresponds to the value DYNAMIC of OpenconfigIfIp_NeighborOrigin + OpenconfigIfIp_NeighborOrigin_DYNAMIC E_OpenconfigIfIp_NeighborOrigin = 3 +) + + +// E_OpenconfigVlanTypes_TPID_TYPES is a derived int64 type which is used to represent +// the enumerated node OpenconfigVlanTypes_TPID_TYPES. An additional value named +// OpenconfigVlanTypes_TPID_TYPES_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigVlanTypes_TPID_TYPES int64 + +// IsYANGGoEnum ensures that OpenconfigVlanTypes_TPID_TYPES implements the yang.GoEnum +// interface. This ensures that OpenconfigVlanTypes_TPID_TYPES can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigVlanTypes_TPID_TYPES) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigVlanTypes_TPID_TYPES. +func (E_OpenconfigVlanTypes_TPID_TYPES) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +// String returns a logging-friendly string for E_OpenconfigVlanTypes_TPID_TYPES. +func (e E_OpenconfigVlanTypes_TPID_TYPES) String() string { + return ygot.EnumLogString(e, int64(e), "E_OpenconfigVlanTypes_TPID_TYPES") +} + +const ( + // OpenconfigVlanTypes_TPID_TYPES_UNSET corresponds to the value UNSET of OpenconfigVlanTypes_TPID_TYPES + OpenconfigVlanTypes_TPID_TYPES_UNSET E_OpenconfigVlanTypes_TPID_TYPES = 0 + // OpenconfigVlanTypes_TPID_TYPES_TPID_0X9200 corresponds to the value TPID_0X9200 of OpenconfigVlanTypes_TPID_TYPES + OpenconfigVlanTypes_TPID_TYPES_TPID_0X9200 E_OpenconfigVlanTypes_TPID_TYPES = 1 + // OpenconfigVlanTypes_TPID_TYPES_TPID_0x8100 corresponds to the value TPID_0x8100 of OpenconfigVlanTypes_TPID_TYPES + OpenconfigVlanTypes_TPID_TYPES_TPID_0x8100 E_OpenconfigVlanTypes_TPID_TYPES = 2 + // OpenconfigVlanTypes_TPID_TYPES_TPID_0x8A88 corresponds to the value TPID_0x8A88 of OpenconfigVlanTypes_TPID_TYPES + OpenconfigVlanTypes_TPID_TYPES_TPID_0x8A88 E_OpenconfigVlanTypes_TPID_TYPES = 3 + // OpenconfigVlanTypes_TPID_TYPES_TPID_0x9100 corresponds to the value TPID_0x9100 of OpenconfigVlanTypes_TPID_TYPES + OpenconfigVlanTypes_TPID_TYPES_TPID_0x9100 E_OpenconfigVlanTypes_TPID_TYPES = 4 +) + + +// E_OpenconfigVlan_VlanModeType is a derived int64 type which is used to represent +// the enumerated node OpenconfigVlan_VlanModeType. An additional value named +// OpenconfigVlan_VlanModeType_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_OpenconfigVlan_VlanModeType int64 + +// IsYANGGoEnum ensures that OpenconfigVlan_VlanModeType implements the yang.GoEnum +// interface. This ensures that OpenconfigVlan_VlanModeType can be identified as a +// mapped type for a YANG enumeration. +func (E_OpenconfigVlan_VlanModeType) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with OpenconfigVlan_VlanModeType. +func (E_OpenconfigVlan_VlanModeType) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +// String returns a logging-friendly string for E_OpenconfigVlan_VlanModeType. +func (e E_OpenconfigVlan_VlanModeType) String() string { + return ygot.EnumLogString(e, int64(e), "E_OpenconfigVlan_VlanModeType") +} + +const ( + // OpenconfigVlan_VlanModeType_UNSET corresponds to the value UNSET of OpenconfigVlan_VlanModeType + OpenconfigVlan_VlanModeType_UNSET E_OpenconfigVlan_VlanModeType = 0 + // OpenconfigVlan_VlanModeType_ACCESS corresponds to the value ACCESS of OpenconfigVlan_VlanModeType + OpenconfigVlan_VlanModeType_ACCESS E_OpenconfigVlan_VlanModeType = 1 + // OpenconfigVlan_VlanModeType_TRUNK corresponds to the value TRUNK of OpenconfigVlan_VlanModeType + OpenconfigVlan_VlanModeType_TRUNK E_OpenconfigVlan_VlanModeType = 2 +) + + +// E_Vlan_Status is a derived int64 type which is used to represent +// the enumerated node Vlan_Status. An additional value named +// Vlan_Status_UNSET is added to the enumeration which is used as +// the nil value, indicating that the enumeration was not explicitly set by +// the program importing the generated structures. +type E_Vlan_Status int64 + +// IsYANGGoEnum ensures that Vlan_Status implements the yang.GoEnum +// interface. This ensures that Vlan_Status can be identified as a +// mapped type for a YANG enumeration. +func (E_Vlan_Status) IsYANGGoEnum() {} + +// ΛMap returns the value lookup map associated with Vlan_Status. +func (E_Vlan_Status) ΛMap() map[string]map[int64]ygot.EnumDefinition { return ΛEnum; } + +// String returns a logging-friendly string for E_Vlan_Status. +func (e E_Vlan_Status) String() string { + return ygot.EnumLogString(e, int64(e), "E_Vlan_Status") +} + +const ( + // Vlan_Status_UNSET corresponds to the value UNSET of Vlan_Status + Vlan_Status_UNSET E_Vlan_Status = 0 + // Vlan_Status_ACTIVE corresponds to the value ACTIVE of Vlan_Status + Vlan_Status_ACTIVE E_Vlan_Status = 1 + // Vlan_Status_SUSPENDED corresponds to the value SUSPENDED of Vlan_Status + Vlan_Status_SUSPENDED E_Vlan_Status = 2 +) + + +// ΛEnum is a map, keyed by the name of the type defined for each enum in the +// generated Go code, which provides a mapping between the constant int64 value +// of each value of the enumeration, and the string that is used to represent it +// in the YANG schema. The map is named ΛEnum in order to avoid clash with any +// valid YANG identifier. +var ΛEnum = map[string]map[int64]ygot.EnumDefinition{ + "E_Address_Status": { + 1: {Name: "PREFERRED"}, + 2: {Name: "DEPRECATED"}, + 3: {Name: "INVALID"}, + 4: {Name: "INACCESSIBLE"}, + 5: {Name: "UNKNOWN"}, + 6: {Name: "TENTATIVE"}, + 7: {Name: "DUPLICATE"}, + 8: {Name: "OPTIMISTIC"}, + }, + "E_Ethernet_DuplexMode": { + 1: {Name: "FULL"}, + 2: {Name: "HALF"}, + }, + "E_Ethernet_NegotiatedDuplexMode": { + 1: {Name: "FULL"}, + 2: {Name: "HALF"}, + }, + "E_IETFInterfaces_InterfaceType": { + 1: {Name: "a12MppSwitch", DefiningModule: "iana-if-type"}, + 2: {Name: "aal2", DefiningModule: "iana-if-type"}, + 3: {Name: "aal5", DefiningModule: "iana-if-type"}, + 4: {Name: "actelisMetaLOOP", DefiningModule: "iana-if-type"}, + 5: {Name: "adsl", DefiningModule: "iana-if-type"}, + 6: {Name: "adsl2", DefiningModule: "iana-if-type"}, + 7: {Name: "adsl2plus", DefiningModule: "iana-if-type"}, + 8: {Name: "aflane8023", DefiningModule: "iana-if-type"}, + 9: {Name: "aflane8025", DefiningModule: "iana-if-type"}, + 10: {Name: "aluELP", DefiningModule: "iana-if-type"}, + 11: {Name: "aluEpon", DefiningModule: "iana-if-type"}, + 12: {Name: "aluEponLogicalLink", DefiningModule: "iana-if-type"}, + 13: {Name: "aluEponOnu", DefiningModule: "iana-if-type"}, + 14: {Name: "aluEponPhysicalUni", DefiningModule: "iana-if-type"}, + 15: {Name: "aluGponOnu", DefiningModule: "iana-if-type"}, + 16: {Name: "aluGponPhysicalUni", DefiningModule: "iana-if-type"}, + 17: {Name: "arap", DefiningModule: "iana-if-type"}, + 18: {Name: "arcnet", DefiningModule: "iana-if-type"}, + 19: {Name: "arcnetPlus", DefiningModule: "iana-if-type"}, + 20: {Name: "async", DefiningModule: "iana-if-type"}, + 21: {Name: "atm", DefiningModule: "iana-if-type"}, + 22: {Name: "atmDxi", DefiningModule: "iana-if-type"}, + 23: {Name: "atmFuni", DefiningModule: "iana-if-type"}, + 24: {Name: "atmIma", DefiningModule: "iana-if-type"}, + 25: {Name: "atmLogical", DefiningModule: "iana-if-type"}, + 26: {Name: "atmRadio", DefiningModule: "iana-if-type"}, + 27: {Name: "atmSubInterface", DefiningModule: "iana-if-type"}, + 28: {Name: "atmVciEndPt", DefiningModule: "iana-if-type"}, + 29: {Name: "atmVirtual", DefiningModule: "iana-if-type"}, + 30: {Name: "atmbond", DefiningModule: "iana-if-type"}, + 31: {Name: "aviciOpticalEther", DefiningModule: "iana-if-type"}, + 32: {Name: "basicISDN", DefiningModule: "iana-if-type"}, + 33: {Name: "bgppolicyaccounting", DefiningModule: "iana-if-type"}, + 34: {Name: "bits", DefiningModule: "iana-if-type"}, + 35: {Name: "bridge", DefiningModule: "iana-if-type"}, + 36: {Name: "bsc", DefiningModule: "iana-if-type"}, + 37: {Name: "cableDownstreamRfPort", DefiningModule: "iana-if-type"}, + 38: {Name: "capwapDot11Bss", DefiningModule: "iana-if-type"}, + 39: {Name: "capwapDot11Profile", DefiningModule: "iana-if-type"}, + 40: {Name: "capwapWtpVirtualRadio", DefiningModule: "iana-if-type"}, + 41: {Name: "cblVectaStar", DefiningModule: "iana-if-type"}, + 42: {Name: "cctEmul", DefiningModule: "iana-if-type"}, + 43: {Name: "ces", DefiningModule: "iana-if-type"}, + 44: {Name: "channel", DefiningModule: "iana-if-type"}, + 45: {Name: "ciscoISLvlan", DefiningModule: "iana-if-type"}, + 46: {Name: "cnr", DefiningModule: "iana-if-type"}, + 47: {Name: "coffee", DefiningModule: "iana-if-type"}, + 48: {Name: "compositeLink", DefiningModule: "iana-if-type"}, + 49: {Name: "dcn", DefiningModule: "iana-if-type"}, + 50: {Name: "ddnX25", DefiningModule: "iana-if-type"}, + 51: {Name: "digitalPowerline", DefiningModule: "iana-if-type"}, + 52: {Name: "digitalWrapperOverheadChannel", DefiningModule: "iana-if-type"}, + 53: {Name: "dlsw", DefiningModule: "iana-if-type"}, + 54: {Name: "docsCableDownstream", DefiningModule: "iana-if-type"}, + 55: {Name: "docsCableMCmtsDownstream", DefiningModule: "iana-if-type"}, + 56: {Name: "docsCableMaclayer", DefiningModule: "iana-if-type"}, + 57: {Name: "docsCableUpstream", DefiningModule: "iana-if-type"}, + 58: {Name: "docsCableUpstreamChannel", DefiningModule: "iana-if-type"}, + 59: {Name: "docsCableUpstreamRfPort", DefiningModule: "iana-if-type"}, + 60: {Name: "ds0", DefiningModule: "iana-if-type"}, + 61: {Name: "ds0Bundle", DefiningModule: "iana-if-type"}, + 62: {Name: "ds1", DefiningModule: "iana-if-type"}, + 63: {Name: "ds1FDL", DefiningModule: "iana-if-type"}, + 64: {Name: "ds3", DefiningModule: "iana-if-type"}, + 65: {Name: "dtm", DefiningModule: "iana-if-type"}, + 66: {Name: "dvbAsiIn", DefiningModule: "iana-if-type"}, + 67: {Name: "dvbAsiOut", DefiningModule: "iana-if-type"}, + 68: {Name: "dvbRccDownstream", DefiningModule: "iana-if-type"}, + 69: {Name: "dvbRccMacLayer", DefiningModule: "iana-if-type"}, + 70: {Name: "dvbRccUpstream", DefiningModule: "iana-if-type"}, + 71: {Name: "dvbRcsMacLayer", DefiningModule: "iana-if-type"}, + 72: {Name: "dvbRcsTdma", DefiningModule: "iana-if-type"}, + 73: {Name: "dvbTdm", DefiningModule: "iana-if-type"}, + 74: {Name: "e1", DefiningModule: "iana-if-type"}, + 75: {Name: "econet", DefiningModule: "iana-if-type"}, + 76: {Name: "eon", DefiningModule: "iana-if-type"}, + 77: {Name: "eplrs", DefiningModule: "iana-if-type"}, + 78: {Name: "escon", DefiningModule: "iana-if-type"}, + 79: {Name: "ethernet3Mbit", DefiningModule: "iana-if-type"}, + 80: {Name: "ethernetCsmacd", DefiningModule: "iana-if-type"}, + 81: {Name: "fast", DefiningModule: "iana-if-type"}, + 82: {Name: "fastEther", DefiningModule: "iana-if-type"}, + 83: {Name: "fastEtherFX", DefiningModule: "iana-if-type"}, + 84: {Name: "fcipLink", DefiningModule: "iana-if-type"}, + 85: {Name: "fddi", DefiningModule: "iana-if-type"}, + 86: {Name: "fibreChannel", DefiningModule: "iana-if-type"}, + 87: {Name: "frDlciEndPt", DefiningModule: "iana-if-type"}, + 88: {Name: "frForward", DefiningModule: "iana-if-type"}, + 89: {Name: "frameRelay", DefiningModule: "iana-if-type"}, + 90: {Name: "frameRelayInterconnect", DefiningModule: "iana-if-type"}, + 91: {Name: "frameRelayMPI", DefiningModule: "iana-if-type"}, + 92: {Name: "frameRelayService", DefiningModule: "iana-if-type"}, + 93: {Name: "frf16MfrBundle", DefiningModule: "iana-if-type"}, + 94: {Name: "g703at2mb", DefiningModule: "iana-if-type"}, + 95: {Name: "g703at64k", DefiningModule: "iana-if-type"}, + 96: {Name: "g9981", DefiningModule: "iana-if-type"}, + 97: {Name: "g9982", DefiningModule: "iana-if-type"}, + 98: {Name: "g9983", DefiningModule: "iana-if-type"}, + 99: {Name: "gfp", DefiningModule: "iana-if-type"}, + 100: {Name: "gigabitEthernet", DefiningModule: "iana-if-type"}, + 101: {Name: "gpon", DefiningModule: "iana-if-type"}, + 102: {Name: "gr303IDT", DefiningModule: "iana-if-type"}, + 103: {Name: "gr303RDT", DefiningModule: "iana-if-type"}, + 104: {Name: "gtp", DefiningModule: "iana-if-type"}, + 105: {Name: "h323Gatekeeper", DefiningModule: "iana-if-type"}, + 106: {Name: "h323Proxy", DefiningModule: "iana-if-type"}, + 107: {Name: "hdh1822", DefiningModule: "iana-if-type"}, + 108: {Name: "hdlc", DefiningModule: "iana-if-type"}, + 109: {Name: "hdsl2", DefiningModule: "iana-if-type"}, + 110: {Name: "hiperlan2", DefiningModule: "iana-if-type"}, + 111: {Name: "hippi", DefiningModule: "iana-if-type"}, + 112: {Name: "hippiInterface", DefiningModule: "iana-if-type"}, + 113: {Name: "homepna", DefiningModule: "iana-if-type"}, + 114: {Name: "hostPad", DefiningModule: "iana-if-type"}, + 115: {Name: "hssi", DefiningModule: "iana-if-type"}, + 116: {Name: "hyperchannel", DefiningModule: "iana-if-type"}, + 117: {Name: "iana-interface-type", DefiningModule: "iana-if-type"}, + 118: {Name: "ibm370parChan", DefiningModule: "iana-if-type"}, + 119: {Name: "idsl", DefiningModule: "iana-if-type"}, + 120: {Name: "ieee1394", DefiningModule: "iana-if-type"}, + 121: {Name: "ieee80211", DefiningModule: "iana-if-type"}, + 122: {Name: "ieee80212", DefiningModule: "iana-if-type"}, + 123: {Name: "ieee802154", DefiningModule: "iana-if-type"}, + 124: {Name: "ieee80216WMAN", DefiningModule: "iana-if-type"}, + 125: {Name: "ieee8023adLag", DefiningModule: "iana-if-type"}, + 126: {Name: "if-gsn", DefiningModule: "iana-if-type"}, + 127: {Name: "ifPwType", DefiningModule: "iana-if-type"}, + 128: {Name: "ifVfiType", DefiningModule: "iana-if-type"}, + 129: {Name: "ilan", DefiningModule: "iana-if-type"}, + 130: {Name: "imt", DefiningModule: "iana-if-type"}, + 131: {Name: "infiniband", DefiningModule: "iana-if-type"}, + 132: {Name: "interleave", DefiningModule: "iana-if-type"}, + 133: {Name: "ip", DefiningModule: "iana-if-type"}, + 134: {Name: "ipForward", DefiningModule: "iana-if-type"}, + 135: {Name: "ipOverAtm", DefiningModule: "iana-if-type"}, + 136: {Name: "ipOverCdlc", DefiningModule: "iana-if-type"}, + 137: {Name: "ipOverClaw", DefiningModule: "iana-if-type"}, + 138: {Name: "ipSwitch", DefiningModule: "iana-if-type"}, + 139: {Name: "isdn", DefiningModule: "iana-if-type"}, + 140: {Name: "isdns", DefiningModule: "iana-if-type"}, + 141: {Name: "isdnu", DefiningModule: "iana-if-type"}, + 142: {Name: "iso88022llc", DefiningModule: "iana-if-type"}, + 143: {Name: "iso88023Csmacd", DefiningModule: "iana-if-type"}, + 144: {Name: "iso88024TokenBus", DefiningModule: "iana-if-type"}, + 145: {Name: "iso88025CRFPInt", DefiningModule: "iana-if-type"}, + 146: {Name: "iso88025Dtr", DefiningModule: "iana-if-type"}, + 147: {Name: "iso88025Fiber", DefiningModule: "iana-if-type"}, + 148: {Name: "iso88025TokenRing", DefiningModule: "iana-if-type"}, + 149: {Name: "iso88026Man", DefiningModule: "iana-if-type"}, + 150: {Name: "isup", DefiningModule: "iana-if-type"}, + 151: {Name: "l2vlan", DefiningModule: "iana-if-type"}, + 152: {Name: "l3ipvlan", DefiningModule: "iana-if-type"}, + 153: {Name: "l3ipxvlan", DefiningModule: "iana-if-type"}, + 154: {Name: "lapb", DefiningModule: "iana-if-type"}, + 155: {Name: "lapd", DefiningModule: "iana-if-type"}, + 156: {Name: "lapf", DefiningModule: "iana-if-type"}, + 157: {Name: "linegroup", DefiningModule: "iana-if-type"}, + 158: {Name: "lmp", DefiningModule: "iana-if-type"}, + 159: {Name: "localTalk", DefiningModule: "iana-if-type"}, + 160: {Name: "macSecControlledIF", DefiningModule: "iana-if-type"}, + 161: {Name: "macSecUncontrolledIF", DefiningModule: "iana-if-type"}, + 162: {Name: "mediaMailOverIp", DefiningModule: "iana-if-type"}, + 163: {Name: "mfSigLink", DefiningModule: "iana-if-type"}, + 164: {Name: "miox25", DefiningModule: "iana-if-type"}, + 165: {Name: "mocaVersion1", DefiningModule: "iana-if-type"}, + 166: {Name: "modem", DefiningModule: "iana-if-type"}, + 167: {Name: "mpc", DefiningModule: "iana-if-type"}, + 168: {Name: "mpegTransport", DefiningModule: "iana-if-type"}, + 169: {Name: "mpls", DefiningModule: "iana-if-type"}, + 170: {Name: "mplsTunnel", DefiningModule: "iana-if-type"}, + 171: {Name: "msdsl", DefiningModule: "iana-if-type"}, + 172: {Name: "mvl", DefiningModule: "iana-if-type"}, + 173: {Name: "myrinet", DefiningModule: "iana-if-type"}, + 174: {Name: "nfas", DefiningModule: "iana-if-type"}, + 175: {Name: "nsip", DefiningModule: "iana-if-type"}, + 176: {Name: "opticalChannel", DefiningModule: "iana-if-type"}, + 177: {Name: "opticalChannelGroup", DefiningModule: "iana-if-type"}, + 178: {Name: "opticalTransport", DefiningModule: "iana-if-type"}, + 179: {Name: "other", DefiningModule: "iana-if-type"}, + 180: {Name: "otnOdu", DefiningModule: "iana-if-type"}, + 181: {Name: "otnOtu", DefiningModule: "iana-if-type"}, + 182: {Name: "para", DefiningModule: "iana-if-type"}, + 183: {Name: "pdnEtherLoop1", DefiningModule: "iana-if-type"}, + 184: {Name: "pdnEtherLoop2", DefiningModule: "iana-if-type"}, + 185: {Name: "pip", DefiningModule: "iana-if-type"}, + 186: {Name: "plc", DefiningModule: "iana-if-type"}, + 187: {Name: "pon155", DefiningModule: "iana-if-type"}, + 188: {Name: "pon622", DefiningModule: "iana-if-type"}, + 189: {Name: "pos", DefiningModule: "iana-if-type"}, + 190: {Name: "ppp", DefiningModule: "iana-if-type"}, + 191: {Name: "pppMultilinkBundle", DefiningModule: "iana-if-type"}, + 192: {Name: "primaryISDN", DefiningModule: "iana-if-type"}, + 193: {Name: "propAtm", DefiningModule: "iana-if-type"}, + 194: {Name: "propBWAp2Mp", DefiningModule: "iana-if-type"}, + 195: {Name: "propCnls", DefiningModule: "iana-if-type"}, + 196: {Name: "propDocsWirelessDownstream", DefiningModule: "iana-if-type"}, + 197: {Name: "propDocsWirelessMaclayer", DefiningModule: "iana-if-type"}, + 198: {Name: "propDocsWirelessUpstream", DefiningModule: "iana-if-type"}, + 199: {Name: "propMultiplexor", DefiningModule: "iana-if-type"}, + 200: {Name: "propPointToPointSerial", DefiningModule: "iana-if-type"}, + 201: {Name: "propVirtual", DefiningModule: "iana-if-type"}, + 202: {Name: "propWirelessP2P", DefiningModule: "iana-if-type"}, + 203: {Name: "proteon10Mbit", DefiningModule: "iana-if-type"}, + 204: {Name: "proteon80Mbit", DefiningModule: "iana-if-type"}, + 205: {Name: "q2931", DefiningModule: "iana-if-type"}, + 206: {Name: "qam", DefiningModule: "iana-if-type"}, + 207: {Name: "qllc", DefiningModule: "iana-if-type"}, + 208: {Name: "radioMAC", DefiningModule: "iana-if-type"}, + 209: {Name: "radsl", DefiningModule: "iana-if-type"}, + 210: {Name: "reachDSL", DefiningModule: "iana-if-type"}, + 211: {Name: "regular1822", DefiningModule: "iana-if-type"}, + 212: {Name: "rfc1483", DefiningModule: "iana-if-type"}, + 213: {Name: "rfc877x25", DefiningModule: "iana-if-type"}, + 214: {Name: "rpr", DefiningModule: "iana-if-type"}, + 215: {Name: "rs232", DefiningModule: "iana-if-type"}, + 216: {Name: "rsrb", DefiningModule: "iana-if-type"}, + 217: {Name: "sdlc", DefiningModule: "iana-if-type"}, + 218: {Name: "sdsl", DefiningModule: "iana-if-type"}, + 219: {Name: "shdsl", DefiningModule: "iana-if-type"}, + 220: {Name: "sip", DefiningModule: "iana-if-type"}, + 221: {Name: "sipSig", DefiningModule: "iana-if-type"}, + 222: {Name: "sipTg", DefiningModule: "iana-if-type"}, + 223: {Name: "sixToFour", DefiningModule: "iana-if-type"}, + 224: {Name: "slip", DefiningModule: "iana-if-type"}, + 225: {Name: "smdsDxi", DefiningModule: "iana-if-type"}, + 226: {Name: "smdsIcip", DefiningModule: "iana-if-type"}, + 227: {Name: "softwareLoopback", DefiningModule: "iana-if-type"}, + 228: {Name: "sonet", DefiningModule: "iana-if-type"}, + 229: {Name: "sonetOverheadChannel", DefiningModule: "iana-if-type"}, + 230: {Name: "sonetPath", DefiningModule: "iana-if-type"}, + 231: {Name: "sonetVT", DefiningModule: "iana-if-type"}, + 232: {Name: "srp", DefiningModule: "iana-if-type"}, + 233: {Name: "ss7SigLink", DefiningModule: "iana-if-type"}, + 234: {Name: "stackToStack", DefiningModule: "iana-if-type"}, + 235: {Name: "starLan", DefiningModule: "iana-if-type"}, + 236: {Name: "tdlc", DefiningModule: "iana-if-type"}, + 237: {Name: "teLink", DefiningModule: "iana-if-type"}, + 238: {Name: "termPad", DefiningModule: "iana-if-type"}, + 239: {Name: "tr008", DefiningModule: "iana-if-type"}, + 240: {Name: "transpHdlc", DefiningModule: "iana-if-type"}, + 241: {Name: "tunnel", DefiningModule: "iana-if-type"}, + 242: {Name: "ultra", DefiningModule: "iana-if-type"}, + 243: {Name: "usb", DefiningModule: "iana-if-type"}, + 244: {Name: "v11", DefiningModule: "iana-if-type"}, + 245: {Name: "v35", DefiningModule: "iana-if-type"}, + 246: {Name: "v36", DefiningModule: "iana-if-type"}, + 247: {Name: "v37", DefiningModule: "iana-if-type"}, + 248: {Name: "vdsl", DefiningModule: "iana-if-type"}, + 249: {Name: "vdsl2", DefiningModule: "iana-if-type"}, + 250: {Name: "virtualIpAddress", DefiningModule: "iana-if-type"}, + 251: {Name: "virtualTg", DefiningModule: "iana-if-type"}, + 252: {Name: "vmwareNicTeam", DefiningModule: "iana-if-type"}, + 253: {Name: "vmwareVirtualNic", DefiningModule: "iana-if-type"}, + 254: {Name: "voiceDID", DefiningModule: "iana-if-type"}, + 255: {Name: "voiceEBS", DefiningModule: "iana-if-type"}, + 256: {Name: "voiceEM", DefiningModule: "iana-if-type"}, + 257: {Name: "voiceEMFGD", DefiningModule: "iana-if-type"}, + 258: {Name: "voiceEncap", DefiningModule: "iana-if-type"}, + 259: {Name: "voiceFGDEANA", DefiningModule: "iana-if-type"}, + 260: {Name: "voiceFGDOS", DefiningModule: "iana-if-type"}, + 261: {Name: "voiceFXO", DefiningModule: "iana-if-type"}, + 262: {Name: "voiceFXS", DefiningModule: "iana-if-type"}, + 263: {Name: "voiceOverAtm", DefiningModule: "iana-if-type"}, + 264: {Name: "voiceOverCable", DefiningModule: "iana-if-type"}, + 265: {Name: "voiceOverFrameRelay", DefiningModule: "iana-if-type"}, + 266: {Name: "voiceOverIp", DefiningModule: "iana-if-type"}, + 267: {Name: "wwanPP", DefiningModule: "iana-if-type"}, + 268: {Name: "wwanPP2", DefiningModule: "iana-if-type"}, + 269: {Name: "x213", DefiningModule: "iana-if-type"}, + 270: {Name: "x25huntGroup", DefiningModule: "iana-if-type"}, + 271: {Name: "x25mlp", DefiningModule: "iana-if-type"}, + 272: {Name: "x25ple", DefiningModule: "iana-if-type"}, + 273: {Name: "x86Laps", DefiningModule: "iana-if-type"}, + }, + "E_Interface_AdminStatus": { + 1: {Name: "UP"}, + 2: {Name: "DOWN"}, + 3: {Name: "TESTING"}, + }, + "E_Interface_OperStatus": { + 2: {Name: "UP"}, + 3: {Name: "DOWN"}, + 4: {Name: "TESTING"}, + 5: {Name: "UNKNOWN"}, + 6: {Name: "DORMANT"}, + 7: {Name: "NOT_PRESENT"}, + 8: {Name: "LOWER_LAYER_DOWN"}, + }, + "E_Neighbor_NeighborState": { + 1: {Name: "INCOMPLETE"}, + 2: {Name: "REACHABLE"}, + 3: {Name: "STALE"}, + 4: {Name: "DELAY"}, + 5: {Name: "PROBE"}, + }, + "E_OpenconfigIfAggregate_AggregationType": { + 1: {Name: "LACP"}, + 2: {Name: "STATIC"}, + }, + "E_OpenconfigIfEthernet_ETHERNET_SPEED": { + 1: {Name: "SPEED_100GB", DefiningModule: "openconfig-if-ethernet"}, + 2: {Name: "SPEED_100MB", DefiningModule: "openconfig-if-ethernet"}, + 3: {Name: "SPEED_10GB", DefiningModule: "openconfig-if-ethernet"}, + 4: {Name: "SPEED_10MB", DefiningModule: "openconfig-if-ethernet"}, + 5: {Name: "SPEED_1GB", DefiningModule: "openconfig-if-ethernet"}, + 6: {Name: "SPEED_25GB", DefiningModule: "openconfig-if-ethernet"}, + 7: {Name: "SPEED_40GB", DefiningModule: "openconfig-if-ethernet"}, + 8: {Name: "SPEED_50GB", DefiningModule: "openconfig-if-ethernet"}, + 9: {Name: "SPEED_UNKNOWN", DefiningModule: "openconfig-if-ethernet"}, + }, + "E_OpenconfigIfIp_IpAddressOrigin": { + 1: {Name: "OTHER"}, + 2: {Name: "STATIC"}, + 3: {Name: "DHCP"}, + 4: {Name: "LINK_LAYER"}, + 5: {Name: "RANDOM"}, + }, + "E_OpenconfigIfIp_NeighborOrigin": { + 1: {Name: "OTHER"}, + 2: {Name: "STATIC"}, + 3: {Name: "DYNAMIC"}, + }, + "E_OpenconfigVlanTypes_TPID_TYPES": { + 1: {Name: "TPID_0X9200", DefiningModule: "openconfig-vlan-types"}, + 2: {Name: "TPID_0x8100", DefiningModule: "openconfig-vlan-types"}, + 3: {Name: "TPID_0x8A88", DefiningModule: "openconfig-vlan-types"}, + 4: {Name: "TPID_0x9100", DefiningModule: "openconfig-vlan-types"}, + }, + "E_OpenconfigVlan_VlanModeType": { + 1: {Name: "ACCESS"}, + 2: {Name: "TRUNK"}, + }, + "E_Vlan_Status": { + 1: {Name: "ACTIVE"}, + 2: {Name: "SUSPENDED"}, + }, +} + + +var ( + // ySchema is a byte slice contain a gzip compressed representation of the + // YANG schema from which the Go code was generated. When uncompressed the + // contents of the byte slice is a JSON document containing an object, keyed + // on the name of the generated struct, and containing the JSON marshalled + // contents of a goyang yang.Entry struct, which defines the schema for the + // fields within the struct. + ySchema = []byte{ + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0xfd, 0x7d, 0x53, 0xdb, 0x3a, + 0xf3, 0x3f, 0x8e, 0xff, 0xcf, 0xa3, 0xc8, 0x64, 0xe6, 0xcc, 0x40, 0x4f, 0x43, 0x73, 0x47, 0x80, + 0xcc, 0x7c, 0xa6, 0x43, 0x0b, 0xf4, 0x62, 0xde, 0x50, 0x32, 0x85, 0xd3, 0x73, 0xe6, 0x07, 0xb9, + 0x3a, 0x8a, 0x2d, 0x27, 0xfa, 0xd5, 0x96, 0x7d, 0x64, 0x39, 0x85, 0xab, 0xe5, 0xb9, 0x7f, 0x27, + 0x8e, 0x73, 0x03, 0x81, 0x12, 0xdb, 0x92, 0x92, 0x75, 0xb6, 0x7f, 0xb4, 0x81, 0xc6, 0x92, 0x6d, + 0x69, 0x6f, 0x5e, 0xaf, 0x5d, 0xed, 0xfe, 0xdc, 0x2a, 0x95, 0x4a, 0xa5, 0xf2, 0x67, 0xe2, 0xd1, + 0x72, 0xbb, 0x54, 0xb6, 0xe9, 0x90, 0x59, 0xb4, 0xfc, 0x76, 0xfc, 0xdb, 0xff, 0x63, 0xdc, 0x2e, + 0xb7, 0x4b, 0xb5, 0xe4, 0xc7, 0x8f, 0x3e, 0x77, 0x58, 0xbf, 0xdc, 0x2e, 0x55, 0x93, 0x5f, 0x1c, + 0x33, 0x51, 0x6e, 0x97, 0xc6, 0x43, 0xc4, 0xbf, 0x60, 0x5c, 0x52, 0xe1, 0x10, 0x8b, 0x86, 0x8f, + 0x7e, 0xff, 0x68, 0x8a, 0xb9, 0xef, 0xbc, 0x7d, 0xfc, 0x8d, 0xc7, 0xd3, 0x4d, 0x7f, 0xfd, 0x74, + 0xda, 0xe9, 0x7f, 0x74, 0x04, 0x75, 0xd8, 0xdd, 0xc2, 0x4c, 0x8f, 0x66, 0xf3, 0xad, 0x0a, 0x73, + 0x9e, 0x4c, 0x14, 0x7f, 0xe1, 0xca, 0x8f, 0x84, 0x45, 0x9f, 0xbd, 0x78, 0x7c, 0x33, 0xf4, 0xfe, + 0x87, 0x2f, 0x46, 0xf7, 0x53, 0x0e, 0xc6, 0xf3, 0xbc, 0x7d, 0xfe, 0x8b, 0xff, 0x21, 0xe1, 0x91, + 0xe8, 0x47, 0x1e, 0xe5, 0xb2, 0xdc, 0x2e, 0x49, 0x11, 0xd1, 0x17, 0xbe, 0x38, 0xf7, 0xad, 0xe4, + 0xb6, 0x16, 0xbe, 0xf7, 0xf0, 0xe8, 0x37, 0x0f, 0x4f, 0x9e, 0xf7, 0xe9, 0xeb, 0x5e, 0x7c, 0xed, + 0x2f, 0x3f, 0xce, 0xc2, 0xdb, 0x7f, 0xe9, 0x71, 0x9e, 0x5f, 0x84, 0x57, 0x17, 0x63, 0x99, 0x45, + 0x59, 0x7a, 0x71, 0x96, 0x5d, 0xa4, 0xd4, 0x8b, 0x95, 0x7a, 0xd1, 0xd2, 0x2c, 0xde, 0xf3, 0x8b, + 0xf8, 0xc2, 0x62, 0xbe, 0xba, 0xa8, 0xd3, 0x2f, 0x90, 0x7e, 0x5f, 0xd0, 0x3e, 0x91, 0xcc, 0xe7, + 0xaf, 0xbf, 0x88, 0xc9, 0x9b, 0x9d, 0xbf, 0xe8, 0x95, 0x27, 0xfb, 0xfd, 0x82, 0x2f, 0xbd, 0xf0, + 0x69, 0x36, 0xc0, 0x73, 0x1b, 0xc1, 0x25, 0xfd, 0x57, 0xee, 0x34, 0xcd, 0x8e, 0xc8, 0xbc, 0x33, + 0x32, 0xef, 0x90, 0x97, 0x76, 0xca, 0xe8, 0xb9, 0x5e, 0xbd, 0xf0, 0xe1, 0xb7, 0xdf, 0x78, 0x78, + 0xe5, 0x8d, 0xbf, 0xb6, 0x85, 0xa6, 0x5f, 0xb4, 0x26, 0x6b, 0xb8, 0xe4, 0xcb, 0x9b, 0x2c, 0x4f, + 0x72, 0xdd, 0x92, 0x2f, 0x60, 0xb9, 0x0d, 0x95, 0x7a, 0x63, 0x65, 0xd9, 0x60, 0xd9, 0x37, 0x5a, + 0xd6, 0x0d, 0x97, 0x7b, 0xe3, 0xe5, 0xde, 0x80, 0xb9, 0x36, 0xe2, 0x72, 0x1b, 0x72, 0xc9, 0x8d, + 0x99, 0x7a, 0x83, 0x4e, 0x2f, 0x70, 0x49, 0xbf, 0x22, 0xef, 0x83, 0x0c, 0xaf, 0x7d, 0xb2, 0xd0, + 0xd3, 0x11, 0x52, 0xbe, 0xb4, 0x64, 0xf3, 0x56, 0x53, 0x5e, 0x96, 0x76, 0x13, 0xe7, 0xd9, 0xcc, + 0xf9, 0x37, 0x75, 0xde, 0xcd, 0xad, 0x6c, 0x93, 0x2b, 0xdb, 0xec, 0x4a, 0x36, 0x7d, 0xba, 0xcd, + 0x9f, 0x52, 0x08, 0xa6, 0x77, 0x78, 0x9d, 0x65, 0x5f, 0xbf, 0x64, 0xdc, 0xb3, 0xec, 0xf1, 0x47, + 0x4a, 0xba, 0x99, 0xe1, 0xda, 0x13, 0x1e, 0x79, 0xa3, 0x27, 0x48, 0xf9, 0x9e, 0xb6, 0x34, 0xbc, + 0xd1, 0xb2, 0xc7, 0x78, 0xc5, 0x65, 0xfc, 0x7b, 0x98, 0x5d, 0x55, 0xcc, 0x86, 0x40, 0x5d, 0x81, + 0xba, 0xa2, 0x60, 0xba, 0x22, 0x62, 0x5c, 0xd6, 0x5a, 0x39, 0x34, 0x44, 0x2b, 0xc3, 0xa5, 0x5f, + 0x08, 0xef, 0x8f, 0x66, 0xbf, 0xc9, 0xb4, 0x2e, 0xd9, 0xf6, 0x57, 0x3c, 0xf1, 0x05, 0xe3, 0x99, + 0x37, 0x68, 0x4e, 0xb1, 0x5e, 0x18, 0xe6, 0x2b, 0x71, 0x23, 0xaa, 0x60, 0x9c, 0x53, 0x41, 0xac, + 0x91, 0xaa, 0x3f, 0x66, 0x7d, 0x26, 0x47, 0x6a, 0xae, 0x9a, 0x79, 0xbc, 0x87, 0xb7, 0x39, 0x5e, + 0x2d, 0xb9, 0x5b, 0xbb, 0x57, 0xdb, 0xda, 0xdb, 0x6b, 0xec, 0xad, 0xd1, 0xeb, 0xdd, 0x32, 0x73, + 0x55, 0x57, 0x97, 0xdd, 0x55, 0xea, 0xf4, 0x1f, 0x71, 0xee, 0xcb, 0xe5, 0x68, 0x8b, 0x47, 0xd7, + 0x85, 0xd6, 0x80, 0x7a, 0x24, 0x20, 0x72, 0x30, 0xd2, 0x5f, 0xef, 0xfc, 0x80, 0xf2, 0x31, 0xfe, + 0xac, 0xcc, 0x98, 0xc3, 0x77, 0xcf, 0x7d, 0x7c, 0x37, 0xe7, 0x17, 0xbd, 0x4b, 0x20, 0xeb, 0x96, + 0x9a, 0xe7, 0x5e, 0xe2, 0x99, 0xcb, 0xa1, 0x24, 0x92, 0xa6, 0xc7, 0xd6, 0xe3, 0xcb, 0x34, 0x43, + 0xeb, 0x3a, 0x42, 0x6b, 0x84, 0xd6, 0x33, 0x68, 0x1d, 0x06, 0x94, 0xda, 0xf9, 0xb0, 0xf5, 0x78, + 0x08, 0x74, 0x98, 0xd1, 0x61, 0x2e, 0xa0, 0xc3, 0xdc, 0xa8, 0xe7, 0x70, 0x98, 0xf7, 0xd1, 0x61, + 0x46, 0x87, 0x79, 0x4d, 0x1d, 0xe6, 0x66, 0xfd, 0xb0, 0x79, 0xd8, 0xda, 0xaf, 0x1f, 0xa2, 0xd7, + 0xbc, 0x12, 0xb6, 0x0a, 0x79, 0x6d, 0x34, 0xbd, 0x68, 0x7a, 0x5f, 0x5a, 0x6f, 0xe4, 0xb5, 0x67, + 0xf7, 0xe2, 0x51, 0xaf, 0x47, 0x45, 0x0e, 0x52, 0x7b, 0x7c, 0x3d, 0x6a, 0x09, 0xd4, 0x12, 0x05, + 0xd3, 0x12, 0x3d, 0x12, 0xd2, 0x19, 0x15, 0x54, 0x11, 0xd4, 0xc9, 0xa3, 0x27, 0xb2, 0x78, 0xeb, + 0x9d, 0x29, 0x37, 0x65, 0x55, 0x98, 0xd3, 0x9e, 0xe3, 0xa2, 0x9e, 0xfc, 0x22, 0xf9, 0x99, 0x8f, + 0xee, 0x5c, 0xeb, 0x5b, 0x3d, 0x67, 0xa1, 0x3c, 0x92, 0x52, 0x64, 0x7b, 0xb3, 0x17, 0x8c, 0x9f, + 0xb8, 0x74, 0xb4, 0x6f, 0x46, 0x9e, 0x1c, 0x8f, 0x5c, 0x37, 0xc3, 0x4b, 0xb9, 0x20, 0x77, 0xf9, + 0x07, 0xb9, 0x14, 0x36, 0x15, 0xd4, 0xfe, 0x70, 0x9f, 0x0c, 0x81, 0x01, 0x46, 0x54, 0xc7, 0xa8, + 0x8e, 0xd7, 0x9e, 0x2f, 0xc1, 0x00, 0x23, 0xf2, 0x25, 0x85, 0xe4, 0x4b, 0x30, 0xc0, 0xa8, 0xd6, + 0xee, 0x16, 0x28, 0xc0, 0x38, 0x8e, 0xdb, 0x99, 0x8c, 0x2f, 0xfe, 0x60, 0xd2, 0x1a, 0x50, 0xbb, + 0x32, 0x74, 0x09, 0xcf, 0x10, 0x67, 0x7c, 0x74, 0x79, 0x31, 0x52, 0x79, 0x53, 0x3c, 0x4a, 0xa9, + 0x50, 0x01, 0xc7, 0xf8, 0xc1, 0xa1, 0x44, 0x1c, 0x53, 0x66, 0x9d, 0x2f, 0x2c, 0x74, 0xaa, 0xec, + 0xf3, 0x8c, 0x5b, 0x77, 0x6d, 0x7c, 0xe7, 0x94, 0x5b, 0x7a, 0x73, 0x9c, 0xe7, 0x74, 0x5b, 0xde, + 0x8c, 0xf7, 0x9c, 0x56, 0x14, 0xa6, 0x17, 0x12, 0xcb, 0xa2, 0x61, 0x98, 0x4e, 0x93, 0xbf, 0x4c, + 0x9b, 0xce, 0x0d, 0x96, 0xf1, 0x5d, 0xe7, 0x73, 0x9b, 0x32, 0x0b, 0x8d, 0x0a, 0xe1, 0x51, 0x28, + 0x44, 0xaa, 0x84, 0x49, 0xb9, 0x50, 0x29, 0x17, 0x2e, 0xb5, 0x42, 0x96, 0xd3, 0x3d, 0xcd, 0xb8, + 0x67, 0x32, 0x43, 0xd7, 0x45, 0x08, 0xcb, 0x5f, 0x3f, 0x26, 0xb7, 0x94, 0xad, 0x39, 0xcc, 0x31, + 0x46, 0xf2, 0x38, 0x37, 0xb9, 0xd6, 0x33, 0xdf, 0x7e, 0x7d, 0xf4, 0x52, 0x46, 0x5b, 0xa1, 0xc2, + 0xec, 0x9c, 0x3b, 0x36, 0x27, 0xd0, 0x57, 0x0c, 0xfc, 0xd5, 0xbf, 0x2e, 0xa5, 0xc4, 0x80, 0x26, + 0x34, 0xfb, 0x22, 0xba, 0xad, 0x29, 0x1e, 0x57, 0x21, 0xd2, 0x55, 0x48, 0x2c, 0x68, 0x21, 0x1a, + 0x4c, 0x2f, 0x55, 0xb3, 0x7a, 0xd8, 0x04, 0xb4, 0x5a, 0x5b, 0xeb, 0x31, 0x4a, 0x77, 0x6b, 0x85, + 0x7b, 0x4e, 0xa1, 0x2e, 0xfe, 0x97, 0xf1, 0x7f, 0xd5, 0xea, 0xe2, 0xda, 0x81, 0x82, 0xb1, 0x3a, + 0x44, 0x4a, 0x2a, 0xb8, 0x32, 0x75, 0x5c, 0xde, 0x6e, 0x56, 0x0f, 0x6f, 0xaa, 0x95, 0x66, 0xf7, + 0x57, 0xb3, 0x7a, 0x53, 0xad, 0x1c, 0x74, 0x6f, 0xaa, 0x95, 0xc3, 0xee, 0xaf, 0x9b, 0x5a, 0xa5, + 0x31, 0xfe, 0xf8, 0xb3, 0xf1, 0x30, 0xfa, 0xe9, 0x30, 0xf9, 0xa9, 0xf6, 0xb6, 0x9e, 0xfc, 0xbc, + 0x73, 0x7b, 0xbb, 0xbb, 0x9d, 0xe3, 0xf2, 0x5f, 0xb7, 0xb7, 0x6f, 0x76, 0xca, 0xab, 0xde, 0x70, + 0x5b, 0x66, 0xe7, 0x4d, 0x3f, 0x5f, 0x06, 0x91, 0x98, 0x55, 0x9c, 0xa8, 0x78, 0xbe, 0x4d, 0xf3, + 0xc3, 0x9d, 0x27, 0xe3, 0x21, 0xe2, 0x41, 0xc4, 0x83, 0x88, 0x27, 0x8b, 0x73, 0x3f, 0x12, 0x9f, + 0xac, 0x79, 0x56, 0x0b, 0xf6, 0x24, 0x87, 0x77, 0x92, 0x31, 0xef, 0xca, 0xac, 0x16, 0xe3, 0x44, + 0xb2, 0x21, 0x55, 0xc4, 0xd8, 0xcc, 0x0f, 0x86, 0xfa, 0x0b, 0xf5, 0x17, 0xea, 0x2f, 0x64, 0x6c, + 0x90, 0xb1, 0x41, 0xc6, 0x06, 0x19, 0x1b, 0x64, 0x6c, 0x90, 0xb1, 0x41, 0xc6, 0x06, 0x19, 0x1b, + 0x64, 0x6c, 0x56, 0x88, 0x75, 0xa4, 0x88, 0xf8, 0xf7, 0xd8, 0xb3, 0x0c, 0xf3, 0x63, 0x9d, 0xf9, + 0xc1, 0x10, 0xeb, 0x20, 0xd6, 0x41, 0xac, 0x83, 0x58, 0x07, 0xb1, 0x0e, 0x62, 0x1d, 0xc4, 0x3a, + 0x88, 0x75, 0x10, 0xeb, 0x14, 0x01, 0xeb, 0xc4, 0xba, 0x58, 0xc4, 0xaa, 0x0f, 0xe1, 0xce, 0xef, + 0xe0, 0xce, 0x08, 0xf1, 0x64, 0x1f, 0xa0, 0x8c, 0x1b, 0x0e, 0xc1, 0xf5, 0x46, 0x81, 0xeb, 0x75, + 0xdb, 0x70, 0xea, 0x95, 0xdc, 0xa1, 0x82, 0xb1, 0x94, 0xb8, 0xe6, 0x1a, 0x7c, 0xce, 0x59, 0x81, + 0x43, 0xc1, 0x78, 0xbf, 0xac, 0xd0, 0x45, 0x52, 0x28, 0xb4, 0xda, 0x84, 0x77, 0x2d, 0x4c, 0xc6, + 0x7a, 0x68, 0x01, 0x35, 0xda, 0x40, 0xb1, 0xaf, 0x8d, 0x1b, 0x5d, 0xf9, 0x46, 0xbf, 0xbd, 0x7d, + 0xf3, 0x2b, 0xc7, 0x6e, 0xdb, 0xc9, 0xbd, 0xd7, 0x57, 0xed, 0x5f, 0x29, 0xde, 0xe8, 0x9b, 0xc6, + 0x6d, 0x67, 0x64, 0xda, 0x72, 0xd5, 0x3e, 0x99, 0x67, 0x48, 0x72, 0x97, 0x2f, 0x99, 0xc7, 0xf0, + 0xea, 0x06, 0xcb, 0x55, 0x13, 0x25, 0xfb, 0x62, 0xea, 0x3d, 0x39, 0x97, 0xf1, 0xec, 0xf6, 0xf4, + 0x7a, 0x45, 0x67, 0xb8, 0xe7, 0xcf, 0x44, 0xa7, 0x2a, 0x19, 0x9d, 0xfe, 0x2d, 0xa5, 0xa9, 0x39, + 0x93, 0xae, 0x94, 0xf4, 0x33, 0x86, 0x68, 0xf9, 0x92, 0xd2, 0x0b, 0xb6, 0x26, 0xeb, 0x79, 0xd9, + 0x3a, 0x9e, 0x97, 0xcd, 0x34, 0x10, 0x9e, 0x97, 0x5d, 0xe2, 0x42, 0x3c, 0x2f, 0xab, 0x4c, 0x78, + 0x14, 0x0a, 0x91, 0x2a, 0x61, 0x52, 0x2e, 0x54, 0xca, 0x85, 0x4b, 0xad, 0x90, 0xe5, 0xf3, 0xb0, + 0x30, 0x22, 0x59, 0xc2, 0x88, 0xe4, 0xb2, 0x43, 0x61, 0x44, 0x52, 0xc1, 0xb0, 0x18, 0x91, 0xc4, + 0x88, 0x24, 0x46, 0x24, 0x75, 0xef, 0x39, 0x0c, 0x10, 0xa5, 0xa7, 0xdc, 0x30, 0xfb, 0xd2, 0x28, + 0x43, 0x85, 0xe7, 0x65, 0x11, 0xf1, 0x20, 0xe2, 0xc1, 0xf3, 0xb2, 0x78, 0x5e, 0xf6, 0xd5, 0x7b, + 0xc4, 0xf3, 0xb2, 0xa8, 0xbf, 0x50, 0x7f, 0x21, 0x63, 0x83, 0x8c, 0x0d, 0x32, 0x36, 0xc8, 0xd8, + 0x20, 0x63, 0x83, 0x8c, 0x0d, 0x32, 0x36, 0xc8, 0xd8, 0x20, 0x63, 0x53, 0x44, 0xc6, 0x06, 0xcf, + 0xcb, 0x22, 0xd6, 0x41, 0xac, 0x83, 0x58, 0x07, 0xb1, 0x0e, 0x62, 0x1d, 0xc4, 0x3a, 0x88, 0x75, + 0x10, 0xeb, 0x20, 0xd6, 0x79, 0x4d, 0x17, 0xe3, 0x79, 0x59, 0x3c, 0x2f, 0x8b, 0xe0, 0x1a, 0xc1, + 0x75, 0x91, 0x37, 0x1c, 0x9e, 0x97, 0xcd, 0xf2, 0xf2, 0xf0, 0xbc, 0x2c, 0x9e, 0x97, 0x55, 0xa0, + 0x0d, 0x14, 0xfb, 0xda, 0xb8, 0xd1, 0xf1, 0xbc, 0x2c, 0x9e, 0x97, 0xd5, 0x33, 0x3f, 0x9e, 0x97, + 0xc5, 0xf3, 0xb2, 0xaf, 0x3c, 0xd4, 0x3a, 0x9e, 0x97, 0x4d, 0xd1, 0x01, 0x39, 0xfd, 0x4b, 0x2a, + 0x54, 0xab, 0xe8, 0x0c, 0xad, 0x97, 0xc7, 0xd3, 0x4b, 0x11, 0x59, 0x92, 0x27, 0xf6, 0xf2, 0x6c, + 0x32, 0xf8, 0xb7, 0xa3, 0xd9, 0xe0, 0xdf, 0xae, 0x92, 0xc1, 0xbf, 0x2e, 0x4d, 0xf6, 0x2f, 0xd1, + 0x8e, 0x7a, 0x2b, 0xc7, 0x4b, 0x2f, 0x1f, 0x45, 0xfd, 0x91, 0x28, 0x53, 0x7b, 0x29, 0x9b, 0x99, + 0xb2, 0x8d, 0xf5, 0x3b, 0xdf, 0xaa, 0x30, 0xa7, 0x3d, 0xf7, 0xce, 0x9f, 0xfc, 0x62, 0xf4, 0xb3, + 0x4b, 0xfa, 0xed, 0xb9, 0x05, 0x58, 0xb6, 0xdb, 0xf5, 0x31, 0x0d, 0x2d, 0xc1, 0x82, 0x64, 0x9b, + 0x94, 0x8f, 0x6c, 0x3b, 0x2c, 0x7d, 0x3d, 0x3f, 0xfa, 0x5c, 0x0a, 0xa9, 0x94, 0x8c, 0xf7, 0xc3, + 0x92, 0xf4, 0x4b, 0xa4, 0x74, 0x7e, 0xf4, 0xa9, 0x34, 0x9d, 0x0e, 0x3b, 0x69, 0xa7, 0xf3, 0xd0, + 0xb0, 0x93, 0xf6, 0xdc, 0x7e, 0x4b, 0xdb, 0x49, 0x3b, 0x5b, 0x0b, 0xf8, 0x45, 0xc7, 0x3b, 0xa3, + 0x3e, 0x7a, 0x4e, 0x48, 0x4e, 0xb8, 0xe5, 0xfa, 0x21, 0xe3, 0xfd, 0x92, 0xe5, 0x73, 0x49, 0x18, + 0xa7, 0xa2, 0xe4, 0xf8, 0x62, 0x2c, 0x37, 0xb3, 0xa3, 0x07, 0x61, 0x40, 0x2d, 0xe6, 0x30, 0xeb, + 0x96, 0xdb, 0x44, 0x92, 0x92, 0xcf, 0x4b, 0x27, 0x72, 0x40, 0x05, 0xa7, 0x72, 0xf6, 0xa5, 0x70, + 0xb7, 0x54, 0xba, 0x1e, 0xd0, 0x90, 0x96, 0x88, 0xa0, 0xf1, 0x20, 0xa1, 0x24, 0xdc, 0x26, 0xc2, + 0xbe, 0xe5, 0xe7, 0xf5, 0xb7, 0xa5, 0xe9, 0x6d, 0x87, 0xf2, 0xde, 0xa5, 0xf1, 0x0c, 0xe1, 0x2e, + 0xb6, 0x05, 0xd7, 0x21, 0xa7, 0xca, 0xe4, 0x55, 0x99, 0xdc, 0xaa, 0x91, 0xdf, 0x8c, 0xce, 0x9a, + 0x6a, 0xfd, 0x90, 0xd3, 0x00, 0x77, 0x5f, 0x33, 0xc0, 0xe9, 0xbc, 0x1d, 0x35, 0x5e, 0xce, 0x12, + 0x1b, 0x63, 0x19, 0x7f, 0xe6, 0xf7, 0x6b, 0xf9, 0xf2, 0x7b, 0xf9, 0x8d, 0xce, 0x2d, 0x5b, 0x13, + 0xe1, 0xfd, 0xfd, 0xbb, 0x98, 0xca, 0x5b, 0xf2, 0xfd, 0x57, 0xde, 0xf2, 0x72, 0x9a, 0x64, 0x69, + 0xcd, 0x91, 0x46, 0x53, 0xcc, 0x6b, 0x06, 0xe6, 0x2c, 0xf3, 0xe6, 0x53, 0xea, 0x81, 0xcc, 0x72, + 0x9f, 0x59, 0xce, 0x9f, 0xca, 0x35, 0x73, 0xca, 0x9a, 0xdd, 0xd4, 0x65, 0xad, 0x6f, 0xd9, 0x7e, + 0x64, 0xf1, 0x52, 0xfa, 0xab, 0xf3, 0x17, 0xa7, 0x73, 0x15, 0xab, 0x6b, 0xea, 0x2a, 0x2e, 0xb5, + 0xe1, 0x8a, 0xe7, 0x28, 0x2e, 0xb3, 0x21, 0xf5, 0xb8, 0x89, 0xa9, 0x53, 0xa3, 0xb2, 0x33, 0xac, + 0x33, 0x06, 0x55, 0x95, 0x21, 0x5b, 0x42, 0x37, 0x51, 0x4e, 0x7a, 0x6e, 0x8c, 0x16, 0x53, 0xca, + 0xd6, 0xe4, 0xc2, 0xa5, 0xe1, 0x9d, 0x43, 0x22, 0x57, 0x26, 0x49, 0x96, 0x14, 0xc5, 0x11, 0xc5, + 0xd1, 0xac, 0x38, 0xf6, 0x7c, 0xdf, 0xa5, 0xe9, 0x70, 0xf6, 0x44, 0x1e, 0x6b, 0x06, 0xe5, 0xd1, + 0x93, 0x51, 0x7a, 0x59, 0x1c, 0x5d, 0x84, 0x02, 0x85, 0x02, 0x65, 0x54, 0xa0, 0x22, 0xc6, 0x65, + 0xad, 0x95, 0x41, 0x9e, 0x52, 0x24, 0xaf, 0x66, 0x4c, 0x52, 0xcd, 0x00, 0xf7, 0xf3, 0x24, 0x9d, + 0xe6, 0xcd, 0xf9, 0x9f, 0x64, 0x26, 0x66, 0xbd, 0x5e, 0x41, 0xfa, 0x61, 0x96, 0x93, 0x17, 0x79, + 0x92, 0x3f, 0x55, 0xbd, 0xb2, 0xd6, 0xde, 0x5e, 0x63, 0x6f, 0x85, 0xaf, 0x4d, 0x13, 0x95, 0xd1, + 0x35, 0x68, 0x71, 0x12, 0x46, 0x20, 0xa5, 0xc9, 0x89, 0xaf, 0x42, 0x9b, 0x83, 0x36, 0x07, 0x31, + 0xd5, 0xc2, 0x9c, 0x32, 0xcd, 0xf3, 0xcd, 0xce, 0x9e, 0x2d, 0x5f, 0xdc, 0x04, 0x25, 0x0a, 0x25, + 0x4a, 0x91, 0x44, 0x31, 0x9b, 0x72, 0xc9, 0xe4, 0xbd, 0xa0, 0x4e, 0x16, 0xb1, 0x4a, 0x61, 0x7b, + 0xcb, 0x67, 0xc9, 0x54, 0x1f, 0x48, 0x98, 0xa3, 0xbe, 0xf6, 0x2c, 0xac, 0x95, 0xa1, 0x1a, 0xd0, + 0xd8, 0x6f, 0x08, 0x33, 0xe5, 0x93, 0xe5, 0xad, 0x04, 0x46, 0x38, 0xa9, 0xe4, 0xba, 0x79, 0x15, + 0x0f, 0x91, 0xef, 0x61, 0x16, 0x1f, 0x2a, 0xdf, 0x21, 0xc7, 0xb7, 0xab, 0xbe, 0xff, 0x40, 0xf8, + 0x41, 0xc7, 0x67, 0x5c, 0x5e, 0xfb, 0xf1, 0x3f, 0x57, 0x54, 0x30, 0xe2, 0x42, 0x7e, 0x22, 0xcf, + 0xb7, 0xa9, 0x07, 0x7d, 0x49, 0xbe, 0x32, 0x21, 0x23, 0xe0, 0xeb, 0xe0, 0x5c, 0xb1, 0xfe, 0x39, + 0xe3, 0xdf, 0x21, 0x3f, 0xc4, 0xd0, 0x67, 0x16, 0xbd, 0x1c, 0x52, 0xf1, 0x91, 0xf4, 0x5c, 0x0a, + 0xf9, 0x49, 0xec, 0x61, 0xef, 0x8b, 0x15, 0x5e, 0xdb, 0x1e, 0x81, 0xfc, 0x14, 0xbe, 0xe4, 0x97, + 0x76, 0x04, 0xf9, 0x09, 0x58, 0xe8, 0x1f, 0x1c, 0x54, 0xeb, 0x7b, 0xd7, 0xfe, 0x77, 0xca, 0xbf, + 0x8c, 0x7c, 0x79, 0xc0, 0x0f, 0x13, 0x86, 0xfb, 0x05, 0x10, 0xf2, 0xfe, 0x7e, 0xb5, 0x41, 0x64, + 0xdd, 0xeb, 0x41, 0x7e, 0x08, 0x47, 0x10, 0x8f, 0x7e, 0xa1, 0x2e, 0xb9, 0xbf, 0xe8, 0x9c, 0x41, + 0x7e, 0x10, 0x19, 0x71, 0x4e, 0x41, 0x5b, 0x3e, 0xb7, 0xc1, 0x82, 0xbb, 0x21, 0x70, 0xc7, 0x30, + 0xb6, 0x7c, 0xa7, 0x9f, 0x8e, 0x4f, 0x8e, 0x3e, 0x1f, 0x81, 0x76, 0x43, 0x02, 0xda, 0xbf, 0x16, + 0x84, 0x87, 0x81, 0x2f, 0x24, 0x68, 0x5d, 0xcb, 0xee, 0xae, 0xfd, 0x53, 0x3f, 0x12, 0x90, 0x1f, + 0xc2, 0x62, 0xa1, 0xe5, 0x9f, 0x5d, 0x9d, 0x17, 0x45, 0x3a, 0x2e, 0xaf, 0x80, 0x23, 0x0d, 0x49, + 0x7d, 0x5e, 0xab, 0x5e, 0xf4, 0x18, 0x6c, 0xd9, 0x70, 0x59, 0x00, 0x7a, 0x3b, 0x35, 0xf6, 0x20, + 0xdf, 0x3e, 0x71, 0xa3, 0x4f, 0x81, 0xcf, 0x2f, 0x39, 0x68, 0xcf, 0x3c, 0xf4, 0x39, 0x95, 0x5f, + 0xaf, 0x41, 0x83, 0x0b, 0x4a, 0xe9, 0x41, 0xb5, 0x5e, 0xab, 0x81, 0xb6, 0x11, 0x24, 0xf8, 0x41, + 0x82, 0xbf, 0xe5, 0x84, 0x04, 0xf9, 0x42, 0x6c, 0xe6, 0x83, 0x16, 0x0f, 0x3b, 0x74, 0xeb, 0xa0, + 0xed, 0x04, 0x6c, 0xed, 0x1a, 0x04, 0x01, 0x74, 0x3e, 0xf0, 0x23, 0x77, 0x43, 0xc8, 0xcf, 0x20, + 0x46, 0x32, 0x7c, 0x71, 0xf4, 0x11, 0xb4, 0x18, 0x4b, 0xef, 0xab, 0xc5, 0x4e, 0xb8, 0xdd, 0x01, + 0xed, 0x2b, 0xf9, 0x81, 0x64, 0x16, 0x71, 0x3f, 0x0e, 0x08, 0x74, 0x9c, 0x1d, 0xf8, 0xbc, 0xb6, + 0x07, 0xda, 0x71, 0xf2, 0x88, 0x75, 0x45, 0xad, 0x8f, 0x3e, 0x97, 0xc2, 0x77, 0x5d, 0x6a, 0x9f, + 0x9d, 0xc2, 0x37, 0xdc, 0xc7, 0xbe, 0xac, 0xd5, 0x3e, 0x84, 0x61, 0x01, 0x48, 0xda, 0xba, 0xeb, + 0x5a, 0xb0, 0x1f, 0xc3, 0x86, 0xed, 0x92, 0xf7, 0x42, 0x0b, 0x78, 0xcc, 0xe5, 0x28, 0x64, 0x97, + 0x91, 0x84, 0xee, 0x7e, 0x1c, 0xfb, 0x56, 0xf8, 0x37, 0x13, 0xd4, 0xa5, 0x61, 0xf8, 0x57, 0x10, + 0x4a, 0x41, 0x89, 0x07, 0x9b, 0x2c, 0x3f, 0x76, 0x0b, 0x60, 0xca, 0xed, 0x10, 0x34, 0xd0, 0x0b, + 0x25, 0xb1, 0xbe, 0x5f, 0xfb, 0x57, 0xa3, 0x7f, 0x60, 0x33, 0xb3, 0xc1, 0x15, 0xeb, 0x83, 0xa7, + 0x33, 0x8f, 0xcf, 0x8e, 0x61, 0xeb, 0x29, 0xe6, 0x11, 0x71, 0x7f, 0x76, 0x75, 0xfc, 0x19, 0xf2, + 0x63, 0xd0, 0xa4, 0x30, 0x41, 0x03, 0x3a, 0x27, 0x3b, 0x0b, 0x48, 0xc6, 0x27, 0xad, 0x2d, 0x9f, + 0x73, 0x6a, 0x81, 0x7e, 0xa2, 0x21, 0x6c, 0x5e, 0xad, 0xc7, 0x64, 0x11, 0x9c, 0xf2, 0xbd, 0x53, + 0xd6, 0xa3, 0xa0, 0x83, 0x60, 0x0e, 0x09, 0x25, 0x70, 0xba, 0xff, 0x04, 0x3e, 0xdd, 0xcf, 0xc2, + 0x08, 0x34, 0x2d, 0xe8, 0x7a, 0xa0, 0x6f, 0xbf, 0x1f, 0xf8, 0xbc, 0x00, 0x42, 0x70, 0xee, 0xf7, + 0x99, 0x45, 0x5c, 0xe8, 0x29, 0x50, 0xae, 0x6f, 0x11, 0xf7, 0x9a, 0xb8, 0xdf, 0x8b, 0xe1, 0x71, + 0x5c, 0x51, 0x31, 0x64, 0x16, 0x85, 0x9f, 0x94, 0xd6, 0x6a, 0x7e, 0x07, 0x4e, 0x99, 0xc3, 0x8f, + 0xde, 0x59, 0x92, 0xba, 0x2c, 0xbc, 0xa0, 0x92, 0x9c, 0x5f, 0x5e, 0x76, 0x40, 0x3b, 0xb0, 0xd0, + 0x03, 0x91, 0x93, 0xf8, 0xf6, 0x5e, 0x13, 0xb4, 0x68, 0x1f, 0x1e, 0x1e, 0xc0, 0x26, 0x6e, 0x3c, + 0x3b, 0x3c, 0xbe, 0x63, 0x90, 0x1f, 0xe1, 0xae, 0xbe, 0xe7, 0xb9, 0xa0, 0x1d, 0x28, 0xe1, 0x58, + 0xb5, 0xe6, 0x41, 0x03, 0xb4, 0x20, 0x88, 0x46, 0xb5, 0xf1, 0xe5, 0x18, 0x74, 0xca, 0x4d, 0xdf, + 0x09, 0xc0, 0x1f, 0x0b, 0xb1, 0x8e, 0xfd, 0x1f, 0x1c, 0x3e, 0xab, 0x6f, 0x0f, 0x7b, 0xd7, 0xb6, + 0x07, 0x5c, 0xa6, 0x0f, 0xf6, 0xf7, 0xef, 0xea, 0xa0, 0x83, 0xda, 0x2e, 0x09, 0x7a, 0xd0, 0xad, + 0xdb, 0x99, 0x05, 0x3b, 0xe5, 0xc9, 0x25, 0x81, 0x0d, 0xda, 0xd1, 0x0b, 0xe2, 0x43, 0x77, 0x36, + 0xec, 0xf8, 0xfb, 0xa0, 0x51, 0x6f, 0x7c, 0x22, 0x92, 0x7e, 0xa7, 0x34, 0x80, 0x4d, 0x59, 0x5a, + 0xf0, 0xb3, 0x85, 0x6c, 0x37, 0xfc, 0x01, 0xda, 0x36, 0x84, 0x02, 0xb4, 0x5a, 0xf5, 0x86, 0xb0, + 0xb7, 0x8f, 0x6f, 0x85, 0xf1, 0x21, 0xe0, 0x49, 0xfe, 0xc3, 0x17, 0xa7, 0x03, 0xfc, 0x44, 0x11, + 0x0b, 0xc6, 0xdd, 0x1b, 0x60, 0xa7, 0x40, 0x54, 0x81, 0xdf, 0xfe, 0x87, 0x88, 0xdb, 0xb0, 0x8f, + 0x96, 0x5b, 0x34, 0x84, 0x9e, 0x25, 0x07, 0x5a, 0xb1, 0x86, 0x76, 0xe8, 0x42, 0xe7, 0xc3, 0x40, + 0xd3, 0x92, 0x03, 0x3f, 0x94, 0x1d, 0x62, 0x17, 0x21, 0xb8, 0xfe, 0xf1, 0xcb, 0x69, 0xe7, 0x8c, + 0x4b, 0xf0, 0xc9, 0x4c, 0x27, 0x17, 0xa0, 0x45, 0x9a, 0xda, 0x8c, 0x5c, 0x10, 0xe6, 0x8e, 0x50, + 0xd0, 0x19, 0x68, 0x24, 0x3a, 0x80, 0x1e, 0x73, 0x20, 0xd2, 0x03, 0x7e, 0xfb, 0x49, 0x8c, 0xba, + 0x50, 0xde, 0x37, 0x68, 0x82, 0x69, 0x00, 0xdc, 0x60, 0x27, 0x1a, 0xf6, 0xf4, 0xd3, 0x31, 0xf0, + 0xf4, 0x63, 0x71, 0x0e, 0xbb, 0x0c, 0x01, 0x21, 0xee, 0x1e, 0x6c, 0xe3, 0xe0, 0x5a, 0xf0, 0xa3, + 0x27, 0x17, 0xc4, 0x3a, 0x27, 0xf7, 0xc0, 0x73, 0x12, 0xc5, 0xa9, 0x2f, 0x7e, 0x10, 0x61, 0x83, + 0x3f, 0x68, 0x1d, 0xb8, 0x11, 0x68, 0x38, 0x4a, 0x03, 0x57, 0x84, 0xf0, 0x6b, 0xa3, 0xfc, 0x73, + 0x09, 0xda, 0x36, 0x00, 0x57, 0x4c, 0xac, 0x00, 0x41, 0xe9, 0x22, 0xb8, 0x7a, 0x4f, 0x0f, 0xcf, + 0x5d, 0x10, 0xcb, 0x85, 0x6e, 0x2a, 0x7a, 0x82, 0xd9, 0x7d, 0x5a, 0x00, 0xb2, 0xa3, 0x75, 0x01, + 0xdb, 0xfb, 0x9b, 0xe5, 0xbb, 0x42, 0xcf, 0xe9, 0xab, 0x35, 0x0e, 0x41, 0x67, 0xf4, 0x31, 0x0f, + 0x34, 0x63, 0xc6, 0x43, 0xd8, 0xf6, 0x82, 0x10, 0xd8, 0x14, 0x53, 0x5f, 0x82, 0x7e, 0xfd, 0x8e, + 0xc5, 0x82, 0x42, 0x14, 0x7a, 0x3e, 0xf9, 0x00, 0xba, 0x9c, 0x1f, 0x85, 0x7d, 0xa2, 0x26, 0xae, + 0xbf, 0xd6, 0x21, 0x72, 0x00, 0x1b, 0x38, 0xc0, 0xa6, 0xf6, 0x5c, 0x12, 0x38, 0x85, 0x20, 0x8a, + 0x8b, 0x91, 0xd2, 0x6a, 0xf9, 0x5e, 0xe0, 0x87, 0x4c, 0x52, 0xe8, 0xfa, 0x75, 0x70, 0x1f, 0x50, + 0x51, 0x80, 0x2c, 0x32, 0xe2, 0xb8, 0x84, 0xd3, 0x83, 0x6a, 0x1d, 0x74, 0xe2, 0xbd, 0xc5, 0x05, + 0xec, 0x9a, 0xce, 0x16, 0x78, 0x43, 0x77, 0x39, 0xa4, 0x62, 0x40, 0x89, 0x5d, 0x80, 0x3a, 0x6c, + 0xff, 0xd6, 0x0f, 0x1b, 0xb5, 0x22, 0xd4, 0xdc, 0xf8, 0x18, 0x7a, 0xc4, 0xb2, 0x81, 0x47, 0x7b, + 0x81, 0x1f, 0xcc, 0x22, 0xd2, 0xeb, 0xf9, 0x1c, 0xf4, 0x22, 0xd8, 0x36, 0xff, 0x07, 0xf6, 0x11, + 0x0e, 0x11, 0xd6, 0x1b, 0x75, 0xd8, 0x7e, 0x93, 0xe3, 0x50, 0x5a, 0x84, 0xa3, 0xae, 0xad, 0xbf, + 0x2f, 0x8e, 0x40, 0x17, 0x34, 0x8a, 0x42, 0xd0, 0x69, 0xeb, 0x03, 0x16, 0x04, 0xec, 0x6c, 0xd2, + 0xb5, 0xae, 0x08, 0x29, 0x7e, 0xc7, 0x52, 0x40, 0x0f, 0xa9, 0x7c, 0xf8, 0xfb, 0x28, 0xa8, 0x5f, + 0x80, 0x26, 0xcd, 0x7e, 0xfc, 0x20, 0xbc, 0x03, 0xba, 0x9a, 0x00, 0x0d, 0x2d, 0xbf, 0x00, 0x4d, + 0x3c, 0xfe, 0xb9, 0x82, 0xdd, 0x10, 0x6d, 0x00, 0x3c, 0x9a, 0x48, 0x42, 0x66, 0x41, 0x2f, 0xda, + 0x37, 0x1c, 0x77, 0x2a, 0x38, 0x0b, 0x8e, 0x6c, 0x5b, 0x50, 0xd8, 0xb5, 0x8f, 0x87, 0x8d, 0xfd, + 0x02, 0x58, 0xb9, 0x06, 0x7c, 0x2c, 0x37, 0x32, 0x74, 0x17, 0x91, 0x2b, 0x59, 0xe0, 0xd2, 0x3b, + 0x5f, 0x40, 0x4f, 0xcc, 0x02, 0x0e, 0x4a, 0xcf, 0x60, 0x37, 0xce, 0xbc, 0xab, 0xef, 0x0d, 0x22, + 0x2e, 0x3f, 0x09, 0x1f, 0x76, 0xd5, 0x3b, 0x01, 0x7d, 0x2b, 0xd9, 0x61, 0xed, 0xf4, 0xf8, 0x1c, + 0x7c, 0xd5, 0x96, 0x33, 0xd8, 0x55, 0x5b, 0xc6, 0xe1, 0x5e, 0x6e, 0x91, 0x00, 0x7e, 0x95, 0x84, + 0x23, 0xd8, 0x07, 0x54, 0x64, 0xdc, 0x9c, 0xf1, 0x3f, 0xc0, 0x13, 0x2e, 0xfb, 0x87, 0x87, 0xb0, + 0x6b, 0x31, 0x25, 0x3d, 0xdc, 0x3a, 0x83, 0xfb, 0x90, 0x59, 0xc4, 0xfd, 0x8b, 0x83, 0x66, 0x91, + 0x87, 0xde, 0x0f, 0x22, 0xe8, 0x67, 0x66, 0x5d, 0x03, 0x0f, 0x00, 0xff, 0x0b, 0xfc, 0xa8, 0x93, + 0xef, 0xc8, 0xd1, 0x4a, 0x9c, 0xfb, 0x7e, 0xd0, 0x03, 0x5e, 0xe6, 0x9f, 0x08, 0xd8, 0xd6, 0xc2, + 0x0b, 0x80, 0xf7, 0x10, 0xa3, 0xc4, 0x1a, 0x1c, 0x5f, 0x81, 0xf6, 0x9d, 0x06, 0x61, 0x08, 0x3d, + 0x3a, 0x77, 0x1a, 0xc1, 0x36, 0x0d, 0x4f, 0x53, 0xf2, 0x8b, 0x91, 0x28, 0x94, 0x30, 0x50, 0xd7, + 0x7d, 0xd8, 0x75, 0x14, 0x3c, 0x1a, 0x70, 0x52, 0x80, 0xb2, 0xe0, 0x05, 0x71, 0xa3, 0x12, 0x32, + 0xad, 0x79, 0xed, 0x7f, 0xa7, 0xfc, 0x03, 0xec, 0x73, 0x75, 0x91, 0x2b, 0x05, 0x81, 0xde, 0x36, + 0xe2, 0x04, 0x3a, 0xdd, 0x1f, 0xf8, 0xbc, 0x55, 0x87, 0x5d, 0x0f, 0x42, 0x58, 0x9c, 0xca, 0x0e, + 0xf0, 0x53, 0xa6, 0x6e, 0x83, 0x05, 0xd0, 0x9b, 0xf0, 0x13, 0xe9, 0x25, 0x2d, 0xa2, 0x41, 0x43, + 0x24, 0x11, 0x40, 0x37, 0x78, 0xe7, 0x9d, 0x02, 0xd4, 0x1a, 0x75, 0x09, 0xe8, 0xf2, 0x90, 0x6e, + 0x1d, 0xba, 0x38, 0x7b, 0xbe, 0x45, 0xbe, 0x52, 0x11, 0x32, 0x9f, 0x83, 0xce, 0x26, 0x65, 0x4e, + 0xe7, 0xc7, 0xf5, 0x7d, 0x00, 0x3a, 0x57, 0x88, 0xd6, 0xc0, 0xe7, 0x6c, 0x81, 0xde, 0x42, 0x3d, + 0xaf, 0xb1, 0x5f, 0x0d, 0x88, 0xf8, 0x38, 0x20, 0xf0, 0x53, 0x6c, 0x0a, 0x50, 0xc4, 0x8c, 0x05, + 0x54, 0xb8, 0x84, 0xd7, 0x0b, 0xd0, 0xf8, 0xfd, 0x3a, 0x8e, 0xb7, 0x00, 0x2f, 0x5d, 0x3b, 0x6e, + 0x9c, 0xfe, 0x17, 0xb7, 0x0a, 0xd2, 0x3a, 0x7d, 0x1c, 0xaf, 0x48, 0xbc, 0xd9, 0xcf, 0xcc, 0x82, + 0x9d, 0x92, 0xc6, 0x2f, 0x65, 0x54, 0x08, 0xad, 0x05, 0x3c, 0xb4, 0xda, 0xeb, 0x07, 0x81, 0xef, + 0x32, 0xeb, 0x9e, 0x58, 0x96, 0x1f, 0x71, 0xc9, 0x78, 0x1f, 0x3a, 0x73, 0x0b, 0x7c, 0x45, 0xac, + 0x9e, 0xfb, 0x95, 0x5a, 0x92, 0x5c, 0x49, 0x02, 0xbb, 0x1f, 0x00, 0x09, 0x7e, 0x90, 0xe0, 0xd8, + 0x97, 0xb5, 0x5a, 0x47, 0xf8, 0x0e, 0x03, 0x5e, 0xc0, 0xfa, 0xf1, 0x81, 0xe1, 0x02, 0x54, 0x76, + 0x77, 0x2a, 0xfd, 0x90, 0xc3, 0xce, 0x0a, 0xa9, 0x56, 0x0f, 0x60, 0xa7, 0xd1, 0xb6, 0xa0, 0x17, + 0x45, 0x07, 0x4d, 0x70, 0x7a, 0xf7, 0x82, 0x71, 0x0a, 0xbb, 0xcf, 0x72, 0xad, 0x7e, 0x11, 0x14, + 0xa1, 0x47, 0x83, 0xc5, 0x61, 0xf3, 0x83, 0x05, 0x28, 0x8d, 0x69, 0xb3, 0x3e, 0x93, 0xc4, 0xfd, + 0x5b, 0x90, 0x20, 0xa0, 0xa2, 0x40, 0x87, 0xcf, 0x81, 0x97, 0xae, 0x62, 0xdc, 0x61, 0x9c, 0xf5, + 0x08, 0xf0, 0x13, 0xcf, 0x4f, 0xcb, 0x73, 0x17, 0x60, 0x63, 0x05, 0x36, 0x8f, 0xa3, 0xad, 0xe7, + 0xbe, 0x1f, 0xc0, 0x6e, 0x9a, 0xeb, 0x7c, 0x75, 0x18, 0x74, 0x42, 0x7a, 0x60, 0x0f, 0x6a, 0x07, + 0xb0, 0x03, 0xc7, 0x43, 0xe0, 0x27, 0x17, 0x24, 0xf0, 0x14, 0xed, 0x29, 0xab, 0x73, 0x5a, 0x88, + 0xba, 0x99, 0x8e, 0x70, 0x6a, 0xad, 0x0b, 0x47, 0xc0, 0xef, 0x1f, 0x15, 0x97, 0xfb, 0x0d, 0x8b, + 0x50, 0x45, 0x3d, 0x10, 0xbe, 0xa4, 0x3e, 0x3f, 0xa8, 0x5e, 0xf4, 0x98, 0x2c, 0x44, 0xae, 0xd1, + 0xe9, 0x3f, 0xa0, 0xd7, 0x23, 0x18, 0x9f, 0xa0, 0x74, 0x19, 0xff, 0x5e, 0x00, 0x39, 0x99, 0x78, + 0x59, 0x45, 0xa8, 0x22, 0x0d, 0xbf, 0xa4, 0x9d, 0x1d, 0x36, 0x60, 0x2f, 0x80, 0xf0, 0x80, 0x37, + 0x2d, 0xb3, 0x61, 0x07, 0x03, 0x06, 0x8d, 0x7a, 0xa3, 0x23, 0xfc, 0x3b, 0xd0, 0x6e, 0x88, 0x08, + 0x04, 0xfc, 0x32, 0x2c, 0xa0, 0x71, 0x05, 0xb5, 0x7c, 0xe0, 0x44, 0xe7, 0x3c, 0xd4, 0x06, 0x9d, + 0x78, 0x44, 0xc2, 0x7b, 0x0e, 0xfb, 0x18, 0x2b, 0xeb, 0x93, 0x1e, 0x1b, 0xbb, 0x7e, 0xc0, 0x37, + 0x95, 0x17, 0xb8, 0xe1, 0x75, 0x04, 0x9d, 0x85, 0x62, 0xc0, 0x49, 0x83, 0xa4, 0x8c, 0x5d, 0x83, + 0xd8, 0xe7, 0xa4, 0x0f, 0x1c, 0xa4, 0x1e, 0x85, 0xec, 0x8c, 0x17, 0x20, 0x03, 0x2c, 0x21, 0x67, + 0xc1, 0xd7, 0x02, 0x21, 0x43, 0x66, 0xb1, 0xcb, 0xf1, 0x33, 0xc1, 0x3f, 0x18, 0x43, 0x60, 0x9f, + 0x4e, 0x9a, 0xd4, 0xab, 0xac, 0x17, 0x20, 0x4a, 0xd6, 0xf1, 0x7f, 0x50, 0xe1, 0x32, 0x0e, 0x9a, + 0x2d, 0xf0, 0x98, 0x7f, 0x07, 0xbb, 0x0a, 0x2d, 0xe3, 0x92, 0x0a, 0x97, 0x92, 0x21, 0x85, 0x9e, + 0xb5, 0x36, 0x39, 0x6b, 0xdc, 0xa9, 0x83, 0x3e, 0x29, 0xc3, 0x1d, 0x12, 0xc2, 0x3f, 0xba, 0x07, + 0xbe, 0x74, 0x3c, 0xf0, 0x3a, 0x64, 0x01, 0xf0, 0x64, 0x41, 0x4b, 0x9e, 0x78, 0x11, 0xec, 0xd0, + 0x36, 0xec, 0x40, 0xde, 0xdd, 0x41, 0xeb, 0x9c, 0x04, 0x61, 0x31, 0xa8, 0xfc, 0x8f, 0x9e, 0x2c, + 0x48, 0x09, 0x0a, 0xc7, 0xb6, 0x59, 0x21, 0x5a, 0xbb, 0x80, 0x76, 0x9a, 0xfe, 0x75, 0x81, 0x0b, + 0x77, 0xbd, 0x06, 0x3a, 0xac, 0x32, 0x82, 0x0d, 0x7d, 0xf0, 0x55, 0x36, 0x69, 0x3f, 0x72, 0x89, + 0x80, 0x9e, 0x71, 0x93, 0x14, 0x63, 0x01, 0xad, 0x54, 0x59, 0x4f, 0xd0, 0x02, 0x64, 0xd3, 0x11, + 0xe9, 0x5d, 0x45, 0xbd, 0x42, 0xf4, 0x51, 0x08, 0xfc, 0x10, 0x78, 0xc2, 0x6c, 0xae, 0x2a, 0x51, + 0x99, 0xae, 0xec, 0x6e, 0x19, 0x78, 0x51, 0xd9, 0x5e, 0xd0, 0x8c, 0x6e, 0xc8, 0x54, 0x3f, 0xc1, + 0xfc, 0x7d, 0x06, 0xc2, 0x0f, 0x3a, 0x3e, 0xe3, 0xf2, 0xda, 0x8f, 0xff, 0xb9, 0xa2, 0x82, 0x65, + 0x29, 0x81, 0x62, 0xfe, 0xce, 0x3d, 0xdf, 0xa6, 0x1e, 0x94, 0x57, 0x9c, 0xb9, 0xb4, 0xcc, 0x0a, + 0xde, 0xab, 0x73, 0xc5, 0xfa, 0xd9, 0xd2, 0x69, 0xcc, 0xdf, 0xec, 0x34, 0x0d, 0x33, 0xc6, 0x3f, + 0x10, 0xee, 0x78, 0x9c, 0x9f, 0x78, 0x6d, 0x67, 0xa9, 0x00, 0x6f, 0xfe, 0x6e, 0x7d, 0xc9, 0x2f, + 0xed, 0x08, 0xc2, 0x9d, 0x4e, 0x1a, 0x12, 0xc5, 0xd5, 0xe5, 0xbe, 0x64, 0x3a, 0x9c, 0x6c, 0xfe, + 0xa6, 0xc3, 0x70, 0x1f, 0x90, 0xb0, 0xf5, 0xf7, 0xab, 0x0d, 0x22, 0xeb, 0x5e, 0x0f, 0xc2, 0xcd, + 0x3a, 0xd3, 0xbc, 0xec, 0x8b, 0xce, 0x19, 0x84, 0x1b, 0x96, 0x19, 0xd3, 0x0b, 0xcc, 0xdf, 0xa9, + 0xdb, 0x60, 0xc1, 0xdd, 0x10, 0x88, 0x83, 0x33, 0xee, 0xcb, 0xf4, 0xe9, 0xf8, 0xe4, 0xe8, 0xf3, + 0x11, 0x08, 0xf3, 0x1b, 0xd0, 0x7e, 0x8e, 0xaa, 0x2a, 0x2b, 0xd0, 0x61, 0xec, 0xee, 0xda, 0x3f, + 0xf5, 0x23, 0x01, 0xe1, 0x66, 0x2d, 0x16, 0x5a, 0xfe, 0xd9, 0xd5, 0x39, 0xb4, 0xdd, 0x7b, 0x79, + 0x05, 0xc4, 0xd3, 0x95, 0xd4, 0xe7, 0xb5, 0x8c, 0x27, 0x16, 0x56, 0xb0, 0x77, 0xdd, 0x2c, 0x07, + 0x3e, 0x57, 0xb0, 0x0d, 0x1a, 0x7b, 0x10, 0x6e, 0x33, 0x69, 0xfb, 0x70, 0xc9, 0x41, 0x78, 0x8c, + 0x71, 0xf8, 0xf3, 0xeb, 0x35, 0x08, 0xe7, 0x36, 0xc9, 0x87, 0xa9, 0x81, 0xd0, 0xb1, 0x71, 0x39, + 0x97, 0xbf, 0xe5, 0x04, 0xf4, 0x7e, 0x21, 0x36, 0xf3, 0x41, 0x6c, 0x5f, 0x3b, 0x74, 0xeb, 0x20, + 0xf4, 0x2c, 0x0c, 0xad, 0x15, 0x04, 0x01, 0x14, 0x7e, 0xe6, 0x23, 0xcf, 0xd2, 0xce, 0xc2, 0xfc, + 0xbd, 0x8a, 0x91, 0x2c, 0x5d, 0x1c, 0x7d, 0x04, 0x21, 0x4e, 0xd2, 0xfb, 0x6a, 0xb1, 0x13, 0x6e, + 0x77, 0x40, 0xf8, 0x02, 0x8f, 0xf3, 0x59, 0x41, 0x6c, 0x5c, 0x9f, 0xd7, 0xf6, 0x40, 0x38, 0x06, + 0xe3, 0x0a, 0x8b, 0x1f, 0x73, 0xd5, 0x57, 0x5c, 0x95, 0x21, 0x8b, 0xeb, 0x92, 0x7d, 0x08, 0x43, + 0x40, 0x24, 0x58, 0x3d, 0x53, 0xd8, 0x7e, 0x15, 0xb7, 0x6b, 0xc3, 0x70, 0x15, 0x7b, 0xa1, 0x05, + 0x84, 0x5b, 0x3e, 0x0a, 0xd9, 0x65, 0x24, 0xa1, 0x98, 0xdd, 0xf9, 0xd6, 0x39, 0x93, 0x6a, 0x2f, + 0x30, 0xc8, 0xc5, 0x63, 0x17, 0x90, 0x69, 0xb3, 0x43, 0x10, 0xc0, 0x21, 0x94, 0xc4, 0xfa, 0x7e, + 0xed, 0x5f, 0xc9, 0x4c, 0xbd, 0xdd, 0x56, 0xc1, 0x7c, 0x05, 0x57, 0xac, 0x0f, 0x86, 0x46, 0x3a, + 0x3e, 0x3b, 0x86, 0xa1, 0x17, 0x98, 0x47, 0xc4, 0x7d, 0xb6, 0x2e, 0xee, 0xe6, 0x6f, 0x97, 0x26, + 0xa7, 0x1b, 0x1b, 0x50, 0x38, 0xaf, 0x59, 0x60, 0x24, 0x4e, 0xa0, 0xb1, 0x7c, 0xce, 0xa9, 0x05, + 0xe2, 0xce, 0x87, 0x30, 0xf8, 0x8f, 0x1e, 0x93, 0x90, 0x9c, 0xc5, 0xbd, 0x53, 0xd6, 0xa3, 0x20, + 0xc8, 0x7b, 0x87, 0x84, 0x12, 0x08, 0x0d, 0x7a, 0x02, 0x87, 0x06, 0x65, 0x61, 0x04, 0x82, 0xa6, + 0x71, 0x3d, 0x10, 0xb7, 0xd9, 0xcf, 0x94, 0x23, 0xba, 0xb2, 0x4d, 0x7a, 0xee, 0xf7, 0x99, 0x45, + 0x5c, 0x28, 0x29, 0x08, 0xae, 0x6f, 0x11, 0xf7, 0x9a, 0xb8, 0xdf, 0x61, 0x59, 0xda, 0x2b, 0x2a, + 0x86, 0xcc, 0xa2, 0x70, 0x92, 0x3c, 0x5a, 0xcd, 0xef, 0x40, 0x28, 0x46, 0x38, 0xd1, 0x05, 0x4b, + 0x52, 0x97, 0x85, 0x17, 0x54, 0x92, 0xf3, 0xcb, 0xcb, 0x0e, 0x08, 0x87, 0x0b, 0x4a, 0x40, 0x64, + 0x12, 0x1f, 0xdb, 0x6b, 0x82, 0x10, 0xb1, 0xc3, 0xc3, 0x03, 0x18, 0x80, 0xdc, 0xb3, 0xc3, 0xe3, + 0x3b, 0x06, 0xe1, 0x56, 0xef, 0xea, 0x7b, 0x9e, 0x0b, 0xc2, 0x41, 0x10, 0x8e, 0x55, 0x6b, 0x1e, + 0x34, 0x40, 0x6c, 0x54, 0xd1, 0xa8, 0x36, 0xbe, 0x1c, 0x83, 0x08, 0x91, 0xf7, 0x9d, 0x00, 0x4c, + 0xfa, 0xaf, 0x95, 0xe7, 0x8c, 0xe6, 0x4a, 0xee, 0xf9, 0xda, 0xf6, 0x80, 0xc8, 0xd6, 0xc1, 0xfe, + 0x7e, 0xa6, 0x4a, 0x15, 0x2b, 0xf0, 0x65, 0x49, 0xd0, 0x83, 0x62, 0x05, 0xce, 0x2c, 0x18, 0x29, + 0x07, 0x2e, 0x09, 0x6c, 0x10, 0x0e, 0xcb, 0xb8, 0x4d, 0xac, 0x0d, 0x23, 0x4e, 0x37, 0x68, 0xd4, + 0x1b, 0x9f, 0x88, 0xa4, 0xdf, 0x29, 0x0d, 0x60, 0x50, 0x45, 0x16, 0x9c, 0x28, 0xbe, 0xed, 0x86, + 0x3f, 0x40, 0xe8, 0xd6, 0x50, 0x80, 0x50, 0x57, 0xde, 0x10, 0xc6, 0xb2, 0x3f, 0xed, 0x72, 0x91, + 0xb5, 0x51, 0xd8, 0x2a, 0x94, 0x57, 0xd6, 0x36, 0x42, 0xab, 0x08, 0x7d, 0x56, 0x81, 0xdc, 0x66, + 0xd6, 0x92, 0xe2, 0x2b, 0x50, 0xae, 0x34, 0x84, 0x92, 0x5d, 0x02, 0x42, 0x61, 0x85, 0x99, 0xca, + 0x72, 0xae, 0x86, 0xb7, 0x00, 0x41, 0x07, 0x0d, 0xfc, 0x50, 0x66, 0xaa, 0x46, 0xbe, 0xba, 0x20, + 0xdc, 0xc7, 0x2f, 0xa7, 0x9d, 0x33, 0x2e, 0xc1, 0x24, 0x13, 0x9c, 0x5c, 0x80, 0x10, 0x2d, 0x6a, + 0x33, 0x72, 0x41, 0x98, 0x9b, 0xb5, 0x6b, 0xf8, 0x0a, 0xf6, 0x2e, 0x14, 0xce, 0x95, 0x48, 0x0f, + 0xc8, 0x6d, 0x26, 0x31, 0x2e, 0x90, 0x5e, 0x21, 0x08, 0x82, 0x60, 0x00, 0xc4, 0x80, 0x25, 0x9a, + 0xeb, 0xf4, 0xd3, 0x31, 0x90, 0x74, 0x38, 0x71, 0x0e, 0xe3, 0x98, 0x22, 0x21, 0xee, 0x1e, 0x0c, + 0xe5, 0xea, 0x5a, 0x70, 0x58, 0xe2, 0xec, 0x4d, 0xac, 0x56, 0x11, 0xeb, 0xce, 0xdc, 0xd7, 0x74, + 0x45, 0x07, 0xbd, 0x02, 0x37, 0x02, 0x01, 0x63, 0x68, 0xe0, 0x8a, 0x10, 0xce, 0x59, 0xe5, 0x7f, + 0x2e, 0x41, 0xe8, 0x56, 0x20, 0x8a, 0x80, 0x01, 0x0a, 0x6a, 0x41, 0x72, 0x59, 0x9e, 0x1e, 0x3e, + 0xc8, 0xde, 0x04, 0x6d, 0x05, 0xf9, 0xa5, 0x82, 0xd9, 0x7d, 0x0a, 0x08, 0xdc, 0xb6, 0x2e, 0x60, + 0x78, 0x31, 0x4e, 0x8e, 0x56, 0x9e, 0xab, 0xc9, 0x79, 0xa9, 0x35, 0x0e, 0x41, 0x64, 0xbc, 0x30, + 0x0f, 0x04, 0xb3, 0xc1, 0x43, 0x18, 0xfa, 0x96, 0x10, 0x18, 0x14, 0x41, 0x5f, 0x82, 0x78, 0x9d, + 0x8e, 0xc5, 0x02, 0x50, 0x05, 0xef, 0x4e, 0x3e, 0x80, 0x28, 0x07, 0x43, 0x61, 0x64, 0x42, 0xc7, + 0x75, 0x40, 0x3a, 0x44, 0x0e, 0x60, 0x38, 0xae, 0x30, 0xa8, 0x16, 0x97, 0x04, 0x0e, 0x28, 0xc2, + 0x0d, 0x56, 0x4a, 0x96, 0xe5, 0x7b, 0x81, 0x1f, 0xb2, 0xac, 0x7d, 0x6f, 0x57, 0xc0, 0xbc, 0xdc, + 0x07, 0x54, 0x00, 0xca, 0xca, 0x98, 0xd6, 0xef, 0x07, 0x91, 0xa8, 0x69, 0x71, 0x01, 0xa3, 0xb6, + 0x9d, 0x05, 0xc6, 0x20, 0x5c, 0x0e, 0xa9, 0x18, 0x50, 0x62, 0x03, 0xaa, 0x07, 0xf2, 0x6f, 0xfd, + 0xb0, 0x51, 0x83, 0x74, 0x66, 0xf6, 0x63, 0xe8, 0x11, 0xcb, 0x06, 0x12, 0x45, 0x02, 0x92, 0x08, + 0x4f, 0xa4, 0xd7, 0xf3, 0x39, 0x88, 0x97, 0x6a, 0xdb, 0xfc, 0x1f, 0x18, 0xa9, 0xba, 0x22, 0xac, + 0x37, 0xea, 0x30, 0xfc, 0x02, 0xc7, 0xa1, 0x14, 0xd2, 0x91, 0x9d, 0xd6, 0xdf, 0x17, 0x47, 0x20, + 0x0e, 0xfa, 0x47, 0x21, 0x88, 0xf4, 0xc7, 0x01, 0x0b, 0x02, 0x96, 0xa3, 0x35, 0xc6, 0xea, 0x52, + 0x60, 0x8e, 0xa5, 0x80, 0x42, 0x1d, 0x7f, 0xf8, 0xfb, 0x28, 0xa8, 0x5f, 0x80, 0x20, 0x37, 0xc6, + 0x3d, 0xe9, 0x41, 0x78, 0x05, 0xa1, 0xe5, 0x03, 0x2a, 0xca, 0xfb, 0xcf, 0x15, 0x8c, 0x02, 0xfe, + 0x03, 0x20, 0x51, 0x0d, 0x12, 0x32, 0x0b, 0x4a, 0xd1, 0x97, 0xe1, 0xb8, 0xb2, 0xe9, 0x59, 0x70, + 0x64, 0xdb, 0x82, 0xc2, 0xa8, 0x0d, 0x37, 0x6c, 0xec, 0x03, 0xb2, 0x06, 0x0d, 0x38, 0xd8, 0x60, + 0x64, 0x10, 0x2e, 0x22, 0x57, 0xb2, 0xc0, 0xa5, 0x77, 0xbe, 0x80, 0x92, 0x00, 0x01, 0x04, 0xcc, + 0x9c, 0xc1, 0x68, 0x94, 0x72, 0x57, 0xdf, 0x1b, 0x44, 0x5c, 0x66, 0x6c, 0x83, 0xbf, 0x92, 0x42, + 0xb2, 0x30, 0xb6, 0x80, 0x1d, 0xd6, 0x4e, 0x8f, 0xcf, 0xc1, 0x9c, 0x96, 0x3e, 0x83, 0x71, 0x5a, + 0x7a, 0x1c, 0x46, 0xe2, 0x16, 0x09, 0xe0, 0x9c, 0x96, 0x3c, 0x82, 0x91, 0x70, 0x2c, 0xe3, 0xe6, + 0x1d, 0xff, 0x01, 0x92, 0x60, 0xd4, 0x3f, 0x3c, 0x84, 0x51, 0x8b, 0x20, 0xe9, 0x2d, 0xd0, 0x19, + 0xdc, 0x87, 0xcc, 0x22, 0xee, 0x5f, 0x1c, 0x04, 0x1b, 0x37, 0xf4, 0x7e, 0x10, 0x41, 0x3f, 0x33, + 0xeb, 0x1a, 0x48, 0x60, 0xe9, 0x5f, 0x20, 0x29, 0xe7, 0xbe, 0x23, 0x47, 0x6f, 0xf6, 0xdc, 0xf7, + 0x83, 0x1e, 0x90, 0x72, 0xa1, 0x44, 0xc0, 0xd0, 0xb6, 0x5e, 0x00, 0xa4, 0x16, 0x3e, 0x25, 0xd6, + 0xe0, 0xf8, 0x0a, 0x84, 0x6f, 0x30, 0x08, 0x43, 0x28, 0xd1, 0x83, 0xd3, 0x08, 0x86, 0x6a, 0x7d, + 0x9a, 0xc2, 0x09, 0x2b, 0x80, 0x9f, 0x30, 0x08, 0xd7, 0x7d, 0x18, 0xe7, 0x29, 0x3d, 0x1a, 0x70, + 0x02, 0xa8, 0xac, 0x21, 0x30, 0x37, 0x21, 0x21, 0x3d, 0x9a, 0x71, 0xf3, 0xca, 0x0f, 0x30, 0xce, + 0x25, 0x44, 0xae, 0x14, 0x04, 0x4a, 0xd9, 0xd8, 0x13, 0x28, 0x34, 0x68, 0xe0, 0xf3, 0x56, 0x1d, + 0xc6, 0xf9, 0x4f, 0x61, 0x71, 0x2a, 0x3b, 0x40, 0x4e, 0xd1, 0xb8, 0x0d, 0x16, 0x40, 0x69, 0xfa, + 0x47, 0xa4, 0x07, 0xa8, 0x5f, 0x74, 0x28, 0x02, 0x28, 0x86, 0xe1, 0xbc, 0x03, 0xa8, 0x36, 0x94, + 0x4b, 0x40, 0x94, 0x05, 0x72, 0xeb, 0x50, 0xc4, 0xca, 0xf3, 0x2d, 0xf2, 0x95, 0x8a, 0x90, 0xf9, + 0x1c, 0x44, 0x96, 0x14, 0x73, 0x3a, 0x3f, 0xae, 0xef, 0x03, 0x10, 0x31, 0x7c, 0x5a, 0x03, 0x93, + 0x1b, 0x01, 0x62, 0xe9, 0x7b, 0x5e, 0x63, 0xbf, 0x1a, 0x10, 0xf1, 0x71, 0x00, 0xa8, 0x4f, 0x2d, + 0xa0, 0x22, 0x1b, 0x2c, 0xa0, 0xc2, 0x25, 0xbc, 0x0e, 0xa8, 0x31, 0x1d, 0xa8, 0xa6, 0xd0, 0xe3, + 0x86, 0x6f, 0x7f, 0x71, 0x0b, 0x58, 0xcb, 0xb7, 0x31, 0x5f, 0x9b, 0x78, 0x5f, 0x9f, 0x99, 0x05, + 0x23, 0xc5, 0x83, 0x5f, 0xca, 0x08, 0x94, 0x96, 0x00, 0x12, 0xca, 0xe9, 0xf5, 0x83, 0xc0, 0x77, + 0x99, 0x75, 0x4f, 0x2c, 0xcb, 0x8f, 0xb8, 0x64, 0xbc, 0x0f, 0x85, 0x19, 0x03, 0xf2, 0x86, 0xad, + 0x9e, 0xfb, 0x95, 0x5a, 0x92, 0x5c, 0x49, 0x22, 0x80, 0xb5, 0x84, 0xec, 0x08, 0xdf, 0x61, 0x40, + 0x0a, 0xf6, 0x3d, 0x3e, 0xe0, 0x04, 0xa8, 0xd2, 0xa4, 0x53, 0xe9, 0x87, 0x1c, 0x46, 0xd4, 0xb7, + 0x5a, 0x3d, 0x80, 0x91, 0x06, 0xd6, 0x82, 0x52, 0xbc, 0x11, 0x04, 0xb1, 0xe4, 0xdd, 0x0b, 0xc6, + 0x29, 0x8c, 0xbe, 0x54, 0xb5, 0xfa, 0x45, 0x00, 0xa9, 0x76, 0xab, 0xc5, 0x61, 0xf0, 0x35, 0x80, + 0x4a, 0x1f, 0xd9, 0xac, 0xcf, 0x24, 0x71, 0xff, 0x16, 0x24, 0x08, 0xa8, 0x00, 0x78, 0xc8, 0x0d, + 0x48, 0x89, 0x06, 0xc6, 0x1d, 0xc6, 0x59, 0x8f, 0x00, 0x39, 0x89, 0xf5, 0xb4, 0xec, 0x20, 0xa4, + 0x2e, 0xe8, 0x36, 0x8f, 0xa3, 0x3b, 0xe7, 0xbe, 0x1f, 0xc0, 0x68, 0x56, 0xe4, 0x7c, 0x75, 0x18, + 0x14, 0x62, 0x6f, 0x60, 0x0f, 0x6a, 0x07, 0x30, 0x02, 0x52, 0x43, 0x20, 0x19, 0xad, 0x12, 0x48, + 0x6a, 0xe0, 0x14, 0xad, 0x9f, 0x82, 0xaa, 0x8b, 0xe4, 0x08, 0xa7, 0xd6, 0xba, 0x70, 0x04, 0x9c, + 0x7a, 0xea, 0x71, 0xf9, 0xb4, 0x10, 0x52, 0xb5, 0xc7, 0x40, 0xf8, 0x92, 0xfa, 0xfc, 0xa0, 0x0a, + 0xa6, 0xe9, 0xf1, 0x24, 0x07, 0xe0, 0xf4, 0x1f, 0x10, 0xef, 0x37, 0x18, 0x9f, 0x28, 0x71, 0x19, + 0xff, 0x0e, 0x68, 0x1f, 0x4f, 0xbc, 0x08, 0x48, 0xd5, 0xf4, 0xe0, 0x94, 0x50, 0xb1, 0xc3, 0x06, + 0x8c, 0x17, 0x2a, 0x3c, 0x20, 0xc5, 0xf7, 0x6d, 0x18, 0x24, 0xe9, 0xa0, 0x51, 0x6f, 0x74, 0x84, + 0x7f, 0x07, 0xc2, 0xfc, 0x8a, 0x40, 0xc0, 0x39, 0x16, 0x0d, 0xc2, 0xaf, 0xa5, 0x96, 0x0f, 0x84, + 0x60, 0x9a, 0x87, 0x62, 0x20, 0x12, 0x02, 0x48, 0x78, 0xcf, 0x61, 0x1c, 0xd3, 0x61, 0x7d, 0xd2, + 0x63, 0x63, 0x17, 0x06, 0xc8, 0x66, 0xf0, 0x02, 0x37, 0xbc, 0x8e, 0xa0, 0xb0, 0x08, 0x0c, 0x08, + 0x78, 0x4c, 0xca, 0xa6, 0x34, 0x88, 0x7d, 0x4e, 0xfa, 0x40, 0xc0, 0xcd, 0x51, 0xc8, 0xce, 0x38, + 0xa0, 0x4c, 0x8b, 0x84, 0xfc, 0x02, 0x73, 0x96, 0x97, 0x0c, 0x99, 0xc5, 0x2e, 0xc7, 0xf7, 0x0e, + 0x27, 0xd1, 0x99, 0xc0, 0xc8, 0x1e, 0x9f, 0xd4, 0x29, 0xaa, 0x03, 0x62, 0xf7, 0x3b, 0xfe, 0x0f, + 0x2a, 0x5c, 0xc6, 0x41, 0xa0, 0x46, 0x8f, 0xf9, 0x40, 0x1a, 0xf6, 0x32, 0x2e, 0xa9, 0x70, 0x29, + 0x19, 0x52, 0x28, 0x59, 0x20, 0x93, 0xb3, 0x51, 0x9d, 0x3a, 0x88, 0xcc, 0x67, 0xee, 0x90, 0x10, + 0xce, 0xd1, 0x07, 0x30, 0xa5, 0x2c, 0x81, 0xd4, 0xcf, 0x08, 0x80, 0x24, 0xd3, 0x58, 0xf2, 0xc4, + 0x8b, 0x60, 0x84, 0xc6, 0x60, 0x04, 0x1a, 0xee, 0x0e, 0x5a, 0xe7, 0x24, 0x08, 0x61, 0x51, 0x9c, + 0x1f, 0x3d, 0x09, 0xec, 0xc8, 0xa9, 0x63, 0xdb, 0x0c, 0x54, 0xe9, 0x65, 0x10, 0x4e, 0xc1, 0xbf, + 0x2e, 0x10, 0x21, 0xab, 0xd7, 0x40, 0xd0, 0xc7, 0x23, 0xb7, 0xb5, 0x0f, 0xa6, 0x8a, 0x12, 0xed, + 0x47, 0x2e, 0x11, 0x50, 0x22, 0xe4, 0xc9, 0xe1, 0x68, 0x10, 0xca, 0x8a, 0xf5, 0x04, 0x05, 0x94, + 0x85, 0x42, 0xa4, 0x77, 0x15, 0xf5, 0x40, 0xd5, 0x5d, 0x0d, 0xfc, 0x10, 0x48, 0xc2, 0x57, 0xa6, + 0x2a, 0x09, 0xa9, 0xae, 0xe8, 0x6e, 0xa9, 0x1d, 0xf7, 0xf5, 0x6f, 0xfd, 0xfe, 0x1b, 0xaf, 0xbc, + 0xe6, 0xf2, 0x11, 0xe7, 0xbe, 0x24, 0x92, 0xf9, 0xbc, 0xdc, 0x5e, 0xe2, 0x05, 0x97, 0x43, 0x6b, + 0x40, 0x3d, 0x12, 0x10, 0x39, 0x18, 0xbd, 0xd2, 0x77, 0x7e, 0x40, 0xb9, 0xe5, 0x73, 0x87, 0xf5, + 0x2b, 0x6c, 0xb2, 0x65, 0xc3, 0x77, 0xcf, 0x7d, 0x7c, 0x37, 0xfe, 0xda, 0xef, 0xdf, 0xff, 0xcb, + 0xcf, 0xf2, 0x9b, 0xe7, 0x98, 0x56, 0x81, 0x7f, 0xf5, 0x09, 0x16, 0xea, 0xc6, 0x97, 0x5f, 0x79, + 0x3b, 0xff, 0xc7, 0xb8, 0x5d, 0x6e, 0x97, 0x6a, 0xaf, 0x7c, 0xed, 0xe3, 0xf8, 0xd1, 0xda, 0xa5, + 0xea, 0x2b, 0x5f, 0xec, 0x08, 0xea, 0xb0, 0xbb, 0xe5, 0xde, 0xf4, 0x94, 0x4b, 0xb4, 0x2a, 0x54, + 0x0e, 0xca, 0xaf, 0x8b, 0x4b, 0xf9, 0xca, 0x8f, 0x84, 0x45, 0x97, 0x1a, 0x7d, 0xfc, 0x74, 0xf4, + 0xfe, 0x87, 0x2f, 0xec, 0x31, 0xc6, 0x8f, 0x6f, 0x6c, 0x39, 0x99, 0x2c, 0xff, 0x87, 0x84, 0x47, + 0xa2, 0x1f, 0x79, 0x94, 0x8f, 0xde, 0xb9, 0x14, 0x11, 0x5d, 0xf2, 0xc2, 0xb9, 0xab, 0x26, 0xcf, + 0xa5, 0x79, 0x7f, 0x1f, 0x33, 0xb1, 0xdc, 0xeb, 0xb6, 0x26, 0x6b, 0xb8, 0xe4, 0xcb, 0x9b, 0x15, + 0x4a, 0x8f, 0xaf, 0x5b, 0xf2, 0x05, 0x2c, 0xb7, 0xa1, 0x52, 0x6f, 0xac, 0x2c, 0x1b, 0x2c, 0xfb, + 0x46, 0xcb, 0xba, 0xe1, 0x72, 0x6f, 0xbc, 0xdc, 0x1b, 0x30, 0xd7, 0x46, 0x4c, 0xa9, 0xb8, 0x97, + 0x5c, 0xb1, 0x65, 0x37, 0xe8, 0xf4, 0x02, 0xd2, 0xef, 0x0b, 0xda, 0x27, 0x92, 0x56, 0x98, 0x9d, + 0xfe, 0xd5, 0x4f, 0xdd, 0x8c, 0xf9, 0x51, 0x52, 0xbe, 0xbc, 0x64, 0x13, 0x57, 0x53, 0x5e, 0x96, + 0x76, 0x33, 0xe7, 0xd9, 0xd4, 0xcf, 0x6d, 0x6e, 0x97, 0xf4, 0xcb, 0xe9, 0x9d, 0x8e, 0xac, 0x9b, + 0x5c, 0xd9, 0x66, 0x57, 0xb6, 0xe9, 0x5f, 0xda, 0xfc, 0x2e, 0xd1, 0xee, 0x15, 0xa5, 0x74, 0xf6, + 0xca, 0x71, 0x52, 0x73, 0xae, 0xf5, 0x76, 0x29, 0x71, 0x04, 0x75, 0xb2, 0x2c, 0xf8, 0x44, 0x47, + 0xef, 0x67, 0xb8, 0xb6, 0x33, 0x75, 0x8c, 0xac, 0x0a, 0x73, 0xda, 0x73, 0x8e, 0xd0, 0x93, 0x5f, + 0x24, 0x3f, 0xf3, 0xd1, 0xed, 0x6e, 0xe9, 0x79, 0xf1, 0x29, 0x5e, 0x7a, 0x99, 0x44, 0xd2, 0xaf, + 0x70, 0xda, 0xf7, 0x25, 0x23, 0x92, 0xe6, 0x50, 0x2b, 0x8f, 0xc7, 0x49, 0xb9, 0xec, 0xc7, 0xd4, + 0x21, 0x91, 0x2b, 0xc7, 0xc7, 0xe0, 0x22, 0xba, 0x21, 0x7a, 0x29, 0x9d, 0xd1, 0xdd, 0x1c, 0xbd, + 0x44, 0x33, 0x35, 0x52, 0x5c, 0x73, 0xbd, 0xd4, 0xf3, 0x7d, 0x97, 0x12, 0x9e, 0x47, 0x2f, 0xd5, + 0xd6, 0x40, 0x5f, 0xd8, 0x51, 0xe0, 0xd2, 0xbb, 0x8a, 0xe7, 0xdb, 0x39, 0x94, 0xc5, 0xfc, 0x20, + 0x28, 0xea, 0x28, 0xea, 0x05, 0x13, 0x75, 0xca, 0x23, 0x8f, 0x8a, 0x31, 0xb7, 0x92, 0x43, 0xdc, + 0x9b, 0x19, 0xae, 0x3d, 0xe1, 0x91, 0x37, 0xba, 0xf9, 0x87, 0x35, 0x50, 0x15, 0x94, 0x93, 0x9e, + 0x4b, 0x2b, 0x8e, 0xeb, 0xff, 0xa8, 0x24, 0x55, 0x5c, 0xb2, 0xab, 0x8c, 0xe7, 0x06, 0xcb, 0xee, + 0x64, 0x38, 0xc4, 0x0d, 0x51, 0xf5, 0xa0, 0xea, 0x41, 0x2f, 0x63, 0x3d, 0xbd, 0x0c, 0x8f, 0x58, + 0x15, 0x92, 0x34, 0x46, 0xca, 0xac, 0x32, 0xe6, 0x07, 0x41, 0x51, 0x47, 0x51, 0x2f, 0x98, 0xa8, + 0x67, 0xdf, 0xde, 0x8f, 0xc4, 0xfd, 0x20, 0x1b, 0xd9, 0x21, 0xa9, 0xe0, 0xe5, 0x76, 0xe9, 0x26, + 0xdb, 0xfa, 0xdc, 0x54, 0x2b, 0x87, 0xa4, 0xe2, 0x1c, 0x55, 0x4e, 0xbb, 0x3f, 0xeb, 0x0f, 0xdb, + 0xed, 0xc7, 0x3f, 0xef, 0xfc, 0xdc, 0x7b, 0x48, 0xbf, 0x5e, 0xdd, 0x35, 0xd0, 0x5b, 0x81, 0x2f, + 0x64, 0x25, 0x0c, 0x28, 0xcd, 0x41, 0xd0, 0xce, 0x8d, 0x81, 0x5a, 0x0b, 0xb5, 0x56, 0xc1, 0xb4, + 0x16, 0xb3, 0x29, 0x97, 0x4c, 0xde, 0xe7, 0xa4, 0x68, 0xf7, 0x32, 0x5c, 0x7b, 0x96, 0x4c, 0xfd, + 0x81, 0x84, 0x39, 0xb6, 0xcd, 0xe4, 0x41, 0x4e, 0xae, 0xff, 0x73, 0xf2, 0xe5, 0xf3, 0xc9, 0xf5, + 0xb7, 0xab, 0xce, 0xc9, 0xc9, 0x71, 0xd6, 0xbd, 0xf3, 0x95, 0xb8, 0x11, 0x0d, 0x33, 0x2b, 0xd2, + 0x52, 0xe6, 0xe4, 0x88, 0x85, 0xe7, 0x89, 0x1f, 0xe3, 0x5b, 0xed, 0xd3, 0x87, 0x72, 0xe6, 0xf1, + 0x1e, 0xde, 0xae, 0xc9, 0x43, 0x54, 0x2f, 0x0a, 0xf0, 0x14, 0xf5, 0xbd, 0x62, 0xac, 0x45, 0x31, + 0x9e, 0xa2, 0x10, 0x5b, 0x6a, 0xaf, 0x10, 0x8b, 0xd1, 0x2c, 0xca, 0x96, 0x2a, 0xc2, 0x63, 0xfc, + 0xf5, 0xf9, 0xff, 0x3e, 0x5f, 0xfe, 0xfd, 0x39, 0xc7, 0x83, 0x64, 0xba, 0xb2, 0xab, 0xdb, 0x31, + 0x5a, 0x51, 0x52, 0xc8, 0x51, 0xd4, 0x1f, 0x79, 0x80, 0x31, 0x7e, 0x58, 0xde, 0x25, 0xc8, 0x88, + 0x34, 0x96, 0x8a, 0x55, 0x53, 0x39, 0x68, 0x4f, 0xb2, 0xe6, 0x26, 0x3f, 0xa7, 0x4a, 0x7d, 0x9a, + 0x4e, 0x7b, 0x4c, 0x43, 0x4b, 0xb0, 0x20, 0x49, 0x39, 0x2c, 0x1f, 0xd9, 0x76, 0x58, 0x3a, 0x3f, + 0xfa, 0x54, 0x0a, 0xa9, 0x94, 0x8c, 0xf7, 0xc3, 0x92, 0xf4, 0x4b, 0x8c, 0xdb, 0x6c, 0xc8, 0xec, + 0x88, 0xb8, 0xa5, 0xc9, 0x49, 0xf5, 0x5b, 0x3e, 0xbb, 0xc1, 0x8c, 0x88, 0xa8, 0x86, 0x09, 0x2b, + 0x85, 0x40, 0x44, 0x6b, 0x98, 0xb0, 0x92, 0x36, 0x8b, 0x6b, 0x7a, 0x61, 0xae, 0x6c, 0xae, 0x85, + 0x4d, 0x93, 0x23, 0xab, 0xeb, 0x25, 0xf9, 0xbc, 0x0a, 0xa8, 0xc5, 0x9c, 0xfb, 0x92, 0x1c, 0xd0, + 0x92, 0xeb, 0xf7, 0x99, 0x45, 0xdc, 0xd2, 0x74, 0x9a, 0xd2, 0x54, 0x26, 0x47, 0x52, 0xfb, 0x63, + 0xc0, 0xac, 0xc1, 0x2d, 0x97, 0x03, 0x16, 0xce, 0xfd, 0x47, 0x8f, 0xba, 0x3e, 0xef, 0x87, 0x59, + 0x6f, 0x27, 0x1b, 0x9b, 0x91, 0x5b, 0x86, 0x55, 0xc8, 0xb2, 0x3a, 0x99, 0x56, 0x25, 0xdb, 0xca, + 0x65, 0x5c, 0xb9, 0xac, 0x2b, 0x95, 0xf9, 0x7c, 0xce, 0x45, 0x46, 0xdf, 0x2a, 0x3b, 0x3b, 0xb2, + 0xb0, 0x5f, 0xb2, 0x27, 0xb1, 0x2d, 0x98, 0xbe, 0xfd, 0x1c, 0x63, 0xe8, 0x4f, 0x6a, 0xcb, 0xbe, + 0x50, 0xab, 0xf5, 0xe7, 0xba, 0xcb, 0xfa, 0x73, 0xe9, 0x4e, 0x59, 0x4c, 0xaf, 0xcb, 0x7e, 0xda, + 0x62, 0xea, 0xab, 0x2d, 0x73, 0xec, 0x62, 0xf9, 0x87, 0x5e, 0x42, 0x26, 0xca, 0xa1, 0x4c, 0x93, + 0x42, 0x38, 0x3b, 0x9e, 0x23, 0x97, 0xcf, 0x18, 0xcc, 0x9c, 0x47, 0x5f, 0xc7, 0x3c, 0x7a, 0x95, + 0x5a, 0x1b, 0xf3, 0xe8, 0x31, 0x8f, 0x1e, 0x61, 0x09, 0xe6, 0xd1, 0xab, 0x76, 0x3d, 0x30, 0x8f, + 0x1e, 0xf3, 0xe8, 0x35, 0x1b, 0xdd, 0xcd, 0xd1, 0x4b, 0x98, 0xe1, 0xf6, 0xbc, 0x5e, 0x5a, 0x87, + 0x0c, 0xb7, 0xb8, 0x1b, 0x1c, 0x15, 0x39, 0xd2, 0xdb, 0xa6, 0x23, 0x6c, 0x06, 0x27, 0x8a, 0x42, + 0x0e, 0x46, 0xc8, 0x33, 0x73, 0xa2, 0x8c, 0x57, 0x0e, 0xaa, 0xf5, 0xda, 0xbf, 0x15, 0x47, 0x10, + 0x8f, 0x86, 0xf9, 0x69, 0xd1, 0xa7, 0x03, 0x22, 0x15, 0x99, 0x5d, 0x94, 0x90, 0x8a, 0xcc, 0x24, + 0x6a, 0xd0, 0xa9, 0xc8, 0xc4, 0xcc, 0xb4, 0x9a, 0x0a, 0xc8, 0xc8, 0x83, 0x1c, 0x43, 0x7c, 0x21, + 0xbc, 0x4f, 0x73, 0x25, 0x4a, 0x95, 0x72, 0xc7, 0xbe, 0xe3, 0x1b, 0xb9, 0x60, 0x3c, 0xf7, 0xde, + 0x57, 0xa4, 0x59, 0x16, 0x86, 0x8b, 0xd3, 0xc9, 0x14, 0x8e, 0x77, 0x2a, 0x88, 0x25, 0x99, 0xcf, + 0x8f, 0x59, 0x9f, 0xc9, 0x91, 0x3e, 0xae, 0xe6, 0x1e, 0xf7, 0xe1, 0xad, 0x82, 0x25, 0x20, 0x77, + 0x6b, 0xbf, 0x04, 0xb5, 0x83, 0x66, 0xb3, 0xb5, 0xdf, 0x6c, 0x56, 0xf7, 0x1b, 0xfb, 0xd5, 0xc3, + 0xbd, 0xbd, 0x5a, 0x2b, 0x4b, 0xd2, 0xa2, 0xb1, 0x55, 0xd9, 0x5a, 0xcd, 0xd5, 0x5d, 0x53, 0xd1, + 0x82, 0xb7, 0x99, 0xbc, 0x11, 0x4b, 0x58, 0x15, 0x2a, 0x84, 0x2f, 0xd4, 0xf8, 0x22, 0x73, 0xc3, + 0xa1, 0x27, 0x82, 0x9e, 0x08, 0x7a, 0x22, 0xe8, 0x89, 0xa0, 0x27, 0x82, 0x9e, 0x08, 0x7a, 0x22, + 0xe8, 0x89, 0xbc, 0xe6, 0x89, 0x38, 0x82, 0xc4, 0x99, 0xa1, 0x2a, 0xa9, 0x91, 0xa7, 0x63, 0xa2, + 0x4f, 0x82, 0x3e, 0x09, 0xfa, 0x24, 0xe8, 0x93, 0xa0, 0x4f, 0x82, 0x3e, 0x09, 0xfa, 0x24, 0xe8, + 0x93, 0xbc, 0xe6, 0x93, 0xfc, 0xff, 0x49, 0xaf, 0x47, 0x85, 0x4a, 0x8f, 0xe4, 0xf1, 0x88, 0xe8, + 0x8f, 0xa0, 0x3f, 0x82, 0xfe, 0x08, 0xfa, 0x23, 0xe8, 0x8f, 0xa0, 0x3f, 0x82, 0xfe, 0x08, 0xfa, + 0x23, 0xaf, 0xf9, 0x23, 0x1e, 0xb1, 0x26, 0xb5, 0x01, 0x55, 0x3a, 0x25, 0xcf, 0x0c, 0x8b, 0x9e, + 0x09, 0x7a, 0x26, 0xe8, 0x99, 0xa0, 0x67, 0x82, 0x9e, 0x09, 0x7a, 0x26, 0xe8, 0x99, 0xa0, 0x67, + 0xb2, 0x8c, 0x67, 0x12, 0x90, 0x28, 0xa4, 0xaa, 0xfd, 0x92, 0x47, 0x83, 0xa2, 0x57, 0x82, 0x5e, + 0x09, 0x7a, 0x25, 0xe8, 0x95, 0xa0, 0x57, 0x82, 0x5e, 0x09, 0x7a, 0x25, 0xe8, 0x95, 0xbc, 0xe6, + 0x95, 0xf8, 0x43, 0x2a, 0x42, 0xf6, 0x3f, 0xa5, 0x4e, 0xc9, 0xd3, 0x31, 0xd1, 0x27, 0x41, 0x9f, + 0x04, 0x7d, 0x12, 0xf4, 0x49, 0xd0, 0x27, 0x41, 0x9f, 0x04, 0x7d, 0x12, 0xf4, 0x49, 0x7e, 0xfb, + 0x9a, 0xfd, 0x48, 0x2a, 0x3e, 0x00, 0xbc, 0x30, 0x22, 0xfa, 0x23, 0xe8, 0x8f, 0xa0, 0x3f, 0x82, + 0xfe, 0x08, 0xfa, 0x23, 0xe8, 0x8f, 0xa0, 0x3f, 0x82, 0xfe, 0xc8, 0xab, 0xfe, 0x88, 0x8e, 0xa4, + 0x92, 0x17, 0xc6, 0x45, 0xdf, 0x04, 0x7d, 0x13, 0xf4, 0x4d, 0xd0, 0x37, 0x41, 0xdf, 0x04, 0x7d, + 0x13, 0xf4, 0x4d, 0xd0, 0x37, 0x59, 0xca, 0x37, 0x51, 0x9b, 0x56, 0xf2, 0xec, 0xa8, 0xe8, 0x97, + 0xa0, 0x5f, 0x82, 0x7e, 0x09, 0xfa, 0x25, 0xe8, 0x97, 0xa0, 0x5f, 0x82, 0x7e, 0xc9, 0x26, 0xf9, + 0x25, 0x5a, 0xcb, 0xc4, 0x66, 0xec, 0x8d, 0x32, 0xbd, 0x5e, 0x41, 0x8f, 0x94, 0xb8, 0xf5, 0xc8, + 0xbb, 0x8c, 0x95, 0x94, 0xc7, 0x37, 0x21, 0x45, 0x64, 0x49, 0x9e, 0xa8, 0xfd, 0xb3, 0xc9, 0x14, + 0xdf, 0x26, 0xdd, 0xeb, 0xbe, 0x7d, 0x9c, 0x0c, 0xbe, 0x06, 0x45, 0xa7, 0xed, 0x28, 0x70, 0xe9, + 0x5d, 0xc5, 0xf3, 0xed, 0x1c, 0x15, 0xea, 0xe7, 0x07, 0xc1, 0xfa, 0xf2, 0xfa, 0x3c, 0x3e, 0x2c, + 0x3d, 0xbd, 0x92, 0xfa, 0xf2, 0x94, 0x47, 0x1e, 0x15, 0x63, 0xb5, 0x94, 0xa3, 0xc6, 0x7c, 0x33, + 0xc3, 0xb5, 0x27, 0x3c, 0xf2, 0x46, 0x37, 0xff, 0xb0, 0x06, 0xaa, 0x82, 0x3a, 0x0e, 0xb5, 0x24, + 0x1b, 0xd2, 0x4a, 0x18, 0x50, 0x9a, 0xa3, 0x4f, 0xce, 0xd3, 0x81, 0x50, 0x65, 0xa0, 0xca, 0x28, + 0x98, 0xca, 0x88, 0x18, 0x97, 0x8d, 0x7a, 0x0e, 0x6d, 0x91, 0xa5, 0x51, 0x4e, 0x3e, 0x64, 0x97, + 0x03, 0xe2, 0xaa, 0x40, 0x72, 0x8a, 0xe0, 0x83, 0x2a, 0xe4, 0xa6, 0x12, 0x1b, 0xe4, 0x40, 0x6a, + 0x4a, 0x10, 0x9a, 0xea, 0x57, 0xdb, 0xac, 0x1f, 0x36, 0x0f, 0x5b, 0xfb, 0xf5, 0xc3, 0xbd, 0x35, + 0x7a, 0xc7, 0x86, 0xf0, 0x4f, 0x77, 0x1d, 0x0c, 0x31, 0x27, 0x3d, 0x97, 0x56, 0x1c, 0xd7, 0xff, + 0x31, 0x89, 0x17, 0xe7, 0x30, 0xc6, 0xcf, 0x0c, 0x96, 0xbd, 0xc5, 0x94, 0x43, 0xdc, 0x10, 0x31, + 0x00, 0x1a, 0x74, 0xec, 0x31, 0xb5, 0xe8, 0xff, 0xaf, 0x43, 0x8f, 0xa9, 0xc1, 0x8f, 0x38, 0x96, + 0x43, 0x6c, 0x5b, 0xd0, 0x30, 0x47, 0xa7, 0xa9, 0x27, 0xe3, 0xa0, 0xc0, 0xa3, 0xc0, 0x17, 0x4c, + 0xe0, 0xb3, 0x6f, 0xef, 0x47, 0x42, 0x7f, 0x90, 0xad, 0xe1, 0xa5, 0xa4, 0x82, 0x67, 0xf6, 0xe4, + 0xcb, 0x37, 0xd5, 0xca, 0x21, 0xa9, 0x38, 0x47, 0x95, 0xd3, 0xee, 0xcf, 0xfa, 0xc3, 0x76, 0xfb, + 0xf1, 0xcf, 0x3b, 0x3f, 0xf7, 0x1e, 0xca, 0x20, 0x1d, 0x1f, 0x25, 0xaa, 0x0b, 0xf5, 0x16, 0xea, + 0x2d, 0xd4, 0x5b, 0xa8, 0xb7, 0x0c, 0xea, 0xad, 0x69, 0xf3, 0x5e, 0xbb, 0xa2, 0x24, 0xde, 0xf2, + 0xc2, 0x78, 0xa8, 0xcd, 0x50, 0x9b, 0x15, 0x4c, 0x9b, 0x61, 0xe8, 0xe5, 0xa9, 0x02, 0x09, 0x7c, + 0x21, 0xf3, 0x06, 0x60, 0x9e, 0x1f, 0x0e, 0xd5, 0x07, 0xaa, 0x8f, 0x82, 0xa9, 0x0f, 0x66, 0x53, + 0x2e, 0x99, 0xbc, 0x17, 0xd4, 0xc9, 0xa3, 0x3e, 0x32, 0xf0, 0xdc, 0xe5, 0xb3, 0x64, 0xea, 0x0f, + 0x24, 0xa4, 0xf9, 0x93, 0x70, 0x4f, 0xae, 0xff, 0x73, 0xf2, 0xe5, 0xf3, 0xc9, 0xf5, 0xb7, 0xab, + 0xce, 0xc9, 0xc9, 0x71, 0xd6, 0xbd, 0x13, 0x13, 0xf8, 0x61, 0xae, 0xdc, 0xbf, 0x9c, 0x91, 0x88, + 0xc9, 0xf3, 0xc4, 0x8f, 0xf1, 0xad, 0xf6, 0xe9, 0x43, 0x79, 0x15, 0x51, 0x15, 0xb5, 0x0f, 0x51, + 0xbd, 0x28, 0xc0, 0x53, 0xd4, 0xf7, 0x8a, 0xb1, 0x16, 0xc5, 0x78, 0x8a, 0x42, 0x6c, 0xa9, 0xbd, + 0x42, 0x2c, 0x46, 0xb3, 0x28, 0x5b, 0xaa, 0x08, 0x8f, 0xf1, 0xd7, 0xe7, 0xff, 0xfb, 0x7c, 0xf9, + 0xf7, 0x67, 0xd3, 0x87, 0x07, 0xba, 0xba, 0x1d, 0x23, 0x2d, 0xa0, 0x41, 0x05, 0x52, 0x40, 0x78, + 0x80, 0xf0, 0x00, 0xe1, 0x01, 0xc2, 0x03, 0x84, 0x07, 0x08, 0x0f, 0x10, 0x1e, 0x20, 0x3c, 0x40, + 0x78, 0x80, 0xf0, 0x00, 0xe1, 0xc1, 0xfa, 0xc2, 0x83, 0x2d, 0x85, 0xcb, 0x55, 0x3e, 0x8a, 0xe2, + 0x5e, 0xe0, 0x31, 0x7e, 0x58, 0xde, 0x25, 0xc8, 0x88, 0x34, 0xde, 0xf9, 0x56, 0x85, 0x39, 0xed, + 0xb9, 0xc3, 0x79, 0x4f, 0x7e, 0xf1, 0x6e, 0xec, 0x85, 0xb6, 0xa7, 0x27, 0xf5, 0x92, 0x9f, 0xe3, + 0x03, 0x7b, 0xe9, 0x53, 0x56, 0x43, 0x4b, 0xb0, 0x20, 0x39, 0x69, 0x58, 0x3e, 0xb2, 0xed, 0xb0, + 0x74, 0x7e, 0xf4, 0xa9, 0x14, 0x52, 0x29, 0x19, 0xef, 0x87, 0x25, 0xe9, 0x97, 0x18, 0xb7, 0xd9, + 0x90, 0xd9, 0x11, 0x71, 0x4b, 0x93, 0xa3, 0x7b, 0xb7, 0x7c, 0x76, 0x7f, 0x19, 0x01, 0x51, 0x0d, + 0x18, 0x20, 0x72, 0x49, 0x1f, 0x01, 0xd1, 0x33, 0x80, 0x68, 0xf4, 0x5e, 0xd6, 0x0c, 0x10, 0x1d, + 0x33, 0x91, 0x6d, 0xb9, 0x49, 0xbf, 0x2f, 0x68, 0x9f, 0x48, 0x5a, 0x61, 0x76, 0x7e, 0x30, 0xf2, + 0x68, 0xb4, 0x8c, 0x2f, 0xfb, 0x89, 0x7c, 0x5e, 0x05, 0xd4, 0x62, 0xce, 0x7d, 0x49, 0x0e, 0x68, + 0xc9, 0xf5, 0xfb, 0xcc, 0x22, 0x6e, 0x69, 0x3a, 0x4d, 0x69, 0x2a, 0x93, 0x23, 0xa9, 0xfd, 0x31, + 0x60, 0xd6, 0xe0, 0x96, 0xcb, 0x01, 0x0b, 0xe7, 0xfe, 0xa3, 0x47, 0x5d, 0x9f, 0xf7, 0xb1, 0x6e, + 0x49, 0x1e, 0x99, 0x56, 0x25, 0xdb, 0xca, 0x65, 0x5c, 0xb9, 0xac, 0x2b, 0x95, 0xf9, 0x7c, 0xbe, + 0xc5, 0xea, 0xeb, 0x96, 0xb8, 0x94, 0x38, 0xd9, 0x08, 0x92, 0x05, 0xd3, 0xb7, 0x9f, 0x63, 0x8c, + 0xce, 0xf4, 0x50, 0xff, 0x12, 0x7e, 0x02, 0x73, 0xda, 0xf1, 0xf9, 0xfb, 0xf5, 0x2c, 0x8a, 0xa0, + 0xd8, 0x9d, 0xeb, 0x2e, 0xeb, 0xce, 0x65, 0x2b, 0xae, 0xa0, 0xac, 0xa8, 0xc2, 0x72, 0xab, 0xf1, + 0xfa, 0x33, 0x2f, 0x21, 0x12, 0xe5, 0xf0, 0x07, 0x93, 0xd6, 0x80, 0xda, 0x95, 0xa1, 0x4b, 0x96, + 0x7f, 0xdc, 0xe9, 0x9e, 0x7f, 0x7c, 0xf9, 0x92, 0xef, 0x37, 0x9d, 0x83, 0x97, 0xda, 0x28, 0x64, + 0x31, 0x02, 0xf3, 0x4a, 0x3f, 0xc5, 0xa3, 0xe4, 0xd1, 0xf2, 0xb9, 0xb5, 0x7a, 0x6e, 0x2d, 0xfe, + 0x54, 0x6b, 0xc7, 0x0f, 0xbe, 0x22, 0x08, 0x95, 0xd6, 0x25, 0x2b, 0x5b, 0x93, 0x5d, 0x91, 0x11, + 0x46, 0x25, 0xd7, 0x6f, 0x06, 0x36, 0x49, 0xb9, 0xa5, 0x37, 0x07, 0x9c, 0xa4, 0xdb, 0xf2, 0xeb, + 0x8e, 0x4e, 0x2c, 0x8b, 0x86, 0x61, 0x3a, 0x4d, 0xfe, 0x32, 0x38, 0x99, 0x1b, 0x0c, 0xc1, 0x40, + 0x0e, 0x21, 0x42, 0x34, 0x90, 0x4d, 0xc8, 0xa0, 0xc3, 0x81, 0x88, 0x67, 0xcb, 0xc5, 0x5e, 0xb0, + 0x35, 0x87, 0x39, 0xc6, 0x48, 0x1e, 0x67, 0xe5, 0x25, 0x0c, 0x27, 0x2f, 0x65, 0xb4, 0x15, 0xb2, + 0xb3, 0x1d, 0xcf, 0xbd, 0x9e, 0x96, 0x82, 0xa1, 0xd4, 0x54, 0x7a, 0x54, 0xf7, 0xba, 0xa6, 0x37, + 0xa6, 0xb2, 0xf2, 0xa3, 0x22, 0xb5, 0xfc, 0xe2, 0xb0, 0xd3, 0x32, 0x84, 0x8a, 0xc7, 0xd5, 0x50, + 0x7b, 0x30, 0xa7, 0x92, 0x78, 0x7e, 0xa9, 0x14, 0x56, 0x88, 0x34, 0xb5, 0x54, 0xcd, 0xea, 0x61, + 0x13, 0xd0, 0x6a, 0x6d, 0xad, 0xc7, 0x28, 0xdd, 0xad, 0x15, 0xee, 0x39, 0x85, 0xba, 0xf8, 0x5f, + 0xc6, 0xff, 0x55, 0xab, 0x8b, 0x6b, 0x07, 0x0a, 0xc6, 0xca, 0x7b, 0x38, 0x72, 0x61, 0xc0, 0xed, + 0x66, 0xf5, 0xf0, 0xa6, 0x5a, 0x69, 0x76, 0x7f, 0x35, 0xab, 0x37, 0xd5, 0xca, 0x41, 0xf7, 0xa6, + 0x5a, 0x39, 0xec, 0xfe, 0xba, 0xa9, 0x55, 0x1a, 0xe3, 0x8f, 0x3f, 0x1b, 0x0f, 0xa3, 0x9f, 0x0e, + 0x93, 0x9f, 0x6a, 0x6f, 0xeb, 0xc9, 0xcf, 0x3b, 0xb7, 0xb7, 0xbb, 0xdb, 0x39, 0x2e, 0xff, 0x75, + 0x7b, 0xfb, 0x66, 0xa7, 0xbc, 0xea, 0x0d, 0x57, 0xd0, 0x16, 0xbc, 0x09, 0x77, 0x96, 0xed, 0x84, + 0xe8, 0x82, 0x30, 0x3c, 0x19, 0x0f, 0x11, 0x0f, 0x22, 0x1e, 0x44, 0x3c, 0x59, 0x9c, 0xfb, 0x91, + 0xf8, 0x54, 0xe4, 0x68, 0x4c, 0x05, 0xd0, 0x27, 0x87, 0x77, 0x92, 0xf1, 0x58, 0xaa, 0x59, 0x2d, + 0xc6, 0x49, 0x5c, 0xdd, 0x53, 0x0d, 0x63, 0x33, 0x3f, 0x18, 0xea, 0x2f, 0xd4, 0x5f, 0xa8, 0xbf, + 0x90, 0xb1, 0x41, 0xc6, 0x06, 0x19, 0x1b, 0x64, 0x6c, 0x90, 0xb1, 0x41, 0xc6, 0x06, 0x19, 0x1b, + 0x64, 0x6c, 0x90, 0xb1, 0x59, 0x21, 0xd6, 0x91, 0x22, 0xe2, 0xdf, 0x63, 0xcf, 0x52, 0x41, 0xaf, + 0xbd, 0xf9, 0xc1, 0x10, 0xeb, 0x20, 0xd6, 0x41, 0xac, 0x83, 0x58, 0x07, 0xb1, 0x0e, 0x62, 0x1d, + 0xc4, 0x3a, 0x88, 0x75, 0x10, 0xeb, 0x14, 0x01, 0xeb, 0xc4, 0xba, 0x58, 0xc4, 0xaa, 0x0f, 0xe1, + 0xce, 0xef, 0xe0, 0xce, 0x08, 0xf1, 0x64, 0x1f, 0xa0, 0x8c, 0x1b, 0x0e, 0xc1, 0xf5, 0x46, 0x81, + 0xeb, 0x75, 0xdb, 0x70, 0xea, 0x95, 0xdc, 0xa1, 0x82, 0xb1, 0x94, 0xb8, 0xe6, 0x1a, 0x7c, 0xce, + 0xe9, 0xc1, 0x23, 0x29, 0x18, 0xef, 0x97, 0x15, 0xba, 0x48, 0x0a, 0x85, 0x56, 0x9b, 0xf0, 0xae, + 0x85, 0xc9, 0x58, 0x0f, 0x2d, 0xa0, 0x46, 0x1b, 0x28, 0xf6, 0xb5, 0x71, 0xa3, 0x2b, 0xdf, 0xe8, + 0xb7, 0xb7, 0x6f, 0x7e, 0xe5, 0xd8, 0x6d, 0x3b, 0xb9, 0xf7, 0xfa, 0xaa, 0xfd, 0x2b, 0xc5, 0x1b, + 0x7d, 0xd3, 0xb8, 0xed, 0x8c, 0x4c, 0xdb, 0x39, 0x0b, 0xe5, 0x91, 0x94, 0x22, 0x1f, 0xdb, 0x76, + 0xc1, 0xf8, 0x89, 0x4b, 0x3d, 0xca, 0x63, 0xb0, 0xc9, 0x23, 0xd7, 0xcd, 0xd7, 0xe1, 0x52, 0xdd, + 0x60, 0x97, 0xc2, 0xa6, 0x82, 0xda, 0x1f, 0xee, 0x93, 0xa1, 0xb0, 0x2b, 0xbe, 0xa2, 0x03, 0xdc, + 0xf3, 0x07, 0xa2, 0xdf, 0x25, 0x87, 0x4c, 0xd7, 0xa0, 0xc6, 0xe9, 0xf8, 0x60, 0x79, 0xe6, 0xd3, + 0xb2, 0x99, 0x6a, 0x07, 0xe5, 0x3d, 0x2c, 0x5b, 0xc7, 0xc3, 0xb2, 0x99, 0x06, 0xc2, 0xc3, 0xb2, + 0x4b, 0x5c, 0x88, 0x87, 0x65, 0x95, 0x09, 0x8f, 0x42, 0x21, 0x52, 0x25, 0x4c, 0xca, 0x85, 0x4a, + 0xb9, 0x70, 0xa9, 0x15, 0xb2, 0x7c, 0xee, 0x15, 0x86, 0x23, 0x4b, 0x18, 0x8e, 0x5c, 0x76, 0x28, + 0x0c, 0x47, 0x2a, 0x18, 0x16, 0xc3, 0x91, 0x18, 0x8e, 0xc4, 0x70, 0xa4, 0xee, 0x3d, 0x87, 0xd1, + 0xa1, 0xf4, 0x7c, 0x1b, 0xa6, 0x5e, 0x1a, 0xa5, 0xa7, 0xf0, 0xb0, 0x2c, 0x22, 0x1e, 0x44, 0x3c, + 0x78, 0x58, 0x16, 0x0f, 0xcb, 0xbe, 0x7a, 0x8f, 0x78, 0x58, 0x16, 0xf5, 0x17, 0xea, 0x2f, 0x64, + 0x6c, 0x90, 0xb1, 0x41, 0xc6, 0x06, 0x19, 0x1b, 0x64, 0x6c, 0x90, 0xb1, 0x41, 0xc6, 0x06, 0x19, + 0x1b, 0x64, 0x6c, 0x8a, 0xc8, 0xd8, 0xe0, 0x61, 0x59, 0xc4, 0x3a, 0x88, 0x75, 0x10, 0xeb, 0x20, + 0xd6, 0x41, 0xac, 0x83, 0x58, 0x07, 0xb1, 0x0e, 0x62, 0x1d, 0xc4, 0x3a, 0xaf, 0xe9, 0x62, 0x3c, + 0x2c, 0x8b, 0x87, 0x65, 0x11, 0x5c, 0x23, 0xb8, 0x2e, 0xf2, 0x86, 0xc3, 0xc3, 0xb2, 0x59, 0x5e, + 0x1e, 0x1e, 0x96, 0xc5, 0xc3, 0xb2, 0x0a, 0xb4, 0x81, 0x62, 0x5f, 0x1b, 0x37, 0x3a, 0x1e, 0x96, + 0xc5, 0xc3, 0xb2, 0x7a, 0xe6, 0xc7, 0xc3, 0xb2, 0x78, 0x58, 0xf6, 0x95, 0x87, 0x5a, 0xbb, 0xc3, + 0xb2, 0x29, 0x7a, 0x1f, 0xa7, 0x7f, 0x43, 0x6a, 0xbb, 0xd5, 0xae, 0xb2, 0x43, 0x74, 0x86, 0x8e, + 0xcb, 0xe3, 0xb9, 0xa5, 0x88, 0x2c, 0xc9, 0x13, 0x4b, 0x79, 0x36, 0x19, 0xf9, 0xdb, 0x49, 0x32, + 0xf2, 0xb7, 0xab, 0x64, 0xe4, 0xaf, 0x4b, 0x73, 0xfc, 0x4b, 0xb4, 0xa0, 0xde, 0xca, 0xf1, 0xba, + 0xcb, 0x47, 0x51, 0x7f, 0x24, 0xc1, 0xd4, 0x5e, 0xca, 0x54, 0xa6, 0x6c, 0x5d, 0xbd, 0x54, 0x7f, + 0x74, 0x2a, 0x07, 0xed, 0xc9, 0xab, 0x5f, 0xb6, 0xbd, 0xf5, 0x31, 0x0d, 0x2d, 0xc1, 0x82, 0x64, + 0x77, 0x94, 0x8f, 0x6c, 0x3b, 0x2c, 0x7d, 0x3d, 0x3f, 0xfa, 0x5c, 0x0a, 0xa9, 0x94, 0x8c, 0xf7, + 0xc3, 0x92, 0xf4, 0x4b, 0x8c, 0xdb, 0x6c, 0xc8, 0xec, 0x88, 0xb8, 0xa5, 0xc9, 0x02, 0xdc, 0xf2, + 0xd9, 0xbd, 0x60, 0x2b, 0xed, 0x74, 0x5e, 0x1a, 0xb6, 0xd2, 0x9e, 0xdb, 0x7f, 0x69, 0x5b, 0x69, + 0x67, 0xeb, 0x01, 0xbf, 0xe8, 0x7c, 0x67, 0xd4, 0x4c, 0xcf, 0x09, 0xcd, 0x09, 0xb7, 0x5c, 0x3f, + 0x64, 0xbc, 0x5f, 0xb2, 0x7c, 0x2e, 0x09, 0xe3, 0x54, 0x94, 0x1c, 0x5f, 0x8c, 0xe5, 0x68, 0x76, + 0xfc, 0x20, 0x0c, 0xa8, 0xc5, 0x1c, 0x66, 0xdd, 0x72, 0x9b, 0x48, 0x52, 0xf2, 0xf9, 0x54, 0x98, + 0x66, 0x5f, 0x0a, 0x77, 0x4b, 0xa5, 0xeb, 0x01, 0x0d, 0x69, 0x89, 0x08, 0x1a, 0x0f, 0x12, 0x4a, + 0xc2, 0x6d, 0x22, 0xec, 0x5b, 0x7e, 0x5e, 0x7f, 0x5b, 0x9a, 0xde, 0x76, 0x28, 0xef, 0x5d, 0x1a, + 0xcf, 0x10, 0xee, 0x62, 0x5f, 0x70, 0x1d, 0x72, 0xaa, 0x4c, 0x5e, 0x95, 0xc9, 0xad, 0x1a, 0xf9, + 0xcd, 0xe8, 0xb0, 0xa9, 0xd6, 0x0f, 0x39, 0xad, 0x71, 0xf7, 0x35, 0x6b, 0x9c, 0xce, 0xe9, 0x51, + 0xe0, 0xec, 0x2c, 0xb1, 0x2b, 0x5e, 0x75, 0x6b, 0x7e, 0xbf, 0x8a, 0x2f, 0xbf, 0x91, 0xdf, 0x68, + 0xdb, 0xf2, 0xc0, 0x77, 0xed, 0x8a, 0x64, 0xde, 0xeb, 0x12, 0x30, 0x15, 0xb6, 0xd9, 0x25, 0xaf, + 0xbc, 0xe5, 0xe5, 0x34, 0xc9, 0xd2, 0x9a, 0x23, 0x8d, 0xa6, 0x98, 0xd7, 0x0c, 0xcc, 0x59, 0xe6, + 0xe5, 0xa7, 0xd4, 0x03, 0x99, 0xe5, 0x3e, 0xb3, 0x9c, 0x3f, 0x95, 0x6b, 0xe6, 0x94, 0x35, 0xfb, + 0xac, 0xcb, 0x5a, 0xdf, 0xb2, 0x35, 0x59, 0xc1, 0x94, 0x7e, 0x6b, 0x72, 0x5d, 0x31, 0x1c, 0xc4, + 0xa5, 0xb6, 0x59, 0xf1, 0xdc, 0xc3, 0x65, 0xb6, 0xe1, 0x9a, 0x38, 0x87, 0xb6, 0xff, 0x23, 0x87, + 0x4f, 0x18, 0x5f, 0x9d, 0xda, 0x15, 0x74, 0x48, 0xe4, 0xc6, 0xaf, 0xaa, 0x9a, 0xd1, 0x0f, 0xab, + 0x02, 0xf3, 0xc3, 0x52, 0x89, 0xc1, 0xe6, 0x78, 0x61, 0x69, 0xc4, 0xc4, 0x0c, 0x69, 0x96, 0x39, + 0xa7, 0x70, 0x96, 0x4b, 0xc8, 0xb8, 0x6c, 0xd4, 0xb3, 0x2c, 0x77, 0xb2, 0xb7, 0xf7, 0x33, 0x5c, + 0x9a, 0x2f, 0x2b, 0x2e, 0x1f, 0xa7, 0xab, 0x20, 0x4b, 0x56, 0x49, 0xea, 0xd4, 0x34, 0x55, 0x2a, + 0xef, 0x38, 0x0a, 0xf3, 0xa2, 0x1e, 0xf2, 0x31, 0xdc, 0x6b, 0xf7, 0x6a, 0x9b, 0xf5, 0xc3, 0xe6, + 0x61, 0x6b, 0xbf, 0x7e, 0xb8, 0xb7, 0x46, 0xef, 0xd8, 0x10, 0x5b, 0xdf, 0x5d, 0x83, 0x2a, 0x8f, + 0x51, 0x90, 0xdd, 0x54, 0x47, 0x01, 0x1a, 0x6a, 0x34, 0xd4, 0x68, 0xa8, 0xd1, 0x50, 0xa3, 0xa1, + 0x46, 0x43, 0x8d, 0x86, 0x5a, 0x17, 0x4b, 0xbb, 0xb6, 0x21, 0xe6, 0x29, 0x45, 0x99, 0xaa, 0x6c, + 0xf5, 0x12, 0xac, 0xf3, 0x52, 0x2c, 0x6e, 0x9a, 0xf2, 0xd4, 0x99, 0xca, 0x52, 0x67, 0xa6, 0xc2, + 0xea, 0x48, 0x85, 0x21, 0x15, 0x86, 0x54, 0x18, 0x7a, 0xd8, 0xe8, 0x61, 0xa3, 0x87, 0x8d, 0x1e, + 0x36, 0x7a, 0xd8, 0xe8, 0x61, 0x23, 0x15, 0x86, 0x86, 0x1a, 0x0d, 0x35, 0x1a, 0x6a, 0x34, 0xd4, + 0x68, 0xa8, 0xd1, 0x50, 0xa3, 0xa1, 0x2e, 0x2e, 0x15, 0x96, 0xe2, 0x50, 0x8a, 0xf6, 0xd3, 0x10, + 0xc6, 0xf2, 0x2f, 0x97, 0x4d, 0x56, 0x2c, 0xfd, 0x2e, 0x01, 0xf3, 0x3f, 0xbe, 0x6b, 0x5f, 0x8f, + 0xc6, 0xd0, 0x90, 0x80, 0x99, 0xcc, 0xb6, 0x64, 0xee, 0x65, 0xfc, 0xed, 0xe5, 0xd2, 0x2e, 0xab, + 0x98, 0x76, 0xa9, 0xc2, 0x49, 0x32, 0x9f, 0x76, 0xb9, 0xb4, 0x93, 0x33, 0x7d, 0xdb, 0x2e, 0x25, + 0x8e, 0xa0, 0x4b, 0xbd, 0xef, 0x09, 0x73, 0xbc, 0x84, 0x1b, 0x53, 0xee, 0x24, 0xf2, 0xb6, 0xbb, + 0x9b, 0xd0, 0xe8, 0xef, 0xe2, 0xed, 0xa7, 0x41, 0x08, 0x84, 0x1f, 0xc9, 0x65, 0x0f, 0x6d, 0x4c, + 0x9f, 0x7a, 0xfe, 0x22, 0x18, 0x99, 0xc8, 0x4b, 0x9e, 0x51, 0x80, 0x27, 0x14, 0xcb, 0x9d, 0x31, + 0xc0, 0x6c, 0x64, 0x3c, 0xae, 0xa6, 0x1c, 0xbc, 0x82, 0x3e, 0xae, 0x96, 0xef, 0x94, 0x5a, 0x96, + 0xc3, 0x69, 0x40, 0x19, 0x1a, 0x3c, 0xdd, 0xa5, 0x64, 0xbb, 0x83, 0x61, 0x69, 0x32, 0x56, 0x29, + 0xcd, 0x53, 0x0a, 0x29, 0x5f, 0xe9, 0x23, 0x15, 0xa5, 0x59, 0x19, 0x97, 0xb5, 0x96, 0x82, 0xda, + 0xac, 0x39, 0x8a, 0x8f, 0x2a, 0x2a, 0x3a, 0xaa, 0xa0, 0x5a, 0x96, 0xca, 0x22, 0xa3, 0x8a, 0x2b, + 0x56, 0xaa, 0xa2, 0xb2, 0x74, 0xd0, 0x2d, 0x0a, 0xa8, 0x2d, 0xa5, 0x14, 0x97, 0xee, 0x25, 0x68, + 0xed, 0xed, 0x35, 0xf6, 0xd6, 0x78, 0x19, 0x36, 0xa1, 0x68, 0x8e, 0x02, 0xdd, 0x97, 0xbb, 0xda, + 0xd5, 0xac, 0xba, 0x15, 0xf2, 0x8d, 0x2b, 0xe5, 0x1b, 0xe7, 0x50, 0xf9, 0x0a, 0x92, 0xef, 0x58, + 0x30, 0x6c, 0xa6, 0x47, 0x7e, 0xf1, 0x55, 0x05, 0x39, 0x85, 0x1a, 0x6c, 0x66, 0xea, 0x5d, 0x00, + 0x06, 0xf3, 0x11, 0xdb, 0x16, 0x34, 0x0c, 0x69, 0x98, 0x1d, 0xf8, 0xcd, 0x86, 0xd8, 0x8c, 0xda, + 0x1e, 0x2c, 0x40, 0xec, 0x97, 0x73, 0xd3, 0x9b, 0x41, 0x7e, 0x69, 0x85, 0xe1, 0xa9, 0x50, 0xe4, + 0x6f, 0x10, 0x33, 0x19, 0x28, 0x5f, 0x73, 0x98, 0x5a, 0x41, 0x9a, 0xc3, 0x64, 0x12, 0x1c, 0x55, + 0x02, 0xa4, 0x5c, 0x90, 0x94, 0x0b, 0x94, 0x4a, 0xc1, 0xca, 0xe7, 0xb3, 0x67, 0x2d, 0x57, 0x99, + 0x55, 0xe0, 0xa6, 0x03, 0xa4, 0x24, 0xcb, 0x5f, 0xdd, 0x74, 0xa9, 0x48, 0x74, 0x4d, 0x62, 0xa8, + 0x4c, 0x1c, 0x55, 0x8a, 0xa5, 0x72, 0xf1, 0x54, 0x2d, 0xa6, 0xda, 0xc4, 0x55, 0x9b, 0xd8, 0xea, + 0x10, 0x5f, 0x45, 0xc0, 0x3d, 0xe7, 0x7e, 0xcb, 0x2b, 0xd6, 0x73, 0x78, 0x48, 0xdd, 0xbe, 0x98, + 0xa1, 0x25, 0x55, 0x1b, 0x42, 0x31, 0x27, 0xa4, 0x4a, 0xdc, 0x75, 0x88, 0xbd, 0x36, 0xf1, 0xd7, + 0xa5, 0x06, 0xb4, 0xab, 0x03, 0xed, 0x6a, 0x41, 0xa7, 0x7a, 0x50, 0xa3, 0x26, 0x14, 0xa9, 0x8b, + 0xe9, 0x83, 0xe6, 0x6e, 0x13, 0xf7, 0x5b, 0x86, 0xa4, 0x92, 0xf8, 0xd6, 0x15, 0xee, 0x57, 0xfe, + 0xe7, 0x73, 0xba, 0xb9, 0xb5, 0xe9, 0xb7, 0xa7, 0x75, 0xe0, 0x93, 0xca, 0xef, 0xbf, 0x6a, 0xf1, + 0x3f, 0xe3, 0xcf, 0xf5, 0xb8, 0x64, 0x7c, 0xf2, 0x79, 0xef, 0xa6, 0x5a, 0xd9, 0x8b, 0xeb, 0xc9, + 0xef, 0xfc, 0x6c, 0x3c, 0xa4, 0xbf, 0x70, 0xfb, 0x8f, 0x9b, 0xdb, 0xdb, 0xe0, 0xe7, 0xe7, 0x87, + 0xd1, 0xdf, 0xe7, 0x0f, 0xdd, 0x3f, 0x77, 0xde, 0xab, 0x96, 0xbf, 0xd1, 0x84, 0xb7, 0xb7, 0xbb, + 0xdd, 0x37, 0xc5, 0xab, 0x59, 0xaf, 0x22, 0x0a, 0x32, 0x56, 0x7a, 0x15, 0x97, 0xf2, 0x7e, 0xcc, + 0x86, 0x2a, 0xb6, 0xa6, 0x8f, 0x87, 0x47, 0xc3, 0x8a, 0x86, 0x15, 0x0d, 0xeb, 0x06, 0x19, 0xd6, + 0x88, 0x71, 0x79, 0xa0, 0xc1, 0x92, 0xee, 0x29, 0x1c, 0x52, 0x6d, 0x23, 0xd2, 0xc9, 0x1f, 0xb5, + 0xd2, 0x54, 0xd2, 0xd5, 0x98, 0x54, 0x93, 0x4e, 0x5d, 0x18, 0x5e, 0x71, 0x4e, 0xc1, 0xc2, 0xf8, + 0x1a, 0x5b, 0x60, 0x2a, 0x96, 0xb6, 0xc7, 0x4b, 0xaa, 0xa1, 0x81, 0xa9, 0xe9, 0x25, 0x6d, 0xd4, + 0x01, 0xaf, 0xe9, 0xd6, 0x7a, 0x8e, 0xb6, 0x36, 0x1e, 0xe6, 0x4a, 0x79, 0xa2, 0x9c, 0x8d, 0x6f, + 0x16, 0xc6, 0x53, 0x13, 0xf6, 0x1f, 0x81, 0xc5, 0x77, 0xd3, 0x18, 0xe5, 0xe4, 0x53, 0xaa, 0x6c, + 0x00, 0xf5, 0xaf, 0x3b, 0xcf, 0x59, 0x3f, 0x05, 0x2c, 0x9a, 0x3a, 0xf6, 0x4c, 0xd5, 0xa1, 0x41, + 0x24, 0xc7, 0xd7, 0xc9, 0x69, 0x47, 0x72, 0xdc, 0xbc, 0x33, 0x9e, 0xe1, 0xfc, 0xd4, 0xd2, 0x44, + 0xd6, 0xbe, 0x9a, 0x16, 0xc0, 0x93, 0xf3, 0x57, 0xf1, 0xc2, 0xb5, 0x93, 0x53, 0x58, 0xe3, 0x1f, + 0xf2, 0x2e, 0xe4, 0x6a, 0x54, 0x69, 0xba, 0xea, 0x68, 0xaf, 0xae, 0x5c, 0x9a, 0xaa, 0x69, 0xaf, + 0xae, 0x99, 0x2a, 0x85, 0x5a, 0x47, 0x85, 0x8a, 0x0a, 0x15, 0x90, 0x42, 0xc5, 0x68, 0xe3, 0x2a, + 0xfd, 0x27, 0x1d, 0x62, 0xaf, 0x4d, 0xfc, 0x75, 0xa9, 0x01, 0xed, 0xea, 0x40, 0xbb, 0x5a, 0xd0, + 0xa9, 0x1e, 0xd4, 0xc2, 0x67, 0x8c, 0x36, 0x62, 0xb4, 0x11, 0xa3, 0x8d, 0x3a, 0xb8, 0x20, 0x05, + 0xee, 0x95, 0x2f, 0x58, 0x5f, 0xe5, 0xc9, 0xb7, 0xa9, 0x01, 0x18, 0x8f, 0x8b, 0xa6, 0x14, 0x4d, + 0x29, 0x9a, 0xd2, 0x8d, 0x32, 0xa5, 0x53, 0x43, 0xaa, 0x54, 0x05, 0x3c, 0xb2, 0xa3, 0x4d, 0x85, + 0x63, 0x9e, 0xf0, 0xc8, 0x1b, 0xbd, 0x8a, 0x07, 0x4c, 0x21, 0x59, 0x76, 0x8d, 0x31, 0x85, 0x04, + 0x55, 0x3c, 0xaa, 0xf8, 0x8d, 0x55, 0xf1, 0x98, 0x42, 0xa2, 0x70, 0x3f, 0x62, 0x0a, 0xc9, 0xcb, + 0xe3, 0x63, 0x0a, 0xc9, 0xca, 0x96, 0x14, 0x53, 0x48, 0xd4, 0x8f, 0x86, 0x29, 0x24, 0xe0, 0x52, + 0x48, 0x52, 0x94, 0xb0, 0x55, 0xff, 0xb6, 0xf3, 0x84, 0x3d, 0x87, 0x42, 0x28, 0xcc, 0x21, 0x89, + 0x47, 0xc3, 0x23, 0x96, 0xc6, 0xfc, 0x78, 0x0c, 0x7a, 0x62, 0xd0, 0xf3, 0xb7, 0xa2, 0x5d, 0xe9, + 0x0b, 0x3f, 0xd2, 0x10, 0xfc, 0x9c, 0x1b, 0x5b, 0x2d, 0xac, 0xaf, 0x21, 0xac, 0x47, 0x58, 0x8f, + 0xb0, 0x3e, 0xff, 0x83, 0xaa, 0x52, 0x23, 0xd3, 0x01, 0x15, 0x15, 0x64, 0x78, 0x51, 0x08, 0x94, + 0x14, 0x68, 0xd0, 0xac, 0x56, 0xb4, 0xa9, 0x17, 0x9d, 0x6a, 0x46, 0xbb, 0xba, 0xd1, 0xad, 0x76, + 0x8c, 0xa9, 0x1f, 0x63, 0x6a, 0xc8, 0x84, 0x3a, 0xd2, 0x84, 0x72, 0x15, 0xef, 0x77, 0xd5, 0x6a, + 0x6a, 0x3a, 0x30, 0xb1, 0x2c, 0x1a, 0xc8, 0x8a, 0xe7, 0xdb, 0x1a, 0x37, 0xe4, 0xb4, 0xb8, 0xd3, + 0xdc, 0x64, 0x9a, 0x76, 0xca, 0x5c, 0xf7, 0x33, 0x87, 0xb8, 0xa1, 0xb6, 0x79, 0x34, 0xf3, 0x46, + 0xba, 0x14, 0xa7, 0x09, 0x05, 0x6a, 0x4c, 0x91, 0x9a, 0x52, 0xa8, 0xc6, 0x15, 0xab, 0x71, 0x05, + 0x6b, 0x52, 0xd1, 0xea, 0x51, 0xb8, 0x9a, 0x14, 0xef, 0xf4, 0xc5, 0x28, 0x0f, 0xff, 0xbc, 0x28, + 0x2d, 0x3d, 0xdf, 0x77, 0x29, 0xe1, 0x3a, 0xe5, 0x65, 0xe2, 0xed, 0xd5, 0xb6, 0x60, 0x2c, 0xac, + 0x8e, 0xa8, 0x02, 0xb1, 0x87, 0x54, 0x48, 0x16, 0xd2, 0xd1, 0x76, 0x1f, 0x73, 0x9b, 0x43, 0xe2, + 0x1a, 0xb0, 0x81, 0xcf, 0xcf, 0xab, 0xdf, 0x1c, 0xd6, 0xaa, 0x55, 0x34, 0x86, 0x68, 0x0c, 0xd1, + 0x18, 0xa2, 0x31, 0x84, 0x63, 0x0c, 0x73, 0xf7, 0xd4, 0x58, 0x56, 0x77, 0xb5, 0x34, 0x4e, 0xa1, + 0x27, 0x79, 0xe2, 0xe9, 0x1f, 0xbd, 0xe2, 0x5e, 0xd2, 0x9d, 0x5c, 0x61, 0xd8, 0xa8, 0x2c, 0x4c, + 0x37, 0x89, 0xd4, 0xd7, 0x0c, 0xcd, 0x67, 0x20, 0x70, 0x6f, 0x48, 0x1d, 0x3c, 0xde, 0x22, 0xe4, + 0xae, 0xf0, 0x5b, 0xa4, 0x59, 0x3d, 0xdc, 0x2b, 0xf0, 0x2e, 0xd9, 0x82, 0x39, 0x7a, 0x77, 0x83, + 0xc1, 0x4c, 0x20, 0x28, 0xf5, 0x02, 0xa9, 0x1f, 0xbd, 0x4c, 0x26, 0xd2, 0x0f, 0x57, 0x46, 0xfe, + 0x1d, 0xe2, 0x15, 0xc4, 0x2b, 0x88, 0x57, 0x10, 0xaf, 0xc0, 0xc1, 0x2b, 0x48, 0xde, 0x99, 0xb4, + 0x77, 0x15, 0x9b, 0xba, 0xe4, 0xde, 0x98, 0xd5, 0x4b, 0xa6, 0xd3, 0x6f, 0xfb, 0x90, 0xa8, 0x43, + 0xc3, 0x87, 0x86, 0x0f, 0x0d, 0x1f, 0x20, 0xc3, 0x87, 0x44, 0xdd, 0xd2, 0x7f, 0x90, 0xa8, 0x53, + 0xc2, 0xc2, 0x54, 0x91, 0xa8, 0xcb, 0xb5, 0x45, 0x36, 0x80, 0xa8, 0x6b, 0xb4, 0xaa, 0x55, 0x24, + 0xea, 0xd6, 0x6d, 0xf4, 0xcd, 0x26, 0xea, 0x98, 0x2f, 0x98, 0x34, 0x82, 0x59, 0x92, 0x99, 0x30, + 0xb3, 0x00, 0x01, 0x0b, 0x02, 0x16, 0x04, 0x2c, 0x08, 0x58, 0x4a, 0x3a, 0xab, 0x2e, 0xbc, 0xa4, + 0xba, 0xf6, 0x10, 0xaf, 0x20, 0x5e, 0xc1, 0xc4, 0x02, 0xc4, 0x2b, 0x4b, 0x6c, 0x91, 0xfa, 0x5e, + 0x13, 0xe1, 0x0a, 0xc2, 0x95, 0xf5, 0x81, 0x2b, 0x43, 0x26, 0x64, 0x44, 0xdc, 0x4a, 0xde, 0xf6, + 0xee, 0x4b, 0x5b, 0xe5, 0xa7, 0x13, 0x22, 0xac, 0x40, 0x58, 0x81, 0xb0, 0x02, 0x61, 0x05, 0x18, + 0x58, 0x31, 0xab, 0xd7, 0x69, 0x22, 0x07, 0xe0, 0x50, 0xe3, 0x1c, 0xc9, 0x3b, 0x03, 0x8f, 0x2d, + 0x9e, 0x2b, 0x4a, 0x5e, 0x36, 0xe0, 0xb0, 0x6a, 0x28, 0x52, 0xfe, 0xb2, 0x3d, 0xd0, 0x54, 0xbc, + 0xfc, 0xc5, 0x09, 0x57, 0x5d, 0xd4, 0x5c, 0xfb, 0x53, 0x76, 0xb7, 0x00, 0x03, 0x26, 0xb3, 0x52, + 0xd5, 0x42, 0xa9, 0x52, 0x26, 0x55, 0xed, 0x5f, 0xa3, 0xbd, 0x4f, 0x2a, 0xce, 0x51, 0xe5, 0xb4, + 0xfb, 0xb3, 0xfa, 0xb6, 0xf9, 0xb0, 0xd3, 0xde, 0xd9, 0x7e, 0xfa, 0xbb, 0xf6, 0xce, 0xcf, 0xea, + 0xdb, 0xbd, 0x87, 0xed, 0xed, 0x67, 0xfe, 0xe7, 0xfd, 0x73, 0x63, 0xec, 0xfc, 0xda, 0xde, 0xde, + 0x4e, 0xe4, 0xe9, 0x91, 0x8c, 0xdd, 0x54, 0x6b, 0xdd, 0xf7, 0xf1, 0xc7, 0xf1, 0xdf, 0x53, 0x29, + 0x5d, 0xea, 0xcb, 0x3b, 0x06, 0x1a, 0x0e, 0xfc, 0x4e, 0x05, 0xfd, 0xb7, 0xdd, 0xfd, 0xb3, 0xbd, + 0xf3, 0xb3, 0xf5, 0x30, 0xf9, 0x1c, 0xff, 0xbd, 0xf3, 0x6b, 0x7b, 0xf7, 0xcd, 0xed, 0xed, 0xee, + 0xee, 0x9b, 0x9d, 0xf1, 0x83, 0x27, 0xdf, 0x7b, 0x33, 0xfe, 0xdf, 0xf7, 0xed, 0xf6, 0xc2, 0xaf, + 0x76, 0xb6, 0xff, 0xd8, 0x2d, 0x82, 0x5a, 0x81, 0x06, 0x82, 0x35, 0xb9, 0x7b, 0xe7, 0x2c, 0x94, + 0x47, 0x52, 0x0a, 0xbd, 0x2e, 0xdf, 0x05, 0xe3, 0x27, 0x6e, 0x7c, 0x8c, 0x77, 0x04, 0x8c, 0x79, + 0xe4, 0xba, 0x1a, 0xbd, 0xb1, 0x0b, 0x72, 0x67, 0x6e, 0xb2, 0x4b, 0x61, 0x53, 0x41, 0xed, 0x0f, + 0xf7, 0xc9, 0x54, 0xc8, 0x80, 0x54, 0xe2, 0xe2, 0x96, 0xa2, 0xc2, 0x6c, 0x73, 0x1c, 0xc8, 0x6c, + 0x4a, 0x64, 0x41, 0x90, 0x05, 0x41, 0x16, 0x04, 0x59, 0x10, 0x30, 0x2c, 0x08, 0x06, 0x57, 0xd7, + 0x08, 0xaa, 0x61, 0x70, 0x55, 0xdd, 0x7c, 0x18, 0x5c, 0x05, 0xbb, 0x45, 0xea, 0x7b, 0x78, 0x68, + 0x7b, 0x53, 0x70, 0xe5, 0x86, 0x55, 0x87, 0x54, 0xdc, 0x03, 0x60, 0x61, 0x7c, 0xad, 0x3d, 0x01, + 0x86, 0x42, 0x04, 0xef, 0x66, 0x85, 0xb2, 0xdf, 0x25, 0x05, 0x6e, 0xd7, 0xb4, 0xe9, 0x84, 0xc2, + 0xa5, 0x2b, 0x4f, 0x5f, 0x53, 0x45, 0x0a, 0x62, 0x7d, 0x67, 0x5c, 0x63, 0xd9, 0xe0, 0x67, 0xe6, + 0xc2, 0x12, 0xc2, 0x58, 0x42, 0x78, 0xd5, 0x28, 0x11, 0x4b, 0x08, 0x1b, 0x33, 0x12, 0xda, 0x4a, + 0x08, 0x6b, 0xaa, 0x78, 0xbe, 0x20, 0x4c, 0x5a, 0x2a, 0x9f, 0x6b, 0x56, 0x5f, 0x48, 0x86, 0x21, + 0x19, 0x86, 0x64, 0xd8, 0x3a, 0x92, 0x61, 0xba, 0xd4, 0xe1, 0x74, 0x82, 0xc9, 0x01, 0xac, 0x8a, + 0x4d, 0x2d, 0x41, 0x93, 0x35, 0xd0, 0xbc, 0x9f, 0x9f, 0x1e, 0xfe, 0x9a, 0x9b, 0x5b, 0xf3, 0x3e, + 0x33, 0x50, 0xbd, 0xc2, 0x30, 0x81, 0xa0, 0x5d, 0x65, 0x9b, 0x54, 0xdd, 0xc6, 0x55, 0xb8, 0x69, + 0x55, 0xbe, 0x32, 0x95, 0xbe, 0x32, 0xd5, 0xbe, 0x0a, 0x15, 0x6f, 0x88, 0x6e, 0xd2, 0x2c, 0x6f, + 0xda, 0xe3, 0x20, 0x0b, 0xd2, 0xa6, 0x3b, 0x1e, 0xf2, 0x54, 0x35, 0x1a, 0x60, 0x3a, 0x0d, 0xc5, + 0x47, 0x26, 0x7f, 0xcc, 0x68, 0x8f, 0x92, 0xe9, 0x78, 0x89, 0x61, 0x9b, 0xb6, 0x30, 0xad, 0xe1, + 0x62, 0x1a, 0xd3, 0x79, 0x57, 0x40, 0x91, 0x1b, 0xd2, 0x2e, 0x8f, 0xb7, 0x92, 0xc1, 0xb8, 0xca, + 0xba, 0x6c, 0x25, 0x63, 0x87, 0xd8, 0xd6, 0x62, 0x33, 0x6d, 0x15, 0x63, 0x16, 0xa8, 0x79, 0x89, + 0x1a, 0x85, 0xb9, 0x1c, 0x13, 0xe5, 0xb3, 0x08, 0x87, 0x39, 0xf4, 0xf6, 0x74, 0x62, 0x84, 0x53, + 0x08, 0xa7, 0x10, 0x4e, 0x21, 0x9c, 0x42, 0x38, 0x95, 0x48, 0x9b, 0x4b, 0x89, 0x23, 0xa8, 0x63, + 0xf2, 0xbc, 0xc9, 0xbe, 0x99, 0xf3, 0x26, 0x49, 0x80, 0xdd, 0xaa, 0x30, 0xa7, 0x3d, 0x17, 0x50, + 0x7f, 0xf2, 0x8b, 0xe4, 0x67, 0x3e, 0x7a, 0x1d, 0x50, 0x0d, 0x37, 0x28, 0xb2, 0x58, 0x73, 0x82, + 0xc5, 0x74, 0x1e, 0xa3, 0x89, 0x16, 0x8b, 0x29, 0x01, 0x5a, 0x72, 0x2f, 0xf4, 0xad, 0xb8, 0x8e, + 0x7c, 0xff, 0x50, 0x12, 0x69, 0xa0, 0x13, 0xea, 0x78, 0x1a, 0xe0, 0xa1, 0xcc, 0x3a, 0x86, 0x32, + 0xd7, 0xc6, 0x61, 0xc3, 0x50, 0xe6, 0xe6, 0x5a, 0x27, 0x0c, 0x65, 0xaa, 0x7d, 0x9d, 0x18, 0xca, + 0x44, 0xec, 0x8d, 0xd8, 0x1b, 0xb1, 0x37, 0x62, 0xef, 0x67, 0xa4, 0x0d, 0x43, 0x99, 0x79, 0xff, + 0x60, 0x28, 0x53, 0xcb, 0xb4, 0x18, 0xca, 0xd4, 0xbb, 0x95, 0x30, 0x94, 0x59, 0xf0, 0xcd, 0x84, + 0xa1, 0xcc, 0x95, 0xde, 0x3f, 0x86, 0x32, 0x11, 0x4e, 0x21, 0x9c, 0x42, 0x38, 0x85, 0x70, 0x6a, + 0x93, 0xe0, 0x14, 0x86, 0x32, 0x31, 0x94, 0x69, 0x72, 0xab, 0x6f, 0x4c, 0x28, 0x73, 0x1c, 0x61, + 0xc3, 0xf2, 0x02, 0xeb, 0xbf, 0x65, 0x56, 0xbd, 0x55, 0xca, 0x5a, 0xc2, 0xc8, 0x22, 0xb2, 0x24, + 0x4f, 0x94, 0xfc, 0xd9, 0x64, 0xce, 0x6f, 0x5f, 0xe2, 0x1b, 0xfe, 0xea, 0x12, 0xfe, 0xed, 0x2c, + 0x18, 0x36, 0xbf, 0x1d, 0x8d, 0xef, 0xf2, 0xdb, 0x57, 0x21, 0x82, 0x4f, 0xa3, 0xfb, 0xfb, 0x36, + 0xfd, 0xee, 0xf5, 0xe4, 0xf6, 0x36, 0xa0, 0x12, 0x82, 0x9e, 0xa8, 0xbb, 0xd6, 0x68, 0xbb, 0xf6, + 0x7a, 0x07, 0x75, 0xac, 0x77, 0x60, 0x0c, 0x2b, 0x60, 0xbd, 0x83, 0xe2, 0x59, 0x2d, 0x6d, 0xf5, + 0x0e, 0x88, 0x65, 0xd1, 0x40, 0x56, 0x3c, 0xdf, 0x36, 0x90, 0x28, 0x34, 0x3f, 0x99, 0xfe, 0x4e, + 0x8e, 0x0e, 0x71, 0x43, 0x8a, 0xe5, 0x46, 0x57, 0x46, 0xc6, 0x60, 0x5a, 0x12, 0x38, 0xb2, 0x05, + 0xd3, 0x92, 0x56, 0x46, 0xa6, 0x4c, 0xa5, 0xa5, 0xe7, 0xfb, 0x2e, 0x25, 0xdc, 0x44, 0xc7, 0x95, + 0xda, 0x06, 0xe7, 0xc6, 0x12, 0x7b, 0x48, 0x85, 0x64, 0x61, 0x9c, 0x85, 0x35, 0xc6, 0x66, 0x43, + 0xe2, 0x1a, 0xb0, 0x81, 0xcf, 0xcf, 0x8b, 0x8d, 0x8d, 0xd1, 0x18, 0xa2, 0x31, 0x44, 0x63, 0x88, + 0xc6, 0xb0, 0xf4, 0x34, 0x41, 0xab, 0xd6, 0x32, 0x60, 0x0b, 0x5b, 0x58, 0x7c, 0xfb, 0xf5, 0x07, + 0xc1, 0xe2, 0xdb, 0xea, 0xe6, 0xc3, 0xe2, 0xdb, 0x60, 0xb7, 0x48, 0xb3, 0x7a, 0x88, 0xd5, 0xb7, + 0xd7, 0x6e, 0xf4, 0x4d, 0x6e, 0x6d, 0x6c, 0x45, 0x42, 0x8c, 0xe0, 0xc4, 0xe4, 0x7c, 0x89, 0x81, + 0xfa, 0xa5, 0x4f, 0x67, 0x44, 0x68, 0x81, 0xd0, 0x02, 0xa1, 0x05, 0x42, 0x0b, 0x50, 0xd0, 0x02, + 0xdb, 0xfa, 0x20, 0xb2, 0x30, 0xe6, 0x36, 0x56, 0x11, 0x59, 0x20, 0xb2, 0xf8, 0xfd, 0x16, 0xc1, + 0xb6, 0x3e, 0x08, 0x2c, 0xd6, 0x0a, 0x58, 0x04, 0x82, 0x52, 0x2f, 0x90, 0xfa, 0xf1, 0xc4, 0x64, + 0x22, 0xfd, 0x71, 0x90, 0x91, 0x77, 0x87, 0x68, 0x05, 0xd1, 0x0a, 0xa2, 0x15, 0x44, 0x2b, 0x70, + 0xd0, 0x0a, 0x66, 0x05, 0x98, 0xb4, 0x77, 0x15, 0x9b, 0xba, 0xe4, 0xde, 0x98, 0xd5, 0x4b, 0xa6, + 0xd3, 0x6f, 0xfb, 0x30, 0x03, 0x00, 0x0d, 0x1f, 0x1a, 0x3e, 0x34, 0x7c, 0x80, 0x0c, 0x1f, 0x66, + 0x00, 0x2c, 0xfd, 0x07, 0x79, 0x3a, 0x25, 0x24, 0x0c, 0xf2, 0x74, 0xf9, 0xb6, 0xc8, 0x06, 0xf0, + 0x74, 0x8d, 0x56, 0xb5, 0x8a, 0x44, 0xdd, 0xba, 0x8d, 0xbe, 0xd9, 0x44, 0x9d, 0xa9, 0xc8, 0xbf, + 0xee, 0x88, 0x3f, 0xa6, 0x2c, 0x23, 0x60, 0x41, 0xc0, 0x82, 0x80, 0x05, 0x32, 0x60, 0xc1, 0xbc, + 0x02, 0xc4, 0x2b, 0xc6, 0x9c, 0x51, 0xcc, 0x58, 0x46, 0xbc, 0xf2, 0xca, 0x16, 0x31, 0x56, 0xfb, + 0x11, 0xe1, 0x0a, 0xc2, 0x95, 0x65, 0xb6, 0xc9, 0x90, 0x09, 0x19, 0x11, 0xb7, 0x92, 0x14, 0xb6, + 0xd1, 0x8f, 0x5a, 0x9e, 0x4e, 0x88, 0xb0, 0x02, 0x61, 0x05, 0xc2, 0x0a, 0x84, 0x15, 0x60, 0x60, + 0x05, 0x0b, 0x34, 0xeb, 0xae, 0x79, 0xfd, 0x55, 0x3b, 0xd4, 0x38, 0x47, 0xf2, 0xce, 0xc0, 0x63, + 0x8b, 0xd9, 0xca, 0x0c, 0x9b, 0x06, 0xd6, 0x66, 0x61, 0x8d, 0x0e, 0xcc, 0x94, 0xbe, 0x94, 0x54, + 0x70, 0x63, 0xed, 0x04, 0xca, 0xdb, 0xdb, 0x37, 0xd5, 0xca, 0x61, 0xf7, 0xd7, 0x4d, 0xad, 0x72, + 0xd8, 0x1d, 0x7f, 0xac, 0xc5, 0xff, 0x8c, 0x3f, 0xd7, 0x6f, 0xaa, 0x95, 0xe6, 0xe4, 0xf3, 0xde, + 0x4d, 0xb5, 0xb2, 0xd7, 0xdd, 0xb9, 0xbd, 0xdd, 0xdd, 0xf9, 0xd9, 0x78, 0x48, 0x7f, 0xe1, 0xf6, + 0x1f, 0x37, 0xb7, 0xb7, 0xc1, 0xcf, 0xcf, 0x0f, 0xa3, 0xbf, 0xcf, 0x1f, 0xba, 0x7f, 0xee, 0xbc, + 0x2f, 0x43, 0xaf, 0xe8, 0xfd, 0xb6, 0x40, 0x52, 0xd5, 0x42, 0xa9, 0x52, 0x26, 0x55, 0xed, 0x5f, + 0xa3, 0xbd, 0x4f, 0x2a, 0xce, 0x51, 0xe5, 0xb4, 0xfb, 0xb3, 0xfa, 0xb6, 0xf9, 0xb0, 0xd3, 0xde, + 0xd9, 0x7e, 0xfa, 0xbb, 0xf6, 0xce, 0xcf, 0xea, 0xdb, 0xbd, 0x87, 0xed, 0xed, 0x67, 0xfe, 0xe7, + 0xfd, 0x73, 0x63, 0xec, 0xfc, 0xda, 0xde, 0xde, 0x4e, 0xe4, 0xe9, 0x91, 0x8c, 0xdd, 0x54, 0x6b, + 0xdd, 0xf7, 0xf1, 0xc7, 0xf1, 0xdf, 0x53, 0x29, 0x5d, 0xea, 0xcb, 0x3b, 0xcf, 0xca, 0xe6, 0x5b, + 0x63, 0x2a, 0xe8, 0xbf, 0xed, 0xee, 0x9f, 0xed, 0x9d, 0x9f, 0xad, 0x87, 0xc9, 0xe7, 0xf8, 0xef, + 0x9d, 0x5f, 0xdb, 0xbb, 0x6f, 0x6e, 0x6f, 0x77, 0x77, 0xdf, 0xec, 0x8c, 0x1f, 0x3c, 0xf9, 0xde, + 0x9b, 0xf1, 0xff, 0xbe, 0x6f, 0xb7, 0x17, 0x7e, 0xb5, 0xb3, 0xfd, 0xc7, 0x6e, 0x11, 0xd4, 0x0a, + 0x34, 0x10, 0xac, 0xc9, 0xdd, 0x3b, 0x67, 0xa1, 0x3c, 0x92, 0x52, 0x73, 0x87, 0xba, 0x0b, 0xc6, + 0x4f, 0xdc, 0xb8, 0x3e, 0xd0, 0x08, 0x18, 0xf3, 0xc8, 0x75, 0x35, 0x7a, 0x63, 0x17, 0xe4, 0xce, + 0xdc, 0x64, 0x97, 0xc2, 0xa6, 0x82, 0xda, 0x1f, 0xee, 0x93, 0xa9, 0x90, 0x01, 0xa9, 0xc4, 0x55, + 0x7f, 0x45, 0x85, 0xd9, 0xe6, 0x38, 0x90, 0xd9, 0x94, 0xc8, 0x82, 0x20, 0x0b, 0x82, 0x2c, 0x08, + 0xb2, 0x20, 0x60, 0x58, 0x10, 0x0c, 0xae, 0xae, 0x11, 0x54, 0xc3, 0xe0, 0xaa, 0xba, 0xf9, 0x30, + 0xb8, 0x0a, 0x76, 0x8b, 0xe0, 0xa1, 0xed, 0xcd, 0xc1, 0x95, 0xd8, 0x2c, 0x45, 0xe9, 0xf8, 0x46, + 0x9b, 0xa5, 0x68, 0x68, 0xa2, 0xb3, 0x9e, 0x0d, 0x48, 0xf4, 0x43, 0x4b, 0x63, 0x90, 0x52, 0x93, + 0x4e, 0xd7, 0x06, 0x21, 0xb1, 0x31, 0xc9, 0x3a, 0x40, 0x44, 0x6c, 0x4c, 0x62, 0xcc, 0x42, 0x68, + 0x83, 0x7e, 0x06, 0x9a, 0x0a, 0xea, 0x6c, 0x22, 0x38, 0x6d, 0x1a, 0xb8, 0xbb, 0xfb, 0x6e, 0x6c, + 0xd2, 0xde, 0x2d, 0xea, 0xca, 0x75, 0xb5, 0x45, 0x5b, 0x6b, 0xb4, 0xd3, 0x46, 0x4a, 0x43, 0xa7, + 0xa5, 0xd1, 0xc3, 0xe9, 0x6b, 0xe5, 0xf0, 0xb5, 0x72, 0xf6, 0x7a, 0x38, 0x7a, 0x55, 0x9b, 0x41, + 0x93, 0x43, 0x6a, 0xd4, 0x11, 0x2d, 0x2b, 0xed, 0x35, 0x97, 0xb1, 0x35, 0x9f, 0x1a, 0xdd, 0x93, + 0x5f, 0x53, 0xe4, 0x1b, 0x21, 0xe7, 0xb6, 0x52, 0xbd, 0x9d, 0xf4, 0x6f, 0xa3, 0x7c, 0xcb, 0x96, + 0xfd, 0x65, 0x67, 0xbb, 0x32, 0xe3, 0xf2, 0x4c, 0x54, 0x7e, 0x66, 0x27, 0x57, 0x8d, 0x4e, 0x57, + 0xaa, 0xc3, 0x95, 0xea, 0x6c, 0x35, 0x3a, 0x3a, 0xeb, 0xea, 0x1c, 0x45, 0xfd, 0xd1, 0x63, 0x50, + 0x3b, 0x17, 0x87, 0x9d, 0x4f, 0xda, 0xa6, 0xde, 0xe1, 0x52, 0x3d, 0x99, 0x47, 0x52, 0xd5, 0x9e, + 0x97, 0xb0, 0xd8, 0x55, 0x6f, 0xc7, 0x72, 0x36, 0xfe, 0x38, 0x93, 0xb6, 0x47, 0x3f, 0xe7, 0x54, + 0xd5, 0xe5, 0x63, 0x1a, 0x5a, 0x82, 0x05, 0x89, 0x82, 0x29, 0x1f, 0xd9, 0x36, 0x1b, 0x7d, 0x26, + 0x6e, 0xe9, 0xac, 0x53, 0x1a, 0xcd, 0x51, 0x72, 0x88, 0xc7, 0xdc, 0xfb, 0xd2, 0x58, 0x4b, 0x44, + 0x22, 0xd6, 0x45, 0x25, 0xc7, 0x17, 0xb7, 0x7c, 0xf6, 0x48, 0x79, 0xef, 0x42, 0x4d, 0x73, 0x4f, + 0x65, 0x98, 0x59, 0x25, 0x46, 0x56, 0x8e, 0x89, 0x55, 0x63, 0x60, 0x6d, 0x98, 0x57, 0x1b, 0xc6, + 0xd5, 0x81, 0x69, 0x57, 0x6b, 0xe5, 0x55, 0x35, 0xcf, 0x2c, 0xc7, 0x16, 0x58, 0xd9, 0xce, 0x98, + 0x72, 0x68, 0xa3, 0x51, 0x15, 0xad, 0xdd, 0x13, 0x85, 0x73, 0xc2, 0x2d, 0xd7, 0x0f, 0x19, 0xef, + 0x8f, 0x14, 0x8c, 0x24, 0x8c, 0x53, 0x31, 0x52, 0x2e, 0xa5, 0xaf, 0x5f, 0xbe, 0x74, 0x4a, 0xb1, + 0x33, 0x1a, 0x96, 0x06, 0x84, 0xdb, 0x2e, 0xb5, 0x4b, 0xbd, 0xfb, 0x92, 0x1c, 0xb0, 0xf0, 0x96, + 0x9f, 0x75, 0x4a, 0x53, 0xdd, 0xa3, 0xea, 0xbe, 0xd4, 0xf6, 0x17, 0x56, 0x4e, 0xdf, 0xe9, 0xa0, + 0xed, 0xb4, 0xd1, 0x75, 0xba, 0x68, 0x3a, 0xed, 0xf4, 0x9c, 0x76, 0x5a, 0x4e, 0x27, 0x1d, 0xf7, + 0x50, 0x0c, 0xc0, 0x64, 0x18, 0x01, 0x74, 0xb3, 0xfa, 0x98, 0x6a, 0x80, 0x99, 0x56, 0x40, 0x96, + 0x43, 0x3a, 0xd2, 0xe2, 0xf6, 0x6c, 0xdb, 0x38, 0xfd, 0x92, 0xa5, 0xbb, 0x22, 0xa5, 0x5d, 0xce, + 0xbb, 0xa8, 0x5a, 0x16, 0x33, 0xdd, 0x9b, 0x5d, 0xfe, 0xfd, 0xa4, 0x78, 0x37, 0x65, 0x6b, 0x62, + 0xcd, 0xd2, 0xbd, 0x93, 0x59, 0x2f, 0x9e, 0xf1, 0xf5, 0x29, 0x57, 0x23, 0x9b, 0x49, 0xce, 0x6c, + 0x7a, 0xf3, 0x98, 0xd8, 0xdc, 0xa6, 0x34, 0xaf, 0xc9, 0x54, 0x66, 0x1a, 0x95, 0x99, 0x40, 0x15, + 0xa6, 0x4e, 0xaf, 0xb4, 0x67, 0xf5, 0xba, 0xcb, 0x94, 0x93, 0x9e, 0x4b, 0xb3, 0x07, 0xad, 0xa7, + 0xbb, 0x65, 0x32, 0x50, 0xc6, 0x37, 0xac, 0xa6, 0x66, 0x7c, 0xce, 0x08, 0x76, 0x6e, 0x57, 0x57, + 0x85, 0x6b, 0xab, 0xcc, 0x95, 0x55, 0xe5, 0xba, 0x2a, 0x77, 0x55, 0x95, 0xbb, 0xa6, 0x2a, 0x5d, + 0x51, 0xb3, 0xe4, 0x6b, 0xee, 0x88, 0xae, 0xc2, 0x9a, 0xe5, 0x39, 0x6b, 0x92, 0x67, 0x70, 0x80, + 0x32, 0xd8, 0x16, 0x4f, 0x46, 0xf9, 0x75, 0xd5, 0x68, 0x10, 0x54, 0x30, 0xa8, 0x60, 0x50, 0xc1, + 0xa4, 0xd8, 0x2d, 0xb9, 0x6b, 0x43, 0x2b, 0xa8, 0xfd, 0xac, 0x28, 0x9d, 0x5f, 0x01, 0x3b, 0xa9, + 0x32, 0x1d, 0x5f, 0x71, 0xde, 0xdd, 0x34, 0x57, 0xba, 0xa5, 0xe8, 0x78, 0xb5, 0x8e, 0x54, 0x68, + 0x05, 0x39, 0x0a, 0x4a, 0xf3, 0xdd, 0x27, 0x6b, 0xd0, 0x50, 0xbc, 0x06, 0xd5, 0x35, 0x5e, 0x82, + 0x15, 0x91, 0x5b, 0x5d, 0xe4, 0x57, 0xd4, 0xf2, 0x2b, 0x09, 0x25, 0xb1, 0x06, 0xe4, 0x0a, 0xa7, + 0xac, 0x3f, 0xe8, 0xf9, 0x22, 0xcc, 0xce, 0xaf, 0xcc, 0x86, 0x40, 0x8a, 0x05, 0x29, 0x96, 0x22, + 0x50, 0x2c, 0x93, 0x1d, 0x9d, 0x1f, 0xb7, 0x4c, 0x47, 0xca, 0x07, 0x5e, 0x6a, 0x08, 0x5e, 0x10, + 0xbc, 0x40, 0x00, 0x2f, 0x79, 0x73, 0x09, 0xb2, 0x92, 0xfd, 0x2f, 0x6e, 0xba, 0x4c, 0xe4, 0xbf, + 0x62, 0x31, 0x54, 0x26, 0x8e, 0x2a, 0xc5, 0x52, 0xb9, 0x78, 0xaa, 0x16, 0x53, 0x6d, 0xe2, 0xaa, + 0x4d, 0x6c, 0x75, 0x88, 0xaf, 0x22, 0xd7, 0x7f, 0x5d, 0x52, 0x84, 0x98, 0x86, 0x04, 0x21, 0x65, + 0xd9, 0x23, 0xaa, 0x51, 0x3d, 0xa6, 0xe1, 0x60, 0x1a, 0x8e, 0x21, 0xf5, 0xa0, 0x46, 0x4d, 0x28, + 0xa4, 0x7a, 0x4a, 0x5a, 0x4e, 0xbf, 0x3d, 0x5b, 0x54, 0xb4, 0xc2, 0xfd, 0xca, 0xff, 0x7c, 0xae, + 0xb2, 0x6b, 0xb5, 0x8e, 0x72, 0x87, 0xda, 0xca, 0x1a, 0xae, 0xbc, 0x28, 0xa8, 0x62, 0xf1, 0x18, + 0x4d, 0x78, 0x7b, 0xbb, 0xdb, 0x7d, 0xa3, 0x4e, 0x2c, 0xba, 0xeb, 0x92, 0x9d, 0xa6, 0xc0, 0xbd, + 0x72, 0x19, 0xff, 0x5e, 0x71, 0xc9, 0x3d, 0x15, 0xca, 0xcb, 0xc3, 0xcf, 0x0e, 0x95, 0x2e, 0xce, + 0x81, 0x26, 0x16, 0x4d, 0x2c, 0x9a, 0xd8, 0x0d, 0x32, 0xb1, 0xc1, 0xe0, 0x3e, 0xd4, 0x50, 0x61, + 0x18, 0x98, 0x69, 0x9d, 0x2f, 0xe9, 0x5b, 0x7f, 0xd8, 0x6e, 0x3f, 0xfe, 0x79, 0xe7, 0x8d, 0xca, + 0xe2, 0xb5, 0x5d, 0x3c, 0x74, 0xba, 0xde, 0x87, 0x4e, 0xa7, 0x91, 0x8e, 0xe9, 0xa7, 0x4c, 0x91, + 0x1c, 0x75, 0xef, 0x3b, 0xc7, 0xbb, 0x56, 0x01, 0xc5, 0xd5, 0x41, 0x70, 0x45, 0x7e, 0x01, 0x32, + 0x6c, 0xc8, 0xb0, 0xc1, 0xd4, 0x7a, 0xca, 0xec, 0xb8, 0x86, 0xc2, 0x30, 0x2a, 0x0b, 0xc1, 0xcc, + 0x17, 0x7e, 0x19, 0x9f, 0x25, 0x4e, 0xca, 0xbf, 0x4c, 0xce, 0x1c, 0x43, 0x54, 0xa5, 0xe3, 0xd2, + 0x69, 0xca, 0xb4, 0xe9, 0x78, 0xb8, 0x35, 0x0b, 0x59, 0xd4, 0x51, 0xa1, 0xa2, 0x42, 0x05, 0xa4, + 0x50, 0x31, 0x64, 0x81, 0x7c, 0x0a, 0xf2, 0x29, 0xc8, 0xa7, 0xac, 0x0d, 0x9f, 0x82, 0x21, 0x8b, + 0x79, 0x5e, 0x05, 0x43, 0x16, 0x50, 0xc8, 0x20, 0x0c, 0x59, 0xa0, 0x89, 0x45, 0x13, 0x8b, 0x26, + 0x16, 0x43, 0x16, 0x18, 0xb2, 0x28, 0xb4, 0x95, 0xf2, 0x05, 0xeb, 0xab, 0x3c, 0x23, 0x36, 0xd5, + 0xa1, 0xe3, 0x71, 0xd1, 0x1a, 0xa1, 0x35, 0x42, 0x6b, 0xb4, 0x41, 0xd6, 0x68, 0x12, 0x23, 0xac, + 0x28, 0x55, 0x00, 0x8f, 0x0c, 0x52, 0x53, 0xe1, 0x98, 0x27, 0x3c, 0xf2, 0x46, 0x2f, 0xe2, 0x01, + 0xa3, 0xd0, 0xe0, 0xa2, 0xd0, 0x0a, 0x7a, 0xb7, 0x60, 0xf1, 0xe3, 0x54, 0xa3, 0x60, 0xf1, 0x63, + 0x9d, 0x62, 0xa3, 0x57, 0x5c, 0x4c, 0x54, 0xa6, 0xfb, 0x3c, 0x99, 0x0b, 0x8f, 0x4e, 0x6b, 0x5a, + 0xce, 0x75, 0x38, 0x3d, 0x9d, 0x2d, 0xf0, 0x9b, 0x2b, 0xd0, 0x9b, 0xfb, 0xd4, 0x74, 0x1d, 0x4f, + 0x4d, 0xaf, 0xd0, 0xe1, 0xc6, 0xc2, 0x74, 0xaf, 0xef, 0x16, 0x2c, 0x4c, 0x87, 0x47, 0xaf, 0x57, + 0x05, 0x84, 0xb1, 0x6e, 0x14, 0x16, 0xa6, 0x4b, 0xf3, 0xae, 0xb0, 0x30, 0x1d, 0x2a, 0x18, 0x54, + 0x30, 0x29, 0x77, 0x0b, 0x16, 0xa6, 0x7b, 0x42, 0x25, 0x60, 0x61, 0xba, 0xd5, 0x51, 0x7d, 0x25, + 0x2c, 0x4c, 0x87, 0x85, 0xe9, 0x90, 0x5d, 0x19, 0xb3, 0x2b, 0x19, 0x88, 0x64, 0x3d, 0xcc, 0x4a, + 0xc4, 0x79, 0xe4, 0xf5, 0xa8, 0xc8, 0x80, 0x27, 0x67, 0x66, 0x66, 0x36, 0xc6, 0x86, 0x54, 0xa6, + 0x73, 0x90, 0x63, 0x79, 0xce, 0xc5, 0x72, 0x0a, 0xc3, 0xb1, 0xe4, 0x2c, 0x8f, 0xa5, 0xa6, 0x2c, + 0x56, 0xe1, 0xaa, 0xd2, 0x39, 0x88, 0x5c, 0x0c, 0x89, 0xd5, 0x6a, 0x90, 0x4b, 0xee, 0xaa, 0x74, + 0x79, 0xa9, 0x4d, 0xc5, 0x14, 0xe7, 0xec, 0xc1, 0x66, 0x54, 0xa7, 0x43, 0xdc, 0x90, 0xe2, 0x29, + 0x5c, 0xfd, 0x02, 0xaf, 0x5a, 0xf0, 0xb5, 0x29, 0x00, 0x6d, 0x8a, 0x40, 0x87, 0x42, 0x50, 0x84, + 0x24, 0xd6, 0xee, 0x14, 0x6e, 0x7e, 0x2e, 0x75, 0xc1, 0xea, 0xd6, 0x36, 0x22, 0xcf, 0x63, 0x0d, + 0x33, 0x09, 0x66, 0x78, 0x22, 0x57, 0xd9, 0x07, 0x33, 0xec, 0xf6, 0xf4, 0x39, 0x2a, 0x82, 0x3a, + 0xf9, 0x1d, 0xc6, 0xc7, 0xc3, 0xa1, 0xdf, 0x88, 0x7e, 0x23, 0xfa, 0x8d, 0xda, 0xe1, 0x9a, 0x5a, + 0xd8, 0xa6, 0x48, 0x0c, 0xd1, 0xcb, 0x43, 0x2f, 0x0f, 0xb6, 0x97, 0xa7, 0xae, 0x34, 0xc0, 0xb4, + 0x0f, 0xb8, 0xfa, 0x0a, 0x01, 0x9a, 0x5a, 0x8c, 0x6f, 0xec, 0xb9, 0x11, 0x07, 0xcf, 0x8d, 0xac, + 0xe2, 0xdc, 0x88, 0x83, 0xe7, 0x46, 0xd2, 0xee, 0x56, 0x75, 0x85, 0x9b, 0x16, 0x2c, 0xfe, 0xbe, + 0xda, 0x03, 0x8c, 0x09, 0xa4, 0x1a, 0x2d, 0x73, 0x7b, 0x0e, 0x42, 0x3d, 0xf9, 0x45, 0xf2, 0x73, + 0x9c, 0x33, 0x5d, 0xa0, 0xe3, 0x82, 0x61, 0xd4, 0xd3, 0xa8, 0xff, 0x1f, 0x8d, 0x8e, 0x26, 0x00, + 0x4d, 0x00, 0x9a, 0x00, 0x34, 0x01, 0x60, 0x4d, 0xc0, 0xcd, 0xcc, 0x04, 0xfc, 0x3f, 0x2b, 0x12, + 0x82, 0x72, 0xb9, 0xbd, 0xf3, 0x6e, 0x77, 0x77, 0xc6, 0xb6, 0x75, 0x93, 0x4b, 0xe6, 0xf5, 0x5e, + 0xf8, 0xcc, 0xef, 0xa6, 0x23, 0xdb, 0xf4, 0xae, 0x8c, 0x27, 0x15, 0xd7, 0xfb, 0xa4, 0xe2, 0x1c, + 0x61, 0xfa, 0x88, 0x3f, 0x04, 0x5c, 0x35, 0x17, 0x4b, 0x3d, 0x22, 0x9f, 0x83, 0x7c, 0x0e, 0xf2, + 0x39, 0xc8, 0xe7, 0xa0, 0x33, 0x8f, 0xce, 0x3c, 0x3a, 0xf3, 0xc8, 0xe7, 0x20, 0x9f, 0x83, 0x7c, + 0x0e, 0x9a, 0x00, 0x34, 0x01, 0x68, 0x02, 0x90, 0xcf, 0x41, 0x3e, 0x67, 0x33, 0xf9, 0x9c, 0x0d, + 0xaa, 0x3f, 0xb5, 0xde, 0x79, 0x89, 0x2a, 0xd2, 0xf4, 0x4a, 0x69, 0xea, 0x1c, 0xfd, 0x35, 0x9d, + 0xfb, 0xdb, 0xf4, 0x4b, 0x5f, 0xa8, 0xb3, 0xce, 0x99, 0x91, 0xf9, 0x28, 0x3c, 0x25, 0xd4, 0x9d, + 0xb2, 0x4c, 0xc8, 0x3a, 0x66, 0x42, 0xea, 0x73, 0xb5, 0x30, 0x13, 0x52, 0x19, 0xc5, 0x86, 0x27, + 0x68, 0x56, 0x83, 0xc5, 0x90, 0x8b, 0x5f, 0x6b, 0x8c, 0x85, 0x27, 0x68, 0x5e, 0xdf, 0x6d, 0x78, + 0x82, 0xa6, 0x90, 0x9e, 0x6a, 0x0e, 0xc8, 0x80, 0xf5, 0x1b, 0x96, 0x78, 0xc1, 0xe5, 0x4c, 0x9e, + 0x71, 0x5a, 0xa7, 0x5f, 0x5b, 0xa9, 0x88, 0x2d, 0x85, 0x0b, 0x95, 0x75, 0x81, 0x14, 0x2e, 0x4c, + 0x39, 0x55, 0x51, 0xd1, 0xa5, 0x56, 0x61, 0xb9, 0x57, 0xff, 0xfa, 0x8b, 0x5c, 0xe2, 0x25, 0x96, + 0x59, 0x30, 0x6c, 0x2d, 0xfd, 0xea, 0xe6, 0x3b, 0x5e, 0x2d, 0x5b, 0xe4, 0x29, 0x25, 0x20, 0x4a, + 0xed, 0x1f, 0x65, 0xf1, 0x83, 0x32, 0x17, 0x37, 0xcb, 0xea, 0xd7, 0xe4, 0xf6, 0x5f, 0x72, 0xfb, + 0x29, 0x79, 0x8a, 0x93, 0xa9, 0x15, 0xd9, 0xb4, 0x80, 0xa3, 0x9c, 0xb4, 0x7d, 0xa1, 0x61, 0xf6, + 0x7a, 0x31, 0xb3, 0x21, 0x36, 0xa4, 0x5c, 0x0c, 0x96, 0xe4, 0x2d, 0x15, 0xbb, 0x24, 0x6f, 0xde, + 0x6e, 0x6b, 0x4f, 0x45, 0x03, 0x0f, 0xfe, 0x62, 0xa9, 0x4b, 0xb3, 0x82, 0x05, 0x94, 0xee, 0xc2, + 0x83, 0xbf, 0xab, 0x24, 0xa7, 0xb0, 0x27, 0xb8, 0x16, 0x72, 0x0a, 0x7b, 0x82, 0xcf, 0xf0, 0x10, + 0xf6, 0x04, 0x5f, 0x0b, 0xb1, 0xd7, 0x26, 0xfe, 0xba, 0xd4, 0x80, 0x76, 0x75, 0xa0, 0x5d, 0x2d, + 0xe8, 0x54, 0x0f, 0x6a, 0xd4, 0x84, 0x22, 0x75, 0x31, 0x7d, 0x50, 0xad, 0x3d, 0xc1, 0x5b, 0xd8, + 0x13, 0x3c, 0x19, 0x78, 0x7b, 0xbb, 0xfd, 0x6b, 0xbe, 0x57, 0x69, 0xf5, 0x6d, 0xf3, 0x61, 0xa7, + 0xbd, 0xb3, 0xfd, 0xf4, 0x77, 0xed, 0x9d, 0x9f, 0xd5, 0xb7, 0x7b, 0x0f, 0xdb, 0xdb, 0xcf, 0xfc, + 0xcf, 0xfb, 0xe7, 0xc6, 0xd8, 0xf9, 0xb5, 0xbd, 0xbd, 0x9d, 0x74, 0x03, 0x7f, 0xd4, 0x21, 0xfc, + 0xa6, 0x5a, 0xeb, 0xbe, 0x8f, 0x3f, 0x8e, 0xff, 0x9e, 0xf6, 0x18, 0x5f, 0xea, 0xcb, 0x3b, 0x26, + 0x3a, 0x8b, 0x6f, 0x6f, 0xdf, 0xfc, 0xb7, 0xdd, 0xfd, 0xb3, 0xbd, 0xf3, 0xb3, 0xf5, 0x30, 0xf9, + 0x1c, 0xff, 0xbd, 0xf3, 0x6b, 0x7b, 0xf7, 0xcd, 0xed, 0xed, 0xee, 0xee, 0x9b, 0x9d, 0xf1, 0x03, + 0x26, 0xdf, 0x7b, 0x33, 0xfe, 0xdf, 0xf7, 0xed, 0xf6, 0xc2, 0xaf, 0x76, 0xb6, 0xff, 0xd8, 0xd5, + 0xd4, 0xfc, 0x7c, 0xfc, 0xbe, 0xdb, 0xd8, 0x03, 0xfd, 0xc5, 0xb7, 0x34, 0x56, 0xf2, 0x15, 0x97, + 0xf2, 0x7e, 0x4c, 0x27, 0x2b, 0xf6, 0x1e, 0x1e, 0x0f, 0x8f, 0x8e, 0x04, 0x3a, 0x12, 0xe8, 0x48, + 0x6c, 0x90, 0x23, 0x11, 0x31, 0x2e, 0x0f, 0x34, 0x78, 0x0e, 0x7b, 0x0a, 0x87, 0x54, 0xd3, 0x70, + 0xe3, 0xe9, 0x1f, 0xb5, 0xd2, 0x54, 0x52, 0xdd, 0x90, 0x43, 0xb3, 0x4e, 0x5d, 0x18, 0x5e, 0x71, + 0xb3, 0x88, 0x85, 0xf1, 0x35, 0x34, 0x8f, 0xd0, 0x24, 0x6d, 0x8f, 0x97, 0x94, 0xdc, 0x81, 0x5f, + 0xd2, 0x5a, 0xfd, 0x00, 0xf0, 0xa2, 0x6e, 0xad, 0xe7, 0x68, 0x5d, 0x3c, 0x73, 0xb0, 0xce, 0x67, + 0x0e, 0x5a, 0xef, 0xa6, 0x41, 0xd9, 0xc9, 0x27, 0xc0, 0xc5, 0x23, 0x14, 0xd0, 0x86, 0xea, 0xe8, + 0xc2, 0x8d, 0x49, 0x55, 0xc5, 0x68, 0xc0, 0xba, 0x7a, 0xe9, 0x45, 0x4b, 0x55, 0x55, 0x77, 0xcc, + 0x4f, 0xe5, 0xf1, 0xbe, 0xe9, 0xb1, 0xbe, 0xdd, 0xdd, 0xf8, 0xb4, 0x5d, 0xd0, 0x1e, 0x6b, 0xd0, + 0xe4, 0x87, 0xbc, 0x0b, 0x89, 0x75, 0x78, 0x9e, 0xae, 0x59, 0xd1, 0xeb, 0xf0, 0xa0, 0x42, 0x45, + 0x85, 0xfa, 0xdc, 0x03, 0x61, 0x78, 0x75, 0x95, 0xfe, 0x93, 0x0e, 0xb1, 0xd7, 0x26, 0xfe, 0xba, + 0xd4, 0x80, 0x76, 0x75, 0xa0, 0x5d, 0x2d, 0xe8, 0x54, 0x0f, 0x6a, 0xe1, 0x33, 0x86, 0x57, 0x31, + 0xbc, 0x8a, 0xe1, 0x55, 0x0c, 0xaf, 0xae, 0x45, 0x78, 0xd5, 0x17, 0xac, 0xaf, 0xb2, 0x8f, 0xf6, + 0xd4, 0xe0, 0x8d, 0xc7, 0x45, 0xd7, 0x01, 0x5d, 0x07, 0x74, 0x1d, 0x36, 0xca, 0x75, 0x98, 0x3a, + 0x0e, 0x4a, 0x55, 0xc0, 0x23, 0xbf, 0xa1, 0xa9, 0x70, 0xcc, 0x13, 0x1e, 0x79, 0xa3, 0x57, 0xf1, + 0x80, 0x39, 0x33, 0xcb, 0xae, 0x31, 0xe6, 0xcc, 0xa0, 0x8a, 0x47, 0x15, 0xbf, 0xb1, 0x2a, 0x1e, + 0x73, 0x66, 0x14, 0xee, 0x47, 0xcc, 0x99, 0x79, 0x79, 0x7c, 0xcc, 0x99, 0x59, 0xd9, 0x92, 0x62, + 0xce, 0x8c, 0x86, 0xd1, 0x8a, 0xc4, 0x1b, 0x84, 0x92, 0xc8, 0x28, 0xd4, 0x50, 0xef, 0x79, 0x3c, + 0x2e, 0x3a, 0x95, 0xe8, 0x54, 0xa2, 0x53, 0xb9, 0x41, 0x4e, 0x25, 0xe5, 0x91, 0x47, 0xc5, 0x38, + 0x95, 0x0e, 0x19, 0x03, 0x83, 0x23, 0x6c, 0x54, 0x0a, 0xe4, 0x6a, 0xeb, 0x2d, 0xe7, 0x48, 0xdb, + 0x19, 0x0a, 0xa1, 0x30, 0x07, 0x32, 0x1e, 0x0d, 0x6b, 0x22, 0x18, 0x33, 0xa1, 0x98, 0xb4, 0x83, + 0x49, 0x3b, 0xbf, 0x15, 0xed, 0x4a, 0x5f, 0xf8, 0x91, 0x86, 0xe4, 0x9d, 0xb9, 0xb1, 0xd5, 0x7a, + 0xd4, 0x35, 0xf4, 0xa8, 0xd1, 0xa3, 0x46, 0x8f, 0x3a, 0xff, 0x83, 0xaa, 0x52, 0x23, 0xd3, 0x01, + 0x15, 0x55, 0x50, 0x7a, 0x51, 0x08, 0x94, 0x54, 0x54, 0xd2, 0xac, 0x56, 0xb4, 0xa9, 0x17, 0x9d, + 0x6a, 0x46, 0xbb, 0xba, 0xd1, 0xad, 0x76, 0x8c, 0xa9, 0x1f, 0x63, 0x6a, 0xc8, 0x84, 0x3a, 0x52, + 0xab, 0x96, 0x14, 0xab, 0x27, 0x6d, 0x6a, 0x6a, 0x3a, 0x30, 0xb1, 0x2c, 0x1a, 0xc8, 0x8a, 0xe7, + 0xdb, 0x1a, 0x37, 0xe4, 0xb4, 0x1a, 0xe3, 0xdc, 0x64, 0x9a, 0x76, 0x8a, 0xe2, 0xbe, 0x08, 0xaf, + 0x29, 0x4c, 0x5d, 0x71, 0x00, 0x5d, 0x8a, 0xd3, 0x84, 0x02, 0x35, 0xa6, 0x48, 0x4d, 0x29, 0x54, + 0xe3, 0x8a, 0xd5, 0xb8, 0x82, 0x35, 0xa9, 0x68, 0xf5, 0x28, 0x5c, 0x4d, 0x8a, 0x77, 0xfa, 0x62, + 0x94, 0x33, 0xaf, 0x2f, 0x4a, 0x8b, 0xba, 0xbe, 0x11, 0xaf, 0x7a, 0x7b, 0xb5, 0x2d, 0x18, 0x0b, + 0xab, 0x23, 0x4a, 0x4c, 0xec, 0x21, 0x15, 0x92, 0x85, 0x74, 0xb4, 0xdd, 0xc7, 0xdc, 0xe6, 0x90, + 0xb8, 0x06, 0x6c, 0xe0, 0xf3, 0xf3, 0xea, 0x37, 0x87, 0xb5, 0x6a, 0x15, 0x8d, 0x21, 0x1a, 0x43, + 0x34, 0x86, 0x68, 0x0c, 0xe1, 0x18, 0xc3, 0x88, 0x71, 0x59, 0x6b, 0x19, 0xb0, 0x85, 0x2d, 0x8d, + 0x53, 0xe8, 0x49, 0x86, 0x7b, 0xfa, 0x47, 0xaf, 0xb8, 0x97, 0x74, 0x27, 0xcb, 0x19, 0x36, 0x2a, + 0x0b, 0xd3, 0x4d, 0x33, 0xaf, 0x0c, 0xcd, 0x67, 0x20, 0x0f, 0xcb, 0x90, 0x3a, 0x78, 0xbc, 0x45, + 0xc8, 0x5d, 0xe1, 0xb7, 0x48, 0xb3, 0x7a, 0xb8, 0x57, 0xe0, 0x5d, 0xb2, 0x05, 0x73, 0xf4, 0xee, + 0x06, 0x83, 0x99, 0x40, 0x50, 0xea, 0x05, 0x52, 0x3f, 0x7a, 0x99, 0x4c, 0xa4, 0x1f, 0xae, 0x8c, + 0xfc, 0x3b, 0xc4, 0x2b, 0x88, 0x57, 0x10, 0xaf, 0x20, 0x5e, 0x81, 0x83, 0x57, 0x90, 0xbc, 0x33, + 0x69, 0xef, 0x2a, 0x36, 0x75, 0xc9, 0xbd, 0x31, 0xab, 0x97, 0x4c, 0xa7, 0xdf, 0xf6, 0x21, 0x51, + 0x87, 0x86, 0x0f, 0x0d, 0x1f, 0x1a, 0x3e, 0x40, 0x86, 0x0f, 0x89, 0xba, 0xa5, 0xff, 0x20, 0x51, + 0xa7, 0x84, 0x85, 0xa9, 0x22, 0x51, 0x97, 0x6b, 0x8b, 0x6c, 0x00, 0x51, 0xd7, 0x68, 0x55, 0xab, + 0x48, 0xd4, 0xad, 0xdb, 0xe8, 0x9b, 0x4d, 0xd4, 0x31, 0x5f, 0x30, 0x69, 0x04, 0xb3, 0x24, 0x33, + 0x61, 0x66, 0x01, 0x02, 0x16, 0x04, 0x2c, 0x08, 0x58, 0x10, 0xb0, 0x94, 0x74, 0x56, 0xd1, 0x79, + 0x49, 0x75, 0xed, 0x21, 0x5e, 0x41, 0xbc, 0x82, 0x89, 0x05, 0x88, 0x57, 0x96, 0xd8, 0x22, 0xf5, + 0xbd, 0x26, 0xc2, 0x15, 0x84, 0x2b, 0xeb, 0x03, 0x57, 0x86, 0x4c, 0xc8, 0x88, 0xb8, 0x93, 0x92, + 0xa2, 0xfa, 0x51, 0xcb, 0xd3, 0x09, 0x11, 0x56, 0x20, 0xac, 0x40, 0x58, 0x81, 0xb0, 0x02, 0x0c, + 0xac, 0x98, 0xd5, 0x5f, 0x36, 0x91, 0x03, 0x70, 0xa8, 0x71, 0x8e, 0xe4, 0x9d, 0x81, 0xc7, 0x16, + 0x73, 0x4d, 0x35, 0x9a, 0x06, 0xd6, 0x66, 0x61, 0x8d, 0x0e, 0x0c, 0xcc, 0xa5, 0xab, 0xf9, 0xc6, + 0x8b, 0x13, 0x8e, 0x9b, 0x6c, 0x74, 0x7f, 0xdd, 0xd4, 0x2a, 0x87, 0x49, 0x23, 0x8c, 0x5a, 0xfc, + 0xcf, 0xf8, 0xf3, 0x7c, 0x83, 0x8c, 0xa4, 0x69, 0xc6, 0xb4, 0x89, 0x46, 0xea, 0x0b, 0x9f, 0x6b, + 0xa7, 0xa1, 0xfd, 0x29, 0xbb, 0x5b, 0x80, 0x01, 0x93, 0x59, 0xa9, 0x6a, 0xa1, 0x54, 0x29, 0x93, + 0x2a, 0x6c, 0x75, 0x93, 0x46, 0x05, 0x29, 0x6f, 0x81, 0x03, 0x5d, 0xad, 0x40, 0x03, 0xc1, 0x9a, + 0xdc, 0xbd, 0x73, 0x16, 0xca, 0x23, 0x29, 0x85, 0x5e, 0x97, 0xef, 0x82, 0xf1, 0x13, 0x37, 0x3e, + 0xc6, 0x3b, 0x02, 0xc6, 0x3c, 0x72, 0x5d, 0x8d, 0xde, 0xd8, 0x05, 0xb9, 0x33, 0x37, 0xd9, 0xa5, + 0xb0, 0xa9, 0xa0, 0xf6, 0x87, 0xfb, 0x64, 0x2a, 0x64, 0x40, 0x2a, 0x2e, 0xe3, 0xdf, 0x2b, 0xae, + 0x6f, 0x99, 0x38, 0x22, 0xfe, 0xcc, 0x9c, 0xc8, 0x83, 0x20, 0x0f, 0x82, 0x3c, 0x08, 0xf2, 0x20, + 0xc8, 0x83, 0x20, 0x0f, 0x82, 0x3c, 0x08, 0xf2, 0x20, 0xc8, 0x83, 0x20, 0x0f, 0x82, 0x3c, 0x08, + 0xf2, 0x20, 0xc8, 0x83, 0x14, 0x82, 0x07, 0x01, 0x05, 0x85, 0xe3, 0x3e, 0x0f, 0xa2, 0xc2, 0x6c, + 0x73, 0x48, 0x78, 0x36, 0x25, 0x02, 0x61, 0x04, 0xc2, 0x08, 0x84, 0x11, 0x08, 0x83, 0x01, 0xc2, + 0x98, 0x67, 0xbc, 0x46, 0xde, 0x3a, 0xe6, 0x19, 0xab, 0x9b, 0x0f, 0xf3, 0x8c, 0xc1, 0x6e, 0x91, + 0xfa, 0x1e, 0xd6, 0x2f, 0x43, 0x68, 0xb1, 0x16, 0x23, 0xaa, 0x6e, 0x94, 0x70, 0x14, 0xf5, 0x47, + 0x0e, 0x0f, 0xb5, 0xb5, 0x98, 0x2b, 0xcd, 0x70, 0xe7, 0xdd, 0xc8, 0x47, 0x73, 0xda, 0x73, 0xdd, + 0xf5, 0x9e, 0xfc, 0x62, 0xf4, 0xf3, 0xd0, 0x25, 0xbc, 0x3d, 0xdf, 0x6b, 0x2f, 0x76, 0xec, 0xda, + 0x71, 0xc7, 0xbd, 0xf1, 0xc7, 0x59, 0xdf, 0xbd, 0x47, 0x3f, 0xbf, 0x1b, 0x0a, 0x11, 0xbc, 0x9b, + 0xb5, 0xa4, 0x7a, 0xa7, 0xa5, 0x95, 0xcc, 0xf4, 0xa1, 0x8e, 0x69, 0x68, 0x09, 0x16, 0x24, 0x9d, + 0x09, 0xcb, 0x47, 0xb6, 0xcd, 0x46, 0x9f, 0x89, 0x5b, 0xfa, 0xfa, 0xe5, 0x4b, 0xa7, 0x64, 0x13, + 0x49, 0x4a, 0x8e, 0x2f, 0x4a, 0x67, 0x9d, 0x61, 0xab, 0x34, 0x7b, 0x64, 0xcd, 0x08, 0xaf, 0x86, + 0x08, 0x0f, 0x11, 0x1e, 0x22, 0xbc, 0xe2, 0x23, 0x3c, 0x5d, 0x1d, 0x73, 0x16, 0xe8, 0x30, 0x03, + 0x99, 0x21, 0x2f, 0xf2, 0x62, 0xda, 0x33, 0x44, 0x5e, 0xd2, 0xe6, 0xa7, 0xbe, 0x18, 0xab, 0x71, + 0x9f, 0x3f, 0x55, 0xe0, 0x6f, 0x4b, 0x21, 0x95, 0x61, 0x49, 0x0e, 0x68, 0x29, 0xb9, 0xcd, 0xd2, + 0xe8, 0x36, 0x4b, 0xf1, 0x6d, 0xde, 0x72, 0x33, 0x31, 0x12, 0x43, 0x9e, 0xb5, 0x76, 0xb5, 0x6f, + 0x52, 0xfd, 0x1b, 0x37, 0x03, 0xa6, 0xcd, 0xc1, 0xca, 0xcc, 0xc2, 0xca, 0xcc, 0xc3, 0x2a, 0xcc, + 0x84, 0x21, 0x1c, 0xa6, 0x59, 0xde, 0xb4, 0x13, 0x84, 0x0b, 0xd2, 0x66, 0x24, 0x63, 0x66, 0xc1, + 0x1d, 0x3e, 0x34, 0x30, 0x97, 0x91, 0x0c, 0x1a, 0xbd, 0x10, 0xed, 0x95, 0x95, 0x33, 0x9a, 0x51, + 0xb3, 0xb0, 0x86, 0x07, 0x06, 0xe7, 0x34, 0x9d, 0x0b, 0x30, 0x9d, 0xb8, 0xf0, 0x99, 0x36, 0x7a, + 0x79, 0x20, 0xc3, 0xfa, 0x73, 0xb5, 0xd2, 0xd8, 0x42, 0x69, 0xd4, 0x2e, 0x8d, 0x98, 0xa1, 0x93, + 0x45, 0x85, 0xc1, 0xcb, 0xd4, 0x31, 0xac, 0x96, 0x30, 0xf3, 0xc8, 0x2c, 0xfb, 0xb2, 0xe6, 0xe1, + 0x81, 0xae, 0xea, 0xf0, 0x00, 0xe7, 0xbe, 0x24, 0x09, 0x8b, 0xa1, 0xa1, 0x9d, 0x72, 0x68, 0x0d, + 0xa8, 0x47, 0x02, 0x22, 0x07, 0x63, 0x3e, 0x3f, 0xa0, 0x7c, 0xcc, 0xb2, 0x57, 0xe6, 0x48, 0xfd, + 0xe7, 0x3e, 0xbe, 0x9b, 0x67, 0xf4, 0x63, 0x2e, 0x7f, 0xc6, 0xe2, 0xbf, 0xc2, 0xdf, 0x6f, 0xad, + 0xe7, 0xf2, 0x29, 0xf4, 0x30, 0xca, 0xd3, 0xd7, 0x54, 0x91, 0x82, 0x58, 0xdf, 0x19, 0xd7, 0xd8, + 0x60, 0xff, 0x99, 0xb9, 0xb0, 0xd9, 0x3e, 0x36, 0xdb, 0x5f, 0x35, 0x97, 0x84, 0xcd, 0xf6, 0x4d, + 0x61, 0x19, 0x7d, 0xcd, 0xf6, 0xad, 0x89, 0x84, 0x6a, 0x8e, 0x23, 0xeb, 0x0d, 0xec, 0x62, 0x24, + 0x75, 0xf5, 0x6a, 0xcd, 0x94, 0x7a, 0x33, 0xae, 0xe6, 0x8c, 0xab, 0x3b, 0x93, 0x6a, 0x4f, 0xb3, + 0x2f, 0x0f, 0x35, 0x92, 0x3a, 0x29, 0x55, 0x5e, 0xb1, 0xa9, 0x25, 0x68, 0xb2, 0x06, 0x86, 0x22, + 0xa9, 0xcf, 0xcc, 0xad, 0x3d, 0x92, 0xaa, 0xbd, 0xcf, 0xd3, 0x53, 0x55, 0x8d, 0x51, 0xd0, 0x35, + 0x56, 0xe1, 0xa6, 0x55, 0xf9, 0xca, 0x54, 0xfa, 0xca, 0x54, 0xfb, 0x2a, 0x54, 0xbc, 0x19, 0x42, + 0xab, 0x78, 0x51, 0x50, 0xdd, 0xc7, 0x25, 0x9e, 0xaa, 0x46, 0x03, 0x89, 0xd0, 0x86, 0x8e, 0x4f, + 0x4c, 0xfe, 0x18, 0x0c, 0xb9, 0x98, 0x3c, 0x4e, 0x61, 0xd8, 0xa6, 0x2d, 0x4c, 0x6b, 0xb8, 0xed, + 0xd4, 0x74, 0xde, 0x15, 0x64, 0xd0, 0x1b, 0xd2, 0x2e, 0x8f, 0xb7, 0x92, 0xc1, 0x63, 0x17, 0xeb, + 0xb2, 0x95, 0x8c, 0x95, 0x7b, 0x5f, 0x8b, 0xcd, 0x84, 0xf1, 0xa3, 0x95, 0xde, 0xbf, 0x46, 0x61, + 0x2e, 0xc7, 0x44, 0xf9, 0x2c, 0xc2, 0x61, 0x0e, 0xbd, 0x3d, 0x9d, 0x18, 0xe1, 0x14, 0xc2, 0x29, + 0x84, 0x53, 0x08, 0xa7, 0x10, 0x4e, 0x25, 0xd2, 0xe6, 0x52, 0xe2, 0x08, 0xea, 0x98, 0xcc, 0x28, + 0xdd, 0x37, 0x53, 0x91, 0x68, 0xb0, 0xf4, 0x81, 0x39, 0xe6, 0xb4, 0xf9, 0xe8, 0x75, 0x60, 0xe2, + 0x87, 0xfe, 0xad, 0xae, 0x3b, 0xc1, 0x62, 0x3a, 0x8f, 0xd1, 0x44, 0x8b, 0xc5, 0x94, 0x00, 0x2d, + 0xb9, 0x17, 0xfa, 0x56, 0x5c, 0x47, 0x39, 0xa0, 0x50, 0x12, 0x49, 0xf5, 0xc7, 0x32, 0xc7, 0xd3, + 0x00, 0x0f, 0x65, 0xd6, 0x31, 0x94, 0xb9, 0x36, 0x0e, 0x1b, 0x86, 0x32, 0x37, 0xd7, 0x3a, 0x61, + 0x28, 0x53, 0xed, 0xeb, 0xc4, 0x50, 0x26, 0x62, 0x6f, 0xc4, 0xde, 0x88, 0xbd, 0x11, 0x7b, 0x3f, + 0x23, 0x6d, 0x18, 0xca, 0xcc, 0xfb, 0x07, 0x43, 0x99, 0x5a, 0xa6, 0xc5, 0x50, 0xa6, 0xde, 0xad, + 0x84, 0xa1, 0xcc, 0x82, 0x6f, 0x26, 0x0c, 0x65, 0xae, 0xf4, 0xfe, 0x31, 0x94, 0x89, 0x70, 0x0a, + 0xe1, 0x14, 0xc2, 0x29, 0x84, 0x53, 0x9b, 0x04, 0xa7, 0x30, 0x94, 0x89, 0xa1, 0x4c, 0x93, 0x5b, + 0x7d, 0x63, 0x42, 0x99, 0xe3, 0x08, 0x1b, 0x56, 0x1f, 0x5e, 0xff, 0x2d, 0xb3, 0xea, 0xad, 0x52, + 0xd6, 0x12, 0x46, 0x16, 0x91, 0x25, 0x79, 0xa2, 0xe4, 0xcf, 0x26, 0x73, 0x7e, 0xfb, 0x12, 0xdf, + 0xf0, 0x57, 0x97, 0xf0, 0x6f, 0x67, 0xc1, 0xb0, 0xf5, 0xed, 0x68, 0x7c, 0x97, 0xdf, 0xbe, 0x0a, + 0x11, 0x7c, 0x1a, 0xdd, 0xdf, 0xb7, 0xe9, 0x77, 0xaf, 0x27, 0xb7, 0xb7, 0x01, 0x95, 0x10, 0xf4, + 0x44, 0xdd, 0xb5, 0x46, 0xdb, 0xb5, 0xd7, 0x3b, 0xa8, 0x63, 0xbd, 0x03, 0x63, 0x58, 0x01, 0xeb, + 0x1d, 0x14, 0xcf, 0x6a, 0x69, 0xab, 0x77, 0x40, 0x2c, 0x8b, 0x06, 0xb2, 0xe2, 0xf9, 0xb6, 0x81, + 0x44, 0xa1, 0xf9, 0xc9, 0xb4, 0x95, 0xb4, 0x9f, 0xc6, 0xbb, 0x1d, 0xe2, 0x86, 0x14, 0xbb, 0x91, + 0xad, 0x8c, 0x8c, 0xc1, 0xb4, 0x24, 0x70, 0x64, 0x0b, 0xa6, 0x25, 0xad, 0x8c, 0x4c, 0x99, 0x4a, + 0x4b, 0xcf, 0xf7, 0x5d, 0x4a, 0xb8, 0x89, 0x9e, 0xdc, 0xb5, 0x0d, 0xce, 0x8d, 0x25, 0xf6, 0x90, + 0x0a, 0xc9, 0xc2, 0x38, 0x0b, 0x6b, 0x8c, 0xcd, 0x86, 0x1a, 0xfb, 0x03, 0xcc, 0x6c, 0xe0, 0xf3, + 0xf3, 0xea, 0x37, 0x87, 0xb5, 0x6a, 0x15, 0x8d, 0x21, 0x1a, 0x43, 0x34, 0x86, 0x68, 0x0c, 0xe1, + 0x18, 0xc3, 0x88, 0x71, 0x59, 0x6b, 0x19, 0xb0, 0x85, 0x2d, 0xec, 0xcd, 0xf9, 0xfa, 0x83, 0x60, + 0x6f, 0x4e, 0x75, 0xf3, 0x61, 0x6f, 0x4e, 0xb0, 0x5b, 0xa4, 0x59, 0x3d, 0xc4, 0xe6, 0x9c, 0x6b, + 0x37, 0xfa, 0x26, 0xf7, 0xfd, 0xb7, 0x22, 0x21, 0x46, 0x70, 0x62, 0x72, 0xbe, 0xc4, 0x40, 0xfd, + 0xd2, 0xa7, 0x33, 0x22, 0xb4, 0x40, 0x68, 0x81, 0xd0, 0x02, 0xa1, 0x05, 0x28, 0x68, 0x81, 0x5d, + 0xff, 0x11, 0x59, 0x18, 0x73, 0x1b, 0xab, 0x88, 0x2c, 0x10, 0x59, 0xfc, 0x7e, 0x8b, 0x60, 0xd7, + 0x7f, 0x04, 0x16, 0x6b, 0x05, 0x2c, 0x02, 0x41, 0xa9, 0x17, 0x48, 0xfd, 0x78, 0x62, 0x32, 0x91, + 0xfe, 0x38, 0xc8, 0xc8, 0xbb, 0x43, 0xb4, 0x82, 0x68, 0x05, 0xd1, 0x0a, 0xa2, 0x15, 0x38, 0x68, + 0x05, 0xb3, 0x02, 0x4c, 0xda, 0xbb, 0x8a, 0x4d, 0x5d, 0x72, 0x6f, 0xcc, 0xea, 0x25, 0xd3, 0xe9, + 0xb7, 0x7d, 0x98, 0x01, 0x80, 0x86, 0x0f, 0x0d, 0x1f, 0x1a, 0x3e, 0x40, 0x86, 0x0f, 0x33, 0x00, + 0x96, 0xfe, 0x83, 0x3c, 0x9d, 0x12, 0x12, 0x06, 0x79, 0xba, 0x7c, 0x5b, 0x64, 0x03, 0x78, 0xba, + 0x46, 0xab, 0x5a, 0x45, 0xa2, 0x6e, 0xdd, 0x46, 0xdf, 0x6c, 0xa2, 0xce, 0x54, 0xe4, 0x5f, 0x77, + 0xc4, 0x1f, 0x53, 0x96, 0x11, 0xb0, 0x20, 0x60, 0x41, 0xc0, 0x02, 0x19, 0xb0, 0x60, 0x5e, 0x01, + 0xe2, 0x15, 0x63, 0xce, 0x28, 0x66, 0x2c, 0x23, 0x5e, 0x79, 0x65, 0x8b, 0x18, 0xab, 0xfd, 0x88, + 0x70, 0x05, 0xe1, 0xca, 0x32, 0xdb, 0x64, 0xc8, 0x84, 0x8c, 0x88, 0x5b, 0x49, 0x0a, 0xdb, 0xe8, + 0x47, 0x2d, 0x4f, 0x27, 0x44, 0x58, 0x81, 0xb0, 0x02, 0x61, 0x05, 0xc2, 0x0a, 0x30, 0xb0, 0x82, + 0x05, 0x9a, 0x75, 0xd7, 0xbc, 0xfe, 0xaa, 0x1d, 0x6a, 0x9c, 0x23, 0x79, 0x67, 0xe0, 0xb1, 0xc5, + 0x6c, 0x65, 0x86, 0x4d, 0x03, 0x6b, 0xb3, 0xb0, 0x46, 0x07, 0x66, 0x4a, 0x5f, 0x4a, 0x2a, 0xb8, + 0xb1, 0x76, 0x02, 0xe5, 0xed, 0xed, 0x9b, 0x6a, 0xe5, 0xb0, 0xfb, 0xeb, 0xa6, 0x56, 0x39, 0xec, + 0x8e, 0x3f, 0xd6, 0xe2, 0x7f, 0xc6, 0x9f, 0xeb, 0x37, 0xd5, 0x4a, 0x73, 0xf2, 0x79, 0xef, 0xa6, + 0x5a, 0xd9, 0xeb, 0xee, 0xdc, 0xde, 0xee, 0xee, 0xfc, 0x6c, 0x3c, 0xa4, 0xbf, 0x70, 0xfb, 0x8f, + 0x9b, 0xdb, 0xdb, 0xe0, 0xe7, 0xe7, 0x87, 0xd1, 0xdf, 0xe7, 0x0f, 0xdd, 0x3f, 0x77, 0xde, 0x97, + 0xa1, 0x57, 0xf4, 0x7e, 0x5b, 0x20, 0xa9, 0x6a, 0xa1, 0x54, 0x29, 0x93, 0xaa, 0xf6, 0xaf, 0xd1, + 0xde, 0x27, 0x15, 0xe7, 0xa8, 0x72, 0xda, 0xfd, 0x59, 0x7d, 0xdb, 0x7c, 0xd8, 0x69, 0xef, 0x6c, + 0x3f, 0xfd, 0x5d, 0x7b, 0xe7, 0x67, 0xf5, 0xed, 0xde, 0xc3, 0xf6, 0xf6, 0x33, 0xff, 0xf3, 0xfe, + 0xb9, 0x31, 0x76, 0x7e, 0x6d, 0x6f, 0x6f, 0x27, 0xf2, 0xf4, 0x48, 0xc6, 0x6e, 0xaa, 0xb5, 0xee, + 0xfb, 0xf8, 0xe3, 0xf8, 0xef, 0xa9, 0x94, 0x2e, 0xf5, 0xe5, 0x9d, 0x67, 0x65, 0xf3, 0xad, 0x31, + 0x15, 0xf4, 0xdf, 0x76, 0xf7, 0xcf, 0xf6, 0xce, 0xcf, 0xd6, 0xc3, 0xe4, 0x73, 0xfc, 0xf7, 0xce, + 0xaf, 0xed, 0xdd, 0x37, 0xb7, 0xb7, 0xbb, 0xbb, 0x6f, 0x76, 0xc6, 0x0f, 0x9e, 0x7c, 0xef, 0xcd, + 0xf8, 0x7f, 0xdf, 0xb7, 0xdb, 0x0b, 0xbf, 0xda, 0xd9, 0xfe, 0x63, 0xb7, 0x08, 0x6a, 0x05, 0x1a, + 0x08, 0xd6, 0xe4, 0xee, 0x9d, 0xb3, 0x50, 0x1e, 0x49, 0xa9, 0xb9, 0x43, 0xdd, 0x05, 0xe3, 0x27, + 0x6e, 0x5c, 0x1f, 0x68, 0x04, 0x8c, 0x79, 0xe4, 0xba, 0x1a, 0xbd, 0xb1, 0x0b, 0x72, 0x67, 0x6e, + 0xb2, 0x4b, 0x61, 0x53, 0x41, 0xed, 0x0f, 0xf7, 0xc9, 0x54, 0xc8, 0x80, 0x54, 0x5c, 0xc6, 0xbf, + 0x57, 0x5c, 0xdf, 0x32, 0x51, 0x7b, 0xea, 0x99, 0x39, 0x91, 0x07, 0x41, 0x1e, 0x04, 0x79, 0x10, + 0xe4, 0x41, 0x90, 0x07, 0x41, 0x1e, 0x04, 0x79, 0x10, 0xe4, 0x41, 0x90, 0x07, 0x41, 0x1e, 0x04, + 0x79, 0x10, 0xe4, 0x41, 0x90, 0x07, 0x29, 0x04, 0x0f, 0x02, 0x0a, 0x0a, 0xc7, 0x0d, 0x70, 0x44, + 0x85, 0xd9, 0xe6, 0x90, 0xf0, 0x6c, 0x4a, 0x04, 0xc2, 0x08, 0x84, 0x11, 0x08, 0x23, 0x10, 0x06, + 0x03, 0x84, 0x31, 0xcf, 0x78, 0x8d, 0xbc, 0x75, 0xcc, 0x33, 0x56, 0x37, 0x1f, 0xe6, 0x19, 0x83, + 0xdd, 0x22, 0x58, 0xbf, 0x0c, 0xa1, 0xc5, 0x9a, 0x8c, 0xa8, 0xbc, 0x6f, 0x68, 0xd4, 0x1f, 0x39, + 0x3c, 0xd4, 0xd6, 0x62, 0xae, 0x34, 0xc3, 0x9d, 0xa5, 0x3a, 0x17, 0x0f, 0x5d, 0xc2, 0xdb, 0xf3, + 0x4d, 0x48, 0x63, 0xc7, 0xae, 0x1d, 0xb7, 0x22, 0x1d, 0x7f, 0x9c, 0x35, 0x24, 0x7d, 0xf4, 0xf3, + 0x42, 0x5b, 0x52, 0x1d, 0x2d, 0x2a, 0xa7, 0xcf, 0x74, 0x4c, 0x43, 0x4b, 0xb0, 0x20, 0xe9, 0xe0, + 0x5a, 0x3e, 0xb2, 0x6d, 0x36, 0xfa, 0x4c, 0xdc, 0xd2, 0xd7, 0x2f, 0x5f, 0x3a, 0x25, 0x9b, 0x48, + 0x52, 0x72, 0x7c, 0x51, 0x3a, 0xeb, 0x0c, 0x5b, 0xa5, 0xd9, 0x13, 0x6b, 0x06, 0x78, 0x35, 0x04, + 0x78, 0x08, 0xf0, 0x10, 0xe0, 0x15, 0x1f, 0xe0, 0xe9, 0xea, 0xc4, 0xb9, 0xc0, 0x86, 0x19, 0x48, + 0x0c, 0x79, 0x91, 0x16, 0xd3, 0x9e, 0x20, 0xf2, 0x92, 0x36, 0x3f, 0xf5, 0xc5, 0x58, 0x8d, 0xfb, + 0xfc, 0xa9, 0x02, 0x7f, 0x5b, 0x0a, 0xa9, 0x0c, 0x4b, 0x72, 0x40, 0x4b, 0xc9, 0x6d, 0x96, 0x46, + 0xb7, 0x59, 0x8a, 0x6f, 0xf3, 0x96, 0x9b, 0x09, 0x91, 0x18, 0x72, 0xac, 0xb5, 0xab, 0x7d, 0x93, + 0xea, 0xdf, 0xb8, 0x19, 0x30, 0x6d, 0x0e, 0x56, 0x66, 0x16, 0x56, 0x66, 0x1e, 0x56, 0x61, 0x26, + 0x0c, 0xc1, 0x30, 0xcd, 0xf2, 0xa6, 0x9d, 0x1f, 0x5c, 0x90, 0x36, 0x23, 0x09, 0x33, 0x0b, 0xee, + 0xf0, 0xa1, 0x81, 0xb9, 0x8c, 0x24, 0xd0, 0xe8, 0x45, 0x68, 0xaf, 0xac, 0x9c, 0xd1, 0x84, 0x9a, + 0x85, 0x35, 0x3c, 0x30, 0x38, 0xa7, 0xe9, 0x54, 0x80, 0xe9, 0xc4, 0x85, 0x4f, 0xb4, 0xd1, 0x4b, + 0x03, 0x19, 0xd6, 0x9f, 0xab, 0x95, 0xc6, 0x16, 0x4a, 0xa3, 0x76, 0x69, 0xc4, 0x04, 0x9d, 0x2c, + 0x2a, 0x0c, 0x5e, 0xa2, 0x8e, 0x61, 0xb5, 0x84, 0x89, 0x47, 0x66, 0xd9, 0x97, 0x35, 0x8f, 0x0e, + 0x74, 0x55, 0x47, 0x07, 0x38, 0xf7, 0x25, 0x49, 0x58, 0x0c, 0xf5, 0xc6, 0xa9, 0x1c, 0x5a, 0x03, + 0xea, 0x91, 0x80, 0xc8, 0xc1, 0x98, 0xce, 0x0f, 0x28, 0xb7, 0x62, 0x8a, 0xa0, 0x32, 0xc7, 0xe9, + 0x3f, 0xf7, 0xf1, 0xdd, 0x3c, 0xa1, 0x1f, 0x53, 0xf9, 0x33, 0x12, 0xff, 0xf7, 0xf4, 0xfd, 0xd6, + 0x7a, 0xae, 0x9e, 0x42, 0x07, 0xc3, 0x40, 0xe2, 0x99, 0xb1, 0x84, 0x33, 0x4d, 0xc4, 0x94, 0x36, + 0x22, 0x4a, 0x27, 0xf1, 0xa4, 0x9d, 0x68, 0xd2, 0x4d, 0x2c, 0x19, 0x23, 0x92, 0x8c, 0x11, 0x47, + 0x26, 0x88, 0xa2, 0xf5, 0x8e, 0x1f, 0x6b, 0x23, 0x7e, 0xa6, 0xbb, 0xdd, 0xa5, 0xc4, 0x11, 0xd4, + 0xd1, 0xb1, 0xdf, 0x27, 0x18, 0x64, 0x5f, 0xc3, 0xd8, 0x9d, 0xc4, 0xa8, 0xed, 0xee, 0xbe, 0x1b, + 0x9b, 0xb4, 0x77, 0x8b, 0xba, 0x72, 0x5d, 0x6d, 0xd1, 0xd6, 0x1a, 0xed, 0xb4, 0x91, 0xd2, 0xd0, + 0x69, 0x69, 0xf4, 0x1c, 0x7e, 0xd7, 0x7a, 0xd8, 0x5d, 0xeb, 0xe1, 0x76, 0x3d, 0x87, 0xd9, 0x55, + 0x6d, 0x06, 0x4d, 0x0e, 0xa9, 0x51, 0x47, 0x54, 0xa1, 0x26, 0x2b, 0x87, 0x52, 0x44, 0x96, 0xe4, + 0x89, 0xaa, 0x3c, 0x9b, 0xdc, 0xd5, 0xb7, 0x2f, 0xf1, 0x5d, 0x7d, 0x75, 0x09, 0xff, 0x76, 0x16, + 0x0c, 0x5b, 0xdf, 0x8e, 0xc6, 0xb7, 0xf2, 0xed, 0xab, 0x10, 0xc1, 0xa7, 0xf8, 0x26, 0xb6, 0xd6, + 0x43, 0x53, 0xe4, 0x1b, 0x21, 0xe7, 0xb6, 0x52, 0xbd, 0x9d, 0xf4, 0x6f, 0xa3, 0x7c, 0xcb, 0x96, + 0xfd, 0x65, 0x67, 0xbb, 0x32, 0xe3, 0xf2, 0x4c, 0x54, 0x7e, 0x66, 0x27, 0x57, 0x8d, 0x4e, 0x57, + 0xaa, 0xc3, 0x95, 0xea, 0x6c, 0x35, 0x3a, 0x3a, 0xeb, 0xea, 0xa8, 0x49, 0x19, 0xcc, 0x27, 0x6d, + 0x86, 0x52, 0x00, 0x73, 0xaa, 0xea, 0xdf, 0x24, 0xf5, 0x9d, 0x75, 0x4a, 0xa3, 0x39, 0x4a, 0x0e, + 0xf1, 0x98, 0x7b, 0x5f, 0x1a, 0x6b, 0x89, 0x48, 0xc4, 0xba, 0xa8, 0xe4, 0xf8, 0xe2, 0x96, 0x2b, + 0xcb, 0xf1, 0x53, 0x94, 0xcb, 0xa7, 0x0c, 0x33, 0xab, 0xc4, 0xc8, 0xca, 0x31, 0xb1, 0x6a, 0x0c, + 0xac, 0x0d, 0xf3, 0x6a, 0xc3, 0xb8, 0x3a, 0x30, 0xed, 0x6a, 0xad, 0xbc, 0xaa, 0xdc, 0xb6, 0x72, + 0x6c, 0x81, 0x95, 0xed, 0x8c, 0x29, 0x87, 0x36, 0x1a, 0x55, 0xd1, 0xda, 0x3d, 0x51, 0x38, 0x27, + 0xdc, 0x72, 0xfd, 0x90, 0xf1, 0xfe, 0x48, 0xc1, 0x48, 0xc2, 0x38, 0x15, 0x71, 0x12, 0x71, 0x9c, + 0x8b, 0x16, 0x3b, 0xa3, 0x61, 0x69, 0x40, 0xb8, 0xed, 0x52, 0xbb, 0xd4, 0xbb, 0x2f, 0xc9, 0x01, + 0x0b, 0x6f, 0xf9, 0x59, 0x67, 0x96, 0x9e, 0xa6, 0xea, 0xbe, 0xd4, 0xa6, 0x13, 0x2b, 0xa7, 0xef, + 0x74, 0xd0, 0x76, 0xda, 0xe8, 0x3a, 0x5d, 0x34, 0x9d, 0x76, 0x7a, 0x4e, 0x3b, 0x2d, 0xa7, 0x93, + 0x8e, 0x7b, 0x28, 0x06, 0x60, 0x32, 0x8c, 0x00, 0xba, 0x59, 0x7d, 0x4c, 0x35, 0xc0, 0x4c, 0x2b, + 0x20, 0xcb, 0x21, 0x1d, 0x69, 0x71, 0x7b, 0xb6, 0x6d, 0x9c, 0x7e, 0xc9, 0xd2, 0x5d, 0x91, 0xd2, + 0x2e, 0xe7, 0x5d, 0x54, 0x2d, 0x8b, 0x99, 0xee, 0xcd, 0x2e, 0xff, 0x7e, 0x52, 0xbc, 0x9b, 0xb2, + 0x35, 0xb1, 0x66, 0xe9, 0xde, 0xc9, 0xd4, 0xc0, 0x24, 0xd7, 0xa7, 0x5c, 0x8d, 0x6c, 0x26, 0x39, + 0xb3, 0xe9, 0xcd, 0x63, 0x62, 0x73, 0x9b, 0xd2, 0xbc, 0x26, 0x53, 0x99, 0x69, 0x54, 0x66, 0x02, + 0x55, 0x98, 0x3a, 0xbd, 0xd2, 0x9e, 0xd5, 0xeb, 0x2e, 0xdb, 0xd1, 0x38, 0xb5, 0xb7, 0x62, 0x53, + 0x49, 0x2d, 0x59, 0x91, 0x82, 0xf0, 0xd0, 0x1b, 0x1f, 0x87, 0xcd, 0xb8, 0x7c, 0x93, 0xfd, 0xf3, + 0xf2, 0xd0, 0x19, 0x57, 0x61, 0xbe, 0xab, 0x63, 0xd6, 0x31, 0xf2, 0x85, 0xb8, 0x73, 0xfb, 0xc2, + 0x2a, 0x7c, 0x5f, 0x65, 0xbe, 0xae, 0x2a, 0xdf, 0x56, 0xb9, 0x2f, 0xab, 0xdc, 0x77, 0x55, 0xe9, + 0xab, 0x9a, 0x65, 0x67, 0x73, 0x87, 0x7c, 0x1f, 0xd5, 0xfa, 0x68, 0xd4, 0xf3, 0x6c, 0x97, 0x44, + 0x76, 0x72, 0x04, 0x70, 0x15, 0x15, 0xeb, 0x50, 0xc0, 0x2e, 0xa8, 0x2c, 0xb6, 0xa1, 0x38, 0x6f, + 0x46, 0x75, 0x13, 0x71, 0x1d, 0x75, 0x0e, 0x14, 0x84, 0x18, 0x95, 0x16, 0xb3, 0xd0, 0xb5, 0x04, + 0xcd, 0xfa, 0x61, 0xf3, 0xb0, 0xb5, 0x5f, 0x3f, 0xdc, 0x5b, 0xe3, 0xb5, 0x58, 0x11, 0x48, 0xed, + 0x9a, 0xc2, 0x49, 0x19, 0x5c, 0x50, 0xca, 0x49, 0xcf, 0xa5, 0x76, 0x7e, 0x27, 0x66, 0x32, 0x50, + 0x7e, 0x97, 0x65, 0x64, 0xc5, 0xd0, 0x6b, 0x41, 0xaf, 0x05, 0xbd, 0x96, 0x34, 0xbb, 0xa5, 0xe7, + 0xfb, 0x2e, 0x25, 0x5c, 0x81, 0xdb, 0x52, 0xab, 0xad, 0xb1, 0xbe, 0xf2, 0x64, 0x94, 0x5f, 0x57, + 0x8d, 0x06, 0x41, 0x05, 0x83, 0x0a, 0x06, 0x15, 0x0c, 0xc2, 0xa2, 0x02, 0xc3, 0xa2, 0x5a, 0xfd, + 0x00, 0x91, 0x51, 0xea, 0x55, 0x68, 0x6c, 0x10, 0x38, 0x2d, 0x3a, 0x20, 0xda, 0x94, 0xc0, 0x51, + 0x12, 0x6b, 0x59, 0x83, 0xa8, 0x11, 0xa7, 0xac, 0x3f, 0xe8, 0xf9, 0x22, 0xcc, 0x1e, 0x38, 0x9a, + 0x0d, 0x81, 0xb1, 0x23, 0x6d, 0xbe, 0x17, 0xc6, 0x8e, 0x0c, 0xc6, 0x8e, 0x26, 0x3b, 0x3a, 0x3f, + 0x72, 0x99, 0x8e, 0x94, 0x0f, 0xbe, 0xd4, 0x10, 0xbe, 0x20, 0x7c, 0x81, 0x00, 0x5f, 0xf2, 0x26, + 0x49, 0x66, 0xcd, 0x62, 0x78, 0x71, 0xd3, 0x65, 0xca, 0x6a, 0x50, 0x2c, 0x86, 0xca, 0xc4, 0x51, + 0xa5, 0x58, 0x2a, 0x17, 0x4f, 0xd5, 0x62, 0xaa, 0x4d, 0x5c, 0xb5, 0x89, 0xad, 0x0e, 0xf1, 0x55, + 0xe4, 0xfa, 0xaf, 0x4b, 0xee, 0x33, 0xd3, 0x90, 0xf9, 0xac, 0x2c, 0x2d, 0x56, 0x35, 0xae, 0xc7, + 0xfc, 0x62, 0xcc, 0x2f, 0x36, 0xa4, 0x1e, 0xd4, 0xa8, 0x09, 0x85, 0x54, 0x4f, 0x49, 0xcb, 0xb1, + 0xfe, 0x67, 0xeb, 0x8d, 0x55, 0xb8, 0x5f, 0xf9, 0x9f, 0xcf, 0x55, 0xd6, 0x54, 0xd7, 0x51, 0x57, + 0x4c, 0x5b, 0xdd, 0x30, 0xac, 0x0b, 0xf6, 0xfc, 0x4b, 0x51, 0x5f, 0xf7, 0x4b, 0xf1, 0x2d, 0xce, + 0xde, 0x77, 0xfb, 0xf6, 0x76, 0xb7, 0xfb, 0x46, 0x9d, 0x1a, 0xe8, 0xae, 0xcb, 0x31, 0x03, 0x05, + 0xee, 0xe4, 0xb8, 0xdc, 0x36, 0xb9, 0xa7, 0x62, 0x5a, 0x60, 0x50, 0xb9, 0x0b, 0xf1, 0xcc, 0x1c, + 0xe8, 0x52, 0xa0, 0x4b, 0x81, 0x2e, 0xc5, 0x06, 0xb9, 0x14, 0xc1, 0xe0, 0x3e, 0xd4, 0x50, 0xc2, + 0x14, 0x98, 0x2b, 0x31, 0xef, 0x03, 0xd4, 0x1f, 0xb6, 0xdb, 0x8f, 0x7f, 0xde, 0x79, 0xa3, 0xb2, + 0xfa, 0x65, 0x17, 0xab, 0x87, 0xac, 0x77, 0xf5, 0x90, 0x69, 0x64, 0x67, 0xfa, 0x29, 0x53, 0xe4, + 0x4a, 0xdd, 0xfb, 0xce, 0xf1, 0xae, 0x55, 0x50, 0x0f, 0xea, 0x28, 0x07, 0x45, 0x7e, 0x01, 0x32, + 0x8a, 0xc8, 0x28, 0xc2, 0xd4, 0x7a, 0xca, 0xec, 0xb8, 0x86, 0x0a, 0x7f, 0x2a, 0x2b, 0xfa, 0xcd, + 0x57, 0xf0, 0x1b, 0x17, 0x85, 0x49, 0xea, 0xf8, 0x4d, 0x8a, 0xc7, 0x40, 0x54, 0xa5, 0xe3, 0x1a, + 0xb8, 0xca, 0xb4, 0xa9, 0x8a, 0x8e, 0x78, 0xca, 0x43, 0x34, 0x75, 0x54, 0xa8, 0xa8, 0x50, 0x01, + 0x29, 0x54, 0x0c, 0xd1, 0x20, 0x9f, 0x82, 0x7c, 0x0a, 0xf2, 0x29, 0x6b, 0xc3, 0xa7, 0x60, 0x88, + 0x66, 0x9e, 0x57, 0xc1, 0x10, 0xcd, 0x73, 0x2f, 0x05, 0x43, 0x34, 0xab, 0x27, 0xbf, 0x14, 0xb8, + 0x93, 0x2c, 0x4c, 0x0a, 0x6a, 0x6b, 0xf0, 0x1c, 0xa6, 0x43, 0xa3, 0x03, 0x81, 0x0e, 0x04, 0x3a, + 0x10, 0x1b, 0xe4, 0x40, 0x50, 0x2f, 0x90, 0xf7, 0x3a, 0x3c, 0x86, 0x06, 0x46, 0xc7, 0xd3, 0x31, + 0x6b, 0x18, 0x1d, 0x47, 0x65, 0x8c, 0xca, 0x78, 0xa3, 0x95, 0x31, 0x46, 0xc7, 0x37, 0x36, 0x3a, + 0xae, 0xc0, 0x4a, 0x4d, 0xc2, 0xc7, 0x15, 0x35, 0x91, 0x83, 0x85, 0xdd, 0xf9, 0x64, 0x7c, 0xb4, + 0x4e, 0x68, 0x9d, 0xd0, 0x3a, 0x6d, 0x12, 0x54, 0xe0, 0x91, 0x47, 0xc7, 0x6d, 0x2f, 0x74, 0x18, + 0xa7, 0xa6, 0xc2, 0x31, 0x4f, 0x78, 0xe4, 0x8d, 0x5e, 0xc2, 0x43, 0x81, 0xd4, 0xbb, 0x2f, 0x58, + 0x5f, 0x65, 0x7d, 0x8d, 0xa9, 0x12, 0x1a, 0x8f, 0x8b, 0xea, 0x1c, 0xd5, 0x39, 0xaa, 0xf3, 0x0d, + 0x52, 0xe7, 0x53, 0x77, 0x4e, 0xa9, 0x02, 0xd8, 0x1c, 0x95, 0x8e, 0xf9, 0xac, 0x4b, 0xe7, 0xb3, + 0x2a, 0x68, 0xe7, 0x8d, 0xfd, 0xf0, 0x52, 0x8d, 0x82, 0xfd, 0xf0, 0x74, 0x8a, 0x8d, 0x5e, 0x71, + 0x31, 0xd1, 0xac, 0xe4, 0xf3, 0x64, 0x2e, 0x2c, 0x3a, 0xa5, 0x69, 0x39, 0xd7, 0xa1, 0xee, 0x54, + 0x36, 0x22, 0x28, 0x57, 0xca, 0x68, 0xee, 0x7a, 0x53, 0x75, 0xac, 0x37, 0xb5, 0x42, 0x87, 0x1b, + 0x7b, 0x95, 0x64, 0xd9, 0x3f, 0xd8, 0xab, 0x44, 0x0f, 0xd2, 0xc6, 0xaa, 0x56, 0x2b, 0x45, 0xc6, + 0x58, 0x94, 0x17, 0x8b, 0xf2, 0xea, 0xa5, 0xf7, 0xb0, 0x57, 0xc9, 0xda, 0x2c, 0x01, 0xf6, 0x2a, + 0x79, 0xf9, 0x0f, 0xf6, 0x2a, 0x49, 0xe5, 0xb2, 0x60, 0xaf, 0x12, 0xf4, 0x5a, 0xd0, 0x6b, 0x49, + 0xbb, 0x5b, 0xb0, 0x57, 0xc9, 0xf2, 0xef, 0x0a, 0x7b, 0x95, 0xa0, 0x82, 0x41, 0x05, 0x83, 0xb0, + 0xa8, 0xe0, 0xb0, 0x08, 0x7b, 0x95, 0x64, 0x59, 0x05, 0xec, 0x55, 0x52, 0x1c, 0x40, 0xb4, 0x29, + 0x61, 0xa3, 0x0c, 0x11, 0x72, 0x3d, 0x21, 0xa3, 0x88, 0xf3, 0xc8, 0xeb, 0x51, 0x91, 0x01, 0x51, + 0xce, 0x0c, 0xcd, 0x6c, 0x8c, 0x0d, 0x69, 0x56, 0xe2, 0x60, 0xf0, 0xe8, 0x39, 0x27, 0xcb, 0x29, + 0x4c, 0xf0, 0x28, 0x67, 0xc7, 0x04, 0x35, 0x9d, 0x12, 0x0a, 0xd7, 0xa8, 0xc4, 0x41, 0xec, 0x62, + 0x48, 0xac, 0x56, 0x83, 0x5d, 0x72, 0x37, 0x2a, 0xc9, 0x4b, 0x6e, 0x2a, 0x26, 0x39, 0x67, 0x0f, + 0x36, 0x23, 0x3b, 0x1d, 0xe2, 0x86, 0x14, 0x0b, 0x15, 0xea, 0x17, 0x78, 0xd5, 0x82, 0xaf, 0x4d, + 0x01, 0x68, 0x53, 0x04, 0x3a, 0x14, 0x82, 0x22, 0x24, 0xb1, 0x76, 0x85, 0x0a, 0xf3, 0xb3, 0xa9, + 0x0b, 0x56, 0xb7, 0xb6, 0x11, 0x09, 0xac, 0x6b, 0x98, 0x22, 0x39, 0xc3, 0x13, 0xb9, 0x2a, 0xe3, + 0x9a, 0xe1, 0xb7, 0xa7, 0xcf, 0x51, 0x11, 0xd4, 0xc9, 0xef, 0x30, 0x3e, 0x1e, 0x0e, 0xfd, 0x46, + 0xf4, 0x1b, 0xd1, 0x6f, 0xd4, 0x0e, 0xd7, 0xd4, 0xc2, 0x36, 0x45, 0x62, 0x88, 0x5e, 0x1e, 0x7a, + 0x79, 0xb0, 0xbd, 0x3c, 0x75, 0xd5, 0x53, 0x27, 0x46, 0x51, 0x43, 0x29, 0xb4, 0xe9, 0xd0, 0x78, + 0x20, 0x76, 0x6d, 0x94, 0x81, 0x2e, 0xa5, 0xa0, 0x5d, 0x39, 0x68, 0x57, 0x12, 0x3a, 0x95, 0x85, + 0x1a, 0xa5, 0xa1, 0x48, 0x79, 0xa8, 0x87, 0x8a, 0x0b, 0xbb, 0x55, 0x5d, 0x6d, 0xfb, 0x05, 0x8b, + 0xbf, 0xaf, 0xb6, 0xf0, 0x4e, 0x02, 0xa9, 0x46, 0xcb, 0xdc, 0x9e, 0x83, 0x50, 0x4f, 0x7e, 0x91, + 0xfc, 0x1c, 0x1f, 0x06, 0x2b, 0x50, 0x1d, 0x84, 0x30, 0xea, 0x69, 0xd4, 0xff, 0x8f, 0x46, 0x47, + 0x13, 0x80, 0x26, 0x00, 0x4d, 0x00, 0x9a, 0x00, 0xb0, 0x26, 0xe0, 0x66, 0x66, 0x02, 0xfe, 0x9f, + 0x15, 0x09, 0x41, 0xb9, 0xdc, 0xde, 0x79, 0xb7, 0xbb, 0x3b, 0x63, 0xdb, 0xba, 0xc9, 0x25, 0xf3, + 0x7a, 0x2f, 0x7c, 0xe6, 0x77, 0xd3, 0x91, 0x6d, 0x7a, 0x57, 0xc6, 0x12, 0x0c, 0xeb, 0x5d, 0x82, + 0x61, 0x8e, 0x30, 0x7d, 0xc4, 0x1f, 0x02, 0x6e, 0x2c, 0x86, 0xdd, 0x70, 0x90, 0xcf, 0x41, 0x3e, + 0x07, 0xf9, 0x1c, 0xe4, 0x73, 0xd0, 0x99, 0x47, 0x67, 0x1e, 0x9d, 0x79, 0xe4, 0x73, 0x90, 0xcf, + 0x41, 0x3e, 0x07, 0x4d, 0x00, 0x9a, 0x00, 0x34, 0x01, 0xc8, 0xe7, 0x20, 0x9f, 0xb3, 0x99, 0x7c, + 0xce, 0x06, 0x15, 0xd6, 0x5c, 0xef, 0xbc, 0x44, 0x15, 0x69, 0x7a, 0xa5, 0x34, 0x05, 0x1c, 0xff, + 0x9a, 0xce, 0xfd, 0x6d, 0xfa, 0xa5, 0x2f, 0xd4, 0x59, 0xe7, 0xcc, 0xc8, 0x7c, 0x14, 0x9e, 0x12, + 0xea, 0x4e, 0x59, 0x26, 0x64, 0x1d, 0x33, 0x21, 0xf5, 0xb9, 0x5a, 0x98, 0x09, 0xa9, 0x8c, 0x62, + 0xc3, 0x13, 0x34, 0xab, 0xc1, 0x62, 0xc8, 0xc5, 0xaf, 0x35, 0xc6, 0xc2, 0x13, 0x34, 0xaf, 0xef, + 0x36, 0x3c, 0x41, 0x53, 0x48, 0x4f, 0x35, 0x07, 0x64, 0xc0, 0xfa, 0x0d, 0x4b, 0xbc, 0xe0, 0x72, + 0x26, 0xcf, 0x38, 0xad, 0xd3, 0xaf, 0xad, 0x54, 0xc4, 0x96, 0xc2, 0x85, 0xca, 0xba, 0x40, 0x0a, + 0x17, 0xa6, 0x9c, 0xaa, 0x5a, 0xfa, 0x52, 0xab, 0xb0, 0xdc, 0xab, 0x7f, 0xfd, 0x45, 0x2e, 0xf1, + 0x12, 0x53, 0x42, 0xa6, 0x4c, 0x10, 0x29, 0x25, 0x24, 0x4a, 0x0d, 0x81, 0xb2, 0x78, 0x42, 0xf3, + 0x1e, 0xcf, 0x68, 0x29, 0xd3, 0xac, 0x62, 0x46, 0xdf, 0x26, 0xb7, 0x0f, 0x93, 0xdb, 0x57, 0x79, + 0xea, 0x93, 0xc4, 0x0f, 0xbe, 0x22, 0xc1, 0x4d, 0x0b, 0x3b, 0xca, 0xf1, 0xcd, 0x66, 0x2e, 0x18, + 0x93, 0x72, 0x8d, 0x73, 0x38, 0xfc, 0x2b, 0x2f, 0x15, 0x93, 0xe1, 0x51, 0x4b, 0x1b, 0x51, 0x2c, + 0x26, 0xdd, 0x76, 0x37, 0xe3, 0x60, 0x64, 0x76, 0xaa, 0xe7, 0x4a, 0x21, 0x65, 0xeb, 0x96, 0x38, + 0xd5, 0xca, 0x87, 0x19, 0xae, 0x4d, 0x6e, 0x3b, 0x5b, 0x89, 0x3d, 0x45, 0x85, 0x06, 0x6b, 0x2d, + 0x05, 0x85, 0x06, 0x5b, 0x58, 0x68, 0x50, 0x0b, 0xcd, 0x31, 0x1d, 0x0e, 0xeb, 0xaf, 0xaf, 0xcd, + 0x12, 0xb4, 0xf6, 0xf6, 0x1a, 0x58, 0x7a, 0x7d, 0xe1, 0x4f, 0xd7, 0x24, 0x74, 0x57, 0xa0, 0xfb, + 0x42, 0x29, 0x18, 0xef, 0xab, 0x28, 0xe2, 0x7c, 0x60, 0x08, 0xa3, 0x77, 0x11, 0x4a, 0xbe, 0x0a, + 0x25, 0x53, 0x90, 0x26, 0x4b, 0x00, 0xbf, 0xad, 0x1c, 0x2f, 0xa4, 0x7c, 0x14, 0xf5, 0x47, 0x5e, + 0x53, 0x4c, 0xe9, 0xbf, 0x6e, 0xdb, 0x52, 0x02, 0xc7, 0xa5, 0x72, 0xd0, 0x46, 0x6f, 0xa4, 0x3d, + 0xf7, 0x76, 0x96, 0x05, 0x9a, 0xc7, 0x34, 0xb4, 0x04, 0x0b, 0x92, 0x35, 0x2c, 0x9f, 0x75, 0x86, + 0xcd, 0x12, 0xb1, 0x6d, 0x51, 0x72, 0x88, 0xc7, 0xdc, 0xfb, 0xd2, 0x78, 0x5d, 0xa2, 0x71, 0x87, + 0xe9, 0x92, 0xe3, 0x8b, 0x5b, 0x3e, 0xbb, 0x11, 0xdd, 0x68, 0xb6, 0x6a, 0x06, 0xcd, 0xa6, 0x2a, + 0xd7, 0x5d, 0x1c, 0x2c, 0x9b, 0xa6, 0xdc, 0xf6, 0x8a, 0x91, 0x2c, 0x0b, 0x86, 0xcd, 0xec, 0x48, + 0x36, 0xbe, 0x3a, 0x6d, 0x51, 0xca, 0xc7, 0x72, 0xd1, 0x21, 0x82, 0x78, 0x54, 0x52, 0x11, 0x8e, + 0x64, 0xa0, 0x24, 0x07, 0xb4, 0x34, 0x15, 0x15, 0x1a, 0x86, 0x89, 0xb4, 0xec, 0x6e, 0x4a, 0x69, + 0x55, 0xec, 0xcb, 0x57, 0x5a, 0x4d, 0x5f, 0x3e, 0xd5, 0x02, 0xab, 0x82, 0x10, 0x5d, 0x6f, 0x73, + 0xd6, 0x42, 0x73, 0x86, 0xe6, 0x6c, 0xfd, 0xcc, 0x59, 0x2b, 0x97, 0x39, 0x6b, 0x69, 0x31, 0x67, + 0x2d, 0x34, 0x67, 0x68, 0xce, 0x0a, 0x6e, 0xce, 0x7e, 0xfb, 0x8d, 0xee, 0x6b, 0x30, 0x2f, 0x1d, + 0xde, 0x55, 0x83, 0x73, 0xcb, 0x4b, 0x85, 0x24, 0x5f, 0x8b, 0x92, 0xfe, 0x7e, 0x29, 0x5f, 0x7e, + 0x2d, 0xbf, 0xd1, 0x81, 0x4b, 0x06, 0x42, 0x53, 0x05, 0x40, 0x97, 0x54, 0x21, 0x4b, 0x07, 0x3c, + 0xd3, 0xa8, 0x88, 0xd4, 0x29, 0x5d, 0x69, 0x55, 0x40, 0x66, 0x91, 0xcf, 0x2c, 0xe2, 0x59, 0x52, + 0xaa, 0xf2, 0x31, 0x21, 0xcb, 0xda, 0xc2, 0x32, 0xb1, 0x3d, 0xc6, 0x2b, 0xa3, 0x3d, 0x11, 0x85, + 0xe9, 0x83, 0xe9, 0x8f, 0xae, 0x4e, 0xe7, 0xb6, 0x55, 0xd7, 0xd5, 0x6d, 0x73, 0x36, 0xd3, 0x6d, + 0x73, 0x56, 0xe5, 0xb6, 0xa5, 0x0e, 0x24, 0xce, 0xa5, 0xdb, 0x46, 0x1e, 0x1d, 0x63, 0x88, 0x34, + 0x6b, 0x36, 0xd1, 0x6d, 0xcd, 0x14, 0xd7, 0x9c, 0xf0, 0xc8, 0x1b, 0xdd, 0xa4, 0x41, 0x3c, 0x57, + 0xb6, 0xfc, 0x68, 0x64, 0x41, 0x32, 0x88, 0xe5, 0xf4, 0xca, 0x82, 0x20, 0x29, 0x14, 0xc9, 0x75, + 0x47, 0x52, 0xbc, 0xd2, 0x13, 0x3e, 0xb1, 0x2d, 0x12, 0xca, 0x4a, 0xf0, 0x5d, 0x86, 0x39, 0x60, + 0xd5, 0xc2, 0x50, 0x9b, 0x91, 0xfc, 0x82, 0x7d, 0x92, 0x72, 0x0b, 0x41, 0x46, 0xf4, 0x63, 0x3c, + 0xf1, 0x25, 0x51, 0xcf, 0xad, 0x66, 0x8e, 0xe4, 0x97, 0x83, 0x0c, 0x97, 0xe6, 0x4b, 0xfb, 0xc8, + 0x11, 0x00, 0x56, 0x91, 0xe6, 0xa1, 0xea, 0x14, 0x8b, 0xa2, 0xb4, 0x0e, 0x95, 0x79, 0x04, 0x79, + 0x6a, 0x7f, 0xa9, 0x48, 0xdf, 0x50, 0xfd, 0x6a, 0x6b, 0x07, 0xcd, 0x66, 0x6b, 0xbf, 0xd9, 0xac, + 0xee, 0x37, 0xf6, 0xab, 0x87, 0x7b, 0x7b, 0xb5, 0x56, 0x6d, 0x6f, 0x8d, 0xde, 0x36, 0xf4, 0xdc, + 0x81, 0xb7, 0xa9, 0xec, 0xb2, 0xcd, 0x42, 0x8b, 0x08, 0x3b, 0x9f, 0x45, 0x9e, 0x0e, 0x82, 0xb6, + 0x18, 0x6d, 0x31, 0xda, 0x62, 0xb4, 0xc5, 0x68, 0x8b, 0xd1, 0x16, 0xa3, 0x2d, 0x4e, 0x6b, 0x8b, + 0xa9, 0x10, 0xbe, 0xc8, 0x67, 0x89, 0x93, 0x21, 0xd0, 0x0e, 0xa3, 0x1d, 0x46, 0x3b, 0x8c, 0x76, + 0x18, 0xed, 0x30, 0xda, 0x61, 0xb4, 0xc3, 0x69, 0xed, 0xb0, 0x17, 0xb9, 0x92, 0xa9, 0xe1, 0xaa, + 0x9f, 0x0c, 0x85, 0x76, 0x19, 0xed, 0x32, 0xda, 0x65, 0xb4, 0xcb, 0x68, 0x97, 0xd1, 0x2e, 0xa3, + 0x5d, 0x4e, 0x6b, 0x97, 0x7d, 0x4b, 0xd2, 0x9c, 0xf6, 0x38, 0x19, 0x02, 0xed, 0x30, 0xda, 0x61, + 0xb4, 0xc3, 0x68, 0x87, 0xd1, 0x0e, 0xa3, 0x1d, 0x46, 0x3b, 0x9c, 0xd6, 0x0e, 0x47, 0x5c, 0x11, + 0x3a, 0x7e, 0x34, 0x10, 0xda, 0x64, 0xb4, 0xc9, 0x68, 0x93, 0xd1, 0x26, 0xa3, 0x4d, 0x46, 0x9b, + 0x8c, 0x36, 0x39, 0xbd, 0x4d, 0xfe, 0xce, 0xfd, 0x1f, 0xbc, 0x12, 0x08, 0x5f, 0xfa, 0x79, 0xad, + 0xf2, 0xa3, 0xa1, 0xd0, 0x2e, 0xa3, 0x5d, 0x2e, 0xa2, 0x5d, 0x6e, 0xd4, 0x73, 0xd8, 0xe5, 0x7d, + 0xb4, 0xcb, 0x68, 0x97, 0xd7, 0xd4, 0x2e, 0x37, 0xeb, 0x87, 0xcd, 0xc3, 0xd6, 0x7e, 0xfd, 0x10, + 0xad, 0xf1, 0x4a, 0xac, 0xb1, 0x3b, 0x82, 0xb4, 0x96, 0x4b, 0x89, 0xc8, 0x6e, 0x86, 0xe7, 0xc6, + 0x40, 0xfb, 0x8b, 0xf6, 0xb7, 0x50, 0xf6, 0xd7, 0x26, 0x92, 0x56, 0x08, 0xb7, 0x2b, 0x92, 0x79, + 0x34, 0x4f, 0x81, 0xdf, 0x2c, 0xe0, 0xb8, 0x43, 0xa4, 0xa4, 0x82, 0x67, 0x36, 0xc3, 0xe5, 0xdb, + 0x5b, 0xfb, 0x67, 0xf3, 0xa1, 0x32, 0xfa, 0xa7, 0x3e, 0xf9, 0xe7, 0x7a, 0xfc, 0x4f, 0xfb, 0xd1, + 0x3f, 0xdb, 0xb7, 0xb7, 0xbb, 0xb7, 0xb7, 0xf6, 0x9f, 0x3b, 0xef, 0xb7, 0xff, 0x7f, 0xbf, 0x6e, + 0x6e, 0x6f, 0xff, 0xbc, 0xbd, 0xad, 0x74, 0x1f, 0x7d, 0x63, 0xa7, 0x0c, 0x52, 0xbf, 0xf9, 0x91, + 0x54, 0x76, 0x9c, 0xf3, 0x99, 0xb1, 0x50, 0xdf, 0xa1, 0xbe, 0x43, 0x1e, 0x10, 0x79, 0x40, 0xc4, + 0x1b, 0xc8, 0x03, 0x22, 0xf2, 0x48, 0x6d, 0x99, 0xf3, 0x1f, 0xe8, 0x7c, 0x34, 0x0a, 0x5a, 0x63, + 0xb4, 0xc6, 0x68, 0x8d, 0xd1, 0x1a, 0xa3, 0x35, 0x46, 0x6b, 0x8c, 0xd6, 0x38, 0xb5, 0x35, 0xce, + 0x7b, 0xa4, 0x73, 0x6e, 0x0c, 0xb4, 0xc4, 0x68, 0x89, 0xd1, 0x12, 0xa3, 0x25, 0x46, 0x4b, 0x8c, + 0x96, 0x18, 0x2d, 0x71, 0x6a, 0x4b, 0xac, 0xea, 0x50, 0xe7, 0x33, 0x63, 0xa1, 0x65, 0x46, 0xcb, + 0x8c, 0x96, 0x19, 0x2d, 0x33, 0x5a, 0x66, 0xb4, 0xcc, 0x68, 0x99, 0x53, 0x5b, 0xe6, 0xbc, 0xc7, + 0x3a, 0xe7, 0xc6, 0x40, 0x4b, 0x8c, 0x96, 0x18, 0x2d, 0x31, 0x5a, 0x62, 0xb4, 0xc4, 0x68, 0x89, + 0xd1, 0x12, 0xa7, 0xb6, 0xc4, 0x6a, 0x0e, 0x76, 0x2e, 0x8c, 0x84, 0x56, 0x19, 0xad, 0x32, 0x5a, + 0x65, 0xb4, 0xca, 0x68, 0x95, 0xd1, 0x2a, 0xa3, 0x55, 0x06, 0xdf, 0xdd, 0x3f, 0xee, 0x10, 0xf8, + 0x2e, 0x65, 0x13, 0xa9, 0xd2, 0xef, 0x1a, 0x20, 0x7e, 0x9c, 0x8c, 0x65, 0xb0, 0x7d, 0x96, 0xfd, + 0xa8, 0xd7, 0x6a, 0xca, 0x0e, 0x5a, 0xf3, 0x17, 0x63, 0x5f, 0x3b, 0x73, 0xde, 0x0a, 0xf6, 0xb5, + 0x8b, 0x3b, 0x74, 0x0a, 0xc6, 0xfb, 0x59, 0x5a, 0xda, 0x1d, 0x18, 0x94, 0x2f, 0xca, 0x49, 0xcf, + 0xa5, 0x76, 0x7a, 0xd9, 0x9a, 0x5c, 0xb8, 0x74, 0x2f, 0x71, 0x87, 0x44, 0x6e, 0xbc, 0x9e, 0xa3, + 0xed, 0x80, 0xe2, 0x88, 0xe2, 0x68, 0x56, 0x1c, 0x7b, 0xbe, 0xef, 0x52, 0x92, 0xa9, 0xc5, 0x64, + 0xcd, 0xa0, 0x3c, 0x32, 0x87, 0x71, 0x9b, 0xde, 0xa5, 0x97, 0xc7, 0xc9, 0x85, 0x28, 0x58, 0x28, + 0x58, 0x46, 0x05, 0x2b, 0x62, 0x5c, 0xa6, 0x2a, 0xd2, 0x90, 0xa1, 0x38, 0x43, 0x46, 0x48, 0x9d, + 0x81, 0x3b, 0xc8, 0x03, 0xa1, 0x73, 0xe2, 0xbb, 0xbc, 0x90, 0x59, 0x05, 0x78, 0xcb, 0x00, 0x91, + 0x73, 0x41, 0x63, 0x55, 0xaf, 0x2c, 0x6f, 0x31, 0x05, 0x25, 0xef, 0x4e, 0x13, 0x10, 0xed, 0x1a, + 0x34, 0x3f, 0xe3, 0x82, 0x06, 0x83, 0x44, 0xda, 0x52, 0x9a, 0xa0, 0xf9, 0x8b, 0xd1, 0x0c, 0xa1, + 0x19, 0x32, 0x6a, 0x86, 0x24, 0xf3, 0xa8, 0x64, 0xd6, 0xf7, 0x10, 0x2d, 0x11, 0x5a, 0x22, 0xb4, + 0x44, 0xe0, 0x2d, 0x91, 0x27, 0xa3, 0xf4, 0x16, 0x68, 0x74, 0x11, 0x5a, 0x1e, 0xb4, 0x3c, 0xc6, + 0x01, 0x50, 0xad, 0x95, 0xc1, 0xec, 0xb4, 0xd0, 0xec, 0xa0, 0xd9, 0x51, 0xf4, 0xca, 0x5a, 0x7b, + 0x7b, 0x0d, 0xb4, 0x38, 0xb9, 0x2c, 0x4e, 0x12, 0xf0, 0x4a, 0x69, 0x72, 0xe2, 0xab, 0xd0, 0xe6, + 0xa0, 0xcd, 0x31, 0x6a, 0x73, 0x60, 0x04, 0x97, 0xfc, 0x80, 0x8a, 0x4a, 0x28, 0x89, 0x8c, 0xc2, + 0xf4, 0x82, 0x35, 0x7f, 0x31, 0xca, 0x17, 0xca, 0x97, 0x51, 0xf9, 0xa2, 0x3c, 0xf2, 0xa8, 0x20, + 0x29, 0x32, 0x07, 0x1e, 0x09, 0x59, 0x33, 0xc5, 0x35, 0x27, 0x3c, 0xf2, 0x46, 0x37, 0xf9, 0x60, + 0x50, 0x30, 0x65, 0x9a, 0x17, 0x33, 0xa3, 0x58, 0x46, 0x57, 0xa1, 0x28, 0xa2, 0x28, 0x1a, 0x15, + 0x45, 0x66, 0x53, 0x2e, 0x99, 0xbc, 0x17, 0xd4, 0xc9, 0x22, 0x8a, 0x29, 0x9c, 0xe2, 0xf2, 0x59, + 0x32, 0xd5, 0x07, 0x12, 0xd2, 0x3c, 0xb5, 0xf9, 0x93, 0x84, 0xa9, 0x4a, 0x0a, 0x81, 0x79, 0xec, + 0xd0, 0x87, 0x99, 0xb2, 0x47, 0x33, 0x22, 0x90, 0xe9, 0x7d, 0x13, 0x4e, 0x2a, 0xb9, 0x6e, 0x5e, + 0xc5, 0x43, 0xe4, 0x7b, 0x98, 0xc5, 0x87, 0x72, 0x09, 0x2f, 0xaf, 0x22, 0x63, 0x54, 0xd1, 0xfd, + 0x07, 0xc2, 0x0f, 0x3a, 0x3e, 0xe3, 0xf2, 0xda, 0x8f, 0xff, 0xb9, 0xa2, 0x82, 0x11, 0x17, 0xf2, + 0x13, 0x79, 0xbe, 0x4d, 0x3d, 0xe8, 0x4b, 0xf2, 0x95, 0x09, 0x19, 0x01, 0x5f, 0x07, 0xe7, 0x8a, + 0xf5, 0xcf, 0x19, 0xff, 0x0e, 0xf9, 0x21, 0x86, 0x3e, 0xb3, 0xe8, 0xe5, 0x90, 0x8a, 0x8f, 0xa4, + 0xe7, 0x52, 0xc8, 0x4f, 0x62, 0x0f, 0x7b, 0x5f, 0xac, 0xf0, 0xda, 0xf6, 0x08, 0xe4, 0xa7, 0xf0, + 0x25, 0xbf, 0xb4, 0x23, 0xc8, 0x4f, 0xc0, 0x42, 0xff, 0xe0, 0xa0, 0x5a, 0xdf, 0xbb, 0xf6, 0xbf, + 0x53, 0xfe, 0x65, 0x04, 0xb2, 0x01, 0x3f, 0x4c, 0x18, 0xee, 0x17, 0x40, 0xc8, 0xfb, 0xfb, 0xd5, + 0x06, 0x91, 0x75, 0xaf, 0x07, 0xf9, 0x21, 0x1c, 0x41, 0x3c, 0xfa, 0x85, 0xba, 0xe4, 0xfe, 0xa2, + 0x73, 0x06, 0xf9, 0x41, 0x64, 0xc4, 0x39, 0x05, 0x6d, 0xf9, 0xdc, 0x06, 0x0b, 0xee, 0x86, 0xc0, + 0x1d, 0xc3, 0xd8, 0xf2, 0x9d, 0x7e, 0x3a, 0x3e, 0x39, 0xfa, 0x7c, 0x04, 0xda, 0x0d, 0x09, 0x68, + 0xff, 0x5a, 0x10, 0x1e, 0x06, 0xbe, 0x90, 0xa0, 0x75, 0x2d, 0xbb, 0xbb, 0xf6, 0x4f, 0xfd, 0x48, + 0x40, 0x7e, 0x08, 0x8b, 0x85, 0x96, 0x7f, 0x76, 0x75, 0x5e, 0x14, 0xe9, 0xb8, 0xbc, 0x02, 0x8e, + 0x34, 0x24, 0xf5, 0x79, 0xad, 0x7a, 0xd1, 0x63, 0xb0, 0x65, 0xc3, 0x65, 0x01, 0xe8, 0xed, 0xd4, + 0xd8, 0x83, 0x7c, 0xfb, 0xc4, 0x8d, 0x3e, 0x05, 0x3e, 0xbf, 0xe4, 0xa0, 0x3d, 0xf3, 0xd0, 0xe7, + 0x54, 0x7e, 0xbd, 0x06, 0x0d, 0x2e, 0x28, 0xa5, 0x07, 0xd5, 0x7a, 0xad, 0x06, 0xda, 0x46, 0x90, + 0xe0, 0x07, 0x09, 0xfe, 0x96, 0x13, 0x12, 0xe4, 0x0b, 0xb1, 0x99, 0x0f, 0x5a, 0x3c, 0xec, 0xd0, + 0xad, 0x83, 0xb6, 0x13, 0xb0, 0xb5, 0x6b, 0x10, 0x04, 0xd0, 0xf9, 0xc0, 0x8f, 0xdc, 0x0d, 0x21, + 0x3f, 0x83, 0x18, 0xc9, 0xf0, 0xc5, 0xd1, 0x47, 0xd0, 0x62, 0x2c, 0xbd, 0xaf, 0x16, 0x3b, 0xe1, + 0x76, 0x07, 0xb4, 0xaf, 0xe4, 0x07, 0x92, 0x59, 0xc4, 0xfd, 0x38, 0x20, 0xd0, 0x71, 0x76, 0xe0, + 0xf3, 0xda, 0x1e, 0x68, 0xc7, 0xc9, 0x23, 0xd6, 0x15, 0xb5, 0x3e, 0xfa, 0x5c, 0x0a, 0xdf, 0x75, + 0xa9, 0x7d, 0x76, 0x0a, 0xdf, 0x70, 0x1f, 0xfb, 0xb2, 0x56, 0xfb, 0x10, 0x86, 0x05, 0x20, 0x69, + 0xeb, 0xae, 0x6b, 0xc1, 0x7e, 0x0c, 0x1b, 0xb6, 0x4b, 0xde, 0x0b, 0x2d, 0xe0, 0x31, 0x97, 0xa3, + 0x90, 0x5d, 0x46, 0x12, 0xba, 0xfb, 0x71, 0xec, 0x5b, 0xe1, 0xdf, 0x4c, 0x50, 0x97, 0x86, 0xe1, + 0x5f, 0x41, 0x28, 0x05, 0x25, 0x1e, 0x6c, 0xb2, 0xfc, 0xd8, 0x2d, 0x80, 0x29, 0xb7, 0x43, 0xd0, + 0x40, 0x2f, 0x94, 0xc4, 0xfa, 0x7e, 0xed, 0x5f, 0x8d, 0xfe, 0x81, 0xcd, 0xcc, 0x06, 0x57, 0xac, + 0x0f, 0x9e, 0xce, 0x3c, 0x3e, 0x3b, 0x86, 0xad, 0xa7, 0x98, 0x47, 0xc4, 0xfd, 0xd9, 0xd5, 0xf1, + 0x67, 0xc8, 0x8f, 0x41, 0xe5, 0x80, 0x0a, 0x4e, 0x65, 0x03, 0x3a, 0x27, 0x3b, 0x0b, 0x48, 0xc6, + 0x15, 0xbe, 0x2c, 0x9f, 0x73, 0x6a, 0x81, 0x7e, 0xa2, 0x21, 0x6c, 0x5e, 0xad, 0xc7, 0x64, 0x11, + 0x9c, 0xf2, 0xbd, 0x53, 0xd6, 0xa3, 0xa0, 0x83, 0x60, 0x0e, 0x09, 0x25, 0x70, 0xba, 0xff, 0x04, + 0x3e, 0xdd, 0xcf, 0xc2, 0x08, 0x34, 0x2d, 0xe8, 0x7a, 0xa0, 0x6f, 0xbf, 0x1f, 0xf8, 0xbc, 0x00, + 0x42, 0x70, 0xee, 0xf7, 0x99, 0x45, 0x5c, 0xe8, 0x29, 0x50, 0xae, 0x6f, 0x11, 0xf7, 0x9a, 0xb8, + 0xdf, 0x8b, 0xe1, 0x71, 0x5c, 0x51, 0x31, 0x64, 0x16, 0x85, 0x9f, 0x94, 0xd6, 0x6a, 0x7e, 0x07, + 0x4e, 0x99, 0xc3, 0x8f, 0xde, 0x59, 0x92, 0xba, 0x2c, 0xbc, 0xa0, 0x92, 0x9c, 0x5f, 0x5e, 0x76, + 0x40, 0x3b, 0xb0, 0xd0, 0x03, 0x91, 0x93, 0xf8, 0xf6, 0x5e, 0x13, 0xb4, 0x68, 0x1f, 0x1e, 0x1e, + 0xc0, 0x26, 0x6e, 0x3c, 0x3b, 0x3c, 0xbe, 0x63, 0x90, 0x1f, 0xe1, 0xae, 0xbe, 0xe7, 0xb9, 0xa0, + 0x1d, 0x28, 0xe1, 0x58, 0xb5, 0xe6, 0x41, 0x03, 0xb4, 0x20, 0x88, 0x46, 0xb5, 0xf1, 0xe5, 0x18, + 0x74, 0xca, 0x4d, 0xdf, 0x09, 0xc0, 0x1f, 0x0b, 0xb1, 0x8e, 0xfd, 0x1f, 0x1c, 0x3e, 0xab, 0x6f, + 0x0f, 0x7b, 0xd7, 0xb6, 0x07, 0x5c, 0xa6, 0x0f, 0xf6, 0xf7, 0xef, 0xea, 0xa0, 0x83, 0xda, 0x2e, + 0x09, 0x7a, 0xd0, 0xad, 0xdb, 0x99, 0x05, 0x3b, 0xe5, 0xc9, 0x25, 0x81, 0x0d, 0xda, 0xd1, 0x0b, + 0xe2, 0x43, 0x77, 0x36, 0xec, 0xf8, 0xfb, 0xa0, 0x51, 0x6f, 0x7c, 0x22, 0x92, 0x7e, 0xa7, 0x34, + 0x80, 0x4d, 0x59, 0x5a, 0xf0, 0xb3, 0x85, 0x6c, 0x37, 0xfc, 0x01, 0xda, 0x36, 0x84, 0x02, 0xb4, + 0x5a, 0xf5, 0x86, 0xb0, 0xb7, 0x8f, 0x6f, 0x85, 0xf1, 0x21, 0xe0, 0x49, 0xfe, 0xc3, 0x17, 0xa7, + 0x03, 0xfc, 0x44, 0x11, 0x0b, 0xae, 0x7e, 0x30, 0x69, 0x0d, 0x60, 0xa7, 0x40, 0x54, 0x81, 0xdf, + 0xfe, 0x87, 0x88, 0xdb, 0xb0, 0x8f, 0x96, 0x5b, 0x34, 0x84, 0x9e, 0x25, 0x07, 0x5a, 0xb1, 0x86, + 0x76, 0xe8, 0x42, 0xe7, 0xc3, 0x40, 0xd3, 0x92, 0x03, 0x3f, 0x94, 0x1d, 0x62, 0x17, 0x21, 0xb8, + 0xfe, 0xf1, 0xcb, 0x69, 0xe7, 0x8c, 0x4b, 0xf0, 0xc9, 0x4c, 0x27, 0x17, 0xa0, 0x45, 0x9a, 0xda, + 0x8c, 0x5c, 0x10, 0xe6, 0x8e, 0x50, 0xd0, 0x19, 0x68, 0x24, 0x3a, 0x80, 0x1e, 0x73, 0x20, 0xd2, + 0x03, 0x7e, 0xfb, 0x49, 0x8c, 0xba, 0x50, 0xde, 0x37, 0x68, 0x82, 0x69, 0x00, 0xdc, 0x60, 0x27, + 0x1a, 0xf6, 0xf4, 0xd3, 0x31, 0xf0, 0xf4, 0x63, 0x71, 0x0e, 0xbb, 0x0c, 0x01, 0x21, 0xee, 0x1e, + 0x6c, 0xe3, 0xe0, 0x5a, 0xf0, 0xa3, 0x27, 0x17, 0xc4, 0x3a, 0x27, 0xf7, 0xc0, 0x73, 0x12, 0xc5, + 0xa9, 0x2f, 0x7e, 0x10, 0x61, 0x83, 0x3f, 0x68, 0x1d, 0xb8, 0x11, 0x68, 0x38, 0x4a, 0x03, 0x57, + 0x84, 0xf0, 0x6b, 0xa3, 0xfc, 0x73, 0x09, 0xda, 0x36, 0x00, 0x57, 0x4c, 0xac, 0x00, 0x41, 0xe9, + 0x22, 0xb8, 0x7a, 0x4f, 0x0f, 0xcf, 0x5d, 0x10, 0xcb, 0x85, 0x6e, 0x2a, 0x7a, 0x82, 0xd9, 0x7d, + 0x5a, 0x00, 0xb2, 0xa3, 0x75, 0x01, 0xdb, 0xfb, 0x9b, 0xe5, 0xbb, 0x42, 0xcf, 0xe9, 0xab, 0x35, + 0x0e, 0x41, 0x67, 0xf4, 0x31, 0x0f, 0x34, 0x63, 0xc6, 0x43, 0xd8, 0xf6, 0x82, 0x10, 0xd8, 0x14, + 0x53, 0x5f, 0x82, 0x7e, 0xfd, 0x8e, 0xc5, 0x82, 0x42, 0x14, 0x7a, 0x3e, 0xf9, 0x00, 0xba, 0x9c, + 0x1f, 0x85, 0x7d, 0xa2, 0x26, 0xae, 0xbf, 0xd6, 0x21, 0x72, 0x00, 0x1b, 0x38, 0xc0, 0xa6, 0xf6, + 0x5c, 0x12, 0x38, 0x85, 0x20, 0x8a, 0x8b, 0x91, 0xd2, 0x6a, 0xf9, 0x5e, 0xe0, 0x87, 0x4c, 0x52, + 0xe8, 0xfa, 0x75, 0x70, 0x1f, 0x50, 0x51, 0x80, 0x2c, 0x32, 0xe2, 0xb8, 0x84, 0xd3, 0x83, 0x6a, + 0x1d, 0x74, 0xe2, 0xbd, 0xc5, 0x05, 0xec, 0x9a, 0xce, 0x16, 0x78, 0x43, 0x77, 0x39, 0xa4, 0x62, + 0x40, 0x89, 0x5d, 0x80, 0x3a, 0x6c, 0xff, 0xd6, 0x0f, 0x1b, 0xb5, 0x22, 0xd4, 0xdc, 0xf8, 0x18, + 0x7a, 0xc4, 0xb2, 0x81, 0x47, 0x7b, 0x81, 0x1f, 0xcc, 0x22, 0xd2, 0xeb, 0xf9, 0x1c, 0xf4, 0x22, + 0xd8, 0x36, 0xff, 0x07, 0xf6, 0x11, 0x0e, 0x11, 0xd6, 0x1b, 0x75, 0xd8, 0x7e, 0x93, 0xe3, 0x50, + 0x5a, 0x84, 0xa3, 0xae, 0xad, 0xbf, 0x2f, 0x8e, 0x40, 0x17, 0x34, 0x8a, 0x42, 0xd0, 0x69, 0xeb, + 0x03, 0x16, 0x04, 0xec, 0x6c, 0xd2, 0xb5, 0xae, 0x08, 0x29, 0x7e, 0xc7, 0x52, 0x40, 0x0f, 0xa9, + 0x7c, 0xf8, 0xfb, 0x28, 0xa8, 0x5f, 0x80, 0x26, 0xcd, 0x7e, 0xfc, 0x20, 0xbc, 0x03, 0xba, 0x9a, + 0x00, 0x0d, 0x2d, 0xbf, 0x00, 0x4d, 0x3c, 0xfe, 0xb9, 0x82, 0xdd, 0x10, 0x6d, 0x00, 0x3c, 0x9a, + 0x48, 0x42, 0x66, 0x41, 0x2f, 0xda, 0x37, 0x1c, 0x77, 0x2a, 0x38, 0x0b, 0x8e, 0x6c, 0x5b, 0x50, + 0xd8, 0xb5, 0x8f, 0x87, 0x8d, 0xfd, 0x02, 0x58, 0xb9, 0x06, 0x7c, 0x2c, 0x37, 0x32, 0x74, 0x17, + 0x91, 0x2b, 0x59, 0xe0, 0xd2, 0x3b, 0x5f, 0x40, 0x4f, 0xcc, 0x02, 0x0e, 0x4a, 0xcf, 0x60, 0x37, + 0xce, 0xbc, 0xab, 0xef, 0x0d, 0x22, 0x2e, 0x3f, 0x09, 0x1f, 0x76, 0xd5, 0x3b, 0x01, 0x7d, 0x2b, + 0xd9, 0x61, 0xed, 0xf4, 0xf8, 0x1c, 0x7c, 0xd5, 0x96, 0x33, 0xd8, 0x55, 0x5b, 0xc6, 0xe1, 0x5e, + 0x6e, 0x91, 0x00, 0x7e, 0x95, 0x84, 0x23, 0xd8, 0x07, 0x54, 0x64, 0xdc, 0x9c, 0xf1, 0x3f, 0xc0, + 0x13, 0x2e, 0xfb, 0x87, 0x87, 0xb0, 0x6b, 0x31, 0x25, 0x3d, 0xdc, 0x3a, 0x83, 0xfb, 0x90, 0x59, + 0xc4, 0xfd, 0x8b, 0x83, 0x66, 0x91, 0x87, 0xde, 0x0f, 0x22, 0xe8, 0x67, 0x66, 0x5d, 0x03, 0x0f, + 0x00, 0xff, 0x0b, 0xfc, 0xa8, 0x93, 0xef, 0xc8, 0xd1, 0x4a, 0x9c, 0xfb, 0x7e, 0xd0, 0x03, 0x5e, + 0xe6, 0x9f, 0x08, 0xd8, 0xd6, 0xc2, 0x0b, 0x80, 0xf7, 0x10, 0xa3, 0xc4, 0x1a, 0x1c, 0x5f, 0x81, + 0xf6, 0x9d, 0x06, 0x61, 0x08, 0x3d, 0x3a, 0x77, 0x1a, 0xc1, 0x36, 0x0d, 0x4f, 0x53, 0xf2, 0x8b, + 0x91, 0x28, 0x94, 0x30, 0x50, 0xd7, 0x7d, 0xd8, 0x75, 0x14, 0x3c, 0x1a, 0x70, 0x52, 0x80, 0xb2, + 0xe0, 0x05, 0x71, 0xa3, 0x12, 0x32, 0xad, 0x79, 0xed, 0x7f, 0xa7, 0xfc, 0x03, 0xec, 0x73, 0x75, + 0x91, 0x2b, 0x05, 0x81, 0xde, 0x36, 0xe2, 0x04, 0x3a, 0xdd, 0x1f, 0xf8, 0xbc, 0x55, 0x87, 0x5d, + 0x0f, 0x42, 0x58, 0x9c, 0xca, 0x0e, 0xf0, 0x53, 0xa6, 0x6e, 0x83, 0x05, 0xd0, 0x9b, 0xf0, 0x13, + 0xe9, 0x25, 0x2d, 0xa2, 0x41, 0x43, 0x24, 0x11, 0x40, 0x37, 0x78, 0xe7, 0x9d, 0x02, 0xd4, 0x1a, + 0x75, 0x09, 0xe8, 0xf2, 0x90, 0x6e, 0x1d, 0xba, 0x38, 0x7b, 0xbe, 0x45, 0xbe, 0x52, 0x11, 0x32, + 0x9f, 0x83, 0xce, 0x26, 0x65, 0x4e, 0xe7, 0xc7, 0xf5, 0x7d, 0x00, 0x3a, 0x57, 0x88, 0xd6, 0xc0, + 0xe7, 0x6c, 0x81, 0xde, 0x42, 0x3d, 0xaf, 0xb1, 0x5f, 0x0d, 0x88, 0xf8, 0x38, 0x20, 0xf0, 0x53, + 0x6c, 0x0a, 0x50, 0xc4, 0x8c, 0x05, 0x54, 0xb8, 0x84, 0xd7, 0x0b, 0xd0, 0xf8, 0xfd, 0x3a, 0x8e, + 0xb7, 0x00, 0x2f, 0x5d, 0x3b, 0x6e, 0x9c, 0xfe, 0x17, 0xb7, 0x0a, 0xd2, 0x3a, 0x7d, 0x1c, 0xaf, + 0x48, 0xbc, 0xd9, 0xcf, 0xcc, 0x82, 0x9d, 0x92, 0xc6, 0x2f, 0x65, 0x54, 0x08, 0xad, 0x05, 0x3c, + 0xb4, 0xda, 0xeb, 0x07, 0x81, 0xef, 0x32, 0xeb, 0x9e, 0x58, 0x96, 0x1f, 0x71, 0xc9, 0x78, 0x1f, + 0x3a, 0x73, 0x0b, 0x7c, 0x45, 0xac, 0x9e, 0xfb, 0x95, 0x5a, 0x92, 0x5c, 0x49, 0x02, 0xbb, 0x1f, + 0x00, 0x09, 0x7e, 0x90, 0xe0, 0xd8, 0x97, 0xb5, 0x5a, 0x47, 0xf8, 0x0e, 0x03, 0x5e, 0xc0, 0xfa, + 0xf1, 0x81, 0xe1, 0x02, 0x54, 0x76, 0x77, 0x2a, 0xfd, 0x90, 0xc3, 0xce, 0x0a, 0xa9, 0x56, 0x0f, + 0x60, 0xa7, 0xd1, 0xb6, 0xa0, 0x17, 0x45, 0x07, 0x4d, 0x70, 0x7a, 0xf7, 0x82, 0x71, 0x0a, 0xbb, + 0xcf, 0x72, 0xad, 0x7e, 0x11, 0x14, 0xa1, 0x47, 0x83, 0xc5, 0x61, 0xf3, 0x83, 0x05, 0x28, 0x8d, + 0x69, 0xb3, 0x3e, 0x93, 0xc4, 0xfd, 0x5b, 0x90, 0x20, 0xa0, 0xa2, 0x40, 0x87, 0xcf, 0x81, 0x97, + 0xae, 0x62, 0xdc, 0x61, 0x9c, 0xf5, 0x08, 0xf0, 0x13, 0xcf, 0x4f, 0xcb, 0x73, 0x17, 0x60, 0x63, + 0x05, 0x36, 0x8f, 0xa3, 0xad, 0xe7, 0xbe, 0x1f, 0xc0, 0x6e, 0x9a, 0xeb, 0x7c, 0x75, 0x18, 0x74, + 0x42, 0x7a, 0x60, 0x0f, 0x6a, 0x07, 0xb0, 0x03, 0xc7, 0x43, 0xe0, 0x27, 0x17, 0x24, 0xf0, 0x14, + 0xed, 0x29, 0xab, 0x73, 0x5a, 0x88, 0xba, 0x99, 0x8e, 0x70, 0x6a, 0xad, 0x0b, 0x47, 0xc0, 0xef, + 0x1f, 0x15, 0x97, 0xfb, 0x0d, 0x8b, 0x50, 0x45, 0x3d, 0x10, 0xbe, 0xa4, 0x3e, 0x3f, 0xa8, 0x5e, + 0xf4, 0x98, 0x2c, 0x44, 0xae, 0xd1, 0xe9, 0x3f, 0xa0, 0xd7, 0x23, 0x18, 0x9f, 0xa0, 0x74, 0x19, + 0xff, 0x5e, 0x00, 0x39, 0x99, 0x78, 0x59, 0x45, 0xa8, 0x22, 0x0d, 0xbf, 0xa4, 0x9d, 0x1d, 0x36, + 0x60, 0x2f, 0x80, 0xf0, 0x80, 0x37, 0x2d, 0xb3, 0x61, 0x07, 0x03, 0x06, 0x8d, 0x7a, 0xa3, 0x23, + 0xfc, 0x3b, 0xd0, 0x6e, 0x88, 0x08, 0x04, 0xfc, 0x32, 0x2c, 0xa0, 0x71, 0x05, 0xb5, 0x7c, 0xe0, + 0x44, 0xe7, 0x3c, 0xd4, 0x06, 0x9d, 0x78, 0x44, 0xc2, 0x7b, 0x0e, 0xfb, 0x18, 0x2b, 0xeb, 0x93, + 0x1e, 0x1b, 0xbb, 0x7e, 0xc0, 0x37, 0x95, 0x17, 0xb8, 0xe1, 0x75, 0x04, 0x9d, 0x85, 0x62, 0xc0, + 0x49, 0x83, 0xa4, 0x8c, 0x5d, 0x83, 0xd8, 0xe7, 0xa4, 0x0f, 0x1c, 0xa4, 0x1e, 0x85, 0xec, 0x8c, + 0x17, 0x20, 0x03, 0x2c, 0x21, 0x67, 0xc1, 0xd7, 0x02, 0x21, 0x43, 0x66, 0xb1, 0xcb, 0xf1, 0x33, + 0xc1, 0x3f, 0x18, 0x43, 0x60, 0x9f, 0x4e, 0x9a, 0xd4, 0xab, 0xac, 0x17, 0x20, 0x4a, 0xd6, 0xf1, + 0x7f, 0x50, 0xe1, 0x32, 0x0e, 0x9a, 0x2d, 0xf0, 0x98, 0x7f, 0x07, 0xbb, 0x0a, 0x2d, 0xe3, 0x92, + 0x0a, 0x97, 0x92, 0x21, 0x85, 0x9e, 0xb5, 0x36, 0x39, 0x6b, 0xdc, 0xa9, 0x83, 0x3e, 0x29, 0xc3, + 0x1d, 0x12, 0xc2, 0x3f, 0xba, 0x07, 0xbe, 0x74, 0x3c, 0xf0, 0x3a, 0x64, 0x01, 0xf0, 0x64, 0x41, + 0x4b, 0x9e, 0x78, 0x11, 0xec, 0xd0, 0x36, 0xec, 0x40, 0xde, 0xdd, 0x41, 0xeb, 0x9c, 0x04, 0x61, + 0x31, 0xa8, 0xfc, 0x8f, 0x9e, 0x2c, 0x48, 0x09, 0x0a, 0xc7, 0xb6, 0x59, 0x21, 0x5a, 0xbb, 0x80, + 0x76, 0x9a, 0xfe, 0x75, 0x81, 0x0b, 0x77, 0xbd, 0x06, 0x3a, 0xac, 0x32, 0x82, 0x0d, 0x7d, 0xf0, + 0x55, 0x36, 0x69, 0x3f, 0x72, 0x89, 0x80, 0x9e, 0x71, 0x93, 0x14, 0x63, 0x01, 0xad, 0x54, 0x59, + 0x4f, 0xd0, 0x02, 0x64, 0xd3, 0x11, 0xe9, 0x5d, 0x45, 0xbd, 0x42, 0xf4, 0x51, 0x08, 0xfc, 0x10, + 0x78, 0xc2, 0x6c, 0xae, 0x2a, 0x51, 0x99, 0xae, 0xec, 0x6e, 0x19, 0x78, 0x51, 0xd9, 0x5e, 0xd0, + 0x8c, 0x6e, 0xc8, 0x54, 0x3f, 0xc1, 0xfc, 0x7d, 0x06, 0xc2, 0x0f, 0x3a, 0x3e, 0xe3, 0xf2, 0xda, + 0x8f, 0xff, 0xb9, 0xa2, 0x82, 0x65, 0x29, 0x81, 0x62, 0xfe, 0xce, 0x3d, 0xdf, 0xa6, 0x1e, 0x94, + 0x57, 0x9c, 0xb9, 0xb4, 0xcc, 0x0a, 0xde, 0xab, 0x73, 0xc5, 0xfa, 0xd9, 0xd2, 0x69, 0xcc, 0xdf, + 0xec, 0x34, 0x0d, 0x33, 0xc6, 0x3f, 0x10, 0xee, 0x78, 0x9c, 0x9f, 0x78, 0x6d, 0x67, 0xa9, 0x00, + 0x6f, 0xfe, 0x6e, 0x7d, 0xc9, 0x2f, 0xed, 0x08, 0xc2, 0x9d, 0x4e, 0x1a, 0x12, 0xc5, 0xd5, 0xe5, + 0xbe, 0x64, 0x3a, 0x9c, 0x6c, 0xfe, 0xa6, 0xc3, 0x70, 0x1f, 0x90, 0xb0, 0xf5, 0xf7, 0xab, 0x0d, + 0x22, 0xeb, 0x5e, 0x0f, 0xc2, 0xcd, 0x3a, 0xd3, 0xbc, 0xec, 0x8b, 0xce, 0x19, 0x84, 0x1b, 0x96, + 0x19, 0xd3, 0x0b, 0xcc, 0xdf, 0xa9, 0xdb, 0x60, 0xc1, 0xdd, 0x10, 0x88, 0x83, 0x33, 0xee, 0xcb, + 0xf4, 0xe9, 0xf8, 0xe4, 0xe8, 0xf3, 0x11, 0x08, 0xf3, 0x1b, 0xd0, 0x7e, 0x8e, 0xaa, 0x2a, 0x2b, + 0xd0, 0x61, 0xec, 0xee, 0xda, 0x3f, 0xf5, 0x23, 0x01, 0xe1, 0x66, 0x2d, 0x16, 0x5a, 0xfe, 0xd9, + 0xd5, 0x39, 0xb4, 0xdd, 0x7b, 0x79, 0x05, 0xc4, 0xd3, 0x95, 0xd4, 0xe7, 0xb5, 0x8c, 0x27, 0x16, + 0x56, 0xb0, 0x77, 0xdd, 0x2c, 0x07, 0x3e, 0x57, 0xb0, 0x0d, 0x1a, 0x7b, 0x10, 0x6e, 0x33, 0x69, + 0xfb, 0x70, 0xc9, 0x41, 0x78, 0x8c, 0x71, 0xf8, 0xf3, 0xeb, 0x35, 0x08, 0xe7, 0x36, 0xc9, 0x87, + 0xa9, 0x81, 0xd0, 0xb1, 0x71, 0x39, 0x97, 0xbf, 0xe5, 0x04, 0xf4, 0x7e, 0x21, 0x36, 0xf3, 0x41, + 0x6c, 0x5f, 0x3b, 0x74, 0xeb, 0x20, 0xf4, 0x2c, 0x0c, 0xad, 0x15, 0x04, 0x01, 0x14, 0x7e, 0xe6, + 0x23, 0xcf, 0xd2, 0xce, 0xc2, 0xfc, 0xbd, 0x8a, 0x91, 0x2c, 0x5d, 0x1c, 0x7d, 0x04, 0x21, 0x4e, + 0xd2, 0xfb, 0x6a, 0xb1, 0x13, 0x6e, 0x77, 0x40, 0xf8, 0x02, 0x8f, 0xf3, 0x59, 0x41, 0x6c, 0x5c, + 0x9f, 0xd7, 0xf6, 0x40, 0x38, 0x06, 0xe3, 0x0a, 0x8b, 0x1f, 0x73, 0xd5, 0x57, 0x5c, 0x95, 0x21, + 0x8b, 0xeb, 0x92, 0x7d, 0x08, 0x43, 0x40, 0x24, 0x58, 0x3d, 0x53, 0xd8, 0x7e, 0x15, 0xb7, 0x6b, + 0xc3, 0x70, 0x15, 0x7b, 0xa1, 0x05, 0x84, 0x5b, 0x3e, 0x0a, 0xd9, 0x65, 0x24, 0xa1, 0x98, 0xdd, + 0xf9, 0xd6, 0x39, 0x93, 0x6a, 0x2f, 0x30, 0xc8, 0xc5, 0x63, 0x17, 0x90, 0x69, 0xb3, 0x43, 0x10, + 0xc0, 0x21, 0x94, 0xc4, 0xfa, 0x7e, 0xed, 0x5f, 0xc9, 0x4c, 0xbd, 0xdd, 0x56, 0xc1, 0x7c, 0x05, + 0x57, 0xac, 0x0f, 0x86, 0x46, 0x3a, 0x3e, 0x3b, 0x86, 0xa1, 0x17, 0x98, 0x47, 0xc4, 0x7d, 0xb6, + 0x2e, 0xee, 0xe6, 0x6f, 0x97, 0x26, 0xa7, 0x1b, 0x1b, 0x50, 0x38, 0xaf, 0x59, 0x60, 0x24, 0x4e, + 0xa0, 0xb1, 0x7c, 0xce, 0xa9, 0x05, 0xe2, 0xce, 0x87, 0x30, 0xf8, 0x8f, 0x1e, 0x93, 0x90, 0x9c, + 0xc5, 0xbd, 0x53, 0xd6, 0xa3, 0x20, 0xc8, 0x7b, 0x87, 0x84, 0x12, 0x08, 0x0d, 0x7a, 0x02, 0x87, + 0x06, 0x65, 0x61, 0x04, 0x82, 0xa6, 0x71, 0x3d, 0x10, 0xb7, 0xd9, 0xcf, 0x94, 0x23, 0xba, 0xb2, + 0x4d, 0x7a, 0xee, 0xf7, 0x99, 0x45, 0x5c, 0x28, 0x29, 0x08, 0xae, 0x6f, 0x11, 0xf7, 0x9a, 0xb8, + 0xdf, 0x61, 0x59, 0xda, 0x2b, 0x2a, 0x86, 0xcc, 0xa2, 0x70, 0x92, 0x3c, 0x5a, 0xcd, 0xef, 0x40, + 0x28, 0x46, 0x38, 0xd1, 0x05, 0x4b, 0x52, 0x97, 0x85, 0x17, 0x54, 0x92, 0xf3, 0xcb, 0xcb, 0x0e, + 0x08, 0x87, 0x0b, 0x4a, 0x40, 0x64, 0x12, 0x1f, 0xdb, 0x6b, 0x82, 0x10, 0xb1, 0xc3, 0xc3, 0x03, + 0x18, 0x80, 0xdc, 0xb3, 0xc3, 0xe3, 0x3b, 0x06, 0xe1, 0x56, 0xef, 0xea, 0x7b, 0x9e, 0x0b, 0xc2, + 0x41, 0x10, 0x8e, 0x55, 0x6b, 0x1e, 0x34, 0x40, 0x6c, 0x54, 0xd1, 0xa8, 0x36, 0xbe, 0x1c, 0x83, + 0x08, 0x91, 0xf7, 0x9d, 0x00, 0x4c, 0xfa, 0xaf, 0x95, 0xe7, 0x8c, 0xe6, 0x4a, 0xee, 0xf9, 0xda, + 0xf6, 0x80, 0xc8, 0xd6, 0xc1, 0xfe, 0x7e, 0xa6, 0x4a, 0x15, 0x2b, 0xf0, 0x65, 0x49, 0xd0, 0x83, + 0x62, 0x05, 0xce, 0x2c, 0x18, 0x29, 0x07, 0x2e, 0x09, 0x6c, 0x10, 0x0e, 0xcb, 0xb8, 0x4d, 0xac, + 0x0d, 0x23, 0x4e, 0x37, 0x68, 0xd4, 0x1b, 0x9f, 0x88, 0xa4, 0xdf, 0x29, 0x0d, 0x60, 0x50, 0x45, + 0x16, 0x9c, 0x28, 0xbe, 0xed, 0x86, 0x3f, 0x40, 0xe8, 0xd6, 0x50, 0x80, 0x50, 0x57, 0xde, 0x10, + 0xc6, 0xb2, 0x3f, 0xed, 0x72, 0x91, 0xb5, 0x51, 0xd8, 0x2a, 0x94, 0x57, 0xd6, 0x36, 0x42, 0xab, + 0x08, 0x7d, 0x56, 0x81, 0xdc, 0x66, 0xd6, 0x92, 0xe2, 0x2b, 0x50, 0xae, 0x34, 0x84, 0x92, 0x5d, + 0x02, 0x42, 0x61, 0x85, 0x99, 0xca, 0x72, 0xae, 0x86, 0xb7, 0x00, 0x41, 0x07, 0x0d, 0xfc, 0x50, + 0x66, 0xaa, 0x46, 0xbe, 0xba, 0x20, 0xdc, 0xc7, 0x2f, 0xa7, 0x9d, 0x33, 0x2e, 0xc1, 0x24, 0x13, + 0x9c, 0x5c, 0x80, 0x10, 0x2d, 0x6a, 0x33, 0x72, 0x41, 0x98, 0x9b, 0xb5, 0x6b, 0xf8, 0x0a, 0xf6, + 0x2e, 0x14, 0xce, 0x95, 0x48, 0x0f, 0xc8, 0x6d, 0x26, 0x31, 0x2e, 0x90, 0x5e, 0x21, 0x08, 0x82, + 0x60, 0x00, 0xc4, 0x80, 0x25, 0x9a, 0xeb, 0xf4, 0xd3, 0x31, 0x90, 0x74, 0x38, 0x71, 0x0e, 0xe3, + 0x98, 0x22, 0x21, 0xee, 0x1e, 0x0c, 0xe5, 0xea, 0x5a, 0x70, 0x58, 0xe2, 0xec, 0x4d, 0xac, 0x56, + 0x11, 0xeb, 0xce, 0xdc, 0xd7, 0x74, 0x45, 0x07, 0xbd, 0x02, 0x37, 0x02, 0x01, 0x63, 0x68, 0xe0, + 0x8a, 0x10, 0xce, 0x59, 0xe5, 0x7f, 0x2e, 0x41, 0xe8, 0x56, 0x20, 0x8a, 0x80, 0x01, 0x0a, 0x6a, + 0x41, 0x72, 0x59, 0x9e, 0x1e, 0x3e, 0xc8, 0xde, 0x04, 0x6d, 0x05, 0xf9, 0xa5, 0x82, 0xd9, 0x7d, + 0x0a, 0x08, 0xdc, 0xb6, 0x2e, 0x60, 0x78, 0x31, 0x4e, 0x8e, 0x56, 0x9e, 0xab, 0xc9, 0x79, 0xa9, + 0x35, 0x0e, 0x41, 0x64, 0xbc, 0x30, 0x0f, 0x04, 0xb3, 0xc1, 0x43, 0x18, 0xfa, 0x96, 0x10, 0x18, + 0x14, 0x41, 0x5f, 0x82, 0x78, 0x9d, 0x8e, 0xc5, 0x02, 0x50, 0x05, 0xef, 0x4e, 0x3e, 0x80, 0x28, + 0x07, 0x43, 0x61, 0x64, 0x42, 0xc7, 0x75, 0x40, 0x3a, 0x44, 0x0e, 0x60, 0x38, 0xae, 0x30, 0xa8, + 0x16, 0x97, 0x04, 0x0e, 0x28, 0xc2, 0x0d, 0x56, 0x4a, 0x96, 0xe5, 0x7b, 0x81, 0x1f, 0xb2, 0xac, + 0x7d, 0x6f, 0x57, 0xc0, 0xbc, 0xdc, 0x07, 0x54, 0x00, 0xca, 0xca, 0x98, 0xd6, 0xef, 0x07, 0x91, + 0xa8, 0x69, 0x71, 0x01, 0xa3, 0xb6, 0x9d, 0x05, 0xc6, 0x20, 0x5c, 0x0e, 0xa9, 0x18, 0x50, 0x62, + 0x03, 0xaa, 0x07, 0xf2, 0x6f, 0xfd, 0xb0, 0x51, 0x83, 0x74, 0x66, 0xf6, 0x63, 0xe8, 0x11, 0xcb, + 0x06, 0x12, 0x45, 0x02, 0x92, 0x08, 0x4f, 0xa4, 0xd7, 0xf3, 0x39, 0x88, 0x97, 0x6a, 0xdb, 0xfc, + 0x1f, 0x18, 0xa9, 0xba, 0x22, 0xac, 0x37, 0xea, 0x30, 0xfc, 0x02, 0xc7, 0xa1, 0x14, 0xd2, 0x91, + 0x9d, 0xd6, 0xdf, 0x17, 0x47, 0x20, 0x0e, 0xfa, 0x47, 0x21, 0x88, 0xf4, 0xc7, 0x01, 0x0b, 0x02, + 0x96, 0xa3, 0x35, 0xc6, 0xea, 0x52, 0x60, 0x8e, 0xa5, 0x80, 0x42, 0x1d, 0x7f, 0xf8, 0xfb, 0x28, + 0xa8, 0x5f, 0x80, 0x20, 0x37, 0xc6, 0x3d, 0xe9, 0x41, 0x78, 0x05, 0xa1, 0xe5, 0x03, 0x2a, 0xca, + 0xfb, 0xcf, 0x15, 0x8c, 0x02, 0xfe, 0x03, 0x20, 0x51, 0x0d, 0x12, 0x32, 0x0b, 0x4a, 0xd1, 0x97, + 0xe1, 0xb8, 0xb2, 0xe9, 0x59, 0x70, 0x64, 0xdb, 0x82, 0xc2, 0xa8, 0x0d, 0x37, 0x6c, 0xec, 0x03, + 0xb2, 0x06, 0x0d, 0x38, 0xd8, 0x60, 0x64, 0x10, 0x2e, 0x22, 0x57, 0xb2, 0xc0, 0xa5, 0x77, 0xbe, + 0x80, 0x92, 0x00, 0x01, 0x04, 0xcc, 0x9c, 0xc1, 0x68, 0x94, 0x72, 0x57, 0xdf, 0x1b, 0x44, 0x5c, + 0x66, 0x6c, 0x83, 0xbf, 0x92, 0x42, 0xb2, 0x30, 0xb6, 0x80, 0x1d, 0xd6, 0x4e, 0x8f, 0xcf, 0xc1, + 0x9c, 0x96, 0x3e, 0x83, 0x71, 0x5a, 0x7a, 0x1c, 0x46, 0xe2, 0x16, 0x09, 0xe0, 0x9c, 0x96, 0x3c, + 0x82, 0x91, 0x70, 0x2c, 0xe3, 0xe6, 0x1d, 0xff, 0x01, 0x92, 0x60, 0xd4, 0x3f, 0x3c, 0x84, 0x51, + 0x8b, 0x20, 0xe9, 0x2d, 0xd0, 0x19, 0xdc, 0x87, 0xcc, 0x22, 0xee, 0x5f, 0x1c, 0x04, 0x1b, 0x37, + 0xf4, 0x7e, 0x10, 0x41, 0x3f, 0x33, 0xeb, 0x1a, 0x48, 0x60, 0xe9, 0x5f, 0x20, 0x29, 0xe7, 0xbe, + 0x23, 0x47, 0x6f, 0xf6, 0xdc, 0xf7, 0x83, 0x1e, 0x90, 0x72, 0xa1, 0x44, 0xc0, 0xd0, 0xb6, 0x5e, + 0x00, 0xa4, 0x16, 0x3e, 0x25, 0xd6, 0xe0, 0xf8, 0x0a, 0x84, 0x6f, 0x30, 0x08, 0x43, 0x28, 0xd1, + 0x83, 0xd3, 0x08, 0x86, 0x6a, 0x7d, 0x9a, 0xc2, 0x09, 0x2b, 0x80, 0x9f, 0x30, 0x08, 0xd7, 0x7d, + 0x18, 0xe7, 0x29, 0x3d, 0x1a, 0x70, 0x02, 0xa8, 0xac, 0x21, 0x30, 0x37, 0x21, 0x21, 0x3d, 0x9a, + 0x71, 0xf3, 0xca, 0x0f, 0x30, 0xce, 0x25, 0x44, 0xae, 0x14, 0x04, 0x4a, 0xd9, 0xd8, 0x13, 0x28, + 0x34, 0x68, 0xe0, 0xf3, 0x56, 0x1d, 0xc6, 0xf9, 0x4f, 0x61, 0x71, 0x2a, 0x3b, 0x40, 0x4e, 0xd1, + 0xb8, 0x0d, 0x16, 0x40, 0x69, 0xfa, 0x47, 0xa4, 0x07, 0xa8, 0x5f, 0x74, 0x28, 0x02, 0x28, 0x86, + 0xe1, 0xbc, 0x03, 0xa8, 0x36, 0x94, 0x4b, 0x40, 0x94, 0x05, 0x72, 0xeb, 0x50, 0xc4, 0xca, 0xf3, + 0x2d, 0xf2, 0x95, 0x8a, 0x90, 0xf9, 0x1c, 0x44, 0x96, 0x14, 0x73, 0x3a, 0x3f, 0xae, 0xef, 0x03, + 0x10, 0x31, 0x7c, 0x5a, 0x03, 0x93, 0x1b, 0x01, 0x62, 0xe9, 0x7b, 0x5e, 0x63, 0xbf, 0x1a, 0x10, + 0xf1, 0x71, 0x00, 0xa8, 0x4f, 0x2d, 0xa0, 0x22, 0x1b, 0x2c, 0xa0, 0xc2, 0x25, 0xbc, 0x0e, 0xa8, + 0x31, 0x1d, 0xa8, 0xa6, 0xd0, 0xe3, 0x86, 0x6f, 0x7f, 0x71, 0x0b, 0x58, 0xcb, 0xb7, 0x31, 0x5f, + 0x9b, 0x78, 0x5f, 0x9f, 0x99, 0x05, 0x23, 0xc5, 0x83, 0x5f, 0xca, 0x08, 0x94, 0x96, 0x00, 0x12, + 0xca, 0xe9, 0xf5, 0x83, 0xc0, 0x77, 0x99, 0x75, 0x4f, 0x2c, 0xcb, 0x8f, 0xb8, 0x64, 0xbc, 0x0f, + 0x85, 0x19, 0x03, 0xf2, 0x86, 0xad, 0x9e, 0xfb, 0x95, 0x5a, 0x92, 0x5c, 0x49, 0x22, 0x80, 0xb5, + 0x84, 0xec, 0x08, 0xdf, 0x61, 0x40, 0x0a, 0xf6, 0x3d, 0x3e, 0xe0, 0x04, 0xa8, 0xd2, 0xa4, 0x53, + 0xe9, 0x87, 0x1c, 0x46, 0xd4, 0xb7, 0x5a, 0x3d, 0x80, 0x91, 0x06, 0xd6, 0x82, 0x52, 0xbc, 0x11, + 0x04, 0xb1, 0xe4, 0xdd, 0x0b, 0xc6, 0x29, 0x8c, 0xbe, 0x54, 0xb5, 0xfa, 0x45, 0x00, 0xa9, 0x76, + 0xab, 0xc5, 0x61, 0xf0, 0x35, 0x80, 0x4a, 0x1f, 0xd9, 0xac, 0xcf, 0x24, 0x71, 0xff, 0x16, 0x24, + 0x08, 0xa8, 0x00, 0x78, 0xc8, 0x0d, 0x48, 0x89, 0x06, 0xc6, 0x1d, 0xc6, 0x59, 0x8f, 0x00, 0x39, + 0x89, 0xf5, 0xb4, 0xec, 0x20, 0xa4, 0x2e, 0xe8, 0x36, 0x8f, 0xa3, 0x3b, 0xe7, 0xbe, 0x1f, 0xc0, + 0x68, 0x56, 0xe4, 0x7c, 0x75, 0x18, 0x14, 0x62, 0x6f, 0x60, 0x0f, 0x6a, 0x07, 0x30, 0x02, 0x52, + 0x43, 0x20, 0x19, 0xad, 0x12, 0x48, 0x6a, 0xe0, 0x14, 0xad, 0x9f, 0x82, 0xaa, 0x8b, 0xe4, 0x08, + 0xa7, 0xd6, 0xba, 0x70, 0x04, 0x9c, 0x7a, 0xea, 0x71, 0xf9, 0xb4, 0x10, 0x52, 0xb5, 0xc7, 0x40, + 0xf8, 0x92, 0xfa, 0xfc, 0xa0, 0x0a, 0xa6, 0xe9, 0xf1, 0x24, 0x07, 0xe0, 0xf4, 0x1f, 0x10, 0xef, + 0x37, 0x18, 0x9f, 0x28, 0x71, 0x19, 0xff, 0x0e, 0x68, 0x1f, 0x4f, 0xbc, 0x08, 0x48, 0xd5, 0xf4, + 0xe0, 0x94, 0x50, 0xb1, 0xc3, 0x06, 0x8c, 0x17, 0x2a, 0x3c, 0x20, 0xc5, 0xf7, 0x6d, 0x18, 0x24, + 0xe9, 0xa0, 0x51, 0x6f, 0x74, 0x84, 0x7f, 0x07, 0xc2, 0xfc, 0x8a, 0x40, 0xc0, 0x39, 0x16, 0x0d, + 0xc2, 0xaf, 0xa5, 0x96, 0x0f, 0x84, 0x60, 0x9a, 0x87, 0x62, 0x20, 0x12, 0x02, 0x48, 0x78, 0xcf, + 0x61, 0x1c, 0xd3, 0x61, 0x7d, 0xd2, 0x63, 0x63, 0x17, 0x06, 0xc8, 0x66, 0xf0, 0x02, 0x37, 0xbc, + 0x8e, 0xa0, 0xb0, 0x08, 0x0c, 0x08, 0x78, 0x4c, 0xca, 0xa6, 0x34, 0x88, 0x7d, 0x4e, 0xfa, 0x40, + 0xc0, 0xcd, 0x51, 0xc8, 0xce, 0x38, 0xa0, 0x4c, 0x8b, 0x84, 0xfc, 0x02, 0x73, 0x96, 0x97, 0x0c, + 0x99, 0xc5, 0x2e, 0xc7, 0xf7, 0x0e, 0x27, 0xd1, 0x99, 0xc0, 0xc8, 0x1e, 0x9f, 0xd4, 0x29, 0xaa, + 0x03, 0x62, 0xf7, 0x3b, 0xfe, 0x0f, 0x2a, 0x5c, 0xc6, 0x41, 0xa0, 0x46, 0x8f, 0xf9, 0x40, 0x1a, + 0xf6, 0x32, 0x2e, 0xa9, 0x70, 0x29, 0x19, 0x52, 0x28, 0x59, 0x20, 0x93, 0xb3, 0x51, 0x9d, 0x3a, + 0x88, 0xcc, 0x67, 0xee, 0x90, 0x10, 0xce, 0xd1, 0x07, 0x30, 0xa5, 0x2c, 0x81, 0xd4, 0xcf, 0x08, + 0x80, 0x24, 0xd3, 0x58, 0xf2, 0xc4, 0x8b, 0x60, 0x84, 0xc6, 0x60, 0x04, 0x1a, 0xee, 0x0e, 0x5a, + 0xe7, 0x24, 0x08, 0x61, 0x51, 0x9c, 0x1f, 0x3d, 0x09, 0xec, 0xc8, 0xa9, 0x63, 0xdb, 0x0c, 0x54, + 0xe9, 0x65, 0x10, 0x4e, 0xc1, 0xbf, 0x2e, 0x10, 0x21, 0xab, 0xd7, 0x40, 0xd0, 0xc7, 0x23, 0xb7, + 0xb5, 0x0f, 0xa6, 0x8a, 0x12, 0xed, 0x47, 0x2e, 0x11, 0x50, 0x22, 0xe4, 0xc9, 0xe1, 0x68, 0x10, + 0xca, 0x8a, 0xf5, 0x04, 0x05, 0x94, 0x85, 0x42, 0xa4, 0x77, 0x15, 0xf5, 0x40, 0xd5, 0x5d, 0x0d, + 0xfc, 0x10, 0x48, 0xc2, 0x57, 0xa6, 0x2a, 0x09, 0xa9, 0xae, 0xe8, 0x6e, 0xa9, 0x1d, 0xf7, 0xf5, + 0x6f, 0xfd, 0xfe, 0x1b, 0xaf, 0xbc, 0xe6, 0xf2, 0x11, 0xe7, 0xbe, 0x24, 0x92, 0xf9, 0xbc, 0xdc, + 0x5e, 0xe2, 0x05, 0x97, 0x43, 0x6b, 0x40, 0x3d, 0x12, 0x10, 0x39, 0x18, 0xbd, 0xd2, 0x77, 0x7e, + 0x40, 0xb9, 0xe5, 0x73, 0x87, 0xf5, 0x2b, 0x6c, 0xb2, 0x65, 0xc3, 0x77, 0xcf, 0x7d, 0x7c, 0x17, + 0x4a, 0x22, 0x5f, 0xd9, 0xce, 0x2f, 0x3f, 0xca, 0x6f, 0x1e, 0xa3, 0x1c, 0x46, 0xbd, 0xd9, 0x84, + 0xaf, 0x3e, 0xc5, 0x6c, 0x3b, 0x3c, 0xba, 0xec, 0x95, 0xd7, 0xf4, 0x7f, 0x8c, 0xdb, 0xe5, 0x76, + 0xa9, 0xf6, 0xca, 0xd7, 0x3e, 0xc6, 0xaf, 0xa2, 0xdc, 0x2e, 0x55, 0x5f, 0xf9, 0x62, 0x47, 0x50, + 0x87, 0xdd, 0x2d, 0xf7, 0xca, 0xa7, 0xa4, 0xa2, 0x55, 0x61, 0x4e, 0xf9, 0x75, 0xb1, 0x29, 0x5f, + 0xf9, 0x91, 0xb0, 0xe8, 0x52, 0x83, 0x8f, 0x1f, 0x8e, 0xde, 0xff, 0xf0, 0x85, 0x3d, 0xc6, 0xfa, + 0xf1, 0x7d, 0x2d, 0x27, 0x9b, 0xe5, 0xff, 0x90, 0xf0, 0x48, 0xf4, 0x23, 0x8f, 0x72, 0x59, 0x6e, + 0x97, 0xa4, 0x88, 0xe8, 0x92, 0x17, 0xce, 0x5d, 0x95, 0x3c, 0x96, 0xe6, 0x6d, 0x7e, 0xcc, 0xc4, + 0x92, 0xfb, 0x7b, 0x6e, 0x57, 0x2c, 0xff, 0x06, 0x9f, 0xdb, 0x53, 0xcb, 0xbe, 0xc4, 0xe5, 0xb6, + 0x56, 0xea, 0x2d, 0x96, 0x65, 0xab, 0x65, 0xde, 0x72, 0x59, 0xb7, 0x5e, 0xee, 0x2d, 0x98, 0x7b, + 0x2b, 0xe6, 0xd9, 0x92, 0x29, 0x35, 0xf9, 0x92, 0xeb, 0xb5, 0xec, 0x56, 0x9d, 0x5e, 0x60, 0x4d, + 0x76, 0x44, 0xca, 0x77, 0x3e, 0x2b, 0xf5, 0x1f, 0x5f, 0x9f, 0xf2, 0x7d, 0xa5, 0xdb, 0xb6, 0x99, + 0xb7, 0x6f, 0x9e, 0x6d, 0x9c, 0x7b, 0x3b, 0xe7, 0xdd, 0xd6, 0xca, 0xb6, 0xb7, 0xb2, 0x6d, 0xae, + 0x62, 0xbb, 0x67, 0x73, 0x8c, 0x52, 0xfa, 0x7b, 0xa9, 0xc5, 0x60, 0x7a, 0xa1, 0x4d, 0x43, 0x4b, + 0xb0, 0x60, 0x69, 0x97, 0xe6, 0xf7, 0x34, 0xcd, 0xdc, 0x60, 0x19, 0xdf, 0x74, 0x22, 0x28, 0xd5, + 0x8c, 0x97, 0x67, 0x15, 0x18, 0x15, 0x82, 0xa3, 0x4c, 0x80, 0x54, 0x09, 0x92, 0x72, 0x81, 0x52, + 0x2e, 0x58, 0x2a, 0x05, 0x2c, 0x9b, 0xa0, 0xe5, 0x00, 0x58, 0xf1, 0x8d, 0xc7, 0x07, 0x0a, 0x94, + 0xec, 0x96, 0x50, 0x0a, 0xc6, 0xfb, 0x79, 0xb6, 0xcb, 0xc4, 0xc8, 0x1c, 0x6c, 0x99, 0x79, 0x6f, + 0x19, 0xde, 0x59, 0x99, 0x72, 0xd2, 0x73, 0xa9, 0x9d, 0x5f, 0xd7, 0x4c, 0x06, 0xca, 0xb8, 0x6e, + 0xc7, 0xd4, 0x21, 0x91, 0x2b, 0xc7, 0x67, 0x48, 0x23, 0x8a, 0xea, 0x0a, 0xd5, 0x15, 0xaa, 0xab, + 0x34, 0xbb, 0xa5, 0xe7, 0xfb, 0x2e, 0x25, 0x5c, 0x85, 0xbe, 0xaa, 0xad, 0xb1, 0xbe, 0x62, 0xdc, + 0xa6, 0x77, 0xf9, 0xb5, 0xd5, 0x78, 0x98, 0xfc, 0xba, 0xaa, 0x8a, 0x8a, 0x0a, 0x15, 0x15, 0x2a, + 0xaa, 0x34, 0xbb, 0x25, 0x62, 0x5c, 0x36, 0xea, 0x0a, 0xf4, 0xd4, 0x7e, 0x8e, 0x21, 0xbe, 0x10, + 0xde, 0x1f, 0xdd, 0xcd, 0x4d, 0xae, 0xe5, 0xcc, 0xb7, 0x5d, 0xe3, 0x1b, 0xb9, 0x60, 0x3c, 0xf7, + 0xbe, 0x57, 0xa4, 0x54, 0x16, 0x86, 0xfb, 0x4a, 0xdc, 0x88, 0x2a, 0x1c, 0xef, 0x54, 0x10, 0x6b, + 0x84, 0x45, 0x8f, 0x59, 0x9f, 0xc9, 0x70, 0x34, 0x70, 0xee, 0x71, 0x1f, 0xde, 0x2a, 0x58, 0x02, + 0x72, 0xb7, 0xf6, 0x4b, 0xd0, 0xac, 0x1f, 0x36, 0x0f, 0x5b, 0xfb, 0xf5, 0xc3, 0xbd, 0x35, 0x5e, + 0x8b, 0xad, 0xd5, 0x5c, 0xdd, 0x5d, 0x63, 0x77, 0x85, 0x8f, 0x95, 0x5e, 0xde, 0x84, 0xc0, 0xd1, + 0xbf, 0xe8, 0x68, 0xa0, 0xa3, 0x81, 0x8e, 0x46, 0xb1, 0x09, 0x1c, 0xad, 0x9c, 0x74, 0xca, 0x60, + 0xf9, 0xc2, 0xf5, 0x39, 0x82, 0xe7, 0xf3, 0xc1, 0xea, 0x47, 0x3f, 0xbd, 0x4b, 0xc2, 0x37, 0x5b, + 0x7a, 0x5e, 0x53, 0x8a, 0x57, 0x94, 0x11, 0x59, 0xe6, 0x42, 0x94, 0x19, 0x95, 0x33, 0x86, 0xa1, + 0x30, 0x0c, 0xa5, 0x59, 0x99, 0xce, 0xf2, 0x10, 0x29, 0x71, 0x04, 0xcd, 0xb4, 0xde, 0x13, 0xed, + 0x99, 0x01, 0xa7, 0x95, 0x3b, 0x89, 0x96, 0xd9, 0xdd, 0x4d, 0x34, 0xc4, 0xbb, 0xb1, 0x7c, 0xad, + 0x83, 0x9e, 0x08, 0x86, 0xcd, 0x1c, 0x6a, 0x62, 0x74, 0xf5, 0x86, 0x04, 0xab, 0x03, 0xd4, 0x12, + 0xcf, 0x69, 0x89, 0xa0, 0x30, 0xc1, 0x6a, 0x32, 0x6e, 0xfb, 0xbc, 0x44, 0xde, 0xda, 0xab, 0xfb, + 0x65, 0x36, 0x54, 0x3e, 0x9c, 0x53, 0x2b, 0x0a, 0xce, 0x09, 0x10, 0xe7, 0x18, 0x12, 0xae, 0xd5, + 0xe0, 0x9c, 0xac, 0x42, 0xf7, 0x54, 0xf8, 0xf2, 0x2f, 0xf2, 0x13, 0x11, 0xcc, 0xbb, 0xc4, 0xf9, + 0x04, 0x51, 0x99, 0x40, 0xaa, 0x14, 0x4c, 0xe5, 0x02, 0xaa, 0x5a, 0x50, 0xb5, 0x09, 0xac, 0x36, + 0xc1, 0xd5, 0x21, 0xc0, 0x8a, 0x88, 0xc8, 0x9c, 0xfb, 0x2d, 0xaf, 0x60, 0x4f, 0x07, 0xca, 0x98, + 0x19, 0xf9, 0xea, 0xe6, 0xcd, 0x94, 0x31, 0xa9, 0x59, 0xdc, 0x95, 0x8b, 0xbd, 0x0e, 0xf1, 0xd7, + 0xa6, 0x06, 0x74, 0xa9, 0x03, 0xed, 0x6a, 0x41, 0xbb, 0x7a, 0xd0, 0xa9, 0x26, 0xd4, 0xa8, 0x0b, + 0x45, 0x6a, 0x43, 0xb9, 0xfa, 0x98, 0xc3, 0xab, 0xea, 0xf7, 0xd3, 0x0c, 0xcd, 0xaa, 0xde, 0x48, + 0x6a, 0xe3, 0x67, 0xda, 0xd4, 0x8a, 0x4e, 0xf5, 0xa2, 0x5d, 0xcd, 0xe8, 0x56, 0x37, 0xc6, 0xd4, + 0x8e, 0x31, 0xf5, 0x63, 0x42, 0x0d, 0xa9, 0x55, 0x47, 0x8a, 0xd5, 0x52, 0x7e, 0x46, 0x31, 0x15, + 0x43, 0x56, 0x49, 0xb0, 0x48, 0x85, 0xfb, 0x95, 0xff, 0xf9, 0x9c, 0xea, 0xd8, 0xfc, 0xd3, 0xe0, + 0x8e, 0x86, 0xb1, 0x3b, 0x44, 0x4a, 0x2a, 0x78, 0xee, 0x04, 0x93, 0x17, 0x27, 0xd8, 0xde, 0xbe, + 0xa9, 0x56, 0x0e, 0xbb, 0xbf, 0x6e, 0x6a, 0x95, 0xc3, 0xee, 0xf8, 0x63, 0x2d, 0xfe, 0x67, 0xfc, + 0xb9, 0x7e, 0x53, 0xad, 0x34, 0x27, 0x9f, 0xf7, 0x6e, 0xaa, 0x95, 0xbd, 0xee, 0xce, 0xed, 0xed, + 0xee, 0xce, 0xcf, 0xc6, 0x43, 0xfa, 0x0b, 0xb7, 0xff, 0xb8, 0xb9, 0xbd, 0x0d, 0x7e, 0x7e, 0x7e, + 0x18, 0xfd, 0x7d, 0xfe, 0xd0, 0xfd, 0x73, 0xe7, 0xbd, 0x2e, 0x39, 0x1e, 0x4d, 0x7c, 0x7b, 0xbb, + 0xdb, 0x7d, 0xa3, 0x5e, 0xac, 0xba, 0x5b, 0xeb, 0x29, 0xa4, 0x0a, 0x05, 0x34, 0x51, 0xb2, 0x15, + 0x97, 0xf2, 0x7e, 0x4c, 0x9f, 0x6b, 0xb2, 0xfa, 0x8f, 0xa7, 0x41, 0x07, 0x00, 0x1d, 0x00, 0x74, + 0x00, 0xd0, 0x01, 0x50, 0xb6, 0xdb, 0x23, 0xc6, 0xe5, 0x81, 0x46, 0x8b, 0xbf, 0xa7, 0x61, 0x68, + 0x35, 0xf9, 0xa4, 0x2f, 0xfd, 0xd1, 0x23, 0x9d, 0x25, 0xd5, 0xf9, 0xa7, 0x86, 0x75, 0xfa, 0xc2, + 0x34, 0x8a, 0xf3, 0x55, 0x5f, 0x9c, 0x47, 0x43, 0xee, 0xa4, 0x21, 0xe9, 0x7d, 0xbc, 0xf4, 0xe4, + 0xae, 0x70, 0x4b, 0xdf, 0xa8, 0x17, 0x68, 0xed, 0xb7, 0x60, 0x8c, 0xba, 0xb6, 0x9e, 0xf5, 0x5a, + 0xf1, 0x7a, 0x39, 0xb3, 0xef, 0x5e, 0x1c, 0x57, 0x4b, 0x56, 0xde, 0x08, 0x83, 0xbf, 0x9b, 0x86, + 0xe4, 0x27, 0x9f, 0x32, 0x25, 0xeb, 0xe9, 0x5b, 0x1d, 0x15, 0xb9, 0xff, 0x0a, 0xc9, 0x51, 0xf5, + 0xa4, 0xa8, 0xea, 0xc3, 0x04, 0x18, 0x5b, 0xc1, 0xd8, 0x8a, 0x61, 0x4c, 0xb3, 0x5e, 0x3a, 0x58, + 0x39, 0x76, 0x51, 0x90, 0x26, 0xf9, 0x9a, 0xf0, 0xd7, 0xf6, 0x15, 0x8e, 0x39, 0x97, 0x56, 0x19, + 0x2f, 0x74, 0x3b, 0x49, 0xae, 0x1c, 0xff, 0xa0, 0x6a, 0xe1, 0xd7, 0x43, 0xb5, 0x8f, 0x2b, 0xb6, + 0x29, 0xd7, 0xee, 0xe3, 0x61, 0xd7, 0x3c, 0x78, 0x5e, 0x47, 0x05, 0x8f, 0x0a, 0x7e, 0x03, 0x15, + 0x3c, 0x06, 0xcf, 0x91, 0x3b, 0xd7, 0xac, 0x66, 0x74, 0xab, 0x1b, 0x63, 0x6a, 0xc7, 0x98, 0xfa, + 0x31, 0xa1, 0x86, 0xf4, 0xb0, 0x1b, 0x18, 0x3c, 0x7f, 0xcd, 0x71, 0xc1, 0xe0, 0x39, 0x06, 0xcf, + 0x57, 0x49, 0xf1, 0x29, 0x74, 0x1f, 0x7d, 0xc1, 0xfa, 0x1a, 0x82, 0x21, 0x33, 0x43, 0x34, 0x1e, + 0x1f, 0x4d, 0x3e, 0x9a, 0x7c, 0x34, 0xf9, 0x68, 0xf2, 0x15, 0x9a, 0xfc, 0xa9, 0xc1, 0xd7, 0xa2, + 0x62, 0x1e, 0xd9, 0xfb, 0xa6, 0x86, 0xb1, 0x4f, 0x78, 0xe4, 0x8d, 0x5e, 0xd1, 0x03, 0x66, 0x68, + 0xa9, 0xda, 0x13, 0x98, 0xa1, 0x85, 0x26, 0x07, 0x4d, 0x0e, 0x9a, 0x1c, 0x4d, 0xbb, 0x1d, 0x33, + 0xb4, 0x9e, 0xfe, 0xc1, 0x0c, 0xad, 0xa5, 0xa6, 0xc1, 0x0c, 0xad, 0x74, 0x4b, 0x8f, 0x19, 0x5a, + 0xeb, 0xbd, 0xf6, 0x98, 0xa1, 0xb5, 0x06, 0x23, 0x61, 0x86, 0xd6, 0x2c, 0x43, 0x6b, 0x89, 0x36, + 0x65, 0xe6, 0x16, 0x47, 0x45, 0x14, 0x7f, 0x28, 0x84, 0x86, 0x14, 0xad, 0x78, 0x54, 0x3c, 0x00, + 0xbf, 0x76, 0xb0, 0x07, 0x63, 0xf8, 0xab, 0x80, 0x35, 0x05, 0x8f, 0xe1, 0x8f, 0x84, 0xbd, 0x32, + 0xee, 0xa5, 0xab, 0x8d, 0x70, 0x99, 0x9b, 0x43, 0x0f, 0xdb, 0x52, 0x43, 0xb6, 0x05, 0xd9, 0x16, + 0x64, 0x5b, 0xd6, 0x8f, 0x6d, 0x51, 0xad, 0xae, 0xa6, 0x03, 0x2b, 0x2e, 0xff, 0xf3, 0xa2, 0x30, + 0x29, 0x2d, 0x07, 0x64, 0x48, 0x7d, 0x69, 0x57, 0x63, 0x26, 0xd4, 0x99, 0x31, 0xb5, 0x66, 0x4a, + 0xbd, 0x19, 0x57, 0x73, 0xc6, 0xd5, 0x9d, 0x49, 0xb5, 0xa7, 0x99, 0x64, 0xd0, 0x24, 0x2f, 0xba, + 0xd4, 0xe1, 0x74, 0x02, 0x62, 0x59, 0x34, 0x90, 0x15, 0xcf, 0xb7, 0x0d, 0x6c, 0xe4, 0x69, 0x69, + 0xc4, 0xb9, 0x49, 0x35, 0xef, 0xac, 0xb9, 0xe6, 0x52, 0x0e, 0x71, 0x43, 0xed, 0xf3, 0x19, 0xa2, + 0xff, 0x74, 0x2b, 0x6a, 0x93, 0x0a, 0xdb, 0xb8, 0xe2, 0x36, 0xad, 0xc0, 0x57, 0xa6, 0xc8, 0x57, + 0xa6, 0xd0, 0x57, 0xa1, 0xd8, 0xf5, 0x2a, 0x78, 0xcd, 0x8a, 0x7e, 0xfa, 0xc2, 0xb4, 0x45, 0x1b, + 0x5f, 0x94, 0xb6, 0xfc, 0x9d, 0x0e, 0x53, 0x7b, 0xaf, 0xb5, 0x2d, 0x98, 0x1b, 0x40, 0x67, 0x70, + 0x8a, 0xd8, 0x43, 0x2a, 0x24, 0x0b, 0xe9, 0x48, 0x5c, 0xc6, 0x54, 0xf6, 0x90, 0xb8, 0x06, 0x6d, + 0xf2, 0xf3, 0xf3, 0x9b, 0x33, 0xcf, 0xb5, 0x6a, 0x15, 0x8d, 0x33, 0x1a, 0x67, 0x34, 0xce, 0x68, + 0x9c, 0xd1, 0x38, 0xcf, 0xa7, 0x06, 0xd5, 0x5a, 0x06, 0x6d, 0x73, 0xcb, 0xc0, 0x54, 0x7a, 0x73, + 0x87, 0x9e, 0xfe, 0x31, 0xa3, 0x3e, 0x4a, 0xa6, 0x72, 0x8b, 0x56, 0x64, 0xd4, 0x16, 0xa6, 0x9d, + 0x24, 0xa0, 0xd4, 0x0c, 0xcf, 0x6b, 0x30, 0x1f, 0xc5, 0xb0, 0x7a, 0x79, 0xbc, 0x95, 0xc8, 0xdd, + 0xc6, 0x6d, 0xa5, 0x66, 0xf5, 0x70, 0x6f, 0x83, 0x76, 0xd3, 0x56, 0x31, 0x66, 0xe9, 0x22, 0x98, + 0x5b, 0xd8, 0x56, 0x81, 0xa0, 0xd4, 0x0b, 0xa4, 0x39, 0xf4, 0x36, 0x99, 0xd0, 0x1c, 0x5c, 0x1b, + 0xf9, 0xa9, 0x88, 0xd7, 0x10, 0xaf, 0x21, 0x5e, 0x43, 0xbc, 0x86, 0x78, 0x0d, 0xc9, 0xd4, 0x75, + 0xb4, 0xbf, 0x15, 0x9b, 0xba, 0xe4, 0xde, 0xb8, 0x15, 0x4e, 0xa6, 0x35, 0x67, 0x8b, 0x91, 0x38, + 0x45, 0x43, 0x8c, 0x86, 0x18, 0x0d, 0x31, 0x1a, 0x62, 0x24, 0x4e, 0xd5, 0xfd, 0x41, 0xe2, 0x54, + 0xcb, 0xb4, 0x86, 0x0e, 0x6d, 0x2e, 0xcc, 0x8b, 0xc4, 0x69, 0x61, 0xb7, 0x52, 0xa3, 0x55, 0xad, + 0x22, 0x71, 0x0a, 0x6d, 0x16, 0x24, 0x4e, 0x9f, 0x03, 0x6e, 0xcc, 0x17, 0x4c, 0x1a, 0xc5, 0x6c, + 0xc9, 0x8c, 0x98, 0xe9, 0x82, 0x80, 0x0d, 0x01, 0x1b, 0x02, 0x36, 0x04, 0x6c, 0x2b, 0x03, 0x6c, + 0x07, 0x06, 0xf1, 0xda, 0x1e, 0xe2, 0x35, 0xc4, 0x6b, 0x69, 0x9c, 0x6c, 0x4c, 0x74, 0x41, 0xbc, + 0xa6, 0x68, 0x2b, 0xd5, 0xf7, 0x9a, 0x08, 0xd7, 0x10, 0xae, 0xc1, 0x87, 0x6b, 0x43, 0x26, 0x64, + 0x44, 0xdc, 0x49, 0xc5, 0x54, 0x73, 0xa8, 0xed, 0xe9, 0xc4, 0x08, 0xa7, 0x10, 0x4e, 0x21, 0x9c, + 0x42, 0x38, 0x85, 0x70, 0x6a, 0xa1, 0x8c, 0xb5, 0xc9, 0x5c, 0x94, 0x43, 0x03, 0x73, 0x25, 0xef, + 0xb2, 0x70, 0x98, 0xea, 0xb9, 0x9e, 0x23, 0x65, 0x83, 0x8e, 0xb8, 0xc6, 0x1e, 0x24, 0x2f, 0xdb, + 0x21, 0xcd, 0xbd, 0x49, 0x5e, 0x9c, 0x78, 0xd5, 0x3d, 0x4b, 0x8c, 0x3d, 0x6d, 0x77, 0xab, 0x40, + 0x80, 0x71, 0x35, 0xd2, 0xd8, 0x42, 0x69, 0xd4, 0x2e, 0x8d, 0xed, 0x5f, 0x23, 0x99, 0x21, 0x15, + 0xe7, 0xa8, 0x72, 0xda, 0xfd, 0x59, 0x7d, 0xdb, 0x7c, 0xd8, 0x69, 0xef, 0x6c, 0x3f, 0xfd, 0x5d, + 0x7b, 0xe7, 0x67, 0xf5, 0xed, 0xde, 0xc3, 0xf6, 0xf6, 0x33, 0xff, 0xf3, 0xfe, 0xb9, 0x31, 0x76, + 0x7e, 0x6d, 0x6f, 0x6f, 0x27, 0x72, 0xf8, 0x48, 0x36, 0x6f, 0xaa, 0xb5, 0xee, 0xfb, 0xf8, 0xe3, + 0xf8, 0xef, 0xa9, 0x74, 0x2f, 0xf5, 0xe5, 0x1d, 0x83, 0x7d, 0x88, 0x7e, 0xa7, 0xc2, 0xfe, 0xdb, + 0xee, 0xfe, 0xd9, 0xde, 0xf9, 0xd9, 0x7a, 0x98, 0x7c, 0x8e, 0xff, 0xde, 0xf9, 0xb5, 0xbd, 0xfb, + 0xe6, 0xf6, 0x76, 0x77, 0xf7, 0xcd, 0xce, 0xf8, 0x05, 0x24, 0xdf, 0x7b, 0x33, 0xfe, 0xdf, 0xf7, + 0xed, 0xf6, 0xc2, 0xaf, 0x76, 0xb6, 0xff, 0xd8, 0x2d, 0xa2, 0x5a, 0x82, 0x4e, 0x0a, 0x68, 0x76, + 0x4b, 0xcf, 0x59, 0x28, 0x8f, 0xa4, 0x14, 0x66, 0x5c, 0xd3, 0x0b, 0xc6, 0x4f, 0xdc, 0xb8, 0xbc, + 0x40, 0x58, 0x6e, 0x97, 0x78, 0xe4, 0xba, 0x06, 0xbc, 0xc5, 0x0b, 0x72, 0x67, 0x7e, 0xd2, 0x4b, + 0x61, 0x53, 0x41, 0xed, 0x0f, 0xf7, 0xc9, 0x94, 0xc8, 0x1c, 0xbd, 0xc8, 0x1c, 0x09, 0x3f, 0x92, + 0x54, 0x54, 0x98, 0x6d, 0x9e, 0x3b, 0x9a, 0x4d, 0x8d, 0xec, 0x11, 0xb2, 0x47, 0xc8, 0x1e, 0x21, + 0x7b, 0x84, 0xec, 0x11, 0x06, 0xe3, 0xe1, 0x41, 0x55, 0x0c, 0xc6, 0xeb, 0x9f, 0x17, 0x83, 0xf1, + 0x85, 0xdd, 0x4a, 0xf5, 0x3d, 0x2c, 0x3a, 0x81, 0xb8, 0xdb, 0x14, 0xa4, 0x02, 0x55, 0x7d, 0x58, + 0x53, 0x0b, 0x9f, 0x85, 0x79, 0x4c, 0xb6, 0xf4, 0x19, 0x0a, 0x11, 0xbc, 0x9b, 0xf5, 0x97, 0x78, + 0x97, 0xd4, 0x6b, 0x07, 0xd2, 0x7a, 0x4a, 0xc3, 0x4a, 0x97, 0xa7, 0xaf, 0xac, 0x22, 0x05, 0xb1, + 0xbe, 0x33, 0x6e, 0xa0, 0x4a, 0xfe, 0x33, 0x73, 0x62, 0xc5, 0xfc, 0x55, 0x81, 0x6d, 0xac, 0x98, + 0x0f, 0x0e, 0x4c, 0x63, 0xc5, 0xfc, 0x97, 0x5e, 0x8c, 0xf6, 0x8a, 0xf9, 0x9a, 0x1b, 0x89, 0x2c, + 0x08, 0xa5, 0xd6, 0x86, 0x22, 0x86, 0xd4, 0xa4, 0x31, 0x75, 0x69, 0x52, 0x6d, 0x1a, 0x57, 0x9f, + 0xa6, 0xd5, 0xe8, 0xca, 0xd4, 0xe9, 0xca, 0xd4, 0xea, 0x2a, 0xd4, 0xab, 0x19, 0xd0, 0xa4, 0x9b, + 0xa3, 0xd4, 0xad, 0x76, 0xa7, 0x13, 0x4d, 0xce, 0x6b, 0x56, 0x6c, 0x6a, 0x09, 0x9a, 0xac, 0x91, + 0x21, 0x39, 0x78, 0x7a, 0x66, 0x74, 0xee, 0x1e, 0x0c, 0xed, 0x4b, 0x83, 0x45, 0x7f, 0x56, 0xc4, + 0xcf, 0x18, 0x33, 0x11, 0xab, 0x30, 0x15, 0x2b, 0x33, 0x19, 0xab, 0x32, 0x1d, 0x2b, 0x37, 0x21, + 0x2b, 0x37, 0x25, 0xab, 0x34, 0x29, 0x66, 0x4c, 0x8b, 0x21, 0x13, 0x33, 0x7d, 0x91, 0xc6, 0xc2, + 0x61, 0x0b, 0xd2, 0x6a, 0x2a, 0x2c, 0xf6, 0x54, 0xf5, 0x1a, 0x24, 0xa8, 0x0d, 0x87, 0xc9, 0x26, + 0x7f, 0xcc, 0x6a, 0xa3, 0xd2, 0xaa, 0xc2, 0x66, 0x2b, 0xb2, 0xa9, 0x0b, 0xd3, 0xaf, 0xa8, 0x06, + 0xd1, 0x74, 0xfe, 0x15, 0x46, 0x40, 0x0c, 0x6b, 0xab, 0xc7, 0x5b, 0x6e, 0x05, 0xe1, 0xb5, 0x75, + 0xdb, 0x72, 0xc6, 0xcf, 0xbe, 0xae, 0xd5, 0xa6, 0xdb, 0x2a, 0xe6, 0x6c, 0x45, 0x49, 0xe7, 0x35, + 0xa0, 0x14, 0xca, 0x71, 0xc0, 0x63, 0x16, 0xd8, 0x32, 0x8f, 0x5e, 0x9f, 0xde, 0x00, 0xc2, 0x48, + 0x84, 0x91, 0x08, 0x23, 0x11, 0x46, 0x22, 0x8c, 0x34, 0x24, 0xad, 0x2e, 0x25, 0x8e, 0xa0, 0xce, + 0x2a, 0x8e, 0x93, 0xed, 0x9b, 0x3d, 0x4e, 0x96, 0xe4, 0x73, 0x58, 0x15, 0xe6, 0xb4, 0xe7, 0xf2, + 0x34, 0x9e, 0xfc, 0x22, 0xf9, 0x99, 0x8f, 0x5e, 0x4f, 0x51, 0x1c, 0x09, 0xd0, 0x64, 0xbe, 0xa1, + 0xbc, 0x9f, 0xe9, 0x7c, 0xab, 0xcc, 0xff, 0x59, 0xcc, 0x44, 0xd1, 0x9a, 0x12, 0xa4, 0x7f, 0x83, + 0xe8, 0x3c, 0xb5, 0x13, 0x4a, 0x22, 0x0d, 0xf6, 0x89, 0x1f, 0x4f, 0x57, 0xb0, 0xc8, 0x77, 0x1d, + 0x23, 0xdf, 0x60, 0xfc, 0x4e, 0x8c, 0x7c, 0x63, 0xe4, 0xfb, 0xb5, 0x17, 0x86, 0x91, 0x6f, 0x23, + 0x77, 0x80, 0x91, 0x6f, 0xa4, 0x2c, 0x90, 0xb2, 0x40, 0xca, 0x02, 0x29, 0x0b, 0x8c, 0x7c, 0xeb, + 0x99, 0x12, 0x23, 0xdf, 0xc5, 0xb3, 0xa9, 0x0b, 0xd3, 0x63, 0xe4, 0x1b, 0x23, 0xdf, 0x2b, 0xda, + 0x72, 0x18, 0xf9, 0x2e, 0xe0, 0x6c, 0x18, 0xf9, 0x5e, 0x7e, 0x1b, 0x62, 0xe4, 0x1b, 0x61, 0x24, + 0xc2, 0x48, 0x84, 0x91, 0x08, 0x23, 0x37, 0x15, 0x46, 0x62, 0xe4, 0x1b, 0x23, 0xdf, 0xeb, 0x2c, + 0x22, 0x9b, 0x1e, 0xf9, 0x1e, 0x07, 0x5c, 0xb1, 0xb6, 0x8a, 0xfe, 0x1d, 0xb7, 0x11, 0xb5, 0x55, + 0x8c, 0x55, 0xf9, 0x18, 0x3f, 0xa9, 0x14, 0x91, 0x25, 0x79, 0x62, 0x6a, 0xce, 0x26, 0x73, 0x7f, + 0xbb, 0x9a, 0xbb, 0xf3, 0x6f, 0x67, 0xc1, 0xb0, 0xf9, 0xed, 0x68, 0x7c, 0xbf, 0xdf, 0xbe, 0x0a, + 0x11, 0x7c, 0x1a, 0xdd, 0xe9, 0xb7, 0xe9, 0xb7, 0xaf, 0x27, 0x37, 0xba, 0xc1, 0x05, 0x61, 0xf4, + 0x66, 0x79, 0x18, 0xc9, 0xee, 0x30, 0x56, 0xf6, 0xa5, 0x8e, 0x65, 0x5f, 0xd6, 0x06, 0x33, 0x61, + 0xd9, 0x97, 0xcd, 0x35, 0xa7, 0xda, 0xcb, 0xbe, 0x10, 0xcb, 0xa2, 0x81, 0xac, 0x78, 0xbe, 0x6d, + 0x30, 0x01, 0x6e, 0x7e, 0x52, 0x73, 0xfd, 0xa9, 0x1d, 0xe2, 0x86, 0x14, 0x8b, 0x62, 0xaf, 0x2d, + 0x09, 0x86, 0x69, 0x77, 0x85, 0x23, 0xb9, 0x30, 0xed, 0x6e, 0x6d, 0x49, 0xac, 0xa9, 0xb4, 0xf5, + 0x7c, 0xdf, 0xa5, 0x84, 0x9b, 0xec, 0xa7, 0x56, 0xc3, 0x1c, 0xf4, 0x45, 0x43, 0x6c, 0x0f, 0xa9, + 0x90, 0x2c, 0x8c, 0xb3, 0x0f, 0xc7, 0x20, 0x76, 0x48, 0x5c, 0x83, 0x36, 0xf9, 0xf9, 0xf9, 0xcd, + 0x99, 0xe7, 0x5a, 0xb5, 0x8a, 0xc6, 0x19, 0x8d, 0x33, 0x1a, 0x67, 0x34, 0xce, 0x68, 0x9c, 0xe7, + 0x13, 0x14, 0x6b, 0x2d, 0x83, 0xb6, 0xb9, 0x85, 0x2d, 0x2b, 0xb2, 0x3f, 0x18, 0xb6, 0xac, 0xd0, + 0x3f, 0x2f, 0xb6, 0xac, 0x28, 0xec, 0x56, 0x6a, 0x56, 0x0f, 0xb1, 0x67, 0x05, 0xb8, 0x59, 0xba, + 0x08, 0xe6, 0x16, 0xb6, 0x95, 0x15, 0x09, 0x31, 0x82, 0x51, 0x93, 0x73, 0x65, 0x06, 0xcb, 0x6a, + 0x3f, 0x9d, 0x19, 0x21, 0x15, 0x42, 0x2a, 0x84, 0x54, 0x08, 0xa9, 0x10, 0x52, 0x61, 0x13, 0x40, + 0x44, 0x54, 0x10, 0xdc, 0xe0, 0x2a, 0x22, 0x2a, 0x44, 0x54, 0x6a, 0xb6, 0x12, 0x36, 0x01, 0x44, + 0x40, 0x55, 0x08, 0x40, 0x15, 0x08, 0x4a, 0xbd, 0x40, 0x9a, 0xc3, 0x51, 0x93, 0x09, 0xcd, 0xc5, + 0xbf, 0x46, 0x5e, 0x2a, 0xa2, 0x35, 0x44, 0x6b, 0x88, 0xd6, 0x10, 0xad, 0x21, 0x5a, 0xc3, 0xec, + 0x94, 0x75, 0xb4, 0xbf, 0x15, 0x9b, 0xba, 0xe4, 0xde, 0xb8, 0x15, 0x4e, 0xa6, 0x35, 0x67, 0x8b, + 0x31, 0x13, 0x05, 0x0d, 0x31, 0x1a, 0x62, 0x34, 0xc4, 0x68, 0x88, 0x31, 0x13, 0x45, 0xdd, 0x1f, + 0xe4, 0x4d, 0xb5, 0x4c, 0x8b, 0xbc, 0xa9, 0xde, 0xad, 0xb4, 0x81, 0xbc, 0x69, 0xa3, 0x55, 0xad, + 0x22, 0x71, 0x0a, 0x6d, 0x16, 0x24, 0x4e, 0x9f, 0x03, 0x6e, 0xa6, 0x33, 0x50, 0x4c, 0x65, 0x9e, + 0xe0, 0xd1, 0x01, 0x04, 0x6c, 0x08, 0xd8, 0x10, 0xb0, 0x21, 0x60, 0x7b, 0x19, 0xb0, 0x61, 0x9e, + 0x0b, 0xe2, 0xb5, 0xb5, 0x75, 0xb2, 0xf1, 0xe4, 0x00, 0xe2, 0x35, 0x45, 0x5b, 0xc9, 0x78, 0x0d, + 0x62, 0x84, 0x6b, 0x08, 0xd7, 0x74, 0x6c, 0xab, 0x21, 0x13, 0x32, 0x22, 0x6e, 0x25, 0x29, 0x3d, + 0x66, 0x0e, 0xb5, 0x3d, 0x9d, 0x18, 0xe1, 0x14, 0xc2, 0x29, 0x84, 0x53, 0x08, 0xa7, 0x10, 0x4e, + 0x25, 0xd2, 0xc6, 0x02, 0x43, 0xba, 0x71, 0x5e, 0x3f, 0xd6, 0x0e, 0x0d, 0xcc, 0x95, 0xbc, 0xcb, + 0xc2, 0x61, 0xaa, 0xd9, 0xca, 0x0d, 0x9b, 0x06, 0xd7, 0x6e, 0x61, 0x0d, 0x0f, 0xcc, 0x96, 0x68, + 0x96, 0x54, 0x70, 0xe3, 0xed, 0x7e, 0xca, 0xdb, 0xdb, 0x37, 0xd5, 0xca, 0x61, 0xf7, 0xd7, 0x4d, + 0xad, 0x72, 0xd8, 0x1d, 0x7f, 0xac, 0xc5, 0xff, 0x8c, 0x3f, 0xd7, 0x6f, 0xaa, 0x95, 0xe6, 0xe4, + 0xf3, 0xde, 0x4d, 0xb5, 0xb2, 0xd7, 0xdd, 0xb9, 0xbd, 0xdd, 0xdd, 0xf9, 0xd9, 0x78, 0x48, 0x7f, + 0xe1, 0xf6, 0x1f, 0x37, 0xb7, 0xb7, 0xc1, 0xcf, 0xcf, 0x0f, 0xa3, 0xbf, 0xcf, 0x1f, 0xba, 0x7f, + 0xee, 0xbc, 0x2f, 0x17, 0xad, 0x33, 0xc6, 0xdb, 0x02, 0x4b, 0x63, 0x0b, 0xa5, 0x51, 0xbb, 0x34, + 0xb6, 0x7f, 0x8d, 0x64, 0x86, 0x54, 0x9c, 0xa3, 0xca, 0x69, 0xf7, 0x67, 0xf5, 0x6d, 0xf3, 0x61, + 0xa7, 0xbd, 0xb3, 0xfd, 0xf4, 0x77, 0xed, 0x9d, 0x9f, 0xd5, 0xb7, 0x7b, 0x0f, 0xdb, 0xdb, 0xcf, + 0xfc, 0xcf, 0xfb, 0xe7, 0xc6, 0xd8, 0xf9, 0xb5, 0xbd, 0xbd, 0x9d, 0xc8, 0xe1, 0x23, 0xd9, 0xbc, + 0xa9, 0xd6, 0xba, 0xef, 0xe3, 0x8f, 0xe3, 0xbf, 0xa7, 0xd2, 0xbd, 0xd4, 0x97, 0x77, 0x9e, 0x95, + 0xe9, 0xb7, 0xc6, 0x55, 0xd8, 0x7f, 0xdb, 0xdd, 0x3f, 0xdb, 0x3b, 0x3f, 0x5b, 0x0f, 0x93, 0xcf, + 0xf1, 0xdf, 0x3b, 0xbf, 0xb6, 0x77, 0xdf, 0xdc, 0xde, 0xee, 0xee, 0xbe, 0xd9, 0x19, 0xbf, 0x80, + 0xe4, 0x7b, 0x6f, 0xc6, 0xff, 0xfb, 0xbe, 0xdd, 0x5e, 0xf8, 0xd5, 0xce, 0xf6, 0x1f, 0xbb, 0x45, + 0x54, 0x4b, 0xd0, 0x49, 0x01, 0xcd, 0x6e, 0xe9, 0x39, 0x0b, 0xe5, 0x91, 0x94, 0x86, 0x3a, 0xe7, + 0x5e, 0x30, 0x7e, 0xe2, 0xc6, 0xf5, 0xda, 0xc2, 0x72, 0xbb, 0xc4, 0x23, 0xd7, 0x35, 0xe0, 0x2d, + 0x5e, 0x90, 0x3b, 0xf3, 0x93, 0x5e, 0x0a, 0x9b, 0x0a, 0x6a, 0x7f, 0xb8, 0x4f, 0xa6, 0x44, 0xe6, + 0xe8, 0x45, 0xe6, 0x48, 0xf8, 0x91, 0xa4, 0xa2, 0xc2, 0x6c, 0xf3, 0xdc, 0xd1, 0x6c, 0x6a, 0x64, + 0x8f, 0x90, 0x3d, 0x42, 0xf6, 0x08, 0xd9, 0x23, 0x64, 0x8f, 0x30, 0x18, 0x0f, 0x0f, 0xaa, 0x62, + 0x30, 0x5e, 0xff, 0xbc, 0x18, 0x8c, 0x2f, 0xec, 0x56, 0xc2, 0xa2, 0x13, 0x88, 0xbb, 0xcd, 0x41, + 0x2a, 0xec, 0x8e, 0xf6, 0xcc, 0x3c, 0xab, 0xec, 0x8e, 0xa6, 0xb1, 0xd9, 0x1e, 0x8c, 0x3e, 0x63, + 0xe6, 0x90, 0xb8, 0x71, 0x04, 0xae, 0xd9, 0xb4, 0x68, 0x47, 0xdc, 0xd8, 0x7f, 0x0c, 0x02, 0xa2, + 0xc6, 0xfe, 0x63, 0x6b, 0x63, 0xb0, 0xb4, 0x23, 0x65, 0x83, 0x3d, 0x94, 0x4d, 0xf4, 0x4c, 0x9e, + 0xf6, 0x48, 0xde, 0xdd, 0x7d, 0x37, 0xb6, 0xb8, 0xef, 0x16, 0x75, 0x33, 0x14, 0xdb, 0xb8, 0xb5, + 0xc6, 0x3b, 0x74, 0xa4, 0x94, 0x4c, 0x58, 0x3e, 0xbd, 0x21, 0x1d, 0x23, 0x21, 0x1c, 0x23, 0x21, + 0x1b, 0xbd, 0x21, 0x1a, 0xd5, 0x9b, 0x47, 0xb3, 0x1f, 0xbe, 0x4a, 0xff, 0xbb, 0xac, 0xa5, 0x73, + 0x6e, 0xe6, 0x16, 0xc4, 0x6a, 0x95, 0x9d, 0x3a, 0x95, 0xa4, 0x66, 0x24, 0x45, 0xfb, 0x52, 0xd7, + 0x7e, 0x34, 0xbe, 0x0f, 0xd5, 0xac, 0x76, 0xfe, 0xb5, 0xc9, 0x37, 0x42, 0xce, 0x55, 0x9d, 0x98, + 0xa6, 0xdc, 0xce, 0xbf, 0x5a, 0xdb, 0xa3, 0xc5, 0xd6, 0x68, 0xb1, 0x2d, 0x6a, 0x6d, 0x49, 0xde, + 0xd5, 0x3c, 0x8a, 0xfa, 0xa3, 0xc7, 0xa3, 0xb6, 0x92, 0x50, 0x87, 0x1a, 0xe1, 0x9e, 0x7a, 0xcd, + 0xef, 0x46, 0x68, 0xc5, 0x69, 0xcf, 0x89, 0xea, 0x93, 0x5f, 0x24, 0x3f, 0x3f, 0x16, 0xe7, 0xc5, + 0xdf, 0xc5, 0xbf, 0x0a, 0xda, 0xb1, 0x68, 0x8f, 0x3f, 0xce, 0x04, 0xfc, 0xd1, 0xcf, 0x8a, 0xcc, + 0x4b, 0xf9, 0x98, 0x86, 0x96, 0x60, 0x41, 0xa2, 0xf2, 0xca, 0x47, 0xb6, 0xcd, 0x46, 0x9f, 0x89, + 0x5b, 0x3a, 0xeb, 0x94, 0x46, 0x73, 0x95, 0x1c, 0xe2, 0x31, 0xf7, 0xbe, 0x34, 0xd6, 0x57, 0x91, + 0x88, 0xb5, 0x63, 0xc9, 0xf1, 0xc5, 0x2d, 0x9f, 0x3d, 0x89, 0xaa, 0xbb, 0x51, 0xdb, 0x56, 0x5d, + 0x39, 0x8d, 0xa1, 0x83, 0xb6, 0xd0, 0x46, 0x53, 0xe8, 0xa2, 0x25, 0xb4, 0xd3, 0x10, 0xda, 0x69, + 0x07, 0x9d, 0x34, 0xc3, 0x7a, 0xf9, 0x33, 0xaa, 0xdb, 0x96, 0x97, 0x63, 0xe7, 0x42, 0xf9, 0x8e, + 0x9a, 0xd2, 0xa7, 0xa3, 0xd1, 0x15, 0xaf, 0xf5, 0x13, 0x05, 0x77, 0xc2, 0x2d, 0xd7, 0x0f, 0x19, + 0xef, 0x8f, 0x14, 0x9a, 0x24, 0x8c, 0x53, 0x31, 0x52, 0x66, 0xa5, 0xaf, 0x5f, 0xbe, 0x74, 0x4a, + 0xb1, 0xe3, 0x1e, 0x96, 0x06, 0x84, 0xdb, 0x2e, 0xb5, 0x4b, 0xbd, 0xfb, 0x92, 0x1c, 0xb0, 0xf0, + 0x96, 0x9f, 0x75, 0x4a, 0x53, 0x5d, 0xa7, 0xfa, 0xfe, 0xd4, 0xaa, 0x3c, 0x6d, 0xaa, 0x4f, 0xa7, + 0x0a, 0xd4, 0xae, 0x0a, 0x75, 0xab, 0x44, 0x63, 0xaa, 0xd1, 0x98, 0x8a, 0x34, 0xa1, 0x2a, 0x35, + 0xf1, 0x5b, 0xeb, 0xa6, 0xca, 0x57, 0x0c, 0xa2, 0xba, 0x79, 0xdd, 0x6e, 0xb5, 0x90, 0xd8, 0x24, + 0x14, 0x56, 0x20, 0x7c, 0xe9, 0x29, 0x97, 0x7c, 0xf2, 0x91, 0x7d, 0xad, 0xb3, 0x5d, 0x99, 0xd1, + 0xd1, 0x50, 0xb5, 0x2b, 0x4c, 0xec, 0x86, 0x6c, 0x0b, 0x92, 0xfe, 0x75, 0x66, 0x78, 0x95, 0x65, + 0x6b, 0x62, 0xa5, 0xb3, 0xbd, 0xc2, 0x59, 0xb7, 0xc1, 0xf1, 0x38, 0x19, 0x17, 0x33, 0x9f, 0x0b, + 0x92, 0xdb, 0xd5, 0x50, 0xe1, 0x52, 0x28, 0x73, 0x1d, 0x54, 0xb9, 0x08, 0xca, 0x5d, 0x01, 0xe5, + 0x26, 0x5f, 0xa5, 0x69, 0x37, 0xab, 0x7c, 0xf2, 0xa2, 0x9a, 0x32, 0xe5, 0xa4, 0xe7, 0xd2, 0xfc, + 0xf9, 0x20, 0xd3, 0x5d, 0x37, 0x19, 0x30, 0xe7, 0x8a, 0xa8, 0xed, 0x42, 0xa3, 0x28, 0x49, 0x44, + 0x19, 0x94, 0x50, 0x09, 0x1d, 0x94, 0x43, 0x05, 0xd5, 0xd0, 0x40, 0x1b, 0x14, 0xd0, 0xe6, 0xfa, + 0xeb, 0x70, 0xf5, 0x57, 0xcb, 0xff, 0x2b, 0x4b, 0x9a, 0xd0, 0xd0, 0x05, 0x45, 0x51, 0x97, 0x93, + 0x1c, 0xfe, 0x62, 0x0e, 0x1b, 0xe9, 0xc9, 0x48, 0x9d, 0xee, 0x1c, 0x0d, 0x86, 0x8a, 0x0e, 0x15, + 0x1d, 0x2a, 0xba, 0x35, 0x52, 0x74, 0xca, 0xba, 0x4c, 0x28, 0xec, 0x22, 0xa1, 0xf8, 0xa0, 0x93, + 0x42, 0x56, 0x5c, 0xc7, 0x41, 0x25, 0x4d, 0x29, 0xbe, 0xd3, 0xd3, 0x21, 0x2d, 0xc5, 0x05, 0x38, + 0x74, 0x1e, 0xfe, 0x50, 0x98, 0x76, 0xa4, 0xe5, 0x24, 0xd0, 0x64, 0xad, 0x1a, 0x9a, 0xd6, 0xaa, + 0x0a, 0x68, 0xa9, 0xd6, 0x84, 0x34, 0xed, 0x22, 0x0d, 0xb7, 0x16, 0x34, 0x5c, 0xc2, 0x4c, 0xad, + 0x31, 0x07, 0xc7, 0x29, 0xeb, 0x0f, 0x7a, 0xbe, 0x08, 0xf3, 0xd3, 0x70, 0xb3, 0xa1, 0x90, 0x89, + 0x43, 0x26, 0x0e, 0x99, 0xb8, 0xe5, 0x85, 0x4f, 0x1d, 0x9c, 0x9c, 0x8e, 0xa8, 0x06, 0x53, 0xd6, + 0x10, 0x53, 0x22, 0xa6, 0xdc, 0x44, 0x4c, 0xa9, 0x2a, 0x75, 0x28, 0x6f, 0x8c, 0xeb, 0xc5, 0xcd, + 0x9b, 0x2b, 0xe6, 0xa5, 0x49, 0xdc, 0x95, 0x8b, 0xbd, 0x0e, 0xf1, 0xd7, 0xa6, 0x06, 0x74, 0xa9, + 0x03, 0xed, 0x6a, 0x41, 0xbb, 0x7a, 0xd0, 0xa9, 0x26, 0x14, 0x23, 0xaf, 0x75, 0xcd, 0x3c, 0x64, + 0x1a, 0xf3, 0x0e, 0x95, 0x27, 0x9b, 0xe9, 0x22, 0x6f, 0x30, 0xab, 0xcf, 0xa0, 0xba, 0x31, 0xa6, + 0x76, 0x8c, 0xa9, 0x1f, 0x13, 0x6a, 0x48, 0xad, 0x3a, 0xd2, 0xc0, 0x00, 0x96, 0xb4, 0x9e, 0xa7, + 0x7e, 0xb6, 0xda, 0x79, 0x85, 0xfb, 0x95, 0xff, 0xf9, 0x9c, 0xea, 0xd8, 0xfc, 0x1a, 0xeb, 0x29, + 0x6b, 0xaf, 0x9b, 0xbc, 0xf2, 0x6a, 0xe5, 0x9a, 0xc4, 0x6b, 0x34, 0xf1, 0xed, 0xed, 0x6e, 0xf7, + 0x8d, 0x7a, 0xb1, 0xea, 0xae, 0x6b, 0xb2, 0xac, 0x42, 0xf7, 0xd1, 0x65, 0xfc, 0x7b, 0xc5, 0x25, + 0xf7, 0x54, 0x68, 0xeb, 0xbf, 0x33, 0x2b, 0x77, 0xb0, 0x38, 0x17, 0xba, 0x02, 0xe8, 0x0a, 0xa0, + 0x2b, 0x80, 0xae, 0x80, 0xb2, 0xdd, 0x1e, 0x0c, 0xee, 0x43, 0x8d, 0xad, 0x16, 0x80, 0xbb, 0x00, + 0xf3, 0xbd, 0x0d, 0xea, 0x0f, 0xdb, 0xed, 0xc7, 0x3f, 0xef, 0xbc, 0xd1, 0x51, 0xbd, 0xbf, 0x8b, + 0xd5, 0x10, 0x96, 0x51, 0x0d, 0xe0, 0xaa, 0x21, 0x4c, 0x03, 0x70, 0xd3, 0x4f, 0xb9, 0x02, 0x90, + 0xea, 0x97, 0x47, 0xc1, 0xd2, 0xa8, 0x64, 0x42, 0xd4, 0x33, 0x20, 0x8a, 0xdd, 0x1d, 0x24, 0x52, + 0x91, 0x48, 0x35, 0xed, 0xb6, 0xac, 0x97, 0x12, 0x56, 0xee, 0x9e, 0x68, 0xac, 0xf4, 0xa6, 0xa3, + 0xb2, 0xdb, 0x7c, 0x25, 0xb7, 0x71, 0x05, 0x8c, 0xa4, 0x9e, 0xdb, 0xa4, 0x52, 0x46, 0x91, 0x54, + 0xfb, 0xb8, 0x66, 0xab, 0x72, 0xed, 0x3e, 0x1e, 0x76, 0xcd, 0x23, 0x65, 0x75, 0x54, 0xf0, 0xa8, + 0xe0, 0x37, 0x50, 0xc1, 0x63, 0xa4, 0x0c, 0xe9, 0x31, 0xa4, 0xc7, 0x90, 0x1e, 0xdb, 0x58, 0x7a, + 0x0c, 0x23, 0x65, 0xcb, 0xd0, 0x64, 0x18, 0x29, 0x2b, 0x0a, 0xc7, 0x87, 0x91, 0x32, 0x74, 0x05, + 0xd0, 0x15, 0x40, 0x57, 0x00, 0x5d, 0x81, 0x85, 0xdd, 0x8e, 0x91, 0xb2, 0xdf, 0xb9, 0x00, 0x18, + 0x29, 0xd3, 0x63, 0x45, 0x7d, 0xc1, 0xfa, 0x3a, 0x4e, 0xf0, 0x4e, 0x75, 0xf8, 0x78, 0x7c, 0xb4, + 0x96, 0x68, 0x2d, 0xd1, 0x5a, 0xa2, 0xb5, 0x54, 0xb6, 0xdb, 0x27, 0x31, 0xee, 0x8a, 0x16, 0x05, + 0xf3, 0xc8, 0x60, 0x36, 0x35, 0x8c, 0x7d, 0xc2, 0x23, 0x6f, 0xf4, 0x82, 0x1e, 0x30, 0x19, 0x63, + 0x19, 0x79, 0x2a, 0x42, 0x32, 0x86, 0xc2, 0x9e, 0x84, 0xd8, 0x9c, 0x22, 0x19, 0x08, 0x9b, 0x53, + 0xac, 0x43, 0x73, 0x0a, 0x30, 0x55, 0x72, 0x17, 0xa5, 0xd2, 0x6c, 0x99, 0xdc, 0xcf, 0x93, 0x59, + 0xb1, 0x40, 0xc7, 0x7a, 0xed, 0x87, 0x75, 0xae, 0xd1, 0x91, 0x2f, 0x2f, 0x42, 0x49, 0x1e, 0x84, + 0xb2, 0xda, 0x1c, 0x75, 0xac, 0xcd, 0xa1, 0x0f, 0xf7, 0x60, 0x6d, 0x8e, 0xe9, 0x8d, 0x63, 0x95, + 0x5c, 0x93, 0x3c, 0x0a, 0x16, 0xfa, 0x58, 0x2b, 0xde, 0x03, 0x0b, 0x7d, 0x98, 0xe7, 0x29, 0xb0, + 0x4a, 0xee, 0xe3, 0x7b, 0xc7, 0x2a, 0xb9, 0xa8, 0xe8, 0x50, 0xd1, 0x15, 0x59, 0xd1, 0x61, 0x95, + 0xdc, 0x94, 0xd4, 0x12, 0x56, 0xc9, 0xc5, 0x2a, 0xb9, 0x58, 0x25, 0x17, 0xab, 0xe4, 0x22, 0x09, + 0xf7, 0x98, 0x84, 0xcb, 0x11, 0x17, 0x31, 0x43, 0xc0, 0x45, 0x9c, 0x47, 0x5e, 0x8f, 0x8a, 0x1c, + 0x74, 0xc0, 0xcc, 0x6a, 0xce, 0xc6, 0xc2, 0x32, 0xb9, 0xb1, 0x6b, 0xe5, 0x20, 0x15, 0x97, 0xc5, + 0x23, 0x75, 0x36, 0x86, 0x8a, 0x53, 0x54, 0x43, 0x53, 0x6d, 0xed, 0xcc, 0x8d, 0x29, 0x91, 0xeb, + 0x20, 0xa0, 0xd4, 0x01, 0x28, 0x1d, 0x2c, 0x91, 0x9b, 0x0c, 0xa4, 0x8a, 0x69, 0x5f, 0xd8, 0xbd, + 0x6a, 0x18, 0xf7, 0xd9, 0x03, 0xcf, 0x98, 0x77, 0x87, 0xb8, 0x21, 0xc5, 0x9a, 0x11, 0xeb, 0xa3, + 0x60, 0x74, 0x29, 0x1a, 0xed, 0x0a, 0x47, 0xbb, 0xe2, 0xd1, 0xa9, 0x80, 0x14, 0x03, 0xba, 0xb5, + 0xaf, 0x19, 0xa1, 0x8e, 0xda, 0x5f, 0xf0, 0x22, 0x6a, 0x98, 0x16, 0x06, 0x2a, 0x91, 0x68, 0x06, + 0xe3, 0x94, 0xd4, 0x58, 0x5a, 0x4d, 0x8c, 0x66, 0xfa, 0x4c, 0x15, 0x41, 0x1d, 0x75, 0xfe, 0xf5, + 0xe3, 0x61, 0xd1, 0xcd, 0x46, 0x37, 0x1b, 0xdd, 0xec, 0xd5, 0xbb, 0xd9, 0xd8, 0x89, 0x02, 0x9d, + 0x61, 0x74, 0x86, 0x37, 0xcd, 0x19, 0x56, 0x5f, 0x5f, 0x67, 0x62, 0xdc, 0x35, 0x96, 0xd9, 0x99, + 0x4e, 0x81, 0x87, 0x06, 0x8d, 0x1c, 0x1a, 0x74, 0xf0, 0xd0, 0xe0, 0x0a, 0x95, 0x91, 0x09, 0xa5, + 0xa4, 0x56, 0x39, 0x29, 0x56, 0x52, 0xfa, 0x90, 0xfb, 0xc2, 0x6e, 0x57, 0x5f, 0xf5, 0x71, 0xc1, + 0x73, 0xd9, 0xd7, 0x73, 0xba, 0x3e, 0x41, 0xb0, 0xa3, 0x6d, 0xd1, 0x9e, 0x43, 0xa6, 0x4f, 0x7e, + 0x91, 0xfc, 0x1c, 0x1f, 0x45, 0xd9, 0x80, 0xb3, 0xeb, 0xf3, 0xb8, 0x5c, 0x9f, 0x3d, 0x7a, 0x34, + 0x0b, 0x9a, 0x24, 0x34, 0x49, 0x68, 0x92, 0xd0, 0x24, 0xa1, 0x49, 0x5a, 0xd2, 0x24, 0xdd, 0xcc, + 0x4c, 0xd2, 0xff, 0xb3, 0x22, 0x21, 0x28, 0x97, 0xdb, 0x3b, 0xef, 0x76, 0x77, 0x67, 0x64, 0x6b, + 0x37, 0xb9, 0xe4, 0x31, 0xe7, 0xba, 0xf8, 0xbb, 0xe9, 0xc8, 0x36, 0xbd, 0x2b, 0xe3, 0xb1, 0xf9, + 0x65, 0xc4, 0x17, 0xdc, 0xb1, 0xf9, 0x39, 0x5e, 0xfd, 0x11, 0x8d, 0x5c, 0xc0, 0x4e, 0x06, 0x58, + 0xee, 0x1a, 0xe9, 0x38, 0xa4, 0xe3, 0x90, 0x8e, 0x43, 0x3a, 0x0e, 0xb1, 0x0f, 0x62, 0x1f, 0xc4, + 0x3e, 0x88, 0x7d, 0xfe, 0x3f, 0xf6, 0xae, 0x76, 0xb7, 0x6d, 0x24, 0xd9, 0xfe, 0xf7, 0x53, 0x10, + 0x02, 0x06, 0x90, 0x32, 0xa1, 0x2c, 0x29, 0xb2, 0x62, 0x09, 0x58, 0x04, 0x9e, 0x4d, 0x66, 0x61, + 0x20, 0x33, 0x63, 0x24, 0xd9, 0xe0, 0xde, 0x6b, 0x69, 0x0d, 0x5a, 0x6c, 0xd9, 0x44, 0x28, 0x92, + 0x4b, 0x52, 0xde, 0x78, 0x6d, 0xbf, 0xfb, 0x05, 0x3f, 0x44, 0x91, 0xa2, 0x6c, 0xf3, 0xa3, 0xba, + 0x49, 0x4a, 0xc7, 0x3f, 0x12, 0x49, 0xb6, 0xba, 0x49, 0x76, 0x57, 0xd5, 0xa9, 0x53, 0xd5, 0x55, + 0xa0, 0xe3, 0x40, 0xc7, 0x81, 0x8e, 0x83, 0x49, 0x82, 0x49, 0x82, 0x49, 0x82, 0x49, 0x02, 0x1d, + 0x07, 0x3a, 0xae, 0xb6, 0x74, 0x1c, 0x6a, 0x59, 0xf2, 0x5a, 0xd5, 0x0a, 0x56, 0x53, 0x6c, 0x0d, + 0xc4, 0x7f, 0x46, 0x57, 0x71, 0x15, 0xfd, 0xd9, 0x17, 0xb6, 0x68, 0x62, 0x02, 0x35, 0x0d, 0x85, + 0x4b, 0x4a, 0xdd, 0x92, 0x27, 0x4c, 0x0f, 0x90, 0x30, 0x5d, 0x3d, 0xe4, 0x44, 0xc2, 0x74, 0xe6, + 0x1b, 0xc2, 0xb9, 0x44, 0x9c, 0x4b, 0xac, 0x9d, 0xcf, 0x8b, 0xd8, 0x4f, 0x15, 0x3e, 0x2d, 0xce, + 0x25, 0x96, 0x46, 0x11, 0x38, 0x97, 0xd8, 0x58, 0x88, 0x4f, 0xe0, 0xa2, 0xa1, 0xc6, 0x11, 0xfd, + 0xba, 0xb4, 0x4a, 0xf9, 0x1b, 0xf9, 0x9d, 0x2c, 0x61, 0x85, 0x95, 0x8e, 0x38, 0xae, 0x74, 0xd9, + 0x15, 0xe6, 0xb7, 0xb2, 0xad, 0x42, 0x05, 0xdd, 0x33, 0x2e, 0x63, 0xbe, 0xb5, 0xcb, 0xbe, 0x02, + 0x39, 0x9e, 0x7e, 0x4b, 0xb3, 0xee, 0x46, 0xb9, 0x9f, 0x79, 0xbc, 0xbd, 0x6d, 0xde, 0x12, 0x91, + 0x05, 0x3d, 0xd8, 0xc2, 0x00, 0xb3, 0x0c, 0x90, 0x2c, 0x5d, 0x7a, 0xb5, 0x2c, 0x30, 0x24, 0x03, + 0x80, 0x64, 0x40, 0x8f, 0xa2, 0x74, 0x2a, 0x5f, 0x5d, 0x52, 0xd4, 0x43, 0x6c, 0x85, 0xbd, 0x19, + 0x99, 0x53, 0xbe, 0x0c, 0xdc, 0x66, 0x28, 0x54, 0x81, 0x43, 0x43, 0x06, 0xa1, 0xc2, 0x55, 0x0d, + 0x44, 0x2b, 0x5d, 0x05, 0x8e, 0xaa, 0xc5, 0xf3, 0xb6, 0x08, 0xa2, 0x40, 0x05, 0x7f, 0x01, 0x05, + 0xdf, 0xca, 0x43, 0x80, 0xf7, 0x8c, 0x6f, 0x45, 0x81, 0x8a, 0x26, 0xb0, 0xa2, 0x16, 0x58, 0xd1, + 0x2a, 0x58, 0x51, 0x0b, 0x19, 0xf1, 0x99, 0xfd, 0x55, 0x8e, 0xa9, 0xf0, 0x16, 0x12, 0x0e, 0xd1, + 0xc7, 0xba, 0x32, 0xb5, 0x23, 0x4c, 0xfd, 0x88, 0x50, 0x43, 0xb4, 0xea, 0x88, 0x58, 0x2d, 0x45, + 0x0f, 0x80, 0x7f, 0xc2, 0xa1, 0x66, 0xdd, 0x8d, 0xe4, 0xd0, 0x17, 0x91, 0x0d, 0x53, 0xfe, 0xaf, + 0x69, 0x30, 0x9e, 0xd9, 0x87, 0xa7, 0x7c, 0xb2, 0x0f, 0x5d, 0x66, 0x1b, 0x64, 0x7d, 0x57, 0x52, + 0x13, 0xb4, 0xdb, 0x93, 0xc7, 0xcb, 0x9e, 0x3c, 0x56, 0xe4, 0xc5, 0x99, 0xfc, 0xfb, 0xec, 0xa1, + 0xf7, 0x76, 0xf8, 0xd4, 0x99, 0x74, 0xda, 0xdb, 0x9f, 0x4d, 0x3a, 0x0f, 0xbd, 0xb7, 0x27, 0x4f, + 0xed, 0xf6, 0x8e, 0xdf, 0x7c, 0xd8, 0x35, 0x46, 0xe7, 0xb1, 0xdd, 0x6e, 0x0f, 0x4e, 0x2e, 0x7b, + 0xf2, 0xc9, 0xec, 0x71, 0x70, 0xd9, 0x93, 0x87, 0x33, 0xef, 0x6f, 0x66, 0x8f, 0x97, 0xbd, 0xfe, + 0xec, 0x83, 0xff, 0x32, 0xf8, 0xb7, 0x33, 0x9d, 0x76, 0x3b, 0x0f, 0xef, 0x9e, 0xb2, 0xfd, 0x71, + 0xa7, 0xd3, 0xfe, 0xe5, 0x72, 0x3a, 0xb5, 0x1e, 0xfe, 0x7c, 0xf2, 0xfe, 0xfd, 0xfc, 0x34, 0xfb, + 0xb5, 0xf3, 0x81, 0x97, 0x36, 0x68, 0xb7, 0x2f, 0xff, 0x35, 0x99, 0xfd, 0x3a, 0xe9, 0x3c, 0x8c, + 0x9e, 0xd6, 0xaf, 0xfd, 0x7f, 0x3b, 0x8f, 0xed, 0xee, 0x9b, 0xe9, 0xb4, 0xdb, 0x7d, 0xd3, 0x09, + 0x6e, 0x34, 0xfc, 0xbb, 0x37, 0xc1, 0x6f, 0x3f, 0x4c, 0x26, 0xa9, 0x8f, 0x3a, 0xed, 0x5f, 0xba, + 0x1c, 0x2f, 0x75, 0xf3, 0xfc, 0x27, 0xd3, 0x69, 0x77, 0xf6, 0x86, 0x5e, 0x9d, 0xcc, 0x0e, 0xe0, + 0x9c, 0x45, 0x60, 0x5c, 0x64, 0x9d, 0x19, 0x37, 0x7e, 0x3c, 0x83, 0x13, 0xda, 0x49, 0x4e, 0x03, + 0xe0, 0x03, 0xe0, 0x03, 0xe0, 0x03, 0xe0, 0x43, 0xb6, 0xdb, 0x57, 0x9a, 0xe1, 0x9e, 0x72, 0x44, + 0x3a, 0x27, 0x1c, 0x86, 0xa6, 0x6d, 0x2f, 0xb7, 0xfd, 0xc3, 0x47, 0x3a, 0x25, 0x5e, 0xed, 0xe7, + 0x04, 0xe9, 0xf4, 0xd4, 0x34, 0x9c, 0x5a, 0x9e, 0xa5, 0xe6, 0xe1, 0xd8, 0x02, 0x8d, 0xb3, 0xf4, + 0x26, 0x97, 0x5e, 0xf9, 0xb9, 0x77, 0x4b, 0xdf, 0x1f, 0x9c, 0xee, 0xd1, 0xe2, 0x1f, 0x35, 0x63, + 0xd4, 0x19, 0x0e, 0x79, 0x65, 0x41, 0x0e, 0x0d, 0x3b, 0xe4, 0x35, 0x3a, 0x8e, 0x72, 0x11, 0xd6, + 0xaf, 0xf6, 0xb0, 0xd8, 0x12, 0x21, 0x2b, 0x4c, 0xcf, 0x06, 0x1f, 0x7c, 0xaa, 0x3d, 0x82, 0x4a, + 0x08, 0x2a, 0x49, 0x8d, 0x48, 0xb5, 0xa7, 0x3f, 0x1e, 0xce, 0xe3, 0x58, 0x78, 0x74, 0x1c, 0xbc, + 0xdb, 0xf5, 0x4f, 0x69, 0x5b, 0x93, 0x40, 0xa3, 0x87, 0x6f, 0xa8, 0x16, 0x1e, 0x75, 0xf4, 0xf2, + 0xae, 0xf1, 0xa1, 0xd6, 0xd1, 0x83, 0x82, 0x87, 0x82, 0x97, 0x90, 0x35, 0x50, 0x6f, 0x6f, 0x1b, + 0xe4, 0xb9, 0x48, 0x75, 0x23, 0x4c, 0xed, 0x08, 0x53, 0x3f, 0x22, 0xd4, 0x10, 0x1f, 0x76, 0x03, + 0x59, 0x03, 0xaf, 0x01, 0x17, 0x64, 0x0d, 0x20, 0x6b, 0x00, 0x59, 0x03, 0xe2, 0xa9, 0x4d, 0x42, + 0xd8, 0x6c, 0xda, 0xda, 0x0d, 0x87, 0x28, 0xd0, 0xc6, 0x00, 0x07, 0xe3, 0x03, 0xea, 0x00, 0xea, + 0x00, 0xea, 0x00, 0xea, 0x10, 0x42, 0x9d, 0x08, 0xe8, 0x70, 0x51, 0x31, 0x09, 0x9c, 0x33, 0xe4, + 0x30, 0xf6, 0x27, 0x63, 0xb5, 0xf4, 0x1e, 0xd1, 0x13, 0x52, 0xd3, 0xa8, 0xf6, 0x04, 0x52, 0xd3, + 0x60, 0x72, 0x60, 0x72, 0x60, 0x72, 0x38, 0xed, 0x76, 0xa4, 0xa6, 0x6d, 0xff, 0x20, 0x35, 0x2d, + 0xd3, 0x34, 0x48, 0x4d, 0xcb, 0xb7, 0xf4, 0x48, 0x4d, 0xab, 0xf9, 0xe2, 0x23, 0x35, 0xad, 0x36, + 0xd0, 0xda, 0x71, 0x15, 0x77, 0xe5, 0x70, 0xec, 0xab, 0x11, 0x8c, 0x0f, 0x30, 0x0d, 0x30, 0x0d, + 0x30, 0x0d, 0x30, 0x4d, 0xb6, 0xdb, 0x99, 0xb1, 0x5a, 0x32, 0x3b, 0xc8, 0x88, 0x05, 0x73, 0x83, + 0xcc, 0xe7, 0xfc, 0x86, 0x4f, 0x60, 0xe6, 0x73, 0xbd, 0xfa, 0x5a, 0x10, 0x64, 0xc7, 0xdd, 0xd9, + 0x36, 0x87, 0xd4, 0x67, 0x7f, 0x54, 0x54, 0xd4, 0xa9, 0x1d, 0x12, 0x40, 0x6e, 0x5c, 0x15, 0x96, + 0x7e, 0xcf, 0x73, 0xe3, 0x3c, 0x61, 0x97, 0x6f, 0x6c, 0x73, 0xc5, 0x31, 0x47, 0x2e, 0x36, 0x07, + 0x1f, 0x07, 0xa4, 0x0f, 0x07, 0x04, 0x0e, 0x08, 0x1c, 0x90, 0xfa, 0x39, 0x20, 0xd4, 0xea, 0x2a, + 0x1a, 0x98, 0xb8, 0x9e, 0xe0, 0xb3, 0xc2, 0x44, 0x5a, 0x5f, 0x50, 0x90, 0xfa, 0xe2, 0xae, 0xc6, + 0x44, 0xa8, 0x33, 0x61, 0x6a, 0x4d, 0x94, 0x7a, 0x13, 0xae, 0xe6, 0x84, 0xab, 0x3b, 0x91, 0x6a, + 0x8f, 0x8f, 0xfa, 0xe3, 0xa4, 0x06, 0xb9, 0xab, 0xc3, 0x68, 0x02, 0x65, 0x3e, 0x67, 0x96, 0x2b, + 0x2f, 0x4d, 0x55, 0xc0, 0x46, 0x8e, 0x6a, 0x2d, 0xc7, 0x26, 0xe5, 0xbc, 0xb3, 0x38, 0xb5, 0xc3, + 0x7a, 0x4d, 0x41, 0xf3, 0x0e, 0x2f, 0xf1, 0x56, 0xd4, 0x22, 0x15, 0xb6, 0x70, 0xc5, 0x2d, 0x5a, + 0x81, 0x57, 0xa6, 0xc8, 0x2b, 0x53, 0xe8, 0x55, 0x28, 0x76, 0xbe, 0x0a, 0x9e, 0xb3, 0xa2, 0x8f, + 0x1e, 0x18, 0x37, 0x02, 0xfe, 0x59, 0x69, 0xa3, 0x6f, 0x17, 0xf6, 0x2a, 0x7a, 0xed, 0x1f, 0x35, + 0x73, 0x03, 0xf0, 0x4c, 0x7e, 0x50, 0xd4, 0x3b, 0x66, 0xbb, 0x9a, 0xc3, 0x3c, 0x71, 0x09, 0xa8, + 0xec, 0x3b, 0x45, 0x17, 0x68, 0x93, 0x77, 0xcf, 0x2f, 0xce, 0x3c, 0xf7, 0x7b, 0x3d, 0x18, 0x67, + 0x18, 0x67, 0x18, 0x67, 0x18, 0x67, 0x18, 0xe7, 0x78, 0xea, 0x69, 0x7f, 0x24, 0xd0, 0x36, 0x8f, + 0x04, 0x4c, 0xc5, 0x37, 0x37, 0x75, 0xfb, 0x47, 0x8c, 0xfa, 0x90, 0x44, 0xe5, 0xae, 0x56, 0x64, + 0xd4, 0x52, 0xd3, 0x46, 0x09, 0x8e, 0x82, 0xe7, 0x15, 0x98, 0xee, 0x28, 0x58, 0xbd, 0x24, 0xb7, + 0x92, 0xf2, 0xf3, 0xe0, 0xb6, 0xd2, 0xb0, 0x37, 0x3e, 0x39, 0xa0, 0xdd, 0x74, 0xb4, 0x1f, 0xb3, + 0xcc, 0xe0, 0xcc, 0xa5, 0xb6, 0x95, 0x65, 0x33, 0xb6, 0xb4, 0x5c, 0x71, 0xde, 0xdb, 0x7a, 0x42, + 0x71, 0xee, 0x9a, 0x87, 0x53, 0xe1, 0xaf, 0xc1, 0x5f, 0x83, 0xbf, 0x06, 0x7f, 0x0d, 0xfe, 0x1a, + 0xc8, 0xd4, 0x3a, 0xda, 0x5f, 0x59, 0x65, 0xba, 0x72, 0x2f, 0xdc, 0x0a, 0x87, 0xd3, 0x8a, 0xb3, + 0xc5, 0x20, 0x4e, 0x61, 0x88, 0x61, 0x88, 0x61, 0x88, 0x61, 0x88, 0x41, 0x9c, 0xd2, 0xfd, 0x80, + 0x38, 0xe5, 0x32, 0xad, 0xa0, 0xa2, 0x00, 0xa9, 0x79, 0x41, 0x9c, 0xee, 0xed, 0x56, 0x7a, 0x37, + 0xea, 0xf5, 0x40, 0x9c, 0x36, 0x6d, 0x16, 0x10, 0xa7, 0xbb, 0x1c, 0x37, 0xcd, 0xb4, 0x35, 0x57, + 0xa8, 0xcf, 0x16, 0xce, 0x88, 0x4c, 0x17, 0x38, 0x6c, 0x70, 0xd8, 0xe0, 0xb0, 0xc1, 0x61, 0xab, + 0xcc, 0x61, 0x3b, 0x15, 0xe8, 0xaf, 0x9d, 0xc0, 0x5f, 0x83, 0xbf, 0x96, 0x07, 0x64, 0x23, 0xd1, + 0x05, 0xfe, 0x1a, 0xd1, 0x56, 0x1a, 0x9c, 0x0c, 0xe1, 0xae, 0xc1, 0x5d, 0x6b, 0xbe, 0xbb, 0x76, + 0xa7, 0xd9, 0xee, 0x4a, 0xd1, 0xd7, 0x15, 0xb9, 0xc5, 0x79, 0x6d, 0xdb, 0x13, 0xc3, 0x9d, 0x82, + 0x3b, 0x05, 0x77, 0x0a, 0xee, 0x14, 0xdc, 0xa9, 0x54, 0x9b, 0x04, 0x91, 0xb9, 0x28, 0x63, 0x01, + 0x73, 0x85, 0xcf, 0x72, 0xef, 0x7c, 0xaa, 0x58, 0x2f, 0xaf, 0xa1, 0xc0, 0xb5, 0x4b, 0xad, 0xe1, + 0xa9, 0xc0, 0x39, 0x79, 0xf7, 0xfc, 0x7a, 0x76, 0xe2, 0xa0, 0xb7, 0xd7, 0xec, 0xf1, 0xb2, 0x2f, + 0x8f, 0xc3, 0xfe, 0x5b, 0x7d, 0xff, 0xbf, 0xe0, 0x75, 0xbc, 0x2f, 0x57, 0xd8, 0xab, 0x2b, 0xea, + 0xdd, 0x95, 0xfb, 0x8b, 0xbb, 0xba, 0x78, 0x09, 0xbb, 0xdb, 0xd9, 0xd1, 0x1e, 0x39, 0x8c, 0xd5, + 0x48, 0xe3, 0x08, 0xd2, 0xc8, 0x5d, 0x1a, 0xd1, 0x99, 0xaf, 0x88, 0x0a, 0x23, 0xef, 0xd8, 0xb7, + 0x6f, 0x6a, 0xa9, 0xe9, 0xa4, 0x00, 0x67, 0x58, 0xfa, 0x59, 0x73, 0xdc, 0x33, 0xd7, 0xb5, 0xc5, + 0x40, 0xd3, 0x3f, 0x34, 0xe3, 0x93, 0xee, 0x97, 0x17, 0x70, 0x5a, 0x13, 0xc9, 0x58, 0xe9, 0xba, + 0x00, 0xb4, 0xf8, 0x87, 0xf2, 0x53, 0xfc, 0xa4, 0x7f, 0xd9, 0x2a, 0xb3, 0x99, 0xfa, 0xdb, 0x7d, + 0x38, 0x25, 0x98, 0xa3, 0x67, 0x99, 0x23, 0x5d, 0x33, 0x7e, 0xc8, 0xba, 0x39, 0x17, 0x59, 0xea, + 0x62, 0xc7, 0xdc, 0xe0, 0x8f, 0xc0, 0x1f, 0x81, 0x3f, 0x02, 0x7f, 0x04, 0xfe, 0x08, 0xfc, 0x11, + 0xf8, 0x23, 0x78, 0xac, 0xe0, 0x8f, 0xc0, 0x1f, 0x81, 0x3f, 0x02, 0x7f, 0x04, 0xfe, 0x08, 0xfc, + 0x51, 0x83, 0xf9, 0xa3, 0x46, 0x53, 0x03, 0xb6, 0xb9, 0x72, 0x99, 0x2d, 0x6b, 0xaa, 0x78, 0x66, + 0x60, 0x33, 0x35, 0x88, 0x01, 0x10, 0x03, 0x20, 0x06, 0x40, 0x0c, 0x80, 0x18, 0x40, 0x9e, 0x7e, + 0xf3, 0xbc, 0x10, 0xe4, 0xe9, 0xf3, 0x9f, 0x17, 0x79, 0xfa, 0x7b, 0xbb, 0x95, 0x06, 0x27, 0xa8, + 0x47, 0x09, 0x97, 0x4a, 0x94, 0x4b, 0xd5, 0xa8, 0xc6, 0x44, 0x67, 0xab, 0x1b, 0x0f, 0xa8, 0x31, + 0x95, 0xab, 0xd9, 0x14, 0xe4, 0xf6, 0x1d, 0x7b, 0x58, 0x73, 0x31, 0x89, 0x35, 0x07, 0xde, 0xfa, + 0x20, 0x7c, 0x9f, 0x6c, 0x20, 0x9c, 0xfe, 0xcc, 0xff, 0xc8, 0x9a, 0xf8, 0xcd, 0x84, 0x83, 0x97, + 0x9b, 0x96, 0xc2, 0x89, 0xf7, 0xc7, 0x77, 0xb6, 0x6d, 0x1d, 0x6f, 0xba, 0x5c, 0x1e, 0x73, 0xed, + 0x1a, 0x17, 0xdd, 0xef, 0x47, 0xe6, 0xcc, 0x6d, 0xcd, 0x0a, 0x7b, 0x32, 0xb7, 0xce, 0x54, 0x55, + 0xf3, 0x5e, 0x2b, 0xba, 0xf4, 0xfd, 0xcb, 0x97, 0x0b, 0x49, 0x55, 0x5c, 0x45, 0x5a, 0x98, 0xb6, + 0x74, 0x7e, 0x71, 0x37, 0x92, 0x36, 0x77, 0x2a, 0xc8, 0x09, 0xee, 0xc3, 0x09, 0x86, 0x13, 0x0c, + 0x27, 0x18, 0x4e, 0x70, 0x6e, 0xb5, 0xa6, 0x09, 0xca, 0x60, 0xab, 0x20, 0x69, 0x29, 0x25, 0xe8, + 0xc2, 0x93, 0x97, 0x9e, 0xb3, 0x1e, 0xbf, 0x9b, 0x76, 0x60, 0x36, 0x4c, 0x63, 0xdb, 0x60, 0xbc, + 0x95, 0x1c, 0xe6, 0x3a, 0x92, 0x7b, 0xcb, 0xa4, 0xf0, 0x72, 0x25, 0xef, 0x72, 0x25, 0xff, 0x72, + 0xa7, 0x86, 0xd8, 0x70, 0x98, 0x60, 0x27, 0x42, 0x98, 0x99, 0xa9, 0xc2, 0xdc, 0x54, 0x66, 0x76, + 0xaa, 0x32, 0x3f, 0x95, 0x9b, 0xa1, 0xca, 0xcd, 0x51, 0x95, 0x66, 0x49, 0xb0, 0x6b, 0x2a, 0x48, + 0x5e, 0x85, 0x71, 0xb6, 0x29, 0x69, 0x15, 0x9a, 0xd4, 0x95, 0x82, 0xf7, 0x63, 0x81, 0x73, 0x0a, + 0x4d, 0xf2, 0x12, 0xe3, 0xad, 0xbe, 0xb2, 0xb2, 0x95, 0x24, 0x7d, 0xa5, 0xd6, 0xf8, 0xb4, 0x82, + 0xb9, 0xab, 0x4a, 0x3b, 0x89, 0x2e, 0xe0, 0x60, 0x92, 0xc1, 0xc4, 0x50, 0x6c, 0x15, 0xe9, 0xe5, + 0x7a, 0x48, 0xf1, 0x08, 0x52, 0x5c, 0x99, 0x14, 0x23, 0x89, 0xac, 0x8c, 0x0a, 0x6c, 0x6e, 0x32, + 0x59, 0x45, 0x6a, 0x0d, 0xc9, 0x72, 0xf5, 0x62, 0xa9, 0x1a, 0x16, 0xd9, 0x99, 0xf1, 0x8a, 0xec, + 0x18, 0x86, 0xe9, 0x2a, 0x21, 0xcb, 0xc3, 0xcf, 0x18, 0xb6, 0x9c, 0xf9, 0x2d, 0x5b, 0x2a, 0x96, + 0xe2, 0xde, 0x06, 0x21, 0x18, 0x8b, 0x19, 0x41, 0x14, 0x44, 0x8e, 0xc5, 0x58, 0x76, 0xbd, 0x3c, + 0x4e, 0x86, 0x61, 0x12, 0x01, 0x18, 0x3f, 0xf4, 0xb2, 0x09, 0xba, 0xbc, 0x12, 0x6e, 0x39, 0x6a, + 0xc6, 0x6a, 0x73, 0x00, 0x40, 0xad, 0xe8, 0x91, 0xc9, 0xae, 0xad, 0xcc, 0x7f, 0x68, 0xc6, 0x0d, + 0xb7, 0xd5, 0xde, 0xc0, 0x9b, 0xf4, 0x9c, 0x9c, 0xf6, 0x30, 0xdf, 0x88, 0x12, 0x77, 0x8a, 0x4f, + 0x04, 0xa5, 0x27, 0x8c, 0xc2, 0x13, 0x45, 0xd9, 0x09, 0xa7, 0xe8, 0x84, 0x53, 0x72, 0x22, 0x29, + 0xb8, 0x66, 0x65, 0x23, 0xf0, 0x8e, 0x00, 0xb5, 0xe6, 0x6b, 0x89, 0x17, 0x94, 0x91, 0x20, 0x26, + 0x1f, 0x00, 0x81, 0xf7, 0xfa, 0xab, 0x4f, 0xd1, 0x6a, 0xb4, 0x32, 0x75, 0x5a, 0x99, 0x5a, 0xad, + 0x42, 0xbd, 0x0a, 0x72, 0x69, 0xf6, 0x25, 0xf0, 0xbe, 0x6e, 0xd2, 0x21, 0xab, 0x6c, 0x6e, 0xb3, + 0x70, 0x8d, 0x04, 0x07, 0xde, 0x77, 0x5c, 0x83, 0xb0, 0xc0, 0xbb, 0xb0, 0x4e, 0x8f, 0xdb, 0xa6, + 0x01, 0x41, 0xf3, 0x06, 0x9b, 0x8c, 0xaa, 0x4c, 0x47, 0xe5, 0x26, 0xa4, 0x72, 0x53, 0x52, 0xa5, + 0x49, 0x11, 0x63, 0x5a, 0x04, 0x99, 0x98, 0xe8, 0x41, 0x56, 0x17, 0x34, 0x17, 0x75, 0xe0, 0x69, + 0x5b, 0xf5, 0x0a, 0x3c, 0x7a, 0x20, 0xf8, 0x00, 0xd4, 0xfa, 0xa7, 0x82, 0x48, 0x5b, 0x15, 0x07, + 0xa2, 0x2a, 0xb2, 0xa9, 0xa9, 0xe9, 0x2b, 0x6a, 0x3c, 0x19, 0xcd, 0x5f, 0xe1, 0xd9, 0x16, 0xc1, + 0xda, 0x2a, 0xb9, 0xe5, 0x2a, 0x38, 0x38, 0x55, 0xb7, 0x2d, 0x27, 0xbc, 0xe1, 0x49, 0xad, 0x36, + 0x1d, 0xc2, 0x8a, 0xb5, 0xbe, 0x1f, 0x01, 0x4a, 0xa1, 0xe5, 0x07, 0x3c, 0x36, 0x81, 0x2d, 0xf1, + 0xde, 0xeb, 0xf6, 0x05, 0xc0, 0x8d, 0x84, 0x1b, 0x09, 0x37, 0x12, 0x6e, 0x24, 0xdc, 0x48, 0x41, + 0xd2, 0xaa, 0x33, 0x65, 0x61, 0xb3, 0x45, 0x15, 0x89, 0xd7, 0xef, 0xc5, 0xd6, 0x80, 0xbb, 0xcd, + 0x73, 0xa4, 0xd6, 0xf0, 0x1e, 0x0f, 0xf2, 0x93, 0xaa, 0x17, 0x11, 0x51, 0x79, 0x3f, 0xd1, 0x7c, + 0x55, 0xe6, 0xff, 0xa4, 0x33, 0x51, 0xb8, 0xa6, 0x04, 0xf1, 0xdf, 0x20, 0x3c, 0xeb, 0xb1, 0x39, + 0xae, 0xe2, 0x32, 0x71, 0xa1, 0xef, 0x60, 0xba, 0x3d, 0x8b, 0x7c, 0x0f, 0x10, 0xf9, 0x6e, 0x0c, + 0xee, 0x44, 0xe4, 0x1b, 0x91, 0xef, 0xd7, 0x1e, 0x18, 0x22, 0xdf, 0x42, 0xae, 0x00, 0x91, 0x6f, + 0x50, 0x16, 0xa0, 0x2c, 0x40, 0x59, 0x80, 0xb2, 0x40, 0xe4, 0x9b, 0xcf, 0x94, 0x88, 0x7c, 0xef, + 0x9f, 0x4d, 0x4d, 0x4d, 0x8f, 0xc8, 0x37, 0x22, 0xdf, 0x15, 0x6d, 0x39, 0x44, 0xbe, 0xf7, 0x70, + 0x36, 0x44, 0xbe, 0xb3, 0x6f, 0x43, 0x44, 0xbe, 0xe1, 0x46, 0xc2, 0x8d, 0x84, 0x1b, 0x09, 0x37, + 0xf2, 0x50, 0xdd, 0x48, 0x44, 0xbe, 0x11, 0xf9, 0xae, 0xb3, 0x88, 0x1c, 0x7a, 0xe4, 0x3b, 0x08, + 0xb8, 0xa2, 0xb6, 0x0a, 0xff, 0x1d, 0x77, 0x10, 0xb5, 0x55, 0x84, 0x55, 0xf9, 0x08, 0xee, 0xd4, + 0xb5, 0x57, 0x73, 0xd7, 0x08, 0x4d, 0xcd, 0xf9, 0x7a, 0xee, 0xab, 0xaf, 0xb1, 0x2b, 0xbf, 0x3a, + 0xb7, 0xee, 0x46, 0x57, 0x67, 0xc1, 0xf5, 0x5e, 0x7d, 0xb7, 0x6d, 0xeb, 0x1f, 0xde, 0x95, 0x5e, + 0x45, 0x7f, 0xfd, 0x6d, 0x7d, 0xa1, 0x07, 0x5c, 0x10, 0x86, 0x6f, 0x96, 0x87, 0x90, 0xec, 0x0e, + 0x61, 0x65, 0x5f, 0x06, 0x28, 0xfb, 0x52, 0x1b, 0x9f, 0x09, 0x65, 0x5f, 0x0e, 0xd7, 0x9c, 0x72, + 0x2f, 0xfb, 0xa2, 0xcc, 0xe7, 0xcc, 0x72, 0xe5, 0xa5, 0xa9, 0x0a, 0x4c, 0x80, 0x8b, 0x4f, 0xca, + 0xbd, 0x21, 0x4c, 0x94, 0x5f, 0xb1, 0x50, 0x74, 0x87, 0xa1, 0xdd, 0x69, 0x6d, 0x49, 0x30, 0xa4, + 0xdd, 0xed, 0x1d, 0xc9, 0x85, 0xb4, 0xbb, 0xda, 0x92, 0x58, 0x91, 0xb4, 0x5d, 0x9b, 0xa6, 0xce, + 0x14, 0x43, 0x60, 0xc3, 0xd3, 0x7e, 0x1f, 0x39, 0xe8, 0x69, 0x43, 0xac, 0xde, 0x31, 0xdb, 0xd5, + 0x1c, 0x3f, 0xfb, 0x30, 0x70, 0x62, 0xef, 0x04, 0x74, 0xdf, 0xd9, 0xd8, 0xe4, 0xdd, 0xf3, 0x8b, + 0x33, 0xcf, 0xfd, 0x5e, 0x0f, 0xc6, 0x19, 0xc6, 0x19, 0xc6, 0x19, 0xc6, 0x19, 0xc6, 0x39, 0x9e, + 0xa0, 0xd8, 0x1f, 0x09, 0xb4, 0xcd, 0x23, 0x34, 0x23, 0x2f, 0x7e, 0x63, 0x68, 0x46, 0xce, 0x7f, + 0x5e, 0x34, 0x23, 0xdf, 0xdb, 0xad, 0x34, 0xec, 0x8d, 0xd1, 0x8d, 0xbc, 0x71, 0xb3, 0xcc, 0xe0, + 0xcc, 0xa5, 0xb6, 0xd5, 0x7c, 0x65, 0xdb, 0x9e, 0x1b, 0xb5, 0x3e, 0x57, 0x26, 0xb0, 0xac, 0xf6, + 0xf6, 0xcc, 0x70, 0xa9, 0xe0, 0x52, 0xc1, 0xa5, 0x82, 0x4b, 0x05, 0x97, 0x4a, 0xf0, 0x99, 0x2f, + 0x81, 0x67, 0xbd, 0xe0, 0x51, 0xed, 0x13, 0x0c, 0xee, 0xc1, 0xa3, 0x82, 0x47, 0x45, 0xb3, 0x95, + 0x06, 0x27, 0x70, 0xa8, 0xe0, 0x50, 0xed, 0x81, 0x43, 0x65, 0xd9, 0x8c, 0x2d, 0x2d, 0x57, 0x9c, + 0x1f, 0xb5, 0x9e, 0x50, 0x5c, 0xfc, 0xcb, 0x43, 0xa9, 0xf0, 0xd6, 0xe0, 0xad, 0xc1, 0x5b, 0x83, + 0xb7, 0x06, 0x6f, 0x0d, 0xd9, 0x29, 0x75, 0xb4, 0xbf, 0xb2, 0xca, 0x74, 0xe5, 0x5e, 0xb8, 0x15, + 0x0e, 0xa7, 0x15, 0x67, 0x8b, 0x91, 0x89, 0x02, 0x43, 0x0c, 0x43, 0x0c, 0x43, 0x0c, 0x43, 0x8c, + 0x4c, 0x14, 0xba, 0x1f, 0xf0, 0xa6, 0x5c, 0xa6, 0x05, 0x6f, 0xca, 0x77, 0x2b, 0x1d, 0x20, 0x6f, + 0xfa, 0x6e, 0xd4, 0xeb, 0x81, 0x38, 0x6d, 0xda, 0x2c, 0x20, 0x4e, 0x77, 0x39, 0x6e, 0xa2, 0x33, + 0x50, 0x44, 0x65, 0x9e, 0xe0, 0xe8, 0x00, 0x1c, 0x36, 0x38, 0x6c, 0x70, 0xd8, 0xe0, 0xb0, 0x3d, + 0xef, 0xb0, 0x21, 0xcf, 0x05, 0xfe, 0x5a, 0x6d, 0x41, 0x36, 0x4e, 0x0e, 0xc0, 0x5f, 0x23, 0xda, + 0x4a, 0xc2, 0x6b, 0x10, 0xc3, 0x5d, 0x83, 0xbb, 0xc6, 0x63, 0x5b, 0xdd, 0x69, 0xb6, 0xbb, 0x52, + 0x74, 0x39, 0x2c, 0x3d, 0x26, 0xce, 0x6b, 0xdb, 0x9e, 0x18, 0xee, 0x14, 0xdc, 0x29, 0xb8, 0x53, + 0x70, 0xa7, 0xe0, 0x4e, 0x85, 0xd2, 0xa6, 0x59, 0x82, 0x74, 0x63, 0x5c, 0x3f, 0xf6, 0xc7, 0x02, + 0xe6, 0x0a, 0x9f, 0xe5, 0xde, 0xf9, 0x54, 0x9b, 0x95, 0xbb, 0x1b, 0x0a, 0x5c, 0xbb, 0xd4, 0x1a, + 0x9e, 0x8a, 0x2d, 0xd1, 0xec, 0x32, 0xdb, 0x10, 0xde, 0xee, 0xa7, 0xd5, 0x6e, 0x5f, 0xf6, 0xe4, + 0xf1, 0xec, 0xf1, 0xb2, 0x2f, 0x8f, 0x67, 0xc1, 0xcb, 0xbe, 0xff, 0x5f, 0xf0, 0x7a, 0x70, 0xd9, + 0x93, 0x87, 0xeb, 0xd7, 0x27, 0x97, 0x3d, 0xf9, 0x64, 0xd6, 0x99, 0x4e, 0xbb, 0x9d, 0x87, 0x77, + 0x4f, 0xf9, 0xbf, 0xd8, 0xfe, 0xe5, 0x72, 0x3a, 0xb5, 0x1e, 0xfe, 0x7c, 0xf2, 0xfe, 0xfd, 0xfc, + 0x34, 0xfb, 0xb5, 0xf3, 0xa1, 0xb5, 0x6f, 0x9d, 0x31, 0xde, 0xee, 0xb1, 0x34, 0x8e, 0x20, 0x8d, + 0xdc, 0xa5, 0x71, 0xf2, 0xe8, 0xc9, 0x8c, 0x22, 0x2f, 0xce, 0xe4, 0xdf, 0x67, 0x0f, 0xbd, 0xb7, + 0xc3, 0xa7, 0xce, 0xa4, 0xd3, 0xde, 0xfe, 0x6c, 0xd2, 0x79, 0xe8, 0xbd, 0x3d, 0x79, 0x6a, 0xb7, + 0x77, 0xfc, 0xe6, 0xc3, 0xae, 0x31, 0x3a, 0x8f, 0xed, 0x76, 0x3b, 0x94, 0xc3, 0x84, 0x6c, 0x5e, + 0xf6, 0xfa, 0xb3, 0x0f, 0xfe, 0xcb, 0xe0, 0xdf, 0x48, 0xba, 0x33, 0xfd, 0x71, 0x67, 0xa7, 0x4c, + 0xbf, 0x15, 0xae, 0xc2, 0xfe, 0x35, 0x99, 0xfd, 0x3a, 0xe9, 0x3c, 0x8c, 0x9e, 0xd6, 0xaf, 0xfd, + 0x7f, 0x3b, 0x8f, 0xed, 0xee, 0x9b, 0xe9, 0xb4, 0xdb, 0x7d, 0xd3, 0x09, 0x1e, 0x40, 0xf8, 0x77, + 0x6f, 0x82, 0xdf, 0x7e, 0x98, 0x4c, 0x52, 0x1f, 0x75, 0xda, 0xbf, 0x74, 0xf7, 0x51, 0x2d, 0x35, + 0x9d, 0x14, 0xe0, 0x0c, 0x4b, 0x3f, 0x6b, 0x8e, 0x7b, 0xe6, 0xba, 0x82, 0x3a, 0xe7, 0xfe, 0xa1, + 0x19, 0x9f, 0x74, 0xbf, 0x5e, 0x9b, 0xd3, 0x9a, 0x48, 0xc6, 0x4a, 0xd7, 0x05, 0xa0, 0xc5, 0x3f, + 0x94, 0x9f, 0xe2, 0x27, 0xfd, 0xcb, 0x56, 0x99, 0xcd, 0xd4, 0xdf, 0xee, 0xc3, 0x29, 0xc1, 0x1c, + 0x3d, 0xcb, 0x1c, 0xe9, 0x9a, 0xf1, 0x43, 0xd6, 0xcd, 0xb9, 0xc8, 0xda, 0x81, 0x3b, 0xe6, 0x06, + 0x7f, 0x04, 0xfe, 0x08, 0xfc, 0x11, 0xf8, 0x23, 0xf0, 0x47, 0xe0, 0x8f, 0xc0, 0x1f, 0xc1, 0x63, + 0x05, 0x7f, 0x04, 0xfe, 0x08, 0xfc, 0x11, 0xf8, 0x23, 0xf0, 0x47, 0xe0, 0x8f, 0x1a, 0xcc, 0x1f, + 0x35, 0x9a, 0x1a, 0xb0, 0xcd, 0x95, 0xcb, 0x6c, 0x59, 0x53, 0xc5, 0x33, 0x03, 0x9b, 0xa9, 0x41, + 0x0c, 0x80, 0x18, 0x00, 0x31, 0x00, 0x62, 0x00, 0xc4, 0x00, 0xf2, 0xf4, 0x9b, 0xe7, 0x85, 0x20, + 0x4f, 0x9f, 0xff, 0xbc, 0xc8, 0xd3, 0xdf, 0xdb, 0xad, 0x84, 0x7a, 0x94, 0x70, 0xa9, 0xc4, 0xb9, + 0x54, 0xcd, 0x6a, 0x9c, 0xbe, 0xba, 0xf1, 0x80, 0x1a, 0x53, 0xb9, 0x9a, 0x4d, 0x41, 0x6e, 0xdf, + 0xb1, 0x87, 0x35, 0x17, 0x93, 0x58, 0x9f, 0xf5, 0xad, 0x0f, 0xc2, 0xf7, 0xc9, 0x5e, 0xec, 0xe9, + 0xcf, 0xfc, 0x8f, 0xac, 0x89, 0xdf, 0x97, 0x3d, 0x78, 0xb9, 0xe9, 0xce, 0x9e, 0x78, 0x9f, 0xea, + 0xd1, 0xce, 0xb3, 0x0b, 0x77, 0x74, 0xbb, 0x1f, 0x99, 0x33, 0xb7, 0x35, 0x2b, 0xec, 0x76, 0xdf, + 0x3a, 0x53, 0x55, 0xcd, 0x7b, 0xad, 0xe8, 0xd2, 0xf7, 0x2f, 0x5f, 0x2e, 0x24, 0x55, 0x71, 0x15, + 0x69, 0x61, 0xda, 0xd2, 0xf9, 0xc5, 0xdd, 0x48, 0xda, 0xdc, 0xa8, 0x20, 0x1f, 0xb8, 0x0f, 0x1f, + 0x18, 0x3e, 0x30, 0x7c, 0x60, 0xf8, 0xc0, 0xb9, 0xd5, 0x9a, 0x26, 0x28, 0x81, 0xad, 0x82, 0x9c, + 0xa5, 0x94, 0xa0, 0x0b, 0xcf, 0x5d, 0x7a, 0xce, 0x7a, 0xfc, 0x6e, 0xda, 0x81, 0xd9, 0x30, 0x8d, + 0x6d, 0x83, 0xf1, 0x56, 0x72, 0x98, 0xeb, 0x48, 0xee, 0x2d, 0x93, 0xc2, 0xcb, 0x95, 0xbc, 0xcb, + 0x95, 0xfc, 0xcb, 0x9d, 0x1a, 0x62, 0xa3, 0x61, 0x82, 0x7d, 0x08, 0x61, 0x66, 0xa6, 0x0a, 0x73, + 0x53, 0x99, 0xd9, 0xa9, 0xca, 0xfc, 0x54, 0x6e, 0x86, 0x2a, 0x37, 0x47, 0x55, 0x9a, 0x25, 0xc1, + 0x9e, 0xa9, 0x20, 0x79, 0x15, 0x46, 0xd9, 0xa6, 0xa4, 0x55, 0x68, 0x4e, 0x57, 0x0a, 0xde, 0x8f, + 0x05, 0xce, 0x29, 0x34, 0xc7, 0x4b, 0x8c, 0xb3, 0xfa, 0xca, 0xca, 0x56, 0x92, 0xf3, 0x95, 0x5a, + 0xe3, 0xd3, 0x0a, 0xe6, 0xae, 0x2a, 0xeb, 0x24, 0xba, 0x80, 0x83, 0xc9, 0x05, 0x13, 0xc3, 0xb0, + 0x55, 0xa4, 0x97, 0xeb, 0x21, 0xc5, 0x23, 0x48, 0x71, 0x65, 0x52, 0x8c, 0x1c, 0xb2, 0x32, 0x2a, + 0xb0, 0xb9, 0xb9, 0x64, 0x15, 0xa9, 0x35, 0xe4, 0xca, 0xd5, 0x8b, 0xa5, 0x6a, 0x58, 0x60, 0x67, + 0xc6, 0x2b, 0xb0, 0x63, 0x18, 0xa6, 0xab, 0x84, 0x2c, 0x0f, 0x3f, 0x63, 0xd8, 0x72, 0xe6, 0xb7, + 0x6c, 0xa9, 0x58, 0x8a, 0x7b, 0x1b, 0x44, 0x60, 0x2c, 0x66, 0xcc, 0x7d, 0xea, 0x44, 0x8e, 0x85, + 0x58, 0x76, 0xbd, 0x3c, 0x4e, 0x46, 0x61, 0x12, 0xf1, 0x17, 0x3f, 0xf2, 0xb2, 0x89, 0xb9, 0xbc, + 0x1c, 0x6d, 0x39, 0x6a, 0xc6, 0x62, 0x73, 0xc0, 0x3f, 0x02, 0x53, 0x2c, 0x85, 0xa7, 0x56, 0x72, + 0xe6, 0xfb, 0xb8, 0xf3, 0x7b, 0x22, 0xf8, 0x3c, 0x61, 0xfc, 0x9d, 0x28, 0xbe, 0x4e, 0x38, 0x3f, + 0x27, 0x9c, 0x8f, 0x13, 0xc9, 0xbf, 0x35, 0x2b, 0x13, 0x81, 0x3b, 0x9f, 0x16, 0x49, 0x8b, 0xce, + 0x94, 0x85, 0xcd, 0x16, 0x3c, 0xe5, 0x65, 0xed, 0x82, 0xbd, 0xe7, 0x38, 0xc7, 0x45, 0x68, 0x73, + 0xbb, 0xdd, 0xe3, 0xc0, 0xe2, 0x1e, 0xa7, 0x75, 0x73, 0x53, 0x6c, 0xe3, 0x51, 0x8d, 0x77, 0xa8, + 0xa7, 0x94, 0x44, 0x58, 0x3e, 0xbe, 0x65, 0x3c, 0x84, 0x94, 0xed, 0x10, 0x52, 0xa6, 0x83, 0x6f, + 0x59, 0x0e, 0xea, 0xcd, 0xc3, 0x19, 0x87, 0x57, 0x89, 0xbf, 0x39, 0x28, 0xd0, 0x96, 0xe3, 0xda, + 0xab, 0xb9, 0x6b, 0x84, 0x9a, 0xfa, 0x7c, 0x7d, 0x45, 0x57, 0x5f, 0x63, 0x97, 0x77, 0x75, 0x6e, + 0xdd, 0x8d, 0xae, 0xce, 0x82, 0x8b, 0xba, 0xfa, 0x6e, 0xdb, 0xd6, 0x3f, 0xfc, 0xcb, 0x39, 0xaa, + 0xa7, 0x4a, 0xa2, 0x19, 0x89, 0x68, 0x5f, 0xf2, 0xda, 0x8f, 0xc2, 0xf7, 0x21, 0xcd, 0x6a, 0x97, + 0x5f, 0x9b, 0x72, 0x23, 0x94, 0x5c, 0xd5, 0xb5, 0x69, 0x2a, 0x0d, 0xfe, 0x69, 0x6d, 0x0f, 0x17, + 0x5b, 0xc3, 0xc5, 0xb6, 0xd0, 0xda, 0x92, 0xb2, 0xab, 0x49, 0x9b, 0x8c, 0x4b, 0x23, 0xdc, 0xd5, + 0x25, 0xd7, 0x12, 0x99, 0x97, 0x17, 0xd2, 0x65, 0xcf, 0x2f, 0x24, 0x6f, 0x2e, 0x69, 0xa1, 0x2c, + 0x35, 0xfd, 0x5e, 0x0a, 0xf4, 0xd5, 0xca, 0xf6, 0xb5, 0xa3, 0xb4, 0x30, 0xed, 0xa9, 0x41, 0x9e, + 0x3d, 0x4b, 0x9c, 0x25, 0x4b, 0x4e, 0x63, 0xf0, 0xa0, 0x2d, 0xb8, 0xd1, 0x14, 0xbc, 0x68, 0x09, + 0xee, 0x34, 0x04, 0x77, 0xda, 0x81, 0x27, 0xcd, 0x50, 0x2f, 0x3c, 0x43, 0x9d, 0x35, 0xda, 0xf2, + 0xc1, 0x05, 0xf9, 0x8e, 0x8a, 0xe8, 0x53, 0x6f, 0x74, 0xe2, 0xb5, 0xde, 0x52, 0x70, 0x9f, 0x8c, + 0xb9, 0x6e, 0x3a, 0x9a, 0x71, 0xe3, 0x29, 0x34, 0x57, 0xd1, 0x0c, 0x66, 0xfb, 0xc7, 0x01, 0xfc, + 0x2c, 0x4f, 0x1f, 0xb8, 0x3b, 0xd2, 0xad, 0x62, 0xa8, 0x3a, 0x53, 0xa5, 0xeb, 0x7b, 0xc9, 0xbd, + 0xd5, 0x9c, 0xa9, 0x71, 0x7e, 0xb1, 0x49, 0xfc, 0xa4, 0xbe, 0x3e, 0x3e, 0x07, 0x03, 0xb8, 0x31, + 0xb8, 0x3c, 0x99, 0x5b, 0xee, 0x8c, 0x2d, 0x6f, 0xa6, 0x56, 0x18, 0x43, 0x2b, 0x8c, 0x99, 0x15, + 0xc1, 0xc8, 0x3e, 0xed, 0xb7, 0x6b, 0x5a, 0xb1, 0x13, 0x35, 0x2b, 0x0b, 0xbb, 0x69, 0x5d, 0x62, + 0x91, 0xae, 0x30, 0x81, 0xf0, 0xe5, 0xa7, 0x5c, 0xca, 0xc9, 0x47, 0xf1, 0xb5, 0x2e, 0xf6, 0xcd, + 0x82, 0x40, 0x83, 0x6a, 0x57, 0x88, 0xd8, 0x0d, 0xc5, 0x16, 0x24, 0xff, 0xe3, 0x2c, 0xf0, 0x28, + 0x5b, 0xf3, 0xb5, 0x95, 0x2e, 0xf6, 0x08, 0x23, 0x83, 0x19, 0x8e, 0x53, 0x70, 0x31, 0xcb, 0x41, + 0x90, 0xd2, 0x50, 0x83, 0x02, 0x52, 0x90, 0x41, 0x07, 0x2a, 0x88, 0x40, 0x0e, 0x05, 0xc8, 0x4d, + 0x3e, 0xa5, 0x69, 0x17, 0xab, 0x7c, 0xca, 0x7a, 0x35, 0x2d, 0x75, 0x15, 0x1c, 0x12, 0x90, 0x55, + 0xe6, 0xb2, 0xb9, 0x2b, 0xbb, 0xb6, 0x62, 0x38, 0xcb, 0xa0, 0x16, 0x41, 0xc9, 0x65, 0x5f, 0xef, + 0xc3, 0xe7, 0xa7, 0x28, 0xb9, 0x6a, 0xf1, 0x16, 0xdb, 0x65, 0xc7, 0xa2, 0xc9, 0x22, 0x21, 0xf3, + 0x35, 0x28, 0x7d, 0x0b, 0x72, 0x5f, 0x82, 0xda, 0x77, 0xe0, 0xe6, 0x2b, 0x70, 0xf3, 0x0d, 0x78, + 0xf8, 0x02, 0xd5, 0x06, 0x08, 0xc8, 0xb2, 0x2a, 0x12, 0x85, 0xa3, 0xde, 0x0d, 0x28, 0xb6, 0x5b, + 0x28, 0x9b, 0x04, 0x39, 0x12, 0xc4, 0x95, 0x9f, 0x08, 0xd9, 0x24, 0x1e, 0x95, 0x9b, 0x38, 0xa5, + 0xc6, 0x45, 0xe5, 0x72, 0xa8, 0xc7, 0xe5, 0x58, 0x0c, 0x87, 0x30, 0x5a, 0xcf, 0xa5, 0x32, 0x12, + 0xef, 0xa5, 0x1a, 0x0e, 0xc6, 0xc3, 0xf1, 0xe8, 0xfd, 0x60, 0x7c, 0xd2, 0xa0, 0x35, 0xab, 0x09, + 0xe9, 0x30, 0xab, 0xca, 0x8d, 0x2d, 0x01, 0xdd, 0x99, 0xa1, 0x5c, 0xeb, 0x4c, 0xa5, 0x03, 0x71, + 0xeb, 0x01, 0xe9, 0x20, 0x9b, 0x67, 0x8d, 0x81, 0xda, 0x80, 0xda, 0x80, 0xda, 0xea, 0x84, 0xda, + 0xae, 0x4d, 0x53, 0x67, 0x8a, 0x41, 0x08, 0xdb, 0xfa, 0xfd, 0x06, 0xea, 0xcf, 0xa5, 0xbb, 0xa2, + 0xd3, 0x9d, 0xde, 0x60, 0x50, 0x74, 0x50, 0x74, 0x50, 0x74, 0x70, 0x4f, 0xe1, 0x9e, 0x0a, 0xf3, + 0x79, 0xfa, 0x83, 0x53, 0x78, 0xa8, 0xe4, 0xab, 0xf5, 0x0e, 0x64, 0xc2, 0xc1, 0x3b, 0xa6, 0x88, + 0xaf, 0x26, 0xe2, 0xab, 0x61, 0xc8, 0xb1, 0xc6, 0xc1, 0x55, 0x83, 0x69, 0x37, 0xb7, 0xd7, 0xa6, + 0xed, 0x94, 0x8f, 0xaf, 0x6e, 0x86, 0x42, 0x88, 0x15, 0x21, 0xd6, 0x4a, 0x20, 0x69, 0xc3, 0x42, + 0xac, 0x6b, 0x89, 0xa1, 0x73, 0x28, 0xa3, 0x11, 0x69, 0xbc, 0xca, 0x3e, 0xbc, 0x4a, 0x78, 0x95, + 0x87, 0xe8, 0x55, 0x52, 0xe5, 0x84, 0x97, 0x4d, 0x5e, 0x7a, 0x76, 0xf3, 0x96, 0x4a, 0x66, 0xe2, + 0x24, 0xee, 0xe4, 0x62, 0xcf, 0x43, 0xfc, 0xb9, 0xa9, 0x01, 0x5e, 0xea, 0x80, 0xbb, 0x5a, 0xe0, + 0xae, 0x1e, 0x78, 0xaa, 0x09, 0x62, 0xcf, 0xab, 0xae, 0x47, 0x4a, 0x34, 0x8e, 0x07, 0x4a, 0xc8, + 0x4f, 0x11, 0xf0, 0xa2, 0x6f, 0x70, 0x5c, 0x43, 0xa0, 0xba, 0x11, 0xa6, 0x76, 0x84, 0xa9, 0x1f, + 0x11, 0x6a, 0x88, 0x56, 0x1d, 0x71, 0x60, 0x00, 0x25, 0xae, 0x85, 0x72, 0x76, 0x16, 0x30, 0x95, + 0x0d, 0x53, 0xfe, 0xaf, 0x69, 0xf0, 0x68, 0x6a, 0xc3, 0xb3, 0x50, 0x29, 0xf7, 0x42, 0xa4, 0x28, + 0x34, 0xfa, 0xf2, 0xc3, 0xa1, 0x2f, 0x24, 0xca, 0xe9, 0x52, 0x37, 0xcf, 0x7f, 0x32, 0x9d, 0x76, + 0x67, 0x6f, 0xe8, 0xd5, 0xc9, 0xac, 0xae, 0xa7, 0xbf, 0x08, 0x61, 0x73, 0xd0, 0xc7, 0x44, 0xb9, + 0x67, 0x76, 0x54, 0xf9, 0x98, 0x1b, 0xe4, 0xd9, 0x31, 0x17, 0x20, 0x10, 0x20, 0x10, 0x20, 0x10, + 0x20, 0x10, 0xd9, 0x6e, 0xb7, 0x6e, 0xef, 0x1d, 0x8e, 0x35, 0xdc, 0x1b, 0x0e, 0x7d, 0xe2, 0x98, + 0x65, 0xf0, 0xd4, 0x9e, 0x24, 0xdf, 0x77, 0xde, 0xf0, 0x28, 0xfb, 0x3d, 0x43, 0x79, 0xaf, 0x2c, + 0xaa, 0xa1, 0x71, 0xe5, 0xbd, 0xa2, 0xc0, 0x63, 0xf4, 0xaa, 0x54, 0xe0, 0x95, 0x7e, 0x79, 0x08, + 0x96, 0x86, 0x92, 0x01, 0xa2, 0x67, 0x7e, 0x88, 0xe1, 0x0e, 0x08, 0x64, 0x10, 0xc8, 0xa2, 0x61, + 0x4b, 0xbd, 0x94, 0x30, 0x39, 0x3c, 0xe1, 0x58, 0xba, 0x98, 0x47, 0xa9, 0xe2, 0x78, 0x69, 0xe2, + 0xa0, 0xa4, 0x5b, 0x58, 0xa0, 0x78, 0x5d, 0xfa, 0x6d, 0x9f, 0x54, 0x7b, 0xd0, 0x84, 0x80, 0x5c, + 0xbb, 0x53, 0x76, 0x92, 0xe6, 0x16, 0x21, 0x1c, 0x40, 0xc1, 0x43, 0xc1, 0x1f, 0xa0, 0x82, 0x47, + 0x84, 0x10, 0xf4, 0x18, 0xe8, 0x31, 0xd0, 0x63, 0x07, 0x4b, 0x8f, 0x21, 0x42, 0x98, 0x85, 0x26, + 0x43, 0x84, 0xf0, 0xa5, 0x87, 0x83, 0x08, 0x61, 0xfd, 0xb9, 0x4d, 0x42, 0xd8, 0xac, 0x39, 0x61, + 0xe7, 0x14, 0x8e, 0x48, 0x27, 0x9a, 0x02, 0x80, 0x07, 0x80, 0x07, 0x80, 0x07, 0x80, 0x87, 0x6c, + 0xb7, 0xb3, 0xa5, 0xe5, 0xde, 0xf3, 0x44, 0x38, 0xef, 0x90, 0x24, 0x42, 0xba, 0x60, 0x48, 0x12, + 0x81, 0x51, 0x80, 0x51, 0x80, 0x51, 0x40, 0x92, 0x48, 0x55, 0xde, 0x2f, 0x92, 0x44, 0xf8, 0x58, + 0xd1, 0x75, 0x9a, 0x84, 0x4c, 0x1b, 0x79, 0x4a, 0xed, 0xee, 0xad, 0x79, 0x60, 0x3d, 0x61, 0x3d, + 0x61, 0x3d, 0x61, 0x3d, 0xe9, 0x5c, 0x2a, 0x63, 0xb5, 0x64, 0x41, 0xb3, 0x35, 0x9e, 0xc6, 0x73, + 0xc8, 0x61, 0xec, 0x4f, 0xc6, 0x6a, 0xe9, 0x3d, 0x9c, 0xa7, 0x03, 0x30, 0x37, 0xa6, 0xad, 0xdd, + 0xf0, 0xa8, 0x12, 0x15, 0x29, 0xbd, 0x60, 0x7c, 0x98, 0x17, 0x98, 0x17, 0x98, 0x17, 0x98, 0x17, + 0x7a, 0xf8, 0xca, 0x45, 0xc1, 0xc0, 0xc4, 0x20, 0xed, 0x9d, 0x3a, 0xed, 0x3d, 0xf0, 0xb3, 0xd0, + 0xd7, 0x1a, 0x7d, 0xad, 0xf7, 0xad, 0xaf, 0x75, 0x63, 0x1a, 0xec, 0xa5, 0xa5, 0x52, 0x6c, 0x87, + 0xbd, 0x3f, 0xd7, 0xb3, 0xa2, 0x04, 0x64, 0xbd, 0xf6, 0x43, 0x9d, 0xab, 0x40, 0x96, 0xe3, 0x01, + 0x49, 0x32, 0xce, 0xc9, 0xaa, 0x3f, 0x0e, 0x50, 0xfd, 0x91, 0x9f, 0xdf, 0x83, 0xea, 0x8f, 0xd1, + 0x85, 0xa3, 0xc1, 0x1e, 0x1a, 0xec, 0x09, 0x27, 0x4e, 0x50, 0x6b, 0x12, 0x1d, 0x0c, 0x5e, 0xdf, + 0x6d, 0xe8, 0x60, 0x90, 0xd3, 0x25, 0x43, 0x83, 0x3d, 0xb4, 0x2f, 0x40, 0x83, 0x3d, 0x72, 0x6a, + 0x0e, 0x0d, 0xf6, 0x28, 0xb4, 0x39, 0x1a, 0xec, 0x01, 0xb5, 0x01, 0xb5, 0xed, 0x3f, 0x6a, 0x43, + 0x83, 0x3d, 0x09, 0x0d, 0xf6, 0xa0, 0xe8, 0xa0, 0xe8, 0xe0, 0x9e, 0xc2, 0x3d, 0x6d, 0xb6, 0x7b, + 0x8a, 0x06, 0x7b, 0x3c, 0x56, 0x0b, 0x0d, 0xf6, 0xe0, 0x98, 0x22, 0xba, 0x9a, 0x88, 0xae, 0x96, + 0x48, 0x78, 0x11, 0x13, 0x59, 0x5d, 0x19, 0xc6, 0x6a, 0x79, 0xcd, 0xec, 0x12, 0x84, 0xc0, 0xc6, + 0x6e, 0x6e, 0xc6, 0x42, 0x87, 0x3d, 0x1f, 0x5c, 0x2d, 0x10, 0x63, 0x2d, 0x82, 0x49, 0x17, 0x07, + 0x13, 0x63, 0x25, 0x6a, 0xbf, 0x45, 0xdb, 0x76, 0xeb, 0x60, 0xba, 0xeb, 0x2d, 0xe0, 0x52, 0xf2, + 0x70, 0x29, 0x17, 0xe8, 0xae, 0x17, 0x0e, 0x44, 0xc5, 0xb5, 0xa7, 0x76, 0x2f, 0x0d, 0xe7, 0xbe, + 0xb9, 0xe1, 0x0d, 0xf7, 0xbe, 0x50, 0x74, 0x87, 0xa1, 0xec, 0x72, 0x7d, 0x14, 0x0c, 0x2f, 0x45, + 0xc3, 0x5d, 0xe1, 0x70, 0x57, 0x3c, 0x3c, 0x15, 0x10, 0xb1, 0x43, 0x57, 0xfb, 0xb2, 0xcb, 0x74, + 0xe4, 0x7e, 0x0a, 0x45, 0xf4, 0x91, 0xef, 0xdf, 0xa8, 0x0c, 0xf1, 0x8d, 0x1b, 0x47, 0xd2, 0xa6, + 0xa0, 0x9a, 0x28, 0x4d, 0x74, 0x4f, 0xb2, 0xcd, 0x16, 0x74, 0xf8, 0x3a, 0x39, 0x2c, 0x60, 0x36, + 0x60, 0x36, 0x60, 0x76, 0xf5, 0x30, 0x1b, 0x4d, 0xac, 0x01, 0x86, 0x01, 0x86, 0x0f, 0x0d, 0x0c, + 0xd3, 0x97, 0xa8, 0x5f, 0x1b, 0x77, 0x8e, 0xf5, 0x5b, 0xa3, 0x29, 0x50, 0x0d, 0x42, 0x48, 0x35, + 0x88, 0x05, 0xaa, 0x41, 0x54, 0xa8, 0x8c, 0x44, 0x28, 0x25, 0x5a, 0xe5, 0x44, 0xac, 0xa4, 0xf8, + 0x79, 0xee, 0xa9, 0xdd, 0x4e, 0xdf, 0x38, 0x29, 0x85, 0x5c, 0xde, 0xf3, 0xa9, 0xd2, 0x17, 0x7a, + 0xb0, 0xde, 0xb6, 0x98, 0xc4, 0x3c, 0xd3, 0xad, 0x0f, 0xc2, 0xf7, 0xfe, 0x19, 0xe3, 0x03, 0x28, + 0x4a, 0x14, 0xf7, 0xcb, 0xf9, 0xd9, 0xa3, 0xc4, 0x2c, 0x30, 0x49, 0x30, 0x49, 0x30, 0x49, 0x30, + 0x49, 0x30, 0x49, 0x19, 0x4d, 0xd2, 0xe5, 0xc6, 0x24, 0xfd, 0x6d, 0xbe, 0xb2, 0x6d, 0x66, 0xb8, + 0xed, 0xce, 0x71, 0xb7, 0xbb, 0x21, 0x5b, 0x67, 0xe1, 0x57, 0x92, 0x9c, 0x6b, 0xfa, 0xb3, 0x68, + 0x64, 0x95, 0xfd, 0x6c, 0xa1, 0x1e, 0x52, 0x16, 0xf1, 0x6d, 0x5c, 0x3d, 0xa4, 0x18, 0xaf, 0x9e, + 0xa0, 0x91, 0xf7, 0xb0, 0x19, 0x30, 0x3a, 0x46, 0x82, 0x8e, 0x03, 0x1d, 0x07, 0x3a, 0x0e, 0x74, + 0x1c, 0x7c, 0x1f, 0xf8, 0x3e, 0xf0, 0x7d, 0xe0, 0xfb, 0x80, 0x8e, 0x03, 0x1d, 0x07, 0x3a, 0x0e, + 0x26, 0x09, 0x26, 0x09, 0x26, 0x09, 0x26, 0x09, 0x74, 0x1c, 0xe8, 0xb8, 0xda, 0xd2, 0x71, 0x28, + 0x52, 0xce, 0x6b, 0x55, 0x2b, 0x58, 0x4d, 0xb1, 0xc5, 0xad, 0xff, 0x19, 0x5d, 0xc5, 0x55, 0xf4, + 0x67, 0x5f, 0xd8, 0xa2, 0x89, 0x09, 0xd4, 0x34, 0x14, 0x2e, 0x29, 0x75, 0x4b, 0x9e, 0x30, 0x3d, + 0x40, 0xc2, 0x74, 0xf5, 0x90, 0x13, 0x09, 0xd3, 0x99, 0x6f, 0x08, 0xe7, 0x12, 0x71, 0x2e, 0xb1, + 0x76, 0x3e, 0x2f, 0x62, 0x3f, 0x55, 0xf8, 0xb4, 0x38, 0x97, 0x58, 0x1a, 0x45, 0xe0, 0x5c, 0x62, + 0x63, 0x21, 0x3e, 0x81, 0x8b, 0x86, 0x1a, 0x47, 0xf4, 0xeb, 0xd2, 0x2a, 0xe5, 0x6f, 0xe4, 0x77, + 0xb2, 0x84, 0x15, 0x56, 0x3a, 0xe2, 0xb8, 0xd2, 0x65, 0x57, 0x98, 0xdf, 0xca, 0xb6, 0x0a, 0x75, + 0xea, 0xc9, 0xb8, 0x8c, 0xf9, 0xd6, 0x2e, 0xfb, 0x0a, 0xe4, 0x78, 0xfa, 0x05, 0x7d, 0xdc, 0x52, + 0x3e, 0x6d, 0x41, 0x1f, 0xb6, 0xb0, 0xcf, 0x5a, 0x06, 0x4a, 0x96, 0x86, 0x8c, 0x65, 0xa1, 0x21, + 0x19, 0x04, 0x24, 0x83, 0x7a, 0x14, 0x90, 0x8e, 0xaf, 0x36, 0x29, 0xea, 0x23, 0xb6, 0x14, 0x75, + 0xa9, 0x19, 0x7e, 0x27, 0xfc, 0x95, 0x53, 0xbe, 0x16, 0x5c, 0x62, 0xb4, 0x72, 0xd5, 0xe0, 0x7a, + 0xa8, 0x06, 0x87, 0x6a, 0x70, 0x4d, 0x80, 0x6a, 0xa5, 0xbd, 0x20, 0xe2, 0xc6, 0xf1, 0x14, 0xdd, + 0x7b, 0x4b, 0x76, 0xe9, 0x15, 0x53, 0xc4, 0x72, 0x6e, 0xae, 0x3c, 0x6c, 0x41, 0xa0, 0xb6, 0xa2, + 0x91, 0x50, 0xc0, 0x12, 0x2a, 0xeb, 0x00, 0x54, 0x56, 0xe9, 0x02, 0x96, 0x9a, 0x21, 0x5f, 0xdb, + 0xa6, 0xa2, 0xce, 0x15, 0xc7, 0x95, 0xad, 0x1f, 0x94, 0xcd, 0x01, 0xd3, 0x43, 0xa3, 0x53, 0x82, + 0x30, 0x76, 0x17, 0xe1, 0xa3, 0xfd, 0x0b, 0x1f, 0xd1, 0x77, 0x4a, 0x08, 0xcd, 0xe5, 0x68, 0x48, + 0xd8, 0x2c, 0xe1, 0x14, 0xcd, 0x12, 0x2a, 0xd1, 0x6b, 0xa9, 0x61, 0xd1, 0xcb, 0xaf, 0x79, 0x7d, + 0x2d, 0x4e, 0x87, 0xc3, 0xd1, 0xfb, 0xe1, 0xb0, 0xf7, 0xfe, 0xdd, 0xfb, 0xde, 0xf8, 0xe4, 0xa4, + 0x3f, 0xea, 0xa3, 0xab, 0x5f, 0xee, 0x9f, 0x59, 0x23, 0xeb, 0x1d, 0xca, 0xaa, 0xe6, 0xcc, 0x15, + 0x5b, 0xa5, 0x45, 0x60, 0xd1, 0xa0, 0xc0, 0x5e, 0xc0, 0x5e, 0xc0, 0x5e, 0xc0, 0x5e, 0xc0, 0x5e, + 0xc0, 0x5e, 0xc0, 0x5e, 0xc0, 0x5e, 0xc0, 0x5e, 0x71, 0xec, 0xc5, 0x6c, 0xdb, 0xb4, 0x69, 0x91, + 0x57, 0x38, 0x24, 0x70, 0x17, 0x70, 0x17, 0x70, 0x17, 0x70, 0x17, 0x70, 0x17, 0x70, 0x17, 0x70, + 0x17, 0x70, 0x17, 0x70, 0x57, 0x1c, 0x77, 0x2d, 0x57, 0xba, 0xab, 0xf1, 0x89, 0x3d, 0x6e, 0x0d, + 0x0d, 0x1c, 0x06, 0x1c, 0x06, 0x1c, 0x06, 0x1c, 0x06, 0x1c, 0x06, 0x1c, 0x06, 0x1c, 0x06, 0x1c, + 0x06, 0x1c, 0x16, 0xc7, 0x61, 0xe6, 0xdc, 0x65, 0xc4, 0xf8, 0x2b, 0x1c, 0x12, 0xb8, 0x0b, 0xb8, + 0x0b, 0xb8, 0x0b, 0xb8, 0x0b, 0xb8, 0x0b, 0xb8, 0x0b, 0xb8, 0x0b, 0xb8, 0x0b, 0xb8, 0x2b, 0x8e, + 0xbb, 0x56, 0x06, 0x27, 0xf6, 0x2b, 0x31, 0x30, 0x30, 0x18, 0x30, 0x18, 0x30, 0x18, 0x30, 0x18, + 0x30, 0x18, 0x30, 0x18, 0x30, 0x18, 0x30, 0x18, 0x30, 0x58, 0x12, 0x83, 0xfd, 0x30, 0xcc, 0xff, + 0x18, 0xb2, 0x65, 0x9b, 0xae, 0x49, 0x8d, 0xc2, 0x12, 0x43, 0x03, 0x87, 0x01, 0x87, 0x01, 0x87, + 0xd5, 0x0f, 0x87, 0xbd, 0x1b, 0x10, 0xe2, 0xb0, 0xf7, 0xc0, 0x61, 0xc0, 0x61, 0xc0, 0x61, 0x85, + 0x96, 0x6a, 0x38, 0x18, 0x0f, 0xc7, 0xa3, 0xf7, 0x83, 0x31, 0xd0, 0xd7, 0x41, 0xa0, 0x2f, 0x5d, + 0x71, 0x5c, 0x79, 0xae, 0x33, 0xc5, 0xa6, 0x83, 0x5d, 0xb1, 0x31, 0x81, 0xb7, 0x80, 0xb7, 0x80, + 0xb7, 0x6a, 0x84, 0xb7, 0x54, 0xc5, 0x65, 0xb2, 0x62, 0xa8, 0xb2, 0xab, 0x2d, 0x19, 0x21, 0xe6, + 0xea, 0x53, 0x90, 0x5f, 0x17, 0x8a, 0xeb, 0x32, 0xdb, 0x20, 0x83, 0x5d, 0xad, 0xe9, 0x54, 0x7d, + 0x18, 0x3e, 0xc9, 0xde, 0x7f, 0x83, 0xf5, 0x7f, 0xdf, 0x82, 0xff, 0x26, 0x89, 0xff, 0xda, 0xd3, + 0x69, 0x77, 0x3a, 0x55, 0x7f, 0xed, 0x7c, 0x68, 0xff, 0xdf, 0xe3, 0xe5, 0x74, 0xfa, 0xeb, 0x74, + 0x2a, 0xcf, 0x12, 0x7f, 0xd1, 0x69, 0x1d, 0xa4, 0x7d, 0x30, 0x57, 0x2e, 0xb7, 0xf2, 0x44, 0x3b, + 0xc6, 0x86, 0xbd, 0x80, 0xbd, 0x80, 0xbd, 0xa8, 0x9f, 0x7f, 0x8e, 0x38, 0x09, 0xfc, 0x73, 0xf8, + 0xe7, 0x35, 0x58, 0x2a, 0xc4, 0x49, 0x0e, 0xd5, 0x53, 0xf7, 0xd0, 0x12, 0x7d, 0x81, 0xa2, 0xc4, + 0xa8, 0x40, 0x5f, 0x40, 0x5f, 0x40, 0x5f, 0x40, 0x5f, 0x40, 0x5f, 0x40, 0x5f, 0x40, 0x5f, 0x40, + 0x5f, 0x40, 0x5f, 0x09, 0xf4, 0x45, 0x5d, 0xa2, 0x28, 0x36, 0x26, 0x90, 0x17, 0x90, 0x17, 0x90, + 0x17, 0x90, 0x17, 0x90, 0x17, 0x90, 0x17, 0x90, 0x17, 0x90, 0x17, 0x90, 0x57, 0x02, 0x79, 0xf1, + 0x2a, 0x52, 0xb4, 0x63, 0x6c, 0x20, 0x31, 0x20, 0x31, 0x20, 0x31, 0x20, 0x31, 0x20, 0x31, 0x20, + 0x31, 0x20, 0x31, 0x20, 0x31, 0x20, 0xb1, 0x04, 0x12, 0xa3, 0x2e, 0x53, 0x14, 0x1b, 0x13, 0xc8, + 0x0b, 0xc8, 0x0b, 0xc8, 0x0b, 0xc8, 0x0b, 0xc8, 0x0b, 0xc8, 0x0b, 0xc8, 0x0b, 0xc8, 0x0b, 0xc8, + 0x2b, 0x81, 0xbc, 0xf8, 0x14, 0x2a, 0x4a, 0x8d, 0x0c, 0x14, 0x06, 0x14, 0x06, 0x14, 0x06, 0x14, + 0x06, 0x14, 0x06, 0x14, 0x06, 0x14, 0x06, 0x14, 0xb6, 0x6f, 0x28, 0xec, 0x48, 0xe0, 0x9e, 0x6f, + 0x9d, 0x19, 0x86, 0xe9, 0x2a, 0xde, 0x52, 0x96, 0xda, 0xe6, 0x2d, 0x67, 0x7e, 0xcb, 0x96, 0x8a, + 0xa5, 0xb8, 0xb7, 0x9e, 0x45, 0x38, 0x36, 0x2d, 0x66, 0xcc, 0x7d, 0x84, 0x24, 0x6b, 0x9e, 0x6d, + 0x58, 0x28, 0x73, 0xe6, 0x1c, 0xef, 0x7a, 0x79, 0xec, 0xac, 0xae, 0x63, 0x9f, 0xc7, 0xdf, 0x1d, + 0x3b, 0xae, 0xe2, 0xb2, 0xe3, 0xd0, 0xbc, 0x94, 0x01, 0x7e, 0x2d, 0xc7, 0xb5, 0x57, 0x73, 0xd7, + 0x08, 0x0d, 0xd6, 0xf9, 0x7a, 0x86, 0xab, 0xaf, 0xb1, 0xe9, 0xae, 0xfe, 0xbe, 0x9e, 0xe8, 0x48, + 0xcc, 0xba, 0x15, 0x58, 0xb3, 0x96, 0xca, 0x9c, 0xb9, 0xad, 0x59, 0xa5, 0x16, 0x6c, 0x73, 0xd4, + 0x3a, 0x36, 0x58, 0xc1, 0xfd, 0x53, 0x4e, 0x95, 0x95, 0x46, 0xd1, 0x14, 0xe8, 0x99, 0x0c, 0x35, + 0x53, 0xa1, 0x65, 0x72, 0x94, 0x4c, 0x8e, 0x8e, 0x29, 0x51, 0xb1, 0x58, 0x7d, 0x57, 0x1a, 0xfd, + 0x46, 0xbb, 0xc5, 0x71, 0x6d, 0xcd, 0xb8, 0x29, 0xb3, 0x5d, 0xa2, 0xc2, 0x04, 0x35, 0xd6, 0x37, + 0xcc, 0x50, 0xae, 0x75, 0xa6, 0x96, 0xd7, 0x35, 0xeb, 0x81, 0x0a, 0xae, 0xdb, 0x47, 0xb6, 0x50, + 0x56, 0xba, 0xbf, 0xdf, 0xbc, 0xed, 0x0b, 0x75, 0x05, 0x75, 0x05, 0x75, 0x95, 0x67, 0xb7, 0x5c, + 0x9b, 0xa6, 0xce, 0x14, 0x83, 0x42, 0x5f, 0xf5, 0x6b, 0xac, 0xaf, 0xb4, 0x85, 0x66, 0xa8, 0xec, + 0x67, 0x79, 0x7d, 0xb5, 0x1e, 0x08, 0x8a, 0x06, 0x8a, 0x06, 0x8a, 0x26, 0xc7, 0x6e, 0x59, 0x69, + 0x86, 0x5b, 0xaa, 0x58, 0x26, 0x41, 0x91, 0x4c, 0x22, 0xea, 0x8f, 0x80, 0x23, 0xa5, 0xa4, 0xfa, + 0x88, 0x79, 0x23, 0x6a, 0x6a, 0x8f, 0x07, 0x29, 0x44, 0x40, 0xe5, 0x91, 0x52, 0x78, 0xbc, 0x96, + 0x80, 0xba, 0xa8, 0x25, 0x97, 0xb5, 0xa8, 0x88, 0x10, 0x9b, 0xd5, 0x19, 0x6e, 0x10, 0x81, 0x8d, + 0x32, 0x50, 0x23, 0xe6, 0x1a, 0xf5, 0x00, 0x57, 0x00, 0x57, 0x00, 0x57, 0x00, 0x57, 0x00, 0x57, + 0x00, 0x57, 0x00, 0x57, 0x00, 0x57, 0xb6, 0x1e, 0x73, 0x50, 0xf7, 0xfa, 0x36, 0xd4, 0x36, 0x25, + 0x41, 0x4b, 0x7c, 0x30, 0xc0, 0x0e, 0xc0, 0x0e, 0xc0, 0x8e, 0x1c, 0xbb, 0xc5, 0xd5, 0x96, 0xcc, + 0xd5, 0xe6, 0x3f, 0x1c, 0x20, 0x0f, 0x20, 0x0f, 0x20, 0x0f, 0x20, 0x8f, 0x3d, 0x47, 0x1e, 0x61, + 0xea, 0x4d, 0x49, 0xc8, 0xe1, 0x8f, 0x02, 0xac, 0x01, 0xac, 0x01, 0xac, 0x91, 0x63, 0xb7, 0x1c, + 0x46, 0xa6, 0x8a, 0x69, 0x31, 0x5b, 0x76, 0x5c, 0xc5, 0x5d, 0x39, 0xe5, 0x15, 0x4d, 0x7c, 0x30, + 0xe8, 0x1b, 0xe8, 0x1b, 0xe8, 0x9b, 0x1c, 0xbb, 0x85, 0x19, 0xab, 0x25, 0xb3, 0x95, 0x12, 0x69, + 0xa5, 0x09, 0xa5, 0x33, 0x2c, 0x31, 0xc6, 0x27, 0x63, 0xb5, 0xf4, 0x6e, 0xea, 0x49, 0x94, 0xe2, + 0x3a, 0xe2, 0xb8, 0x54, 0x65, 0x93, 0xb5, 0x39, 0x26, 0x69, 0xe7, 0xdb, 0xe4, 0xd9, 0x9f, 0x52, + 0x8e, 0x27, 0xd4, 0xba, 0xd3, 0x95, 0xfc, 0xcf, 0x25, 0xda, 0xb4, 0xfe, 0xb7, 0x73, 0xae, 0xc7, + 0x7a, 0x87, 0xe6, 0xfc, 0x5a, 0x51, 0xd5, 0x5e, 0x46, 0xa5, 0xc7, 0x55, 0x79, 0x81, 0x5b, 0xa5, + 0x50, 0xe2, 0x64, 0xca, 0x9b, 0x4c, 0x69, 0x6f, 0x2b, 0x6b, 0xff, 0xc1, 0xd4, 0x4c, 0xe6, 0x3f, + 0x6a, 0xc5, 0xfa, 0x1e, 0xb6, 0xe6, 0xeb, 0x5d, 0x56, 0x12, 0x0a, 0x85, 0xe3, 0x94, 0x43, 0x41, + 0xfd, 0x3d, 0x41, 0x41, 0x05, 0x45, 0x07, 0x38, 0xa8, 0x98, 0x68, 0x55, 0x83, 0x84, 0x8a, 0x8a, + 0x5c, 0xc2, 0x12, 0xc9, 0x9a, 0x4a, 0x77, 0x06, 0x7e, 0x3d, 0x20, 0x8e, 0xbe, 0x0b, 0x10, 0x52, + 0x6a, 0x61, 0xe5, 0x26, 0xb4, 0xdc, 0x84, 0x97, 0x8f, 0x10, 0x13, 0xd1, 0xa3, 0xb5, 0x3b, 0xfe, + 0xbe, 0x32, 0xca, 0x39, 0x3a, 0x29, 0x5b, 0x39, 0x26, 0x18, 0x2b, 0xbc, 0xcd, 0xda, 0x1d, 0x7d, + 0xa7, 0xd5, 0x68, 0xbb, 0x1e, 0xdf, 0x88, 0x70, 0x48, 0xda, 0x0a, 0x02, 0xf4, 0x8f, 0x33, 0xba, + 0x50, 0x1e, 0x15, 0x05, 0x88, 0xcd, 0xc6, 0xb3, 0xc3, 0x47, 0xc7, 0xd6, 0x39, 0x8d, 0xcf, 0xf1, + 0xac, 0x3a, 0x91, 0x52, 0xda, 0xbd, 0xa4, 0x1c, 0x2a, 0x0f, 0x88, 0x5e, 0xd2, 0x61, 0x6f, 0x3c, + 0x6c, 0xf0, 0xaa, 0x1e, 0xd5, 0x73, 0xb4, 0xd9, 0x51, 0x8d, 0xf6, 0x2c, 0x07, 0xdb, 0xf0, 0x6f, + 0xcd, 0xf8, 0x37, 0x1f, 0xdb, 0x40, 0xd1, 0x03, 0x7c, 0x83, 0x5e, 0x89, 0x7b, 0x81, 0x47, 0x03, + 0xb7, 0x87, 0xbd, 0xf1, 0x65, 0x4f, 0x1e, 0xce, 0x1e, 0x87, 0xbd, 0xcb, 0x9e, 0x7c, 0x3a, 0xbb, + 0xec, 0xc9, 0xe3, 0xd9, 0xe3, 0x65, 0x5f, 0x7e, 0x17, 0xbc, 0x7c, 0x78, 0xf7, 0xe4, 0xbd, 0x1b, + 0x87, 0xef, 0xfa, 0x6f, 0x07, 0xe1, 0xfb, 0xce, 0x74, 0xda, 0x6d, 0x97, 0xf8, 0xfa, 0xe3, 0x74, + 0xfa, 0x86, 0xa0, 0x8d, 0x38, 0xf1, 0x46, 0x45, 0x29, 0x8f, 0x6c, 0x60, 0xbd, 0xce, 0xa5, 0x3c, + 0x3c, 0xbc, 0x77, 0x1c, 0x52, 0x49, 0x35, 0x0e, 0x22, 0x06, 0x64, 0x76, 0x69, 0xce, 0x2c, 0x18, + 0xa6, 0x62, 0xca, 0x6c, 0x00, 0xca, 0x0c, 0x94, 0x19, 0x28, 0x33, 0x50, 0x66, 0xa0, 0xcc, 0x40, + 0x99, 0x81, 0x32, 0x03, 0x65, 0x06, 0xca, 0x0c, 0x94, 0x19, 0x28, 0x33, 0x50, 0x66, 0xa0, 0xcc, + 0x40, 0x99, 0x81, 0x32, 0x03, 0x65, 0x06, 0xca, 0xac, 0xfe, 0x94, 0x59, 0x81, 0xec, 0xca, 0x12, + 0x8c, 0xd9, 0xe1, 0x65, 0xaf, 0x16, 0xcd, 0x85, 0xcc, 0x54, 0x50, 0xf8, 0x7b, 0x6e, 0xe7, 0x2f, + 0x47, 0x66, 0xec, 0x11, 0xe1, 0x1a, 0x79, 0x7e, 0x76, 0xde, 0x3a, 0x34, 0xad, 0xcf, 0x9a, 0xe3, + 0x9e, 0xb9, 0x6e, 0x3e, 0xe2, 0xc7, 0x83, 0xdd, 0x9f, 0x74, 0xe6, 0x79, 0xc8, 0x1e, 0x02, 0x31, + 0x56, 0xba, 0x9e, 0x23, 0xc5, 0xf7, 0x0f, 0xe5, 0x67, 0xf1, 0x2f, 0xff, 0x65, 0xab, 0xcc, 0x66, + 0xea, 0x6f, 0xf7, 0xe1, 0x57, 0x49, 0x1f, 0xe0, 0xd9, 0xea, 0xc6, 0xbb, 0x2c, 0xbf, 0x52, 0x6a, + 0x76, 0xdb, 0x56, 0x30, 0x57, 0xf9, 0xd8, 0x3f, 0x58, 0x30, 0x89, 0xed, 0xe9, 0xad, 0x0f, 0xc2, + 0xf7, 0xc9, 0x7d, 0x9f, 0xfe, 0x2c, 0x6f, 0xbe, 0xf3, 0xc7, 0x44, 0xf1, 0xe9, 0xd6, 0x99, 0xaa, + 0x3a, 0xd2, 0xf7, 0xcf, 0x67, 0x7f, 0x4a, 0x0e, 0x73, 0x5d, 0xcd, 0xb8, 0x71, 0x24, 0xd7, 0x94, + 0x34, 0x43, 0xd5, 0xee, 0x34, 0x75, 0xa5, 0xe8, 0x52, 0x62, 0x7e, 0x24, 0x57, 0xf3, 0x64, 0xce, + 0x90, 0x5c, 0x2d, 0x89, 0x4c, 0xae, 0x2e, 0x74, 0xd6, 0x60, 0x27, 0xa3, 0x53, 0xbc, 0xea, 0x57, + 0x42, 0x16, 0x3f, 0x19, 0x73, 0xdd, 0x74, 0x34, 0xe3, 0x46, 0x9a, 0x9b, 0x86, 0xab, 0x68, 0x06, + 0xb3, 0xa5, 0x85, 0x69, 0x07, 0xe2, 0x19, 0x09, 0xa1, 0xec, 0x58, 0x6c, 0xae, 0x2d, 0xb4, 0xf9, + 0xd4, 0x50, 0x15, 0x57, 0x91, 0x4c, 0xa3, 0x94, 0x8c, 0x96, 0x94, 0xd5, 0xd2, 0x32, 0x4b, 0x21, + 0xbb, 0x84, 0x32, 0x4c, 0x25, 0xcb, 0xe4, 0x32, 0x4d, 0x2e, 0xdb, 0xb4, 0x32, 0x5e, 0x12, 0xfb, + 0xf3, 0xd6, 0x29, 0x3c, 0x0e, 0x2b, 0x35, 0xdb, 0xf0, 0x9f, 0x5f, 0xdc, 0x0d, 0x25, 0x45, 0x55, + 0x6d, 0x69, 0xa1, 0x2c, 0x35, 0xfd, 0x5e, 0x0a, 0x70, 0xf8, 0x2a, 0x38, 0xf3, 0xe7, 0xe9, 0x9d, + 0xa9, 0x71, 0x70, 0x86, 0x5f, 0xb3, 0x60, 0xf6, 0x77, 0x1d, 0x80, 0xb5, 0xf6, 0xc6, 0xe8, 0x6b, + 0xd6, 0xdd, 0x90, 0xa0, 0xd6, 0xa7, 0x37, 0x0a, 0x8d, 0xd1, 0xbf, 0x50, 0x6c, 0x65, 0xc9, 0x5c, + 0x66, 0x3b, 0xbe, 0xad, 0x77, 0x6f, 0x99, 0x14, 0x89, 0x26, 0x73, 0x9c, 0x50, 0x3a, 0xbb, 0xb0, + 0xea, 0xc5, 0x05, 0x14, 0x36, 0xbd, 0x88, 0x00, 0xc3, 0xa2, 0x37, 0xcf, 0xa2, 0x8f, 0x60, 0xd1, + 0x61, 0xd1, 0x0f, 0xcf, 0xa2, 0x8f, 0x48, 0x2c, 0xfa, 0x88, 0xab, 0x45, 0x1f, 0xc1, 0xa2, 0xc3, + 0xa2, 0xc3, 0xa2, 0x93, 0x58, 0xf4, 0x4c, 0x7f, 0x39, 0xcb, 0xca, 0xfa, 0x17, 0x0b, 0x69, 0x71, + 0x09, 0x65, 0xe5, 0xd8, 0x75, 0x99, 0xa2, 0x57, 0xd9, 0xf6, 0xc8, 0xeb, 0xcf, 0xf3, 0xe5, 0xbf, + 0x78, 0x45, 0xd5, 0xe7, 0x7d, 0xc2, 0x54, 0x4f, 0xf6, 0xe5, 0x9b, 0x7f, 0xfe, 0x96, 0x76, 0xff, + 0xe6, 0x99, 0x9b, 0x5c, 0x47, 0xdd, 0x5e, 0xa8, 0x6a, 0x98, 0x2d, 0xc8, 0x96, 0x2b, 0xa8, 0x96, + 0x2b, 0x88, 0x96, 0x2d, 0x68, 0xf6, 0xdc, 0xfd, 0x65, 0x0b, 0x8a, 0xbd, 0xbc, 0xaa, 0xd9, 0x91, + 0xf2, 0x2b, 0x02, 0xb0, 0x33, 0x7a, 0x95, 0x84, 0xb9, 0x8a, 0xa1, 0x4a, 0x7e, 0xc0, 0xdd, 0x37, + 0xbe, 0xb6, 0xb9, 0x72, 0x99, 0xba, 0xc5, 0xa0, 0xbf, 0x86, 0x7d, 0x33, 0x9a, 0xd8, 0xcc, 0xa6, + 0x34, 0x8f, 0xc9, 0x2c, 0x40, 0x61, 0xe7, 0x35, 0x82, 0x85, 0x8d, 0x5d, 0x61, 0xa3, 0x56, 0x8c, + 0x62, 0x2e, 0xa7, 0x74, 0xb2, 0xe2, 0xc9, 0x56, 0xb0, 0x45, 0xe4, 0x5c, 0xd1, 0xa0, 0x68, 0x95, + 0xe2, 0x5f, 0xce, 0xf8, 0x2c, 0xb6, 0xb6, 0xf0, 0x37, 0xd3, 0x92, 0x75, 0x76, 0xc7, 0xf4, 0xad, + 0xa0, 0x4f, 0xb8, 0x73, 0xbd, 0x91, 0x63, 0x3b, 0xb7, 0x2b, 0x49, 0xdf, 0x6e, 0x99, 0xc3, 0xa6, + 0x86, 0x6e, 0xde, 0x68, 0x73, 0x45, 0x8f, 0xfd, 0x4e, 0x52, 0x6c, 0x26, 0x29, 0xba, 0x63, 0x4a, + 0x3f, 0x0c, 0xf3, 0x3f, 0x86, 0xa4, 0x38, 0xd2, 0xd7, 0xef, 0xe7, 0x52, 0xdb, 0xf9, 0x8f, 0xe6, + 0xce, 0x6f, 0xbd, 0xb1, 0x34, 0xdb, 0x5d, 0x29, 0x7a, 0xcc, 0x0b, 0xec, 0xbc, 0x95, 0xce, 0xbf, + 0xfc, 0x26, 0xb5, 0xbd, 0x0f, 0x6e, 0x6c, 0xc5, 0x9b, 0xd0, 0x9b, 0x57, 0x33, 0x6e, 0x7c, 0x39, + 0xba, 0xb6, 0x35, 0xf5, 0x46, 0x33, 0x6e, 0x3a, 0x6f, 0xa5, 0x2f, 0xdf, 0xcf, 0xa7, 0x46, 0x7b, + 0xa7, 0x38, 0x75, 0xb2, 0xde, 0x79, 0x3e, 0xe4, 0x9a, 0x1b, 0xa9, 0x16, 0x41, 0xa6, 0x25, 0x22, + 0x46, 0x45, 0xb1, 0x67, 0x69, 0xac, 0x59, 0x1a, 0x5b, 0x96, 0x8b, 0xf8, 0x3c, 0x89, 0xc1, 0x14, + 0x47, 0x05, 0x04, 0xbf, 0x4a, 0x2b, 0xf4, 0xf9, 0xec, 0x1f, 0x5b, 0x96, 0xc8, 0x35, 0x7d, 0xdf, + 0x2f, 0x1a, 0x55, 0x5a, 0x9a, 0xea, 0x4a, 0x67, 0x0d, 0x31, 0x3e, 0xba, 0x72, 0xb3, 0x97, 0xb6, + 0xc7, 0xbb, 0xaf, 0xba, 0x98, 0x1e, 0xe5, 0xe6, 0xc6, 0x66, 0x37, 0xf9, 0x7c, 0x8f, 0x68, 0x8d, + 0xe2, 0x5f, 0x2e, 0x66, 0x7a, 0xfe, 0xf2, 0x5f, 0x05, 0x2c, 0xc5, 0x0e, 0x73, 0x62, 0x33, 0xcb, + 0x66, 0x0e, 0x33, 0x3c, 0x73, 0x30, 0x35, 0xd6, 0xd3, 0x65, 0x66, 0x0e, 0xeb, 0xae, 0xee, 0xb3, + 0x6d, 0xf0, 0xfd, 0xd3, 0xf6, 0x99, 0x04, 0x00, 0xca, 0xfe, 0x45, 0x65, 0xaf, 0xa8, 0xaa, 0xf7, + 0x5e, 0xd1, 0xa5, 0x4f, 0xee, 0x2d, 0xb3, 0x0d, 0xe6, 0x46, 0x59, 0x39, 0x29, 0x23, 0x10, 0x27, + 0xdd, 0x3d, 0x13, 0xc0, 0xf4, 0x86, 0x58, 0x00, 0xe6, 0xde, 0xee, 0xa5, 0x05, 0xf0, 0xee, 0xab, + 0x2e, 0x16, 0x80, 0x85, 0xdb, 0x27, 0xbf, 0xfa, 0x8f, 0xbe, 0x49, 0xeb, 0x76, 0xac, 0x87, 0x4d, + 0x6e, 0xe3, 0xa9, 0x11, 0xb9, 0xd5, 0x7b, 0xa2, 0xfd, 0xb3, 0x6d, 0xee, 0xfd, 0xd3, 0xfe, 0x99, + 0x36, 0x7f, 0x6d, 0xb4, 0xff, 0x51, 0x0e, 0x62, 0x37, 0x2b, 0xcd, 0x58, 0x9c, 0x5e, 0x7c, 0x61, + 0xed, 0x9e, 0x63, 0x63, 0x77, 0x3f, 0xeb, 0xf4, 0x7d, 0x25, 0x3f, 0xd9, 0x52, 0x2f, 0xaf, 0xdd, + 0x59, 0xde, 0x3b, 0x4a, 0x5e, 0xd4, 0x66, 0xea, 0xd8, 0xb4, 0x7e, 0x5a, 0x6b, 0xba, 0x07, 0x43, + 0x22, 0xeb, 0x75, 0x1b, 0x08, 0x3e, 0x23, 0xf2, 0xcf, 0x8a, 0xf6, 0x4b, 0x22, 0x9c, 0xc1, 0x2f, + 0x7f, 0x4d, 0x26, 0x33, 0xcb, 0x5e, 0x66, 0x19, 0xcb, 0xe6, 0x37, 0xbf, 0xbc, 0x94, 0xcf, 0x59, + 0x86, 0x97, 0xb3, 0x91, 0xb3, 0x64, 0x1b, 0xbf, 0xa2, 0x71, 0x5f, 0xd5, 0xb0, 0x59, 0x34, 0x6a, + 0x0e, 0xba, 0x24, 0xab, 0xca, 0xcc, 0xad, 0x22, 0x73, 0xab, 0xc4, 0x7c, 0x74, 0x47, 0x3e, 0xf6, + 0xff, 0x35, 0x43, 0x9f, 0xb5, 0x82, 0x77, 0xbe, 0x4a, 0xdd, 0x20, 0xa8, 0x0f, 0x89, 0xa0, 0xce, + 0xd5, 0x76, 0xab, 0x48, 0x9b, 0xad, 0x9c, 0xc7, 0xe2, 0x41, 0xcc, 0x36, 0x9a, 0x98, 0xcd, 0xb8, + 0x66, 0xb9, 0x0b, 0xc6, 0x14, 0x6f, 0x55, 0x95, 0xb3, 0x35, 0x55, 0x06, 0xbc, 0x99, 0x41, 0x27, + 0xe5, 0xec, 0x32, 0x95, 0x28, 0x0b, 0x97, 0xb9, 0xa1, 0x54, 0xbc, 0xaf, 0xff, 0xd9, 0xdf, 0xbf, + 0x9d, 0x7f, 0xff, 0x04, 0x91, 0x84, 0x48, 0x8a, 0x17, 0xc9, 0x62, 0xdd, 0x9c, 0x8a, 0x74, 0x6f, + 0xca, 0xd9, 0xad, 0x89, 0x46, 0x96, 0x5d, 0x2b, 0x47, 0xd5, 0xb9, 0x4d, 0xfb, 0x5e, 0x2b, 0x73, + 0xb1, 0x8d, 0xb8, 0x1c, 0x87, 0x9b, 0x40, 0x76, 0xef, 0x2d, 0xe6, 0x4c, 0xbe, 0x5d, 0x9c, 0x7f, + 0xbc, 0xea, 0xfd, 0x3c, 0xed, 0xf7, 0x7a, 0x10, 0x6d, 0x88, 0xb6, 0x78, 0xd1, 0xd6, 0x54, 0x66, + 0xb8, 0x9a, 0x7b, 0x6f, 0xb3, 0x45, 0x11, 0xd1, 0xce, 0xd1, 0x82, 0xb7, 0x75, 0x1e, 0x4e, 0xf5, + 0x9b, 0xe2, 0xb0, 0xe2, 0x4d, 0xba, 0x7c, 0x89, 0xf9, 0xf6, 0xbf, 0x17, 0x9f, 0xbe, 0xe6, 0x5d, + 0x70, 0xbf, 0xbc, 0x92, 0x53, 0xa8, 0xf0, 0x4c, 0xc9, 0xec, 0xe0, 0xb5, 0x94, 0x9f, 0x9d, 0x9e, + 0xb6, 0x44, 0xd4, 0xb0, 0x25, 0xb9, 0xdc, 0xff, 0x19, 0x0f, 0x7a, 0xbd, 0xe6, 0x5c, 0x6e, 0xa0, + 0x43, 0x9b, 0x73, 0xb9, 0xe3, 0x62, 0x97, 0x9b, 0xeb, 0x1b, 0x33, 0xf1, 0x54, 0x6d, 0x06, 0x73, + 0x9b, 0xb7, 0xce, 0x6b, 0xc1, 0xea, 0x87, 0x30, 0x94, 0x30, 0x94, 0x84, 0x86, 0x32, 0x7f, 0xe9, + 0xcd, 0x02, 0xa5, 0x35, 0x0b, 0x96, 0xce, 0x2c, 0x70, 0xec, 0xa5, 0x4c, 0xe9, 0xcb, 0xb2, 0x7d, + 0x8d, 0x4b, 0x96, 0xae, 0xa4, 0x28, 0x62, 0x58, 0xa4, 0x30, 0x7c, 0x99, 0xd2, 0x92, 0x54, 0x8f, + 0xac, 0x78, 0x69, 0x48, 0x92, 0xa7, 0xc6, 0xe9, 0x44, 0xc6, 0x6c, 0xcf, 0xce, 0x19, 0xf8, 0x65, + 0xdb, 0xfc, 0x18, 0x57, 0xf6, 0xa6, 0x07, 0x85, 0x92, 0x58, 0x5a, 0x4b, 0xb6, 0xbc, 0x66, 0xb6, + 0x93, 0x3d, 0x40, 0xb0, 0xfe, 0x02, 0x22, 0x04, 0x88, 0x10, 0x24, 0x37, 0x51, 0x7e, 0x3c, 0x16, + 0x7e, 0x8f, 0x73, 0x46, 0xc7, 0x00, 0x70, 0x6c, 0x6f, 0xe1, 0x58, 0xde, 0x53, 0xbb, 0xad, 0x4d, + 0x19, 0x2b, 0x9b, 0x2d, 0x8a, 0x93, 0x08, 0xc9, 0x61, 0x0e, 0xe4, 0x28, 0xfb, 0x02, 0x47, 0xd9, + 0x77, 0x9d, 0x84, 0x5d, 0xec, 0xcd, 0x51, 0x76, 0x74, 0x2e, 0xa2, 0x3f, 0x5e, 0xbe, 0xc0, 0xf1, + 0x72, 0x41, 0x42, 0x55, 0x4c, 0xb8, 0x4a, 0x38, 0x74, 0x12, 0x49, 0xd7, 0xa2, 0x4d, 0x7a, 0x1f, + 0x59, 0xdf, 0xa2, 0xa2, 0x15, 0x5d, 0x88, 0x9d, 0xce, 0xd2, 0x96, 0x8b, 0x87, 0x70, 0x92, 0x0b, + 0x29, 0xb5, 0xb0, 0x72, 0x13, 0x5a, 0x6e, 0xc2, 0xcb, 0x43, 0x88, 0xcb, 0x09, 0x73, 0x49, 0xa1, + 0x2e, 0xce, 0xf6, 0xbd, 0xba, 0xdb, 0x74, 0xa6, 0x2c, 0xf2, 0x43, 0xc6, 0x17, 0x2d, 0xe5, 0x7b, + 0x82, 0xb1, 0x2e, 0x22, 0x12, 0x22, 0x5b, 0x29, 0x29, 0x3f, 0xbb, 0xab, 0xaa, 0xf2, 0xfe, 0x25, + 0x0c, 0x6a, 0xa2, 0xd8, 0x05, 0x99, 0xbe, 0x2d, 0x51, 0x44, 0x0b, 0x2a, 0x17, 0x2a, 0x17, 0x2a, + 0x17, 0x2a, 0xf7, 0x05, 0x95, 0x7b, 0xb9, 0x51, 0xb9, 0x7f, 0x9b, 0xaf, 0x6c, 0x9b, 0x19, 0x6e, + 0xbb, 0x73, 0xdc, 0xed, 0x6e, 0x4e, 0x54, 0xcc, 0x32, 0x16, 0xf8, 0x8b, 0x46, 0x56, 0xd9, 0xcf, + 0x16, 0x9a, 0xb3, 0xe4, 0xb1, 0x1b, 0x99, 0xa9, 0xfa, 0x90, 0x1f, 0x0f, 0xff, 0x3f, 0x4e, 0x10, + 0x45, 0xe8, 0xc4, 0x42, 0xfd, 0x44, 0xcb, 0xb7, 0x5d, 0xf9, 0xae, 0x2b, 0xc6, 0xd5, 0x1f, 0xfe, + 0xd0, 0x57, 0xd1, 0xb1, 0xa9, 0x2f, 0x6c, 0xd1, 0x8c, 0x9e, 0x2b, 0xe8, 0x9f, 0x52, 0x7e, 0x4b, + 0x16, 0xde, 0x8a, 0xc5, 0xab, 0xa5, 0xc5, 0x36, 0x5d, 0x6b, 0xcf, 0x43, 0x97, 0xeb, 0x78, 0x21, + 0x87, 0xd8, 0x65, 0x36, 0xba, 0x32, 0x17, 0x2d, 0x99, 0x3b, 0x6e, 0x39, 0x40, 0xdc, 0x32, 0x17, + 0x40, 0xc5, 0xc9, 0x26, 0x4a, 0xaf, 0x0d, 0x31, 0xcb, 0x82, 0x7e, 0x12, 0x4e, 0x36, 0x15, 0xb4, + 0x32, 0x38, 0xd9, 0x04, 0x91, 0x84, 0x48, 0xe2, 0x64, 0xd3, 0x8b, 0x0f, 0x05, 0x27, 0x9b, 0x20, + 0xda, 0x38, 0xd9, 0x84, 0x93, 0x4d, 0x59, 0xaf, 0x19, 0x27, 0x9b, 0x38, 0x3f, 0x5d, 0x9c, 0x6c, + 0xda, 0xfe, 0xc1, 0xc9, 0x26, 0x18, 0x4a, 0x18, 0x4a, 0x1a, 0x43, 0x89, 0x93, 0x4d, 0x45, 0x25, + 0x6b, 0xb7, 0x21, 0xc6, 0xc9, 0xa6, 0x22, 0x8f, 0x0c, 0x27, 0x9b, 0xf8, 0x31, 0xaa, 0xfc, 0xc2, + 0x03, 0x19, 0x22, 0xa2, 0xc5, 0x82, 0x03, 0x59, 0x4d, 0x69, 0x4e, 0x2d, 0x96, 0x71, 0xb7, 0xe2, + 0x60, 0x53, 0x9d, 0x03, 0x04, 0x99, 0x4d, 0x5d, 0x81, 0x1c, 0x92, 0x3c, 0x39, 0x22, 0x51, 0x0e, + 0x48, 0xb7, 0x1b, 0x1e, 0xf1, 0x3b, 0x5e, 0xef, 0x42, 0x91, 0xbd, 0x83, 0x5e, 0xde, 0xf9, 0x0d, + 0x6f, 0x1f, 0x54, 0xba, 0x28, 0xeb, 0x96, 0xc6, 0xca, 0x5e, 0x84, 0xf5, 0xfb, 0xb3, 0x3b, 0x59, + 0x5c, 0xfd, 0xd5, 0xcd, 0xc5, 0x3f, 0x5b, 0x74, 0xf5, 0x28, 0x36, 0xe3, 0x73, 0x33, 0xb5, 0x34, + 0xe7, 0xef, 0xe6, 0xd2, 0xb2, 0x99, 0xe3, 0x30, 0xf5, 0xab, 0x3f, 0x5b, 0x4a, 0xc8, 0x5b, 0x9a, + 0xf3, 0xbb, 0xf2, 0x83, 0x7d, 0x31, 0xcd, 0xb4, 0x02, 0xd8, 0xbe, 0xc2, 0x56, 0xfc, 0x57, 0x89, + 0x87, 0xf6, 0x91, 0xdd, 0x69, 0xeb, 0xb2, 0xb5, 0x4f, 0x47, 0x4f, 0xff, 0x0f, 0x00, 0x00, 0xff, + 0xff, 0x01, 0x00, 0x00, 0xff, 0xff, 0xf0, 0x02, 0x5e, 0x81, 0x4e, 0x33, 0x11, 0x00, + } +) + + +// ΛEnumTypes is a map, keyed by a YANG schema path, of the enumerated types that +// correspond with the leaf. The type is represented as a reflect.Type. The naming +// of the map ensures that there are no clashes with valid YANG identifiers. +var ΛEnumTypes = map[string][]reflect.Type{ + "/interfaces/interface/aggregation/config/lag-type": []reflect.Type{ + reflect.TypeOf((E_OpenconfigIfAggregate_AggregationType)(0)), + }, + "/interfaces/interface/aggregation/switched-vlan/config/interface-mode": []reflect.Type{ + reflect.TypeOf((E_OpenconfigVlan_VlanModeType)(0)), + }, + "/interfaces/interface/config/type": []reflect.Type{ + reflect.TypeOf((E_IETFInterfaces_InterfaceType)(0)), + }, + "/interfaces/interface/ethernet/config/duplex-mode": []reflect.Type{ + reflect.TypeOf((E_Ethernet_DuplexMode)(0)), + }, + "/interfaces/interface/ethernet/config/port-speed": []reflect.Type{ + reflect.TypeOf((E_OpenconfigIfEthernet_ETHERNET_SPEED)(0)), + }, + "/interfaces/interface/ethernet/state/negotiated-duplex-mode": []reflect.Type{ + reflect.TypeOf((E_Ethernet_NegotiatedDuplexMode)(0)), + }, + "/interfaces/interface/ethernet/state/negotiated-port-speed": []reflect.Type{ + reflect.TypeOf((E_OpenconfigIfEthernet_ETHERNET_SPEED)(0)), + }, + "/interfaces/interface/ethernet/switched-vlan/config/interface-mode": []reflect.Type{ + reflect.TypeOf((E_OpenconfigVlan_VlanModeType)(0)), + }, + "/interfaces/interface/routed-vlan/ipv4/addresses/address/state/origin": []reflect.Type{ + reflect.TypeOf((E_OpenconfigIfIp_IpAddressOrigin)(0)), + }, + "/interfaces/interface/routed-vlan/ipv4/neighbors/neighbor/state/origin": []reflect.Type{ + reflect.TypeOf((E_OpenconfigIfIp_NeighborOrigin)(0)), + }, + "/interfaces/interface/routed-vlan/ipv6/addresses/address/state/origin": []reflect.Type{ + reflect.TypeOf((E_OpenconfigIfIp_IpAddressOrigin)(0)), + }, + "/interfaces/interface/routed-vlan/ipv6/addresses/address/state/status": []reflect.Type{ + reflect.TypeOf((E_Address_Status)(0)), + }, + "/interfaces/interface/routed-vlan/ipv6/neighbors/neighbor/state/neighbor-state": []reflect.Type{ + reflect.TypeOf((E_Neighbor_NeighborState)(0)), + }, + "/interfaces/interface/routed-vlan/ipv6/neighbors/neighbor/state/origin": []reflect.Type{ + reflect.TypeOf((E_OpenconfigIfIp_NeighborOrigin)(0)), + }, + "/interfaces/interface/state/admin-status": []reflect.Type{ + reflect.TypeOf((E_Interface_AdminStatus)(0)), + }, + "/interfaces/interface/state/oper-status": []reflect.Type{ + reflect.TypeOf((E_Interface_OperStatus)(0)), + }, + "/interfaces/interface/subinterfaces/subinterface/ipv4/addresses/address/state/origin": []reflect.Type{ + reflect.TypeOf((E_OpenconfigIfIp_IpAddressOrigin)(0)), + }, + "/interfaces/interface/subinterfaces/subinterface/ipv4/neighbors/neighbor/state/origin": []reflect.Type{ + reflect.TypeOf((E_OpenconfigIfIp_NeighborOrigin)(0)), + }, + "/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/state/origin": []reflect.Type{ + reflect.TypeOf((E_OpenconfigIfIp_IpAddressOrigin)(0)), + }, + "/interfaces/interface/subinterfaces/subinterface/ipv6/addresses/address/state/status": []reflect.Type{ + reflect.TypeOf((E_Address_Status)(0)), + }, + "/interfaces/interface/subinterfaces/subinterface/ipv6/neighbors/neighbor/state/neighbor-state": []reflect.Type{ + reflect.TypeOf((E_Neighbor_NeighborState)(0)), + }, + "/interfaces/interface/subinterfaces/subinterface/ipv6/neighbors/neighbor/state/origin": []reflect.Type{ + reflect.TypeOf((E_OpenconfigIfIp_NeighborOrigin)(0)), + }, + "/interfaces/interface/subinterfaces/subinterface/state/admin-status": []reflect.Type{ + reflect.TypeOf((E_Interface_AdminStatus)(0)), + }, + "/interfaces/interface/subinterfaces/subinterface/state/oper-status": []reflect.Type{ + reflect.TypeOf((E_Interface_OperStatus)(0)), + }, + "/vlans/vlan/config/status": []reflect.Type{ + reflect.TypeOf((E_Vlan_Status)(0)), + }, + "/vlans/vlan/config/tpid": []reflect.Type{ + reflect.TypeOf((E_OpenconfigVlanTypes_TPID_TYPES)(0)), + }, +} + diff --git a/yang/iana-if-type.yang b/yang/iana-if-type.yang new file mode 100644 index 0000000000000000000000000000000000000000..0b8b1b8d33dbbdc8f88b82840ac9b70a3f701c39 --- /dev/null +++ b/yang/iana-if-type.yang @@ -0,0 +1,1494 @@ +module iana-if-type { + namespace "urn:ietf:params:xml:ns:yang:iana-if-type"; + prefix ianaift; + import ietf-interfaces { + prefix if; + } + organization "IANA"; + contact + " Internet Assigned Numbers Authority + Postal: ICANN + 4676 Admiralty Way, Suite 330 + Marina del Rey, CA 90292 + Tel: +1 310 823 9358 + <mailto:iana@iana.org>"; + description + "This YANG module defines YANG identities for IANA-registered + interface types. + This YANG module is maintained by IANA and reflects the + 'ifType definitions' registry. + The latest revision of this YANG module can be obtained from + the IANA web site. + Requests for new values should be made to IANA via + email (iana@iana.org). + Copyright (c) 2014 IETF Trust and the persons identified as + authors of the code. All rights reserved. + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (http://trustee.ietf.org/license-info). + The initial version of this YANG module is part of RFC 7224; + see the RFC itself for full legal notices."; + reference + "IANA 'ifType definitions' registry. + <http://www.iana.org/assignments/smi-numbers>"; + revision 2014-05-08 { + description + "Initial revision."; + reference + "RFC 7224: IANA Interface Type YANG Module"; + } + identity iana-interface-type { + base if:interface-type; + description + "This identity is used as a base for all interface types + defined in the 'ifType definitions' registry."; + } + identity other { + base iana-interface-type; + } + identity regular1822 { + base iana-interface-type; + } + identity hdh1822 { + base iana-interface-type; + } + identity ddnX25 { + base iana-interface-type; + } + identity rfc877x25 { + base iana-interface-type; + reference + "RFC 1382 - SNMP MIB Extension for the X.25 Packet Layer"; + } + identity ethernetCsmacd { + base iana-interface-type; + description + "For all Ethernet-like interfaces, regardless of speed, + as per RFC 3635."; + reference + "RFC 3635 - Definitions of Managed Objects for the + Ethernet-like Interface Types"; + } + identity iso88023Csmacd { + base iana-interface-type; + status deprecated; + description + "Deprecated via RFC 3635. + Use ethernetCsmacd(6) instead."; + reference + "RFC 3635 - Definitions of Managed Objects for the + Ethernet-like Interface Types"; + } + identity iso88024TokenBus { + base iana-interface-type; + } + identity iso88025TokenRing { + base iana-interface-type; + } + identity iso88026Man { + base iana-interface-type; + } + identity starLan { + base iana-interface-type; + status deprecated; + description + "Deprecated via RFC 3635. + Use ethernetCsmacd(6) instead."; + reference + "RFC 3635 - Definitions of Managed Objects for the + Ethernet-like Interface Types"; + } + identity proteon10Mbit { + base iana-interface-type; + } + identity proteon80Mbit { + base iana-interface-type; + } + identity hyperchannel { + base iana-interface-type; + } + identity fddi { + base iana-interface-type; + reference + "RFC 1512 - FDDI Management Information Base"; + } + identity lapb { + base iana-interface-type; + reference + "RFC 1381 - SNMP MIB Extension for X.25 LAPB"; + } + identity sdlc { + base iana-interface-type; + } + identity ds1 { + base iana-interface-type; + description + "DS1-MIB."; + reference + "RFC 4805 - Definitions of Managed Objects for the + DS1, J1, E1, DS2, and E2 Interface Types"; + } + identity e1 { + base iana-interface-type; + status obsolete; + description + "Obsolete; see DS1-MIB."; + reference + "RFC 4805 - Definitions of Managed Objects for the + DS1, J1, E1, DS2, and E2 Interface Types"; + } + identity basicISDN { + base iana-interface-type; + description + "No longer used. See also RFC 2127."; + } + identity primaryISDN { + base iana-interface-type; + description + "No longer used. See also RFC 2127."; + } + identity propPointToPointSerial { + base iana-interface-type; + description + "Proprietary serial."; + } + identity ppp { + base iana-interface-type; + } + identity softwareLoopback { + base iana-interface-type; + } + identity eon { + base iana-interface-type; + description + "CLNP over IP."; + } + identity ethernet3Mbit { + base iana-interface-type; + } + identity nsip { + base iana-interface-type; + description + "XNS over IP."; + } + identity slip { + base iana-interface-type; + description + "Generic SLIP."; + } + identity ultra { + base iana-interface-type; + description + "Ultra Technologies."; + } + identity ds3 { + base iana-interface-type; + description + "DS3-MIB."; + reference + "RFC 3896 - Definitions of Managed Objects for the + DS3/E3 Interface Type"; + } + identity sip { + base iana-interface-type; + description + "SMDS, coffee."; + reference + "RFC 1694 - Definitions of Managed Objects for SMDS + Interfaces using SMIv2"; + } + identity frameRelay { + base iana-interface-type; + description + "DTE only."; + reference + "RFC 2115 - Management Information Base for Frame Relay + DTEs Using SMIv2"; + } + identity rs232 { + base iana-interface-type; + reference + "RFC 1659 - Definitions of Managed Objects for RS-232-like + Hardware Devices using SMIv2"; + } + identity para { + base iana-interface-type; + description + "Parallel-port."; + reference + "RFC 1660 - Definitions of Managed Objects for + Parallel-printer-like Hardware Devices using + SMIv2"; + } + identity arcnet { + base iana-interface-type; + description + "ARCnet."; + } + identity arcnetPlus { + base iana-interface-type; + description + "ARCnet Plus."; + } + identity atm { + base iana-interface-type; + description + "ATM cells."; + } + identity miox25 { + base iana-interface-type; + reference + "RFC 1461 - SNMP MIB extension for Multiprotocol + Interconnect over X.25"; + } + identity sonet { + base iana-interface-type; + description + "SONET or SDH."; + } + identity x25ple { + base iana-interface-type; + reference + "RFC 2127 - ISDN Management Information Base using SMIv2"; + } + identity iso88022llc { + base iana-interface-type; + } + identity localTalk { + base iana-interface-type; + } + identity smdsDxi { + base iana-interface-type; + } + identity frameRelayService { + base iana-interface-type; + description + "FRNETSERV-MIB."; + reference + "RFC 2954 - Definitions of Managed Objects for Frame + Relay Service"; + } + identity v35 { + base iana-interface-type; + } + identity hssi { + base iana-interface-type; + } + identity hippi { + base iana-interface-type; + } + identity modem { + base iana-interface-type; + description + "Generic modem."; + } + identity aal5 { + base iana-interface-type; + description + "AAL5 over ATM."; + } + identity sonetPath { + base iana-interface-type; + } + identity sonetVT { + base iana-interface-type; + } + identity smdsIcip { + base iana-interface-type; + description + "SMDS InterCarrier Interface."; + } + identity propVirtual { + base iana-interface-type; + description + "Proprietary virtual/internal."; + reference + "RFC 2863 - The Interfaces Group MIB"; + } + identity propMultiplexor { + base iana-interface-type; + description + "Proprietary multiplexing."; + reference + "RFC 2863 - The Interfaces Group MIB"; + } + identity ieee80212 { + base iana-interface-type; + description + "100BaseVG."; + } + identity fibreChannel { + base iana-interface-type; + description + "Fibre Channel."; + } + identity hippiInterface { + base iana-interface-type; + description + "HIPPI interfaces."; + } + identity frameRelayInterconnect { + base iana-interface-type; + status obsolete; + description + "Obsolete; use either + frameRelay(32) or frameRelayService(44)."; + } + identity aflane8023 { + base iana-interface-type; + description + "ATM Emulated LAN for 802.3."; + } + identity aflane8025 { + base iana-interface-type; + description + "ATM Emulated LAN for 802.5."; + } + identity cctEmul { + base iana-interface-type; + description + "ATM Emulated circuit."; + } + identity fastEther { + base iana-interface-type; + status deprecated; + description + "Obsoleted via RFC 3635. + ethernetCsmacd(6) should be used instead."; + reference + "RFC 3635 - Definitions of Managed Objects for the + Ethernet-like Interface Types"; + } + identity isdn { + base iana-interface-type; + description + "ISDN and X.25."; + reference + "RFC 1356 - Multiprotocol Interconnect on X.25 and ISDN + in the Packet Mode"; + } + identity v11 { + base iana-interface-type; + description + "CCITT V.11/X.21."; + } + identity v36 { + base iana-interface-type; + description + "CCITT V.36."; + } + identity g703at64k { + base iana-interface-type; + description + "CCITT G703 at 64Kbps."; + } + identity g703at2mb { + base iana-interface-type; + status obsolete; + description + "Obsolete; see DS1-MIB."; + } + identity qllc { + base iana-interface-type; + description + "SNA QLLC."; + } + identity fastEtherFX { + base iana-interface-type; + status deprecated; + description + "Obsoleted via RFC 3635. + ethernetCsmacd(6) should be used instead."; + reference + "RFC 3635 - Definitions of Managed Objects for the + Ethernet-like Interface Types"; + } + identity channel { + base iana-interface-type; + description + "Channel."; + } + identity ieee80211 { + base iana-interface-type; + description + "Radio spread spectrum."; + } + identity ibm370parChan { + base iana-interface-type; + description + "IBM System 360/370 OEMI Channel."; + } + identity escon { + base iana-interface-type; + description + "IBM Enterprise Systems Connection."; + } + identity dlsw { + base iana-interface-type; + description + "Data Link Switching."; + } + identity isdns { + base iana-interface-type; + description + "ISDN S/T interface."; + } + identity isdnu { + base iana-interface-type; + description + "ISDN U interface."; + } + identity lapd { + base iana-interface-type; + description + "Link Access Protocol D."; + } + identity ipSwitch { + base iana-interface-type; + description + "IP Switching Objects."; + } + identity rsrb { + base iana-interface-type; + description + "Remote Source Route Bridging."; + } + identity atmLogical { + base iana-interface-type; + description + "ATM Logical Port."; + reference + "RFC 3606 - Definitions of Supplemental Managed Objects + for ATM Interface"; + } + identity ds0 { + base iana-interface-type; + description + "Digital Signal Level 0."; + reference + "RFC 2494 - Definitions of Managed Objects for the DS0 + and DS0 Bundle Interface Type"; + } + identity ds0Bundle { + base iana-interface-type; + description + "Group of ds0s on the same ds1."; + reference + "RFC 2494 - Definitions of Managed Objects for the DS0 + and DS0 Bundle Interface Type"; + } + identity bsc { + base iana-interface-type; + description + "Bisynchronous Protocol."; + } + identity async { + base iana-interface-type; + description + "Asynchronous Protocol."; + } + identity cnr { + base iana-interface-type; + description + "Combat Net Radio."; + } + identity iso88025Dtr { + base iana-interface-type; + description + "ISO 802.5r DTR."; + } + identity eplrs { + base iana-interface-type; + description + "Ext Pos Loc Report Sys."; + } + identity arap { + base iana-interface-type; + description + "Appletalk Remote Access Protocol."; + } + identity propCnls { + base iana-interface-type; + description + "Proprietary Connectionless Protocol."; + } + identity hostPad { + base iana-interface-type; + description + "CCITT-ITU X.29 PAD Protocol."; + } + identity termPad { + base iana-interface-type; + description + "CCITT-ITU X.3 PAD Facility."; + } + identity frameRelayMPI { + base iana-interface-type; + description + "Multiproto Interconnect over FR."; + } + identity x213 { + base iana-interface-type; + description + "CCITT-ITU X213."; + } + identity adsl { + base iana-interface-type; + description + "Asymmetric Digital Subscriber Loop."; + } + identity radsl { + base iana-interface-type; + description + "Rate-Adapt. Digital Subscriber Loop."; + } + identity sdsl { + base iana-interface-type; + description + "Symmetric Digital Subscriber Loop."; + } + identity vdsl { + base iana-interface-type; + description + "Very H-Speed Digital Subscrib. Loop."; + } + identity iso88025CRFPInt { + base iana-interface-type; + description + "ISO 802.5 CRFP."; + } + identity myrinet { + base iana-interface-type; + description + "Myricom Myrinet."; + } + identity voiceEM { + base iana-interface-type; + description + "Voice recEive and transMit."; + } + identity voiceFXO { + base iana-interface-type; + description + "Voice Foreign Exchange Office."; + } + identity voiceFXS { + base iana-interface-type; + description + "Voice Foreign Exchange Station."; + } + identity voiceEncap { + base iana-interface-type; + description + "Voice encapsulation."; + } + identity voiceOverIp { + base iana-interface-type; + description + "Voice over IP encapsulation."; + } + identity atmDxi { + base iana-interface-type; + description + "ATM DXI."; + } + identity atmFuni { + base iana-interface-type; + description + "ATM FUNI."; + } + identity atmIma { + base iana-interface-type; + description + "ATM IMA."; + } + identity pppMultilinkBundle { + base iana-interface-type; + description + "PPP Multilink Bundle."; + } + identity ipOverCdlc { + base iana-interface-type; + description + "IBM ipOverCdlc."; + } + identity ipOverClaw { + base iana-interface-type; + description + "IBM Common Link Access to Workstn."; + } + identity stackToStack { + base iana-interface-type; + description + "IBM stackToStack."; + } + identity virtualIpAddress { + base iana-interface-type; + description + "IBM VIPA."; + } + identity mpc { + base iana-interface-type; + description + "IBM multi-protocol channel support."; + } + identity ipOverAtm { + base iana-interface-type; + description + "IBM ipOverAtm."; + reference + "RFC 2320 - Definitions of Managed Objects for Classical IP + and ARP Over ATM Using SMIv2 (IPOA-MIB)"; + } + identity iso88025Fiber { + base iana-interface-type; + description + "ISO 802.5j Fiber Token Ring."; + } + identity tdlc { + base iana-interface-type; + description + "IBM twinaxial data link control."; + } + identity gigabitEthernet { + base iana-interface-type; + status deprecated; + description + "Obsoleted via RFC 3635. + ethernetCsmacd(6) should be used instead."; + reference + "RFC 3635 - Definitions of Managed Objects for the + Ethernet-like Interface Types"; + } + identity hdlc { + base iana-interface-type; + description + "HDLC."; + } + identity lapf { + base iana-interface-type; + description + "LAP F."; + } + identity v37 { + base iana-interface-type; + description + "V.37."; + } + identity x25mlp { + base iana-interface-type; + description + "Multi-Link Protocol."; + } + identity x25huntGroup { + base iana-interface-type; + description + "X25 Hunt Group."; + } + identity transpHdlc { + base iana-interface-type; + description + "Transp HDLC."; + } + identity interleave { + base iana-interface-type; + description + "Interleave channel."; + } + identity fast { + base iana-interface-type; + description + "Fast channel."; + } + identity ip { + base iana-interface-type; + description + "IP (for APPN HPR in IP networks)."; + } + identity docsCableMaclayer { + base iana-interface-type; + description + "CATV Mac Layer."; + } + identity docsCableDownstream { + base iana-interface-type; + description + "CATV Downstream interface."; + } + identity docsCableUpstream { + base iana-interface-type; + description + "CATV Upstream interface."; + } + identity a12MppSwitch { + base iana-interface-type; + description + "Avalon Parallel Processor."; + } + identity tunnel { + base iana-interface-type; + description + "Encapsulation interface."; + } + identity coffee { + base iana-interface-type; + description + "Coffee pot."; + reference + "RFC 2325 - Coffee MIB"; + } + identity ces { + base iana-interface-type; + description + "Circuit Emulation Service."; + } + identity atmSubInterface { + base iana-interface-type; + description + "ATM Sub Interface."; + } + identity l2vlan { + base iana-interface-type; + description + "Layer 2 Virtual LAN using 802.1Q."; + } + identity l3ipvlan { + base iana-interface-type; + description + "Layer 3 Virtual LAN using IP."; + } + identity l3ipxvlan { + base iana-interface-type; + description + "Layer 3 Virtual LAN using IPX."; + } + identity digitalPowerline { + base iana-interface-type; + description + "IP over Power Lines."; + } + identity mediaMailOverIp { + base iana-interface-type; + description + "Multimedia Mail over IP."; + } + identity dtm { + base iana-interface-type; + description + "Dynamic synchronous Transfer Mode."; + } + identity dcn { + base iana-interface-type; + description + "Data Communications Network."; + } + identity ipForward { + base iana-interface-type; + description + "IP Forwarding Interface."; + } + identity msdsl { + base iana-interface-type; + description + "Multi-rate Symmetric DSL."; + } + identity ieee1394 { + base iana-interface-type; + description + "IEEE1394 High Performance Serial Bus."; + } + identity if-gsn { + base iana-interface-type; + description + "HIPPI-6400."; + } + identity dvbRccMacLayer { + base iana-interface-type; + description + "DVB-RCC MAC Layer."; + } + identity dvbRccDownstream { + base iana-interface-type; + description + "DVB-RCC Downstream Channel."; + } + identity dvbRccUpstream { + base iana-interface-type; + description + "DVB-RCC Upstream Channel."; + } + identity atmVirtual { + base iana-interface-type; + description + "ATM Virtual Interface."; + } + identity mplsTunnel { + base iana-interface-type; + description + "MPLS Tunnel Virtual Interface."; + } + identity srp { + base iana-interface-type; + description + "Spatial Reuse Protocol."; + } + identity voiceOverAtm { + base iana-interface-type; + description + "Voice over ATM."; + } + identity voiceOverFrameRelay { + base iana-interface-type; + description + "Voice Over Frame Relay."; + } + identity idsl { + base iana-interface-type; + description + "Digital Subscriber Loop over ISDN."; + } + identity compositeLink { + base iana-interface-type; + description + "Avici Composite Link Interface."; + } + identity ss7SigLink { + base iana-interface-type; + description + "SS7 Signaling Link."; + } + identity propWirelessP2P { + base iana-interface-type; + description + "Prop. P2P wireless interface."; + } + identity frForward { + base iana-interface-type; + description + "Frame Forward Interface."; + } + identity rfc1483 { + base iana-interface-type; + description + "Multiprotocol over ATM AAL5."; + reference + "RFC 1483 - Multiprotocol Encapsulation over ATM + Adaptation Layer 5"; + } + identity usb { + base iana-interface-type; + description + "USB Interface."; + } + identity ieee8023adLag { + base iana-interface-type; + description + "IEEE 802.3ad Link Aggregate."; + } + identity bgppolicyaccounting { + base iana-interface-type; + description + "BGP Policy Accounting."; + } + identity frf16MfrBundle { + base iana-interface-type; + description + "FRF.16 Multilink Frame Relay."; + } + identity h323Gatekeeper { + base iana-interface-type; + description + "H323 Gatekeeper."; + } + identity h323Proxy { + base iana-interface-type; + description + "H323 Voice and Video Proxy."; + } + identity mpls { + base iana-interface-type; + description + "MPLS."; + } + identity mfSigLink { + base iana-interface-type; + description + "Multi-frequency signaling link."; + } + identity hdsl2 { + base iana-interface-type; + description + "High Bit-Rate DSL - 2nd generation."; + } + identity shdsl { + base iana-interface-type; + description + "Multirate HDSL2."; + } + identity ds1FDL { + base iana-interface-type; + description + "Facility Data Link (4Kbps) on a DS1."; + } + identity pos { + base iana-interface-type; + description + "Packet over SONET/SDH Interface."; + } + identity dvbAsiIn { + base iana-interface-type; + description + "DVB-ASI Input."; + } + identity dvbAsiOut { + base iana-interface-type; + description + "DVB-ASI Output."; + } + identity plc { + base iana-interface-type; + description + "Power Line Communications."; + } + identity nfas { + base iana-interface-type; + description + "Non-Facility Associated Signaling."; + } + identity tr008 { + base iana-interface-type; + description + "TR008."; + } + identity gr303RDT { + base iana-interface-type; + description + "Remote Digital Terminal."; + } + identity gr303IDT { + base iana-interface-type; + description + "Integrated Digital Terminal."; + } + identity isup { + base iana-interface-type; + description + "ISUP."; + } + identity propDocsWirelessMaclayer { + base iana-interface-type; + description + "Cisco proprietary Maclayer."; + } + identity propDocsWirelessDownstream { + base iana-interface-type; + description + "Cisco proprietary Downstream."; + } + identity propDocsWirelessUpstream { + base iana-interface-type; + description + "Cisco proprietary Upstream."; + } + identity hiperlan2 { + base iana-interface-type; + description + "HIPERLAN Type 2 Radio Interface."; + } + identity propBWAp2Mp { + base iana-interface-type; + description + "PropBroadbandWirelessAccesspt2Multipt (use of this value + for IEEE 802.16 WMAN interfaces as per IEEE Std 802.16f + is deprecated, and ieee80216WMAN(237) should be used + instead)."; + } + identity sonetOverheadChannel { + base iana-interface-type; + description + "SONET Overhead Channel."; + } + identity digitalWrapperOverheadChannel { + base iana-interface-type; + description + "Digital Wrapper."; + } + identity aal2 { + base iana-interface-type; + description + "ATM adaptation layer 2."; + } + identity radioMAC { + base iana-interface-type; + description + "MAC layer over radio links."; + } + identity atmRadio { + base iana-interface-type; + description + "ATM over radio links."; + } + identity imt { + base iana-interface-type; + description + "Inter-Machine Trunks."; + } + identity mvl { + base iana-interface-type; + description + "Multiple Virtual Lines DSL."; + } + identity reachDSL { + base iana-interface-type; + description + "Long Reach DSL."; + } + identity frDlciEndPt { + base iana-interface-type; + description + "Frame Relay DLCI End Point."; + } + identity atmVciEndPt { + base iana-interface-type; + description + "ATM VCI End Point."; + } + identity opticalChannel { + base iana-interface-type; + description + "Optical Channel."; + } + identity opticalTransport { + base iana-interface-type; + description + "Optical Transport."; + } + identity propAtm { + base iana-interface-type; + description + "Proprietary ATM."; + } + identity voiceOverCable { + base iana-interface-type; + description + "Voice Over Cable Interface."; + } + identity infiniband { + base iana-interface-type; + description + "Infiniband."; + } + identity teLink { + base iana-interface-type; + description + "TE Link."; + } + identity q2931 { + base iana-interface-type; + description + "Q.2931."; + } + identity virtualTg { + base iana-interface-type; + description + "Virtual Trunk Group."; + } + identity sipTg { + base iana-interface-type; + description + "SIP Trunk Group."; + } + identity sipSig { + base iana-interface-type; + description + "SIP Signaling."; + } + identity docsCableUpstreamChannel { + base iana-interface-type; + description + "CATV Upstream Channel."; + } + identity econet { + base iana-interface-type; + description + "Acorn Econet."; + } + identity pon155 { + base iana-interface-type; + description + "FSAN 155Mb Symetrical PON interface."; + } + identity pon622 { + base iana-interface-type; + description + "FSAN 622Mb Symetrical PON interface."; + } + identity bridge { + base iana-interface-type; + description + "Transparent bridge interface."; + } + identity linegroup { + base iana-interface-type; + description + "Interface common to multiple lines."; + } + identity voiceEMFGD { + base iana-interface-type; + description + "Voice E&M Feature Group D."; + } + identity voiceFGDEANA { + base iana-interface-type; + description + "Voice FGD Exchange Access North American."; + } + identity voiceDID { + base iana-interface-type; + description + "Voice Direct Inward Dialing."; + } + identity mpegTransport { + base iana-interface-type; + description + "MPEG transport interface."; + } + identity sixToFour { + base iana-interface-type; + status deprecated; + description + "6to4 interface (DEPRECATED)."; + reference + "RFC 4087 - IP Tunnel MIB"; + } + identity gtp { + base iana-interface-type; + description + "GTP (GPRS Tunneling Protocol)."; + } + identity pdnEtherLoop1 { + base iana-interface-type; + description + "Paradyne EtherLoop 1."; + } + identity pdnEtherLoop2 { + base iana-interface-type; + description + "Paradyne EtherLoop 2."; + } + identity opticalChannelGroup { + base iana-interface-type; + description + "Optical Channel Group."; + } + identity homepna { + base iana-interface-type; + description + "HomePNA ITU-T G.989."; + } + identity gfp { + base iana-interface-type; + description + "Generic Framing Procedure (GFP)."; + } + identity ciscoISLvlan { + base iana-interface-type; + description + "Layer 2 Virtual LAN using Cisco ISL."; + } + identity actelisMetaLOOP { + base iana-interface-type; + description + "Acteleis proprietary MetaLOOP High Speed Link."; + } + identity fcipLink { + base iana-interface-type; + description + "FCIP Link."; + } + identity rpr { + base iana-interface-type; + description + "Resilient Packet Ring Interface Type."; + } + identity qam { + base iana-interface-type; + description + "RF Qam Interface."; + } + identity lmp { + base iana-interface-type; + description + "Link Management Protocol."; + reference + "RFC 4327 - Link Management Protocol (LMP) Management + Information Base (MIB)"; + } + identity cblVectaStar { + base iana-interface-type; + description + "Cambridge Broadband Networks Limited VectaStar."; + } + identity docsCableMCmtsDownstream { + base iana-interface-type; + description + "CATV Modular CMTS Downstream Interface."; + } + identity adsl2 { + base iana-interface-type; + status deprecated; + description + "Asymmetric Digital Subscriber Loop Version 2 + (DEPRECATED/OBSOLETED - please use adsl2plus(238) + instead)."; + reference + "RFC 4706 - Definitions of Managed Objects for Asymmetric + Digital Subscriber Line 2 (ADSL2)"; + } + identity macSecControlledIF { + base iana-interface-type; + description + "MACSecControlled."; + } + identity macSecUncontrolledIF { + base iana-interface-type; + description + "MACSecUncontrolled."; + } + identity aviciOpticalEther { + base iana-interface-type; + description + "Avici Optical Ethernet Aggregate."; + } + identity atmbond { + base iana-interface-type; + description + "atmbond."; + } + identity voiceFGDOS { + base iana-interface-type; + description + "Voice FGD Operator Services."; + } + identity mocaVersion1 { + base iana-interface-type; + description + "MultiMedia over Coax Alliance (MoCA) Interface + as documented in information provided privately to IANA."; + } + identity ieee80216WMAN { + base iana-interface-type; + description + "IEEE 802.16 WMAN interface."; + } + identity adsl2plus { + base iana-interface-type; + description + "Asymmetric Digital Subscriber Loop Version 2 - + Version 2 Plus and all variants."; + } + identity dvbRcsMacLayer { + base iana-interface-type; + description + "DVB-RCS MAC Layer."; + reference + "RFC 5728 - The SatLabs Group DVB-RCS MIB"; + } + identity dvbTdm { + base iana-interface-type; + description + "DVB Satellite TDM."; + reference + "RFC 5728 - The SatLabs Group DVB-RCS MIB"; + } + identity dvbRcsTdma { + base iana-interface-type; + description + "DVB-RCS TDMA."; + reference + "RFC 5728 - The SatLabs Group DVB-RCS MIB"; + } + identity x86Laps { + base iana-interface-type; + description + "LAPS based on ITU-T X.86/Y.1323."; + } + identity wwanPP { + base iana-interface-type; + description + "3GPP WWAN."; + } + identity wwanPP2 { + base iana-interface-type; + description + "3GPP2 WWAN."; + } + identity voiceEBS { + base iana-interface-type; + description + "Voice P-phone EBS physical interface."; + } + identity ifPwType { + base iana-interface-type; + description + "Pseudowire interface type."; + reference + "RFC 5601 - Pseudowire (PW) Management Information Base (MIB)"; + } + identity ilan { + base iana-interface-type; + description + "Internal LAN on a bridge per IEEE 802.1ap."; + } + identity pip { + base iana-interface-type; + description + "Provider Instance Port on a bridge per IEEE 802.1ah PBB."; + } + identity aluELP { + base iana-interface-type; + description + "Alcatel-Lucent Ethernet Link Protection."; + } + identity gpon { + base iana-interface-type; + description + "Gigabit-capable passive optical networks (G-PON) as per + ITU-T G.948."; + } + identity vdsl2 { + base iana-interface-type; + description + "Very high speed digital subscriber line Version 2 + (as per ITU-T Recommendation G.993.2)."; + reference + "RFC 5650 - Definitions of Managed Objects for Very High + Speed Digital Subscriber Line 2 (VDSL2)"; + } + identity capwapDot11Profile { + base iana-interface-type; + description + "WLAN Profile Interface."; + reference + "RFC 5834 - Control and Provisioning of Wireless Access + Points (CAPWAP) Protocol Binding MIB for + IEEE 802.11"; + } + identity capwapDot11Bss { + base iana-interface-type; + description + "WLAN BSS Interface."; + reference + "RFC 5834 - Control and Provisioning of Wireless Access + Points (CAPWAP) Protocol Binding MIB for + IEEE 802.11"; + } + identity capwapWtpVirtualRadio { + base iana-interface-type; + description + "WTP Virtual Radio Interface."; + reference + "RFC 5833 - Control and Provisioning of Wireless Access + Points (CAPWAP) Protocol Base MIB"; + } + identity bits { + base iana-interface-type; + description + "bitsport."; + } + identity docsCableUpstreamRfPort { + base iana-interface-type; + description + "DOCSIS CATV Upstream RF Port."; + } + identity cableDownstreamRfPort { + base iana-interface-type; + description + "CATV downstream RF Port."; + } + identity vmwareVirtualNic { + base iana-interface-type; + description + "VMware Virtual Network Interface."; + } + identity ieee802154 { + base iana-interface-type; + description + "IEEE 802.15.4 WPAN interface."; + reference + "IEEE 802.15.4-2006"; + } + identity otnOdu { + base iana-interface-type; + description + "OTN Optical Data Unit."; + } + identity otnOtu { + base iana-interface-type; + description + "OTN Optical channel Transport Unit."; + } + identity ifVfiType { + base iana-interface-type; + description + "VPLS Forwarding Instance Interface Type."; + } + identity g9981 { + base iana-interface-type; + description + "G.998.1 bonded interface."; + } + identity g9982 { + base iana-interface-type; + description + "G.998.2 bonded interface."; + } + identity g9983 { + base iana-interface-type; + description + "G.998.3 bonded interface."; + } + identity aluEpon { + base iana-interface-type; + description + "Ethernet Passive Optical Networks (E-PON)."; + } + identity aluEponOnu { + base iana-interface-type; + description + "EPON Optical Network Unit."; + } + identity aluEponPhysicalUni { + base iana-interface-type; + description + "EPON physical User to Network interface."; + } + identity aluEponLogicalLink { + base iana-interface-type; + description + "The emulation of a point-to-point link over the EPON + layer."; + } + identity aluGponOnu { + base iana-interface-type; + description + "GPON Optical Network Unit."; + reference + "ITU-T G.984.2"; + } + identity aluGponPhysicalUni { + base iana-interface-type; + description + "GPON physical User to Network interface."; + reference + "ITU-T G.984.2"; + } + identity vmwareNicTeam { + base iana-interface-type; + description + "VMware NIC Team."; + } +} diff --git a/yang/ietf-inet-types.yang b/yang/ietf-inet-types.yang new file mode 100644 index 0000000000000000000000000000000000000000..08fb3b536b21f500a28f50b22b53cc32a3305c8f --- /dev/null +++ b/yang/ietf-inet-types.yang @@ -0,0 +1,400 @@ +module ietf-inet-types { + namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types"; + prefix "inet"; + organization + "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; + contact + "WG Web: <http://tools.ietf.org/wg/netmod/> + WG List: <mailto:netmod@ietf.org> + WG Chair: David Kessens + <mailto:david.kessens@nsn.com> + WG Chair: Juergen Schoenwaelder + <mailto:j.schoenwaelder@jacobs-university.de> + Editor: Juergen Schoenwaelder + <mailto:j.schoenwaelder@jacobs-university.de>"; + description + "This module contains a collection of generally useful derived + YANG data types for Internet addresses and related things. + Copyright (c) 2013 IETF Trust and the persons identified as + authors of the code. All rights reserved. + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (http://trustee.ietf.org/license-info). + This version of this YANG module is part of RFC 6991; see + the RFC itself for full legal notices."; + revision 2013-07-15 { + description + "This revision adds the following new data types: + - ip-address-no-zone + - ipv4-address-no-zone + - ipv6-address-no-zone"; + reference + "RFC 6991: Common YANG Data Types"; + } + revision 2010-09-24 { + description + "Initial revision."; + reference + "RFC 6021: Common YANG Data Types"; + } + /*** collection of types related to protocol fields ***/ + typedef ip-version { + type enumeration { + enum unknown { + value "0"; + description + "An unknown or unspecified version of the Internet + protocol."; + } + enum ipv4 { + value "1"; + description + "The IPv4 protocol as defined in RFC 791."; + } + enum ipv6 { + value "2"; + description + "The IPv6 protocol as defined in RFC 2460."; + } + } + description + "This value represents the version of the IP protocol. + In the value set and its semantics, this type is equivalent + to the InetVersion textual convention of the SMIv2."; + reference + "RFC 791: Internet Protocol + RFC 2460: Internet Protocol, Version 6 (IPv6) Specification + RFC 4001: Textual Conventions for Internet Network Addresses"; + } + typedef dscp { + type uint8 { + range "0..63"; + } + description + "The dscp type represents a Differentiated Services Code Point + that may be used for marking packets in a traffic stream. + In the value set and its semantics, this type is equivalent + to the Dscp textual convention of the SMIv2."; + reference + "RFC 3289: Management Information Base for the Differentiated + Services Architecture + RFC 2474: Definition of the Differentiated Services Field + (DS Field) in the IPv4 and IPv6 Headers + RFC 2780: IANA Allocation Guidelines For Values In + the Internet Protocol and Related Headers"; + } + typedef ipv6-flow-label { + type uint32 { + range "0..1048575"; + } + description + "The ipv6-flow-label type represents the flow identifier or Flow + Label in an IPv6 packet header that may be used to + discriminate traffic flows. + In the value set and its semantics, this type is equivalent + to the IPv6FlowLabel textual convention of the SMIv2."; + reference + "RFC 3595: Textual Conventions for IPv6 Flow Label + RFC 2460: Internet Protocol, Version 6 (IPv6) Specification"; + } + typedef port-number { + type uint16 { + range "0..65535"; + } + description + "The port-number type represents a 16-bit port number of an + Internet transport-layer protocol such as UDP, TCP, DCCP, or + SCTP. Port numbers are assigned by IANA. A current list of + all assignments is available from <http://www.iana.org/>. + Note that the port number value zero is reserved by IANA. In + situations where the value zero does not make sense, it can + be excluded by subtyping the port-number type. + In the value set and its semantics, this type is equivalent + to the InetPortNumber textual convention of the SMIv2."; + reference + "RFC 768: User Datagram Protocol + RFC 793: Transmission Control Protocol + RFC 4960: Stream Control Transmission Protocol + RFC 4340: Datagram Congestion Control Protocol (DCCP) + RFC 4001: Textual Conventions for Internet Network Addresses"; + } + /*** collection of types related to autonomous systems ***/ + typedef as-number { + type uint32; + description + "The as-number type represents autonomous system numbers + which identify an Autonomous System (AS). An AS is a set + of routers under a single technical administration, using + an interior gateway protocol and common metrics to route + packets within the AS, and using an exterior gateway + protocol to route packets to other ASes. IANA maintains + the AS number space and has delegated large parts to the + regional registries. + Autonomous system numbers were originally limited to 16 + bits. BGP extensions have enlarged the autonomous system + number space to 32 bits. This type therefore uses an uint32 + base type without a range restriction in order to support + a larger autonomous system number space. + In the value set and its semantics, this type is equivalent + to the InetAutonomousSystemNumber textual convention of + the SMIv2."; + reference + "RFC 1930: Guidelines for creation, selection, and registration + of an Autonomous System (AS) + RFC 4271: A Border Gateway Protocol 4 (BGP-4) + RFC 4001: Textual Conventions for Internet Network Addresses + RFC 6793: BGP Support for Four-Octet Autonomous System (AS) + Number Space"; + } + /*** collection of types related to IP addresses and hostnames ***/ + typedef ip-address { + type union { + type inet:ipv4-address; + type inet:ipv6-address; + } + description + "The ip-address type represents an IP address and is IP + version neutral. The format of the textual representation + implies the IP version. This type supports scoped addresses + by allowing zone identifiers in the address format."; + reference + "RFC 4007: IPv6 Scoped Address Architecture"; + } + typedef ipv4-address { + type string { + pattern + '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' + + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' + + '(%[\p{N}\p{L}]+)?'; + } + description + "The ipv4-address type represents an IPv4 address in + dotted-quad notation. The IPv4 address may include a zone + index, separated by a % sign. + The zone index is used to disambiguate identical address + values. For link-local addresses, the zone index will + typically be the interface index number or the name of an + interface. If the zone index is not present, the default + zone of the device will be used. + The canonical format for the zone index is the numerical + format"; + } + typedef ipv6-address { + type string { + pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' + + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' + + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}' + + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' + + '(%[\p{N}\p{L}]+)?'; + pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' + + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)' + + '(%.+)?'; + } + description + "The ipv6-address type represents an IPv6 address in full, + mixed, shortened, and shortened-mixed notation. The IPv6 + address may include a zone index, separated by a % sign. + The zone index is used to disambiguate identical address + values. For link-local addresses, the zone index will + typically be the interface index number or the name of an + interface. If the zone index is not present, the default + zone of the device will be used. + The canonical format of IPv6 addresses uses the textual + representation defined in Section 4 of RFC 5952. The + canonical format for the zone index is the numerical + format as described in Section 11.2 of RFC 4007."; + reference + "RFC 4291: IP Version 6 Addressing Architecture + RFC 4007: IPv6 Scoped Address Architecture + RFC 5952: A Recommendation for IPv6 Address Text + Representation"; + } + typedef ip-address-no-zone { + type union { + type inet:ipv4-address-no-zone; + type inet:ipv6-address-no-zone; + } + description + "The ip-address-no-zone type represents an IP address and is + IP version neutral. The format of the textual representation + implies the IP version. This type does not support scoped + addresses since it does not allow zone identifiers in the + address format."; + reference + "RFC 4007: IPv6 Scoped Address Architecture"; + } + typedef ipv4-address-no-zone { + type inet:ipv4-address { + pattern '[0-9\.]*'; + } + description + "An IPv4 address without a zone index. This type, derived from + ipv4-address, may be used in situations where the zone is + known from the context and hence no zone index is needed."; + } + typedef ipv6-address-no-zone { + type inet:ipv6-address { + pattern '[0-9a-fA-F:\.]*'; + } + description + "An IPv6 address without a zone index. This type, derived from + ipv6-address, may be used in situations where the zone is + known from the context and hence no zone index is needed."; + reference + "RFC 4291: IP Version 6 Addressing Architecture + RFC 4007: IPv6 Scoped Address Architecture + RFC 5952: A Recommendation for IPv6 Address Text + Representation"; + } + typedef ip-prefix { + type union { + type inet:ipv4-prefix; + type inet:ipv6-prefix; + } + description + "The ip-prefix type represents an IP prefix and is IP + version neutral. The format of the textual representations + implies the IP version."; + } + typedef ipv4-prefix { + type string { + pattern + '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' + + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])' + + '/(([0-9])|([1-2][0-9])|(3[0-2]))'; + } + description + "The ipv4-prefix type represents an IPv4 address prefix. + The prefix length is given by the number following the + slash character and must be less than or equal to 32. + A prefix length value of n corresponds to an IP address + mask that has n contiguous 1-bits from the most + significant bit (MSB) and all other bits set to 0. + The canonical format of an IPv4 prefix has all bits of + the IPv4 address set to zero that are not part of the + IPv4 prefix."; + } + typedef ipv6-prefix { + type string { + pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}' + + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|' + + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}' + + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))' + + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))'; + pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|' + + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)' + + '(/.+)'; + } + description + "The ipv6-prefix type represents an IPv6 address prefix. + The prefix length is given by the number following the + slash character and must be less than or equal to 128. + A prefix length value of n corresponds to an IP address + mask that has n contiguous 1-bits from the most + significant bit (MSB) and all other bits set to 0. + The IPv6 address should have all bits that do not belong + to the prefix set to zero. + The canonical format of an IPv6 prefix has all bits of + the IPv6 address set to zero that are not part of the + IPv6 prefix. Furthermore, the IPv6 address is represented + as defined in Section 4 of RFC 5952."; + reference + "RFC 5952: A Recommendation for IPv6 Address Text + Representation"; + } + /*** collection of domain name and URI types ***/ + typedef domain-name { + type string { + pattern + '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*' + + '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)' + + '|\.'; + length "1..253"; + } + description + "The domain-name type represents a DNS domain name. The + name SHOULD be fully qualified whenever possible. + Internet domain names are only loosely specified. Section + 3.5 of RFC 1034 recommends a syntax (modified in Section + 2.1 of RFC 1123). The pattern above is intended to allow + for current practice in domain name use, and some possible + future expansion. It is designed to hold various types of + domain names, including names used for A or AAAA records + (host names) and other records, such as SRV records. Note + that Internet host names have a stricter syntax (described + in RFC 952) than the DNS recommendations in RFCs 1034 and + 1123, and that systems that want to store host names in + schema nodes using the domain-name type are recommended to + adhere to this stricter standard to ensure interoperability. + The encoding of DNS names in the DNS protocol is limited + to 255 characters. Since the encoding consists of labels + prefixed by a length bytes and there is a trailing NULL + byte, only 253 characters can appear in the textual dotted + notation. + The description clause of schema nodes using the domain-name + type MUST describe when and how these names are resolved to + IP addresses. Note that the resolution of a domain-name value + may require to query multiple DNS records (e.g., A for IPv4 + and AAAA for IPv6). The order of the resolution process and + which DNS record takes precedence can either be defined + explicitly or may depend on the configuration of the + resolver. + Domain-name values use the US-ASCII encoding. Their canonical + format uses lowercase US-ASCII characters. Internationalized + domain names MUST be A-labels as per RFC 5890."; + reference + "RFC 952: DoD Internet Host Table Specification + RFC 1034: Domain Names - Concepts and Facilities + RFC 1123: Requirements for Internet Hosts -- Application + and Support + RFC 2782: A DNS RR for specifying the location of services + (DNS SRV) + RFC 5890: Internationalized Domain Names in Applications + (IDNA): Definitions and Document Framework"; + } + typedef host { + type union { + type inet:ip-address; + type inet:domain-name; + } + description + "The host type represents either an IP address or a DNS + domain name."; + } + typedef uri { + type string; + description + "The uri type represents a Uniform Resource Identifier + (URI) as defined by STD 66. + Objects using the uri type MUST be in US-ASCII encoding, + and MUST be normalized as described by RFC 3986 Sections + 6.2.1, 6.2.2.1, and 6.2.2.2. All unnecessary + percent-encoding is removed, and all case-insensitive + characters are set to lowercase except for hexadecimal + digits, which are normalized to uppercase as described in + Section 6.2.2.1. + The purpose of this normalization is to help provide + unique URIs. Note that this normalization is not + sufficient to provide uniqueness. Two URIs that are + textually distinct after this normalization may still be + equivalent. + Objects using the uri type may restrict the schemes that + they permit. For example, 'data:' and 'urn:' schemes + might not be appropriate. + A zero-length URI is not a valid URI. This can be used to + express 'URI absent' where required. + In the value set and its semantics, this type is equivalent + to the Uri SMIv2 textual convention defined in RFC 5017."; + reference + "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax + RFC 3305: Report from the Joint W3C/IETF URI Planning Interest + Group: Uniform Resource Identifiers (URIs), URLs, + and Uniform Resource Names (URNs): Clarifications + and Recommendations + RFC 5017: MIB Textual Conventions for Uniform Resource + Identifiers (URIs)"; + } +} diff --git a/yang/ietf-interfaces.yang b/yang/ietf-interfaces.yang new file mode 100644 index 0000000000000000000000000000000000000000..a84d2c232edff71c21428461b4bb0b578d78bb2f --- /dev/null +++ b/yang/ietf-interfaces.yang @@ -0,0 +1,602 @@ +module ietf-interfaces { + namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces"; + prefix if; + import ietf-yang-types { + prefix yang; + } + organization + "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; + contact + "WG Web: <http://tools.ietf.org/wg/netmod/> + WG List: <mailto:netmod@ietf.org> + WG Chair: Thomas Nadeau + <mailto:tnadeau@lucidvision.com> + WG Chair: Juergen Schoenwaelder + <mailto:j.schoenwaelder@jacobs-university.de> + Editor: Martin Bjorklund + <mailto:mbj@tail-f.com>"; + description + "This module contains a collection of YANG definitions for + managing network interfaces. + Copyright (c) 2014 IETF Trust and the persons identified as + authors of the code. All rights reserved. + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (http://trustee.ietf.org/license-info). + This version of this YANG module is part of RFC 7223; see + the RFC itself for full legal notices."; + revision 2014-05-08 { + description + "Initial revision."; + reference + "RFC 7223: A YANG Data Model for Interface Management"; + } + /* + * Typedefs + */ + typedef interface-ref { + type leafref { + path "/if:interfaces/if:interface/if:name"; + } + description + "This type is used by data models that need to reference + configured interfaces."; + } + typedef interface-state-ref { + type leafref { + path "/if:interfaces-state/if:interface/if:name"; + } + description + "This type is used by data models that need to reference + the operationally present interfaces."; + } + /* + * Identities + */ + identity interface-type { + description + "Base identity from which specific interface types are + derived."; + } + /* + * Features + */ + feature arbitrary-names { + description + "This feature indicates that the device allows user-controlled + interfaces to be named arbitrarily."; + } + feature pre-provisioning { + description + "This feature indicates that the device supports + pre-provisioning of interface configuration, i.e., it is + possible to configure an interface whose physical interface + hardware is not present on the device."; + } + feature if-mib { + description + "This feature indicates that the device implements + the IF-MIB."; + reference + "RFC 2863: The Interfaces Group MIB"; + } + /* + * Configuration data nodes + */ + container interfaces { + description + "Interface configuration parameters."; + list interface { + key "name"; + description + "The list of configured interfaces on the device. + The operational state of an interface is available in the + /interfaces-state/interface list. If the configuration of a + system-controlled interface cannot be used by the system + (e.g., the interface hardware present does not match the + interface type), then the configuration is not applied to + the system-controlled interface shown in the + /interfaces-state/interface list. If the configuration + of a user-controlled interface cannot be used by the system, + the configured interface is not instantiated in the + /interfaces-state/interface list."; + leaf name { + type string; + description + "The name of the interface. + A device MAY restrict the allowed values for this leaf, + possibly depending on the type of the interface. + For system-controlled interfaces, this leaf is the + device-specific name of the interface. The 'config false' + list /interfaces-state/interface contains the currently + existing interfaces on the device. + If a client tries to create configuration for a + system-controlled interface that is not present in the + /interfaces-state/interface list, the server MAY reject + the request if the implementation does not support + pre-provisioning of interfaces or if the name refers to + an interface that can never exist in the system. A + NETCONF server MUST reply with an rpc-error with the + error-tag 'invalid-value' in this case. + If the device supports pre-provisioning of interface + configuration, the 'pre-provisioning' feature is + advertised. + If the device allows arbitrarily named user-controlled + interfaces, the 'arbitrary-names' feature is advertised. + When a configured user-controlled interface is created by + the system, it is instantiated with the same name in the + /interface-state/interface list."; + } + leaf description { + type string; + description + "A textual description of the interface. + A server implementation MAY map this leaf to the ifAlias + MIB object. Such an implementation needs to use some + mechanism to handle the differences in size and characters + allowed between this leaf and ifAlias. The definition of + such a mechanism is outside the scope of this document. + Since ifAlias is defined to be stored in non-volatile + storage, the MIB implementation MUST map ifAlias to the + value of 'description' in the persistently stored + datastore. + Specifically, if the device supports ':startup', when + ifAlias is read the device MUST return the value of + 'description' in the 'startup' datastore, and when it is + written, it MUST be written to the 'running' and 'startup' + datastores. Note that it is up to the implementation to + decide whether to modify this single leaf in 'startup' or + perform an implicit copy-config from 'running' to + 'startup'. + If the device does not support ':startup', ifAlias MUST + be mapped to the 'description' leaf in the 'running' + datastore."; + reference + "RFC 2863: The Interfaces Group MIB - ifAlias"; + } + leaf type { + type identityref { + base interface-type; + } + mandatory true; + description + "The type of the interface. + When an interface entry is created, a server MAY + initialize the type leaf with a valid value, e.g., if it + is possible to derive the type from the name of the + interface. + If a client tries to set the type of an interface to a + value that can never be used by the system, e.g., if the + type is not supported or if the type does not match the + name of the interface, the server MUST reject the request. + A NETCONF server MUST reply with an rpc-error with the + error-tag 'invalid-value' in this case."; + reference + "RFC 2863: The Interfaces Group MIB - ifType"; + } + leaf enabled { + type boolean; + default "true"; + description + "This leaf contains the configured, desired state of the + interface. + Systems that implement the IF-MIB use the value of this + leaf in the 'running' datastore to set + IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry + has been initialized, as described in RFC 2863. + Changes in this leaf in the 'running' datastore are + reflected in ifAdminStatus, but if ifAdminStatus is + changed over SNMP, this leaf is not affected."; + reference + "RFC 2863: The Interfaces Group MIB - ifAdminStatus"; + } + leaf link-up-down-trap-enable { + if-feature if-mib; + type enumeration { + enum enabled { + value 1; + } + enum disabled { + value 2; + } + } + description + "Controls whether linkUp/linkDown SNMP notifications + should be generated for this interface. + If this node is not configured, the value 'enabled' is + operationally used by the server for interfaces that do + not operate on top of any other interface (i.e., there are + no 'lower-layer-if' entries), and 'disabled' otherwise."; + reference + "RFC 2863: The Interfaces Group MIB - + ifLinkUpDownTrapEnable"; + } + } + } + /* + * Operational state data nodes + */ + container interfaces-state { + config false; + description + "Data nodes for the operational state of interfaces."; + list interface { + key "name"; + description + "The list of interfaces on the device. + System-controlled interfaces created by the system are + always present in this list, whether they are configured or + not."; + leaf name { + type string; + description + "The name of the interface. + A server implementation MAY map this leaf to the ifName + MIB object. Such an implementation needs to use some + mechanism to handle the differences in size and characters + allowed between this leaf and ifName. The definition of + such a mechanism is outside the scope of this document."; + reference + "RFC 2863: The Interfaces Group MIB - ifName"; + } + leaf type { + type identityref { + base interface-type; + } + mandatory true; + description + "The type of the interface."; + reference + "RFC 2863: The Interfaces Group MIB - ifType"; + } + leaf admin-status { + if-feature if-mib; + type enumeration { + enum up { + value 1; + description + "Ready to pass packets."; + } + enum down { + value 2; + description + "Not ready to pass packets and not in some test mode."; + } + enum testing { + value 3; + description + "In some test mode."; + } + } + mandatory true; + description + "The desired state of the interface. + This leaf has the same read semantics as ifAdminStatus."; + reference + "RFC 2863: The Interfaces Group MIB - ifAdminStatus"; + } + leaf oper-status { + type enumeration { + enum up { + value 1; + description + "Ready to pass packets."; + } + enum down { + value 2; + description + "The interface does not pass any packets."; + } + enum testing { + value 3; + description + "In some test mode. No operational packets can + be passed."; + } + enum unknown { + value 4; + description + "Status cannot be determined for some reason."; + } + enum dormant { + value 5; + description + "Waiting for some external event."; + } + enum not-present { + value 6; + description + "Some component (typically hardware) is missing."; + } + enum lower-layer-down { + value 7; + description + "Down due to state of lower-layer interface(s)."; + } + } + mandatory true; + description + "The current operational state of the interface. + This leaf has the same semantics as ifOperStatus."; + reference + "RFC 2863: The Interfaces Group MIB - ifOperStatus"; + } + leaf last-change { + type yang:date-and-time; + description + "The time the interface entered its current operational + state. If the current state was entered prior to the + last re-initialization of the local network management + subsystem, then this node is not present."; + reference + "RFC 2863: The Interfaces Group MIB - ifLastChange"; + } + leaf if-index { + if-feature if-mib; + type int32 { + range "1..2147483647"; + } + mandatory true; + description + "The ifIndex value for the ifEntry represented by this + interface."; + reference + "RFC 2863: The Interfaces Group MIB - ifIndex"; + } + leaf phys-address { + type yang:phys-address; + description + "The interface's address at its protocol sub-layer. For + example, for an 802.x interface, this object normally + contains a Media Access Control (MAC) address. The + interface's media-specific modules must define the bit + and byte ordering and the format of the value of this + object. For interfaces that do not have such an address + (e.g., a serial line), this node is not present."; + reference + "RFC 2863: The Interfaces Group MIB - ifPhysAddress"; + } + leaf-list higher-layer-if { + type interface-state-ref; + description + "A list of references to interfaces layered on top of this + interface."; + reference + "RFC 2863: The Interfaces Group MIB - ifStackTable"; + } + leaf-list lower-layer-if { + type interface-state-ref; + description + "A list of references to interfaces layered underneath this + interface."; + reference + "RFC 2863: The Interfaces Group MIB - ifStackTable"; + } + leaf speed { + type yang:gauge64; + units "bits/second"; + description + "An estimate of the interface's current bandwidth in bits + per second. For interfaces that do not vary in + bandwidth or for those where no accurate estimation can + be made, this node should contain the nominal bandwidth. + For interfaces that have no concept of bandwidth, this + node is not present."; + reference + "RFC 2863: The Interfaces Group MIB - + ifSpeed, ifHighSpeed"; + } + container statistics { + description + "A collection of interface-related statistics objects."; + leaf discontinuity-time { + type yang:date-and-time; + mandatory true; + description + "The time on the most recent occasion at which any one or + more of this interface's counters suffered a + discontinuity. If no such discontinuities have occurred + since the last re-initialization of the local management + subsystem, then this node contains the time the local + management subsystem re-initialized itself."; + } + leaf in-octets { + type yang:counter64; + description + "The total number of octets received on the interface, + including framing characters. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCInOctets"; + } + leaf in-unicast-pkts { + type yang:counter64; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were not addressed to a + multicast or broadcast address at this sub-layer. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts"; + } + leaf in-broadcast-pkts { + type yang:counter64; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were addressed to a broadcast + address at this sub-layer. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCInBroadcastPkts"; + } + leaf in-multicast-pkts { + type yang:counter64; + description + "The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were addressed to a multicast + address at this sub-layer. For a MAC-layer protocol, + this includes both Group and Functional addresses. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCInMulticastPkts"; + } + leaf in-discards { + type yang:counter32; + description + "The number of inbound packets that were chosen to be + discarded even though no errors had been detected to + prevent their being deliverable to a higher-layer + protocol. One possible reason for discarding such a + packet could be to free up buffer space. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInDiscards"; + } + leaf in-errors { + type yang:counter32; + description + "For packet-oriented interfaces, the number of inbound + packets that contained errors preventing them from being + deliverable to a higher-layer protocol. For character- + oriented or fixed-length interfaces, the number of + inbound transmission units that contained errors + preventing them from being deliverable to a higher-layer + protocol. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInErrors"; + } + leaf in-unknown-protos { + type yang:counter32; + description + "For packet-oriented interfaces, the number of packets + received via the interface that were discarded because + of an unknown or unsupported protocol. For + character-oriented or fixed-length interfaces that + support protocol multiplexing, the number of + transmission units received via the interface that were + discarded because of an unknown or unsupported protocol. + For any interface that does not support protocol + multiplexing, this counter is not present. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos"; + } + leaf out-octets { + type yang:counter64; + description + "The total number of octets transmitted out of the + interface, including framing characters. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCOutOctets"; + } + leaf out-unicast-pkts { + type yang:counter64; + description + "The total number of packets that higher-level protocols + requested be transmitted, and that were not addressed + to a multicast or broadcast address at this sub-layer, + including those that were discarded or not sent. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts"; + } + leaf out-broadcast-pkts { + type yang:counter64; + description + "The total number of packets that higher-level protocols + requested be transmitted, and that were addressed to a + broadcast address at this sub-layer, including those + that were discarded or not sent. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCOutBroadcastPkts"; + } + leaf out-multicast-pkts { + type yang:counter64; + description + "The total number of packets that higher-level protocols + requested be transmitted, and that were addressed to a + multicast address at this sub-layer, including those + that were discarded or not sent. For a MAC-layer + protocol, this includes both Group and Functional + addresses. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCOutMulticastPkts"; + } + leaf out-discards { + type yang:counter32; + description + "The number of outbound packets that were chosen to be + discarded even though no errors had been detected to + prevent their being transmitted. One possible reason + for discarding such a packet could be to free up buffer + space. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifOutDiscards"; + } + leaf out-errors { + type yang:counter32; + description + "For packet-oriented interfaces, the number of outbound + packets that could not be transmitted because of errors. + For character-oriented or fixed-length interfaces, the + number of outbound transmission units that could not be + transmitted because of errors. + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifOutErrors"; + } + } + } + } +} diff --git a/yang/ietf-yang-types.yang b/yang/ietf-yang-types.yang new file mode 100644 index 0000000000000000000000000000000000000000..2a914e6f7daa9a26b38f95760fc12a7e1ac3e65b --- /dev/null +++ b/yang/ietf-yang-types.yang @@ -0,0 +1,404 @@ +module ietf-yang-types { + namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types"; + prefix "yang"; + organization + "IETF NETMOD (NETCONF Data Modeling Language) Working Group"; + contact + "WG Web: <http://tools.ietf.org/wg/netmod/> + WG List: <mailto:netmod@ietf.org> + WG Chair: David Kessens + <mailto:david.kessens@nsn.com> + WG Chair: Juergen Schoenwaelder + <mailto:j.schoenwaelder@jacobs-university.de> + Editor: Juergen Schoenwaelder + <mailto:j.schoenwaelder@jacobs-university.de>"; + description + "This module contains a collection of generally useful derived + YANG data types. + Copyright (c) 2013 IETF Trust and the persons identified as + authors of the code. All rights reserved. + Redistribution and use in source and binary forms, with or + without modification, is permitted pursuant to, and subject + to the license terms contained in, the Simplified BSD License + set forth in Section 4.c of the IETF Trust's Legal Provisions + Relating to IETF Documents + (http://trustee.ietf.org/license-info). + This version of this YANG module is part of RFC 6991; see + the RFC itself for full legal notices."; + revision 2013-07-15 { + description + "This revision adds the following new data types: + - yang-identifier + - hex-string + - uuid + - dotted-quad"; + reference + "RFC 6991: Common YANG Data Types"; + } + revision 2010-09-24 { + description + "Initial revision."; + reference + "RFC 6021: Common YANG Data Types"; + } + /*** collection of counter and gauge types ***/ + typedef counter32 { + type uint32; + description + "The counter32 type represents a non-negative integer + that monotonically increases until it reaches a + maximum value of 2^32-1 (4294967295 decimal), when it + wraps around and starts increasing again from zero. + Counters have no defined 'initial' value, and thus, a + single value of a counter has (in general) no information + content. Discontinuities in the monotonically increasing + value normally occur at re-initialization of the + management system, and at other times as specified in the + description of a schema node using this type. If such + other times can occur, for example, the creation of + a schema node of type counter32 at times other than + re-initialization, then a corresponding schema node + should be defined, with an appropriate type, to indicate + the last discontinuity. + The counter32 type should not be used for configuration + schema nodes. A default statement SHOULD NOT be used in + combination with the type counter32. + In the value set and its semantics, this type is equivalent + to the Counter32 type of the SMIv2."; + reference + "RFC 2578: Structure of Management Information Version 2 + (SMIv2)"; + } + typedef zero-based-counter32 { + type yang:counter32; + default "0"; + description + "The zero-based-counter32 type represents a counter32 + that has the defined 'initial' value zero. + A schema node of this type will be set to zero (0) on creation + and will thereafter increase monotonically until it reaches + a maximum value of 2^32-1 (4294967295 decimal), when it + wraps around and starts increasing again from zero. + Provided that an application discovers a new schema node + of this type within the minimum time to wrap, it can use the + 'initial' value as a delta. It is important for a management + station to be aware of this minimum time and the actual time + between polls, and to discard data if the actual time is too + long or there is no defined minimum time. + In the value set and its semantics, this type is equivalent + to the ZeroBasedCounter32 textual convention of the SMIv2."; + reference + "RFC 4502: Remote Network Monitoring Management Information + Base Version 2"; + } + typedef counter64 { + type uint64; + description + "The counter64 type represents a non-negative integer + that monotonically increases until it reaches a + maximum value of 2^64-1 (18446744073709551615 decimal), + when it wraps around and starts increasing again from zero. + Counters have no defined 'initial' value, and thus, a + single value of a counter has (in general) no information + content. Discontinuities in the monotonically increasing + value normally occur at re-initialization of the + management system, and at other times as specified in the + description of a schema node using this type. If such + other times can occur, for example, the creation of + a schema node of type counter64 at times other than + re-initialization, then a corresponding schema node + should be defined, with an appropriate type, to indicate + the last discontinuity. + The counter64 type should not be used for configuration + schema nodes. A default statement SHOULD NOT be used in + combination with the type counter64. + In the value set and its semantics, this type is equivalent + to the Counter64 type of the SMIv2."; + reference + "RFC 2578: Structure of Management Information Version 2 + (SMIv2)"; + } + typedef zero-based-counter64 { + type yang:counter64; + default "0"; + description + "The zero-based-counter64 type represents a counter64 that + has the defined 'initial' value zero. + A schema node of this type will be set to zero (0) on creation + and will thereafter increase monotonically until it reaches + a maximum value of 2^64-1 (18446744073709551615 decimal), + when it wraps around and starts increasing again from zero. + Provided that an application discovers a new schema node + of this type within the minimum time to wrap, it can use the + 'initial' value as a delta. It is important for a management + station to be aware of this minimum time and the actual time + between polls, and to discard data if the actual time is too + long or there is no defined minimum time. + In the value set and its semantics, this type is equivalent + to the ZeroBasedCounter64 textual convention of the SMIv2."; + reference + "RFC 2856: Textual Conventions for Additional High Capacity + Data Types"; + } + typedef gauge32 { + type uint32; + description + "The gauge32 type represents a non-negative integer, which + may increase or decrease, but shall never exceed a maximum + value, nor fall below a minimum value. The maximum value + cannot be greater than 2^32-1 (4294967295 decimal), and + the minimum value cannot be smaller than 0. The value of + a gauge32 has its maximum value whenever the information + being modeled is greater than or equal to its maximum + value, and has its minimum value whenever the information + being modeled is smaller than or equal to its minimum value. + If the information being modeled subsequently decreases + below (increases above) the maximum (minimum) value, the + gauge32 also decreases (increases). + In the value set and its semantics, this type is equivalent + to the Gauge32 type of the SMIv2."; + reference + "RFC 2578: Structure of Management Information Version 2 + (SMIv2)"; + } + typedef gauge64 { + type uint64; + description + "The gauge64 type represents a non-negative integer, which + may increase or decrease, but shall never exceed a maximum + value, nor fall below a minimum value. The maximum value + cannot be greater than 2^64-1 (18446744073709551615), and + the minimum value cannot be smaller than 0. The value of + a gauge64 has its maximum value whenever the information + being modeled is greater than or equal to its maximum + value, and has its minimum value whenever the information + being modeled is smaller than or equal to its minimum value. + If the information being modeled subsequently decreases + below (increases above) the maximum (minimum) value, the + gauge64 also decreases (increases). + In the value set and its semantics, this type is equivalent + to the CounterBasedGauge64 SMIv2 textual convention defined + in RFC 2856"; + reference + "RFC 2856: Textual Conventions for Additional High Capacity + Data Types"; + } + /*** collection of identifier-related types ***/ + typedef object-identifier { + type string { + pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))' + + '(\.(0|([1-9]\d*)))*'; + } + description + "The object-identifier type represents administratively + assigned names in a registration-hierarchical-name tree. + Values of this type are denoted as a sequence of numerical + non-negative sub-identifier values. Each sub-identifier + value MUST NOT exceed 2^32-1 (4294967295). Sub-identifiers + are separated by single dots and without any intermediate + whitespace. + The ASN.1 standard restricts the value space of the first + sub-identifier to 0, 1, or 2. Furthermore, the value space + of the second sub-identifier is restricted to the range + 0 to 39 if the first sub-identifier is 0 or 1. Finally, + the ASN.1 standard requires that an object identifier + has always at least two sub-identifiers. The pattern + captures these restrictions. + Although the number of sub-identifiers is not limited, + module designers should realize that there may be + implementations that stick with the SMIv2 limit of 128 + sub-identifiers. + This type is a superset of the SMIv2 OBJECT IDENTIFIER type + since it is not restricted to 128 sub-identifiers. Hence, + this type SHOULD NOT be used to represent the SMIv2 OBJECT + IDENTIFIER type; the object-identifier-128 type SHOULD be + used instead."; + reference + "ISO9834-1: Information technology -- Open Systems + Interconnection -- Procedures for the operation of OSI + Registration Authorities: General procedures and top + arcs of the ASN.1 Object Identifier tree"; + } + typedef object-identifier-128 { + type object-identifier { + pattern '\d*(\.\d*){1,127}'; + } + description + "This type represents object-identifiers restricted to 128 + sub-identifiers. + In the value set and its semantics, this type is equivalent + to the OBJECT IDENTIFIER type of the SMIv2."; + reference + "RFC 2578: Structure of Management Information Version 2 + (SMIv2)"; + } + typedef yang-identifier { + type string { + length "1..max"; + pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*'; + pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*'; + } + description + "A YANG identifier string as defined by the 'identifier' + rule in Section 12 of RFC 6020. An identifier must + start with an alphabetic character or an underscore + followed by an arbitrary sequence of alphabetic or + numeric characters, underscores, hyphens, or dots. + A YANG identifier MUST NOT start with any possible + combination of the lowercase or uppercase character + sequence 'xml'."; + reference + "RFC 6020: YANG - A Data Modeling Language for the Network + Configuration Protocol (NETCONF)"; + } + /*** collection of types related to date and time***/ + typedef date-and-time { + type string { + pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?' + + '(Z|[\+\-]\d{2}:\d{2})'; + } + description + "The date-and-time type is a profile of the ISO 8601 + standard for representation of dates and times using the + Gregorian calendar. The profile is defined by the + date-time production in Section 5.6 of RFC 3339. + The date-and-time type is compatible with the dateTime XML + schema type with the following notable exceptions: + (a) The date-and-time type does not allow negative years. + (b) The date-and-time time-offset -00:00 indicates an unknown + time zone (see RFC 3339) while -00:00 and +00:00 and Z + all represent the same time zone in dateTime. + (c) The canonical format (see below) of data-and-time values + differs from the canonical format used by the dateTime XML + schema type, which requires all times to be in UTC using + the time-offset 'Z'. + This type is not equivalent to the DateAndTime textual + convention of the SMIv2 since RFC 3339 uses a different + separator between full-date and full-time and provides + higher resolution of time-secfrac. + The canonical format for date-and-time values with a known time + zone uses a numeric time zone offset that is calculated using + the device's configured known offset to UTC time. A change of + the device's offset to UTC time will cause date-and-time values + to change accordingly. Such changes might happen periodically + in case a server follows automatically daylight saving time + (DST) time zone offset changes. The canonical format for + date-and-time values with an unknown time zone (usually + referring to the notion of local time) uses the time-offset + -00:00."; + reference + "RFC 3339: Date and Time on the Internet: Timestamps + RFC 2579: Textual Conventions for SMIv2 + XSD-TYPES: XML Schema Part 2: Datatypes Second Edition"; + } + typedef timeticks { + type uint32; + description + "The timeticks type represents a non-negative integer that + represents the time, modulo 2^32 (4294967296 decimal), in + hundredths of a second between two epochs. When a schema + node is defined that uses this type, the description of + the schema node identifies both of the reference epochs. + In the value set and its semantics, this type is equivalent + to the TimeTicks type of the SMIv2."; + reference + "RFC 2578: Structure of Management Information Version 2 + (SMIv2)"; + } + typedef timestamp { + type yang:timeticks; + description + "The timestamp type represents the value of an associated + timeticks schema node at which a specific occurrence + happened. The specific occurrence must be defined in the + description of any schema node defined using this type. When + the specific occurrence occurred prior to the last time the + associated timeticks attribute was zero, then the timestamp + value is zero. Note that this requires all timestamp values + to be reset to zero when the value of the associated timeticks + attribute reaches 497+ days and wraps around to zero. + The associated timeticks schema node must be specified + in the description of any schema node using this type. + In the value set and its semantics, this type is equivalent + to the TimeStamp textual convention of the SMIv2."; + reference + "RFC 2579: Textual Conventions for SMIv2"; + } + /*** collection of generic address types ***/ + typedef phys-address { + type string { + pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'; + } + description + "Represents media- or physical-level addresses represented + as a sequence octets, each octet represented by two hexadecimal + numbers. Octets are separated by colons. The canonical + representation uses lowercase characters. + In the value set and its semantics, this type is equivalent + to the PhysAddress textual convention of the SMIv2."; + reference + "RFC 2579: Textual Conventions for SMIv2"; + } + typedef mac-address { + type string { + pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}'; + } + description + "The mac-address type represents an IEEE 802 MAC address. + The canonical representation uses lowercase characters. + In the value set and its semantics, this type is equivalent + to the MacAddress textual convention of the SMIv2."; + reference + "IEEE 802: IEEE Standard for Local and Metropolitan Area + Networks: Overview and Architecture + RFC 2579: Textual Conventions for SMIv2"; + } + /*** collection of XML-specific types ***/ + typedef xpath1.0 { + type string; + description + "This type represents an XPATH 1.0 expression. + When a schema node is defined that uses this type, the + description of the schema node MUST specify the XPath + context in which the XPath expression is evaluated."; + reference + "XPATH: XML Path Language (XPath) Version 1.0"; + } + /*** collection of string types ***/ + typedef hex-string { + type string { + pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?'; + } + description + "A hexadecimal string with octets represented as hex digits + separated by colons. The canonical representation uses + lowercase characters."; + } + typedef uuid { + type string { + pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-' + + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}'; + } + description + "A Universally Unique IDentifier in the string representation + defined in RFC 4122. The canonical representation uses + lowercase characters. + The following is an example of a UUID in string representation: + f81d4fae-7dec-11d0-a765-00a0c91e6bf6 + "; + reference + "RFC 4122: A Universally Unique IDentifier (UUID) URN + Namespace"; + } + typedef dotted-quad { + type string { + pattern + '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}' + + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'; + } + description + "An unsigned 32-bit number expressed in the dotted-quad + notation, i.e., four octets written as decimal numbers + and separated with the '.' (full stop) character."; + } +} diff --git a/yang/openconfig-extensions.yang b/yang/openconfig-extensions.yang new file mode 100644 index 0000000000000000000000000000000000000000..179b9ea91b7522752eaf82559643b78b73117aa1 --- /dev/null +++ b/yang/openconfig-extensions.yang @@ -0,0 +1,89 @@ +module openconfig-extensions { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/openconfig-ext"; + + prefix "oc-ext"; + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module provides extensions to the YANG language to allow + OpenConfig specific functionality and meta-data to be defined."; + + revision "2017-01-29" { + description + "Added extension for annotating encrypted values."; + reference "TBD"; + } + + revision "2015-10-09" { + description + "Initial OpenConfig public release"; + reference "TBD"; + } + + revision "2015-10-05" { + description + "Initial revision"; + reference "TBD"; + } + + // extension statements + extension openconfig-version { + argument "semver" { + yin-element false; + } + description + "The OpenConfig version number for the module. This is + expressed as a semantic version number of the form: + x.y.z + where: + * x corresponds to the major version, + * y corresponds to a minor version, + * z corresponds to a patch version. + This version corresponds to the model file within which it is + defined, and does not cover the whole set of OpenConfig models. + Where several modules are used to build up a single block of + functionality, the same module version is specified across each + file that makes up the module. + + A major version number of 0 indicates that this model is still + in development (whether within OpenConfig or with industry + partners), and is potentially subject to change. + + Following a release of major version 1, all modules will + increment major revision number where backwards incompatible + changes to the model are made. + + The minor version is changed when features are added to the + model that do not impact current clients use of the model. + + The patch-level version is incremented when non-feature changes + (such as bugfixes or clarifications to human-readable + descriptions that do not impact model functionality) are made + that maintain backwards compatibility. + + The version number is stored in the module meta-data."; + } + + extension openconfig-encrypted-value { + description + "This extension provides an annotation on schema nodes to + indicate that the corresponding value should be stored and + reported in encrypted form. + + Clients reading the configuration or applied configuration + for the node should expect to receive only the encrypted value. + This annotation may be used on nodes such as secure passwords + in which the device never reports a cleartext value, even + if the input is provided as cleartext."; + } +} \ No newline at end of file diff --git a/yang/openconfig-if-aggregate.yang b/yang/openconfig-if-aggregate.yang new file mode 100644 index 0000000000000000000000000000000000000000..0fd5b3ffe60100e7123f99bdc8845d5cead896d7 --- /dev/null +++ b/yang/openconfig-if-aggregate.yang @@ -0,0 +1,192 @@ +module openconfig-if-aggregate { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/interfaces/aggregate"; + + prefix "oc-lag"; + + // import some basic types + import openconfig-interfaces { prefix oc-if; } + import openconfig-if-ethernet { prefix oc-eth; } + import iana-if-type { prefix ift; } + import openconfig-extensions { prefix oc-ext; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "Model for managing aggregated (aka bundle, LAG) interfaces."; + + oc-ext:openconfig-version "1.1.0"; + + revision "2016-12-22" { + description + "Fixes to Ethernet interfaces model"; + reference "1.1.0"; + } + + // extension statements + + // feature statements + + // identity statements + + // typedef statements + + + + typedef aggregation-type { + type enumeration { + enum LACP { + description "LAG managed by LACP"; + } + enum STATIC { + description "Statically configured bundle / LAG"; + } + } + description + "Type to define the lag-type, i.e., how the LAG is + defined and managed"; + } + + // grouping statements + + + grouping aggregation-logical-config { + description + "Configuration data for aggregate interfaces"; + + + leaf lag-type { + type aggregation-type; + description + "Sets the type of LAG, i.e., how it is + configured / maintained"; + } + + leaf min-links { + type uint16; + description + "Specifies the mininum number of member + interfaces that must be active for the aggregate interface + to be available"; + } + } + + grouping aggregation-logical-state { + description + "Operational state data for aggregate interfaces"; + + leaf lag-speed { + type uint32; + units Mbps; + description + "Reports effective speed of the aggregate interface, + based on speed of active member interfaces"; + } + + leaf-list member { + when "oc-lag:lag-type = 'STATIC'" { + description + "The simple list of member interfaces is active + when the aggregate is statically configured"; + } + type oc-if:base-interface-ref; + description + "List of current member interfaces for the aggregate, + expressed as references to existing interfaces"; + } + } + + grouping aggregation-logical-top { + description "Top-level data definitions for LAGs"; + + container aggregation { + + description + "Options for logical interfaces representing + aggregates"; + + container config { + description + "Configuration variables for logical aggregate / + LAG interfaces"; + + uses aggregation-logical-config; + } + + container state { + + config false; + description + "Operational state variables for logical + aggregate / LAG interfaces"; + + uses aggregation-logical-config; + uses aggregation-logical-state; + + } + } + } + + grouping ethernet-if-aggregation-config { + description + "Adds configuration items for Ethernet interfaces + belonging to a logical aggregate / LAG"; + + leaf aggregate-id { + type leafref { + path "/oc-if:interfaces/oc-if:interface/oc-if:name"; + } + description + "Specify the logical aggregate interface to which + this interface belongs"; + } + } + + // data definition statements + + // augment statements + + augment "/oc-if:interfaces/oc-if:interface" { + when "oc-if:type = 'ift:ieee8023adLag'" { + description "active when the interface is set to type LAG"; + } + description "Adds LAG configuration to the interface module"; + + uses aggregation-logical-top; + } + + augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" + + "oc-eth:config" { + when "oc-if:type = 'ift:ethernetCsmacd'" { + description "active when the interface is Ethernet"; + } + description "Adds LAG settings to individual Ethernet + interfaces"; + + uses ethernet-if-aggregation-config; + } + + augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" + + "oc-eth:state" { + when "oc-if:type = 'ift:ethernetCsmacd'" { + description "active when the interface is Ethernet"; + } + description "Adds LAG settings to individual Ethernet + interfaces"; + + uses ethernet-if-aggregation-config; + } + + // rpc statements + + // notification statements + +} diff --git a/yang/openconfig-if-ethernet.yang b/yang/openconfig-if-ethernet.yang new file mode 100644 index 0000000000000000000000000000000000000000..9d26e9d7b88e1d683a5b7d1877645143d1eb7209 --- /dev/null +++ b/yang/openconfig-if-ethernet.yang @@ -0,0 +1,345 @@ +module openconfig-if-ethernet { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/interfaces/ethernet"; + + prefix "oc-eth"; + + // import some basic types + import openconfig-interfaces { prefix oc-if; } + import iana-if-type { prefix ift; } + import ietf-yang-types { prefix yang; } + import openconfig-extensions { prefix oc-ext; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "Model for managing Ethernet interfaces -- augments the IETF YANG + model for interfaces described by RFC 7223"; + + oc-ext:openconfig-version "1.1.0"; + + revision "2016-12-22" { + description + "Fixes to Ethernet interfaces model"; + reference "1.1.0"; + } + + // extension statements + + // feature statements + + // identity statements + + identity ETHERNET_SPEED { + description "base type to specify available Ethernet link + speeds"; + } + + identity SPEED_10MB { + base ETHERNET_SPEED; + description "10 Mbps Ethernet"; + } + + identity SPEED_100MB { + base ETHERNET_SPEED; + description "100 Mbps Ethernet"; + } + + identity SPEED_1GB { + base ETHERNET_SPEED; + description "1 GBps Ethernet"; + } + + identity SPEED_10GB { + base ETHERNET_SPEED; + description "10 GBps Ethernet"; + } + + identity SPEED_25GB { + base ETHERNET_SPEED; + description "25 GBps Ethernet"; + } + + identity SPEED_40GB { + base ETHERNET_SPEED; + description "40 GBps Ethernet"; + } + + identity SPEED_50GB { + base ETHERNET_SPEED; + description "50 GBps Ethernet"; + } + + identity SPEED_100GB { + base ETHERNET_SPEED; + description "100 GBps Ethernet"; + } + + identity SPEED_UNKNOWN { + base ETHERNET_SPEED; + description + "Interface speed is unknown. Systems may report + speed UNKNOWN when an interface is down or unpopuplated (e.g., + pluggable not present)."; + } + + // typedef statements + + + // grouping statements + + grouping ethernet-interface-config { + description "Configuration items for Ethernet interfaces"; + + leaf mac-address { + type yang:mac-address; + description + "Assigns a MAC address to the Ethernet interface. If not + specified, the corresponding operational state leaf is + expected to show the system-assigned MAC address."; + } + + leaf auto-negotiate { + type boolean; + default true; + description + "Set to TRUE to request the interface to auto-negotiate + transmission parameters with its peer interface. When + set to FALSE, the transmission parameters are specified + manually."; + reference + "IEEE 802.3-2012 auto-negotiation transmission parameters"; + } + + leaf duplex-mode { + type enumeration { + enum FULL { + description "Full duplex mode"; + } + enum HALF { + description "Half duplex mode"; + } + } + description + "When auto-negotiate is TRUE, this optionally sets the + duplex mode that will be advertised to the peer. If + unspecified, the interface should negotiate the duplex mode + directly (typically full-duplex). When auto-negotiate is + FALSE, this sets the duplex mode on the interface directly."; + } + + leaf port-speed { + type identityref { + base ETHERNET_SPEED; + } + description + "When auto-negotiate is TRUE, this optionally sets the + port-speed mode that will be advertised to the peer for + negotiation. If unspecified, it is expected that the + interface will select the highest speed available based on + negotiation. When auto-negotiate is set to FALSE, sets the + link speed to a fixed value -- supported values are defined + by ETHERNET_SPEED identities"; + } + + leaf enable-flow-control { + type boolean; + default false; + description + "Enable or disable flow control for this interface. + Ethernet flow control is a mechanism by which a receiver + may send PAUSE frames to a sender to stop transmission for + a specified time. + + This setting should override auto-negotiated flow control + settings. If left unspecified, and auto-negotiate is TRUE, + flow control mode is negotiated with the peer interface."; + reference + "IEEE 802.3x"; + } + } + + grouping ethernet-interface-state-counters { + description + "Ethernet-specific counters and statistics"; + + // ingress counters + + leaf in-mac-control-frames { + type yang:counter64; + description + "MAC layer control frames received on the interface"; + } + + leaf in-mac-pause-frames { + type yang:counter64; + description + "MAC layer PAUSE frames received on the interface"; + } + + leaf in-oversize-frames { + type yang:counter64; + description + "Number of oversize frames received on the interface"; + } + + leaf in-jabber-frames { + type yang:counter64; + description + "Number of jabber frames received on the + interface. Jabber frames are typically defined as oversize + frames which also have a bad CRC. Implementations may use + slightly different definitions of what constitutes a jabber + frame. Often indicative of a NIC hardware problem."; + } + + leaf in-fragment-frames { + type yang:counter64; + description + "Number of fragment frames received on the interface."; + } + + leaf in-8021q-frames { + type yang:counter64; + description + "Number of 802.1q tagged frames received on the interface"; + } + + leaf in-crc-errors { + type yang:counter64; + description + "Number of receive error events due to FCS/CRC check + failure"; + } + + // egress counters + + leaf out-mac-control-frames { + type yang:counter64; + description + "MAC layer control frames sent on the interface"; + } + + leaf out-mac-pause-frames { + type yang:counter64; + description + "MAC layer PAUSE frames sent on the interface"; + } + + leaf out-8021q-frames { + type yang:counter64; + description + "Number of 802.1q tagged frames sent on the interface"; + } + } + + grouping ethernet-interface-state { + description + "Grouping for defining Ethernet-specific operational state"; + + leaf hw-mac-address { + type yang:mac-address; + description + "Represenets the 'burned-in', or system-assigned, MAC + address for the Ethernet interface."; + } + + leaf effective-speed { + type uint32; + units Mbps; + description + "Reports the effective speed of the interface, e.g., the + negotiated speed if auto-negotiate is enabled"; + } + + leaf negotiated-duplex-mode { + type enumeration { + enum FULL { + description "Full duplex mode"; + } + enum HALF { + description "Half duplex mode"; + } + } + description + "When auto-negotiate is set to TRUE, and the interface has + completed auto-negotiation with the remote peer, this value + shows the duplex mode that has been negotiated."; + } + + leaf negotiated-port-speed { + type identityref { + base ETHERNET_SPEED; + } + description + "When auto-negotiate is set to TRUE, and the interface has + completed auto-negotiation with the remote peer, this value + shows the interface speed that has been negotiated."; + } + + container counters { + description "Ethernet interface counters"; + + uses ethernet-interface-state-counters; + + } + + } + + // data definition statements + + grouping ethernet-top { + description "top-level Ethernet config and state containers"; + + container ethernet { + description + "Top-level container for ethernet configuration + and state"; + + container config { + description "Configuration data for ethernet interfaces"; + + uses ethernet-interface-config; + + } + + container state { + + config false; + description "State variables for Ethernet interfaces"; + + uses ethernet-interface-config; + uses ethernet-interface-state; + + } + + } + } + + // augment statements + + augment "/oc-if:interfaces/oc-if:interface" { + description "Adds addtional Ethernet-specific configuration to + interfaces model"; + + uses ethernet-top { + when "oc-if:state/oc-if:type = 'ift:ethernetCsmacd'" { + description "Additional interface configuration parameters when + the interface type is Ethernet"; + } + } + } + + // rpc statements + + // notification statements + +} diff --git a/yang/openconfig-if-ip-ext.yang b/yang/openconfig-if-ip-ext.yang new file mode 100644 index 0000000000000000000000000000000000000000..06a79c7e1405eb106dcda488380ff6ef92d8b9be --- /dev/null +++ b/yang/openconfig-if-ip-ext.yang @@ -0,0 +1,149 @@ +module openconfig-if-ip-ext { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/interfaces/ip-ext"; + + prefix "oc-ip-ext"; + + import openconfig-interfaces { prefix oc-if; } + import openconfig-if-ip { prefix oc-ip; } + import openconfig-extensions { prefix oc-ext; } + + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + www.openconfig.net"; + + description + "This module adds extensions to the base IP configuration and + operational state model to support additional use cases."; + + oc-ext:openconfig-version "1.1.0"; + + revision "2016-12-22" { + description + "Fixes to Ethernet interfaces model"; + reference "1.1.0"; + } + + + // grouping statements + + grouping ipv6-autoconf-config { + description + "Configuration data for IPv6 address autoconfiguration"; + + leaf create-global-addresses { + type boolean; + default true; + description + "[adapted from IETF IP model RFC 7277] + + If enabled, the host creates global addresses as + described in RFC 4862."; + reference + "RFC 4862: IPv6 Stateless Address Autoconfiguration + Section 5.5"; + } + leaf create-temporary-addresses { + type boolean; + default false; + description + "[adapted from IETF IP model RFC 7277] + + If enabled, the host creates temporary addresses as + described in RFC 4941."; + reference + "RFC 4941: Privacy Extensions for Stateless Address + Autoconfiguration in IPv6"; + } + + leaf temporary-valid-lifetime { + type uint32; + units "seconds"; + default 604800; + description + "[adapted from IETF IP model RFC 7277] + + The time period during which the temporary address + is valid."; + reference + "RFC 4941: Privacy Extensions for Stateless Address + Autoconfiguration in IPv6 + - TEMP_VALID_LIFETIME"; + } + + leaf temporary-preferred-lifetime { + type uint32; + units "seconds"; + default 86400; + description + "[adapted from IETF IP model RFC 7277] + + The time period during which the temporary address is + preferred."; + reference + "RFC 4941: Privacy Extensions for Stateless Address + Autoconfiguration in IPv6 + - TEMP_PREFERRED_LIFETIME"; + } + } + + grouping ipv6-autoconf-state { + description + "Operational state data for IPv6 address autoconfiguration"; + + //TODO: placeholder for additional opstate for IPv6 autoconf + } + + grouping ipv6-autoconf-top { + description + "Top-level grouping for IPv6 address autoconfiguration"; + + container autoconf { + description + "Top-level container for IPv6 autoconf"; + + container config { + description + "[adapted from IETF IP model RFC 7277] + + Parameters to control the autoconfiguration of IPv6 + addresses, as described in RFC 4862."; + reference + "RFC 4862: IPv6 Stateless Address Autoconfiguration"; + + uses ipv6-autoconf-config; + } + + container state { + + config false; + + description + "Operational state data "; + + uses ipv6-autoconf-config; + uses ipv6-autoconf-state; + } + } + } + + // data definition statements + + // augment statements + + augment "/oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/" + + "oc-if:subinterface/oc-ip:ipv6" { + description + "Adds address autoconfiguration to the base IP model"; + + uses ipv6-autoconf-top; + } + +} \ No newline at end of file diff --git a/yang/openconfig-if-ip.yang b/yang/openconfig-if-ip.yang new file mode 100644 index 0000000000000000000000000000000000000000..17965614fc5000a160d9e2a648ba13060e17c427 --- /dev/null +++ b/yang/openconfig-if-ip.yang @@ -0,0 +1,1002 @@ +module openconfig-if-ip { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/interfaces/ip"; + + prefix "oc-ip"; + + // import some basic types + import ietf-inet-types { prefix inet; } + import openconfig-interfaces { prefix oc-if; } + import openconfig-vlan { prefix oc-vlan; } + import ietf-yang-types { prefix yang; } + import openconfig-extensions { prefix oc-ext; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "Model for managing IP interfaces. + + This model reuses most of the IETF YANG model for IP management + described by RFC 7277. The primary differences are in the + structure of configuration and state data."; + + oc-ext:openconfig-version "1.1.0"; + + revision "2016-12-22" { + description + "Fixes to Ethernet interfaces model"; + reference "1.1.0"; + } + + + // typedef statements + + typedef ip-address-origin { + type enumeration { + enum OTHER { + description + "None of the following."; + } + enum STATIC { + description + "Indicates that the address has been statically + configured - for example, using NETCONF or a Command Line + Interface."; + } + enum DHCP { + description + "Indicates an address that has been assigned to this + system by a DHCP server."; + } + enum LINK_LAYER { + description + "Indicates an address created by IPv6 stateless + autoconfiguration that embeds a link-layer address in its + interface identifier."; + } + enum RANDOM { + description + "[adapted from RFC 7277] + + Indicates an address chosen by the system at + random, e.g., an IPv4 address within 169.254/16, an + RFC 4941 temporary address, or an RFC 7217 semantically + opaque address."; + reference + "RFC 4941: Privacy Extensions for Stateless Address + Autoconfiguration in IPv6 + RFC 7217: A Method for Generating Semantically Opaque + Interface Identifiers with IPv6 Stateless + Address Autoconfiguration (SLAAC)"; + } + } + description + "The origin of an address."; + } + + typedef neighbor-origin { + type enumeration { + enum OTHER { + description + "None of the following."; + } + enum STATIC { + description + "Indicates that the mapping has been statically + configured - for example, using NETCONF or a Command Line + Interface."; + } + enum DYNAMIC { + description + "[adapted from RFC 7277] + + Indicates that the mapping has been dynamically resolved + using, e.g., IPv4 ARP or the IPv6 Neighbor Discovery + protocol."; + } + } + description + "The origin of a neighbor entry."; + } + + // grouping statements + + grouping ipv4-global-config { + description "Configuration data for IPv4 interfaces across + all addresses assigned to the interface"; + reference "RFC 7277 - A YANG Data Model for IP Management"; + + leaf enabled { + type boolean; + default true; + description + "Controls whether IPv4 is enabled or disabled on this + interface. When IPv4 is enabled, this interface is + connected to an IPv4 stack, and the interface can send + and receive IPv4 packets."; + } + + leaf mtu { + type uint16 { + range "68..max"; + } + units octets; + description + "The size, in octets, of the largest IPv4 packet that the + interface will send and receive. + + The server may restrict the allowed values for this leaf, + depending on the interface's type. + + If this leaf is not configured, the operationally used MTU + depends on the interface's type."; + reference + "RFC 791: Internet Protocol"; + } + + } + + grouping ipv4-address-config { + + description + "Per IPv4 adresss configuration data for the + interface."; + + leaf ip { + type inet:ipv4-address-no-zone; + description + "[adapted from IETF IP model RFC 7277] + + The IPv4 address on the interface."; + } + + leaf prefix-length { + type uint8 { + range "0..32"; + } + description + "[adapted from IETF IP model RFC 7277] + + The length of the subnet prefix."; + } + } + + grouping ipv4-neighbor-config { + description + "[adapted from IETF IP model RFC 7277] + + Per IPv4 neighbor configuration data. Neighbor + entries are analagous to static ARP entries, i.e., they + create a correspondence between IP and link-layer addresses"; + + leaf ip { + type inet:ipv4-address-no-zone; + description + "The IPv4 address of the neighbor node."; + } + leaf link-layer-address { + type yang:phys-address; + mandatory true; + description + "The link-layer address of the neighbor node."; + } + } + + grouping ipv4-address-state { + description + "State variables for IPv4 addresses on the interface"; + + leaf origin { + type ip-address-origin; + description + "The origin of this address, e.g., statically configured, + assigned by DHCP, etc.."; + } + } + + grouping ipv4-neighbor-state { + description + "State variables for IPv4 neighbor entries on the interface."; + + leaf origin { + type neighbor-origin; + description + "The origin of this neighbor entry, static or dynamic."; + } + } + + grouping ipv6-global-config { + description + "Configuration data at the global level for each + IPv6 interface"; + + leaf enabled { + type boolean; + default true; + description + "[adapted from IETF IP model RFC 7277] + + Controls whether IPv6 is enabled or disabled on this + interface. When IPv6 is enabled, this interface is + connected to an IPv6 stack, and the interface can send + and receive IPv6 packets."; + } + + leaf mtu { + type uint32 { + range "1280..max"; + } + units octets; + description + "[adapted from IETF IP model RFC 7277] + + The size, in octets, of the largest IPv6 packet that the + interface will send and receive. + + The server may restrict the allowed values for this leaf, + depending on the interface's type. + + If this leaf is not configured, the operationally used MTU + depends on the interface's type."; + reference + "RFC 2460: Internet Protocol, Version 6 (IPv6) Specification + Section 5"; + } + + leaf dup-addr-detect-transmits { + type uint32; + default 1; + description + "[adapted from IETF IP model RFC 7277] + + The number of consecutive Neighbor Solicitation messages + sent while performing Duplicate Address Detection on a + tentative address. A value of zero indicates that + Duplicate Address Detection is not performed on + tentative addresses. A value of one indicates a single + transmission with no follow-up retransmissions."; + reference + "RFC 4862: IPv6 Stateless Address Autoconfiguration"; + } + } + + grouping ipv6-address-config { + description "Per-address configuration data for IPv6 interfaces"; + + leaf ip { + type inet:ipv6-address-no-zone; + description + "[adapted from IETF IP model RFC 7277] + + The IPv6 address on the interface."; + } + + leaf prefix-length { + type uint8 { + range "0..128"; + } + mandatory true; + description + "[adapted from IETF IP model RFC 7277] + + The length of the subnet prefix."; + } + } + + grouping ipv6-address-state { + description + "Per-address operational state data for IPv6 interfaces"; + + leaf origin { + type ip-address-origin; + description + "[adapted from IETF IP model RFC 7277] + + The origin of this address, e.g., static, dhcp, etc."; + } + + leaf status { + type enumeration { + enum PREFERRED { + description + "This is a valid address that can appear as the + destination or source address of a packet."; + } + enum DEPRECATED { + description + "This is a valid but deprecated address that should + no longer be used as a source address in new + communications, but packets addressed to such an + address are processed as expected."; + } + enum INVALID { + description + "This isn't a valid address, and it shouldn't appear + as the destination or source address of a packet."; + } + enum INACCESSIBLE { + description + "The address is not accessible because the interface + to which this address is assigned is not + operational."; + } + enum UNKNOWN { + description + "The status cannot be determined for some reason."; + } + enum TENTATIVE { + description + "The uniqueness of the address on the link is being + verified. Addresses in this state should not be + used for general communication and should only be + used to determine the uniqueness of the address."; + } + enum DUPLICATE { + description + "The address has been determined to be non-unique on + the link and so must not be used."; + } + enum OPTIMISTIC { + description + "The address is available for use, subject to + restrictions, while its uniqueness on a link is + being verified."; + } + } + description + "[adapted from IETF IP model RFC 7277] + + The status of an address. Most of the states correspond + to states from the IPv6 Stateless Address + Autoconfiguration protocol."; + reference + "RFC 4293: Management Information Base for the + Internet Protocol (IP) + - IpAddressStatusTC + RFC 4862: IPv6 Stateless Address Autoconfiguration"; + } + } + + grouping ipv6-neighbor-config { + description + "Per-neighbor configuration data for IPv6 interfaces"; + + leaf ip { + type inet:ipv6-address-no-zone; + description + "[adapted from IETF IP model RFC 7277] + + The IPv6 address of the neighbor node."; + } + + leaf link-layer-address { + type yang:phys-address; + mandatory true; + description + "[adapted from IETF IP model RFC 7277] + + The link-layer address of the neighbor node."; + } + } + + grouping ipv6-neighbor-state { + description "Per-neighbor state variables for IPv6 interfaces"; + + leaf origin { + type neighbor-origin; + description + "[adapted from IETF IP model RFC 7277] + + The origin of this neighbor entry."; + } + leaf is-router { + type empty; + description + "[adapted from IETF IP model RFC 7277] + + Indicates that the neighbor node acts as a router."; + } + leaf neighbor-state { + type enumeration { + enum INCOMPLETE { + description + "Address resolution is in progress, and the link-layer + address of the neighbor has not yet been + determined."; + } + enum REACHABLE { + description + "Roughly speaking, the neighbor is known to have been + reachable recently (within tens of seconds ago)."; + } + enum STALE { + description + "The neighbor is no longer known to be reachable, but + until traffic is sent to the neighbor no attempt + should be made to verify its reachability."; + } + enum DELAY { + description + "The neighbor is no longer known to be reachable, and + traffic has recently been sent to the neighbor. + Rather than probe the neighbor immediately, however, + delay sending probes for a short while in order to + give upper-layer protocols a chance to provide + reachability confirmation."; + } + enum PROBE { + description + "The neighbor is no longer known to be reachable, and + unicast Neighbor Solicitation probes are being sent + to verify reachability."; + } + } + description + "[adapted from IETF IP model RFC 7277] + + The Neighbor Unreachability Detection state of this + entry."; + reference + "RFC 4861: Neighbor Discovery for IP version 6 (IPv6) + Section 7.3.2"; + } + } + + grouping ip-vrrp-ipv6-config { + description + "IPv6-specific configuration data for VRRP on IPv6 + interfaces"; + + leaf virtual-link-local { + type inet:ip-address; + description + "For VRRP on IPv6 interfaces, sets the virtual link local + address"; + } + } + + grouping ip-vrrp-ipv6-state { + description + "IPv6-specific operational state for VRRP on IPv6 interfaces"; + + uses ip-vrrp-ipv6-config; + } + + grouping ip-vrrp-tracking-config { + description + "Configuration data for tracking interfaces + in a VRRP group"; + + leaf track-interface { + type leafref { + path "/oc-if:interfaces/oc-if:interface/oc-if:name"; + } + // TODO: we may need to add some restriction to ethernet + // or IP interfaces. + description "Sets an interface that should be + tracked for up/down events to dynamically change the + priority state of the VRRP group, and potentially + change the mastership if the tracked interface going + down lowers the priority sufficiently"; + } + + leaf priority-decrement { + type uint8 { + range 0..254; + } + default 0; + description "Set the value to subtract from priority when + the tracked interface goes down"; + } + } + + grouping ip-vrrp-tracking-state { + description + "Operational state data for tracking interfaces in a VRRP + group"; + } + + grouping ip-vrrp-tracking-top { + description + "Top-level grouping for VRRP interface tracking"; + + container interface-tracking { + description + "Top-level container for VRRP interface tracking"; + + container config { + description + "Configuration data for VRRP interface tracking"; + + uses ip-vrrp-tracking-config; + } + + container state { + + config false; + + description + "Operational state data for VRRP interface tracking"; + + uses ip-vrrp-tracking-config; + uses ip-vrrp-tracking-state; + } + } + } + + grouping ip-vrrp-config { + description + "Configuration data for VRRP on IP interfaces"; + + leaf virtual-router-id { + type uint8 { + range 1..255; + } + description + "Set the virtual router id for use by the VRRP group. This + usually also determines the virtual MAC address that is + generated for the VRRP group"; + } + + leaf-list virtual-address { + type inet:ip-address; + description "Configure one or more virtual addresses for the + VRRP group"; + } + + leaf priority { + type uint8 { + range 1..254; + } + default 100; + description "Specifies the sending VRRP interface's priority + for the virtual router. Higher values equal higher + priority"; + } + + leaf preempt { + type boolean; + default true; + description "When set to true, enables preemption by a higher + priority backup router of a lower priority master router"; + } + + leaf preempt-delay { + type uint16 { + range 0..3600; + } + default 0; + description "Set the delay the higher priority router waits + before preempting"; + } + + leaf accept-mode { + type boolean; + // TODO: should we adopt the RFC default given the common + // operational practice of setting to true? + default false; + description "Configure whether packets destined for + virtual addresses are accepted even when the virtual + address is not owned by the router interface"; + } + + leaf advertisement-interval { + type uint16 { + range 1..4095; + } + // TODO this range is theoretical -- needs to be validated + // against major implementations. + units "centiseconds"; + default 100; + description "Sets the interval between successive VRRP + advertisements -- RFC 5798 defines this as a 12-bit + value expressed as 0.1 seconds, with default 100, i.e., + 1 second. Several implementation express this in units of + seconds"; + } + } + + grouping ip-vrrp-state { + description + "Operational state data for VRRP on IP interfaces"; + + leaf current-priority { + type uint8; + description "Operational value of the priority for the + interface in the VRRP group"; + } + } + + grouping ip-vrrp-top { + description + "Top-level grouping for Virtual Router Redundancy Protocol"; + + container vrrp { + description + "Enclosing container for VRRP groups handled by this + IP interface"; + + reference "RFC 5798 - Virtual Router Redundancy Protocol + (VRRP) Version 3 for IPv4 and IPv6"; + + list vrrp-group { + key "virtual-router-id"; + description + "List of VRRP groups, keyed by virtual router id"; + + leaf virtual-router-id { + type leafref { + path "../config/virtual-router-id"; + } + description + "References the configured virtual router id for this + VRRP group"; + } + + container config { + description + "Configuration data for the VRRP group"; + + uses ip-vrrp-config; + } + + container state { + + config false; + + description + "Operational state data for the VRRP group"; + + uses ip-vrrp-config; + uses ip-vrrp-state; + } + + uses ip-vrrp-tracking-top; + } + } + } + + grouping ipv4-top { + description "Top-level configuration and state for IPv4 + interfaces"; + + container ipv4 { + description + "Parameters for the IPv4 address family."; + + container addresses { + description + "Enclosing container for address list"; + + list address { + key "ip"; + description + "The list of configured IPv4 addresses on the interface."; + + leaf ip { + type leafref { + path "../oc-ip:config/oc-ip:ip"; + } + description "References the configured IP address"; + } + + container config { + description "Configuration data for each configured IPv4 + address on the interface"; + + uses ipv4-address-config; + + } + + container state { + + config false; + description "Operational state data for each IPv4 address + configured on the interface"; + + uses ipv4-address-config; + uses ipv4-address-state; + } + + } + } + + container neighbors { + description + "Enclosing container for neighbor list"; + + list neighbor { + key "ip"; + description + "A list of mappings from IPv4 addresses to + link-layer addresses. + + Entries in this list are used as static entries in the + ARP Cache."; + reference + "RFC 826: An Ethernet Address Resolution Protocol"; + + leaf ip { + type leafref { + path "../oc-ip:config/oc-ip:ip"; + } + description "References the configured IP address"; + } + + container config { + description "Configuration data for each configured IPv4 + address on the interface"; + + uses ipv4-neighbor-config; + + } + + container state { + + config false; + description "Operational state data for each IPv4 address + configured on the interface"; + + uses ipv4-neighbor-config; + uses ipv4-neighbor-state; + } + } + } + + uses oc-if:sub-unnumbered-top; + + container config { + description + "Top-level IPv4 configuration data for the interface"; + + uses ipv4-global-config; + } + + container state { + + config false; + description + "Top level IPv4 operational state data"; + + uses ipv4-global-config; + } + } + } + + grouping ipv6-top { + description + "Top-level configuration and state for IPv6 interfaces"; + + container ipv6 { + description + "Parameters for the IPv6 address family."; + + container addresses { + description + "Enclosing container for address list"; + + list address { + key "ip"; + description + "The list of configured IPv6 addresses on the interface."; + + leaf ip { + type leafref { + path "../oc-ip:config/oc-ip:ip"; + } + description "References the configured IP address"; + } + + container config { + description + "Configuration data for each IPv6 address on + the interface"; + + uses ipv6-address-config; + + } + + container state { + + config false; + description + "State data for each IPv6 address on the + interface"; + + uses ipv6-address-config; + uses ipv6-address-state; + } + } + } + + container neighbors { + description + "Enclosing container for list of IPv6 neighbors"; + + list neighbor { + key "ip"; + description + "List of IPv6 neighbors"; + + leaf ip { + type leafref { + path "../oc-ip:config/oc-ip:ip"; + } + description + "References the configured IP neighbor address"; + } + + container config { + description "Configuration data for each IPv6 address on + the interface"; + + uses ipv6-neighbor-config; + + } + + container state { + + config false; + description "State data for each IPv6 address on the + interface"; + + uses ipv6-neighbor-config; + uses ipv6-neighbor-state; + } + } + } + uses oc-if:sub-unnumbered-top; + + container config { + description "Top-level config data for the IPv6 interface"; + + uses ipv6-global-config; + } + + container state { + config false; + description + "Top-level operational state data for the IPv6 interface"; + + uses ipv6-global-config; + + } + } + } + + // augment statements + + augment "/oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/" + + "oc-if:subinterface" { + description + "IPv4 addr family configuration for + interfaces"; + + uses ipv4-top; + + } + + augment "/oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/" + + "oc-if:subinterface" { + description + "IPv6 addr family configuration for + interfaces"; + + uses ipv6-top; + + } + + // VRRP for IPv4 interfaces + + augment "/oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/" + + "oc-if:subinterface/oc-ip:ipv4/oc-ip:addresses/oc-ip:address" { + + description + "Additional IP addr family configuration for + interfaces"; + + uses ip-vrrp-top; + + } + + // VRRP for IPv6 interfaces + + augment "/oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/" + + "oc-if:subinterface/oc-ip:ipv6/oc-ip:addresses/oc-ip:address" { + description + "Additional IP addr family configuration for + interfaces"; + + uses ip-vrrp-top; + + } + + augment "/oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/" + + "oc-if:subinterface/oc-ip:ipv6/oc-ip:addresses/oc-ip:address/" + + "vrrp/vrrp-group/config" { + description + "Additional VRRP data for IPv6 interfaces"; + + uses ip-vrrp-ipv6-config; + } + + augment "/oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/" + + "oc-if:subinterface/oc-ip:ipv6/oc-ip:addresses/oc-ip:address/vrrp/" + + "vrrp-group/state" { + description + "Additional VRRP data for IPv6 interfaces"; + + uses ip-vrrp-ipv6-state; + } + + // Augments for for routed VLANs + + augment "/oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan" { + description + "IPv4 addr family configuration for + interfaces"; + + uses ipv4-top; + + } + + augment "/oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan" { + description + "IPv6 addr family configuration for + interfaces"; + + uses ipv6-top; + + } + + // VRRP for routed VLAN interfaces + + augment "/oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/" + + "oc-ip:ipv4/oc-ip:addresses/oc-ip:address" { + description + "Additional IP addr family configuration for + interfaces"; + + uses ip-vrrp-top; + + } + + augment "/oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/" + + "oc-ip:ipv6/oc-ip:addresses/oc-ip:address" { + description + "Additional IP addr family configuration for + interfaces"; + + uses ip-vrrp-top; + + } + + augment "/oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/" + + "oc-ip:ipv6/oc-ip:addresses/oc-ip:address/vrrp/vrrp-group/config" { + description + "Additional VRRP data for IPv6 interfaces"; + + uses ip-vrrp-ipv6-config; + } + + + augment "/oc-if:interfaces/oc-if:interface/oc-vlan:routed-vlan/" + + "oc-ip:ipv6/oc-ip:addresses/oc-ip:address/vrrp/vrrp-group/state" { + description + "Additional VRRP data for IPv6 interfaces"; + + uses ip-vrrp-ipv6-state; + } + + // rpc statements + + // notification statements +} diff --git a/yang/openconfig-interfaces.yang b/yang/openconfig-interfaces.yang new file mode 100644 index 0000000000000000000000000000000000000000..e5b4782385f645cfa734a8b1f913efeb2ab08f9c --- /dev/null +++ b/yang/openconfig-interfaces.yang @@ -0,0 +1,933 @@ +module openconfig-interfaces { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/interfaces"; + + prefix "oc-if"; + + // import some basic types + import ietf-interfaces { prefix ietf-if; } + import ietf-yang-types { prefix yang; } + import openconfig-extensions { prefix oc-ext; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "Model for managing network interfaces and subinterfaces. This + module also defines convenience types / groupings for other + models to create references to interfaces: + + base-interface-ref (type) - reference to a base interface + interface-ref (grouping) - container for reference to a + interface + subinterface + interface-ref-state (grouping) - container for read-only + (opstate) reference to interface + subinterface + + This model reuses data items defined in the IETF YANG model for + interfaces described by RFC 7223 with an alternate structure + (particularly for operational state data) and and with + additional configuration items."; + + oc-ext:openconfig-version "1.1.0"; + + revision "2016-12-22" { + description + "Fixes to Ethernet interfaces model"; + reference "1.1.0"; + } + + + // typedef statements + + typedef base-interface-ref { + type leafref { + path "/oc-if:interfaces/oc-if:interface/oc-if:name"; + } + description + "Reusable type for by-name reference to a base interface. + This type may be used in cases where ability to reference + a subinterface is not required."; + } + + typedef interface-id { + type string; + description + "User-defined identifier for an interface, generally used to + name a interface reference. The id can be arbitrary but a + useful convention is to use a combination of base interface + name and subinterface index."; + } + + // grouping statements + + grouping interface-ref-common { + description + "Reference leafrefs to interface / subinterface"; + + leaf interface { + type leafref { + path "/oc-if:interfaces/oc-if:interface/oc-if:name"; + } + description + "Reference to a base interface. If a reference to a + subinterface is required, this leaf must be specified + to indicate the base interface."; + } + + leaf subinterface { + type leafref { + path "/oc-if:interfaces/" + + "oc-if:interface[oc-if:name=current()/../interface]/" + + "oc-if:subinterfaces/oc-if:subinterface/oc-if:index"; + } + description + "Reference to a subinterface -- this requires the base + interface to be specified using the interface leaf in + this container. If only a reference to a base interface + is requuired, this leaf should not be set."; + } + } + + grouping interface-ref-state-container { + description + "Reusable opstate w/container for a reference to an + interface or subinterface"; + + container state { + config false; + description + "Operational state for interface-ref"; + + uses interface-ref-common; + } + } + + grouping interface-ref { + description + "Reusable definition for a reference to an interface or + subinterface"; + + container interface-ref { + description + "Reference to an interface or subinterface"; + + container config { + description + "Configured reference to interface / subinterface"; + + uses interface-ref-common; + } + + uses interface-ref-state-container; + } + } + + grouping interface-ref-state { + description + "Reusable opstate w/container for a reference to an + interface or subinterface"; + + container interface-ref { + description + "Reference to an interface or subinterface"; + + uses interface-ref-state-container; + } + } + + + grouping interface-common-config { + description + "Configuration data data nodes common to physical interfaces + and subinterfaces"; + + leaf name { + type string; + description + "[adapted from IETF interfaces model (RFC 7223)] + + The name of the interface. + + A device MAY restrict the allowed values for this leaf, + possibly depending on the type of the interface. + For system-controlled interfaces, this leaf is the + device-specific name of the interface. The 'config false' + list interfaces/interface[name]/state contains the currently + existing interfaces on the device. + + If a client tries to create configuration for a + system-controlled interface that is not present in the + corresponding state list, the server MAY reject + the request if the implementation does not support + pre-provisioning of interfaces or if the name refers to + an interface that can never exist in the system. A + NETCONF server MUST reply with an rpc-error with the + error-tag 'invalid-value' in this case. + + The IETF model in RFC 7223 provides YANG features for the + following (i.e., pre-provisioning and arbitrary-names), + however they are omitted here: + + If the device supports pre-provisioning of interface + configuration, the 'pre-provisioning' feature is + advertised. + + If the device allows arbitrarily named user-controlled + interfaces, the 'arbitrary-names' feature is advertised. + + When a configured user-controlled interface is created by + the system, it is instantiated with the same name in the + /interfaces/interface[name]/state list."; + reference + "RFC 7223: A YANG Data Model for Interface Management"; + } + + leaf description { + type string; + description + "[adapted from IETF interfaces model (RFC 7223)] + + A textual description of the interface. + + A server implementation MAY map this leaf to the ifAlias + MIB object. Such an implementation needs to use some + mechanism to handle the differences in size and characters + allowed between this leaf and ifAlias. The definition of + such a mechanism is outside the scope of this document. + + Since ifAlias is defined to be stored in non-volatile + storage, the MIB implementation MUST map ifAlias to the + value of 'description' in the persistently stored + datastore. + + Specifically, if the device supports ':startup', when + ifAlias is read the device MUST return the value of + 'description' in the 'startup' datastore, and when it is + written, it MUST be written to the 'running' and 'startup' + datastores. Note that it is up to the implementation to + + decide whether to modify this single leaf in 'startup' or + perform an implicit copy-config from 'running' to + 'startup'. + + If the device does not support ':startup', ifAlias MUST + be mapped to the 'description' leaf in the 'running' + datastore."; + reference + "RFC 2863: The Interfaces Group MIB - ifAlias"; + } + + leaf enabled { + type boolean; + default "true"; + description + "[adapted from IETF interfaces model (RFC 7223)] + + This leaf contains the configured, desired state of the + interface. + + Systems that implement the IF-MIB use the value of this + leaf in the 'running' datastore to set + IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry + has been initialized, as described in RFC 2863. + + Changes in this leaf in the 'running' datastore are + reflected in ifAdminStatus, but if ifAdminStatus is + changed over SNMP, this leaf is not affected."; + reference + "RFC 2863: The Interfaces Group MIB - ifAdminStatus"; + } + + } + + grouping interface-phys-config { + description + "Configuration data for physical interfaces"; + + leaf type { + type identityref { + base ietf-if:interface-type; + } + mandatory true; + description + "[adapted from IETF interfaces model (RFC 7223)] + + The type of the interface. + + When an interface entry is created, a server MAY + initialize the type leaf with a valid value, e.g., if it + is possible to derive the type from the name of the + interface. + + If a client tries to set the type of an interface to a + value that can never be used by the system, e.g., if the + type is not supported or if the type does not match the + name of the interface, the server MUST reject the request. + A NETCONF server MUST reply with an rpc-error with the + error-tag 'invalid-value' in this case."; + reference + "RFC 2863: The Interfaces Group MIB - ifType"; + } + + leaf mtu { + type uint16; + description + "Set the max transmission unit size in octets + for the physical interface. If this is not set, the mtu is + set to the operational default -- e.g., 1514 bytes on an + Ethernet interface."; + } + + uses interface-common-config; + } + + grouping interface-phys-holdtime-config { + description + "Configuration data for interface hold-time settings -- + applies to physical interfaces."; + + leaf up { + type uint32; + units milliseconds; + default 0; + description + "Dampens advertisement when the interface + transitions from down to up. A zero value means dampening + is turned off, i.e., immediate notification."; + } + + leaf down { + type uint32; + units milliseconds; + default 0; + description + "Dampens advertisement when the interface transitions from + up to down. A zero value means dampening is turned off, + i.e., immediate notification."; + } + } + + grouping interface-phys-holdtime-state { + description + "Operational state data for interface hold-time."; + } + + grouping interface-phys-holdtime-top { + description + "Top-level grouping for setting link transition + dampening on physical and other types of interfaces."; + + container hold-time { + description + "Top-level container for hold-time settings to enable + dampening advertisements of interface transitions."; + + container config { + description + "Configuration data for interface hold-time settings."; + + uses interface-phys-holdtime-config; + } + + container state { + + config false; + + description + "Operational state data for interface hold-time."; + + uses interface-phys-holdtime-config; + uses interface-phys-holdtime-state; + } + } + } + + grouping interface-common-state { + description + "Operational state data (in addition to intended configuration) + at the global level for this interface"; + + leaf ifindex { + type uint32; + description + "System assigned number for each interface. Corresponds to + ifIndex object in SNMP Interface MIB"; + reference + "RFC 2863 - The Interfaces Group MIB"; + } + + leaf admin-status { + type enumeration { + enum UP { + description + "Ready to pass packets."; + } + enum DOWN { + description + "Not ready to pass packets and not in some test mode."; + } + enum TESTING { + //TODO: This is generally not supported as a configured + //admin state, though it's in the standard interfaces MIB. + //Consider removing it. + description + "In some test mode."; + } + } + //TODO:consider converting to an identity to have the + //flexibility to remove some values defined by RFC 7223 that + //are not used or not implemented consistently. + mandatory true; + description + "[adapted from IETF interfaces model (RFC 7223)] + + The desired state of the interface. In RFC 7223 this leaf + has the same read semantics as ifAdminStatus. Here, it + reflects the administrative state as set by enabling or + disabling the interface."; + reference + "RFC 2863: The Interfaces Group MIB - ifAdminStatus"; + } + + leaf oper-status { + type enumeration { + enum UP { + value 1; + description + "Ready to pass packets."; + } + enum DOWN { + value 2; + description + "The interface does not pass any packets."; + } + enum TESTING { + value 3; + description + "In some test mode. No operational packets can + be passed."; + } + enum UNKNOWN { + value 4; + description + "Status cannot be determined for some reason."; + } + enum DORMANT { + value 5; + description + "Waiting for some external event."; + } + enum NOT_PRESENT { + value 6; + description + "Some component (typically hardware) is missing."; + } + enum LOWER_LAYER_DOWN { + value 7; + description + "Down due to state of lower-layer interface(s)."; + } + } + //TODO:consider converting to an identity to have the + //flexibility to remove some values defined by RFC 7223 that + //are not used or not implemented consistently. + mandatory true; + description + "[adapted from IETF interfaces model (RFC 7223)] + + The current operational state of the interface. + + This leaf has the same semantics as ifOperStatus."; + reference + "RFC 2863: The Interfaces Group MIB - ifOperStatus"; + } + + leaf last-change { + type yang:timeticks; + description + "Date and time of the last state change of the interface + (e.g., up-to-down transition). This corresponds to the + ifLastChange object in the standard interface MIB."; + reference + "RFC 2863: The Interfaces Group MIB - ifLastChange"; + } + + } + + + grouping interface-counters-state { + description + "Operational state representing interface counters + and statistics. Some of these are adapted from RFC 7223"; + + //TODO: we may need to break this list of counters into those + //that would appear for physical vs. subinterface or logical + //interfaces. For now, just replicating the full stats + //grouping to both interface and subinterface. + + container counters { + description + "A collection of interface-related statistics objects."; + + reference + "RFC 7223 - A YANG Data Model for Interface + Management"; + + leaf in-octets { + type yang:counter64; + description + "[adapted from IETF interfaces model (RFC 7223)] + + The total number of octets received on the interface, + including framing characters. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCInOctets"; + } + + leaf in-unicast-pkts { + type yang:counter64; + description + "[adapted from IETF interfaces model (RFC 7223)] + + The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were not addressed to a + multicast or broadcast address at this sub-layer. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts"; + } + + leaf in-broadcast-pkts { + type yang:counter64; + description + "[adapted from IETF interfaces model (RFC 7223)] + + The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were addressed to a broadcast + address at this sub-layer. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCInBroadcastPkts"; + } + + leaf in-multicast-pkts { + type yang:counter64; + description + "[adapted from IETF interfaces model (RFC 7223)] + + + The number of packets, delivered by this sub-layer to a + higher (sub-)layer, that were addressed to a multicast + address at this sub-layer. For a MAC-layer protocol, + this includes both Group and Functional addresses. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCInMulticastPkts"; + } + + leaf in-discards { + type yang:counter64; + description + "[adapted from IETF interfaces model (RFC 7223)] + Changed the counter type to counter64. + + The number of inbound packets that were chosen to be + discarded even though no errors had been detected to + prevent their being deliverable to a higher-layer + protocol. One possible reason for discarding such a + packet could be to free up buffer space. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + + + reference + "RFC 2863: The Interfaces Group MIB - ifInDiscards"; + } + + leaf in-errors { + type yang:counter64; + description + "[adapted from IETF interfaces model (RFC 7223)] + Changed the counter type to counter64. + + For packet-oriented interfaces, the number of inbound + packets that contained errors preventing them from being + deliverable to a higher-layer protocol. For character- + oriented or fixed-length interfaces, the number of + inbound transmission units that contained errors + preventing them from being deliverable to a higher-layer + protocol. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInErrors"; + } + + leaf in-unknown-protos { + type yang:counter32; + description + "[adapted from IETF interfaces model (RFC 7223)] + Changed the counter type to counter64. + + For packet-oriented interfaces, the number of packets + received via the interface that were discarded because + of an unknown or unsupported protocol. For + character-oriented or fixed-length interfaces that + support protocol multiplexing, the number of + transmission units received via the interface that were + discarded because of an unknown or unsupported protocol. + For any interface that does not support protocol + multiplexing, this counter is not present. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifInUnknownProtos"; + } + + leaf out-octets { + type yang:counter64; + description + "[adapted from IETF interfaces model (RFC 7223)] + Changed the counter type to counter64. + + The total number of octets transmitted out of the + interface, including framing characters. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCOutOctets"; + } + + leaf out-unicast-pkts { + type yang:counter64; + description + "[adapted from IETF interfaces model (RFC 7223)] + + The total number of packets that higher-level protocols + requested be transmitted, and that were not addressed + to a multicast or broadcast address at this sub-layer, + including those that were discarded or not sent. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts"; + } + + leaf out-broadcast-pkts { + type yang:counter64; + description + "[adapted from IETF interfaces model (RFC 7223)] + + The total number of packets that higher-level protocols + requested be transmitted, and that were addressed to a + broadcast address at this sub-layer, including those + that were discarded or not sent. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCOutBroadcastPkts"; + } + + + leaf out-multicast-pkts { + type yang:counter64; + description + "[adapted from IETF interfaces model (RFC 7223)] + Changed the counter type to counter64. + + The total number of packets that higher-level protocols + requested be transmitted, and that were addressed to a + multicast address at this sub-layer, including those + that were discarded or not sent. For a MAC-layer + protocol, this includes both Group and Functional + addresses. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - + ifHCOutMulticastPkts"; + } + + leaf out-discards { + type yang:counter64; + description + "[adapted from IETF interfaces model (RFC 7223)] + Changed the counter type to counter64. + + The number of outbound packets that were chosen to be + discarded even though no errors had been detected to + prevent their being transmitted. One possible reason + for discarding such a packet could be to free up buffer + space. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifOutDiscards"; + } + + leaf out-errors { + type yang:counter64; + description + "[adapted from IETF interfaces model (RFC 7223)] + Changed the counter type to counter64. + + For packet-oriented interfaces, the number of outbound + packets that could not be transmitted because of errors. + For character-oriented or fixed-length interfaces, the + number of outbound transmission units that could not be + transmitted because of errors. + + Discontinuities in the value of this counter can occur + at re-initialization of the management system, and at + other times as indicated by the value of + 'discontinuity-time'."; + reference + "RFC 2863: The Interfaces Group MIB - ifOutErrors"; + } + + leaf last-clear { + type yang:date-and-time; + description + "Indicates the last time the interface counters were + cleared."; + } + } + } + + // data definition statements + + grouping sub-unnumbered-config { + description + "Configuration data for unnumbered subinterfaces"; + + leaf enabled { + type boolean; + default false; + description + "Indicates that the subinterface is unnumbered. By default + the subinterface is numbered, i.e., expected to have an + IP address configuration."; + } + } + + grouping sub-unnumbered-state { + description + "Operational state data unnumbered subinterfaces"; + } + + grouping sub-unnumbered-top { + description + "Top-level grouping unnumbered subinterfaces"; + + container unnumbered { + description + "Top-level container for setting unnumbered interfaces. + Includes reference the interface that provides the + address information"; + + container config { + description + "Configuration data for unnumbered interface"; + + uses sub-unnumbered-config; + } + + container state { + + config false; + + description + "Operational state data for unnumbered interfaces"; + + uses sub-unnumbered-config; + uses sub-unnumbered-state; + } + + uses oc-if:interface-ref; + } + } + + grouping subinterfaces-config { + description + "Configuration data for subinterfaces"; + + leaf index { + type uint32; + default 0; + description + "The index of the subinterface, or logical interface number. + On systems with no support for subinterfaces, or not using + subinterfaces, this value should default to 0, i.e., the + default subinterface."; + } + + uses interface-common-config; + + } + + grouping subinterfaces-state { + description + "Operational state data for subinterfaces"; + + uses interface-common-state; + uses interface-counters-state; + } + + grouping subinterfaces-top { + description + "Subinterface data for logical interfaces associated with a + given interface"; + + container subinterfaces { + description + "Enclosing container for the list of subinterfaces associated + with a physical interface"; + + list subinterface { + key "index"; + + description + "The list of subinterfaces (logical interfaces) associated + with a physical interface"; + + leaf index { + type leafref { + path "../config/index"; + } + description + "The index number of the subinterface -- used to address + the logical interface"; + } + + container config { + description + "Configurable items at the subinterface level"; + + uses subinterfaces-config; + } + + container state { + + config false; + description + "Operational state data for logical interfaces"; + + uses subinterfaces-config; + uses subinterfaces-state; + } + } + } + } + + grouping interfaces-top { + description + "Top-level grouping for interface configuration and + operational state data"; + + container interfaces { + description + "Top level container for interfaces, including configuration + and state data."; + + + list interface { + key "name"; + + description + "The list of named interfaces on the device."; + + leaf name { + type leafref { + path "../config/name"; + } + description + "References the configured name of the interface"; + //TODO: need to consider whether this should actually + //reference the name in the state subtree, which + //presumably would be the system-assigned name, or the + //configured name. Points to the config/name now + //because of YANG 1.0 limitation that the list + //key must have the same "config" as the list, and + //also can't point to a non-config node. + } + + container config { + description + "Configurable items at the global, physical interface + level"; + + uses interface-phys-config; + } + + container state { + + config false; + description + "Operational state data at the global interface level"; + + uses interface-phys-config; + uses interface-common-state; + uses interface-counters-state; + } + + uses interface-phys-holdtime-top; + uses subinterfaces-top; + } + } + } + + uses interfaces-top; + + +} diff --git a/yang/openconfig-vlan-types.yang b/yang/openconfig-vlan-types.yang new file mode 100644 index 0000000000000000000000000000000000000000..dd095cebdebf6b0205854694649632f86a421d2b --- /dev/null +++ b/yang/openconfig-vlan-types.yang @@ -0,0 +1,180 @@ +module openconfig-vlan-types { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/vlan-types"; + + prefix "oc-vlan-types"; + + // import some basic types + import openconfig-extensions { prefix oc-ext; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This module defines configuration and state variables for VLANs, + in addition to VLAN parameters associated with interfaces"; + + oc-ext:openconfig-version "1.0.2"; + + revision "2016-05-26" { + description + "OpenConfig public release"; + reference "1.0.2"; + } + + // extension statements + + // feature statements + + // identity statements + + identity TPID_TYPES { + description + "Base identity for TPID values that can override the VLAN + ethertype value"; + } + + identity TPID_0x8100 { + base TPID_TYPES; + description + "Default TPID value for 802.1q single-tagged VLANs."; + } + + identity TPID_0x8A88 { + base TPID_TYPES; + description + "TPID value for 802.1ad provider bridging, Q-in-Q, + or stacked VLANs"; + } + + identity TPID_0x9100 { + base TPID_TYPES; + description + "Alternate TPID value"; + } + + identity TPID_0X9200 { + base TPID_TYPES; + description + "Alternate TPID value"; + } + + // typedef statements + + // TODO: typedefs should be defined in a vlan-types.yang file. + typedef vlan-id { + type uint16 { + range 1..4094; + } + description + "Type definition representing a single-tagged VLAN"; + } + + typedef vlan-range { + type string { + // range specified as [lower]..[upper] + pattern "(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|" + + "[1-9][0-9]{1,2}|[1-9])\.\.(409[0-4]|" + + "40[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|" + + "[1-9])"; + } + description + "Type definition representing a range of single-tagged + VLANs. A range is specified as x..y where x and y are + valid VLAN IDs (1 <= vlan-id <= 4094). The range is + assumed to be inclusive, such that any VLAN-ID matching + x <= VLAN-ID <= y falls within the range."; + } + + typedef qinq-id { + type string { + pattern + "(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|" + + "[1-9][0-9]{1,2}|[1-9])\." + + "((409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|" + + "[1-9][0-9]{1,2}|[1-9])|\*)"; + } + description + "Type definition representing a single double-tagged/QinQ VLAN + identifier. The format of a QinQ VLAN-ID is x.y where X is the + 'outer' VLAN identifier, and y is the 'inner' VLAN identifier. + Both x and y must be valid VLAN IDs (1 <= vlan-id <= 4094) + with the exception that y may be equal to a wildcard (*). In + cases where y is set to the wildcard, this represents all inner + VLAN identifiers where the outer VLAN identifier is equal to + x"; + } + + typedef qinq-id-range { + type union { + type string { + // match cases where the range is specified as x..y.z + pattern + "(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|" + + "[1-9][0-9]{1,2}|[1-9])\.\." + + "(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|" + + "[1-9][0-9]{1,2}|[1-9])\." + + "((409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|" + + "[1-9][0-9]{1,2}|[1-9])|\*)"; + } + type string { + // match cases where the range is specified as x.y..z + pattern + "(\*|(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|" + + "[1-9][0-9]{1,2}|[1-9]))\." + + "(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|" + + "[1-9][0-9]{1,2}|[1-9])\.\." + + "(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|" + + "[1-9][0-9]{1,2}|[1-9])"; + } + } + description + "A type definition representing a range of double-tagged/QinQ + VLAN identifiers. The format of a QinQ VLAN-ID range can be + specified in three formats. Where the range is outer VLAN IDs + the range is specified as x..y.z. In this case outer VLAN + identifiers meeting the criteria x <= outer-vlan-id <= y are + accepted iff the inner VLAN-ID is equal to y - or any inner-tag + if the wildcard is specified. Alternatively the range can be + specified as x.y..z. In this case only VLANs with an + outer-vlan-id qual to x are accepted (x may again be the + wildcard). Inner VLANs are accepted if they meet the inequality + y <= inner-vlan-id <= z."; + } + + typedef vlan-mode-type { + type enumeration { + enum ACCESS { + description "Access mode VLAN interface (No 802.1q header)"; + } + enum TRUNK { + description "Trunk mode VLAN interface"; + } + } + description + "VLAN interface mode (trunk or access)"; + } + + typedef vlan-ref { + type union { + type vlan-id; + type string; + // TODO: string should be changed to leafref to reference + // an existing VLAN. this is not allowed in YANG 1.0 but + // is expected to be in YANG 1.1. + // type leafref { + // path "vlan:vlans/vlan:vlan/vlan:config/vlan:name"; + // } + } + description + "Reference to a VLAN by name or id"; + } + +} diff --git a/yang/openconfig-vlan.yang b/yang/openconfig-vlan.yang new file mode 100644 index 0000000000000000000000000000000000000000..afc61fd5ddf0f33948ca5678cecfd33887bf9a37 --- /dev/null +++ b/yang/openconfig-vlan.yang @@ -0,0 +1,407 @@ +module openconfig-vlan { + + yang-version "1"; + + // namespace + namespace "http://openconfig.net/yang/vlan"; + + prefix "oc-vlan"; + + // import some basic types + import openconfig-vlan-types { prefix oc-vlan-types; } + import openconfig-interfaces { prefix oc-if; } + import openconfig-if-ethernet { prefix oc-eth; } + import openconfig-if-aggregate { prefix oc-lag; } + import iana-if-type { prefix ift; } + import openconfig-extensions { prefix oc-ext; } + + // meta + organization "OpenConfig working group"; + + contact + "OpenConfig working group + netopenconfig@googlegroups.com"; + + description + "This module defines configuration and state variables for VLANs, + in addition to VLAN parameters associated with interfaces"; + + oc-ext:openconfig-version "1.0.2"; + + revision "2016-05-26" { + description + "OpenConfig public release"; + reference "1.0.2"; + } + + + + // grouping statements + + grouping vlan-config { + description "VLAN configuration container."; + + leaf vlan-id { + type oc-vlan-types:vlan-id; + description "Interface VLAN id."; + } + + leaf name { + type string; + description "Interface VLAN name."; + } + + leaf status { + type enumeration { + enum ACTIVE { + description "VLAN is active"; + } + enum SUSPENDED { + description "VLAN is inactive / suspended"; + } + } + default ACTIVE; + description "Admin state of the VLAN"; + } + + leaf tpid { + type identityref { + base oc-vlan-types:TPID_TYPES; + } + default oc-vlan-types:TPID_0x8100; + description + "Optionally set the tag protocol identifier field (TPID) that + is accepted on the VLAN"; + } + + } + + grouping vlan-state { + description "State variables for VLANs"; + + } + + grouping vlan-members-state { + description + "List of interfaces / subinterfaces belonging to the VLAN."; + + container members { + description + "Enclosing container for list of member interfaces"; + + list member { + config false; + description + "List of references to interfaces / subinterfaces + associated with the VLAN."; + + uses oc-if:interface-ref-state; + } + } + } + + grouping vlan-ethernet-config { + description + "VLAN related configuration that is part of the physical + Ethernet interface."; + + leaf interface-mode { + type oc-vlan-types:vlan-mode-type; + description + "Set the interface to access or trunk mode for + VLANs"; + } + + leaf native-vlan { + when "interface-mode = 'TRUNK'" { + description + "Native VLAN is valid for trunk mode interfaces"; + } + type union { + type oc-vlan-types:vlan-id; + type oc-vlan-types:qinq-id; + } + description + "Set the native VLAN id for untagged frames arriving on + a trunk interface. This configuration is only valid on + a trunk interface."; + } + + leaf access-vlan { + when "interface-mode = 'ACCESS'" { + description + "Access VLAN assigned to the interfaces"; + } + type union { + type oc-vlan-types:vlan-id; + type oc-vlan-types:qinq-id; + } + description + "Assign the access vlan to the access port."; + } + + leaf-list trunk-vlans { + when "interface-mode = 'TRUNK'" { + description + "Allowed VLANs may be specified for trunk mode + interfaces."; + } + type union { + type oc-vlan-types:vlan-id; + type oc-vlan-types:vlan-range; + type oc-vlan-types:qinq-id; + type oc-vlan-types:qinq-id-range; + } + description + "Specify VLANs, or ranges thereof, that the interface may + carry when in trunk mode. If not specified, all VLANs are + allowed on the interface. Ranges are specified in the form + x..y, where x<y - ranges are assumed to be inclusive (such + that the VLAN range is x <= range <= y."; + } + } + + grouping vlan-ethernet-state { + description + "VLAN related operational state that is part of Ethernet + interface state data"; + + //TODO: placeholder for operational state related to VLANs + //on the physical interface + } + + grouping vlan-ethernet-top { + description + "Top-level grouping for VLAN data associated with an + Ethernet interface"; + + container switched-vlan { + description + "Enclosing container for VLAN interface-specific + data on Ethernet interfaces. These are for standard + L2, switched-style VLANs."; + + container config { + description "Configuration parameters for VLANs"; + + uses vlan-ethernet-config; + } + + container state { + + config false; + description "State variables for VLANs"; + + uses vlan-ethernet-config; + uses vlan-ethernet-state; + } + } + } + + grouping vlan-logical-config { + description + "VLAN related configuration that is part of subinterface + (logical interface) configuration. These are generally + L3 VLANs with an id that is local."; + + + leaf vlan-id { + type union { + type oc-vlan-types:vlan-id; + type oc-vlan-types:qinq-id; + } + description + "VLAN id for the subinterface -- specified inline for the + case of a local VLAN. The id is scoped to the + subinterface, and could be repeated on different + subinterfaces."; + } + } + + grouping vlan-logical-state { + description + "VLAN related operational state that is part of logical + interface state data"; + + //TODO: placeholder to add VLAN-specific state variables on + //the subinterface + } + + grouping vlan-top { + description "Top-level grouping for VLAN configuration"; + + container vlans { + description "Container for VLAN configuration and state + variables"; + + list vlan { + key "vlan-id"; + + description "Configured VLANs keyed by id"; + + leaf vlan-id { + type leafref { + path "../config/vlan-id"; + } + description "references the configured vlan-id"; + } + + container config { + description "Configuration parameters for VLANs"; + + uses vlan-config; + } + + container state { + + config false; + description "State variables for VLANs"; + + uses vlan-config; + uses vlan-state; + } + uses vlan-members-state; + } + } + } + + grouping vlan-logical-top { + description + "Top-level grouping for VLAN data associated with a + logical interface or subinterface"; + + container vlan { + description + "Enclosing container for VLAN interface-specific + data on subinterfaces"; + + container config { + description "Configuration parameters for VLANs"; + + uses vlan-logical-config; + } + + container state { + + config false; + description "State variables for VLANs"; + + uses vlan-logical-config; + uses vlan-logical-state; + } + } + } + + grouping vlan-routed-config { + description + "Configuration data for routed vlans (SVI, IRB, etc.)"; + + leaf vlan { + type union { + // TODO: in YANG 1.1, unions support leafref types which + // should be used here to reference a configured VLAN by + // id or name + type uint16; + type string; + } + description + "References the VLAN for which this IP interface + provides routing services -- similar to a switch virtual + interface (SVI), or integrated routing and bridging interface + (IRB) in some implementations."; + } + + } + + grouping vlan-routed-state { + description + "Operational state data for routed vlan interfaces."; + } + + grouping vlan-routed-top { + description + "Top-level grouping for routed vlan logical interfaces"; + + container routed-vlan { + description + "Top-level container for routed vlan interfaces. These + logical interfaces are also known as SVI (switched virtual + interface), IRB (integrated routing and bridging), RVI + (routed VLAN interface)"; + + container config { + description + "Configuration data for routed vlan interfaces"; + + uses vlan-routed-config; + } + + container state { + + config false; + + description + "Operational state data "; + + uses vlan-routed-config; + uses vlan-routed-state; + } + } + } + + // data definition statements + + uses vlan-top; + + // augment statements + + augment "/oc-if:interfaces/oc-if:interface/oc-if:subinterfaces/" + + "oc-if:subinterface" { + //TODO: augmentation path will need to be updated for + //full device model + description "Adds VLAN settings to individual subinterfaces"; + + uses vlan-logical-top; + } + + augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet" { + //TODO: augmentation path will need to be updated for + //full device model + when "oc-if:type = 'ift:ethernetCsmacd'" { + description "Active when the interface is Ethernet"; + } + description "Adds VLAN settings to individual Ethernet + interfaces"; + + uses vlan-ethernet-top; + } + + augment "/oc-if:interfaces/oc-if:interface/oc-lag:aggregation" { + //TODO: augmentation path will need to be updated for + //full device model + when "oc-if:type = 'ift:ieee8023adLag'" { + description "Active when the interface is a LAG"; + } + description "Adds VLAN settings to a LAG interface"; + + uses vlan-ethernet-top; + } + + augment "/oc-if:interfaces/oc-if:interface" { + when "oc-if:type = 'ift:l3ipvlan'" { + description + "Active when the interface is a logical interface providing + L3 routing for VLANs"; + } + description + "Adds configuration and state for routed VLAN interfaces"; + + uses vlan-routed-top; + } + + + // rpc statements + + // notification statements + +}