VOL-3419: OpenOLT adapter at scale constantly takes more that 10 seconds to react to flows
- Pass information to agent to do the flow replication
- Consolidate various locks in the adapter and remove reduntant locks
- use voltha-proto version 4.0.2 and voltha-lib-go version 4.0.0
- Bump adapter version to 3.0.0
Change-Id: Ic053c54e5319bb1736ec74facfc79dd10058ecf5
diff --git a/Makefile b/Makefile
index a46c4e3..f291114 100644
--- a/Makefile
+++ b/Makefile
@@ -62,16 +62,16 @@
## Local Development Helpers
local-protos: ## Copies a local version of the voltha-protos dependency into the vendor directory
ifdef LOCAL_PROTOS
- rm -rf vendor/github.com/opencord/voltha-protos/v3/go
- mkdir -p vendor/github.com/opencord/voltha-protos/v3/go
- cp -r ${LOCAL_PROTOS}/go/* vendor/github.com/opencord/voltha-protos/v3/go
- rm -rf vendor/github.com/opencord/voltha-protos/v3/go/vendor
+ rm -rf vendor/github.com/opencord/voltha-protos/v4/go
+ mkdir -p vendor/github.com/opencord/voltha-protos/v4/go
+ cp -r ${LOCAL_PROTOS}/go/* vendor/github.com/opencord/voltha-protos/v4/go
+ rm -rf vendor/github.com/opencord/voltha-protos/v4/go/vendor
endif
local-lib-go: ## Copies a local version of the voltha-lib-go dependency into the vendor directory
ifdef LOCAL_LIB_GO
- mkdir -p vendor/github.com/opencord/voltha-lib-go/v3/pkg
- cp -r ${LOCAL_LIB_GO}/pkg/* vendor/github.com/opencord/voltha-lib-go/v3/pkg/
+ mkdir -p vendor/github.com/opencord/voltha-lib-go/v4/pkg
+ cp -r ${LOCAL_LIB_GO}/pkg/* vendor/github.com/opencord/voltha-lib-go/v4/pkg/
endif
## Docker targets
diff --git a/VERSION b/VERSION
index 8f87ff7..4a36342 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.6.0-dev
+3.0.0
diff --git a/cmd/openolt-adapter/common.go b/cmd/openolt-adapter/common.go
index c12b743..5093658 100644
--- a/cmd/openolt-adapter/common.go
+++ b/cmd/openolt-adapter/common.go
@@ -18,7 +18,7 @@
package main
import (
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
)
var logger log.CLogger
diff --git a/cmd/openolt-adapter/main.go b/cmd/openolt-adapter/main.go
index 038af15..7f0c182 100644
--- a/cmd/openolt-adapter/main.go
+++ b/cmd/openolt-adapter/main.go
@@ -26,20 +26,20 @@
"syscall"
"time"
- "github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif"
+ "github.com/opencord/voltha-lib-go/v4/pkg/adapters/adapterif"
- "github.com/opencord/voltha-lib-go/v3/pkg/adapters"
- com "github.com/opencord/voltha-lib-go/v3/pkg/adapters/common"
- conf "github.com/opencord/voltha-lib-go/v3/pkg/config"
- "github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore"
- "github.com/opencord/voltha-lib-go/v3/pkg/kafka"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
- "github.com/opencord/voltha-lib-go/v3/pkg/probe"
- "github.com/opencord/voltha-lib-go/v3/pkg/version"
+ "github.com/opencord/voltha-lib-go/v4/pkg/adapters"
+ com "github.com/opencord/voltha-lib-go/v4/pkg/adapters/common"
+ conf "github.com/opencord/voltha-lib-go/v4/pkg/config"
+ "github.com/opencord/voltha-lib-go/v4/pkg/db/kvstore"
+ "github.com/opencord/voltha-lib-go/v4/pkg/kafka"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/probe"
+ "github.com/opencord/voltha-lib-go/v4/pkg/version"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/config"
ac "github.com/opencord/voltha-openolt-adapter/internal/pkg/core"
- ic "github.com/opencord/voltha-protos/v3/go/inter_container"
- "github.com/opencord/voltha-protos/v3/go/voltha"
+ ic "github.com/opencord/voltha-protos/v4/go/inter_container"
+ "github.com/opencord/voltha-protos/v4/go/voltha"
)
type adapter struct {
diff --git a/cmd/openolt-adapter/main_test.go b/cmd/openolt-adapter/main_test.go
index 19e8d5b..6b6ea7e 100644
--- a/cmd/openolt-adapter/main_test.go
+++ b/cmd/openolt-adapter/main_test.go
@@ -24,10 +24,10 @@
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
- "github.com/opencord/voltha-lib-go/v3/pkg/kafka"
+ "github.com/opencord/voltha-lib-go/v4/pkg/kafka"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/config"
"github.com/opencord/voltha-openolt-adapter/pkg/mocks"
- ca "github.com/opencord/voltha-protos/v3/go/inter_container"
+ ca "github.com/opencord/voltha-protos/v4/go/inter_container"
"go.etcd.io/etcd/pkg/mock/mockserver"
)
diff --git a/docker/Dockerfile.openolt b/docker/Dockerfile.openolt
index e78ec06..f3a97a6 100644
--- a/docker/Dockerfile.openolt
+++ b/docker/Dockerfile.openolt
@@ -37,13 +37,13 @@
SHELL ["/bin/ash", "-o", "pipefail", "-c"]
RUN go build $EXTRA_GO_BUILD_TAGS -mod=vendor -o /go/bin/openolt \
-ldflags \
- "-X github.com/opencord/voltha-lib-go/v3/pkg/version.version=$org_label_schema_version \
- -X github.com/opencord/voltha-lib-go/v3/pkg/version.vcsRef=$org_label_schema_vcs_ref \
- -X github.com/opencord/voltha-lib-go/v3/pkg/version.vcsDirty=$org_opencord_vcs_dirty \
- -X github.com/opencord/voltha-lib-go/v3/pkg/version.goVersion=$(go version 2>&1 | sed -E 's/.*go([0-9]+\.[0-9]+\.[0-9]+).*/\1/g') \
- -X github.com/opencord/voltha-lib-go/v3/pkg/version.os=$(go env GOHOSTOS) \
- -X github.com/opencord/voltha-lib-go/v3/pkg/version.arch=$(go env GOHOSTARCH) \
- -X github.com/opencord/voltha-lib-go/v3/pkg/version.buildTime=$org_label_schema_build_date" \
+ "-X github.com/opencord/voltha-lib-go/v4/pkg/version.version=$org_label_schema_version \
+ -X github.com/opencord/voltha-lib-go/v4/pkg/version.vcsRef=$org_label_schema_vcs_ref \
+ -X github.com/opencord/voltha-lib-go/v4/pkg/version.vcsDirty=$org_opencord_vcs_dirty \
+ -X github.com/opencord/voltha-lib-go/v4/pkg/version.goVersion=$(go version 2>&1 | sed -E 's/.*go([0-9]+\.[0-9]+\.[0-9]+).*/\1/g') \
+ -X github.com/opencord/voltha-lib-go/v4/pkg/version.os=$(go env GOHOSTOS) \
+ -X github.com/opencord/voltha-lib-go/v4/pkg/version.arch=$(go env GOHOSTARCH) \
+ -X github.com/opencord/voltha-lib-go/v4/pkg/version.buildTime=$org_label_schema_build_date" \
./cmd/openolt-adapter/
# -------------
diff --git a/go.mod b/go.mod
index fa18e3a..faca99e 100644
--- a/go.mod
+++ b/go.mod
@@ -8,8 +8,8 @@
github.com/gogo/protobuf v1.3.1
github.com/golang/protobuf v1.3.2
github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4
- github.com/opencord/voltha-lib-go/v3 v3.2.8
- github.com/opencord/voltha-protos/v3 v3.4.5
+ github.com/opencord/voltha-lib-go/v4 v4.0.0
+ github.com/opencord/voltha-protos/v4 v4.0.2
go.etcd.io/etcd v0.0.0-20190930204107-236ac2a90522
google.golang.org/grpc v1.25.1
)
diff --git a/go.sum b/go.sum
index cc49a60..91da69d 100644
--- a/go.sum
+++ b/go.sum
@@ -204,11 +204,10 @@
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
github.com/onsi/gomega v1.4.2 h1:3mYCb7aPxS/RU7TI1y4rkEn1oKmPRjNJLNEXgw7MH2I=
github.com/onsi/gomega v1.4.2/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
-github.com/opencord/voltha-lib-go/v3 v3.2.8 h1:aQGuX6aJmCK3d0JXnYOiMhzDsMwVy+lyw5FOZ/ggakk=
-github.com/opencord/voltha-lib-go/v3 v3.2.8/go.mod h1:MIWsmMGxIRLK8dG+CNVcE/cJCzOondyRbwJ1708BYgU=
-github.com/opencord/voltha-protos/v3 v3.4.1/go.mod h1:nl1ETp5Iw3avxOaKD8BJlYY5wYI4KeV95aT1pL63nto=
-github.com/opencord/voltha-protos/v3 v3.4.5 h1:8M4RHUgQI+XHMBtTW6FLwinqP9JbZq3kM2UOb9ShgLc=
-github.com/opencord/voltha-protos/v3 v3.4.5/go.mod h1:nl1ETp5Iw3avxOaKD8BJlYY5wYI4KeV95aT1pL63nto=
+github.com/opencord/voltha-lib-go/v4 v4.0.0 h1:D5dK5LQ6Z/UbUEsuQuP9OoAODQuNSY1qQnuF2PsxTKw=
+github.com/opencord/voltha-lib-go/v4 v4.0.0/go.mod h1:QgdIa7PlU0jhZT3qCPtcVt8/CpingKm4dUEROBrUBZg=
+github.com/opencord/voltha-protos/v4 v4.0.2 h1:SI25ljqftc8Tc28CgfqSE4IGCLJ5MgCmBQlE96hl9X8=
+github.com/opencord/voltha-protos/v4 v4.0.2/go.mod h1:W/OIFIyvFh/C0vchRUuarIsMylEhzCRM9pNxLvkPtKc=
github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU=
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
diff --git a/internal/pkg/core/common.go b/internal/pkg/core/common.go
index c1e7fbc..f959b7f 100644
--- a/internal/pkg/core/common.go
+++ b/internal/pkg/core/common.go
@@ -18,7 +18,7 @@
package core
import (
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
)
var logger log.CLogger
diff --git a/internal/pkg/core/device_handler.go b/internal/pkg/core/device_handler.go
index f342bcf..3be60ec 100644
--- a/internal/pkg/core/device_handler.go
+++ b/internal/pkg/core/device_handler.go
@@ -34,17 +34,17 @@
"github.com/golang/protobuf/ptypes"
grpc_middleware "github.com/grpc-ecosystem/go-grpc-middleware"
grpc_opentracing "github.com/grpc-ecosystem/go-grpc-middleware/tracing/opentracing"
- "github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif"
- "github.com/opencord/voltha-lib-go/v3/pkg/flows"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
- "github.com/opencord/voltha-lib-go/v3/pkg/pmmetrics"
+ "github.com/opencord/voltha-lib-go/v4/pkg/adapters/adapterif"
+ "github.com/opencord/voltha-lib-go/v4/pkg/flows"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/pmmetrics"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/olterrors"
rsrcMgr "github.com/opencord/voltha-openolt-adapter/internal/pkg/resourcemanager"
- "github.com/opencord/voltha-protos/v3/go/common"
- ic "github.com/opencord/voltha-protos/v3/go/inter_container"
- of "github.com/opencord/voltha-protos/v3/go/openflow_13"
- oop "github.com/opencord/voltha-protos/v3/go/openolt"
- "github.com/opencord/voltha-protos/v3/go/voltha"
+ "github.com/opencord/voltha-protos/v4/go/common"
+ ic "github.com/opencord/voltha-protos/v4/go/inter_container"
+ of "github.com/opencord/voltha-protos/v4/go/openflow_13"
+ oop "github.com/opencord/voltha-protos/v4/go/openolt"
+ "github.com/opencord/voltha-protos/v4/go/voltha"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
@@ -52,9 +52,7 @@
// Constants for number of retries and for timeout
const (
- MaxRetry = 10
- MaxTimeOutInMs = 500
- InvalidPort = 0xffffffff
+ InvalidPort = 0xffffffff
)
//DeviceHandler will interact with the OLT device.
@@ -356,16 +354,16 @@
// On failure process a backoff timer while watching for stopIndications
// events
- backoff := time.NewTimer(indicationBackoff.NextBackOff())
+ backoffTimer := time.NewTimer(indicationBackoff.NextBackOff())
select {
case <-dh.stopIndications:
logger.Debugw(ctx, "stopping-collecting-indications-for-olt", log.Fields{"device-id": dh.device.Id})
- if !backoff.Stop() {
- <-backoff.C
+ if !backoffTimer.Stop() {
+ <-backoffTimer.C
}
break Loop
- case <-backoff.C:
- // backoff expired continue
+ case <-backoffTimer.C:
+ // backoffTimer expired continue
}
if indications, err = dh.startOpenOltIndicationStream(ctx); err != nil {
return err
@@ -720,6 +718,9 @@
_ = olterrors.NewErrAdapter("indication-read-failure", log.Fields{"device-id": dh.device.Id}, err).LogAt(log.ErrorLevel)
}
}()
+
+ go startHeartbeatCheck(ctx, dh)
+
return nil
}
@@ -748,6 +749,9 @@
if device.PmConfigs != nil {
dh.UpdatePmConfig(ctx, device.PmConfigs)
}
+
+ go startHeartbeatCheck(ctx, dh)
+
return nil
}
@@ -769,7 +773,7 @@
dh.flowMgr = make([]*OpenOltFlowMgr, dh.totalPonPorts)
for i := range dh.flowMgr {
// Instantiate flow manager
- if dh.flowMgr[i] = NewFlowManager(ctx, dh, dh.resourceMgr, dh.groupMgr); dh.flowMgr[i] == nil {
+ if dh.flowMgr[i] = NewFlowManager(ctx, dh, dh.resourceMgr, dh.groupMgr, uint32(i)); dh.flowMgr[i] == nil {
return olterrors.ErrResourceManagerInstantiating
}
}
@@ -875,8 +879,6 @@
if err := dh.coreProxy.DevicePMConfigUpdate(ctx, dh.metrics.ToPmConfigs()); err != nil {
_ = olterrors.NewErrAdapter("error-updating-performance-metrics", log.Fields{"device-id": device.Id}, err).LogAt(log.ErrorLevel)
}
-
- go startHeartbeatCheck(ctx, dh)
}
//GetOfpDeviceInfo Gets the Ofp information of the given device
@@ -886,7 +888,7 @@
MfrDesc: "VOLTHA Project",
HwDesc: "open_pon",
SwDesc: "open_pon",
- SerialNum: dh.device.SerialNumber,
+ SerialNum: device.SerialNumber,
},
SwitchFeatures: &of.OfpSwitchFeatures{
NBuffers: 256,
@@ -1328,7 +1330,7 @@
}
return &oop.SerialNumber{
VendorId: []byte(serialNum[:4]),
- VendorSpecific: []byte(decodedStr),
+ VendorSpecific: decodedStr,
}, nil
}
@@ -1578,17 +1580,13 @@
var uniID uint32
var err error
for _, port := range onu.UniPorts {
- uniID = UniIDFromPortNum(uint32(port))
+ uniID = UniIDFromPortNum(port)
logger.Debugw(ctx, "clearing-resource-data-for-uni-port", log.Fields{"port": port, "uni-id": uniID})
/* Delete tech-profile instance from the KV store */
- if err = dh.flowMgr[onu.IntfID].DeleteTechProfileInstances(ctx, onu.IntfID, onu.OnuID, uniID, onu.SerialNumber); err != nil {
+ if err = dh.flowMgr[onu.IntfID].DeleteTechProfileInstances(ctx, onu.IntfID, onu.OnuID, uniID); err != nil {
logger.Debugw(ctx, "failed-to-remove-tech-profile-instance-for-onu", log.Fields{"onu-id": onu.OnuID})
}
logger.Debugw(ctx, "deleted-tech-profile-instance-for-onu", log.Fields{"onu-id": onu.OnuID})
- flowIDs := dh.resourceMgr.GetCurrentFlowIDsForOnu(ctx, onu.IntfID, int32(onu.OnuID), int32(uniID))
- for _, flowID := range flowIDs {
- dh.resourceMgr.FreeFlowID(ctx, onu.IntfID, int32(onu.OnuID), int32(uniID), flowID)
- }
tpIDList := dh.resourceMgr.GetTechProfileIDForOnu(ctx, onu.IntfID, onu.OnuID, uniID)
for _, tpID := range tpIDList {
if err = dh.resourceMgr.RemoveMeterIDForOnu(ctx, "upstream", onu.IntfID, onu.OnuID, uniID, tpID); err != nil {
@@ -1605,9 +1603,12 @@
logger.Debugw(ctx, "failed-to-remove-tech-profile-id-for-onu", log.Fields{"onu-id": onu.OnuID})
}
logger.Debugw(ctx, "removed-tech-profile-id-for-onu", log.Fields{"onu-id": onu.OnuID})
- if err = dh.resourceMgr.DelGemPortPktInOfAllServices(ctx, onu.IntfID, onu.OnuID, uint32(port)); err != nil {
+ if err = dh.resourceMgr.DeletePacketInGemPortForOnu(ctx, onu.IntfID, onu.OnuID, port); err != nil {
logger.Debugw(ctx, "failed-to-remove-gemport-pkt-in", log.Fields{"intfid": onu.IntfID, "onuid": onu.OnuID, "uniId": uniID})
}
+ if err = dh.resourceMgr.RemoveAllFlowsForIntfOnuUniKey(ctx, onu.IntfID, int32(onu.OnuID), int32(uniID)); err != nil {
+ logger.Debugw(ctx, "failed-to-remove-flow-for", log.Fields{"intfid": onu.IntfID, "onuid": onu.OnuID, "uniId": uniID})
+ }
}
return nil
}
@@ -1626,16 +1627,14 @@
}
logger.Debugw(ctx, "nni-", log.Fields{"nni": nni})
for _, nniIntfID := range nni {
- flowIDs := dh.resourceMgr.GetCurrentFlowIDsForOnu(ctx, uint32(nniIntfID), int32(nniOnuID), int32(nniUniID))
- logger.Debugw(ctx, "current-flow-ids-for-nni", log.Fields{"flow-ids": flowIDs})
- for _, flowID := range flowIDs {
- dh.resourceMgr.FreeFlowID(ctx, uint32(nniIntfID), -1, -1, uint32(flowID))
- }
dh.resourceMgr.RemoveResourceMap(ctx, nniIntfID, int32(nniOnuID), int32(nniUniID))
+ _ = dh.resourceMgr.RemoveAllFlowsForIntfOnuUniKey(ctx, nniIntfID, -1, -1)
+
}
if err = dh.resourceMgr.DelNNiFromKVStore(ctx); err != nil {
return olterrors.NewErrPersistence("clear", "nni", 0, nil, err)
}
+
return nil
}
@@ -2248,7 +2247,6 @@
// Default to PON0
var intfID uint32
inPort, outPort := getPorts(flow)
- logger.Debugw(ctx, "increment-flow-remove-count-for-inPort-out-port", log.Fields{"inPort": inPort, "out-port": outPort})
if inPort != InvalidPort && outPort != InvalidPort {
_, intfID, _, _ = ExtractAccessFromFlow(inPort, outPort)
}
diff --git a/internal/pkg/core/device_handler_test.go b/internal/pkg/core/device_handler_test.go
index 1a11b92..311a371 100644
--- a/internal/pkg/core/device_handler_test.go
+++ b/internal/pkg/core/device_handler_test.go
@@ -27,20 +27,20 @@
"github.com/golang/protobuf/ptypes"
"github.com/golang/protobuf/ptypes/any"
- "github.com/opencord/voltha-lib-go/v3/pkg/db"
- fu "github.com/opencord/voltha-lib-go/v3/pkg/flows"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
- "github.com/opencord/voltha-lib-go/v3/pkg/pmmetrics"
- ponrmgr "github.com/opencord/voltha-lib-go/v3/pkg/ponresourcemanager"
+ "github.com/opencord/voltha-lib-go/v4/pkg/db"
+ fu "github.com/opencord/voltha-lib-go/v4/pkg/flows"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/pmmetrics"
+ ponrmgr "github.com/opencord/voltha-lib-go/v4/pkg/ponresourcemanager"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/config"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/olterrors"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/resourcemanager"
"github.com/opencord/voltha-openolt-adapter/pkg/mocks"
- ic "github.com/opencord/voltha-protos/v3/go/inter_container"
- of "github.com/opencord/voltha-protos/v3/go/openflow_13"
- ofp "github.com/opencord/voltha-protos/v3/go/openflow_13"
- oop "github.com/opencord/voltha-protos/v3/go/openolt"
- "github.com/opencord/voltha-protos/v3/go/voltha"
+ ic "github.com/opencord/voltha-protos/v4/go/inter_container"
+ of "github.com/opencord/voltha-protos/v4/go/openflow_13"
+ ofp "github.com/opencord/voltha-protos/v4/go/openflow_13"
+ oop "github.com/opencord/voltha-protos/v4/go/openolt"
+ "github.com/opencord/voltha-protos/v4/go/voltha"
)
const (
@@ -209,7 +209,7 @@
dh.flowMgr = make([]*OpenOltFlowMgr, dh.totalPonPorts)
for i := 0; i < int(dh.totalPonPorts); i++ {
// Instantiate flow manager
- if dh.flowMgr[i] = NewFlowManager(ctx, dh, dh.resourceMgr, dh.groupMgr); dh.flowMgr[i] == nil {
+ if dh.flowMgr[i] = NewFlowManager(ctx, dh, dh.resourceMgr, dh.groupMgr, uint32(i)); dh.flowMgr[i] == nil {
return nil
}
}
diff --git a/internal/pkg/core/olt_platform.go b/internal/pkg/core/olt_platform.go
index 897f4cb..b85dd4b 100644
--- a/internal/pkg/core/olt_platform.go
+++ b/internal/pkg/core/olt_platform.go
@@ -20,11 +20,11 @@
import (
"context"
- "github.com/opencord/voltha-lib-go/v3/pkg/flows"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/flows"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/olterrors"
- ofp "github.com/opencord/voltha-protos/v3/go/openflow_13"
- "github.com/opencord/voltha-protos/v3/go/voltha"
+ ofp "github.com/opencord/voltha-protos/v4/go/openflow_13"
+ "github.com/opencord/voltha-protos/v4/go/voltha"
)
/*=====================================================================
diff --git a/internal/pkg/core/olt_platform_test.go b/internal/pkg/core/olt_platform_test.go
index 7661869..d38b9fb 100644
--- a/internal/pkg/core/olt_platform_test.go
+++ b/internal/pkg/core/olt_platform_test.go
@@ -19,10 +19,10 @@
import (
"context"
- fu "github.com/opencord/voltha-lib-go/v3/pkg/flows"
+ fu "github.com/opencord/voltha-lib-go/v4/pkg/flows"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/olterrors"
- ofp "github.com/opencord/voltha-protos/v3/go/openflow_13"
- "github.com/opencord/voltha-protos/v3/go/voltha"
+ ofp "github.com/opencord/voltha-protos/v4/go/openflow_13"
+ "github.com/opencord/voltha-protos/v4/go/voltha"
"math"
"reflect"
"testing"
diff --git a/internal/pkg/core/olt_state_transitions.go b/internal/pkg/core/olt_state_transitions.go
index 58e2251..cad7d65 100644
--- a/internal/pkg/core/olt_state_transitions.go
+++ b/internal/pkg/core/olt_state_transitions.go
@@ -22,7 +22,7 @@
"reflect"
"runtime"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
)
// DeviceState OLT Device state
diff --git a/internal/pkg/core/openolt.go b/internal/pkg/core/openolt.go
index 996c0f5..e00e1f0 100644
--- a/internal/pkg/core/openolt.go
+++ b/internal/pkg/core/openolt.go
@@ -22,14 +22,14 @@
"sync"
"time"
- "github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif"
- "github.com/opencord/voltha-lib-go/v3/pkg/kafka"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/adapters/adapterif"
+ "github.com/opencord/voltha-lib-go/v4/pkg/kafka"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/config"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/olterrors"
- ic "github.com/opencord/voltha-protos/v3/go/inter_container"
- "github.com/opencord/voltha-protos/v3/go/openflow_13"
- "github.com/opencord/voltha-protos/v3/go/voltha"
+ ic "github.com/opencord/voltha-protos/v4/go/inter_container"
+ "github.com/opencord/voltha-protos/v4/go/openflow_13"
+ "github.com/opencord/voltha-protos/v4/go/voltha"
)
//OpenOLT structure holds the OLT information
diff --git a/internal/pkg/core/openolt_eventmgr.go b/internal/pkg/core/openolt_eventmgr.go
index df7b5cf..65b76e6 100644
--- a/internal/pkg/core/openolt_eventmgr.go
+++ b/internal/pkg/core/openolt_eventmgr.go
@@ -23,12 +23,12 @@
"fmt"
"strconv"
- "github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/adapters/adapterif"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/olterrors"
- "github.com/opencord/voltha-protos/v3/go/common"
- oop "github.com/opencord/voltha-protos/v3/go/openolt"
- "github.com/opencord/voltha-protos/v3/go/voltha"
+ "github.com/opencord/voltha-protos/v4/go/common"
+ oop "github.com/opencord/voltha-protos/v4/go/openolt"
+ "github.com/opencord/voltha-protos/v4/go/voltha"
)
const (
diff --git a/internal/pkg/core/openolt_eventmgr_test.go b/internal/pkg/core/openolt_eventmgr_test.go
index 84dff0b..955bee9 100644
--- a/internal/pkg/core/openolt_eventmgr_test.go
+++ b/internal/pkg/core/openolt_eventmgr_test.go
@@ -24,7 +24,7 @@
"time"
"github.com/opencord/voltha-openolt-adapter/pkg/mocks"
- oop "github.com/opencord/voltha-protos/v3/go/openolt"
+ oop "github.com/opencord/voltha-protos/v4/go/openolt"
)
func mockEventMgr() *OpenOltEventMgr {
diff --git a/internal/pkg/core/openolt_flowmgr.go b/internal/pkg/core/openolt_flowmgr.go
index b82d7f6..b936a90 100644
--- a/internal/pkg/core/openolt_flowmgr.go
+++ b/internal/pkg/core/openolt_flowmgr.go
@@ -19,26 +19,22 @@
import (
"context"
- "crypto/md5"
"encoding/hex"
- "encoding/json"
"errors"
"fmt"
- "github.com/opencord/voltha-lib-go/v3/pkg/flows"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
- tp "github.com/opencord/voltha-lib-go/v3/pkg/techprofile"
+ "github.com/opencord/voltha-lib-go/v4/pkg/flows"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
+ tp "github.com/opencord/voltha-lib-go/v4/pkg/techprofile"
rsrcMgr "github.com/opencord/voltha-openolt-adapter/internal/pkg/resourcemanager"
- "github.com/opencord/voltha-protos/v3/go/common"
- ic "github.com/opencord/voltha-protos/v3/go/inter_container"
- ofp "github.com/opencord/voltha-protos/v3/go/openflow_13"
- openoltpb2 "github.com/opencord/voltha-protos/v3/go/openolt"
- tp_pb "github.com/opencord/voltha-protos/v3/go/tech_profile"
- "github.com/opencord/voltha-protos/v3/go/voltha"
- "math/big"
+ "github.com/opencord/voltha-protos/v4/go/common"
+ ic "github.com/opencord/voltha-protos/v4/go/inter_container"
+ ofp "github.com/opencord/voltha-protos/v4/go/openflow_13"
+ openoltpb2 "github.com/opencord/voltha-protos/v4/go/openolt"
+ tp_pb "github.com/opencord/voltha-protos/v4/go/tech_profile"
+ "github.com/opencord/voltha-protos/v4/go/voltha"
"strings"
"sync"
- //deepcopy "github.com/getlantern/deepcopy"
"github.com/EagleChen/mapmutex"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/olterrors"
"google.golang.org/grpc/codes"
@@ -46,28 +42,11 @@
)
const (
- // Flow categories
-
- //HsiaFlow flow category
- HsiaFlow = "HSIA_FLOW"
-
- //EapolFlow flow category
- EapolFlow = "EAPOL_FLOW"
-
- //DhcpFlow flow category
- DhcpFlow = "DHCP_FLOW"
-
- //MulticastFlow flow category
- MulticastFlow = "MULTICAST_FLOW"
-
- //IgmpFlow flow category
- IgmpFlow = "IGMP_FLOW"
-
//IPProtoDhcp flow category
IPProtoDhcp = 17
- //IPProtoIgmp flow category
- IPProtoIgmp = 2
+ //IgmpProto proto value
+ IgmpProto = 2
//EapEthType eapethtype value
EapEthType = 0x888e
@@ -76,9 +55,6 @@
//IPv4EthType IPv4 ethernet type value
IPv4EthType = 0x800
- //IgmpProto proto value
- IgmpProto = 2
-
//ReservedVlan Transparent Vlan (Masked Vlan, VLAN_ANY in ONOS Flows)
ReservedVlan = 4096
@@ -164,13 +140,6 @@
NoneOnuID = -1
//NoneUniID constant
NoneUniID = -1
- //NoneGemPortID constant
- NoneGemPortID = -1
-
- // BinaryStringPrefix is binary string prefix
- BinaryStringPrefix = "0b"
- // BinaryBit1 is binary bit 1 expressed as a character
- BinaryBit1 = '1'
// MapMutex
maxRetry = 300
@@ -178,12 +147,10 @@
baseDelay = 10000000
factor = 1.1
jitter = 0.2
-)
-type gemPortKey struct {
- intfID uint32
- gemPort uint32
-}
+ bitMapPrefix = "0b"
+ pbit1 = '1'
+)
type tpLockKey struct {
intfID uint32
@@ -210,6 +177,15 @@
uniID uint32
}
+// subscriberDataPathFlowIDKey is key to subscriberDataPathFlowIDMap map
+type subscriberDataPathFlowIDKey struct {
+ intfID uint32
+ onuID uint32
+ uniID uint32
+ direction string
+ tpID uint32
+}
+
// pendingFlowRemoveData is value stored in pendingFlowRemoveDataPerSubscriber map
// This holds the number of pending flow removes and also a signal channel to
// to indicate the receiver when all flow removes are handled
@@ -220,18 +196,25 @@
//OpenOltFlowMgr creates the Structure of OpenOltFlowMgr obj
type OpenOltFlowMgr struct {
- techprofile map[uint32]tp.TechProfileIf
- deviceHandler *DeviceHandler
- grpMgr *OpenOltGroupMgr
- resourceMgr *rsrcMgr.OpenOltResourceMgr
- onuIdsLock sync.RWMutex
- perGemPortLock *mapmutex.Mutex // lock to be used to access the flowsUsedByGemPort map
- flowsUsedByGemPort map[gemPortKey][]uint32 //gem port id to flow ids
- packetInGemPort map[rsrcMgr.PacketInInfoKey]uint32 //packet in gem port local cache
+ ponPortIdx uint32 // Pon Port this FlowManager is responsible for
+ techprofile map[uint32]tp.TechProfileIf
+ deviceHandler *DeviceHandler
+ grpMgr *OpenOltGroupMgr
+ resourceMgr *rsrcMgr.OpenOltResourceMgr
+
+ onuIdsLock sync.RWMutex // TODO: Do we need this?
+
+ flowsUsedByGemPort map[uint32][]uint64 // gem port id to flow ids
+ flowsUsedByGemPortKey sync.RWMutex // lock to be used to access the flowsUsedByGemPort map
+
+ packetInGemPort map[rsrcMgr.PacketInInfoKey]uint32 //packet in gem port local cache
+ packetInGemPortLock sync.RWMutex
+
// TODO create a type rsrcMgr.OnuGemInfos to be used instead of []rsrcMgr.OnuGemInfo
- onuGemInfo map[uint32][]rsrcMgr.OnuGemInfo //onu, gem and uni info local cache, indexed by IntfId
+ onuGemInfo []rsrcMgr.OnuGemInfo //onu, gem and uni info local cache
// We need to have a global lock on the onuGemInfo map
onuGemInfoLock sync.RWMutex
+
// The mapmutex.Mutex can be fine tuned to use mapmutex.NewCustomizedMapMutex
perUserFlowHandleLock *mapmutex.Mutex
@@ -242,10 +225,15 @@
// management contentions on a per subscriber bases, so we need ensure ordering.
pendingFlowRemoveDataPerSubscriber map[pendingFlowRemoveDataKey]pendingFlowRemoveData
pendingFlowRemoveDataPerSubscriberLock sync.RWMutex
+
+ // Map of voltha flowID associated with subscriberDataPathFlowIDKey
+ // This information is not persisted on Kv store and hence should be reconciled on adapter restart
+ subscriberDataPathFlowIDMap map[subscriberDataPathFlowIDKey]uint64
+ subscriberDataPathFlowIDMapLock sync.RWMutex
}
//NewFlowManager creates OpenOltFlowMgr object and initializes the parameters
-func NewFlowManager(ctx context.Context, dh *DeviceHandler, rMgr *rsrcMgr.OpenOltResourceMgr, grpMgr *OpenOltGroupMgr) *OpenOltFlowMgr {
+func NewFlowManager(ctx context.Context, dh *DeviceHandler, rMgr *rsrcMgr.OpenOltResourceMgr, grpMgr *OpenOltGroupMgr, ponPortIdx uint32) *OpenOltFlowMgr {
logger.Infow(ctx, "initializing-flow-manager", log.Fields{"device-id": dh.device.Id})
var flowMgr OpenOltFlowMgr
var err error
@@ -261,58 +249,54 @@
}
flowMgr.onuIdsLock = sync.RWMutex{}
flowMgr.pendingFlowRemoveDataPerSubscriberLock = sync.RWMutex{}
- flowMgr.flowsUsedByGemPort = make(map[gemPortKey][]uint32)
+ flowMgr.flowsUsedByGemPort = make(map[uint32][]uint64)
flowMgr.packetInGemPort = make(map[rsrcMgr.PacketInInfoKey]uint32)
- ponPorts := rMgr.DevInfo.GetPonPorts()
- flowMgr.onuGemInfo = make(map[uint32][]rsrcMgr.OnuGemInfo, ponPorts)
+ flowMgr.packetInGemPortLock = sync.RWMutex{}
flowMgr.onuGemInfoLock = sync.RWMutex{}
flowMgr.perUserFlowHandleLock = mapmutex.NewCustomizedMapMutex(maxRetry, maxDelay, baseDelay, factor, jitter)
- flowMgr.perGemPortLock = mapmutex.NewCustomizedMapMutex(maxRetry, maxDelay, baseDelay, factor, jitter)
flowMgr.pendingFlowRemoveDataPerSubscriber = make(map[pendingFlowRemoveDataKey]pendingFlowRemoveData)
+ flowMgr.subscriberDataPathFlowIDMap = make(map[subscriberDataPathFlowIDKey]uint64)
+ flowMgr.subscriberDataPathFlowIDMapLock = sync.RWMutex{}
//Load the onugem info cache from kv store on flowmanager start
- for idx = 0; idx < ponPorts; idx++ {
- if flowMgr.onuGemInfo[idx], err = rMgr.GetOnuGemInfo(ctx, idx); err != nil {
- logger.Error(ctx, "failed-to-load-onu-gem-info-cache")
- }
- //Load flowID list per gem map per interface from the kvstore.
- flowMgr.loadFlowIDlistForGem(ctx, idx)
+ if flowMgr.onuGemInfo, err = rMgr.GetOnuGemInfo(ctx, ponPortIdx); err != nil {
+ logger.Error(ctx, "failed-to-load-onu-gem-info-cache")
}
+ //Load flowID list per gem map per interface from the kvstore.
+ flowMgr.loadFlowIDlistForGem(ctx, idx)
//load interface to multicast queue map from kv store
flowMgr.grpMgr.LoadInterfaceToMulticastQueueMap(ctx)
+ flowMgr.reconcileSubscriberDataPathFlowIDMap(ctx)
logger.Info(ctx, "initialization-of-flow-manager-success")
return &flowMgr
}
func (f *OpenOltFlowMgr) registerFlow(ctx context.Context, flowFromCore *ofp.OfpFlowStats, deviceFlow *openoltpb2.Flow) error {
- gemPK := gemPortKey{uint32(deviceFlow.AccessIntfId), uint32(deviceFlow.GemportId)}
- if f.perGemPortLock.TryLock(gemPK) {
- logger.Debugw(ctx, "registering-flow-for-device ",
- log.Fields{
- "flow": flowFromCore,
- "device-id": f.deviceHandler.device.Id})
- flowIDList, ok := f.flowsUsedByGemPort[gemPK]
- if !ok {
- flowIDList = []uint32{deviceFlow.FlowId}
+ if !deviceFlow.ReplicateFlow && deviceFlow.GemportId > 0 {
+ // Flow is not replicated in this case, we need to register the flow for a single gem-port
+ return f.registerFlowIDForGem(ctx, uint32(deviceFlow.AccessIntfId), uint32(deviceFlow.GemportId), flowFromCore)
+ } else if deviceFlow.ReplicateFlow && len(deviceFlow.PbitToGemport) > 0 {
+ // Flow is replicated in this case. We need to register the flow for all the gem-ports it is replicated to.
+ for _, gemPort := range deviceFlow.PbitToGemport {
+ if err := f.registerFlowIDForGem(ctx, uint32(deviceFlow.AccessIntfId), gemPort, flowFromCore); err != nil {
+ return err
+ }
}
- flowIDList = appendUnique(flowIDList, deviceFlow.FlowId)
- f.flowsUsedByGemPort[gemPK] = flowIDList
-
- f.perGemPortLock.Unlock(gemPK)
-
- // update the flowids for a gem to the KVstore
- return f.resourceMgr.UpdateFlowIDsForGem(ctx, uint32(deviceFlow.AccessIntfId), uint32(deviceFlow.GemportId), flowIDList)
}
- logger.Error(ctx, "failed-to-acquire-per-gem-port-lock",
- log.Fields{
- "flow-from-core": flowFromCore,
- "device-id": f.deviceHandler.device.Id,
- "key": gemPK,
- })
- return olterrors.NewErrAdapter("failed-to-acquire-per-gem-port-lock", log.Fields{
- "flow-from-core": flowFromCore,
- "device-id": f.deviceHandler.device.Id,
- "key": gemPK,
- }, nil)
+ return nil
+}
+
+func (f *OpenOltFlowMgr) registerFlowIDForGem(ctx context.Context, accessIntfID uint32, gemPortID uint32, flowFromCore *ofp.OfpFlowStats) error {
+ f.flowsUsedByGemPortKey.Lock()
+ flowIDList, ok := f.flowsUsedByGemPort[gemPortID]
+ if !ok {
+ flowIDList = []uint64{flowFromCore.Id}
+ }
+ flowIDList = appendUnique64bit(flowIDList, flowFromCore.Id)
+ f.flowsUsedByGemPort[gemPortID] = flowIDList
+ f.flowsUsedByGemPortKey.Unlock()
+
+ // update the flowids for a gem to the KVstore
+ return f.resourceMgr.UpdateFlowIDsForGem(ctx, accessIntfID, gemPortID, flowIDList)
}
func (f *OpenOltFlowMgr) processAddFlow(ctx context.Context, intfID uint32, onuID uint32, uniID uint32, portNo uint32,
@@ -511,7 +495,7 @@
TrafficSched := []*tp_pb.TrafficScheduler{f.techprofile[sq.intfID].GetTrafficScheduler(sq.tpInst.(*tp.TechProfile), SchedCfg, TrafficShaping)}
TrafficSched[0].TechProfileId = sq.tpID
- if err := f.pushSchedulerQueuesToDevice(ctx, sq, TrafficShaping, TrafficSched); err != nil {
+ if err := f.pushSchedulerQueuesToDevice(ctx, sq, TrafficSched); err != nil {
return olterrors.NewErrAdapter("failure-pushing-traffic-scheduler-and-queues-to-device",
log.Fields{"intf-id": sq.intfID,
"direction": sq.direction,
@@ -534,7 +518,7 @@
return nil
}
-func (f *OpenOltFlowMgr) pushSchedulerQueuesToDevice(ctx context.Context, sq schedQueue, TrafficShaping *tp_pb.TrafficShapingInfo, TrafficSched []*tp_pb.TrafficScheduler) error {
+func (f *OpenOltFlowMgr) pushSchedulerQueuesToDevice(ctx context.Context, sq schedQueue, TrafficSched []*tp_pb.TrafficScheduler) error {
trafficQueues, err := f.techprofile[sq.intfID].GetTrafficQueues(ctx, sq.tpInst.(*tp.TechProfile), sq.direction)
if err != nil {
@@ -800,14 +784,14 @@
for _, gem := range tpInst.UpstreamGemPortAttributeList {
gemPortIDs = append(gemPortIDs, gem.GemportID)
}
- allocIDs = appendUnique(allocIDs, allocID)
+ allocIDs = appendUnique32bit(allocIDs, allocID)
if tpInstanceExists {
return allocID, gemPortIDs, techProfileInstance
}
for _, gemPortID := range gemPortIDs {
- allgemPortIDs = appendUnique(allgemPortIDs, gemPortID)
+ allgemPortIDs = appendUnique32bit(allgemPortIDs, gemPortID)
}
logger.Infow(ctx, "allocated-tcont-and-gem-ports",
log.Fields{
@@ -824,14 +808,14 @@
for _, gem := range tpInst.UpstreamQueueAttributeList {
gemPortIDs = append(gemPortIDs, gem.GemportID)
}
- allocIDs = appendUnique(allocIDs, allocID)
+ allocIDs = appendUnique32bit(allocIDs, allocID)
if tpInstanceExists {
return allocID, gemPortIDs, techProfileInstance
}
for _, gemPortID := range gemPortIDs {
- allgemPortIDs = appendUnique(allgemPortIDs, gemPortID)
+ allgemPortIDs = appendUnique32bit(allgemPortIDs, gemPortID)
}
logger.Infow(ctx, "allocated-tcont-and-gem-ports",
log.Fields{
@@ -879,7 +863,7 @@
var tpCount int
for _, techRange := range f.resourceMgr.DevInfo.Ranges {
for _, intfID := range techRange.IntfIds {
- f.techprofile[intfID] = f.resourceMgr.ResourceMgrs[uint32(intfID)].TechProfileMgr
+ f.techprofile[intfID] = f.resourceMgr.ResourceMgrs[intfID].TechProfileMgr
tpCount++
logger.Debugw(ctx, "init-tech-profile-done",
log.Fields{
@@ -903,24 +887,24 @@
return nil
}
-func (f *OpenOltFlowMgr) addUpstreamDataFlow(ctx context.Context, intfID uint32, onuID uint32, uniID uint32,
+func (f *OpenOltFlowMgr) addUpstreamDataPathFlow(ctx context.Context, intfID uint32, onuID uint32, uniID uint32,
portNo uint32, uplinkClassifier map[string]interface{},
uplinkAction map[string]interface{}, logicalFlow *ofp.OfpFlowStats,
- allocID uint32, gemportID uint32, tpID uint32) error {
+ allocID uint32, gemportID uint32, tpID uint32, pbitToGem map[uint32]uint32) error {
uplinkClassifier[PacketTagType] = SingleTag
logger.Debugw(ctx, "adding-upstream-data-flow",
log.Fields{
"uplinkClassifier": uplinkClassifier,
"uplinkAction": uplinkAction})
- return f.addHSIAFlow(ctx, intfID, onuID, uniID, portNo, uplinkClassifier, uplinkAction,
- Upstream, logicalFlow, allocID, gemportID, tpID)
+ return f.addSymmetricDataPathFlow(ctx, intfID, onuID, uniID, portNo, uplinkClassifier, uplinkAction,
+ Upstream, logicalFlow, allocID, gemportID, tpID, pbitToGem)
/* TODO: Install Secondary EAP on the subscriber vlan */
}
-func (f *OpenOltFlowMgr) addDownstreamDataFlow(ctx context.Context, intfID uint32, onuID uint32, uniID uint32,
+func (f *OpenOltFlowMgr) addDownstreamDataPathFlow(ctx context.Context, intfID uint32, onuID uint32, uniID uint32,
portNo uint32, downlinkClassifier map[string]interface{},
downlinkAction map[string]interface{}, logicalFlow *ofp.OfpFlowStats,
- allocID uint32, gemportID uint32, tpID uint32) error {
+ allocID uint32, gemportID uint32, tpID uint32, pbitToGem map[uint32]uint32) error {
downlinkClassifier[PacketTagType] = DoubleTag
logger.Debugw(ctx, "adding-downstream-data-flow",
log.Fields{
@@ -956,20 +940,21 @@
"device-id": f.deviceHandler.device.Id}, nil).Log()
}
- return f.addHSIAFlow(ctx, intfID, onuID, uniID, portNo, downlinkClassifier, downlinkAction,
- Downstream, logicalFlow, allocID, gemportID, tpID)
+ return f.addSymmetricDataPathFlow(ctx, intfID, onuID, uniID, portNo, downlinkClassifier, downlinkAction,
+ Downstream, logicalFlow, allocID, gemportID, tpID, pbitToGem)
}
-func (f *OpenOltFlowMgr) addHSIAFlow(ctx context.Context, intfID uint32, onuID uint32, uniID uint32, portNo uint32, classifier map[string]interface{},
+func (f *OpenOltFlowMgr) addSymmetricDataPathFlow(ctx context.Context, intfID uint32, onuID uint32, uniID uint32, portNo uint32, classifier map[string]interface{},
action map[string]interface{}, direction string, logicalFlow *ofp.OfpFlowStats,
- allocID uint32, gemPortID uint32, tpID uint32) error {
- /* One of the OLT platform (Broadcom BAL) requires that symmetric
- flows require the same flow_id to be used across UL and DL.
- Since HSIA flow is the only symmetric flow currently, we need to
- re-use the flow_id across both direction. The 'flow_category'
- takes priority over flow_cookie to find any available HSIA_FLOW
- id for the ONU.
- */
+ allocID uint32, gemPortID uint32, tpID uint32, pbitToGem map[uint32]uint32) error {
+
+ var inverseDirection string
+ if direction == Upstream {
+ inverseDirection = Downstream
+ } else {
+ inverseDirection = Upstream
+ }
+
logger.Infow(ctx, "adding-hsia-flow",
log.Fields{
"intf-id": intfID,
@@ -982,35 +967,8 @@
"alloc-id": allocID,
"gemport-id": gemPortID,
"logicalflow": *logicalFlow})
- var vlanPbit uint32 = 0xff // means no pbit
- var vlanVid uint32
- if _, ok := classifier[VlanPcp]; ok {
- vlanPbit = classifier[VlanPcp].(uint32)
- logger.Debugw(ctx, "found-pbit-in-flow",
- log.Fields{
- "vlan-pbit": vlanPbit,
- "intf-id": intfID,
- "onu-id": onuID,
- "device-id": f.deviceHandler.device.Id})
- } else {
- logger.Debugw(ctx, "pbit-not-found-in-flow",
- log.Fields{
- "vlan-pcp": VlanPcp,
- "intf-id": intfID,
- "onu-id": onuID,
- "device-id": f.deviceHandler.device.Id})
- }
- if _, ok := classifier[VlanVid]; ok {
- vlanVid = classifier[VlanVid].(uint32)
- logger.Debugw(ctx, "found-vlan-in-the-flow",
- log.Fields{
- "vlan-vid": vlanVid,
- "intf-id": intfID,
- "onu-id": onuID,
- "device-id": f.deviceHandler.device.Id})
- }
- flowStoreCookie := getFlowStoreCookie(ctx, classifier, gemPortID)
- if present := f.resourceMgr.IsFlowCookieOnKVStore(ctx, uint32(intfID), int32(onuID), int32(uniID), flowStoreCookie); present {
+
+ if present := f.resourceMgr.IsFlowOnKvStore(ctx, intfID, int32(onuID), int32(uniID), logicalFlow.Id); present {
logger.Infow(ctx, "flow-already-exists",
log.Fields{
"device-id": f.deviceHandler.device.Id,
@@ -1018,16 +976,6 @@
"onu-id": onuID})
return nil
}
- flowID, err := f.resourceMgr.GetFlowID(ctx, intfID, int32(onuID), int32(uniID), gemPortID, flowStoreCookie, HsiaFlow, vlanVid, vlanPbit)
- if err != nil {
- return olterrors.NewErrNotFound("hsia-flow-id",
- log.Fields{
- "direction": direction,
- "device-id": f.deviceHandler.device.Id,
- "intf-id": intfID,
- "onu-id": onuID,
- }, err).Log()
- }
classifierProto, err := makeOpenOltClassifierField(classifier)
if err != nil {
return olterrors.NewErrInvalidValue(log.Fields{"classifier": classifier, "device-id": f.deviceHandler.device.Id}, err).Log()
@@ -1053,23 +1001,36 @@
"device-id": f.deviceHandler.device.Id,
}, err).Log()
}
+
+ // Get symmetric flowID if it exists
+ // This symmetric flowID will be needed by agent software to use the same device flow-id that was used for the
+ // symmetric flow earlier
+ // symmetric flowID 0 is considered by agent as non-existent symmetric flow
+ keySymm := subscriberDataPathFlowIDKey{intfID: intfID, onuID: onuID, uniID: uniID, direction: inverseDirection, tpID: tpID}
+ f.subscriberDataPathFlowIDMapLock.RLock()
+ symmFlowID := f.subscriberDataPathFlowIDMap[keySymm]
+ f.subscriberDataPathFlowIDMapLock.RUnlock()
+
flow := openoltpb2.Flow{AccessIntfId: int32(intfID),
- OnuId: int32(onuID),
- UniId: int32(uniID),
- FlowId: flowID,
- FlowType: direction,
- AllocId: int32(allocID),
- NetworkIntfId: int32(networkIntfID),
- GemportId: int32(gemPortID),
- Classifier: classifierProto,
- Action: actionProto,
- Priority: int32(logicalFlow.Priority),
- Cookie: logicalFlow.Cookie,
- PortNo: portNo,
- TechProfileId: tpID,
+ OnuId: int32(onuID),
+ UniId: int32(uniID),
+ FlowId: logicalFlow.Id,
+ FlowType: direction,
+ AllocId: int32(allocID),
+ NetworkIntfId: int32(networkIntfID),
+ GemportId: int32(gemPortID),
+ Classifier: classifierProto,
+ Action: actionProto,
+ Priority: int32(logicalFlow.Priority),
+ Cookie: logicalFlow.Cookie,
+ PortNo: portNo,
+ TechProfileId: tpID,
+ ReplicateFlow: len(pbitToGem) > 0,
+ PbitToGemport: pbitToGem,
+ SymmetricFlowId: symmFlowID,
}
if err := f.addFlowToDevice(ctx, logicalFlow, &flow); err != nil {
- return olterrors.NewErrFlowOp("add", flowID, nil, err).Log()
+ return olterrors.NewErrFlowOp("add", logicalFlow.Id, nil, err).Log()
}
logger.Infow(ctx, "hsia-flow-added-to-device-successfully",
log.Fields{"direction": direction,
@@ -1077,24 +1038,28 @@
"flow": flow,
"intf-id": intfID,
"onu-id": onuID})
- flowsToKVStore := f.getUpdatedFlowInfo(ctx, &flow, flowStoreCookie, HsiaFlow, flowID, logicalFlow.Id)
- if err := f.updateFlowInfoToKVStore(ctx, flow.AccessIntfId,
- flow.OnuId,
- flow.UniId,
- flow.FlowId /*flowCategory,*/, flowsToKVStore); err != nil {
- return olterrors.NewErrPersistence("update", "flow", flowID,
+ flowInfo := rsrcMgr.FlowInfo{Flow: &flow, IsSymmtricFlow: true}
+ if err := f.resourceMgr.UpdateFlowIDInfo(ctx, uint32(flow.AccessIntfId), flow.OnuId, flow.UniId, flow.FlowId, flowInfo); err != nil {
+ return olterrors.NewErrPersistence("update", "flow", logicalFlow.Id,
log.Fields{
"flow": flow,
"device-id": f.deviceHandler.device.Id,
"intf-id": intfID,
"onu-id": onuID}, err).Log()
}
+
+ // Update the current flowID to the map
+ keyCurr := subscriberDataPathFlowIDKey{intfID: intfID, onuID: onuID, uniID: uniID, direction: direction, tpID: tpID}
+ f.subscriberDataPathFlowIDMapLock.Lock()
+ f.subscriberDataPathFlowIDMap[keyCurr] = logicalFlow.Id
+ f.subscriberDataPathFlowIDMapLock.Unlock()
+
return nil
}
func (f *OpenOltFlowMgr) addDHCPTrapFlow(ctx context.Context, intfID uint32, onuID uint32, uniID uint32, portNo uint32,
classifier map[string]interface{}, action map[string]interface{}, logicalFlow *ofp.OfpFlowStats, allocID uint32,
- gemPortID uint32, tpID uint32) error {
+ gemPortID uint32, tpID uint32, pbitToGem map[uint32]uint32) error {
networkIntfID, err := getNniIntfID(ctx, classifier, action)
if err != nil {
@@ -1115,8 +1080,7 @@
classifier[UDPDst] = uint32(67)
classifier[PacketTagType] = SingleTag
- flowStoreCookie := getFlowStoreCookie(ctx, classifier, gemPortID)
- if present := f.resourceMgr.IsFlowCookieOnKVStore(ctx, uint32(intfID), int32(onuID), int32(uniID), flowStoreCookie); present {
+ if present := f.resourceMgr.IsFlowOnKvStore(ctx, intfID, int32(onuID), int32(uniID), logicalFlow.Id); present {
logger.Infow(ctx, "flow-exists--not-re-adding",
log.Fields{
"device-id": f.deviceHandler.device.Id,
@@ -1125,23 +1089,11 @@
return nil
}
- flowID, err := f.resourceMgr.GetFlowID(ctx, intfID, int32(onuID), int32(uniID), gemPortID, flowStoreCookie, DhcpFlow, 0 /*classifier[VLAN_PCP].(uint32)*/)
-
- if err != nil {
- return olterrors.NewErrNotFound("flow",
- log.Fields{
- "interface-id": intfID,
- "gem-port": gemPortID,
- "cookie": flowStoreCookie,
- "device-id": f.deviceHandler.device.Id},
- err).Log()
- }
-
logger.Debugw(ctx, "creating-ul-dhcp-flow",
log.Fields{
"ul_classifier": classifier,
"ul_action": action,
- "uplinkFlowId": flowID,
+ "uplinkFlowId": logicalFlow.Id,
"intf-id": intfID,
"onu-id": onuID,
"device-id": f.deviceHandler.device.Id})
@@ -1159,7 +1111,7 @@
dhcpFlow := openoltpb2.Flow{AccessIntfId: int32(intfID),
OnuId: int32(onuID),
UniId: int32(uniID),
- FlowId: flowID,
+ FlowId: logicalFlow.Id,
FlowType: Upstream,
AllocId: int32(allocID),
NetworkIntfId: int32(networkIntfID),
@@ -1170,21 +1122,20 @@
Cookie: logicalFlow.Cookie,
PortNo: portNo,
TechProfileId: tpID,
+ ReplicateFlow: len(pbitToGem) > 0,
+ PbitToGemport: pbitToGem,
}
if err := f.addFlowToDevice(ctx, logicalFlow, &dhcpFlow); err != nil {
- return olterrors.NewErrFlowOp("add", flowID, log.Fields{"dhcp-flow": dhcpFlow}, err).Log()
+ return olterrors.NewErrFlowOp("add", logicalFlow.Id, log.Fields{"dhcp-flow": dhcpFlow}, err).Log()
}
logger.Infow(ctx, "dhcp-ul-flow-added-to-device-successfully",
log.Fields{
"device-id": f.deviceHandler.device.Id,
- "flow-id": flowID,
+ "flow-id": logicalFlow.Id,
"intf-id": intfID,
"onu-id": onuID})
- flowsToKVStore := f.getUpdatedFlowInfo(ctx, &dhcpFlow, flowStoreCookie, "DHCP", flowID, logicalFlow.Id)
- if err := f.updateFlowInfoToKVStore(ctx, dhcpFlow.AccessIntfId,
- dhcpFlow.OnuId,
- dhcpFlow.UniId,
- dhcpFlow.FlowId, flowsToKVStore); err != nil {
+ flowInfo := rsrcMgr.FlowInfo{Flow: &dhcpFlow}
+ if err := f.resourceMgr.UpdateFlowIDInfo(ctx, uint32(dhcpFlow.AccessIntfId), dhcpFlow.OnuId, dhcpFlow.UniId, dhcpFlow.FlowId, flowInfo); err != nil {
return olterrors.NewErrPersistence("update", "flow", dhcpFlow.FlowId,
log.Fields{
"flow": dhcpFlow,
@@ -1196,13 +1147,13 @@
//addIGMPTrapFlow creates IGMP trap-to-host flow
func (f *OpenOltFlowMgr) addIGMPTrapFlow(ctx context.Context, intfID uint32, onuID uint32, uniID uint32, portNo uint32, classifier map[string]interface{},
- action map[string]interface{}, logicalFlow *ofp.OfpFlowStats, allocID uint32, gemPortID uint32, tpID uint32) error {
- return f.addUpstreamTrapFlow(ctx, intfID, onuID, uniID, portNo, classifier, action, logicalFlow, allocID, gemPortID, IgmpFlow, tpID)
+ action map[string]interface{}, logicalFlow *ofp.OfpFlowStats, allocID uint32, gemPortID uint32, tpID uint32, pbitToGem map[uint32]uint32) error {
+ return f.addUpstreamTrapFlow(ctx, intfID, onuID, uniID, portNo, classifier, action, logicalFlow, allocID, gemPortID, tpID, pbitToGem)
}
//addUpstreamTrapFlow creates a trap-to-host flow
func (f *OpenOltFlowMgr) addUpstreamTrapFlow(ctx context.Context, intfID uint32, onuID uint32, uniID uint32, portNo uint32, classifier map[string]interface{},
- action map[string]interface{}, logicalFlow *ofp.OfpFlowStats, allocID uint32, gemPortID uint32, flowType string, tpID uint32) error {
+ action map[string]interface{}, logicalFlow *ofp.OfpFlowStats, allocID uint32, gemPortID uint32, tpID uint32, pbitToGem map[uint32]uint32) error {
networkIntfID, err := getNniIntfID(ctx, classifier, action)
if err != nil {
@@ -1223,32 +1174,16 @@
classifier[PacketTagType] = SingleTag
delete(classifier, VlanVid)
- flowStoreCookie := getFlowStoreCookie(ctx, classifier, gemPortID)
- if present := f.resourceMgr.IsFlowCookieOnKVStore(ctx, uint32(networkIntfID), int32(onuID), int32(uniID), flowStoreCookie); present {
+ if present := f.resourceMgr.IsFlowOnKvStore(ctx, networkIntfID, int32(onuID), int32(uniID), logicalFlow.Id); present {
logger.Infow(ctx, "flow-exists-not-re-adding", log.Fields{"device-id": f.deviceHandler.device.Id})
return nil
}
- flowID, err := f.resourceMgr.GetFlowID(ctx, intfID, int32(onuID), int32(uniID), gemPortID, flowStoreCookie, flowType, 0, 0 /*classifier[VLAN_PCP].(uint32)*/)
-
- if err != nil {
- return olterrors.NewErrNotFound("flow-id",
- log.Fields{
- "intf-id": intfID,
- "oni-id": onuID,
- "cookie": flowStoreCookie,
- "flow-type": flowType,
- "device-id": f.deviceHandler.device.Id,
- "onu-id": onuID},
- err).Log()
- }
-
logger.Debugw(ctx, "creating-upstream-trap-flow",
log.Fields{
"ul_classifier": classifier,
"ul_action": action,
- "uplinkFlowId": flowID,
- "flowType": flowType,
+ "uplinkFlowId": logicalFlow.Id,
"device-id": f.deviceHandler.device.Id,
"intf-id": intfID,
"onu-id": onuID})
@@ -1269,7 +1204,7 @@
flow := openoltpb2.Flow{AccessIntfId: int32(intfID),
OnuId: int32(onuID),
UniId: int32(uniID),
- FlowId: flowID,
+ FlowId: logicalFlow.Id,
FlowType: Upstream,
AllocId: int32(allocID),
NetworkIntfId: int32(networkIntfID),
@@ -1280,18 +1215,16 @@
Cookie: logicalFlow.Cookie,
PortNo: portNo,
TechProfileId: tpID,
+ ReplicateFlow: len(pbitToGem) > 0,
+ PbitToGemport: pbitToGem,
}
if err := f.addFlowToDevice(ctx, logicalFlow, &flow); err != nil {
- return olterrors.NewErrFlowOp("add", flowID, log.Fields{"flow": flow, "device-id": f.deviceHandler.device.Id}, err).Log()
+ return olterrors.NewErrFlowOp("add", logicalFlow.Id, log.Fields{"flow": flow, "device-id": f.deviceHandler.device.Id}, err).Log()
}
- logger.Infof(ctx, "%s ul-flow-added-to-device-successfully", flowType)
- flowsToKVStore := f.getUpdatedFlowInfo(ctx, &flow, flowStoreCookie, flowType, flowID, logicalFlow.Id)
- if err := f.updateFlowInfoToKVStore(ctx, flow.AccessIntfId,
- flow.OnuId,
- flow.UniId,
- flow.FlowId, flowsToKVStore); err != nil {
+ flowInfo := rsrcMgr.FlowInfo{Flow: &flow}
+ if err := f.resourceMgr.UpdateFlowIDInfo(ctx, uint32(flow.AccessIntfId), flow.OnuId, flow.UniId, flow.FlowId, flowInfo); err != nil {
return olterrors.NewErrPersistence("update", "flow", flow.FlowId, log.Fields{"flow": flow, "device-id": f.deviceHandler.device.Id}, err).Log()
}
@@ -1301,7 +1234,7 @@
// Add EAPOL flow to device with mac, vlanId as classifier for upstream and downstream
func (f *OpenOltFlowMgr) addEAPOLFlow(ctx context.Context, intfID uint32, onuID uint32, uniID uint32, portNo uint32,
classifier map[string]interface{}, action map[string]interface{}, logicalFlow *ofp.OfpFlowStats, allocID uint32,
- gemPortID uint32, vlanID uint32, tpID uint32) error {
+ gemPortID uint32, vlanID uint32, tpID uint32, pbitToGem map[uint32]uint32) error {
logger.Infow(ctx, "adding-eapol-to-device",
log.Fields{
"intf-id": intfID,
@@ -1322,8 +1255,7 @@
uplinkClassifier[VlanPcp] = classifier[VlanPcp]
// Fill action
uplinkAction[TrapToHost] = true
- flowStoreCookie := getFlowStoreCookie(ctx, uplinkClassifier, gemPortID)
- if present := f.resourceMgr.IsFlowCookieOnKVStore(ctx, uint32(intfID), int32(onuID), int32(uniID), flowStoreCookie); present {
+ if present := f.resourceMgr.IsFlowOnKvStore(ctx, intfID, int32(onuID), int32(uniID), logicalFlow.Id); present {
logger.Infow(ctx, "flow-exists-not-re-adding", log.Fields{
"device-id": f.deviceHandler.device.Id,
"onu-id": onuID,
@@ -1331,21 +1263,11 @@
return nil
}
//Add Uplink EAPOL Flow
- uplinkFlowID, err := f.resourceMgr.GetFlowID(ctx, intfID, int32(onuID), int32(uniID), gemPortID, flowStoreCookie, "", 0, 0)
- if err != nil {
- return olterrors.NewErrNotFound("flow-id",
- log.Fields{
- "intf-id": intfID,
- "onu-id": onuID,
- "coookie": flowStoreCookie,
- "device-id": f.deviceHandler.device.Id},
- err).Log()
- }
logger.Debugw(ctx, "creating-ul-eapol-flow",
log.Fields{
"ul_classifier": uplinkClassifier,
"ul_action": uplinkAction,
- "uplinkFlowId": uplinkFlowID,
+ "uplinkFlowId": logicalFlow.Id,
"device-id": f.deviceHandler.device.Id,
"intf-id": intfID,
"onu-id": onuID})
@@ -1380,7 +1302,7 @@
upstreamFlow := openoltpb2.Flow{AccessIntfId: int32(intfID),
OnuId: int32(onuID),
UniId: int32(uniID),
- FlowId: uplinkFlowID,
+ FlowId: logicalFlow.Id,
FlowType: Upstream,
AllocId: int32(allocID),
NetworkIntfId: int32(networkIntfID),
@@ -1391,9 +1313,11 @@
Cookie: logicalFlow.Cookie,
PortNo: portNo,
TechProfileId: tpID,
+ ReplicateFlow: len(pbitToGem) > 0,
+ PbitToGemport: pbitToGem,
}
if err := f.addFlowToDevice(ctx, logicalFlow, &upstreamFlow); err != nil {
- return olterrors.NewErrFlowOp("add", uplinkFlowID, log.Fields{"flow": upstreamFlow}, err).Log()
+ return olterrors.NewErrFlowOp("add", logicalFlow.Id, log.Fields{"flow": upstreamFlow}, err).Log()
}
logger.Infow(ctx, "eapol-ul-flow-added-to-device-successfully",
log.Fields{
@@ -1401,14 +1325,8 @@
"onu-id": onuID,
"intf-id": intfID,
})
- flowCategory := "EAPOL"
- flowsToKVStore := f.getUpdatedFlowInfo(ctx, &upstreamFlow, flowStoreCookie, flowCategory, uplinkFlowID, logicalFlow.Id)
- if err := f.updateFlowInfoToKVStore(ctx, upstreamFlow.AccessIntfId,
- upstreamFlow.OnuId,
- upstreamFlow.UniId,
- upstreamFlow.FlowId,
- /* lowCategory, */
- flowsToKVStore); err != nil {
+ flowInfo := rsrcMgr.FlowInfo{Flow: &upstreamFlow}
+ if err := f.resourceMgr.UpdateFlowIDInfo(ctx, uint32(upstreamFlow.AccessIntfId), upstreamFlow.OnuId, upstreamFlow.UniId, upstreamFlow.FlowId, flowInfo); err != nil {
return olterrors.NewErrPersistence("update", "flow", upstreamFlow.FlowId,
log.Fields{
"flow": upstreamFlow,
@@ -1498,7 +1416,7 @@
}
// DeleteTechProfileInstances removes the tech profile instances from persistent storage
-func (f *OpenOltFlowMgr) DeleteTechProfileInstances(ctx context.Context, intfID uint32, onuID uint32, uniID uint32, sn string) error {
+func (f *OpenOltFlowMgr) DeleteTechProfileInstances(ctx context.Context, intfID uint32, onuID uint32, uniID uint32) error {
tpIDList := f.resourceMgr.GetTechProfileIDForOnu(ctx, intfID, onuID, uniID)
uniPortName := getUniPortPath(f.deviceHandler.device.Id, intfID, int32(onuID), int32(uniID))
@@ -1528,92 +1446,6 @@
return nil
}
-func getFlowStoreCookie(ctx context.Context, classifier map[string]interface{}, gemPortID uint32) uint64 {
- if len(classifier) == 0 { // should never happen
- logger.Error(ctx, "invalid-classfier-object")
- return 0
- }
- logger.Debugw(ctx, "generating-flow-store-cookie",
- log.Fields{
- "classifier": classifier,
- "gemport-id": gemPortID})
- var jsonData []byte
- var flowString string
- var err error
- // TODO: Do we need to marshall ??
- if jsonData, err = json.Marshal(classifier); err != nil {
- logger.Error(ctx, "failed-to-encode-classifier")
- return 0
- }
- flowString = string(jsonData)
- if gemPortID != 0 {
- flowString = fmt.Sprintf("%s%s", string(jsonData), string(gemPortID))
- }
- h := md5.New()
- _, _ = h.Write([]byte(flowString))
- hash := big.NewInt(0)
- hash.SetBytes(h.Sum(nil))
- generatedHash := hash.Uint64()
- logger.Debugw(ctx, "hash-generated", log.Fields{"hash": generatedHash})
- return generatedHash
-}
-
-func (f *OpenOltFlowMgr) getUpdatedFlowInfo(ctx context.Context, flow *openoltpb2.Flow, flowStoreCookie uint64, flowCategory string, deviceFlowID uint32, logicalFlowID uint64) *[]rsrcMgr.FlowInfo {
- var flows = []rsrcMgr.FlowInfo{{Flow: flow, FlowCategory: flowCategory, FlowStoreCookie: flowStoreCookie, LogicalFlowID: logicalFlowID}}
- var intfID uint32
- /* For flows which trap out of the NNI, the AccessIntfId is invalid
- (set to -1). In such cases, we need to refer to the NetworkIntfId .
- */
- if flow.AccessIntfId != -1 {
- intfID = uint32(flow.AccessIntfId)
- } else {
- intfID = uint32(flow.NetworkIntfId)
- }
- // Get existing flows matching flowid for given subscriber from KV store
- existingFlows := f.resourceMgr.GetFlowIDInfo(ctx, intfID, flow.OnuId, flow.UniId, flow.FlowId)
- if existingFlows != nil {
- logger.Debugw(ctx, "flow-exists-for-given-flowID--appending-it-to-current-flow",
- log.Fields{
- "flow-id": flow.FlowId,
- "device-id": f.deviceHandler.device.Id,
- "intf-id": intfID,
- "onu-id": flow.OnuId})
- //for _, f := range *existingFlows {
- // flows = append(flows, f)
- //}
- flows = append(flows, *existingFlows...)
- }
- logger.Debugw(ctx, "updated-flows-for-given-flowID-and-onuid",
- log.Fields{
- "updatedflow": flows,
- "flow-id": flow.FlowId,
- "onu-id": flow.OnuId,
- "device-id": f.deviceHandler.device.Id})
- return &flows
-}
-
-func (f *OpenOltFlowMgr) updateFlowInfoToKVStore(ctx context.Context, intfID int32, onuID int32, uniID int32, flowID uint32, flows *[]rsrcMgr.FlowInfo) error {
- logger.Debugw(ctx, "storing-flow(s)-into-kv-store", log.Fields{
- "flow-id": flowID,
- "device-id": f.deviceHandler.device.Id,
- "intf-id": intfID,
- "onu-id": onuID})
- if err := f.resourceMgr.UpdateFlowIDInfo(ctx, intfID, onuID, uniID, flowID, flows); err != nil {
- logger.Warnw(ctx, "error-while-storing-flow-into-kv-store", log.Fields{
- "device-id": f.deviceHandler.device.Id,
- "onu-id": onuID,
- "intf-id": intfID,
- "flow-id": flowID})
- return err
- }
- logger.Infow(ctx, "stored-flow(s)-into-kv-store-successfully!", log.Fields{
- "device-id": f.deviceHandler.device.Id,
- "onu-id": onuID,
- "intf-id": intfID,
- "flow-id": flowID})
- return nil
-}
-
func (f *OpenOltFlowMgr) addFlowToDevice(ctx context.Context, logicalFlow *ofp.OfpFlowStats, deviceFlow *openoltpb2.Flow) error {
var intfID uint32
@@ -1623,7 +1455,8 @@
if deviceFlow.AccessIntfId != -1 {
intfID = uint32(deviceFlow.AccessIntfId)
} else {
- // REVIST : Why ponport is given as network port?
+ // We need to log the valid interface ID.
+ // For trap-on-nni flows, the access_intf_id is invalid (-1), so choose the network_intf_id.
intfID = uint32(deviceFlow.NetworkIntfId)
}
@@ -1649,21 +1482,22 @@
"device-flow": deviceFlow,
"device-id": f.deviceHandler.device.Id,
"intf-id": intfID})
- f.resourceMgr.FreeFlowID(ctx, intfID, deviceFlow.OnuId, deviceFlow.UniId, deviceFlow.FlowId)
return err
}
- if deviceFlow.GemportId != -1 {
- // No need to register the flow if it is a trap on nni flow.
- if err := f.registerFlow(ctx, logicalFlow, deviceFlow); err != nil {
- logger.Errorw(ctx, "failed-to-register-flow", log.Fields{"err": err})
- return err
- }
- }
logger.Infow(ctx, "flow-added-to-device-successfully ",
log.Fields{
"flow": *deviceFlow,
"device-id": f.deviceHandler.device.Id,
"intf-id": intfID})
+
+ // Case of trap-on-nni flow when deviceFlow.AccessIntfId is invalid (-1)
+ if deviceFlow.AccessIntfId != -1 {
+ // No need to register the flow if it is a trap on nni flow.
+ if err := f.registerFlow(ctx, logicalFlow, deviceFlow); err != nil {
+ logger.Errorw(ctx, "failed-to-register-flow", log.Fields{"err": err})
+ return err
+ }
+ }
return nil
}
@@ -1723,24 +1557,11 @@
if err != nil {
return olterrors.NewErrInvalidValue(log.Fields{"nni-port-number": portNo}, err).Log()
}
- var flowStoreCookie = getFlowStoreCookie(ctx, classifierInfo, uint32(0))
- if present := f.resourceMgr.IsFlowCookieOnKVStore(ctx, uint32(networkInterfaceID), int32(onuID), int32(uniID), flowStoreCookie); present {
+ if present := f.resourceMgr.IsFlowOnKvStore(ctx, networkInterfaceID, int32(onuID), int32(uniID), flow.Id); present {
logger.Infow(ctx, "flow-exists--not-re-adding", log.Fields{"device-id": f.deviceHandler.device.Id})
return nil
}
- flowID, err := f.resourceMgr.GetFlowID(ctx, uint32(networkInterfaceID), int32(onuID), int32(uniID), uint32(gemPortID), flowStoreCookie, "", 0)
- if err != nil {
- return olterrors.NewErrNotFound("flow-id",
- log.Fields{
- "interface-id": networkInterfaceID,
- "onu-id": onuID,
- "uni-id": uniID,
- "gem-port-id": gemPortID,
- "cookie": flowStoreCookie,
- "device-id": f.deviceHandler.device.Id},
- err)
- }
classifierProto, err := makeOpenOltClassifierField(classifierInfo)
if err != nil {
return olterrors.NewErrInvalidValue(
@@ -1767,7 +1588,7 @@
downstreamflow := openoltpb2.Flow{AccessIntfId: int32(-1), // AccessIntfId not required
OnuId: int32(onuID), // OnuId not required
UniId: int32(uniID), // UniId not used
- FlowId: flowID,
+ FlowId: flow.Id,
FlowType: Downstream,
NetworkIntfId: int32(networkInterfaceID),
GemportId: int32(gemPortID),
@@ -1777,7 +1598,7 @@
Cookie: flow.Cookie,
PortNo: portNo}
if err := f.addFlowToDevice(ctx, flow, &downstreamflow); err != nil {
- return olterrors.NewErrFlowOp("add", flowID,
+ return olterrors.NewErrFlowOp("add", flow.Id,
log.Fields{
"flow": downstreamflow,
"device-id": f.deviceHandler.device.Id}, err)
@@ -1786,13 +1607,10 @@
log.Fields{
"device-id": f.deviceHandler.device.Id,
"onu-id": onuID,
- "flow-id": flowID})
- flowsToKVStore := f.getUpdatedFlowInfo(ctx, &downstreamflow, flowStoreCookie, "", flowID, flow.Id)
- if err := f.updateFlowInfoToKVStore(ctx, int32(networkInterfaceID),
- int32(onuID),
- int32(uniID),
- flowID, flowsToKVStore); err != nil {
- return olterrors.NewErrPersistence("update", "flow", flowID,
+ "flow-id": flow.Id})
+ flowInfo := rsrcMgr.FlowInfo{Flow: &downstreamflow}
+ if err := f.resourceMgr.UpdateFlowIDInfo(ctx, networkInterfaceID, int32(onuID), int32(uniID), flow.Id, flowInfo); err != nil {
+ return olterrors.NewErrPersistence("update", "flow", flow.Id,
log.Fields{
"flow": downstreamflow,
"device-id": f.deviceHandler.device.Id}, err)
@@ -1955,9 +1773,9 @@
"intf-id": intfID,
"onu-id": onuID,
"device-id": f.deviceHandler.device.Id,
- "onu-gem": f.onuGemInfo[intfID]})
+ "onu-gem": f.onuGemInfo})
- onugem := f.onuGemInfo[intfID]
+ onugem := f.onuGemInfo
deleteLoop:
for i, onu := range onugem {
if onu.OnuID == onuID {
@@ -1984,8 +1802,7 @@
//clearResources clears pon resources in kv store and the device
// nolint: gocyclo
func (f *OpenOltFlowMgr) clearResources(ctx context.Context, flow *ofp.OfpFlowStats, Intf uint32, onuID int32, uniID int32,
- gemPortID int32, flowID uint32, flowDirection string,
- portNum uint32, updatedFlows []rsrcMgr.FlowInfo) error {
+ gemPortID int32, flowID uint64, portNum uint32) error {
tpID, err := getTpIDFromFlow(ctx, flow)
if err != nil {
@@ -1998,174 +1815,133 @@
"device-id": f.deviceHandler.device.Id}, err)
}
- if len(updatedFlows) >= 0 {
- // There are still flows referencing the same flow_id.
- // So the flow should not be freed yet.
- // For ex: Case of HSIA where same flow is shared
- // between DS and US.
- if err := f.updateFlowInfoToKVStore(ctx, int32(Intf), int32(onuID), int32(uniID), flowID, &updatedFlows); err != nil {
- _ = olterrors.NewErrPersistence("update", "flow", flowID,
- log.Fields{
- "flow": updatedFlows,
- "device-id": f.deviceHandler.device.Id}, err).Log()
+ uni := getUniPortPath(f.deviceHandler.device.Id, Intf, onuID, uniID)
+ tpPath := f.getTPpath(ctx, Intf, uni, tpID)
+ logger.Debugw(ctx, "getting-techprofile-instance-for-subscriber",
+ log.Fields{
+ "tpPath": tpPath,
+ "device-id": f.deviceHandler.device.Id})
+ techprofileInst, err := f.techprofile[Intf].GetTPInstanceFromKVStore(ctx, tpID, tpPath)
+ if err != nil || techprofileInst == nil { // This should not happen, something wrong in KV backend transaction
+ return olterrors.NewErrNotFound("tech-profile-in-kv-store",
+ log.Fields{
+ "tp-id": tpID,
+ "path": tpPath}, err)
+ }
+
+ used := f.isGemPortUsedByAnotherFlow(uint32(gemPortID))
+
+ if used {
+ f.flowsUsedByGemPortKey.Lock()
+ defer f.flowsUsedByGemPortKey.Unlock()
+
+ flowIDs := f.flowsUsedByGemPort[uint32(gemPortID)]
+ for i, flowIDinMap := range flowIDs {
+ if flowIDinMap == flowID {
+ flowIDs = append(flowIDs[:i], flowIDs[i+1:]...)
+ // everytime flowsUsedByGemPort cache is updated the same should be updated
+ // in kv store by calling UpdateFlowIDsForGem
+ f.flowsUsedByGemPort[uint32(gemPortID)] = flowIDs
+ if err := f.resourceMgr.UpdateFlowIDsForGem(ctx, Intf, uint32(gemPortID), flowIDs); err != nil {
+ return err
+ }
+ break
+ }
}
- if len(updatedFlows) == 0 {
- logger.Debugw(ctx, "releasing-flow-id-to-resource-manager",
+ logger.Debugw(ctx, "gem-port-id-is-still-used-by-other-flows",
+ log.Fields{
+ "gemport-id": gemPortID,
+ "usedByFlows": flowIDs,
+ "device-id": f.deviceHandler.device.Id})
+ return nil
+ }
+ logger.Debugf(ctx, "gem-port-id %d is-not-used-by-another-flow--releasing-the-gem-port", gemPortID)
+ f.resourceMgr.RemoveGemPortIDForOnu(ctx, Intf, uint32(onuID), uint32(uniID), uint32(gemPortID))
+ // TODO: The TrafficQueue corresponding to this gem-port also should be removed immediately.
+ // But it is anyway eventually removed later when the TechProfile is freed, so not a big issue for now.
+ f.resourceMgr.RemoveGEMportPonportToOnuMapOnKVStore(ctx, uint32(gemPortID), Intf)
+ f.deleteGemPortFromLocalCache(ctx, Intf, uint32(onuID), uint32(gemPortID))
+ f.onuIdsLock.Lock() // TODO: What is this lock?
+
+ //everytime an entry is deleted from flowsUsedByGemPort cache, the same should be updated in kv as well
+ // by calling DeleteFlowIDsForGem
+ f.flowsUsedByGemPortKey.Lock()
+ delete(f.flowsUsedByGemPort, uint32(gemPortID))
+ f.flowsUsedByGemPortKey.Unlock()
+ f.resourceMgr.DeleteFlowIDsForGem(ctx, Intf, uint32(gemPortID))
+ f.resourceMgr.FreeGemPortID(ctx, Intf, uint32(onuID), uint32(uniID), uint32(gemPortID))
+
+ f.onuIdsLock.Unlock()
+
+ // Delete the gem port on the ONU.
+ if err := f.sendDeleteGemPortToChild(ctx, Intf, uint32(onuID), uint32(uniID), uint32(gemPortID), tpPath); err != nil {
+ logger.Errorw(ctx, "error-processing-delete-gem-port-towards-onu",
+ log.Fields{
+ "err": err,
+ "intf": Intf,
+ "onu-id": onuID,
+ "uni-id": uniID,
+ "device-id": f.deviceHandler.device.Id,
+ "gemport-id": gemPortID})
+ }
+ switch techprofileInst := techprofileInst.(type) {
+ case *tp.TechProfile:
+ ok, _ := f.isTechProfileUsedByAnotherGem(ctx, Intf, uint32(onuID), uint32(uniID), tpID, techprofileInst, uint32(gemPortID))
+ if !ok {
+ if err := f.resourceMgr.RemoveTechProfileIDForOnu(ctx, Intf, uint32(onuID), uint32(uniID), tpID); err != nil {
+ logger.Warn(ctx, err)
+ }
+ if err := f.DeleteTechProfileInstance(ctx, Intf, uint32(onuID), uint32(uniID), "", tpID); err != nil {
+ logger.Warn(ctx, err)
+ }
+ if err := f.RemoveSchedulerQueues(ctx, schedQueue{direction: tp_pb.Direction_UPSTREAM, intfID: Intf, onuID: uint32(onuID), uniID: uint32(uniID), tpID: tpID, uniPort: portNum, tpInst: techprofileInst}); err != nil {
+ logger.Warn(ctx, err)
+ }
+ if err := f.RemoveSchedulerQueues(ctx, schedQueue{direction: tp_pb.Direction_DOWNSTREAM, intfID: Intf, onuID: uint32(onuID), uniID: uint32(uniID), tpID: tpID, uniPort: portNum, tpInst: techprofileInst}); err != nil {
+ logger.Warn(ctx, err)
+ }
+ f.resourceMgr.FreeAllocID(ctx, Intf, uint32(onuID), uint32(uniID), techprofileInst.UsScheduler.AllocID)
+ // Delete the TCONT on the ONU.
+ if err := f.sendDeleteTcontToChild(ctx, Intf, uint32(onuID), uint32(uniID), techprofileInst.UsScheduler.AllocID, tpPath); err != nil {
+ logger.Errorw(ctx, "error-processing-delete-tcont-towards-onu",
+ log.Fields{
+ "intf": Intf,
+ "onu-id": onuID,
+ "uni-id": uniID,
+ "device-id": f.deviceHandler.device.Id,
+ "alloc-id": techprofileInst.UsScheduler.AllocID})
+ }
+ }
+ case *tp.EponProfile:
+ if err := f.resourceMgr.RemoveTechProfileIDForOnu(ctx, Intf, uint32(onuID), uint32(uniID), tpID); err != nil {
+ logger.Warn(ctx, err)
+ }
+ if err := f.DeleteTechProfileInstance(ctx, Intf, uint32(onuID), uint32(uniID), "", tpID); err != nil {
+ logger.Warn(ctx, err)
+ }
+ f.resourceMgr.FreeAllocID(ctx, Intf, uint32(onuID), uint32(uniID), techprofileInst.AllocID)
+ // Delete the TCONT on the ONU.
+ if err := f.sendDeleteTcontToChild(ctx, Intf, uint32(onuID), uint32(uniID), techprofileInst.AllocID, tpPath); err != nil {
+ logger.Errorw(ctx, "error-processing-delete-tcont-towards-onu",
log.Fields{
- "Intf": Intf,
+ "intf": Intf,
"onu-id": onuID,
"uni-id": uniID,
- "flow-id": flowID,
- "device-id": f.deviceHandler.device.Id})
- f.resourceMgr.FreeFlowID(ctx, Intf, int32(onuID), int32(uniID), flowID)
-
- uni := getUniPortPath(f.deviceHandler.device.Id, Intf, onuID, uniID)
- tpPath := f.getTPpath(ctx, Intf, uni, tpID)
- logger.Debugw(ctx, "getting-techprofile-instance-for-subscriber",
- log.Fields{
- "TP-PATH": tpPath,
- "device-id": f.deviceHandler.device.Id})
- techprofileInst, err := f.techprofile[Intf].GetTPInstanceFromKVStore(ctx, tpID, tpPath)
- if err != nil || techprofileInst == nil { // This should not happen, something wrong in KV backend transaction
- return olterrors.NewErrNotFound("tech-profile-in-kv-store",
- log.Fields{
- "tp-id": tpID,
- "path": tpPath}, err)
- }
-
- gemPK := gemPortKey{Intf, uint32(gemPortID)}
- used, err := f.isGemPortUsedByAnotherFlow(ctx, gemPK)
- if err != nil {
- return err
- }
- if used {
- if f.perGemPortLock.TryLock(gemPK) {
- flowIDs := f.flowsUsedByGemPort[gemPK]
- for i, flowIDinMap := range flowIDs {
- if flowIDinMap == flowID {
- flowIDs = append(flowIDs[:i], flowIDs[i+1:]...)
- // everytime flowsUsedByGemPort cache is updated the same should be updated
- // in kv store by calling UpdateFlowIDsForGem
- f.flowsUsedByGemPort[gemPK] = flowIDs
- if err := f.resourceMgr.UpdateFlowIDsForGem(ctx, Intf, uint32(gemPortID), flowIDs); err != nil {
- return err
- }
- break
- }
- }
- logger.Debugw(ctx, "gem-port-id-is-still-used-by-other-flows",
- log.Fields{
- "gemport-id": gemPortID,
- "usedByFlows": flowIDs,
- "device-id": f.deviceHandler.device.Id})
- f.perGemPortLock.Unlock(gemPK)
- return nil
- }
-
- logger.Error(ctx, "failed-to-acquire-per-gem-port-lock",
- log.Fields{
- "gemport-id": gemPortID,
- "device-id": f.deviceHandler.device.Id,
- "key": gemPK,
- })
- return olterrors.NewErrAdapter("failed-to-acquire-per-gem-port-lock", log.Fields{
- "gemport-id": gemPortID,
- "device-id": f.deviceHandler.device.Id,
- "key": gemPK,
- }, nil)
- }
- logger.Debugf(ctx, "gem-port-id %d is-not-used-by-another-flow--releasing-the-gem-port", gemPortID)
- f.resourceMgr.RemoveGemPortIDForOnu(ctx, Intf, uint32(onuID), uint32(uniID), uint32(gemPortID))
- // TODO: The TrafficQueue corresponding to this gem-port also should be removed immediately.
- // But it is anyway eventually removed later when the TechProfile is freed, so not a big issue for now.
- f.resourceMgr.RemoveGEMportPonportToOnuMapOnKVStore(ctx, uint32(gemPortID), Intf)
- f.deleteGemPortFromLocalCache(ctx, Intf, uint32(onuID), uint32(gemPortID))
- f.onuIdsLock.Lock()
- //everytime an entry is deleted from flowsUsedByGemPort cache, the same should be updated in kv as well
- // by calling DeleteFlowIDsForGem
- if f.perGemPortLock.TryLock(gemPK) {
- delete(f.flowsUsedByGemPort, gemPK)
- f.perGemPortLock.Unlock(gemPK)
- } else {
- logger.Error(ctx, "failed-to-acquire-per-gem-port-lock",
- log.Fields{
- "device-id": f.deviceHandler.device.Id,
- "key": gemPK,
- })
- }
- f.resourceMgr.DeleteFlowIDsForGem(ctx, Intf, uint32(gemPortID))
- f.resourceMgr.FreeGemPortID(ctx, Intf, uint32(onuID), uint32(uniID), uint32(gemPortID))
- f.onuIdsLock.Unlock()
- // Delete the gem port on the ONU.
- if err := f.sendDeleteGemPortToChild(ctx, Intf, uint32(onuID), uint32(uniID), uint32(gemPortID), tpPath); err != nil {
- logger.Errorw(ctx, "error-processing-delete-gem-port-towards-onu",
- log.Fields{
- "err": err,
- "intf": Intf,
- "onu-id": onuID,
- "uni-id": uniID,
- "device-id": f.deviceHandler.device.Id,
- "gemport-id": gemPortID})
- }
- switch techprofileInst := techprofileInst.(type) {
- case *tp.TechProfile:
- ok, _ := f.isTechProfileUsedByAnotherGem(ctx, Intf, uint32(onuID), uint32(uniID), tpID, techprofileInst, uint32(gemPortID))
- if !ok {
- if err := f.resourceMgr.RemoveTechProfileIDForOnu(ctx, Intf, uint32(onuID), uint32(uniID), tpID); err != nil {
- logger.Warn(ctx, err)
- }
- if err := f.DeleteTechProfileInstance(ctx, Intf, uint32(onuID), uint32(uniID), "", tpID); err != nil {
- logger.Warn(ctx, err)
- }
- if err := f.RemoveSchedulerQueues(ctx, schedQueue{direction: tp_pb.Direction_UPSTREAM, intfID: Intf, onuID: uint32(onuID), uniID: uint32(uniID), tpID: tpID, uniPort: portNum, tpInst: techprofileInst}); err != nil {
- logger.Warn(ctx, err)
- }
- if err := f.RemoveSchedulerQueues(ctx, schedQueue{direction: tp_pb.Direction_DOWNSTREAM, intfID: Intf, onuID: uint32(onuID), uniID: uint32(uniID), tpID: tpID, uniPort: portNum, tpInst: techprofileInst}); err != nil {
- logger.Warn(ctx, err)
- }
- f.resourceMgr.FreeAllocID(ctx, Intf, uint32(onuID), uint32(uniID), techprofileInst.UsScheduler.AllocID)
- // Delete the TCONT on the ONU.
- if err := f.sendDeleteTcontToChild(ctx, Intf, uint32(onuID), uint32(uniID), uint32(techprofileInst.UsScheduler.AllocID), tpPath); err != nil {
- logger.Errorw(ctx, "error-processing-delete-tcont-towards-onu",
- log.Fields{
- "intf": Intf,
- "onu-id": onuID,
- "uni-id": uniID,
- "device-id": f.deviceHandler.device.Id,
- "alloc-id": techprofileInst.UsScheduler.AllocID})
- }
- }
- case *tp.EponProfile:
- if err := f.resourceMgr.RemoveTechProfileIDForOnu(ctx, Intf, uint32(onuID), uint32(uniID), tpID); err != nil {
- logger.Warn(ctx, err)
- }
- if err := f.DeleteTechProfileInstance(ctx, Intf, uint32(onuID), uint32(uniID), "", tpID); err != nil {
- logger.Warn(ctx, err)
- }
- f.resourceMgr.FreeAllocID(ctx, Intf, uint32(onuID), uint32(uniID), techprofileInst.AllocID)
- // Delete the TCONT on the ONU.
- if err := f.sendDeleteTcontToChild(ctx, Intf, uint32(onuID), uint32(uniID), uint32(techprofileInst.AllocID), tpPath); err != nil {
- logger.Errorw(ctx, "error-processing-delete-tcont-towards-onu",
- log.Fields{
- "intf": Intf,
- "onu-id": onuID,
- "uni-id": uniID,
- "device-id": f.deviceHandler.device.Id,
- "alloc-id": techprofileInst.AllocID})
- }
- default:
- logger.Errorw(ctx, "error-unknown-tech",
- log.Fields{
- "techprofileInst": techprofileInst})
- }
+ "device-id": f.deviceHandler.device.Id,
+ "alloc-id": techprofileInst.AllocID})
}
+ default:
+ logger.Errorw(ctx, "error-unknown-tech",
+ log.Fields{
+ "techprofileInst": techprofileInst})
}
+
return nil
}
// nolint: gocyclo
-func (f *OpenOltFlowMgr) clearFlowFromResourceManager(ctx context.Context, flow *ofp.OfpFlowStats, flowDirection string) {
-
+func (f *OpenOltFlowMgr) clearFlowFromResourceManager(ctx context.Context, flow *ofp.OfpFlowStats, flowDirection string) error {
+ var flowInfo *rsrcMgr.FlowInfo
logger.Infow(ctx, "clear-flow-from-resource-manager",
log.Fields{
"flowDirection": flowDirection,
@@ -2173,8 +1949,7 @@
"device-id": f.deviceHandler.device.Id})
if flowDirection == Multicast {
- f.clearMulticastFlowFromResourceManager(ctx, flow)
- return
+ return f.clearMulticastFlowFromResourceManager(ctx, flow)
}
classifierInfo := make(map[string]interface{})
@@ -2182,7 +1957,7 @@
portNum, Intf, onu, uni, inPort, ethType, err := FlowExtractInfo(ctx, flow, flowDirection)
if err != nil {
logger.Error(ctx, err)
- return
+ return err
}
onuID := int32(onu)
@@ -2211,61 +1986,79 @@
log.Fields{
"port-number": inPort,
"error": err})
- return
+ return err
}
}
- flowIds := f.resourceMgr.GetCurrentFlowIDsForOnu(ctx, Intf, onuID, uniID)
- for _, flowID := range flowIds {
- flowInfo := f.resourceMgr.GetFlowIDInfo(ctx, Intf, onuID, uniID, flowID)
- if flowInfo == nil {
- logger.Debugw(ctx, "no-flowinfo-found-in-kv-store",
- log.Fields{
- "intf": Intf,
- "onu-id": onuID,
- "uni-id": uniID,
- "flow-id": flowID})
- return
+ if flowInfo = f.resourceMgr.GetFlowIDInfo(ctx, Intf, onuID, uniID, flow.Id); flowInfo == nil {
+ logger.Errorw(ctx, "flow-info-not-found-for-flow-to-be-removed", log.Fields{"flow-id": flow.Id, "intf-id": Intf, "onu-id": onuID, "uni-id": uniID})
+ return olterrors.NewErrPersistence("remove", "flow", flow.Id, log.Fields{"flow": flow}, err)
+ }
+ removeFlowMessage := openoltpb2.Flow{FlowId: flowInfo.Flow.FlowId, FlowType: flowInfo.Flow.FlowType}
+ logger.Debugw(ctx, "flow-to-be-deleted", log.Fields{"flow": flowInfo.Flow})
+ if err = f.removeFlowFromDevice(ctx, &removeFlowMessage, flow.Id); err != nil {
+ return err
+ }
+ if err = f.resourceMgr.RemoveFlowIDInfo(ctx, Intf, onuID, uniID, flow.Id); err != nil {
+ logger.Errorw(ctx, "failed-to-remove-flow-on-kv-store", log.Fields{"error": err})
+ return err
+ }
+ if !flowInfo.Flow.ReplicateFlow {
+ if err = f.clearResources(ctx, flow, Intf, onuID, uniID, flowInfo.Flow.GemportId, flowInfo.Flow.FlowId, portNum); err != nil {
+ logger.Error(ctx, "failed-to-clear-resources-for-flow", log.Fields{
+ "flow-id": flow.Id,
+ "stored-flow": flowInfo.Flow,
+ "device-id": f.deviceHandler.device.Id,
+ "stored-flow-id": flowInfo.Flow.FlowId,
+ "onu-id": onuID,
+ "intf": Intf,
+ })
+ return err
}
-
- updatedFlows := *flowInfo
- for i, storedFlow := range updatedFlows {
- if flow.Id == storedFlow.LogicalFlowID {
- removeFlowMessage := openoltpb2.Flow{FlowId: storedFlow.Flow.FlowId, FlowType: storedFlow.Flow.FlowType}
- logger.Debugw(ctx, "flow-to-be-deleted", log.Fields{"flow": storedFlow})
- // DKB
- if err = f.removeFlowFromDevice(ctx, &removeFlowMessage, flow.Id); err != nil {
- logger.Errorw(ctx, "failed-to-remove-flow", log.Fields{"error": err})
- return
- }
- logger.Info(ctx, "flow-removed-from-device-successfully", log.Fields{
+ } else {
+ gems := make([]uint32, 0)
+ for _, gem := range flowInfo.Flow.PbitToGemport {
+ gems = appendUnique32bit(gems, gem)
+ }
+ logger.Debugw(ctx, "gems-to-be-cleared", log.Fields{"gems": gems})
+ for _, gem := range gems {
+ if err = f.clearResources(ctx, flow, Intf, onuID, uniID, int32(gem), flowInfo.Flow.FlowId, portNum); err != nil {
+ logger.Error(ctx, "failed-to-clear-resources-for-flow", log.Fields{
"flow-id": flow.Id,
- "stored-flow": storedFlow,
+ "stored-flow": flowInfo.Flow,
"device-id": f.deviceHandler.device.Id,
- "stored-flow-id": flowID,
+ "stored-flow-id": flowInfo.Flow.FlowId,
"onu-id": onuID,
"intf": Intf,
+ "gem": gem,
})
- //Remove the Flow from FlowInfo
- updatedFlows = append(updatedFlows[:i], updatedFlows[i+1:]...)
- if err = f.clearResources(ctx, flow, Intf, onuID, uniID, storedFlow.Flow.GemportId,
- flowID, flowDirection, portNum, updatedFlows); err != nil {
- logger.Error(ctx, "failed-to-clear-resources-for-flow", log.Fields{
- "flow-id": flow.Id,
- "stored-flow": storedFlow,
- "device-id": f.deviceHandler.device.Id,
- "stored-flow-id": flowID,
- "onu-id": onuID,
- "intf": Intf,
- })
- return
- }
+ return err
}
}
}
+
+ // If datapath flow, clear the symmetric flow data from the subscriberDataPathFlowIDMap map
+ if isDatapathFlow(flow) {
+ if tpID, err := getTpIDFromFlow(ctx, flow); err != nil {
+ var inverseDirection string
+ if flowDirection == Upstream {
+ inverseDirection = Downstream
+ } else {
+ inverseDirection = Upstream
+ }
+
+ keySymm := subscriberDataPathFlowIDKey{intfID: Intf, onuID: uint32(onuID), uniID: uint32(uniID), direction: inverseDirection, tpID: tpID}
+ delete(f.subscriberDataPathFlowIDMap, keySymm)
+ }
+ }
+ return nil
}
//RemoveFlow removes the flow from the device
func (f *OpenOltFlowMgr) RemoveFlow(ctx context.Context, flow *ofp.OfpFlowStats) error {
+
+ f.incrementActiveFlowRemoveCount(ctx, flow)
+ defer f.decrementActiveFlowRemoveCount(ctx, flow)
+
logger.Infow(ctx, "removing-flow", log.Fields{"flow": *flow})
var direction string
actionInfo := make(map[string]interface{})
@@ -2282,13 +2075,9 @@
}
}
- f.incrementActiveFlowRemoveCount(ctx, flow)
- defer f.decrementActiveFlowRemoveCount(ctx, flow)
-
if flows.HasGroup(flow) {
direction = Multicast
- f.clearFlowFromResourceManager(ctx, flow, direction)
- return nil
+ return f.clearFlowFromResourceManager(ctx, flow, direction)
} else if IsUpstream(actionInfo[Output].(uint32)) {
direction = Upstream
} else {
@@ -2304,7 +2093,7 @@
// Serialize flow removes on a per subscriber basis
if f.perUserFlowHandleLock.TryLock(userKey) {
- f.clearFlowFromResourceManager(ctx, flow, direction) //TODO: Take care of the limitations
+ err = f.clearFlowFromResourceManager(ctx, flow, direction) //TODO: Take care of the limitations
f.perUserFlowHandleLock.Unlock(userKey)
} else {
// Ideally this should never happen
@@ -2312,7 +2101,7 @@
return errors.New("failed-to-acquire-per-user-lock")
}
- return nil
+ return err
}
//isIgmpTrapDownstreamFlow return true if the flow is a downsteam IGMP trap-to-host flow; false otherwise
@@ -2421,7 +2210,7 @@
logger.Debugw(ctx, "downstream-flow-meter-id", log.Fields{"ds-meter-id": DsMeterID})
}
- return f.processAddFlow(ctx, intfID, onuID, uniID, portNo, classifierInfo, actionInfo, flow, uint32(TpID), UsMeterID, DsMeterID, flowMetadata)
+ return f.processAddFlow(ctx, intfID, onuID, uniID, portNo, classifierInfo, actionInfo, flow, TpID, UsMeterID, DsMeterID, flowMetadata)
}
//WaitForFlowRemoveToFinishForSubscriber blocks until flow removes are complete for a given subscriber
@@ -2457,54 +2246,23 @@
if err != nil {
return olterrors.NewErrNotFound("multicast-in-port", log.Fields{"classifier": classifierInfo}, err)
}
- //this variable acts like a switch. When it is set, multicast flows are classified by eth_dst.
- //otherwise, classification is based on ipv4_dst by default.
- //the variable can be configurable in the future; it can be read from a configuration path in the kv store.
- mcastFlowClassificationByEthDst := false
- if mcastFlowClassificationByEthDst {
- //replace ipDst with ethDst
- if ipv4Dst, ok := classifierInfo[Ipv4Dst]; ok &&
- flows.IsMulticastIp(ipv4Dst.(uint32)) {
- // replace ipv4_dst classifier with eth_dst
- multicastMac := flows.ConvertToMulticastMacBytes(ipv4Dst.(uint32))
- delete(classifierInfo, Ipv4Dst)
- classifierInfo[EthDst] = multicastMac
- logger.Debugw(ctx, "multicast-ip-to-mac-conversion-success",
- log.Fields{
- "ip:": ipv4Dst.(uint32),
- "mac:": multicastMac})
- }
- }
delete(classifierInfo, EthType)
onuID := NoneOnuID
uniID := NoneUniID
- gemPortID := NoneGemPortID
- flowStoreCookie := getFlowStoreCookie(ctx, classifierInfo, uint32(0))
- if present := f.resourceMgr.IsFlowCookieOnKVStore(ctx, uint32(networkInterfaceID), int32(onuID), int32(uniID), flowStoreCookie); present {
+ if present := f.resourceMgr.IsFlowOnKvStore(ctx, networkInterfaceID, int32(onuID), int32(uniID), flow.Id); present {
logger.Infow(ctx, "multicast-flow-exists-not-re-adding", log.Fields{"classifier-info": classifierInfo})
return nil
}
- flowID, err := f.resourceMgr.GetFlowID(ctx, uint32(networkInterfaceID), int32(onuID), int32(uniID), uint32(gemPortID), flowStoreCookie, "", 0, 0)
- if err != nil {
- return olterrors.NewErrNotFound("multicast-flow-id",
- log.Fields{
- "interface-id": networkInterfaceID,
- "onu-id": onuID,
- "uni-id": uniID,
- "gem-port-id": gemPortID,
- "cookie": flowStoreCookie},
- err)
- }
classifierProto, err := makeOpenOltClassifierField(classifierInfo)
if err != nil {
return olterrors.NewErrInvalidValue(log.Fields{"classifier": classifierInfo}, err)
}
groupID := actionInfo[GroupID].(uint32)
multicastFlow := openoltpb2.Flow{
- FlowId: flowID,
+ FlowId: flow.Id,
FlowType: Multicast,
NetworkIntfId: int32(networkInterfaceID),
GroupId: groupID,
@@ -2513,7 +2271,7 @@
Cookie: flow.Cookie}
if err := f.addFlowToDevice(ctx, flow, &multicastFlow); err != nil {
- return olterrors.NewErrFlowOp("add", flowID, log.Fields{"flow": multicastFlow}, err)
+ return olterrors.NewErrFlowOp("add", flow.Id, log.Fields{"flow": multicastFlow}, err)
}
logger.Info(ctx, "multicast-flow-added-to-device-successfully")
//get cached group
@@ -2528,12 +2286,9 @@
}
}
- flowsToKVStore := f.getUpdatedFlowInfo(ctx, &multicastFlow, flowStoreCookie, MulticastFlow, flowID, flow.Id)
- if err = f.updateFlowInfoToKVStore(ctx, int32(networkInterfaceID),
- int32(onuID),
- int32(uniID),
- flowID, flowsToKVStore); err != nil {
- return olterrors.NewErrPersistence("update", "flow", flowID, log.Fields{"flow": multicastFlow}, err)
+ flowInfo := rsrcMgr.FlowInfo{Flow: &multicastFlow}
+ if err = f.resourceMgr.UpdateFlowIDInfo(ctx, networkInterfaceID, int32(onuID), int32(uniID), flow.Id, flowInfo); err != nil {
+ return olterrors.NewErrPersistence("update", "flow", flow.Id, log.Fields{"flow": multicastFlow}, err)
}
return nil
}
@@ -2596,7 +2351,7 @@
f.onuGemInfoLock.Lock()
defer f.onuGemInfoLock.Unlock()
- onugem := f.onuGemInfo[intfID]
+ onugem := f.onuGemInfo
// If the ONU already exists in onuGemInfo list, nothing to do
for _, onu := range onugem {
if onu.OnuID == onuID && onu.SerialNumber == serialNum {
@@ -2608,7 +2363,7 @@
}
onu := rsrcMgr.OnuGemInfo{OnuID: onuID, SerialNumber: serialNum, IntfID: intfID}
- f.onuGemInfo[intfID] = append(f.onuGemInfo[intfID], onu)
+ f.onuGemInfo = append(f.onuGemInfo, onu)
if err := f.resourceMgr.AddOnuGemInfo(ctx, intfID, onu); err != nil {
return err
}
@@ -2634,8 +2389,8 @@
"intf-id": intfID,
"onu-id": onuID,
"device-id": f.deviceHandler.device.Id,
- "onu-gem": f.onuGemInfo[intfID]})
- onugem := f.onuGemInfo[intfID]
+ "onu-gem": f.onuGemInfo})
+ onugem := f.onuGemInfo
// update the gem to the local cache as well as to kv strore
for idx, onu := range onugem {
if onu.OnuID == onuID {
@@ -2650,7 +2405,7 @@
}
}
onugem[idx].GemPorts = append(onugem[idx].GemPorts, gemPort)
- f.onuGemInfo[intfID] = onugem
+ f.onuGemInfo = onugem
break
}
}
@@ -2670,7 +2425,7 @@
"intf-id": intfID,
"onu-id": onuID,
"device-id": f.deviceHandler.device.Id,
- "onu-gem": f.onuGemInfo[intfID]})
+ "onu-gem": f.onuGemInfo})
}
// This function Lookup maps by serialNumber or (intfId, gemPort)
@@ -2681,14 +2436,14 @@
f.onuGemInfoLock.RLock()
defer f.onuGemInfoLock.RUnlock()
- logger.Infow(ctx, "getting-onu-id-from-gem-port-and-pon-port",
+ logger.Debugw(ctx, "getting-onu-id-from-gem-port-and-pon-port",
log.Fields{
"device-id": f.deviceHandler.device.Id,
- "onu-geminfo": f.onuGemInfo[intfID],
+ "onu-geminfo": f.onuGemInfo,
"intf-id": intfID,
"gemport-id": gemPortID})
// get onuid from the onugem info cache
- onugem := f.onuGemInfo[intfID]
+ onugem := f.onuGemInfo
for _, onu := range onugem {
for _, gem := range onu.GemPorts {
@@ -2749,11 +2504,11 @@
return 0, err
}
- f.onuGemInfoLock.RLock()
- defer f.onuGemInfoLock.RUnlock()
pktInkey := rsrcMgr.PacketInInfoKey{IntfID: intfID, OnuID: onuID, LogicalPort: portNum, VlanID: ctag, Priority: priority}
var ok bool
+ f.packetInGemPortLock.RLock()
gemPortID, ok = f.packetInGemPort[pktInkey]
+ f.packetInGemPortLock.RUnlock()
if ok {
logger.Debugw(ctx, "found-gemport-for-pktin-key",
log.Fields{
@@ -2766,7 +2521,9 @@
gemPortID, err = f.resourceMgr.GetGemPortFromOnuPktIn(ctx, pktInkey)
if err == nil {
if gemPortID != 0 {
+ f.packetInGemPortLock.Lock()
f.packetInGemPort[pktInkey] = gemPortID
+ f.packetInGemPortLock.Unlock()
logger.Infow(ctx, "found-gem-port-from-kv-store-and-updating-cache-with-gemport",
log.Fields{
"pktinkey": pktInkey,
@@ -2781,159 +2538,6 @@
}
-// nolint: gocyclo
-func installFlowOnAllGemports(ctx context.Context,
- f1 func(ctx context.Context, intfId uint32, onuId uint32, uniId uint32,
- portNo uint32, classifier map[string]interface{}, action map[string]interface{},
- logicalFlow *ofp.OfpFlowStats, allocId uint32, gemPortId uint32, tpID uint32) error,
- f2 func(ctx context.Context, intfId uint32, onuId uint32, uniId uint32, portNo uint32,
- classifier map[string]interface{}, action map[string]interface{},
- logicalFlow *ofp.OfpFlowStats, allocId uint32, gemPortId uint32, vlanId uint32,
- tpID uint32) error,
- args map[string]uint32,
- classifier map[string]interface{}, action map[string]interface{},
- logicalFlow *ofp.OfpFlowStats,
- gemPorts []uint32,
- TpInst interface{},
- FlowType string,
- direction string,
- tpID uint32,
- vlanID ...uint32) {
- logger.Debugw(ctx, "installing-flow-on-all-gem-ports",
- log.Fields{
- "FlowType": FlowType,
- "gemPorts": gemPorts,
- "vlan": vlanID})
-
- // The bit mapping for a gemport is expressed in tech-profile as a binary string. For example, 0b00000001
- // We need to trim prefix "0b", before further processing
- // Once the "0b" prefix is trimmed, we iterate each character in the string to identify which index
- // in the string is set to binary bit 1 (expressed as char '1' in the binary string).
-
- // If a particular character in the string is set to '1', identify the index of this character from
- // the LSB position which marks the PCP bit consumed by the given gem port.
- // This PCP bit now becomes a classifier in the flow.
-
- switch TpInst := TpInst.(type) {
- case *tp.TechProfile:
- attributes := TpInst.DownstreamGemPortAttributeList
- if direction == Upstream {
- attributes = TpInst.UpstreamGemPortAttributeList
- }
-
- for _, gemPortAttribute := range attributes {
- if direction == Downstream && strings.ToUpper(gemPortAttribute.IsMulticast) == "TRUE" {
- continue
- }
- gemPortID := gemPortAttribute.GemportID
- if allPbitsMarked(gemPortAttribute.PbitMap) {
- classifier[VlanPcp] = uint32(VlanPCPMask)
- if FlowType == DhcpFlow || FlowType == IgmpFlow || FlowType == HsiaFlow {
- if err := f1(ctx, args["intfId"], args["onuId"], args["uniId"], args["portNo"], classifier, action, logicalFlow, args["allocId"], gemPortID, tpID); err != nil {
- logger.Warn(ctx, err)
- }
- } else if FlowType == EapolFlow {
- if err := f2(ctx, args["intfId"], args["onuId"], args["uniId"], args["portNo"], classifier, action, logicalFlow, args["allocId"], gemPortID, vlanID[0], tpID); err != nil {
- logger.Warn(ctx, err)
- }
- }
- } else {
- for pos, pbitSet := range strings.TrimPrefix(gemPortAttribute.PbitMap, BinaryStringPrefix) {
- if pbitSet == BinaryBit1 {
- classifier[VlanPcp] = uint32(len(strings.TrimPrefix(gemPortAttribute.PbitMap, BinaryStringPrefix))) - 1 - uint32(pos)
- if FlowType == DhcpFlow || FlowType == IgmpFlow || FlowType == HsiaFlow {
- if err := f1(ctx, args["intfId"], args["onuId"], args["uniId"], args["portNo"], classifier, action, logicalFlow, args["allocId"], gemPortID, tpID); err != nil {
- logger.Warn(ctx, err)
- }
- } else if FlowType == EapolFlow {
- if err := f2(ctx, args["intfId"], args["onuId"], args["uniId"], args["portNo"], classifier, action, logicalFlow, args["allocId"], gemPortID, vlanID[0], tpID); err != nil {
- logger.Warn(ctx, err)
- }
- }
- }
- }
- }
- }
- case *tp.EponProfile:
- if direction == Upstream {
- attributes := TpInst.UpstreamQueueAttributeList
- for _, queueAttribute := range attributes {
- gemPortID := queueAttribute.GemportID
- if allPbitsMarked(queueAttribute.PbitMap) {
- classifier[VlanPcp] = uint32(VlanPCPMask)
- if FlowType == DhcpFlow || FlowType == IgmpFlow || FlowType == HsiaFlow {
- if err := f1(ctx, args["intfId"], args["onuId"], args["uniId"], args["portNo"], classifier, action, logicalFlow, args["allocId"], gemPortID, tpID); err != nil {
- logger.Warn(ctx, err)
- }
- } else if FlowType == EapolFlow {
- if err := f2(ctx, args["intfId"], args["onuId"], args["uniId"], args["portNo"], classifier, action, logicalFlow, args["allocId"], gemPortID, vlanID[0], tpID); err != nil {
- logger.Warn(ctx, err)
- }
- }
- } else {
- for pos, pbitSet := range strings.TrimPrefix(queueAttribute.PbitMap, BinaryStringPrefix) {
- if pbitSet == BinaryBit1 {
- classifier[VlanPcp] = uint32(len(strings.TrimPrefix(queueAttribute.PbitMap, BinaryStringPrefix))) - 1 - uint32(pos)
- if FlowType == DhcpFlow || FlowType == IgmpFlow || FlowType == HsiaFlow {
- if err := f1(ctx, args["intfId"], args["onuId"], args["uniId"], args["portNo"], classifier, action, logicalFlow, args["allocId"], gemPortID, tpID); err != nil {
- logger.Warn(ctx, err)
- }
- } else if FlowType == EapolFlow {
- if err := f2(ctx, args["intfId"], args["onuId"], args["uniId"], args["portNo"], classifier, action, logicalFlow, args["allocId"], gemPortID, vlanID[0], tpID); err != nil {
- logger.Warn(ctx, err)
- }
- }
- }
- }
- }
- }
- } else {
- attributes := TpInst.DownstreamQueueAttributeList
- for _, queueAttribute := range attributes {
- gemPortID := queueAttribute.GemportID
- if allPbitsMarked(queueAttribute.PbitMap) {
- classifier[VlanPcp] = uint32(VlanPCPMask)
- if FlowType == DhcpFlow || FlowType == IgmpFlow || FlowType == HsiaFlow {
- if err := f1(ctx, args["intfId"], args["onuId"], args["uniId"], args["portNo"], classifier, action, logicalFlow, args["allocId"], gemPortID, tpID); err != nil {
- logger.Warn(ctx, err)
- }
- } else if FlowType == EapolFlow {
- if err := f2(ctx, args["intfId"], args["onuId"], args["uniId"], args["portNo"], classifier, action, logicalFlow, args["allocId"], gemPortID, vlanID[0], tpID); err != nil {
- logger.Warn(ctx, err)
- }
- }
- } else {
- for pos, pbitSet := range strings.TrimPrefix(queueAttribute.PbitMap, BinaryStringPrefix) {
- if pbitSet == BinaryBit1 {
- classifier[VlanPcp] = uint32(len(strings.TrimPrefix(queueAttribute.PbitMap, BinaryStringPrefix))) - 1 - uint32(pos)
- if FlowType == DhcpFlow || FlowType == IgmpFlow || FlowType == HsiaFlow {
- if err := f1(ctx, args["intfId"], args["onuId"], args["uniId"], args["portNo"], classifier, action, logicalFlow, args["allocId"], gemPortID, tpID); err != nil {
- logger.Warn(ctx, err)
- }
- } else if FlowType == EapolFlow {
- if err := f2(ctx, args["intfId"], args["onuId"], args["uniId"], args["portNo"], classifier, action, logicalFlow, args["allocId"], gemPortID, vlanID[0], tpID); err != nil {
- logger.Warn(ctx, err)
- }
- }
- }
- }
- }
- }
- }
- default:
- logger.Errorw(ctx, "unknown-tech", log.Fields{"tpInst": TpInst})
- }
-}
-
-func allPbitsMarked(pbitMap string) bool {
- for pos, pBit := range pbitMap {
- if pos >= 2 && pBit != BinaryBit1 {
- return false
- }
- }
- return true
-}
-
func (f *OpenOltFlowMgr) addDHCPTrapFlowOnNNI(ctx context.Context, logicalFlow *ofp.OfpFlowStats, classifier map[string]interface{}, portNo uint32) error {
logger.Debug(ctx, "adding-trap-dhcp-of-nni-flow")
action := make(map[string]interface{})
@@ -2963,22 +2567,11 @@
err)
}
- flowStoreCookie := getFlowStoreCookie(ctx, classifier, uint32(0))
- if present := f.resourceMgr.IsFlowCookieOnKVStore(ctx, uint32(networkInterfaceID), int32(onuID), int32(uniID), flowStoreCookie); present {
+ if present := f.resourceMgr.IsFlowOnKvStore(ctx, networkInterfaceID, int32(onuID), int32(uniID), logicalFlow.Id); present {
logger.Info(ctx, "flow-exists-not-re-adding")
return nil
}
- flowID, err := f.resourceMgr.GetFlowID(ctx, uint32(networkInterfaceID), int32(onuID), int32(uniID), uint32(gemPortID), flowStoreCookie, "", 0, 0)
- if err != nil {
- return olterrors.NewErrNotFound("dhcp-trap-nni-flow-id",
- log.Fields{
- "interface-id": networkInterfaceID,
- "onu-id": onuID,
- "uni-id": uniID,
- "gem-port-id": gemPortID,
- "cookie": flowStoreCookie},
- err)
- }
+
classifierProto, err := makeOpenOltClassifierField(classifier)
if err != nil {
return olterrors.NewErrInvalidValue(log.Fields{"classifier": classifier}, err)
@@ -2992,7 +2585,7 @@
downstreamflow := openoltpb2.Flow{AccessIntfId: int32(-1), // AccessIntfId not required
OnuId: int32(onuID), // OnuId not required
UniId: int32(uniID), // UniId not used
- FlowId: flowID,
+ FlowId: logicalFlow.Id,
FlowType: Downstream,
AllocId: int32(allocID), // AllocId not used
NetworkIntfId: int32(networkInterfaceID),
@@ -3003,15 +2596,12 @@
Cookie: logicalFlow.Cookie,
PortNo: portNo}
if err := f.addFlowToDevice(ctx, logicalFlow, &downstreamflow); err != nil {
- return olterrors.NewErrFlowOp("add", flowID, log.Fields{"flow": downstreamflow}, err)
+ return olterrors.NewErrFlowOp("add", logicalFlow.Id, log.Fields{"flow": downstreamflow}, err)
}
logger.Info(ctx, "dhcp-trap-on-nni-flow-added–to-device-successfully")
- flowsToKVStore := f.getUpdatedFlowInfo(ctx, &downstreamflow, flowStoreCookie, "", flowID, logicalFlow.Id)
- if err := f.updateFlowInfoToKVStore(ctx, int32(networkInterfaceID),
- int32(onuID),
- int32(uniID),
- flowID, flowsToKVStore); err != nil {
- return olterrors.NewErrPersistence("update", "flow", flowID, log.Fields{"flow": downstreamflow}, err)
+ flowInfo := rsrcMgr.FlowInfo{Flow: &downstreamflow}
+ if err := f.resourceMgr.UpdateFlowIDInfo(ctx, networkInterfaceID, int32(onuID), int32(uniID), logicalFlow.Id, flowInfo); err != nil {
+ return olterrors.NewErrPersistence("update", "flow", logicalFlow.Id, log.Fields{"flow": downstreamflow}, err)
}
return nil
}
@@ -3070,22 +2660,11 @@
"action": action},
err)
}
- flowStoreCookie := getFlowStoreCookie(ctx, classifier, uint32(0))
- if present := f.resourceMgr.IsFlowCookieOnKVStore(ctx, uint32(networkInterfaceID), int32(onuID), int32(uniID), flowStoreCookie); present {
+ if present := f.resourceMgr.IsFlowOnKvStore(ctx, networkInterfaceID, int32(onuID), int32(uniID), logicalFlow.Id); present {
logger.Info(ctx, "igmp-flow-exists-not-re-adding")
return nil
}
- flowID, err := f.resourceMgr.GetFlowID(ctx, uint32(networkInterfaceID), int32(onuID), int32(uniID), uint32(gemPortID), flowStoreCookie, "", 0, 0)
- if err != nil {
- return olterrors.NewErrNotFound("igmp-flow-id",
- log.Fields{
- "interface-id": networkInterfaceID,
- "onu-id": onuID,
- "uni-id": uniID,
- "gem-port-id": gemPortID,
- "cookie": flowStoreCookie},
- err)
- }
+
classifierProto, err := makeOpenOltClassifierField(classifier)
if err != nil {
return olterrors.NewErrInvalidValue(log.Fields{"classifier": classifier}, err)
@@ -3099,7 +2678,7 @@
downstreamflow := openoltpb2.Flow{AccessIntfId: int32(-1), // AccessIntfId not required
OnuId: int32(onuID), // OnuId not required
UniId: int32(uniID), // UniId not used
- FlowId: flowID,
+ FlowId: logicalFlow.Id,
FlowType: Downstream,
AllocId: int32(allocID), // AllocId not used
NetworkIntfId: int32(networkInterfaceID),
@@ -3110,15 +2689,12 @@
Cookie: logicalFlow.Cookie,
PortNo: portNo}
if err := f.addFlowToDevice(ctx, logicalFlow, &downstreamflow); err != nil {
- return olterrors.NewErrFlowOp("add", flowID, log.Fields{"flow": downstreamflow}, err)
+ return olterrors.NewErrFlowOp("add", logicalFlow.Id, log.Fields{"flow": downstreamflow}, err)
}
logger.Info(ctx, "igmp-trap-on-nni-flow-added-to-device-successfully")
- flowsToKVStore := f.getUpdatedFlowInfo(ctx, &downstreamflow, flowStoreCookie, "", flowID, logicalFlow.Id)
- if err := f.updateFlowInfoToKVStore(ctx, int32(networkInterfaceID),
- int32(onuID),
- int32(uniID),
- flowID, flowsToKVStore); err != nil {
- return olterrors.NewErrPersistence("update", "flow", flowID, log.Fields{"flow": downstreamflow}, err)
+ flowInfo := rsrcMgr.FlowInfo{Flow: &downstreamflow}
+ if err := f.resourceMgr.UpdateFlowIDInfo(ctx, networkInterfaceID, int32(onuID), int32(uniID), logicalFlow.Id, flowInfo); err != nil {
+ return olterrors.NewErrPersistence("update", "flow", logicalFlow.Id, log.Fields{"flow": downstreamflow}, err)
}
return nil
}
@@ -3145,6 +2721,37 @@
uniID := args[UniID]
portNo := args[PortNo]
allocID := args[AllocID]
+ pbitToGem := make(map[uint32]uint32)
+
+ if len(gemPorts) == 1 {
+ // If there is only single gemport use that and do not populate pbitToGem map
+ gemPort = gemPorts[0]
+ } else if pcp, ok := classifierInfo[VlanPcp]; !ok {
+ for idx, gemID := range gemPorts {
+ switch TpInst := TpInst.(type) {
+ case *tp.TechProfile:
+ pBitMap := TpInst.UpstreamGemPortAttributeList[idx].PbitMap
+ // Trim the bitMapPrefix form the binary string and then iterate each character in the binary string.
+ // If the character is set to pbit1, extract the pcp value from the position of this character in the string.
+ // Update the pbitToGem map with key being the pcp bit and the value being the gemPortID that consumes
+ // this pcp bit traffic.
+ for pos, pbitSet := range strings.TrimPrefix(pBitMap, bitMapPrefix) {
+ if pbitSet == pbit1 {
+ pcp := uint32(len(strings.TrimPrefix(pBitMap, bitMapPrefix))) - 1 - uint32(pos)
+ pbitToGem[pcp] = gemID
+ }
+ }
+ default:
+ logger.Errorw(ctx, "unsupported-tech", log.Fields{"tpInst": TpInst})
+ return
+ }
+ }
+ } else { // Extract the exact gemport which maps to the PCP classifier in the flow
+ gemPort = f.techprofile[intfID].GetGemportIDForPbit(ctx, TpInst,
+ tp_pb.Direction_UPSTREAM,
+ pcp.(uint32))
+ }
+
if ipProto, ok := classifierInfo[IPProto]; ok {
if ipProto.(uint32) == IPProtoDhcp {
logger.Infow(ctx, "adding-dhcp-flow", log.Fields{
@@ -3154,18 +2761,9 @@
"onu-id": onuID,
"uni-id": uniID,
})
- if pcp, ok := classifierInfo[VlanPcp]; ok {
- gemPort = f.techprofile[intfID].GetGemportIDForPbit(ctx, TpInst,
- tp_pb.Direction_UPSTREAM,
- pcp.(uint32))
- //Adding DHCP upstream flow
-
- if err := f.addDHCPTrapFlow(ctx, intfID, onuID, uniID, portNo, classifierInfo, actionInfo, flow, allocID, gemPort, tpID); err != nil {
- logger.Warn(ctx, err)
- }
- } else {
- //Adding DHCP upstream flow to all gemports
- installFlowOnAllGemports(ctx, f.addDHCPTrapFlow, nil, args, classifierInfo, actionInfo, flow, gemPorts, TpInst, DhcpFlow, Upstream, tpID)
+ //Adding DHCP upstream flow
+ if err := f.addDHCPTrapFlow(ctx, intfID, onuID, uniID, portNo, classifierInfo, actionInfo, flow, allocID, gemPort, tpID, pbitToGem); err != nil {
+ logger.Warn(ctx, err)
}
} else if ipProto.(uint32) == IgmpProto {
@@ -3175,16 +2773,8 @@
"onu-id": onuID,
"uni-id": uniID,
"classifier-info:": classifierInfo})
- if pcp, ok := classifierInfo[VlanPcp]; ok {
- gemPort = f.techprofile[intfID].GetGemportIDForPbit(ctx, TpInst,
- tp_pb.Direction_UPSTREAM,
- pcp.(uint32))
- if err := f.addIGMPTrapFlow(ctx, intfID, onuID, uniID, portNo, classifierInfo, actionInfo, flow, allocID, gemPort, tpID); err != nil {
- logger.Warn(ctx, err)
- }
- } else {
- //Adding IGMP upstream flow to all gem ports
- installFlowOnAllGemports(ctx, f.addIGMPTrapFlow, nil, args, classifierInfo, actionInfo, flow, gemPorts, TpInst, IgmpFlow, Upstream, tpID)
+ if err := f.addIGMPTrapFlow(ctx, intfID, onuID, uniID, portNo, classifierInfo, actionInfo, flow, allocID, gemPort, tpID, pbitToGem); err != nil {
+ logger.Warn(ctx, err)
}
} else {
logger.Errorw(ctx, "invalid-classifier-to-handle", log.Fields{"classifier": classifierInfo, "action": actionInfo})
@@ -3203,16 +2793,8 @@
} else {
vlanID = DefaultMgmtVlan
}
- if pcp, ok := classifierInfo[VlanPcp]; ok {
- gemPort = f.techprofile[intfID].GetGemportIDForPbit(ctx, TpInst,
- tp_pb.Direction_UPSTREAM,
- pcp.(uint32))
-
- if err := f.addEAPOLFlow(ctx, intfID, onuID, uniID, portNo, classifierInfo, actionInfo, flow, allocID, gemPort, vlanID, tpID); err != nil {
- logger.Warn(ctx, err)
- }
- } else {
- installFlowOnAllGemports(ctx, nil, f.addEAPOLFlow, args, classifierInfo, actionInfo, flow, gemPorts, TpInst, EapolFlow, Upstream, tpID, vlanID)
+ if err := f.addEAPOLFlow(ctx, intfID, onuID, uniID, portNo, classifierInfo, actionInfo, flow, allocID, gemPort, vlanID, tpID, pbitToGem); err != nil {
+ logger.Warn(ctx, err)
}
}
} else if _, ok := actionInfo[PushVlan]; ok {
@@ -3221,17 +2803,9 @@
"onu-id": onuID,
"uni-id": uniID,
})
- if pcp, ok := classifierInfo[VlanPcp]; ok {
- gemPort = f.techprofile[intfID].GetGemportIDForPbit(ctx, TpInst,
- tp_pb.Direction_UPSTREAM,
- pcp.(uint32))
- //Adding HSIA upstream flow
- if err := f.addUpstreamDataFlow(ctx, intfID, onuID, uniID, portNo, classifierInfo, actionInfo, flow, allocID, gemPort, tpID); err != nil {
- logger.Warn(ctx, err)
- }
- } else {
- //Adding HSIA upstream flow to all gemports
- installFlowOnAllGemports(ctx, f.addUpstreamDataFlow, nil, args, classifierInfo, actionInfo, flow, gemPorts, TpInst, HsiaFlow, Upstream, tpID)
+ //Adding HSIA upstream flow
+ if err := f.addUpstreamDataPathFlow(ctx, intfID, onuID, uniID, portNo, classifierInfo, actionInfo, flow, allocID, gemPort, tpID, pbitToGem); err != nil {
+ logger.Warn(ctx, err)
}
} else if _, ok := actionInfo[PopVlan]; ok {
logger.Infow(ctx, "adding-downstream-data-rule", log.Fields{
@@ -3239,17 +2813,9 @@
"onu-id": onuID,
"uni-id": uniID,
})
- if pcp, ok := classifierInfo[VlanPcp]; ok {
- gemPort = f.techprofile[intfID].GetGemportIDForPbit(ctx, TpInst,
- tp_pb.Direction_DOWNSTREAM,
- pcp.(uint32))
- //Adding HSIA downstream flow
- if err := f.addDownstreamDataFlow(ctx, intfID, onuID, uniID, portNo, classifierInfo, actionInfo, flow, allocID, gemPort, tpID); err != nil {
- logger.Warn(ctx, err)
- }
- } else {
- //Adding HSIA downstream flow to all gemports
- installFlowOnAllGemports(ctx, f.addDownstreamDataFlow, nil, args, classifierInfo, actionInfo, flow, gemPorts, TpInst, HsiaFlow, Downstream, tpID)
+ //Adding HSIA downstream flow
+ if err := f.addDownstreamDataPathFlow(ctx, intfID, onuID, uniID, portNo, classifierInfo, actionInfo, flow, allocID, gemPort, tpID, pbitToGem); err != nil {
+ logger.Warn(ctx, err)
}
} else {
logger.Errorw(ctx, "invalid-flow-type-to-handle",
@@ -3270,21 +2836,12 @@
}()
}
-func (f *OpenOltFlowMgr) isGemPortUsedByAnotherFlow(ctx context.Context, gemPK gemPortKey) (bool, error) {
- if f.perGemPortLock.TryLock(gemPK) {
- flowIDList := f.flowsUsedByGemPort[gemPK]
- f.perGemPortLock.Unlock(gemPK)
- return len(flowIDList) > 1, nil
- }
- logger.Error(ctx, "failed-to-acquire-per-gem-port-lock",
- log.Fields{
- "device-id": f.deviceHandler.device.Id,
- "key": gemPK,
- })
- return false, olterrors.NewErrAdapter("failed-to-acquire-per-gem-port-lock", log.Fields{
- "device-id": f.deviceHandler.device.Id,
- "key": gemPK,
- }, nil)
+func (f *OpenOltFlowMgr) isGemPortUsedByAnotherFlow(gemPortID uint32) bool {
+ f.flowsUsedByGemPortKey.RLock()
+ flowIDList := f.flowsUsedByGemPort[gemPortID]
+ f.flowsUsedByGemPortKey.RUnlock()
+ return len(flowIDList) > 1
+
}
func (f *OpenOltFlowMgr) isTechProfileUsedByAnotherGem(ctx context.Context, ponIntf uint32, onuID uint32, uniID uint32, tpID uint32, tpInst *tp.TechProfile, gemPortID uint32) (bool, uint32) {
@@ -3299,10 +2856,10 @@
}
if tpInst.InstanceCtrl.Onu == "single-instance" {
// The TP information for the given TP ID, PON ID, ONU ID, UNI ID should be removed.
- if err := f.resourceMgr.RemoveTechProfileIDForOnu(ctx, ponIntf, uint32(onuID), uint32(uniID), tpID); err != nil {
+ if err := f.resourceMgr.RemoveTechProfileIDForOnu(ctx, ponIntf, onuID, uniID, tpID); err != nil {
logger.Warn(ctx, err)
}
- if err := f.DeleteTechProfileInstance(ctx, ponIntf, uint32(onuID), uint32(uniID), "", tpID); err != nil {
+ if err := f.DeleteTechProfileInstance(ctx, ponIntf, onuID, uniID, "", tpID); err != nil {
logger.Warn(ctx, err)
}
@@ -3516,7 +3073,16 @@
return uint32(TpID), nil
}
-func appendUnique(slice []uint32, item uint32) []uint32 {
+func appendUnique64bit(slice []uint64, item uint64) []uint64 {
+ for _, sliceElement := range slice {
+ if sliceElement == item {
+ return slice
+ }
+ }
+ return append(slice, item)
+}
+
+func appendUnique32bit(slice []uint32, item uint32) []uint32 {
for _, sliceElement := range slice {
if sliceElement == item {
return slice
@@ -3565,10 +3131,10 @@
}
pktInkey := rsrcMgr.PacketInInfoKey{IntfID: intfID, OnuID: onuID, LogicalPort: logicalPort, VlanID: cTag, Priority: priority}
- f.onuGemInfoLock.Lock()
- defer f.onuGemInfoLock.Unlock()
-
+ f.packetInGemPortLock.RLock()
lookupGemPort, ok := f.packetInGemPort[pktInkey]
+ f.packetInGemPortLock.RUnlock()
+
if ok {
if lookupGemPort == gemPort {
logger.Infow(ctx, "pktin-key/value-found-in-cache--no-need-to-update-kv--assume-both-in-sync",
@@ -3578,7 +3144,9 @@
return
}
}
+ f.packetInGemPortLock.Lock()
f.packetInGemPort[pktInkey] = gemPort
+ f.packetInGemPortLock.Unlock()
f.resourceMgr.UpdateGemPortForPktIn(ctx, pktInkey, gemPort)
logger.Infow(ctx, "pktin-key-not-found-in-local-cache-value-is-different--updating-cache-and-kv-store",
@@ -3620,7 +3188,7 @@
f.onuGemInfoLock.Lock()
defer f.onuGemInfoLock.Unlock()
- onugem := f.onuGemInfo[intfID]
+ onugem := f.onuGemInfo
for idx, onu := range onugem {
if onu.OnuID == onuID {
for _, uni := range onu.UniPorts {
@@ -3630,7 +3198,7 @@
}
}
onugem[idx].UniPorts = append(onugem[idx].UniPorts, portNum)
- f.onuGemInfo[intfID] = onugem
+ f.onuGemInfo = onugem
}
}
f.resourceMgr.AddUniPortToOnuInfo(ctx, intfID, onuID, portNum)
@@ -3643,89 +3211,61 @@
logger.Error(ctx, "failed-to-get-flowid-list-per-gem", log.Fields{"intf": intf})
return
}
+ f.flowsUsedByGemPortKey.Lock()
for gem, FlowIDs := range flowIDsList {
- gemPK := gemPortKey{intf, uint32(gem)}
- if f.perGemPortLock.TryLock(gemPK) {
- f.flowsUsedByGemPort[gemPK] = FlowIDs
- f.perGemPortLock.Unlock(gemPK)
- } else {
- logger.Error(ctx, "failed-to-acquire-per-gem-port-lock",
- log.Fields{
- "intf-id": intf,
- "device-id": f.deviceHandler.device.Id,
- "key": gemPK,
- })
- }
+ f.flowsUsedByGemPort[gem] = FlowIDs
}
+ f.flowsUsedByGemPortKey.Unlock()
}
//clearMulticastFlowFromResourceManager removes a multicast flow from the KV store and
// clears resources reserved for this multicast flow
-func (f *OpenOltFlowMgr) clearMulticastFlowFromResourceManager(ctx context.Context, flow *ofp.OfpFlowStats) {
+func (f *OpenOltFlowMgr) clearMulticastFlowFromResourceManager(ctx context.Context, flow *ofp.OfpFlowStats) error {
classifierInfo := make(map[string]interface{})
+ var flowInfo *rsrcMgr.FlowInfo
formulateClassifierInfoFromFlow(ctx, classifierInfo, flow)
networkInterfaceID, err := f.getNNIInterfaceIDOfMulticastFlow(ctx, classifierInfo)
if err != nil {
logger.Warnw(ctx, "no-inport-found--cannot-release-resources-of-the-multicast-flow", log.Fields{"flowId:": flow.Id})
- return
+ return err
}
var onuID = int32(NoneOnuID)
var uniID = int32(NoneUniID)
- var flowID uint32
-
- flowIds := f.resourceMgr.GetCurrentFlowIDsForOnu(ctx, networkInterfaceID, onuID, uniID)
-
- for _, flowID = range flowIds {
- flowInfo := f.resourceMgr.GetFlowIDInfo(ctx, networkInterfaceID, onuID, uniID, flowID)
- if flowInfo == nil {
- logger.Debugw(ctx, "no-multicast-flowinfo-found-in-the-kv-store",
- log.Fields{
- "intf": networkInterfaceID,
- "onu-id": onuID,
- "uni-id": uniID,
- "flow-id": flowID})
- continue
- }
- updatedFlows := *flowInfo
- for i, storedFlow := range updatedFlows {
- if flow.Id == storedFlow.LogicalFlowID {
- removeFlowMessage := openoltpb2.Flow{FlowId: storedFlow.Flow.FlowId, FlowType: storedFlow.Flow.FlowType}
- logger.Debugw(ctx, "multicast-flow-to-be-deleted",
- log.Fields{
- "flow": storedFlow,
- "flow-id": flow.Id,
- "device-id": f.deviceHandler.device.Id})
- //remove from device
- if err := f.removeFlowFromDevice(ctx, &removeFlowMessage, flow.Id); err != nil {
- // DKB
- logger.Errorw(ctx, "failed-to-remove-multicast-flow",
- log.Fields{
- "flow-id": flow.Id,
- "error": err})
- return
- }
- logger.Infow(ctx, "multicast-flow-removed-from-device-successfully", log.Fields{"flow-id": flow.Id})
- //Remove the Flow from FlowInfo
- updatedFlows = append(updatedFlows[:i], updatedFlows[i+1:]...)
- if err := f.updateFlowInfoToKVStore(ctx, int32(networkInterfaceID), NoneOnuID, NoneUniID, flowID, &updatedFlows); err != nil {
- logger.Errorw(ctx, "failed-to-delete-multicast-flow-from-the-kv-store",
- log.Fields{"flow": storedFlow,
- "err": err})
- return
- }
- //release flow id
- logger.Debugw(ctx, "releasing-multicast-flow-id",
- log.Fields{"flow-id": flowID,
- "interfaceID": networkInterfaceID})
- f.resourceMgr.FreeFlowID(ctx, uint32(networkInterfaceID), NoneOnuID, NoneUniID, flowID)
- }
- }
+ var flowID uint64
+ if flowInfo = f.resourceMgr.GetFlowIDInfo(ctx, networkInterfaceID, onuID, uniID, flow.Id); flowInfo == nil {
+ return olterrors.NewErrPersistence("remove", "flow", flow.Id,
+ log.Fields{
+ "flow": flow,
+ "device-id": f.deviceHandler.device.Id,
+ "intf-id": networkInterfaceID,
+ "onu-id": onuID}, err).Log()
}
+ removeFlowMessage := openoltpb2.Flow{FlowId: flow.Id, FlowType: flowInfo.Flow.FlowType}
+ logger.Debugw(ctx, "multicast-flow-to-be-deleted",
+ log.Fields{
+ "flow": flowInfo.Flow,
+ "flow-id": flow.Id,
+ "device-id": f.deviceHandler.device.Id})
+ // Remove from device
+ if err := f.removeFlowFromDevice(ctx, &removeFlowMessage, flow.Id); err != nil {
+ // DKB
+ logger.Errorw(ctx, "failed-to-remove-multicast-flow",
+ log.Fields{
+ "flow-id": flow.Id,
+ "error": err})
+ return err
+ }
+ // Remove flow from KV store
+ return f.resourceMgr.RemoveFlowIDInfo(ctx, networkInterfaceID, onuID, uniID, flowID)
}
func (f *OpenOltFlowMgr) incrementActiveFlowRemoveCount(ctx context.Context, flow *ofp.OfpFlowStats) {
+
+ f.pendingFlowRemoveDataPerSubscriberLock.Lock()
+ defer f.pendingFlowRemoveDataPerSubscriberLock.Unlock()
+
inPort, outPort := getPorts(flow)
logger.Debugw(ctx, "increment-flow-remove-count-for-inPort-out-port", log.Fields{"inPort": inPort, "out-port": outPort})
if inPort != InvalidPort && outPort != InvalidPort {
@@ -3733,8 +3273,6 @@
key := pendingFlowRemoveDataKey{intfID: intfID, onuID: onuID, uniID: uniID}
logger.Debugw(ctx, "increment-flow-remove-count-for-subscriber", log.Fields{"intf-id": intfID, "onu-id": onuID, "uni-id": uniID})
- f.pendingFlowRemoveDataPerSubscriberLock.Lock()
- defer f.pendingFlowRemoveDataPerSubscriberLock.Unlock()
flowRemoveData, ok := f.pendingFlowRemoveDataPerSubscriber[key]
if !ok {
flowRemoveData = pendingFlowRemoveData{
@@ -3752,15 +3290,16 @@
}
func (f *OpenOltFlowMgr) decrementActiveFlowRemoveCount(ctx context.Context, flow *ofp.OfpFlowStats) {
+ f.pendingFlowRemoveDataPerSubscriberLock.Lock()
+ defer f.pendingFlowRemoveDataPerSubscriberLock.Unlock()
+
inPort, outPort := getPorts(flow)
logger.Debugw(ctx, "decrement-flow-remove-count-for-inPort-out-port", log.Fields{"inPort": inPort, "out-port": outPort})
if inPort != InvalidPort && outPort != InvalidPort {
- _, intfID, onuID, uniID := ExtractAccessFromFlow(uint32(inPort), uint32(outPort))
+ _, intfID, onuID, uniID := ExtractAccessFromFlow(inPort, outPort)
key := pendingFlowRemoveDataKey{intfID: intfID, onuID: onuID, uniID: uniID}
logger.Debugw(ctx, "decrement-flow-remove-count-for-subscriber", log.Fields{"intf-id": intfID, "onu-id": onuID, "uni-id": uniID})
- f.pendingFlowRemoveDataPerSubscriberLock.Lock()
- defer f.pendingFlowRemoveDataPerSubscriberLock.Unlock()
if val, ok := f.pendingFlowRemoveDataPerSubscriber[key]; !ok {
logger.Fatalf(ctx, "flow-remove-key-not-found", log.Fields{"intf-id": intfID, "onu-id": onuID, "uni-id": uniID})
} else {
@@ -3806,3 +3345,54 @@
logger.Debugw(ctx, "all-flows-cleared--handling-flow-add-now", log.Fields{"intf-id": intfID, "onu-id": onuID, "uni-id": uniID})
}
}
+
+// reconcileSubscriberDataPathFlowIDMap reconciles subscriberDataPathFlowIDMap from KV store
+func (f *OpenOltFlowMgr) reconcileSubscriberDataPathFlowIDMap(ctx context.Context) {
+ onuGemInfo, err := f.resourceMgr.GetOnuGemInfo(ctx, f.ponPortIdx)
+ if err != nil {
+ _ = olterrors.NewErrNotFound("onu", log.Fields{
+ "pon-port": f.ponPortIdx}, err).Log()
+ return
+ }
+
+ f.subscriberDataPathFlowIDMapLock.Lock()
+ defer f.subscriberDataPathFlowIDMapLock.Unlock()
+
+ for _, onu := range onuGemInfo {
+ for _, uniID := range onu.UniPorts {
+ flowIDs, err := f.resourceMgr.GetCurrentFlowIDsForOnu(ctx, onu.IntfID, int32(onu.OnuID), int32(uniID))
+ if err != nil {
+ logger.Fatalf(ctx, "failed-to-read-flow-ids-of-onu-during-reconciliation")
+ }
+ for _, flowID := range flowIDs {
+ flowInfo := f.resourceMgr.GetFlowIDInfo(ctx, onu.IntfID, int32(onu.OnuID), int32(uniID), flowID)
+ if flowInfo == nil {
+ // Error is already logged in the called function
+ continue
+ }
+ if flowInfo.Flow.Classifier.PktTagType == DoubleTag &&
+ flowInfo.Flow.FlowType == Downstream &&
+ flowInfo.Flow.Classifier.OVid > 0 &&
+ flowInfo.Flow.TechProfileId > 0 {
+ key := subscriberDataPathFlowIDKey{intfID: onu.IntfID, onuID: onu.OnuID, uniID: uniID, direction: flowInfo.Flow.FlowType, tpID: flowInfo.Flow.TechProfileId}
+ if _, ok := f.subscriberDataPathFlowIDMap[key]; !ok {
+ f.subscriberDataPathFlowIDMap[key] = flowInfo.Flow.FlowId
+ }
+ } else if flowInfo.Flow.Classifier.PktTagType == SingleTag &&
+ flowInfo.Flow.FlowType == Upstream &&
+ flowInfo.Flow.Action.OVid > 0 &&
+ flowInfo.Flow.TechProfileId > 0 {
+ key := subscriberDataPathFlowIDKey{intfID: onu.IntfID, onuID: onu.OnuID, uniID: uniID, direction: flowInfo.Flow.FlowType, tpID: flowInfo.Flow.TechProfileId}
+ if _, ok := f.subscriberDataPathFlowIDMap[key]; !ok {
+ f.subscriberDataPathFlowIDMap[key] = flowInfo.Flow.FlowId
+ }
+ }
+ }
+ }
+ }
+}
+
+// isDatapathFlow declares a flow as datapath flow if it is not a controller bound flow and the flow does not have group
+func isDatapathFlow(flow *ofp.OfpFlowStats) bool {
+ return !IsControllerBoundFlow(flows.GetOutPort(flow)) && !flows.HasGroup(flow)
+}
diff --git a/internal/pkg/core/openolt_flowmgr_test.go b/internal/pkg/core/openolt_flowmgr_test.go
index b75bfac..9464830 100644
--- a/internal/pkg/core/openolt_flowmgr_test.go
+++ b/internal/pkg/core/openolt_flowmgr_test.go
@@ -27,19 +27,19 @@
"testing"
"time"
- "github.com/opencord/voltha-protos/v3/go/voltha"
+ "github.com/opencord/voltha-protos/v4/go/voltha"
- "github.com/opencord/voltha-lib-go/v3/pkg/db"
- fu "github.com/opencord/voltha-lib-go/v3/pkg/flows"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
- tp "github.com/opencord/voltha-lib-go/v3/pkg/techprofile"
+ "github.com/opencord/voltha-lib-go/v4/pkg/db"
+ fu "github.com/opencord/voltha-lib-go/v4/pkg/flows"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
+ tp "github.com/opencord/voltha-lib-go/v4/pkg/techprofile"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/resourcemanager"
rsrcMgr "github.com/opencord/voltha-openolt-adapter/internal/pkg/resourcemanager"
"github.com/opencord/voltha-openolt-adapter/pkg/mocks"
- ofp "github.com/opencord/voltha-protos/v3/go/openflow_13"
- "github.com/opencord/voltha-protos/v3/go/openolt"
- openoltpb2 "github.com/opencord/voltha-protos/v3/go/openolt"
- tp_pb "github.com/opencord/voltha-protos/v3/go/tech_profile"
+ ofp "github.com/opencord/voltha-protos/v4/go/openflow_13"
+ "github.com/opencord/voltha-protos/v4/go/openolt"
+ openoltpb2 "github.com/opencord/voltha-protos/v4/go/openolt"
+ tp_pb "github.com/opencord/voltha-protos/v4/go/tech_profile"
)
var flowMgr []*OpenOltFlowMgr
@@ -604,7 +604,7 @@
// clean the flowMgr
for i := 0; i < intfNum; i++ {
- flowMgr[i].onuGemInfo = make(map[uint32][]rsrcMgr.OnuGemInfo, intfNum)
+ flowMgr[i].onuGemInfo = make([]rsrcMgr.OnuGemInfo, 0)
}
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
@@ -637,13 +637,13 @@
// check that each entry of onuGemInfo has the correct number of ONUs
for i := 0; i < intfNum; i++ {
- lenofOnu := len(flowMgr[i].onuGemInfo[uint32(i)])
+ lenofOnu := len(flowMgr[i].onuGemInfo)
if onuNum != lenofOnu {
t.Errorf("OnuGemInfo length is not as expected len = %d, want %d", lenofOnu, onuNum)
}
for o := 1; o <= onuNum; o++ {
- lenOfGemPorts := len(flowMgr[i].onuGemInfo[uint32(i)][o-1].GemPorts)
+ lenOfGemPorts := len(flowMgr[i].onuGemInfo[o-1].GemPorts)
// check that each onuEntry has 1 gemPort
if lenOfGemPorts != 1 {
t.Errorf("Expected 1 GemPort per ONU, found %d", lenOfGemPorts)
@@ -651,7 +651,7 @@
// check that the value of the gemport is correct
gemID, _ := strconv.Atoi(fmt.Sprintf("90%d%d", i, o-1))
- currentValue := flowMgr[i].onuGemInfo[uint32(i)][o-1].GemPorts[0]
+ currentValue := flowMgr[i].onuGemInfo[o-1].GemPorts[0]
if uint32(gemID) != currentValue {
t.Errorf("Expected GemPort value to be %d, found %d", gemID, currentValue)
}
@@ -698,11 +698,11 @@
for _, gemPortDeleted := range tt.args.gemPortIDsToBeDeleted {
flowMgr[tt.args.intfID].deleteGemPortFromLocalCache(ctx, tt.args.intfID, tt.args.onuID, gemPortDeleted)
}
- lenofGemPorts := len(flowMgr[tt.args.intfID].onuGemInfo[tt.args.intfID][0].GemPorts)
+ lenofGemPorts := len(flowMgr[tt.args.intfID].onuGemInfo[0].GemPorts)
if lenofGemPorts != tt.args.finalLength {
t.Errorf("GemPorts length is not as expected len = %d, want %d", lenofGemPorts, tt.args.finalLength)
}
- gemPorts := flowMgr[tt.args.intfID].onuGemInfo[tt.args.intfID][0].GemPorts
+ gemPorts := flowMgr[tt.args.intfID].onuGemInfo[0].GemPorts
if !reflect.DeepEqual(tt.args.gemPortIDsRemaining, gemPorts) {
t.Errorf("GemPorts are not as expected = %v, want %v", gemPorts, tt.args.gemPortIDsRemaining)
}
@@ -964,11 +964,6 @@
return
}
- //ofpMeterConfig := &ofp.OfpMeterConfig{Flags: 1, MeterId: 1}
- //flowMetadata := &voltha.FlowMetadata{
- // Meters: []*ofp.OfpMeterConfig{ofpMeterConfig},
- //}
-
TpInst := &tp.TechProfile{
Name: "Test-Tech-Profile",
SubscriberIdentifier: "257",
@@ -980,6 +975,39 @@
Uni: "16",
},
}
+ TpInst.UsScheduler.Priority = 1
+ TpInst.UsScheduler.Direction = "upstream"
+ TpInst.UsScheduler.AllocID = 1
+ TpInst.UsScheduler.AdditionalBw = "None"
+ TpInst.UsScheduler.QSchedPolicy = "PQ"
+ TpInst.UsScheduler.Weight = 4
+
+ TpInst.DsScheduler.Priority = 1
+ TpInst.DsScheduler.Direction = "upstream"
+ TpInst.DsScheduler.AllocID = 1
+ TpInst.DsScheduler.AdditionalBw = "None"
+ TpInst.DsScheduler.QSchedPolicy = "PQ"
+ TpInst.DsScheduler.Weight = 4
+
+ TpInst.UpstreamGemPortAttributeList = make([]tp.IGemPortAttribute, 4)
+ TpInst.UpstreamGemPortAttributeList[0].GemportID = 1
+ TpInst.UpstreamGemPortAttributeList[0].PbitMap = "0b00000011"
+ TpInst.UpstreamGemPortAttributeList[0].GemportID = 2
+ TpInst.UpstreamGemPortAttributeList[0].PbitMap = "0b00001100"
+ TpInst.UpstreamGemPortAttributeList[0].GemportID = 3
+ TpInst.UpstreamGemPortAttributeList[0].PbitMap = "0b00110000"
+ TpInst.UpstreamGemPortAttributeList[0].GemportID = 4
+ TpInst.UpstreamGemPortAttributeList[0].PbitMap = "0b11000000"
+
+ TpInst.DownstreamGemPortAttributeList = make([]tp.IGemPortAttribute, 4)
+ TpInst.DownstreamGemPortAttributeList[0].GemportID = 1
+ TpInst.DownstreamGemPortAttributeList[0].PbitMap = "0b00000011"
+ TpInst.DownstreamGemPortAttributeList[0].GemportID = 2
+ TpInst.DownstreamGemPortAttributeList[0].PbitMap = "0b00001100"
+ TpInst.DownstreamGemPortAttributeList[0].GemportID = 3
+ TpInst.DownstreamGemPortAttributeList[0].PbitMap = "0b00110000"
+ TpInst.DownstreamGemPortAttributeList[0].GemportID = 4
+ TpInst.DownstreamGemPortAttributeList[0].PbitMap = "0b11000000"
type args struct {
args map[string]uint32
@@ -1014,7 +1042,7 @@
uniID: 16,
portNo: 1,
TpInst: TpInst,
- allocID: []uint32{0x8001, 0x8002, 0x8003, 0x8004},
+ allocID: []uint32{0x8001},
gemPorts: []uint32{1, 2, 3, 4},
TpID: 64,
uni: "16",
@@ -1033,7 +1061,7 @@
uniID: 16,
portNo: 1,
TpInst: TpInst,
- allocID: []uint32{0x8001, 0x8002, 0x8003, 0x8004},
+ allocID: []uint32{0x8001},
gemPorts: []uint32{1, 2, 3, 4},
TpID: 64,
uni: "16",
@@ -1052,7 +1080,7 @@
uniID: 16,
portNo: 1,
TpInst: TpInst,
- allocID: []uint32{0x8001, 0x8002, 0x8003, 0x8004},
+ allocID: []uint32{0x8001},
gemPorts: []uint32{1, 2, 3, 4},
TpID: 64,
uni: "16",
@@ -1071,7 +1099,7 @@
uniID: 16,
portNo: 1,
TpInst: TpInst,
- allocID: []uint32{0x8001, 0x8002, 0x8003, 0x8004},
+ allocID: []uint32{0x8001},
gemPorts: []uint32{1, 2, 3, 4},
TpID: 64,
uni: "16",
diff --git a/internal/pkg/core/openolt_groupmgr.go b/internal/pkg/core/openolt_groupmgr.go
index d14d24b..a87073b 100644
--- a/internal/pkg/core/openolt_groupmgr.go
+++ b/internal/pkg/core/openolt_groupmgr.go
@@ -16,12 +16,12 @@
import (
"context"
- "github.com/opencord/voltha-lib-go/v3/pkg/flows"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/flows"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/olterrors"
rsrcMgr "github.com/opencord/voltha-openolt-adapter/internal/pkg/resourcemanager"
- ofp "github.com/opencord/voltha-protos/v3/go/openflow_13"
- openoltpb2 "github.com/opencord/voltha-protos/v3/go/openolt"
+ ofp "github.com/opencord/voltha-protos/v4/go/openflow_13"
+ openoltpb2 "github.com/opencord/voltha-protos/v4/go/openolt"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
"sync"
@@ -75,7 +75,7 @@
}
// group members not created yet. So let's store the group
if err := g.resourceMgr.AddFlowGroupToKVStore(ctx, group, true); err != nil {
- return olterrors.NewErrPersistence("add", "flow-group", group.Desc.GroupId, log.Fields{"group": group}, err)
+ return olterrors.NewErrPersistence("add", "flow-group", uint64(group.Desc.GroupId), log.Fields{"group": group}, err)
}
logger.Infow(ctx, "add-group-operation-performed-on-the-device-successfully ", log.Fields{"groupToOlt": groupToOlt})
return nil
@@ -99,7 +99,7 @@
}
//remove group from the store
if err := g.resourceMgr.RemoveFlowGroupFromKVStore(ctx, group.Desc.GroupId, false); err != nil {
- return olterrors.NewErrPersistence("delete", "flow-group", group.Desc.GroupId, log.Fields{"group": group}, err)
+ return olterrors.NewErrPersistence("delete", "flow-group", uint64(group.Desc.GroupId), log.Fields{"group": group}, err)
}
logger.Debugw(ctx, "delete-group-operation-performed-on-the-device-successfully ", log.Fields{"groupToOlt": groupToOlt})
return nil
@@ -159,7 +159,7 @@
//save the modified group
if errAdd == nil && errRemoved == nil {
if err := g.resourceMgr.AddFlowGroupToKVStore(ctx, group, false); err != nil {
- return olterrors.NewErrPersistence("add", "flow-group", group.Desc.GroupId, log.Fields{"group": group}, err)
+ return olterrors.NewErrPersistence("add", "flow-group", uint64(group.Desc.GroupId), log.Fields{"group": group}, err)
}
logger.Infow(ctx, "modify-group-was-success--storing-group",
log.Fields{
diff --git a/internal/pkg/core/openolt_test.go b/internal/pkg/core/openolt_test.go
index 08c2f52..cf08161 100644
--- a/internal/pkg/core/openolt_test.go
+++ b/internal/pkg/core/openolt_test.go
@@ -28,16 +28,16 @@
"reflect"
"testing"
- com "github.com/opencord/voltha-lib-go/v3/pkg/adapters/common"
- fu "github.com/opencord/voltha-lib-go/v3/pkg/flows"
- "github.com/opencord/voltha-lib-go/v3/pkg/kafka"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ com "github.com/opencord/voltha-lib-go/v4/pkg/adapters/common"
+ fu "github.com/opencord/voltha-lib-go/v4/pkg/flows"
+ "github.com/opencord/voltha-lib-go/v4/pkg/kafka"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/config"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/olterrors"
- ic "github.com/opencord/voltha-protos/v3/go/inter_container"
- "github.com/opencord/voltha-protos/v3/go/openflow_13"
- ofp "github.com/opencord/voltha-protos/v3/go/openflow_13"
- "github.com/opencord/voltha-protos/v3/go/voltha"
+ ic "github.com/opencord/voltha-protos/v4/go/inter_container"
+ "github.com/opencord/voltha-protos/v4/go/openflow_13"
+ ofp "github.com/opencord/voltha-protos/v4/go/openflow_13"
+ "github.com/opencord/voltha-protos/v4/go/voltha"
)
// mocks the OpenOLT struct.
diff --git a/internal/pkg/core/statsmanager.go b/internal/pkg/core/statsmanager.go
index 53f81ab..cf6af12 100755
--- a/internal/pkg/core/statsmanager.go
+++ b/internal/pkg/core/statsmanager.go
@@ -24,10 +24,10 @@
"sync"
"time"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/olterrors"
- "github.com/opencord/voltha-protos/v3/go/openolt"
- "github.com/opencord/voltha-protos/v3/go/voltha"
+ "github.com/opencord/voltha-protos/v4/go/openolt"
+ "github.com/opencord/voltha-protos/v4/go/voltha"
)
var mutex = &sync.Mutex{}
diff --git a/internal/pkg/core/statsmanager_test.go b/internal/pkg/core/statsmanager_test.go
index 0155330..438d117 100644
--- a/internal/pkg/core/statsmanager_test.go
+++ b/internal/pkg/core/statsmanager_test.go
@@ -23,8 +23,8 @@
"reflect"
"testing"
- "github.com/opencord/voltha-protos/v3/go/openolt"
- "github.com/opencord/voltha-protos/v3/go/voltha"
+ "github.com/opencord/voltha-protos/v4/go/openolt"
+ "github.com/opencord/voltha-protos/v4/go/voltha"
)
func TestOpenOltStatisticsMgr_PortStatisticsIndication(t *testing.T) {
diff --git a/internal/pkg/olterrors/common.go b/internal/pkg/olterrors/common.go
index 7709046..fa427a7 100644
--- a/internal/pkg/olterrors/common.go
+++ b/internal/pkg/olterrors/common.go
@@ -18,7 +18,7 @@
package olterrors
import (
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
)
var logger log.CLogger
diff --git a/internal/pkg/olterrors/olterrors.go b/internal/pkg/olterrors/olterrors.go
index 214c206..c5790ac 100644
--- a/internal/pkg/olterrors/olterrors.go
+++ b/internal/pkg/olterrors/olterrors.go
@@ -21,7 +21,7 @@
"context"
"encoding/json"
"fmt"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
"strings"
)
@@ -203,7 +203,7 @@
}
// NewErrPersistence constructs a new error based on the given values
-func NewErrPersistence(operation, entityType string, ID uint32, fields log.Fields, wrapped error) LoggableError {
+func NewErrPersistence(operation, entityType string, ID uint64, fields log.Fields, wrapped error) LoggableError {
return &ErrPersistence{
ErrAdapter{
name: "unable-to-persist",
@@ -265,7 +265,7 @@
}
// NewErrFlowOp constructs a new error based on the given values
-func NewErrFlowOp(operation string, ID uint32, fields log.Fields, wrapped error) LoggableError {
+func NewErrFlowOp(operation string, ID uint64, fields log.Fields, wrapped error) LoggableError {
return &ErrPersistence{
ErrAdapter{
name: "unable-to-perform-flow-operation",
diff --git a/internal/pkg/resourcemanager/common.go b/internal/pkg/resourcemanager/common.go
index 45fa180..5b6eedf 100644
--- a/internal/pkg/resourcemanager/common.go
+++ b/internal/pkg/resourcemanager/common.go
@@ -18,7 +18,7 @@
package resourcemanager
import (
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
)
var logger log.CLogger
diff --git a/internal/pkg/resourcemanager/resourcemanager.go b/internal/pkg/resourcemanager/resourcemanager.go
index 3f642cf..abfb73d 100755
--- a/internal/pkg/resourcemanager/resourcemanager.go
+++ b/internal/pkg/resourcemanager/resourcemanager.go
@@ -23,17 +23,18 @@
"errors"
"fmt"
"strconv"
+ "strings"
"sync"
"time"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/olterrors"
- "github.com/opencord/voltha-lib-go/v3/pkg/db"
- "github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
- ponrmgr "github.com/opencord/voltha-lib-go/v3/pkg/ponresourcemanager"
- ofp "github.com/opencord/voltha-protos/v3/go/openflow_13"
- "github.com/opencord/voltha-protos/v3/go/openolt"
+ "github.com/opencord/voltha-lib-go/v4/pkg/db"
+ "github.com/opencord/voltha-lib-go/v4/pkg/db/kvstore"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
+ ponrmgr "github.com/opencord/voltha-lib-go/v4/pkg/ponresourcemanager"
+ ofp "github.com/opencord/voltha-protos/v4/go/openflow_13"
+ "github.com/opencord/voltha-protos/v4/go/openolt"
)
const (
@@ -47,11 +48,12 @@
MeterIDPathSuffix = "{%d,%d,%d}/{%d}/meter_id/{%s}"
//NnniIntfID - nniintfids
NnniIntfID = "nniintfids"
- //OnuPacketINPathPrefix to be used as prefix for keys to be used to store packet-in gem ports
- OnuPacketINPathPrefix = "onu_packetin/{%d,%d,%d"
- // OnuPacketINPath path on the kvstore to store packetin gemport,which will be used for packetin, pcketout
- //format: onu_packetin/<intfid>,<onuid>,<logicalport>,<vlanId>,<priority>
- OnuPacketINPath = OnuPacketINPathPrefix + ",%d,%d}"
+ // OnuPacketINPathPrefix - path prefix where ONU packet-in vlanID/PCP is stored
+ //format: onu_packetin/{<intfid>,<onuid>,<logicalport>}
+ OnuPacketINPathPrefix = "onu_packetin/{%d,%d,%d}"
+ // OnuPacketINPath path on the kvstore to store packetin gemport,which will be used for packetin, packetout
+ //format: onu_packetin/{<intfid>,<onuid>,<logicalport>}/{<vlanId>,<priority>}
+ OnuPacketINPath = OnuPacketINPathPrefix + "/{%d,%d}"
//FlowIDsForGem flowids_per_gem/<intfid>
FlowIDsForGem = "flowids_per_gem/{%d}"
//McastQueuesForIntf multicast queues for pon interfaces
@@ -68,14 +70,19 @@
// We preserve the groups under "FlowGroupsCached" directory in the KV store temporarily. Having set members,
// we remove the group from the cached group store.
FlowGroupCached = "flow_groups_cached/{%d}"
+
+ //FlowIDPath - Path on the KV store for storing list of Flow IDs for a given subscriber
+ //Format: BasePathKvStore/<(pon_intf_id, onu_id, uni_id)>/flow_ids
+ FlowIDPath = "{%s}/flow_ids"
+ //FlowIDInfoPath - Used to store more metadata associated with the flow_id
+ //Format: BasePathKvStore/<(pon_intf_id, onu_id, uni_id)>/flow_id_info/<flow_id>
+ FlowIDInfoPath = "{%s}/flow_id_info/{%d}"
)
// FlowInfo holds the flow information
type FlowInfo struct {
- Flow *openolt.Flow
- FlowStoreCookie uint64
- FlowCategory string
- LogicalFlowID uint64
+ Flow *openolt.Flow
+ IsSymmtricFlow bool
}
// OnuGemInfo holds onu information along with gem port list and uni port list
@@ -119,12 +126,6 @@
AllocIDMgmtLock []sync.RWMutex
// This protects concurrent onu_id allocate/delete calls on a per PON port basis
OnuIDMgmtLock []sync.RWMutex
- // This protects concurrent flow_id allocate/delete calls. We do not need this on a
- // per PON port basis as flow IDs are unique across the OLT.
- FlowIDMgmtLock sync.RWMutex
-
- // This protects concurrent access to flowids_per_gem info stored on KV store
- flowIDToGemInfoLock sync.RWMutex
}
func newKVClient(ctx context.Context, storeType string, address string, timeout time.Duration) (kvstore.Client, error) {
@@ -164,6 +165,7 @@
func NewResourceMgr(ctx context.Context, deviceID string, KVStoreAddress string, kvStoreType string, deviceType string, devInfo *openolt.DeviceInfo) *OpenOltResourceMgr {
var ResourceMgr OpenOltResourceMgr
logger.Debugf(ctx, "Init new resource manager , address: %s, device-id: %s", KVStoreAddress, deviceID)
+ ResourceMgr.DeviceID = deviceID
ResourceMgr.Address = KVStoreAddress
ResourceMgr.DeviceType = deviceType
ResourceMgr.DevInfo = devInfo
@@ -249,7 +251,7 @@
GlobalPONRsrcMgr = RsrcMgrsByTech[technology]
}
for _, IntfID := range TechRange.IntfIds {
- ResourceMgr.ResourceMgrs[uint32(IntfID)] = RsrcMgrsByTech[technology]
+ ResourceMgr.ResourceMgrs[IntfID] = RsrcMgrsByTech[technology]
}
// self.initialize_device_resource_range_and_pool(resource_mgr, global_resource_mgr, arange)
InitializeDeviceResourceRangeAndPool(ctx, RsrcMgrsByTech[technology], GlobalPONRsrcMgr,
@@ -446,16 +448,16 @@
return 0, err
}
// Get ONU id for a provided pon interface ID.
- ONUID, err := RsrcMgr.ResourceMgrs[ponIntfID].GetResourceID(ctx, ponIntfID,
+ onuID, err := RsrcMgr.ResourceMgrs[ponIntfID].GetResourceID(ctx, ponIntfID,
ponrmgr.ONU_ID, 1)
if err != nil {
logger.Errorf(ctx, "Failed to get resource for interface %d for type %s",
ponIntfID, ponrmgr.ONU_ID)
return 0, err
}
- if ONUID != nil {
- RsrcMgr.ResourceMgrs[ponIntfID].InitResourceMap(ctx, fmt.Sprintf("%d,%d", ponIntfID, ONUID[0]))
- return ONUID[0], err
+ if onuID != nil {
+ RsrcMgr.ResourceMgrs[ponIntfID].InitResourceMap(ctx, fmt.Sprintf("%d,%d", ponIntfID, onuID[0]))
+ return onuID[0], err
}
return 0, err // return OnuID 0 on error
@@ -464,81 +466,170 @@
// GetFlowIDInfo returns the slice of flow info of the given pon-port
// Note: For flows which trap from the NNI and not really associated with any particular
// ONU (like LLDP), the onu_id and uni_id is set as -1. The intf_id is the NNI intf_id.
-func (RsrcMgr *OpenOltResourceMgr) GetFlowIDInfo(ctx context.Context, ponIntfID uint32, onuID int32, uniID int32, flowID uint32) *[]FlowInfo {
- var flows []FlowInfo
+func (RsrcMgr *OpenOltResourceMgr) GetFlowIDInfo(ctx context.Context, ponIntfID uint32, onuID int32, uniID int32, flowID uint64) *FlowInfo {
+ var flowInfo FlowInfo
- FlowPath := fmt.Sprintf("%d,%d,%d", ponIntfID, onuID, uniID)
- if err := RsrcMgr.ResourceMgrs[ponIntfID].GetFlowIDInfo(ctx, FlowPath, flowID, &flows); err != nil {
- logger.Errorw(ctx, "Error while getting flows from KV store", log.Fields{"flowId": flowID})
+ subs := fmt.Sprintf("%d,%d,%d", ponIntfID, onuID, uniID)
+ Path := fmt.Sprintf(FlowIDInfoPath, subs, flowID)
+ value, err := RsrcMgr.KVStore.Get(ctx, Path)
+ if err == nil {
+ if value != nil {
+ Val, err := toByte(value.Value)
+ if err != nil {
+ logger.Errorw(ctx, "Failed to convert flowinfo into byte array", log.Fields{"error": err, "subs": subs})
+ return nil
+ }
+ if err = json.Unmarshal(Val, &flowInfo); err != nil {
+ logger.Errorw(ctx, "Failed to unmarshal", log.Fields{"error": err, "subs": subs})
+ return nil
+ }
+ }
+ }
+ if flowInfo.Flow == nil {
+ logger.Debugw(ctx, "No flowInfo found in KV store", log.Fields{"subs": subs})
return nil
}
- if len(flows) == 0 {
- logger.Debugw(ctx, "No flowInfo found in KV store", log.Fields{"flowPath": FlowPath})
- return nil
- }
- return &flows
+ return &flowInfo
}
// GetCurrentFlowIDsForOnu fetches flow ID from the resource manager
// Note: For flows which trap from the NNI and not really associated with any particular
// ONU (like LLDP), the onu_id and uni_id is set as -1. The intf_id is the NNI intf_id.
-func (RsrcMgr *OpenOltResourceMgr) GetCurrentFlowIDsForOnu(ctx context.Context, PONIntfID uint32, ONUID int32, UNIID int32) []uint32 {
+func (RsrcMgr *OpenOltResourceMgr) GetCurrentFlowIDsForOnu(ctx context.Context, ponIntfID uint32, onuID int32, uniID int32) ([]uint64, error) {
- FlowPath := fmt.Sprintf("%d,%d,%d", PONIntfID, ONUID, UNIID)
- if mgrs, exist := RsrcMgr.ResourceMgrs[PONIntfID]; exist {
- return mgrs.GetCurrentFlowIDsForOnu(ctx, FlowPath)
+ subs := fmt.Sprintf("%d,%d,%d", ponIntfID, onuID, uniID)
+ path := fmt.Sprintf(FlowIDPath, subs)
+
+ var data []uint64
+ value, err := RsrcMgr.KVStore.Get(ctx, path)
+ if err == nil {
+ if value != nil {
+ Val, _ := toByte(value.Value)
+ if err = json.Unmarshal(Val, &data); err != nil {
+ logger.Error(ctx, "Failed to unmarshal")
+ return nil, err
+ }
+ }
}
- return nil
+ return data, nil
}
// UpdateFlowIDInfo updates flow info for the given pon interface, onu id, and uni id
// Note: For flows which trap from the NNI and not really associated with any particular
// ONU (like LLDP), the onu_id and uni_id is set as -1. The intf_id is the NNI intf_id.
-func (RsrcMgr *OpenOltResourceMgr) UpdateFlowIDInfo(ctx context.Context, ponIntfID int32, onuID int32, uniID int32,
- flowID uint32, flowData *[]FlowInfo) error {
- FlowPath := fmt.Sprintf("%d,%d,%d", ponIntfID, onuID, uniID)
- return RsrcMgr.ResourceMgrs[uint32(ponIntfID)].UpdateFlowIDInfoForOnu(ctx, FlowPath, flowID, *flowData)
+func (RsrcMgr *OpenOltResourceMgr) UpdateFlowIDInfo(ctx context.Context, ponIntfID uint32, onuID int32, uniID int32,
+ flowID uint64, flowData FlowInfo) error {
+
+ subs := fmt.Sprintf("%d,%d,%d", ponIntfID, onuID, uniID)
+ path := fmt.Sprintf(FlowIDInfoPath, subs, flowID)
+
+ var value []byte
+ var err error
+ value, err = json.Marshal(flowData)
+ if err != nil {
+ logger.Errorf(ctx, "failed to Marshal, resource path %s", path)
+ return err
+ }
+
+ if err = RsrcMgr.KVStore.Put(ctx, path, value); err != nil {
+ logger.Errorf(ctx, "Failed to update resource %s", path)
+ }
+
+ // Update the flowID list for the ONU
+ if err = RsrcMgr.UpdateFlowIDForOnu(ctx, ponIntfID, onuID, uniID, flowID, true); err != nil {
+ // If the operation fails, try to remove FlowInfo from the KV store
+ _ = RsrcMgr.KVStore.Delete(ctx, path)
+ return err
+ }
+ return err
}
-// GetFlowID return flow ID for a given pon interface id, onu id and uni id
-func (RsrcMgr *OpenOltResourceMgr) GetFlowID(ctx context.Context, ponIntfID uint32, ONUID int32, uniID int32,
- gemportID uint32,
- flowStoreCookie uint64,
- flowCategory string, vlanVid uint32, vlanPcp ...uint32) (uint32, error) {
+// UpdateFlowIDForOnu updates the flow_id list of the ONU (add or remove flow_id from the list)
+func (RsrcMgr *OpenOltResourceMgr) UpdateFlowIDForOnu(ctx context.Context, ponIntfID uint32, onuID int32, uniID int32, flowID uint64, add bool) error {
+ /*
+ Update the flow_id list of the ONU (add or remove flow_id from the list)
+ :param pon_intf_onu_id: reference of PON interface id and onu id
+ :param flow_id: flow ID
+ :param add: Boolean flag to indicate whether the flow_id should be
+ added or removed from the list. Defaults to adding the flow.
+ */
+ var Value []byte
+ var err error
+ var retVal bool
+ var idx uint64
+ subs := fmt.Sprintf("%d,%d,%d", ponIntfID, onuID, uniID)
+ path := fmt.Sprintf(FlowIDPath, subs)
+ flowIDs, err := RsrcMgr.GetCurrentFlowIDsForOnu(ctx, ponIntfID, onuID, uniID)
+ if err != nil {
+ // Error logged in the called function
+ return err
+ }
+
+ if add {
+ if retVal, _ = checkForFlowIDInList(flowIDs, flowID); retVal {
+ return nil
+ }
+ flowIDs = append(flowIDs, flowID)
+ } else {
+ if retVal, idx = checkForFlowIDInList(flowIDs, flowID); !retVal {
+ return nil
+ }
+ // delete the index and shift
+ flowIDs = append(flowIDs[:idx], flowIDs[idx+1:]...)
+ }
+ Value, err = json.Marshal(flowIDs)
+ if err != nil {
+ logger.Error(ctx, "Failed to Marshal")
+ return err
+ }
+
+ if err = RsrcMgr.KVStore.Put(ctx, path, Value); err != nil {
+ logger.Errorf(ctx, "Failed to update resource %s", path)
+ return err
+ }
+ return err
+}
+
+// RemoveFlowIDInfo remove flow info for the given pon interface, onu id, and uni id
+// Note: For flows which trap from the NNI and not really associated with any particular
+// ONU (like LLDP), the onu_id and uni_id is set as -1. The intf_id is the NNI intf_id.
+func (RsrcMgr *OpenOltResourceMgr) RemoveFlowIDInfo(ctx context.Context, ponIntfID uint32, onuID int32, uniID int32,
+ flowID uint64) error {
+
+ subs := fmt.Sprintf("%d,%d,%d", ponIntfID, onuID, uniID)
+ path := fmt.Sprintf(FlowIDInfoPath, subs, flowID)
var err error
- FlowPath := fmt.Sprintf("%d,%d,%d", ponIntfID, ONUID, uniID)
+ if err = RsrcMgr.KVStore.Delete(ctx, path); err != nil {
+ logger.Errorf(ctx, "Failed to delete resource %s", path)
+ return err
+ }
- RsrcMgr.FlowIDMgmtLock.Lock()
- defer RsrcMgr.FlowIDMgmtLock.Unlock()
+ // Update the flowID list for the ONU
+ err = RsrcMgr.UpdateFlowIDForOnu(ctx, ponIntfID, onuID, uniID, flowID, false)
- FlowIDs := RsrcMgr.ResourceMgrs[ponIntfID].GetCurrentFlowIDsForOnu(ctx, FlowPath)
- if FlowIDs != nil {
- logger.Debugw(ctx, "Found flowId(s) for this ONU", log.Fields{"pon": ponIntfID, "ONUID": ONUID, "uniID": uniID, "KVpath": FlowPath})
- for _, flowID := range FlowIDs {
- FlowInfo := RsrcMgr.GetFlowIDInfo(ctx, ponIntfID, int32(ONUID), int32(uniID), uint32(flowID))
- er := getFlowIDFromFlowInfo(ctx, FlowInfo, flowID, gemportID, flowStoreCookie, flowCategory, vlanVid, vlanPcp...)
- if er == nil {
- logger.Debugw(ctx, "Found flowid for the vlan, pcp, and gem",
- log.Fields{"flowID": flowID, "vlanVid": vlanVid, "vlanPcp": vlanPcp, "gemPortID": gemportID})
- return flowID, er
- }
+ return err
+}
+
+// RemoveAllFlowsForIntfOnuUniKey removes flow info for the given interface, onu id, and uni id
+func (RsrcMgr *OpenOltResourceMgr) RemoveAllFlowsForIntfOnuUniKey(ctx context.Context, intf uint32, onuID int32, uniID int32) error {
+ flowIDs, err := RsrcMgr.GetCurrentFlowIDsForOnu(ctx, intf, onuID, uniID)
+ if err != nil {
+ // error logged in the called function
+ return err
+ }
+ for _, flID := range flowIDs {
+ if err := RsrcMgr.RemoveFlowIDInfo(ctx, intf, onuID, uniID, flID); err != nil {
+ logger.Errorw(ctx, "failed-to-delete-flow-id-info", log.Fields{"intf": intf, "onuID": onuID, "uniID": uniID, "flowID": flID})
}
}
- logger.Debug(ctx, "No matching flows with flow cookie or flow category, allocating new flowid")
- FlowIDs, err = RsrcMgr.ResourceMgrs[ponIntfID].GetResourceID(ctx, ponIntfID,
- ponrmgr.FLOW_ID, 1)
- if err != nil {
- logger.Errorf(ctx, "Failed to get resource for interface %d for type %s",
- ponIntfID, ponrmgr.FLOW_ID)
- return uint32(0), err
+ subs := fmt.Sprintf("%d,%d,%d", intf, onuID, uniID)
+ path := fmt.Sprintf(FlowIDPath, subs)
+ if err := RsrcMgr.KVStore.Delete(ctx, path); err != nil {
+ logger.Errorf(ctx, "Failed to delete resource %s", path)
+ return err
}
- if FlowIDs != nil {
- _ = RsrcMgr.ResourceMgrs[ponIntfID].UpdateFlowIDForOnu(ctx, FlowPath, FlowIDs[0], true)
- return FlowIDs[0], err
- }
-
- return 0, err
+ return nil
}
// GetAllocID return the first Alloc ID for a given pon interface id and onu id and then update the resource map on
@@ -738,47 +829,6 @@
}
}
-// FreeFlowID returns the free flow id for a given interface, onu id and uni id
-func (RsrcMgr *OpenOltResourceMgr) FreeFlowID(ctx context.Context, IntfID uint32, onuID int32,
- uniID int32, FlowID uint32) {
- var IntfONUID string
- var err error
-
- RsrcMgr.FlowIDMgmtLock.Lock()
- defer RsrcMgr.FlowIDMgmtLock.Unlock()
-
- FlowIds := make([]uint32, 0)
- FlowIds = append(FlowIds, FlowID)
- IntfONUID = fmt.Sprintf("%d,%d,%d", IntfID, onuID, uniID)
- err = RsrcMgr.ResourceMgrs[IntfID].UpdateFlowIDForOnu(ctx, IntfONUID, FlowID, false)
- if err != nil {
- logger.Errorw(ctx, "Failed to Update flow id for", log.Fields{"intf": IntfONUID})
- }
- RsrcMgr.ResourceMgrs[IntfID].RemoveFlowIDInfo(ctx, IntfONUID, FlowID)
-
- RsrcMgr.ResourceMgrs[IntfID].FreeResourceID(ctx, IntfID, ponrmgr.FLOW_ID, FlowIds)
-}
-
-// FreeFlowIDs releases the flow Ids
-func (RsrcMgr *OpenOltResourceMgr) FreeFlowIDs(ctx context.Context, IntfID uint32, onuID uint32,
- uniID uint32, FlowID []uint32) {
- RsrcMgr.FlowIDMgmtLock.Lock()
- defer RsrcMgr.FlowIDMgmtLock.Unlock()
-
- RsrcMgr.ResourceMgrs[IntfID].FreeResourceID(ctx, IntfID, ponrmgr.FLOW_ID, FlowID)
-
- var IntfOnuIDUniID string
- var err error
- for _, flow := range FlowID {
- IntfOnuIDUniID = fmt.Sprintf("%d,%d,%d", IntfID, onuID, uniID)
- err = RsrcMgr.ResourceMgrs[IntfID].UpdateFlowIDForOnu(ctx, IntfOnuIDUniID, flow, false)
- if err != nil {
- logger.Errorw(ctx, "Failed to Update flow id for", log.Fields{"intf": IntfOnuIDUniID})
- }
- RsrcMgr.ResourceMgrs[IntfID].RemoveFlowIDInfo(ctx, IntfOnuIDUniID, flow)
- }
-}
-
// FreeAllocID frees AllocID on the PON resource pool and also frees the allocID association
// for the given OLT device.
func (RsrcMgr *OpenOltResourceMgr) FreeAllocID(ctx context.Context, IntfID uint32, onuID uint32,
@@ -826,13 +876,6 @@
GEMPortIDs)
RsrcMgr.GemPortIDMgmtLock[intfID].Unlock()
- RsrcMgr.FlowIDMgmtLock.Lock()
- FlowIDs := RsrcMgr.ResourceMgrs[intfID].GetCurrentFlowIDsForOnu(ctx, IntfOnuIDUniID)
- RsrcMgr.ResourceMgrs[intfID].FreeResourceID(ctx, intfID,
- ponrmgr.FLOW_ID,
- FlowIDs)
- RsrcMgr.FlowIDMgmtLock.Unlock()
-
// Clear resource map associated with (pon_intf_id, gemport_id) tuple.
RsrcMgr.ResourceMgrs[intfID].RemoveResourceMap(ctx, IntfOnuIDUniID)
// Clear the ONU Id associated with the (pon_intf_id, gemport_id) tuple.
@@ -841,25 +884,21 @@
}
}
-// IsFlowCookieOnKVStore checks if the given flow cookie is present on the kv store
-// Returns true if the flow cookie is found, otherwise it returns false
-func (RsrcMgr *OpenOltResourceMgr) IsFlowCookieOnKVStore(ctx context.Context, ponIntfID uint32, onuID int32, uniID int32,
- flowStoreCookie uint64) bool {
+// IsFlowOnKvStore checks if the given flowID is present on the kv store
+// Returns true if the flowID is found, otherwise it returns false
+func (RsrcMgr *OpenOltResourceMgr) IsFlowOnKvStore(ctx context.Context, ponIntfID uint32, onuID int32, uniID int32,
+ flowID uint64) bool {
- FlowPath := fmt.Sprintf("%d,%d,%d", ponIntfID, onuID, uniID)
- FlowIDs := RsrcMgr.ResourceMgrs[ponIntfID].GetCurrentFlowIDsForOnu(ctx, FlowPath)
+ FlowIDs, err := RsrcMgr.GetCurrentFlowIDsForOnu(ctx, ponIntfID, onuID, uniID)
+ if err != nil {
+ // error logged in the called function
+ return false
+ }
if FlowIDs != nil {
- logger.Debugw(ctx, "Found flowId(s) for this ONU", log.Fields{"pon": ponIntfID, "onuID": onuID, "uniID": uniID, "KVpath": FlowPath})
- for _, flowID := range FlowIDs {
- FlowInfo := RsrcMgr.GetFlowIDInfo(ctx, ponIntfID, int32(onuID), int32(uniID), uint32(flowID))
- if FlowInfo != nil {
- logger.Debugw(ctx, "Found flows", log.Fields{"flows": *FlowInfo, "flowId": flowID})
- for _, Info := range *FlowInfo {
- if Info.FlowStoreCookie == flowStoreCookie {
- logger.Debug(ctx, "Found flow matching with flowStore cookie", log.Fields{"flowId": flowID, "flowStoreCookie": flowStoreCookie})
- return true
- }
- }
+ logger.Debugw(ctx, "Found flowId(s) for this ONU", log.Fields{"pon": ponIntfID, "onuID": onuID, "uniID": uniID})
+ for _, id := range FlowIDs {
+ if flowID == id {
+ return true
}
}
}
@@ -1017,57 +1056,6 @@
return nil
}
-func getFlowIDFromFlowInfo(ctx context.Context, FlowInfo *[]FlowInfo, flowID, gemportID uint32, flowStoreCookie uint64, flowCategory string,
- vlanVid uint32, vlanPcp ...uint32) error {
- if FlowInfo != nil {
- for _, Info := range *FlowInfo {
- if int32(gemportID) == Info.Flow.GemportId && flowCategory != "" && Info.FlowCategory == flowCategory {
- logger.Debug(ctx, "Found flow matching with flow category", log.Fields{"flowId": flowID, "FlowCategory": flowCategory})
- if Info.FlowCategory == "HSIA_FLOW" {
- if err := checkVlanAndPbitEqualityForFlows(vlanVid, Info, vlanPcp[0]); err == nil {
- return nil
- }
- }
- }
- if int32(gemportID) == Info.Flow.GemportId && flowStoreCookie != 0 && Info.FlowStoreCookie == flowStoreCookie {
- if flowCategory != "" && Info.FlowCategory == flowCategory {
- logger.Debug(ctx, "Found flow matching with flow category", log.Fields{"flowId": flowID, "FlowCategory": flowCategory})
- return nil
- }
- }
- }
- }
- logger.Debugw(ctx, "the flow can be related to a different service", log.Fields{"flow_info": FlowInfo})
- return errors.New("invalid flow-info")
-}
-
-func checkVlanAndPbitEqualityForFlows(vlanVid uint32, Info FlowInfo, vlanPcp uint32) error {
- if err := checkVlanEqualityForFlows(vlanVid, Info); err != nil {
- return err
- }
-
- //flow has remark action and pbits
- if Info.Flow.Action.Cmd.RemarkInnerPbits || Info.Flow.Action.Cmd.RemarkOuterPbits {
- if vlanPcp == Info.Flow.Action.OPbits || vlanPcp == Info.Flow.Action.IPbits {
- return nil
- }
- } else if vlanPcp == Info.Flow.Classifier.OPbits {
- //no remark action but flow has pbits
- return nil
- } else if vlanPcp == 0xff || Info.Flow.Classifier.OPbits == 0xff {
- // no pbit found
- return nil
- }
- return errors.New("not found in terms of pbit equality")
-}
-
-func checkVlanEqualityForFlows(vlanVid uint32, Info FlowInfo) error {
- if vlanVid == Info.Flow.Action.OVid || vlanVid == Info.Flow.Classifier.IVid {
- return nil
- }
- return errors.New("not found in terms of vlan_id equality")
-}
-
//AddGemToOnuGemInfo adds gemport to onugem info kvstore
func (RsrcMgr *OpenOltResourceMgr) AddGemToOnuGemInfo(ctx context.Context, intfID uint32, onuID uint32, gemPort uint32) error {
var onuGemData []OnuGemInfo
@@ -1122,14 +1110,14 @@
if err = RsrcMgr.ResourceMgrs[IntfID].GetOnuGemInfo(ctx, IntfID, &onuGemData); err != nil {
logger.Errorf(ctx, "failed to get onuifo for intfid %d", IntfID)
- return olterrors.NewErrPersistence("get", "OnuGemInfo", IntfID,
+ return olterrors.NewErrPersistence("get", "OnuGemInfo", uint64(IntfID),
log.Fields{"onuGem": onuGem, "intfID": IntfID}, err)
}
onuGemData = append(onuGemData, onuGem)
err = RsrcMgr.ResourceMgrs[IntfID].AddOnuGemInfo(ctx, IntfID, onuGemData)
if err != nil {
logger.Error(ctx, "Failed to add onugem to kv store")
- return olterrors.NewErrPersistence("set", "OnuGemInfo", IntfID,
+ return olterrors.NewErrPersistence("set", "OnuGemInfo", uint64(IntfID),
log.Fields{"onuGemData": onuGemData, "intfID": IntfID}, err)
}
@@ -1212,26 +1200,30 @@
return gemPort, nil
}
-//DelGemPortPktInOfAllServices deletes the gemports from pkt in path for all services
-func (RsrcMgr *OpenOltResourceMgr) DelGemPortPktInOfAllServices(ctx context.Context, intfID uint32, onuID uint32, logicalPort uint32) error {
+//DeletePacketInGemPortForOnu deletes the packet-in gemport for ONU
+func (RsrcMgr *OpenOltResourceMgr) DeletePacketInGemPortForOnu(ctx context.Context, intfID uint32, onuID uint32, logicalPort uint32) error {
- //retrieve stored gem port from the store first.
- Path := fmt.Sprintf(OnuPacketINPathPrefix, intfID, onuID, logicalPort)
- logger.Debugf(ctx, "getting flows from the path:%s", Path)
- Value, err := RsrcMgr.KVStore.List(ctx, Path)
+ path := fmt.Sprintf(OnuPacketINPathPrefix, intfID, onuID, logicalPort)
+ value, err := RsrcMgr.KVStore.List(ctx, path)
if err != nil {
- logger.Errorf(ctx, "failed to get flows from kvstore for path %s", Path)
- return errors.New("failed to get flows from kvstore for path " + Path)
+ logger.Errorf(ctx, "failed-to-read-value-from-path-%s", path)
+ return errors.New("failed-to-read-value-from-path-" + path)
}
- logger.Debugf(ctx, "%d flows retrieved from the path:%s", len(Value), Path)
//remove them one by one
- for key := range Value {
+ for key := range value {
+ // Formulate the right key path suffix ti be delete
+ stringToBeReplaced := fmt.Sprintf(BasePathKvStore, RsrcMgr.DeviceID) + "/"
+ replacedWith := ""
+ key = strings.Replace(key, stringToBeReplaced, replacedWith, 1)
+
+ logger.Debugf(ctx, "removing-key-%s", key)
if err := RsrcMgr.KVStore.Delete(ctx, key); err != nil {
- logger.Errorf(ctx, "Falied to remove resource %s", key)
+ logger.Errorf(ctx, "failed-to-remove-resource-%s", key)
return err
}
}
+
return nil
}
@@ -1306,7 +1298,7 @@
}
//UpdateFlowIDsForGem updates flow id per gemport
-func (RsrcMgr *OpenOltResourceMgr) UpdateFlowIDsForGem(ctx context.Context, intf uint32, gem uint32, flowIDs []uint32) error {
+func (RsrcMgr *OpenOltResourceMgr) UpdateFlowIDsForGem(ctx context.Context, intf uint32, gem uint32, flowIDs []uint64) error {
var val []byte
path := fmt.Sprintf(FlowIDsForGem, intf)
@@ -1316,7 +1308,7 @@
return err
}
if flowsForGem == nil {
- flowsForGem = make(map[uint32][]uint32)
+ flowsForGem = make(map[uint32][]uint64)
}
flowsForGem[gem] = flowIDs
val, err = json.Marshal(flowsForGem)
@@ -1325,8 +1317,6 @@
return err
}
- RsrcMgr.flowIDToGemInfoLock.Lock()
- defer RsrcMgr.flowIDToGemInfoLock.Unlock()
if err = RsrcMgr.KVStore.Put(ctx, path, val); err != nil {
logger.Errorw(ctx, "Failed to put to kvstore", log.Fields{"error": err, "path": path, "value": val})
return err
@@ -1358,21 +1348,17 @@
return
}
- RsrcMgr.flowIDToGemInfoLock.Lock()
- defer RsrcMgr.flowIDToGemInfoLock.Unlock()
if err = RsrcMgr.KVStore.Put(ctx, path, val); err != nil {
logger.Errorw(ctx, "Failed to put to kvstore", log.Fields{"error": err, "path": path, "value": val})
}
}
//GetFlowIDsGemMapForInterface gets flowids per gemport and interface
-func (RsrcMgr *OpenOltResourceMgr) GetFlowIDsGemMapForInterface(ctx context.Context, intf uint32) (map[uint32][]uint32, error) {
+func (RsrcMgr *OpenOltResourceMgr) GetFlowIDsGemMapForInterface(ctx context.Context, intf uint32) (map[uint32][]uint64, error) {
path := fmt.Sprintf(FlowIDsForGem, intf)
- var flowsForGem map[uint32][]uint32
+ var flowsForGem map[uint32][]uint64
var val []byte
- RsrcMgr.flowIDToGemInfoLock.RLock()
value, err := RsrcMgr.KVStore.Get(ctx, path)
- RsrcMgr.flowIDToGemInfoLock.RUnlock()
if err != nil {
logger.Error(ctx, "failed to get data from kv store")
return nil, err
@@ -1393,8 +1379,7 @@
//DeleteIntfIDGempMapPath deletes the intf id path used to store flow ids per gem to kvstore.
func (RsrcMgr *OpenOltResourceMgr) DeleteIntfIDGempMapPath(ctx context.Context, intf uint32) {
path := fmt.Sprintf(FlowIDsForGem, intf)
- RsrcMgr.flowIDToGemInfoLock.Lock()
- defer RsrcMgr.flowIDToGemInfoLock.Unlock()
+
if err := RsrcMgr.KVStore.Delete(ctx, path); err != nil {
logger.Errorw(ctx, "Failed to delete nni interfaces from kv store", log.Fields{"path": path})
}
@@ -1538,3 +1523,32 @@
}
return false, groupInfo, nil
}
+
+// toByte converts an interface value to a []byte. The interface should either be of
+// a string type or []byte. Otherwise, an error is returned.
+func toByte(value interface{}) ([]byte, error) {
+ switch t := value.(type) {
+ case []byte:
+ return value.([]byte), nil
+ case string:
+ return []byte(value.(string)), nil
+ default:
+ return nil, fmt.Errorf("unexpected-type-%T", t)
+ }
+}
+
+func checkForFlowIDInList(FlowIDList []uint64, FlowID uint64) (bool, uint64) {
+ /*
+ Check for a flow id in a given list of flow IDs.
+ :param FLowIDList: List of Flow IDs
+ :param FlowID: Flowd to check in the list
+ : return true and the index if present false otherwise.
+ */
+
+ for idx := range FlowIDList {
+ if FlowID == FlowIDList[idx] {
+ return true, uint64(idx)
+ }
+ }
+ return false, 0
+}
diff --git a/internal/pkg/resourcemanager/resourcemanager_test.go b/internal/pkg/resourcemanager/resourcemanager_test.go
index 562bc08..fd69e94 100644
--- a/internal/pkg/resourcemanager/resourcemanager_test.go
+++ b/internal/pkg/resourcemanager/resourcemanager_test.go
@@ -27,13 +27,13 @@
"context"
"encoding/json"
"errors"
- "github.com/opencord/voltha-lib-go/v3/pkg/db"
- "github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore"
- fu "github.com/opencord/voltha-lib-go/v3/pkg/flows"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
- ponrmgr "github.com/opencord/voltha-lib-go/v3/pkg/ponresourcemanager"
- ofp "github.com/opencord/voltha-protos/v3/go/openflow_13"
- "github.com/opencord/voltha-protos/v3/go/openolt"
+ "github.com/opencord/voltha-lib-go/v4/pkg/db"
+ "github.com/opencord/voltha-lib-go/v4/pkg/db/kvstore"
+ fu "github.com/opencord/voltha-lib-go/v4/pkg/flows"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
+ ponrmgr "github.com/opencord/voltha-lib-go/v4/pkg/ponresourcemanager"
+ ofp "github.com/opencord/voltha-protos/v4/go/openflow_13"
+ "github.com/opencord/voltha-protos/v4/go/openolt"
"reflect"
"strconv"
"strings"
@@ -315,55 +315,6 @@
}
}
-func TestOpenOltResourceMgr_FreeFlowID(t *testing.T) {
- type args struct {
- IntfID uint32
- onuID int32
- uniID int32
- FlowID uint32
- }
- tests := []struct {
- name string
- fields *fields
- args args
- }{
- {"FreeFlowID-1", getResMgr(), args{1, 2, 2, 2}},
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- RsrcMgr := testResMgrObject(tt.fields)
- ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
- defer cancel()
- RsrcMgr.FreeFlowID(ctx, tt.args.IntfID, tt.args.onuID, tt.args.uniID, tt.args.FlowID)
- })
- }
-}
-
-func TestOpenOltResourceMgr_FreeFlowIDs(t *testing.T) {
-
- type args struct {
- IntfID uint32
- onuID uint32
- uniID uint32
- FlowID []uint32
- }
- tests := []struct {
- name string
- fields *fields
- args args
- }{
- {"FreeFlowIDs-1", getResMgr(), args{1, 2, 2, []uint32{1, 2}}},
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- RsrcMgr := testResMgrObject(tt.fields)
- ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
- defer cancel()
- RsrcMgr.FreeFlowIDs(ctx, tt.args.IntfID, tt.args.onuID, tt.args.uniID, tt.args.FlowID)
- })
- }
-}
-
func TestOpenOltResourceMgr_FreePONResourcesForONU(t *testing.T) {
type args struct {
intfID uint32
@@ -473,16 +424,20 @@
name string
fields *fields
args args
- want []uint32
+ want []uint64
}{
- {"GetCurrentFlowIDsForOnu-1", getResMgr(), args{1, 2, 2}, []uint32{}},
+ {"GetCurrentFlowIDsForOnu-1", getResMgr(), args{1, 2, 2}, []uint64{1, 2}},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
RsrcMgr := testResMgrObject(tt.fields)
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
- if got := RsrcMgr.GetCurrentFlowIDsForOnu(ctx, tt.args.PONIntfID, tt.args.ONUID, tt.args.UNIID); reflect.TypeOf(got) != reflect.TypeOf(tt.want) {
+ got, err := RsrcMgr.GetCurrentFlowIDsForOnu(ctx, tt.args.PONIntfID, tt.args.ONUID, tt.args.UNIID)
+ if err != nil {
+ t.Errorf("GetCurrentFlowIDsForOnu() returned error")
+ }
+ if reflect.TypeOf(got) != reflect.TypeOf(tt.want) {
t.Errorf("GetCurrentFlowIDsForOnu() = %v, want %v", got, tt.want)
}
})
@@ -515,45 +470,6 @@
}
}
-func TestOpenOltResourceMgr_GetFlowID(t *testing.T) {
-
- type args struct {
- ponIntfID uint32
- ONUID int32
- uniID int32
- gemportID uint32
- flowStoreCookie uint64
- flowCategory string
- vlanVid uint32
- vlanPcp []uint32
- }
- tests := []struct {
- name string
- fields *fields
- args args
- want uint32
- wantErr error
- }{
- {"GetFlowID-1", getResMgr(), args{1, 2, 2, 2, 2,
- "HSIA", 33, nil}, 0, errors.New("failed to get flows")},
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- RsrcMgr := testResMgrObject(tt.fields)
- ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
- defer cancel()
- got, err := RsrcMgr.GetFlowID(ctx, tt.args.ponIntfID, tt.args.ONUID, tt.args.uniID, tt.args.gemportID, tt.args.flowStoreCookie, tt.args.flowCategory, tt.args.vlanVid, tt.args.vlanPcp...)
- if err != nil && reflect.TypeOf(err) != reflect.TypeOf(tt.wantErr) {
- t.Errorf("GetFlowID() error = %v, wantErr %v", err, tt.wantErr)
- return
- }
- if reflect.TypeOf(got) != reflect.TypeOf(tt.want) {
- t.Errorf("GetFlowID() got = %v, want %v", got, tt.want)
- }
- })
- }
-}
-
func TestOpenOltResourceMgr_GetGEMPortID(t *testing.T) {
type args struct {
ponPort uint32
@@ -675,33 +591,6 @@
}
}
-func TestOpenOltResourceMgr_IsFlowCookieOnKVStore(t *testing.T) {
- type args struct {
- ponIntfID uint32
- onuID int32
- uniID int32
- flowStoreCookie uint64
- }
- tests := []struct {
- name string
- fields *fields
- args args
- want bool
- }{
- {"IsFlowCookieOnKVStore-1", getResMgr(), args{1, 2, 2, 2}, false},
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- RsrcMgr := testResMgrObject(tt.fields)
- ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
- defer cancel()
- if got := RsrcMgr.IsFlowCookieOnKVStore(ctx, tt.args.ponIntfID, tt.args.onuID, tt.args.uniID, tt.args.flowStoreCookie); got != tt.want {
- t.Errorf("IsFlowCookieOnKVStore() = %v, want %v", got, tt.want)
- }
- })
- }
-}
-
func TestOpenOltResourceMgr_RemoveMeterIDForOnu(t *testing.T) {
type args struct {
@@ -795,8 +684,8 @@
ponIntfID int32
onuID int32
uniID int32
- flowID uint32
- flowData *[]FlowInfo
+ flowID uint64
+ flowData FlowInfo
}
tests := []struct {
name string
@@ -804,14 +693,14 @@
args args
wantErr error
}{
- {"UpdateFlowIDInfo-1", getResMgr(), args{1, 2, 2, 2, &[]FlowInfo{}}, errors.New("")},
+ {"UpdateFlowIDInfo-1", getResMgr(), args{1, 2, 2, 2, FlowInfo{}}, errors.New("")},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
RsrcMgr := testResMgrObject(tt.fields)
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
- if err := RsrcMgr.UpdateFlowIDInfo(ctx, tt.args.ponIntfID, tt.args.onuID, tt.args.uniID, tt.args.flowID, tt.args.flowData); err != nil && reflect.TypeOf(err) != reflect.TypeOf(tt.wantErr) {
+ if err := RsrcMgr.UpdateFlowIDInfo(ctx, uint32(tt.args.ponIntfID), tt.args.onuID, tt.args.uniID, tt.args.flowID, tt.args.flowData); err != nil && reflect.TypeOf(err) != reflect.TypeOf(tt.wantErr) {
t.Errorf("UpdateFlowIDInfo() error = %v, wantErr %v", err, tt.wantErr)
}
})
@@ -958,77 +847,6 @@
}
}
-func Test_getFlowIDFromFlowInfo(t *testing.T) {
- type args struct {
- FlowInfo *[]FlowInfo
- flowID uint32
- gemportID uint32
- flowStoreCookie uint64
- flowCategory string
- vlanVid uint32
- vlanPcp []uint32
- }
- flowInfo := &[]FlowInfo{
- {
- &openolt.Flow{
- FlowId: 1,
- GemportId: 1,
- Classifier: &openolt.Classifier{
- OPbits: 1,
- OVid: 33,
- },
- Action: &openolt.Action{
- Cmd: &openolt.ActionCmd{
- AddOuterTag: true,
- },
- OVid: 7,
- },
- },
- 1,
- "HSIA_FLOW",
- 2000,
- },
- {
- &openolt.Flow{
- GemportId: 1,
- Classifier: &openolt.Classifier{
- OVid: 0,
- },
- Action: &openolt.Action{
- Cmd: &openolt.ActionCmd{
- TrapToHost: true,
- },
- },
- },
- 1,
- "EAPOL",
- 3000,
- },
- }
- tests := []struct {
- name string
- args args
- wantErr error
- }{
- {"getFlowIdFromFlowInfo-1", args{}, errors.New("invalid flow-info")},
- {"getFlowIdFromFlowInfo-2", args{flowInfo, 1, 1, 1,
- "HSIA_FLOW", 33, []uint32{1, 2}}, errors.New("invalid flow-info")},
- {"getFlowIdFromFlowInfo-2", args{flowInfo, 1, 1, 1,
- "EAPOL", 33, []uint32{1, 2}}, errors.New("invalid flow-info")},
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- err := getFlowIDFromFlowInfo(context.Background(), tt.args.FlowInfo, tt.args.flowID, tt.args.gemportID, tt.args.flowStoreCookie, tt.args.flowCategory, tt.args.vlanVid, tt.args.vlanPcp...)
- if reflect.TypeOf(err) != reflect.TypeOf(tt.wantErr) && err != nil {
- t.Errorf("getFlowIDFromFlowInfo() error = %v, wantErr %v", err, tt.wantErr)
- }
- if err == nil {
- t.Log("return'd nil")
- }
- })
- }
-}
-
func Test_newKVClient(t *testing.T) {
type args struct {
storeType string
diff --git a/pkg/mocks/common.go b/pkg/mocks/common.go
index 258987d..7a67acf 100644
--- a/pkg/mocks/common.go
+++ b/pkg/mocks/common.go
@@ -18,7 +18,7 @@
package mocks
import (
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
)
var logger log.CLogger
diff --git a/pkg/mocks/mockAdapterProxy.go b/pkg/mocks/mockAdapterProxy.go
index 817e675..c410b48 100644
--- a/pkg/mocks/mockAdapterProxy.go
+++ b/pkg/mocks/mockAdapterProxy.go
@@ -22,7 +22,7 @@
"errors"
"github.com/golang/protobuf/proto"
- "github.com/opencord/voltha-protos/v3/go/inter_container"
+ "github.com/opencord/voltha-protos/v4/go/inter_container"
)
// MockAdapterProxy mocks the AdapterProxy interface.
diff --git a/pkg/mocks/mockCoreProxy.go b/pkg/mocks/mockCoreProxy.go
index 37e959e..e143fbd 100644
--- a/pkg/mocks/mockCoreProxy.go
+++ b/pkg/mocks/mockCoreProxy.go
@@ -22,8 +22,8 @@
"errors"
"fmt"
- "github.com/opencord/voltha-lib-go/v3/pkg/kafka"
- "github.com/opencord/voltha-protos/v3/go/voltha"
+ "github.com/opencord/voltha-lib-go/v4/pkg/kafka"
+ "github.com/opencord/voltha-protos/v4/go/voltha"
)
// MockCoreProxy mocks the CoreProxy interface
diff --git a/pkg/mocks/mockEventproxy.go b/pkg/mocks/mockEventproxy.go
index 2abddf2..816b0e3 100644
--- a/pkg/mocks/mockEventproxy.go
+++ b/pkg/mocks/mockEventproxy.go
@@ -20,7 +20,7 @@
import (
"context"
"errors"
- "github.com/opencord/voltha-protos/v3/go/voltha"
+ "github.com/opencord/voltha-protos/v4/go/voltha"
)
// MockEventProxy for mocking EventProxyIntf
diff --git a/pkg/mocks/mockKVClient.go b/pkg/mocks/mockKVClient.go
index e45b30b..a034f87 100644
--- a/pkg/mocks/mockKVClient.go
+++ b/pkg/mocks/mockKVClient.go
@@ -25,12 +25,12 @@
"strings"
"time"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
"github.com/opencord/voltha-openolt-adapter/internal/pkg/resourcemanager"
- "github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore"
- ofp "github.com/opencord/voltha-protos/v3/go/openflow_13"
- openolt "github.com/opencord/voltha-protos/v3/go/openolt"
+ "github.com/opencord/voltha-lib-go/v4/pkg/db/kvstore"
+ ofp "github.com/opencord/voltha-protos/v4/go/openflow_13"
+ openolt "github.com/opencord/voltha-protos/v4/go/openolt"
)
const (
@@ -72,9 +72,8 @@
// Get mock function implementation for KVClient
func (kvclient *MockKVClient) Get(ctx context.Context, key string) (*kvstore.KVPair, error) {
- logger.Debugw(ctx, "Warning Warning Warning: Get of MockKVClient called", log.Fields{"key": key})
+ logger.Debugw(ctx, "Get of MockKVClient called", log.Fields{"key": key})
if key != "" {
- logger.Debug(ctx, "Warning Key Not Blank")
if strings.Contains(key, "meter_id/{0,62,8}/{upstream}") {
meterConfig := ofp.OfpMeterConfig{
Flags: 0,
@@ -135,12 +134,8 @@
}
if strings.Contains(key, "/{olt}/{0,-1,-1}/flow_id_info/") {
//multicast flow
- data := []resourcemanager.FlowInfo{
- {
- Flow: &openolt.Flow{FlowId: 1, OnuId: 0, UniId: 0, GemportId: 4000},
- FlowStoreCookie: uint64(48132224281636694),
- LogicalFlowID: 3961977515762683568,
- },
+ data := resourcemanager.FlowInfo{
+ Flow: &openolt.Flow{FlowId: 1, OnuId: 0, UniId: 0, GemportId: 4000},
}
logger.Debug(ctx, "Error Error Error Key:", FlowIDs)
str, _ := json.Marshal(data)
@@ -148,13 +143,8 @@
}
if strings.Contains(key, FlowIDInfo) {
-
- data := []resourcemanager.FlowInfo{
- {
- Flow: &openolt.Flow{FlowId: 1, OnuId: 1, UniId: 1, GemportId: 1},
- FlowStoreCookie: uint64(48132224281636694),
- LogicalFlowID: 1,
- },
+ data := resourcemanager.FlowInfo{
+ Flow: &openolt.Flow{FlowId: 1, OnuId: 1, UniId: 1, GemportId: 1},
}
logger.Debug(ctx, "Error Error Error Key:", FlowIDs)
str, _ := json.Marshal(data)
diff --git a/pkg/mocks/mockOpenOltClient.go b/pkg/mocks/mockOpenOltClient.go
index 5df754f..f47a514 100644
--- a/pkg/mocks/mockOpenOltClient.go
+++ b/pkg/mocks/mockOpenOltClient.go
@@ -22,9 +22,9 @@
"errors"
"io"
- config "github.com/opencord/voltha-protos/v3/go/ext/config"
- openolt "github.com/opencord/voltha-protos/v3/go/openolt"
- tech_profile "github.com/opencord/voltha-protos/v3/go/tech_profile"
+ config "github.com/opencord/voltha-protos/v4/go/ext/config"
+ openolt "github.com/opencord/voltha-protos/v4/go/openolt"
+ tech_profile "github.com/opencord/voltha-protos/v4/go/tech_profile"
"google.golang.org/grpc"
"google.golang.org/grpc/metadata"
)
diff --git a/pkg/mocks/mockTechprofile.go b/pkg/mocks/mockTechprofile.go
index 4a71661..367f5e3 100644
--- a/pkg/mocks/mockTechprofile.go
+++ b/pkg/mocks/mockTechprofile.go
@@ -20,9 +20,9 @@
import (
"context"
- "github.com/opencord/voltha-lib-go/v3/pkg/db"
- tp "github.com/opencord/voltha-lib-go/v3/pkg/techprofile"
- tp_pb "github.com/opencord/voltha-protos/v3/go/tech_profile"
+ "github.com/opencord/voltha-lib-go/v4/pkg/db"
+ tp "github.com/opencord/voltha-lib-go/v4/pkg/techprofile"
+ tp_pb "github.com/opencord/voltha-protos/v4/go/tech_profile"
)
// MockTechProfile mock struct for OpenoltClient.
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif/adapter_proxy_if.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/adapterif/adapter_proxy_if.go
similarity index 93%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif/adapter_proxy_if.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/adapterif/adapter_proxy_if.go
index de5cfc0..30fcead 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif/adapter_proxy_if.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/adapterif/adapter_proxy_if.go
@@ -20,7 +20,7 @@
"context"
"github.com/golang/protobuf/proto"
- ic "github.com/opencord/voltha-protos/v3/go/inter_container"
+ ic "github.com/opencord/voltha-protos/v4/go/inter_container"
)
// AdapterProxy interface for AdapterProxy implementation.
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif/core_proxy_if.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/adapterif/core_proxy_if.go
similarity index 97%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif/core_proxy_if.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/adapterif/core_proxy_if.go
index a7ab6dc..36939bd 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif/core_proxy_if.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/adapterif/core_proxy_if.go
@@ -19,7 +19,7 @@
import (
"context"
- "github.com/opencord/voltha-protos/v3/go/voltha"
+ "github.com/opencord/voltha-protos/v4/go/voltha"
)
// CoreProxy interface for voltha-go coreproxy.
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif/events_proxy_if.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/adapterif/events_proxy_if.go
similarity index 95%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif/events_proxy_if.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/adapterif/events_proxy_if.go
index dbd8140..7d8a053 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif/events_proxy_if.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/adapterif/events_proxy_if.go
@@ -18,7 +18,7 @@
import (
"context"
- "github.com/opencord/voltha-protos/v3/go/voltha"
+ "github.com/opencord/voltha-protos/v4/go/voltha"
)
// EventProxy interface for eventproxy
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/adapter_proxy.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/common/adapter_proxy.go
similarity index 93%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/adapter_proxy.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/common/adapter_proxy.go
index 8588fe4..9ade0d1 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/adapter_proxy.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/common/adapter_proxy.go
@@ -17,15 +17,15 @@
import (
"context"
- "github.com/opencord/voltha-lib-go/v3/pkg/db"
+ "github.com/opencord/voltha-lib-go/v4/pkg/db"
"github.com/golang/protobuf/proto"
"github.com/golang/protobuf/ptypes"
"github.com/golang/protobuf/ptypes/any"
"github.com/google/uuid"
- "github.com/opencord/voltha-lib-go/v3/pkg/kafka"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
- ic "github.com/opencord/voltha-protos/v3/go/inter_container"
+ "github.com/opencord/voltha-lib-go/v4/pkg/kafka"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
+ ic "github.com/opencord/voltha-protos/v4/go/inter_container"
)
type AdapterProxy struct {
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/common.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/common/common.go
similarity index 94%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/common.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/common/common.go
index 2f56e42..5d7d7f8 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/common.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/common/common.go
@@ -16,7 +16,7 @@
package common
import (
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
)
var logger log.CLogger
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/core_proxy.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/common/core_proxy.go
similarity index 87%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/core_proxy.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/common/core_proxy.go
index 188bbbd..1077226 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/core_proxy.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/common/core_proxy.go
@@ -21,10 +21,10 @@
"github.com/golang/protobuf/ptypes"
a "github.com/golang/protobuf/ptypes/any"
- "github.com/opencord/voltha-lib-go/v3/pkg/kafka"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
- ic "github.com/opencord/voltha-protos/v3/go/inter_container"
- "github.com/opencord/voltha-protos/v3/go/voltha"
+ "github.com/opencord/voltha-lib-go/v4/pkg/kafka"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
+ ic "github.com/opencord/voltha-protos/v4/go/inter_container"
+ "github.com/opencord/voltha-protos/v4/go/voltha"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
@@ -58,7 +58,7 @@
if err = ptypes.UnmarshalAny(response, unpackResult); err != nil {
logger.Warnw(ctx, "cannot-unmarshal-response", log.Fields{"error": err})
}
- logger.Debugw(ctx, "response", log.Fields{"rpc": rpc, "deviceId": deviceId, "success": success, "error": err})
+ logger.Debugw(ctx, "response", log.Fields{"rpc": rpc, "device-id": deviceId, "success": success, "error": err})
// TODO: Need to get the real error code
return status.Errorf(codes.Canceled, "%s", unpackResult.Reason)
}
@@ -136,7 +136,7 @@
}
func (ap *CoreProxy) DeviceUpdate(ctx context.Context, device *voltha.Device) error {
- logger.Debugw(ctx, "DeviceUpdate", log.Fields{"deviceId": device.Id})
+ logger.Debugw(ctx, "DeviceUpdate", log.Fields{"device-id": device.Id})
rpc := "DeviceUpdate"
toTopic := ap.getCoreTopic(device.Id)
args := make([]*kafka.KVArg, 1)
@@ -147,7 +147,7 @@
// Use a device specific topic as we are the only adaptercore handling requests for this device
replyToTopic := ap.getAdapterTopic()
success, result := ap.kafkaICProxy.InvokeRPC(log.WithSpanFromContext(context.Background(), ctx), rpc, &toTopic, &replyToTopic, true, device.Id, args...)
- logger.Debugw(ctx, "DeviceUpdate-response", log.Fields{"deviceId": device.Id, "success": success})
+ logger.Debugw(ctx, "DeviceUpdate-response", log.Fields{"device-id": device.Id, "success": success})
return unPackResponse(ctx, rpc, device.Id, success, result)
}
@@ -171,12 +171,12 @@
// Use a device specific topic as we are the only adaptercore handling requests for this device
replyToTopic := ap.getAdapterTopic()
success, result := ap.kafkaICProxy.InvokeRPC(log.WithSpanFromContext(context.Background(), ctx), rpc, &toTopic, &replyToTopic, true, deviceId, args...)
- logger.Debugw(ctx, "PortCreated-response", log.Fields{"deviceId": deviceId, "success": success})
+ logger.Debugw(ctx, "PortCreated-response", log.Fields{"device-id": deviceId, "success": success})
return unPackResponse(ctx, rpc, deviceId, success, result)
}
func (ap *CoreProxy) PortsStateUpdate(ctx context.Context, deviceId string, portTypeFilter uint32, operStatus voltha.OperStatus_Types) error {
- logger.Debugw(ctx, "PortsStateUpdate", log.Fields{"deviceId": deviceId})
+ logger.Debugw(ctx, "PortsStateUpdate", log.Fields{"device-id": deviceId})
rpc := "PortsStateUpdate"
// Use a device specific topic to send the request. The adapter handling the device creates a device
// specific topic
@@ -195,12 +195,12 @@
// Use a device specific topic as we are the only adaptercore handling requests for this device
replyToTopic := ap.getAdapterTopic()
success, result := ap.kafkaICProxy.InvokeRPC(log.WithSpanFromContext(context.Background(), ctx), rpc, &toTopic, &replyToTopic, true, deviceId, args...)
- logger.Debugw(ctx, "PortsStateUpdate-response", log.Fields{"deviceId": deviceId, "success": success})
+ logger.Debugw(ctx, "PortsStateUpdate-response", log.Fields{"device-id": deviceId, "success": success})
return unPackResponse(ctx, rpc, deviceId, success, result)
}
func (ap *CoreProxy) DeleteAllPorts(ctx context.Context, deviceId string) error {
- logger.Debugw(ctx, "DeleteAllPorts", log.Fields{"deviceId": deviceId})
+ logger.Debugw(ctx, "DeleteAllPorts", log.Fields{"device-id": deviceId})
rpc := "DeleteAllPorts"
// Use a device specific topic to send the request. The adapter handling the device creates a device
// specific topic
@@ -216,7 +216,7 @@
// Use a device specific topic as we are the only adaptercore handling requests for this device
replyToTopic := ap.getAdapterTopic()
success, result := ap.kafkaICProxy.InvokeRPC(log.WithSpanFromContext(context.Background(), ctx), rpc, &toTopic, &replyToTopic, true, deviceId, args...)
- logger.Debugw(ctx, "DeleteAllPorts-response", log.Fields{"deviceId": deviceId, "success": success})
+ logger.Debugw(ctx, "DeleteAllPorts-response", log.Fields{"device-id": deviceId, "success": success})
return unPackResponse(ctx, rpc, deviceId, success, result)
}
@@ -293,7 +293,7 @@
func (ap *CoreProxy) DeviceStateUpdate(ctx context.Context, deviceId string,
connStatus voltha.ConnectStatus_Types, operStatus voltha.OperStatus_Types) error {
- logger.Debugw(ctx, "DeviceStateUpdate", log.Fields{"deviceId": deviceId})
+ logger.Debugw(ctx, "DeviceStateUpdate", log.Fields{"device-id": deviceId})
rpc := "DeviceStateUpdate"
// Use a device specific topic to send the request. The adapter handling the device creates a device
// specific topic
@@ -318,13 +318,13 @@
// Use a device specific topic as we are the only adaptercore handling requests for this device
replyToTopic := ap.getAdapterTopic()
success, result := ap.kafkaICProxy.InvokeRPC(log.WithSpanFromContext(context.Background(), ctx), rpc, &toTopic, &replyToTopic, true, deviceId, args...)
- logger.Debugw(ctx, "DeviceStateUpdate-response", log.Fields{"deviceId": deviceId, "success": success})
+ logger.Debugw(ctx, "DeviceStateUpdate-response", log.Fields{"device-id": deviceId, "success": success})
return unPackResponse(ctx, rpc, deviceId, success, result)
}
func (ap *CoreProxy) ChildDeviceDetected(ctx context.Context, parentDeviceId string, parentPortNo int,
childDeviceType string, channelId int, vendorId string, serialNumber string, onuId int64) (*voltha.Device, error) {
- logger.Debugw(ctx, "ChildDeviceDetected", log.Fields{"pDeviceId": parentDeviceId, "channelId": channelId})
+ logger.Debugw(ctx, "ChildDeviceDetected", log.Fields{"parent-device-id": parentDeviceId, "channelId": channelId})
rpc := "ChildDeviceDetected"
// Use a device specific topic to send the request. The adapter handling the device creates a device
// specific topic
@@ -369,7 +369,7 @@
}
success, result := ap.kafkaICProxy.InvokeRPC(log.WithSpanFromContext(context.Background(), ctx), rpc, &toTopic, &replyToTopic, true, parentDeviceId, args...)
- logger.Debugw(ctx, "ChildDeviceDetected-response", log.Fields{"pDeviceId": parentDeviceId, "success": success})
+ logger.Debugw(ctx, "ChildDeviceDetected-response", log.Fields{"parent-device-id": parentDeviceId, "success": success})
if success {
volthaDevice := &voltha.Device{}
@@ -384,7 +384,7 @@
if err = ptypes.UnmarshalAny(result, unpackResult); err != nil {
logger.Warnw(ctx, "cannot-unmarshal-response", log.Fields{"error": err})
}
- logger.Debugw(ctx, "ChildDeviceDetected-return", log.Fields{"deviceid": parentDeviceId, "success": success, "error": err})
+ logger.Debugw(ctx, "ChildDeviceDetected-return", log.Fields{"device-id": parentDeviceId, "success": success, "error": err})
return nil, status.Error(ICProxyErrorCodeToGrpcErrorCode(ctx, unpackResult.Code), unpackResult.Reason)
}
@@ -392,7 +392,7 @@
}
func (ap *CoreProxy) ChildDevicesLost(ctx context.Context, parentDeviceId string) error {
- logger.Debugw(ctx, "ChildDevicesLost", log.Fields{"pDeviceId": parentDeviceId})
+ logger.Debugw(ctx, "ChildDevicesLost", log.Fields{"parent-device-id": parentDeviceId})
rpc := "ChildDevicesLost"
// Use a device specific topic to send the request. The adapter handling the device creates a device
// specific topic
@@ -407,12 +407,12 @@
}
success, result := ap.kafkaICProxy.InvokeRPC(log.WithSpanFromContext(context.Background(), ctx), rpc, &toTopic, &replyToTopic, true, parentDeviceId, args...)
- logger.Debugw(ctx, "ChildDevicesLost-response", log.Fields{"pDeviceId": parentDeviceId, "success": success})
+ logger.Debugw(ctx, "ChildDevicesLost-response", log.Fields{"parent-device-id": parentDeviceId, "success": success})
return unPackResponse(ctx, rpc, parentDeviceId, success, result)
}
func (ap *CoreProxy) ChildDevicesDetected(ctx context.Context, parentDeviceId string) error {
- logger.Debugw(ctx, "ChildDevicesDetected", log.Fields{"pDeviceId": parentDeviceId})
+ logger.Debugw(ctx, "ChildDevicesDetected", log.Fields{"parent-device-id": parentDeviceId})
rpc := "ChildDevicesDetected"
// Use a device specific topic to send the request. The adapter handling the device creates a device
// specific topic
@@ -427,12 +427,12 @@
}
success, result := ap.kafkaICProxy.InvokeRPC(log.WithSpanFromContext(context.Background(), ctx), rpc, &toTopic, &replyToTopic, true, parentDeviceId, args...)
- logger.Debugw(ctx, "ChildDevicesDetected-response", log.Fields{"pDeviceId": parentDeviceId, "success": success})
+ logger.Debugw(ctx, "ChildDevicesDetected-response", log.Fields{"parent-device-id": parentDeviceId, "success": success})
return unPackResponse(ctx, rpc, parentDeviceId, success, result)
}
func (ap *CoreProxy) GetDevice(ctx context.Context, parentDeviceId string, deviceId string) (*voltha.Device, error) {
- logger.Debugw(ctx, "GetDevice", log.Fields{"deviceId": deviceId})
+ logger.Debugw(ctx, "GetDevice", log.Fields{"device-id": deviceId})
rpc := "GetDevice"
toTopic := ap.getCoreTopic(parentDeviceId)
@@ -446,7 +446,7 @@
}
success, result := ap.kafkaICProxy.InvokeRPC(log.WithSpanFromContext(context.Background(), ctx), rpc, &toTopic, &replyToTopic, true, parentDeviceId, args...)
- logger.Debugw(ctx, "GetDevice-response", log.Fields{"pDeviceId": parentDeviceId, "success": success})
+ logger.Debugw(ctx, "GetDevice-response", log.Fields{"parent-device-id": parentDeviceId, "success": success})
if success {
volthaDevice := &voltha.Device{}
@@ -461,14 +461,14 @@
if err = ptypes.UnmarshalAny(result, unpackResult); err != nil {
logger.Warnw(ctx, "cannot-unmarshal-response", log.Fields{"error": err})
}
- logger.Debugw(ctx, "GetDevice-return", log.Fields{"deviceid": parentDeviceId, "success": success, "error": err})
+ logger.Debugw(ctx, "GetDevice-return", log.Fields{"parent-device-id": parentDeviceId, "success": success, "error": err})
// TODO: Need to get the real error code
return nil, status.Error(ICProxyErrorCodeToGrpcErrorCode(ctx, unpackResult.Code), unpackResult.Reason)
}
}
func (ap *CoreProxy) GetChildDevice(ctx context.Context, parentDeviceId string, kwargs map[string]interface{}) (*voltha.Device, error) {
- logger.Debugw(ctx, "GetChildDevice", log.Fields{"parentDeviceId": parentDeviceId, "kwargs": kwargs})
+ logger.Debugw(ctx, "GetChildDevice", log.Fields{"parent-device-id": parentDeviceId, "kwargs": kwargs})
rpc := "GetChildDevice"
toTopic := ap.getCoreTopic(parentDeviceId)
@@ -506,7 +506,7 @@
}
success, result := ap.kafkaICProxy.InvokeRPC(log.WithSpanFromContext(context.Background(), ctx), rpc, &toTopic, &replyToTopic, true, parentDeviceId, args...)
- logger.Debugw(ctx, "GetChildDevice-response", log.Fields{"pDeviceId": parentDeviceId, "success": success})
+ logger.Debugw(ctx, "GetChildDevice-response", log.Fields{"parent-device-id": parentDeviceId, "success": success})
if success {
volthaDevice := &voltha.Device{}
@@ -521,14 +521,14 @@
if err = ptypes.UnmarshalAny(result, unpackResult); err != nil {
logger.Warnw(ctx, "cannot-unmarshal-response", log.Fields{"error": err})
}
- logger.Debugw(ctx, "GetChildDevice-return", log.Fields{"deviceid": parentDeviceId, "success": success, "error": err})
+ logger.Debugw(ctx, "GetChildDevice-return", log.Fields{"parent-device-id": parentDeviceId, "success": success, "error": err})
return nil, status.Error(ICProxyErrorCodeToGrpcErrorCode(ctx, unpackResult.Code), unpackResult.Reason)
}
}
func (ap *CoreProxy) GetChildDevices(ctx context.Context, parentDeviceId string) (*voltha.Devices, error) {
- logger.Debugw(ctx, "GetChildDevices", log.Fields{"parentDeviceId": parentDeviceId})
+ logger.Debugw(ctx, "GetChildDevices", log.Fields{"parent-device-id": parentDeviceId})
rpc := "GetChildDevices"
toTopic := ap.getCoreTopic(parentDeviceId)
@@ -542,7 +542,7 @@
}
success, result := ap.kafkaICProxy.InvokeRPC(log.WithSpanFromContext(context.Background(), ctx), rpc, &toTopic, &replyToTopic, true, parentDeviceId, args...)
- logger.Debugw(ctx, "GetChildDevices-response", log.Fields{"pDeviceId": parentDeviceId, "success": success})
+ logger.Debugw(ctx, "GetChildDevices-response", log.Fields{"parent-device-id": parentDeviceId, "success": success})
if success {
volthaDevices := &voltha.Devices{}
@@ -557,14 +557,14 @@
if err = ptypes.UnmarshalAny(result, unpackResult); err != nil {
logger.Warnw(ctx, "cannot-unmarshal-response", log.Fields{"error": err})
}
- logger.Debugw(ctx, "GetChildDevices-return", log.Fields{"deviceid": parentDeviceId, "success": success, "error": err})
+ logger.Debugw(ctx, "GetChildDevices-return", log.Fields{"parent-device-id": parentDeviceId, "success": success, "error": err})
return nil, status.Error(ICProxyErrorCodeToGrpcErrorCode(ctx, unpackResult.Code), unpackResult.Reason)
}
}
func (ap *CoreProxy) SendPacketIn(ctx context.Context, deviceId string, port uint32, pktPayload []byte) error {
- logger.Debugw(ctx, "SendPacketIn", log.Fields{"deviceId": deviceId, "port": port, "pktPayload": pktPayload})
+ logger.Debugw(ctx, "SendPacketIn", log.Fields{"device-id": deviceId, "port": port, "pktPayload": pktPayload})
rpc := "PacketIn"
// Use a device specific topic to send the request. The adapter handling the device creates a device
// specific topic
@@ -588,12 +588,12 @@
Value: pkt,
}
success, result := ap.kafkaICProxy.InvokeRPC(log.WithSpanFromContext(context.Background(), ctx), rpc, &toTopic, &replyToTopic, true, deviceId, args...)
- logger.Debugw(ctx, "SendPacketIn-response", log.Fields{"pDeviceId": deviceId, "success": success})
+ logger.Debugw(ctx, "SendPacketIn-response", log.Fields{"device-id": deviceId, "success": success})
return unPackResponse(ctx, rpc, deviceId, success, result)
}
func (ap *CoreProxy) DeviceReasonUpdate(ctx context.Context, deviceId string, deviceReason string) error {
- logger.Debugw(ctx, "DeviceReasonUpdate", log.Fields{"deviceId": deviceId, "deviceReason": deviceReason})
+ logger.Debugw(ctx, "DeviceReasonUpdate", log.Fields{"device-id": deviceId, "deviceReason": deviceReason})
rpc := "DeviceReasonUpdate"
// Use a device specific topic to send the request. The adapter handling the device creates a device
// specific topic
@@ -612,7 +612,7 @@
Value: reason,
}
success, result := ap.kafkaICProxy.InvokeRPC(log.WithSpanFromContext(context.Background(), ctx), rpc, &toTopic, &replyToTopic, true, deviceId, args...)
- logger.Debugw(ctx, "DeviceReason-response", log.Fields{"pDeviceId": deviceId, "success": success})
+ logger.Debugw(ctx, "DeviceReason-response", log.Fields{"device-id": deviceId, "success": success})
return unPackResponse(ctx, rpc, deviceId, success, result)
}
@@ -630,12 +630,12 @@
Value: pmConfigs,
}
success, result := ap.kafkaICProxy.InvokeRPC(log.WithSpanFromContext(context.Background(), ctx), rpc, &toTopic, &replyToTopic, true, pmConfigs.Id, args...)
- logger.Debugw(ctx, "DevicePMConfigUpdate-response", log.Fields{"pDeviceId": pmConfigs.Id, "success": success})
+ logger.Debugw(ctx, "DevicePMConfigUpdate-response", log.Fields{"pmconfig-device-id": pmConfigs.Id, "success": success})
return unPackResponse(ctx, rpc, pmConfigs.Id, success, result)
}
func (ap *CoreProxy) ReconcileChildDevices(ctx context.Context, parentDeviceId string) error {
- logger.Debugw(ctx, "ReconcileChildDevices", log.Fields{"parentDeviceId": parentDeviceId})
+ logger.Debugw(ctx, "ReconcileChildDevices", log.Fields{"parent-device-id": parentDeviceId})
rpc := "ReconcileChildDevices"
// Use a device specific topic to send the request. The adapter handling the device creates a device
// specific topic
@@ -647,13 +647,13 @@
}
success, result := ap.kafkaICProxy.InvokeRPC(log.WithSpanFromContext(context.Background(), ctx), rpc, &toTopic, &replyToTopic, true, parentDeviceId, args...)
- logger.Debugw(ctx, "ReconcileChildDevices-response", log.Fields{"pDeviceId": parentDeviceId, "success": success})
+ logger.Debugw(ctx, "ReconcileChildDevices-response", log.Fields{"parent-device-id": parentDeviceId, "success": success})
return unPackResponse(ctx, rpc, parentDeviceId, success, result)
}
func (ap *CoreProxy) PortStateUpdate(ctx context.Context, deviceId string, pType voltha.Port_PortType, portNum uint32,
operStatus voltha.OperStatus_Types) error {
- logger.Debugw(ctx, "PortStateUpdate", log.Fields{"deviceId": deviceId, "portType": pType, "portNo": portNum, "operation_status": operStatus})
+ logger.Debugw(ctx, "PortStateUpdate", log.Fields{"device-id": deviceId, "portType": pType, "portNo": portNum, "operation_status": operStatus})
rpc := "PortStateUpdate"
// Use a device specific topic to send the request. The adapter handling the device creates a device
// specific topic
@@ -684,6 +684,6 @@
// Use a device specific topic as we are the only adaptercore handling requests for this device
replyToTopic := ap.getAdapterTopic()
success, result := ap.kafkaICProxy.InvokeRPC(log.WithSpanFromContext(context.Background(), ctx), rpc, &toTopic, &replyToTopic, true, deviceId, args...)
- logger.Debugw(ctx, "PortStateUpdate-response", log.Fields{"deviceId": deviceId, "success": success})
+ logger.Debugw(ctx, "PortStateUpdate-response", log.Fields{"device-id": deviceId, "success": success})
return unPackResponse(ctx, rpc, deviceId, success, result)
}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/events_proxy.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/common/events_proxy.go
similarity index 95%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/events_proxy.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/common/events_proxy.go
index b79bafe..b16c1ae 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/events_proxy.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/common/events_proxy.go
@@ -25,10 +25,10 @@
"time"
"github.com/golang/protobuf/ptypes"
- "github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif"
- "github.com/opencord/voltha-lib-go/v3/pkg/kafka"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
- "github.com/opencord/voltha-protos/v3/go/voltha"
+ "github.com/opencord/voltha-lib-go/v4/pkg/adapters/adapterif"
+ "github.com/opencord/voltha-lib-go/v4/pkg/kafka"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
+ "github.com/opencord/voltha-protos/v4/go/voltha"
)
type EventProxy struct {
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/performance_metrics.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/common/performance_metrics.go
similarity index 97%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/performance_metrics.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/common/performance_metrics.go
index 7697c05..6705c72 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/performance_metrics.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/common/performance_metrics.go
@@ -17,7 +17,7 @@
package common
import (
- "github.com/opencord/voltha-protos/v3/go/voltha"
+ "github.com/opencord/voltha-protos/v4/go/voltha"
)
type PmMetrics struct {
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/request_handler.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/common/request_handler.go
similarity index 96%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/request_handler.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/common/request_handler.go
index a92ed51..50b9195 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/request_handler.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/common/request_handler.go
@@ -21,13 +21,13 @@
"github.com/golang/protobuf/ptypes"
"github.com/golang/protobuf/ptypes/empty"
- "github.com/opencord/voltha-lib-go/v3/pkg/adapters"
- "github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif"
- "github.com/opencord/voltha-lib-go/v3/pkg/kafka"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
- ic "github.com/opencord/voltha-protos/v3/go/inter_container"
- "github.com/opencord/voltha-protos/v3/go/openflow_13"
- "github.com/opencord/voltha-protos/v3/go/voltha"
+ "github.com/opencord/voltha-lib-go/v4/pkg/adapters"
+ "github.com/opencord/voltha-lib-go/v4/pkg/adapters/adapterif"
+ "github.com/opencord/voltha-lib-go/v4/pkg/kafka"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
+ ic "github.com/opencord/voltha-protos/v4/go/inter_container"
+ "github.com/opencord/voltha-protos/v4/go/openflow_13"
+ "github.com/opencord/voltha-protos/v4/go/voltha"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
@@ -432,7 +432,7 @@
}
}
}
- logger.Debugw(ctx, "Update_pm_config", log.Fields{"deviceId": device.Id, "pmConfigs": pmConfigs})
+ logger.Debugw(ctx, "Update_pm_config", log.Fields{"device-id": device.Id, "pmConfigs": pmConfigs})
//Invoke the pm config update API of the adapter
if err := rhp.adapter.Update_pm_config(ctx, device, pmConfigs); err != nil {
return nil, status.Errorf(codes.NotFound, "%s", err.Error())
@@ -455,7 +455,7 @@
switch arg.Key {
case "deviceId":
if err := ptypes.UnmarshalAny(arg.Value, deviceId); err != nil {
- logger.Warnw(ctx, "cannot-unmarshal-deviceId", log.Fields{"error": err})
+ logger.Warnw(ctx, "cannot-unmarshal-device-id", log.Fields{"error": err})
return nil, err
}
case "outPort":
@@ -475,7 +475,7 @@
}
}
}
- logger.Debugw(ctx, "Receive_packet_out", log.Fields{"deviceId": deviceId.Val, "outPort": egressPort, "packet": packet})
+ logger.Debugw(ctx, "Receive_packet_out", log.Fields{"device-id": deviceId.Val, "outPort": egressPort, "packet": packet})
//Invoke the adopt device on the adapter
if err := rhp.adapter.Receive_packet_out(ctx, deviceId.Val, int(egressPort.Val), packet); err != nil {
return nil, status.Errorf(codes.NotFound, "%s", err.Error())
@@ -514,7 +514,7 @@
}
}
- logger.Debugw(ctx, "Get_ofp_device_info", log.Fields{"deviceId": device.Id})
+ logger.Debugw(ctx, "Get_ofp_device_info", log.Fields{"device-id": device.Id})
var cap *ic.SwitchCapability
var err error
@@ -582,7 +582,7 @@
logger.Debugw(ctx, "enable_port", log.Fields{"args": args})
deviceId, port, err := rhp.getEnableDisableParams(ctx, args)
if err != nil {
- logger.Warnw(ctx, "enable_port", log.Fields{"args": args, "deviceId": deviceId, "port": port})
+ logger.Warnw(ctx, "enable_port", log.Fields{"args": args, "device-id": deviceId, "port": port})
return err
}
return rhp.adapter.Enable_port(ctx, deviceId, port)
@@ -592,7 +592,7 @@
logger.Debugw(ctx, "disable_port", log.Fields{"args": args})
deviceId, port, err := rhp.getEnableDisableParams(ctx, args)
if err != nil {
- logger.Warnw(ctx, "disable_port", log.Fields{"args": args, "deviceId": deviceId, "port": port})
+ logger.Warnw(ctx, "disable_port", log.Fields{"args": args, "device-id": deviceId, "port": port})
return err
}
return rhp.adapter.Disable_port(ctx, deviceId, port)
@@ -717,7 +717,7 @@
}
case "pDeviceId":
if err := ptypes.UnmarshalAny(arg.Value, pDeviceId); err != nil {
- logger.Warnw(ctx, "cannot-unmarshal-parent-deviceId", log.Fields{"error": err})
+ logger.Warnw(ctx, "cannot-unmarshal-parent-device-id", log.Fields{"error": err})
return nil, err
}
case "valuetype":
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/utils.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/common/utils.go
similarity index 95%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/utils.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/common/utils.go
index 3d91119..65b432c 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/common/utils.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/common/utils.go
@@ -18,8 +18,8 @@
import (
"context"
"fmt"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
- ic "github.com/opencord/voltha-protos/v3/go/inter_container"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
+ ic "github.com/opencord/voltha-protos/v4/go/inter_container"
"google.golang.org/grpc/codes"
"math/rand"
"time"
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/iAdapter.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/iAdapter.go
similarity index 95%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/iAdapter.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/iAdapter.go
index ce0b791..b106d52 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/adapters/iAdapter.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/adapters/iAdapter.go
@@ -17,9 +17,9 @@
import (
"context"
- ic "github.com/opencord/voltha-protos/v3/go/inter_container"
- "github.com/opencord/voltha-protos/v3/go/openflow_13"
- "github.com/opencord/voltha-protos/v3/go/voltha"
+ ic "github.com/opencord/voltha-protos/v4/go/inter_container"
+ "github.com/opencord/voltha-protos/v4/go/openflow_13"
+ "github.com/opencord/voltha-protos/v4/go/voltha"
)
//IAdapter represents the set of APIs a voltha adapter has to support.
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/config/common.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/config/common.go
similarity index 94%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/config/common.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/config/common.go
index a69e290..294a4bd 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/config/common.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/config/common.go
@@ -16,7 +16,7 @@
package config
import (
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
)
var logger log.CLogger
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/config/configmanager.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/config/configmanager.go
similarity index 98%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/config/configmanager.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/config/configmanager.go
index 9ea86f7..4b1c841 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/config/configmanager.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/config/configmanager.go
@@ -22,9 +22,9 @@
"strings"
"time"
- "github.com/opencord/voltha-lib-go/v3/pkg/db"
- "github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/db"
+ "github.com/opencord/voltha-lib-go/v4/pkg/db/kvstore"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
)
const (
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/config/logcontroller.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/config/logcontroller.go
similarity index 99%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/config/logcontroller.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/config/logcontroller.go
index f83e383..8187edc 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/config/logcontroller.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/config/logcontroller.go
@@ -26,7 +26,7 @@
"crypto/md5"
"encoding/json"
"errors"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
"os"
"sort"
"strings"
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/config/logfeaturescontroller.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/config/logfeaturescontroller.go
similarity index 62%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/config/logfeaturescontroller.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/config/logfeaturescontroller.go
index a0d77b8..353ae5c 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/config/logfeaturescontroller.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/config/logfeaturescontroller.go
@@ -19,22 +19,24 @@
import (
"context"
"errors"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
"os"
"strings"
)
const (
- defaultTracingStatusKey = "trace_publish" // kvstore key containing tracing configuration status
+ defaultTracingStatusKey = "trace_publish" // kvstore key containing tracing configuration status
+ defaultLogCorrelationStatusKey = "log_correlation" // kvstore key containing log correlation configuration status
)
// ComponentLogFeatureController represents Configuration for Logging related features of Tracing and Log
// Correlation of specific Voltha component.
type ComponentLogFeaturesController struct {
- ComponentName string
- componentNameConfig *ComponentConfig
- configManager *ConfigManager
- initialTracingStatus bool // Initial default tracing status set by helm chart
+ ComponentName string
+ componentNameConfig *ComponentConfig
+ configManager *ConfigManager
+ initialTracingStatus bool // Initial default tracing status set by helm chart
+ initialLogCorrelationStatus bool // Initial default log correlation status set by helm chart
}
func NewComponentLogFeaturesController(ctx context.Context, cm *ConfigManager) (*ComponentLogFeaturesController, error) {
@@ -45,12 +47,14 @@
}
tracingStatus := log.GetGlobalLFM().GetTracePublishingStatus()
+ logCorrelationStatus := log.GetGlobalLFM().GetLogCorrelationStatus()
return &ComponentLogFeaturesController{
- ComponentName: componentName,
- componentNameConfig: nil,
- configManager: cm,
- initialTracingStatus: tracingStatus,
+ ComponentName: componentName,
+ componentNameConfig: nil,
+ configManager: cm,
+ initialTracingStatus: tracingStatus,
+ initialLogCorrelationStatus: logCorrelationStatus,
}, nil
}
@@ -87,14 +91,27 @@
logger.Errorw(ctx, "failed-to-persist-component-initial-tracing-status-at-startup", log.Fields{"error": err, "tracingstatus": statusString})
}
}
+
+ _, err = cc.componentNameConfig.Retrieve(ctx, defaultLogCorrelationStatusKey)
+ if err != nil {
+ statusString := "DISABLED"
+ if cc.initialLogCorrelationStatus {
+ statusString = "ENABLED"
+ }
+ err = cc.componentNameConfig.Save(ctx, defaultLogCorrelationStatusKey, statusString)
+ if err != nil {
+ logger.Errorw(ctx, "failed-to-persist-component-initial-log-correlation-status-at-startup", log.Fields{"error": err, "logcorrelationstatus": statusString})
+ }
+ }
}
// processLogFeaturesConfig will first load and apply configuration of log features. Then it will start waiting for any changes
// made to configuration in config store (etcd) and apply the same
func (cc *ComponentLogFeaturesController) processLogFeaturesConfig(ctx context.Context) {
- // Load and apply Tracing Status for first time
+ // Load and apply Tracing Status and log correlation status for first time
cc.loadAndApplyTracingStatusUpdate(ctx)
+ cc.loadAndApplyLogCorrelationStatusUpdate(ctx)
componentConfigEventChan := cc.componentNameConfig.MonitorForConfigChange(ctx)
@@ -110,6 +127,8 @@
if strings.HasSuffix(configEvent.ConfigAttribute, defaultTracingStatusKey) {
cc.loadAndApplyTracingStatusUpdate(ctx)
+ } else if strings.HasSuffix(configEvent.ConfigAttribute, defaultLogCorrelationStatusKey) {
+ cc.loadAndApplyLogCorrelationStatusUpdate(ctx)
}
}
}
@@ -125,7 +144,7 @@
}
if desiredTracingStatus != "ENABLED" && desiredTracingStatus != "DISABLED" {
- logger.Warnw(ctx, "unsupported-tracing-status-configured-in-config-store", log.Fields{"tracing-status": desiredTracingStatus})
+ logger.Warnw(ctx, "unsupported-tracing-status-configured-in-config-store", log.Fields{"failed-tracing-status": desiredTracingStatus, "tracing-status": log.GetGlobalLFM().GetTracePublishingStatus()})
return
}
@@ -133,3 +152,21 @@
log.GetGlobalLFM().SetTracePublishingStatus(desiredTracingStatus == "ENABLED")
}
+
+func (cc *ComponentLogFeaturesController) loadAndApplyLogCorrelationStatusUpdate(ctx context.Context) {
+
+ desiredLogCorrelationStatus, err := cc.componentNameConfig.Retrieve(ctx, defaultLogCorrelationStatusKey)
+ if err != nil || desiredLogCorrelationStatus == "" {
+ logger.Warn(ctx, "unable-to-retrieve-log-correlation-status-from-config-store")
+ return
+ }
+
+ if desiredLogCorrelationStatus != "ENABLED" && desiredLogCorrelationStatus != "DISABLED" {
+ logger.Warnw(ctx, "unsupported-log-correlation-status-configured-in-config-store", log.Fields{"failed-log-correlation-status": desiredLogCorrelationStatus, "log-correlation-status": log.GetGlobalLFM().GetLogCorrelationStatus()})
+ return
+ }
+
+ logger.Debugw(ctx, "retrieved-log-correlation-status", log.Fields{"log-correlation-status": desiredLogCorrelationStatus})
+
+ log.GetGlobalLFM().SetLogCorrelationStatus(desiredLogCorrelationStatus == "ENABLED")
+}
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/backend.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/db/backend.go
similarity index 98%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/backend.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/db/backend.go
index efc0953..d6867a5 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/backend.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/db/backend.go
@@ -23,8 +23,8 @@
"sync"
"time"
- "github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/db/kvstore"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/common.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/db/common.go
similarity index 94%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/common.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/db/common.go
index 9d50f24..25cddf5 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/common.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/db/common.go
@@ -16,7 +16,7 @@
package db
import (
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
)
var logger log.CLogger
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/client.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/db/kvstore/client.go
similarity index 100%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/client.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/db/kvstore/client.go
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/common.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/db/kvstore/common.go
similarity index 94%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/common.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/db/kvstore/common.go
index bb38a94..99c603d 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/common.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/db/kvstore/common.go
@@ -16,7 +16,7 @@
package kvstore
import (
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
)
var logger log.CLogger
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/consulclient.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/db/kvstore/consulclient.go
similarity index 99%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/consulclient.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/db/kvstore/consulclient.go
index c2cd841..2593608 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/consulclient.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/db/kvstore/consulclient.go
@@ -19,7 +19,7 @@
"bytes"
"context"
"errors"
- log "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ log "github.com/opencord/voltha-lib-go/v4/pkg/log"
"sync"
"time"
//log "ciena.com/coordinator/common"
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/etcdclient.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/db/kvstore/etcdclient.go
similarity index 99%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/etcdclient.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/db/kvstore/etcdclient.go
index 0165e18..aa5adbf 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/etcdclient.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/db/kvstore/etcdclient.go
@@ -22,7 +22,7 @@
"sync"
"time"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
v3Client "go.etcd.io/etcd/clientv3"
v3Concurrency "go.etcd.io/etcd/clientv3/concurrency"
v3rpcTypes "go.etcd.io/etcd/etcdserver/api/v3rpc/rpctypes"
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/kvutils.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/db/kvstore/kvutils.go
similarity index 100%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore/kvutils.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/db/kvstore/kvutils.go
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/flows/common.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/flows/common.go
similarity index 94%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/flows/common.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/flows/common.go
index 2d5904b..fdc93bd 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/flows/common.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/flows/common.go
@@ -16,7 +16,7 @@
package flows
import (
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
)
var logger log.CLogger
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/flows/flow_utils.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/flows/flow_utils.go
similarity index 97%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/flows/flow_utils.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/flows/flow_utils.go
index 66e719c..98fad49 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/flows/flow_utils.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/flows/flow_utils.go
@@ -26,8 +26,8 @@
"github.com/cevaris/ordered_map"
"github.com/gogo/protobuf/proto"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
- ofp "github.com/opencord/voltha-protos/v3/go/openflow_13"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
+ ofp "github.com/opencord/voltha-protos/v4/go/openflow_13"
)
var (
@@ -491,6 +491,35 @@
return nil
}
+func GetSetActionField(ctx context.Context, flow *ofp.OfpFlowStats, ofbType ofp.OxmOfbFieldTypes) (uint32, bool) {
+ if flow == nil {
+ return 0, false
+ }
+ for _, instruction := range flow.Instructions {
+ if instruction.Type == uint32(APPLY_ACTIONS) {
+ actions := instruction.GetActions()
+ for _, action := range actions.GetActions() {
+ if action.Type == SET_FIELD {
+ setField := action.GetSetField()
+ if setField.Field.GetOfbField().Type == ofbType {
+ switch ofbType {
+ case VLAN_PCP:
+ return setField.Field.GetOfbField().GetVlanPcp(), true
+ case VLAN_VID:
+ return setField.Field.GetOfbField().GetVlanVid(), true
+ default:
+ logger.Errorw(ctx, "unsupported-ofb-field-type", log.Fields{"ofbType": ofbType})
+ return 0, false
+ }
+ }
+ }
+ }
+ return 0, false
+ }
+ }
+ return 0, false
+}
+
func GetTunnelId(flow *ofp.OfpFlowStats) uint64 {
if flow == nil {
return 0
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/client.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/kafka/client.go
similarity index 97%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/client.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/kafka/client.go
index d977e38..0337432 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/client.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/kafka/client.go
@@ -17,7 +17,7 @@
import (
"context"
- ca "github.com/opencord/voltha-protos/v3/go/inter_container"
+ ca "github.com/opencord/voltha-protos/v4/go/inter_container"
"time"
)
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/common.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/kafka/common.go
similarity index 94%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/common.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/kafka/common.go
index f229d46..5db364d 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/common.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/kafka/common.go
@@ -16,7 +16,7 @@
package kafka
import (
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
)
var logger log.CLogger
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/endpoint_manager.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/kafka/endpoint_manager.go
similarity index 98%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/endpoint_manager.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/kafka/endpoint_manager.go
index 266f6c1..796eb72 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/endpoint_manager.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/kafka/endpoint_manager.go
@@ -21,9 +21,9 @@
"github.com/buraksezer/consistent"
"github.com/cespare/xxhash"
"github.com/golang/protobuf/proto"
- "github.com/opencord/voltha-lib-go/v3/pkg/db"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
- "github.com/opencord/voltha-protos/v3/go/voltha"
+ "github.com/opencord/voltha-lib-go/v4/pkg/db"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
+ "github.com/opencord/voltha-protos/v4/go/voltha"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
"sync"
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/kafka_inter_container_library.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/kafka/kafka_inter_container_library.go
similarity index 99%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/kafka_inter_container_library.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/kafka/kafka_inter_container_library.go
index 92d2529..3af35d7 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/kafka_inter_container_library.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/kafka/kafka_inter_container_library.go
@@ -31,8 +31,8 @@
"github.com/golang/protobuf/ptypes"
"github.com/golang/protobuf/ptypes/any"
"github.com/google/uuid"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
- ic "github.com/opencord/voltha-protos/v3/go/inter_container"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
+ ic "github.com/opencord/voltha-protos/v4/go/inter_container"
"github.com/opentracing/opentracing-go"
)
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/sarama_client.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/kafka/sarama_client.go
similarity index 99%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/sarama_client.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/kafka/sarama_client.go
index 69450fa..1e4efae 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/sarama_client.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/kafka/sarama_client.go
@@ -29,8 +29,8 @@
"github.com/golang/protobuf/proto"
"github.com/golang/protobuf/ptypes"
"github.com/google/uuid"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
- ic "github.com/opencord/voltha-protos/v3/go/inter_container"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
+ ic "github.com/opencord/voltha-protos/v4/go/inter_container"
)
// consumerChannels represents one or more consumers listening on a kafka topic. Once a message is received on that
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/utils.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/kafka/utils.go
similarity index 100%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/kafka/utils.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/kafka/utils.go
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/log/common.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/log/common.go
similarity index 100%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/log/common.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/log/common.go
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/log/log.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/log/log.go
similarity index 100%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/log/log.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/log/log.go
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/log/utils.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/log/utils.go
similarity index 100%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/log/utils.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/log/utils.go
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/pmmetrics/performance_metrics.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/pmmetrics/performance_metrics.go
similarity index 97%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/pmmetrics/performance_metrics.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/pmmetrics/performance_metrics.go
index 322126b..699e8f0 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/pmmetrics/performance_metrics.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/pmmetrics/performance_metrics.go
@@ -17,7 +17,7 @@
package pmmetrics
import (
- "github.com/opencord/voltha-protos/v3/go/voltha"
+ "github.com/opencord/voltha-protos/v4/go/voltha"
)
// PmMetrics structure holds metric and device info
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/ponresourcemanager/common.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/ponresourcemanager/common.go
similarity index 94%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/ponresourcemanager/common.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/ponresourcemanager/common.go
index d266617..1c9a5b1 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/ponresourcemanager/common.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/ponresourcemanager/common.go
@@ -16,7 +16,7 @@
package ponresourcemanager
import (
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
)
var logger log.CLogger
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/ponresourcemanager/ponresourcemanager.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/ponresourcemanager/ponresourcemanager.go
similarity index 99%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/ponresourcemanager/ponresourcemanager.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/ponresourcemanager/ponresourcemanager.go
index baff575..bbfebe3 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/ponresourcemanager/ponresourcemanager.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/ponresourcemanager/ponresourcemanager.go
@@ -25,10 +25,10 @@
"time"
bitmap "github.com/boljen/go-bitmap"
- "github.com/opencord/voltha-lib-go/v3/pkg/db"
- "github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
- tp "github.com/opencord/voltha-lib-go/v3/pkg/techprofile"
+ "github.com/opencord/voltha-lib-go/v4/pkg/db"
+ "github.com/opencord/voltha-lib-go/v4/pkg/db/kvstore"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
+ tp "github.com/opencord/voltha-lib-go/v4/pkg/techprofile"
)
const (
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/probe/common.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/probe/common.go
similarity index 94%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/probe/common.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/probe/common.go
index efd27a4..d9739af 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/probe/common.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/probe/common.go
@@ -16,7 +16,7 @@
package probe
import (
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
)
var logger log.CLogger
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/probe/probe.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/probe/probe.go
similarity index 99%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/probe/probe.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/probe/probe.go
index 732d6df..f13f257 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/probe/probe.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/probe/probe.go
@@ -18,7 +18,7 @@
import (
"context"
"fmt"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
"net/http"
"sync"
)
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/techprofile/4QueueHybridProfileMap1.json b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/techprofile/4QueueHybridProfileMap1.json
similarity index 100%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/techprofile/4QueueHybridProfileMap1.json
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/techprofile/4QueueHybridProfileMap1.json
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/techprofile/README.md b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/techprofile/README.md
similarity index 100%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/techprofile/README.md
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/techprofile/README.md
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/techprofile/SingleQueueEponProfile.json b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/techprofile/SingleQueueEponProfile.json
similarity index 100%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/techprofile/SingleQueueEponProfile.json
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/techprofile/SingleQueueEponProfile.json
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/techprofile/common.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/techprofile/common.go
similarity index 94%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/techprofile/common.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/techprofile/common.go
index fe99fcd..544c780 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/techprofile/common.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/techprofile/common.go
@@ -16,7 +16,7 @@
package techprofile
import (
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
)
var logger log.CLogger
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/techprofile/config.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/techprofile/config.go
similarity index 98%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/techprofile/config.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/techprofile/config.go
index fa2a6de..bcec75e 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/techprofile/config.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/techprofile/config.go
@@ -16,7 +16,7 @@
package techprofile
import (
- "github.com/opencord/voltha-lib-go/v3/pkg/db"
+ "github.com/opencord/voltha-lib-go/v4/pkg/db"
"time"
)
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/techprofile/tech_profile.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/techprofile/tech_profile.go
similarity index 98%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/techprofile/tech_profile.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/techprofile/tech_profile.go
index 13cd081..b80f136 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/techprofile/tech_profile.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/techprofile/tech_profile.go
@@ -26,11 +26,11 @@
"sync"
"time"
- "github.com/opencord/voltha-lib-go/v3/pkg/db"
+ "github.com/opencord/voltha-lib-go/v4/pkg/db"
- "github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore"
- "github.com/opencord/voltha-lib-go/v3/pkg/log"
- tp_pb "github.com/opencord/voltha-protos/v3/go/tech_profile"
+ "github.com/opencord/voltha-lib-go/v4/pkg/db/kvstore"
+ "github.com/opencord/voltha-lib-go/v4/pkg/log"
+ tp_pb "github.com/opencord/voltha-protos/v4/go/tech_profile"
)
// Interface to pon resource manager APIs
@@ -191,7 +191,8 @@
McastGemID uint32 `json:"multicast_gem_id"`
}
-type iScheduler struct {
+// Instance of Scheduler
+type IScheduler struct {
AllocID uint32 `json:"alloc_id"`
Direction string `json:"direction"`
AdditionalBw string `json:"additional_bw"`
@@ -199,7 +200,9 @@
Weight uint32 `json:"weight"`
QSchedPolicy string `json:"q_sched_policy"`
}
-type iGemPortAttribute struct {
+
+// Instance of GemPortAttribute
+type IGemPortAttribute struct {
GemportID uint32 `json:"gemport_id"`
MaxQueueSize string `json:"max_q_size"`
PbitMap string `json:"pbit_map"`
@@ -239,10 +242,10 @@
Version int `json:"version"`
NumGemPorts uint32 `json:"num_gem_ports"`
InstanceCtrl InstanceControl `json:"instance_control"`
- UsScheduler iScheduler `json:"us_scheduler"`
- DsScheduler iScheduler `json:"ds_scheduler"`
- UpstreamGemPortAttributeList []iGemPortAttribute `json:"upstream_gem_port_attribute_list"`
- DownstreamGemPortAttributeList []iGemPortAttribute `json:"downstream_gem_port_attribute_list"`
+ UsScheduler IScheduler `json:"us_scheduler"`
+ DsScheduler IScheduler `json:"ds_scheduler"`
+ UpstreamGemPortAttributeList []IGemPortAttribute `json:"upstream_gem_port_attribute_list"`
+ DownstreamGemPortAttributeList []IGemPortAttribute `json:"downstream_gem_port_attribute_list"`
}
// QThresholds struct for EPON
@@ -646,10 +649,10 @@
func (t *TechProfileMgr) allocateTPInstance(ctx context.Context, uniPortName string, tp *DefaultTechProfile, intfId uint32, tpInstPath string) *TechProfile {
- var usGemPortAttributeList []iGemPortAttribute
- var dsGemPortAttributeList []iGemPortAttribute
- var dsMulticastGemAttributeList []iGemPortAttribute
- var dsUnicastGemAttributeList []iGemPortAttribute
+ var usGemPortAttributeList []IGemPortAttribute
+ var dsGemPortAttributeList []IGemPortAttribute
+ var dsMulticastGemAttributeList []IGemPortAttribute
+ var dsUnicastGemAttributeList []IGemPortAttribute
var tcontIDs []uint32
var gemPorts []uint32
var err error
@@ -694,7 +697,7 @@
logger.Infow(ctx, "Allocated tconts and GEM ports successfully", log.Fields{"tconts": tcontIDs, "gemports": gemPorts})
for index := 0; index < int(tp.NumGemPorts); index++ {
usGemPortAttributeList = append(usGemPortAttributeList,
- iGemPortAttribute{GemportID: gemPorts[index],
+ IGemPortAttribute{GemportID: gemPorts[index],
MaxQueueSize: tp.UpstreamGemPortAttributeList[index].MaxQueueSize,
PbitMap: tp.UpstreamGemPortAttributeList[index].PbitMap,
AesEncryption: tp.UpstreamGemPortAttributeList[index].AesEncryption,
@@ -710,7 +713,7 @@
for index := 0; index < int(len(tp.DownstreamGemPortAttributeList)); index++ {
if isMulticastGem(tp.DownstreamGemPortAttributeList[index].IsMulticast) {
dsMulticastGemAttributeList = append(dsMulticastGemAttributeList,
- iGemPortAttribute{
+ IGemPortAttribute{
McastGemID: tp.DownstreamGemPortAttributeList[index].McastGemID,
MaxQueueSize: tp.DownstreamGemPortAttributeList[index].MaxQueueSize,
PbitMap: tp.DownstreamGemPortAttributeList[index].PbitMap,
@@ -725,7 +728,7 @@
SControlList: tp.DownstreamGemPortAttributeList[index].SControlList})
} else {
dsUnicastGemAttributeList = append(dsUnicastGemAttributeList,
- iGemPortAttribute{
+ IGemPortAttribute{
MaxQueueSize: tp.DownstreamGemPortAttributeList[index].MaxQueueSize,
PbitMap: tp.DownstreamGemPortAttributeList[index].PbitMap,
AesEncryption: tp.DownstreamGemPortAttributeList[index].AesEncryption,
@@ -739,7 +742,7 @@
//add unicast downstream GEM ports to dsGemPortAttributeList
for index := 0; index < int(tp.NumGemPorts); index++ {
dsGemPortAttributeList = append(dsGemPortAttributeList,
- iGemPortAttribute{GemportID: gemPorts[index],
+ IGemPortAttribute{GemportID: gemPorts[index],
MaxQueueSize: dsUnicastGemAttributeList[index].MaxQueueSize,
PbitMap: dsUnicastGemAttributeList[index].PbitMap,
AesEncryption: dsUnicastGemAttributeList[index].AesEncryption,
@@ -761,14 +764,14 @@
Version: tp.Version,
NumGemPorts: tp.NumGemPorts,
InstanceCtrl: tp.InstanceCtrl,
- UsScheduler: iScheduler{
+ UsScheduler: IScheduler{
AllocID: tcontIDs[0],
Direction: tp.UsScheduler.Direction,
AdditionalBw: tp.UsScheduler.AdditionalBw,
Priority: tp.UsScheduler.Priority,
Weight: tp.UsScheduler.Weight,
QSchedPolicy: tp.UsScheduler.QSchedPolicy},
- DsScheduler: iScheduler{
+ DsScheduler: IScheduler{
AllocID: tcontIDs[0],
Direction: tp.DsScheduler.Direction,
AdditionalBw: tp.DsScheduler.AdditionalBw,
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/techprofile/tech_profile_if.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/techprofile/tech_profile_if.go
similarity index 94%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/techprofile/tech_profile_if.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/techprofile/tech_profile_if.go
index 0af1d4e..0c5e273 100644
--- a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/techprofile/tech_profile_if.go
+++ b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/techprofile/tech_profile_if.go
@@ -19,8 +19,8 @@
import (
"context"
- "github.com/opencord/voltha-lib-go/v3/pkg/db"
- tp_pb "github.com/opencord/voltha-protos/v3/go/tech_profile"
+ "github.com/opencord/voltha-lib-go/v4/pkg/db"
+ tp_pb "github.com/opencord/voltha-protos/v4/go/tech_profile"
)
type TechProfileIf interface {
diff --git a/vendor/github.com/opencord/voltha-lib-go/v3/pkg/version/version.go b/vendor/github.com/opencord/voltha-lib-go/v4/pkg/version/version.go
similarity index 100%
rename from vendor/github.com/opencord/voltha-lib-go/v3/pkg/version/version.go
rename to vendor/github.com/opencord/voltha-lib-go/v4/pkg/version/version.go
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/common/common.pb.go b/vendor/github.com/opencord/voltha-protos/v4/go/common/common.pb.go
similarity index 82%
rename from vendor/github.com/opencord/voltha-protos/v3/go/common/common.pb.go
rename to vendor/github.com/opencord/voltha-protos/v4/go/common/common.pb.go
index 3975047..c476a08 100644
--- a/vendor/github.com/opencord/voltha-protos/v3/go/common/common.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v4/go/common/common.pb.go
@@ -59,6 +59,8 @@
AdminState_DOWNLOADING_IMAGE AdminState_Types = 4
// The device is marked to be deleted
AdminState_DELETED AdminState_Types = 5
+ // The device is marked to be in deleting state
+ AdminState_DELETING AdminState_Types = 6
)
var AdminState_Types_name = map[int32]string{
@@ -68,6 +70,7 @@
3: "DISABLED",
4: "DOWNLOADING_IMAGE",
5: "DELETED",
+ 6: "DELETING",
}
var AdminState_Types_value = map[string]int32{
@@ -77,6 +80,7 @@
"DISABLED": 3,
"DOWNLOADING_IMAGE": 4,
"DELETED": 5,
+ "DELETING": 6,
}
func (x AdminState_Types) String() string {
@@ -600,43 +604,44 @@
func init() { proto.RegisterFile("voltha_protos/common.proto", fileDescriptor_c2e3fd231961e826) }
var fileDescriptor_c2e3fd231961e826 = []byte{
- // 606 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x53, 0x4d, 0x4f, 0xdb, 0x4a,
- 0x14, 0x8d, 0x9d, 0x8f, 0x47, 0x6e, 0x88, 0xf1, 0x1b, 0xe0, 0x29, 0x0f, 0x55, 0x6a, 0xe4, 0x0d,
- 0xb4, 0xa2, 0x89, 0x04, 0xdd, 0x76, 0x61, 0xec, 0x29, 0x1d, 0x11, 0xc6, 0xd1, 0xd8, 0x0e, 0xa2,
- 0x8b, 0x46, 0x26, 0x1e, 0x82, 0x25, 0xe2, 0xb1, 0xec, 0x09, 0x12, 0xbf, 0xb4, 0x7f, 0xa7, 0x9a,
- 0x71, 0xf8, 0xaa, 0xd8, 0x24, 0x3e, 0xf7, 0xdc, 0xb9, 0xc7, 0xe7, 0x8c, 0x2f, 0x1c, 0x3c, 0x88,
- 0x7b, 0x79, 0x97, 0xcc, 0x8b, 0x52, 0x48, 0x51, 0x8d, 0x17, 0x62, 0xb5, 0x12, 0xf9, 0x48, 0x23,
- 0xd4, 0xa9, 0x91, 0xb3, 0x07, 0x26, 0xf1, 0x91, 0x05, 0x66, 0x96, 0x0e, 0x8c, 0xa1, 0x71, 0xd4,
- 0x65, 0x66, 0x96, 0x3a, 0x87, 0xd0, 0x24, 0x7e, 0x85, 0x86, 0xd0, 0xce, 0x24, 0x5f, 0x55, 0x03,
- 0x63, 0xd8, 0x3c, 0xea, 0x9d, 0xc0, 0x68, 0x33, 0x82, 0xf8, 0xac, 0x26, 0x9c, 0x35, 0x80, 0x9b,
- 0xae, 0xb2, 0x3c, 0x94, 0x89, 0xe4, 0xce, 0x12, 0xda, 0xd1, 0x63, 0xc1, 0x2b, 0xd4, 0x83, 0x7f,
- 0x62, 0x7a, 0x41, 0x83, 0x2b, 0x6a, 0x37, 0x10, 0x02, 0x6b, 0xca, 0xf0, 0x94, 0x05, 0x33, 0x12,
- 0x92, 0x80, 0x62, 0xdf, 0x36, 0x54, 0x03, 0xa6, 0xee, 0xd9, 0x04, 0xfb, 0xb6, 0x89, 0xb6, 0x61,
- 0xcb, 0x27, 0x61, 0x8d, 0x9a, 0x68, 0x1f, 0xfe, 0xf5, 0x83, 0x2b, 0x3a, 0x09, 0x5c, 0x9f, 0xd0,
- 0xf3, 0x39, 0xb9, 0x74, 0xcf, 0xb1, 0xdd, 0x52, 0x27, 0x7c, 0x3c, 0xc1, 0x11, 0xf6, 0xed, 0xb6,
- 0xb3, 0x04, 0x08, 0x0a, 0x5e, 0x2a, 0xd5, 0x75, 0xe5, 0x5c, 0xbf, 0x2b, 0x6b, 0x01, 0xf8, 0x24,
- 0xf4, 0x82, 0x19, 0x66, 0x5a, 0xd2, 0x02, 0x70, 0xbd, 0x88, 0xcc, 0xdc, 0x88, 0xd0, 0x73, 0xdb,
- 0x54, 0xcd, 0x11, 0x0e, 0x35, 0x68, 0x22, 0x80, 0x8e, 0x26, 0x95, 0x12, 0x40, 0xe7, 0xbb, 0x4b,
- 0x26, 0x5a, 0x08, 0x43, 0xdf, 0x13, 0x79, 0xce, 0x17, 0x72, 0xa3, 0xf5, 0xf5, 0x5d, 0xad, 0x1d,
- 0xe8, 0xc5, 0x94, 0x61, 0xd7, 0xfb, 0xa1, 0x5c, 0xd8, 0x06, 0xea, 0x43, 0xf7, 0x05, 0x9a, 0xce,
- 0x6f, 0x03, 0xfa, 0xea, 0x85, 0x13, 0x99, 0x89, 0x9c, 0xf1, 0xaa, 0x40, 0xdf, 0xa0, 0xb5, 0x10,
- 0x29, 0xd7, 0x99, 0x5b, 0x27, 0x9f, 0x9e, 0x92, 0x7d, 0xd3, 0xf4, 0x1a, 0xc9, 0x75, 0x99, 0x7b,
- 0x22, 0xe5, 0x4c, 0x1f, 0x43, 0x87, 0xb0, 0x93, 0xa4, 0x69, 0xa6, 0xb8, 0xe4, 0x7e, 0x9e, 0xe5,
- 0xb7, 0x62, 0x60, 0xea, 0xdb, 0xb3, 0x5e, 0xca, 0x24, 0xbf, 0x15, 0xce, 0x2f, 0xd8, 0x7d, 0x67,
- 0x8a, 0x0a, 0x39, 0x98, 0x62, 0xe6, 0x46, 0x24, 0xa0, 0xf3, 0x30, 0xf6, 0x3c, 0x1c, 0x86, 0x76,
- 0xe3, 0x6d, 0x59, 0x85, 0x10, 0x33, 0xe5, 0xe6, 0x7f, 0xd8, 0x7f, 0x29, 0xc7, 0x34, 0x8c, 0xa7,
- 0xd3, 0x80, 0xa9, 0x9b, 0x30, 0x9d, 0x63, 0xe8, 0xce, 0x92, 0xfb, 0x35, 0x57, 0xa1, 0x38, 0x1f,
- 0xa1, 0xa5, 0xfe, 0x51, 0x17, 0xda, 0xf8, 0x72, 0x1a, 0x5d, 0xdb, 0x8d, 0xcd, 0xdd, 0x46, 0x2e,
- 0xf5, 0xb0, 0x6d, 0x38, 0x14, 0x2c, 0xdd, 0x1d, 0x16, 0x7c, 0x91, 0xdd, 0x66, 0xbc, 0xfc, 0xfb,
- 0xcb, 0x43, 0xc7, 0xd0, 0x7e, 0x50, 0x1d, 0xda, 0x8e, 0x75, 0xf2, 0xdf, 0x53, 0x30, 0xcf, 0x22,
- 0x23, 0xf5, 0xc3, 0xea, 0x26, 0x47, 0xc2, 0x76, 0x6d, 0x4a, 0xd3, 0x15, 0xb2, 0xa1, 0x19, 0x72,
- 0xa9, 0xc7, 0xf5, 0x99, 0x7a, 0x44, 0x43, 0xe8, 0xc5, 0x79, 0xb5, 0x2e, 0x0a, 0x51, 0x4a, 0x9e,
- 0xea, 0xa9, 0x7d, 0xf6, 0xba, 0x84, 0xf6, 0xa0, 0x8d, 0xcb, 0x52, 0x94, 0x83, 0xa6, 0xe6, 0x6a,
- 0x80, 0x0e, 0x60, 0xcb, 0xcf, 0x2a, 0x99, 0xe4, 0x0b, 0x3e, 0x68, 0x69, 0xe2, 0x19, 0x7f, 0xfe,
- 0x00, 0xdb, 0x11, 0xaf, 0xe4, 0xa5, 0x48, 0xf9, 0x05, 0x7f, 0xac, 0x94, 0xc7, 0xa4, 0xc8, 0xe6,
- 0x92, 0x57, 0xd2, 0x6e, 0x9c, 0x61, 0xd8, 0x15, 0xe5, 0x72, 0x24, 0x0a, 0x9e, 0x2f, 0x44, 0x99,
- 0x8e, 0xea, 0x25, 0xfc, 0x39, 0x5a, 0x66, 0xf2, 0x6e, 0x7d, 0xa3, 0xfc, 0x8c, 0x9f, 0xb8, 0x71,
- 0xcd, 0x7d, 0xd9, 0x2c, 0xe8, 0xc3, 0xe9, 0x78, 0x29, 0x36, 0x6b, 0x7a, 0xd3, 0xd1, 0xc5, 0xd3,
- 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xb5, 0x2a, 0xdd, 0x48, 0xc5, 0x03, 0x00, 0x00,
+ // 614 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x53, 0x4f, 0x4f, 0xdb, 0x4e,
+ 0x10, 0x8d, 0x9d, 0x3f, 0x3f, 0x32, 0x21, 0xc6, 0xbf, 0x05, 0xaa, 0x14, 0x55, 0x6a, 0xe4, 0x0b,
+ 0xb4, 0xa2, 0x89, 0x44, 0xb9, 0xf6, 0x60, 0xec, 0x2d, 0x5d, 0x01, 0xeb, 0x68, 0x6d, 0x07, 0xd1,
+ 0x43, 0x23, 0x13, 0x2f, 0xc1, 0x12, 0xf1, 0x5a, 0xf6, 0x06, 0x89, 0x73, 0x3f, 0x64, 0xbf, 0x4e,
+ 0xb5, 0xeb, 0xf0, 0xaf, 0xe2, 0x62, 0xfb, 0xcd, 0x7b, 0x3b, 0x33, 0x6f, 0xc6, 0x0b, 0x7b, 0xf7,
+ 0xe2, 0x4e, 0xde, 0x26, 0xb3, 0xa2, 0x14, 0x52, 0x54, 0xe3, 0xb9, 0x58, 0x2e, 0x45, 0x3e, 0xd2,
+ 0x08, 0x75, 0x6a, 0xe4, 0xec, 0x80, 0x49, 0x7c, 0x64, 0x81, 0x99, 0xa5, 0x03, 0x63, 0x68, 0x1c,
+ 0x74, 0x99, 0x99, 0xa5, 0xce, 0x3e, 0x34, 0x89, 0x5f, 0xa1, 0x21, 0xb4, 0x33, 0xc9, 0x97, 0xd5,
+ 0xc0, 0x18, 0x36, 0x0f, 0x7a, 0x47, 0x30, 0x5a, 0xa7, 0x20, 0x3e, 0xab, 0x09, 0xe7, 0xb7, 0x01,
+ 0xe0, 0xa6, 0xcb, 0x2c, 0x0f, 0x65, 0x22, 0xb9, 0xb3, 0x82, 0x76, 0xf4, 0x50, 0xf0, 0x0a, 0xf5,
+ 0xe0, 0xbf, 0x98, 0x9e, 0xd1, 0xe0, 0x92, 0xda, 0x0d, 0x84, 0xc0, 0x9a, 0x30, 0x3c, 0x61, 0xc1,
+ 0x94, 0x84, 0x24, 0xa0, 0xd8, 0xb7, 0x0d, 0x25, 0xc0, 0xd4, 0x3d, 0x39, 0xc7, 0xbe, 0x6d, 0xa2,
+ 0x4d, 0xd8, 0xf0, 0x49, 0x58, 0xa3, 0x26, 0xda, 0x85, 0xff, 0xfd, 0xe0, 0x92, 0x9e, 0x07, 0xae,
+ 0x4f, 0xe8, 0xe9, 0x8c, 0x5c, 0xb8, 0xa7, 0xd8, 0x6e, 0xa9, 0x13, 0x3e, 0x3e, 0xc7, 0x11, 0xf6,
+ 0xed, 0xb6, 0x3e, 0xa1, 0x00, 0xa1, 0xa7, 0x76, 0xc7, 0x59, 0x00, 0x04, 0x05, 0x2f, 0x55, 0x0f,
+ 0xab, 0xca, 0xb9, 0x7a, 0xb3, 0x09, 0x0b, 0xc0, 0x27, 0xa1, 0x17, 0x4c, 0x31, 0xd3, 0x0d, 0x58,
+ 0x00, 0xae, 0x17, 0x91, 0xa9, 0xab, 0x73, 0x98, 0x4a, 0x1c, 0xe1, 0x50, 0x83, 0x26, 0x02, 0xe8,
+ 0x68, 0x52, 0xd5, 0x05, 0xe8, 0x7c, 0x77, 0x89, 0x6a, 0xad, 0xed, 0x60, 0xe8, 0x7b, 0x22, 0xcf,
+ 0xf9, 0x5c, 0xae, 0x6b, 0x1d, 0xbf, 0x59, 0x6b, 0x0b, 0x7a, 0x31, 0x65, 0xd8, 0xf5, 0x7e, 0x28,
+ 0x4f, 0xb6, 0x81, 0xfa, 0xd0, 0x7d, 0x86, 0xa6, 0xf3, 0xc7, 0x80, 0xbe, 0x6a, 0x38, 0x91, 0x99,
+ 0xc8, 0x19, 0xaf, 0x0a, 0xf4, 0x0d, 0x5a, 0x73, 0x91, 0x72, 0xbd, 0x02, 0xeb, 0xe8, 0xd3, 0xe3,
+ 0xa0, 0x5f, 0x89, 0x5e, 0x22, 0xb9, 0x2a, 0x73, 0x4f, 0xa4, 0x9c, 0xe9, 0x63, 0x68, 0x1f, 0xb6,
+ 0x92, 0x34, 0xcd, 0x14, 0x97, 0xdc, 0xcd, 0xb2, 0xfc, 0x46, 0x0c, 0x4c, 0xbd, 0x4c, 0xeb, 0x39,
+ 0x4c, 0xf2, 0x1b, 0xe1, 0xfc, 0x82, 0xed, 0x37, 0xb2, 0xa8, 0x91, 0x07, 0x13, 0xcc, 0xdc, 0x88,
+ 0x04, 0x74, 0x16, 0xc6, 0x9e, 0x87, 0xc3, 0xd0, 0x6e, 0xbc, 0x0e, 0xab, 0x21, 0xc4, 0x4c, 0xb9,
+ 0x79, 0x0f, 0xbb, 0xcf, 0xe1, 0x98, 0x86, 0xf1, 0x64, 0x12, 0x30, 0xb5, 0x17, 0xd3, 0x39, 0x84,
+ 0xee, 0x34, 0xb9, 0x5b, 0x71, 0x35, 0x14, 0xe7, 0x23, 0xb4, 0xd4, 0x1b, 0x75, 0xa1, 0x8d, 0x2f,
+ 0x26, 0xd1, 0x95, 0xdd, 0x58, 0x6f, 0x3a, 0x72, 0xa9, 0x87, 0x6d, 0xc3, 0xa1, 0x60, 0x69, 0x75,
+ 0x58, 0xf0, 0x79, 0x76, 0x93, 0xf1, 0xf2, 0xdf, 0x1f, 0x11, 0x1d, 0x42, 0xfb, 0x5e, 0x29, 0xb4,
+ 0x1d, 0xeb, 0xe8, 0xdd, 0xe3, 0x60, 0x9e, 0x8a, 0x8c, 0xd4, 0x83, 0xd5, 0x22, 0x47, 0xc2, 0x66,
+ 0x6d, 0x4a, 0xd3, 0x15, 0xb2, 0xa1, 0x19, 0x72, 0xa9, 0xd3, 0xf5, 0x99, 0xfa, 0x44, 0x43, 0xe8,
+ 0xc5, 0x79, 0xb5, 0x2a, 0x0a, 0x51, 0x4a, 0x9e, 0xea, 0xac, 0x7d, 0xf6, 0x32, 0x84, 0x76, 0xa0,
+ 0x8d, 0xcb, 0x52, 0x94, 0x83, 0xa6, 0xe6, 0x6a, 0x80, 0xf6, 0x60, 0xc3, 0xcf, 0x2a, 0x99, 0xe4,
+ 0x73, 0x3e, 0x68, 0x69, 0xe2, 0x09, 0x7f, 0xfe, 0x00, 0x9b, 0x11, 0xaf, 0xe4, 0x85, 0x48, 0xf9,
+ 0x19, 0x7f, 0xa8, 0x94, 0xc7, 0xa4, 0xc8, 0x66, 0x92, 0x57, 0xd2, 0x6e, 0x9c, 0x60, 0xd8, 0x16,
+ 0xe5, 0x62, 0x24, 0x0a, 0x9e, 0xcf, 0x45, 0x99, 0x8e, 0xea, 0x3b, 0xf9, 0x73, 0xb4, 0xc8, 0xe4,
+ 0xed, 0xea, 0x5a, 0xf9, 0x19, 0x3f, 0x72, 0xe3, 0x9a, 0xfb, 0xb2, 0xbe, 0xaf, 0xf7, 0xc7, 0xe3,
+ 0x85, 0x58, 0xdf, 0xda, 0xeb, 0x8e, 0x0e, 0x7e, 0xfd, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x36, 0xc3,
+ 0x8c, 0xb0, 0xd4, 0x03, 0x00, 0x00,
}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/common/meta.pb.go b/vendor/github.com/opencord/voltha-protos/v4/go/common/meta.pb.go
similarity index 68%
rename from vendor/github.com/opencord/voltha-protos/v3/go/common/meta.pb.go
rename to vendor/github.com/opencord/voltha-protos/v4/go/common/meta.pb.go
index 8fbd621..0af225d 100644
--- a/vendor/github.com/opencord/voltha-protos/v3/go/common/meta.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v4/go/common/meta.pb.go
@@ -121,22 +121,22 @@
var fileDescriptor_96b320e8a67781f3 = []byte{
// 281 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x90, 0xc1, 0x4a, 0xc3, 0x40,
- 0x10, 0x86, 0x8d, 0x85, 0x40, 0x46, 0x2c, 0x31, 0xa7, 0x52, 0x28, 0x04, 0x4f, 0x45, 0x70, 0x17,
- 0xd2, 0x5b, 0x6f, 0xb5, 0xb6, 0x5a, 0x88, 0x09, 0x04, 0x2f, 0x7a, 0x09, 0xc9, 0x66, 0x4d, 0x82,
- 0x49, 0x26, 0x64, 0xb7, 0x05, 0x1f, 0xd5, 0x8b, 0x4f, 0xa0, 0xef, 0x20, 0xc9, 0x66, 0xbd, 0x7a,
- 0xfb, 0x67, 0xf6, 0xdf, 0x8f, 0x8f, 0x81, 0xd9, 0x09, 0x2b, 0x59, 0x24, 0x71, 0xdb, 0xa1, 0x44,
- 0x41, 0x6b, 0x2e, 0x13, 0x32, 0x64, 0xc7, 0x54, 0x2f, 0x73, 0x37, 0x47, 0xcc, 0x2b, 0x4e, 0x87,
- 0x6d, 0x7a, 0x7c, 0xa3, 0x19, 0x17, 0xac, 0x2b, 0x5b, 0x89, 0x9d, 0x6a, 0x5e, 0x2f, 0xc0, 0xda,
- 0x16, 0x65, 0x95, 0x05, 0x98, 0x71, 0xc7, 0x86, 0xc9, 0x3b, 0xff, 0x98, 0x19, 0xae, 0xb1, 0xb4,
- 0xa2, 0x3e, 0xde, 0x78, 0x60, 0x6e, 0x18, 0xe3, 0x42, 0x38, 0x00, 0xe6, 0x36, 0x0c, 0xf6, 0x87,
- 0x07, 0xfb, 0xcc, 0xb9, 0x04, 0x2b, 0xda, 0x6d, 0xee, 0xe3, 0x30, 0xf0, 0x5f, 0x6c, 0x63, 0x1c,
- 0xfd, 0xf8, 0xf9, 0xf0, 0xb4, 0xb3, 0xcf, 0xd7, 0x11, 0x00, 0xeb, 0x91, 0x71, 0xd3, 0x33, 0x17,
- 0x44, 0x39, 0x10, 0xed, 0x40, 0xf6, 0x25, 0xaf, 0xb2, 0xb0, 0x95, 0x25, 0x36, 0x62, 0xf6, 0xfd,
- 0xf5, 0x39, 0x71, 0x8d, 0xe5, 0x85, 0x77, 0x45, 0x94, 0x33, 0xf9, 0xd3, 0x89, 0x2c, 0xa6, 0xe3,
- 0xfa, 0x11, 0xcc, 0x44, 0x79, 0xfc, 0xc3, 0xfb, 0x51, 0xbc, 0xa9, 0x37, 0xd5, 0x3c, 0xe5, 0x1f,
- 0x8d, 0xff, 0xef, 0x7c, 0x98, 0x63, 0x97, 0x13, 0x6c, 0x79, 0xc3, 0xb0, 0xcb, 0x74, 0x8b, 0x61,
- 0x5d, 0x63, 0xf3, 0x4a, 0xf2, 0x52, 0x16, 0xc7, 0xb4, 0x1f, 0xa9, 0xae, 0x50, 0x55, 0xb9, 0x1d,
- 0xcf, 0x7c, 0x5a, 0xd1, 0x1c, 0xa9, 0xea, 0xa7, 0xe6, 0xb0, 0x5c, 0xfd, 0x06, 0x00, 0x00, 0xff,
- 0xff, 0x45, 0x61, 0x57, 0xbf, 0x8b, 0x01, 0x00, 0x00,
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x90, 0x41, 0x4b, 0x84, 0x40,
+ 0x14, 0xc7, 0xb3, 0x05, 0xc1, 0x17, 0x2d, 0xe6, 0x69, 0x59, 0x58, 0x90, 0x4e, 0x4b, 0xd0, 0x0c,
+ 0x58, 0xa7, 0xbd, 0x6d, 0xdb, 0x6e, 0x2d, 0x98, 0x82, 0x74, 0xa9, 0x8b, 0xe8, 0x38, 0xa9, 0xa4,
+ 0x3e, 0x71, 0x66, 0x17, 0xfa, 0xa8, 0x5d, 0xfa, 0x04, 0xf5, 0x1d, 0x42, 0xc7, 0xe9, 0xda, 0xed,
+ 0xff, 0xde, 0xfc, 0xe7, 0xc7, 0x8f, 0x07, 0xb3, 0x23, 0x56, 0xb2, 0x48, 0xe2, 0xb6, 0x43, 0x89,
+ 0x82, 0xd6, 0x5c, 0x26, 0x64, 0xc8, 0x8e, 0xa9, 0x5e, 0xe6, 0x6e, 0x8e, 0x98, 0x57, 0x9c, 0x0e,
+ 0xdb, 0xf4, 0xf0, 0x46, 0x33, 0x2e, 0x58, 0x57, 0xb6, 0x12, 0x3b, 0xd5, 0xbc, 0x5c, 0x80, 0xb5,
+ 0x29, 0xca, 0x2a, 0x0b, 0x30, 0xe3, 0x8e, 0x0d, 0x93, 0x77, 0xfe, 0x31, 0x33, 0x5c, 0x63, 0x69,
+ 0x45, 0x7d, 0xbc, 0xf2, 0xc0, 0x5c, 0x33, 0xc6, 0x85, 0x70, 0x00, 0xcc, 0x4d, 0x18, 0xec, 0xf6,
+ 0x0f, 0xf6, 0x89, 0x73, 0x0e, 0x56, 0xb4, 0x5d, 0xdf, 0xc7, 0x61, 0xe0, 0xbf, 0xd8, 0xc6, 0x38,
+ 0xfa, 0xf1, 0xf3, 0xfe, 0x69, 0x6b, 0x9f, 0xae, 0x22, 0x00, 0xd6, 0x23, 0xe3, 0xa6, 0x67, 0x2e,
+ 0x88, 0x72, 0x20, 0xda, 0x81, 0xec, 0x4a, 0x5e, 0x65, 0x61, 0x2b, 0x4b, 0x6c, 0xc4, 0xec, 0xfb,
+ 0xeb, 0x73, 0xe2, 0x1a, 0xcb, 0x33, 0xef, 0x82, 0x28, 0x67, 0xf2, 0xa7, 0x13, 0x59, 0x4c, 0xc7,
+ 0xd5, 0x23, 0x98, 0x89, 0xf2, 0xf8, 0x87, 0xf7, 0xa3, 0x78, 0x53, 0x6f, 0xaa, 0x79, 0xca, 0x3f,
+ 0x1a, 0xff, 0xdf, 0xf9, 0x30, 0xc7, 0x2e, 0x27, 0xd8, 0xf2, 0x86, 0x61, 0x97, 0xe9, 0x16, 0xc3,
+ 0xba, 0xc6, 0xe6, 0x95, 0xe4, 0xa5, 0x2c, 0x0e, 0x69, 0x3f, 0x52, 0x5d, 0xa1, 0xaa, 0x72, 0x3d,
+ 0x9e, 0xf9, 0x78, 0x4b, 0x73, 0xa4, 0xaa, 0x9f, 0x9a, 0xc3, 0xf2, 0xe6, 0x37, 0x00, 0x00, 0xff,
+ 0xff, 0x0e, 0xea, 0x69, 0xf5, 0x8b, 0x01, 0x00, 0x00,
}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/ext/config/ext_config.pb.go b/vendor/github.com/opencord/voltha-protos/v4/go/ext/config/ext_config.pb.go
similarity index 93%
rename from vendor/github.com/opencord/voltha-protos/v3/go/ext/config/ext_config.pb.go
rename to vendor/github.com/opencord/voltha-protos/v4/go/ext/config/ext_config.pb.go
index 4f68fd0..b68a7e4 100644
--- a/vendor/github.com/opencord/voltha-protos/v3/go/ext/config/ext_config.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v4/go/ext/config/ext_config.pb.go
@@ -483,7 +483,7 @@
// 609 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0xd1, 0x4e, 0x1a, 0x41,
0x14, 0x05, 0xac, 0x80, 0xd7, 0x14, 0xe8, 0x80, 0x8a, 0x3e, 0x58, 0xe3, 0x83, 0x35, 0x6d, 0xba,
- 0x24, 0xd8, 0x97, 0x26, 0x7d, 0x41, 0xa5, 0x85, 0x84, 0xa8, 0x19, 0xd1, 0x87, 0xa6, 0xc9, 0x76,
+ 0x24, 0xd4, 0x97, 0x26, 0x7d, 0x41, 0xa5, 0x85, 0x84, 0xa8, 0x19, 0xd1, 0x87, 0xa6, 0xc9, 0x76,
0x64, 0xc7, 0x65, 0xea, 0x32, 0xb3, 0x19, 0x66, 0x69, 0x5f, 0xfa, 0x35, 0xfd, 0x8e, 0xf6, 0xdb,
0x9a, 0x99, 0xd9, 0x05, 0x81, 0xc5, 0xa4, 0xe9, 0x0b, 0xc9, 0x9e, 0x7b, 0xcf, 0xb9, 0x87, 0x73,
0x67, 0x06, 0xf6, 0x27, 0x22, 0x50, 0x43, 0xe2, 0x86, 0x52, 0x28, 0x31, 0x6e, 0xd0, 0x1f, 0xca,
@@ -505,19 +505,19 @@
0x0c, 0x15, 0x32, 0x50, 0x6c, 0x42, 0xdd, 0xb1, 0x20, 0x0f, 0xae, 0x62, 0x23, 0x1a, 0x9f, 0x83,
0x92, 0xc5, 0xa7, 0x9d, 0x47, 0x50, 0x1e, 0x04, 0x94, 0xc8, 0x47, 0x8d, 0xf6, 0x64, 0x3c, 0x37,
0x70, 0xd2, 0xb7, 0xf7, 0x3b, 0x0b, 0xd5, 0x94, 0x1c, 0x51, 0x73, 0x69, 0x25, 0x92, 0x8d, 0x19,
- 0xb7, 0x67, 0x3a, 0xbf, 0x10, 0x32, 0x36, 0x25, 0xf4, 0x0e, 0xb6, 0x17, 0x38, 0xf7, 0x24, 0x08,
- 0x34, 0x29, 0x67, 0x48, 0xb5, 0x39, 0xd2, 0x47, 0x5b, 0x43, 0x1f, 0x60, 0x63, 0xe6, 0x71, 0xcd,
- 0xe4, 0xf6, 0x72, 0x45, 0x6e, 0x89, 0x6b, 0x5c, 0x1c, 0x27, 0xfe, 0x7f, 0x65, 0xa1, 0xbc, 0xb0,
- 0x29, 0x9d, 0xd2, 0xa3, 0x65, 0x07, 0xe2, 0x3b, 0x95, 0xb1, 0xed, 0xd2, 0x74, 0x83, 0x3d, 0x8d,
- 0x2e, 0x74, 0x46, 0x61, 0x48, 0x65, 0xec, 0x75, 0xd6, 0x79, 0xa3, 0xd1, 0xff, 0x74, 0xf9, 0x13,
- 0x6a, 0x69, 0x3b, 0x47, 0xaf, 0xa0, 0x3c, 0x0b, 0x2b, 0x60, 0x23, 0xa6, 0x12, 0xa3, 0x53, 0xb8,
- 0xa7, 0xd1, 0xf9, 0xf1, 0xb9, 0x7f, 0x1c, 0x7f, 0xb8, 0x0b, 0x85, 0xf8, 0x7e, 0xa3, 0x12, 0x00,
- 0x3e, 0xef, 0xba, 0x6d, 0x8c, 0x2f, 0xf1, 0x75, 0x25, 0x73, 0x88, 0x61, 0x67, 0xc5, 0x75, 0x45,
- 0x08, 0x4a, 0xb8, 0xd5, 0x6f, 0xbb, 0xfd, 0x0e, 0x6e, 0x5f, 0x77, 0x2e, 0x7b, 0xe7, 0x95, 0x8c,
- 0xa1, 0x6b, 0x0c, 0xb7, 0x2e, 0x3e, 0xb5, 0x2b, 0x59, 0x54, 0x85, 0xf2, 0x6d, 0xab, 0x77, 0xf3,
- 0xb8, 0x29, 0x37, 0x7b, 0xc0, 0x4e, 0xbb, 0x50, 0x15, 0xd2, 0x77, 0x44, 0x48, 0xf9, 0x40, 0x48,
- 0xcf, 0xb1, 0x4f, 0xec, 0xe7, 0xa6, 0xcf, 0xd4, 0x30, 0xba, 0x73, 0x06, 0x62, 0xd4, 0x48, 0x6a,
- 0x0d, 0x5b, 0x7b, 0x1b, 0x3f, 0xbf, 0x93, 0x93, 0x86, 0x2f, 0xf4, 0x23, 0xdc, 0xb0, 0x52, 0x77,
- 0x79, 0x53, 0x38, 0xf9, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x4c, 0xef, 0xae, 0x7e, 0xa7, 0x05, 0x00,
+ 0xb7, 0x67, 0x3a, 0xbf, 0x10, 0x32, 0x36, 0x25, 0x74, 0x02, 0xdb, 0x0b, 0x9c, 0x7b, 0x12, 0x04,
+ 0x9a, 0x94, 0x33, 0xa4, 0xda, 0x1c, 0xe9, 0xa3, 0xad, 0xa1, 0x0f, 0xb0, 0x31, 0xf3, 0xb8, 0x66,
+ 0x72, 0x7b, 0xb9, 0x22, 0xb7, 0xc4, 0x35, 0x2e, 0x8e, 0x13, 0xff, 0xbf, 0xb2, 0x50, 0x5e, 0xd8,
+ 0x94, 0x4e, 0xe9, 0xd1, 0xb2, 0x03, 0xf1, 0x9d, 0xca, 0xd8, 0x76, 0x69, 0xba, 0xc1, 0x9e, 0x46,
+ 0x17, 0x3a, 0xa3, 0x30, 0xa4, 0x32, 0xf6, 0x3a, 0xeb, 0xbc, 0xd1, 0xe8, 0x7f, 0xba, 0xfc, 0x09,
+ 0xb5, 0xb4, 0x9d, 0xa3, 0x57, 0x50, 0x9e, 0x85, 0x15, 0xb0, 0x11, 0x53, 0x89, 0xd1, 0x29, 0xdc,
+ 0xd3, 0xe8, 0xfc, 0xf8, 0xdc, 0x3f, 0x8e, 0x3f, 0xdc, 0x85, 0x42, 0x7c, 0xbf, 0x51, 0x09, 0x00,
+ 0x9f, 0x77, 0xdd, 0x36, 0xc6, 0x97, 0xf8, 0xba, 0x92, 0x39, 0xc4, 0xb0, 0xb3, 0xe2, 0xba, 0x22,
+ 0x04, 0x25, 0xdc, 0xea, 0xb7, 0xdd, 0x7e, 0x07, 0xb7, 0xaf, 0x3b, 0x97, 0xbd, 0xf3, 0x4a, 0xc6,
+ 0xd0, 0x35, 0x86, 0x5b, 0x17, 0x9f, 0xda, 0x95, 0x2c, 0xaa, 0x42, 0xf9, 0xb6, 0xd5, 0xbb, 0x79,
+ 0xdc, 0x94, 0x9b, 0x3d, 0x60, 0xa7, 0x5d, 0xa8, 0x0a, 0xe9, 0x3b, 0x22, 0xa4, 0x7c, 0x20, 0xa4,
+ 0xe7, 0xd8, 0x27, 0xf6, 0x73, 0xd3, 0x67, 0x6a, 0x18, 0xdd, 0x39, 0x03, 0x31, 0x6a, 0x24, 0xb5,
+ 0x86, 0xad, 0xbd, 0x8d, 0x9f, 0xdf, 0xc9, 0x49, 0xc3, 0x17, 0xfa, 0x11, 0x6e, 0x58, 0xa9, 0xbb,
+ 0xbc, 0x29, 0xbc, 0xfb, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xe2, 0x77, 0x17, 0x08, 0xa7, 0x05, 0x00,
0x00,
}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/inter_container/inter_container.pb.go b/vendor/github.com/opencord/voltha-protos/v4/go/inter_container/inter_container.pb.go
similarity index 86%
rename from vendor/github.com/opencord/voltha-protos/v3/go/inter_container/inter_container.pb.go
rename to vendor/github.com/opencord/voltha-protos/v4/go/inter_container/inter_container.pb.go
index 535c435..16c4520 100644
--- a/vendor/github.com/opencord/voltha-protos/v3/go/inter_container/inter_container.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v4/go/inter_container/inter_container.pb.go
@@ -8,9 +8,9 @@
proto "github.com/golang/protobuf/proto"
any "github.com/golang/protobuf/ptypes/any"
timestamp "github.com/golang/protobuf/ptypes/timestamp"
- common "github.com/opencord/voltha-protos/v3/go/common"
- openflow_13 "github.com/opencord/voltha-protos/v3/go/openflow_13"
- voltha "github.com/opencord/voltha-protos/v3/go/voltha"
+ common "github.com/opencord/voltha-protos/v4/go/common"
+ openflow_13 "github.com/opencord/voltha-protos/v4/go/openflow_13"
+ voltha "github.com/opencord/voltha-protos/v4/go/voltha"
math "math"
)
@@ -72,6 +72,7 @@
const AdminState_DISABLED = AdminState_Types(common.AdminState_DISABLED)
const AdminState_DOWNLOADING_IMAGE = AdminState_Types(common.AdminState_DOWNLOADING_IMAGE)
const AdminState_DELETED = AdminState_Types(common.AdminState_DELETED)
+const AdminState_DELETING = AdminState_Types(common.AdminState_DELETING)
// OperStatus_Types from public import voltha_protos/common.proto
type OperStatus_Types = common.OperStatus_Types
@@ -1446,89 +1447,88 @@
}
var fileDescriptor_941f0031a549667f = []byte{
- // 1329 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xdb, 0x6e, 0xdb, 0x46,
- 0x13, 0x8e, 0xac, 0xf3, 0xc8, 0x56, 0x94, 0x75, 0x1c, 0xcb, 0x76, 0x0e, 0xfe, 0xf9, 0xa7, 0xa9,
- 0x9b, 0xb4, 0x32, 0xaa, 0xa0, 0x68, 0x7b, 0xd5, 0xca, 0x12, 0x13, 0x13, 0x90, 0x25, 0x95, 0x92,
- 0x93, 0xa2, 0x28, 0x40, 0xd0, 0xe4, 0x5a, 0x22, 0x4c, 0x71, 0x99, 0xe5, 0xd2, 0x29, 0x6f, 0x0a,
- 0xf4, 0xae, 0x2f, 0x51, 0xa0, 0x57, 0x7d, 0x87, 0xbe, 0x46, 0x9f, 0xa8, 0xd8, 0x03, 0x25, 0x4a,
- 0x49, 0x1a, 0x34, 0xbd, 0xe3, 0xcc, 0xf7, 0xed, 0x0c, 0x77, 0x66, 0xe7, 0xdb, 0x85, 0xff, 0x5f,
- 0x13, 0x9f, 0xcd, 0x6c, 0x2b, 0xa4, 0x84, 0x91, 0xe8, 0xd8, 0x0b, 0x18, 0xa6, 0x96, 0x43, 0x02,
- 0x66, 0x7b, 0x01, 0xa6, 0x2d, 0xe1, 0x46, 0x25, 0x49, 0xda, 0xdf, 0x5f, 0x25, 0x3b, 0x64, 0x3e,
- 0x27, 0x81, 0xe4, 0xac, 0x63, 0xd2, 0x52, 0xd8, 0xde, 0x94, 0x90, 0xa9, 0x8f, 0x8f, 0x85, 0x75,
- 0x11, 0x5f, 0x1e, 0xdb, 0x41, 0xa2, 0xa0, 0x07, 0xab, 0xcb, 0x48, 0x88, 0x83, 0x4b, 0x9f, 0xbc,
- 0xb6, 0x3e, 0x7f, 0xaa, 0x08, 0xda, 0x2a, 0xc1, 0x27, 0x53, 0xcf, 0xb1, 0x7d, 0xcb, 0xc5, 0xd7,
- 0x9e, 0x83, 0xd3, 0x20, 0xeb, 0xf1, 0x99, 0x37, 0xc7, 0x11, 0xb3, 0xe7, 0xa1, 0x24, 0x68, 0x07,
- 0x50, 0x1e, 0x33, 0x3a, 0x49, 0x42, 0x8c, 0x1a, 0x90, 0xbf, 0xb6, 0xfd, 0x66, 0xee, 0x30, 0x77,
- 0x54, 0x35, 0xf9, 0x27, 0x07, 0x8d, 0x80, 0xad, 0x83, 0x79, 0x09, 0xde, 0x85, 0xca, 0x09, 0x21,
- 0xfe, 0x3a, 0x5a, 0x91, 0xa8, 0x06, 0xa5, 0x91, 0xed, 0x5c, 0x61, 0x86, 0x9a, 0x50, 0x0e, 0xed,
- 0xc4, 0x27, 0xb6, 0x2b, 0xf0, 0x4d, 0x33, 0x35, 0xb5, 0x1f, 0xa1, 0xaa, 0x53, 0x4a, 0x68, 0x97,
- 0xb8, 0x58, 0x1b, 0x42, 0xd1, 0x21, 0x2e, 0x8e, 0xd0, 0x2e, 0x6c, 0x9f, 0x0f, 0xc6, 0xe7, 0xa3,
- 0xd1, 0xd0, 0x9c, 0xe8, 0x3d, 0xcb, 0xd4, 0xbf, 0x3b, 0xd7, 0xc7, 0x93, 0xc6, 0x0d, 0x74, 0x07,
- 0x90, 0x31, 0x78, 0xd1, 0xe9, 0x1b, 0x3d, 0x6b, 0xd4, 0x31, 0x3b, 0x67, 0xfa, 0x44, 0x37, 0xc7,
- 0x8d, 0x1c, 0xda, 0x81, 0x5b, 0x3d, 0xbd, 0xd3, 0xeb, 0x1b, 0x03, 0xdd, 0xd2, 0xbf, 0xef, 0xea,
- 0x7a, 0x4f, 0xef, 0x35, 0x36, 0xb4, 0x3e, 0x14, 0x45, 0x74, 0xf4, 0x04, 0x0a, 0x3c, 0xb2, 0xc8,
- 0x5e, 0x6f, 0xef, 0xb6, 0x54, 0x03, 0x16, 0xa9, 0x5b, 0x22, 0xaf, 0x29, 0x48, 0xe8, 0x0e, 0x94,
- 0x28, 0xb6, 0x23, 0x12, 0x34, 0x37, 0x44, 0x1d, 0x94, 0xa5, 0xfd, 0x95, 0x83, 0xd2, 0x29, 0xb6,
- 0x5d, 0x4c, 0x51, 0x1d, 0x36, 0x3c, 0x57, 0x95, 0x69, 0xc3, 0x73, 0xd1, 0xc7, 0x50, 0x60, 0x49,
- 0x88, 0xc5, 0x82, 0x7a, 0x7b, 0x3b, 0x8d, 0x7f, 0x86, 0xa3, 0xc8, 0x9e, 0x62, 0x5e, 0x1f, 0x53,
- 0x10, 0xd0, 0x3d, 0x80, 0x4b, 0x4a, 0xe6, 0x16, 0x23, 0xa1, 0xe7, 0x34, 0xf3, 0x22, 0x40, 0x95,
- 0x7b, 0x26, 0xdc, 0x81, 0xf6, 0xa0, 0xc2, 0x88, 0x02, 0x0b, 0x02, 0x2c, 0x33, 0x22, 0xa1, 0x03,
- 0xa8, 0x5e, 0xe1, 0x44, 0x61, 0x45, 0x81, 0x55, 0xae, 0x70, 0x22, 0xc1, 0xaf, 0xa0, 0xba, 0xe8,
- 0x6a, 0xb3, 0x74, 0x98, 0x3b, 0xaa, 0xb5, 0xf7, 0x5b, 0xb2, 0xef, 0xad, 0xb4, 0xef, 0xad, 0x49,
- 0xca, 0x30, 0x97, 0x64, 0xed, 0x14, 0x2a, 0x1d, 0x3a, 0x8d, 0xe7, 0x38, 0x60, 0xbc, 0x85, 0x57,
- 0x38, 0x49, 0xbb, 0x7f, 0x85, 0x13, 0xf4, 0x18, 0x8a, 0xd7, 0xb6, 0x1f, 0xcb, 0x8d, 0xd5, 0xda,
- 0xb7, 0xdf, 0x88, 0xd9, 0x09, 0x12, 0x53, 0x52, 0x34, 0x0f, 0x76, 0x0c, 0x3e, 0x20, 0xdd, 0x74,
- 0x3e, 0xd4, 0xee, 0xd1, 0x23, 0x28, 0xcd, 0x44, 0xd9, 0x44, 0xe4, 0x5a, 0xbb, 0x9e, 0x96, 0x47,
- 0x16, 0xd3, 0x54, 0x28, 0x3a, 0x82, 0xc2, 0x05, 0x71, 0x93, 0x7f, 0xcc, 0x25, 0x18, 0xda, 0x1f,
- 0x39, 0xd8, 0x5b, 0xcd, 0x65, 0xe2, 0x57, 0x31, 0x8e, 0xd8, 0x09, 0x71, 0x13, 0xbe, 0x0d, 0x1a,
- 0x3a, 0xaa, 0x79, 0xfc, 0x13, 0x3d, 0x84, 0x82, 0x4d, 0xa7, 0x51, 0x33, 0x7f, 0x98, 0x3f, 0xaa,
- 0xb5, 0x1b, 0x69, 0xfe, 0x74, 0xe3, 0xa6, 0x40, 0xd1, 0x13, 0xb8, 0x45, 0x71, 0x14, 0x92, 0x20,
- 0xc2, 0x16, 0xc5, 0xaf, 0x62, 0x8f, 0x62, 0x57, 0x74, 0xa1, 0x62, 0x36, 0x52, 0xc0, 0x54, 0x7e,
- 0xf4, 0x10, 0xea, 0x14, 0x87, 0x3e, 0x6f, 0xc8, 0x4a, 0x4f, 0x36, 0x85, 0x77, 0x22, 0x9b, 0xa6,
- 0xb9, 0xb0, 0xbf, 0xfe, 0x9f, 0x32, 0x8e, 0xf8, 0xd1, 0x26, 0x94, 0xa3, 0xd8, 0x71, 0x70, 0x14,
- 0xa9, 0xb1, 0x49, 0x4d, 0xf4, 0x29, 0x3f, 0x82, 0x51, 0xec, 0x33, 0x71, 0x44, 0xde, 0x55, 0x0c,
- 0xc5, 0xd1, 0x7e, 0xcd, 0x41, 0x63, 0xfc, 0xda, 0x63, 0xce, 0xac, 0x6b, 0x87, 0xf6, 0x85, 0xe7,
- 0x7b, 0x2c, 0x41, 0x9f, 0x40, 0xc1, 0xc5, 0x91, 0xa3, 0x6a, 0xbe, 0xd3, 0xca, 0x8a, 0x07, 0xb9,
- 0x0c, 0x2d, 0x0e, 0x9a, 0x82, 0x82, 0x0c, 0xb8, 0x19, 0x89, 0xe5, 0xd6, 0x25, 0xb6, 0x59, 0x4c,
- 0x71, 0xa4, 0x7a, 0x70, 0xf8, 0xc6, 0xaa, 0x35, 0x9e, 0x59, 0x97, 0x8e, 0x67, 0xca, 0xd6, 0x7e,
- 0x86, 0x46, 0x4f, 0x88, 0x4f, 0xcf, 0x8b, 0x1c, 0x72, 0x8d, 0x79, 0xa9, 0xd6, 0x87, 0xe5, 0x00,
- 0xaa, 0xa1, 0x4d, 0x71, 0xc0, 0x2c, 0xcf, 0x55, 0x5d, 0xaa, 0x48, 0x87, 0xe1, 0xa2, 0x07, 0x50,
- 0x93, 0xea, 0x65, 0x89, 0x81, 0x92, 0x13, 0x02, 0xd2, 0x25, 0x74, 0xe6, 0x2e, 0x54, 0xc3, 0xf8,
- 0xc2, 0xf7, 0xa2, 0x19, 0xa6, 0x6a, 0x46, 0x96, 0x0e, 0xed, 0xb7, 0x0d, 0xd8, 0x15, 0x15, 0xef,
- 0xb8, 0x76, 0xc8, 0x16, 0x67, 0x90, 0xaf, 0xd4, 0x7e, 0xd9, 0x80, 0x22, 0xff, 0x88, 0x50, 0x03,
- 0x36, 0x9f, 0xf5, 0x87, 0x2f, 0x33, 0xc2, 0x72, 0x0b, 0xb6, 0x94, 0x67, 0x3c, 0x1a, 0x0e, 0xc6,
- 0x7a, 0x23, 0xc7, 0x49, 0xc3, 0xb3, 0xae, 0xb1, 0x20, 0x6d, 0x70, 0x92, 0xf2, 0x28, 0x52, 0x1e,
- 0x6d, 0xc3, 0xcd, 0x33, 0x7d, 0x62, 0x1a, 0xdd, 0xf1, 0x82, 0x57, 0x40, 0xb7, 0xa1, 0xb1, 0x74,
- 0x2a, 0x6a, 0x91, 0x53, 0x87, 0x83, 0x73, 0xcb, 0x18, 0x2c, 0x05, 0xad, 0xc4, 0xa9, 0x4b, 0xa7,
- 0xa2, 0x96, 0xd1, 0xff, 0xe0, 0xde, 0x44, 0xef, 0x9e, 0x5a, 0x23, 0x73, 0xf8, 0xcc, 0xe8, 0xeb,
- 0x56, 0x6f, 0xf8, 0x72, 0xd0, 0x1f, 0x76, 0x96, 0x0b, 0x2b, 0xe8, 0x00, 0x76, 0x7b, 0x7a, 0x5f,
- 0x9f, 0xe8, 0xd6, 0x73, 0xfd, 0xcc, 0xe2, 0x42, 0xb9, 0x00, 0xab, 0xa8, 0x09, 0xb7, 0x15, 0x38,
- 0xe9, 0x0e, 0x07, 0x4b, 0x04, 0x78, 0x7d, 0x50, 0xb6, 0x3e, 0xef, 0xd0, 0xb3, 0xaf, 0x57, 0xf4,
- 0xec, 0xa3, 0x74, 0x60, 0xde, 0x51, 0xd9, 0x96, 0xa8, 0xea, 0x7f, 0x56, 0xb8, 0x43, 0xd8, 0x64,
- 0x44, 0xdd, 0x5d, 0xfc, 0x68, 0xc8, 0x81, 0x02, 0x46, 0xe4, 0x89, 0x32, 0x5c, 0xf4, 0x08, 0x6e,
- 0x86, 0x94, 0xfc, 0x94, 0x64, 0x48, 0x25, 0x41, 0xda, 0x12, 0xee, 0x05, 0x6f, 0x45, 0x0e, 0xcb,
- 0xff, 0x46, 0x0e, 0xff, 0xcc, 0xad, 0x9e, 0x9f, 0xe1, 0xdc, 0xf1, 0x52, 0x1d, 0x6b, 0x42, 0x79,
- 0x2e, 0x3f, 0xd3, 0x5b, 0x4c, 0x99, 0xe8, 0x04, 0xea, 0x0e, 0x09, 0x02, 0xec, 0x30, 0x2b, 0x62,
- 0x36, 0x8b, 0x23, 0x55, 0xb8, 0x83, 0x96, 0x7a, 0x05, 0x74, 0x25, 0x3a, 0x16, 0xa0, 0x2a, 0xd7,
- 0x96, 0x93, 0x75, 0xa2, 0x6f, 0x41, 0x6e, 0xc2, 0xb2, 0x5d, 0x97, 0x72, 0x49, 0x90, 0x93, 0x7f,
- 0x90, 0xd6, 0x5e, 0x6e, 0xae, 0x35, 0xe2, 0x9c, 0x8e, 0xa4, 0x98, 0x9b, 0x61, 0xc6, 0xd2, 0xc6,
- 0xf0, 0x28, 0xfb, 0xeb, 0x13, 0xec, 0xcc, 0x46, 0x94, 0x5c, 0x7a, 0x3e, 0xee, 0x91, 0xd7, 0x01,
- 0xbf, 0x6e, 0xd3, 0x9d, 0xec, 0x40, 0x29, 0x0e, 0x3c, 0x4b, 0xb5, 0x7c, 0xcb, 0x2c, 0xc6, 0x81,
- 0x67, 0xb8, 0x08, 0x41, 0x21, 0xb4, 0xd9, 0x4c, 0xcd, 0xa4, 0xf8, 0xd6, 0x28, 0x1c, 0x66, 0x83,
- 0xf6, 0xb0, 0x8f, 0x19, 0x7e, 0x8e, 0xe7, 0x23, 0x42, 0xd9, 0x7b, 0xc2, 0xed, 0x42, 0x99, 0x85,
- 0x56, 0x26, 0x62, 0x89, 0x85, 0x23, 0x9b, 0xcd, 0xd0, 0x7d, 0xa8, 0x4d, 0xf1, 0xdc, 0x0a, 0x09,
- 0x15, 0x12, 0x90, 0x17, 0x8b, 0xaa, 0x53, 0x19, 0xd4, 0x70, 0xb5, 0x2b, 0xb8, 0xff, 0x66, 0xce,
- 0x09, 0x7f, 0x77, 0x7d, 0x68, 0xc6, 0x3d, 0xa8, 0xd8, 0xbe, 0x4f, 0x9c, 0x65, 0xba, 0xb2, 0xb0,
- 0x0d, 0x57, 0xfb, 0x3d, 0x07, 0xcd, 0x6c, 0xb6, 0x15, 0x85, 0xbe, 0x03, 0x25, 0xd5, 0x50, 0x29,
- 0xd0, 0xca, 0x42, 0x8f, 0xdf, 0x7f, 0x55, 0x9d, 0xde, 0x90, 0x97, 0x15, 0xfa, 0x02, 0x0a, 0x64,
- 0xee, 0x78, 0xaa, 0x9f, 0x0f, 0xde, 0x36, 0x4b, 0x99, 0x53, 0xc6, 0x97, 0x71, 0xfa, 0x49, 0x75,
- 0xf1, 0x66, 0xd2, 0x22, 0xd8, 0x7e, 0xcb, 0xe4, 0xa1, 0xf6, 0xda, 0xbd, 0xba, 0xff, 0xb6, 0xd0,
- 0x1f, 0x7a, 0xc7, 0x3e, 0xfe, 0x06, 0x6a, 0x99, 0x11, 0x47, 0x35, 0x28, 0x2f, 0xd5, 0x72, 0x13,
- 0x2a, 0x19, 0xa1, 0x14, 0x8f, 0xaf, 0x17, 0x46, 0x57, 0xb7, 0x7a, 0xc6, 0xb8, 0x3b, 0x7c, 0xa1,
- 0x9b, 0xfc, 0xf1, 0x75, 0x32, 0x80, 0x6d, 0x42, 0xa7, 0xe2, 0x06, 0x71, 0x08, 0x75, 0xd5, 0xcf,
- 0xfd, 0xf0, 0xe5, 0xd4, 0x63, 0xb3, 0xf8, 0x82, 0x4f, 0xc6, 0x71, 0x8a, 0xa9, 0x07, 0xf1, 0x67,
- 0xe9, 0xf3, 0xf8, 0xe9, 0xf1, 0x94, 0xac, 0xbf, 0xb6, 0x47, 0x37, 0x46, 0xb9, 0x51, 0xe1, 0xa2,
- 0x24, 0x38, 0x4f, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xe1, 0x0a, 0x7b, 0xf0, 0x9b, 0x0b, 0x00,
- 0x00,
+ // 1328 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xdd, 0x72, 0xdb, 0x44,
+ 0x14, 0xae, 0xff, 0xed, 0xe3, 0xc4, 0x75, 0x37, 0x4d, 0xe3, 0x24, 0xfd, 0x09, 0xa2, 0x94, 0xd0,
+ 0x82, 0x33, 0xb8, 0x30, 0xc0, 0x15, 0x38, 0xb6, 0xda, 0x68, 0xc6, 0xb1, 0x8d, 0xec, 0xb4, 0x0c,
+ 0xc3, 0x8c, 0x46, 0x91, 0x36, 0xb6, 0x26, 0xb2, 0x56, 0x5d, 0xad, 0x53, 0x74, 0xc3, 0x0c, 0x77,
+ 0xbc, 0x04, 0x33, 0x5c, 0xf1, 0x0e, 0xbc, 0x06, 0x4f, 0xc4, 0xec, 0x8f, 0x6c, 0xd9, 0x6d, 0xe8,
+ 0x50, 0xee, 0x74, 0xce, 0xf7, 0xed, 0x39, 0xda, 0x73, 0xf6, 0x7c, 0xbb, 0xf0, 0xe1, 0x15, 0xf1,
+ 0xd9, 0xd4, 0xb6, 0x42, 0x4a, 0x18, 0x89, 0x8e, 0xbc, 0x80, 0x61, 0x6a, 0x39, 0x24, 0x60, 0xb6,
+ 0x17, 0x60, 0xda, 0x14, 0x6e, 0x54, 0x94, 0xa4, 0xbd, 0xbd, 0x55, 0xb2, 0x43, 0x66, 0x33, 0x12,
+ 0x48, 0xce, 0x3a, 0x26, 0x2d, 0x85, 0xed, 0x4e, 0x08, 0x99, 0xf8, 0xf8, 0x48, 0x58, 0xe7, 0xf3,
+ 0x8b, 0x23, 0x3b, 0x88, 0x15, 0xf4, 0x60, 0x75, 0x19, 0x09, 0x71, 0x70, 0xe1, 0x93, 0xd7, 0xd6,
+ 0xe7, 0x4f, 0x15, 0x41, 0x5b, 0x25, 0xf8, 0x64, 0xe2, 0x39, 0xb6, 0x6f, 0xb9, 0xf8, 0xca, 0x73,
+ 0x70, 0x12, 0x64, 0x3d, 0x3e, 0xf3, 0x66, 0x38, 0x62, 0xf6, 0x2c, 0x94, 0x04, 0x6d, 0x1f, 0x4a,
+ 0x23, 0x46, 0xc7, 0x71, 0x88, 0x51, 0x1d, 0x72, 0x57, 0xb6, 0xdf, 0xc8, 0x1c, 0x64, 0x0e, 0x2b,
+ 0x26, 0xff, 0xe4, 0xa0, 0x11, 0xb0, 0x75, 0x30, 0x27, 0xc1, 0xbb, 0x50, 0x3e, 0x26, 0xc4, 0x5f,
+ 0x47, 0xcb, 0x12, 0xd5, 0xa0, 0x38, 0xb4, 0x9d, 0x4b, 0xcc, 0x50, 0x03, 0x4a, 0xa1, 0x1d, 0xfb,
+ 0xc4, 0x76, 0x05, 0xbe, 0x61, 0x26, 0xa6, 0xf6, 0x13, 0x54, 0x74, 0x4a, 0x09, 0xed, 0x10, 0x17,
+ 0x6b, 0x03, 0x28, 0x38, 0xc4, 0xc5, 0x11, 0xda, 0x81, 0xad, 0xb3, 0xfe, 0xe8, 0x6c, 0x38, 0x1c,
+ 0x98, 0x63, 0xbd, 0x6b, 0x99, 0xfa, 0xf7, 0x67, 0xfa, 0x68, 0x5c, 0xbf, 0x81, 0xee, 0x00, 0x32,
+ 0xfa, 0x2f, 0xda, 0x3d, 0xa3, 0x6b, 0x0d, 0xdb, 0x66, 0xfb, 0x54, 0x1f, 0xeb, 0xe6, 0xa8, 0x9e,
+ 0x41, 0xdb, 0x70, 0xab, 0xab, 0xb7, 0xbb, 0x3d, 0xa3, 0xaf, 0x5b, 0xfa, 0x0f, 0x1d, 0x5d, 0xef,
+ 0xea, 0xdd, 0x7a, 0x56, 0xeb, 0x41, 0x41, 0x44, 0x47, 0x4f, 0x20, 0xcf, 0x23, 0x8b, 0xec, 0xb5,
+ 0xd6, 0x4e, 0x53, 0x35, 0x60, 0x91, 0xba, 0x29, 0xf2, 0x9a, 0x82, 0x84, 0xee, 0x40, 0x91, 0x62,
+ 0x3b, 0x22, 0x41, 0x23, 0x2b, 0xea, 0xa0, 0x2c, 0xed, 0xef, 0x0c, 0x14, 0x4f, 0xb0, 0xed, 0x62,
+ 0x8a, 0x6a, 0x90, 0xf5, 0x5c, 0x55, 0xa6, 0xac, 0xe7, 0xa2, 0x8f, 0x21, 0xcf, 0xe2, 0x10, 0x8b,
+ 0x05, 0xb5, 0xd6, 0x56, 0x12, 0xff, 0x14, 0x47, 0x91, 0x3d, 0xc1, 0xbc, 0x3e, 0xa6, 0x20, 0xa0,
+ 0x7b, 0x00, 0x17, 0x94, 0xcc, 0x2c, 0x46, 0x42, 0xcf, 0x69, 0xe4, 0x44, 0x80, 0x0a, 0xf7, 0x8c,
+ 0xb9, 0x03, 0xed, 0x42, 0x99, 0x11, 0x05, 0xe6, 0x05, 0x58, 0x62, 0x44, 0x42, 0xfb, 0x50, 0xb9,
+ 0xc4, 0xb1, 0xc2, 0x0a, 0x02, 0x2b, 0x5f, 0xe2, 0x58, 0x82, 0x5f, 0x43, 0x65, 0xd1, 0xd5, 0x46,
+ 0xf1, 0x20, 0x73, 0x58, 0x6d, 0xed, 0x35, 0x65, 0xdf, 0x9b, 0x49, 0xdf, 0x9b, 0xe3, 0x84, 0x61,
+ 0x2e, 0xc9, 0xda, 0x09, 0x94, 0xdb, 0x74, 0x32, 0x9f, 0xe1, 0x80, 0xf1, 0x16, 0x5e, 0xe2, 0x38,
+ 0xe9, 0xfe, 0x25, 0x8e, 0xd1, 0x63, 0x28, 0x5c, 0xd9, 0xfe, 0x5c, 0x6e, 0xac, 0xda, 0xba, 0xfd,
+ 0x46, 0xcc, 0x76, 0x10, 0x9b, 0x92, 0xa2, 0x79, 0xb0, 0x6d, 0xf0, 0x01, 0xe9, 0x24, 0xf3, 0xa1,
+ 0x76, 0x8f, 0x1e, 0x41, 0x71, 0x2a, 0xca, 0x26, 0x22, 0x57, 0x5b, 0xb5, 0xa4, 0x3c, 0xb2, 0x98,
+ 0xa6, 0x42, 0xd1, 0x21, 0xe4, 0xcf, 0x89, 0x1b, 0xff, 0x6b, 0x2e, 0xc1, 0xd0, 0xfe, 0xcc, 0xc0,
+ 0xee, 0x6a, 0x2e, 0x13, 0xbf, 0x9a, 0xe3, 0x88, 0x1d, 0x13, 0x37, 0xe6, 0xdb, 0xa0, 0xa1, 0xa3,
+ 0x9a, 0xc7, 0x3f, 0xd1, 0x43, 0xc8, 0xdb, 0x74, 0x12, 0x35, 0x72, 0x07, 0xb9, 0xc3, 0x6a, 0xab,
+ 0x9e, 0xe4, 0x4f, 0x36, 0x6e, 0x0a, 0x14, 0x3d, 0x81, 0x5b, 0x14, 0x47, 0x21, 0x09, 0x22, 0x6c,
+ 0x51, 0xfc, 0x6a, 0xee, 0x51, 0xec, 0x8a, 0x2e, 0x94, 0xcd, 0x7a, 0x02, 0x98, 0xca, 0x8f, 0x1e,
+ 0x42, 0x8d, 0xe2, 0xd0, 0xe7, 0x0d, 0x59, 0xe9, 0xc9, 0x86, 0xf0, 0x8e, 0x65, 0xd3, 0x34, 0x17,
+ 0xf6, 0xd6, 0xff, 0x53, 0xc6, 0x11, 0x3f, 0xda, 0x80, 0x52, 0x34, 0x77, 0x1c, 0x1c, 0x45, 0x6a,
+ 0x6c, 0x12, 0x13, 0x7d, 0xca, 0x8f, 0x60, 0x34, 0xf7, 0x99, 0x38, 0x22, 0xd7, 0x15, 0x43, 0x71,
+ 0xb4, 0xdf, 0x32, 0x50, 0x1f, 0xbd, 0xf6, 0x98, 0x33, 0xed, 0xd8, 0xa1, 0x7d, 0xee, 0xf9, 0x1e,
+ 0x8b, 0xd1, 0x27, 0x90, 0x77, 0x71, 0xe4, 0xa8, 0x9a, 0x6f, 0x37, 0xd3, 0xe2, 0x41, 0x2e, 0x42,
+ 0x8b, 0x83, 0xa6, 0xa0, 0x20, 0x03, 0x6e, 0x46, 0x62, 0xb9, 0x75, 0x81, 0x6d, 0x36, 0xa7, 0x38,
+ 0x52, 0x3d, 0x38, 0x78, 0x63, 0xd5, 0x1a, 0xcf, 0xac, 0x49, 0xc7, 0x33, 0x65, 0x6b, 0xbf, 0x40,
+ 0xbd, 0x2b, 0xc4, 0xa7, 0xeb, 0x45, 0x0e, 0xb9, 0xc2, 0xbc, 0x54, 0xeb, 0xc3, 0xb2, 0x0f, 0x95,
+ 0xd0, 0xa6, 0x38, 0x60, 0x96, 0xe7, 0xaa, 0x2e, 0x95, 0xa5, 0xc3, 0x70, 0xd1, 0x03, 0xa8, 0x4a,
+ 0xf5, 0xb2, 0xc4, 0x40, 0xc9, 0x09, 0x01, 0xe9, 0x12, 0x3a, 0x73, 0x17, 0x2a, 0xe1, 0xfc, 0xdc,
+ 0xf7, 0xa2, 0x29, 0xa6, 0x6a, 0x46, 0x96, 0x0e, 0xed, 0xf7, 0x2c, 0xec, 0x88, 0x8a, 0xb7, 0x5d,
+ 0x3b, 0x64, 0x8b, 0x33, 0xc8, 0x57, 0x6a, 0xbf, 0x66, 0xa1, 0xc0, 0x3f, 0x22, 0x54, 0x87, 0x8d,
+ 0x67, 0xbd, 0xc1, 0xcb, 0x94, 0xb0, 0xdc, 0x82, 0x4d, 0xe5, 0x19, 0x0d, 0x07, 0xfd, 0x91, 0x5e,
+ 0xcf, 0x70, 0xd2, 0xe0, 0xb4, 0x63, 0x2c, 0x48, 0x59, 0x4e, 0x52, 0x1e, 0x45, 0xca, 0xa1, 0x2d,
+ 0xb8, 0x79, 0xaa, 0x8f, 0x4d, 0xa3, 0x33, 0x5a, 0xf0, 0xf2, 0xe8, 0x36, 0xd4, 0x97, 0x4e, 0x45,
+ 0x2d, 0x70, 0xea, 0xa0, 0x7f, 0x66, 0x19, 0xfd, 0xa5, 0xa0, 0x15, 0x39, 0x75, 0xe9, 0x54, 0xd4,
+ 0x12, 0xfa, 0x00, 0xee, 0x8d, 0xf5, 0xce, 0x89, 0x35, 0x34, 0x07, 0xcf, 0x8c, 0x9e, 0x6e, 0x75,
+ 0x07, 0x2f, 0xfb, 0xbd, 0x41, 0x7b, 0xb9, 0xb0, 0x8c, 0xf6, 0x61, 0xa7, 0xab, 0xf7, 0xf4, 0xb1,
+ 0x6e, 0x3d, 0xd7, 0x4f, 0x2d, 0x2e, 0x94, 0x0b, 0xb0, 0x82, 0x1a, 0x70, 0x5b, 0x81, 0xe3, 0xce,
+ 0xa0, 0xbf, 0x44, 0x80, 0xd7, 0x07, 0xa5, 0xeb, 0x73, 0x8d, 0x9e, 0x7d, 0xb3, 0xa2, 0x67, 0x1f,
+ 0x25, 0x03, 0x73, 0x4d, 0x65, 0x9b, 0xa2, 0xaa, 0xff, 0x5b, 0xe1, 0x0e, 0x60, 0x83, 0x11, 0x75,
+ 0x77, 0xf1, 0xa3, 0x21, 0x07, 0x0a, 0x18, 0x91, 0x27, 0xca, 0x70, 0xd1, 0x23, 0xb8, 0x19, 0x52,
+ 0xf2, 0x73, 0x9c, 0x22, 0x15, 0x05, 0x69, 0x53, 0xb8, 0x17, 0xbc, 0x15, 0x39, 0x2c, 0xfd, 0x17,
+ 0x39, 0xfc, 0x2b, 0xb3, 0x7a, 0x7e, 0x06, 0x33, 0xc7, 0x4b, 0x74, 0xac, 0x01, 0xa5, 0x99, 0xfc,
+ 0x4c, 0x6e, 0x31, 0x65, 0xa2, 0x63, 0xa8, 0x39, 0x24, 0x08, 0xb0, 0xc3, 0xac, 0x88, 0xd9, 0x6c,
+ 0x1e, 0xa9, 0xc2, 0xed, 0x37, 0xd5, 0x2b, 0xa0, 0x23, 0xd1, 0x91, 0x00, 0x55, 0xb9, 0x36, 0x9d,
+ 0xb4, 0x13, 0x7d, 0x07, 0x72, 0x13, 0x96, 0xed, 0xba, 0x94, 0x4b, 0x82, 0x9c, 0xfc, 0xfd, 0xa4,
+ 0xf6, 0x72, 0x73, 0xcd, 0x21, 0xe7, 0xb4, 0x25, 0xc5, 0xdc, 0x08, 0x53, 0x96, 0x36, 0x82, 0x47,
+ 0xe9, 0x5f, 0x1f, 0x63, 0x67, 0x3a, 0xa4, 0xe4, 0xc2, 0xf3, 0x71, 0x97, 0xbc, 0x0e, 0xf8, 0x75,
+ 0x9b, 0xec, 0x64, 0x1b, 0x8a, 0xf3, 0xc0, 0xb3, 0x54, 0xcb, 0x37, 0xcd, 0xc2, 0x3c, 0xf0, 0x0c,
+ 0x17, 0x21, 0xc8, 0x87, 0x36, 0x9b, 0xaa, 0x99, 0x14, 0xdf, 0x1a, 0x85, 0x83, 0x74, 0xd0, 0x2e,
+ 0xf6, 0x31, 0xc3, 0xcf, 0xf1, 0x6c, 0x48, 0x28, 0x7b, 0x47, 0xb8, 0x1d, 0x28, 0xb1, 0xd0, 0x4a,
+ 0x45, 0x2c, 0xb2, 0x70, 0x68, 0xb3, 0x29, 0xba, 0x0f, 0xd5, 0x09, 0x9e, 0x59, 0x21, 0xa1, 0x42,
+ 0x02, 0x72, 0x62, 0x51, 0x65, 0x22, 0x83, 0x1a, 0xae, 0x76, 0x09, 0xf7, 0xdf, 0xcc, 0x39, 0xe6,
+ 0xef, 0xae, 0xf7, 0xcd, 0xb8, 0x0b, 0x65, 0xdb, 0xf7, 0x89, 0xb3, 0x4c, 0x57, 0x12, 0xb6, 0xe1,
+ 0x6a, 0x7f, 0x64, 0xa0, 0x91, 0xce, 0xb6, 0xa2, 0xd0, 0x77, 0xa0, 0xa8, 0x1a, 0x2a, 0x05, 0x5a,
+ 0x59, 0xe8, 0xf1, 0xbb, 0xaf, 0xaa, 0x93, 0x1b, 0xf2, 0xb2, 0x42, 0x5f, 0x42, 0x9e, 0xcc, 0x1c,
+ 0x4f, 0xf5, 0xf3, 0xc1, 0xdb, 0x66, 0x29, 0x75, 0xca, 0xf8, 0x32, 0x4e, 0x3f, 0xae, 0x2c, 0xde,
+ 0x4c, 0x5a, 0x04, 0x5b, 0x6f, 0x99, 0x3c, 0xd4, 0x5a, 0xbb, 0x57, 0xf7, 0xde, 0x16, 0xfa, 0x7d,
+ 0xef, 0xd8, 0xc7, 0xdf, 0x42, 0x35, 0x35, 0xe2, 0xa8, 0x0a, 0xa5, 0xa5, 0x5a, 0x6e, 0x40, 0x39,
+ 0x25, 0x94, 0xe2, 0xf1, 0xf5, 0xc2, 0xe8, 0xe8, 0x56, 0xd7, 0x18, 0x75, 0x06, 0x2f, 0x74, 0x93,
+ 0x3f, 0xbe, 0x8e, 0xfb, 0xb0, 0x45, 0xe8, 0x44, 0xdc, 0x20, 0x0e, 0xa1, 0xae, 0xfa, 0xb9, 0x1f,
+ 0xbf, 0x9a, 0x78, 0x6c, 0x3a, 0x3f, 0xe7, 0x93, 0x71, 0x94, 0x60, 0xea, 0x41, 0xfc, 0x59, 0xf2,
+ 0x3c, 0xfe, 0xe2, 0x68, 0x42, 0xd6, 0x5f, 0xdb, 0xc3, 0x1b, 0xc3, 0xcc, 0x30, 0x7f, 0x5e, 0x14,
+ 0x9c, 0xa7, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x63, 0xbd, 0xf4, 0x0f, 0x9b, 0x0b, 0x00, 0x00,
}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/omci/omci_alarm_db.pb.go b/vendor/github.com/opencord/voltha-protos/v4/go/omci/omci_alarm_db.pb.go
similarity index 81%
rename from vendor/github.com/opencord/voltha-protos/v3/go/omci/omci_alarm_db.pb.go
rename to vendor/github.com/opencord/voltha-protos/v4/go/omci/omci_alarm_db.pb.go
index 3d20894..58824c0 100644
--- a/vendor/github.com/opencord/voltha-protos/v3/go/omci/omci_alarm_db.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v4/go/omci/omci_alarm_db.pb.go
@@ -6,7 +6,7 @@
import (
fmt "fmt"
proto "github.com/golang/protobuf/proto"
- _ "github.com/opencord/voltha-protos/v3/go/common"
+ _ "github.com/opencord/voltha-protos/v4/go/common"
math "math"
)
@@ -474,43 +474,43 @@
func init() { proto.RegisterFile("voltha_protos/omci_alarm_db.proto", fileDescriptor_8d41f1e38aadb08d) }
var fileDescriptor_8d41f1e38aadb08d = []byte{
- // 605 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xc1, 0x4e, 0xdb, 0x40,
- 0x10, 0x6d, 0x20, 0x40, 0x98, 0x24, 0x10, 0xb6, 0x88, 0x6e, 0x91, 0x90, 0xa8, 0xd5, 0x56, 0x1c,
- 0x5a, 0x47, 0x82, 0x63, 0x2b, 0x21, 0x02, 0x91, 0x9a, 0x43, 0x85, 0x6a, 0x38, 0xf5, 0x62, 0x6d,
- 0xec, 0xa9, 0x59, 0xc9, 0xbb, 0x4e, 0xbd, 0x1b, 0x4b, 0x39, 0xf4, 0xd2, 0xaf, 0xea, 0x4f, 0xf0,
- 0x13, 0x3d, 0xf5, 0x0b, 0x38, 0x57, 0x1e, 0xdb, 0x89, 0x23, 0x4b, 0x55, 0x6f, 0xfb, 0xde, 0xcc,
- 0xbc, 0x99, 0x9d, 0xb7, 0x5a, 0x78, 0x95, 0x25, 0xb1, 0x7d, 0x10, 0xfe, 0x2c, 0x4d, 0x6c, 0x62,
- 0x86, 0x89, 0x0a, 0xa4, 0x2f, 0x62, 0x91, 0x2a, 0x3f, 0x9c, 0xba, 0x44, 0xb2, 0x76, 0x4e, 0x1e,
- 0xf3, 0xf5, 0x44, 0x85, 0x56, 0x14, 0x71, 0x67, 0x0c, 0xec, 0x2a, 0xaf, 0xb8, 0xb2, 0x36, 0x95,
- 0xd3, 0xb9, 0xc5, 0x1b, 0x61, 0x05, 0x7b, 0x09, 0x6d, 0x2d, 0x14, 0xf2, 0xd6, 0x69, 0xeb, 0x6c,
- 0x77, 0xb4, 0xf5, 0xe7, 0xe9, 0xf1, 0xa4, 0xe5, 0x11, 0xc5, 0x0e, 0x61, 0x2b, 0x13, 0xf1, 0x1c,
- 0xf9, 0x46, 0x1e, 0xf3, 0x0a, 0xe0, 0xfc, 0x6a, 0xc1, 0x01, 0xe9, 0x4c, 0xb4, 0xb1, 0x42, 0x07,
- 0x85, 0xcc, 0x5b, 0xe8, 0xca, 0x12, 0xfb, 0x32, 0x24, 0xb5, 0x7e, 0xa5, 0x06, 0x55, 0x64, 0x12,
- 0x32, 0x0e, 0x3b, 0x41, 0x8a, 0xc2, 0x62, 0x58, 0xaa, 0x56, 0x90, 0x1d, 0x43, 0x47, 0x25, 0xa1,
- 0xfc, 0x26, 0x31, 0xe4, 0x9b, 0x14, 0x5a, 0x62, 0x36, 0x06, 0x10, 0xd5, 0xd4, 0x86, 0xb7, 0x4f,
- 0x37, 0xcf, 0xba, 0xe7, 0xdc, 0xcd, 0xef, 0xeb, 0x36, 0xaf, 0x34, 0xea, 0xfe, 0x7e, 0x7a, 0x3c,
- 0xd9, 0x2e, 0xee, 0xe5, 0xd5, 0x0a, 0x9d, 0x1f, 0xb0, 0x47, 0xe9, 0xd7, 0xb1, 0x30, 0x86, 0xc6,
- 0x3e, 0x85, 0x4e, 0x90, 0x83, 0xc6, 0xcc, 0x3b, 0x44, 0x4f, 0x42, 0x36, 0x81, 0xdd, 0x6a, 0x7c,
- 0xc3, 0x37, 0xa8, 0xf3, 0x8b, 0x5a, 0xe7, 0xfa, 0x12, 0x46, 0x2c, 0x6f, 0xdc, 0x5f, 0xdb, 0x84,
- 0xb7, 0xaa, 0x76, 0xbe, 0x94, 0x06, 0x7c, 0x16, 0x5a, 0x44, 0x18, 0x8e, 0xb5, 0x95, 0x76, 0xf1,
- 0x1f, 0x23, 0x54, 0x16, 0x6d, 0x34, 0x2c, 0x72, 0x3e, 0xc2, 0xa0, 0x90, 0x44, 0x63, 0x44, 0x84,
- 0xf7, 0x8b, 0x19, 0xb2, 0x33, 0xe8, 0xa9, 0x02, 0xfa, 0x76, 0x31, 0xc3, 0x75, 0xd1, 0xae, 0x5a,
- 0x65, 0x3a, 0x3f, 0x37, 0x61, 0x9f, 0xca, 0x6f, 0x30, 0x93, 0xa5, 0x91, 0x0e, 0xec, 0x86, 0x84,
- 0xaa, 0x79, 0x96, 0x1d, 0x3b, 0x05, 0xff, 0x4f, 0x13, 0x5d, 0x78, 0x1e, 0x0b, 0x63, 0xcb, 0xa7,
- 0x69, 0xf0, 0xfb, 0x1c, 0x75, 0x80, 0xe4, 0x67, 0xdf, 0x3b, 0xc8, 0x43, 0xd4, 0xef, 0xae, 0x0c,
- 0xb0, 0xd7, 0xb0, 0x47, 0xf9, 0x66, 0xa1, 0x03, 0xdf, 0x4a, 0x85, 0xbc, 0x4d, 0x82, 0xbd, 0x9c,
- 0xbd, 0x5b, 0xe8, 0xe0, 0x5e, 0x2a, 0xcc, 0xfb, 0x65, 0x98, 0x1a, 0x99, 0x68, 0xbe, 0x45, 0x4a,
- 0x15, 0x64, 0x97, 0x50, 0x6c, 0x09, 0x0d, 0xdf, 0x26, 0x6f, 0x0e, 0x6b, 0xde, 0x2c, 0x6d, 0x1e,
- 0xed, 0xe7, 0xc6, 0xc0, 0x6a, 0xd1, 0x5e, 0x55, 0xc5, 0xae, 0x61, 0xa0, 0x0a, 0x3b, 0x7c, 0xcc,
- 0xfd, 0x90, 0x68, 0xf8, 0x4e, 0xe3, 0x7d, 0xad, 0x39, 0xe6, 0xed, 0xab, 0x1a, 0x94, 0x68, 0xd8,
- 0x07, 0xe8, 0xd7, 0x37, 0x6e, 0x78, 0x87, 0x14, 0x8e, 0xea, 0x0a, 0xab, 0xb5, 0x7b, 0xbd, 0x9a,
- 0x07, 0xc6, 0xb9, 0x84, 0x23, 0xca, 0xb8, 0x9d, 0xa1, 0xbe, 0x55, 0x81, 0x1c, 0x67, 0xa8, 0x2d,
- 0xd9, 0xf3, 0x06, 0x0e, 0x1a, 0x24, 0x1b, 0x40, 0xcf, 0x58, 0x61, 0xd1, 0x0f, 0x1e, 0x84, 0x8e,
- 0x70, 0xf0, 0xcc, 0x89, 0xcb, 0x67, 0xb5, 0x96, 0xcb, 0x46, 0xd0, 0x5e, 0xba, 0xbf, 0x77, 0xee,
- 0xd6, 0x46, 0x69, 0x68, 0xba, 0x0d, 0xc6, 0xa3, 0x5a, 0xc6, 0xa0, 0x1d, 0x0a, 0x2b, 0x4a, 0x93,
- 0xe9, 0x3c, 0xfa, 0x04, 0x3c, 0x49, 0x23, 0x37, 0x99, 0xa1, 0x0e, 0x92, 0x34, 0x74, 0x8b, 0xef,
- 0x86, 0xe4, 0xbf, 0xbe, 0x8b, 0xa4, 0x7d, 0x98, 0x4f, 0xdd, 0x20, 0x51, 0xc3, 0x2a, 0x61, 0x58,
- 0x24, 0xbc, 0x2f, 0xff, 0xa3, 0xec, 0x62, 0x18, 0x25, 0xf4, 0x7d, 0x4d, 0xb7, 0x89, 0xba, 0xf8,
- 0x1b, 0x00, 0x00, 0xff, 0xff, 0x79, 0xe4, 0xce, 0x1a, 0xdb, 0x04, 0x00, 0x00,
+ // 606 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xc1, 0x6e, 0xd3, 0x40,
+ 0x10, 0x25, 0x6d, 0xda, 0xa6, 0x93, 0xa4, 0x4d, 0x97, 0xaa, 0x2c, 0x95, 0x2a, 0x15, 0x0b, 0x50,
+ 0x0f, 0xe0, 0x48, 0x85, 0x1b, 0x48, 0x55, 0xd3, 0x46, 0x22, 0x07, 0x54, 0xe1, 0xf6, 0xc4, 0xc5,
+ 0xda, 0xd8, 0x83, 0xbb, 0x92, 0x77, 0x1d, 0xbc, 0x1b, 0x4b, 0x39, 0x70, 0xe1, 0xab, 0xf8, 0x89,
+ 0xfe, 0x04, 0x27, 0xbe, 0xa0, 0x67, 0xe4, 0xb1, 0x9d, 0x38, 0xb2, 0x84, 0xb8, 0xed, 0x7b, 0x33,
+ 0xf3, 0x66, 0x76, 0xde, 0x6a, 0xe1, 0x45, 0x96, 0xc4, 0xf6, 0x5e, 0xf8, 0xb3, 0x34, 0xb1, 0x89,
+ 0x19, 0x26, 0x2a, 0x90, 0xbe, 0x88, 0x45, 0xaa, 0xfc, 0x70, 0xea, 0x12, 0xc9, 0xda, 0x39, 0x79,
+ 0xcc, 0xd7, 0x13, 0x15, 0x5a, 0x51, 0xc4, 0x9d, 0x31, 0xb0, 0xcb, 0xbc, 0xe2, 0xd2, 0xda, 0x54,
+ 0x4e, 0xe7, 0x16, 0xaf, 0x85, 0x15, 0xec, 0x39, 0xb4, 0xb5, 0x50, 0xc8, 0x5b, 0xa7, 0xad, 0xb3,
+ 0xdd, 0xd1, 0xd6, 0x9f, 0xc7, 0x87, 0x93, 0x96, 0x47, 0x14, 0x3b, 0x84, 0xad, 0x4c, 0xc4, 0x73,
+ 0xe4, 0x1b, 0x79, 0xcc, 0x2b, 0x80, 0xf3, 0xab, 0x05, 0x07, 0xa4, 0x33, 0xd1, 0xc6, 0x0a, 0x1d,
+ 0x14, 0x32, 0xaf, 0xa1, 0x2b, 0x4b, 0xec, 0xcb, 0x90, 0xd4, 0xfa, 0x95, 0x1a, 0x54, 0x91, 0x49,
+ 0xc8, 0x38, 0xec, 0x04, 0x29, 0x0a, 0x8b, 0x61, 0xa9, 0x5a, 0x41, 0x76, 0x0c, 0x1d, 0x95, 0x84,
+ 0xf2, 0x9b, 0xc4, 0x90, 0x6f, 0x52, 0x68, 0x89, 0xd9, 0x18, 0x40, 0x54, 0x53, 0x1b, 0xde, 0x3e,
+ 0xdd, 0x3c, 0xeb, 0x9e, 0x73, 0x37, 0xbf, 0xaf, 0xdb, 0xbc, 0xd2, 0xa8, 0xfb, 0xfb, 0xf1, 0xe1,
+ 0x64, 0xbb, 0xb8, 0x97, 0x57, 0x2b, 0x74, 0x7e, 0xc0, 0x1e, 0xa5, 0x5f, 0xc5, 0xc2, 0x18, 0x1a,
+ 0xfb, 0x14, 0x3a, 0x41, 0x0e, 0x1a, 0x33, 0xef, 0x10, 0x3d, 0x09, 0xd9, 0x04, 0x76, 0xab, 0xf1,
+ 0x0d, 0xdf, 0xa0, 0xce, 0xcf, 0x6a, 0x9d, 0xeb, 0x4b, 0x18, 0xb1, 0xbc, 0x71, 0x7f, 0x6d, 0x13,
+ 0xde, 0xaa, 0xda, 0xf9, 0x52, 0x1a, 0xf0, 0x59, 0x68, 0x11, 0x61, 0x38, 0xd6, 0x56, 0xda, 0xc5,
+ 0x7f, 0x8c, 0x50, 0x59, 0xb4, 0xd1, 0xb0, 0xc8, 0xf9, 0x08, 0x83, 0x42, 0x12, 0x8d, 0x11, 0x11,
+ 0xde, 0x2d, 0x66, 0xc8, 0xce, 0xa0, 0xa7, 0x0a, 0xe8, 0xdb, 0xc5, 0x0c, 0xd7, 0x45, 0xbb, 0x6a,
+ 0x95, 0xe9, 0xfc, 0xdc, 0x84, 0x7d, 0x2a, 0xbf, 0xc6, 0x4c, 0x96, 0x46, 0x3a, 0xb0, 0x1b, 0x12,
+ 0xaa, 0xe6, 0x59, 0x76, 0xec, 0x14, 0xfc, 0x3f, 0x4d, 0x74, 0xe1, 0x69, 0x2c, 0x8c, 0x2d, 0x9f,
+ 0xa6, 0xc1, 0xef, 0x73, 0xd4, 0x01, 0x92, 0x9f, 0x7d, 0xef, 0x20, 0x0f, 0x51, 0xbf, 0xdb, 0x32,
+ 0xc0, 0x5e, 0xc2, 0x1e, 0xe5, 0x9b, 0x85, 0x0e, 0x7c, 0x2b, 0x15, 0xf2, 0x36, 0x09, 0xf6, 0x72,
+ 0xf6, 0x76, 0xa1, 0x83, 0x3b, 0xa9, 0x30, 0xef, 0x97, 0x61, 0x6a, 0x64, 0xa2, 0xf9, 0x16, 0x29,
+ 0x55, 0x90, 0x5d, 0x40, 0xb1, 0x25, 0x34, 0x7c, 0x9b, 0xbc, 0x39, 0xac, 0x79, 0xb3, 0xb4, 0x79,
+ 0xb4, 0x9f, 0x1b, 0x03, 0xab, 0x45, 0x7b, 0x55, 0x15, 0xbb, 0x82, 0x81, 0x2a, 0xec, 0xf0, 0x31,
+ 0xf7, 0x43, 0xa2, 0xe1, 0x3b, 0x8d, 0xf7, 0xb5, 0xe6, 0x98, 0xb7, 0xaf, 0x6a, 0x50, 0xa2, 0x61,
+ 0x1f, 0xa0, 0x5f, 0xdf, 0xb8, 0xe1, 0x1d, 0x52, 0x38, 0xaa, 0x2b, 0xac, 0xd6, 0xee, 0xf5, 0x6a,
+ 0x1e, 0x18, 0xe7, 0x02, 0x8e, 0x28, 0xe3, 0x66, 0x86, 0xfa, 0x46, 0x05, 0x72, 0x9c, 0xa1, 0xb6,
+ 0x64, 0xcf, 0x2b, 0x38, 0x68, 0x90, 0x6c, 0x00, 0x3d, 0x63, 0x85, 0x45, 0x3f, 0xb8, 0x17, 0x3a,
+ 0xc2, 0xc1, 0x13, 0x27, 0x2e, 0x9f, 0xd5, 0x5a, 0x2e, 0x1b, 0x41, 0x7b, 0xe9, 0xfe, 0xde, 0xb9,
+ 0x5b, 0x1b, 0xa5, 0xa1, 0xe9, 0x36, 0x18, 0x8f, 0x6a, 0x19, 0x83, 0x76, 0x28, 0xac, 0x28, 0x4d,
+ 0xa6, 0xf3, 0xe8, 0x13, 0xf0, 0x24, 0x8d, 0xdc, 0x64, 0x86, 0x3a, 0x48, 0xd2, 0xd0, 0x2d, 0xbe,
+ 0x1b, 0x92, 0xff, 0xfa, 0x26, 0x92, 0xf6, 0x7e, 0x3e, 0x75, 0x83, 0x44, 0x0d, 0xab, 0x84, 0x61,
+ 0x91, 0xf0, 0xb6, 0xfc, 0x8f, 0xb2, 0xf7, 0xc3, 0x28, 0xa1, 0xef, 0x6b, 0xba, 0x4d, 0xd4, 0xbb,
+ 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x32, 0x98, 0x5c, 0x3a, 0xdb, 0x04, 0x00, 0x00,
}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/omci/omci_mib_db.pb.go b/vendor/github.com/opencord/voltha-protos/v4/go/omci/omci_mib_db.pb.go
similarity index 81%
rename from vendor/github.com/opencord/voltha-protos/v3/go/omci/omci_mib_db.pb.go
rename to vendor/github.com/opencord/voltha-protos/v4/go/omci/omci_mib_db.pb.go
index a3f23af..d644bf8 100644
--- a/vendor/github.com/opencord/voltha-protos/v3/go/omci/omci_mib_db.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v4/go/omci/omci_mib_db.pb.go
@@ -6,7 +6,7 @@
import (
fmt "fmt"
proto "github.com/golang/protobuf/proto"
- _ "github.com/opencord/voltha-protos/v3/go/common"
+ _ "github.com/opencord/voltha-protos/v4/go/common"
math "math"
)
@@ -475,42 +475,42 @@
var fileDescriptor_4fa402a2df36dcc1 = []byte{
// 598 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xcd, 0x6a, 0xdb, 0x4c,
- 0x14, 0xfd, 0xec, 0xd8, 0x89, 0x73, 0x6d, 0x25, 0xce, 0x7c, 0x6d, 0x99, 0x04, 0x42, 0x83, 0x28,
- 0x25, 0x8b, 0x56, 0xa6, 0x09, 0xb4, 0xab, 0x16, 0xea, 0x24, 0xb4, 0x81, 0x8a, 0x80, 0x1a, 0xba,
- 0xe8, 0x46, 0x8c, 0xa4, 0x5b, 0x65, 0xc0, 0x33, 0x32, 0x9a, 0x89, 0x40, 0xef, 0xd5, 0xd7, 0xc8,
- 0x4b, 0x74, 0x95, 0x27, 0xc8, 0xba, 0xcc, 0xe8, 0xc7, 0x72, 0x03, 0xa5, 0x3b, 0x9d, 0xfb, 0x73,
- 0xee, 0xbd, 0xe7, 0x88, 0x81, 0xe7, 0x45, 0xb6, 0xd0, 0x37, 0x2c, 0x5c, 0xe6, 0x99, 0xce, 0xd4,
- 0x2c, 0x13, 0x31, 0x0f, 0x05, 0x8f, 0xc2, 0x24, 0xf2, 0x6c, 0x88, 0x0c, 0x4c, 0xe8, 0x80, 0xae,
- 0x97, 0x09, 0xd4, 0xac, 0xca, 0xbb, 0x67, 0x30, 0xf5, 0x79, 0xf4, 0x51, 0xeb, 0x9c, 0x47, 0xb7,
- 0x1a, 0xcf, 0x99, 0x66, 0x64, 0x1f, 0x06, 0x92, 0x09, 0xa4, 0xbd, 0xa3, 0xde, 0xf1, 0xf6, 0x7c,
- 0x78, 0xff, 0x70, 0x77, 0xd8, 0x0b, 0x6c, 0x88, 0x3c, 0x81, 0x61, 0xc1, 0x16, 0xb7, 0x48, 0xfb,
- 0x26, 0x17, 0x54, 0xc0, 0xfd, 0xd9, 0x83, 0x5d, 0x9f, 0x47, 0x97, 0x52, 0x69, 0x26, 0xe3, 0x8a,
- 0xe4, 0x25, 0x8c, 0x79, 0x8d, 0x43, 0x9e, 0x58, 0x2e, 0xa7, 0xe1, 0x82, 0x26, 0x73, 0x99, 0x10,
- 0x0a, 0x5b, 0x71, 0x8e, 0x4c, 0x63, 0x52, 0x73, 0x36, 0x90, 0x1c, 0xc0, 0x48, 0x64, 0x09, 0xff,
- 0xc1, 0x31, 0xa1, 0x1b, 0x36, 0xd5, 0x62, 0x72, 0x06, 0xc0, 0x9a, 0x9d, 0x15, 0x1d, 0x1c, 0x6d,
- 0x1c, 0x8f, 0x4f, 0x9e, 0x79, 0xe6, 0x56, 0xef, 0xcf, 0x73, 0xe6, 0xe3, 0x5f, 0x0f, 0x77, 0x87,
- 0x9b, 0xd5, 0x4d, 0x41, 0xa7, 0xcd, 0x2d, 0x61, 0xe2, 0xf3, 0xe8, 0x6c, 0xc1, 0x94, 0xb2, 0x2b,
- 0x1f, 0xc1, 0x28, 0x36, 0xe0, 0xd1, 0xbe, 0x5b, 0x36, 0x7c, 0x99, 0x90, 0x4f, 0xb0, 0xdd, 0xac,
- 0xae, 0x68, 0xdf, 0x4e, 0x7d, 0xda, 0x4e, 0xed, 0x9e, 0x3f, 0x27, 0x66, 0xa8, 0xb3, 0xa6, 0x41,
- 0xb0, 0xea, 0x75, 0xbf, 0x80, 0xe3, 0x33, 0xc9, 0x52, 0x4c, 0x2e, 0xa4, 0xe6, 0xba, 0xfc, 0x87,
- 0xd9, 0x8d, 0x2b, 0xfd, 0x47, 0xae, 0xb8, 0xef, 0x60, 0xec, 0xa3, 0x52, 0x2c, 0xc5, 0xeb, 0x72,
- 0x89, 0xe4, 0x18, 0x26, 0xa2, 0x82, 0xa1, 0x2e, 0x97, 0xb8, 0xce, 0x37, 0x16, 0xab, 0x4a, 0xf7,
- 0xbe, 0x0f, 0x8e, 0xcf, 0xa3, 0x73, 0x2c, 0x78, 0x6d, 0x9b, 0x0b, 0xdb, 0x89, 0x45, 0xcd, 0x22,
- 0xed, 0xa8, 0x51, 0x15, 0xff, 0xab, 0x65, 0x2f, 0x60, 0x67, 0xc1, 0x94, 0x0e, 0x55, 0x29, 0xe3,
- 0x50, 0x73, 0x81, 0xb5, 0x71, 0x13, 0x13, 0xfd, 0x5a, 0xca, 0xf8, 0x9a, 0x0b, 0x24, 0x2e, 0x38,
- 0xf6, 0x1f, 0x65, 0x9a, 0xd9, 0x4a, 0x3a, 0x30, 0x0b, 0x06, 0x63, 0xc1, 0x23, 0xb3, 0x83, 0xa9,
- 0x33, 0x33, 0x0a, 0xcc, 0x15, 0xcf, 0x24, 0x1d, 0xda, 0x6c, 0x03, 0xc9, 0x7b, 0xa8, 0x24, 0x41,
- 0x45, 0x37, 0xad, 0x03, 0xa4, 0x75, 0xa0, 0xb5, 0x72, 0xbe, 0x6b, 0xe4, 0x87, 0x95, 0xa6, 0x41,
- 0xd3, 0x43, 0x3e, 0xc0, 0x54, 0x54, 0xca, 0x87, 0x68, 0xa4, 0xe7, 0xa8, 0xe8, 0x96, 0xe5, 0xf9,
- 0xbf, 0xe6, 0xe9, 0xfa, 0x12, 0xec, 0x8a, 0x0e, 0xe4, 0xa8, 0xc8, 0x5b, 0x70, 0xba, 0xe2, 0x2a,
- 0x3a, 0xb2, 0xcd, 0x7b, 0x75, 0xf3, 0x4a, 0xdc, 0x60, 0xd2, 0x51, 0x5a, 0xb9, 0x1e, 0xec, 0x5d,
- 0x2d, 0x51, 0x5e, 0x89, 0x98, 0x5f, 0x14, 0x28, 0xb5, 0xd5, 0x7f, 0x1f, 0x86, 0x36, 0x4b, 0xa6,
- 0x30, 0x51, 0x9a, 0x69, 0x0c, 0xe3, 0x1b, 0x26, 0x53, 0x9c, 0xfe, 0xe7, 0x7e, 0x03, 0x67, 0xad,
- 0x9e, 0xbc, 0x81, 0x41, 0xeb, 0xe6, 0xce, 0xc9, 0x61, 0x35, 0xef, 0x11, 0xa5, 0x67, 0xf9, 0x02,
- 0x5b, 0x4a, 0x08, 0x0c, 0x8c, 0xc8, 0xb5, 0x4b, 0xf6, 0x7b, 0xfe, 0x19, 0x68, 0x96, 0xa7, 0x5e,
- 0xb6, 0x44, 0x19, 0x67, 0x79, 0xe2, 0x55, 0x2f, 0x83, 0x65, 0xfb, 0xfe, 0x2a, 0xe5, 0xfa, 0xe6,
- 0x36, 0xf2, 0xe2, 0x4c, 0xcc, 0x9a, 0x82, 0x59, 0x55, 0xf0, 0xba, 0x7e, 0x3a, 0x8a, 0xd3, 0x59,
- 0x9a, 0xd9, 0x77, 0x26, 0xda, 0xb4, 0xa1, 0xd3, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x26, 0xab,
- 0x52, 0x5b, 0x84, 0x04, 0x00, 0x00,
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0xdf, 0x6a, 0xd4, 0x4e,
+ 0x14, 0xfe, 0xed, 0x76, 0xb7, 0xdd, 0x9e, 0xdd, 0xb4, 0xdb, 0xf9, 0xa9, 0x4c, 0x0b, 0xc5, 0x12,
+ 0x44, 0x7a, 0xa1, 0x59, 0xac, 0xa2, 0x57, 0x0a, 0x6e, 0x5b, 0xb4, 0x60, 0x28, 0xc4, 0xe2, 0x85,
+ 0x37, 0x61, 0x92, 0x1c, 0xd3, 0x81, 0x9d, 0xc9, 0x92, 0x99, 0x06, 0xf2, 0x5e, 0xbe, 0x46, 0x5f,
+ 0xc2, 0xab, 0x3e, 0x41, 0xaf, 0x65, 0x26, 0x7f, 0x36, 0x6b, 0x41, 0xbc, 0xcb, 0x77, 0xfe, 0x7c,
+ 0xe7, 0x9c, 0xef, 0x0b, 0x03, 0x4f, 0x8b, 0x6c, 0xa1, 0xaf, 0x59, 0xb8, 0xcc, 0x33, 0x9d, 0xa9,
+ 0x59, 0x26, 0x62, 0x1e, 0x0a, 0x1e, 0x85, 0x49, 0xe4, 0xd9, 0x10, 0x19, 0x98, 0xd0, 0x01, 0x5d,
+ 0x2f, 0x13, 0xa8, 0x59, 0x95, 0x77, 0x4f, 0x61, 0xea, 0xf3, 0xe8, 0xa3, 0xd6, 0x39, 0x8f, 0x6e,
+ 0x34, 0x9e, 0x31, 0xcd, 0xc8, 0x3e, 0x0c, 0x24, 0x13, 0x48, 0x7b, 0x47, 0xbd, 0xe3, 0xed, 0xf9,
+ 0xf0, 0xee, 0xfe, 0xf6, 0xb0, 0x17, 0xd8, 0x10, 0x79, 0x04, 0xc3, 0x82, 0x2d, 0x6e, 0x90, 0xf6,
+ 0x4d, 0x2e, 0xa8, 0x80, 0xfb, 0xb3, 0x07, 0xbb, 0x3e, 0x8f, 0x2e, 0xa4, 0xd2, 0x4c, 0xc6, 0x15,
+ 0xc9, 0x73, 0x18, 0xf3, 0x1a, 0x87, 0x3c, 0xb1, 0x5c, 0x4e, 0xc3, 0x05, 0x4d, 0xe6, 0x22, 0x21,
+ 0x14, 0xb6, 0xe2, 0x1c, 0x99, 0xc6, 0xa4, 0xe6, 0x6c, 0x20, 0x39, 0x80, 0x91, 0xc8, 0x12, 0xfe,
+ 0x83, 0x63, 0x42, 0x37, 0x6c, 0xaa, 0xc5, 0xe4, 0x14, 0x80, 0x35, 0x3b, 0x2b, 0x3a, 0x38, 0xda,
+ 0x38, 0x1e, 0x9f, 0x3c, 0xf1, 0xcc, 0xad, 0xde, 0x9f, 0xe7, 0xcc, 0xc7, 0xbf, 0xee, 0x6f, 0x0f,
+ 0x37, 0xab, 0x9b, 0x82, 0x4e, 0x9b, 0x5b, 0xc2, 0xc4, 0xe7, 0xd1, 0xe9, 0x82, 0x29, 0x65, 0x57,
+ 0x3e, 0x82, 0x51, 0x6c, 0xc0, 0x83, 0x7d, 0xb7, 0x6c, 0xf8, 0x22, 0x21, 0x9f, 0x60, 0xbb, 0x59,
+ 0x5d, 0xd1, 0xbe, 0x9d, 0xfa, 0xb8, 0x9d, 0xda, 0x3d, 0x7f, 0x4e, 0xcc, 0x50, 0x67, 0x4d, 0x83,
+ 0x60, 0xd5, 0xeb, 0x7e, 0x01, 0xc7, 0x67, 0x92, 0xa5, 0x98, 0x9c, 0x4b, 0xcd, 0x75, 0xf9, 0x0f,
+ 0xb3, 0x1b, 0x57, 0xfa, 0x0f, 0x5c, 0x71, 0xdf, 0xc1, 0xd8, 0x47, 0xa5, 0x58, 0x8a, 0x57, 0xe5,
+ 0x12, 0xc9, 0x31, 0x4c, 0x44, 0x05, 0x43, 0x5d, 0x2e, 0x71, 0x9d, 0x6f, 0x2c, 0x56, 0x95, 0xee,
+ 0x5d, 0x1f, 0x1c, 0x9f, 0x47, 0x67, 0x58, 0xf0, 0xda, 0x36, 0x17, 0xb6, 0x13, 0x8b, 0x9a, 0x45,
+ 0xda, 0x51, 0xa3, 0x2a, 0xfe, 0x57, 0xcb, 0x9e, 0xc1, 0xce, 0x82, 0x29, 0x1d, 0xaa, 0x52, 0xc6,
+ 0xa1, 0xe6, 0x02, 0x6b, 0xe3, 0x26, 0x26, 0xfa, 0xb5, 0x94, 0xf1, 0x15, 0x17, 0x48, 0x5c, 0x70,
+ 0xec, 0x3f, 0xca, 0x34, 0xb3, 0x95, 0x74, 0x60, 0x16, 0x0c, 0xc6, 0x82, 0x47, 0x66, 0x07, 0x53,
+ 0x67, 0x66, 0x14, 0x98, 0x2b, 0x9e, 0x49, 0x3a, 0xb4, 0xd9, 0x06, 0x92, 0xf7, 0x50, 0x49, 0x82,
+ 0x8a, 0x6e, 0x5a, 0x07, 0x48, 0xeb, 0x40, 0x6b, 0xe5, 0x7c, 0xd7, 0xc8, 0x0f, 0x2b, 0x4d, 0x83,
+ 0xa6, 0x87, 0x7c, 0x80, 0xa9, 0xa8, 0x94, 0x0f, 0xd1, 0x48, 0xcf, 0x51, 0xd1, 0x2d, 0xcb, 0xf3,
+ 0x7f, 0xcd, 0xd3, 0xf5, 0x25, 0xd8, 0x15, 0x1d, 0xc8, 0x51, 0x91, 0xb7, 0xe0, 0x74, 0xc5, 0x55,
+ 0x74, 0x64, 0x9b, 0xf7, 0xea, 0xe6, 0x95, 0xb8, 0xc1, 0xa4, 0xa3, 0xb4, 0x72, 0x3d, 0xd8, 0xbb,
+ 0x5c, 0xa2, 0xbc, 0x14, 0x31, 0x3f, 0x2f, 0x50, 0x6a, 0xab, 0xff, 0x3e, 0x0c, 0x6d, 0x96, 0x4c,
+ 0x61, 0xa2, 0x34, 0xd3, 0x18, 0xc6, 0xd7, 0x4c, 0xa6, 0x38, 0xfd, 0xcf, 0xfd, 0x06, 0xce, 0x5a,
+ 0x3d, 0x79, 0x05, 0x83, 0xd6, 0xcd, 0x9d, 0x93, 0xc3, 0x6a, 0xde, 0x03, 0x4a, 0xcf, 0xf2, 0x05,
+ 0xb6, 0x94, 0x10, 0x18, 0x18, 0x91, 0x6b, 0x97, 0xec, 0xf7, 0xfc, 0x33, 0xd0, 0x2c, 0x4f, 0xbd,
+ 0x6c, 0x89, 0x32, 0xce, 0xf2, 0xc4, 0xab, 0x5e, 0x06, 0xcb, 0xf6, 0xfd, 0x45, 0xca, 0xf5, 0xf5,
+ 0x4d, 0xe4, 0xc5, 0x99, 0x98, 0x35, 0x05, 0xb3, 0xaa, 0xe0, 0x65, 0xfd, 0x74, 0x14, 0x6f, 0x66,
+ 0x69, 0x66, 0xdf, 0x99, 0x68, 0xd3, 0x86, 0x5e, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x6d, 0xd7,
+ 0xc0, 0x7b, 0x84, 0x04, 0x00, 0x00,
}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/openflow_13/openflow_13.pb.go b/vendor/github.com/opencord/voltha-protos/v4/go/openflow_13/openflow_13.pb.go
similarity index 86%
rename from vendor/github.com/opencord/voltha-protos/v3/go/openflow_13/openflow_13.pb.go
rename to vendor/github.com/opencord/voltha-protos/v4/go/openflow_13/openflow_13.pb.go
index e3c00f3..208d3b7 100644
--- a/vendor/github.com/opencord/voltha-protos/v3/go/openflow_13/openflow_13.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v4/go/openflow_13/openflow_13.pb.go
@@ -9283,143 +9283,143 @@
func init() { proto.RegisterFile("voltha_protos/openflow_13.proto", fileDescriptor_08e3a4e375aeddc7) }
var fileDescriptor_08e3a4e375aeddc7 = []byte{
- // 8423 bytes of a gzipped FileDescriptorProto
+ // 8424 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x7d, 0x5b, 0x8c, 0x1b, 0x59,
0x76, 0x98, 0xf8, 0xe8, 0x6e, 0xf2, 0xb2, 0xbb, 0x55, 0x2a, 0xbd, 0x28, 0xb5, 0x34, 0x92, 0x38,
- 0x33, 0xbb, 0xb3, 0xdc, 0x78, 0x34, 0x7a, 0xac, 0x76, 0xbd, 0x0f, 0x47, 0x45, 0xb2, 0xd8, 0xe4,
- 0x88, 0x2f, 0x55, 0x55, 0xb7, 0xa4, 0x0d, 0x92, 0x02, 0x9b, 0x2c, 0x75, 0xd3, 0x43, 0xb2, 0xb8,
- 0x55, 0xd5, 0xad, 0x96, 0x63, 0x07, 0x4a, 0x8c, 0x20, 0x40, 0x12, 0xdb, 0x09, 0xfc, 0xb1, 0x40,
- 0xe0, 0x00, 0x31, 0x92, 0x7c, 0x04, 0x01, 0xf2, 0x11, 0x20, 0x40, 0x80, 0x7c, 0x1b, 0x48, 0x80,
- 0x20, 0x01, 0x0c, 0x04, 0xfe, 0xb1, 0xff, 0x9c, 0x9f, 0x00, 0xfe, 0x4f, 0x36, 0x9b, 0x55, 0x70,
- 0xee, 0x39, 0xf7, 0xd6, 0x2d, 0x3e, 0x7a, 0x7a, 0x37, 0xb3, 0xf9, 0xf0, 0x97, 0x58, 0xe7, 0x75,
- 0xcf, 0x3d, 0xf7, 0x9c, 0x73, 0xcf, 0x3d, 0x75, 0xab, 0xc5, 0xee, 0x9c, 0xf8, 0xe3, 0xe8, 0xa8,
- 0xef, 0xce, 0x02, 0x3f, 0xf2, 0xc3, 0xfb, 0xfe, 0xcc, 0x9b, 0xbe, 0x1e, 0xfb, 0x6f, 0xdc, 0x07,
- 0x8f, 0x3e, 0xe5, 0x20, 0xbd, 0xa0, 0x80, 0x6e, 0xde, 0x3a, 0xf4, 0xfd, 0xc3, 0xb1, 0x77, 0xbf,
- 0x3f, 0x1b, 0xdd, 0xef, 0x4f, 0xa7, 0x7e, 0xd4, 0x8f, 0x46, 0xfe, 0x34, 0x44, 0xd2, 0xd2, 0x80,
- 0x31, 0xff, 0xf5, 0xcc, 0x3d, 0xf2, 0xfa, 0x43, 0x2f, 0xd0, 0x8b, 0x6c, 0xe3, 0xc4, 0x0b, 0xc2,
- 0x91, 0x3f, 0x2d, 0xa6, 0xee, 0xa6, 0x3e, 0xd9, 0xb2, 0xc4, 0xa3, 0xfe, 0x0d, 0x96, 0x8d, 0xde,
- 0xce, 0xbc, 0x62, 0xfa, 0x6e, 0xea, 0x93, 0xed, 0x87, 0x57, 0x3f, 0x55, 0x07, 0x05, 0x01, 0x80,
- 0xb4, 0x38, 0x89, 0xae, 0xb1, 0xcc, 0xe9, 0x68, 0x58, 0xcc, 0x70, 0x01, 0xf0, 0xb3, 0xf4, 0xaf,
- 0x53, 0xec, 0x2a, 0x8e, 0x32, 0x1e, 0xfb, 0xae, 0x37, 0xf6, 0x26, 0x62, 0xc0, 0xc7, 0x24, 0x36,
- 0xc5, 0xc5, 0xde, 0x5d, 0x10, 0xab, 0x70, 0x28, 0x23, 0x3c, 0x67, 0x5b, 0xa4, 0xd7, 0xc1, 0x28,
- 0x9a, 0xf4, 0x67, 0x5c, 0xab, 0xc2, 0xc3, 0x6f, 0x9c, 0xc5, 0x9e, 0x60, 0x68, 0x5c, 0xb0, 0x92,
- 0x12, 0x2a, 0x79, 0xb6, 0x01, 0x64, 0xde, 0x34, 0x2a, 0x7d, 0x87, 0xdd, 0x3a, 0x8b, 0x17, 0x8c,
- 0x84, 0xbf, 0xc2, 0x62, 0xfa, 0x6e, 0x06, 0x8c, 0x44, 0x8f, 0xa5, 0x67, 0x2c, 0x2f, 0x39, 0xf5,
- 0x5f, 0x63, 0x39, 0x92, 0x18, 0x16, 0x53, 0x77, 0x33, 0x9f, 0x14, 0x1e, 0x96, 0xce, 0xd2, 0x0f,
- 0x0d, 0x62, 0x49, 0x9e, 0x52, 0x9b, 0x5d, 0x02, 0x92, 0xf0, 0xcd, 0x28, 0x1a, 0x1c, 0xb9, 0x03,
- 0x7f, 0xfa, 0x7a, 0x74, 0xa8, 0x5f, 0x61, 0x6b, 0xaf, 0xc7, 0xfd, 0xc3, 0x90, 0x96, 0x07, 0x1f,
- 0xf4, 0x12, 0xdb, 0x9a, 0x8c, 0xc2, 0xd0, 0x0d, 0xbd, 0xe9, 0xd0, 0x1d, 0x7b, 0x53, 0x6e, 0x8f,
- 0x2d, 0xab, 0x00, 0x40, 0xdb, 0x9b, 0x0e, 0x5b, 0xde, 0xb4, 0x54, 0x61, 0x5b, 0x7c, 0x9d, 0xfa,
- 0x07, 0x63, 0xcf, 0x9d, 0xf8, 0x43, 0xfd, 0x06, 0xcb, 0xe1, 0xc3, 0x68, 0x28, 0x16, 0x9b, 0x3f,
- 0x37, 0x87, 0xfa, 0x35, 0xb6, 0x8e, 0xe3, 0x91, 0x20, 0x7a, 0x2a, 0xfd, 0xb3, 0x34, 0xcb, 0x81,
- 0x90, 0x99, 0x1f, 0x44, 0xfa, 0x75, 0xb6, 0x01, 0xff, 0xba, 0x53, 0x9f, 0xd8, 0xd7, 0xe1, 0xb1,
- 0xe3, 0x03, 0xe2, 0xe8, 0x8d, 0xdb, 0x1f, 0x0e, 0x03, 0xb2, 0xcf, 0xfa, 0xd1, 0x1b, 0x63, 0x38,
- 0x0c, 0x74, 0x9d, 0x65, 0xa7, 0xfd, 0x89, 0xc7, 0x3d, 0x23, 0x6f, 0xf1, 0xdf, 0xca, 0x50, 0x59,
- 0x75, 0x28, 0x98, 0x68, 0x18, 0xf5, 0x23, 0xaf, 0xb8, 0x86, 0x13, 0xe5, 0x0f, 0x20, 0x61, 0x70,
- 0x1c, 0x04, 0xc5, 0x75, 0x0e, 0xe4, 0xbf, 0xf5, 0x0f, 0x18, 0xeb, 0x0f, 0x4f, 0xbc, 0x20, 0x1a,
- 0x85, 0xde, 0xb0, 0xb8, 0xc1, 0x31, 0x0a, 0x44, 0xbf, 0xc5, 0xf2, 0xe1, 0xf1, 0x0c, 0x74, 0xf3,
- 0x86, 0xc5, 0x1c, 0x47, 0xc7, 0x00, 0x90, 0x38, 0xf3, 0xbc, 0xa0, 0x98, 0x47, 0x89, 0xf0, 0x5b,
- 0xbf, 0xcd, 0x18, 0x48, 0x76, 0xc3, 0x99, 0xe7, 0x0d, 0x8b, 0x0c, 0x59, 0x00, 0x62, 0x03, 0x40,
- 0xdf, 0x61, 0xf9, 0x49, 0xff, 0x94, 0xb0, 0x05, 0x8e, 0xcd, 0x4d, 0xfa, 0xa7, 0x1c, 0x59, 0xfa,
- 0x77, 0x29, 0x76, 0x59, 0x59, 0xb6, 0xd7, 0x5e, 0x3f, 0x3a, 0x0e, 0xbc, 0x50, 0xbf, 0xc3, 0x0a,
- 0xc3, 0x7e, 0xd4, 0x9f, 0xf5, 0xa3, 0x23, 0x61, 0xf0, 0xac, 0xc5, 0x04, 0xa8, 0xc9, 0xa5, 0x4e,
- 0xdd, 0x83, 0xe3, 0xd7, 0xaf, 0xbd, 0x20, 0x24, 0xb3, 0xe7, 0xa6, 0x15, 0x7c, 0x86, 0xb5, 0x9a,
- 0xe2, 0xd2, 0x85, 0x14, 0x57, 0x1b, 0x53, 0x87, 0x3f, 0xea, 0xf7, 0xd8, 0x66, 0xff, 0xf8, 0x74,
- 0x34, 0x1e, 0xf5, 0x83, 0xb7, 0x20, 0x19, 0xcd, 0x58, 0x90, 0xb0, 0xe6, 0x50, 0x2f, 0xb1, 0xcd,
- 0x41, 0x7f, 0xd6, 0x3f, 0x18, 0x8d, 0x47, 0xd1, 0xc8, 0x0b, 0xc9, 0xa4, 0x09, 0x58, 0x29, 0x60,
- 0x17, 0xc5, 0xca, 0xba, 0x60, 0xeb, 0xe3, 0x50, 0x7f, 0xcc, 0xd6, 0x03, 0xaf, 0x1f, 0x52, 0x2e,
- 0xd8, 0x7e, 0x78, 0x6b, 0xc1, 0x7d, 0x39, 0x35, 0xd2, 0x58, 0x44, 0x0b, 0x89, 0x62, 0xe8, 0x85,
- 0x03, 0x0a, 0xc9, 0xab, 0x4b, 0x79, 0x2c, 0x4e, 0x52, 0xfa, 0xfb, 0x29, 0xb6, 0x29, 0xc5, 0x80,
- 0x4b, 0xfe, 0xfc, 0x2e, 0x15, 0xbb, 0x4f, 0x26, 0xe1, 0x3e, 0x3a, 0xcb, 0x4e, 0xfa, 0xe1, 0x17,
- 0x64, 0x0d, 0xfe, 0x1b, 0x1c, 0x41, 0xba, 0x05, 0xd9, 0x20, 0x06, 0x94, 0xde, 0x60, 0xec, 0x4e,
- 0xfa, 0xd1, 0xe0, 0x48, 0xbf, 0x9f, 0x48, 0x4b, 0x3b, 0x0b, 0x93, 0xe0, 0x54, 0x6a, 0x46, 0xfa,
- 0x55, 0xc6, 0xfc, 0xd3, 0x89, 0xfb, 0x7a, 0xe4, 0x8d, 0x87, 0x98, 0x16, 0x0a, 0x0f, 0x6f, 0x2e,
- 0xb0, 0x49, 0x12, 0x2b, 0xef, 0x9f, 0x4e, 0xea, 0x9c, 0xb8, 0xf4, 0x3f, 0x52, 0x18, 0x99, 0x12,
- 0xa9, 0x7f, 0x9b, 0x01, 0xda, 0x1d, 0x8c, 0xfb, 0x61, 0x48, 0x2a, 0x2c, 0x97, 0xc5, 0x29, 0xac,
- 0x9c, 0x7f, 0x3a, 0xa9, 0xc2, 0x2f, 0xfd, 0x07, 0x30, 0x87, 0x03, 0x94, 0xc2, 0xa7, 0x5e, 0x78,
- 0xf8, 0xc1, 0x52, 0x46, 0x49, 0xd5, 0xb8, 0x60, 0xe5, 0xfc, 0xd7, 0x07, 0x5c, 0x15, 0xfd, 0x25,
- 0xd3, 0xbd, 0xd3, 0x99, 0x17, 0x8c, 0x20, 0x01, 0x79, 0x01, 0xc9, 0x59, 0xe3, 0x72, 0xbe, 0xbe,
- 0x54, 0xce, 0x22, 0x79, 0xe3, 0x82, 0x75, 0x49, 0x85, 0x72, 0xc9, 0x95, 0x0d, 0xb6, 0xc6, 0xb1,
- 0xa5, 0x3f, 0xd9, 0xc6, 0xac, 0x96, 0x50, 0xe2, 0xec, 0x5d, 0x40, 0xa5, 0xe4, 0x26, 0x0f, 0xc9,
- 0xe6, 0x37, 0x58, 0xee, 0xa8, 0x1f, 0xba, 0x7c, 0x9d, 0xc1, 0xdb, 0x72, 0xd6, 0xc6, 0x51, 0x3f,
- 0x6c, 0xc3, 0x52, 0x5f, 0x61, 0x59, 0xf0, 0x1c, 0x74, 0x8a, 0xc6, 0x05, 0x8b, 0x3f, 0xe9, 0x1f,
- 0xb3, 0xad, 0xd9, 0xd1, 0xdb, 0x70, 0x34, 0xe8, 0x8f, 0xb9, 0xcf, 0xa1, 0x77, 0x34, 0x2e, 0x58,
- 0x9b, 0x02, 0xdc, 0x03, 0xb2, 0xaf, 0xb3, 0x6d, 0xca, 0x92, 0x5e, 0xd4, 0x87, 0x08, 0xe5, 0x26,
- 0xc8, 0xc2, 0x9e, 0xc1, 0xe1, 0x6d, 0x02, 0xeb, 0x37, 0xd8, 0x86, 0x17, 0x1d, 0xb9, 0xc3, 0x30,
- 0xe2, 0x09, 0x69, 0xb3, 0x71, 0xc1, 0x5a, 0xf7, 0xa2, 0xa3, 0x5a, 0x18, 0x09, 0x54, 0x18, 0x0c,
- 0x78, 0x46, 0x12, 0x28, 0x3b, 0x18, 0xe8, 0x3b, 0x2c, 0x07, 0x28, 0x3e, 0xe1, 0x1c, 0x29, 0x00,
- 0xc4, 0x0e, 0xcc, 0x69, 0x87, 0xe5, 0x4e, 0xc6, 0xfd, 0xa9, 0x7b, 0x32, 0x1a, 0x62, 0x4a, 0x02,
- 0x24, 0x40, 0xf6, 0x47, 0x43, 0x89, 0x9c, 0x0d, 0x66, 0x98, 0x95, 0x04, 0xb2, 0x37, 0x98, 0xc1,
- 0x88, 0xa3, 0x99, 0x3b, 0x0c, 0x07, 0x33, 0xcc, 0x49, 0x30, 0xe2, 0x68, 0x56, 0x0b, 0x07, 0x33,
- 0xfd, 0x3a, 0x5b, 0x1f, 0xcd, 0x5c, 0x6f, 0x30, 0x2d, 0x6e, 0x12, 0x66, 0x6d, 0x34, 0x33, 0x07,
- 0x53, 0x10, 0x38, 0x9a, 0x61, 0x19, 0x51, 0xdc, 0x12, 0x02, 0x47, 0xb3, 0x1e, 0x2f, 0x22, 0x38,
- 0xf2, 0xe4, 0x31, 0x9f, 0xc3, 0x76, 0x8c, 0x3c, 0x79, 0x4c, 0x93, 0xe0, 0x48, 0x98, 0xfb, 0x45,
- 0x15, 0x49, 0x93, 0x8f, 0x06, 0x33, 0xce, 0xa8, 0x09, 0x55, 0xa2, 0xc1, 0x0c, 0xf8, 0x08, 0x05,
- 0x6c, 0x97, 0x14, 0x14, 0x71, 0x1d, 0x0f, 0x91, 0x4b, 0x17, 0xa8, 0xe3, 0xa1, 0xe0, 0x02, 0x14,
- 0x70, 0x5d, 0x56, 0x50, 0xc0, 0xb5, 0xc3, 0x72, 0xe1, 0x20, 0x42, 0xb6, 0x2b, 0x42, 0x11, 0x80,
- 0x90, 0x96, 0x1c, 0x09, 0x8c, 0x57, 0x55, 0x24, 0x70, 0xde, 0x63, 0x85, 0xd1, 0x60, 0x02, 0x93,
- 0xe0, 0x4b, 0x71, 0x8d, 0xf0, 0x0c, 0x81, 0x7c, 0x35, 0x62, 0x92, 0x81, 0x3f, 0xf4, 0x8a, 0xd7,
- 0x93, 0x24, 0x55, 0x7f, 0xe8, 0x81, 0x6d, 0xfb, 0xc1, 0xcc, 0xf5, 0x67, 0xc5, 0xa2, 0xb0, 0x6d,
- 0x3f, 0x98, 0x75, 0xf9, 0x7a, 0x00, 0x22, 0x9c, 0xf5, 0x8b, 0x37, 0x84, 0xce, 0xfd, 0x60, 0x66,
- 0xcf, 0xfa, 0x02, 0x15, 0xcd, 0xfa, 0xc5, 0x9b, 0x0a, 0xca, 0x89, 0x51, 0xe1, 0x51, 0xbf, 0xb8,
- 0x23, 0xfc, 0x06, 0xb8, 0x8e, 0x62, 0xae, 0xa3, 0x7e, 0xf1, 0x96, 0x82, 0x72, 0x8e, 0xfa, 0xb4,
- 0x1a, 0x4f, 0xb8, 0x11, 0x6e, 0x13, 0x0e, 0x56, 0xe3, 0x49, 0xbc, 0x54, 0x4f, 0xb8, 0x11, 0x3e,
- 0x50, 0x91, 0xc2, 0x08, 0x80, 0x7c, 0x3d, 0xee, 0x1f, 0x78, 0xe3, 0xe2, 0x1d, 0x39, 0xc3, 0xd9,
- 0xc9, 0x93, 0x3a, 0x87, 0x49, 0x23, 0x3c, 0x41, 0x3b, 0xdd, 0x4d, 0x18, 0xe1, 0x49, 0xc2, 0x4e,
- 0x4f, 0xd0, 0x4e, 0xf7, 0x92, 0x24, 0xdc, 0x4e, 0x5f, 0x63, 0xdb, 0x7c, 0xa0, 0xe9, 0xd0, 0x8d,
- 0xfa, 0xc1, 0xa1, 0x17, 0x15, 0x4b, 0xa4, 0xcb, 0x26, 0xc0, 0x3b, 0x43, 0x87, 0x43, 0xf5, 0xbb,
- 0xa4, 0xd0, 0x74, 0xe8, 0x86, 0xe1, 0xb8, 0xf8, 0x21, 0x11, 0xe5, 0x91, 0xc8, 0x0e, 0xc7, 0x2a,
- 0x45, 0x34, 0x1e, 0x17, 0x3f, 0x4a, 0x52, 0x38, 0xe3, 0xb1, 0x7e, 0x87, 0xb1, 0xc9, 0x6c, 0x1c,
- 0xba, 0x38, 0xa7, 0x8f, 0x49, 0x9b, 0x3c, 0xc0, 0x5a, 0x7c, 0x4a, 0x37, 0xd8, 0x06, 0x27, 0x88,
- 0x06, 0xc5, 0xaf, 0x89, 0x05, 0x00, 0x80, 0xc3, 0xad, 0xc5, 0x51, 0x07, 0x7e, 0x58, 0xfc, 0xba,
- 0x70, 0x19, 0x80, 0x54, 0xfc, 0x10, 0x90, 0xb3, 0x83, 0x03, 0x77, 0x14, 0x8e, 0x86, 0xc5, 0x4f,
- 0x04, 0x72, 0x76, 0x70, 0xd0, 0x0c, 0x47, 0x43, 0xfd, 0x36, 0xcb, 0x47, 0xc7, 0xd3, 0xa9, 0x37,
- 0x86, 0x5d, 0xf8, 0x1b, 0x94, 0x31, 0x72, 0x08, 0x6a, 0x0e, 0xa5, 0xa5, 0xbd, 0xd3, 0xe8, 0x68,
- 0x18, 0x14, 0xcb, 0xaa, 0xa5, 0x4d, 0x0e, 0xd3, 0x3f, 0x63, 0x97, 0x93, 0x89, 0x07, 0x73, 0xdb,
- 0x88, 0xcb, 0x4a, 0x59, 0x97, 0x12, 0xd9, 0x87, 0xe7, 0xb9, 0x12, 0xdb, 0xa4, 0x0c, 0x84, 0xa4,
- 0xbf, 0xce, 0x8d, 0x91, 0xb2, 0x18, 0xa6, 0x21, 0x95, 0x26, 0x0c, 0x06, 0x48, 0xf3, 0x85, 0x42,
- 0x63, 0x07, 0x03, 0x4e, 0xf3, 0x11, 0xdb, 0x12, 0x69, 0x07, 0x89, 0x26, 0x5c, 0xbd, 0x94, 0x55,
- 0xa0, 0xdc, 0x23, 0xa8, 0x44, 0x46, 0x40, 0xaa, 0x40, 0x50, 0x51, 0x5a, 0x48, 0x50, 0x49, 0xa5,
- 0x42, 0x95, 0x4a, 0xd1, 0x8a, 0xc2, 0x03, 0x89, 0x7e, 0x8b, 0x88, 0x18, 0xc6, 0x88, 0x4a, 0x13,
- 0x09, 0x9a, 0xbf, 0xa5, 0xd0, 0x38, 0x44, 0xf3, 0x31, 0x1f, 0xed, 0x49, 0xac, 0xd3, 0xdf, 0x4e,
- 0xd1, 0xfc, 0x0a, 0x14, 0x00, 0x09, 0x32, 0xa9, 0xd4, 0xdf, 0x49, 0x90, 0x09, 0xad, 0xbe, 0xc9,
- 0x34, 0x25, 0x1c, 0x90, 0xf2, 0xb7, 0x53, 0x34, 0xec, 0x76, 0x1c, 0x14, 0x42, 0xa6, 0xf0, 0x06,
- 0xa4, 0xfc, 0x87, 0x82, 0xb2, 0x40, 0x3e, 0xc1, 0xc9, 0x60, 0x3b, 0x11, 0x7e, 0x81, 0x74, 0xbf,
- 0x93, 0xa2, 0x15, 0xdd, 0x14, 0xde, 0x91, 0x18, 0x1c, 0x3d, 0x04, 0x49, 0x7f, 0x37, 0x31, 0x38,
- 0xfa, 0x09, 0x10, 0xc3, 0x8e, 0x7a, 0xd2, 0x1f, 0x1f, 0x7b, 0x95, 0x75, 0xac, 0x74, 0x4a, 0x2e,
- 0xbb, 0xb9, 0x7a, 0x57, 0x86, 0x92, 0x16, 0x30, 0x78, 0xc8, 0xa0, 0xe2, 0x0a, 0x8a, 0x8c, 0x06,
- 0x1e, 0xc3, 0xc0, 0x47, 0x14, 0x26, 0xaa, 0x3f, 0x13, 0xb0, 0xd2, 0xbf, 0xcd, 0xe2, 0x51, 0xb1,
- 0x3f, 0x80, 0xf3, 0xa3, 0xfe, 0x59, 0x62, 0xcf, 0x5e, 0xac, 0x0d, 0x91, 0x4c, 0xad, 0x91, 0xbe,
- 0xc3, 0xd6, 0xfd, 0xe3, 0x68, 0x76, 0x1c, 0x51, 0x6d, 0xf8, 0xc1, 0x2a, 0x1e, 0xa4, 0x82, 0xa0,
- 0xc4, 0x5f, 0xfa, 0x0f, 0x28, 0x28, 0xa3, 0x68, 0xcc, 0xb7, 0xf4, 0xc2, 0x92, 0x93, 0x22, 0xf1,
- 0x0a, 0x3a, 0x11, 0xb6, 0x4e, 0x34, 0xd6, 0x1f, 0xb2, 0xec, 0xec, 0x38, 0x3c, 0xa2, 0x8a, 0x68,
- 0xa5, 0xaa, 0x40, 0xc3, 0x6b, 0x85, 0xe3, 0xf0, 0x08, 0x86, 0x9c, 0xf9, 0x33, 0x2e, 0x8e, 0x2a,
- 0xa0, 0x95, 0x43, 0x0a, 0x3a, 0x9e, 0x0c, 0xfc, 0x59, 0x7b, 0x36, 0x0e, 0xf5, 0x6f, 0xb1, 0xb5,
- 0xc3, 0xc0, 0x3f, 0x9e, 0xf1, 0xc2, 0xa0, 0xf0, 0xf0, 0xf6, 0x2a, 0x5e, 0x4e, 0x04, 0x9b, 0x06,
- 0xff, 0xa1, 0x7f, 0x9b, 0xad, 0x4f, 0xdf, 0xf0, 0x69, 0x6e, 0x9c, 0x6d, 0x22, 0xa4, 0x02, 0xc6,
- 0xe9, 0x1b, 0x98, 0xe2, 0x53, 0x96, 0x0f, 0xbd, 0x88, 0x2a, 0xb6, 0x1c, 0xe7, 0xbd, 0xb7, 0x8a,
- 0x57, 0x12, 0x42, 0x7e, 0x0a, 0xbd, 0x08, 0x8b, 0xbf, 0xcf, 0xe7, 0x5c, 0x20, 0xcf, 0x85, 0x7c,
- 0xb4, 0x4a, 0x88, 0x4a, 0x0b, 0x49, 0x5c, 0x7d, 0xae, 0xe4, 0xd8, 0x3a, 0x92, 0x95, 0x9e, 0x62,
+ 0x9a, 0xdd, 0x59, 0x6e, 0x3c, 0x1a, 0x69, 0xb4, 0xda, 0xf5, 0x3e, 0x1c, 0x15, 0xc9, 0x62, 0x93,
+ 0x23, 0xbe, 0x54, 0x55, 0xdd, 0x92, 0x36, 0x48, 0x0a, 0x6c, 0xb2, 0xd4, 0x4d, 0x0f, 0xc9, 0xe2,
+ 0x56, 0x55, 0xb7, 0x5a, 0x8e, 0x1d, 0x28, 0x31, 0x82, 0x00, 0x49, 0x6c, 0x27, 0xf0, 0xc7, 0x02,
+ 0x81, 0x03, 0xc4, 0x48, 0xf2, 0x11, 0x04, 0xc8, 0x47, 0x80, 0x00, 0x01, 0xf2, 0x6d, 0x20, 0x01,
+ 0x82, 0x04, 0x30, 0x10, 0xf8, 0xc7, 0xfe, 0x73, 0x7e, 0x02, 0xf8, 0x3f, 0xd9, 0x6c, 0x56, 0xc1,
+ 0xb9, 0xe7, 0xdc, 0x5b, 0xb7, 0xf8, 0xe8, 0xe9, 0xdd, 0xcc, 0xe6, 0xc3, 0x5f, 0x62, 0x9d, 0xd7,
+ 0x3d, 0xf7, 0xdc, 0x73, 0xce, 0x3d, 0xf7, 0xd4, 0xad, 0x16, 0xbb, 0x73, 0xe2, 0x8f, 0xa3, 0xa3,
+ 0xbe, 0x3b, 0x0b, 0xfc, 0xc8, 0x0f, 0x1f, 0xf8, 0x33, 0x6f, 0xfa, 0x7a, 0xec, 0xbf, 0x71, 0x1f,
+ 0x7e, 0xf6, 0x09, 0x07, 0xe9, 0x05, 0x05, 0x74, 0xf3, 0xd6, 0xa1, 0xef, 0x1f, 0x8e, 0xbd, 0x07,
+ 0xfd, 0xd9, 0xe8, 0x41, 0x7f, 0x3a, 0xf5, 0xa3, 0x7e, 0x34, 0xf2, 0xa7, 0x21, 0x92, 0x96, 0x06,
+ 0x8c, 0xf9, 0xaf, 0x67, 0xee, 0x91, 0xd7, 0x1f, 0x7a, 0x81, 0x5e, 0x64, 0x1b, 0x27, 0x5e, 0x10,
+ 0x8e, 0xfc, 0x69, 0x31, 0x75, 0x37, 0xf5, 0xf1, 0x96, 0x25, 0x1e, 0xf5, 0x6f, 0xb0, 0x6c, 0xf4,
+ 0x76, 0xe6, 0x15, 0xd3, 0x77, 0x53, 0x1f, 0x6f, 0x3f, 0xba, 0xfa, 0x89, 0x3a, 0x28, 0x08, 0x00,
+ 0xa4, 0xc5, 0x49, 0x74, 0x8d, 0x65, 0x4e, 0x47, 0xc3, 0x62, 0x86, 0x0b, 0x80, 0x9f, 0xa5, 0x7f,
+ 0x9d, 0x62, 0x57, 0x71, 0x94, 0xf1, 0xd8, 0x77, 0xbd, 0xb1, 0x37, 0x11, 0x03, 0x3e, 0x26, 0xb1,
+ 0x29, 0x2e, 0xf6, 0xee, 0x82, 0x58, 0x85, 0x43, 0x19, 0xe1, 0x39, 0xdb, 0x22, 0xbd, 0x0e, 0x46,
+ 0xd1, 0xa4, 0x3f, 0xe3, 0x5a, 0x15, 0x1e, 0x7d, 0xe3, 0x2c, 0xf6, 0x04, 0x43, 0xe3, 0x82, 0x95,
+ 0x94, 0x50, 0xc9, 0xb3, 0x0d, 0x20, 0xf3, 0xa6, 0x51, 0xe9, 0x3b, 0xec, 0xd6, 0x59, 0xbc, 0x60,
+ 0x24, 0xfc, 0x15, 0x16, 0xd3, 0x77, 0x33, 0x60, 0x24, 0x7a, 0x2c, 0x3d, 0x63, 0x79, 0xc9, 0xa9,
+ 0xff, 0x1a, 0xcb, 0x91, 0xc4, 0xb0, 0x98, 0xba, 0x9b, 0xf9, 0xb8, 0xf0, 0xa8, 0x74, 0x96, 0x7e,
+ 0x68, 0x10, 0x4b, 0xf2, 0x94, 0xda, 0xec, 0x12, 0x90, 0x84, 0x6f, 0x46, 0xd1, 0xe0, 0xc8, 0x1d,
+ 0xf8, 0xd3, 0xd7, 0xa3, 0x43, 0xfd, 0x0a, 0x5b, 0x7b, 0x3d, 0xee, 0x1f, 0x86, 0xb4, 0x3c, 0xf8,
+ 0xa0, 0x97, 0xd8, 0xd6, 0x64, 0x14, 0x86, 0x6e, 0xe8, 0x4d, 0x87, 0xee, 0xd8, 0x9b, 0x72, 0x7b,
+ 0x6c, 0x59, 0x05, 0x00, 0xda, 0xde, 0x74, 0xd8, 0xf2, 0xa6, 0xa5, 0x0a, 0xdb, 0xe2, 0xeb, 0xd4,
+ 0x3f, 0x18, 0x7b, 0xee, 0xc4, 0x1f, 0xea, 0x37, 0x58, 0x0e, 0x1f, 0x46, 0x43, 0xb1, 0xd8, 0xfc,
+ 0xb9, 0x39, 0xd4, 0xaf, 0xb1, 0x75, 0x1c, 0x8f, 0x04, 0xd1, 0x53, 0xe9, 0x9f, 0xa5, 0x59, 0x0e,
+ 0x84, 0xcc, 0xfc, 0x20, 0xd2, 0xaf, 0xb3, 0x0d, 0xf8, 0xd7, 0x9d, 0xfa, 0xc4, 0xbe, 0x0e, 0x8f,
+ 0x1d, 0x1f, 0x10, 0x47, 0x6f, 0xdc, 0xfe, 0x70, 0x18, 0x90, 0x7d, 0xd6, 0x8f, 0xde, 0x18, 0xc3,
+ 0x61, 0xa0, 0xeb, 0x2c, 0x3b, 0xed, 0x4f, 0x3c, 0xee, 0x19, 0x79, 0x8b, 0xff, 0x56, 0x86, 0xca,
+ 0xaa, 0x43, 0xc1, 0x44, 0xc3, 0xa8, 0x1f, 0x79, 0xc5, 0x35, 0x9c, 0x28, 0x7f, 0x00, 0x09, 0x83,
+ 0xe3, 0x20, 0x28, 0xae, 0x73, 0x20, 0xff, 0xad, 0x7f, 0xc0, 0x58, 0x7f, 0x78, 0xe2, 0x05, 0xd1,
+ 0x28, 0xf4, 0x86, 0xc5, 0x0d, 0x8e, 0x51, 0x20, 0xfa, 0x2d, 0x96, 0x0f, 0x8f, 0x67, 0xa0, 0x9b,
+ 0x37, 0x2c, 0xe6, 0x38, 0x3a, 0x06, 0x80, 0xc4, 0x99, 0xe7, 0x05, 0xc5, 0x3c, 0x4a, 0x84, 0xdf,
+ 0xfa, 0x6d, 0xc6, 0x40, 0xb2, 0x1b, 0xce, 0x3c, 0x6f, 0x58, 0x64, 0xc8, 0x02, 0x10, 0x1b, 0x00,
+ 0xfa, 0x0e, 0xcb, 0x4f, 0xfa, 0xa7, 0x84, 0x2d, 0x70, 0x6c, 0x6e, 0xd2, 0x3f, 0xe5, 0xc8, 0xd2,
+ 0xbf, 0x4b, 0xb1, 0xcb, 0xca, 0xb2, 0xbd, 0xf6, 0xfa, 0xd1, 0x71, 0xe0, 0x85, 0xfa, 0x1d, 0x56,
+ 0x18, 0xf6, 0xa3, 0xfe, 0xac, 0x1f, 0x1d, 0x09, 0x83, 0x67, 0x2d, 0x26, 0x40, 0x4d, 0x2e, 0x75,
+ 0xea, 0x1e, 0x1c, 0xbf, 0x7e, 0xed, 0x05, 0x21, 0x99, 0x3d, 0x37, 0xad, 0xe0, 0x33, 0xac, 0xd5,
+ 0x14, 0x97, 0x2e, 0xa4, 0xb8, 0xda, 0x98, 0x3a, 0xfc, 0x51, 0xbf, 0xc7, 0x36, 0xfb, 0xc7, 0xa7,
+ 0xa3, 0xf1, 0xa8, 0x1f, 0xbc, 0x05, 0xc9, 0x68, 0xc6, 0x82, 0x84, 0x35, 0x87, 0x7a, 0x89, 0x6d,
+ 0x0e, 0xfa, 0xb3, 0xfe, 0xc1, 0x68, 0x3c, 0x8a, 0x46, 0x5e, 0x48, 0x26, 0x4d, 0xc0, 0x4a, 0x01,
+ 0xbb, 0x28, 0x56, 0xd6, 0x05, 0x5b, 0x1f, 0x87, 0xfa, 0x63, 0xb6, 0x1e, 0x78, 0xfd, 0x90, 0x72,
+ 0xc1, 0xf6, 0xa3, 0x5b, 0x0b, 0xee, 0xcb, 0xa9, 0x91, 0xc6, 0x22, 0x5a, 0x48, 0x14, 0x43, 0x2f,
+ 0x1c, 0x50, 0x48, 0x5e, 0x5d, 0xca, 0x63, 0x71, 0x92, 0xd2, 0xdf, 0x4f, 0xb1, 0x4d, 0x29, 0x06,
+ 0x5c, 0xf2, 0xe7, 0x77, 0xa9, 0xd8, 0x7d, 0x32, 0x09, 0xf7, 0xd1, 0x59, 0x76, 0xd2, 0x0f, 0xbf,
+ 0x20, 0x6b, 0xf0, 0xdf, 0xe0, 0x08, 0xd2, 0x2d, 0xc8, 0x06, 0x31, 0xa0, 0xf4, 0x06, 0x63, 0x77,
+ 0xd2, 0x8f, 0x06, 0x47, 0xfa, 0x83, 0x44, 0x5a, 0xda, 0x59, 0x98, 0x04, 0xa7, 0x52, 0x33, 0xd2,
+ 0xaf, 0x32, 0xe6, 0x9f, 0x4e, 0xdc, 0xd7, 0x23, 0x6f, 0x3c, 0xc4, 0xb4, 0x50, 0x78, 0x74, 0x73,
+ 0x81, 0x4d, 0x92, 0x58, 0x79, 0xff, 0x74, 0x52, 0xe7, 0xc4, 0xa5, 0xff, 0x91, 0xc2, 0xc8, 0x94,
+ 0x48, 0xfd, 0xdb, 0x0c, 0xd0, 0xee, 0x60, 0xdc, 0x0f, 0x43, 0x52, 0x61, 0xb9, 0x2c, 0x4e, 0x61,
+ 0xe5, 0xfc, 0xd3, 0x49, 0x15, 0x7e, 0xe9, 0x3f, 0x80, 0x39, 0x1c, 0xa0, 0x14, 0x3e, 0xf5, 0xc2,
+ 0xa3, 0x0f, 0x96, 0x32, 0x4a, 0xaa, 0xc6, 0x05, 0x2b, 0xe7, 0xbf, 0x3e, 0xe0, 0xaa, 0xe8, 0x2f,
+ 0x99, 0xee, 0x9d, 0xce, 0xbc, 0x60, 0x04, 0x09, 0xc8, 0x0b, 0x48, 0xce, 0x1a, 0x97, 0xf3, 0xf5,
+ 0xa5, 0x72, 0x16, 0xc9, 0x1b, 0x17, 0xac, 0x4b, 0x2a, 0x94, 0x4b, 0xae, 0x6c, 0xb0, 0x35, 0x8e,
+ 0x2d, 0xfd, 0xc9, 0x36, 0x66, 0xb5, 0x84, 0x12, 0x67, 0xef, 0x02, 0x2a, 0x25, 0x37, 0x79, 0x48,
+ 0x36, 0xbf, 0xc1, 0x72, 0x47, 0xfd, 0xd0, 0xe5, 0xeb, 0x0c, 0xde, 0x96, 0xb3, 0x36, 0x8e, 0xfa,
+ 0x61, 0x1b, 0x96, 0xfa, 0x0a, 0xcb, 0x82, 0xe7, 0xa0, 0x53, 0x34, 0x2e, 0x58, 0xfc, 0x49, 0xff,
+ 0x88, 0x6d, 0xcd, 0x8e, 0xde, 0x86, 0xa3, 0x41, 0x7f, 0xcc, 0x7d, 0x0e, 0xbd, 0xa3, 0x71, 0xc1,
+ 0xda, 0x14, 0xe0, 0x1e, 0x90, 0x7d, 0x9d, 0x6d, 0x53, 0x96, 0xf4, 0xa2, 0x3e, 0x44, 0x28, 0x37,
+ 0x41, 0x16, 0xf6, 0x0c, 0x0e, 0x6f, 0x13, 0x58, 0xbf, 0xc1, 0x36, 0xbc, 0xe8, 0xc8, 0x1d, 0x86,
+ 0x11, 0x4f, 0x48, 0x9b, 0x8d, 0x0b, 0xd6, 0xba, 0x17, 0x1d, 0xd5, 0xc2, 0x48, 0xa0, 0xc2, 0x60,
+ 0xc0, 0x33, 0x92, 0x40, 0xd9, 0xc1, 0x40, 0xdf, 0x61, 0x39, 0x40, 0xf1, 0x09, 0xe7, 0x48, 0x01,
+ 0x20, 0x76, 0x60, 0x4e, 0x3b, 0x2c, 0x77, 0x32, 0xee, 0x4f, 0xdd, 0x93, 0xd1, 0x10, 0x53, 0x12,
+ 0x20, 0x01, 0xb2, 0x3f, 0x1a, 0x4a, 0xe4, 0x6c, 0x30, 0xc3, 0xac, 0x24, 0x90, 0xbd, 0xc1, 0x0c,
+ 0x46, 0x1c, 0xcd, 0xdc, 0x61, 0x38, 0x98, 0x61, 0x4e, 0x82, 0x11, 0x47, 0xb3, 0x5a, 0x38, 0x98,
+ 0xe9, 0xd7, 0xd9, 0xfa, 0x68, 0xe6, 0x7a, 0x83, 0x69, 0x71, 0x93, 0x30, 0x6b, 0xa3, 0x99, 0x39,
+ 0x98, 0x82, 0xc0, 0xd1, 0x0c, 0xcb, 0x88, 0xe2, 0x96, 0x10, 0x38, 0x9a, 0xf5, 0x78, 0x11, 0xc1,
+ 0x91, 0x27, 0x8f, 0xf9, 0x1c, 0xb6, 0x63, 0xe4, 0xc9, 0x63, 0x9a, 0x04, 0x47, 0xc2, 0xdc, 0x2f,
+ 0xaa, 0x48, 0x9a, 0x7c, 0x34, 0x98, 0x71, 0x46, 0x4d, 0xa8, 0x12, 0x0d, 0x66, 0xc0, 0x47, 0x28,
+ 0x60, 0xbb, 0xa4, 0xa0, 0x88, 0xeb, 0x78, 0x88, 0x5c, 0xba, 0x40, 0x1d, 0x0f, 0x05, 0x17, 0xa0,
+ 0x80, 0xeb, 0xb2, 0x82, 0x02, 0xae, 0x1d, 0x96, 0x0b, 0x07, 0x11, 0xb2, 0x5d, 0x11, 0x8a, 0x00,
+ 0x84, 0xb4, 0xe4, 0x48, 0x60, 0xbc, 0xaa, 0x22, 0x81, 0xf3, 0x1e, 0x2b, 0x8c, 0x06, 0x13, 0x98,
+ 0x04, 0x5f, 0x8a, 0x6b, 0x84, 0x67, 0x08, 0xe4, 0xab, 0x11, 0x93, 0x0c, 0xfc, 0xa1, 0x57, 0xbc,
+ 0x9e, 0x24, 0xa9, 0xfa, 0x43, 0x0f, 0x6c, 0xdb, 0x0f, 0x66, 0xae, 0x3f, 0x2b, 0x16, 0x85, 0x6d,
+ 0xfb, 0xc1, 0xac, 0xcb, 0xd7, 0x03, 0x10, 0xe1, 0xac, 0x5f, 0xbc, 0x21, 0x74, 0xee, 0x07, 0x33,
+ 0x7b, 0xd6, 0x17, 0xa8, 0x68, 0xd6, 0x2f, 0xde, 0x54, 0x50, 0x4e, 0x8c, 0x0a, 0x8f, 0xfa, 0xc5,
+ 0x1d, 0xe1, 0x37, 0xc0, 0x75, 0x14, 0x73, 0x1d, 0xf5, 0x8b, 0xb7, 0x14, 0x94, 0x73, 0xd4, 0xa7,
+ 0xd5, 0x78, 0xc2, 0x8d, 0x70, 0x9b, 0x70, 0xb0, 0x1a, 0x4f, 0xe2, 0xa5, 0x7a, 0xc2, 0x8d, 0xf0,
+ 0x81, 0x8a, 0x14, 0x46, 0x00, 0xe4, 0xeb, 0x71, 0xff, 0xc0, 0x1b, 0x17, 0xef, 0xc8, 0x19, 0xce,
+ 0x4e, 0x9e, 0xd4, 0x39, 0x4c, 0x1a, 0xe1, 0x09, 0xda, 0xe9, 0x6e, 0xc2, 0x08, 0x4f, 0x12, 0x76,
+ 0x7a, 0x82, 0x76, 0xba, 0x97, 0x24, 0xe1, 0x76, 0xfa, 0x1a, 0xdb, 0xe6, 0x03, 0x4d, 0x87, 0x6e,
+ 0xd4, 0x0f, 0x0e, 0xbd, 0xa8, 0x58, 0x22, 0x5d, 0x36, 0x01, 0xde, 0x19, 0x3a, 0x1c, 0xaa, 0xdf,
+ 0x25, 0x85, 0xa6, 0x43, 0x37, 0x0c, 0xc7, 0xc5, 0x0f, 0x89, 0x28, 0x8f, 0x44, 0x76, 0x38, 0x56,
+ 0x29, 0xa2, 0xf1, 0xb8, 0x78, 0x3f, 0x49, 0xe1, 0x8c, 0xc7, 0xfa, 0x1d, 0xc6, 0x26, 0xb3, 0x71,
+ 0xe8, 0xe2, 0x9c, 0x3e, 0x22, 0x6d, 0xf2, 0x00, 0x6b, 0xf1, 0x29, 0xdd, 0x60, 0x1b, 0x9c, 0x20,
+ 0x1a, 0x14, 0xbf, 0x26, 0x16, 0x00, 0x00, 0x0e, 0xb7, 0x16, 0x47, 0x1d, 0xf8, 0x61, 0xf1, 0xeb,
+ 0xc2, 0x65, 0x00, 0x52, 0xf1, 0x43, 0x40, 0xce, 0x0e, 0x0e, 0xdc, 0x51, 0x38, 0x1a, 0x16, 0x3f,
+ 0x16, 0xc8, 0xd9, 0xc1, 0x41, 0x33, 0x1c, 0x0d, 0xf5, 0xdb, 0x2c, 0x1f, 0x1d, 0x4f, 0xa7, 0xde,
+ 0x18, 0x76, 0xe1, 0x6f, 0x50, 0xc6, 0xc8, 0x21, 0xa8, 0x39, 0x94, 0x96, 0xf6, 0x4e, 0xa3, 0xa3,
+ 0x61, 0x50, 0x2c, 0xab, 0x96, 0x36, 0x39, 0x4c, 0xff, 0x94, 0x5d, 0x4e, 0x26, 0x1e, 0xcc, 0x6d,
+ 0x23, 0x2e, 0x2b, 0x65, 0x5d, 0x4a, 0x64, 0x1f, 0x9e, 0xe7, 0x4a, 0x6c, 0x93, 0x32, 0x10, 0x92,
+ 0xfe, 0x3a, 0x37, 0x46, 0xca, 0x62, 0x98, 0x86, 0x54, 0x9a, 0x30, 0x18, 0x20, 0xcd, 0x17, 0x0a,
+ 0x8d, 0x1d, 0x0c, 0x38, 0xcd, 0x7d, 0xb6, 0x25, 0xd2, 0x0e, 0x12, 0x4d, 0xb8, 0x7a, 0x29, 0xab,
+ 0x40, 0xb9, 0x47, 0x50, 0x89, 0x8c, 0x80, 0x54, 0x81, 0xa0, 0xa2, 0xb4, 0x90, 0xa0, 0x92, 0x4a,
+ 0x85, 0x2a, 0x95, 0xa2, 0x15, 0x85, 0x07, 0x12, 0xfd, 0x16, 0x11, 0x31, 0x8c, 0x11, 0x95, 0x26,
+ 0x12, 0x34, 0x7f, 0x4b, 0xa1, 0x71, 0x88, 0xe6, 0x23, 0x3e, 0xda, 0x93, 0x58, 0xa7, 0xbf, 0x9d,
+ 0xa2, 0xf9, 0x15, 0x28, 0x00, 0x12, 0x64, 0x52, 0xa9, 0xbf, 0x93, 0x20, 0x13, 0x5a, 0x7d, 0x93,
+ 0x69, 0x4a, 0x38, 0x20, 0xe5, 0x6f, 0xa7, 0x68, 0xd8, 0xed, 0x38, 0x28, 0x84, 0x4c, 0xe1, 0x0d,
+ 0x48, 0xf9, 0x0f, 0x05, 0x65, 0x81, 0x7c, 0x82, 0x93, 0xc1, 0x76, 0x22, 0xfc, 0x02, 0xe9, 0x7e,
+ 0x27, 0x45, 0x2b, 0xba, 0x29, 0xbc, 0x23, 0x31, 0x38, 0x7a, 0x08, 0x92, 0xfe, 0x6e, 0x62, 0x70,
+ 0xf4, 0x13, 0x20, 0x86, 0x1d, 0xf5, 0xa4, 0x3f, 0x3e, 0xf6, 0x2a, 0xeb, 0x58, 0xe9, 0x94, 0x5c,
+ 0x76, 0x73, 0xf5, 0xae, 0x0c, 0x25, 0x2d, 0x60, 0xf0, 0x90, 0x41, 0xc5, 0x15, 0x14, 0x19, 0x0d,
+ 0x3c, 0x86, 0x81, 0x8f, 0x28, 0x4c, 0x54, 0x7f, 0x26, 0x60, 0xa5, 0x7f, 0x9b, 0xc5, 0xa3, 0x62,
+ 0x7f, 0x00, 0xe7, 0x47, 0xfd, 0xd3, 0xc4, 0x9e, 0xbd, 0x58, 0x1b, 0x22, 0x99, 0x5a, 0x23, 0x7d,
+ 0x87, 0xad, 0xfb, 0xc7, 0xd1, 0xec, 0x38, 0xa2, 0xda, 0xf0, 0x83, 0x55, 0x3c, 0x48, 0x05, 0x41,
+ 0x89, 0xbf, 0xf4, 0x1f, 0x50, 0x50, 0x46, 0xd1, 0x98, 0x6f, 0xe9, 0x85, 0x25, 0x27, 0x45, 0xe2,
+ 0x15, 0x74, 0x22, 0x6c, 0x9d, 0x68, 0xac, 0x3f, 0x62, 0xd9, 0xd9, 0x71, 0x78, 0x44, 0x15, 0xd1,
+ 0x4a, 0x55, 0x81, 0x86, 0xd7, 0x0a, 0xc7, 0xe1, 0x11, 0x0c, 0x39, 0xf3, 0x67, 0x5c, 0x1c, 0x55,
+ 0x40, 0x2b, 0x87, 0x14, 0x74, 0x3c, 0x19, 0xf8, 0xb3, 0xf6, 0x6c, 0x1c, 0xea, 0xdf, 0x62, 0x6b,
+ 0x87, 0x81, 0x7f, 0x3c, 0xe3, 0x85, 0x41, 0xe1, 0xd1, 0xed, 0x55, 0xbc, 0x9c, 0x08, 0x36, 0x0d,
+ 0xfe, 0x43, 0xff, 0x36, 0x5b, 0x9f, 0xbe, 0xe1, 0xd3, 0xdc, 0x38, 0xdb, 0x44, 0x48, 0x05, 0x8c,
+ 0xd3, 0x37, 0x30, 0xc5, 0xa7, 0x2c, 0x1f, 0x7a, 0x11, 0x55, 0x6c, 0x39, 0xce, 0x7b, 0x6f, 0x15,
+ 0xaf, 0x24, 0x84, 0xfc, 0x14, 0x7a, 0x11, 0x16, 0x7f, 0x9f, 0xcf, 0xb9, 0x40, 0x9e, 0x0b, 0xb9,
+ 0xbf, 0x4a, 0x88, 0x4a, 0x0b, 0x49, 0x5c, 0x7d, 0xae, 0xe4, 0xd8, 0x3a, 0x92, 0x95, 0x9e, 0x62,
0xb9, 0x97, 0x58, 0x58, 0x7e, 0xe6, 0x82, 0xf2, 0x2b, 0x45, 0x67, 0x2e, 0x3a, 0x4d, 0xc2, 0xa1,
- 0x2a, 0x3e, 0xbc, 0xae, 0x4f, 0xfa, 0xa7, 0x70, 0x6e, 0xfd, 0x0c, 0xcf, 0x53, 0x73, 0xcb, 0x0b,
- 0xc5, 0x9f, 0x74, 0x09, 0x3a, 0xbd, 0xd2, 0x72, 0x97, 0xee, 0xe3, 0x51, 0x46, 0x59, 0x55, 0x28,
- 0xfd, 0xbd, 0xe8, 0xc8, 0x0b, 0xa4, 0xc7, 0x6e, 0x59, 0x31, 0xa0, 0xf4, 0x28, 0x31, 0x84, 0x58,
- 0xce, 0x2f, 0x61, 0xfa, 0x15, 0xa6, 0xcd, 0xaf, 0x23, 0x28, 0xc5, 0x7f, 0x28, 0x47, 0x6a, 0xfe,
- 0xdc, 0x1c, 0x96, 0xca, 0x09, 0x43, 0xe0, 0xf2, 0xe9, 0x57, 0xe5, 0x72, 0xd3, 0x71, 0x9e, 0x2f,
- 0x66, 0xa9, 0xc1, 0xae, 0x2c, 0x5b, 0x2e, 0xfd, 0x33, 0xaa, 0xa2, 0x39, 0xf5, 0xd9, 0xe7, 0x0b,
- 0x2a, 0xb7, 0x9f, 0xb3, 0xeb, 0x2b, 0xd6, 0x6c, 0x21, 0xe4, 0x53, 0x8b, 0x21, 0x0f, 0x0b, 0xc5,
- 0xeb, 0x5f, 0x58, 0x91, 0x4d, 0x8b, 0xff, 0x2e, 0xfd, 0x41, 0x06, 0xcd, 0x3b, 0x9a, 0x86, 0x51,
- 0x70, 0x8c, 0xb9, 0x40, 0x57, 0x72, 0xc1, 0x16, 0x45, 0x7b, 0x83, 0xb1, 0x43, 0x3f, 0xf2, 0xf1,
- 0xd4, 0x4a, 0x11, 0xbf, 0x78, 0x88, 0x50, 0xa4, 0xb8, 0x31, 0x39, 0xec, 0xd6, 0xf0, 0xc4, 0x8f,
- 0xb8, 0xba, 0xc3, 0xb6, 0xdf, 0x04, 0xa3, 0x48, 0xa9, 0xc7, 0x31, 0x07, 0x7c, 0xf3, 0x4c, 0x69,
- 0x49, 0x16, 0x28, 0xde, 0x39, 0x44, 0x16, 0xef, 0x4f, 0xd9, 0x06, 0x9a, 0x25, 0xa4, 0xbc, 0xf0,
- 0xd1, 0x99, 0xe2, 0x88, 0x16, 0x62, 0x9c, 0x7e, 0xea, 0xdf, 0x65, 0x6b, 0x13, 0x0f, 0x4c, 0x87,
+ 0x2a, 0x3e, 0xbc, 0xae, 0x4f, 0xfa, 0xa7, 0x70, 0x6e, 0xfd, 0x14, 0xcf, 0x53, 0x73, 0xcb, 0x0b,
+ 0xc5, 0x9f, 0x74, 0x09, 0x3a, 0xbd, 0xd2, 0x72, 0x97, 0x1e, 0xe0, 0x51, 0x46, 0x59, 0x55, 0x28,
+ 0xfd, 0xbd, 0xe8, 0xc8, 0x0b, 0xa4, 0xc7, 0x6e, 0x59, 0x31, 0xa0, 0xf4, 0x59, 0x62, 0x08, 0xb1,
+ 0x9c, 0x5f, 0xc2, 0xf4, 0x2b, 0x4c, 0x9b, 0x5f, 0x47, 0x50, 0x8a, 0xff, 0x50, 0x8e, 0xd4, 0xfc,
+ 0xb9, 0x39, 0x2c, 0x95, 0x13, 0x86, 0xc0, 0xe5, 0xd3, 0xaf, 0xca, 0xe5, 0xa6, 0xe3, 0x3c, 0x5f,
+ 0xcc, 0x52, 0x83, 0x5d, 0x59, 0xb6, 0x5c, 0xfa, 0xa7, 0x54, 0x45, 0x73, 0xea, 0xb3, 0xcf, 0x17,
+ 0x54, 0x6e, 0x3f, 0x67, 0xd7, 0x57, 0xac, 0xd9, 0x42, 0xc8, 0xa7, 0x16, 0x43, 0x1e, 0x16, 0x8a,
+ 0xd7, 0xbf, 0xb0, 0x22, 0x9b, 0x16, 0xff, 0x5d, 0xfa, 0x83, 0x0c, 0x9a, 0x77, 0x34, 0x0d, 0xa3,
+ 0xe0, 0x18, 0x73, 0x81, 0xae, 0xe4, 0x82, 0x2d, 0x8a, 0xf6, 0x06, 0x63, 0x87, 0x7e, 0xe4, 0xe3,
+ 0xa9, 0x95, 0x22, 0x7e, 0xf1, 0x10, 0xa1, 0x48, 0x71, 0x63, 0x72, 0xd8, 0xad, 0xe1, 0x89, 0x1f,
+ 0x71, 0x75, 0x87, 0x6d, 0xbf, 0x09, 0x46, 0x91, 0x52, 0x8f, 0x63, 0x0e, 0xf8, 0xe6, 0x99, 0xd2,
+ 0x92, 0x2c, 0x50, 0xbc, 0x73, 0x88, 0x2c, 0xde, 0x9f, 0xb2, 0x0d, 0x34, 0x4b, 0x48, 0x79, 0xe1,
+ 0xfe, 0x99, 0xe2, 0x88, 0x16, 0x62, 0x9c, 0x7e, 0xea, 0xdf, 0x65, 0x6b, 0x13, 0x0f, 0x4c, 0x87,
0xf9, 0xa1, 0x74, 0x26, 0x3f, 0xa7, 0x84, 0x78, 0xe5, 0x3f, 0xf4, 0xee, 0x9c, 0xf5, 0xd7, 0x57,
0x34, 0xb0, 0x54, 0x11, 0x67, 0x86, 0xdc, 0x3a, 0x2e, 0x55, 0xe9, 0xdb, 0xb8, 0x0d, 0x2c, 0xb7,
0xeb, 0x19, 0x3d, 0x9f, 0x52, 0x9f, 0x7d, 0x70, 0xb6, 0x09, 0xf5, 0x9b, 0x2c, 0x27, 0x57, 0x00,
0xfb, 0x17, 0xf2, 0x59, 0xff, 0x90, 0x6d, 0x25, 0x8b, 0x96, 0x34, 0x27, 0xd8, 0x9c, 0x28, 0xd5,
- 0x4a, 0xa9, 0x85, 0xde, 0xb8, 0xc4, 0xac, 0xfa, 0x83, 0x78, 0x35, 0xb0, 0x57, 0x76, 0x7d, 0x45,
- 0xe2, 0x91, 0xe6, 0x2f, 0x3d, 0xc4, 0x9e, 0xe2, 0x82, 0x91, 0x79, 0x6a, 0x80, 0x1f, 0xca, 0x24,
+ 0x4a, 0xa9, 0x85, 0xde, 0xb8, 0xc4, 0xac, 0xfa, 0xc3, 0x78, 0x35, 0xb0, 0x57, 0x76, 0x7d, 0x45,
+ 0xe2, 0x91, 0xe6, 0x2f, 0x3d, 0xc2, 0x9e, 0xe2, 0x82, 0x91, 0x79, 0x6a, 0x80, 0x1f, 0xca, 0x24,
0xf9, 0x73, 0x73, 0x58, 0xda, 0xc7, 0xd6, 0xde, 0x2a, 0xab, 0xfe, 0xc2, 0x41, 0xf1, 0xa7, 0x19,
0xec, 0x64, 0x70, 0x7d, 0x27, 0x3e, 0x75, 0xd0, 0xfc, 0x2f, 0x46, 0x1e, 0x59, 0x8a, 0x9e, 0xf4,
0x3b, 0xac, 0x80, 0xbf, 0x54, 0x2b, 0x31, 0x04, 0xf1, 0x22, 0x40, 0x5d, 0xa1, 0x4c, 0xb2, 0x2b,
@@ -9430,14 +9430,14 @@
0x3a, 0x6d, 0xf2, 0x59, 0xdf, 0x61, 0x79, 0x6c, 0x5f, 0x81, 0xea, 0xd8, 0x67, 0xcb, 0x21, 0xa0,
0xc9, 0x9b, 0x8d, 0xfe, 0x71, 0x84, 0xa7, 0x6e, 0x6c, 0xb5, 0x6d, 0xf8, 0xc7, 0x11, 0x3f, 0x6e,
0xef, 0xb0, 0x3c, 0xa0, 0x70, 0xbb, 0xc4, 0x66, 0x1b, 0xd0, 0xee, 0xf2, 0x8c, 0x2a, 0xfb, 0x9d,
- 0x05, 0xb5, 0xdf, 0xf9, 0x57, 0xd8, 0x1a, 0xef, 0xc0, 0xf0, 0xf3, 0x6c, 0xe1, 0xe1, 0xb5, 0xe5,
+ 0x05, 0xb5, 0xdf, 0xf9, 0x57, 0xd8, 0x1a, 0xef, 0xc0, 0xf0, 0xf3, 0x6c, 0xe1, 0xd1, 0xb5, 0xe5,
0xfd, 0x19, 0x0b, 0x89, 0xf4, 0xa7, 0x6c, 0x53, 0x59, 0xf0, 0xb0, 0xb8, 0xc5, 0x1d, 0xec, 0xd6,
0x59, 0xb1, 0x66, 0x25, 0x38, 0x4a, 0x3f, 0x4e, 0x61, 0xe9, 0x73, 0x70, 0x3c, 0xf8, 0xc2, 0x8b,
0x60, 0x71, 0xdf, 0x78, 0xa3, 0xc3, 0x23, 0xb1, 0x83, 0xd1, 0x13, 0x14, 0x59, 0x6f, 0x78, 0x63,
0x88, 0x4f, 0x13, 0xb7, 0xb1, 0x3c, 0x87, 0xf0, 0x89, 0xde, 0x61, 0x05, 0x44, 0xe3, 0x54, 0x71,
- 0x75, 0x91, 0x03, 0x27, 0xfb, 0x40, 0x4d, 0x49, 0xe7, 0x0b, 0x82, 0xff, 0x4c, 0xcd, 0x23, 0xdc,
+ 0x75, 0x91, 0x03, 0x27, 0xfb, 0x50, 0x4d, 0x49, 0xe7, 0x0b, 0x82, 0xff, 0x4c, 0xcd, 0x23, 0xdc,
0x76, 0xc0, 0xf3, 0xbe, 0x1f, 0x7b, 0x09, 0x96, 0x66, 0x8b, 0x79, 0x49, 0x12, 0x2f, 0xba, 0xc9,
- 0xfd, 0x44, 0x9b, 0x7f, 0x67, 0x05, 0xab, 0x52, 0xd4, 0xa9, 0x5b, 0x5e, 0x26, 0xb1, 0xe5, 0xc1,
+ 0x83, 0x44, 0x9b, 0x7f, 0x67, 0x05, 0xab, 0x52, 0xd4, 0xa9, 0x5b, 0x5e, 0x26, 0xb1, 0xe5, 0xc1,
0x74, 0xd0, 0x60, 0xab, 0xa7, 0x83, 0x78, 0x4b, 0xd0, 0x95, 0x7e, 0x27, 0xc5, 0xb6, 0x79, 0x47,
0xb0, 0x0f, 0xcf, 0x50, 0x2f, 0x24, 0xdd, 0x2a, 0x35, 0xe7, 0x56, 0xd7, 0xd9, 0xc6, 0x68, 0xaa,
0x9a, 0x7b, 0x7d, 0x34, 0xe5, 0xb6, 0x56, 0x4c, 0x99, 0x39, 0x9f, 0x29, 0x65, 0x5c, 0x67, 0xd5,
@@ -9445,28 +9445,28 @@
0xa8, 0x14, 0x34, 0xdf, 0x36, 0x3d, 0x23, 0xee, 0xe3, 0x5c, 0x92, 0x4d, 0xe4, 0x12, 0x19, 0x05,
0x6b, 0xe7, 0x89, 0x02, 0x31, 0xbd, 0x75, 0x65, 0x7a, 0xff, 0x34, 0x83, 0x45, 0x0c, 0x67, 0x0a,
0xbc, 0x89, 0x7f, 0xe2, 0xad, 0x4e, 0x5d, 0x6a, 0xec, 0xa7, 0xe7, 0x62, 0xff, 0xfb, 0x72, 0xe2,
- 0x19, 0x3e, 0xf1, 0x8f, 0x96, 0x67, 0x26, 0x1a, 0xe2, 0xac, 0xb9, 0x67, 0x93, 0x73, 0xbf, 0xc7,
- 0x36, 0x87, 0xc7, 0x41, 0x9f, 0x0a, 0xa1, 0x81, 0x48, 0x5b, 0x02, 0x66, 0x7b, 0x03, 0xd8, 0x7a,
- 0x24, 0xc9, 0x14, 0x68, 0x30, 0x6f, 0x49, 0xbe, 0x4e, 0xe8, 0x0d, 0x16, 0xd2, 0xdf, 0xc6, 0x97,
- 0xa7, 0xbf, 0xdc, 0x62, 0xfa, 0xbb, 0xc7, 0x36, 0x69, 0x01, 0x07, 0xfe, 0xf1, 0x14, 0x33, 0x59,
- 0xd6, 0x2a, 0x20, 0xac, 0x0a, 0x20, 0xc8, 0x01, 0x07, 0x6f, 0x23, 0x8f, 0x08, 0x18, 0x27, 0xc8,
- 0x03, 0x04, 0xd1, 0x72, 0xcd, 0xde, 0x9e, 0x63, 0xcd, 0x4a, 0x7f, 0x9a, 0xc6, 0x3d, 0x0e, 0xb7,
- 0xb3, 0x83, 0xfe, 0x74, 0x78, 0xde, 0xf7, 0x66, 0x0a, 0x87, 0x12, 0xac, 0x3a, 0xcb, 0x06, 0xfd,
- 0xc8, 0xa3, 0xe5, 0xe3, 0xbf, 0xb9, 0xc2, 0xc7, 0x41, 0x18, 0xb9, 0xe1, 0xe8, 0x37, 0x3c, 0x72,
- 0xbd, 0x3c, 0x87, 0xd8, 0xa3, 0xdf, 0xf0, 0xf4, 0x27, 0x2c, 0x3b, 0x0c, 0xfc, 0x19, 0xd5, 0x48,
- 0x67, 0x0e, 0x04, 0x74, 0x70, 0x7e, 0x82, 0x7f, 0xf5, 0xcf, 0x59, 0x61, 0x18, 0x0e, 0x66, 0xb0,
- 0xe4, 0xfd, 0xe0, 0x8b, 0x95, 0x4d, 0x64, 0x95, 0x3d, 0x26, 0x6f, 0x5c, 0xb0, 0x18, 0x3c, 0x5a,
- 0xfc, 0x49, 0xef, 0x2c, 0x2d, 0x96, 0x3e, 0x39, 0x4b, 0xd8, 0xb9, 0x6a, 0xa5, 0xab, 0x58, 0xf7,
- 0xcf, 0x4d, 0xa1, 0xf4, 0x3d, 0x2c, 0xa1, 0x96, 0xab, 0x06, 0xf6, 0x9a, 0x05, 0xde, 0xc0, 0x1d,
- 0x7b, 0x27, 0x9e, 0xa8, 0xdb, 0xf3, 0x00, 0x69, 0x01, 0xa0, 0x64, 0xb0, 0x9d, 0x33, 0x54, 0x39,
- 0x4f, 0x81, 0x51, 0xfa, 0xf7, 0x94, 0x74, 0x50, 0xc6, 0x39, 0x73, 0xba, 0x24, 0x5e, 0xcc, 0xe9,
- 0x72, 0x0f, 0x4d, 0xab, 0x7b, 0xa8, 0x5a, 0x25, 0x65, 0x12, 0x55, 0x92, 0xfe, 0x1d, 0xb6, 0x06,
- 0x9a, 0x8b, 0xb4, 0x5d, 0x3a, 0xcb, 0xd0, 0xf4, 0xda, 0x12, 0x19, 0x4a, 0xcf, 0x50, 0x73, 0x2f,
- 0x08, 0xfc, 0xc0, 0x9d, 0x84, 0x87, 0x4b, 0x4f, 0x06, 0x3a, 0xcb, 0xf2, 0x36, 0x21, 0x79, 0x21,
- 0xfc, 0x96, 0xd9, 0x29, 0xa3, 0x64, 0xa7, 0xdf, 0x4e, 0xe1, 0x42, 0xa0, 0xb4, 0x44, 0x53, 0x63,
- 0x95, 0xe8, 0x1b, 0x2c, 0xe7, 0x9d, 0xe2, 0xfe, 0x44, 0xe2, 0x37, 0xbc, 0xd3, 0x19, 0xef, 0x51,
- 0xce, 0x5b, 0x3e, 0x73, 0x46, 0x69, 0xa7, 0x6e, 0x01, 0x27, 0x14, 0x82, 0xc7, 0xe3, 0x68, 0x34,
- 0xeb, 0xf3, 0xf7, 0x5d, 0x3f, 0x3a, 0xf6, 0xc2, 0x48, 0x7f, 0x94, 0x08, 0xc1, 0x3b, 0x8b, 0x46,
+ 0x19, 0x3e, 0xf1, 0xfb, 0xcb, 0x33, 0x13, 0x0d, 0x71, 0xd6, 0xdc, 0xb3, 0xc9, 0xb9, 0xdf, 0x63,
+ 0x9b, 0xc3, 0xe3, 0xa0, 0x4f, 0x85, 0xd0, 0x40, 0xa4, 0x2d, 0x01, 0xb3, 0xbd, 0x01, 0x6c, 0x3d,
+ 0x92, 0x64, 0x0a, 0x34, 0x98, 0xb7, 0x24, 0x5f, 0x27, 0xf4, 0x06, 0x0b, 0xe9, 0x6f, 0xe3, 0xcb,
+ 0xd3, 0x5f, 0x6e, 0x31, 0xfd, 0xdd, 0x63, 0x9b, 0xb4, 0x80, 0x03, 0xff, 0x78, 0x8a, 0x99, 0x2c,
+ 0x6b, 0x15, 0x10, 0x56, 0x05, 0x10, 0xe4, 0x80, 0x83, 0xb7, 0x91, 0x47, 0x04, 0x8c, 0x13, 0xe4,
+ 0x01, 0x82, 0x68, 0xb9, 0x66, 0x6f, 0xcf, 0xb1, 0x66, 0xa5, 0x3f, 0x4d, 0xe3, 0x1e, 0x87, 0xdb,
+ 0xd9, 0x41, 0x7f, 0x3a, 0x3c, 0xef, 0x7b, 0x33, 0x85, 0x43, 0x09, 0x56, 0x9d, 0x65, 0x83, 0x7e,
+ 0xe4, 0xd1, 0xf2, 0xf1, 0xdf, 0x5c, 0xe1, 0xe3, 0x20, 0x8c, 0xdc, 0x70, 0xf4, 0x1b, 0x1e, 0xb9,
+ 0x5e, 0x9e, 0x43, 0xec, 0xd1, 0x6f, 0x78, 0xfa, 0x13, 0x96, 0x1d, 0x06, 0xfe, 0x8c, 0x6a, 0xa4,
+ 0x33, 0x07, 0x02, 0x3a, 0x38, 0x3f, 0xc1, 0xbf, 0xfa, 0xe7, 0xac, 0x30, 0x0c, 0x07, 0x33, 0x58,
+ 0xf2, 0x7e, 0xf0, 0xc5, 0xca, 0x26, 0xb2, 0xca, 0x1e, 0x93, 0x37, 0x2e, 0x58, 0x0c, 0x1e, 0x2d,
+ 0xfe, 0xa4, 0x77, 0x96, 0x16, 0x4b, 0x1f, 0x9f, 0x25, 0xec, 0x5c, 0xb5, 0xd2, 0x55, 0xac, 0xfb,
+ 0xe7, 0xa6, 0x50, 0xfa, 0x1e, 0x96, 0x50, 0xcb, 0x55, 0x03, 0x7b, 0xcd, 0x02, 0x6f, 0xe0, 0x8e,
+ 0xbd, 0x13, 0x4f, 0xd4, 0xed, 0x79, 0x80, 0xb4, 0x00, 0x50, 0x32, 0xd8, 0xce, 0x19, 0xaa, 0x9c,
+ 0xa7, 0xc0, 0x28, 0xfd, 0x7b, 0x4a, 0x3a, 0x28, 0xe3, 0x9c, 0x39, 0x5d, 0x12, 0x2f, 0xe6, 0x74,
+ 0xb9, 0x87, 0xa6, 0xd5, 0x3d, 0x54, 0xad, 0x92, 0x32, 0x89, 0x2a, 0x49, 0xff, 0x0e, 0x5b, 0x03,
+ 0xcd, 0x45, 0xda, 0x2e, 0x9d, 0x65, 0x68, 0x7a, 0x6d, 0x89, 0x0c, 0xa5, 0x67, 0xa8, 0xb9, 0x17,
+ 0x04, 0x7e, 0xe0, 0x4e, 0xc2, 0xc3, 0xa5, 0x27, 0x03, 0x9d, 0x65, 0x79, 0x9b, 0x90, 0xbc, 0x10,
+ 0x7e, 0xcb, 0xec, 0x94, 0x51, 0xb2, 0xd3, 0x6f, 0xa7, 0x70, 0x21, 0x50, 0x5a, 0xa2, 0xa9, 0xb1,
+ 0x4a, 0xf4, 0x0d, 0x96, 0xf3, 0x4e, 0x71, 0x7f, 0x22, 0xf1, 0x1b, 0xde, 0xe9, 0x8c, 0xf7, 0x28,
+ 0xe7, 0x2d, 0x9f, 0x39, 0xa3, 0xb4, 0x53, 0xb7, 0x80, 0x13, 0x0a, 0xc1, 0xe3, 0x71, 0x34, 0x9a,
+ 0xf5, 0xf9, 0xfb, 0xae, 0x1f, 0x1d, 0x7b, 0x61, 0xa4, 0x7f, 0x96, 0x08, 0xc1, 0x3b, 0x8b, 0x46,
0x92, 0x1c, 0x4a, 0x04, 0x2e, 0x5f, 0x0b, 0x9d, 0x65, 0x0f, 0xfc, 0xe1, 0x5b, 0x31, 0x7b, 0xf8,
0x5d, 0x8a, 0xc8, 0x39, 0x95, 0x71, 0x67, 0xe3, 0xb7, 0xbf, 0xec, 0x51, 0x7f, 0x2f, 0x85, 0x6f,
0x78, 0x87, 0x5e, 0x38, 0xe0, 0x2e, 0xf2, 0x3a, 0xe0, 0xbf, 0xf9, 0x78, 0x79, 0x6b, 0x63, 0xf2,
@@ -9484,331 +9484,331 @@
0xe5, 0x13, 0x83, 0x24, 0x34, 0xbf, 0x50, 0xa9, 0x2f, 0x5b, 0xa8, 0xf4, 0xfc, 0x42, 0xdd, 0x66,
0x8c, 0x0f, 0x8d, 0x68, 0xaa, 0x3a, 0x00, 0xc2, 0xd1, 0xa5, 0xbf, 0xc8, 0x60, 0xea, 0x47, 0xe3,
0xd1, 0x25, 0x0a, 0x77, 0x16, 0xf8, 0x33, 0x2f, 0xe0, 0xe5, 0xa6, 0x9a, 0x04, 0x17, 0x0b, 0x81,
- 0x45, 0x36, 0x35, 0x1b, 0xee, 0xcf, 0x2d, 0x3b, 0xf6, 0xa6, 0x3e, 0x3b, 0x8f, 0x14, 0x95, 0x8f,
- 0xbf, 0xba, 0x52, 0x9e, 0x75, 0x8b, 0x15, 0xa6, 0xde, 0x69, 0xa4, 0xde, 0xd3, 0x28, 0x3c, 0xbc,
- 0x7f, 0x1e, 0xb1, 0x0a, 0x1b, 0x94, 0x3e, 0xf0, 0x48, 0xb7, 0x3b, 0x76, 0xe7, 0xbb, 0x54, 0xdf,
+ 0x45, 0x36, 0x35, 0x1b, 0xee, 0xcf, 0x2d, 0x3b, 0xf6, 0xa6, 0x3e, 0x3d, 0x8f, 0x14, 0x95, 0x8f,
+ 0xbf, 0xba, 0x52, 0x9e, 0x75, 0x8b, 0x15, 0xa6, 0xde, 0x69, 0xa4, 0xde, 0xd3, 0x28, 0x3c, 0x7a,
+ 0x70, 0x1e, 0xb1, 0x0a, 0x1b, 0x94, 0x3e, 0xf0, 0x48, 0xb7, 0x3b, 0x76, 0xe7, 0xbb, 0x54, 0xdf,
0x3c, 0x8f, 0xbc, 0x25, 0xcd, 0xaa, 0xef, 0xb1, 0x8c, 0x7f, 0x3a, 0x59, 0x59, 0x87, 0x2d, 0x11,
0xe2, 0x9f, 0x4e, 0x1a, 0x17, 0x2c, 0xe0, 0x02, 0x8b, 0x2d, 0x29, 0xc0, 0xce, 0x65, 0xb1, 0x33,
0x0b, 0x31, 0xf1, 0x12, 0xa3, 0x74, 0xc8, 0x3e, 0x3c, 0x87, 0xc5, 0x17, 0x02, 0x36, 0xf5, 0x73,
- 0x07, 0xec, 0xe7, 0xac, 0xf4, 0xe5, 0x6b, 0xa0, 0x7f, 0xc4, 0xb6, 0xe3, 0x47, 0x77, 0x34, 0xc4,
- 0x91, 0xb6, 0xac, 0x4d, 0xb9, 0x32, 0xcd, 0x61, 0x58, 0xb2, 0xb1, 0x63, 0xb6, 0xda, 0xfe, 0xbf,
- 0x48, 0x57, 0xeb, 0x5b, 0xab, 0x1c, 0x1f, 0xd6, 0x03, 0x76, 0x49, 0xff, 0x74, 0xc2, 0x35, 0xca,
- 0xe0, 0x3d, 0x18, 0xff, 0x74, 0x02, 0xba, 0xfc, 0xe3, 0xd4, 0x4a, 0x0b, 0x9e, 0x59, 0x7f, 0x2e,
- 0x79, 0xd1, 0x93, 0x28, 0xa2, 0x32, 0xc9, 0x22, 0xea, 0x9b, 0x2c, 0x71, 0xb9, 0xc3, 0xa5, 0x6a,
- 0x09, 0x34, 0xd1, 0x54, 0x44, 0x0d, 0x2a, 0xa7, 0xdf, 0x4f, 0x33, 0x7d, 0x41, 0xa7, 0xf0, 0xac,
- 0x9c, 0x28, 0x2e, 0x88, 0xa5, 0x95, 0x0b, 0x62, 0x1f, 0xb3, 0x6d, 0xa5, 0xb3, 0x08, 0xf9, 0x2b,
- 0xc3, 0x93, 0xc9, 0x56, 0xdc, 0x5a, 0x84, 0x5c, 0xae, 0x92, 0xf1, 0xbe, 0x25, 0xa5, 0x47, 0x49,
- 0xf6, 0x02, 0x80, 0xca, 0x7d, 0xa1, 0xb5, 0xc4, 0x7d, 0xa1, 0x3b, 0xac, 0x30, 0xe9, 0x9f, 0xba,
- 0xde, 0x34, 0x0a, 0x46, 0x5e, 0x48, 0x5b, 0x19, 0x9b, 0xf4, 0x4f, 0x4d, 0x84, 0xe8, 0xbb, 0x50,
- 0xf6, 0xf3, 0xf4, 0x03, 0xf8, 0x0d, 0xbe, 0x9a, 0xe7, 0x09, 0x23, 0xc8, 0x57, 0x96, 0xc2, 0x5a,
- 0xfa, 0x71, 0x0a, 0xfb, 0xe7, 0x48, 0x8a, 0x7b, 0xff, 0xd9, 0x7b, 0x3d, 0xb8, 0xc6, 0x89, 0x9a,
- 0x49, 0xb7, 0xac, 0x02, 0xc2, 0x30, 0x97, 0xde, 0x63, 0x9b, 0x63, 0xdf, 0xff, 0xe2, 0x78, 0xa6,
- 0x64, 0xd3, 0xac, 0x55, 0x40, 0x18, 0x92, 0x7c, 0xc8, 0xb6, 0xb8, 0xed, 0xbc, 0x21, 0xd1, 0x64,
- 0xa9, 0x3d, 0x8b, 0x40, 0x4c, 0xba, 0x0f, 0xb0, 0xd0, 0x92, 0x57, 0xc0, 0xe2, 0x6d, 0x6c, 0xd5,
- 0xbd, 0xac, 0xd2, 0x9f, 0x51, 0x1d, 0x13, 0xf3, 0xac, 0xbe, 0xc3, 0x75, 0x9b, 0xb1, 0xe0, 0x94,
- 0x1a, 0x20, 0xa1, 0xd8, 0x11, 0x82, 0xd3, 0x1e, 0x02, 0x00, 0x1d, 0xc5, 0x68, 0x9c, 0x43, 0x3e,
- 0x92, 0xe8, 0x1b, 0x2c, 0x17, 0x9c, 0xba, 0xb0, 0x81, 0x84, 0xa4, 0xfc, 0x46, 0x70, 0x5a, 0x81,
- 0x47, 0x6e, 0x3d, 0x81, 0xc2, 0x6d, 0x6f, 0x23, 0x22, 0x14, 0x8e, 0x09, 0xa7, 0xba, 0x99, 0x37,
- 0xe4, 0xab, 0xca, 0xc7, 0xac, 0x21, 0x80, 0xc6, 0x14, 0xe8, 0x0d, 0x31, 0xa6, 0x40, 0xef, 0xb0,
- 0x7c, 0x70, 0x8a, 0xc7, 0x8f, 0x90, 0x4a, 0x95, 0x5c, 0x70, 0x6a, 0xf2, 0x67, 0x40, 0x46, 0x12,
- 0x89, 0x95, 0x4a, 0x2e, 0x12, 0xc8, 0xbb, 0x6c, 0x33, 0x38, 0x75, 0x5f, 0x07, 0xfd, 0x89, 0x07,
- 0x24, 0x54, 0xa8, 0xb0, 0xe0, 0xb4, 0x0e, 0x20, 0x93, 0xdf, 0x5a, 0x2c, 0x04, 0xa7, 0xae, 0x7f,
- 0xe2, 0x05, 0x9c, 0xa0, 0x20, 0x54, 0xeb, 0x9e, 0x78, 0x01, 0xe0, 0x6f, 0x71, 0xcd, 0x07, 0xc1,
- 0x80, 0xa3, 0x37, 0xc5, 0xe0, 0xd5, 0x60, 0x80, 0xdc, 0x6c, 0xe0, 0x8f, 0xc7, 0xa3, 0x90, 0xea,
- 0x16, 0xda, 0xeb, 0x05, 0x64, 0xa1, 0x42, 0xdc, 0x3e, 0x47, 0x85, 0x78, 0x71, 0xb1, 0x42, 0x2c,
- 0x3d, 0xc6, 0x8e, 0x3d, 0x76, 0xf8, 0x16, 0x4a, 0x9b, 0x55, 0xef, 0xba, 0xf6, 0x31, 0xee, 0xb1,
- 0xa9, 0x87, 0x0e, 0xe7, 0x05, 0xff, 0xef, 0x45, 0x43, 0xe9, 0xc7, 0x69, 0x0c, 0x1d, 0x45, 0x9d,
- 0x33, 0xd4, 0xe0, 0xcb, 0xe7, 0xbd, 0x4e, 0xc4, 0x4d, 0x2e, 0xf0, 0x5e, 0xcb, 0xa0, 0x49, 0x68,
- 0x93, 0xf9, 0x32, 0x6d, 0xb2, 0xf3, 0x25, 0xcc, 0x57, 0xd5, 0x9a, 0xaa, 0xb0, 0x4d, 0xb2, 0x14,
- 0x9f, 0x11, 0xe5, 0x96, 0x3b, 0x2b, 0x7a, 0xa5, 0xc2, 0x9c, 0x56, 0x01, 0x9f, 0x6d, 0xe0, 0x81,
- 0x63, 0xdb, 0x76, 0x6c, 0x19, 0x7e, 0x78, 0xfb, 0xb2, 0x2b, 0x8c, 0x67, 0x76, 0x72, 0xd3, 0x2b,
- 0x3b, 0xb9, 0x99, 0x73, 0x76, 0x72, 0x4f, 0xd4, 0xa5, 0x82, 0xb4, 0xfa, 0x16, 0x34, 0x92, 0x47,
- 0xc9, 0xc2, 0x4a, 0x8d, 0x80, 0x04, 0xef, 0x87, 0xea, 0x0f, 0xf1, 0x0e, 0xb0, 0xa8, 0xd0, 0x6e,
- 0xad, 0xe0, 0xe0, 0x34, 0x78, 0x43, 0x38, 0x2c, 0xfd, 0xbd, 0x14, 0x3a, 0x1f, 0xa2, 0xe4, 0xa6,
- 0x73, 0x85, 0xad, 0xf1, 0xab, 0x83, 0xe2, 0x45, 0x2b, 0x7f, 0x58, 0xb8, 0x18, 0x9b, 0x5e, 0xbc,
- 0x18, 0x0b, 0x5e, 0x00, 0x3b, 0x03, 0x97, 0x27, 0x76, 0xdd, 0xfc, 0xa4, 0x7f, 0xca, 0xab, 0xf1,
- 0x50, 0x2f, 0x26, 0x7b, 0xf6, 0x5b, 0xf1, 0x4e, 0xfe, 0x1d, 0xb5, 0x13, 0xb4, 0xd8, 0x3e, 0x38,
- 0xe3, 0x2d, 0xd5, 0xaf, 0xe3, 0xfb, 0x5f, 0xa5, 0xcb, 0x82, 0xbe, 0x5e, 0x66, 0x97, 0xc8, 0x67,
- 0x39, 0x50, 0x0d, 0xa3, 0x8b, 0x88, 0xa8, 0xf4, 0xa7, 0x98, 0xcc, 0xf5, 0xaf, 0xb1, 0x8b, 0xdc,
- 0x79, 0x15, 0x4a, 0x8c, 0xa7, 0x2d, 0x00, 0x4b, 0xba, 0xd2, 0x1f, 0x52, 0x4c, 0xe1, 0x60, 0x32,
- 0xa6, 0x56, 0xa8, 0x36, 0x57, 0xb7, 0xa7, 0xe7, 0xea, 0x76, 0x18, 0x35, 0xee, 0x70, 0xab, 0x81,
- 0xb5, 0x85, 0xe0, 0xe6, 0x14, 0xe9, 0x4a, 0x8c, 0xab, 0x11, 0x53, 0x61, 0x74, 0x15, 0x00, 0x28,
- 0x68, 0xbe, 0xaa, 0xf8, 0x7a, 0xca, 0x58, 0x6c, 0x43, 0x8a, 0xae, 0x7b, 0x67, 0xb5, 0xb4, 0xd0,
- 0x9f, 0xf2, 0xf0, 0x1b, 0xa3, 0xeb, 0xb7, 0xb0, 0x4b, 0x8e, 0x24, 0x67, 0x5e, 0xc4, 0x57, 0x2d,
- 0x97, 0x5e, 0xd1, 0x54, 0xcb, 0xfc, 0xbc, 0x4d, 0xb5, 0x7f, 0x43, 0x2e, 0x8d, 0x04, 0xd2, 0xa5,
- 0xe9, 0x1a, 0x3a, 0xbe, 0x82, 0x4e, 0xc9, 0x6b, 0xe8, 0x6d, 0xfe, 0x0e, 0xf4, 0x36, 0x4d, 0x1a,
- 0x9d, 0x9e, 0xd6, 0x09, 0x20, 0xce, 0x52, 0xc7, 0xcf, 0x2c, 0x71, 0x7c, 0x92, 0x2f, 0x3a, 0x81,
- 0x42, 0x3e, 0xb8, 0x8e, 0x44, 0x0e, 0xfc, 0xb1, 0x1f, 0xd0, 0xca, 0x00, 0xb2, 0x0a, 0xcf, 0xa5,
- 0xdf, 0x54, 0x5d, 0x0a, 0x63, 0xff, 0x5b, 0xb2, 0xee, 0x4a, 0xad, 0xb8, 0x10, 0xa3, 0x5a, 0x57,
- 0x96, 0x65, 0x5f, 0x9a, 0x01, 0x14, 0xb7, 0x15, 0x19, 0xe0, 0x84, 0xdd, 0xe3, 0x5d, 0xc3, 0x44,
- 0xbf, 0x50, 0x86, 0xdf, 0xd1, 0xf2, 0x0b, 0x4f, 0xa9, 0x2f, 0xa9, 0x83, 0xe7, 0x9a, 0x89, 0xcb,
- 0xda, 0x95, 0x63, 0xdc, 0x2b, 0x13, 0xe3, 0xfe, 0xf2, 0x46, 0x33, 0xb1, 0x2d, 0xf9, 0xa3, 0x63,
- 0xef, 0x98, 0xea, 0x7c, 0x1a, 0x8b, 0x37, 0x75, 0xb0, 0xee, 0x14, 0x5e, 0x21, 0xcf, 0xcd, 0x1a,
- 0xcb, 0xc4, 0x17, 0x6c, 0xe0, 0x67, 0x29, 0x40, 0xa5, 0x15, 0x31, 0x93, 0xd1, 0xd4, 0xe5, 0x2f,
- 0x06, 0xaa, 0xac, 0xa0, 0xc8, 0xa5, 0x75, 0x5b, 0x74, 0xdb, 0x05, 0x0d, 0xb0, 0xda, 0xa5, 0x8b,
- 0x65, 0x4b, 0xde, 0x38, 0x2c, 0x1b, 0xb3, 0x7f, 0xfa, 0x4b, 0x1e, 0xf3, 0x9f, 0x50, 0xa3, 0x46,
- 0xe1, 0x4c, 0x58, 0xff, 0x2b, 0x19, 0xf8, 0x3c, 0x87, 0xab, 0x65, 0x6b, 0xf9, 0x77, 0x53, 0x98,
- 0x60, 0x28, 0x75, 0xf2, 0x41, 0xc0, 0x1f, 0x70, 0xb4, 0x38, 0x09, 0xf3, 0x67, 0x3c, 0x26, 0x29,
- 0x6d, 0x23, 0xbc, 0x3f, 0x55, 0x49, 0x9c, 0x4f, 0x56, 0x35, 0xee, 0x57, 0xe8, 0x4f, 0x47, 0x93,
- 0x87, 0x78, 0x3b, 0x02, 0x89, 0x0e, 0x79, 0xad, 0x01, 0x51, 0x28, 0xb7, 0xac, 0x25, 0xf7, 0xb6,
- 0x4a, 0x87, 0x78, 0x5e, 0x5d, 0xc2, 0x33, 0x1b, 0xbf, 0x5d, 0x7a, 0xd3, 0xeb, 0x5b, 0x6c, 0x9d,
- 0x53, 0x8b, 0xcf, 0x24, 0x6e, 0xaf, 0x7a, 0x49, 0xca, 0xa9, 0x2c, 0x22, 0x2e, 0x99, 0x0b, 0x97,
- 0xa2, 0xd0, 0x4e, 0x2b, 0x5e, 0x03, 0x48, 0xdb, 0x65, 0x12, 0xb6, 0x2b, 0xb5, 0x55, 0xe7, 0x3b,
- 0xdf, 0x29, 0x27, 0x21, 0x2e, 0x9d, 0x14, 0xf7, 0xe7, 0x74, 0x9a, 0x53, 0xe4, 0xfd, 0x22, 0x72,
- 0x12, 0x67, 0x98, 0xcc, 0xc2, 0x19, 0x46, 0x39, 0x18, 0x65, 0xe7, 0x0f, 0x46, 0x89, 0x73, 0xc8,
- 0xda, 0xdc, 0x39, 0x64, 0x7e, 0x0f, 0x5d, 0x3f, 0xc7, 0x1e, 0xba, 0xb1, 0xe4, 0x1c, 0x30, 0x41,
- 0x07, 0x0d, 0xfc, 0xb1, 0x27, 0xcd, 0xf5, 0x98, 0x65, 0xe1, 0x79, 0xe5, 0x2b, 0xc8, 0x81, 0x3f,
- 0x8d, 0x02, 0x7f, 0x3c, 0xf6, 0x02, 0xce, 0x67, 0x71, 0x6a, 0x18, 0xee, 0xd0, 0x9b, 0x7a, 0x34,
- 0x20, 0x19, 0x22, 0x6b, 0x6d, 0xc6, 0xc0, 0xe6, 0xb0, 0xf4, 0xbb, 0x14, 0x10, 0xfd, 0xf0, 0xed,
- 0x74, 0x20, 0x76, 0xdc, 0x8f, 0xd8, 0x76, 0x5c, 0x5b, 0xf0, 0x1e, 0x27, 0x35, 0x65, 0x44, 0x69,
- 0xc1, 0xbb, 0x9c, 0x9f, 0x30, 0x4d, 0xf9, 0x86, 0x49, 0xdc, 0xb2, 0x01, 0xba, 0x6d, 0x80, 0xdb,
- 0x1c, 0xcc, 0x29, 0xcb, 0xec, 0x52, 0xe2, 0xa5, 0x34, 0x27, 0xc5, 0xfa, 0xee, 0x22, 0x20, 0x2c,
- 0x84, 0xf3, 0x9b, 0x4b, 0xaf, 0xd8, 0x36, 0xdf, 0x57, 0xdb, 0xfe, 0x70, 0x6f, 0x36, 0x84, 0x4c,
- 0x85, 0xed, 0x7a, 0x7c, 0x2b, 0x92, 0x1e, 0xf1, 0x6f, 0x76, 0xe4, 0x2b, 0x38, 0xda, 0xad, 0x6e,
- 0xae, 0x7e, 0x49, 0x67, 0x61, 0x99, 0xd0, 0xf6, 0x87, 0xa5, 0x1e, 0xbb, 0xc8, 0x45, 0xf3, 0x52,
- 0xc3, 0xe2, 0x51, 0xf3, 0x03, 0x56, 0x50, 0xf6, 0xb5, 0x95, 0x5d, 0x2e, 0x75, 0xef, 0x63, 0x13,
- 0x29, 0xa3, 0xf4, 0x82, 0x5d, 0xac, 0x8f, 0xfd, 0x37, 0xbc, 0x4f, 0xb5, 0x42, 0xdb, 0xc7, 0x2c,
- 0x27, 0xae, 0x0a, 0x91, 0xb2, 0x37, 0x56, 0xde, 0x25, 0xb2, 0x36, 0xe0, 0x17, 0xa8, 0xea, 0xb2,
- 0x2b, 0x20, 0x98, 0x57, 0xbe, 0x67, 0x49, 0xff, 0x36, 0xcb, 0xcb, 0x2b, 0x26, 0x2b, 0x6d, 0x21,
- 0x29, 0x2c, 0x3c, 0x76, 0xc0, 0x00, 0xdf, 0x65, 0x6b, 0x30, 0x40, 0xa8, 0x3f, 0x60, 0x6b, 0xa3,
- 0xc8, 0x9b, 0x88, 0xb9, 0xef, 0x2c, 0x57, 0x8e, 0xb6, 0x7d, 0x4e, 0x59, 0xfa, 0x3e, 0x5b, 0xe7,
- 0x76, 0x0c, 0xa1, 0x68, 0x50, 0x99, 0x57, 0x19, 0x8e, 0x17, 0x26, 0x82, 0xfb, 0x29, 0x63, 0x72,
- 0x6a, 0xe7, 0x90, 0xa0, 0x1c, 0x6b, 0x84, 0x84, 0x11, 0x2b, 0x80, 0x84, 0xea, 0x51, 0x7f, 0x7a,
- 0xe8, 0x85, 0xfa, 0x37, 0xd8, 0x7a, 0xe4, 0xbb, 0xfd, 0xa1, 0xb8, 0xac, 0xa9, 0x27, 0x64, 0xf0,
- 0x59, 0x5a, 0x6b, 0x91, 0x6f, 0x0c, 0x87, 0xfa, 0x7d, 0x96, 0x8f, 0x7c, 0x72, 0x43, 0x32, 0xd7,
- 0x32, 0xea, 0x5c, 0xe4, 0xa3, 0x4b, 0x42, 0x41, 0xa8, 0x49, 0x6d, 0xc5, 0x80, 0x9f, 0xce, 0x0d,
- 0x78, 0x7d, 0x41, 0x04, 0x4e, 0x4e, 0x8c, 0xfa, 0x78, 0x71, 0xd4, 0x95, 0x2c, 0x72, 0x68, 0xe2,
- 0x3a, 0xe6, 0xeb, 0x4e, 0x1d, 0xee, 0xb3, 0xb8, 0xd0, 0x41, 0x4a, 0x36, 0xcb, 0xf5, 0x28, 0x48,
- 0x97, 0x39, 0x8b, 0x0c, 0xeb, 0x95, 0xce, 0x22, 0x29, 0xac, 0x9c, 0x88, 0xf6, 0xd2, 0x0b, 0x96,
- 0x47, 0xa1, 0xdd, 0xe3, 0x68, 0x41, 0xea, 0x77, 0x19, 0x8b, 0xef, 0x10, 0x91, 0xd8, 0x9d, 0x55,
- 0x62, 0xfd, 0xe3, 0xc8, 0x22, 0x25, 0xba, 0xc7, 0xb0, 0xa5, 0x15, 0xd0, 0xa8, 0xe6, 0x89, 0x37,
- 0x5d, 0x14, 0xfd, 0x57, 0x59, 0x41, 0xc9, 0x30, 0x2b, 0x2b, 0x53, 0x85, 0xa6, 0x71, 0xc1, 0x62,
- 0x71, 0xf2, 0xa9, 0x6c, 0xb0, 0x35, 0x0f, 0x24, 0x97, 0xff, 0x5b, 0x8a, 0x15, 0x24, 0xe9, 0xd4,
- 0xd7, 0x35, 0xb6, 0xd9, 0xad, 0xf7, 0x7a, 0x6e, 0xb3, 0xb3, 0x6f, 0xb4, 0x9a, 0x35, 0xed, 0x82,
- 0xae, 0xb1, 0x1c, 0x87, 0xb4, 0x8d, 0x97, 0xda, 0xbb, 0x9f, 0xbd, 0x7f, 0xbf, 0xa1, 0x5f, 0x91,
- 0x34, 0x6e, 0xaf, 0x6b, 0x39, 0xda, 0xff, 0x7c, 0x0f, 0x50, 0x9d, 0x31, 0x0e, 0x75, 0x8c, 0x4a,
- 0xcb, 0xd4, 0xfe, 0x17, 0x87, 0x5d, 0x66, 0x05, 0x0e, 0xeb, 0x74, 0xad, 0xb6, 0xd1, 0xd2, 0x7e,
- 0x92, 0x20, 0xac, 0xb7, 0xba, 0xdd, 0x9a, 0xf6, 0xbf, 0x39, 0x4c, 0x0c, 0x62, 0xb4, 0x5a, 0xda,
- 0x4f, 0x39, 0xe4, 0x3a, 0xbb, 0xc8, 0x21, 0xd5, 0x6e, 0xc7, 0xb1, 0xba, 0xad, 0x96, 0x69, 0x69,
- 0xff, 0x27, 0xc1, 0xde, 0xea, 0x56, 0x8d, 0x96, 0xf6, 0xb3, 0x24, 0x7b, 0xe7, 0x95, 0xf6, 0x1e,
- 0x20, 0xe5, 0xff, 0xb8, 0x86, 0x2f, 0x91, 0xf9, 0x5e, 0xbc, 0xcd, 0x59, 0x1c, 0xb7, 0x61, 0xb6,
- 0x5a, 0x5d, 0xed, 0x82, 0x7c, 0x36, 0x2d, 0xab, 0x6b, 0x69, 0x29, 0xfd, 0x2a, 0xbb, 0x84, 0xcf,
- 0xd5, 0x46, 0xd7, 0xb5, 0xcc, 0xe7, 0x7b, 0xa6, 0xed, 0x68, 0x69, 0xfd, 0x32, 0x57, 0x41, 0x82,
- 0x7b, 0xad, 0x57, 0x5a, 0x26, 0xa6, 0x7d, 0xd9, 0x33, 0xad, 0x66, 0xdb, 0xec, 0x38, 0xa6, 0xa5,
- 0x65, 0xf5, 0x1b, 0xec, 0x2a, 0x07, 0xd7, 0x4d, 0xc3, 0xd9, 0xb3, 0x4c, 0x5b, 0x8a, 0x59, 0xd3,
- 0xaf, 0xb3, 0xcb, 0xf3, 0x28, 0x10, 0xb5, 0xae, 0xef, 0xb0, 0xeb, 0x1c, 0xb1, 0x6b, 0x3a, 0x30,
- 0xcd, 0x7a, 0x73, 0x57, 0x72, 0x6d, 0x48, 0x81, 0x09, 0x24, 0xf0, 0xe5, 0xa4, 0x5e, 0xb6, 0x44,
- 0x69, 0x79, 0x5d, 0x67, 0xdb, 0x1c, 0xd8, 0x33, 0xaa, 0xcf, 0x4c, 0xc7, 0x6d, 0x76, 0x34, 0x26,
- 0x75, 0xad, 0xb7, 0xba, 0x2f, 0x5c, 0xcb, 0x6c, 0x77, 0xf7, 0xcd, 0x9a, 0x56, 0xd0, 0xaf, 0x30,
- 0x0d, 0x49, 0xbb, 0x96, 0xe3, 0xda, 0x8e, 0xe1, 0xec, 0xd9, 0xda, 0xa6, 0x94, 0x4a, 0x02, 0xba,
- 0x7b, 0x8e, 0xb6, 0xa5, 0x5f, 0x62, 0x5b, 0xb1, 0x84, 0x76, 0xb7, 0xa6, 0x6d, 0xcb, 0x81, 0x76,
- 0xad, 0xee, 0x5e, 0x8f, 0xc3, 0x2e, 0x4a, 0x32, 0x2e, 0x11, 0x40, 0x9a, 0x24, 0xe3, 0xee, 0xc0,
- 0x61, 0x97, 0xf4, 0x9b, 0xec, 0x1a, 0x87, 0xb5, 0xf7, 0x5a, 0x4e, 0xb3, 0x67, 0x58, 0x8e, 0x9c,
- 0xaf, 0xae, 0x17, 0xd9, 0x95, 0x05, 0x1c, 0x4c, 0xf7, 0xb2, 0xc4, 0x54, 0x0c, 0xcb, 0x6a, 0x9a,
- 0x96, 0xe4, 0xb9, 0xa2, 0x5f, 0x63, 0xfa, 0x1c, 0x06, 0x38, 0xae, 0xea, 0xf7, 0xd8, 0x6d, 0x0e,
- 0x7f, 0xbe, 0x67, 0xee, 0x99, 0xcb, 0xcc, 0x7b, 0x4d, 0xbf, 0xc3, 0x76, 0x56, 0x91, 0x80, 0x8c,
- 0xeb, 0xd2, 0x76, 0x56, 0xb7, 0x65, 0x4a, 0xbe, 0xa2, 0xb4, 0x12, 0x81, 0x81, 0xf6, 0x86, 0x9c,
- 0x17, 0x88, 0x31, 0xec, 0x57, 0x9d, 0xaa, 0x64, 0xb8, 0x29, 0xb5, 0x57, 0x71, 0xc0, 0xb5, 0x23,
- 0x2d, 0x64, 0x0b, 0x8c, 0x76, 0x4b, 0xc2, 0xda, 0xa6, 0x63, 0x5a, 0xdc, 0x6a, 0xb7, 0xcb, 0x55,
- 0xbc, 0x85, 0x31, 0xf7, 0x67, 0x08, 0x88, 0xb4, 0xc1, 0xd7, 0x5a, 0xc4, 0x2a, 0x0e, 0x06, 0xb0,
- 0x7d, 0xd3, 0xb2, 0x9b, 0xdd, 0x4e, 0xa5, 0xe9, 0xb4, 0x8d, 0x9e, 0x96, 0x2a, 0x7b, 0x58, 0xcd,
- 0x50, 0x65, 0x8c, 0x9d, 0x02, 0xf4, 0x83, 0xaa, 0x5b, 0xb7, 0x8c, 0x5d, 0x11, 0xa2, 0x17, 0x48,
- 0x2e, 0x41, 0x6b, 0x56, 0xb7, 0xa7, 0xa5, 0x68, 0xd6, 0x04, 0xb3, 0x4c, 0xc3, 0x6e, 0x6b, 0xe9,
- 0x24, 0x61, 0xdb, 0xb0, 0x9f, 0x69, 0x99, 0xf2, 0x53, 0x1c, 0x06, 0xdf, 0x24, 0x50, 0xd1, 0x44,
- 0xce, 0x51, 0x55, 0xf4, 0x24, 0xe7, 0xae, 0xba, 0x35, 0xb3, 0x67, 0x99, 0x55, 0xc3, 0x31, 0x6b,
- 0x42, 0xc2, 0xaf, 0xe1, 0x37, 0xd0, 0x78, 0x57, 0x9c, 0x58, 0xd5, 0x29, 0x6e, 0xb3, 0x3c, 0x82,
- 0x20, 0x1f, 0xfd, 0x2c, 0x15, 0x3f, 0x43, 0xea, 0x78, 0x9f, 0x2a, 0xff, 0x07, 0xaa, 0xdb, 0x12,
- 0x7d, 0x04, 0xcc, 0x6a, 0xaa, 0x06, 0x72, 0x46, 0xe0, 0xd8, 0x10, 0x03, 0xb6, 0x96, 0x92, 0x06,
- 0x41, 0x9f, 0x45, 0x68, 0x5a, 0x92, 0xca, 0x70, 0xb1, 0xb5, 0xac, 0x24, 0xc5, 0x28, 0x40, 0x68,
- 0x8e, 0xf4, 0xad, 0xba, 0xcd, 0x1e, 0x59, 0xe9, 0xae, 0x24, 0x44, 0x47, 0x43, 0xc2, 0xa7, 0xfa,
- 0x35, 0xee, 0x5d, 0x24, 0xb3, 0xd2, 0xea, 0x56, 0x9f, 0x99, 0x35, 0xed, 0x5d, 0xba, 0x7c, 0xa2,
- 0x7c, 0x02, 0x9f, 0x30, 0xdf, 0x12, 0xe5, 0x05, 0x7b, 0xad, 0xfb, 0xa2, 0xa3, 0xa5, 0x62, 0xba,
- 0x0e, 0x24, 0xab, 0xea, 0xbe, 0x96, 0x15, 0xc9, 0x9c, 0x83, 0xea, 0x2f, 0x6a, 0xda, 0x5d, 0x8a,
- 0x18, 0x84, 0xc4, 0x99, 0xe2, 0x69, 0xf9, 0xaf, 0xcd, 0xbd, 0x43, 0x11, 0xa6, 0xef, 0xd9, 0x8b,
- 0xc3, 0xda, 0x6e, 0xab, 0xd9, 0x79, 0x36, 0x37, 0xac, 0x2d, 0x67, 0x91, 0xa6, 0xf4, 0xca, 0xe9,
- 0xf6, 0x4d, 0x2d, 0x5b, 0xfe, 0xb3, 0x34, 0x7e, 0x78, 0xc2, 0xa5, 0xcb, 0xde, 0x11, 0x31, 0xd6,
- 0x95, 0x01, 0x24, 0xe8, 0xc1, 0x67, 0xed, 0x8a, 0xdb, 0xa8, 0xc5, 0xe2, 0x09, 0x54, 0xaf, 0x49,
- 0xbf, 0xe3, 0x20, 0x22, 0xcb, 0xce, 0xc3, 0xea, 0x35, 0x2d, 0x27, 0x66, 0x5f, 0x77, 0x1f, 0xec,
- 0x72, 0x2a, 0x2d, 0x09, 0xa9, 0x83, 0x3d, 0x14, 0xf1, 0x08, 0x7a, 0xaa, 0xeb, 0x02, 0xf4, 0x98,
- 0x40, 0xef, 0xc0, 0xff, 0x63, 0xf1, 0x04, 0x4c, 0xeb, 0x97, 0xa4, 0x34, 0x07, 0x41, 0x60, 0xf0,
- 0x02, 0x82, 0xba, 0x4e, 0xc3, 0xb4, 0xb4, 0x77, 0xb9, 0x98, 0xa8, 0xda, 0xed, 0xf5, 0x00, 0xa4,
- 0xc5, 0x44, 0xf5, 0x66, 0x05, 0x20, 0x77, 0xe3, 0x21, 0x8d, 0x3d, 0xa7, 0xdb, 0x31, 0x77, 0xb5,
- 0x77, 0x4f, 0xf5, 0x4b, 0x82, 0xaa, 0x67, 0xec, 0xd9, 0xa6, 0xf6, 0xee, 0x5d, 0x4a, 0xbf, 0xc6,
- 0x5d, 0x49, 0x80, 0x20, 0x67, 0xb4, 0xb5, 0x77, 0xef, 0xd2, 0xe5, 0x9a, 0xe2, 0x34, 0x74, 0x9d,
- 0x75, 0x8b, 0x47, 0x45, 0xcf, 0x72, 0x8d, 0x1a, 0xee, 0xe1, 0x9b, 0xf8, 0x58, 0x33, 0x5b, 0xa6,
- 0x63, 0x6a, 0xa9, 0x18, 0xd2, 0xee, 0xd6, 0x9a, 0xf5, 0x57, 0x5a, 0xba, 0xfc, 0x08, 0x5d, 0x20,
- 0xfe, 0xb3, 0x02, 0x64, 0xd4, 0x36, 0x77, 0xfa, 0x4e, 0xcd, 0xb0, 0x40, 0x12, 0x0a, 0x6e, 0x3b,
- 0x6e, 0xf7, 0x65, 0x5b, 0x4b, 0x95, 0xbf, 0x88, 0xff, 0x6e, 0x00, 0xff, 0x43, 0x00, 0x24, 0xf7,
- 0x65, 0xbb, 0xea, 0x76, 0x5e, 0xb6, 0xdd, 0xcf, 0xe4, 0xd8, 0x02, 0xf2, 0x40, 0x4b, 0xe9, 0x3b,
- 0x3c, 0xfa, 0x01, 0xd2, 0xed, 0x99, 0x1d, 0x1e, 0x81, 0x15, 0xc3, 0x6e, 0x56, 0x61, 0x32, 0xfa,
- 0x0d, 0xbe, 0x5b, 0x02, 0x32, 0xb1, 0xc3, 0xbe, 0x7f, 0x9f, 0x29, 0xff, 0xa3, 0x1c, 0xbb, 0xbc,
- 0xe4, 0x53, 0x7c, 0x72, 0xea, 0x97, 0xa0, 0x54, 0xbd, 0x22, 0xab, 0x92, 0x0b, 0x94, 0x96, 0x55,
- 0x78, 0xe3, 0x15, 0xe2, 0x52, 0xb4, 0x29, 0x0b, 0x5c, 0xdb, 0x74, 0x8c, 0x9a, 0xe1, 0x18, 0x5a,
- 0x7a, 0x4e, 0x98, 0xe9, 0x34, 0xdc, 0x9a, 0xed, 0x68, 0x99, 0x25, 0x70, 0xdb, 0xaa, 0x6a, 0xd9,
- 0x39, 0x41, 0x00, 0x77, 0x5e, 0xf5, 0x4c, 0xb9, 0xed, 0x0b, 0xc4, 0x7e, 0xcb, 0xe8, 0xb8, 0xfb,
- 0xcd, 0x9a, 0xb6, 0xbe, 0x0c, 0xd1, 0xab, 0xf6, 0xb4, 0x8d, 0xf9, 0x79, 0xf4, 0xdc, 0x9a, 0x5d,
- 0xed, 0x69, 0x39, 0xda, 0x8a, 0x14, 0xb8, 0x59, 0xed, 0x68, 0xf9, 0x39, 0x39, 0xcd, 0x9e, 0xdb,
- 0xb3, 0xba, 0x4e, 0x57, 0x63, 0x0b, 0x88, 0xfd, 0xc7, 0x5c, 0xd7, 0xc2, 0x32, 0x04, 0x4c, 0x6e,
- 0x73, 0x6e, 0x64, 0xa7, 0xda, 0xe3, 0x0c, 0x5b, 0x4b, 0xe0, 0x40, 0xbf, 0x3d, 0x07, 0xdf, 0xab,
- 0x21, 0xfd, 0xc5, 0x25, 0x70, 0xa0, 0xd7, 0xe6, 0x06, 0xb6, 0xab, 0x0e, 0x32, 0x5c, 0x5a, 0x86,
- 0xa8, 0xf1, 0x72, 0x60, 0x6e, 0xed, 0xaa, 0x6d, 0x50, 0x96, 0x5b, 0xf6, 0xf2, 0x72, 0x5c, 0xb5,
- 0x5b, 0x33, 0xb5, 0x2b, 0x73, 0xb6, 0x32, 0xac, 0x9e, 0xdb, 0xed, 0x69, 0x57, 0xe7, 0x14, 0x03,
- 0xb0, 0xdd, 0x33, 0xb4, 0x6b, 0x4b, 0xe0, 0x4e, 0xcf, 0xd0, 0xae, 0x2f, 0xa3, 0x6f, 0x18, 0x5a,
- 0x71, 0x19, 0x7d, 0xc3, 0xd0, 0x6e, 0x2c, 0x5a, 0xf6, 0x09, 0x9f, 0xe0, 0xcd, 0x65, 0x08, 0x98,
- 0xe0, 0xce, 0xfc, 0x24, 0x00, 0x51, 0x6f, 0x19, 0x15, 0xb3, 0xa5, 0xdd, 0x5a, 0x36, 0xc1, 0x27,
- 0x38, 0xf9, 0xdb, 0xcb, 0x71, 0x7c, 0xf2, 0x1f, 0xe8, 0xb7, 0xd9, 0x8d, 0x79, 0x99, 0x9d, 0x9a,
- 0xeb, 0x18, 0xd6, 0xae, 0xe9, 0x68, 0x77, 0x96, 0x0d, 0xd9, 0xa9, 0xb9, 0x76, 0xab, 0xa5, 0xdd,
- 0x5d, 0x81, 0x73, 0x5a, 0x2d, 0xed, 0x1e, 0xed, 0xd6, 0x32, 0x56, 0x7a, 0x2d, 0xdb, 0x45, 0x4d,
- 0x4b, 0x73, 0xf6, 0xe0, 0x28, 0xa7, 0xaa, 0x7d, 0x38, 0x1f, 0x5e, 0x00, 0xaf, 0x74, 0x6d, 0xed,
- 0xa3, 0x39, 0x44, 0xaf, 0x52, 0x71, 0x9b, 0x76, 0xb3, 0xa6, 0x7d, 0x4c, 0xa5, 0x8b, 0x74, 0xb5,
- 0xbd, 0x4e, 0xc7, 0x6c, 0xb9, 0xcd, 0x9a, 0xf6, 0xb5, 0x65, 0xaa, 0x99, 0x2f, 0x9d, 0x46, 0xcd,
- 0xd2, 0xbe, 0x5e, 0x7e, 0x84, 0xa7, 0x17, 0xfe, 0xe1, 0xf8, 0x68, 0xa8, 0x5f, 0xe4, 0x49, 0x73,
- 0xbf, 0x59, 0x73, 0x3b, 0xdd, 0x8e, 0xc9, 0xb7, 0xac, 0x6d, 0x02, 0xf4, 0x2c, 0xd3, 0x36, 0x3b,
- 0x8e, 0xf6, 0xee, 0x6e, 0xf9, 0x3f, 0xa5, 0xb0, 0x8f, 0x37, 0x9a, 0x9d, 0x3c, 0xa1, 0x0f, 0x9d,
- 0xc5, 0x6d, 0x54, 0xa0, 0x6e, 0x9a, 0x8d, 0x85, 0x3d, 0x09, 0x60, 0x20, 0xf2, 0x25, 0xe4, 0x0e,
- 0xdc, 0xdf, 0x00, 0x64, 0xda, 0x3d, 0x2d, 0x4d, 0xa3, 0xc2, 0xb3, 0xb1, 0xe7, 0x34, 0xb4, 0xac,
- 0x02, 0xa8, 0x41, 0x11, 0x98, 0x53, 0x00, 0x50, 0x2c, 0x69, 0x9a, 0x22, 0xd5, 0xea, 0xee, 0x41,
- 0x7e, 0xbb, 0xab, 0x48, 0x6d, 0x74, 0x7b, 0xda, 0x53, 0xda, 0x39, 0xe0, 0x79, 0xaf, 0x63, 0x99,
- 0x3d, 0xd8, 0x86, 0x54, 0x90, 0x6d, 0x3e, 0x87, 0x82, 0xe1, 0xa7, 0xe9, 0xc4, 0x97, 0xa6, 0xf4,
- 0xc7, 0xaf, 0x80, 0xcc, 0xe0, 0x35, 0x7c, 0x6f, 0x0f, 0x32, 0x21, 0x2e, 0x93, 0x01, 0x45, 0x6e,
- 0xef, 0x95, 0xeb, 0x38, 0x2d, 0x5e, 0xde, 0x17, 0x28, 0x5a, 0x54, 0x78, 0xb3, 0x23, 0xd3, 0x81,
- 0x81, 0xa5, 0x29, 0x2e, 0xaa, 0xd3, 0x92, 0xe1, 0x6d, 0x38, 0x6e, 0xcd, 0xac, 0xc6, 0x70, 0x8d,
- 0x0a, 0x03, 0xc3, 0x71, 0x7b, 0x7b, 0x76, 0x83, 0x67, 0x34, 0xed, 0x12, 0x19, 0x13, 0x80, 0xdd,
- 0x1e, 0xc2, 0xf4, 0x39, 0x42, 0x90, 0xa0, 0x5d, 0x4e, 0x12, 0x72, 0xd8, 0x95, 0x98, 0x10, 0x34,
- 0xe0, 0xa5, 0x93, 0x76, 0x95, 0xac, 0x68, 0xd0, 0xd1, 0x43, 0xbb, 0x46, 0xb5, 0x15, 0x51, 0x75,
- 0x5e, 0x70, 0x6d, 0xae, 0xc7, 0x50, 0xd0, 0x92, 0xa0, 0xc5, 0xa4, 0xc4, 0x7a, 0xd3, 0x6c, 0xd5,
- 0xb4, 0x1b, 0xca, 0xd0, 0xa0, 0x4f, 0xaf, 0x52, 0xd1, 0x6e, 0xd2, 0xd2, 0x90, 0x3a, 0x00, 0xda,
- 0xd1, 0x8b, 0x62, 0xde, 0x0b, 0x5b, 0xd2, 0x3e, 0xde, 0x57, 0x51, 0xfa, 0x8c, 0xf4, 0x05, 0xb1,
- 0xa8, 0x8e, 0xdb, 0xad, 0xc4, 0x51, 0x9a, 0x11, 0x0c, 0x8a, 0xd7, 0xff, 0xfe, 0x3e, 0x43, 0x5b,
- 0x3a, 0x40, 0x3a, 0x5d, 0xb7, 0xb2, 0x57, 0xaf, 0x93, 0xdc, 0xff, 0x2a, 0x5c, 0x54, 0xf9, 0x4a,
- 0x90, 0xaf, 0x2d, 0x39, 0x8e, 0x5a, 0x11, 0xe3, 0x7c, 0x9b, 0x8e, 0xbb, 0xdb, 0x75, 0xba, 0x74,
- 0xfc, 0x4e, 0x51, 0x3c, 0x35, 0x1d, 0xf7, 0x85, 0xd5, 0x74, 0x4c, 0x75, 0x87, 0xc3, 0x10, 0x94,
- 0x18, 0xa3, 0xea, 0x34, 0xbb, 0x1d, 0x5b, 0xcb, 0xc4, 0x08, 0xa3, 0xd7, 0x6b, 0xbd, 0x92, 0x88,
- 0x6c, 0x8c, 0xa8, 0xb6, 0x4c, 0xc3, 0x92, 0x88, 0x35, 0xe1, 0xd7, 0x74, 0x5e, 0xd1, 0xd6, 0xc9,
- 0x52, 0xcd, 0x25, 0x96, 0xfa, 0x9b, 0x38, 0xa1, 0xf9, 0xaf, 0x03, 0xa9, 0xa0, 0xa8, 0x57, 0x13,
- 0x95, 0x4a, 0xbd, 0x2a, 0xea, 0x12, 0xb1, 0x53, 0x4b, 0x88, 0x6b, 0x3b, 0x56, 0xb3, 0x0a, 0xc7,
- 0x73, 0x49, 0x4a, 0x45, 0x4d, 0x26, 0x26, 0x45, 0x88, 0x20, 0xcd, 0x96, 0xff, 0x39, 0xbd, 0xbe,
- 0x94, 0xa3, 0x63, 0xbc, 0xa3, 0x31, 0xeb, 0x6a, 0x09, 0x4a, 0x22, 0xea, 0xae, 0x6d, 0x76, 0x6a,
- 0xf2, 0xe0, 0x1c, 0xab, 0x51, 0x77, 0xab, 0x0d, 0xb3, 0xfa, 0xcc, 0xed, 0xee, 0x9b, 0x56, 0xcb,
- 0xe8, 0xc9, 0x82, 0xa1, 0x5e, 0x77, 0x21, 0xc1, 0x40, 0x24, 0xed, 0x75, 0x9c, 0xd8, 0x68, 0xf5,
- 0x3a, 0x2f, 0xb5, 0x9f, 0x49, 0x44, 0x2e, 0x81, 0xa8, 0xbc, 0x92, 0x08, 0xad, 0x6c, 0xe3, 0xd1,
- 0x07, 0xbf, 0xe3, 0xc6, 0xd9, 0xed, 0x2e, 0x34, 0x62, 0x76, 0x95, 0x46, 0x8c, 0x80, 0xc4, 0x5d,
- 0x13, 0x09, 0x91, 0x8d, 0x90, 0xcf, 0xf1, 0x25, 0xdd, 0xc2, 0xf7, 0x76, 0x64, 0xf8, 0xdd, 0xa4,
- 0xe1, 0x77, 0x15, 0xc3, 0x4b, 0x08, 0xd9, 0x37, 0x5d, 0xb6, 0xd5, 0x1b, 0x1e, 0xdc, 0x1d, 0x49,
- 0x08, 0x9e, 0xbe, 0xa4, 0x10, 0x08, 0xb2, 0x96, 0x59, 0x85, 0x5c, 0x89, 0x61, 0xb0, 0x0b, 0xfe,
- 0x5a, 0x6b, 0x5a, 0x26, 0x5f, 0xb8, 0x4d, 0x54, 0xd2, 0x71, 0xeb, 0x75, 0x2d, 0x53, 0xee, 0xa1,
- 0x63, 0xcc, 0x7f, 0x95, 0x46, 0x8b, 0x63, 0x81, 0x95, 0xda, 0x86, 0x53, 0x6d, 0x68, 0x17, 0xc8,
- 0xdd, 0x84, 0x03, 0xca, 0x03, 0x9b, 0x25, 0x8c, 0xc4, 0x43, 0x3d, 0x5d, 0xfe, 0x07, 0x29, 0x7c,
- 0xc1, 0xb2, 0xe4, 0x7b, 0x2f, 0x5a, 0x2d, 0xcb, 0x72, 0x9b, 0xb5, 0x96, 0xe9, 0x3a, 0xcd, 0xb6,
- 0xd9, 0x55, 0x32, 0xa4, 0x65, 0xb9, 0x0d, 0xc3, 0xaa, 0x49, 0xb8, 0x30, 0x82, 0x25, 0x2b, 0xe7,
- 0x74, 0x4c, 0x89, 0x47, 0x3f, 0xe9, 0x7c, 0x12, 0x8e, 0x67, 0x77, 0x82, 0x67, 0xcb, 0x53, 0xfa,
- 0xa3, 0x5e, 0xfc, 0x9d, 0x38, 0x95, 0xcf, 0xee, 0x0f, 0x4d, 0xab, 0x2b, 0x97, 0xb4, 0x8d, 0x4b,
- 0xfa, 0xee, 0xa7, 0xef, 0x37, 0xf4, 0xab, 0x7c, 0xd6, 0x6d, 0xd7, 0x6e, 0x75, 0x5f, 0xf4, 0x0c,
- 0xa7, 0x41, 0x4d, 0x2f, 0xec, 0x86, 0xb5, 0xd5, 0x6e, 0x98, 0xda, 0xf9, 0x6a, 0xe3, 0xe9, 0x97,
- 0x2f, 0xf8, 0x64, 0xe1, 0x8b, 0x22, 0xb5, 0x98, 0xaf, 0xa8, 0x99, 0x03, 0xed, 0x09, 0x30, 0x3a,
- 0xe7, 0xe3, 0x1c, 0x38, 0xc0, 0xae, 0xc2, 0x19, 0xb6, 0x6d, 0x58, 0xcf, 0x34, 0x51, 0x94, 0x03,
- 0x7c, 0x21, 0xae, 0x3f, 0x57, 0x3f, 0x0f, 0x5b, 0xf4, 0xaf, 0x76, 0xd2, 0xbf, 0xda, 0x0b, 0xfe,
- 0xd5, 0x56, 0xfc, 0xeb, 0x50, 0x7d, 0x69, 0xaf, 0x86, 0x68, 0xbb, 0x9e, 0xe8, 0x00, 0x30, 0x04,
- 0x3d, 0xab, 0xf4, 0xe0, 0xd4, 0x4e, 0xb3, 0xa8, 0x43, 0x94, 0xf5, 0x6c, 0xb9, 0x1f, 0xb7, 0xeb,
- 0x6e, 0x65, 0xcf, 0xb2, 0x1d, 0xb9, 0x1f, 0xb7, 0xeb, 0xe2, 0x9c, 0x5e, 0xfe, 0x17, 0x74, 0x67,
- 0x10, 0x3f, 0xeb, 0xe1, 0xf6, 0xc1, 0xa9, 0x9b, 0xd4, 0x24, 0x74, 0xeb, 0x46, 0xb3, 0x65, 0xc2,
- 0x68, 0xb8, 0x45, 0x9a, 0x8e, 0x5b, 0x31, 0x6a, 0xb2, 0xad, 0x23, 0x3c, 0x8f, 0xc0, 0xe4, 0x8f,
- 0x69, 0xaa, 0x94, 0x08, 0xda, 0xec, 0xd8, 0x8e, 0xb5, 0x87, 0xa8, 0x0c, 0xed, 0x3f, 0x84, 0x42,
- 0x87, 0xce, 0xc6, 0xf4, 0xa2, 0xbf, 0x26, 0xc6, 0x5d, 0xa3, 0xaa, 0xc7, 0x54, 0xfa, 0x6c, 0x02,
- 0xb7, 0x1e, 0xb3, 0x89, 0x7e, 0x9b, 0x40, 0x6d, 0xc4, 0x6c, 0xb2, 0xef, 0x26, 0x70, 0xb9, 0x98,
- 0x0d, 0x7b, 0x11, 0xdd, 0x9e, 0x40, 0xe5, 0xf5, 0x0f, 0xd8, 0x4d, 0x44, 0xd9, 0x2f, 0x9a, 0x4e,
- 0xb5, 0x21, 0x9a, 0x61, 0x84, 0x67, 0x54, 0x59, 0x9a, 0xc9, 0x76, 0x98, 0x40, 0x17, 0xe2, 0x51,
- 0x65, 0xdf, 0x4a, 0xe0, 0x36, 0xa9, 0xd3, 0x26, 0x35, 0x92, 0x5d, 0x50, 0x22, 0xd8, 0xa2, 0x3d,
- 0xc3, 0x5c, 0xe2, 0x5b, 0x15, 0xf5, 0x4f, 0x76, 0xbe, 0xee, 0x8f, 0xc6, 0xfc, 0xee, 0x28, 0xff,
- 0x8b, 0x57, 0xe0, 0x8f, 0x8d, 0x7a, 0xd5, 0x6d, 0x76, 0xaa, 0xdd, 0x76, 0xcf, 0x70, 0x9a, 0xb0,
- 0xeb, 0x09, 0x2f, 0x03, 0x84, 0xd9, 0x33, 0x2d, 0x38, 0xa1, 0xfe, 0x45, 0x1a, 0xf3, 0xcb, 0x41,
- 0x7f, 0x28, 0x5e, 0x1b, 0xa2, 0x0c, 0x5c, 0xf0, 0x8a, 0x55, 0xe5, 0x2b, 0x42, 0xfd, 0x32, 0xd9,
- 0xe5, 0x10, 0x70, 0x5e, 0x75, 0x8b, 0xdd, 0x54, 0x00, 0x65, 0x8f, 0x52, 0x4b, 0x53, 0x13, 0x57,
- 0x60, 0x12, 0x53, 0x10, 0x1b, 0x92, 0x82, 0x44, 0x79, 0xa2, 0x33, 0x03, 0x08, 0xd4, 0x73, 0x8d,
- 0xe2, 0x53, 0x90, 0xb6, 0xcc, 0x8e, 0x3c, 0x29, 0x72, 0x18, 0x2f, 0x0d, 0x5c, 0xb3, 0xdd, 0x73,
- 0x5e, 0xc9, 0xe6, 0xb0, 0x82, 0xd8, 0xeb, 0x3c, 0xeb, 0x74, 0x5f, 0x74, 0xe4, 0xee, 0x22, 0xd5,
- 0xe7, 0x36, 0x6f, 0xc2, 0x12, 0xc7, 0xf3, 0x6a, 0xda, 0xae, 0xdd, 0x32, 0xf6, 0x4d, 0x8d, 0xcd,
- 0x4d, 0x96, 0x9f, 0x8d, 0x45, 0x55, 0x28, 0x81, 0xbc, 0x4d, 0xa4, 0x6d, 0xea, 0x1f, 0xb1, 0xbb,
- 0x04, 0x8e, 0x7b, 0xb4, 0x34, 0x3c, 0xec, 0x86, 0xe0, 0xc2, 0xda, 0x56, 0xf9, 0x0f, 0x32, 0x98,
- 0x7f, 0xc0, 0xde, 0x54, 0x94, 0x72, 0x73, 0xd3, 0x48, 0x86, 0x62, 0x56, 0xd1, 0x6b, 0x14, 0x40,
- 0x98, 0x74, 0x4a, 0x18, 0xd4, 0x58, 0x62, 0x50, 0x51, 0xbb, 0x28, 0x48, 0x94, 0x94, 0x99, 0x43,
- 0x74, 0xf7, 0x30, 0x36, 0xe4, 0x36, 0x2c, 0x10, 0x86, 0xb5, 0xbb, 0x07, 0xc2, 0xb4, 0x35, 0xb1,
- 0x04, 0x86, 0x58, 0x82, 0x75, 0x45, 0x45, 0xa7, 0x0b, 0x9b, 0x4e, 0x07, 0x4c, 0x8d, 0x81, 0x2e,
- 0xf8, 0xb1, 0x14, 0xcd, 0x09, 0x7f, 0x50, 0x86, 0xc3, 0x9a, 0x34, 0x4f, 0x91, 0x02, 0x18, 0x1e,
- 0xe4, 0xdc, 0x41, 0x3b, 0x76, 0xd3, 0x76, 0x60, 0x54, 0xa6, 0xdf, 0x62, 0x45, 0x42, 0xef, 0x75,
- 0xec, 0xbd, 0x1e, 0x28, 0x69, 0xd6, 0xdc, 0xae, 0x55, 0x33, 0x2d, 0xad, 0x30, 0x67, 0x0f, 0xc7,
- 0xd8, 0xd5, 0x36, 0xe7, 0x26, 0x00, 0x25, 0x06, 0x9f, 0xb2, 0x38, 0x9c, 0xab, 0x08, 0x30, 0xe0,
- 0xf6, 0x9c, 0x01, 0x79, 0x77, 0x59, 0xcc, 0xfa, 0x62, 0xf9, 0x27, 0x29, 0x56, 0x14, 0xcb, 0xa3,
- 0x16, 0x97, 0x4a, 0x58, 0x55, 0x9a, 0x55, 0xe1, 0x4f, 0x3c, 0x87, 0xc9, 0x24, 0x88, 0x08, 0x7b,
- 0xaf, 0x87, 0xe0, 0x94, 0x42, 0x9f, 0xf0, 0x35, 0x91, 0x07, 0x63, 0x7a, 0x59, 0x7d, 0x66, 0x28,
- 0xd3, 0x2c, 0xa2, 0xb0, 0xff, 0x9b, 0x15, 0xda, 0x37, 0x97, 0x2c, 0xff, 0xda, 0xdc, 0x80, 0x72,
- 0xf9, 0xd7, 0x85, 0xe1, 0x9a, 0xb1, 0x23, 0x6d, 0x88, 0x05, 0x6e, 0x8a, 0x05, 0xce, 0x95, 0xff,
- 0x25, 0x7d, 0x0d, 0x00, 0x93, 0xc7, 0x3e, 0x97, 0xea, 0x9a, 0xed, 0x65, 0xae, 0xd9, 0x56, 0x5d,
- 0x33, 0x09, 0x83, 0xe5, 0x91, 0xf1, 0x4f, 0xb0, 0x5a, 0x0b, 0xb6, 0x3b, 0x8b, 0x9a, 0xd9, 0x73,
- 0xc8, 0xce, 0x0b, 0x05, 0x99, 0x15, 0x3e, 0x44, 0xc8, 0x17, 0xcd, 0x56, 0xad, 0x6a, 0x58, 0x35,
- 0x28, 0xab, 0xc9, 0xe7, 0x08, 0x83, 0x87, 0x95, 0xf5, 0x39, 0xe8, 0xbe, 0xd1, 0xda, 0x33, 0xb5,
- 0x8d, 0x39, 0xe5, 0xb9, 0x68, 0xd1, 0x31, 0x12, 0xc0, 0x9e, 0x65, 0x5a, 0xe6, 0x73, 0x2d, 0xaf,
- 0x48, 0xa8, 0xed, 0xf5, 0x48, 0x2e, 0x13, 0x76, 0x6a, 0x0b, 0x3b, 0x15, 0xca, 0x7f, 0x4c, 0x4e,
- 0x12, 0x97, 0xcb, 0x4a, 0xee, 0xc5, 0x01, 0xeb, 0xed, 0xba, 0xf4, 0x12, 0x59, 0x3e, 0x71, 0x20,
- 0xa5, 0xf9, 0xbd, 0x56, 0x4b, 0xe6, 0x4d, 0x0e, 0x9f, 0x73, 0x11, 0x45, 0x8c, 0xa8, 0xa5, 0x33,
- 0xa2, 0x20, 0x6f, 0xcb, 0xfc, 0x2d, 0xcb, 0x68, 0x29, 0x81, 0x2a, 0xb3, 0xb5, 0x79, 0x44, 0xb5,
- 0xdb, 0x6e, 0x1b, 0x1d, 0xb0, 0x13, 0x4e, 0x5e, 0x22, 0xea, 0x2d, 0x63, 0xd7, 0xd6, 0x36, 0xca,
- 0x7f, 0x98, 0xc1, 0xcf, 0xc9, 0xe2, 0x4a, 0x58, 0x9d, 0x15, 0x2a, 0xba, 0x0b, 0x4c, 0xb8, 0xe1,
- 0x9a, 0x2f, 0x9b, 0xb6, 0x63, 0xcb, 0x77, 0x15, 0x1c, 0x23, 0xca, 0x4c, 0x8c, 0xf5, 0x14, 0xf9,
- 0x32, 0x47, 0xbd, 0x30, 0x9b, 0xbb, 0x0d, 0x47, 0x0d, 0x6a, 0x19, 0x06, 0x1c, 0x0f, 0x29, 0xa2,
- 0x5b, 0x47, 0x4e, 0x38, 0x6b, 0xe1, 0x8e, 0xa9, 0xa2, 0x2a, 0x7b, 0x90, 0x67, 0xe1, 0xe4, 0x70,
- 0x97, 0xdd, 0x12, 0xb8, 0x6a, 0xc3, 0x68, 0x76, 0x9a, 0x9d, 0xdd, 0x84, 0xe0, 0x35, 0x4a, 0x32,
- 0x38, 0x30, 0xcf, 0x32, 0x2a, 0x7a, 0x5d, 0x94, 0xe1, 0x80, 0x6e, 0x75, 0xbb, 0x3d, 0xb9, 0x61,
- 0xec, 0x2a, 0x8b, 0x46, 0x93, 0xc8, 0xa9, 0x28, 0x3e, 0x9a, 0x59, 0x93, 0xb9, 0x0c, 0xfd, 0x65,
- 0x57, 0xda, 0x1e, 0x22, 0x43, 0xb4, 0x17, 0x77, 0xe7, 0x0d, 0x5f, 0x20, 0x27, 0x90, 0x08, 0x9c,
- 0x90, 0xb6, 0x49, 0x0b, 0x22, 0xe1, 0x5c, 0x63, 0xf9, 0x6e, 0x71, 0x37, 0x5e, 0xec, 0xed, 0xf2,
- 0xef, 0x91, 0xe3, 0x89, 0xbf, 0xc6, 0x9b, 0x58, 0x22, 0xd4, 0xa6, 0x27, 0xc4, 0x50, 0x93, 0x17,
- 0xb5, 0x91, 0xd0, 0x06, 0xc6, 0x98, 0xac, 0x65, 0x7b, 0xb1, 0x9a, 0xfc, 0x45, 0xa9, 0x58, 0x14,
- 0x09, 0x37, 0x6a, 0xfb, 0xa6, 0xe5, 0x34, 0x6d, 0x53, 0xba, 0x5f, 0x4f, 0x71, 0xbf, 0xf2, 0x5f,
- 0x47, 0xa7, 0x91, 0x7f, 0xb2, 0x3a, 0xa1, 0x11, 0xbd, 0x23, 0x4c, 0x78, 0xb7, 0x0c, 0x06, 0x67,
- 0x6e, 0x64, 0xf1, 0x2e, 0xc3, 0x89, 0xc5, 0xa7, 0xcb, 0x3f, 0xc4, 0xf9, 0xe2, 0x95, 0x2c, 0x7f,
- 0xb6, 0x64, 0xbe, 0xcf, 0xbb, 0xc9, 0xf9, 0xe2, 0x98, 0x12, 0x8a, 0x1b, 0x92, 0x90, 0xcd, 0xc1,
- 0x42, 0xf6, 0xdf, 0x60, 0xb7, 0x17, 0xfe, 0x78, 0xf7, 0x12, 0xf5, 0xed, 0x6a, 0x22, 0x50, 0x44,
- 0x01, 0x24, 0xc1, 0x98, 0xfa, 0x50, 0x3e, 0x07, 0xc6, 0xba, 0xdf, 0x9a, 0xbf, 0x90, 0x95, 0x10,
- 0x4f, 0x07, 0x38, 0xab, 0x5e, 0x85, 0xba, 0x9b, 0x5b, 0x46, 0x01, 0x71, 0x8f, 0x8d, 0x8f, 0x70,
- 0x16, 0x8d, 0x06, 0xf5, 0xa5, 0x96, 0x2e, 0xff, 0x51, 0x1a, 0xed, 0x1e, 0x1f, 0x2b, 0x16, 0x53,
- 0x50, 0x3b, 0x99, 0x82, 0x30, 0x82, 0x39, 0x10, 0xab, 0x50, 0x8a, 0xe0, 0x14, 0xad, 0x78, 0x5b,
- 0x8d, 0x60, 0xec, 0x57, 0xa4, 0x55, 0x94, 0x88, 0x0b, 0x44, 0x89, 0x8a, 0xa2, 0x3d, 0xef, 0xe6,
- 0x59, 0x32, 0x5b, 0x3b, 0x99, 0x5f, 0x44, 0xd2, 0x96, 0x60, 0xcb, 0x70, 0x4c, 0x99, 0x8c, 0xda,
- 0x71, 0x4c, 0x58, 0xfc, 0xed, 0xfe, 0x1c, 0x71, 0x05, 0x24, 0xe7, 0x68, 0xbb, 0x48, 0x40, 0xdd,
- 0x9a, 0xe9, 0x18, 0xcd, 0x96, 0x96, 0x57, 0x55, 0xa5, 0x8c, 0xc1, 0x35, 0xb5, 0x35, 0xa6, 0x4e,
- 0x5d, 0x24, 0x13, 0xa3, 0x53, 0xb3, 0xb5, 0x42, 0xf9, 0x5f, 0xa5, 0x96, 0x7c, 0x20, 0x18, 0x2e,
- 0x73, 0xe2, 0xfa, 0x9c, 0x13, 0xd3, 0x7b, 0x6b, 0x01, 0x96, 0x3b, 0xb8, 0x58, 0xb1, 0x98, 0x01,
- 0xb2, 0x82, 0xbc, 0x2c, 0x51, 0x57, 0xbc, 0x26, 0x33, 0x2f, 0x44, 0xd6, 0x21, 0x59, 0x11, 0x0b,
- 0x75, 0xe9, 0x4f, 0x6b, 0xe5, 0xff, 0x42, 0xbb, 0x73, 0xf2, 0xcf, 0x07, 0x88, 0xe3, 0x1e, 0x9c,
- 0xb4, 0xed, 0x6a, 0x7c, 0xfc, 0xe3, 0xf7, 0x47, 0x5e, 0xc8, 0x77, 0xd3, 0xed, 0x9e, 0x6b, 0xec,
- 0xee, 0x5a, 0xe6, 0xae, 0xc1, 0x0f, 0xe9, 0x74, 0xe2, 0x13, 0xb7, 0x51, 0x32, 0xc2, 0xe0, 0xbd,
- 0xe4, 0x5b, 0x5c, 0x49, 0x86, 0x61, 0xb4, 0x16, 0x03, 0x30, 0x05, 0xae, 0xc7, 0x7c, 0xe2, 0xb4,
- 0x6f, 0x57, 0xb5, 0x0d, 0x61, 0x70, 0x01, 0x15, 0x67, 0x1a, 0xd9, 0xe9, 0x6d, 0xf7, 0xc8, 0x8d,
- 0xf2, 0xe2, 0x48, 0x4d, 0x00, 0x91, 0x0c, 0x58, 0x2c, 0x02, 0xe1, 0x52, 0x44, 0x21, 0xc6, 0x24,
- 0x0f, 0x4c, 0xf2, 0x8a, 0x86, 0x98, 0x04, 0xd7, 0x45, 0x1c, 0x9f, 0xda, 0xbd, 0x65, 0x47, 0xf3,
- 0x9d, 0xa5, 0x7f, 0x36, 0xc2, 0x15, 0x9f, 0xc0, 0x23, 0x63, 0x1d, 0xce, 0x73, 0x0b, 0xaf, 0x79,
- 0x05, 0xbc, 0xdd, 0xb5, 0x4c, 0x2d, 0x55, 0x6e, 0x51, 0x3c, 0x26, 0xff, 0x14, 0x04, 0x49, 0x12,
- 0x1a, 0xd7, 0xf1, 0x6e, 0x83, 0x22, 0x8b, 0xdc, 0x5f, 0x62, 0x48, 0xda, 0x9f, 0x67, 0x50, 0xb5,
- 0x15, 0x1f, 0x49, 0x4b, 0xbf, 0xe9, 0x39, 0xea, 0x29, 0x1a, 0x92, 0x13, 0xee, 0x7c, 0x0b, 0x18,
- 0xb7, 0xdd, 0xb4, 0x6d, 0x59, 0x91, 0x72, 0x74, 0xc7, 0x7c, 0x49, 0x67, 0x4e, 0x5b, 0x4b, 0x53,
- 0xdd, 0x3d, 0x8f, 0x40, 0xb6, 0x8c, 0xb8, 0x8f, 0x00, 0xd8, 0x64, 0x53, 0x34, 0x4b, 0x7b, 0xfc,
- 0x22, 0x0a, 0x59, 0xd7, 0x54, 0xd6, 0x64, 0xdb, 0x74, 0x5d, 0x65, 0x4d, 0xa0, 0x90, 0x75, 0x43,
- 0xc6, 0x40, 0xcf, 0xa1, 0x86, 0x40, 0x4e, 0x06, 0x23, 0x8c, 0x26, 0x0b, 0x42, 0x26, 0x2e, 0x98,
- 0xc4, 0x4a, 0xd8, 0xa6, 0x83, 0xe5, 0x9b, 0x38, 0x5f, 0x2f, 0xc1, 0xe1, 0x30, 0x5b, 0x2a, 0x33,
- 0xaa, 0x21, 0x99, 0xb7, 0x55, 0xe6, 0x24, 0x0e, 0x99, 0x2f, 0xea, 0x37, 0xe3, 0x95, 0x48, 0xf8,
- 0xd7, 0xcf, 0xde, 0x67, 0xf4, 0x3b, 0xf1, 0x5a, 0xa8, 0x38, 0x64, 0x05, 0x07, 0xfc, 0x7d, 0xfa,
- 0xbb, 0x19, 0x58, 0x72, 0x25, 0x6e, 0x64, 0x50, 0x5f, 0xb0, 0x5e, 0x5d, 0xb8, 0xbd, 0x02, 0x30,
- 0x6c, 0x1f, 0x52, 0x51, 0xa5, 0xa5, 0x44, 0xb5, 0x14, 0x63, 0x5a, 0xcd, 0x7d, 0xb3, 0x63, 0xda,
- 0xf1, 0xf5, 0x8c, 0x5d, 0xa5, 0x58, 0xd2, 0xb2, 0x0a, 0x83, 0xac, 0xa0, 0x78, 0xdf, 0xd6, 0xd6,
- 0x72, 0xe5, 0x2f, 0xb0, 0x21, 0x10, 0xdf, 0x43, 0xc7, 0xab, 0xe7, 0x62, 0x0b, 0x55, 0x1b, 0x64,
- 0xa8, 0xe5, 0x73, 0xc7, 0x6d, 0x37, 0x3b, 0x98, 0xd1, 0x53, 0x0a, 0xcc, 0x78, 0x89, 0xb0, 0x34,
- 0xc5, 0xe0, 0xf3, 0x25, 0x2d, 0x8c, 0x1f, 0xe1, 0x69, 0x78, 0xee, 0x22, 0x32, 0xf9, 0x69, 0xd5,
- 0xc2, 0x7e, 0x4a, 0xa7, 0x5b, 0x6d, 0x18, 0x9d, 0x5d, 0x53, 0x36, 0xf3, 0x05, 0xc2, 0x7c, 0xbe,
- 0x67, 0xb4, 0xe4, 0x05, 0x35, 0x01, 0x6d, 0x1b, 0x36, 0xee, 0x5e, 0x49, 0x62, 0x3c, 0xd3, 0x67,
- 0x2a, 0x7b, 0xec, 0x03, 0x3f, 0x38, 0xe4, 0x97, 0x01, 0x07, 0x7e, 0x30, 0xfc, 0x14, 0xff, 0xa7,
- 0x16, 0x79, 0x39, 0xf0, 0xc1, 0xa3, 0x1f, 0x3e, 0x3a, 0x1c, 0x45, 0x47, 0xc7, 0x07, 0x9f, 0x0e,
- 0xfc, 0xc9, 0x7d, 0x41, 0x76, 0x1f, 0xc9, 0x7e, 0x85, 0xfe, 0x43, 0x97, 0x93, 0x47, 0xf7, 0x0f,
- 0x7d, 0xf5, 0xbf, 0x75, 0x39, 0x58, 0xe7, 0x98, 0x47, 0xff, 0x37, 0x00, 0x00, 0xff, 0xff, 0xe3,
- 0xd4, 0xf3, 0x50, 0xfa, 0x65, 0x00, 0x00,
+ 0x07, 0xec, 0xe7, 0xac, 0xf4, 0xe5, 0x6b, 0xa0, 0xdf, 0x67, 0xdb, 0xf1, 0xa3, 0x3b, 0x1a, 0xe2,
+ 0x48, 0x5b, 0xd6, 0xa6, 0x5c, 0x99, 0xe6, 0x30, 0x2c, 0xd9, 0xd8, 0x31, 0x5b, 0x6d, 0xff, 0x5f,
+ 0xa4, 0xab, 0xf5, 0xad, 0x55, 0x8e, 0x0f, 0xeb, 0x01, 0xbb, 0xa4, 0x7f, 0x3a, 0xe1, 0x1a, 0x65,
+ 0xf0, 0x1e, 0x8c, 0x7f, 0x3a, 0x01, 0x5d, 0xfe, 0x71, 0x6a, 0xa5, 0x05, 0xcf, 0xac, 0x3f, 0x97,
+ 0xbc, 0xe8, 0x49, 0x14, 0x51, 0x99, 0x64, 0x11, 0xf5, 0x4d, 0x96, 0xb8, 0xdc, 0xe1, 0x52, 0xb5,
+ 0x04, 0x9a, 0x68, 0x2a, 0xa2, 0x06, 0x95, 0xd3, 0xef, 0xa7, 0x99, 0xbe, 0xa0, 0x53, 0x78, 0x56,
+ 0x4e, 0x14, 0x17, 0xc4, 0xd2, 0xca, 0x05, 0xb1, 0x8f, 0xd8, 0xb6, 0xd2, 0x59, 0x84, 0xfc, 0x95,
+ 0xe1, 0xc9, 0x64, 0x2b, 0x6e, 0x2d, 0x42, 0x2e, 0x57, 0xc9, 0x78, 0xdf, 0x92, 0xd2, 0xa3, 0x24,
+ 0x7b, 0x01, 0x40, 0xe5, 0xbe, 0xd0, 0x5a, 0xe2, 0xbe, 0xd0, 0x1d, 0x56, 0x98, 0xf4, 0x4f, 0x5d,
+ 0x6f, 0x1a, 0x05, 0x23, 0x2f, 0xa4, 0xad, 0x8c, 0x4d, 0xfa, 0xa7, 0x26, 0x42, 0xf4, 0x5d, 0x28,
+ 0xfb, 0x79, 0xfa, 0x01, 0xfc, 0x06, 0x5f, 0xcd, 0xf3, 0x84, 0x11, 0xe4, 0x2b, 0x4b, 0x61, 0x2d,
+ 0xfd, 0x38, 0x85, 0xfd, 0x73, 0x24, 0xc5, 0xbd, 0xff, 0xec, 0xbd, 0x1e, 0x5c, 0xe3, 0x44, 0xcd,
+ 0xa4, 0x5b, 0x56, 0x01, 0x61, 0x98, 0x4b, 0xef, 0xb1, 0xcd, 0xb1, 0xef, 0x7f, 0x71, 0x3c, 0x53,
+ 0xb2, 0x69, 0xd6, 0x2a, 0x20, 0x0c, 0x49, 0x3e, 0x64, 0x5b, 0xdc, 0x76, 0xde, 0x90, 0x68, 0xb2,
+ 0xd4, 0x9e, 0x45, 0x20, 0x26, 0xdd, 0x87, 0x58, 0x68, 0xc9, 0x2b, 0x60, 0xf1, 0x36, 0xb6, 0xea,
+ 0x5e, 0x56, 0xe9, 0xcf, 0xa8, 0x8e, 0x89, 0x79, 0x56, 0xdf, 0xe1, 0xba, 0xcd, 0x58, 0x70, 0x4a,
+ 0x0d, 0x90, 0x50, 0xec, 0x08, 0xc1, 0x69, 0x0f, 0x01, 0x80, 0x8e, 0x62, 0x34, 0xce, 0x21, 0x1f,
+ 0x49, 0xf4, 0x0d, 0x96, 0x0b, 0x4e, 0x5d, 0xd8, 0x40, 0x42, 0x52, 0x7e, 0x23, 0x38, 0xad, 0xc0,
+ 0x23, 0xb7, 0x9e, 0x40, 0xe1, 0xb6, 0xb7, 0x11, 0x11, 0x0a, 0xc7, 0x84, 0x53, 0xdd, 0xcc, 0x1b,
+ 0xf2, 0x55, 0xe5, 0x63, 0xd6, 0x10, 0x40, 0x63, 0x0a, 0xf4, 0x86, 0x18, 0x53, 0xa0, 0x77, 0x58,
+ 0x3e, 0x38, 0xc5, 0xe3, 0x47, 0x48, 0xa5, 0x4a, 0x2e, 0x38, 0x35, 0xf9, 0x33, 0x20, 0x23, 0x89,
+ 0xc4, 0x4a, 0x25, 0x17, 0x09, 0xe4, 0x5d, 0xb6, 0x19, 0x9c, 0xba, 0xaf, 0x83, 0xfe, 0xc4, 0x03,
+ 0x12, 0x2a, 0x54, 0x58, 0x70, 0x5a, 0x07, 0x90, 0xc9, 0x6f, 0x2d, 0x16, 0x82, 0x53, 0xd7, 0x3f,
+ 0xf1, 0x02, 0x4e, 0x50, 0x10, 0xaa, 0x75, 0x4f, 0xbc, 0x00, 0xf0, 0xb7, 0xb8, 0xe6, 0x83, 0x60,
+ 0xc0, 0xd1, 0x9b, 0x62, 0xf0, 0x6a, 0x30, 0x40, 0x6e, 0x36, 0xf0, 0xc7, 0xe3, 0x51, 0x48, 0x75,
+ 0x0b, 0xed, 0xf5, 0x02, 0xb2, 0x50, 0x21, 0x6e, 0x9f, 0xa3, 0x42, 0xbc, 0xb8, 0x58, 0x21, 0x96,
+ 0x1e, 0x63, 0xc7, 0x1e, 0x3b, 0x7c, 0x0b, 0xa5, 0xcd, 0xaa, 0x77, 0x5d, 0xfb, 0x18, 0xf7, 0xd8,
+ 0xd4, 0x43, 0x87, 0xf3, 0x82, 0xff, 0xf7, 0xa2, 0xa1, 0xf4, 0xe3, 0x34, 0x86, 0x8e, 0xa2, 0xce,
+ 0x19, 0x6a, 0xf0, 0xe5, 0xf3, 0x5e, 0x27, 0xe2, 0x26, 0x17, 0x78, 0xaf, 0x65, 0xd0, 0x24, 0xb4,
+ 0xc9, 0x7c, 0x99, 0x36, 0xd9, 0xf9, 0x12, 0xe6, 0xab, 0x6a, 0x4d, 0x55, 0xd8, 0x26, 0x59, 0x8a,
+ 0xcf, 0x88, 0x72, 0xcb, 0x9d, 0x15, 0xbd, 0x52, 0x61, 0x4e, 0xab, 0x80, 0xcf, 0x36, 0xf0, 0xc0,
+ 0xb1, 0x6d, 0x3b, 0xb6, 0x0c, 0x3f, 0xbc, 0x7d, 0xd9, 0x15, 0xc6, 0x33, 0x3b, 0xb9, 0xe9, 0x95,
+ 0x9d, 0xdc, 0xcc, 0x39, 0x3b, 0xb9, 0x27, 0xea, 0x52, 0x41, 0x5a, 0x7d, 0x0b, 0x1a, 0xc9, 0xa3,
+ 0x64, 0x61, 0xa5, 0x46, 0x40, 0x82, 0xf7, 0x43, 0xf5, 0x47, 0x78, 0x07, 0x58, 0x54, 0x68, 0xb7,
+ 0x56, 0x70, 0x70, 0x1a, 0xbc, 0x21, 0x1c, 0x96, 0xfe, 0x5e, 0x0a, 0x9d, 0x0f, 0x51, 0x72, 0xd3,
+ 0xb9, 0xc2, 0xd6, 0xf8, 0xd5, 0x41, 0xf1, 0xa2, 0x95, 0x3f, 0x2c, 0x5c, 0x8c, 0x4d, 0x2f, 0x5e,
+ 0x8c, 0x05, 0x2f, 0x80, 0x9d, 0x81, 0xcb, 0x13, 0xbb, 0x6e, 0x7e, 0xd2, 0x3f, 0xe5, 0xd5, 0x78,
+ 0xa8, 0x17, 0x93, 0x3d, 0xfb, 0xad, 0x78, 0x27, 0xff, 0x8e, 0xda, 0x09, 0x5a, 0x6c, 0x1f, 0x9c,
+ 0xf1, 0x96, 0xea, 0xd7, 0xf1, 0xfd, 0xaf, 0xd2, 0x65, 0x41, 0x5f, 0x2f, 0xb3, 0x4b, 0xe4, 0xb3,
+ 0x1c, 0xa8, 0x86, 0xd1, 0x45, 0x44, 0x54, 0xfa, 0x53, 0x4c, 0xe6, 0xfa, 0xd7, 0xd8, 0x45, 0xee,
+ 0xbc, 0x0a, 0x25, 0xc6, 0xd3, 0x16, 0x80, 0x25, 0x5d, 0xe9, 0x0f, 0x29, 0xa6, 0x70, 0x30, 0x19,
+ 0x53, 0x2b, 0x54, 0x9b, 0xab, 0xdb, 0xd3, 0x73, 0x75, 0x3b, 0x8c, 0x1a, 0x77, 0xb8, 0xd5, 0xc0,
+ 0xda, 0x42, 0x70, 0x73, 0x8a, 0x74, 0x25, 0xc6, 0xd5, 0x88, 0xa9, 0x30, 0xba, 0x0a, 0x00, 0x14,
+ 0x34, 0x5f, 0x55, 0x7c, 0x3d, 0x65, 0x2c, 0xb6, 0x21, 0x45, 0xd7, 0xbd, 0xb3, 0x5a, 0x5a, 0xe8,
+ 0x4f, 0x79, 0xf8, 0x8d, 0xd1, 0xf5, 0x5b, 0xd8, 0x25, 0x47, 0x92, 0x33, 0x2f, 0xe2, 0xab, 0x96,
+ 0x4b, 0xaf, 0x68, 0xaa, 0x65, 0x7e, 0xde, 0xa6, 0xda, 0xbf, 0x21, 0x97, 0x46, 0x02, 0xe9, 0xd2,
+ 0x74, 0x0d, 0x1d, 0x5f, 0x41, 0xa7, 0xe4, 0x35, 0xf4, 0x36, 0x7f, 0x07, 0x7a, 0x9b, 0x26, 0x8d,
+ 0x4e, 0x4f, 0xeb, 0x04, 0x10, 0x67, 0xa9, 0xe3, 0x67, 0x96, 0x38, 0x3e, 0xc9, 0x17, 0x9d, 0x40,
+ 0x21, 0x1f, 0x5c, 0x47, 0x22, 0x07, 0xfe, 0xd8, 0x0f, 0x68, 0x65, 0x00, 0x59, 0x85, 0xe7, 0xd2,
+ 0x6f, 0xaa, 0x2e, 0x85, 0xb1, 0xff, 0x2d, 0x59, 0x77, 0xa5, 0x56, 0x5c, 0x88, 0x51, 0xad, 0x2b,
+ 0xcb, 0xb2, 0x2f, 0xcd, 0x00, 0x8a, 0xdb, 0x8a, 0x0c, 0x70, 0xc2, 0xee, 0xf1, 0xae, 0x61, 0xa2,
+ 0x5f, 0x28, 0xc3, 0xef, 0x68, 0xf9, 0x85, 0xa7, 0xd4, 0x97, 0xd4, 0xc1, 0x73, 0xcd, 0xc4, 0x65,
+ 0xed, 0xca, 0x31, 0xee, 0x95, 0x89, 0x71, 0x7f, 0x79, 0xa3, 0x99, 0xd8, 0x96, 0xfc, 0xd1, 0xb1,
+ 0x77, 0x4c, 0x75, 0x3e, 0x8d, 0xc5, 0x9b, 0x3a, 0x58, 0x77, 0x0a, 0xaf, 0x90, 0xe7, 0x66, 0x8d,
+ 0x65, 0xe2, 0x0b, 0x36, 0xf0, 0xb3, 0x14, 0xa0, 0xd2, 0x8a, 0x98, 0xc9, 0x68, 0xea, 0xf2, 0x17,
+ 0x03, 0x55, 0x56, 0x50, 0xe4, 0xd2, 0xba, 0x2d, 0xba, 0xed, 0x82, 0x06, 0x58, 0xed, 0xd2, 0xc5,
+ 0xb2, 0x25, 0x6f, 0x1c, 0x96, 0x8d, 0xd9, 0x3f, 0xfd, 0x25, 0x8f, 0xf9, 0x4f, 0xa8, 0x51, 0xa3,
+ 0x70, 0x26, 0xac, 0xff, 0x95, 0x0c, 0x7c, 0x9e, 0xc3, 0xd5, 0xb2, 0xb5, 0xfc, 0xbb, 0x29, 0x4c,
+ 0x30, 0x94, 0x3a, 0xf9, 0x20, 0xe0, 0x0f, 0x38, 0x5a, 0x9c, 0x84, 0xf9, 0x33, 0x1e, 0x93, 0x94,
+ 0xb6, 0x11, 0xde, 0x9f, 0xaa, 0x24, 0xce, 0x27, 0xab, 0x1a, 0xf7, 0x2b, 0xf4, 0xa7, 0xa3, 0xc9,
+ 0x23, 0xbc, 0x1d, 0x81, 0x44, 0x87, 0xbc, 0xd6, 0x80, 0x28, 0x94, 0x5b, 0xd6, 0x92, 0x7b, 0x5b,
+ 0xa5, 0x43, 0x3c, 0xaf, 0x2e, 0xe1, 0x99, 0x8d, 0xdf, 0x2e, 0xbd, 0xe9, 0xf5, 0x2d, 0xb6, 0xce,
+ 0xa9, 0xc5, 0x67, 0x12, 0xb7, 0x57, 0xbd, 0x24, 0xe5, 0x54, 0x16, 0x11, 0x97, 0xcc, 0x85, 0x4b,
+ 0x51, 0x68, 0xa7, 0x15, 0xaf, 0x01, 0xa4, 0xed, 0x32, 0x09, 0xdb, 0x95, 0xda, 0xaa, 0xf3, 0x9d,
+ 0xef, 0x94, 0x93, 0x10, 0x97, 0x4e, 0x8a, 0xfb, 0x73, 0x3a, 0xcd, 0x29, 0xf2, 0x7e, 0x11, 0x39,
+ 0x89, 0x33, 0x4c, 0x66, 0xe1, 0x0c, 0xa3, 0x1c, 0x8c, 0xb2, 0xf3, 0x07, 0xa3, 0xc4, 0x39, 0x64,
+ 0x6d, 0xee, 0x1c, 0x32, 0xbf, 0x87, 0xae, 0x9f, 0x63, 0x0f, 0xdd, 0x58, 0x72, 0x0e, 0x98, 0xa0,
+ 0x83, 0x06, 0xfe, 0xd8, 0x93, 0xe6, 0x7a, 0xcc, 0xb2, 0xf0, 0xbc, 0xf2, 0x15, 0xe4, 0xc0, 0x9f,
+ 0x46, 0x81, 0x3f, 0x1e, 0x7b, 0x01, 0xe7, 0xb3, 0x38, 0x35, 0x0c, 0x77, 0xe8, 0x4d, 0x3d, 0x1a,
+ 0x90, 0x0c, 0x91, 0xb5, 0x36, 0x63, 0x60, 0x73, 0x58, 0xfa, 0x5d, 0x0a, 0x88, 0x7e, 0xf8, 0x76,
+ 0x3a, 0x10, 0x3b, 0xee, 0x7d, 0xb6, 0x1d, 0xd7, 0x16, 0xbc, 0xc7, 0x49, 0x4d, 0x19, 0x51, 0x5a,
+ 0xf0, 0x2e, 0xe7, 0xc7, 0x4c, 0x53, 0xbe, 0x61, 0x12, 0xb7, 0x6c, 0x80, 0x6e, 0x1b, 0xe0, 0x36,
+ 0x07, 0x73, 0xca, 0x32, 0xbb, 0x94, 0x78, 0x29, 0xcd, 0x49, 0xb1, 0xbe, 0xbb, 0x08, 0x08, 0x0b,
+ 0xe1, 0xfc, 0xe6, 0xd2, 0x2b, 0xb6, 0xcd, 0xf7, 0xd5, 0xb6, 0x3f, 0xdc, 0x9b, 0x0d, 0x21, 0x53,
+ 0x61, 0xbb, 0x1e, 0xdf, 0x8a, 0xa4, 0x47, 0xfc, 0x9b, 0x1d, 0xf9, 0x0a, 0x8e, 0x76, 0xab, 0x9b,
+ 0xab, 0x5f, 0xd2, 0x59, 0x58, 0x26, 0xb4, 0xfd, 0x61, 0xa9, 0xc7, 0x2e, 0x72, 0xd1, 0xbc, 0xd4,
+ 0xb0, 0x78, 0xd4, 0xfc, 0x80, 0x15, 0x94, 0x7d, 0x6d, 0x65, 0x97, 0x4b, 0xdd, 0xfb, 0xd8, 0x44,
+ 0xca, 0x28, 0xbd, 0x60, 0x17, 0xeb, 0x63, 0xff, 0x0d, 0xef, 0x53, 0xad, 0xd0, 0xf6, 0x31, 0xcb,
+ 0x89, 0xab, 0x42, 0xa4, 0xec, 0x8d, 0x95, 0x77, 0x89, 0xac, 0x0d, 0xf8, 0x05, 0xaa, 0xba, 0xec,
+ 0x0a, 0x08, 0xe6, 0x95, 0xef, 0x59, 0xd2, 0xbf, 0xcd, 0xf2, 0xf2, 0x8a, 0xc9, 0x4a, 0x5b, 0x48,
+ 0x0a, 0x0b, 0x8f, 0x1d, 0x30, 0xc0, 0x77, 0xd9, 0x1a, 0x0c, 0x10, 0xea, 0x0f, 0xd9, 0xda, 0x28,
+ 0xf2, 0x26, 0x62, 0xee, 0x3b, 0xcb, 0x95, 0xa3, 0x6d, 0x9f, 0x53, 0x96, 0xbe, 0xcf, 0xd6, 0xb9,
+ 0x1d, 0x43, 0x28, 0x1a, 0x54, 0xe6, 0x55, 0x86, 0xe3, 0x85, 0x89, 0xe0, 0x7e, 0xca, 0x98, 0x9c,
+ 0xda, 0x39, 0x24, 0x28, 0xc7, 0x1a, 0x21, 0x61, 0xc4, 0x0a, 0x20, 0xa1, 0x7a, 0xd4, 0x9f, 0x1e,
+ 0x7a, 0xa1, 0xfe, 0x0d, 0xb6, 0x1e, 0xf9, 0x6e, 0x7f, 0x28, 0x2e, 0x6b, 0xea, 0x09, 0x19, 0x7c,
+ 0x96, 0xd6, 0x5a, 0xe4, 0x1b, 0xc3, 0xa1, 0xfe, 0x80, 0xe5, 0x23, 0x9f, 0xdc, 0x90, 0xcc, 0xb5,
+ 0x8c, 0x3a, 0x17, 0xf9, 0xe8, 0x92, 0x50, 0x10, 0x6a, 0x52, 0x5b, 0x31, 0xe0, 0x27, 0x73, 0x03,
+ 0x5e, 0x5f, 0x10, 0x81, 0x93, 0x13, 0xa3, 0x3e, 0x5e, 0x1c, 0x75, 0x25, 0x8b, 0x1c, 0x9a, 0xb8,
+ 0x8e, 0xf9, 0xba, 0x53, 0x87, 0xfb, 0x2c, 0x2e, 0x74, 0x90, 0x92, 0xcd, 0x72, 0x3d, 0x0a, 0xd2,
+ 0x65, 0xce, 0x22, 0xc3, 0x7a, 0xa5, 0xb3, 0x48, 0x0a, 0x2b, 0x27, 0xa2, 0xbd, 0xf4, 0x82, 0xe5,
+ 0x51, 0x68, 0xf7, 0x38, 0x5a, 0x90, 0xfa, 0x5d, 0xc6, 0xe2, 0x3b, 0x44, 0x24, 0x76, 0x67, 0x95,
+ 0x58, 0xff, 0x38, 0xb2, 0x48, 0x89, 0xee, 0x31, 0x6c, 0x69, 0x05, 0x34, 0xaa, 0x79, 0xe2, 0x4d,
+ 0x17, 0x45, 0xff, 0x55, 0x56, 0x50, 0x32, 0xcc, 0xca, 0xca, 0x54, 0xa1, 0x69, 0x5c, 0xb0, 0x58,
+ 0x9c, 0x7c, 0x2a, 0x1b, 0x6c, 0xcd, 0x03, 0xc9, 0xe5, 0xff, 0x96, 0x62, 0x05, 0x49, 0x3a, 0xf5,
+ 0x75, 0x8d, 0x6d, 0x76, 0xeb, 0xbd, 0x9e, 0xdb, 0xec, 0xec, 0x1b, 0xad, 0x66, 0x4d, 0xbb, 0xa0,
+ 0x6b, 0x2c, 0xc7, 0x21, 0x6d, 0xe3, 0xa5, 0xf6, 0xee, 0x67, 0xef, 0xdf, 0x6f, 0xe8, 0x57, 0x24,
+ 0x8d, 0xdb, 0xeb, 0x5a, 0x8e, 0xf6, 0x3f, 0xdf, 0x03, 0x54, 0x67, 0x8c, 0x43, 0x1d, 0xa3, 0xd2,
+ 0x32, 0xb5, 0xff, 0xc5, 0x61, 0x97, 0x59, 0x81, 0xc3, 0x3a, 0x5d, 0xab, 0x6d, 0xb4, 0xb4, 0x9f,
+ 0x24, 0x08, 0xeb, 0xad, 0x6e, 0xb7, 0xa6, 0xfd, 0x6f, 0x0e, 0x13, 0x83, 0x18, 0xad, 0x96, 0xf6,
+ 0x53, 0x0e, 0xb9, 0xce, 0x2e, 0x72, 0x48, 0xb5, 0xdb, 0x71, 0xac, 0x6e, 0xab, 0x65, 0x5a, 0xda,
+ 0xff, 0x49, 0xb0, 0xb7, 0xba, 0x55, 0xa3, 0xa5, 0xfd, 0x2c, 0xc9, 0xde, 0x79, 0xa5, 0xbd, 0x07,
+ 0x48, 0xf9, 0x3f, 0xae, 0xe1, 0x4b, 0x64, 0xbe, 0x17, 0x6f, 0x73, 0x16, 0xc7, 0x6d, 0x98, 0xad,
+ 0x56, 0x57, 0xbb, 0x20, 0x9f, 0x4d, 0xcb, 0xea, 0x5a, 0x5a, 0x4a, 0xbf, 0xca, 0x2e, 0xe1, 0x73,
+ 0xb5, 0xd1, 0x75, 0x2d, 0xf3, 0xf9, 0x9e, 0x69, 0x3b, 0x5a, 0x5a, 0xbf, 0xcc, 0x55, 0x90, 0xe0,
+ 0x5e, 0xeb, 0x95, 0x96, 0x89, 0x69, 0x5f, 0xf6, 0x4c, 0xab, 0xd9, 0x36, 0x3b, 0x8e, 0x69, 0x69,
+ 0x59, 0xfd, 0x06, 0xbb, 0xca, 0xc1, 0x75, 0xd3, 0x70, 0xf6, 0x2c, 0xd3, 0x96, 0x62, 0xd6, 0xf4,
+ 0xeb, 0xec, 0xf2, 0x3c, 0x0a, 0x44, 0xad, 0xeb, 0x3b, 0xec, 0x3a, 0x47, 0xec, 0x9a, 0x0e, 0x4c,
+ 0xb3, 0xde, 0xdc, 0x95, 0x5c, 0x1b, 0x52, 0x60, 0x02, 0x09, 0x7c, 0x39, 0xa9, 0x97, 0x2d, 0x51,
+ 0x5a, 0x5e, 0xd7, 0xd9, 0x36, 0x07, 0xf6, 0x8c, 0xea, 0x33, 0xd3, 0x71, 0x9b, 0x1d, 0x8d, 0x49,
+ 0x5d, 0xeb, 0xad, 0xee, 0x0b, 0xd7, 0x32, 0xdb, 0xdd, 0x7d, 0xb3, 0xa6, 0x15, 0xf4, 0x2b, 0x4c,
+ 0x43, 0xd2, 0xae, 0xe5, 0xb8, 0xb6, 0x63, 0x38, 0x7b, 0xb6, 0xb6, 0x29, 0xa5, 0x92, 0x80, 0xee,
+ 0x9e, 0xa3, 0x6d, 0xe9, 0x97, 0xd8, 0x56, 0x2c, 0xa1, 0xdd, 0xad, 0x69, 0xdb, 0x72, 0xa0, 0x5d,
+ 0xab, 0xbb, 0xd7, 0xe3, 0xb0, 0x8b, 0x92, 0x8c, 0x4b, 0x04, 0x90, 0x26, 0xc9, 0xb8, 0x3b, 0x70,
+ 0xd8, 0x25, 0xfd, 0x26, 0xbb, 0xc6, 0x61, 0xed, 0xbd, 0x96, 0xd3, 0xec, 0x19, 0x96, 0x23, 0xe7,
+ 0xab, 0xeb, 0x45, 0x76, 0x65, 0x01, 0x07, 0xd3, 0xbd, 0x2c, 0x31, 0x15, 0xc3, 0xb2, 0x9a, 0xa6,
+ 0x25, 0x79, 0xae, 0xe8, 0xd7, 0x98, 0x3e, 0x87, 0x01, 0x8e, 0xab, 0xfa, 0x3d, 0x76, 0x9b, 0xc3,
+ 0x9f, 0xef, 0x99, 0x7b, 0xe6, 0x32, 0xf3, 0x5e, 0xd3, 0xef, 0xb0, 0x9d, 0x55, 0x24, 0x20, 0xe3,
+ 0xba, 0xb4, 0x9d, 0xd5, 0x6d, 0x99, 0x92, 0xaf, 0x28, 0xad, 0x44, 0x60, 0xa0, 0xbd, 0x21, 0xe7,
+ 0x05, 0x62, 0x0c, 0xfb, 0x55, 0xa7, 0x2a, 0x19, 0x6e, 0x4a, 0xed, 0x55, 0x1c, 0x70, 0xed, 0x48,
+ 0x0b, 0xd9, 0x02, 0xa3, 0xdd, 0x92, 0xb0, 0xb6, 0xe9, 0x98, 0x16, 0xb7, 0xda, 0xed, 0x72, 0x15,
+ 0x6f, 0x61, 0xcc, 0xfd, 0x19, 0x02, 0x22, 0x6d, 0xf0, 0xb5, 0x16, 0xb1, 0x8a, 0x83, 0x01, 0x6c,
+ 0xdf, 0xb4, 0xec, 0x66, 0xb7, 0x53, 0x69, 0x3a, 0x6d, 0xa3, 0xa7, 0xa5, 0xca, 0x1e, 0x56, 0x33,
+ 0x54, 0x19, 0x63, 0xa7, 0x00, 0xfd, 0xa0, 0xea, 0xd6, 0x2d, 0x63, 0x57, 0x84, 0xe8, 0x05, 0x92,
+ 0x4b, 0xd0, 0x9a, 0xd5, 0xed, 0x69, 0x29, 0x9a, 0x35, 0xc1, 0x2c, 0xd3, 0xb0, 0xdb, 0x5a, 0x3a,
+ 0x49, 0xd8, 0x36, 0xec, 0x67, 0x5a, 0xa6, 0xfc, 0x14, 0x87, 0xc1, 0x37, 0x09, 0x54, 0x34, 0x91,
+ 0x73, 0x54, 0x15, 0x3d, 0xc9, 0xb9, 0xab, 0x6e, 0xcd, 0xec, 0x59, 0x66, 0xd5, 0x70, 0xcc, 0x9a,
+ 0x90, 0xf0, 0x6b, 0xf8, 0x0d, 0x34, 0xde, 0x15, 0x27, 0x56, 0x75, 0x8a, 0xdb, 0x2c, 0x8f, 0x20,
+ 0xc8, 0x47, 0x3f, 0x4b, 0xc5, 0xcf, 0x90, 0x3a, 0xde, 0xa7, 0xca, 0xff, 0x81, 0xea, 0xb6, 0x44,
+ 0x1f, 0x01, 0xb3, 0x9a, 0xaa, 0x81, 0x9c, 0x11, 0x38, 0x36, 0xc4, 0x80, 0xad, 0xa5, 0xa4, 0x41,
+ 0xd0, 0x67, 0x11, 0x9a, 0x96, 0xa4, 0x32, 0x5c, 0x6c, 0x2d, 0x2b, 0x49, 0x31, 0x0a, 0x10, 0x9a,
+ 0x23, 0x7d, 0xab, 0x6e, 0xb3, 0x47, 0x56, 0xba, 0x2b, 0x09, 0xd1, 0xd1, 0x90, 0xf0, 0xa9, 0x7e,
+ 0x8d, 0x7b, 0x17, 0xc9, 0xac, 0xb4, 0xba, 0xd5, 0x67, 0x66, 0x4d, 0x7b, 0x97, 0x2e, 0x9f, 0x28,
+ 0x9f, 0xc0, 0x27, 0xcc, 0xb7, 0x44, 0x79, 0xc1, 0x5e, 0xeb, 0xbe, 0xe8, 0x68, 0xa9, 0x98, 0xae,
+ 0x03, 0xc9, 0xaa, 0xba, 0xaf, 0x65, 0x45, 0x32, 0xe7, 0xa0, 0xfa, 0x8b, 0x9a, 0x76, 0x97, 0x22,
+ 0x06, 0x21, 0x71, 0xa6, 0x78, 0x5a, 0xfe, 0x6b, 0x73, 0xef, 0x50, 0x84, 0xe9, 0x7b, 0xf6, 0xe2,
+ 0xb0, 0xb6, 0xdb, 0x6a, 0x76, 0x9e, 0xcd, 0x0d, 0x6b, 0xcb, 0x59, 0xa4, 0x29, 0xbd, 0x72, 0xba,
+ 0x7d, 0x53, 0xcb, 0x96, 0xff, 0x2c, 0x8d, 0x1f, 0x9e, 0x70, 0xe9, 0xb2, 0x77, 0x44, 0x8c, 0x75,
+ 0x65, 0x00, 0x09, 0x7a, 0xf8, 0x69, 0xbb, 0xe2, 0x36, 0x6a, 0xb1, 0x78, 0x02, 0xd5, 0x6b, 0xd2,
+ 0xef, 0x38, 0x88, 0xc8, 0xb2, 0xf3, 0xb0, 0x7a, 0x4d, 0xcb, 0x89, 0xd9, 0xd7, 0xdd, 0x87, 0xbb,
+ 0x9c, 0x4a, 0x4b, 0x42, 0xea, 0x60, 0x0f, 0x45, 0x3c, 0x82, 0x9e, 0xea, 0xba, 0x00, 0x3d, 0x26,
+ 0xd0, 0x3b, 0xf0, 0xff, 0x58, 0x3c, 0x01, 0xd3, 0xfa, 0x25, 0x29, 0xcd, 0x41, 0x10, 0x18, 0xbc,
+ 0x80, 0xa0, 0xae, 0xd3, 0x30, 0x2d, 0xed, 0x5d, 0x2e, 0x26, 0xaa, 0x76, 0x7b, 0x3d, 0x00, 0x69,
+ 0x31, 0x51, 0xbd, 0x59, 0x01, 0xc8, 0xdd, 0x78, 0x48, 0x63, 0xcf, 0xe9, 0x76, 0xcc, 0x5d, 0xed,
+ 0xdd, 0x53, 0xfd, 0x92, 0xa0, 0xea, 0x19, 0x7b, 0xb6, 0xa9, 0xbd, 0x7b, 0x97, 0xd2, 0xaf, 0x71,
+ 0x57, 0x12, 0x20, 0xc8, 0x19, 0x6d, 0xed, 0xdd, 0xbb, 0x74, 0xb9, 0xa6, 0x38, 0x0d, 0x5d, 0x67,
+ 0xdd, 0xe2, 0x51, 0xd1, 0xb3, 0x5c, 0xa3, 0x86, 0x7b, 0xf8, 0x26, 0x3e, 0xd6, 0xcc, 0x96, 0xe9,
+ 0x98, 0x5a, 0x2a, 0x86, 0xb4, 0xbb, 0xb5, 0x66, 0xfd, 0x95, 0x96, 0x2e, 0x7f, 0x86, 0x2e, 0x10,
+ 0xff, 0x59, 0x01, 0x32, 0x6a, 0x9b, 0x3b, 0x7d, 0xa7, 0x66, 0x58, 0x20, 0x09, 0x05, 0xb7, 0x1d,
+ 0xb7, 0xfb, 0xb2, 0xad, 0xa5, 0xca, 0x5f, 0xc4, 0x7f, 0x37, 0x80, 0xff, 0x21, 0x00, 0x92, 0xfb,
+ 0xb2, 0x5d, 0x75, 0x3b, 0x2f, 0xdb, 0xee, 0xa7, 0x72, 0x6c, 0x01, 0x79, 0xa8, 0xa5, 0xf4, 0x1d,
+ 0x1e, 0xfd, 0x00, 0xe9, 0xf6, 0xcc, 0x0e, 0x8f, 0xc0, 0x8a, 0x61, 0x37, 0xab, 0x30, 0x19, 0xfd,
+ 0x06, 0xdf, 0x2d, 0x01, 0x99, 0xd8, 0x61, 0xdf, 0xbf, 0xcf, 0x94, 0xff, 0x51, 0x8e, 0x5d, 0x5e,
+ 0xf2, 0x29, 0x3e, 0x39, 0xf5, 0x4b, 0x50, 0xaa, 0x5e, 0x91, 0x55, 0xc9, 0x05, 0x4a, 0xcb, 0x2a,
+ 0xbc, 0xf1, 0x0a, 0x71, 0x29, 0xda, 0x94, 0x05, 0xae, 0x6d, 0x3a, 0x46, 0xcd, 0x70, 0x0c, 0x2d,
+ 0x3d, 0x27, 0xcc, 0x74, 0x1a, 0x6e, 0xcd, 0x76, 0xb4, 0xcc, 0x12, 0xb8, 0x6d, 0x55, 0xb5, 0xec,
+ 0x9c, 0x20, 0x80, 0x3b, 0xaf, 0x7a, 0xa6, 0xdc, 0xf6, 0x05, 0x62, 0xbf, 0x65, 0x74, 0xdc, 0xfd,
+ 0x66, 0x4d, 0x5b, 0x5f, 0x86, 0xe8, 0x55, 0x7b, 0xda, 0xc6, 0xfc, 0x3c, 0x7a, 0x6e, 0xcd, 0xae,
+ 0xf6, 0xb4, 0x1c, 0x6d, 0x45, 0x0a, 0xdc, 0xac, 0x76, 0xb4, 0xfc, 0x9c, 0x9c, 0x66, 0xcf, 0xed,
+ 0x59, 0x5d, 0xa7, 0xab, 0xb1, 0x05, 0xc4, 0xfe, 0x63, 0xae, 0x6b, 0x61, 0x19, 0x02, 0x26, 0xb7,
+ 0x39, 0x37, 0xb2, 0x53, 0xed, 0x71, 0x86, 0xad, 0x25, 0x70, 0xa0, 0xdf, 0x9e, 0x83, 0xef, 0xd5,
+ 0x90, 0xfe, 0xe2, 0x12, 0x38, 0xd0, 0x6b, 0x73, 0x03, 0xdb, 0x55, 0x07, 0x19, 0x2e, 0x2d, 0x43,
+ 0xd4, 0x78, 0x39, 0x30, 0xb7, 0x76, 0xd5, 0x36, 0x28, 0xcb, 0x2d, 0x7b, 0x79, 0x39, 0xae, 0xda,
+ 0xad, 0x99, 0xda, 0x95, 0x39, 0x5b, 0x19, 0x56, 0xcf, 0xed, 0xf6, 0xb4, 0xab, 0x73, 0x8a, 0x01,
+ 0xd8, 0xee, 0x19, 0xda, 0xb5, 0x25, 0x70, 0xa7, 0x67, 0x68, 0xd7, 0x97, 0xd1, 0x37, 0x0c, 0xad,
+ 0xb8, 0x8c, 0xbe, 0x61, 0x68, 0x37, 0x16, 0x2d, 0xfb, 0x84, 0x4f, 0xf0, 0xe6, 0x32, 0x04, 0x4c,
+ 0x70, 0x67, 0x7e, 0x12, 0x80, 0xa8, 0xb7, 0x8c, 0x8a, 0xd9, 0xd2, 0x6e, 0x2d, 0x9b, 0xe0, 0x13,
+ 0x9c, 0xfc, 0xed, 0xe5, 0x38, 0x3e, 0xf9, 0x0f, 0xf4, 0xdb, 0xec, 0xc6, 0xbc, 0xcc, 0x4e, 0xcd,
+ 0x75, 0x0c, 0x6b, 0xd7, 0x74, 0xb4, 0x3b, 0xcb, 0x86, 0xec, 0xd4, 0x5c, 0xbb, 0xd5, 0xd2, 0xee,
+ 0xae, 0xc0, 0x39, 0xad, 0x96, 0x76, 0x8f, 0x76, 0x6b, 0x19, 0x2b, 0xbd, 0x96, 0xed, 0xa2, 0xa6,
+ 0xa5, 0x39, 0x7b, 0x70, 0x94, 0x53, 0xd5, 0x3e, 0x9c, 0x0f, 0x2f, 0x80, 0x57, 0xba, 0xb6, 0x76,
+ 0x7f, 0x0e, 0xd1, 0xab, 0x54, 0xdc, 0xa6, 0xdd, 0xac, 0x69, 0x1f, 0x51, 0xe9, 0x22, 0x5d, 0x6d,
+ 0xaf, 0xd3, 0x31, 0x5b, 0x6e, 0xb3, 0xa6, 0x7d, 0x6d, 0x99, 0x6a, 0xe6, 0x4b, 0xa7, 0x51, 0xb3,
+ 0xb4, 0xaf, 0x97, 0x3f, 0xc3, 0xd3, 0x0b, 0xff, 0x70, 0x7c, 0x34, 0xd4, 0x2f, 0xf2, 0xa4, 0xb9,
+ 0xdf, 0xac, 0xb9, 0x9d, 0x6e, 0xc7, 0xe4, 0x5b, 0xd6, 0x36, 0x01, 0x7a, 0x96, 0x69, 0x9b, 0x1d,
+ 0x47, 0x7b, 0x77, 0xb7, 0xfc, 0x9f, 0x52, 0xd8, 0xc7, 0x1b, 0xcd, 0x4e, 0x9e, 0xd0, 0x87, 0xce,
+ 0xe2, 0x36, 0x2a, 0x50, 0x37, 0xcd, 0xc6, 0xc2, 0x9e, 0x04, 0x30, 0x10, 0xf9, 0x12, 0x72, 0x07,
+ 0xee, 0x6f, 0x00, 0x32, 0xed, 0x9e, 0x96, 0xa6, 0x51, 0xe1, 0xd9, 0xd8, 0x73, 0x1a, 0x5a, 0x56,
+ 0x01, 0xd4, 0xa0, 0x08, 0xcc, 0x29, 0x00, 0x28, 0x96, 0x34, 0x4d, 0x91, 0x6a, 0x75, 0xf7, 0x20,
+ 0xbf, 0xdd, 0x55, 0xa4, 0x36, 0xba, 0x3d, 0xed, 0x29, 0xed, 0x1c, 0xf0, 0xbc, 0xd7, 0xb1, 0xcc,
+ 0x1e, 0x6c, 0x43, 0x2a, 0xc8, 0x36, 0x9f, 0x43, 0xc1, 0xf0, 0xd3, 0x74, 0xe2, 0x4b, 0x53, 0xfa,
+ 0xe3, 0x57, 0x40, 0x66, 0xf0, 0x1a, 0xbe, 0xb7, 0x07, 0x99, 0x10, 0x97, 0xc9, 0x80, 0x22, 0xb7,
+ 0xf7, 0xca, 0x75, 0x9c, 0x16, 0x2f, 0xef, 0x0b, 0x14, 0x2d, 0x2a, 0xbc, 0xd9, 0x91, 0xe9, 0xc0,
+ 0xc0, 0xd2, 0x14, 0x17, 0xd5, 0x69, 0xc9, 0xf0, 0x36, 0x1c, 0xb7, 0x66, 0x56, 0x63, 0xb8, 0x46,
+ 0x85, 0x81, 0xe1, 0xb8, 0xbd, 0x3d, 0xbb, 0xc1, 0x33, 0x9a, 0x76, 0x89, 0x8c, 0x09, 0xc0, 0x6e,
+ 0x0f, 0x61, 0xfa, 0x1c, 0x21, 0x48, 0xd0, 0x2e, 0x27, 0x09, 0x39, 0xec, 0x4a, 0x4c, 0x08, 0x1a,
+ 0xf0, 0xd2, 0x49, 0xbb, 0x4a, 0x56, 0x34, 0xe8, 0xe8, 0xa1, 0x5d, 0xa3, 0xda, 0x8a, 0xa8, 0x3a,
+ 0x2f, 0xb8, 0x36, 0xd7, 0x63, 0x28, 0x68, 0x49, 0xd0, 0x62, 0x52, 0x62, 0xbd, 0x69, 0xb6, 0x6a,
+ 0xda, 0x0d, 0x65, 0x68, 0xd0, 0xa7, 0x57, 0xa9, 0x68, 0x37, 0x69, 0x69, 0x48, 0x1d, 0x00, 0xed,
+ 0xe8, 0x45, 0x31, 0xef, 0x85, 0x2d, 0x69, 0x1f, 0xef, 0xab, 0x28, 0x7d, 0x46, 0xfa, 0x82, 0x58,
+ 0x54, 0xc7, 0xed, 0x56, 0xe2, 0x28, 0xcd, 0x08, 0x06, 0xc5, 0xeb, 0x7f, 0x7f, 0x9f, 0xa1, 0x2d,
+ 0x1d, 0x20, 0x9d, 0xae, 0x5b, 0xd9, 0xab, 0xd7, 0x49, 0xee, 0x7f, 0x15, 0x2e, 0xaa, 0x7c, 0x25,
+ 0xc8, 0xd7, 0x96, 0x1c, 0x47, 0xad, 0x88, 0x71, 0xbe, 0x4d, 0xc7, 0xdd, 0xed, 0x3a, 0x5d, 0x3a,
+ 0x7e, 0xa7, 0x28, 0x9e, 0x9a, 0x8e, 0xfb, 0xc2, 0x6a, 0x3a, 0xa6, 0xba, 0xc3, 0x61, 0x08, 0x4a,
+ 0x8c, 0x51, 0x75, 0x9a, 0xdd, 0x8e, 0xad, 0x65, 0x62, 0x84, 0xd1, 0xeb, 0xb5, 0x5e, 0x49, 0x44,
+ 0x36, 0x46, 0x54, 0x5b, 0xa6, 0x61, 0x49, 0xc4, 0x9a, 0xf0, 0x6b, 0x3a, 0xaf, 0x68, 0xeb, 0x64,
+ 0xa9, 0xe6, 0x12, 0x4b, 0xfd, 0x4d, 0x9c, 0xd0, 0xfc, 0xd7, 0x81, 0x54, 0x50, 0xd4, 0xab, 0x89,
+ 0x4a, 0xa5, 0x5e, 0x15, 0x75, 0x89, 0xd8, 0xa9, 0x25, 0xc4, 0xb5, 0x1d, 0xab, 0x59, 0x85, 0xe3,
+ 0xb9, 0x24, 0xa5, 0xa2, 0x26, 0x13, 0x93, 0x22, 0x44, 0x90, 0x66, 0xcb, 0xff, 0x9c, 0x5e, 0x5f,
+ 0xca, 0xd1, 0x31, 0xde, 0xd1, 0x98, 0x75, 0xb5, 0x04, 0x25, 0x11, 0x75, 0xd7, 0x36, 0x3b, 0x35,
+ 0x79, 0x70, 0x8e, 0xd5, 0xa8, 0xbb, 0xd5, 0x86, 0x59, 0x7d, 0xe6, 0x76, 0xf7, 0x4d, 0xab, 0x65,
+ 0xf4, 0x64, 0xc1, 0x50, 0xaf, 0xbb, 0x90, 0x60, 0x20, 0x92, 0xf6, 0x3a, 0x4e, 0x6c, 0xb4, 0x7a,
+ 0x9d, 0x97, 0xda, 0xcf, 0x24, 0x22, 0x97, 0x40, 0x54, 0x5e, 0x49, 0x84, 0x56, 0xb6, 0xf1, 0xe8,
+ 0x83, 0xdf, 0x71, 0xe3, 0xec, 0x76, 0x17, 0x1a, 0x31, 0xbb, 0x4a, 0x23, 0x46, 0x40, 0xe2, 0xae,
+ 0x89, 0x84, 0xc8, 0x46, 0xc8, 0xe7, 0xf8, 0x92, 0x6e, 0xe1, 0x7b, 0x3b, 0x32, 0xfc, 0x6e, 0xd2,
+ 0xf0, 0xbb, 0x8a, 0xe1, 0x25, 0x84, 0xec, 0x9b, 0x2e, 0xdb, 0xea, 0x0d, 0x0f, 0xee, 0x8e, 0x24,
+ 0x04, 0x4f, 0x5f, 0x52, 0x08, 0x04, 0x59, 0xcb, 0xac, 0x42, 0xae, 0xc4, 0x30, 0xd8, 0x05, 0x7f,
+ 0xad, 0x35, 0x2d, 0x93, 0x2f, 0xdc, 0x26, 0x2a, 0xe9, 0xb8, 0xf5, 0xba, 0x96, 0x29, 0xf7, 0xd0,
+ 0x31, 0xe6, 0xbf, 0x4a, 0xa3, 0xc5, 0xb1, 0xc0, 0x4a, 0x6d, 0xc3, 0xa9, 0x36, 0xb4, 0x0b, 0xe4,
+ 0x6e, 0xc2, 0x01, 0xe5, 0x81, 0xcd, 0x12, 0x46, 0xe2, 0xa1, 0x9e, 0x2e, 0xff, 0x83, 0x14, 0xbe,
+ 0x60, 0x59, 0xf2, 0xbd, 0x17, 0xad, 0x96, 0x65, 0xb9, 0xcd, 0x5a, 0xcb, 0x74, 0x9d, 0x66, 0xdb,
+ 0xec, 0x2a, 0x19, 0xd2, 0xb2, 0xdc, 0x86, 0x61, 0xd5, 0x24, 0x5c, 0x18, 0xc1, 0x92, 0x95, 0x73,
+ 0x3a, 0xa6, 0xc4, 0xa3, 0x9f, 0x74, 0x3e, 0x09, 0xc7, 0xb3, 0x3b, 0xc1, 0xb3, 0xe5, 0x29, 0xfd,
+ 0x51, 0x2f, 0xfe, 0x4e, 0x9c, 0xca, 0x67, 0xf7, 0x87, 0xa6, 0xd5, 0x95, 0x4b, 0xda, 0xc6, 0x25,
+ 0x7d, 0xf7, 0xd3, 0xf7, 0x1b, 0xfa, 0x55, 0x3e, 0xeb, 0xb6, 0x6b, 0xb7, 0xba, 0x2f, 0x7a, 0x86,
+ 0xd3, 0xa0, 0xa6, 0x17, 0x76, 0xc3, 0xda, 0x6a, 0x37, 0x4c, 0xed, 0x7c, 0xb5, 0xf1, 0xf4, 0xcb,
+ 0x17, 0x7c, 0xb2, 0xf0, 0x45, 0x91, 0x5a, 0xcc, 0x57, 0xd4, 0xcc, 0x81, 0xf6, 0x04, 0x18, 0x9d,
+ 0xf3, 0x71, 0x0e, 0x1c, 0x60, 0x57, 0xe1, 0x0c, 0xdb, 0x36, 0xac, 0x67, 0x9a, 0x28, 0xca, 0x01,
+ 0xbe, 0x10, 0xd7, 0x9f, 0xab, 0x9f, 0x87, 0x2d, 0xfa, 0x57, 0x3b, 0xe9, 0x5f, 0xed, 0x05, 0xff,
+ 0x6a, 0x2b, 0xfe, 0x75, 0xa8, 0xbe, 0xb4, 0x57, 0x43, 0xb4, 0x5d, 0x4f, 0x74, 0x00, 0x18, 0x82,
+ 0x9e, 0x55, 0x7a, 0x70, 0x6a, 0xa7, 0x59, 0xd4, 0x21, 0xca, 0x7a, 0xb6, 0xdc, 0x8f, 0xdb, 0x75,
+ 0xb7, 0xb2, 0x67, 0xd9, 0x8e, 0xdc, 0x8f, 0xdb, 0x75, 0x71, 0x4e, 0x2f, 0xff, 0x0b, 0xba, 0x33,
+ 0x88, 0x9f, 0xf5, 0x70, 0xfb, 0xe0, 0xd4, 0x4d, 0x6a, 0x12, 0xba, 0x75, 0xa3, 0xd9, 0x32, 0x61,
+ 0x34, 0xdc, 0x22, 0x4d, 0xc7, 0xad, 0x18, 0x35, 0xd9, 0xd6, 0x11, 0x9e, 0x47, 0x60, 0xf2, 0xc7,
+ 0x34, 0x55, 0x4a, 0x04, 0x6d, 0x76, 0x6c, 0xc7, 0xda, 0x43, 0x54, 0x86, 0xf6, 0x1f, 0x42, 0xa1,
+ 0x43, 0x67, 0x63, 0x7a, 0xd1, 0x5f, 0x13, 0xe3, 0xae, 0x51, 0xd5, 0x63, 0x2a, 0x7d, 0x36, 0x81,
+ 0x5b, 0x8f, 0xd9, 0x44, 0xbf, 0x4d, 0xa0, 0x36, 0x62, 0x36, 0xd9, 0x77, 0x13, 0xb8, 0x5c, 0xcc,
+ 0x86, 0xbd, 0x88, 0x6e, 0x4f, 0xa0, 0xf2, 0xfa, 0x07, 0xec, 0x26, 0xa2, 0xec, 0x17, 0x4d, 0xa7,
+ 0xda, 0x10, 0xcd, 0x30, 0xc2, 0x33, 0xaa, 0x2c, 0xcd, 0x64, 0x3b, 0x4c, 0xa0, 0x0b, 0xf1, 0xa8,
+ 0xb2, 0x6f, 0x25, 0x70, 0x9b, 0xd4, 0x69, 0x93, 0x1a, 0xc9, 0x2e, 0x28, 0x11, 0x6c, 0xd1, 0x9e,
+ 0x61, 0x2e, 0xf1, 0xad, 0x8a, 0xfa, 0x27, 0x3b, 0x5f, 0xf7, 0x47, 0x63, 0x7e, 0x77, 0x94, 0xff,
+ 0xc5, 0x2b, 0xf0, 0xc7, 0x46, 0xbd, 0xea, 0x36, 0x3b, 0xd5, 0x6e, 0xbb, 0x67, 0x38, 0x4d, 0xd8,
+ 0xf5, 0x84, 0x97, 0x01, 0xc2, 0xec, 0x99, 0x16, 0x9c, 0x50, 0xff, 0x22, 0x8d, 0xf9, 0xe5, 0xa0,
+ 0x3f, 0x14, 0xaf, 0x0d, 0x51, 0x06, 0x2e, 0x78, 0xc5, 0xaa, 0xf2, 0x15, 0xa1, 0x7e, 0x99, 0xec,
+ 0x72, 0x08, 0x38, 0xaf, 0xba, 0xc5, 0x6e, 0x2a, 0x80, 0xb2, 0x47, 0xa9, 0xa5, 0xa9, 0x89, 0x2b,
+ 0x30, 0x89, 0x29, 0x88, 0x0d, 0x49, 0x41, 0xa2, 0x3c, 0xd1, 0x99, 0x01, 0x04, 0xea, 0xb9, 0x46,
+ 0xf1, 0x29, 0x48, 0x5b, 0x66, 0x47, 0x9e, 0x14, 0x39, 0x8c, 0x97, 0x06, 0xae, 0xd9, 0xee, 0x39,
+ 0xaf, 0x64, 0x73, 0x58, 0x41, 0xec, 0x75, 0x9e, 0x75, 0xba, 0x2f, 0x3a, 0x72, 0x77, 0x91, 0xea,
+ 0x73, 0x9b, 0x37, 0x61, 0x89, 0xe3, 0x79, 0x35, 0x6d, 0xd7, 0x6e, 0x19, 0xfb, 0xa6, 0xc6, 0xe6,
+ 0x26, 0xcb, 0xcf, 0xc6, 0xa2, 0x2a, 0x94, 0x40, 0xde, 0x26, 0xd2, 0x36, 0xf5, 0xfb, 0xec, 0x2e,
+ 0x81, 0xe3, 0x1e, 0x2d, 0x0d, 0x0f, 0xbb, 0x21, 0xb8, 0xb0, 0xb6, 0x55, 0xfe, 0x83, 0x0c, 0xe6,
+ 0x1f, 0xb0, 0x37, 0x15, 0xa5, 0xdc, 0xdc, 0x34, 0x92, 0xa1, 0x98, 0x55, 0xf4, 0x1a, 0x05, 0x10,
+ 0x26, 0x9d, 0x12, 0x06, 0x35, 0x96, 0x18, 0x54, 0xd4, 0x2e, 0x0a, 0x12, 0x25, 0x65, 0xe6, 0x10,
+ 0xdd, 0x3d, 0x8c, 0x0d, 0xb9, 0x0d, 0x0b, 0x84, 0x61, 0xed, 0xee, 0x81, 0x30, 0x6d, 0x4d, 0x2c,
+ 0x81, 0x21, 0x96, 0x60, 0x5d, 0x51, 0xd1, 0xe9, 0xc2, 0xa6, 0xd3, 0x01, 0x53, 0x63, 0xa0, 0x0b,
+ 0x7e, 0x2c, 0x45, 0x73, 0xc2, 0x1f, 0x94, 0xe1, 0xb0, 0x26, 0xcd, 0x53, 0xa4, 0x00, 0x86, 0x07,
+ 0x39, 0x77, 0xd0, 0x8e, 0xdd, 0xb4, 0x1d, 0x18, 0x95, 0xe9, 0xb7, 0x58, 0x91, 0xd0, 0x7b, 0x1d,
+ 0x7b, 0xaf, 0x07, 0x4a, 0x9a, 0x35, 0xb7, 0x6b, 0xd5, 0x4c, 0x4b, 0x2b, 0xcc, 0xd9, 0xc3, 0x31,
+ 0x76, 0xb5, 0xcd, 0xb9, 0x09, 0x40, 0x89, 0xc1, 0xa7, 0x2c, 0x0e, 0xe7, 0x2a, 0x02, 0x0c, 0xb8,
+ 0x3d, 0x67, 0x40, 0xde, 0x5d, 0x16, 0xb3, 0xbe, 0x58, 0xfe, 0x49, 0x8a, 0x15, 0xc5, 0xf2, 0xa8,
+ 0xc5, 0xa5, 0x12, 0x56, 0x95, 0x66, 0x55, 0xf8, 0x13, 0xcf, 0x61, 0x32, 0x09, 0x22, 0xc2, 0xde,
+ 0xeb, 0x21, 0x38, 0xa5, 0xd0, 0x27, 0x7c, 0x4d, 0xe4, 0xc1, 0x98, 0x5e, 0x56, 0x9f, 0x19, 0xca,
+ 0x34, 0x8b, 0x28, 0xec, 0xff, 0x66, 0x85, 0xf6, 0xcd, 0x25, 0xcb, 0xbf, 0x36, 0x37, 0xa0, 0x5c,
+ 0xfe, 0x75, 0x61, 0xb8, 0x66, 0xec, 0x48, 0x1b, 0x62, 0x81, 0x9b, 0x62, 0x81, 0x73, 0xe5, 0x7f,
+ 0x49, 0x5f, 0x03, 0xc0, 0xe4, 0xb1, 0xcf, 0xa5, 0xba, 0x66, 0x7b, 0x99, 0x6b, 0xb6, 0x55, 0xd7,
+ 0x4c, 0xc2, 0x60, 0x79, 0x64, 0xfc, 0x13, 0xac, 0xd6, 0x82, 0xed, 0xce, 0xa2, 0x66, 0xf6, 0x1c,
+ 0xb2, 0xf3, 0x42, 0x41, 0x66, 0x85, 0x0f, 0x11, 0xf2, 0x45, 0xb3, 0x55, 0xab, 0x1a, 0x56, 0x0d,
+ 0xca, 0x6a, 0xf2, 0x39, 0xc2, 0xe0, 0x61, 0x65, 0x7d, 0x0e, 0xba, 0x6f, 0xb4, 0xf6, 0x4c, 0x6d,
+ 0x63, 0x4e, 0x79, 0x2e, 0x5a, 0x74, 0x8c, 0x04, 0xb0, 0x67, 0x99, 0x96, 0xf9, 0x5c, 0xcb, 0x2b,
+ 0x12, 0x6a, 0x7b, 0x3d, 0x92, 0xcb, 0x84, 0x9d, 0xda, 0xc2, 0x4e, 0x85, 0xf2, 0x1f, 0x93, 0x93,
+ 0xc4, 0xe5, 0xb2, 0x92, 0x7b, 0x71, 0xc0, 0x7a, 0xbb, 0x2e, 0xbd, 0x44, 0x96, 0x4f, 0x1c, 0x48,
+ 0x69, 0x7e, 0xaf, 0xd5, 0x92, 0x79, 0x93, 0xc3, 0xe7, 0x5c, 0x44, 0x11, 0x23, 0x6a, 0xe9, 0x8c,
+ 0x28, 0xc8, 0xdb, 0x32, 0x7f, 0xcb, 0x32, 0x5a, 0x4a, 0xa0, 0xca, 0x6c, 0x6d, 0x1e, 0x51, 0xed,
+ 0xb6, 0xdb, 0x46, 0x07, 0xec, 0x84, 0x93, 0x97, 0x88, 0x7a, 0xcb, 0xd8, 0xb5, 0xb5, 0x8d, 0xf2,
+ 0x1f, 0x66, 0xf0, 0x73, 0xb2, 0xb8, 0x12, 0x56, 0x67, 0x85, 0x8a, 0xee, 0x02, 0x13, 0x6e, 0xb8,
+ 0xe6, 0xcb, 0xa6, 0xed, 0xd8, 0xf2, 0x5d, 0x05, 0xc7, 0x88, 0x32, 0x13, 0x63, 0x3d, 0x45, 0xbe,
+ 0xcc, 0x51, 0x2f, 0xcc, 0xe6, 0x6e, 0xc3, 0x51, 0x83, 0x5a, 0x86, 0x01, 0xc7, 0x43, 0x8a, 0xe8,
+ 0xd6, 0x91, 0x13, 0xce, 0x5a, 0xb8, 0x63, 0xaa, 0xa8, 0xca, 0x1e, 0xe4, 0x59, 0x38, 0x39, 0xdc,
+ 0x65, 0xb7, 0x04, 0xae, 0xda, 0x30, 0x9a, 0x9d, 0x66, 0x67, 0x37, 0x21, 0x78, 0x8d, 0x92, 0x0c,
+ 0x0e, 0xcc, 0xb3, 0x8c, 0x8a, 0x5e, 0x17, 0x65, 0x38, 0xa0, 0x5b, 0xdd, 0x6e, 0x4f, 0x6e, 0x18,
+ 0xbb, 0xca, 0xa2, 0xd1, 0x24, 0x72, 0x2a, 0x8a, 0x8f, 0x66, 0xd6, 0x64, 0x2e, 0x43, 0x7f, 0xd9,
+ 0x95, 0xb6, 0x87, 0xc8, 0x10, 0xed, 0xc5, 0xdd, 0x79, 0xc3, 0x17, 0xc8, 0x09, 0x24, 0x02, 0x27,
+ 0xa4, 0x6d, 0xd2, 0x82, 0x48, 0x38, 0xd7, 0x58, 0xbe, 0x5b, 0xdc, 0x8d, 0x17, 0x7b, 0xbb, 0xfc,
+ 0x7b, 0xe4, 0x78, 0xe2, 0xaf, 0xf1, 0x26, 0x96, 0x08, 0xb5, 0xe9, 0x09, 0x31, 0xd4, 0xe4, 0x45,
+ 0x6d, 0x24, 0xb4, 0x81, 0x31, 0x26, 0x6b, 0xd9, 0x5e, 0xac, 0x26, 0x7f, 0x51, 0x2a, 0x16, 0x45,
+ 0xc2, 0x8d, 0xda, 0xbe, 0x69, 0x39, 0x4d, 0xdb, 0x94, 0xee, 0xd7, 0x53, 0xdc, 0xaf, 0xfc, 0xd7,
+ 0xd1, 0x69, 0xe4, 0x9f, 0xac, 0x4e, 0x68, 0x44, 0xef, 0x08, 0x13, 0xde, 0x2d, 0x83, 0xc1, 0x99,
+ 0x1b, 0x59, 0xbc, 0xcb, 0x70, 0x62, 0xf1, 0xe9, 0xf2, 0x0f, 0x71, 0xbe, 0x78, 0x25, 0xcb, 0x9f,
+ 0x2d, 0x99, 0xef, 0xf3, 0x6e, 0x72, 0xbe, 0x38, 0xa6, 0x84, 0xe2, 0x86, 0x24, 0x64, 0x73, 0xb0,
+ 0x90, 0xfd, 0x37, 0xd8, 0xed, 0x85, 0x3f, 0xde, 0xbd, 0x44, 0x7d, 0xbb, 0x9a, 0x08, 0x14, 0x51,
+ 0x00, 0x49, 0x30, 0xa6, 0x3e, 0x94, 0xcf, 0x81, 0xb1, 0xee, 0xb7, 0xe6, 0x2f, 0x64, 0x25, 0xc4,
+ 0xd3, 0x01, 0xce, 0xaa, 0x57, 0xa1, 0xee, 0xe6, 0x96, 0x51, 0x40, 0xdc, 0x63, 0xe3, 0x23, 0x9c,
+ 0x45, 0xa3, 0x41, 0x7d, 0xa9, 0xa5, 0xcb, 0x7f, 0x94, 0x46, 0xbb, 0xc7, 0xc7, 0x8a, 0xc5, 0x14,
+ 0xd4, 0x4e, 0xa6, 0x20, 0x8c, 0x60, 0x0e, 0xc4, 0x2a, 0x94, 0x22, 0x38, 0x45, 0x2b, 0xde, 0x56,
+ 0x23, 0x18, 0xfb, 0x15, 0x69, 0x15, 0x25, 0xe2, 0x02, 0x51, 0xa2, 0xa2, 0x68, 0xcf, 0xbb, 0x79,
+ 0x96, 0xcc, 0xd6, 0x4e, 0xe6, 0x17, 0x91, 0xb4, 0x25, 0xd8, 0x32, 0x1c, 0x53, 0x26, 0xa3, 0x76,
+ 0x1c, 0x13, 0x16, 0x7f, 0xbb, 0x3f, 0x47, 0x5c, 0x01, 0xc9, 0x39, 0xda, 0x2e, 0x12, 0x50, 0xb7,
+ 0x66, 0x3a, 0x46, 0xb3, 0xa5, 0xe5, 0x55, 0x55, 0x29, 0x63, 0x70, 0x4d, 0x6d, 0x8d, 0xa9, 0x53,
+ 0x17, 0xc9, 0xc4, 0xe8, 0xd4, 0x6c, 0xad, 0x50, 0xfe, 0x57, 0xa9, 0x25, 0x1f, 0x08, 0x86, 0xcb,
+ 0x9c, 0xb8, 0x3e, 0xe7, 0xc4, 0xf4, 0xde, 0x5a, 0x80, 0xe5, 0x0e, 0x2e, 0x56, 0x2c, 0x66, 0x80,
+ 0xac, 0x20, 0x2f, 0x4b, 0xd4, 0x15, 0xaf, 0xc9, 0xcc, 0x0b, 0x91, 0x75, 0x48, 0x56, 0xc4, 0x42,
+ 0x5d, 0xfa, 0xd3, 0x5a, 0xf9, 0xbf, 0xd0, 0xee, 0x9c, 0xfc, 0xf3, 0x01, 0xe2, 0xb8, 0x07, 0x27,
+ 0x6d, 0xbb, 0x1a, 0x1f, 0xff, 0xf8, 0xfd, 0x91, 0x17, 0xf2, 0xdd, 0x74, 0xbb, 0xe7, 0x1a, 0xbb,
+ 0xbb, 0x96, 0xb9, 0x6b, 0xf0, 0x43, 0x3a, 0x9d, 0xf8, 0xc4, 0x6d, 0x94, 0x8c, 0x30, 0x78, 0x2f,
+ 0xf9, 0x16, 0x57, 0x92, 0x61, 0x18, 0xad, 0xc5, 0x00, 0x4c, 0x81, 0xeb, 0x31, 0x9f, 0x38, 0xed,
+ 0xdb, 0x55, 0x6d, 0x43, 0x18, 0x5c, 0x40, 0xc5, 0x99, 0x46, 0x76, 0x7a, 0xdb, 0x3d, 0x72, 0xa3,
+ 0xbc, 0x38, 0x52, 0x13, 0x40, 0x24, 0x03, 0x16, 0x8b, 0x40, 0xb8, 0x14, 0x51, 0x88, 0x31, 0xc9,
+ 0x03, 0x93, 0xbc, 0xa2, 0x21, 0x26, 0xc1, 0x75, 0x11, 0xc7, 0xa7, 0x76, 0x6f, 0xd9, 0xd1, 0x7c,
+ 0x67, 0xe9, 0x9f, 0x8d, 0x70, 0xc5, 0x27, 0xf0, 0xc8, 0x58, 0x87, 0xf3, 0xdc, 0xc2, 0x6b, 0x5e,
+ 0x01, 0x6f, 0x77, 0x2d, 0x53, 0x4b, 0x95, 0x5b, 0x14, 0x8f, 0xc9, 0x3f, 0x05, 0x41, 0x92, 0x84,
+ 0xc6, 0x75, 0xbc, 0xdb, 0xa0, 0xc8, 0x22, 0xf7, 0x97, 0x18, 0x92, 0xf6, 0xe7, 0x19, 0x54, 0x6d,
+ 0xc5, 0x47, 0xd2, 0xd2, 0x6f, 0x7a, 0x8e, 0x7a, 0x8a, 0x86, 0xe4, 0x84, 0x3b, 0xdf, 0x02, 0xc6,
+ 0x6d, 0x37, 0x6d, 0x5b, 0x56, 0xa4, 0x1c, 0xdd, 0x31, 0x5f, 0xd2, 0x99, 0xd3, 0xd6, 0xd2, 0x54,
+ 0x77, 0xcf, 0x23, 0x90, 0x2d, 0x23, 0xee, 0x23, 0x00, 0x36, 0xd9, 0x14, 0xcd, 0xd2, 0x1e, 0xbf,
+ 0x88, 0x42, 0xd6, 0x35, 0x95, 0x35, 0xd9, 0x36, 0x5d, 0x57, 0x59, 0x13, 0x28, 0x64, 0xdd, 0x90,
+ 0x31, 0xd0, 0x73, 0xa8, 0x21, 0x90, 0x93, 0xc1, 0x08, 0xa3, 0xc9, 0x82, 0x90, 0x89, 0x0b, 0x26,
+ 0xb1, 0x12, 0xb6, 0xe9, 0x60, 0xf9, 0x26, 0xce, 0xd7, 0x4b, 0x70, 0x38, 0xcc, 0x96, 0xca, 0x8c,
+ 0x6a, 0x48, 0xe6, 0x6d, 0x95, 0x39, 0x89, 0x43, 0xe6, 0x8b, 0xfa, 0xcd, 0x78, 0x25, 0x12, 0xfe,
+ 0xf5, 0xb3, 0xf7, 0x19, 0xfd, 0x4e, 0xbc, 0x16, 0x2a, 0x0e, 0x59, 0xc1, 0x01, 0x7f, 0x9f, 0xfe,
+ 0x6e, 0x06, 0x96, 0x5c, 0x89, 0x1b, 0x19, 0xd4, 0x17, 0xac, 0x57, 0x17, 0x6e, 0xaf, 0x00, 0x0c,
+ 0xdb, 0x87, 0x54, 0x54, 0x69, 0x29, 0x51, 0x2d, 0xc5, 0x98, 0x56, 0x73, 0xdf, 0xec, 0x98, 0x76,
+ 0x7c, 0x3d, 0x63, 0x57, 0x29, 0x96, 0xb4, 0xac, 0xc2, 0x20, 0x2b, 0x28, 0xde, 0xb7, 0xb5, 0xb5,
+ 0x5c, 0xf9, 0x0b, 0x6c, 0x08, 0xc4, 0xf7, 0xd0, 0xf1, 0xea, 0xb9, 0xd8, 0x42, 0xd5, 0x06, 0x19,
+ 0x6a, 0xf9, 0xdc, 0x71, 0xdb, 0xcd, 0x0e, 0x66, 0xf4, 0x94, 0x02, 0x33, 0x5e, 0x22, 0x2c, 0x4d,
+ 0x31, 0xf8, 0x7c, 0x49, 0x0b, 0xe3, 0x47, 0x78, 0x1a, 0x9e, 0xbb, 0x88, 0x4c, 0x7e, 0x5a, 0xb5,
+ 0xb0, 0x9f, 0xd2, 0xe9, 0x56, 0x1b, 0x46, 0x67, 0xd7, 0x94, 0xcd, 0x7c, 0x81, 0x30, 0x9f, 0xef,
+ 0x19, 0x2d, 0x79, 0x41, 0x4d, 0x40, 0xdb, 0x86, 0x8d, 0xbb, 0x57, 0x92, 0x18, 0xcf, 0xf4, 0x99,
+ 0xca, 0x1e, 0xfb, 0xc0, 0x0f, 0x0e, 0xf9, 0x65, 0xc0, 0x81, 0x1f, 0x0c, 0x3f, 0xc1, 0xff, 0xa9,
+ 0x45, 0x5e, 0x0e, 0x7c, 0xf8, 0xd9, 0x0f, 0x3f, 0x3b, 0x1c, 0x45, 0x47, 0xc7, 0x07, 0x9f, 0x0c,
+ 0xfc, 0xc9, 0x03, 0x41, 0xf6, 0x00, 0xc9, 0x7e, 0x85, 0xfe, 0x43, 0x97, 0x93, 0xc7, 0x0f, 0x0e,
+ 0x7d, 0xf5, 0xbf, 0x75, 0x39, 0x58, 0xe7, 0x98, 0xcf, 0xfe, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff,
+ 0x94, 0xe3, 0xeb, 0x61, 0xfa, 0x65, 0x00, 0x00,
}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/openolt/openolt.pb.go b/vendor/github.com/opencord/voltha-protos/v4/go/openolt/openolt.pb.go
similarity index 85%
rename from vendor/github.com/opencord/voltha-protos/v3/go/openolt/openolt.pb.go
rename to vendor/github.com/opencord/voltha-protos/v4/go/openolt/openolt.pb.go
index 5ab9cbe..606da10 100644
--- a/vendor/github.com/opencord/voltha-protos/v3/go/openolt/openolt.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v4/go/openolt/openolt.pb.go
@@ -7,9 +7,9 @@
context "context"
fmt "fmt"
proto "github.com/golang/protobuf/proto"
- common "github.com/opencord/voltha-protos/v3/go/common"
- config "github.com/opencord/voltha-protos/v3/go/ext/config"
- tech_profile "github.com/opencord/voltha-protos/v3/go/tech_profile"
+ common "github.com/opencord/voltha-protos/v4/go/common"
+ config "github.com/opencord/voltha-protos/v4/go/ext/config"
+ tech_profile "github.com/opencord/voltha-protos/v4/go/tech_profile"
_ "google.golang.org/genproto/googleapis/api/annotations"
grpc "google.golang.org/grpc"
math "math"
@@ -158,6 +158,7 @@
const AdminState_DISABLED = AdminState_Types(common.AdminState_DISABLED)
const AdminState_DOWNLOADING_IMAGE = AdminState_Types(common.AdminState_DOWNLOADING_IMAGE)
const AdminState_DELETED = AdminState_Types(common.AdminState_DELETED)
+const AdminState_DELETING = AdminState_Types(common.AdminState_DELETING)
// OperStatus_Types from public import voltha_protos/common.proto
type OperStatus_Types = common.OperStatus_Types
@@ -2315,24 +2316,27 @@
}
type Flow struct {
- AccessIntfId int32 `protobuf:"fixed32,1,opt,name=access_intf_id,json=accessIntfId,proto3" json:"access_intf_id,omitempty"`
- OnuId int32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
- UniId int32 `protobuf:"fixed32,11,opt,name=uni_id,json=uniId,proto3" json:"uni_id,omitempty"`
- FlowId uint32 `protobuf:"fixed32,3,opt,name=flow_id,json=flowId,proto3" json:"flow_id,omitempty"`
- FlowType string `protobuf:"bytes,4,opt,name=flow_type,json=flowType,proto3" json:"flow_type,omitempty"`
- AllocId int32 `protobuf:"fixed32,10,opt,name=alloc_id,json=allocId,proto3" json:"alloc_id,omitempty"`
- NetworkIntfId int32 `protobuf:"fixed32,5,opt,name=network_intf_id,json=networkIntfId,proto3" json:"network_intf_id,omitempty"`
- GemportId int32 `protobuf:"fixed32,6,opt,name=gemport_id,json=gemportId,proto3" json:"gemport_id,omitempty"`
- Classifier *Classifier `protobuf:"bytes,7,opt,name=classifier,proto3" json:"classifier,omitempty"`
- Action *Action `protobuf:"bytes,8,opt,name=action,proto3" json:"action,omitempty"`
- Priority int32 `protobuf:"fixed32,9,opt,name=priority,proto3" json:"priority,omitempty"`
- Cookie uint64 `protobuf:"fixed64,12,opt,name=cookie,proto3" json:"cookie,omitempty"`
- PortNo uint32 `protobuf:"fixed32,13,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
- GroupId uint32 `protobuf:"fixed32,14,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
- TechProfileId uint32 `protobuf:"fixed32,15,opt,name=tech_profile_id,json=techProfileId,proto3" json:"tech_profile_id,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
+ AccessIntfId int32 `protobuf:"fixed32,1,opt,name=access_intf_id,json=accessIntfId,proto3" json:"access_intf_id,omitempty"`
+ OnuId int32 `protobuf:"fixed32,2,opt,name=onu_id,json=onuId,proto3" json:"onu_id,omitempty"`
+ UniId int32 `protobuf:"fixed32,11,opt,name=uni_id,json=uniId,proto3" json:"uni_id,omitempty"`
+ FlowId uint64 `protobuf:"fixed64,3,opt,name=flow_id,json=flowId,proto3" json:"flow_id,omitempty"`
+ SymmetricFlowId uint64 `protobuf:"fixed64,18,opt,name=symmetric_flow_id,json=symmetricFlowId,proto3" json:"symmetric_flow_id,omitempty"`
+ FlowType string `protobuf:"bytes,4,opt,name=flow_type,json=flowType,proto3" json:"flow_type,omitempty"`
+ AllocId int32 `protobuf:"fixed32,10,opt,name=alloc_id,json=allocId,proto3" json:"alloc_id,omitempty"`
+ NetworkIntfId int32 `protobuf:"fixed32,5,opt,name=network_intf_id,json=networkIntfId,proto3" json:"network_intf_id,omitempty"`
+ GemportId int32 `protobuf:"fixed32,6,opt,name=gemport_id,json=gemportId,proto3" json:"gemport_id,omitempty"`
+ Classifier *Classifier `protobuf:"bytes,7,opt,name=classifier,proto3" json:"classifier,omitempty"`
+ Action *Action `protobuf:"bytes,8,opt,name=action,proto3" json:"action,omitempty"`
+ Priority int32 `protobuf:"fixed32,9,opt,name=priority,proto3" json:"priority,omitempty"`
+ Cookie uint64 `protobuf:"fixed64,12,opt,name=cookie,proto3" json:"cookie,omitempty"`
+ PortNo uint32 `protobuf:"fixed32,13,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
+ GroupId uint32 `protobuf:"fixed32,14,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
+ TechProfileId uint32 `protobuf:"fixed32,15,opt,name=tech_profile_id,json=techProfileId,proto3" json:"tech_profile_id,omitempty"`
+ ReplicateFlow bool `protobuf:"varint,16,opt,name=replicate_flow,json=replicateFlow,proto3" json:"replicate_flow,omitempty"`
+ PbitToGemport map[uint32]uint32 `protobuf:"bytes,17,rep,name=pbit_to_gemport,json=pbitToGemport,proto3" json:"pbit_to_gemport,omitempty" protobuf_key:"fixed32,1,opt,name=key,proto3" protobuf_val:"fixed32,2,opt,name=value,proto3"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
}
func (m *Flow) Reset() { *m = Flow{} }
@@ -2381,13 +2385,20 @@
return 0
}
-func (m *Flow) GetFlowId() uint32 {
+func (m *Flow) GetFlowId() uint64 {
if m != nil {
return m.FlowId
}
return 0
}
+func (m *Flow) GetSymmetricFlowId() uint64 {
+ if m != nil {
+ return m.SymmetricFlowId
+ }
+ return 0
+}
+
func (m *Flow) GetFlowType() string {
if m != nil {
return m.FlowType
@@ -2465,6 +2476,20 @@
return 0
}
+func (m *Flow) GetReplicateFlow() bool {
+ if m != nil {
+ return m.ReplicateFlow
+ }
+ return false
+}
+
+func (m *Flow) GetPbitToGemport() map[uint32]uint32 {
+ if m != nil {
+ return m.PbitToGemport
+ }
+ return nil
+}
+
type SerialNumber struct {
VendorId []byte `protobuf:"bytes,1,opt,name=vendor_id,json=vendorId,proto3" json:"vendor_id,omitempty"`
VendorSpecific []byte `protobuf:"bytes,2,opt,name=vendor_specific,json=vendorSpecific,proto3" json:"vendor_specific,omitempty"`
@@ -4185,6 +4210,7 @@
proto.RegisterType((*ActionCmd)(nil), "openolt.ActionCmd")
proto.RegisterType((*Action)(nil), "openolt.Action")
proto.RegisterType((*Flow)(nil), "openolt.Flow")
+ proto.RegisterMapType((map[uint32]uint32)(nil), "openolt.Flow.PbitToGemportEntry")
proto.RegisterType((*SerialNumber)(nil), "openolt.SerialNumber")
proto.RegisterType((*PortStatistics)(nil), "openolt.PortStatistics")
proto.RegisterType((*FlowStatistics)(nil), "openolt.FlowStatistics")
@@ -4217,273 +4243,279 @@
func init() { proto.RegisterFile("voltha_protos/openolt.proto", fileDescriptor_c072e7aa0dfd74d5) }
var fileDescriptor_c072e7aa0dfd74d5 = []byte{
- // 4245 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5b, 0xcd, 0x73, 0x23, 0x49,
- 0x56, 0x6f, 0xd9, 0xb2, 0x24, 0x3f, 0x7d, 0x58, 0x4e, 0xb7, 0xbb, 0xfd, 0xd1, 0xd3, 0xed, 0xa9,
- 0x69, 0x66, 0x7a, 0x87, 0x19, 0x7b, 0xba, 0x67, 0x63, 0x61, 0x86, 0x05, 0x46, 0xb6, 0xd4, 0xb6,
- 0x18, 0xdb, 0x12, 0x25, 0x75, 0x37, 0xcc, 0xc6, 0x44, 0x6d, 0xb9, 0x2a, 0x25, 0xd7, 0xba, 0x54,
- 0x59, 0x53, 0x95, 0xf2, 0x07, 0xc7, 0x0d, 0x16, 0x2e, 0x9c, 0x98, 0x80, 0x08, 0xb8, 0x11, 0x5c,
- 0xb9, 0x70, 0x23, 0x82, 0x23, 0x57, 0x82, 0x0b, 0xff, 0x00, 0x07, 0x6e, 0xdc, 0x39, 0x11, 0x04,
- 0x91, 0x2f, 0xb3, 0xbe, 0x24, 0xd9, 0xdd, 0x1e, 0x4c, 0x70, 0x71, 0x28, 0xdf, 0xfb, 0xbd, 0xdf,
- 0xcb, 0x97, 0xf9, 0x32, 0xeb, 0x65, 0x65, 0x19, 0x36, 0xcf, 0x99, 0xcb, 0x4f, 0x4d, 0xc3, 0x0f,
- 0x18, 0x67, 0xe1, 0x0e, 0xf3, 0xa9, 0xc7, 0x5c, 0xbe, 0x8d, 0x4d, 0x52, 0x54, 0xcd, 0x8d, 0x47,
- 0x43, 0xc6, 0x86, 0x2e, 0xdd, 0x31, 0x7d, 0x67, 0xc7, 0xf4, 0x3c, 0xc6, 0x4d, 0xee, 0x30, 0x2f,
- 0x94, 0xb0, 0x8d, 0xad, 0x2c, 0x07, 0xa7, 0xd6, 0xa9, 0xf8, 0x3d, 0x70, 0x5c, 0xaa, 0x10, 0x1b,
- 0x59, 0x84, 0xc5, 0x46, 0x23, 0xe6, 0x29, 0xdd, 0xe3, 0xac, 0x8e, 0x5e, 0x72, 0xc3, 0x62, 0xde,
- 0xc0, 0x19, 0x4a, 0xbd, 0xf6, 0xcf, 0x79, 0x80, 0xb6, 0x67, 0x3b, 0x16, 0xfa, 0x24, 0xcf, 0xa1,
- 0xc8, 0x5c, 0x6e, 0x38, 0x9e, 0xbd, 0x96, 0xdb, 0xca, 0x3d, 0x2b, 0xbf, 0x78, 0xb0, 0x1d, 0x75,
- 0xba, 0xe3, 0xf2, 0x04, 0x78, 0x70, 0x4f, 0x2f, 0x30, 0x14, 0x90, 0x1f, 0x43, 0xc9, 0xf1, 0xf8,
- 0x00, 0x6d, 0xe6, 0xd0, 0xe6, 0x61, 0x6c, 0xd3, 0xf6, 0xf8, 0x20, 0x63, 0x54, 0x74, 0xa4, 0x84,
- 0x34, 0xa0, 0x8a, 0x56, 0xcc, 0xa7, 0x01, 0x9a, 0xce, 0xa3, 0xe9, 0x66, 0xc6, 0xb4, 0xe3, 0xd3,
- 0x20, 0x63, 0x5e, 0x76, 0x12, 0x29, 0xf9, 0x1d, 0xa8, 0x30, 0x6f, 0x6c, 0xd8, 0x4e, 0x68, 0x21,
- 0x43, 0x1e, 0x19, 0x36, 0x92, 0x0e, 0x7b, 0xe3, 0xa6, 0x13, 0x5a, 0x19, 0x02, 0x60, 0xb1, 0x10,
- 0x63, 0xf5, 0xc6, 0x68, 0xba, 0x30, 0x19, 0xab, 0x37, 0x9e, 0x88, 0x15, 0x05, 0x22, 0x56, 0x36,
- 0xb2, 0x1c, 0xb4, 0x29, 0x4c, 0xc4, 0xda, 0x19, 0x59, 0x4e, 0x36, 0x56, 0x26, 0x25, 0xe4, 0xc7,
- 0x50, 0xf4, 0xcf, 0xe4, 0xa0, 0x16, 0xd1, 0x68, 0x3d, 0x36, 0xea, 0x9a, 0xd6, 0x19, 0x9d, 0x18,
- 0x57, 0xff, 0x0c, 0xc7, 0xf5, 0x37, 0x01, 0x7c, 0x16, 0x70, 0x23, 0xe4, 0x26, 0x0f, 0xd7, 0x4a,
- 0x13, 0xde, 0xba, 0x2c, 0xe0, 0x3d, 0x91, 0x28, 0x21, 0x77, 0xac, 0xf0, 0xe0, 0x9e, 0xbe, 0xe8,
- 0x2b, 0x49, 0x28, 0x2c, 0x07, 0x2e, 0xbb, 0x50, 0x96, 0x8b, 0x13, 0x96, 0x2f, 0x5d, 0x76, 0x91,
- 0xb5, 0x1c, 0x28, 0x49, 0x48, 0x7e, 0x03, 0x16, 0x4d, 0xd7, 0x0c, 0x46, 0xd8, 0x57, 0x40, 0xc3,
- 0xb5, 0xd8, 0xb0, 0x21, 0x34, 0x99, 0xae, 0x96, 0x4c, 0x25, 0xda, 0x2d, 0x40, 0xde, 0x36, 0xb9,
- 0xa9, 0xfd, 0x47, 0x15, 0x96, 0x26, 0x70, 0x62, 0x9c, 0x5d, 0x16, 0xce, 0xcc, 0xa9, 0x43, 0x16,
- 0x66, 0x63, 0x77, 0x51, 0x40, 0x9a, 0x50, 0xb3, 0xaf, 0x1c, 0x6f, 0x68, 0x0c, 0xcd, 0xd0, 0x4f,
- 0x65, 0xd6, 0xa3, 0xd8, 0xb2, 0x29, 0xd4, 0xfb, 0x66, 0xe8, 0x67, 0xec, 0x2b, 0x76, 0x4a, 0x2c,
- 0x72, 0x4c, 0x4c, 0x70, 0x12, 0xd1, 0x64, 0x8e, 0x75, 0xbc, 0xf1, 0x74, 0x50, 0x65, 0x96, 0x48,
- 0xc9, 0x1b, 0xb8, 0x2f, 0x28, 0x42, 0x6e, 0x06, 0x7c, 0xec, 0x1b, 0x03, 0xd3, 0x71, 0x53, 0xb9,
- 0xf6, 0x34, 0xcd, 0xd4, 0x93, 0x98, 0x97, 0xa6, 0xe3, 0x8e, 0x03, 0x9a, 0xa1, 0x5c, 0x66, 0x19,
- 0xb5, 0x20, 0xfe, 0x06, 0x1e, 0x20, 0xb1, 0x33, 0xf4, 0x4c, 0xd7, 0xb0, 0xe9, 0x30, 0x30, 0x6d,
- 0x9a, 0xca, 0xc5, 0x0f, 0x32, 0xd4, 0x88, 0x6a, 0x4a, 0x50, 0x86, 0x79, 0x85, 0x4d, 0x6b, 0xc9,
- 0xcf, 0xe0, 0x21, 0x2e, 0x8c, 0xc0, 0x19, 0x70, 0x83, 0x0d, 0x8c, 0x0b, 0xc7, 0xb3, 0xd9, 0x45,
- 0x2a, 0x69, 0x33, 0xe4, 0x4d, 0x01, 0xeb, 0x0c, 0xde, 0x20, 0x68, 0x8a, 0x7c, 0x52, 0x4b, 0xfa,
- 0x20, 0xa2, 0x31, 0x5c, 0x16, 0x86, 0x46, 0xbc, 0x16, 0x64, 0x5a, 0x7f, 0x94, 0xa6, 0x3d, 0x64,
- 0x61, 0xd8, 0x19, 0x88, 0x45, 0xb1, 0x77, 0x6a, 0x7a, 0x1e, 0x75, 0x33, 0xd4, 0x35, 0xa6, 0x10,
- 0x6a, 0x89, 0x44, 0xe3, 0x8c, 0xa1, 0x84, 0xc9, 0x38, 0x97, 0x66, 0x8c, 0xb3, 0xc4, 0x5c, 0x3b,
- 0xce, 0x89, 0x5a, 0x10, 0x77, 0xe4, 0x26, 0xc1, 0x9d, 0x0b, 0xd9, 0x53, 0xb9, 0x1a, 0x7e, 0x3d,
- 0x4d, 0xd8, 0x0f, 0x4c, 0x2f, 0x1c, 0x39, 0x61, 0xe8, 0x30, 0xaf, 0xed, 0x71, 0x1a, 0x0c, 0x68,
- 0x40, 0x3d, 0x8b, 0xbe, 0x31, 0x03, 0xcf, 0xf1, 0x86, 0x6a, 0xd7, 0xe8, 0x3b, 0x17, 0xd8, 0xd3,
- 0x9f, 0xcb, 0xc1, 0x35, 0x2d, 0xee, 0x9c, 0xa3, 0xdf, 0xa4, 0xb3, 0x30, 0x3d, 0x0a, 0x8d, 0x18,
- 0x36, 0xab, 0xbf, 0x22, 0xe6, 0x2c, 0x42, 0x7a, 0x58, 0x13, 0x1e, 0xfc, 0x80, 0x59, 0x34, 0x0c,
- 0xc5, 0x2a, 0xa0, 0x41, 0xc0, 0xe4, 0x2e, 0x59, 0x46, 0x17, 0xbf, 0x96, 0x76, 0xd1, 0x8d, 0x71,
- 0x2d, 0x01, 0xcb, 0x38, 0x58, 0x65, 0xb3, 0xf4, 0x84, 0xc2, 0x7a, 0x32, 0x87, 0x03, 0x23, 0xbc,
- 0xf2, 0xac, 0x24, 0x8a, 0x0a, 0xba, 0xf8, 0x78, 0x7a, 0x2e, 0xbf, 0xa6, 0x57, 0xbd, 0x2b, 0xcf,
- 0xba, 0x2e, 0x10, 0x09, 0x8a, 0x10, 0xc2, 0xcd, 0x2b, 0x58, 0xc5, 0x0d, 0x96, 0x8f, 0x0d, 0x9f,
- 0x79, 0x72, 0x3b, 0x42, 0x17, 0x55, 0x74, 0xf1, 0x7e, 0x66, 0xbb, 0xe5, 0xe3, 0x2e, 0xf3, 0x70,
- 0x17, 0x9a, 0x9a, 0xd2, 0xac, 0x8e, 0xb8, 0xf0, 0x08, 0xd3, 0x9b, 0x4e, 0xcc, 0xc1, 0x38, 0x90,
- 0x0b, 0xa8, 0x86, 0xec, 0x3f, 0xca, 0xe4, 0x78, 0x0a, 0x3b, 0xab, 0xff, 0x62, 0x38, 0x66, 0x63,
- 0xc8, 0x1b, 0x19, 0x44, 0x40, 0x47, 0x8c, 0x53, 0xc3, 0xa6, 0x03, 0x6a, 0xc9, 0xad, 0x7c, 0x09,
- 0xdd, 0x68, 0x69, 0x37, 0x3a, 0x82, 0x9a, 0x88, 0xc9, 0xf0, 0x13, 0x36, 0xa5, 0x24, 0xa1, 0x0c,
- 0x03, 0x27, 0x61, 0x48, 0x47, 0x86, 0x4d, 0x5d, 0xc7, 0xa3, 0x32, 0x1c, 0xc1, 0x5f, 0x47, 0xfe,
- 0xe7, 0xd3, 0xf3, 0xb0, 0xdf, 0x3a, 0x52, 0x4b, 0xaa, 0x99, 0x98, 0x64, 0xdc, 0xad, 0xa9, 0xe9,
- 0xd8, 0xa7, 0xa3, 0x2c, 0x84, 0x9c, 0xc3, 0x16, 0xe6, 0xd6, 0xe9, 0x55, 0xe8, 0x58, 0xa6, 0x6b,
- 0xd0, 0xef, 0xc6, 0x8e, 0x3f, 0xa2, 0x1e, 0x4f, 0xe5, 0xd8, 0x32, 0x3a, 0xfe, 0x24, 0x93, 0x63,
- 0x0a, 0xdf, 0x8a, 0xe0, 0xd3, 0xa9, 0x26, 0x82, 0xb9, 0x16, 0x46, 0x7e, 0x06, 0x2b, 0xe9, 0x8c,
- 0x33, 0xad, 0x33, 0x74, 0x45, 0xa6, 0x57, 0xa3, 0x8c, 0xb1, 0x61, 0x9d, 0x79, 0xec, 0xc2, 0xa5,
- 0xf6, 0x90, 0x0a, 0x9e, 0x8c, 0xa7, 0x25, 0x96, 0x42, 0x09, 0x72, 0x06, 0x9b, 0xb2, 0x10, 0x18,
- 0x0c, 0x8c, 0x80, 0x9a, 0xd6, 0xa9, 0x41, 0x2f, 0x2d, 0x4a, 0x6d, 0x6a, 0xa3, 0x93, 0x15, 0x74,
- 0xb2, 0x93, 0xad, 0x0b, 0x06, 0xb8, 0xc8, 0xb9, 0x63, 0xba, 0xba, 0xb0, 0x68, 0x29, 0x83, 0x8c,
- 0xa3, 0x87, 0x4c, 0x22, 0x27, 0x11, 0xf1, 0xd3, 0x6e, 0x1b, 0xaa, 0x99, 0xaa, 0x88, 0xbc, 0x07,
- 0x80, 0x05, 0x8d, 0x48, 0x75, 0x8a, 0x4f, 0xbb, 0x45, 0x7d, 0x51, 0x48, 0x44, 0xf2, 0x52, 0xed,
- 0x00, 0x6a, 0xd9, 0x8a, 0x88, 0x3c, 0x84, 0xa2, 0x2c, 0x9e, 0xe4, 0xb3, 0xb1, 0xa8, 0x17, 0xb0,
- 0x40, 0xb2, 0x27, 0x98, 0xe6, 0x26, 0x99, 0x4e, 0x61, 0x79, 0xaa, 0xbc, 0xb9, 0x9e, 0xec, 0x4b,
- 0xa8, 0x86, 0x34, 0x70, 0x4c, 0xd7, 0xf0, 0xc6, 0xa3, 0x13, 0x1a, 0xa8, 0xa7, 0xe9, 0x6a, 0x3c,
- 0x24, 0x3d, 0xd4, 0x1e, 0xa3, 0x52, 0xaf, 0x84, 0xa9, 0x96, 0xf6, 0x7d, 0x1e, 0xaa, 0x99, 0x72,
- 0xe8, 0x7a, 0x37, 0xab, 0x50, 0xc0, 0xf5, 0x2e, 0x9f, 0xd6, 0x45, 0x7d, 0x41, 0xac, 0xdd, 0xc9,
- 0x50, 0xe6, 0x27, 0x42, 0x21, 0x4f, 0xa0, 0x6c, 0xda, 0x23, 0xc7, 0x53, 0xfa, 0x05, 0xd4, 0x03,
- 0x8a, 0x24, 0x60, 0xaa, 0xf7, 0xf9, 0x77, 0xee, 0x3d, 0x39, 0x84, 0x32, 0x6e, 0x6c, 0x01, 0x35,
- 0x43, 0xe6, 0xe1, 0xe3, 0xaf, 0x96, 0xcd, 0xb7, 0x24, 0xb0, 0xed, 0xec, 0x56, 0xac, 0xa3, 0x89,
- 0x0e, 0x83, 0xf8, 0xb7, 0xf6, 0xa7, 0x73, 0x70, 0x7f, 0x16, 0x88, 0x7c, 0x00, 0x4f, 0x3a, 0xc7,
- 0xaf, 0x8c, 0xc6, 0x5e, 0xbf, 0xfd, 0xba, 0xd1, 0x6f, 0x77, 0x8e, 0x8d, 0x97, 0x8d, 0xf6, 0xa1,
- 0xa1, 0xb7, 0x1a, 0xbd, 0xce, 0xb1, 0x71, 0xdc, 0x39, 0x6e, 0xd5, 0xef, 0x91, 0x0f, 0x41, 0xbb,
- 0x01, 0xa4, 0x37, 0x8e, 0xf7, 0xdb, 0xc7, 0xfb, 0xf5, 0x1c, 0xf9, 0x09, 0xbc, 0xb8, 0x01, 0xd7,
- 0x6d, 0xf4, 0x7a, 0x6f, 0x3a, 0x7a, 0xd3, 0x68, 0xbc, 0xea, 0x1f, 0xb4, 0x8e, 0xfb, 0xed, 0x3d,
- 0xc4, 0xd4, 0xe7, 0x88, 0x06, 0x8f, 0x6f, 0xb0, 0x3b, 0xec, 0xf4, 0xea, 0xf3, 0xe4, 0x7d, 0x78,
- 0x6f, 0x16, 0x06, 0x65, 0x87, 0x0d, 0xfd, 0xa8, 0x9e, 0xbf, 0x2e, 0x96, 0xde, 0x9b, 0x76, 0x7f,
- 0xef, 0xc0, 0xe8, 0xbc, 0x6e, 0xe9, 0xf5, 0x05, 0xed, 0xe7, 0x40, 0xa6, 0x0b, 0x74, 0x42, 0x20,
- 0xcf, 0xaf, 0xfc, 0x28, 0xf1, 0xf1, 0x77, 0x3a, 0x5b, 0xe6, 0x6e, 0xc8, 0xf0, 0xc9, 0xb4, 0xd0,
- 0x74, 0xa8, 0x65, 0x2b, 0xea, 0x5b, 0xe7, 0x5d, 0x1d, 0xe6, 0xfd, 0x33, 0x8e, 0xcc, 0x15, 0x5d,
- 0xfc, 0xd4, 0xfe, 0x29, 0x07, 0xf5, 0xc9, 0x8a, 0x9b, 0x6c, 0xc2, 0x22, 0xd2, 0x62, 0xcf, 0x65,
- 0xf6, 0xe1, 0x81, 0xa6, 0x3f, 0xd1, 0xfb, 0xa9, 0xf5, 0x39, 0xa4, 0x23, 0x2c, 0xd0, 0x63, 0xbf,
- 0x8b, 0x4a, 0xd2, 0xb6, 0x85, 0x1d, 0x96, 0xe0, 0x8e, 0x2c, 0x3a, 0x8b, 0x7a, 0x41, 0x34, 0xa5,
- 0x02, 0x8d, 0x3c, 0x86, 0xc9, 0x58, 0xd4, 0x0b, 0xa2, 0x79, 0xcc, 0xc8, 0x03, 0x28, 0x58, 0x8c,
- 0x9d, 0x39, 0x14, 0x8b, 0xa9, 0x82, 0xae, 0x5a, 0x51, 0x14, 0xf9, 0x24, 0x8a, 0xa7, 0xb0, 0x28,
- 0xcb, 0x14, 0xd3, 0xba, 0xbe, 0x83, 0xda, 0x4f, 0x61, 0xf1, 0x80, 0x9a, 0x01, 0x3f, 0xa1, 0x26,
- 0x27, 0x3b, 0xb0, 0x72, 0x1a, 0x35, 0x64, 0x91, 0xc5, 0xc7, 0x01, 0x55, 0x16, 0x24, 0x56, 0xf5,
- 0x22, 0x8d, 0xf6, 0x77, 0x39, 0x98, 0xef, 0x78, 0xe3, 0x5b, 0x8f, 0xf9, 0xd4, 0x5a, 0x9d, 0x7f,
- 0xf7, 0xb5, 0x2a, 0x22, 0x75, 0xe4, 0xea, 0x2e, 0xea, 0xe2, 0x27, 0xf9, 0x08, 0x96, 0xd8, 0xc8,
- 0xb2, 0x0c, 0xea, 0x59, 0xc1, 0x95, 0x2f, 0x66, 0x0b, 0x27, 0xa8, 0xa4, 0xd7, 0x84, 0xb8, 0x15,
- 0x4b, 0xb5, 0xbf, 0xcf, 0x01, 0xc1, 0x67, 0xc7, 0x50, 0x3c, 0x7e, 0x9a, 0x4e, 0xc8, 0x4d, 0xef,
- 0x86, 0xc1, 0xb9, 0xae, 0xf7, 0x5f, 0xc0, 0xba, 0x2b, 0x29, 0x0c, 0x75, 0xb2, 0x44, 0x1e, 0xe3,
- 0x8f, 0x68, 0xc0, 0xd4, 0x3c, 0x3e, 0x50, 0x00, 0xb9, 0xfb, 0xa2, 0xfa, 0x1b, 0x1a, 0x30, 0xf2,
- 0x19, 0xdc, 0x9f, 0x65, 0xaa, 0xa2, 0x21, 0xd3, 0x56, 0xda, 0xd7, 0x50, 0x14, 0x09, 0x7e, 0x14,
- 0x0e, 0xef, 0x20, 0xb3, 0x7f, 0x95, 0x83, 0x45, 0xf1, 0x9c, 0xc6, 0xe4, 0xbe, 0x35, 0x5f, 0x2a,
- 0x29, 0xf3, 0x99, 0xa4, 0xcc, 0x66, 0xf9, 0xc2, 0x64, 0x96, 0x4f, 0xf7, 0xe3, 0x0b, 0xa8, 0xbc,
- 0xf2, 0x5d, 0xc7, 0x3b, 0x7b, 0x5b, 0x4f, 0x94, 0xe9, 0x5c, 0x62, 0xfa, 0xe7, 0x8b, 0x00, 0x4d,
- 0x7a, 0xee, 0x58, 0xb4, 0xed, 0x0d, 0x70, 0x3d, 0x9c, 0x53, 0xcf, 0x66, 0x81, 0xda, 0x4d, 0x54,
- 0x8b, 0xdc, 0x87, 0x85, 0x11, 0xb3, 0xa9, 0xab, 0x9e, 0x89, 0xb2, 0x41, 0x7e, 0x04, 0xf5, 0x53,
- 0x33, 0xb0, 0x2f, 0xcc, 0x80, 0x1a, 0xe7, 0x34, 0x10, 0xa5, 0xbc, 0xda, 0x52, 0x96, 0x22, 0xf9,
- 0x6b, 0x29, 0x16, 0xd0, 0x81, 0x13, 0x8c, 0x32, 0xd0, 0xbc, 0x84, 0x46, 0xf2, 0x08, 0xba, 0x09,
- 0x8b, 0x36, 0xf6, 0x48, 0xf4, 0xbf, 0x2e, 0xb7, 0x06, 0x29, 0x68, 0xdb, 0x62, 0xc6, 0x95, 0x32,
- 0x9b, 0xf1, 0xcb, 0x88, 0x23, 0x52, 0x97, 0x4e, 0x77, 0x41, 0x27, 0xea, 0x60, 0x31, 0x78, 0x21,
- 0x96, 0xd9, 0x45, 0xbd, 0xe4, 0x33, 0x4f, 0x1c, 0xe5, 0x43, 0xf2, 0x18, 0x80, 0x53, 0xeb, 0xd4,
- 0x63, 0x2e, 0x1b, 0x5e, 0x45, 0x4f, 0xc1, 0x44, 0x42, 0xb6, 0xe4, 0x41, 0xc6, 0xb1, 0xe5, 0x61,
- 0x54, 0xed, 0x1e, 0x80, 0x13, 0x88, 0x67, 0x4b, 0xf2, 0x08, 0x40, 0x21, 0xa8, 0x3a, 0x92, 0x15,
- 0xf5, 0x12, 0xea, 0x5b, 0x9e, 0x4d, 0x9e, 0x42, 0xcd, 0x74, 0x5d, 0x66, 0x25, 0x0c, 0x25, 0x44,
- 0x54, 0x50, 0x1a, 0x71, 0x6c, 0x41, 0x25, 0x46, 0x51, 0x75, 0x5c, 0x2a, 0xea, 0xa0, 0x30, 0x82,
- 0xe7, 0x19, 0xd4, 0x93, 0x94, 0x50, 0x4c, 0x80, 0xa8, 0x5a, 0x9c, 0x18, 0x92, 0xeb, 0x29, 0xd4,
- 0x52, 0x48, 0xaa, 0x4e, 0x2f, 0x45, 0xbd, 0x12, 0xe3, 0x04, 0x9f, 0x06, 0x55, 0xb5, 0x53, 0x2a,
- 0xb2, 0x2a, 0x82, 0xca, 0x72, 0xbf, 0x94, 0x4c, 0x8f, 0xa1, 0x1c, 0x61, 0xa8, 0x2a, 0xf0, 0x8b,
- 0xf2, 0xb5, 0x85, 0xe4, 0xf8, 0x0a, 0x0a, 0x81, 0xe9, 0x0d, 0x69, 0xb8, 0xb6, 0xb4, 0x35, 0xff,
- 0xac, 0xfc, 0xe2, 0x59, 0xf2, 0x9a, 0x20, 0x4e, 0x28, 0xf5, 0x53, 0xa7, 0x21, 0x1b, 0x07, 0x16,
- 0xd5, 0x11, 0xaf, 0x2b, 0xbb, 0x8d, 0xbf, 0xc8, 0xc3, 0xfd, 0x59, 0x00, 0xb2, 0x1e, 0xbd, 0xdd,
- 0xb2, 0xc3, 0xb5, 0xdc, 0xd6, 0xfc, 0xb3, 0xa2, 0x7a, 0x85, 0x65, 0x4f, 0xce, 0xd8, 0xdc, 0xd4,
- 0x8c, 0xed, 0xc1, 0x82, 0xcf, 0x98, 0x1b, 0xae, 0xcd, 0x63, 0xa7, 0x3e, 0x7d, 0xd7, 0x4e, 0x6d,
- 0x77, 0x19, 0x73, 0x75, 0x69, 0xbb, 0xf1, 0x5f, 0x73, 0x90, 0x17, 0x6d, 0xf2, 0x7b, 0xa9, 0x67,
- 0x6b, 0xed, 0xc5, 0x4f, 0x6e, 0x45, 0x86, 0x7f, 0xc4, 0xf3, 0x4c, 0x3d, 0x93, 0x7b, 0x50, 0x0c,
- 0x4f, 0xcd, 0xc0, 0xf1, 0x86, 0xd8, 0xed, 0xda, 0x8b, 0x2f, 0x6e, 0x47, 0xd7, 0x93, 0xc6, 0xc8,
- 0x18, 0x31, 0x89, 0x85, 0x29, 0x27, 0x50, 0x6e, 0x94, 0xb2, 0x21, 0xd6, 0x39, 0x55, 0xef, 0x4b,
- 0x8a, 0xba, 0xf8, 0xa9, 0x35, 0xa0, 0x14, 0x75, 0x87, 0x00, 0x14, 0x44, 0xad, 0xd1, 0x6e, 0xd6,
- 0xef, 0x91, 0x0a, 0x94, 0x1a, 0x87, 0x87, 0x9d, 0x3d, 0xd1, 0xca, 0x91, 0x1a, 0xc0, 0x7e, 0xeb,
- 0xa8, 0xdb, 0xd1, 0xfb, 0xa2, 0x3d, 0x47, 0xca, 0x50, 0x7c, 0x79, 0xd8, 0x79, 0x23, 0x1a, 0xf3,
- 0xda, 0x29, 0x94, 0x53, 0x5d, 0x20, 0x0f, 0x80, 0x34, 0x5b, 0x4d, 0x51, 0x08, 0xb5, 0x9a, 0x46,
- 0xb7, 0xa5, 0x1b, 0xed, 0xe3, 0xfe, 0xcb, 0xfa, 0x3d, 0xf2, 0x04, 0x36, 0x7b, 0x07, 0x0d, 0xbd,
- 0xd5, 0x34, 0x76, 0xff, 0xd0, 0x68, 0x1c, 0x1e, 0xa2, 0x1c, 0x7f, 0xf4, 0x5b, 0x7b, 0x07, 0xf5,
- 0x1c, 0xd9, 0x82, 0x47, 0x33, 0x00, 0xbd, 0xc6, 0x51, 0x4b, 0x22, 0xe6, 0xb4, 0x3f, 0x9e, 0x07,
- 0xd8, 0x73, 0xcd, 0x30, 0x74, 0x06, 0x0e, 0x0d, 0x70, 0xff, 0x34, 0xb8, 0x1f, 0xef, 0x66, 0x0b,
- 0xac, 0xef, 0x3b, 0x36, 0x59, 0x81, 0x05, 0x66, 0x9c, 0xc7, 0xbb, 0x6a, 0x9e, 0xbd, 0x76, 0x70,
- 0xaf, 0x75, 0x24, 0x56, 0x0d, 0x88, 0x13, 0x61, 0x1d, 0xc4, 0xca, 0x21, 0xc9, 0x3b, 0x02, 0xfb,
- 0x10, 0x8a, 0xcc, 0xf0, 0x4f, 0x1c, 0x1e, 0xaa, 0x4d, 0xb6, 0xc0, 0xba, 0xa2, 0x85, 0xfb, 0xa7,
- 0x52, 0xa8, 0x72, 0xc1, 0x91, 0x8a, 0x75, 0x28, 0x51, 0x7e, 0x2a, 0x8b, 0x16, 0xb9, 0xd4, 0x8b,
- 0x94, 0x9f, 0x46, 0x35, 0x8b, 0x1d, 0x72, 0x63, 0x64, 0x5a, 0xb8, 0xc4, 0x2b, 0x7a, 0xc1, 0x0e,
- 0xf9, 0x91, 0x69, 0x09, 0x45, 0x18, 0x58, 0xa8, 0x58, 0x94, 0x8a, 0x30, 0xb0, 0x84, 0x42, 0x24,
- 0xb9, 0x2f, 0x5f, 0x11, 0xab, 0xb5, 0x5c, 0x74, 0xfc, 0x2e, 0xbe, 0xa4, 0x5e, 0x05, 0x61, 0x6d,
- 0x38, 0xbe, 0x5a, 0xbc, 0x0b, 0x76, 0xc8, 0xdb, 0xbe, 0x10, 0x0b, 0x2a, 0xc7, 0x57, 0xfb, 0xd8,
- 0x42, 0x18, 0x58, 0x6d, 0x5f, 0x10, 0x09, 0xb1, 0x58, 0xdd, 0x6a, 0x1d, 0x0b, 0x8f, 0x62, 0x83,
- 0x13, 0x2a, 0x41, 0x84, 0x2a, 0xb9, 0x80, 0x45, 0x2f, 0x51, 0xb5, 0x05, 0x15, 0xff, 0x8c, 0x1b,
- 0xdc, 0x1c, 0xca, 0x78, 0x96, 0xe4, 0x52, 0xf2, 0xcf, 0x78, 0xdf, 0xc4, 0x19, 0xd6, 0x7e, 0x35,
- 0x0f, 0x8b, 0xa2, 0xf0, 0x66, 0xde, 0xde, 0x08, 0xb7, 0x0c, 0xd3, 0xb6, 0x0d, 0x36, 0xe6, 0x34,
- 0x10, 0x56, 0x38, 0x19, 0x25, 0xbd, 0x6c, 0xda, 0x76, 0x47, 0xc8, 0xfa, 0xe6, 0x50, 0x6c, 0x53,
- 0xe2, 0xc8, 0x7e, 0x4e, 0x53, 0xb0, 0x39, 0x59, 0x3b, 0x48, 0x79, 0x8c, 0xdc, 0x82, 0x0a, 0x0f,
- 0x4c, 0xdf, 0xe0, 0xcc, 0x38, 0x65, 0xa1, 0x4c, 0xdf, 0x92, 0x0e, 0x42, 0xd6, 0x67, 0x07, 0x2c,
- 0xe4, 0xe4, 0x13, 0x20, 0x01, 0x1d, 0x99, 0xc1, 0x99, 0xe2, 0x92, 0xf3, 0x91, 0x47, 0x5c, 0x5d,
- 0x6a, 0x90, 0x4d, 0xce, 0x4c, 0x82, 0x76, 0x3c, 0x2f, 0x46, 0x2f, 0xa4, 0xd1, 0x6d, 0xa1, 0x90,
- 0x68, 0x15, 0x8b, 0x84, 0x8a, 0x4e, 0x16, 0xe2, 0x58, 0x10, 0x95, 0x8d, 0x25, 0x81, 0x15, 0xd3,
- 0xb1, 0xc4, 0xc8, 0x6d, 0x58, 0xe1, 0x81, 0xe9, 0x85, 0xae, 0xc9, 0xd3, 0xe0, 0x12, 0x82, 0x97,
- 0x63, 0xd5, 0x6c, 0x7c, 0x32, 0x50, 0x8b, 0x13, 0xf8, 0x68, 0xac, 0xb4, 0x7f, 0xc8, 0x41, 0x41,
- 0xce, 0x03, 0x79, 0x0a, 0xf3, 0xd6, 0x28, 0x7a, 0xa3, 0x4b, 0x92, 0x97, 0xc4, 0xd1, 0x2c, 0xe9,
- 0x42, 0x3d, 0x7b, 0x65, 0xa4, 0xb2, 0x7d, 0x3e, 0x93, 0xed, 0xc9, 0xf2, 0xca, 0x4f, 0x2c, 0x2f,
- 0xb9, 0x64, 0x16, 0xb2, 0x4b, 0x66, 0xf6, 0xca, 0x48, 0xd6, 0x5d, 0x31, 0xb5, 0xee, 0xb4, 0x7f,
- 0x9b, 0x87, 0xfc, 0x4b, 0x97, 0x5d, 0xe0, 0x83, 0xd0, 0xb2, 0x68, 0x18, 0x1a, 0xe9, 0xca, 0x64,
- 0x49, 0xaf, 0x48, 0x69, 0x7b, 0x56, 0xa5, 0xb4, 0x14, 0x55, 0x4a, 0xab, 0x50, 0x18, 0x7b, 0x8e,
- 0x10, 0x97, 0xa5, 0x78, 0xec, 0x39, 0x37, 0x95, 0xfb, 0x9b, 0x80, 0x8f, 0x29, 0x99, 0xd7, 0xb2,
- 0xca, 0x28, 0x09, 0x01, 0x2e, 0xd4, 0x75, 0x28, 0x45, 0x0f, 0x5b, 0x5c, 0x76, 0x4b, 0x7a, 0x51,
- 0x3d, 0x68, 0xc9, 0x87, 0xb0, 0xe4, 0x51, 0x7e, 0xc1, 0x30, 0x8b, 0x64, 0x2f, 0x17, 0x10, 0x51,
- 0x55, 0xe2, 0xf6, 0xac, 0x63, 0x48, 0x01, 0x21, 0xa9, 0x02, 0xed, 0x73, 0x00, 0x2b, 0xde, 0xbd,
- 0xd4, 0x5b, 0xda, 0x95, 0x78, 0xae, 0x92, 0x8d, 0x4d, 0x4f, 0xc1, 0xc8, 0x47, 0x50, 0x30, 0x71,
- 0x16, 0xd5, 0xdb, 0xd7, 0xa5, 0x89, 0xc9, 0xd5, 0x95, 0x9a, 0x6c, 0x40, 0xc9, 0x0f, 0x1c, 0x16,
- 0x38, 0xfc, 0x0a, 0x53, 0x66, 0x49, 0x8f, 0xdb, 0xa9, 0xe3, 0x4c, 0x25, 0x73, 0x9c, 0x49, 0x95,
- 0x9a, 0xd5, 0x4c, 0xa9, 0xb9, 0x0e, 0xa5, 0x61, 0xc0, 0xc6, 0xbe, 0x88, 0x43, 0xed, 0x0f, 0xd8,
- 0x96, 0x83, 0x91, 0xbe, 0xf5, 0x12, 0x88, 0x25, 0x44, 0x54, 0x85, 0xb8, 0x2b, 0xa5, 0x6d, 0x5b,
- 0xeb, 0x43, 0x65, 0xb2, 0xde, 0x92, 0x45, 0x63, 0x34, 0xc9, 0x15, 0xbd, 0x24, 0x05, 0x6d, 0x5b,
- 0x9c, 0x2d, 0x94, 0x32, 0xf4, 0xa9, 0xe5, 0x0c, 0x1c, 0x4b, 0x15, 0xa3, 0x35, 0x29, 0xee, 0x29,
- 0xa9, 0xf6, 0x2f, 0x79, 0xa8, 0x65, 0x6f, 0x5b, 0xae, 0xaf, 0x6a, 0xd7, 0xa1, 0x14, 0x5c, 0x1a,
- 0x27, 0x57, 0x9c, 0x86, 0xc8, 0x56, 0xd0, 0x8b, 0xc1, 0xe5, 0xae, 0x68, 0x8a, 0x99, 0x0a, 0x2e,
- 0x0d, 0x1f, 0xcb, 0x62, 0x99, 0xf7, 0x05, 0x7d, 0x31, 0xb8, 0x94, 0x75, 0x72, 0x88, 0x6b, 0xfc,
- 0xd2, 0x18, 0x5b, 0xa6, 0xd8, 0x23, 0x15, 0x28, 0x8f, 0xa0, 0x5a, 0x70, 0xf9, 0x4a, 0x88, 0xb3,
- 0xc8, 0x51, 0x06, 0xb9, 0x10, 0x21, 0x8f, 0xa6, 0x91, 0x27, 0x19, 0x64, 0x21, 0x42, 0xee, 0x4e,
- 0x23, 0xe5, 0x2b, 0xc0, 0x08, 0x59, 0x8c, 0x90, 0xf8, 0x12, 0x2f, 0x42, 0xae, 0x43, 0x89, 0x47,
- 0x11, 0x96, 0x64, 0x84, 0x3c, 0x89, 0x90, 0x27, 0x11, 0x2e, 0xca, 0x08, 0x79, 0x3a, 0x42, 0x3e,
- 0x19, 0x21, 0x48, 0x1f, 0x7c, 0x2a, 0x42, 0x3e, 0x19, 0x61, 0x39, 0x42, 0x1e, 0x4d, 0x23, 0xb3,
- 0x11, 0x56, 0x22, 0xe4, 0xee, 0x34, 0x32, 0x1b, 0x61, 0x35, 0x42, 0x66, 0x22, 0xd4, 0xa0, 0x1a,
- 0x5c, 0x1a, 0x56, 0x60, 0x49, 0x74, 0x88, 0xd9, 0x58, 0xd0, 0xcb, 0xc1, 0xe5, 0x5e, 0x60, 0x21,
- 0x12, 0x43, 0x3d, 0x71, 0xfc, 0x08, 0xb0, 0x24, 0x43, 0x3d, 0x71, 0x7c, 0xa5, 0x7e, 0x04, 0x8b,
- 0xdc, 0x19, 0xd1, 0x90, 0x9b, 0x23, 0x1f, 0xcf, 0x0d, 0x45, 0x3d, 0x11, 0x68, 0xff, 0x98, 0x83,
- 0x5a, 0xf6, 0x12, 0x2e, 0xbd, 0x7f, 0xe4, 0x32, 0xfb, 0xc7, 0x0f, 0x4f, 0xa8, 0x1f, 0x3e, 0x51,
- 0x37, 0xf7, 0xfe, 0x2b, 0xa8, 0x66, 0x6e, 0xed, 0xae, 0x5f, 0x0c, 0x0f, 0xa0, 0x10, 0x72, 0x93,
- 0x8f, 0x43, 0x55, 0x1b, 0xab, 0x96, 0xf6, 0x2d, 0xac, 0xcc, 0xb8, 0xbd, 0xbb, 0xf5, 0xa1, 0x35,
- 0xa1, 0x9f, 0xcf, 0xd0, 0xff, 0xed, 0x1c, 0xbe, 0x0b, 0x98, 0xbc, 0x85, 0xfc, 0x01, 0x6f, 0x2d,
- 0x5d, 0x16, 0x1a, 0x19, 0x17, 0x8b, 0x2e, 0x0b, 0x7b, 0x28, 0x90, 0xea, 0x93, 0x48, 0x9d, 0x8f,
- 0xd4, 0x27, 0x4a, 0xfd, 0x0c, 0xea, 0x2e, 0xf3, 0x2d, 0x63, 0xe4, 0x84, 0x31, 0x87, 0x3c, 0xd3,
- 0xd5, 0x84, 0xfc, 0xc8, 0x09, 0x23, 0xa2, 0xe7, 0xb0, 0xaa, 0x90, 0x2a, 0xe1, 0x22, 0x78, 0x41,
- 0x9e, 0x23, 0x25, 0x5c, 0x26, 0x9e, 0x32, 0x79, 0x02, 0x65, 0x97, 0x0d, 0x9c, 0x08, 0x58, 0x94,
- 0xe5, 0x92, 0x10, 0x29, 0xc0, 0xfb, 0x50, 0x71, 0x99, 0x39, 0x8a, 0x11, 0x25, 0x44, 0x94, 0x51,
- 0x26, 0x21, 0x1a, 0x85, 0xcd, 0x1b, 0xee, 0x2c, 0xef, 0x6c, 0x32, 0xfe, 0x2a, 0x07, 0x1b, 0xd7,
- 0x5f, 0x60, 0xde, 0x95, 0x1b, 0xf2, 0x39, 0x3c, 0x70, 0x3c, 0x71, 0x98, 0xa7, 0xc6, 0x89, 0x13,
- 0xdd, 0x65, 0x04, 0x26, 0x8f, 0xde, 0xbf, 0xac, 0x28, 0xed, 0xae, 0x23, 0xaf, 0x24, 0x74, 0x93,
- 0x53, 0xed, 0x7b, 0xd9, 0xb7, 0x6b, 0xee, 0x3f, 0xef, 0xac, 0x6f, 0xf7, 0x61, 0x01, 0x6f, 0x62,
- 0xa3, 0x9a, 0x06, 0x1b, 0x82, 0xdd, 0xa3, 0x17, 0x06, 0xfd, 0x2e, 0xaa, 0x6a, 0x0a, 0x1e, 0xbd,
- 0x68, 0x7d, 0x67, 0x6b, 0xa7, 0xf0, 0xf8, 0xe6, 0xdb, 0xd3, 0x3b, 0x9b, 0x9b, 0xbf, 0xce, 0xc9,
- 0x1c, 0xb8, 0xe6, 0x3e, 0xf5, 0xff, 0x77, 0x72, 0x7e, 0x99, 0x03, 0xed, 0xed, 0x77, 0xb3, 0xff,
- 0xb7, 0x93, 0xa4, 0x7d, 0x87, 0x73, 0x71, 0xc3, 0x1d, 0xee, 0xad, 0xfd, 0x3f, 0xc9, 0xde, 0x47,
- 0xc8, 0x62, 0x31, 0x7d, 0xc5, 0x70, 0x06, 0xef, 0xbf, 0xf5, 0xc2, 0xf5, 0xce, 0x32, 0xa0, 0x0f,
- 0x44, 0xb7, 0x9d, 0x89, 0xbb, 0x3c, 0x51, 0x6e, 0x05, 0xb6, 0xa3, 0xe6, 0xc9, 0x62, 0x63, 0x8f,
- 0xa3, 0x97, 0x82, 0x5e, 0x0d, 0x14, 0x78, 0x4f, 0x08, 0xaf, 0xdd, 0xdf, 0xff, 0x32, 0x07, 0x6b,
- 0xd7, 0xdd, 0xe8, 0xde, 0xba, 0xeb, 0x0d, 0xa8, 0x26, 0x9d, 0x99, 0xf5, 0x0d, 0xc7, 0x74, 0x00,
- 0x07, 0xf7, 0xf4, 0x72, 0x90, 0x48, 0x77, 0x8b, 0xf8, 0x62, 0x82, 0x87, 0xda, 0x31, 0x3c, 0xba,
- 0xe9, 0xbe, 0xfc, 0xb6, 0x7d, 0xd3, 0x7e, 0x01, 0x5b, 0x6f, 0xbb, 0x5b, 0xbe, 0xb3, 0xa9, 0xfa,
- 0x05, 0xac, 0x5f, 0x7b, 0xc1, 0xfc, 0x43, 0x9e, 0x6d, 0xf1, 0xa0, 0x26, 0xa5, 0x83, 0x1a, 0xb2,
- 0x50, 0xfb, 0x9b, 0x1c, 0x3c, 0x7b, 0xd7, 0xdb, 0xe6, 0x3b, 0x5b, 0x81, 0x9f, 0x02, 0x49, 0xdf,
- 0x80, 0xab, 0xbe, 0xc9, 0xe5, 0xb8, 0x9c, 0xd2, 0xa8, 0x3e, 0x8e, 0xe0, 0x83, 0x77, 0xb8, 0x97,
- 0xbe, 0xb3, 0xe1, 0x77, 0x71, 0x37, 0x7a, 0xcb, 0xdd, 0xf4, 0x9d, 0x79, 0xfb, 0xb3, 0x1c, 0x7c,
- 0xf8, 0x6e, 0xb7, 0xd4, 0x77, 0x36, 0xfc, 0x1b, 0x50, 0x9a, 0xb8, 0xb3, 0x88, 0xdb, 0xda, 0x7f,
- 0xe6, 0xa0, 0xbc, 0x2f, 0xce, 0x62, 0x47, 0x14, 0xcf, 0x55, 0xef, 0x43, 0xc5, 0x89, 0x2e, 0xa0,
- 0x22, 0xc7, 0x55, 0xfc, 0x36, 0x4f, 0xca, 0xda, 0x36, 0x69, 0x43, 0x2d, 0x81, 0xe0, 0xe1, 0x57,
- 0xbe, 0x68, 0x4c, 0x3e, 0x97, 0x48, 0x11, 0x6e, 0xc7, 0xd7, 0x59, 0xf8, 0x46, 0xb1, 0xea, 0xa4,
- 0x9b, 0xe4, 0x31, 0x94, 0x87, 0x74, 0x64, 0x44, 0x67, 0xdc, 0x79, 0x74, 0x26, 0xce, 0xb8, 0x5d,
- 0x79, 0xc6, 0x4d, 0x9f, 0x42, 0xf3, 0xa8, 0x8c, 0xdb, 0xda, 0x6f, 0x43, 0x35, 0xc3, 0x4d, 0x8a,
- 0x30, 0xdf, 0xed, 0x1c, 0xd7, 0xef, 0x91, 0x3a, 0x54, 0x5a, 0xdd, 0xce, 0xb1, 0xf1, 0x7c, 0xdf,
- 0xe8, 0x36, 0xfa, 0x07, 0xf5, 0x1c, 0x59, 0x86, 0xaa, 0x94, 0x7c, 0xa6, 0x44, 0x73, 0xda, 0x9f,
- 0xcc, 0xc1, 0x02, 0xf6, 0x33, 0x73, 0x3a, 0x95, 0xe1, 0xc6, 0xa7, 0xd3, 0x9f, 0x42, 0xd1, 0x62,
- 0xa3, 0x91, 0xa9, 0x3e, 0x52, 0x9b, 0x8a, 0x31, 0x1d, 0x69, 0xb8, 0x27, 0x91, 0x7a, 0x64, 0x42,
- 0xb6, 0xa1, 0x38, 0x92, 0x2a, 0xf5, 0x9a, 0xf8, 0xfe, 0xac, 0x11, 0xd2, 0x23, 0x50, 0xea, 0x70,
- 0x9e, 0xbf, 0xf1, 0x70, 0xae, 0x7d, 0x0d, 0x2b, 0x33, 0x1c, 0x93, 0x25, 0x28, 0x37, 0x9a, 0x4d,
- 0xe3, 0xa8, 0x75, 0xb4, 0xdb, 0xd2, 0x7b, 0xf5, 0x7b, 0x84, 0x40, 0x4d, 0x6f, 0x1d, 0x75, 0x5e,
- 0xb7, 0x62, 0x59, 0x4e, 0x80, 0x7a, 0xad, 0x7e, 0x2c, 0x98, 0xd3, 0xbe, 0x01, 0x78, 0x6d, 0xba,
- 0x63, 0xda, 0x35, 0x03, 0x73, 0x44, 0x1e, 0xc3, 0x3c, 0xf3, 0xc6, 0xea, 0xd5, 0x4f, 0x25, 0xf3,
- 0x01, 0x8c, 0x50, 0x90, 0x4f, 0x60, 0xe1, 0x5c, 0xa0, 0xd5, 0x78, 0x3c, 0xd8, 0x56, 0x5f, 0xa4,
- 0x22, 0x85, 0x98, 0x86, 0x6d, 0x9c, 0x67, 0x09, 0xd2, 0x8a, 0xb0, 0xd0, 0x1a, 0xf9, 0xfc, 0xea,
- 0xc5, 0x7f, 0x2f, 0x43, 0xb1, 0x23, 0xb9, 0x48, 0x13, 0xa0, 0xe9, 0x84, 0xe6, 0x89, 0x4b, 0x3b,
- 0x2e, 0x27, 0xb5, 0xd8, 0x07, 0x22, 0x37, 0x26, 0xda, 0xda, 0x83, 0x5f, 0xfe, 0xeb, 0xbf, 0x7f,
- 0x3f, 0x57, 0xd7, 0xca, 0x3b, 0xe7, 0xcf, 0x77, 0x94, 0xdd, 0x97, 0xb9, 0x8f, 0xc9, 0x4b, 0x28,
- 0xeb, 0x94, 0x7a, 0xef, 0x4a, 0xf3, 0x10, 0x69, 0x96, 0xb5, 0x8a, 0xa0, 0x89, 0x0c, 0x05, 0x4f,
- 0x0b, 0xca, 0xaa, 0x08, 0xa0, 0x1d, 0x6f, 0x4c, 0x32, 0x21, 0x4f, 0xb1, 0xac, 0x21, 0x0b, 0xd1,
- 0xaa, 0x82, 0xa5, 0x25, 0x9d, 0x7b, 0x63, 0x41, 0x73, 0x00, 0xd5, 0xf8, 0x61, 0xf1, 0x0e, 0x44,
- 0xeb, 0x48, 0xb4, 0xa2, 0xd5, 0x52, 0x51, 0x29, 0xa6, 0x3d, 0x58, 0x6c, 0x52, 0x97, 0xde, 0xba,
- 0x3b, 0xb1, 0x91, 0x20, 0x69, 0x03, 0xa8, 0x0b, 0xc8, 0xce, 0x98, 0x93, 0x7a, 0xe6, 0x43, 0xd6,
- 0xa3, 0x70, 0x78, 0x73, 0x7f, 0x12, 0x4b, 0x41, 0xd5, 0x81, 0x4a, 0x7c, 0xfb, 0x28, 0xc8, 0x48,
- 0xe6, 0xe3, 0x21, 0x14, 0x4f, 0xd1, 0x6d, 0x22, 0xdd, 0xaa, 0x56, 0x47, 0xba, 0x94, 0xb5, 0x20,
- 0xfc, 0x03, 0x58, 0x4a, 0xdf, 0x23, 0x0a, 0xce, 0xe4, 0x0e, 0x39, 0xad, 0x99, 0xa2, 0x7d, 0x8c,
- 0xb4, 0x6b, 0xda, 0x8a, 0xa0, 0x9d, 0xe0, 0x10, 0xcc, 0x5f, 0x41, 0x51, 0x1c, 0xbe, 0x1b, 0xb6,
- 0x4d, 0xaa, 0x99, 0x6f, 0x62, 0x6f, 0xce, 0x2a, 0x65, 0x23, 0xb3, 0x0a, 0x44, 0x4b, 0xc7, 0x57,
- 0xaf, 0x6f, 0x23, 0xc9, 0x0c, 0x5a, 0x62, 0x26, 0x78, 0x7a, 0x50, 0x8b, 0x6f, 0xe8, 0xf7, 0x4e,
- 0xa9, 0x75, 0x36, 0x95, 0xa0, 0xc9, 0x30, 0xc6, 0x40, 0xed, 0x3d, 0x24, 0x7c, 0xa8, 0x11, 0x41,
- 0x98, 0xb5, 0x17, 0xa4, 0x47, 0x50, 0x96, 0x39, 0xd7, 0x65, 0x5e, 0x7b, 0x90, 0x9a, 0x88, 0x78,
- 0x1f, 0x9c, 0xea, 0xe2, 0x06, 0x32, 0xde, 0xd7, 0x96, 0x92, 0x84, 0x45, 0x63, 0x35, 0xb1, 0x2a,
- 0xf3, 0xde, 0x9d, 0x2f, 0x33, 0xb1, 0x69, 0x6b, 0x41, 0xa8, 0x43, 0x75, 0x9f, 0xf2, 0xd4, 0x3d,
- 0xef, 0x64, 0xcc, 0x2b, 0x33, 0xae, 0xa2, 0xb4, 0x47, 0x48, 0xf9, 0x40, 0x5b, 0x16, 0x94, 0x19,
- 0x7b, 0xc1, 0xf9, 0xbb, 0x50, 0xd0, 0xe9, 0x09, 0x63, 0x6f, 0x5f, 0xe1, 0xab, 0xc8, 0xb3, 0xa4,
- 0x81, 0x5c, 0xe1, 0xc2, 0x46, 0x10, 0xbc, 0x82, 0xe5, 0x3d, 0xe6, 0xba, 0xd4, 0x4a, 0xbf, 0xe4,
- 0x7b, 0x1b, 0xd7, 0x16, 0x72, 0x6d, 0x68, 0xab, 0x82, 0x6b, 0xca, 0x5c, 0xd0, 0x06, 0xf0, 0x70,
- 0x2f, 0xa0, 0x26, 0xa7, 0xfd, 0xc0, 0x1c, 0x0c, 0x1c, 0xab, 0x67, 0x9d, 0x52, 0x7b, 0xec, 0x8a,
- 0x6d, 0xfc, 0xc9, 0x76, 0xe6, 0x3b, 0xfe, 0x29, 0xc0, 0x94, 0xb7, 0x0f, 0xd1, 0xdb, 0x96, 0xb6,
- 0x89, 0xde, 0x66, 0xb3, 0x2a, 0x9f, 0x32, 0xc3, 0xee, 0xda, 0xe7, 0x35, 0xac, 0xc2, 0xe7, 0x00,
- 0x56, 0x32, 0x3d, 0xfa, 0xfd, 0x31, 0x1d, 0xd3, 0x90, 0x6c, 0xce, 0xf4, 0x27, 0x95, 0x53, 0xbe,
- 0x34, 0xf4, 0xf5, 0x48, 0x7b, 0x38, 0x15, 0x9f, 0x34, 0x50, 0x7e, 0x32, 0xbd, 0xf8, 0x5f, 0xfb,
- 0x99, 0xc1, 0x26, 0xfc, 0xfc, 0x16, 0xd4, 0xe5, 0x32, 0x48, 0xd5, 0x59, 0xd7, 0xa7, 0x69, 0x02,
- 0xd2, 0xee, 0x7d, 0x96, 0x23, 0xdf, 0xc2, 0x6a, 0x97, 0x06, 0x03, 0x16, 0x8c, 0xf0, 0xf1, 0xdb,
- 0xf1, 0x69, 0x30, 0xc9, 0x80, 0x8a, 0xa9, 0x9e, 0x3d, 0xc5, 0x9e, 0x3d, 0xd6, 0xd6, 0x45, 0xcf,
- 0x66, 0x52, 0xc8, 0x4d, 0xbb, 0x2c, 0x37, 0x71, 0x59, 0x97, 0xbc, 0x8d, 0x34, 0xb3, 0xb6, 0x53,
- 0x86, 0x82, 0xaa, 0x0f, 0xe5, 0x7d, 0xca, 0x5b, 0x97, 0x1c, 0x9f, 0xcb, 0x24, 0x89, 0x28, 0x79,
- 0xd4, 0x6f, 0xdc, 0x8f, 0x9e, 0xdd, 0x3a, 0xe5, 0xe3, 0xc0, 0x43, 0x4d, 0x98, 0x65, 0x4d, 0x71,
- 0x08, 0xd6, 0x6f, 0xf1, 0xcb, 0x44, 0x79, 0xf8, 0xc3, 0x77, 0x70, 0x3d, 0xca, 0x89, 0x28, 0x01,
- 0xf0, 0x9f, 0x4e, 0xb2, 0xaa, 0x9b, 0xd7, 0xd4, 0x14, 0x8d, 0xa0, 0xf7, 0x61, 0x7d, 0x9f, 0xf2,
- 0xc3, 0xd9, 0x1f, 0xe1, 0x64, 0x9f, 0x84, 0x9b, 0xd9, 0xcf, 0x4a, 0x33, 0x9f, 0x06, 0x69, 0xcf,
- 0xd0, 0x93, 0xa6, 0xbd, 0xa7, 0x42, 0x98, 0xcd, 0x28, 0x3c, 0x9e, 0xc2, 0xea, 0x4c, 0xfd, 0x6d,
- 0xbc, 0x65, 0xe6, 0x76, 0x26, 0xdb, 0x97, 0xb9, 0x8f, 0x77, 0xbf, 0x85, 0x4d, 0x16, 0x0c, 0x91,
- 0xc7, 0x62, 0x81, 0xbd, 0x2d, 0xff, 0x75, 0x27, 0xe2, 0xdd, 0xad, 0xbe, 0xc6, 0xb6, 0x28, 0x91,
- 0x3a, 0x87, 0xfd, 0x6f, 0x76, 0x86, 0x0e, 0x3f, 0x1d, 0x9f, 0x88, 0x09, 0xda, 0x89, 0x4c, 0x76,
- 0xa4, 0xc9, 0xa7, 0xea, 0xbf, 0x7d, 0xce, 0x3f, 0xdf, 0x19, 0xb2, 0xe8, 0xbf, 0x8e, 0xba, 0xb9,
- 0xee, 0xdc, 0x49, 0x01, 0x35, 0x9f, 0xff, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x26, 0x5c, 0xa8,
- 0x33, 0x99, 0x34, 0x00, 0x00,
+ // 4347 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5b, 0xcd, 0x73, 0x24, 0x47,
+ 0x56, 0x9f, 0x96, 0x5a, 0xdd, 0xad, 0xd7, 0x9f, 0x4a, 0x8d, 0x66, 0xf4, 0x31, 0x9e, 0x91, 0xcb,
+ 0xb3, 0xf6, 0xac, 0xb1, 0x25, 0x7b, 0xec, 0x58, 0xd6, 0x66, 0x01, 0xb7, 0xa4, 0x1e, 0xa9, 0xb1,
+ 0xa4, 0x6e, 0xaa, 0x7b, 0x66, 0xc0, 0x1b, 0x8e, 0xda, 0x52, 0x55, 0x76, 0xab, 0x56, 0xd5, 0x95,
+ 0xe5, 0xaa, 0x6c, 0x7d, 0x70, 0xdc, 0x60, 0xe1, 0xc2, 0x09, 0x07, 0x44, 0xc0, 0x8d, 0xe0, 0xca,
+ 0x85, 0x1b, 0x11, 0x1c, 0x38, 0x70, 0x25, 0xb8, 0xf0, 0x2f, 0x70, 0xe3, 0xce, 0x89, 0x20, 0x88,
+ 0x7c, 0x99, 0xf5, 0xd5, 0xdd, 0xd2, 0x8c, 0x8c, 0x08, 0x2e, 0x8a, 0xce, 0xf7, 0x7e, 0xef, 0x97,
+ 0xf9, 0x32, 0x5f, 0x66, 0xbe, 0xcc, 0x2c, 0xc1, 0xc6, 0x39, 0x73, 0xf9, 0xa9, 0x69, 0xf8, 0x01,
+ 0xe3, 0x2c, 0xdc, 0x66, 0x3e, 0xf5, 0x98, 0xcb, 0xb7, 0xb0, 0x48, 0x8a, 0xaa, 0xb8, 0xfe, 0x68,
+ 0xc8, 0xd8, 0xd0, 0xa5, 0xdb, 0xa6, 0xef, 0x6c, 0x9b, 0x9e, 0xc7, 0xb8, 0xc9, 0x1d, 0xe6, 0x85,
+ 0x12, 0xb6, 0xbe, 0x99, 0xe5, 0xe0, 0xd4, 0x3a, 0x15, 0xbf, 0x07, 0x8e, 0x4b, 0x15, 0x62, 0x3d,
+ 0x8b, 0xb0, 0xd8, 0x68, 0xc4, 0x3c, 0xa5, 0x7b, 0x9c, 0xd5, 0xd1, 0x4b, 0x6e, 0x58, 0xcc, 0x1b,
+ 0x38, 0x43, 0xa9, 0xd7, 0xfe, 0x25, 0x0f, 0xd0, 0xf6, 0x6c, 0xc7, 0xc2, 0x3a, 0xc9, 0xa7, 0x50,
+ 0x64, 0x2e, 0x37, 0x1c, 0xcf, 0x5e, 0xcd, 0x6d, 0xe6, 0x9e, 0x95, 0x9f, 0x3f, 0xd8, 0x8a, 0x1a,
+ 0xdd, 0x71, 0x79, 0x02, 0x3c, 0xb8, 0xa7, 0x17, 0x18, 0x0a, 0xc8, 0xe7, 0x50, 0x72, 0x3c, 0x3e,
+ 0x40, 0x9b, 0x39, 0xb4, 0x79, 0x18, 0xdb, 0xb4, 0x3d, 0x3e, 0xc8, 0x18, 0x15, 0x1d, 0x29, 0x21,
+ 0x4d, 0xa8, 0xa2, 0x15, 0xf3, 0x69, 0x80, 0xa6, 0xf3, 0x68, 0xba, 0x91, 0x31, 0xed, 0xf8, 0x34,
+ 0xc8, 0x98, 0x97, 0x9d, 0x44, 0x4a, 0x7e, 0x07, 0x2a, 0xcc, 0x1b, 0x1b, 0xb6, 0x13, 0x5a, 0xc8,
+ 0x90, 0x47, 0x86, 0xf5, 0xa4, 0xc1, 0xde, 0x78, 0xcf, 0x09, 0xad, 0x0c, 0x01, 0xb0, 0x58, 0x88,
+ 0xbe, 0x7a, 0x63, 0x34, 0x5d, 0x98, 0xf4, 0xd5, 0x1b, 0x4f, 0xf8, 0x8a, 0x02, 0xe1, 0x2b, 0x1b,
+ 0x59, 0x0e, 0xda, 0x14, 0x26, 0x7c, 0xed, 0x8c, 0x2c, 0x27, 0xeb, 0x2b, 0x93, 0x12, 0xf2, 0x39,
+ 0x14, 0xfd, 0x33, 0xd9, 0xa9, 0x45, 0x34, 0x5a, 0x8b, 0x8d, 0xba, 0xa6, 0x75, 0x46, 0x27, 0xfa,
+ 0xd5, 0x3f, 0xc3, 0x7e, 0xfd, 0x29, 0x80, 0xcf, 0x02, 0x6e, 0x84, 0xdc, 0xe4, 0xe1, 0x6a, 0x69,
+ 0xa2, 0xb6, 0x2e, 0x0b, 0x78, 0x4f, 0x04, 0x4a, 0xc8, 0x1d, 0x2b, 0x3c, 0xb8, 0xa7, 0x2f, 0xfa,
+ 0x4a, 0x12, 0x0a, 0xcb, 0x81, 0xcb, 0x2e, 0x94, 0xe5, 0xe2, 0x84, 0xe5, 0x0b, 0x97, 0x5d, 0x64,
+ 0x2d, 0x07, 0x4a, 0x12, 0x92, 0xdf, 0x84, 0x45, 0xd3, 0x35, 0x83, 0x11, 0xb6, 0x15, 0xd0, 0x70,
+ 0x35, 0x36, 0x6c, 0x0a, 0x4d, 0xa6, 0xa9, 0x25, 0x53, 0x89, 0x76, 0x0a, 0x90, 0xb7, 0x4d, 0x6e,
+ 0x6a, 0xff, 0x51, 0x85, 0xfa, 0x04, 0x4e, 0xf4, 0xb3, 0xcb, 0xc2, 0x99, 0x31, 0x75, 0xc8, 0xc2,
+ 0xac, 0xef, 0x2e, 0x0a, 0xc8, 0x1e, 0xd4, 0xec, 0x2b, 0xc7, 0x1b, 0x1a, 0x43, 0x33, 0xf4, 0x53,
+ 0x91, 0xf5, 0x28, 0xb6, 0xdc, 0x13, 0xea, 0x7d, 0x33, 0xf4, 0x33, 0xf6, 0x15, 0x3b, 0x25, 0x16,
+ 0x31, 0x26, 0x06, 0x38, 0xf1, 0x68, 0x32, 0xc6, 0x3a, 0xde, 0x78, 0xda, 0xa9, 0x32, 0x4b, 0xa4,
+ 0xe4, 0x35, 0xdc, 0x17, 0x14, 0x21, 0x37, 0x03, 0x3e, 0xf6, 0x8d, 0x81, 0xe9, 0xb8, 0xa9, 0x58,
+ 0x7b, 0x9a, 0x66, 0xea, 0x49, 0xcc, 0x0b, 0xd3, 0x71, 0xc7, 0x01, 0xcd, 0x50, 0x2e, 0xb1, 0x8c,
+ 0x5a, 0x10, 0x7f, 0x03, 0x0f, 0x90, 0xd8, 0x19, 0x7a, 0xa6, 0x6b, 0xd8, 0x74, 0x18, 0x98, 0x36,
+ 0x4d, 0xc5, 0xe2, 0x7b, 0x19, 0x6a, 0x44, 0xed, 0x49, 0x50, 0x86, 0x79, 0x99, 0x4d, 0x6b, 0xc9,
+ 0xcf, 0xe1, 0x21, 0x4e, 0x8c, 0xc0, 0x19, 0x70, 0x83, 0x0d, 0x8c, 0x0b, 0xc7, 0xb3, 0xd9, 0x45,
+ 0x2a, 0x68, 0x33, 0xe4, 0x7b, 0x02, 0xd6, 0x19, 0xbc, 0x46, 0xd0, 0x14, 0xf9, 0xa4, 0x96, 0xf4,
+ 0x41, 0x78, 0x63, 0xb8, 0x2c, 0x0c, 0x8d, 0x78, 0x2e, 0xc8, 0xb0, 0xfe, 0x20, 0x4d, 0x7b, 0xc8,
+ 0xc2, 0xb0, 0x33, 0x10, 0x93, 0x62, 0xf7, 0xd4, 0xf4, 0x3c, 0xea, 0x66, 0xa8, 0x6b, 0x4c, 0x21,
+ 0xd4, 0x14, 0x89, 0xfa, 0x19, 0x5d, 0x09, 0x93, 0x7e, 0x2e, 0xcd, 0xe8, 0x67, 0x89, 0xb9, 0xb6,
+ 0x9f, 0x13, 0xb5, 0x20, 0xee, 0xc8, 0x45, 0x82, 0x3b, 0x17, 0xb2, 0xa5, 0x72, 0x36, 0xfc, 0x46,
+ 0x9a, 0xb0, 0x1f, 0x98, 0x5e, 0x38, 0x72, 0xc2, 0xd0, 0x61, 0x5e, 0xdb, 0xe3, 0x34, 0x18, 0xd0,
+ 0x80, 0x7a, 0x16, 0x7d, 0x6d, 0x06, 0x9e, 0xe3, 0x0d, 0xd5, 0xaa, 0xd1, 0x77, 0x2e, 0xb0, 0xa5,
+ 0xbf, 0x90, 0x9d, 0x6b, 0x5a, 0xdc, 0x39, 0xc7, 0x7a, 0x93, 0xc6, 0xc2, 0x74, 0x2f, 0x34, 0x63,
+ 0xd8, 0xac, 0xf6, 0x0a, 0x9f, 0xb3, 0x08, 0x59, 0xc3, 0xaa, 0xa8, 0xc1, 0x0f, 0x98, 0x45, 0xc3,
+ 0x50, 0xcc, 0x02, 0x1a, 0x04, 0x4c, 0xae, 0x92, 0x65, 0xac, 0xe2, 0x47, 0xe9, 0x2a, 0xba, 0x31,
+ 0xae, 0x25, 0x60, 0x99, 0x0a, 0x56, 0xd8, 0x2c, 0x3d, 0xa1, 0xb0, 0x96, 0x8c, 0xe1, 0xc0, 0x08,
+ 0xaf, 0x3c, 0x2b, 0xf1, 0xa2, 0x82, 0x55, 0x7c, 0x38, 0x3d, 0x96, 0x5f, 0xd3, 0xab, 0xde, 0x95,
+ 0x67, 0x5d, 0xe7, 0x88, 0x04, 0x45, 0x08, 0x51, 0xcd, 0x4b, 0x58, 0xc1, 0x05, 0x96, 0x8f, 0x0d,
+ 0x9f, 0x79, 0x72, 0x39, 0xc2, 0x2a, 0xaa, 0x58, 0xc5, 0xbb, 0x99, 0xe5, 0x96, 0x8f, 0xbb, 0xcc,
+ 0xc3, 0x55, 0x68, 0x6a, 0x48, 0xb3, 0x3a, 0xe2, 0xc2, 0x23, 0x0c, 0x6f, 0x3a, 0x31, 0x06, 0xe3,
+ 0x40, 0x4e, 0xa0, 0x1a, 0xb2, 0xff, 0x38, 0x13, 0xe3, 0x29, 0xec, 0xac, 0xf6, 0x8b, 0xee, 0x98,
+ 0x8d, 0x21, 0xaf, 0xa5, 0x13, 0x01, 0x1d, 0x31, 0x4e, 0x0d, 0x9b, 0x0e, 0xa8, 0x25, 0x97, 0xf2,
+ 0x3a, 0x56, 0xa3, 0xa5, 0xab, 0xd1, 0x11, 0xb4, 0x87, 0x98, 0x0c, 0x3f, 0x61, 0x53, 0x4a, 0x12,
+ 0x4a, 0x37, 0x70, 0x10, 0x86, 0x74, 0x64, 0xd8, 0xd4, 0x75, 0x3c, 0x2a, 0xdd, 0x11, 0xfc, 0x0d,
+ 0xe4, 0xff, 0x74, 0x7a, 0x1c, 0xf6, 0x5b, 0x47, 0x6a, 0x4a, 0xed, 0x25, 0x26, 0x99, 0xea, 0x56,
+ 0xd5, 0x70, 0xec, 0xd3, 0x51, 0x16, 0x42, 0xce, 0x61, 0x13, 0x63, 0xeb, 0xf4, 0x2a, 0x74, 0x2c,
+ 0xd3, 0x35, 0xe8, 0x77, 0x63, 0xc7, 0x1f, 0x51, 0x8f, 0xa7, 0x62, 0x6c, 0x09, 0x2b, 0xfe, 0x28,
+ 0x13, 0x63, 0x0a, 0xdf, 0x8a, 0xe0, 0xd3, 0xa1, 0x26, 0x9c, 0xb9, 0x16, 0x46, 0x7e, 0x0e, 0xcb,
+ 0xe9, 0x88, 0x33, 0xad, 0x33, 0xac, 0x8a, 0x4c, 0xcf, 0x46, 0xe9, 0x63, 0xd3, 0x3a, 0xf3, 0xd8,
+ 0x85, 0x4b, 0xed, 0x21, 0x15, 0x3c, 0x99, 0x9a, 0xea, 0x2c, 0x85, 0x12, 0xe4, 0x0c, 0x36, 0x64,
+ 0x22, 0x30, 0x18, 0x18, 0x01, 0x35, 0xad, 0x53, 0x83, 0x5e, 0x5a, 0x94, 0xda, 0xd4, 0xc6, 0x4a,
+ 0x96, 0xb1, 0x92, 0xed, 0x6c, 0x5e, 0x30, 0xc0, 0x49, 0xce, 0x1d, 0xd3, 0xd5, 0x85, 0x45, 0x4b,
+ 0x19, 0x64, 0x2a, 0x7a, 0xc8, 0x24, 0x72, 0x12, 0x11, 0xef, 0x76, 0x5b, 0x50, 0xcd, 0x64, 0x45,
+ 0xe4, 0x1d, 0x00, 0x4c, 0x68, 0x44, 0xa8, 0x53, 0xdc, 0xed, 0x16, 0xf5, 0x45, 0x21, 0x11, 0xc1,
+ 0x4b, 0xb5, 0x03, 0xa8, 0x65, 0x33, 0x22, 0xf2, 0x10, 0x8a, 0x32, 0x79, 0x92, 0x7b, 0x63, 0x51,
+ 0x2f, 0x60, 0x82, 0x64, 0x4f, 0x30, 0xcd, 0x4d, 0x32, 0x9d, 0xc2, 0xd2, 0x54, 0x7a, 0x73, 0x3d,
+ 0xd9, 0x97, 0x50, 0x0d, 0x69, 0xe0, 0x98, 0xae, 0xe1, 0x8d, 0x47, 0x27, 0x34, 0x50, 0xbb, 0xe9,
+ 0x4a, 0xdc, 0x25, 0x3d, 0xd4, 0x1e, 0xa3, 0x52, 0xaf, 0x84, 0xa9, 0x92, 0xf6, 0x7d, 0x1e, 0xaa,
+ 0x99, 0x74, 0xe8, 0xfa, 0x6a, 0x56, 0xa0, 0x80, 0xf3, 0x5d, 0xee, 0xd6, 0x45, 0x7d, 0x41, 0xcc,
+ 0xdd, 0x49, 0x57, 0xe6, 0x27, 0x5c, 0x21, 0x4f, 0xa0, 0x6c, 0xda, 0x23, 0xc7, 0x53, 0xfa, 0x05,
+ 0xd4, 0x03, 0x8a, 0x24, 0x60, 0xaa, 0xf5, 0xf9, 0xb7, 0x6e, 0x3d, 0x39, 0x84, 0x32, 0x2e, 0x6c,
+ 0x01, 0x35, 0x43, 0xe6, 0xe1, 0xf6, 0x57, 0xcb, 0xc6, 0x5b, 0xe2, 0xd8, 0x56, 0x76, 0x29, 0xd6,
+ 0xd1, 0x44, 0x87, 0x41, 0xfc, 0x5b, 0xfb, 0xd3, 0x39, 0xb8, 0x3f, 0x0b, 0x44, 0xde, 0x83, 0x27,
+ 0x9d, 0xe3, 0x97, 0x46, 0x73, 0xb7, 0xdf, 0x7e, 0xd5, 0xec, 0xb7, 0x3b, 0xc7, 0xc6, 0x8b, 0x66,
+ 0xfb, 0xd0, 0xd0, 0x5b, 0xcd, 0x5e, 0xe7, 0xd8, 0x38, 0xee, 0x1c, 0xb7, 0x1a, 0xf7, 0xc8, 0xfb,
+ 0xa0, 0xdd, 0x00, 0xd2, 0x9b, 0xc7, 0xfb, 0xed, 0xe3, 0xfd, 0x46, 0x8e, 0xfc, 0x04, 0x9e, 0xdf,
+ 0x80, 0xeb, 0x36, 0x7b, 0xbd, 0xd7, 0x1d, 0x7d, 0xcf, 0x68, 0xbe, 0xec, 0x1f, 0xb4, 0x8e, 0xfb,
+ 0xed, 0x5d, 0xc4, 0x34, 0xe6, 0x88, 0x06, 0x8f, 0x6f, 0xb0, 0x3b, 0xec, 0xf4, 0x1a, 0xf3, 0xe4,
+ 0x5d, 0x78, 0x67, 0x16, 0x06, 0x65, 0x87, 0x4d, 0xfd, 0xa8, 0x91, 0xbf, 0xce, 0x97, 0xde, 0xeb,
+ 0x76, 0x7f, 0xf7, 0xc0, 0xe8, 0xbc, 0x6a, 0xe9, 0x8d, 0x05, 0xed, 0x17, 0x40, 0xa6, 0x13, 0x74,
+ 0x42, 0x20, 0xcf, 0xaf, 0xfc, 0x28, 0xf0, 0xf1, 0x77, 0x3a, 0x5a, 0xe6, 0x6e, 0x88, 0xf0, 0xc9,
+ 0xb0, 0xd0, 0x74, 0xa8, 0x65, 0x33, 0xea, 0x5b, 0xc7, 0x5d, 0x03, 0xe6, 0xfd, 0x33, 0x8e, 0xcc,
+ 0x15, 0x5d, 0xfc, 0xd4, 0xfe, 0x39, 0x07, 0x8d, 0xc9, 0x8c, 0x9b, 0x6c, 0xc0, 0x22, 0xd2, 0x62,
+ 0xcb, 0x65, 0xf4, 0xe1, 0x81, 0xa6, 0x3f, 0xd1, 0xfa, 0xa9, 0xf9, 0x39, 0xa4, 0x23, 0x4c, 0xd0,
+ 0xe3, 0x7a, 0x17, 0x95, 0xa4, 0x6d, 0x0b, 0x3b, 0x4c, 0xc1, 0x1d, 0x99, 0x74, 0x16, 0xf5, 0x82,
+ 0x28, 0x4a, 0x05, 0x1a, 0x79, 0x0c, 0x83, 0xb1, 0xa8, 0x17, 0x44, 0xf1, 0x98, 0x91, 0x07, 0x50,
+ 0xb0, 0x18, 0x3b, 0x73, 0x28, 0x26, 0x53, 0x05, 0x5d, 0x95, 0x22, 0x2f, 0xf2, 0x89, 0x17, 0x4f,
+ 0x61, 0x51, 0xa6, 0x29, 0xa6, 0x75, 0x7d, 0x03, 0xb5, 0x9f, 0xc1, 0xe2, 0x01, 0x35, 0x03, 0x7e,
+ 0x42, 0x4d, 0x4e, 0xb6, 0x61, 0xf9, 0x34, 0x2a, 0xc8, 0x24, 0x8b, 0x8f, 0x03, 0xaa, 0x2c, 0x48,
+ 0xac, 0xea, 0x45, 0x1a, 0xed, 0xef, 0x72, 0x30, 0xdf, 0xf1, 0xc6, 0xb7, 0xee, 0xf3, 0xa9, 0xb9,
+ 0x3a, 0xff, 0xf6, 0x73, 0x55, 0x78, 0xea, 0xc8, 0xd9, 0x5d, 0xd4, 0xc5, 0x4f, 0xf2, 0x01, 0xd4,
+ 0xd9, 0xc8, 0xb2, 0x0c, 0xea, 0x59, 0xc1, 0x95, 0x2f, 0x46, 0x0b, 0x07, 0xa8, 0xa4, 0xd7, 0x84,
+ 0xb8, 0x15, 0x4b, 0xb5, 0xbf, 0xcf, 0x01, 0xc1, 0xbd, 0x63, 0x28, 0xb6, 0x9f, 0x3d, 0x27, 0xe4,
+ 0xa6, 0x77, 0x43, 0xe7, 0x5c, 0xd7, 0xfa, 0x2f, 0x60, 0xcd, 0x95, 0x14, 0x86, 0x3a, 0x59, 0x22,
+ 0x8f, 0xf1, 0x47, 0x34, 0x60, 0x6a, 0x1c, 0x1f, 0x28, 0x80, 0x5c, 0x7d, 0x51, 0xfd, 0x0d, 0x0d,
+ 0x18, 0xf9, 0x04, 0xee, 0xcf, 0x32, 0x55, 0xde, 0x90, 0x69, 0x2b, 0xed, 0x6b, 0x28, 0x8a, 0x00,
+ 0x3f, 0x0a, 0x87, 0x77, 0x10, 0xd9, 0xbf, 0xce, 0xc1, 0xa2, 0xd8, 0xa7, 0x31, 0xb8, 0x6f, 0xcd,
+ 0x97, 0x0a, 0xca, 0x7c, 0x26, 0x28, 0xb3, 0x51, 0xbe, 0x30, 0x19, 0xe5, 0xd3, 0xed, 0xf8, 0x02,
+ 0x2a, 0x2f, 0x7d, 0xd7, 0xf1, 0xce, 0xde, 0xd4, 0x12, 0x65, 0x3a, 0x97, 0x98, 0xfe, 0xf9, 0x22,
+ 0xc0, 0x1e, 0x3d, 0x77, 0x2c, 0xda, 0xf6, 0x06, 0x38, 0x1f, 0xce, 0xa9, 0x67, 0xb3, 0x40, 0xad,
+ 0x26, 0xaa, 0x44, 0xee, 0xc3, 0xc2, 0x88, 0xd9, 0xd4, 0x55, 0x7b, 0xa2, 0x2c, 0x90, 0x1f, 0x43,
+ 0xe3, 0xd4, 0x0c, 0xec, 0x0b, 0x33, 0xa0, 0xc6, 0x39, 0x0d, 0x44, 0x2a, 0xaf, 0x96, 0x94, 0x7a,
+ 0x24, 0x7f, 0x25, 0xc5, 0x02, 0x3a, 0x70, 0x82, 0x51, 0x06, 0x9a, 0x97, 0xd0, 0x48, 0x1e, 0x41,
+ 0x37, 0x60, 0xd1, 0xc6, 0x16, 0x89, 0xf6, 0x37, 0xe4, 0xd2, 0x20, 0x05, 0x6d, 0x5b, 0x8c, 0xb8,
+ 0x52, 0x66, 0x23, 0x7e, 0x09, 0x71, 0x44, 0xea, 0xd2, 0xe1, 0x2e, 0xe8, 0x44, 0x1e, 0x2c, 0x3a,
+ 0x2f, 0xc4, 0x34, 0xbb, 0xa8, 0x97, 0x7c, 0xe6, 0x89, 0xa3, 0x7c, 0x48, 0x1e, 0x03, 0x70, 0x6a,
+ 0x9d, 0x7a, 0xcc, 0x65, 0xc3, 0xab, 0x68, 0x17, 0x4c, 0x24, 0x64, 0x53, 0x1e, 0x64, 0x1c, 0x5b,
+ 0x1e, 0x46, 0xd5, 0xea, 0x01, 0x38, 0x80, 0x78, 0xb6, 0x24, 0x8f, 0x00, 0x14, 0x82, 0xaa, 0x23,
+ 0x59, 0x51, 0x2f, 0xa1, 0xbe, 0xe5, 0xd9, 0xe4, 0x29, 0xd4, 0x4c, 0xd7, 0x65, 0x56, 0xc2, 0x50,
+ 0x42, 0x44, 0x05, 0xa5, 0x11, 0xc7, 0x26, 0x54, 0x62, 0x14, 0x55, 0xc7, 0xa5, 0xa2, 0x0e, 0x0a,
+ 0x23, 0x78, 0x9e, 0x41, 0x23, 0x09, 0x09, 0xc5, 0x04, 0x88, 0xaa, 0xc5, 0x81, 0x21, 0xb9, 0x9e,
+ 0x42, 0x2d, 0x85, 0xa4, 0xea, 0xf4, 0x52, 0xd4, 0x2b, 0x31, 0x4e, 0xf0, 0x69, 0x50, 0x55, 0x2b,
+ 0xa5, 0x22, 0xab, 0x22, 0xa8, 0x2c, 0xd7, 0x4b, 0xc9, 0xf4, 0x18, 0xca, 0x11, 0x86, 0xaa, 0x04,
+ 0xbf, 0x28, 0xaf, 0x2d, 0x24, 0xc7, 0x57, 0x50, 0x08, 0x4c, 0x6f, 0x48, 0xc3, 0xd5, 0xfa, 0xe6,
+ 0xfc, 0xb3, 0xf2, 0xf3, 0x67, 0xc9, 0x35, 0x41, 0x1c, 0x50, 0xea, 0xa7, 0x4e, 0x43, 0x36, 0x0e,
+ 0x2c, 0xaa, 0x23, 0x5e, 0x57, 0x76, 0xeb, 0x7f, 0x91, 0x87, 0xfb, 0xb3, 0x00, 0x64, 0x2d, 0xba,
+ 0xdd, 0xb2, 0xc3, 0xd5, 0xdc, 0xe6, 0xfc, 0xb3, 0xa2, 0xba, 0xc2, 0xb2, 0x27, 0x47, 0x6c, 0x6e,
+ 0x6a, 0xc4, 0x76, 0x61, 0xc1, 0x67, 0xcc, 0x0d, 0x57, 0xe7, 0xb1, 0x51, 0x1f, 0xbf, 0x6d, 0xa3,
+ 0xb6, 0xba, 0x8c, 0xb9, 0xba, 0xb4, 0x5d, 0xff, 0xaf, 0x39, 0xc8, 0x8b, 0x32, 0xf9, 0xbd, 0xd4,
+ 0xde, 0x5a, 0x7b, 0xfe, 0x93, 0x5b, 0x91, 0xe1, 0x1f, 0xb1, 0x9f, 0xa9, 0x3d, 0xb9, 0x07, 0xc5,
+ 0xf0, 0xd4, 0x0c, 0x1c, 0x6f, 0x88, 0xcd, 0xae, 0x3d, 0xff, 0xe2, 0x76, 0x74, 0x3d, 0x69, 0x8c,
+ 0x8c, 0x11, 0x93, 0x98, 0x98, 0x72, 0x00, 0xe5, 0x42, 0x29, 0x0b, 0x62, 0x9e, 0x53, 0x75, 0x5f,
+ 0x52, 0xd4, 0xc5, 0x4f, 0xad, 0x09, 0xa5, 0xa8, 0x39, 0x04, 0xa0, 0x20, 0x72, 0x8d, 0xf6, 0x5e,
+ 0xe3, 0x1e, 0xa9, 0x40, 0xa9, 0x79, 0x78, 0xd8, 0xd9, 0x15, 0xa5, 0x1c, 0xa9, 0x01, 0xec, 0xb7,
+ 0x8e, 0xba, 0x1d, 0xbd, 0x2f, 0xca, 0x73, 0xa4, 0x0c, 0xc5, 0x17, 0x87, 0x9d, 0xd7, 0xa2, 0x30,
+ 0xaf, 0x9d, 0x42, 0x39, 0xd5, 0x04, 0xf2, 0x00, 0xc8, 0x5e, 0x6b, 0x4f, 0x24, 0x42, 0xad, 0x3d,
+ 0xa3, 0xdb, 0xd2, 0x8d, 0xf6, 0x71, 0xff, 0x45, 0xe3, 0x1e, 0x79, 0x02, 0x1b, 0xbd, 0x83, 0xa6,
+ 0xde, 0xda, 0x33, 0x76, 0xfe, 0xd0, 0x68, 0x1e, 0x1e, 0xa2, 0x1c, 0x7f, 0xf4, 0x5b, 0xbb, 0x07,
+ 0x8d, 0x1c, 0xd9, 0x84, 0x47, 0x33, 0x00, 0xbd, 0xe6, 0x51, 0x4b, 0x22, 0xe6, 0xb4, 0x3f, 0x9e,
+ 0x07, 0xd8, 0x75, 0xcd, 0x30, 0x74, 0x06, 0x0e, 0x0d, 0x70, 0xfd, 0x34, 0xb8, 0x1f, 0xaf, 0x66,
+ 0x0b, 0xac, 0xef, 0x3b, 0x36, 0x59, 0x86, 0x05, 0x66, 0x9c, 0xc7, 0xab, 0x6a, 0x9e, 0xbd, 0x72,
+ 0x70, 0xad, 0x75, 0x24, 0x56, 0x75, 0x88, 0x13, 0x61, 0x1d, 0xc4, 0xca, 0x2e, 0xc9, 0x3b, 0x02,
+ 0xfb, 0x10, 0x8a, 0xcc, 0xf0, 0x4f, 0x1c, 0x1e, 0xaa, 0x45, 0xb6, 0xc0, 0xba, 0xa2, 0x84, 0xeb,
+ 0xa7, 0x52, 0xa8, 0x74, 0xc1, 0x91, 0x8a, 0x35, 0x28, 0x51, 0x7e, 0x2a, 0x93, 0x16, 0x39, 0xd5,
+ 0x8b, 0x94, 0x9f, 0x46, 0x39, 0x8b, 0x1d, 0x72, 0x63, 0x64, 0x5a, 0x38, 0xc5, 0x2b, 0x7a, 0xc1,
+ 0x0e, 0xf9, 0x91, 0x69, 0x09, 0x45, 0x18, 0x58, 0xa8, 0x58, 0x94, 0x8a, 0x30, 0xb0, 0x84, 0x42,
+ 0x04, 0xb9, 0x2f, 0xaf, 0x88, 0xd5, 0x5c, 0x2e, 0x3a, 0x7e, 0x17, 0x2f, 0xa9, 0x57, 0x40, 0x58,
+ 0x1b, 0x8e, 0xaf, 0x26, 0xef, 0x82, 0x1d, 0xf2, 0xb6, 0x2f, 0xc4, 0x82, 0xca, 0xf1, 0xd5, 0x3a,
+ 0xb6, 0x10, 0x06, 0x56, 0xdb, 0x17, 0x44, 0x42, 0x2c, 0x66, 0xb7, 0x9a, 0xc7, 0xa2, 0x46, 0xb1,
+ 0xc0, 0x09, 0x95, 0x20, 0x42, 0x95, 0x9c, 0xc0, 0xa2, 0x95, 0xa8, 0xda, 0x84, 0x8a, 0x7f, 0xc6,
+ 0x0d, 0x6e, 0x0e, 0xa5, 0x3f, 0x75, 0x39, 0x95, 0xfc, 0x33, 0xde, 0x37, 0x71, 0x84, 0xb5, 0x5f,
+ 0xcf, 0xc3, 0xa2, 0x48, 0xbc, 0x99, 0xb7, 0x3b, 0xc2, 0x25, 0xc3, 0xb4, 0x6d, 0x83, 0x8d, 0x39,
+ 0x0d, 0x84, 0x15, 0x0e, 0x46, 0x49, 0x2f, 0x9b, 0xb6, 0xdd, 0x11, 0xb2, 0xbe, 0x39, 0x14, 0xcb,
+ 0x94, 0x38, 0xb2, 0x9f, 0xd3, 0x14, 0x6c, 0x4e, 0xe6, 0x0e, 0x52, 0x1e, 0x23, 0x37, 0xa1, 0xc2,
+ 0x03, 0xd3, 0x37, 0x38, 0x33, 0x4e, 0x59, 0x28, 0xc3, 0xb7, 0xa4, 0x83, 0x90, 0xf5, 0xd9, 0x01,
+ 0x0b, 0x39, 0xf9, 0x08, 0x48, 0x40, 0x47, 0x66, 0x70, 0xa6, 0xb8, 0xe4, 0x78, 0xe4, 0x11, 0xd7,
+ 0x90, 0x1a, 0x64, 0x93, 0x23, 0x93, 0xa0, 0x1d, 0xcf, 0x8b, 0xd1, 0x0b, 0x69, 0x74, 0x5b, 0x28,
+ 0x24, 0x5a, 0xf9, 0x22, 0xa1, 0xa2, 0x91, 0x85, 0xd8, 0x17, 0x44, 0x65, 0x7d, 0x49, 0x60, 0xc5,
+ 0xb4, 0x2f, 0x31, 0x72, 0x0b, 0x96, 0x79, 0x60, 0x7a, 0xa1, 0x6b, 0xf2, 0x34, 0xb8, 0x84, 0xe0,
+ 0xa5, 0x58, 0x35, 0x1b, 0x9f, 0x74, 0xd4, 0xe2, 0x04, 0x3e, 0xea, 0x2b, 0xed, 0x1f, 0x72, 0x50,
+ 0x90, 0xe3, 0x40, 0x9e, 0xc2, 0xbc, 0x35, 0x8a, 0x6e, 0x74, 0x49, 0x72, 0x49, 0x1c, 0x8d, 0x92,
+ 0x2e, 0xd4, 0xb3, 0x67, 0x46, 0x2a, 0xda, 0xe7, 0x33, 0xd1, 0x9e, 0x4c, 0xaf, 0xfc, 0xc4, 0xf4,
+ 0x92, 0x53, 0x66, 0x21, 0x3b, 0x65, 0x66, 0xcf, 0x8c, 0x64, 0xde, 0x15, 0x53, 0xf3, 0x4e, 0xfb,
+ 0xa7, 0x05, 0xc8, 0xbf, 0x70, 0xd9, 0x05, 0x6e, 0x84, 0x96, 0x45, 0xc3, 0xd0, 0x48, 0x67, 0x26,
+ 0x75, 0xbd, 0x22, 0xa5, 0xed, 0x59, 0x99, 0x52, 0x3d, 0xca, 0x94, 0x56, 0xa0, 0x30, 0xf6, 0x1c,
+ 0x21, 0x2e, 0x4b, 0xf1, 0xd8, 0x73, 0xa6, 0xd3, 0xfd, 0x42, 0x9c, 0xee, 0x7f, 0x08, 0x4b, 0xe1,
+ 0xd5, 0x68, 0x44, 0x79, 0xe0, 0x58, 0x46, 0x04, 0x21, 0x08, 0xa9, 0xc7, 0x8a, 0x17, 0x12, 0xbb,
+ 0x01, 0xb8, 0xa5, 0xc9, 0x39, 0x20, 0x33, 0x92, 0x92, 0x10, 0xe0, 0xa4, 0x5e, 0x83, 0x52, 0xb4,
+ 0x31, 0xe3, 0x14, 0xad, 0xeb, 0x45, 0xb5, 0x29, 0x93, 0xf7, 0xa1, 0xee, 0x51, 0x7e, 0xc1, 0x30,
+ 0xe2, 0xa4, 0x47, 0x0b, 0x88, 0xa8, 0x2a, 0x71, 0x7b, 0xd6, 0x91, 0xa5, 0x80, 0x90, 0x54, 0x32,
+ 0xf7, 0x19, 0x80, 0x15, 0xaf, 0x74, 0xea, 0x46, 0x77, 0x39, 0x1e, 0xd7, 0x64, 0x11, 0xd4, 0x53,
+ 0x30, 0xf2, 0x01, 0x14, 0x4c, 0x1c, 0x71, 0x75, 0x53, 0x5b, 0x9f, 0x08, 0x04, 0x5d, 0xa9, 0xc9,
+ 0x3a, 0x94, 0xfc, 0xc0, 0x61, 0x81, 0xc3, 0xaf, 0x30, 0xbc, 0xea, 0x7a, 0x5c, 0x4e, 0x1d, 0x7d,
+ 0x2a, 0x99, 0xa3, 0x4f, 0x2a, 0x2d, 0xad, 0x66, 0xd2, 0xd2, 0x35, 0x28, 0x0d, 0x03, 0x36, 0xf6,
+ 0x85, 0x1f, 0x6a, 0x2d, 0xc1, 0xb2, 0xec, 0x8c, 0xf4, 0x0b, 0x99, 0x40, 0xd4, 0x11, 0x51, 0x15,
+ 0xe2, 0xae, 0x94, 0xb6, 0x6d, 0xf2, 0x23, 0xa8, 0x05, 0xd4, 0x77, 0xc5, 0x21, 0x90, 0xe2, 0xc0,
+ 0x60, 0x7e, 0x57, 0xd2, 0xab, 0xb1, 0x14, 0x83, 0xe5, 0x00, 0xea, 0x22, 0xc6, 0xc4, 0xe2, 0xa0,
+ 0x7a, 0x6a, 0x75, 0x09, 0x77, 0xf3, 0xcd, 0xcc, 0x7b, 0xca, 0x96, 0x08, 0xbd, 0x3e, 0xdb, 0x97,
+ 0x90, 0x96, 0xc7, 0x83, 0x2b, 0xbd, 0xea, 0xa7, 0x65, 0xeb, 0x5f, 0x01, 0x99, 0x06, 0x89, 0xed,
+ 0xf1, 0x8c, 0x5e, 0xa9, 0xdd, 0x44, 0xfc, 0x14, 0xdb, 0xe8, 0xb9, 0xe9, 0x8e, 0x69, 0x94, 0xa1,
+ 0x63, 0xe1, 0xcb, 0xb9, 0x9f, 0xe6, 0xb4, 0x3e, 0x54, 0x26, 0xd3, 0x49, 0x99, 0x13, 0x47, 0x31,
+ 0x5c, 0xd1, 0x4b, 0x52, 0xd0, 0xb6, 0xc5, 0xd1, 0x49, 0x29, 0x43, 0x9f, 0x5a, 0xce, 0xc0, 0xb1,
+ 0x54, 0xae, 0x5d, 0x93, 0xe2, 0x9e, 0x92, 0x6a, 0xff, 0x9a, 0x87, 0x5a, 0xf6, 0x31, 0xe9, 0xfa,
+ 0xa4, 0x7d, 0x0d, 0x4a, 0xc1, 0xa5, 0x71, 0x72, 0xc5, 0x69, 0x88, 0x6c, 0x05, 0xbd, 0x18, 0x5c,
+ 0xee, 0x88, 0xa2, 0x08, 0xae, 0xe0, 0xd2, 0xf0, 0x31, 0xeb, 0x0f, 0xd5, 0x24, 0x58, 0x0c, 0x2e,
+ 0xe5, 0x31, 0x20, 0xc4, 0x25, 0xec, 0xd2, 0x18, 0x5b, 0xa6, 0xd8, 0x02, 0x14, 0x28, 0x8f, 0xa0,
+ 0x5a, 0x70, 0xf9, 0x52, 0x88, 0xb3, 0xc8, 0x51, 0x06, 0xb9, 0x10, 0x21, 0x8f, 0xa6, 0x91, 0x27,
+ 0x19, 0x64, 0x21, 0x42, 0xee, 0x4c, 0x23, 0xe5, 0x0d, 0x67, 0x84, 0x2c, 0x46, 0x48, 0xbc, 0xa3,
+ 0x8c, 0x90, 0x6b, 0x50, 0xe2, 0x91, 0x87, 0x25, 0xe9, 0x21, 0x4f, 0x3c, 0xe4, 0x89, 0x87, 0x8b,
+ 0xd2, 0x43, 0x9e, 0xf6, 0x90, 0x4f, 0x7a, 0x08, 0xb2, 0x0e, 0x3e, 0xe5, 0x21, 0x9f, 0xf4, 0xb0,
+ 0x1c, 0x21, 0x8f, 0xa6, 0x91, 0x59, 0x0f, 0x2b, 0x11, 0x72, 0x67, 0x1a, 0x99, 0xf5, 0xb0, 0x1a,
+ 0x21, 0x33, 0x1e, 0x6a, 0x50, 0x0d, 0x2e, 0x0d, 0x2b, 0xb0, 0x24, 0x3a, 0xc4, 0x09, 0x54, 0xd0,
+ 0xcb, 0xc1, 0xe5, 0x6e, 0x60, 0x21, 0x12, 0x5d, 0x3d, 0x71, 0xfc, 0x08, 0x50, 0x97, 0xae, 0x9e,
+ 0x38, 0xbe, 0x52, 0x3f, 0x82, 0x45, 0xee, 0x8c, 0x68, 0xc8, 0xcd, 0x91, 0x8f, 0xd3, 0xa6, 0xa8,
+ 0x27, 0x02, 0xed, 0x1f, 0x73, 0x50, 0xcb, 0xbe, 0x31, 0xa6, 0x97, 0xc7, 0x5c, 0xe6, 0x36, 0xe4,
+ 0x87, 0x07, 0xd4, 0x0f, 0x1f, 0xa8, 0x9b, 0x5b, 0xff, 0x15, 0x54, 0x33, 0x8f, 0x92, 0xd7, 0x4f,
+ 0x86, 0x07, 0x50, 0x08, 0xb9, 0xc9, 0xc7, 0xa1, 0x4a, 0xfd, 0x55, 0x49, 0xfb, 0x16, 0x96, 0x67,
+ 0x3c, 0x4e, 0xde, 0xfa, 0x4c, 0x9e, 0xd0, 0xcf, 0x67, 0xe8, 0xff, 0x76, 0x0e, 0xaf, 0x3a, 0x26,
+ 0x1f, 0x59, 0x7f, 0xc0, 0xa5, 0xac, 0xcb, 0x42, 0x23, 0x53, 0xc5, 0xa2, 0xcb, 0xc2, 0x1e, 0x0a,
+ 0xa4, 0xfa, 0x24, 0x52, 0xe7, 0x23, 0xf5, 0x89, 0x52, 0x3f, 0x83, 0x86, 0xcb, 0x7c, 0xcb, 0x18,
+ 0x39, 0x61, 0xcc, 0x21, 0x8f, 0xac, 0x35, 0x21, 0x3f, 0x72, 0xc2, 0x88, 0xe8, 0x53, 0x58, 0x51,
+ 0x48, 0x15, 0x70, 0x11, 0xbc, 0x20, 0x8f, 0xc9, 0x12, 0x2e, 0x03, 0x4f, 0x99, 0x3c, 0x81, 0xb2,
+ 0xcb, 0x06, 0x4e, 0x04, 0x2c, 0xca, 0x6c, 0x50, 0x88, 0x14, 0xe0, 0x5d, 0xa8, 0xb8, 0xcc, 0x1c,
+ 0xc5, 0x88, 0x12, 0x22, 0xca, 0x28, 0x93, 0x10, 0x8d, 0xc2, 0xc6, 0x0d, 0x4f, 0xb2, 0x77, 0x36,
+ 0x18, 0x7f, 0x95, 0x83, 0xf5, 0xeb, 0xdf, 0x67, 0xef, 0xaa, 0x1a, 0xf2, 0x19, 0x3c, 0x70, 0xbc,
+ 0x73, 0x1a, 0x84, 0xd4, 0x10, 0x9b, 0x91, 0xec, 0xc7, 0xc0, 0xe4, 0xd1, 0xf5, 0xd2, 0xb2, 0xd2,
+ 0xee, 0x38, 0xf2, 0xc5, 0x45, 0x37, 0x39, 0xd5, 0xbe, 0x97, 0x6d, 0xbb, 0xe6, 0x79, 0xf7, 0xce,
+ 0xda, 0x76, 0x1f, 0x16, 0xf0, 0xa1, 0x39, 0x4a, 0xd9, 0xb0, 0x20, 0xd8, 0x3d, 0x7a, 0x61, 0xd0,
+ 0xef, 0xa2, 0xa4, 0xad, 0xe0, 0xd1, 0x8b, 0xd6, 0x77, 0xb6, 0x76, 0x0a, 0x8f, 0x6f, 0x7e, 0x1c,
+ 0xbe, 0xb3, 0xb1, 0xf9, 0xeb, 0x9c, 0x8c, 0x81, 0x6b, 0x9e, 0x8b, 0xff, 0x7f, 0x07, 0xe7, 0x57,
+ 0x39, 0xd0, 0xde, 0xfc, 0xf4, 0xfc, 0x7f, 0x3b, 0x48, 0xda, 0x77, 0x38, 0x16, 0x37, 0x3c, 0x51,
+ 0xdf, 0xba, 0xfe, 0x27, 0xd9, 0xe7, 0x16, 0x99, 0xdd, 0xa7, 0x5f, 0x50, 0xce, 0xe0, 0xdd, 0x37,
+ 0xbe, 0x27, 0xdf, 0x59, 0x04, 0xf4, 0x81, 0xe8, 0xb6, 0x33, 0xf1, 0x54, 0x29, 0x32, 0xc4, 0xc0,
+ 0x76, 0xd4, 0x38, 0x59, 0x6c, 0xec, 0x71, 0xac, 0xa5, 0xa0, 0x57, 0x03, 0x05, 0xde, 0x15, 0xc2,
+ 0x6b, 0xd7, 0xf7, 0xbf, 0xcc, 0xc1, 0xea, 0x75, 0x0f, 0xd6, 0xb7, 0x6e, 0x7a, 0x13, 0xaa, 0x49,
+ 0x63, 0x66, 0x7d, 0xa2, 0x32, 0xed, 0xc0, 0xc1, 0x3d, 0xbd, 0x1c, 0x24, 0xd2, 0x9d, 0x22, 0xde,
+ 0xbb, 0xf0, 0x50, 0x3b, 0x86, 0x47, 0x37, 0x7d, 0x0e, 0x70, 0xdb, 0xb6, 0x69, 0xbf, 0x84, 0xcd,
+ 0x37, 0x3d, 0x9d, 0xdf, 0xd9, 0x50, 0xfd, 0x12, 0xd6, 0xae, 0x7d, 0x3f, 0xff, 0x21, 0x7b, 0x5b,
+ 0xdc, 0xa9, 0x49, 0xea, 0xa0, 0xba, 0x2c, 0xd4, 0xfe, 0x26, 0x07, 0xcf, 0xde, 0xf6, 0x31, 0xfd,
+ 0xce, 0x66, 0xe0, 0xc7, 0x40, 0xd2, 0x0f, 0xfc, 0xaa, 0x6d, 0x72, 0x3a, 0x2e, 0xa5, 0x34, 0xaa,
+ 0x8d, 0x23, 0x78, 0xef, 0x2d, 0x9e, 0xdd, 0xef, 0xac, 0xfb, 0x5d, 0x5c, 0x8d, 0xde, 0xf0, 0xf4,
+ 0x7e, 0x67, 0xb5, 0xfd, 0x59, 0x0e, 0xde, 0x7f, 0xbb, 0x47, 0xf8, 0x3b, 0xeb, 0xfe, 0x75, 0x28,
+ 0x4d, 0x3c, 0xc9, 0xc4, 0x65, 0xed, 0x3f, 0x73, 0x50, 0xde, 0x17, 0xc7, 0xc7, 0x23, 0x8a, 0xe7,
+ 0xaa, 0x77, 0xa1, 0xe2, 0x44, 0xef, 0x6b, 0x51, 0xc5, 0x55, 0xfc, 0xf4, 0x50, 0xca, 0xda, 0x36,
+ 0x69, 0x43, 0x2d, 0x81, 0xe0, 0x79, 0x5d, 0xde, 0xa3, 0x26, 0x5f, 0x83, 0xa4, 0x08, 0xb7, 0xe2,
+ 0xd7, 0x3a, 0xbc, 0x30, 0xad, 0x3a, 0xe9, 0x22, 0x79, 0x0c, 0xe5, 0x21, 0x1d, 0x19, 0xd1, 0xb1,
+ 0x7c, 0x1e, 0x2b, 0x13, 0xc7, 0xf2, 0xae, 0x3c, 0x96, 0xa7, 0x0f, 0xce, 0x79, 0x54, 0xc6, 0x65,
+ 0xed, 0xb7, 0xa1, 0x9a, 0xe1, 0x26, 0x45, 0x98, 0xef, 0x76, 0x8e, 0x1b, 0xf7, 0x48, 0x03, 0x2a,
+ 0xad, 0x6e, 0xe7, 0xd8, 0xf8, 0x74, 0xdf, 0xe8, 0x36, 0xfb, 0x07, 0x8d, 0x1c, 0x59, 0x82, 0xaa,
+ 0x94, 0x7c, 0xa2, 0x44, 0x73, 0xda, 0x9f, 0xcc, 0xc1, 0x02, 0xb6, 0x33, 0x73, 0xa0, 0x96, 0xee,
+ 0xc6, 0x07, 0xea, 0x9f, 0x41, 0xd1, 0x62, 0xa3, 0x91, 0xa9, 0xbe, 0xc1, 0x9b, 0xf2, 0x31, 0xed,
+ 0x69, 0xb8, 0x2b, 0x91, 0x7a, 0x64, 0x42, 0xb6, 0xa0, 0x38, 0x92, 0x2a, 0x75, 0x0b, 0x7e, 0x7f,
+ 0x56, 0x0f, 0xe9, 0x11, 0x28, 0x75, 0x9f, 0x90, 0xbf, 0xf1, 0x3e, 0x41, 0xfb, 0x1a, 0x96, 0x67,
+ 0x54, 0x4c, 0xea, 0x50, 0x6e, 0xee, 0xed, 0x19, 0x47, 0xad, 0xa3, 0x9d, 0x96, 0xde, 0x6b, 0xdc,
+ 0x23, 0x04, 0x6a, 0x7a, 0xeb, 0xa8, 0xf3, 0xaa, 0x15, 0xcb, 0x72, 0x02, 0xd4, 0x6b, 0xf5, 0x63,
+ 0xc1, 0x9c, 0xf6, 0x0d, 0xc0, 0x2b, 0x71, 0xcc, 0xee, 0x9a, 0x81, 0x39, 0x22, 0x8f, 0x61, 0x9e,
+ 0x79, 0x63, 0x75, 0xb3, 0x55, 0xc9, 0x7c, 0xdf, 0x23, 0x14, 0xe4, 0xa3, 0xf4, 0x09, 0xbd, 0xf6,
+ 0xfc, 0xc1, 0x96, 0xfa, 0xe0, 0x16, 0x29, 0xc4, 0x30, 0x6c, 0xe1, 0x38, 0x4b, 0x90, 0x56, 0x84,
+ 0x85, 0xd6, 0xc8, 0xe7, 0x57, 0xcf, 0xff, 0x7b, 0x09, 0x8a, 0x1d, 0xc9, 0x45, 0xf6, 0x00, 0xf6,
+ 0x9c, 0xd0, 0x3c, 0x71, 0x69, 0xc7, 0xe5, 0xa4, 0x16, 0xd7, 0x81, 0xc8, 0xf5, 0x89, 0xb2, 0xf6,
+ 0xe0, 0x57, 0xff, 0xf6, 0xef, 0xdf, 0xcf, 0x35, 0xb4, 0xf2, 0xf6, 0xf9, 0xa7, 0xdb, 0xca, 0xee,
+ 0xcb, 0xdc, 0x87, 0xe4, 0x05, 0x94, 0x75, 0x4a, 0xbd, 0xb7, 0xa5, 0x79, 0x88, 0x34, 0x4b, 0x5a,
+ 0x45, 0xd0, 0x44, 0x86, 0x82, 0xa7, 0x05, 0x65, 0x95, 0x04, 0xd0, 0x8e, 0x37, 0x26, 0x19, 0x97,
+ 0xa7, 0x58, 0x56, 0x91, 0x85, 0x68, 0x55, 0xc1, 0xd2, 0x92, 0x95, 0x7b, 0x63, 0x41, 0x73, 0x00,
+ 0xd5, 0x78, 0xb3, 0x78, 0x0b, 0xa2, 0x35, 0x24, 0x5a, 0xd6, 0x6a, 0x29, 0xaf, 0x14, 0xd3, 0x2e,
+ 0x2c, 0xee, 0x51, 0x97, 0xde, 0xba, 0x39, 0xb1, 0x91, 0x20, 0x69, 0x03, 0xa8, 0xf7, 0xd5, 0xce,
+ 0x98, 0x93, 0x46, 0xe6, 0x3b, 0xdd, 0xa3, 0x70, 0x78, 0x73, 0x7b, 0x12, 0x4b, 0x41, 0xd5, 0x81,
+ 0x4a, 0xfc, 0xb8, 0x2a, 0xc8, 0x48, 0xe6, 0xdb, 0x28, 0x14, 0x4f, 0xd1, 0x6d, 0x20, 0xdd, 0x8a,
+ 0xd6, 0x40, 0xba, 0x94, 0xb5, 0x20, 0xfc, 0x03, 0xa8, 0xa7, 0x9f, 0x49, 0x05, 0x67, 0xf2, 0x44,
+ 0x9e, 0xd6, 0x4c, 0xd1, 0x3e, 0x46, 0xda, 0x55, 0x6d, 0x59, 0xd0, 0x4e, 0x70, 0x08, 0xe6, 0xaf,
+ 0xa0, 0x28, 0x0e, 0xdf, 0x4d, 0xdb, 0x26, 0xd5, 0xcc, 0x15, 0xd5, 0xcd, 0x51, 0xa5, 0x6c, 0x64,
+ 0x54, 0x81, 0x28, 0xe9, 0x78, 0xb3, 0xfc, 0x26, 0x92, 0x4c, 0xa7, 0x25, 0x66, 0x82, 0xa7, 0x07,
+ 0xb5, 0xf8, 0x03, 0x84, 0xdd, 0x53, 0x6a, 0x9d, 0x4d, 0x05, 0x68, 0xd2, 0x8d, 0x31, 0x50, 0x7b,
+ 0x07, 0x09, 0x1f, 0x6a, 0x44, 0x10, 0x66, 0xed, 0x05, 0xe9, 0x11, 0x94, 0x65, 0xcc, 0x75, 0x99,
+ 0xd7, 0x1e, 0xa4, 0x06, 0x22, 0x5e, 0x07, 0xa7, 0x9a, 0xb8, 0x8e, 0x8c, 0xf7, 0xb5, 0x7a, 0x12,
+ 0xb0, 0x68, 0xac, 0x06, 0x56, 0x45, 0xde, 0xdb, 0xf3, 0x65, 0x06, 0x36, 0x6d, 0x2d, 0x08, 0x75,
+ 0xa8, 0xee, 0x53, 0x9e, 0x7a, 0xc6, 0x9e, 0xf4, 0x79, 0x79, 0xc6, 0x4b, 0x9b, 0xf6, 0x08, 0x29,
+ 0x1f, 0x68, 0x4b, 0x82, 0x32, 0x63, 0x2f, 0x38, 0x7f, 0x17, 0x0a, 0x3a, 0x3d, 0x61, 0xec, 0xcd,
+ 0x33, 0x7c, 0x05, 0x79, 0xea, 0x1a, 0xc8, 0x19, 0x2e, 0x6c, 0x04, 0xc1, 0x4b, 0x58, 0xda, 0x65,
+ 0xae, 0x4b, 0xad, 0xf4, 0x25, 0xdf, 0x9b, 0xb8, 0x36, 0x91, 0x6b, 0x5d, 0x5b, 0x11, 0x5c, 0x53,
+ 0xe6, 0x82, 0x36, 0x80, 0x87, 0xbb, 0x01, 0x35, 0x39, 0xed, 0x07, 0xe6, 0x60, 0xe0, 0x58, 0x3d,
+ 0xeb, 0x94, 0xda, 0x63, 0x57, 0x2c, 0xe3, 0x4f, 0xb6, 0x32, 0xff, 0xa6, 0x30, 0x05, 0x98, 0xaa,
+ 0xed, 0x7d, 0xac, 0x6d, 0x53, 0xdb, 0xc0, 0xda, 0x66, 0xb3, 0xaa, 0x3a, 0x65, 0x84, 0xdd, 0x75,
+ 0x9d, 0xd7, 0xb0, 0x8a, 0x3a, 0x07, 0xb0, 0x9c, 0x69, 0xd1, 0xef, 0x8f, 0xe9, 0x98, 0x86, 0x64,
+ 0x63, 0x66, 0x7d, 0x52, 0x39, 0x55, 0x97, 0x86, 0x75, 0x3d, 0xd2, 0x1e, 0x4e, 0xf9, 0x27, 0x0d,
+ 0x54, 0x3d, 0x99, 0x56, 0xfc, 0xaf, 0xeb, 0x99, 0xc1, 0x26, 0xea, 0xf9, 0x2d, 0x68, 0xc8, 0x69,
+ 0x90, 0xca, 0xb3, 0xae, 0x0f, 0xd3, 0x04, 0xa4, 0xdd, 0xfb, 0x24, 0x47, 0xbe, 0x85, 0x95, 0x2e,
+ 0x0d, 0x06, 0x2c, 0x18, 0xe1, 0xf6, 0xdb, 0xf1, 0x69, 0x30, 0xc9, 0x80, 0x8a, 0xa9, 0x96, 0x3d,
+ 0xc5, 0x96, 0x3d, 0xd6, 0xd6, 0x44, 0xcb, 0x66, 0x52, 0xc8, 0x45, 0xbb, 0x2c, 0x17, 0x71, 0x99,
+ 0x97, 0xbc, 0x89, 0x34, 0x33, 0xb7, 0x53, 0x86, 0x82, 0xaa, 0x0f, 0xe5, 0x7d, 0xca, 0x5b, 0x97,
+ 0x1c, 0xf7, 0x65, 0x92, 0x78, 0x94, 0x6c, 0xf5, 0xeb, 0xf7, 0xa3, 0xbd, 0x5b, 0xa7, 0x7c, 0x1c,
+ 0x78, 0xa8, 0x09, 0xb3, 0xac, 0x29, 0x0e, 0xc1, 0xfa, 0x2d, 0x7e, 0x78, 0x29, 0x0f, 0x7f, 0x78,
+ 0x07, 0xd7, 0xa3, 0x9c, 0x88, 0x14, 0x00, 0xff, 0xa7, 0x26, 0xab, 0xba, 0x79, 0x4e, 0x4d, 0xd1,
+ 0x08, 0x7a, 0x1f, 0xd6, 0xf6, 0x29, 0x3f, 0x9c, 0xfd, 0x8d, 0x51, 0x76, 0x27, 0xdc, 0xc8, 0x7e,
+ 0x35, 0x9b, 0xf9, 0xf2, 0x49, 0x7b, 0x86, 0x35, 0x69, 0xda, 0x3b, 0xca, 0x85, 0xd9, 0x8c, 0xa2,
+ 0xc6, 0x53, 0x58, 0x99, 0xa9, 0xbf, 0x4d, 0x6d, 0x99, 0xb1, 0x9d, 0xc9, 0xf6, 0x65, 0xee, 0xc3,
+ 0x9d, 0x6f, 0x61, 0x83, 0x05, 0x43, 0xe4, 0xb1, 0x58, 0x60, 0x6f, 0xc9, 0xff, 0x4c, 0x8a, 0x78,
+ 0x77, 0xaa, 0xaf, 0xb0, 0x2c, 0x52, 0xa4, 0xce, 0x61, 0xff, 0x9b, 0xed, 0xa1, 0xc3, 0x4f, 0xc7,
+ 0x27, 0x62, 0x80, 0xb6, 0x23, 0x93, 0x6d, 0x69, 0xf2, 0xb1, 0xfa, 0x67, 0xa6, 0xf3, 0xcf, 0xb7,
+ 0x87, 0x2c, 0xfa, 0xa7, 0xaa, 0x6e, 0xae, 0x3b, 0x77, 0x52, 0x40, 0xcd, 0x67, 0xff, 0x13, 0x00,
+ 0x00, 0xff, 0xff, 0x6c, 0xe5, 0xc7, 0x34, 0x78, 0x35, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/tech_profile/tech_profile.pb.go b/vendor/github.com/opencord/voltha-protos/v4/go/tech_profile/tech_profile.pb.go
similarity index 81%
rename from vendor/github.com/opencord/voltha-protos/v3/go/tech_profile/tech_profile.pb.go
rename to vendor/github.com/opencord/voltha-protos/v4/go/tech_profile/tech_profile.pb.go
index 7d7c2ba..d60ed83 100644
--- a/vendor/github.com/opencord/voltha-protos/v3/go/tech_profile/tech_profile.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v4/go/tech_profile/tech_profile.pb.go
@@ -917,74 +917,74 @@
// 1139 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xdd, 0x6e, 0x1b, 0x45,
0x14, 0xf6, 0xda, 0x8d, 0x7f, 0x4e, 0x6c, 0x67, 0x33, 0x25, 0xc4, 0xa4, 0x0d, 0x18, 0x97, 0xd2,
- 0xc8, 0x88, 0x18, 0xa5, 0xa5, 0x37, 0x45, 0xaa, 0xec, 0x26, 0x52, 0x56, 0xa2, 0x69, 0xba, 0x09,
- 0x32, 0xe2, 0x82, 0xd5, 0x7a, 0x67, 0xbc, 0x1e, 0x69, 0x3d, 0xb3, 0xcc, 0x8e, 0xeb, 0xa4, 0x57,
- 0xdc, 0xf0, 0x16, 0x70, 0xc9, 0x13, 0x70, 0x83, 0x78, 0x14, 0x9e, 0x80, 0xc7, 0x40, 0x33, 0xbb,
- 0x6b, 0x7b, 0x6d, 0x93, 0x42, 0x45, 0xef, 0xe6, 0x7c, 0xfb, 0x9d, 0x33, 0xe7, 0x7f, 0x16, 0x9a,
- 0xaf, 0x78, 0x20, 0x47, 0xae, 0x13, 0x0a, 0x2e, 0x79, 0xd4, 0x91, 0xc4, 0x1b, 0xa9, 0xf3, 0x90,
- 0x06, 0xe4, 0x50, 0x63, 0xa8, 0xba, 0x88, 0xed, 0xdd, 0xf5, 0x39, 0xf7, 0x03, 0xd2, 0x71, 0x43,
- 0xda, 0x71, 0x19, 0xe3, 0xd2, 0x95, 0x94, 0xb3, 0x28, 0xe6, 0xb6, 0x7e, 0xcc, 0xc3, 0xd6, 0x85,
- 0x37, 0x22, 0x78, 0x12, 0x10, 0xf1, 0x8c, 0xb3, 0x21, 0xf5, 0xd1, 0x97, 0x50, 0xc1, 0x54, 0x10,
- 0x4f, 0xf1, 0x1a, 0x46, 0xd3, 0x38, 0xa8, 0x1f, 0xed, 0x1e, 0x66, 0xee, 0x39, 0x4e, 0x3f, 0xdb,
- 0x73, 0x26, 0x7a, 0x0a, 0x35, 0x17, 0x63, 0xaa, 0xce, 0x6e, 0xe0, 0x0c, 0xa6, 0x8d, 0xbc, 0x56,
- 0xdd, 0xcb, 0xaa, 0x76, 0x67, 0x94, 0x5e, 0xdf, 0xae, 0xce, 0x15, 0x7a, 0x53, 0xb4, 0x07, 0xe5,
- 0x50, 0x50, 0x2e, 0xa8, 0xbc, 0x6e, 0x14, 0x9a, 0xc6, 0x41, 0xc9, 0x9e, 0xc9, 0xe8, 0x7d, 0x28,
- 0x4e, 0x09, 0xf5, 0x47, 0xb2, 0x71, 0x4b, 0x7f, 0x49, 0x24, 0xd4, 0x85, 0x6a, 0xa4, 0xdc, 0x77,
- 0x42, 0x1e, 0x50, 0xef, 0xba, 0xb1, 0xa1, 0xef, 0xfc, 0x30, 0x7b, 0x67, 0x12, 0x20, 0x65, 0xfe,
- 0xb9, 0x66, 0xd9, 0x9b, 0x5a, 0x27, 0x16, 0x5a, 0xbf, 0x1b, 0x80, 0x2e, 0x85, 0x3b, 0x1c, 0x52,
- 0xef, 0x62, 0xe4, 0x86, 0x94, 0xf9, 0x16, 0x1b, 0x72, 0x64, 0x42, 0xc1, 0xa3, 0x42, 0xc7, 0x5f,
- 0xb2, 0xd5, 0x51, 0x23, 0x83, 0x48, 0x87, 0xa5, 0x90, 0x41, 0xa4, 0x90, 0x90, 0x8a, 0xc4, 0x59,
- 0x75, 0xd4, 0xc8, 0x20, 0x4a, 0x9c, 0x54, 0x47, 0x85, 0xf8, 0x54, 0x68, 0xc7, 0x4a, 0xb6, 0x3a,
- 0xa2, 0x53, 0x00, 0x17, 0x63, 0x67, 0x30, 0x75, 0x28, 0xc3, 0x8d, 0xa2, 0xf6, 0xb8, 0x9d, 0xf5,
- 0xd8, 0x62, 0x43, 0x22, 0x04, 0xc1, 0x69, 0xb6, 0x7a, 0x7d, 0x8b, 0x61, 0xea, 0xe9, 0xd2, 0xd9,
- 0x65, 0x17, 0xe3, 0xde, 0xd4, 0x62, 0xb8, 0xf5, 0x4b, 0x1e, 0xcc, 0xd4, 0xf5, 0xb4, 0x88, 0x6f,
- 0x5b, 0xbe, 0x0f, 0xa0, 0xec, 0x06, 0x01, 0xf7, 0x1c, 0x8a, 0x93, 0x10, 0x4b, 0x5a, 0xb6, 0x30,
- 0x7a, 0x02, 0x95, 0x28, 0x35, 0xaf, 0x83, 0xdd, 0x3c, 0xda, 0x5f, 0x9b, 0xe1, 0xb4, 0x85, 0xec,
- 0x39, 0x1f, 0xd9, 0xf0, 0x9e, 0x8c, 0x5d, 0x74, 0xa2, 0x38, 0xbd, 0x0e, 0x65, 0x43, 0xae, 0x53,
- 0xb4, 0x79, 0xd4, 0xcc, 0xda, 0x59, 0xad, 0x83, 0x8d, 0xe4, 0x6a, 0x6d, 0x3e, 0x85, 0xad, 0x45,
- 0x35, 0xe5, 0x72, 0x9c, 0xdf, 0x9a, 0x82, 0xcf, 0x63, 0xd4, 0xc2, 0xad, 0x3f, 0x0c, 0xd8, 0x5e,
- 0xce, 0x4f, 0x84, 0x76, 0xa1, 0x44, 0x99, 0x1c, 0x2a, 0xad, 0xb8, 0xba, 0x45, 0x25, 0x5a, 0x18,
- 0xed, 0x40, 0x91, 0xb3, 0xc9, 0x3c, 0x01, 0x1b, 0x9c, 0x4d, 0x62, 0x78, 0xc2, 0xa8, 0x82, 0xe3,
- 0xb2, 0x6e, 0x4c, 0x18, 0xb5, 0xb0, 0x32, 0x13, 0x72, 0x21, 0x1d, 0xc6, 0x93, 0xcb, 0x8b, 0x4a,
- 0x3c, 0xe3, 0xe8, 0x04, 0xea, 0xb3, 0x88, 0xd5, 0xad, 0x51, 0xa3, 0xd0, 0x2c, 0x1c, 0x6c, 0x2e,
- 0x77, 0xe5, 0xb2, 0x63, 0x76, 0x4d, 0x2e, 0x20, 0x51, 0xeb, 0x31, 0xec, 0x5c, 0xba, 0x34, 0x38,
- 0x16, 0x3c, 0x3c, 0xa6, 0x91, 0xe7, 0x0a, 0x9c, 0xcc, 0xe7, 0x3e, 0xc0, 0x0f, 0x13, 0x32, 0x21,
- 0x4e, 0x44, 0x5f, 0x93, 0x24, 0x84, 0x8a, 0x46, 0x2e, 0xe8, 0x6b, 0xd2, 0xfa, 0xc9, 0x00, 0xd3,
- 0x26, 0x38, 0xab, 0x73, 0x0f, 0x6a, 0x63, 0xca, 0x1c, 0x39, 0x12, 0x24, 0x1a, 0xf1, 0x20, 0x8d,
- 0xbc, 0x3a, 0xa6, 0xec, 0x32, 0xc5, 0x34, 0xc9, 0xbd, 0x5a, 0x20, 0xe5, 0x13, 0x92, 0x7b, 0x35,
- 0x27, 0x3d, 0x80, 0x2d, 0x45, 0x0a, 0x05, 0x1f, 0xb8, 0x03, 0x1a, 0xcc, 0x87, 0xb5, 0x3e, 0x76,
- 0xaf, 0xce, 0xe7, 0x68, 0xeb, 0x37, 0x03, 0xb6, 0xfb, 0x2b, 0x8e, 0x3c, 0x82, 0x0d, 0x5f, 0x10,
- 0x12, 0x77, 0xe6, 0x4a, 0x4e, 0x96, 0xe9, 0x76, 0x4c, 0x46, 0x8f, 0xa1, 0x78, 0x4d, 0x82, 0x80,
- 0xc7, 0x4b, 0xe5, 0xcd, 0x6a, 0x09, 0x1b, 0x7d, 0x01, 0x05, 0x41, 0x70, 0xd2, 0xb3, 0x6f, 0x52,
- 0x52, 0xd4, 0xd6, 0x5f, 0x79, 0xa8, 0x65, 0x3d, 0xee, 0x41, 0x1d, 0xc7, 0x40, 0xba, 0x64, 0xe2,
- 0xa1, 0xba, 0xb3, 0x3c, 0x54, 0x9a, 0x93, 0x6c, 0x98, 0x1a, 0x5e, 0x14, 0xd1, 0xf7, 0xd0, 0x90,
- 0x2e, 0x0d, 0x1c, 0x2c, 0x78, 0xe8, 0xa4, 0xd6, 0x3c, 0x6d, 0x3f, 0x89, 0xe8, 0xde, 0x52, 0x73,
- 0xac, 0xab, 0xfc, 0x69, 0xce, 0xde, 0x91, 0x6b, 0x5b, 0xe2, 0x0c, 0x90, 0x20, 0x78, 0xd9, 0xf2,
- 0xbf, 0x0a, 0xfb, 0x34, 0x67, 0x9b, 0x62, 0xb9, 0x4a, 0x2f, 0xe1, 0xf6, 0x74, 0x8d, 0xc1, 0x78,
- 0x66, 0x3f, 0xca, 0x1a, 0xec, 0xaf, 0xb1, 0xb8, 0x3d, 0x5d, 0x36, 0xd9, 0x33, 0xe7, 0x69, 0x8c,
- 0xad, 0xb5, 0x7e, 0x2d, 0x40, 0x35, 0x19, 0x82, 0x97, 0xaa, 0x7b, 0xdf, 0x76, 0x73, 0xed, 0x03,
- 0xf8, 0x64, 0xac, 0x67, 0x71, 0x36, 0xba, 0x95, 0x04, 0xb1, 0xb0, 0x5a, 0x6c, 0xe1, 0x80, 0x4a,
- 0x67, 0xec, 0x86, 0x3a, 0x23, 0x15, 0xbb, 0xa4, 0xe4, 0xe7, 0x6e, 0x88, 0xee, 0x43, 0xdd, 0x25,
- 0x91, 0x43, 0x98, 0x27, 0xae, 0x43, 0x7d, 0xab, 0x8a, 0xb0, 0x6c, 0xd7, 0x5c, 0x12, 0x9d, 0xcc,
- 0xc0, 0xff, 0xe1, 0x91, 0xc9, 0xbc, 0x6d, 0xc5, 0x7f, 0x7c, 0xdb, 0x4a, 0x99, 0xb7, 0x6d, 0xb5,
- 0xf1, 0xca, 0xff, 0xb9, 0xf1, 0x7a, 0xcb, 0x59, 0x6f, 0x54, 0x74, 0x0d, 0xd7, 0xdb, 0x48, 0x06,
- 0x21, 0xb5, 0x11, 0x8b, 0xad, 0x3f, 0x0d, 0xa8, 0x2d, 0xd6, 0xe9, 0xdd, 0x6f, 0xd0, 0xee, 0x7c,
- 0x83, 0xea, 0xbd, 0x16, 0x35, 0x8a, 0x7a, 0x83, 0xee, 0xad, 0xdd, 0xa0, 0xda, 0xa9, 0xd9, 0xf6,
- 0x4c, 0x5c, 0x5c, 0xf3, 0x44, 0x94, 0xd6, 0x3c, 0x11, 0xed, 0xaf, 0xa0, 0x32, 0x6b, 0x2a, 0x54,
- 0x85, 0xf2, 0x37, 0xe7, 0x17, 0x97, 0xf6, 0x49, 0xf7, 0xb9, 0x99, 0x43, 0x75, 0x80, 0xe3, 0x17,
- 0xfd, 0xb3, 0x44, 0x36, 0xd0, 0x36, 0xd4, 0x7a, 0xd6, 0xb1, 0x65, 0x9f, 0x3c, 0xbb, 0xb4, 0x5e,
- 0x9c, 0x75, 0xbf, 0x36, 0xf3, 0xed, 0x27, 0x60, 0x2e, 0xd7, 0x1d, 0x95, 0xa0, 0xd0, 0xb7, 0x6d,
- 0x33, 0x87, 0x10, 0xd4, 0x2f, 0xa4, 0xa0, 0x9e, 0x3c, 0x4f, 0x2a, 0x6d, 0x1a, 0x08, 0xa0, 0x78,
- 0x7a, 0x3d, 0x10, 0x14, 0x9b, 0xf9, 0x36, 0x83, 0xea, 0xe2, 0xdf, 0x10, 0xda, 0x81, 0xed, 0x45,
- 0xd9, 0x39, 0xe3, 0x8c, 0x98, 0x39, 0x74, 0x1b, 0xb6, 0xb2, 0x70, 0xd7, 0x34, 0xd0, 0x1d, 0xd8,
- 0xcd, 0x80, 0x3d, 0x12, 0xc9, 0x93, 0xe1, 0x90, 0x0b, 0x69, 0xe6, 0x57, 0x0c, 0x75, 0x27, 0x92,
- 0x9b, 0x85, 0xf6, 0xd3, 0xd9, 0x66, 0x4b, 0x3c, 0xad, 0x42, 0x39, 0xdd, 0x33, 0x66, 0x0e, 0xd5,
- 0xa0, 0xd2, 0x9f, 0x89, 0x86, 0x0a, 0xc3, 0x26, 0xd8, 0xcc, 0xa3, 0x32, 0xdc, 0x52, 0x23, 0x6e,
- 0x16, 0xda, 0x3f, 0x1b, 0x70, 0xf7, 0xa6, 0x3f, 0x13, 0x74, 0x1f, 0x3e, 0xbe, 0xe9, 0x7b, 0x1a,
- 0xd1, 0x01, 0x7c, 0x72, 0x23, 0xad, 0x1b, 0x45, 0x13, 0x41, 0xb0, 0x69, 0xa0, 0xcf, 0xe0, 0xc1,
- 0x8d, 0xcc, 0xc5, 0xb0, 0x7b, 0xdf, 0x42, 0x93, 0x0b, 0xff, 0x90, 0x87, 0x84, 0x79, 0x5c, 0xe0,
- 0xc3, 0xf8, 0x47, 0x39, 0xd3, 0x32, 0xdf, 0x3d, 0xf2, 0xa9, 0x1c, 0x4d, 0x06, 0x87, 0x1e, 0x1f,
- 0x77, 0x52, 0x62, 0x27, 0x26, 0x7e, 0x9e, 0xfc, 0x51, 0xbf, 0x7a, 0xd8, 0xf1, 0x79, 0xe6, 0xbf,
- 0x7a, 0x50, 0xd4, 0x9f, 0x1e, 0xfe, 0x1d, 0x00, 0x00, 0xff, 0xff, 0xb6, 0x75, 0x37, 0xf5, 0x7c,
+ 0xc8, 0x88, 0x18, 0x85, 0xd0, 0x9b, 0x22, 0x55, 0x76, 0x13, 0x29, 0x2b, 0xd1, 0x34, 0xdd, 0x04,
+ 0x19, 0x71, 0xc1, 0x6a, 0xbd, 0x33, 0x5e, 0x8f, 0xb4, 0x9e, 0x59, 0x66, 0xc7, 0x75, 0xd2, 0x2b,
+ 0x6e, 0x78, 0x0b, 0xb8, 0xe4, 0x09, 0xb8, 0x41, 0x3c, 0x0a, 0x4f, 0xc0, 0x63, 0xa0, 0x99, 0xdd,
+ 0xb5, 0xbd, 0xb6, 0x49, 0xa1, 0x82, 0xbb, 0x39, 0xdf, 0x7e, 0xe7, 0xcc, 0xf9, 0x9f, 0x85, 0xe6,
+ 0x2b, 0x1e, 0xc8, 0x91, 0xeb, 0x84, 0x82, 0x4b, 0x1e, 0x75, 0x24, 0xf1, 0x46, 0xea, 0x3c, 0xa4,
+ 0x01, 0x39, 0xd4, 0x18, 0xaa, 0x2e, 0x62, 0x7b, 0xf7, 0x7d, 0xce, 0xfd, 0x80, 0x74, 0xdc, 0x90,
+ 0x76, 0x5c, 0xc6, 0xb8, 0x74, 0x25, 0xe5, 0x2c, 0x8a, 0xb9, 0xad, 0x1f, 0xf2, 0xb0, 0x75, 0xe9,
+ 0x8d, 0x08, 0x9e, 0x04, 0x44, 0x3c, 0xe3, 0x6c, 0x48, 0x7d, 0xf4, 0x05, 0x54, 0x30, 0x15, 0xc4,
+ 0x53, 0xbc, 0x86, 0xd1, 0x34, 0x0e, 0xea, 0x47, 0xbb, 0x87, 0x99, 0x7b, 0x4e, 0xd2, 0xcf, 0xf6,
+ 0x9c, 0x89, 0x9e, 0x42, 0xcd, 0xc5, 0x98, 0xaa, 0xb3, 0x1b, 0x38, 0x83, 0x69, 0x23, 0xaf, 0x55,
+ 0xf7, 0xb2, 0xaa, 0xdd, 0x19, 0xa5, 0xd7, 0xb7, 0xab, 0x73, 0x85, 0xde, 0x14, 0xed, 0x41, 0x39,
+ 0x14, 0x94, 0x0b, 0x2a, 0x6f, 0x1a, 0x85, 0xa6, 0x71, 0x50, 0xb2, 0x67, 0x32, 0x7a, 0x17, 0x8a,
+ 0x53, 0x42, 0xfd, 0x91, 0x6c, 0xdc, 0xd1, 0x5f, 0x12, 0x09, 0x75, 0xa1, 0x1a, 0x29, 0xf7, 0x9d,
+ 0x90, 0x07, 0xd4, 0xbb, 0x69, 0x6c, 0xe8, 0x3b, 0xdf, 0xcf, 0xde, 0x99, 0x04, 0x48, 0x99, 0x7f,
+ 0xa1, 0x59, 0xf6, 0xa6, 0xd6, 0x89, 0x85, 0xd6, 0x6f, 0x06, 0xa0, 0x2b, 0xe1, 0x0e, 0x87, 0xd4,
+ 0xbb, 0x1c, 0xb9, 0x21, 0x65, 0xbe, 0xc5, 0x86, 0x1c, 0x99, 0x50, 0xf0, 0xa8, 0xd0, 0xf1, 0x97,
+ 0x6c, 0x75, 0xd4, 0xc8, 0x20, 0xd2, 0x61, 0x29, 0x64, 0x10, 0x29, 0x24, 0xa4, 0x22, 0x71, 0x56,
+ 0x1d, 0x35, 0x32, 0x88, 0x12, 0x27, 0xd5, 0x51, 0x21, 0x3e, 0x15, 0xda, 0xb1, 0x92, 0xad, 0x8e,
+ 0xe8, 0x0c, 0xc0, 0xc5, 0xd8, 0x19, 0x4c, 0x1d, 0xca, 0x70, 0xa3, 0xa8, 0x3d, 0x6e, 0x67, 0x3d,
+ 0xb6, 0xd8, 0x90, 0x08, 0x41, 0x70, 0x9a, 0xad, 0x5e, 0xdf, 0x62, 0x98, 0x7a, 0xba, 0x74, 0x76,
+ 0xd9, 0xc5, 0xb8, 0x37, 0xb5, 0x18, 0x6e, 0xfd, 0x9c, 0x07, 0x33, 0x75, 0x3d, 0x2d, 0xe2, 0xdb,
+ 0x96, 0xef, 0x3d, 0x28, 0xbb, 0x41, 0xc0, 0x3d, 0x87, 0xe2, 0x24, 0xc4, 0x92, 0x96, 0x2d, 0x8c,
+ 0x9e, 0x40, 0x25, 0x4a, 0xcd, 0xeb, 0x60, 0x37, 0x8f, 0xf6, 0xd7, 0x66, 0x38, 0x6d, 0x21, 0x7b,
+ 0xce, 0x47, 0x36, 0xbc, 0x23, 0x63, 0x17, 0x9d, 0x28, 0x4e, 0xaf, 0x43, 0xd9, 0x90, 0xeb, 0x14,
+ 0x6d, 0x1e, 0x35, 0xb3, 0x76, 0x56, 0xeb, 0x60, 0x23, 0xb9, 0x5a, 0x9b, 0x8f, 0x61, 0x6b, 0x51,
+ 0x4d, 0xb9, 0x1c, 0xe7, 0xb7, 0xa6, 0xe0, 0x8b, 0x18, 0xb5, 0x70, 0xeb, 0x77, 0x03, 0xb6, 0x97,
+ 0xf3, 0x13, 0xa1, 0x5d, 0x28, 0x51, 0x26, 0x87, 0x4a, 0x2b, 0xae, 0x6e, 0x51, 0x89, 0x16, 0x46,
+ 0x3b, 0x50, 0xe4, 0x6c, 0x32, 0x4f, 0xc0, 0x06, 0x67, 0x93, 0x18, 0x9e, 0x30, 0xaa, 0xe0, 0xb8,
+ 0xac, 0x1b, 0x13, 0x46, 0x2d, 0xac, 0xcc, 0x84, 0x5c, 0x48, 0x87, 0xf1, 0xe4, 0xf2, 0xa2, 0x12,
+ 0xcf, 0x39, 0x3a, 0x85, 0xfa, 0x2c, 0x62, 0x75, 0x6b, 0xd4, 0x28, 0x34, 0x0b, 0x07, 0x9b, 0xcb,
+ 0x5d, 0xb9, 0xec, 0x98, 0x5d, 0x93, 0x0b, 0x48, 0xd4, 0x7a, 0x0c, 0x3b, 0x57, 0x2e, 0x0d, 0x4e,
+ 0x04, 0x0f, 0x4f, 0x68, 0xe4, 0xb9, 0x02, 0x27, 0xf3, 0xb9, 0x0f, 0xf0, 0xfd, 0x84, 0x4c, 0x88,
+ 0x13, 0xd1, 0xd7, 0x24, 0x09, 0xa1, 0xa2, 0x91, 0x4b, 0xfa, 0x9a, 0xb4, 0x7e, 0x34, 0xc0, 0xb4,
+ 0x09, 0xce, 0xea, 0x3c, 0x80, 0xda, 0x98, 0x32, 0x47, 0x8e, 0x04, 0x89, 0x46, 0x3c, 0x48, 0x23,
+ 0xaf, 0x8e, 0x29, 0xbb, 0x4a, 0x31, 0x4d, 0x72, 0xaf, 0x17, 0x48, 0xf9, 0x84, 0xe4, 0x5e, 0xcf,
+ 0x49, 0x8f, 0x60, 0x4b, 0x91, 0x42, 0xc1, 0x07, 0xee, 0x80, 0x06, 0xf3, 0x61, 0xad, 0x8f, 0xdd,
+ 0xeb, 0x8b, 0x39, 0xda, 0xfa, 0xd5, 0x80, 0xed, 0xfe, 0x8a, 0x23, 0xc7, 0xb0, 0xe1, 0x0b, 0x42,
+ 0xe2, 0xce, 0x5c, 0xc9, 0xc9, 0x32, 0xdd, 0x8e, 0xc9, 0xe8, 0x31, 0x14, 0x6f, 0x48, 0x10, 0xf0,
+ 0x78, 0xa9, 0xbc, 0x59, 0x2d, 0x61, 0xa3, 0xcf, 0xa0, 0x20, 0x08, 0x4e, 0x7a, 0xf6, 0x4d, 0x4a,
+ 0x8a, 0xda, 0xfa, 0x33, 0x0f, 0xb5, 0xac, 0xc7, 0x3d, 0xa8, 0xe3, 0x18, 0x48, 0x97, 0x4c, 0x3c,
+ 0x54, 0xf7, 0x96, 0x87, 0x4a, 0x73, 0x92, 0x0d, 0x53, 0xc3, 0x8b, 0x22, 0xfa, 0x0e, 0x1a, 0xd2,
+ 0xa5, 0x81, 0x83, 0x05, 0x0f, 0x9d, 0xd4, 0x9a, 0xa7, 0xed, 0x27, 0x11, 0x3d, 0x58, 0x6a, 0x8e,
+ 0x75, 0x95, 0x3f, 0xcb, 0xd9, 0x3b, 0x72, 0x6d, 0x4b, 0x9c, 0x03, 0x12, 0x04, 0x2f, 0x5b, 0xfe,
+ 0x47, 0x61, 0x9f, 0xe5, 0x6c, 0x53, 0x2c, 0x57, 0xe9, 0x25, 0xdc, 0x9d, 0xae, 0x31, 0x18, 0xcf,
+ 0xec, 0x07, 0x59, 0x83, 0xfd, 0x35, 0x16, 0xb7, 0xa7, 0xcb, 0x26, 0x7b, 0xe6, 0x3c, 0x8d, 0xb1,
+ 0xb5, 0xd6, 0x2f, 0x05, 0xa8, 0x26, 0x43, 0xf0, 0x52, 0x75, 0xef, 0xdb, 0x6e, 0xae, 0x7d, 0x00,
+ 0x9f, 0x8c, 0xf5, 0x2c, 0xce, 0x46, 0xb7, 0x92, 0x20, 0x16, 0x56, 0x8b, 0x2d, 0x1c, 0x50, 0xe9,
+ 0x8c, 0xdd, 0x50, 0x67, 0xa4, 0x62, 0x97, 0x94, 0xfc, 0xdc, 0x0d, 0xd1, 0x43, 0xa8, 0xbb, 0x24,
+ 0x72, 0x08, 0xf3, 0xc4, 0x4d, 0xa8, 0x6f, 0x55, 0x11, 0x96, 0xed, 0x9a, 0x4b, 0xa2, 0xd3, 0x19,
+ 0xf8, 0x1f, 0x3c, 0x32, 0x99, 0xb7, 0xad, 0xf8, 0xb7, 0x6f, 0x5b, 0x29, 0xf3, 0xb6, 0xad, 0x36,
+ 0x5e, 0xf9, 0x5f, 0x37, 0x5e, 0x6f, 0x39, 0xeb, 0x8d, 0x8a, 0xae, 0xe1, 0x7a, 0x1b, 0xc9, 0x20,
+ 0xa4, 0x36, 0x62, 0xb1, 0xf5, 0x87, 0x01, 0xb5, 0xc5, 0x3a, 0xfd, 0xff, 0x1b, 0xb4, 0x3b, 0xdf,
+ 0xa0, 0x7a, 0xaf, 0x45, 0x8d, 0xa2, 0xde, 0xa0, 0x7b, 0x6b, 0x37, 0xa8, 0x76, 0x6a, 0xb6, 0x3d,
+ 0x13, 0x17, 0xd7, 0x3c, 0x11, 0xa5, 0x35, 0x4f, 0x44, 0xfb, 0x4b, 0xa8, 0xcc, 0x9a, 0x0a, 0x55,
+ 0xa1, 0xfc, 0xf5, 0xc5, 0xe5, 0x95, 0x7d, 0xda, 0x7d, 0x6e, 0xe6, 0x50, 0x1d, 0xe0, 0xe4, 0x45,
+ 0xff, 0x3c, 0x91, 0x0d, 0xb4, 0x0d, 0xb5, 0x9e, 0x75, 0x62, 0xd9, 0xa7, 0xcf, 0xae, 0xac, 0x17,
+ 0xe7, 0xdd, 0xaf, 0xcc, 0x7c, 0xfb, 0x09, 0x98, 0xcb, 0x75, 0x47, 0x25, 0x28, 0xf4, 0x6d, 0xdb,
+ 0xcc, 0x21, 0x04, 0xf5, 0x4b, 0x29, 0xa8, 0x27, 0x2f, 0x92, 0x4a, 0x9b, 0x06, 0x02, 0x28, 0x9e,
+ 0xdd, 0x0c, 0x04, 0xc5, 0x66, 0xbe, 0xcd, 0xa0, 0xba, 0xf8, 0x37, 0x84, 0x76, 0x60, 0x7b, 0x51,
+ 0x76, 0xce, 0x39, 0x23, 0x66, 0x0e, 0xdd, 0x85, 0xad, 0x2c, 0xdc, 0x35, 0x0d, 0x74, 0x0f, 0x76,
+ 0x33, 0x60, 0x8f, 0x44, 0xf2, 0x74, 0x38, 0xe4, 0x42, 0x9a, 0xf9, 0x15, 0x43, 0xdd, 0x89, 0xe4,
+ 0x66, 0xa1, 0xfd, 0x74, 0xb6, 0xd9, 0x12, 0x4f, 0xab, 0x50, 0x4e, 0xf7, 0x8c, 0x99, 0x43, 0x35,
+ 0xa8, 0xf4, 0x67, 0xa2, 0xa1, 0xc2, 0xb0, 0x09, 0x36, 0xf3, 0xa8, 0x0c, 0x77, 0xd4, 0x88, 0x9b,
+ 0x85, 0xf6, 0x4f, 0x06, 0xdc, 0xbf, 0xed, 0xcf, 0x04, 0x3d, 0x84, 0x0f, 0x6f, 0xfb, 0x9e, 0x46,
+ 0x74, 0x00, 0x1f, 0xdd, 0x4a, 0xeb, 0x46, 0xd1, 0x44, 0x10, 0x6c, 0x1a, 0xe8, 0x13, 0x78, 0x74,
+ 0x2b, 0x73, 0x31, 0xec, 0xde, 0x37, 0xd0, 0xe4, 0xc2, 0x3f, 0xe4, 0x21, 0x61, 0x1e, 0x17, 0xf8,
+ 0x30, 0xfe, 0x51, 0xce, 0xb4, 0xcc, 0xb7, 0xc7, 0x3e, 0x95, 0xa3, 0xc9, 0xe0, 0xd0, 0xe3, 0xe3,
+ 0x4e, 0x4a, 0xec, 0xc4, 0xc4, 0x4f, 0x93, 0x3f, 0xea, 0x57, 0xc7, 0x1d, 0x9f, 0x67, 0xfe, 0xab,
+ 0x07, 0x45, 0xfd, 0xe9, 0xf3, 0xbf, 0x02, 0x00, 0x00, 0xff, 0xff, 0x1e, 0x89, 0x67, 0x3b, 0x7c,
0x0b, 0x00, 0x00,
}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/adapter.pb.go b/vendor/github.com/opencord/voltha-protos/v4/go/voltha/adapter.pb.go
similarity index 74%
rename from vendor/github.com/opencord/voltha-protos/v3/go/voltha/adapter.pb.go
rename to vendor/github.com/opencord/voltha-protos/v4/go/voltha/adapter.pb.go
index 3d12f3f..bb868a4 100644
--- a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/adapter.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v4/go/voltha/adapter.pb.go
@@ -8,7 +8,7 @@
proto "github.com/golang/protobuf/proto"
any "github.com/golang/protobuf/ptypes/any"
timestamp "github.com/golang/protobuf/ptypes/timestamp"
- _ "github.com/opencord/voltha-protos/v3/go/common"
+ _ "github.com/opencord/voltha-protos/v4/go/common"
math "math"
)
@@ -241,31 +241,31 @@
// 455 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x52, 0xdd, 0x6e, 0xd3, 0x30,
0x14, 0x56, 0xda, 0xf5, 0xcf, 0x53, 0xa1, 0x33, 0x14, 0x99, 0xa2, 0x69, 0x51, 0x05, 0x28, 0x17,
- 0x2c, 0x11, 0xdb, 0x0b, 0xd0, 0x6e, 0x37, 0xbb, 0xb5, 0x26, 0x2e, 0xb8, 0xa9, 0x5c, 0xdb, 0xcb,
- 0x2c, 0x25, 0x3e, 0x51, 0xec, 0x46, 0xea, 0x43, 0xf2, 0x02, 0x3c, 0x01, 0x4f, 0xc0, 0x35, 0xaa,
- 0xed, 0xd0, 0x1f, 0xa4, 0x5d, 0x25, 0xe7, 0xfb, 0x39, 0x9f, 0xcf, 0xb1, 0xd1, 0x87, 0x06, 0x0a,
- 0xfb, 0xcc, 0x56, 0x55, 0x0d, 0x16, 0x4c, 0xc6, 0x04, 0xab, 0xac, 0xac, 0x53, 0x57, 0xe2, 0xbe,
- 0x27, 0x67, 0xef, 0x73, 0x80, 0xbc, 0x90, 0x99, 0x43, 0xd7, 0x9b, 0xa7, 0x8c, 0xe9, 0xad, 0x97,
- 0xcc, 0xc8, 0xb1, 0xbf, 0x94, 0x96, 0x05, 0xe6, 0xea, 0xd4, 0x64, 0x55, 0x29, 0x8d, 0x65, 0x65,
- 0xe5, 0x05, 0x73, 0x8a, 0xc6, 0x0b, 0x1f, 0x77, 0x07, 0xfa, 0x49, 0xe5, 0x78, 0x81, 0x2e, 0x98,
- 0x10, 0xca, 0x2a, 0xd0, 0xac, 0x58, 0x71, 0x07, 0x92, 0x6f, 0x71, 0x94, 0x9c, 0xdf, 0xbc, 0x4d,
- 0x7d, 0xb7, 0xb4, 0xed, 0x96, 0x2e, 0xf4, 0x96, 0x4e, 0xf6, 0x72, 0xdf, 0x62, 0xfe, 0xab, 0x8b,
- 0x06, 0xa1, 0x29, 0x9e, 0xa2, 0x8e, 0x12, 0x24, 0x8a, 0xa3, 0x64, 0xb4, 0xec, 0xfd, 0xfe, 0xf3,
- 0xf3, 0x32, 0xa2, 0x1d, 0x25, 0xf0, 0x25, 0xea, 0x37, 0x52, 0x0b, 0xa8, 0x49, 0xe7, 0x90, 0x0a,
- 0x20, 0xbe, 0x42, 0x83, 0x46, 0xd6, 0x46, 0x81, 0x26, 0xdd, 0x43, 0xbe, 0x45, 0xf1, 0x35, 0xea,
- 0x87, 0xa3, 0x4d, 0xdc, 0xd1, 0xa6, 0xa9, 0x5f, 0x41, 0x7a, 0x34, 0x0c, 0x0d, 0x22, 0x4c, 0xd1,
- 0xbb, 0x83, 0xa1, 0x84, 0x34, 0xbc, 0x56, 0xd5, 0xae, 0x7a, 0x69, 0xb2, 0x36, 0x74, 0xba, 0xb7,
- 0xde, 0xef, 0x9d, 0xf8, 0x0b, 0xc2, 0x05, 0xe4, 0x8a, 0xbb, 0x86, 0x8d, 0xe2, 0x72, 0xa5, 0x84,
- 0x21, 0x67, 0x71, 0x37, 0x19, 0xd1, 0x49, 0x60, 0xee, 0x1d, 0xf1, 0x20, 0x0c, 0x7e, 0x40, 0xb8,
- 0x60, 0xc6, 0xae, 0x38, 0x94, 0xe5, 0x46, 0x2b, 0xce, 0x5c, 0x7a, 0xcf, 0xa5, 0xcf, 0xfe, 0x4b,
- 0x7f, 0x6c, 0x6f, 0x89, 0x5e, 0xec, 0x5c, 0x77, 0x87, 0x26, 0xfc, 0x19, 0xbd, 0xe2, 0x9b, 0xba,
- 0x96, 0xda, 0x52, 0x59, 0x15, 0x8a, 0x33, 0xd2, 0x8f, 0xa3, 0xa4, 0x47, 0x4f, 0x50, 0xfc, 0x11,
- 0x8d, 0x2d, 0x58, 0x56, 0x84, 0xda, 0x90, 0x81, 0x93, 0x1d, 0x83, 0x78, 0x86, 0x86, 0x52, 0x8b,
- 0x0a, 0x94, 0xb6, 0x64, 0xb8, 0xdb, 0x35, 0xfd, 0x57, 0x63, 0x8c, 0xce, 0xec, 0xb6, 0x92, 0x64,
- 0xe4, 0x70, 0xf7, 0x3f, 0xff, 0x8a, 0x86, 0x61, 0xc7, 0x06, 0x7f, 0x42, 0x3d, 0x65, 0x65, 0x69,
- 0x48, 0x14, 0x77, 0x93, 0xf3, 0x9b, 0xd7, 0x27, 0x97, 0x40, 0x3d, 0xbb, 0x7c, 0x44, 0x6f, 0xa0,
- 0xce, 0x53, 0xa8, 0xa4, 0xe6, 0x50, 0x8b, 0xa0, 0x5a, 0x8e, 0xbf, 0xbb, 0x6f, 0x10, 0xff, 0x48,
- 0x73, 0x65, 0x9f, 0x37, 0xeb, 0x94, 0x43, 0x99, 0xb5, 0xd2, 0xcc, 0x4b, 0xaf, 0xc3, 0xc3, 0x6e,
- 0x6e, 0xb3, 0x1c, 0x02, 0xb6, 0xee, 0x3b, 0xf0, 0xf6, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x4c,
- 0x2f, 0x33, 0x61, 0x3d, 0x03, 0x00, 0x00,
+ 0x2c, 0x11, 0x83, 0x07, 0xa0, 0xdd, 0x6e, 0x76, 0x6b, 0x4d, 0x5c, 0x70, 0x53, 0xb9, 0xb6, 0x97,
+ 0x59, 0x4a, 0x7c, 0xa2, 0xd8, 0x8d, 0xd4, 0x87, 0xe4, 0x05, 0x78, 0x02, 0x9e, 0x80, 0x6b, 0x54,
+ 0xdb, 0xa1, 0x3f, 0x48, 0xbb, 0x4a, 0xce, 0xf7, 0x73, 0x3e, 0x9f, 0x63, 0xa3, 0x77, 0x0d, 0x14,
+ 0xf6, 0x89, 0xad, 0xaa, 0x1a, 0x2c, 0x98, 0x8c, 0x09, 0x56, 0x59, 0x59, 0xa7, 0xae, 0xc4, 0x7d,
+ 0x4f, 0xce, 0xde, 0xe6, 0x00, 0x79, 0x21, 0x33, 0x87, 0xae, 0x37, 0x8f, 0x19, 0xd3, 0x5b, 0x2f,
+ 0x99, 0x91, 0x63, 0x7f, 0x29, 0x2d, 0x0b, 0xcc, 0xd5, 0xa9, 0xc9, 0xaa, 0x52, 0x1a, 0xcb, 0xca,
+ 0xca, 0x0b, 0xe6, 0x14, 0x8d, 0x17, 0x3e, 0xee, 0x16, 0xf4, 0xa3, 0xca, 0xf1, 0x02, 0x5d, 0x30,
+ 0x21, 0x94, 0x55, 0xa0, 0x59, 0xb1, 0xe2, 0x0e, 0x24, 0xdf, 0xe2, 0x28, 0x39, 0xbf, 0x79, 0x9d,
+ 0xfa, 0x6e, 0x69, 0xdb, 0x2d, 0x5d, 0xe8, 0x2d, 0x9d, 0xec, 0xe5, 0xbe, 0xc5, 0xfc, 0x57, 0x17,
+ 0x0d, 0x42, 0x53, 0x3c, 0x45, 0x1d, 0x25, 0x48, 0x14, 0x47, 0xc9, 0x68, 0xd9, 0xfb, 0xfd, 0xe7,
+ 0xe7, 0x65, 0x44, 0x3b, 0x4a, 0xe0, 0x4b, 0xd4, 0x6f, 0xa4, 0x16, 0x50, 0x93, 0xce, 0x21, 0x15,
+ 0x40, 0x7c, 0x85, 0x06, 0x8d, 0xac, 0x8d, 0x02, 0x4d, 0xba, 0x87, 0x7c, 0x8b, 0xe2, 0x6b, 0xd4,
+ 0x0f, 0x47, 0x9b, 0xb8, 0xa3, 0x4d, 0x53, 0xbf, 0x82, 0xf4, 0x68, 0x18, 0x1a, 0x44, 0x98, 0xa2,
+ 0x37, 0x07, 0x43, 0x09, 0x69, 0x78, 0xad, 0xaa, 0x5d, 0xf5, 0xdc, 0x64, 0x6d, 0xe8, 0x74, 0x6f,
+ 0xbd, 0xdb, 0x3b, 0xf1, 0x27, 0x84, 0x0b, 0xc8, 0x15, 0x77, 0x0d, 0x1b, 0xc5, 0xe5, 0x4a, 0x09,
+ 0x43, 0xce, 0xe2, 0x6e, 0x32, 0xa2, 0x93, 0xc0, 0xdc, 0x39, 0xe2, 0x5e, 0x18, 0x7c, 0x8f, 0x70,
+ 0xc1, 0x8c, 0x5d, 0x71, 0x28, 0xcb, 0x8d, 0x56, 0x9c, 0xb9, 0xf4, 0x9e, 0x4b, 0x9f, 0xfd, 0x97,
+ 0xfe, 0xd0, 0xde, 0x12, 0xbd, 0xd8, 0xb9, 0x6e, 0x0f, 0x4d, 0xf8, 0x23, 0x7a, 0xc1, 0x37, 0x75,
+ 0x2d, 0xb5, 0xa5, 0xb2, 0x2a, 0x14, 0x67, 0xa4, 0x1f, 0x47, 0x49, 0x8f, 0x9e, 0xa0, 0xf8, 0x3d,
+ 0x1a, 0x5b, 0xb0, 0xac, 0x08, 0xb5, 0x21, 0x03, 0x27, 0x3b, 0x06, 0xf1, 0x0c, 0x0d, 0xa5, 0x16,
+ 0x15, 0x28, 0x6d, 0xc9, 0x70, 0xb7, 0x6b, 0xfa, 0xaf, 0xc6, 0x18, 0x9d, 0xd9, 0x6d, 0x25, 0xc9,
+ 0xc8, 0xe1, 0xee, 0x7f, 0xfe, 0x19, 0x0d, 0xc3, 0x8e, 0x0d, 0xfe, 0x80, 0x7a, 0xca, 0xca, 0xd2,
+ 0x90, 0x28, 0xee, 0x26, 0xe7, 0x37, 0x2f, 0x4f, 0x2e, 0x81, 0x7a, 0x76, 0xf9, 0x80, 0x5e, 0x41,
+ 0x9d, 0xa7, 0x50, 0x49, 0xcd, 0xa1, 0x16, 0x41, 0xb5, 0x1c, 0x7f, 0x77, 0xdf, 0x20, 0xfe, 0x91,
+ 0xe6, 0xca, 0x3e, 0x6d, 0xd6, 0x29, 0x87, 0x32, 0x6b, 0xa5, 0x99, 0x97, 0x5e, 0x87, 0x87, 0xdd,
+ 0x7c, 0xcd, 0x72, 0x08, 0xd8, 0xba, 0xef, 0xc0, 0x2f, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x07,
+ 0xa4, 0x0d, 0x2b, 0x3d, 0x03, 0x00, 0x00,
}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/device.pb.go b/vendor/github.com/opencord/voltha-protos/v4/go/voltha/device.pb.go
similarity index 78%
rename from vendor/github.com/opencord/voltha-protos/v3/go/voltha/device.pb.go
rename to vendor/github.com/opencord/voltha-protos/v4/go/voltha/device.pb.go
index 764edcf..2499fd1 100644
--- a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/device.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v4/go/voltha/device.pb.go
@@ -7,8 +7,8 @@
fmt "fmt"
proto "github.com/golang/protobuf/proto"
any "github.com/golang/protobuf/ptypes/any"
- common "github.com/opencord/voltha-protos/v3/go/common"
- openflow_13 "github.com/opencord/voltha-protos/v3/go/openflow_13"
+ common "github.com/opencord/voltha-protos/v4/go/common"
+ openflow_13 "github.com/opencord/voltha-protos/v4/go/openflow_13"
math "math"
)
@@ -1710,151 +1710,151 @@
var fileDescriptor_200940f73d155856 = []byte{
// 2341 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x58, 0xcd, 0x72, 0x1b, 0xb7,
- 0x1d, 0x37, 0x29, 0x71, 0xc9, 0xfd, 0xf3, 0x43, 0x6b, 0x58, 0x4e, 0xd6, 0x56, 0x35, 0x76, 0xe9,
- 0x74, 0xaa, 0x24, 0xb5, 0xe4, 0xc6, 0x9d, 0x24, 0x3d, 0x74, 0xc6, 0x14, 0xb9, 0xb6, 0x77, 0xaa,
- 0x92, 0x2a, 0x48, 0x2a, 0x6d, 0x2f, 0x3b, 0x2b, 0x2e, 0x28, 0x61, 0xbc, 0xbb, 0xa0, 0x81, 0x25,
- 0x25, 0xe7, 0xd6, 0xc9, 0xb4, 0xa7, 0xde, 0x7a, 0xeb, 0x13, 0xf4, 0x0d, 0x72, 0x6c, 0x5f, 0x20,
- 0xd3, 0x77, 0x68, 0x2f, 0x7d, 0x82, 0x9c, 0x3b, 0x00, 0x16, 0xe4, 0xae, 0x9c, 0x3a, 0xed, 0x45,
- 0x5a, 0xfc, 0xfe, 0x1f, 0x00, 0x7e, 0xc0, 0xff, 0x03, 0x84, 0xfb, 0x2b, 0x16, 0x67, 0x97, 0x61,
- 0xb0, 0xe0, 0x2c, 0x63, 0xe2, 0x28, 0x22, 0x2b, 0x3a, 0x23, 0x87, 0x6a, 0x84, 0x2c, 0x2d, 0xbb,
- 0x7f, 0xef, 0x82, 0xb1, 0x8b, 0x98, 0x1c, 0x29, 0xf4, 0x7c, 0x39, 0x3f, 0x0a, 0xd3, 0x37, 0x5a,
- 0xe5, 0xfe, 0x0d, 0xf3, 0x19, 0x4b, 0x12, 0x96, 0xe6, 0x32, 0xb7, 0x2c, 0x4b, 0x48, 0x16, 0xe6,
- 0x92, 0x07, 0x65, 0x09, 0x5b, 0x90, 0x74, 0x1e, 0xb3, 0xab, 0xe0, 0xa7, 0x4f, 0xb5, 0x42, 0xf7,
- 0x6f, 0x55, 0x80, 0x81, 0x5a, 0xca, 0xe4, 0xcd, 0x82, 0xa0, 0x0e, 0x54, 0x69, 0xe4, 0x56, 0x1e,
- 0x56, 0x0e, 0x6c, 0x5c, 0xa5, 0x11, 0xda, 0x03, 0x7b, 0x45, 0xd2, 0x88, 0xf1, 0x80, 0x46, 0x6e,
- 0x4d, 0xc1, 0x0d, 0x0d, 0xf8, 0x11, 0xda, 0x07, 0x58, 0x0b, 0x85, 0x6b, 0x3d, 0xdc, 0x3a, 0xb0,
- 0xb1, 0x6d, 0xa4, 0x02, 0xb9, 0x50, 0x0f, 0xa3, 0x70, 0x91, 0x11, 0xee, 0x56, 0x95, 0xa5, 0x19,
- 0xa2, 0xcf, 0xc0, 0x0d, 0x67, 0x33, 0xb2, 0xc8, 0x44, 0x70, 0xbe, 0x8c, 0x5f, 0x05, 0x6a, 0x49,
- 0xcb, 0x45, 0x14, 0x66, 0xc4, 0xdd, 0x7a, 0x58, 0x39, 0x68, 0xe0, 0xbb, 0xb9, 0xfc, 0x78, 0x19,
- 0xbf, 0x7a, 0x1e, 0xb3, 0xab, 0xa9, 0x12, 0xa2, 0x01, 0x3c, 0x30, 0x86, 0x61, 0x14, 0x05, 0x9c,
- 0x24, 0x6c, 0x45, 0x8a, 0xe6, 0xc2, 0xdd, 0x56, 0xf6, 0x7b, 0xb9, 0x5a, 0x2f, 0x8a, 0xb0, 0x52,
- 0xda, 0x38, 0x11, 0xe8, 0x04, 0x1e, 0x19, 0x2f, 0x11, 0xe5, 0x64, 0x96, 0x05, 0x31, 0xbb, 0xa0,
- 0xb3, 0x30, 0x56, 0x9e, 0x84, 0x59, 0x49, 0x5d, 0x79, 0x32, 0x13, 0x0e, 0x94, 0xe6, 0x89, 0x56,
- 0x94, 0xde, 0x84, 0x76, 0xd7, 0xfd, 0x0c, 0x9a, 0x1b, 0x02, 0x05, 0x3a, 0x80, 0x1a, 0xcd, 0x48,
- 0x22, 0xdc, 0xca, 0xc3, 0xad, 0x83, 0xe6, 0x27, 0xe8, 0x50, 0x9f, 0xc0, 0xe1, 0x46, 0x07, 0x6b,
- 0x85, 0xee, 0xdf, 0x2b, 0xd0, 0x38, 0x4d, 0xfa, 0x2c, 0x9d, 0xd3, 0x0b, 0x84, 0x60, 0x3b, 0x0d,
- 0x13, 0x92, 0x53, 0xaf, 0xbe, 0xd1, 0xc7, 0xb0, 0x9d, 0xbd, 0x59, 0x10, 0xc5, 0x5e, 0xe7, 0x93,
- 0xf7, 0x8d, 0x27, 0x63, 0x73, 0x78, 0x9a, 0x28, 0x77, 0x4a, 0x49, 0xb2, 0x4d, 0xd2, 0xf0, 0x3c,
- 0x26, 0x51, 0x4e, 0xa1, 0x19, 0xa2, 0x07, 0xd0, 0x14, 0x61, 0xb2, 0x88, 0x49, 0x30, 0xe7, 0xe4,
- 0xb5, 0x22, 0xa8, 0x8d, 0x41, 0x43, 0xcf, 0x39, 0x79, 0xdd, 0xfd, 0x1c, 0x2c, 0xed, 0x0a, 0x35,
- 0xa1, 0xde, 0x1f, 0x4d, 0x87, 0x13, 0x0f, 0x3b, 0xb7, 0x90, 0x0d, 0xb5, 0x17, 0xbd, 0xe9, 0x0b,
- 0xcf, 0xa9, 0xc8, 0xcf, 0xf1, 0xa4, 0x37, 0xf1, 0x9c, 0xaa, 0x56, 0x19, 0x4e, 0xbc, 0xdf, 0x4c,
- 0x9c, 0xad, 0xee, 0x9f, 0x2b, 0xd0, 0x3e, 0x4d, 0x5e, 0x70, 0xb6, 0x5c, 0xe4, 0xfb, 0xd8, 0x07,
- 0xb8, 0x90, 0xc3, 0xa0, 0xb0, 0x1b, 0x5b, 0x21, 0x43, 0xb9, 0xa5, 0xb5, 0x58, 0x2d, 0xa5, 0xaa,
- 0x96, 0xa2, 0xc5, 0x72, 0x25, 0xef, 0xd8, 0xc4, 0x47, 0x50, 0x4f, 0x48, 0xc6, 0xe9, 0x4c, 0x9e,
- 0xb0, 0x24, 0xd6, 0xb9, 0x49, 0x07, 0x36, 0x0a, 0xdd, 0xdf, 0x57, 0xc1, 0x36, 0xa8, 0x78, 0xeb,
- 0x4a, 0xff, 0x10, 0x5a, 0x11, 0x99, 0x87, 0xcb, 0x38, 0x2b, 0x2e, 0xa2, 0x99, 0x63, 0x6a, 0x19,
- 0x0f, 0xa0, 0xae, 0xd6, 0x64, 0x96, 0x71, 0x5c, 0xfb, 0xf7, 0xb7, 0xdf, 0xec, 0x57, 0xb0, 0x41,
- 0xd1, 0x47, 0xd0, 0x96, 0xb6, 0x01, 0x5b, 0x11, 0xce, 0x69, 0x44, 0xf4, 0xad, 0x33, 0x6a, 0x2d,
- 0x29, 0x1b, 0xe5, 0x22, 0xf4, 0x18, 0x2c, 0x65, 0x26, 0xdc, 0x9a, 0x5a, 0xf8, 0xdd, 0xcd, 0xc2,
- 0x0b, 0xc4, 0xe1, 0x5c, 0xa9, 0xb8, 0x51, 0xeb, 0x7b, 0x36, 0x8a, 0xee, 0x41, 0x23, 0x09, 0xaf,
- 0x03, 0xf1, 0x8a, 0x5c, 0xa9, 0xdb, 0xda, 0xc6, 0xf5, 0x24, 0xbc, 0x1e, 0xbf, 0x22, 0x57, 0xdd,
- 0x7f, 0x54, 0xa0, 0xe6, 0x27, 0xe1, 0x05, 0xf9, 0xce, 0x9b, 0xe5, 0x42, 0x7d, 0x45, 0xb8, 0xa0,
- 0x2c, 0x35, 0xa1, 0x99, 0x0f, 0xa5, 0xf6, 0x65, 0x28, 0x2e, 0xd5, 0xbe, 0x6d, 0xac, 0xbe, 0xd1,
- 0x87, 0xe0, 0xd0, 0x54, 0x64, 0x61, 0x1c, 0x07, 0xf2, 0xc6, 0x67, 0x34, 0xd1, 0x1b, 0xb6, 0xf1,
- 0x4e, 0x8e, 0x0f, 0x72, 0x58, 0xe6, 0x0b, 0x2a, 0x82, 0x70, 0x96, 0xd1, 0x15, 0x51, 0xf9, 0xa2,
- 0x81, 0x1b, 0x54, 0xf4, 0xd4, 0x58, 0x32, 0x4f, 0x45, 0x20, 0x33, 0x17, 0xcd, 0x32, 0x12, 0xb9,
- 0x96, 0x92, 0x37, 0xa9, 0xe8, 0x1b, 0x48, 0xee, 0x88, 0x8a, 0x60, 0x15, 0xc6, 0x34, 0xca, 0xe3,
- 0xaf, 0x4e, 0xc5, 0x99, 0x1c, 0x76, 0x1f, 0x83, 0xa5, 0x36, 0x24, 0xd0, 0x23, 0xa8, 0x51, 0xf9,
- 0x95, 0x87, 0x58, 0xdb, 0x10, 0xa4, 0xc4, 0x58, 0xcb, 0xba, 0xff, 0xaa, 0x43, 0x5b, 0x01, 0x03,
- 0x76, 0x95, 0xc6, 0x2c, 0x8c, 0xde, 0xba, 0x08, 0x86, 0x98, 0x6a, 0x81, 0x18, 0x07, 0xb6, 0x96,
- 0x3c, 0xce, 0x77, 0x2f, 0x3f, 0x25, 0x32, 0xe3, 0xb3, 0x3c, 0x6a, 0xe4, 0x27, 0x1a, 0x41, 0x27,
- 0xca, 0x7d, 0x06, 0x22, 0x93, 0x99, 0xa2, 0xa6, 0x02, 0xf4, 0xa0, 0xb4, 0x0e, 0x33, 0x6d, 0x79,
- 0x34, 0x96, 0xfa, 0xb8, 0x1d, 0x15, 0x87, 0xe8, 0x11, 0xb4, 0xd5, 0x9a, 0x03, 0x73, 0x26, 0x96,
- 0x9a, 0xbe, 0xa5, 0xc0, 0xb3, 0xfc, 0x60, 0x3e, 0x04, 0xc7, 0x58, 0x91, 0x28, 0x38, 0x7f, 0x23,
- 0x73, 0x9d, 0x3e, 0xf3, 0x9d, 0x0d, 0x7e, 0x2c, 0x61, 0xf4, 0x12, 0x2c, 0x4e, 0x42, 0xc1, 0x52,
- 0xb7, 0xa1, 0x16, 0xf6, 0xe4, 0x7f, 0x58, 0xd8, 0xf3, 0x90, 0xc6, 0x4b, 0x4e, 0xb0, 0xb2, 0xc3,
- 0xb9, 0x3d, 0xfa, 0x31, 0xec, 0x84, 0x51, 0x44, 0x33, 0xca, 0xd2, 0x30, 0x0e, 0x68, 0x3a, 0x67,
- 0xae, 0xad, 0xd6, 0xd6, 0xd9, 0xc0, 0x7e, 0x3a, 0x67, 0x3a, 0xc7, 0xac, 0x48, 0x30, 0x53, 0x37,
- 0xd4, 0x05, 0x75, 0x74, 0x20, 0xa1, 0x3c, 0x2f, 0xec, 0x81, 0x1d, 0x33, 0x99, 0x62, 0x23, 0xca,
- 0xdd, 0xa6, 0x2e, 0x24, 0x0a, 0x18, 0x50, 0x8e, 0x7c, 0x68, 0x6a, 0x02, 0x34, 0x9d, 0xad, 0xef,
- 0xa5, 0x53, 0x5d, 0xa8, 0x30, 0x23, 0x9a, 0x4e, 0x50, 0xc6, 0x9a, 0xcb, 0x3d, 0xb0, 0xe7, 0x34,
- 0x26, 0x81, 0xa0, 0x5f, 0x12, 0xb7, 0xad, 0xf8, 0x69, 0x48, 0x60, 0x4c, 0xbf, 0x24, 0xdd, 0xaf,
- 0x2b, 0x80, 0xde, 0x3e, 0x0e, 0xb4, 0x0b, 0xce, 0x60, 0xf4, 0xc5, 0xf0, 0x64, 0xd4, 0x1b, 0x04,
- 0xd3, 0xe1, 0x2f, 0x87, 0xa3, 0x2f, 0x86, 0xce, 0x2d, 0xf4, 0x1e, 0xa0, 0x35, 0x3a, 0x9e, 0xf6,
- 0xfb, 0x9e, 0x37, 0xf0, 0x06, 0x4e, 0xa5, 0x84, 0x63, 0xef, 0xd7, 0x53, 0x6f, 0x3c, 0xf1, 0x06,
- 0x4e, 0xb5, 0xe4, 0x65, 0x3c, 0xe9, 0x61, 0x89, 0x6e, 0xa1, 0x3b, 0xb0, 0xb3, 0x46, 0x9f, 0xf7,
- 0xfc, 0x13, 0x6f, 0xe0, 0x6c, 0x23, 0x17, 0x76, 0x0b, 0x13, 0x8e, 0xa7, 0xa7, 0xa7, 0x23, 0xa5,
- 0x5e, 0x2b, 0x39, 0xef, 0xf7, 0x86, 0x7d, 0xef, 0x44, 0x5a, 0x58, 0xdd, 0x3f, 0x56, 0xe0, 0xfe,
- 0x7f, 0x3f, 0x2f, 0xd4, 0x82, 0xc6, 0x70, 0x14, 0x78, 0x18, 0x8f, 0x64, 0xe2, 0xde, 0x81, 0xa6,
- 0x3f, 0x3c, 0xeb, 0x9d, 0xf8, 0x83, 0x60, 0x8a, 0x4f, 0x9c, 0x8a, 0x04, 0x06, 0xde, 0x99, 0xdf,
- 0xf7, 0x82, 0xe3, 0xe9, 0xf8, 0xb7, 0x4e, 0x55, 0x4e, 0xe3, 0x0f, 0xc7, 0xd3, 0xe7, 0xcf, 0xfd,
- 0xbe, 0xef, 0x0d, 0x27, 0xc1, 0xf8, 0xb4, 0xd7, 0xf7, 0x9c, 0x2d, 0x74, 0x1b, 0xda, 0x39, 0x01,
- 0xb9, 0xb3, 0x6d, 0xd4, 0x06, 0x7b, 0xb3, 0x90, 0x5a, 0xf7, 0x4f, 0x86, 0xc2, 0xd2, 0x11, 0x48,
- 0x43, 0xff, 0x57, 0xbd, 0x17, 0x5e, 0x81, 0x3f, 0x04, 0x1d, 0x0d, 0xf9, 0xc3, 0x5e, 0x7f, 0xe2,
- 0x9f, 0xc9, 0x3a, 0xb2, 0x0b, 0x8e, 0xc6, 0x14, 0xd2, 0x9b, 0xf8, 0xc3, 0x17, 0x4e, 0x15, 0x39,
- 0xd0, 0x2a, 0xa0, 0x9e, 0x66, 0x4d, 0x23, 0xd8, 0x3b, 0xf3, 0xb0, 0x52, 0xdb, 0xde, 0x38, 0xd4,
- 0xa0, 0x5a, 0xce, 0x2f, 0xa0, 0x53, 0xa2, 0x45, 0xa0, 0x8f, 0x4d, 0xfd, 0xad, 0x96, 0xb3, 0x6d,
- 0x49, 0xcd, 0x94, 0xe0, 0xaf, 0x6b, 0xb0, 0x7d, 0xca, 0x78, 0x86, 0xde, 0x87, 0xfa, 0x82, 0xf1,
- 0x2c, 0x48, 0x99, 0x4a, 0x10, 0x6d, 0x6c, 0xc9, 0xe1, 0x90, 0xa1, 0x5d, 0xa8, 0xc5, 0xe1, 0x39,
- 0x89, 0xf3, 0x2c, 0xa1, 0x07, 0xe8, 0xc3, 0xbc, 0x32, 0x6f, 0xa9, 0x9b, 0xba, 0xc9, 0xe8, 0x8c,
- 0x67, 0xea, 0x4f, 0xa1, 0x2e, 0xff, 0x1c, 0x9a, 0x61, 0x94, 0xd0, 0xb4, 0x94, 0x2a, 0xdc, 0xc3,
- 0xbc, 0x7f, 0xeb, 0x49, 0x91, 0xa2, 0xf0, 0x50, 0xb5, 0x0f, 0x18, 0xc2, 0x35, 0x22, 0x4d, 0xd9,
- 0x82, 0x70, 0x65, 0xb9, 0x14, 0x2a, 0x2b, 0x14, 0x4c, 0x47, 0x0b, 0xc2, 0xc7, 0x4a, 0x62, 0x4c,
- 0xd9, 0x1a, 0x91, 0x61, 0xa0, 0x1b, 0xcc, 0x20, 0x4f, 0xa4, 0x36, 0x6e, 0x68, 0xc0, 0x8f, 0x24,
- 0x45, 0x0b, 0x42, 0xb8, 0x70, 0x1b, 0x37, 0x0a, 0x92, 0x5a, 0x3e, 0x21, 0x5c, 0x7e, 0x60, 0xad,
- 0x23, 0x2b, 0x36, 0xbf, 0x0e, 0x16, 0xe1, 0xec, 0x15, 0xc9, 0x84, 0x8a, 0x7e, 0x0b, 0xdb, 0xfc,
- 0xfa, 0x54, 0x03, 0x32, 0x61, 0xf3, 0xeb, 0x3c, 0x1d, 0x81, 0x12, 0xd6, 0xf9, 0xb5, 0x4e, 0x43,
- 0x7b, 0x60, 0xf3, 0xeb, 0x80, 0x70, 0xce, 0xb8, 0x50, 0x21, 0x6f, 0xe1, 0x06, 0xbf, 0xf6, 0xd4,
- 0x58, 0xba, 0xcd, 0x36, 0x6e, 0x5b, 0xda, 0x6d, 0x56, 0x74, 0x9b, 0x19, 0xb7, 0x6d, 0xed, 0x36,
- 0xdb, 0xb8, 0xcd, 0xd6, 0x6e, 0x3b, 0xda, 0x6d, 0x66, 0xdc, 0x3e, 0x81, 0x06, 0x9b, 0x2f, 0x02,
- 0x79, 0x78, 0xee, 0xce, 0xc3, 0x8a, 0xda, 0x5d, 0xb1, 0xe9, 0x35, 0x42, 0x5c, 0x67, 0xf3, 0x85,
- 0xdc, 0xe6, 0xfd, 0x67, 0xd0, 0x30, 0x5b, 0x2e, 0xb3, 0x56, 0xb9, 0xc1, 0x5a, 0xe1, 0x8a, 0x54,
- 0x8b, 0x57, 0xa4, 0x2b, 0xa0, 0x61, 0xce, 0x5c, 0x76, 0x47, 0x9b, 0x08, 0x70, 0xa0, 0xe5, 0x4d,
- 0x5e, 0x7a, 0x78, 0xe8, 0x4d, 0x82, 0xe1, 0xd0, 0x77, 0x2a, 0x25, 0x64, 0x3a, 0xf4, 0x75, 0x3b,
- 0x75, 0x3a, 0x1a, 0x06, 0xa3, 0x93, 0x89, 0xb3, 0xb5, 0x1e, 0x0c, 0xa7, 0x3a, 0xf0, 0xce, 0x3c,
- 0xa9, 0x28, 0x65, 0xb5, 0xc2, 0x70, 0x38, 0x75, 0xac, 0xee, 0xc7, 0x50, 0x93, 0x93, 0x0a, 0xd4,
- 0x2d, 0xf7, 0x9b, 0xad, 0xe2, 0x61, 0x9a, 0x6b, 0xfe, 0x97, 0x26, 0x58, 0xba, 0xff, 0x44, 0x77,
- 0x37, 0x45, 0xd0, 0xb4, 0x2b, 0xb2, 0x16, 0xde, 0x2b, 0xb4, 0x9a, 0x6b, 0x81, 0xbe, 0xc0, 0xf7,
- 0x60, 0x9b, 0x33, 0x96, 0x95, 0x3b, 0x21, 0x05, 0xa1, 0x2e, 0xd8, 0x8b, 0x90, 0x93, 0x34, 0x93,
- 0x7c, 0x6d, 0x17, 0x4d, 0x1b, 0x1a, 0x57, 0x97, 0xad, 0x93, 0xeb, 0x18, 0xf6, 0x76, 0x25, 0x7b,
- 0xeb, 0x5e, 0x49, 0x0b, 0x4f, 0x75, 0xb4, 0xed, 0x83, 0xa5, 0xdf, 0x0f, 0xfa, 0xad, 0x61, 0x94,
- 0x72, 0x10, 0xed, 0x41, 0x2d, 0x61, 0x11, 0x89, 0x75, 0x81, 0x34, 0x52, 0x8d, 0xa1, 0x27, 0xe0,
- 0x5c, 0x86, 0x3c, 0xba, 0x0a, 0xf9, 0xa6, 0x90, 0xd6, 0x8b, 0x7a, 0x3b, 0x46, 0x6c, 0x4a, 0xea,
- 0x13, 0x70, 0xe6, 0x94, 0x27, 0x25, 0x8b, 0x46, 0xc9, 0xc2, 0x88, 0x8d, 0xc5, 0x63, 0xb0, 0x54,
- 0xad, 0xd1, 0x81, 0xd0, 0xfc, 0xa4, 0x53, 0xca, 0x2e, 0x62, 0xbd, 0x5e, 0xad, 0x24, 0xdb, 0x44,
- 0x41, 0x38, 0x0d, 0xe3, 0x20, 0x5d, 0x26, 0xe7, 0x84, 0xab, 0x08, 0x59, 0x7b, 0x6f, 0x69, 0xd9,
- 0x50, 0x89, 0x24, 0x97, 0x9b, 0x97, 0x96, 0x5b, 0xe2, 0x72, 0xfd, 0xe0, 0x7a, 0xb0, 0x79, 0x51,
- 0x35, 0x8b, 0x1a, 0xeb, 0x87, 0x15, 0x82, 0xed, 0x55, 0x1c, 0xa6, 0x2a, 0x9e, 0xda, 0x58, 0x7d,
- 0xcb, 0xd2, 0x9c, 0x84, 0x33, 0xf9, 0x5e, 0xe2, 0x44, 0xe8, 0x68, 0xb2, 0x31, 0x24, 0xe1, 0xac,
- 0xa7, 0x11, 0xf4, 0x08, 0x5a, 0x74, 0xb1, 0xfa, 0xd9, 0x5a, 0x43, 0xc6, 0x94, 0xfd, 0xf2, 0x16,
- 0x6e, 0x4a, 0xb4, 0xac, 0xf4, 0xe9, 0x5a, 0x69, 0xa7, 0xa0, 0xf4, 0xa9, 0x51, 0xfa, 0x00, 0xda,
- 0x97, 0x4c, 0x64, 0x41, 0x98, 0x46, 0x3a, 0x04, 0xef, 0x1a, 0x2d, 0x09, 0xf7, 0xd2, 0x48, 0x45,
- 0xd9, 0x3e, 0x00, 0xb9, 0xce, 0x78, 0x18, 0x84, 0xfc, 0x42, 0xb8, 0xef, 0xeb, 0x27, 0x82, 0x42,
- 0x7a, 0xfc, 0x42, 0xa0, 0x67, 0xd0, 0x5e, 0x70, 0x76, 0xfd, 0x66, 0x3d, 0xd5, 0x1d, 0x45, 0xf5,
- 0x5e, 0xf9, 0x21, 0x75, 0x78, 0x2a, 0x75, 0xf2, 0x89, 0x71, 0x6b, 0x51, 0x18, 0xdd, 0x4c, 0xb9,
- 0xce, 0xff, 0x91, 0x72, 0x9f, 0x95, 0x53, 0xee, 0xed, 0x77, 0xa7, 0x5c, 0xc3, 0x7f, 0x31, 0xf3,
- 0xee, 0xaf, 0x9b, 0xaf, 0xf7, 0x4a, 0x57, 0x38, 0xef, 0xa8, 0x7c, 0xe8, 0xcc, 0x58, 0x9a, 0xca,
- 0x47, 0x67, 0x3e, 0x07, 0x52, 0x73, 0xec, 0x99, 0x39, 0xfa, 0x5a, 0xfa, 0x5d, 0xd3, 0xb4, 0x67,
- 0x45, 0x19, 0xfa, 0x09, 0x58, 0xb3, 0xa5, 0xc8, 0x58, 0xe2, 0x3e, 0x53, 0x0c, 0xed, 0x1e, 0xea,
- 0x5f, 0x0f, 0x0e, 0xcd, 0xaf, 0x07, 0x87, 0xbd, 0xf4, 0x0d, 0xce, 0x75, 0xd0, 0xe7, 0x00, 0x8b,
- 0x24, 0xef, 0xcf, 0x84, 0xfb, 0x55, 0x45, 0x99, 0xdc, 0xbe, 0xf9, 0xb6, 0x10, 0xc7, 0xb5, 0x7f,
- 0x7e, 0xfb, 0xcd, 0xfe, 0x2d, 0x6c, 0x2f, 0xd6, 0x0f, 0xa8, 0x13, 0xd8, 0xd1, 0xdd, 0x99, 0xe9,
- 0x33, 0x85, 0xfb, 0x87, 0xca, 0x3b, 0x8a, 0xeb, 0x71, 0x53, 0xba, 0xb0, 0x74, 0x77, 0x8d, 0x3b,
- 0xb4, 0x54, 0x9f, 0xef, 0x7f, 0x55, 0x85, 0x56, 0xf1, 0xec, 0xde, 0x9d, 0x74, 0x1f, 0x40, 0x33,
- 0x17, 0x6e, 0xd2, 0x13, 0x86, 0x68, 0xf3, 0x83, 0xc5, 0x3e, 0xc0, 0xec, 0x32, 0x4c, 0x53, 0x12,
- 0x4b, 0xf3, 0x2d, 0xfd, 0xa0, 0xcc, 0x11, 0x3f, 0x42, 0x07, 0xe0, 0x18, 0xb1, 0x7e, 0x77, 0xe6,
- 0x89, 0xaa, 0x8d, 0x3b, 0x39, 0xae, 0xde, 0x60, 0x7e, 0x84, 0x8e, 0xe0, 0x8e, 0xd1, 0xcc, 0x08,
- 0x4f, 0x68, 0x1a, 0xca, 0xf6, 0x36, 0xff, 0xcd, 0x03, 0xe5, 0xa2, 0xc9, 0x46, 0x82, 0xee, 0x82,
- 0xc5, 0xd2, 0xa5, 0x74, 0x68, 0x29, 0x87, 0x35, 0x96, 0x2e, 0xfd, 0x08, 0x7d, 0x00, 0x1d, 0x09,
- 0x0b, 0x22, 0x64, 0xc6, 0x30, 0xe5, 0xb7, 0x8d, 0x5b, 0x2c, 0x5d, 0x8e, 0x35, 0xe8, 0x47, 0xc7,
- 0xb6, 0x8c, 0x64, 0xb5, 0xff, 0xee, 0x11, 0xd4, 0xf5, 0x95, 0x96, 0xf1, 0x53, 0xca, 0xe5, 0x9d,
- 0xf2, 0x95, 0x37, 0xd9, 0xfc, 0xaf, 0x5b, 0xb0, 0x3b, 0xa6, 0xc9, 0x32, 0x0e, 0x33, 0xd2, 0x8b,
- 0x43, 0x9e, 0x60, 0xf2, 0x7a, 0x49, 0x44, 0xf6, 0xd6, 0x03, 0xe7, 0x07, 0x60, 0xd3, 0x34, 0xa2,
- 0xb3, 0x30, 0x63, 0xe6, 0x27, 0x98, 0x0d, 0x20, 0xeb, 0x19, 0x4d, 0xb3, 0xb9, 0xa1, 0xcd, 0xc6,
- 0x96, 0x1c, 0xea, 0x1d, 0xa8, 0x54, 0x2d, 0x19, 0xd7, 0xcf, 0x78, 0xfd, 0xd8, 0x6b, 0x2d, 0xf2,
- 0x2a, 0xa7, 0x5e, 0xf2, 0x5d, 0x68, 0xcb, 0x7d, 0x6e, 0x8e, 0x4e, 0x33, 0xd5, 0x64, 0xe9, 0x72,
- 0x60, 0x4e, 0xef, 0x29, 0xbc, 0x47, 0x53, 0x99, 0x59, 0x49, 0x70, 0x4e, 0x33, 0x5d, 0xb3, 0x03,
- 0x2e, 0x63, 0x52, 0x52, 0x56, 0xc3, 0x77, 0x72, 0xe9, 0x31, 0xcd, 0x54, 0xfd, 0xc6, 0xba, 0x1b,
- 0xaf, 0x45, 0x9c, 0xce, 0x33, 0xc5, 0x5b, 0x0d, 0xeb, 0x81, 0x5c, 0x6d, 0x4a, 0xae, 0x02, 0xf2,
- 0x3a, 0x52, 0x29, 0xba, 0x86, 0xad, 0x94, 0x5c, 0x79, 0xaf, 0xe5, 0x53, 0xfc, 0xb6, 0xe6, 0xbb,
- 0x98, 0x67, 0xf5, 0x23, 0x65, 0x47, 0x51, 0x5e, 0xc8, 0xb1, 0x2f, 0xc1, 0x96, 0x91, 0xaa, 0x4f,
- 0x16, 0x54, 0xdc, 0x7d, 0x64, 0x38, 0xfe, 0x2e, 0x46, 0x55, 0xc0, 0x2b, 0x6d, 0xd5, 0xd0, 0x6d,
- 0x8c, 0xbb, 0x3f, 0x82, 0x76, 0x49, 0x86, 0x6c, 0xa8, 0xe1, 0x9e, 0x3f, 0xf6, 0xf4, 0xef, 0x26,
- 0xfd, 0x13, 0xaf, 0x87, 0x9d, 0xca, 0xf1, 0x18, 0xee, 0x30, 0x7e, 0xa1, 0x3a, 0x90, 0x19, 0xe3,
- 0x51, 0x3e, 0xd7, 0x71, 0xeb, 0x4c, 0xfd, 0xd7, 0x3c, 0xfd, 0xee, 0xf0, 0x82, 0x66, 0x97, 0xcb,
- 0x73, 0x99, 0x00, 0x8e, 0x8c, 0xe6, 0x91, 0xd6, 0x7c, 0x9c, 0xff, 0x6e, 0xb7, 0x7a, 0x7a, 0x74,
- 0xc1, 0x72, 0xec, 0xdc, 0x52, 0xe0, 0xd3, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0xc5, 0x1d, 0x9a,
- 0xe9, 0x51, 0x14, 0x00, 0x00,
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x58, 0xcd, 0x72, 0xdb, 0xb8,
+ 0x1d, 0x8f, 0x64, 0x8b, 0x12, 0xff, 0xfa, 0x30, 0x83, 0x38, 0x09, 0x63, 0xd7, 0xe3, 0x54, 0xd9,
+ 0x4e, 0x9d, 0xa4, 0xb1, 0xd3, 0x64, 0x67, 0x77, 0x7b, 0xe8, 0x4c, 0x64, 0x89, 0x4e, 0x38, 0x75,
+ 0x25, 0x17, 0x92, 0xbc, 0x6d, 0x2f, 0x1c, 0x5a, 0x84, 0x6c, 0x4e, 0x48, 0x42, 0x01, 0x28, 0xd9,
+ 0xde, 0x5b, 0x67, 0xa7, 0x3d, 0xf5, 0xd6, 0x5b, 0x9f, 0xa0, 0x6f, 0xb0, 0xc7, 0xf6, 0x05, 0x76,
+ 0xfa, 0x0e, 0xed, 0xa5, 0x4f, 0xb0, 0xe7, 0x0e, 0x00, 0x42, 0x22, 0x9d, 0x34, 0xdb, 0xbd, 0xd8,
+ 0xc4, 0xef, 0xff, 0x01, 0xe0, 0x07, 0xfc, 0x3f, 0x20, 0xd8, 0x5a, 0xd0, 0x28, 0xbd, 0xf0, 0xbd,
+ 0x19, 0xa3, 0x29, 0xe5, 0x07, 0x01, 0x59, 0x84, 0x13, 0xb2, 0x2f, 0x47, 0xc8, 0x50, 0xb2, 0xad,
+ 0x07, 0xe7, 0x94, 0x9e, 0x47, 0xe4, 0x40, 0xa2, 0x67, 0xf3, 0xe9, 0x81, 0x9f, 0x5c, 0x2b, 0x95,
+ 0xad, 0x1b, 0xe6, 0x13, 0x1a, 0xc7, 0x34, 0xc9, 0x64, 0x76, 0x51, 0x16, 0x93, 0xd4, 0xcf, 0x24,
+ 0xbb, 0x45, 0x09, 0x9d, 0x91, 0x64, 0x1a, 0xd1, 0x4b, 0xef, 0xe7, 0x2f, 0x95, 0x42, 0xfb, 0xef,
+ 0x65, 0x80, 0x9e, 0x5c, 0xca, 0xe8, 0x7a, 0x46, 0x50, 0x0b, 0xca, 0x61, 0x60, 0x97, 0x1e, 0x96,
+ 0xf6, 0x4c, 0x5c, 0x0e, 0x03, 0xb4, 0x0d, 0xe6, 0x82, 0x24, 0x01, 0x65, 0x5e, 0x18, 0xd8, 0x15,
+ 0x09, 0xd7, 0x14, 0xe0, 0x06, 0x68, 0x07, 0x60, 0x29, 0xe4, 0xb6, 0xf1, 0x70, 0x6d, 0xcf, 0xc4,
+ 0xa6, 0x96, 0x72, 0x64, 0x43, 0xd5, 0x0f, 0xfc, 0x59, 0x4a, 0x98, 0x5d, 0x96, 0x96, 0x7a, 0x88,
+ 0x3e, 0x07, 0xdb, 0x9f, 0x4c, 0xc8, 0x2c, 0xe5, 0xde, 0xd9, 0x3c, 0x7a, 0xeb, 0xc9, 0x25, 0xcd,
+ 0x67, 0x81, 0x9f, 0x12, 0x7b, 0xed, 0x61, 0x69, 0xaf, 0x86, 0xef, 0x66, 0xf2, 0xc3, 0x79, 0xf4,
+ 0xf6, 0x28, 0xa2, 0x97, 0x63, 0x29, 0x44, 0x3d, 0xd8, 0xd5, 0x86, 0x7e, 0x10, 0x78, 0x8c, 0xc4,
+ 0x74, 0x41, 0xf2, 0xe6, 0xdc, 0x5e, 0x97, 0xf6, 0xdb, 0x99, 0x5a, 0x27, 0x08, 0xb0, 0x54, 0x5a,
+ 0x39, 0xe1, 0xe8, 0x18, 0x1e, 0x69, 0x2f, 0x41, 0xc8, 0xc8, 0x24, 0xf5, 0x22, 0x7a, 0x1e, 0x4e,
+ 0xfc, 0x48, 0x7a, 0xe2, 0x7a, 0x25, 0x55, 0xe9, 0x49, 0x4f, 0xd8, 0x93, 0x9a, 0xc7, 0x4a, 0x51,
+ 0x78, 0xe3, 0xca, 0x5d, 0xfb, 0x73, 0xa8, 0xaf, 0x08, 0xe4, 0x68, 0x0f, 0x2a, 0x61, 0x4a, 0x62,
+ 0x6e, 0x97, 0x1e, 0xae, 0xed, 0xd5, 0x5f, 0xa0, 0x7d, 0x75, 0x02, 0xfb, 0x2b, 0x1d, 0xac, 0x14,
+ 0xda, 0xff, 0x28, 0x41, 0xed, 0x24, 0xee, 0xd2, 0x64, 0x1a, 0x9e, 0x23, 0x04, 0xeb, 0x89, 0x1f,
+ 0x93, 0x8c, 0x7a, 0xf9, 0x8d, 0x9e, 0xc2, 0x7a, 0x7a, 0x3d, 0x23, 0x92, 0xbd, 0xd6, 0x8b, 0xfb,
+ 0xda, 0x93, 0xb6, 0xd9, 0x3f, 0x89, 0xa5, 0x3b, 0xa9, 0x24, 0xd8, 0x26, 0x89, 0x7f, 0x16, 0x91,
+ 0x20, 0xa3, 0x50, 0x0f, 0xd1, 0x2e, 0xd4, 0xb9, 0x1f, 0xcf, 0x22, 0xe2, 0x4d, 0x19, 0x79, 0x27,
+ 0x09, 0x6a, 0x62, 0x50, 0xd0, 0x11, 0x23, 0xef, 0xda, 0x5f, 0x80, 0xa1, 0x5c, 0xa1, 0x3a, 0x54,
+ 0xbb, 0x83, 0x71, 0x7f, 0xe4, 0x60, 0xeb, 0x16, 0x32, 0xa1, 0xf2, 0xba, 0x33, 0x7e, 0xed, 0x58,
+ 0x25, 0xf1, 0x39, 0x1c, 0x75, 0x46, 0x8e, 0x55, 0x56, 0x2a, 0xfd, 0x91, 0xf3, 0xdb, 0x91, 0xb5,
+ 0xd6, 0xfe, 0x4b, 0x09, 0x9a, 0x27, 0xf1, 0x6b, 0x46, 0xe7, 0xb3, 0x6c, 0x1f, 0x3b, 0x00, 0xe7,
+ 0x62, 0xe8, 0xe5, 0x76, 0x63, 0x4a, 0xa4, 0x2f, 0xb6, 0xb4, 0x14, 0xcb, 0xa5, 0x94, 0xe5, 0x52,
+ 0x94, 0x58, 0xac, 0xe4, 0x23, 0x9b, 0x78, 0x02, 0xd5, 0x98, 0xa4, 0x2c, 0x9c, 0x88, 0x13, 0x16,
+ 0xc4, 0x5a, 0x37, 0xe9, 0xc0, 0x5a, 0xa1, 0xfd, 0x87, 0x32, 0x98, 0x1a, 0xe5, 0xef, 0x5d, 0xe9,
+ 0x1f, 0x43, 0x23, 0x20, 0x53, 0x7f, 0x1e, 0xa5, 0xf9, 0x45, 0xd4, 0x33, 0x4c, 0x2e, 0x63, 0x17,
+ 0xaa, 0x72, 0x4d, 0x7a, 0x19, 0x87, 0x95, 0xff, 0x7c, 0xf7, 0xed, 0x4e, 0x09, 0x6b, 0x14, 0x3d,
+ 0x81, 0xa6, 0xb0, 0xf5, 0xe8, 0x82, 0x30, 0x16, 0x06, 0x44, 0xdd, 0x3a, 0xad, 0xd6, 0x10, 0xb2,
+ 0x41, 0x26, 0x42, 0xcf, 0xc0, 0x90, 0x66, 0xdc, 0xae, 0xc8, 0x85, 0xdf, 0x5d, 0x2d, 0x3c, 0x47,
+ 0x1c, 0xce, 0x94, 0xf2, 0x1b, 0x35, 0xbe, 0x67, 0xa3, 0xe8, 0x01, 0xd4, 0x62, 0xff, 0xca, 0xe3,
+ 0x6f, 0xc9, 0xa5, 0xbc, 0xad, 0x4d, 0x5c, 0x8d, 0xfd, 0xab, 0xe1, 0x5b, 0x72, 0xd9, 0xfe, 0x67,
+ 0x09, 0x2a, 0x6e, 0xec, 0x9f, 0x93, 0x0f, 0xde, 0x2c, 0x1b, 0xaa, 0x0b, 0xc2, 0x78, 0x48, 0x13,
+ 0x1d, 0x9a, 0xd9, 0x50, 0x68, 0x5f, 0xf8, 0xfc, 0x42, 0xee, 0xdb, 0xc4, 0xf2, 0x1b, 0x3d, 0x06,
+ 0x2b, 0x4c, 0x78, 0xea, 0x47, 0x91, 0x27, 0x6e, 0x7c, 0x1a, 0xc6, 0x6a, 0xc3, 0x26, 0xde, 0xc8,
+ 0xf0, 0x5e, 0x06, 0x8b, 0x7c, 0x11, 0x72, 0xcf, 0x9f, 0xa4, 0xe1, 0x82, 0xc8, 0x7c, 0x51, 0xc3,
+ 0xb5, 0x90, 0x77, 0xe4, 0x58, 0x30, 0x1f, 0x72, 0x4f, 0x64, 0xae, 0x30, 0x4d, 0x49, 0x60, 0x1b,
+ 0x52, 0x5e, 0x0f, 0x79, 0x57, 0x43, 0x62, 0x47, 0x21, 0xf7, 0x16, 0x7e, 0x14, 0x06, 0x59, 0xfc,
+ 0x55, 0x43, 0x7e, 0x2a, 0x86, 0xed, 0x67, 0x60, 0xc8, 0x0d, 0x71, 0xf4, 0x08, 0x2a, 0xa1, 0xf8,
+ 0xca, 0x42, 0xac, 0xa9, 0x09, 0x92, 0x62, 0xac, 0x64, 0xed, 0x7f, 0x57, 0xa1, 0x29, 0x81, 0x1e,
+ 0xbd, 0x4c, 0x22, 0xea, 0x07, 0xef, 0x5d, 0x04, 0x4d, 0x4c, 0x39, 0x47, 0x8c, 0x05, 0x6b, 0x73,
+ 0x16, 0x65, 0xbb, 0x17, 0x9f, 0x02, 0x99, 0xb0, 0x49, 0x16, 0x35, 0xe2, 0x13, 0x0d, 0xa0, 0x15,
+ 0x64, 0x3e, 0x3d, 0x9e, 0x8a, 0x4c, 0x51, 0x91, 0x01, 0xba, 0x57, 0x58, 0x87, 0x9e, 0xb6, 0x38,
+ 0x1a, 0x0a, 0x7d, 0xdc, 0x0c, 0xf2, 0x43, 0xf4, 0x08, 0x9a, 0x72, 0xcd, 0x9e, 0x3e, 0x13, 0x43,
+ 0x4e, 0xdf, 0x90, 0xe0, 0x69, 0x76, 0x30, 0x8f, 0xc1, 0xd2, 0x56, 0x24, 0xf0, 0xce, 0xae, 0x45,
+ 0xae, 0x53, 0x67, 0xbe, 0xb1, 0xc2, 0x0f, 0x05, 0x8c, 0xde, 0x80, 0xc1, 0x88, 0xcf, 0x69, 0x62,
+ 0xd7, 0xe4, 0xc2, 0x9e, 0xff, 0x1f, 0x0b, 0x3b, 0xf2, 0xc3, 0x68, 0xce, 0x08, 0x96, 0x76, 0x38,
+ 0xb3, 0x47, 0x3f, 0x85, 0x0d, 0x3f, 0x08, 0xc2, 0x34, 0xa4, 0x89, 0x1f, 0x79, 0x61, 0x32, 0xa5,
+ 0xb6, 0x29, 0xd7, 0xd6, 0x5a, 0xc1, 0x6e, 0x32, 0xa5, 0x2a, 0xc7, 0x2c, 0x88, 0x37, 0x91, 0x37,
+ 0xd4, 0x06, 0x79, 0x74, 0x20, 0xa0, 0x2c, 0x2f, 0x6c, 0x83, 0x19, 0x51, 0x91, 0x62, 0x83, 0x90,
+ 0xd9, 0x75, 0x55, 0x48, 0x24, 0xd0, 0x0b, 0x19, 0x72, 0xa1, 0xae, 0x08, 0x50, 0x74, 0x36, 0xbe,
+ 0x97, 0x4e, 0x79, 0xa1, 0xfc, 0x94, 0x28, 0x3a, 0x41, 0x1a, 0x2b, 0x2e, 0xb7, 0xc1, 0x9c, 0x86,
+ 0x11, 0xf1, 0x78, 0xf8, 0x15, 0xb1, 0x9b, 0x92, 0x9f, 0x9a, 0x00, 0x86, 0xe1, 0x57, 0xa4, 0xfd,
+ 0x4d, 0x09, 0xd0, 0xfb, 0xc7, 0x81, 0x36, 0xc1, 0xea, 0x0d, 0xbe, 0xec, 0x1f, 0x0f, 0x3a, 0x3d,
+ 0x6f, 0xdc, 0xff, 0x55, 0x7f, 0xf0, 0x65, 0xdf, 0xba, 0x85, 0xee, 0x01, 0x5a, 0xa2, 0xc3, 0x71,
+ 0xb7, 0xeb, 0x38, 0x3d, 0xa7, 0x67, 0x95, 0x0a, 0x38, 0x76, 0x7e, 0x33, 0x76, 0x86, 0x23, 0xa7,
+ 0x67, 0x95, 0x0b, 0x5e, 0x86, 0xa3, 0x0e, 0x16, 0xe8, 0x1a, 0xba, 0x03, 0x1b, 0x4b, 0xf4, 0xa8,
+ 0xe3, 0x1e, 0x3b, 0x3d, 0x6b, 0x1d, 0xd9, 0xb0, 0x99, 0x9b, 0x70, 0x38, 0x3e, 0x39, 0x19, 0x48,
+ 0xf5, 0x4a, 0xc1, 0x79, 0xb7, 0xd3, 0xef, 0x3a, 0xc7, 0xc2, 0xc2, 0x68, 0xff, 0xa9, 0x04, 0x5b,
+ 0xff, 0xfb, 0xbc, 0x50, 0x03, 0x6a, 0xfd, 0x81, 0xe7, 0x60, 0x3c, 0x10, 0x89, 0x7b, 0x03, 0xea,
+ 0x6e, 0xff, 0xb4, 0x73, 0xec, 0xf6, 0xbc, 0x31, 0x3e, 0xb6, 0x4a, 0x02, 0xe8, 0x39, 0xa7, 0x6e,
+ 0xd7, 0xf1, 0x0e, 0xc7, 0xc3, 0xdf, 0x59, 0x65, 0x31, 0x8d, 0xdb, 0x1f, 0x8e, 0x8f, 0x8e, 0xdc,
+ 0xae, 0xeb, 0xf4, 0x47, 0xde, 0xf0, 0xa4, 0xd3, 0x75, 0xac, 0x35, 0x74, 0x1b, 0x9a, 0x19, 0x01,
+ 0x99, 0xb3, 0x75, 0xd4, 0x04, 0x73, 0xb5, 0x90, 0x4a, 0xfb, 0xcf, 0x9a, 0xc2, 0xc2, 0x11, 0x08,
+ 0x43, 0xf7, 0xd7, 0x9d, 0xd7, 0x4e, 0x8e, 0x3f, 0x04, 0x2d, 0x05, 0xb9, 0xfd, 0x4e, 0x77, 0xe4,
+ 0x9e, 0x8a, 0x3a, 0xb2, 0x09, 0x96, 0xc2, 0x24, 0xd2, 0x19, 0xb9, 0xfd, 0xd7, 0x56, 0x19, 0x59,
+ 0xd0, 0xc8, 0xa1, 0x8e, 0x62, 0x4d, 0x21, 0xd8, 0x39, 0x75, 0xb0, 0x54, 0x5b, 0x5f, 0x39, 0x54,
+ 0xa0, 0x5c, 0xce, 0x2f, 0xa1, 0x55, 0xa0, 0x85, 0xa3, 0xa7, 0xba, 0xfe, 0x96, 0x8b, 0xd9, 0xb6,
+ 0xa0, 0xa6, 0x4b, 0xf0, 0x37, 0x15, 0x58, 0x3f, 0xa1, 0x2c, 0x45, 0xf7, 0xa1, 0x3a, 0xa3, 0x2c,
+ 0xf5, 0x12, 0x2a, 0x13, 0x44, 0x13, 0x1b, 0x62, 0xd8, 0xa7, 0x68, 0x13, 0x2a, 0x91, 0x7f, 0x46,
+ 0xa2, 0x2c, 0x4b, 0xa8, 0x01, 0x7a, 0x9c, 0x55, 0xe6, 0x35, 0x79, 0x53, 0x57, 0x19, 0x9d, 0xb2,
+ 0x54, 0xfe, 0xc9, 0xd5, 0xe5, 0x5f, 0x40, 0xdd, 0x0f, 0xe2, 0x30, 0x29, 0xa4, 0x0a, 0x7b, 0x3f,
+ 0xeb, 0xdf, 0x3a, 0x42, 0x24, 0x29, 0xdc, 0x97, 0xed, 0x03, 0x06, 0x7f, 0x89, 0x08, 0x53, 0x3a,
+ 0x23, 0x4c, 0x5a, 0xce, 0xb9, 0xcc, 0x0a, 0x39, 0xd3, 0xc1, 0x8c, 0xb0, 0xa1, 0x94, 0x68, 0x53,
+ 0xba, 0x44, 0x44, 0x18, 0xa8, 0x06, 0xd3, 0xcb, 0x12, 0xa9, 0x89, 0x6b, 0x0a, 0x70, 0x03, 0x41,
+ 0xd1, 0x8c, 0x10, 0xc6, 0xed, 0xda, 0x8d, 0x82, 0x24, 0x97, 0x4f, 0x08, 0x13, 0x1f, 0x58, 0xe9,
+ 0x88, 0x8a, 0xcd, 0xae, 0xbc, 0x99, 0x3f, 0x79, 0x4b, 0x52, 0x2e, 0xa3, 0xdf, 0xc0, 0x26, 0xbb,
+ 0x3a, 0x51, 0x80, 0x48, 0xd8, 0xec, 0x2a, 0x4b, 0x47, 0x20, 0x85, 0x55, 0x76, 0xa5, 0xd2, 0xd0,
+ 0x36, 0x98, 0xec, 0xca, 0x23, 0x8c, 0x51, 0xc6, 0x65, 0xc8, 0x1b, 0xb8, 0xc6, 0xae, 0x1c, 0x39,
+ 0x16, 0x6e, 0xd3, 0x95, 0xdb, 0x86, 0x72, 0x9b, 0xe6, 0xdd, 0xa6, 0xda, 0x6d, 0x53, 0xb9, 0x4d,
+ 0x57, 0x6e, 0xd3, 0xa5, 0xdb, 0x96, 0x72, 0x9b, 0x6a, 0xb7, 0xcf, 0xa1, 0x46, 0xa7, 0x33, 0x4f,
+ 0x1c, 0x9e, 0xbd, 0xf1, 0xb0, 0x24, 0x77, 0x97, 0x6f, 0x7a, 0xb5, 0x10, 0x57, 0xe9, 0x74, 0x26,
+ 0xb6, 0xb9, 0xf5, 0x0a, 0x6a, 0x7a, 0xcb, 0x45, 0xd6, 0x4a, 0x37, 0x58, 0xcb, 0x5d, 0x91, 0x72,
+ 0xfe, 0x8a, 0xb4, 0x39, 0xd4, 0xf4, 0x99, 0x8b, 0xee, 0x68, 0x15, 0x01, 0x16, 0x34, 0x9c, 0xd1,
+ 0x1b, 0x07, 0xf7, 0x9d, 0x91, 0xd7, 0xef, 0xbb, 0x56, 0xa9, 0x80, 0x8c, 0xfb, 0xae, 0x6a, 0xa7,
+ 0x4e, 0x06, 0x7d, 0x6f, 0x70, 0x3c, 0xb2, 0xd6, 0x96, 0x83, 0xfe, 0x58, 0x05, 0xde, 0xa9, 0x23,
+ 0x14, 0x85, 0xac, 0x92, 0x1b, 0xf6, 0xc7, 0x96, 0xd1, 0x7e, 0x0a, 0x15, 0x31, 0x29, 0x47, 0xed,
+ 0x62, 0xbf, 0xd9, 0xc8, 0x1f, 0xa6, 0xbe, 0xe6, 0x7f, 0xad, 0x83, 0xa1, 0xfa, 0x4f, 0x74, 0x77,
+ 0x55, 0x04, 0x75, 0xbb, 0x22, 0x6a, 0xe1, 0x83, 0x5c, 0xab, 0xb9, 0x14, 0xa8, 0x0b, 0xfc, 0x00,
+ 0xd6, 0x19, 0xa5, 0x69, 0xb1, 0x13, 0x92, 0x10, 0x6a, 0x83, 0x39, 0xf3, 0x19, 0x49, 0x52, 0xc1,
+ 0xd7, 0x7a, 0xde, 0xb4, 0xa6, 0x70, 0x79, 0xd9, 0x5a, 0x99, 0x8e, 0x66, 0x6f, 0x53, 0xb0, 0xb7,
+ 0xec, 0x95, 0x94, 0xf0, 0x44, 0x45, 0xdb, 0x0e, 0x18, 0xea, 0xfd, 0xa0, 0xde, 0x1a, 0x5a, 0x29,
+ 0x03, 0xd1, 0x36, 0x54, 0x62, 0x1a, 0x90, 0x48, 0x15, 0x48, 0x2d, 0x55, 0x18, 0x7a, 0x0e, 0xd6,
+ 0x85, 0xcf, 0x82, 0x4b, 0x9f, 0xad, 0x0a, 0x69, 0x35, 0xaf, 0xb7, 0xa1, 0xc5, 0xba, 0xa4, 0x3e,
+ 0x07, 0x6b, 0x1a, 0xb2, 0xb8, 0x60, 0x51, 0x2b, 0x58, 0x68, 0xb1, 0xb6, 0x78, 0x06, 0x86, 0xac,
+ 0x35, 0x2a, 0x10, 0xea, 0x2f, 0x5a, 0x85, 0xec, 0xc2, 0x97, 0xeb, 0x55, 0x4a, 0xa2, 0x4d, 0xe4,
+ 0x84, 0x85, 0x7e, 0xe4, 0x25, 0xf3, 0xf8, 0x8c, 0x30, 0x19, 0x21, 0x4b, 0xef, 0x0d, 0x25, 0xeb,
+ 0x4b, 0x91, 0xe0, 0x72, 0xf5, 0xd2, 0xb2, 0x0b, 0x5c, 0x2e, 0x1f, 0x5c, 0xbb, 0xab, 0x17, 0x55,
+ 0x3d, 0xaf, 0xb1, 0x7c, 0x58, 0x21, 0x58, 0x5f, 0x44, 0x7e, 0x22, 0xe3, 0xa9, 0x89, 0xe5, 0xb7,
+ 0x28, 0xcd, 0xb1, 0x3f, 0x11, 0xef, 0x25, 0x46, 0xb8, 0x8a, 0x26, 0x13, 0x43, 0xec, 0x4f, 0x3a,
+ 0x0a, 0x41, 0x8f, 0xa0, 0x11, 0xce, 0x16, 0x9f, 0x2e, 0x35, 0x44, 0x4c, 0x99, 0x6f, 0x6e, 0xe1,
+ 0xba, 0x40, 0x8b, 0x4a, 0x9f, 0x2d, 0x95, 0x36, 0x72, 0x4a, 0x9f, 0x69, 0xa5, 0x4f, 0xa0, 0x79,
+ 0x41, 0x79, 0xea, 0xf9, 0x49, 0xa0, 0x42, 0xf0, 0xae, 0xd6, 0x12, 0x70, 0x27, 0x09, 0x64, 0x94,
+ 0xed, 0x00, 0x90, 0xab, 0x94, 0xf9, 0x9e, 0xcf, 0xce, 0xb9, 0x7d, 0x5f, 0x3d, 0x11, 0x24, 0xd2,
+ 0x61, 0xe7, 0x1c, 0xbd, 0x82, 0xe6, 0x8c, 0xd1, 0xab, 0xeb, 0xe5, 0x54, 0x77, 0x24, 0xd5, 0xdb,
+ 0xc5, 0x87, 0xd4, 0xfe, 0x89, 0xd0, 0xc9, 0x26, 0xc6, 0x8d, 0x59, 0x6e, 0x74, 0x33, 0xe5, 0x5a,
+ 0x3f, 0x20, 0xe5, 0xbe, 0x2a, 0xa6, 0xdc, 0xdb, 0x1f, 0x4f, 0xb9, 0x9a, 0xff, 0x7c, 0xe6, 0xdd,
+ 0x59, 0x36, 0x5f, 0xf7, 0x0a, 0x57, 0x38, 0xeb, 0xa8, 0x5c, 0x68, 0x4d, 0x68, 0x92, 0x88, 0x47,
+ 0x67, 0x36, 0x07, 0x92, 0x73, 0x6c, 0xeb, 0x39, 0xba, 0x4a, 0xfa, 0xa1, 0x69, 0x9a, 0x93, 0xbc,
+ 0x0c, 0xfd, 0x0c, 0x8c, 0xc9, 0x9c, 0xa7, 0x34, 0xb6, 0x5f, 0x49, 0x86, 0x36, 0xf7, 0xd5, 0xaf,
+ 0x07, 0xfb, 0xfa, 0xd7, 0x83, 0xfd, 0x4e, 0x72, 0x8d, 0x33, 0x1d, 0xf4, 0x05, 0xc0, 0x2c, 0xce,
+ 0xfa, 0x33, 0x6e, 0x7f, 0x5d, 0x92, 0x26, 0xb7, 0x6f, 0xbe, 0x2d, 0xf8, 0x61, 0xe5, 0x5f, 0xdf,
+ 0x7d, 0xbb, 0x73, 0x0b, 0x9b, 0xb3, 0xe5, 0x03, 0xea, 0x18, 0x36, 0x54, 0x77, 0xa6, 0xfb, 0x4c,
+ 0x6e, 0xff, 0xb1, 0xf4, 0x91, 0xe2, 0x7a, 0x58, 0x17, 0x2e, 0x0c, 0xd5, 0x5d, 0xe3, 0x56, 0x58,
+ 0xa8, 0xcf, 0x5b, 0x5f, 0x97, 0xa1, 0x91, 0x3f, 0xbb, 0x8f, 0x27, 0xdd, 0x5d, 0xa8, 0x67, 0xc2,
+ 0x55, 0x7a, 0xc2, 0x10, 0xac, 0x7e, 0xb0, 0xd8, 0x01, 0x98, 0x5c, 0xf8, 0x49, 0x42, 0x22, 0x61,
+ 0xbe, 0xa6, 0x1e, 0x94, 0x19, 0xe2, 0x06, 0x68, 0x0f, 0x2c, 0x2d, 0x56, 0xef, 0xce, 0x2c, 0x51,
+ 0x35, 0x71, 0x2b, 0xc3, 0xe5, 0x1b, 0xcc, 0x0d, 0xd0, 0x01, 0xdc, 0xd1, 0x9a, 0x29, 0x61, 0x71,
+ 0x98, 0xf8, 0xa2, 0xbd, 0xcd, 0x7e, 0xf3, 0x40, 0x99, 0x68, 0xb4, 0x92, 0xa0, 0xbb, 0x60, 0xd0,
+ 0x64, 0x2e, 0x1c, 0x1a, 0xd2, 0x61, 0x85, 0x26, 0x73, 0x37, 0x40, 0x9f, 0x40, 0x4b, 0xc0, 0x9c,
+ 0x70, 0x91, 0x31, 0x74, 0xf9, 0x6d, 0xe2, 0x06, 0x4d, 0xe6, 0x43, 0x05, 0xba, 0xc1, 0xa1, 0x29,
+ 0x22, 0x59, 0xee, 0xbf, 0x7d, 0x00, 0x55, 0x75, 0xa5, 0x45, 0xfc, 0x14, 0x72, 0x79, 0xab, 0x78,
+ 0xe5, 0x75, 0x36, 0xff, 0xdb, 0x1a, 0x6c, 0x0e, 0xc3, 0x78, 0x1e, 0xf9, 0x29, 0xe9, 0x44, 0x3e,
+ 0x8b, 0x31, 0x79, 0x37, 0x27, 0x3c, 0x7d, 0xef, 0x81, 0xf3, 0x23, 0x30, 0xc3, 0x24, 0x08, 0x27,
+ 0x7e, 0x4a, 0xf5, 0x4f, 0x30, 0x2b, 0x40, 0xd4, 0xb3, 0x30, 0x49, 0xa7, 0x9a, 0x36, 0x13, 0x1b,
+ 0x62, 0xa8, 0x76, 0x20, 0x53, 0xb5, 0x60, 0x5c, 0x3d, 0xe3, 0xd5, 0x63, 0xaf, 0x31, 0xcb, 0xaa,
+ 0x9c, 0x7c, 0xc9, 0xb7, 0xa1, 0x29, 0xf6, 0xb9, 0x3a, 0x3a, 0xc5, 0x54, 0x9d, 0x26, 0xf3, 0x9e,
+ 0x3e, 0xbd, 0x97, 0x70, 0x2f, 0x4c, 0x44, 0x66, 0x25, 0xde, 0x59, 0x98, 0xaa, 0x9a, 0xed, 0x31,
+ 0x11, 0x93, 0x82, 0xb2, 0x0a, 0xbe, 0x93, 0x49, 0x0f, 0xc3, 0x54, 0xd6, 0x6f, 0xac, 0xba, 0xf1,
+ 0x4a, 0xc0, 0xc2, 0x69, 0x2a, 0x79, 0xab, 0x60, 0x35, 0x10, 0xab, 0x4d, 0xc8, 0xa5, 0x47, 0xde,
+ 0x05, 0x32, 0x45, 0x57, 0xb0, 0x91, 0x90, 0x4b, 0xe7, 0x9d, 0x78, 0x8a, 0xdf, 0x56, 0x7c, 0xe7,
+ 0xf3, 0xac, 0x7a, 0xa4, 0x6c, 0x48, 0xca, 0x73, 0x39, 0xf6, 0x0d, 0x98, 0x22, 0x52, 0xd5, 0xc9,
+ 0x82, 0x8c, 0xbb, 0x27, 0x9a, 0xe3, 0x0f, 0x31, 0x2a, 0x03, 0x5e, 0x6a, 0xcb, 0x86, 0x6e, 0x65,
+ 0xdc, 0xfe, 0x09, 0x34, 0x0b, 0x32, 0x64, 0x42, 0x05, 0x77, 0xdc, 0xa1, 0xa3, 0x7e, 0x37, 0xe9,
+ 0x1e, 0x3b, 0x1d, 0x6c, 0x95, 0x0e, 0x87, 0x70, 0x87, 0xb2, 0x73, 0xd9, 0x81, 0x4c, 0x28, 0x0b,
+ 0xb2, 0xb9, 0x0e, 0x1b, 0xa7, 0xf2, 0xbf, 0xe2, 0xe9, 0xf7, 0xfb, 0xe7, 0x61, 0x7a, 0x31, 0x3f,
+ 0x13, 0x09, 0xe0, 0x40, 0x6b, 0x1e, 0x28, 0xcd, 0x67, 0xd9, 0xef, 0x76, 0x8b, 0x4f, 0x0f, 0xce,
+ 0x69, 0x86, 0x9d, 0x19, 0x12, 0x7c, 0xf9, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x8e, 0x96, 0xa4,
+ 0xa3, 0x51, 0x14, 0x00, 0x00,
}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/events.pb.go b/vendor/github.com/opencord/voltha-protos/v4/go/voltha/events.pb.go
similarity index 93%
rename from vendor/github.com/opencord/voltha-protos/v3/go/voltha/events.pb.go
rename to vendor/github.com/opencord/voltha-protos/v4/go/voltha/events.pb.go
index 30a817f..07ea547 100644
--- a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/events.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v4/go/voltha/events.pb.go
@@ -7,7 +7,7 @@
fmt "fmt"
proto "github.com/golang/protobuf/proto"
timestamp "github.com/golang/protobuf/ptypes/timestamp"
- _ "github.com/opencord/voltha-protos/v3/go/common"
+ _ "github.com/opencord/voltha-protos/v4/go/common"
_ "google.golang.org/genproto/googleapis/api/annotations"
math "math"
)
@@ -1027,7 +1027,7 @@
// 1135 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xdd, 0x6e, 0xe3, 0x44,
0x14, 0x8e, 0x9d, 0x34, 0x3f, 0xc7, 0x69, 0xeb, 0xce, 0x22, 0x08, 0x59, 0xd8, 0x2d, 0x46, 0xa0,
- 0x6a, 0x57, 0x38, 0xc2, 0x8b, 0xb4, 0x55, 0x57, 0x08, 0x76, 0x53, 0xb3, 0x35, 0x4b, 0x93, 0xe0,
+ 0x6a, 0x57, 0x38, 0xc2, 0xac, 0xb4, 0x55, 0x57, 0x08, 0x76, 0x53, 0xb3, 0x35, 0x4b, 0x93, 0xe0,
0xa6, 0x45, 0x70, 0x13, 0x4d, 0xe3, 0x69, 0x62, 0x35, 0xc9, 0x58, 0x9e, 0x49, 0xb4, 0x7d, 0x00,
0xae, 0x79, 0x00, 0x1e, 0x81, 0xe7, 0xe0, 0x31, 0x10, 0x2f, 0xc1, 0x03, 0xa0, 0xf9, 0x71, 0x62,
0x97, 0xae, 0xf6, 0x62, 0xc5, 0x95, 0x67, 0xce, 0x9c, 0x6f, 0xe6, 0x3b, 0x67, 0xce, 0x77, 0xc6,
@@ -1073,27 +1073,27 @@
0x0d, 0xb4, 0x0d, 0x0d, 0xff, 0xc7, 0xf3, 0x60, 0x20, 0xa7, 0x26, 0xb2, 0xa0, 0x76, 0xe6, 0x87,
0x17, 0x41, 0xd7, 0xb7, 0xcb, 0x68, 0x07, 0x60, 0x10, 0xf6, 0xbb, 0xfe, 0xd9, 0x59, 0xd0, 0x7b,
0x69, 0x57, 0x50, 0x13, 0xea, 0x67, 0x7e, 0xf7, 0x3c, 0x0c, 0x86, 0x3f, 0xdb, 0x5b, 0xce, 0x09,
- 0xd8, 0xf2, 0xdc, 0xb3, 0xe5, 0xe5, 0xfa, 0xe8, 0xaf, 0x72, 0x4f, 0xc6, 0x40, 0x1e, 0x58, 0x83,
- 0x72, 0xff, 0x07, 0x71, 0x90, 0x18, 0xc8, 0x23, 0xe4, 0xe0, 0xdc, 0x2e, 0x8b, 0x41, 0xaf, 0x17,
- 0xd8, 0x15, 0xe7, 0x27, 0x68, 0x6c, 0x3a, 0xfa, 0xf7, 0xd9, 0x16, 0x36, 0x34, 0xbb, 0xfd, 0xde,
- 0x77, 0xc1, 0xcb, 0x91, 0x7f, 0x21, 0xc8, 0x95, 0x04, 0xd7, 0x57, 0x83, 0x40, 0x4f, 0x0d, 0x41,
- 0x6f, 0x3d, 0xf5, 0x6c, 0x53, 0x00, 0x8e, 0x7d, 0x41, 0x5d, 0x7b, 0x94, 0x9d, 0xbf, 0x4d, 0xb0,
- 0xe4, 0xce, 0x27, 0x04, 0x47, 0x24, 0x15, 0xb5, 0xb6, 0x2e, 0x04, 0x33, 0x8e, 0xd0, 0x53, 0xa8,
- 0x8f, 0x35, 0x75, 0x99, 0xd7, 0x1d, 0xef, 0x7e, 0x76, 0x67, 0x85, 0x94, 0xea, 0x82, 0x5d, 0x3b,
- 0xa3, 0xe7, 0xd0, 0x64, 0xcb, 0xcb, 0xd1, 0x1a, 0x5c, 0x96, 0xe0, 0x07, 0x05, 0x70, 0x2e, 0x2f,
- 0x1a, 0x6f, 0xb1, 0x8d, 0x09, 0x3d, 0xd6, 0x3a, 0xa9, 0x48, 0xe8, 0x07, 0x05, 0xe8, 0x7f, 0x44,
- 0xf2, 0x09, 0x34, 0xc5, 0x77, 0xb4, 0x22, 0x29, 0x13, 0xe5, 0xa7, 0xde, 0x12, 0x4b, 0xd8, 0x2e,
- 0x94, 0x09, 0x3d, 0x85, 0x46, 0x8a, 0x63, 0x46, 0xa2, 0x11, 0x67, 0xad, 0xaa, 0x54, 0x6f, 0xdb,
- 0x55, 0xaf, 0xbe, 0x9b, 0xbd, 0xfa, 0xee, 0x30, 0x7b, 0xf5, 0xc3, 0xba, 0x72, 0x1e, 0x32, 0xf4,
- 0x4c, 0xc8, 0x24, 0xa1, 0x29, 0x57, 0xd0, 0xda, 0x5b, 0xa1, 0x90, 0xb9, 0x0f, 0x99, 0xf3, 0xbb,
- 0x09, 0x5b, 0x4a, 0x6d, 0x8f, 0xa1, 0x3a, 0x95, 0x59, 0xd6, 0x5d, 0xf9, 0x5e, 0x21, 0x22, 0x75,
- 0x01, 0xa1, 0x76, 0x41, 0x87, 0xd0, 0x1c, 0xcb, 0xbf, 0x01, 0xa5, 0x3c, 0xdd, 0x6d, 0xee, 0xdd,
- 0xf1, 0xa7, 0x70, 0x52, 0x0a, 0xad, 0x71, 0xee, 0xdf, 0xa2, 0x03, 0x8d, 0xeb, 0x24, 0xd6, 0xb0,
- 0xb2, 0x84, 0xd9, 0xb7, 0x7b, 0xcc, 0x49, 0x29, 0xac, 0x5f, 0x67, 0x0d, 0xd7, 0x03, 0x58, 0x03,
- 0x3c, 0x99, 0x6d, 0xcb, 0xdb, 0xbb, 0x8d, 0xf0, 0x4e, 0x4a, 0x61, 0xe3, 0x7a, 0xdd, 0xc3, 0x0e,
- 0xa1, 0x99, 0x6f, 0x0c, 0x32, 0xdd, 0x39, 0x7a, 0x39, 0x3d, 0x0b, 0x7a, 0xb9, 0x56, 0xf1, 0xa2,
- 0x09, 0xa0, 0x7a, 0x89, 0xb8, 0x9a, 0x17, 0x3e, 0xdc, 0xa3, 0xe9, 0xc4, 0xa5, 0x09, 0x59, 0x8c,
- 0x69, 0x1a, 0x69, 0xfc, 0x2f, 0xee, 0x24, 0xe6, 0xd3, 0xe5, 0xa5, 0x3b, 0xa6, 0xf3, 0x4e, 0xb6,
- 0xd6, 0x51, 0x6b, 0x5f, 0xe8, 0x1f, 0xbb, 0xd5, 0x93, 0xce, 0x84, 0x6a, 0xdb, 0x65, 0x55, 0x1a,
- 0x9f, 0xfc, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x6d, 0xad, 0x4a, 0x9a, 0x21, 0x0a, 0x00, 0x00,
+ 0xd8, 0xf2, 0xdc, 0xb3, 0xe5, 0xe5, 0xfa, 0xe8, 0x27, 0xb9, 0x27, 0x63, 0x20, 0x0f, 0xac, 0x41,
+ 0xb9, 0xff, 0x83, 0x38, 0x48, 0x0c, 0xe4, 0x11, 0x72, 0x70, 0x6e, 0x97, 0xc5, 0xa0, 0xd7, 0x0b,
+ 0xec, 0x8a, 0xf3, 0x13, 0x34, 0x36, 0x1d, 0xfd, 0xfb, 0x6c, 0x0b, 0x1b, 0x9a, 0xdd, 0x7e, 0xef,
+ 0xbb, 0xe0, 0xe5, 0xc8, 0xbf, 0x10, 0xe4, 0x4a, 0x82, 0xeb, 0xab, 0x41, 0xa0, 0xa7, 0x86, 0xa0,
+ 0xb7, 0x9e, 0x7a, 0xb6, 0x29, 0x00, 0xc7, 0xbe, 0xa0, 0xae, 0x3d, 0xca, 0xce, 0xdf, 0x26, 0x58,
+ 0x72, 0xe7, 0x13, 0x82, 0x23, 0x92, 0x8a, 0x5a, 0x5b, 0x17, 0x82, 0x19, 0x47, 0xe8, 0x29, 0xd4,
+ 0xc7, 0x9a, 0xba, 0xcc, 0xeb, 0x8e, 0x77, 0x3f, 0xbb, 0xb3, 0x42, 0x4a, 0x75, 0xc1, 0xae, 0x9d,
+ 0xd1, 0x73, 0x68, 0xb2, 0xe5, 0xe5, 0x68, 0x0d, 0x2e, 0x4b, 0xf0, 0x83, 0x02, 0x38, 0x97, 0x17,
+ 0x8d, 0xb7, 0xd8, 0xc6, 0x84, 0x1e, 0x6b, 0x9d, 0x54, 0x24, 0xf4, 0x83, 0x02, 0xf4, 0x3f, 0x22,
+ 0xf9, 0x04, 0x9a, 0xe2, 0x3b, 0x5a, 0x91, 0x94, 0x89, 0xf2, 0x53, 0x6f, 0x89, 0x25, 0x6c, 0x17,
+ 0xca, 0x84, 0x9e, 0x42, 0x23, 0xc5, 0x31, 0x23, 0xd1, 0x88, 0xb3, 0x56, 0x55, 0xaa, 0xb7, 0xed,
+ 0xaa, 0x57, 0xdf, 0xcd, 0x5e, 0x7d, 0x77, 0x98, 0xbd, 0xfa, 0x61, 0x5d, 0x39, 0x0f, 0x19, 0x7a,
+ 0x26, 0x64, 0x92, 0xd0, 0x94, 0x2b, 0x68, 0xed, 0xad, 0x50, 0xc8, 0xdc, 0x87, 0xcc, 0xf9, 0xdd,
+ 0x84, 0x2d, 0xa5, 0xb6, 0xc7, 0x50, 0x9d, 0xca, 0x2c, 0xeb, 0xae, 0x7c, 0xaf, 0x10, 0x91, 0xba,
+ 0x80, 0x50, 0xbb, 0xa0, 0x43, 0x68, 0x8e, 0xe5, 0xdf, 0x80, 0x52, 0x9e, 0xee, 0x36, 0xf7, 0xee,
+ 0xf8, 0x53, 0x38, 0x29, 0x85, 0xd6, 0x38, 0xf7, 0x6f, 0xd1, 0x81, 0xc6, 0x75, 0x12, 0x6b, 0x58,
+ 0x59, 0xc2, 0xec, 0xdb, 0x3d, 0xe6, 0xa4, 0x14, 0xd6, 0xaf, 0xb3, 0x86, 0xeb, 0x01, 0xac, 0x01,
+ 0x9e, 0xcc, 0xb6, 0xe5, 0xed, 0xdd, 0x46, 0x78, 0x27, 0xa5, 0xb0, 0x71, 0xbd, 0xee, 0x61, 0x87,
+ 0xd0, 0xcc, 0x37, 0x06, 0x99, 0xee, 0x1c, 0xbd, 0x9c, 0x9e, 0x05, 0xbd, 0x5c, 0xab, 0x78, 0xd1,
+ 0x04, 0x50, 0xbd, 0x44, 0x5c, 0xcd, 0x0b, 0x1f, 0xee, 0xd1, 0x74, 0xe2, 0xd2, 0x84, 0x2c, 0xc6,
+ 0x34, 0x8d, 0x34, 0xfe, 0x17, 0x77, 0x12, 0xf3, 0xe9, 0xf2, 0xd2, 0x1d, 0xd3, 0x79, 0x27, 0x5b,
+ 0xeb, 0xa8, 0xb5, 0x2f, 0xf4, 0x8f, 0xdd, 0xea, 0x49, 0x67, 0x42, 0xb5, 0xed, 0xb2, 0x2a, 0x8d,
+ 0x5f, 0xfd, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x26, 0x26, 0x74, 0xd0, 0x21, 0x0a, 0x00, 0x00,
}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/health.pb.go b/vendor/github.com/opencord/voltha-protos/v4/go/voltha/health.pb.go
similarity index 97%
rename from vendor/github.com/opencord/voltha-protos/v3/go/voltha/health.pb.go
rename to vendor/github.com/opencord/voltha-protos/v4/go/voltha/health.pb.go
index 42b0541..2c8c75b 100644
--- a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/health.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v4/go/voltha/health.pb.go
@@ -8,7 +8,7 @@
fmt "fmt"
proto "github.com/golang/protobuf/proto"
empty "github.com/golang/protobuf/ptypes/empty"
- _ "github.com/opencord/voltha-protos/v3/go/common"
+ _ "github.com/opencord/voltha-protos/v4/go/common"
_ "google.golang.org/genproto/googleapis/api/annotations"
grpc "google.golang.org/grpc"
math "math"
@@ -121,8 +121,8 @@
0xa2, 0x12, 0x7f, 0xd3, 0xe5, 0x27, 0x93, 0x99, 0x38, 0x85, 0xd8, 0xa1, 0x81, 0xe9, 0xe4, 0xca,
0x25, 0x9c, 0x5f, 0x94, 0xae, 0x97, 0x5f, 0x90, 0x9a, 0x97, 0x9c, 0x5f, 0x94, 0x02, 0xd5, 0x14,
0xa5, 0x97, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, 0x9f, 0xab, 0x0f, 0x93, 0xd3, 0x87,
- 0xc8, 0xe9, 0x42, 0x83, 0xab, 0xcc, 0x58, 0x3f, 0x3d, 0x1f, 0x2a, 0x96, 0xc4, 0x06, 0x16, 0x34,
- 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x39, 0x87, 0x64, 0xd7, 0xb2, 0x01, 0x00, 0x00,
+ 0xc8, 0xe9, 0x42, 0x83, 0xab, 0xcc, 0x44, 0x3f, 0x3d, 0x1f, 0x2a, 0x96, 0xc4, 0x06, 0x16, 0x34,
+ 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x72, 0x0c, 0x5a, 0x9d, 0xb2, 0x01, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/logical_device.pb.go b/vendor/github.com/opencord/voltha-protos/v4/go/voltha/logical_device.pb.go
similarity index 79%
rename from vendor/github.com/opencord/voltha-protos/v3/go/voltha/logical_device.pb.go
rename to vendor/github.com/opencord/voltha-protos/v4/go/voltha/logical_device.pb.go
index 7aef243..4b96daa 100644
--- a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/logical_device.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v4/go/voltha/logical_device.pb.go
@@ -6,8 +6,8 @@
import (
fmt "fmt"
proto "github.com/golang/protobuf/proto"
- _ "github.com/opencord/voltha-protos/v3/go/common"
- openflow_13 "github.com/opencord/voltha-protos/v3/go/openflow_13"
+ _ "github.com/opencord/voltha-protos/v4/go/common"
+ openflow_13 "github.com/opencord/voltha-protos/v4/go/openflow_13"
_ "google.golang.org/genproto/googleapis/api/annotations"
math "math"
)
@@ -319,31 +319,31 @@
// 456 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x92, 0xc1, 0x6a, 0xdb, 0x40,
0x10, 0x86, 0x91, 0x63, 0x3b, 0xce, 0xca, 0x51, 0x40, 0x21, 0x54, 0x24, 0x85, 0x08, 0xd1, 0x83,
- 0x43, 0xa9, 0xd4, 0xda, 0x97, 0xf6, 0xd0, 0x43, 0x43, 0x08, 0x18, 0x4a, 0x5b, 0xb6, 0xd0, 0x43,
- 0x2f, 0x62, 0xa3, 0x5d, 0xcb, 0x0b, 0xb2, 0x46, 0x68, 0x37, 0xce, 0xcb, 0xf6, 0x29, 0xfa, 0x04,
- 0x65, 0x67, 0x57, 0x8d, 0x15, 0xfb, 0xa8, 0x7f, 0xbe, 0x99, 0xf9, 0xe7, 0x5f, 0x91, 0x64, 0x0b,
- 0x95, 0x5e, 0xb3, 0xbc, 0x69, 0x41, 0x83, 0xca, 0x2a, 0x28, 0x65, 0xc1, 0xaa, 0x9c, 0x8b, 0xad,
- 0x2c, 0x44, 0x8a, 0x6a, 0x38, 0xb6, 0xcc, 0xe5, 0xeb, 0x12, 0xa0, 0xac, 0x44, 0xc6, 0x1a, 0x99,
- 0xb1, 0xba, 0x06, 0xcd, 0xb4, 0x84, 0x5a, 0x59, 0xea, 0x32, 0xea, 0x4f, 0xda, 0x08, 0xcd, 0x5c,
- 0xe5, 0xba, 0x5f, 0x81, 0x46, 0xd4, 0xab, 0x0a, 0x9e, 0xf2, 0x0f, 0x0b, 0x0b, 0x24, 0x1f, 0xc9,
- 0xe9, 0x57, 0xbb, 0xf8, 0x07, 0xb4, 0x7a, 0xc9, 0xc3, 0x80, 0x0c, 0x24, 0x8f, 0xbc, 0xd8, 0x9b,
- 0x9d, 0xd0, 0x81, 0xe4, 0xe1, 0x2b, 0x72, 0xdc, 0x40, 0xab, 0x73, 0xc9, 0xa3, 0x01, 0x8a, 0xe3,
- 0x06, 0xc1, 0xe4, 0xaf, 0x47, 0xfc, 0x9d, 0xd6, 0xbd, 0xc6, 0xf7, 0x64, 0x02, 0xab, 0x26, 0x37,
- 0x34, 0x76, 0xfa, 0xf3, 0x8b, 0x74, 0x77, 0x7f, 0x57, 0xa4, 0xc7, 0xb0, 0x6a, 0x70, 0xc2, 0x15,
- 0x39, 0xb1, 0xc7, 0x9b, 0x65, 0x47, 0x38, 0x68, 0x62, 0x85, 0x25, 0x0f, 0xdf, 0x90, 0xc0, 0x15,
- 0xd1, 0x4e, 0x0d, 0xd1, 0x30, 0xf6, 0x66, 0xa7, 0x74, 0x6a, 0x55, 0x33, 0xe0, 0x1b, 0x98, 0x11,
- 0x2d, 0x80, 0xb6, 0x5b, 0x47, 0xb1, 0x37, 0x9b, 0xd0, 0x89, 0x11, 0x70, 0xfe, 0x17, 0x12, 0x74,
- 0x4b, 0x73, 0xa5, 0x99, 0x56, 0xd1, 0x18, 0x7d, 0x5d, 0x1d, 0xf4, 0x65, 0x11, 0x3a, 0x75, 0xee,
- 0x7e, 0x9a, 0xaf, 0xe4, 0x13, 0x99, 0xee, 0xdc, 0xac, 0xc2, 0x1b, 0x32, 0x92, 0x5a, 0x6c, 0x54,
- 0xe4, 0xc5, 0x47, 0x33, 0x7f, 0x7e, 0x9e, 0xda, 0xbc, 0xd3, 0x1d, 0x88, 0x5a, 0x22, 0xf9, 0xe3,
- 0xfd, 0x8f, 0xfa, 0x0e, 0x2d, 0xef, 0x25, 0x76, 0x4d, 0x7c, 0xce, 0x34, 0x6b, 0x98, 0x5e, 0x77,
- 0x71, 0x0f, 0x29, 0xe9, 0xa4, 0x25, 0x0f, 0x6f, 0xc8, 0x90, 0x0b, 0x55, 0x60, 0x36, 0x87, 0xe2,
- 0x34, 0x45, 0x8a, 0x48, 0xb8, 0x24, 0x67, 0xea, 0x49, 0xea, 0x62, 0x9d, 0xaf, 0x04, 0xd3, 0x8f,
- 0xad, 0x50, 0x98, 0x97, 0x3f, 0x8f, 0xf7, 0xba, 0x5e, 0x70, 0x34, 0xb0, 0xc2, 0xbd, 0xfb, 0x36,
- 0xc9, 0x63, 0xa6, 0xcf, 0x6f, 0x33, 0x42, 0xcb, 0x53, 0xa3, 0xde, 0xb9, 0xf7, 0x49, 0x3e, 0x93,
- 0xa0, 0x77, 0x9d, 0x0a, 0xdf, 0xf6, 0xb3, 0xb9, 0x78, 0x91, 0x8d, 0xc5, 0x5c, 0x3a, 0xb7, 0xbf,
- 0xc8, 0x39, 0xb4, 0x25, 0x7a, 0x2b, 0xa0, 0xe5, 0x8e, 0xbd, 0x3d, 0xfb, 0x7e, 0xdf, 0xc3, 0x7f,
- 0xa7, 0xa5, 0xd4, 0xeb, 0xc7, 0x87, 0xb4, 0x80, 0x4d, 0xd6, 0xc1, 0x99, 0x85, 0xdf, 0xb9, 0x9f,
- 0x7c, 0xbb, 0xc8, 0x4a, 0x70, 0xda, 0xc3, 0x18, 0xc5, 0xc5, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff,
- 0x91, 0x0c, 0xf4, 0xf2, 0x6d, 0x03, 0x00, 0x00,
+ 0x43, 0xa9, 0xd4, 0x3a, 0x3d, 0xb4, 0x87, 0x1e, 0x1a, 0x42, 0xc0, 0x50, 0xda, 0xb2, 0x85, 0x1e,
+ 0x7a, 0x11, 0x1b, 0xed, 0x5a, 0x5e, 0x90, 0x35, 0x42, 0xbb, 0x71, 0x5e, 0xb6, 0x4f, 0xd1, 0x27,
+ 0x28, 0x3b, 0xbb, 0x6a, 0xa5, 0x38, 0x47, 0xfd, 0xf3, 0xcd, 0xcc, 0x3f, 0xff, 0x8a, 0x24, 0x3b,
+ 0xa8, 0xf4, 0x86, 0xe5, 0x4d, 0x0b, 0x1a, 0x54, 0x56, 0x41, 0x29, 0x0b, 0x56, 0xe5, 0x5c, 0xec,
+ 0x64, 0x21, 0x52, 0x54, 0xc3, 0xa9, 0x65, 0xce, 0x5f, 0x96, 0x00, 0x65, 0x25, 0x32, 0xd6, 0xc8,
+ 0x8c, 0xd5, 0x35, 0x68, 0xa6, 0x25, 0xd4, 0xca, 0x52, 0xe7, 0xd1, 0x70, 0xd2, 0x56, 0x68, 0xe6,
+ 0x2a, 0x97, 0xc3, 0x0a, 0x34, 0xa2, 0x5e, 0x57, 0xf0, 0x98, 0xbf, 0xbb, 0xb6, 0x40, 0xf2, 0x81,
+ 0x1c, 0x7f, 0xb1, 0x8b, 0xbf, 0x43, 0xab, 0x57, 0x3c, 0x0c, 0xc8, 0x48, 0xf2, 0xc8, 0x8b, 0xbd,
+ 0xc5, 0x11, 0x1d, 0x49, 0x1e, 0xbe, 0x20, 0x87, 0x0d, 0xb4, 0x3a, 0x97, 0x3c, 0x1a, 0xa1, 0x38,
+ 0x6d, 0x10, 0x4c, 0xfe, 0x78, 0xc4, 0xef, 0xb5, 0xee, 0x35, 0xbe, 0x25, 0x33, 0x58, 0x37, 0xb9,
+ 0xa1, 0xb1, 0xd3, 0x5f, 0x9e, 0xa5, 0xfd, 0xfd, 0x5d, 0x91, 0x1e, 0xc2, 0xba, 0xc1, 0x09, 0x17,
+ 0xe4, 0xc8, 0x1e, 0x6f, 0x96, 0x1d, 0xe0, 0xa0, 0x99, 0x15, 0x56, 0x3c, 0x7c, 0x45, 0x02, 0x57,
+ 0x44, 0x3b, 0x35, 0x44, 0xe3, 0xd8, 0x5b, 0x1c, 0xd3, 0xb9, 0x55, 0xcd, 0x80, 0xaf, 0x60, 0x46,
+ 0xb4, 0x00, 0xda, 0x6e, 0x9d, 0xc4, 0xde, 0x62, 0x46, 0x67, 0x46, 0xc0, 0xf9, 0x9f, 0x49, 0xd0,
+ 0x2d, 0xcd, 0x95, 0x66, 0x5a, 0x45, 0x53, 0xf4, 0x75, 0xf1, 0xac, 0x2f, 0x8b, 0xd0, 0xb9, 0x73,
+ 0xf7, 0xc3, 0x7c, 0x25, 0x1f, 0xc9, 0xbc, 0x77, 0xb3, 0x0a, 0xaf, 0xc8, 0x44, 0x6a, 0xb1, 0x55,
+ 0x91, 0x17, 0x1f, 0x2c, 0xfc, 0xe5, 0x69, 0x6a, 0xf3, 0x4e, 0x7b, 0x10, 0xb5, 0x44, 0xf2, 0xdb,
+ 0xfb, 0x17, 0xf5, 0x2d, 0x5a, 0xde, 0x4b, 0xec, 0x92, 0xf8, 0x9c, 0x69, 0xd6, 0x30, 0xbd, 0xe9,
+ 0xe2, 0x1e, 0x53, 0xd2, 0x49, 0x2b, 0x1e, 0x5e, 0x91, 0x31, 0x17, 0xaa, 0xc0, 0x6c, 0x9e, 0x8b,
+ 0xd3, 0x14, 0x29, 0x22, 0xe1, 0x8a, 0x9c, 0xa8, 0x47, 0xa9, 0x8b, 0x4d, 0xbe, 0x16, 0x4c, 0x3f,
+ 0xb4, 0x42, 0x61, 0x5e, 0xfe, 0x32, 0xde, 0xeb, 0x7a, 0xc2, 0xd1, 0xc0, 0x0a, 0x77, 0xee, 0xdb,
+ 0x24, 0x8f, 0x99, 0xfe, 0x7f, 0x9b, 0x09, 0x5a, 0x9e, 0x1b, 0xf5, 0xd6, 0xbd, 0x4f, 0xf2, 0x89,
+ 0x04, 0x83, 0xeb, 0x54, 0xf8, 0x7a, 0x98, 0xcd, 0xd9, 0x93, 0x6c, 0x2c, 0xe6, 0xd2, 0xb9, 0xf9,
+ 0x49, 0x4e, 0xa1, 0x2d, 0xd1, 0x5b, 0x01, 0x2d, 0x77, 0xec, 0xcd, 0xc9, 0xb7, 0xbb, 0x01, 0xfe,
+ 0x2b, 0x2d, 0xa5, 0xde, 0x3c, 0xdc, 0xa7, 0x05, 0x6c, 0xb3, 0x0e, 0xce, 0x2c, 0xfc, 0xc6, 0xfd,
+ 0xe4, 0xbb, 0xf7, 0x59, 0x09, 0x4e, 0xbb, 0x9f, 0xa2, 0x78, 0xfd, 0x37, 0x00, 0x00, 0xff, 0xff,
+ 0xda, 0x87, 0xca, 0xb8, 0x6d, 0x03, 0x00, 0x00,
}
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/ponsim.pb.go b/vendor/github.com/opencord/voltha-protos/v4/go/voltha/ponsim.pb.go
similarity index 85%
rename from vendor/github.com/opencord/voltha-protos/v3/go/voltha/ponsim.pb.go
rename to vendor/github.com/opencord/voltha-protos/v4/go/voltha/ponsim.pb.go
index 1dc6e94..4b49c5b 100644
--- a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/ponsim.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v4/go/voltha/ponsim.pb.go
@@ -8,7 +8,7 @@
fmt "fmt"
proto "github.com/golang/protobuf/proto"
empty "github.com/golang/protobuf/ptypes/empty"
- openflow_13 "github.com/opencord/voltha-protos/v3/go/openflow_13"
+ openflow_13 "github.com/opencord/voltha-protos/v4/go/openflow_13"
grpc "google.golang.org/grpc"
math "math"
)
@@ -414,43 +414,43 @@
func init() { proto.RegisterFile("voltha_protos/ponsim.proto", fileDescriptor_352253851b8ea7c0) }
var fileDescriptor_352253851b8ea7c0 = []byte{
- // 563 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x94, 0x5f, 0x6f, 0xd3, 0x30,
- 0x14, 0xc5, 0xdb, 0x6e, 0xeb, 0x9f, 0xbb, 0x15, 0x98, 0x3b, 0xa6, 0xae, 0x7d, 0xa0, 0x32, 0x2f,
- 0x15, 0x12, 0x09, 0x5b, 0xc5, 0x0b, 0x48, 0x80, 0x18, 0xdb, 0xc4, 0x03, 0xa3, 0x72, 0xd9, 0x0b,
- 0x42, 0x44, 0x69, 0xe2, 0x66, 0x11, 0x89, 0x6f, 0x48, 0xec, 0x4e, 0xfb, 0x86, 0x7c, 0x2c, 0x14,
- 0x3b, 0xa1, 0xcd, 0xd4, 0xf2, 0x66, 0x5f, 0x9f, 0xfe, 0xce, 0x3d, 0x37, 0x57, 0x85, 0xc1, 0x12,
- 0x23, 0x79, 0xeb, 0x3a, 0x49, 0x8a, 0x12, 0x33, 0x3b, 0x41, 0x91, 0x85, 0xb1, 0xa5, 0x6f, 0xa4,
- 0x69, 0xde, 0x06, 0xc3, 0x00, 0x31, 0x88, 0xb8, 0xad, 0xab, 0x73, 0xb5, 0xb0, 0x79, 0x9c, 0xc8,
- 0x7b, 0x23, 0x1a, 0x3c, 0xab, 0x02, 0x30, 0xe1, 0x62, 0x11, 0xe1, 0x9d, 0x73, 0x3a, 0x31, 0x02,
- 0x7a, 0x03, 0xbd, 0x29, 0x8a, 0x59, 0x18, 0x7f, 0x15, 0xea, 0x13, 0x5f, 0x86, 0x1e, 0xff, 0x2c,
- 0x16, 0x48, 0x4e, 0xa0, 0xad, 0x44, 0xe8, 0x24, 0x98, 0xca, 0x7e, 0x7d, 0x54, 0x1f, 0xef, 0xb1,
- 0x96, 0x12, 0xe1, 0x14, 0x53, 0x49, 0x9e, 0x43, 0x37, 0xe3, 0x69, 0xe8, 0x46, 0x8e, 0x50, 0xf1,
- 0x9c, 0xa7, 0xfd, 0xc6, 0xa8, 0x3e, 0xee, 0xb0, 0x03, 0x53, 0xbc, 0xd6, 0x35, 0xfa, 0x13, 0x9e,
- 0x18, 0x6c, 0x95, 0x29, 0x1e, 0x30, 0x45, 0xc1, 0xb4, 0x61, 0x17, 0x85, 0xca, 0xfa, 0x8d, 0xd1,
- 0xce, 0x78, 0xff, 0x6c, 0x68, 0x99, 0xae, 0xad, 0x0d, 0x9d, 0x31, 0x2d, 0xa4, 0x0c, 0x3a, 0x97,
- 0x11, 0xde, 0x7d, 0x73, 0xe7, 0x11, 0x27, 0x04, 0x76, 0xd7, 0xa0, 0xfa, 0x4c, 0x4e, 0x61, 0x2f,
- 0x0f, 0xba, 0x42, 0xae, 0x47, 0xc7, 0x45, 0xe2, 0xe8, 0x73, 0x26, 0x5d, 0x99, 0x31, 0xa3, 0xa4,
- 0x0c, 0xf6, 0x8d, 0xe1, 0x65, 0xea, 0xc6, 0x9c, 0x3c, 0x82, 0x46, 0xe8, 0x6b, 0x66, 0x87, 0x35,
- 0x42, 0x9f, 0xf4, 0xa1, 0x95, 0xb8, 0xf7, 0x11, 0xba, 0xbe, 0x4e, 0x7c, 0xc0, 0xca, 0x6b, 0x1e,
- 0x0c, 0x95, 0x34, 0xc1, 0x76, 0x4c, 0x30, 0x54, 0x32, 0x0f, 0x46, 0xdf, 0x97, 0xe3, 0x9d, 0xba,
- 0xde, 0x2f, 0x2e, 0xcf, 0x51, 0x09, 0xc9, 0xd3, 0xbc, 0x63, 0xe1, 0xc6, 0xbc, 0xa0, 0xeb, 0x33,
- 0x39, 0x82, 0xbd, 0xa5, 0x1b, 0x29, 0xae, 0xe9, 0x3b, 0xcc, 0x5c, 0x68, 0x00, 0x87, 0x05, 0x00,
- 0x53, 0xf9, 0x85, 0xcb, 0x34, 0xf4, 0x32, 0x32, 0x84, 0x4e, 0x6e, 0xe6, 0xac, 0x31, 0xda, 0x79,
- 0xe1, 0x3a, 0xe7, 0xbc, 0xce, 0xfb, 0xcc, 0xcd, 0xb6, 0x8c, 0xb3, 0xd2, 0x09, 0x2b, 0xb5, 0xf4,
- 0x07, 0x74, 0xcd, 0x7b, 0x69, 0x72, 0x0c, 0x4d, 0x5f, 0x8f, 0xbd, 0x70, 0x28, 0x6e, 0x64, 0x02,
- 0xad, 0xd8, 0x48, 0x0a, 0xfe, 0xc9, 0x03, 0xfe, 0xaa, 0x51, 0x56, 0x2a, 0xe9, 0x0b, 0x38, 0xaa,
- 0xd0, 0x19, 0xff, 0xad, 0x78, 0x26, 0x37, 0x7d, 0xba, 0xb3, 0x3f, 0x0d, 0x68, 0x1a, 0x31, 0x79,
- 0x03, 0x9d, 0x19, 0x17, 0xbe, 0xf9, 0x20, 0xbd, 0xaa, 0x8f, 0x2e, 0x0e, 0x8e, 0x2d, 0xb3, 0xfe,
- 0x56, 0xb9, 0xfe, 0xd6, 0x45, 0xbe, 0xfe, 0xb4, 0x46, 0x3e, 0x40, 0x97, 0x71, 0x8f, 0x87, 0x4b,
- 0xae, 0x95, 0x19, 0xd9, 0x22, 0x1d, 0x6c, 0xe2, 0xd2, 0xda, 0xab, 0x3a, 0x39, 0x87, 0xee, 0x15,
- 0x97, 0x6b, 0x1b, 0xbc, 0x8d, 0xd0, 0xaf, 0x12, 0x56, 0xbf, 0xa0, 0x35, 0xf2, 0x0e, 0x1e, 0xdf,
- 0x24, 0xbe, 0x2b, 0xf9, 0x6a, 0x5f, 0x0f, 0x4b, 0xf9, 0xbf, 0xd2, 0x7f, 0x62, 0xbc, 0x85, 0xf6,
- 0x15, 0x97, 0xb3, 0x7c, 0x51, 0xb7, 0xfa, 0x3f, 0xad, 0xfa, 0x17, 0x33, 0xa6, 0xb5, 0x8f, 0x17,
- 0xd0, 0xc3, 0x34, 0xd0, 0xbb, 0xef, 0x61, 0xea, 0x17, 0xb2, 0xef, 0x56, 0x10, 0xca, 0x5b, 0x35,
- 0xb7, 0x3c, 0x8c, 0xed, 0xf2, 0xcd, 0x36, 0x6f, 0x2f, 0x8b, 0x7f, 0x8a, 0xe5, 0xc4, 0x0e, 0xb0,
- 0xa8, 0xcd, 0x9b, 0xba, 0x38, 0xf9, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xb2, 0x72, 0x9e, 0xcb, 0x8f,
- 0x04, 0x00, 0x00,
+ // 565 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x94, 0x5f, 0x6f, 0xd3, 0x3c,
+ 0x14, 0xc6, 0xdb, 0x6e, 0xeb, 0x9f, 0xb3, 0xf5, 0x7d, 0x99, 0x3b, 0xa6, 0xae, 0xbd, 0xa0, 0x32,
+ 0x37, 0x15, 0x12, 0x09, 0x5b, 0xe1, 0x06, 0x24, 0x40, 0x8c, 0x6d, 0xe2, 0x82, 0x51, 0xb9, 0xec,
+ 0x06, 0x21, 0xa2, 0x34, 0x71, 0xb3, 0x88, 0xc4, 0x27, 0x24, 0x76, 0xa7, 0x7d, 0x43, 0x3e, 0x16,
+ 0x8a, 0x9d, 0xd0, 0x66, 0x6a, 0xb9, 0xb3, 0x8f, 0x9f, 0xfe, 0x9e, 0xf3, 0x9c, 0x1c, 0x15, 0x06,
+ 0x4b, 0x8c, 0xe4, 0xad, 0xeb, 0x24, 0x29, 0x4a, 0xcc, 0xec, 0x04, 0x45, 0x16, 0xc6, 0x96, 0xbe,
+ 0x91, 0xa6, 0x79, 0x1b, 0x0c, 0x03, 0xc4, 0x20, 0xe2, 0xb6, 0xae, 0xce, 0xd5, 0xc2, 0xe6, 0x71,
+ 0x22, 0xef, 0x8d, 0x68, 0xf0, 0xa4, 0x0a, 0xc0, 0x84, 0x8b, 0x45, 0x84, 0x77, 0xce, 0xe9, 0xc4,
+ 0x08, 0xe8, 0x0d, 0xf4, 0xa6, 0x28, 0x66, 0x61, 0xfc, 0x45, 0xa8, 0x8f, 0x7c, 0x19, 0x7a, 0xfc,
+ 0x93, 0x58, 0x20, 0x39, 0x81, 0xb6, 0x12, 0xa1, 0x93, 0x60, 0x2a, 0xfb, 0xf5, 0x51, 0x7d, 0xbc,
+ 0xc7, 0x5a, 0x4a, 0x84, 0x53, 0x4c, 0x25, 0x79, 0x0a, 0xdd, 0x8c, 0xa7, 0xa1, 0x1b, 0x39, 0x42,
+ 0xc5, 0x73, 0x9e, 0xf6, 0x1b, 0xa3, 0xfa, 0xb8, 0xc3, 0x0e, 0x4c, 0xf1, 0x5a, 0xd7, 0xe8, 0x0f,
+ 0x78, 0x64, 0xb0, 0x55, 0xa6, 0x78, 0xc0, 0x14, 0x05, 0xd3, 0x86, 0x5d, 0x14, 0x2a, 0xeb, 0x37,
+ 0x46, 0x3b, 0xe3, 0xfd, 0xb3, 0xa1, 0x65, 0xba, 0xb6, 0x36, 0x74, 0xc6, 0xb4, 0x90, 0x32, 0xe8,
+ 0x5c, 0x46, 0x78, 0xf7, 0xd5, 0x9d, 0x47, 0x9c, 0x10, 0xd8, 0x5d, 0x83, 0xea, 0x33, 0x39, 0x85,
+ 0xbd, 0x3c, 0xe8, 0x0a, 0xb9, 0x1e, 0x1d, 0x17, 0x89, 0xa3, 0xcf, 0x99, 0x74, 0x65, 0xc6, 0x8c,
+ 0x92, 0x32, 0xd8, 0x37, 0x86, 0x97, 0xa9, 0x1b, 0x73, 0xf2, 0x1f, 0x34, 0x42, 0x5f, 0x33, 0x3b,
+ 0xac, 0x11, 0xfa, 0xa4, 0x0f, 0xad, 0xc4, 0xbd, 0x8f, 0xd0, 0xf5, 0x75, 0xe2, 0x03, 0x56, 0x5e,
+ 0xf3, 0x60, 0xa8, 0xa4, 0x09, 0xb6, 0x63, 0x82, 0xa1, 0x92, 0x79, 0x30, 0xfa, 0xae, 0x1c, 0xef,
+ 0xd4, 0xf5, 0x7e, 0x72, 0x79, 0x8e, 0x4a, 0x48, 0x9e, 0xe6, 0x1d, 0x0b, 0x37, 0xe6, 0x05, 0x5d,
+ 0x9f, 0xc9, 0x11, 0xec, 0x2d, 0xdd, 0x48, 0x71, 0x4d, 0xdf, 0x61, 0xe6, 0x42, 0x03, 0x38, 0x2c,
+ 0x00, 0x98, 0xca, 0xcf, 0x5c, 0xa6, 0xa1, 0x97, 0x91, 0x21, 0x74, 0x72, 0x33, 0x67, 0x8d, 0xd1,
+ 0xce, 0x0b, 0xd7, 0x39, 0xe7, 0x55, 0xde, 0x67, 0x6e, 0xb6, 0x65, 0x9c, 0x95, 0x4e, 0x58, 0xa9,
+ 0xa5, 0xdf, 0xa1, 0x6b, 0xde, 0x4b, 0x93, 0x63, 0x68, 0xfa, 0x7a, 0xec, 0x85, 0x43, 0x71, 0x23,
+ 0x13, 0x68, 0xc5, 0x46, 0x52, 0xf0, 0x4f, 0x1e, 0xf0, 0x57, 0x8d, 0xb2, 0x52, 0x49, 0x9f, 0xc1,
+ 0x51, 0x85, 0xce, 0xf8, 0x2f, 0xc5, 0x33, 0xb9, 0xe9, 0xd3, 0x9d, 0xfd, 0x6e, 0x40, 0xd3, 0x88,
+ 0xc9, 0x6b, 0xe8, 0xcc, 0xb8, 0xf0, 0xcd, 0x07, 0xe9, 0x55, 0x7d, 0x74, 0x71, 0x70, 0x6c, 0x99,
+ 0xf5, 0xb7, 0xca, 0xf5, 0xb7, 0x2e, 0xf2, 0xf5, 0xa7, 0x35, 0xf2, 0x1e, 0xba, 0x8c, 0x7b, 0x3c,
+ 0x5c, 0x72, 0xad, 0xcc, 0xc8, 0x16, 0xe9, 0x60, 0x13, 0x97, 0xd6, 0x5e, 0xd4, 0xc9, 0x39, 0x74,
+ 0xaf, 0xb8, 0x5c, 0xdb, 0xe0, 0x6d, 0x84, 0x7e, 0x95, 0xb0, 0xfa, 0x05, 0xad, 0x91, 0xb7, 0xf0,
+ 0xff, 0x4d, 0xe2, 0xbb, 0x92, 0xaf, 0xf6, 0xf5, 0xb0, 0x94, 0xff, 0x2d, 0xfd, 0x23, 0xc6, 0x1b,
+ 0x68, 0x5f, 0x71, 0x39, 0xcb, 0x17, 0x75, 0xab, 0xff, 0xe3, 0xaa, 0x7f, 0x31, 0x63, 0x5a, 0xfb,
+ 0x70, 0x01, 0x3d, 0x4c, 0x03, 0xbd, 0xfb, 0x1e, 0xa6, 0x7e, 0x21, 0xfb, 0x66, 0x05, 0xa1, 0xbc,
+ 0x55, 0x73, 0xcb, 0xc3, 0xd8, 0x2e, 0xdf, 0x6c, 0xf3, 0xf6, 0xbc, 0xf8, 0xa7, 0x58, 0xbe, 0xb4,
+ 0x03, 0x2c, 0x6a, 0xf3, 0xa6, 0x2e, 0x4e, 0xfe, 0x04, 0x00, 0x00, 0xff, 0xff, 0xf9, 0xf9, 0xa0,
+ 0x81, 0x8f, 0x04, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
diff --git a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/voltha.pb.go b/vendor/github.com/opencord/voltha-protos/v4/go/voltha/voltha.pb.go
similarity index 91%
rename from vendor/github.com/opencord/voltha-protos/v3/go/voltha/voltha.pb.go
rename to vendor/github.com/opencord/voltha-protos/v4/go/voltha/voltha.pb.go
index 7010792..4db124f 100644
--- a/vendor/github.com/opencord/voltha-protos/v3/go/voltha/voltha.pb.go
+++ b/vendor/github.com/opencord/voltha-protos/v4/go/voltha/voltha.pb.go
@@ -8,10 +8,10 @@
fmt "fmt"
proto "github.com/golang/protobuf/proto"
empty "github.com/golang/protobuf/ptypes/empty"
- common "github.com/opencord/voltha-protos/v3/go/common"
- config "github.com/opencord/voltha-protos/v3/go/ext/config"
- omci "github.com/opencord/voltha-protos/v3/go/omci"
- openflow_13 "github.com/opencord/voltha-protos/v3/go/openflow_13"
+ common "github.com/opencord/voltha-protos/v4/go/common"
+ config "github.com/opencord/voltha-protos/v4/go/ext/config"
+ omci "github.com/opencord/voltha-protos/v4/go/omci"
+ openflow_13 "github.com/opencord/voltha-protos/v4/go/openflow_13"
_ "google.golang.org/genproto/googleapis/api/annotations"
grpc "google.golang.org/grpc"
math "math"
@@ -92,6 +92,7 @@
const AdminState_DISABLED = AdminState_Types(common.AdminState_DISABLED)
const AdminState_DOWNLOADING_IMAGE = AdminState_Types(common.AdminState_DOWNLOADING_IMAGE)
const AdminState_DELETED = AdminState_Types(common.AdminState_DELETED)
+const AdminState_DELETING = AdminState_Types(common.AdminState_DELETING)
// OperStatus_Types from public import voltha_protos/common.proto
type OperStatus_Types = common.OperStatus_Types
@@ -2197,169 +2198,171 @@
func init() { proto.RegisterFile("voltha_protos/voltha.proto", fileDescriptor_e084f1a60ce7016c) }
var fileDescriptor_e084f1a60ce7016c = []byte{
- // 2589 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x4b, 0x73, 0x1b, 0xc7,
- 0x11, 0x26, 0xf8, 0x66, 0x03, 0x24, 0x81, 0x01, 0x1f, 0x10, 0x48, 0xea, 0x31, 0xb6, 0x25, 0x86,
- 0xb6, 0x00, 0x49, 0x94, 0x54, 0x8e, 0x14, 0x57, 0xcc, 0x97, 0x68, 0x44, 0xa2, 0x80, 0x2c, 0x48,
- 0xc9, 0x49, 0xac, 0x42, 0x2d, 0xb0, 0x03, 0x70, 0x4b, 0x0b, 0x2c, 0xb2, 0x3b, 0xa0, 0xc4, 0x52,
- 0xb9, 0x52, 0xe5, 0x3c, 0x9c, 0xbb, 0xef, 0x39, 0x25, 0x95, 0xaa, 0xfc, 0x17, 0x9f, 0x72, 0xca,
- 0x35, 0x95, 0x43, 0x2e, 0xb9, 0xfa, 0x9c, 0x9a, 0x9e, 0x59, 0x60, 0x17, 0xbb, 0xcb, 0x87, 0xe3,
- 0xaa, 0x9c, 0xc8, 0xed, 0xee, 0xf9, 0xfa, 0x35, 0xd3, 0xd3, 0xdb, 0x0b, 0xc8, 0x9f, 0xd8, 0x16,
- 0x3f, 0xd6, 0x6b, 0x5d, 0xc7, 0xe6, 0xb6, 0x5b, 0x94, 0x4f, 0x05, 0x7c, 0x22, 0x93, 0xf2, 0x29,
- 0xbf, 0xda, 0xb2, 0xed, 0x96, 0xc5, 0x8a, 0x7a, 0xd7, 0x2c, 0xea, 0x9d, 0x8e, 0xcd, 0x75, 0x6e,
- 0xda, 0x1d, 0x57, 0x4a, 0xe5, 0x57, 0x14, 0x17, 0x9f, 0xea, 0xbd, 0x66, 0x91, 0xb5, 0xbb, 0xfc,
- 0x54, 0x31, 0x73, 0x41, 0xf8, 0x36, 0xe3, 0x0a, 0x3c, 0x3f, 0xa4, 0xb8, 0x61, 0xb7, 0xdb, 0x76,
- 0x27, 0x9a, 0x77, 0xcc, 0x74, 0x8b, 0x1f, 0x2b, 0x1e, 0x0d, 0xf2, 0x2c, 0xbb, 0x65, 0x36, 0x74,
- 0xab, 0x66, 0xb0, 0x13, 0xb3, 0xc1, 0xa2, 0xd7, 0x07, 0x78, 0x2b, 0x41, 0x9e, 0x6e, 0xe8, 0x5d,
- 0xce, 0x1c, 0xc5, 0xbc, 0x16, 0x64, 0xda, 0x5d, 0xd6, 0x69, 0x5a, 0xf6, 0x9b, 0xda, 0xdd, 0xcd,
- 0x18, 0x81, 0x76, 0xc3, 0xac, 0xb5, 0xcd, 0x7a, 0xcd, 0xa8, 0x2b, 0x81, 0x1b, 0x11, 0x02, 0xba,
- 0xa5, 0x3b, 0xed, 0x81, 0xc8, 0xd5, 0xa0, 0x08, 0x7b, 0xcb, 0x6b, 0x0d, 0xbb, 0xd3, 0x34, 0x5b,
- 0x92, 0x4f, 0xff, 0x9c, 0x80, 0xe4, 0x2e, 0x9a, 0xbc, 0xef, 0xd8, 0xbd, 0x2e, 0x59, 0x84, 0x51,
- 0xd3, 0xc8, 0x25, 0xae, 0x27, 0xd6, 0x67, 0xb6, 0x27, 0xfe, 0xfd, 0xdd, 0xb7, 0x6b, 0x09, 0x6d,
- 0xd4, 0x34, 0x48, 0x09, 0xe6, 0x83, 0xce, 0xbb, 0xb9, 0xd1, 0xeb, 0x63, 0xeb, 0xc9, 0x7b, 0x8b,
- 0x05, 0x95, 0xc5, 0x67, 0x92, 0x2d, 0xb1, 0xb6, 0x67, 0xfe, 0xf9, 0xdd, 0xb7, 0x6b, 0xe3, 0x02,
- 0x4b, 0x9b, 0xb3, 0xfc, 0x1c, 0x97, 0x6c, 0xc2, 0x94, 0x07, 0x31, 0x86, 0x10, 0x73, 0x1e, 0x44,
- 0x78, 0xad, 0x27, 0x49, 0x7f, 0x0c, 0x29, 0x9f, 0x95, 0x2e, 0xf9, 0x11, 0x4c, 0x98, 0x9c, 0xb5,
- 0xdd, 0x5c, 0x02, 0x21, 0xb2, 0x41, 0x08, 0x14, 0xd2, 0xa4, 0x04, 0xfd, 0x53, 0x02, 0xc8, 0xde,
- 0x09, 0xeb, 0xf0, 0x27, 0xa6, 0xc5, 0x99, 0xa3, 0xf5, 0x2c, 0xf6, 0x94, 0x9d, 0xd2, 0xaf, 0x13,
- 0x90, 0x1d, 0x22, 0x1f, 0x9e, 0x76, 0x19, 0x99, 0x03, 0x68, 0x22, 0xa5, 0xa6, 0x5b, 0x56, 0x7a,
- 0x84, 0xa4, 0x60, 0xba, 0xa1, 0x73, 0xd6, 0xb2, 0x9d, 0xd3, 0x74, 0x82, 0xa4, 0x21, 0xe5, 0xf6,
- 0xea, 0xb5, 0x3e, 0x65, 0x94, 0x10, 0x98, 0x7b, 0xdd, 0x35, 0x6b, 0x4c, 0x40, 0xd5, 0xf8, 0x69,
- 0x97, 0xa5, 0xc7, 0xc8, 0x22, 0x64, 0x64, 0x90, 0xfd, 0xe4, 0x71, 0x41, 0x96, 0xfe, 0xf8, 0xc9,
- 0x13, 0xd4, 0x84, 0xf9, 0x21, 0x43, 0xc8, 0xa7, 0x30, 0xf6, 0x9a, 0x9d, 0x62, 0x1a, 0xe6, 0xee,
- 0x15, 0x3c, 0xe7, 0xc2, 0x5e, 0x14, 0x22, 0x3c, 0xd0, 0xc4, 0x52, 0xb2, 0x00, 0x13, 0x27, 0xba,
- 0xd5, 0x63, 0xb9, 0x51, 0x91, 0x4a, 0x4d, 0x3e, 0xd0, 0xbf, 0x26, 0x20, 0xe9, 0x5b, 0x12, 0x97,
- 0xed, 0x25, 0x98, 0x64, 0x1d, 0xbd, 0x6e, 0xc9, 0xd5, 0xd3, 0x9a, 0x7a, 0x22, 0x2b, 0x30, 0xa3,
- 0x1c, 0x30, 0x8d, 0xdc, 0x18, 0x02, 0x4f, 0x4b, 0x42, 0xc9, 0x20, 0x6b, 0x00, 0x03, 0xb7, 0x72,
- 0xe3, 0xc8, 0x9d, 0x41, 0x0a, 0xc6, 0xf5, 0x36, 0x4c, 0x38, 0x3d, 0x8b, 0xb9, 0xb9, 0x09, 0xcc,
- 0xd8, 0x72, 0x8c, 0x53, 0x9a, 0x94, 0xa2, 0x9f, 0x40, 0xca, 0xc7, 0x71, 0xc9, 0x6d, 0x98, 0x92,
- 0x69, 0x09, 0xa5, 0xdc, 0x0f, 0xe0, 0xc9, 0xd0, 0xd7, 0x90, 0xda, 0xb1, 0x1d, 0x56, 0xea, 0xb8,
- 0x5c, 0xef, 0x34, 0x18, 0xb9, 0x09, 0x49, 0x53, 0xfd, 0x5f, 0x1b, 0xf6, 0x18, 0x3c, 0x4e, 0xc9,
- 0x20, 0x9b, 0x30, 0x29, 0x0b, 0x00, 0x7a, 0x9e, 0xbc, 0xb7, 0xe0, 0x69, 0xf9, 0x0c, 0xa9, 0x55,
- 0xae, 0xf3, 0x9e, 0xbb, 0x3d, 0x21, 0x76, 0xe8, 0x88, 0xa6, 0x44, 0xe9, 0x63, 0x98, 0xf5, 0x2b,
- 0x73, 0xc9, 0x46, 0x70, 0x77, 0xf6, 0x41, 0xfc, 0x52, 0xde, 0xf6, 0x7c, 0x00, 0xf3, 0xe5, 0x76,
- 0xc3, 0x3c, 0x64, 0x2e, 0xd7, 0xd8, 0xaf, 0x7b, 0xcc, 0xe5, 0x64, 0x6e, 0x90, 0x15, 0x4c, 0x07,
- 0x81, 0xf1, 0x5e, 0xcf, 0x34, 0x54, 0x2a, 0xf1, 0x7f, 0xfa, 0x1b, 0x48, 0xc9, 0x25, 0x6e, 0xd7,
- 0xee, 0xb8, 0x8c, 0xfc, 0x14, 0x26, 0x1d, 0xe6, 0xf6, 0x2c, 0xae, 0x36, 0xcd, 0x2d, 0x4f, 0xa7,
- 0x5f, 0x2a, 0xf0, 0xa0, 0xa1, 0xb8, 0xa6, 0x96, 0xd1, 0x02, 0x90, 0x30, 0x97, 0x24, 0x61, 0xaa,
- 0x7a, 0xb4, 0xb3, 0xb3, 0x57, 0xad, 0xa6, 0x47, 0xc4, 0xc3, 0x93, 0xad, 0xd2, 0xb3, 0x23, 0x6d,
- 0x2f, 0x9d, 0xa0, 0xaf, 0x60, 0xfa, 0x85, 0xd8, 0x53, 0x55, 0x16, 0x36, 0xf8, 0x63, 0x48, 0xc9,
- 0x32, 0x24, 0x4f, 0x81, 0x8a, 0x65, 0xb6, 0xa0, 0x2a, 0xcf, 0x96, 0xe0, 0xed, 0xe0, 0xff, 0x9f,
- 0x8d, 0x68, 0x49, 0x7d, 0xf0, 0xb8, 0x3d, 0xa5, 0xb6, 0x2d, 0xfd, 0xc7, 0x38, 0x4c, 0xbe, 0x40,
- 0x0f, 0xc8, 0x35, 0x98, 0x3a, 0x61, 0x8e, 0x6b, 0xda, 0x9d, 0x60, 0xde, 0x3c, 0x2a, 0x79, 0x08,
- 0xd3, 0xaa, 0xb2, 0x7a, 0x55, 0x69, 0xde, 0xf3, 0x7e, 0x4b, 0xd2, 0xfd, 0x35, 0xa5, 0x2f, 0x1b,
- 0x55, 0xd4, 0xc6, 0xfe, 0xf7, 0xa2, 0x36, 0x7e, 0xd1, 0xa2, 0x46, 0x3e, 0x85, 0x94, 0x3a, 0x4e,
- 0xe2, 0xc8, 0x78, 0x27, 0x83, 0x04, 0x57, 0x8a, 0xc3, 0xe3, 0x5f, 0x9d, 0x34, 0xfa, 0x64, 0x97,
- 0xec, 0xc0, 0xac, 0x42, 0x68, 0x61, 0x5d, 0xcc, 0x4d, 0xc6, 0x96, 0x43, 0x3f, 0x86, 0x52, 0xab,
- 0x6a, 0xe9, 0x0e, 0xcc, 0xca, 0x83, 0xeb, 0x1d, 0xb0, 0xa9, 0xd8, 0x03, 0x16, 0x00, 0x61, 0xfe,
- 0xf3, 0xf9, 0x73, 0xc8, 0x0c, 0xee, 0x27, 0x9d, 0xeb, 0x75, 0xdd, 0x65, 0xb9, 0x55, 0x05, 0x24,
- 0x38, 0x85, 0x03, 0xb3, 0x2e, 0xcd, 0xd9, 0xd5, 0xb9, 0xbe, 0x9d, 0x16, 0x40, 0x49, 0x5f, 0x3d,
- 0xd1, 0xe6, 0x85, 0x94, 0x10, 0x52, 0xab, 0xc9, 0x4b, 0xc8, 0xfa, 0x6f, 0x34, 0x0f, 0x74, 0x4d,
- 0xa5, 0x08, 0x41, 0x71, 0x2b, 0x9d, 0x09, 0x8b, 0x66, 0x49, 0x31, 0x85, 0x40, 0xff, 0x92, 0x80,
- 0x74, 0x95, 0x59, 0xcd, 0x8b, 0x1d, 0xa0, 0x61, 0x49, 0x3f, 0xc1, 0x7f, 0x80, 0x2a, 0x30, 0x17,
- 0xe4, 0xc4, 0x1f, 0x1e, 0x92, 0x81, 0xd9, 0xe7, 0xe5, 0xc3, 0x5a, 0xf5, 0xa8, 0x52, 0x29, 0x6b,
- 0x87, 0x7b, 0xbb, 0xe9, 0x51, 0x41, 0x3a, 0x7a, 0xfe, 0xf4, 0x79, 0xf9, 0xe5, 0xf3, 0xda, 0x9e,
- 0xa6, 0x95, 0xb5, 0xf4, 0x18, 0x2d, 0x43, 0xa6, 0xdc, 0xdc, 0x6a, 0xb1, 0x0e, 0xaf, 0xf6, 0xea,
- 0x6e, 0xc3, 0x31, 0xeb, 0xcc, 0x11, 0x65, 0xd6, 0x6e, 0xea, 0x82, 0xd8, 0x2f, 0x64, 0xda, 0x8c,
- 0xa2, 0x94, 0x0c, 0x51, 0xa2, 0xd5, 0x8d, 0xdf, 0x2f, 0x18, 0xd3, 0x92, 0x50, 0x32, 0xe8, 0x63,
- 0x80, 0x03, 0xd6, 0xae, 0x33, 0xc7, 0x3d, 0x36, 0xbb, 0x02, 0x09, 0x77, 0x4d, 0xad, 0xa3, 0xb7,
- 0x99, 0x87, 0x84, 0x94, 0xe7, 0x7a, 0x9b, 0xa9, 0x43, 0x3d, 0xea, 0x1d, 0x6a, 0xba, 0x07, 0xa9,
- 0x27, 0x96, 0xfd, 0xe6, 0x80, 0x71, 0x5d, 0xe4, 0x82, 0x3c, 0x80, 0xc9, 0x36, 0xf3, 0x15, 0xe4,
- 0xb5, 0x82, 0xbf, 0x83, 0xb1, 0x9b, 0xdd, 0x1a, 0xb2, 0x55, 0x0d, 0xd0, 0x94, 0xf0, 0xbd, 0xff,
- 0x14, 0x61, 0x56, 0x1e, 0xec, 0x2a, 0x73, 0x44, 0x92, 0xc8, 0x4b, 0x98, 0xdd, 0x67, 0xdc, 0x67,
- 0xd8, 0x52, 0x41, 0x76, 0x79, 0x05, 0xaf, 0xcb, 0x2b, 0xec, 0x89, 0x2e, 0x2f, 0xdf, 0x3f, 0x19,
- 0x03, 0x59, 0x9a, 0xff, 0xea, 0xef, 0xff, 0xfa, 0x66, 0x74, 0x81, 0x10, 0x6c, 0x18, 0x4f, 0xee,
- 0x16, 0xdb, 0x03, 0x9c, 0x57, 0x90, 0x3e, 0xea, 0x1a, 0x3a, 0x67, 0x3e, 0xec, 0x08, 0x8c, 0x7c,
- 0x8c, 0x3e, 0xba, 0x86, 0xd8, 0xcb, 0x34, 0x02, 0xfb, 0x51, 0x62, 0x83, 0xec, 0xc2, 0xcc, 0x3e,
- 0xe3, 0xaa, 0x48, 0xc5, 0xd9, 0xdc, 0xaf, 0x03, 0x52, 0x8e, 0xce, 0x23, 0xe6, 0x0c, 0x99, 0x52,
- 0x98, 0xe4, 0x15, 0x64, 0x9e, 0x99, 0x2e, 0x0f, 0x5e, 0x20, 0x71, 0x68, 0x8b, 0x51, 0x37, 0x89,
- 0x4b, 0xaf, 0x20, 0x68, 0x96, 0x64, 0x3c, 0x43, 0xcd, 0x3e, 0x52, 0x15, 0xe6, 0xf7, 0x59, 0x00,
- 0x9d, 0x40, 0x41, 0xf5, 0xbf, 0xa5, 0xdd, 0x7c, 0xe4, 0xd5, 0x44, 0xaf, 0x22, 0x5e, 0x8e, 0x2c,
- 0x85, 0xf0, 0x8a, 0xef, 0x4c, 0xe3, 0x4b, 0xa2, 0x41, 0x4a, 0xd8, 0xbc, 0xe5, 0x15, 0xd2, 0x38,
- 0x73, 0xd3, 0x43, 0x65, 0xd8, 0xa5, 0x39, 0x44, 0x26, 0x24, 0xed, 0x21, 0xf7, 0x8b, 0x31, 0x03,
- 0x22, 0x30, 0x9f, 0x05, 0xeb, 0x6a, 0x1c, 0xf2, 0x52, 0x64, 0x85, 0x76, 0xe9, 0x35, 0xc4, 0xbf,
- 0x42, 0x96, 0x3d, 0xfc, 0xa1, 0x02, 0x4f, 0x7e, 0x05, 0xe9, 0x7d, 0x16, 0xd4, 0x12, 0x08, 0x48,
- 0x74, 0xe9, 0xa7, 0xef, 0x23, 0xee, 0x55, 0xb2, 0x1a, 0x83, 0x2b, 0xe3, 0xd2, 0x84, 0xa5, 0x90,
- 0x0f, 0x15, 0xdb, 0xe1, 0x6e, 0x74, 0xcc, 0x95, 0x1c, 0x4a, 0xd0, 0x0d, 0xd4, 0xf0, 0x3e, 0xa1,
- 0x67, 0x69, 0x28, 0x76, 0x11, 0xed, 0x2d, 0x2c, 0x0c, 0x3b, 0x21, 0x40, 0xc8, 0x62, 0x04, 0x72,
- 0xc9, 0xc8, 0x67, 0x23, 0xc8, 0xf4, 0x3e, 0xea, 0x2b, 0x90, 0x8f, 0xce, 0xd7, 0x57, 0x7c, 0x27,
- 0xfe, 0xd4, 0x84, 0x87, 0xbf, 0x4f, 0xc0, 0xf2, 0x1e, 0x36, 0x83, 0x17, 0xd6, 0x1e, 0x77, 0xba,
- 0x1e, 0xa3, 0x01, 0x0f, 0xe8, 0xe6, 0x65, 0x0c, 0x28, 0xaa, 0x4e, 0xf4, 0xeb, 0x04, 0xe4, 0x76,
- 0x4d, 0xf7, 0x07, 0x31, 0xe4, 0x27, 0x68, 0xc8, 0x43, 0x7a, 0xff, 0x52, 0x86, 0x18, 0x52, 0x3b,
- 0x31, 0x22, 0x72, 0x2e, 0xea, 0x64, 0x30, 0xe7, 0x24, 0x50, 0x1c, 0x91, 0x7f, 0xc1, 0x8c, 0x37,
- 0x11, 0xeb, 0xb7, 0x09, 0x58, 0x95, 0xb5, 0x2c, 0xa4, 0xe8, 0x10, 0xcd, 0x58, 0x0d, 0x29, 0x40,
- 0xba, 0x5c, 0x13, 0xeb, 0xfa, 0x6d, 0x34, 0xe1, 0x16, 0xbd, 0x80, 0x09, 0xa2, 0xe2, 0xfd, 0x2e,
- 0x01, 0x6b, 0x11, 0x56, 0x1c, 0x88, 0xca, 0x2e, 0xcd, 0x58, 0x09, 0x98, 0x81, 0x8c, 0x03, 0xdb,
- 0x38, 0xc7, 0x8a, 0x02, 0x5a, 0xb1, 0x4e, 0xdf, 0x3b, 0xd3, 0x0a, 0x79, 0x7f, 0x08, 0x33, 0x5a,
- 0xb0, 0x1c, 0x0a, 0x39, 0xaa, 0x0a, 0xc6, 0x3c, 0x1b, 0xb6, 0xc5, 0xa5, 0x1f, 0xa2, 0xae, 0x0f,
- 0xc8, 0x45, 0x74, 0x11, 0x0e, 0x2b, 0x91, 0xb9, 0x55, 0x8d, 0x93, 0x5f, 0xd9, 0x72, 0x28, 0xfe,
- 0x52, 0x88, 0xde, 0x41, 0x85, 0x1b, 0x64, 0xfd, 0xdc, 0x10, 0xab, 0x1e, 0x8e, 0x7c, 0x93, 0x80,
- 0x1b, 0x31, 0xb9, 0x46, 0x4c, 0x19, 0xe9, 0x1b, 0xd1, 0x0a, 0x2f, 0x92, 0xf5, 0x4d, 0x34, 0xe9,
- 0x36, 0xbd, 0xb0, 0x49, 0x22, 0xe8, 0x65, 0x48, 0x8a, 0x58, 0x9c, 0x57, 0x98, 0xe7, 0x83, 0xad,
- 0xa7, 0x4b, 0x97, 0x51, 0x59, 0x86, 0xcc, 0x7b, 0xca, 0xbc, 0x4a, 0x5c, 0x86, 0xd9, 0x01, 0x60,
- 0xc9, 0x88, 0x87, 0x4c, 0x0e, 0xc2, 0x1c, 0x71, 0xd5, 0x49, 0x38, 0xd3, 0x70, 0xc9, 0x11, 0xa4,
- 0x35, 0xd6, 0xb0, 0x3b, 0x0d, 0xd3, 0x62, 0x9e, 0x99, 0xfe, 0xb5, 0xb1, 0xf1, 0x58, 0x45, 0xcc,
- 0x25, 0x1a, 0xc6, 0x14, 0x8e, 0xef, 0xe1, 0x35, 0x1f, 0x71, 0x55, 0x0c, 0xb5, 0xf8, 0x1e, 0x0c,
- 0x59, 0x18, 0xf2, 0x54, 0xde, 0x0d, 0x3f, 0x83, 0xd4, 0x8e, 0xc3, 0x74, 0xae, 0x4c, 0x23, 0x43,
- 0xab, 0x43, 0x68, 0xaa, 0xb1, 0xa1, 0xc3, 0x71, 0x13, 0x26, 0xbd, 0x84, 0x94, 0x2c, 0xc2, 0x11,
- 0x56, 0xc5, 0x39, 0xf9, 0x1e, 0xe2, 0xad, 0xd1, 0x95, 0x28, 0xeb, 0xbc, 0xb2, 0xfa, 0x0b, 0x98,
- 0x55, 0x55, 0xf5, 0x12, 0xc8, 0xea, 0x6e, 0xa4, 0xab, 0x91, 0xc8, 0x5e, 0x9d, 0x7c, 0x09, 0x29,
- 0x8d, 0xd5, 0x6d, 0x9b, 0xff, 0x60, 0x36, 0x3b, 0x08, 0x27, 0x80, 0x77, 0x99, 0xc5, 0xf8, 0xf7,
- 0x08, 0xc6, 0x46, 0x34, 0xb0, 0x81, 0x70, 0xa4, 0x07, 0xb3, 0xbb, 0xf6, 0x9b, 0x8e, 0x65, 0xeb,
- 0x46, 0xa9, 0xad, 0xb7, 0xd8, 0xe0, 0x5e, 0xc1, 0x47, 0x8f, 0x97, 0x5f, 0xf4, 0x14, 0x96, 0xbb,
- 0xcc, 0xc1, 0x69, 0xa5, 0x78, 0x55, 0xa0, 0x0f, 0x51, 0xc7, 0x1d, 0xfa, 0x61, 0xa4, 0x0e, 0x53,
- 0x40, 0xd4, 0x0c, 0x85, 0xe1, 0x16, 0xdf, 0x89, 0x26, 0xfc, 0x4b, 0x91, 0xdc, 0xaf, 0x12, 0xb0,
- 0xb4, 0xcf, 0x78, 0x40, 0x87, 0x9c, 0x3b, 0xc4, 0x1b, 0x10, 0x45, 0xa6, 0x8f, 0xd0, 0x80, 0xfb,
- 0xe4, 0xde, 0x25, 0x0c, 0x28, 0xba, 0x52, 0x53, 0x0f, 0xdb, 0xa4, 0x00, 0xde, 0x25, 0xb5, 0xab,
- 0x22, 0x43, 0x2e, 0xe3, 0x3e, 0x69, 0xca, 0x26, 0x30, 0x80, 0xe4, 0x0e, 0x65, 0x34, 0x4a, 0x9b,
- 0x4b, 0x3f, 0x42, 0x75, 0x37, 0xc9, 0xfb, 0x17, 0x51, 0x47, 0xde, 0x42, 0x76, 0x47, 0xf4, 0xb3,
- 0xd6, 0x05, 0x3d, 0x8c, 0x4c, 0xb0, 0xf2, 0x70, 0xe3, 0x52, 0x1e, 0xfe, 0x31, 0x01, 0xd9, 0xad,
- 0x06, 0x37, 0x4f, 0x74, 0xce, 0x50, 0x8b, 0xac, 0xd5, 0x97, 0x54, 0xbd, 0x83, 0xaa, 0x3f, 0xa1,
- 0x1f, 0x5f, 0x26, 0xb5, 0x92, 0xdc, 0x43, 0x7d, 0x62, 0xa3, 0xfd, 0x21, 0x01, 0x19, 0x8d, 0x9d,
- 0x30, 0x87, 0xff, 0x5f, 0x0c, 0x71, 0x50, 0xb5, 0x30, 0xa4, 0x02, 0xf3, 0x83, 0x9b, 0x20, 0xdc,
- 0x2f, 0xcf, 0x7a, 0x16, 0xc9, 0x46, 0x99, 0xa2, 0xca, 0x55, 0x92, 0x8f, 0x54, 0x29, 0x1b, 0xe4,
- 0x57, 0x90, 0xf5, 0x21, 0xaa, 0xe1, 0x52, 0x10, 0x35, 0xd3, 0x47, 0xf5, 0xd8, 0xf4, 0x16, 0x22,
- 0xdf, 0x20, 0xd7, 0xa2, 0x91, 0xbd, 0x71, 0x96, 0x4b, 0x3a, 0xb0, 0x28, 0xa3, 0x35, 0xac, 0x20,
- 0x0c, 0x1a, 0x5b, 0x82, 0x54, 0xf7, 0x47, 0xcf, 0x53, 0x26, 0x02, 0x74, 0xe4, 0x0f, 0xd0, 0xc5,
- 0x9a, 0xcb, 0xb3, 0xa3, 0x24, 0x9b, 0x4a, 0x06, 0x0b, 0x41, 0xd8, 0xcb, 0xf4, 0x35, 0xeb, 0xa8,
- 0x80, 0x92, 0xeb, 0xb1, 0x0a, 0xbc, 0x7e, 0xe6, 0x0b, 0xbf, 0xf5, 0x72, 0x6e, 0x15, 0x77, 0xd5,
- 0x67, 0xc3, 0xb3, 0x2f, 0x37, 0xee, 0x5e, 0x95, 0x43, 0x33, 0xa2, 0xe1, 0xf4, 0x60, 0x20, 0x3f,
- 0x14, 0x99, 0x10, 0x1e, 0xbd, 0x81, 0x70, 0x2b, 0xe4, 0x4a, 0x14, 0x9c, 0xbc, 0xab, 0x6b, 0x90,
- 0x1e, 0x58, 0xac, 0x82, 0x12, 0x67, 0xf2, 0x42, 0xc4, 0xac, 0xcd, 0xf5, 0x46, 0x07, 0x64, 0x71,
- 0x48, 0x89, 0x0a, 0xc9, 0x13, 0x48, 0x57, 0xb9, 0xc3, 0xf4, 0x76, 0x45, 0x6f, 0xbc, 0x66, 0xdc,
- 0x2d, 0xf7, 0x38, 0x59, 0x0a, 0x44, 0x5a, 0x32, 0xca, 0x3d, 0x1e, 0xbb, 0x81, 0x46, 0xd6, 0x13,
- 0x64, 0x0f, 0x5b, 0x1e, 0x66, 0x9e, 0x30, 0x05, 0x54, 0xea, 0x9c, 0x31, 0x3b, 0x08, 0xe3, 0x97,
- 0x3a, 0x74, 0xe4, 0x4e, 0x82, 0x3c, 0x85, 0xac, 0x82, 0xd9, 0x39, 0xd6, 0x3b, 0x2d, 0x86, 0x13,
- 0xbf, 0x78, 0x97, 0x73, 0x01, 0x24, 0xdf, 0x12, 0x04, 0x3b, 0x82, 0xb9, 0x7e, 0x42, 0xe4, 0x37,
- 0xa5, 0x60, 0x53, 0x1e, 0x0e, 0x57, 0xdc, 0x66, 0x55, 0xd1, 0xf2, 0x72, 0x92, 0x91, 0xfd, 0x93,
- 0xff, 0xfb, 0x45, 0xd4, 0x8c, 0x32, 0x1f, 0x45, 0xa4, 0xd7, 0x51, 0x45, 0x9e, 0xf6, 0x13, 0x12,
- 0x18, 0x79, 0x8a, 0x43, 0xf6, 0x02, 0xed, 0xf6, 0xa3, 0x47, 0xbe, 0xb4, 0xfb, 0xbf, 0x4a, 0x84,
- 0x0d, 0x0f, 0xa0, 0x4a, 0xc3, 0x0d, 0xc8, 0xc8, 0x62, 0xf1, 0xfd, 0x0c, 0xff, 0x00, 0x55, 0x5c,
- 0xcb, 0x9f, 0xa1, 0x42, 0x58, 0x6f, 0x40, 0x46, 0x76, 0x41, 0xe7, 0x6a, 0x89, 0xdb, 0x4f, 0xca,
- 0x97, 0x8d, 0xb3, 0x7c, 0x51, 0x07, 0x23, 0xf0, 0x65, 0xe6, 0xdc, 0x83, 0x11, 0x88, 0x58, 0xe8,
- 0x60, 0x04, 0xb4, 0x90, 0x67, 0xd8, 0x6c, 0xe3, 0xd5, 0xe3, 0x46, 0x37, 0xdb, 0x92, 0xe7, 0x75,
- 0x70, 0x64, 0x25, 0xfe, 0xe2, 0x71, 0xc9, 0xe7, 0x30, 0xed, 0x8d, 0x64, 0x03, 0x60, 0xb9, 0xb8,
- 0xd9, 0x2e, 0xbd, 0x89, 0xb0, 0xd7, 0xe9, 0xd5, 0x48, 0x58, 0x97, 0x59, 0xcd, 0x1a, 0x17, 0x68,
- 0x2f, 0xb0, 0x3f, 0x0a, 0x8c, 0xb4, 0x87, 0xdf, 0x3d, 0x43, 0x33, 0xef, 0x70, 0xe5, 0x11, 0xc7,
- 0x48, 0xc8, 0xa9, 0x97, 0x4e, 0xb3, 0x4e, 0xbe, 0x00, 0xb2, 0xcf, 0xf8, 0xd0, 0x54, 0x7b, 0x68,
- 0x40, 0x15, 0x35, 0xf8, 0x0e, 0xc7, 0x23, 0x88, 0x8d, 0x33, 0x74, 0xe2, 0xc2, 0x6c, 0xd5, 0x6c,
- 0xf7, 0x2c, 0x9d, 0x33, 0x5c, 0x4f, 0x56, 0xfb, 0x81, 0xf0, 0x93, 0xd5, 0x77, 0xa8, 0xb8, 0x3b,
- 0x3f, 0x34, 0x34, 0x08, 0xc6, 0x48, 0x21, 0xd5, 0x04, 0x92, 0xd8, 0x99, 0x3b, 0x30, 0xd3, 0x1f,
- 0x5f, 0x93, 0x2b, 0x9e, 0xc2, 0xd0, 0x60, 0x3b, 0x1f, 0xcf, 0xa2, 0x23, 0xe4, 0x00, 0x40, 0xbe,
- 0xf1, 0xe0, 0x80, 0x27, 0xe5, 0xef, 0x08, 0x62, 0x37, 0xb4, 0x7a, 0x55, 0xa4, 0x73, 0xc2, 0xc6,
- 0xc1, 0x6a, 0xf5, 0x32, 0xab, 0xde, 0x73, 0x2e, 0x81, 0x37, 0x78, 0x23, 0x3b, 0xb9, 0x5b, 0xf4,
- 0x2d, 0x17, 0x80, 0x9f, 0x43, 0x52, 0x14, 0x8f, 0xb7, 0x1c, 0xbf, 0x89, 0x91, 0x25, 0x2f, 0x72,
- 0xf2, 0x13, 0x59, 0x97, 0x35, 0xcc, 0xa6, 0xc9, 0x9c, 0xfc, 0x82, 0x47, 0xd7, 0x18, 0xef, 0x39,
- 0x1d, 0xe4, 0xba, 0x74, 0x05, 0x81, 0x17, 0x49, 0xd6, 0x0b, 0xa8, 0x1f, 0xea, 0x10, 0x92, 0x55,
- 0xdf, 0x63, 0x7f, 0xa4, 0xea, 0x7d, 0x7c, 0x8b, 0x35, 0x37, 0x84, 0xea, 0x87, 0x39, 0x86, 0x6c,
- 0x95, 0xeb, 0x0e, 0xf7, 0x3e, 0x3d, 0x8a, 0x96, 0xd4, 0xee, 0x90, 0xfe, 0x57, 0xd9, 0xa1, 0x4f,
- 0x92, 0x83, 0xc3, 0x1c, 0x38, 0x2d, 0xaa, 0x64, 0xd0, 0xfe, 0xb4, 0xd5, 0x15, 0x98, 0x35, 0xfc,
- 0x6a, 0x23, 0x8e, 0xc9, 0xa3, 0xc4, 0xc6, 0xb6, 0x05, 0x59, 0xdb, 0x69, 0xe1, 0x8d, 0xd1, 0xb0,
- 0x1d, 0x43, 0xe1, 0x6c, 0xa7, 0xe4, 0x3c, 0xbc, 0x82, 0x3f, 0x4b, 0xf8, 0x65, 0xa1, 0x65, 0xf2,
- 0xe3, 0x5e, 0x5d, 0x44, 0xa7, 0xe8, 0x49, 0xaa, 0x9f, 0x87, 0xdc, 0xf6, 0x7e, 0x2c, 0xb2, 0x59,
- 0x6c, 0xd9, 0x8a, 0xf6, 0xb7, 0xd1, 0xa5, 0xb2, 0x87, 0xf7, 0xc2, 0x3f, 0x5e, 0xaf, 0x8c, 0x56,
- 0xc6, 0x2a, 0xe3, 0x95, 0x89, 0xca, 0x64, 0x65, 0xaa, 0x32, 0x5d, 0x9f, 0xc4, 0xb5, 0x9b, 0xff,
- 0x0d, 0x00, 0x00, 0xff, 0xff, 0xb9, 0x88, 0xe2, 0x00, 0x78, 0x22, 0x00, 0x00,
+ // 2613 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0x5b, 0x6f, 0x1b, 0xc7,
+ 0xf5, 0x17, 0x75, 0xd7, 0x21, 0x25, 0x91, 0x43, 0x5d, 0x68, 0x4a, 0xb2, 0xad, 0xc9, 0x4d, 0x51,
+ 0x62, 0xd2, 0xb1, 0x9c, 0x20, 0xff, 0xf8, 0x1f, 0x34, 0xba, 0x59, 0x61, 0x6d, 0x99, 0xec, 0x52,
+ 0xb2, 0xd3, 0x36, 0x06, 0xb1, 0xe4, 0x0e, 0xa9, 0x85, 0x97, 0x5c, 0x76, 0x77, 0x28, 0x5b, 0x30,
+ 0x82, 0x02, 0xe9, 0x25, 0x7d, 0xcf, 0x7b, 0x9f, 0x5a, 0x14, 0xe8, 0x77, 0xc9, 0x43, 0xd1, 0xa7,
+ 0xbe, 0x16, 0x7d, 0xe8, 0x27, 0xc8, 0x73, 0x31, 0x67, 0x66, 0xc9, 0x5d, 0xee, 0xae, 0x24, 0xa6,
+ 0x01, 0xfa, 0x24, 0xed, 0x39, 0x67, 0x7e, 0xe7, 0x36, 0x73, 0xe6, 0xec, 0x59, 0x42, 0xfe, 0xdc,
+ 0xb6, 0xf8, 0x99, 0x5e, 0xeb, 0x3a, 0x36, 0xb7, 0xdd, 0xa2, 0x7c, 0x2a, 0xe0, 0x13, 0x99, 0x96,
+ 0x4f, 0xf9, 0xf5, 0x96, 0x6d, 0xb7, 0x2c, 0x56, 0xd4, 0xbb, 0x66, 0x51, 0xef, 0x74, 0x6c, 0xae,
+ 0x73, 0xd3, 0xee, 0xb8, 0x52, 0x2a, 0xbf, 0xa6, 0xb8, 0xf8, 0x54, 0xef, 0x35, 0x8b, 0xac, 0xdd,
+ 0xe5, 0x17, 0x8a, 0x99, 0x0b, 0xc2, 0xb7, 0x19, 0x57, 0xe0, 0xf9, 0x21, 0xc5, 0x0d, 0xbb, 0xdd,
+ 0xb6, 0x3b, 0xd1, 0xbc, 0x33, 0xa6, 0x5b, 0xfc, 0x4c, 0xf1, 0x68, 0x90, 0x67, 0xd9, 0x2d, 0xb3,
+ 0xa1, 0x5b, 0x35, 0x83, 0x9d, 0x9b, 0x0d, 0x16, 0xbd, 0x3e, 0xc0, 0x5b, 0x0b, 0xf2, 0x74, 0x43,
+ 0xef, 0x72, 0xe6, 0x28, 0xe6, 0xad, 0x20, 0xd3, 0xee, 0xb2, 0x4e, 0xd3, 0xb2, 0x5f, 0xd6, 0x3e,
+ 0xd8, 0x89, 0x11, 0x68, 0x37, 0xcc, 0x5a, 0xdb, 0xac, 0xd7, 0x8c, 0xba, 0x12, 0xd8, 0x8c, 0x10,
+ 0xd0, 0x2d, 0xdd, 0x69, 0x0f, 0x44, 0x6e, 0x06, 0x45, 0xd8, 0x2b, 0x5e, 0x6b, 0xd8, 0x9d, 0xa6,
+ 0xd9, 0x92, 0x7c, 0xfa, 0xa7, 0x04, 0x24, 0x0f, 0xd0, 0xe4, 0x23, 0xc7, 0xee, 0x75, 0xc9, 0x32,
+ 0x8c, 0x9b, 0x46, 0x2e, 0x71, 0x3b, 0xb1, 0x35, 0xb7, 0x37, 0xf5, 0xef, 0xef, 0xbf, 0xdb, 0x48,
+ 0x68, 0xe3, 0xa6, 0x41, 0x4a, 0xb0, 0x18, 0x74, 0xde, 0xcd, 0x8d, 0xdf, 0x9e, 0xd8, 0x4a, 0xde,
+ 0x5b, 0x2e, 0xa8, 0x2c, 0x3e, 0x96, 0x6c, 0x89, 0xb5, 0x37, 0xf7, 0xcf, 0xef, 0xbf, 0xdb, 0x98,
+ 0x14, 0x58, 0xda, 0x82, 0xe5, 0xe7, 0xb8, 0x64, 0x07, 0x66, 0x3c, 0x88, 0x09, 0x84, 0x58, 0xf0,
+ 0x20, 0xc2, 0x6b, 0x3d, 0x49, 0xfa, 0x7f, 0x90, 0xf2, 0x59, 0xe9, 0x92, 0x77, 0x61, 0xca, 0xe4,
+ 0xac, 0xed, 0xe6, 0x12, 0x08, 0x91, 0x0d, 0x42, 0xa0, 0x90, 0x26, 0x25, 0xe8, 0x1f, 0x13, 0x40,
+ 0x0e, 0xcf, 0x59, 0x87, 0x3f, 0x34, 0x2d, 0xce, 0x1c, 0xad, 0x67, 0xb1, 0x47, 0xec, 0x82, 0x7e,
+ 0x93, 0x80, 0xec, 0x10, 0xf9, 0xe4, 0xa2, 0xcb, 0xc8, 0x02, 0x40, 0x13, 0x29, 0x35, 0xdd, 0xb2,
+ 0xd2, 0x63, 0x24, 0x05, 0xb3, 0x0d, 0x9d, 0xb3, 0x96, 0xed, 0x5c, 0xa4, 0x13, 0x24, 0x0d, 0x29,
+ 0xb7, 0x57, 0xaf, 0xf5, 0x29, 0xe3, 0x84, 0xc0, 0xc2, 0x8b, 0xae, 0x59, 0x63, 0x02, 0xaa, 0xc6,
+ 0x2f, 0xba, 0x2c, 0x3d, 0x41, 0x96, 0x21, 0x23, 0x83, 0xec, 0x27, 0x4f, 0x0a, 0xb2, 0xf4, 0xc7,
+ 0x4f, 0x9e, 0xa2, 0x26, 0x2c, 0x0e, 0x19, 0x42, 0x3e, 0x83, 0x89, 0x17, 0xec, 0x02, 0xd3, 0xb0,
+ 0x70, 0xaf, 0xe0, 0x39, 0x17, 0xf6, 0xa2, 0x10, 0xe1, 0x81, 0x26, 0x96, 0x92, 0x25, 0x98, 0x3a,
+ 0xd7, 0xad, 0x1e, 0xcb, 0x8d, 0x8b, 0x54, 0x6a, 0xf2, 0x81, 0xfe, 0x25, 0x01, 0x49, 0xdf, 0x92,
+ 0xb8, 0x6c, 0xaf, 0xc0, 0x34, 0xeb, 0xe8, 0x75, 0x4b, 0xae, 0x9e, 0xd5, 0xd4, 0x13, 0x59, 0x83,
+ 0x39, 0xe5, 0x80, 0x69, 0xe4, 0x26, 0x10, 0x78, 0x56, 0x12, 0x4a, 0x06, 0xd9, 0x00, 0x18, 0xb8,
+ 0x95, 0x9b, 0x44, 0xee, 0x1c, 0x52, 0x30, 0xae, 0x77, 0x60, 0xca, 0xe9, 0x59, 0xcc, 0xcd, 0x4d,
+ 0x61, 0xc6, 0x56, 0x63, 0x9c, 0xd2, 0xa4, 0x14, 0xfd, 0x14, 0x52, 0x3e, 0x8e, 0x4b, 0xee, 0xc0,
+ 0x8c, 0x4c, 0x4b, 0x28, 0xe5, 0x7e, 0x00, 0x4f, 0x86, 0xbe, 0x80, 0xd4, 0xbe, 0xed, 0xb0, 0x52,
+ 0xc7, 0xe5, 0x7a, 0xa7, 0xc1, 0xc8, 0xdb, 0x90, 0x34, 0xd5, 0xff, 0xb5, 0x61, 0x8f, 0xc1, 0xe3,
+ 0x94, 0x0c, 0xb2, 0x03, 0xd3, 0xb2, 0x00, 0xa0, 0xe7, 0xc9, 0x7b, 0x4b, 0x9e, 0x96, 0xcf, 0x91,
+ 0x5a, 0xe5, 0x3a, 0xef, 0xb9, 0x7b, 0x53, 0x62, 0x87, 0x8e, 0x69, 0x4a, 0x94, 0x3e, 0x80, 0x79,
+ 0xbf, 0x32, 0x97, 0x6c, 0x07, 0x77, 0x67, 0x1f, 0xc4, 0x2f, 0xe5, 0x6d, 0xcf, 0x0f, 0x61, 0xb1,
+ 0xdc, 0x6e, 0x98, 0x27, 0xcc, 0xe5, 0x1a, 0xfb, 0x55, 0x8f, 0xb9, 0x9c, 0x2c, 0x0c, 0xb2, 0x82,
+ 0xe9, 0x20, 0x30, 0xd9, 0xeb, 0x99, 0x86, 0x4a, 0x25, 0xfe, 0x4f, 0x7f, 0x0d, 0x29, 0xb9, 0xc4,
+ 0xed, 0xda, 0x1d, 0x97, 0x91, 0x9f, 0xc0, 0xb4, 0xc3, 0xdc, 0x9e, 0xc5, 0xd5, 0xa6, 0x79, 0xc7,
+ 0xd3, 0xe9, 0x97, 0x0a, 0x3c, 0x68, 0x28, 0xae, 0xa9, 0x65, 0xb4, 0x00, 0x24, 0xcc, 0x25, 0x49,
+ 0x98, 0xa9, 0x9e, 0xee, 0xef, 0x1f, 0x56, 0xab, 0xe9, 0x31, 0xf1, 0xf0, 0x70, 0xb7, 0xf4, 0xf8,
+ 0x54, 0x3b, 0x4c, 0x27, 0xe8, 0x73, 0x98, 0x7d, 0x2a, 0xf6, 0x54, 0x95, 0x85, 0x0d, 0xfe, 0x18,
+ 0x52, 0xb2, 0x0c, 0xc9, 0x53, 0xa0, 0x62, 0x99, 0x2d, 0xa8, 0xca, 0xb3, 0x2b, 0x78, 0xfb, 0xf8,
+ 0xff, 0xe7, 0x63, 0x5a, 0x52, 0x1f, 0x3c, 0xee, 0xcd, 0xa8, 0x6d, 0x4b, 0xff, 0x31, 0x09, 0xd3,
+ 0x4f, 0xd1, 0x03, 0x72, 0x0b, 0x66, 0xce, 0x99, 0xe3, 0x9a, 0x76, 0x27, 0x98, 0x37, 0x8f, 0x4a,
+ 0x3e, 0x82, 0x59, 0x55, 0x59, 0xbd, 0xaa, 0xb4, 0xe8, 0x79, 0xbf, 0x2b, 0xe9, 0xfe, 0x9a, 0xd2,
+ 0x97, 0x8d, 0x2a, 0x6a, 0x13, 0xff, 0x7d, 0x51, 0x9b, 0xbc, 0x6e, 0x51, 0x23, 0x9f, 0x41, 0x4a,
+ 0x1d, 0x27, 0x71, 0x64, 0xbc, 0x93, 0x41, 0x82, 0x2b, 0xc5, 0xe1, 0xf1, 0xaf, 0x4e, 0x1a, 0x7d,
+ 0xb2, 0x4b, 0xf6, 0x61, 0x5e, 0x21, 0xb4, 0xb0, 0x2e, 0xe6, 0xa6, 0x63, 0xcb, 0xa1, 0x1f, 0x43,
+ 0xa9, 0x55, 0xb5, 0x74, 0x1f, 0xe6, 0xe5, 0xc1, 0xf5, 0x0e, 0xd8, 0x4c, 0xec, 0x01, 0x0b, 0x80,
+ 0x30, 0xff, 0xf9, 0xfc, 0x19, 0x64, 0x06, 0xf7, 0x93, 0xce, 0xf5, 0xba, 0xee, 0xb2, 0xdc, 0xba,
+ 0x02, 0x12, 0x9c, 0xc2, 0xb1, 0x59, 0x97, 0xe6, 0x1c, 0xe8, 0x5c, 0xdf, 0x4b, 0x0b, 0xa0, 0xa4,
+ 0xaf, 0x9e, 0x68, 0x8b, 0x42, 0x4a, 0x08, 0xa9, 0xd5, 0xe4, 0x19, 0x64, 0xfd, 0x37, 0x9a, 0x07,
+ 0xba, 0xa1, 0x52, 0x84, 0xa0, 0xb8, 0x95, 0x2e, 0x85, 0x45, 0xb3, 0xa4, 0x98, 0x42, 0xa0, 0x7f,
+ 0x4e, 0x40, 0xba, 0xca, 0xac, 0xe6, 0xf5, 0x0e, 0xd0, 0xb0, 0xa4, 0x9f, 0xe0, 0x3f, 0x40, 0x15,
+ 0x58, 0x08, 0x72, 0xe2, 0x0f, 0x0f, 0xc9, 0xc0, 0xfc, 0x93, 0xf2, 0x49, 0xad, 0x7a, 0x5a, 0xa9,
+ 0x94, 0xb5, 0x93, 0xc3, 0x83, 0xf4, 0xb8, 0x20, 0x9d, 0x3e, 0x79, 0xf4, 0xa4, 0xfc, 0xec, 0x49,
+ 0xed, 0x50, 0xd3, 0xca, 0x5a, 0x7a, 0x82, 0x96, 0x21, 0x53, 0x6e, 0xee, 0xb6, 0x58, 0x87, 0x57,
+ 0x7b, 0x75, 0xb7, 0xe1, 0x98, 0x75, 0xe6, 0x88, 0x32, 0x6b, 0x37, 0x75, 0x41, 0xec, 0x17, 0x32,
+ 0x6d, 0x4e, 0x51, 0x4a, 0x86, 0x28, 0xd1, 0xea, 0xc6, 0xef, 0x17, 0x8c, 0x59, 0x49, 0x28, 0x19,
+ 0xf4, 0x01, 0xc0, 0x31, 0x6b, 0xd7, 0x99, 0xe3, 0x9e, 0x99, 0x5d, 0x81, 0x84, 0xbb, 0xa6, 0xd6,
+ 0xd1, 0xdb, 0xcc, 0x43, 0x42, 0xca, 0x13, 0xbd, 0xcd, 0xd4, 0xa1, 0x1e, 0xf7, 0x0e, 0x35, 0x3d,
+ 0x84, 0xd4, 0x43, 0xcb, 0x7e, 0x79, 0xcc, 0xb8, 0x2e, 0x72, 0x41, 0x3e, 0x84, 0xe9, 0x36, 0xf3,
+ 0x15, 0xe4, 0x8d, 0x82, 0xbf, 0x83, 0xb1, 0x9b, 0xdd, 0x1a, 0xb2, 0x55, 0x0d, 0xd0, 0x94, 0xf0,
+ 0xbd, 0xbf, 0xdd, 0x85, 0x79, 0x79, 0xb0, 0xab, 0xcc, 0x11, 0x49, 0x22, 0xcf, 0x60, 0xfe, 0x88,
+ 0x71, 0x9f, 0x61, 0x2b, 0x05, 0xd9, 0xe5, 0x15, 0xbc, 0x2e, 0xaf, 0x70, 0x28, 0xba, 0xbc, 0x7c,
+ 0xff, 0x64, 0x0c, 0x64, 0x69, 0xfe, 0xeb, 0xbf, 0xff, 0xeb, 0xdb, 0xf1, 0x25, 0x42, 0xb0, 0x61,
+ 0x3c, 0xff, 0xa0, 0xd8, 0x1e, 0xe0, 0x3c, 0x87, 0xf4, 0x69, 0xd7, 0xd0, 0x39, 0xf3, 0x61, 0x47,
+ 0x60, 0xe4, 0x63, 0xf4, 0xd1, 0x0d, 0xc4, 0x5e, 0xa5, 0x11, 0xd8, 0x9f, 0x24, 0xb6, 0xc9, 0x01,
+ 0xcc, 0x1d, 0x31, 0xae, 0x8a, 0x54, 0x9c, 0xcd, 0xfd, 0x3a, 0x20, 0xe5, 0xe8, 0x22, 0x62, 0xce,
+ 0x91, 0x19, 0x85, 0x49, 0x9e, 0x43, 0xe6, 0xb1, 0xe9, 0xf2, 0xe0, 0x05, 0x12, 0x87, 0xb6, 0x1c,
+ 0x75, 0x93, 0xb8, 0xf4, 0x06, 0x82, 0x66, 0x49, 0xc6, 0x33, 0xd4, 0xec, 0x23, 0x55, 0x61, 0xf1,
+ 0x88, 0x05, 0xd0, 0x09, 0x14, 0x54, 0xff, 0x5b, 0x3a, 0xc8, 0x47, 0x5e, 0x4d, 0xf4, 0x26, 0xe2,
+ 0xe5, 0xc8, 0x4a, 0x08, 0xaf, 0xf8, 0xda, 0x34, 0xbe, 0x22, 0x1a, 0xa4, 0x84, 0xcd, 0xbb, 0x5e,
+ 0x21, 0x8d, 0x33, 0x37, 0x3d, 0x54, 0x86, 0x5d, 0x9a, 0x43, 0x64, 0x42, 0xd2, 0x1e, 0x72, 0xbf,
+ 0x18, 0x33, 0x20, 0x02, 0xf3, 0x71, 0xb0, 0xae, 0xc6, 0x21, 0xaf, 0x44, 0x56, 0x68, 0x97, 0xde,
+ 0x42, 0xfc, 0x1b, 0x64, 0xd5, 0xc3, 0x1f, 0x2a, 0xf0, 0xe4, 0x97, 0x90, 0x3e, 0x62, 0x41, 0x2d,
+ 0x81, 0x80, 0x44, 0x97, 0x7e, 0xfa, 0x26, 0xe2, 0xde, 0x24, 0xeb, 0x31, 0xb8, 0x32, 0x2e, 0x4d,
+ 0x58, 0x09, 0xf9, 0x50, 0xb1, 0x1d, 0xee, 0x46, 0xc7, 0x5c, 0xc9, 0xa1, 0x04, 0xdd, 0x46, 0x0d,
+ 0x6f, 0x12, 0x7a, 0x99, 0x86, 0x62, 0x17, 0xd1, 0x5e, 0xc1, 0xd2, 0xb0, 0x13, 0x02, 0x84, 0x2c,
+ 0x47, 0x20, 0x97, 0x8c, 0x7c, 0x36, 0x82, 0x4c, 0xef, 0xa3, 0xbe, 0x02, 0x79, 0xff, 0x6a, 0x7d,
+ 0xc5, 0xd7, 0xe2, 0x4f, 0x4d, 0x78, 0xf8, 0xbb, 0x04, 0xac, 0x1e, 0x62, 0x33, 0x78, 0x6d, 0xed,
+ 0x71, 0xa7, 0xeb, 0x01, 0x1a, 0xf0, 0x21, 0xdd, 0x19, 0xc5, 0x80, 0xa2, 0xea, 0x44, 0xbf, 0x49,
+ 0x40, 0xee, 0xc0, 0x74, 0x7f, 0x14, 0x43, 0xfe, 0x1f, 0x0d, 0xf9, 0x88, 0xde, 0x1f, 0xc9, 0x10,
+ 0x43, 0x6a, 0x27, 0x46, 0x44, 0xce, 0x45, 0x9d, 0x0c, 0xe6, 0x9c, 0x04, 0x8a, 0x23, 0xf2, 0xaf,
+ 0x99, 0xf1, 0x26, 0x62, 0xfd, 0x26, 0x01, 0xeb, 0xb2, 0x96, 0x85, 0x14, 0x9d, 0xa0, 0x19, 0xeb,
+ 0x21, 0x05, 0x48, 0x97, 0x6b, 0x62, 0x5d, 0xbf, 0x83, 0x26, 0xbc, 0x43, 0xaf, 0x61, 0x82, 0xa8,
+ 0x78, 0xbf, 0x4d, 0xc0, 0x46, 0x84, 0x15, 0xc7, 0xa2, 0xb2, 0x4b, 0x33, 0xd6, 0x02, 0x66, 0x20,
+ 0xe3, 0xd8, 0x36, 0xae, 0xb0, 0xa2, 0x80, 0x56, 0x6c, 0xd1, 0x37, 0x2e, 0xb5, 0x42, 0xde, 0x1f,
+ 0xc2, 0x8c, 0x16, 0xac, 0x86, 0x42, 0x8e, 0xaa, 0x82, 0x31, 0xcf, 0x86, 0x6d, 0x71, 0xe9, 0x7b,
+ 0xa8, 0xeb, 0x2d, 0x72, 0x1d, 0x5d, 0x84, 0xc3, 0x5a, 0x64, 0x6e, 0x55, 0xe3, 0xe4, 0x57, 0xb6,
+ 0x1a, 0x8a, 0xbf, 0x14, 0xa2, 0x77, 0x51, 0xe1, 0x36, 0xd9, 0xba, 0x32, 0xc4, 0xaa, 0x87, 0x23,
+ 0xdf, 0x26, 0x60, 0x33, 0x26, 0xd7, 0x88, 0x29, 0x23, 0xbd, 0x19, 0xad, 0xf0, 0x3a, 0x59, 0xdf,
+ 0x41, 0x93, 0xee, 0xd0, 0x6b, 0x9b, 0x24, 0x82, 0x5e, 0x86, 0xa4, 0x88, 0xc5, 0x55, 0x85, 0x79,
+ 0x31, 0xd8, 0x7a, 0xba, 0x74, 0x15, 0x95, 0x65, 0xc8, 0xa2, 0xa7, 0xcc, 0xab, 0xc4, 0x65, 0x98,
+ 0x1f, 0x00, 0x96, 0x8c, 0x78, 0xc8, 0xe4, 0x20, 0xcc, 0x11, 0x57, 0x9d, 0x84, 0x33, 0x0d, 0x97,
+ 0x9c, 0x42, 0x5a, 0x63, 0x0d, 0xbb, 0xd3, 0x30, 0x2d, 0xe6, 0x99, 0xe9, 0x5f, 0x1b, 0x1b, 0x8f,
+ 0x75, 0xc4, 0x5c, 0xa1, 0x61, 0x4c, 0xe1, 0xf8, 0x21, 0x5e, 0xf3, 0x11, 0x57, 0xc5, 0x50, 0x8b,
+ 0xef, 0xc1, 0x90, 0xa5, 0x21, 0x4f, 0xe5, 0xdd, 0xf0, 0x53, 0x48, 0xed, 0x3b, 0x4c, 0xe7, 0xca,
+ 0x34, 0x32, 0xb4, 0x3a, 0x84, 0xa6, 0x1a, 0x1b, 0x3a, 0x1c, 0x37, 0x61, 0xd2, 0x33, 0x48, 0xc9,
+ 0x22, 0x1c, 0x61, 0x55, 0x9c, 0x93, 0x6f, 0x20, 0xde, 0x06, 0x5d, 0x8b, 0xb2, 0xce, 0x2b, 0xab,
+ 0x3f, 0x87, 0x79, 0x55, 0x55, 0x47, 0x40, 0x56, 0x77, 0x23, 0x5d, 0x8f, 0x44, 0xf6, 0xea, 0xe4,
+ 0x33, 0x48, 0x69, 0xac, 0x6e, 0xdb, 0xfc, 0x47, 0xb3, 0xd9, 0x41, 0x38, 0x01, 0x7c, 0xc0, 0x2c,
+ 0xc6, 0x7f, 0x40, 0x30, 0xb6, 0xa3, 0x81, 0x0d, 0x84, 0x23, 0x75, 0xc8, 0x3c, 0xb4, 0x9d, 0x06,
+ 0x1b, 0x19, 0xfd, 0x5d, 0x44, 0x7f, 0x63, 0x7b, 0x33, 0x12, 0xbd, 0x29, 0x30, 0x6b, 0x4a, 0x47,
+ 0x0f, 0xe6, 0x0f, 0xec, 0x97, 0x1d, 0xcb, 0xd6, 0x8d, 0x52, 0x5b, 0x6f, 0xb1, 0xc1, 0xdd, 0x85,
+ 0x8f, 0x1e, 0x2f, 0xbf, 0xec, 0xa9, 0x2d, 0x77, 0x99, 0x83, 0x13, 0x51, 0xf1, 0x3a, 0x42, 0x3f,
+ 0x42, 0x4d, 0x77, 0xe9, 0x7b, 0x91, 0x9a, 0x4c, 0x01, 0x51, 0x33, 0x14, 0x86, 0x5b, 0x7c, 0x2d,
+ 0x1a, 0xfd, 0xaf, 0xc4, 0x06, 0xfa, 0x3a, 0x01, 0x2b, 0x47, 0x8c, 0x07, 0x74, 0xc8, 0xd9, 0x46,
+ 0xbc, 0x01, 0x51, 0x64, 0xfa, 0x09, 0x1a, 0x70, 0x9f, 0xdc, 0x1b, 0xc1, 0x80, 0xa2, 0x2b, 0x35,
+ 0xf5, 0xb0, 0x15, 0x0b, 0xe0, 0x8d, 0xa8, 0x5d, 0x15, 0x32, 0x32, 0x8a, 0xfb, 0xa4, 0x29, 0x1b,
+ 0xcd, 0x00, 0x92, 0x3b, 0x94, 0xd7, 0x28, 0x6d, 0x2e, 0x7d, 0x1f, 0xd5, 0xbd, 0x4d, 0xde, 0xbc,
+ 0x8e, 0x3a, 0xf2, 0x0a, 0xb2, 0xfb, 0xa2, 0x67, 0xb6, 0xae, 0xe9, 0x61, 0x64, 0x82, 0x95, 0x87,
+ 0xdb, 0x23, 0x79, 0xf8, 0x87, 0x04, 0x64, 0x77, 0x1b, 0xdc, 0x3c, 0xd7, 0x39, 0x43, 0x2d, 0xf2,
+ 0x3e, 0x18, 0x51, 0xf5, 0x3e, 0xaa, 0xfe, 0x94, 0x7e, 0x3c, 0x4a, 0x6a, 0x25, 0xb9, 0x87, 0xfa,
+ 0xc4, 0x46, 0xfb, 0x7d, 0x02, 0x32, 0x1a, 0x3b, 0x67, 0x0e, 0xff, 0x9f, 0x18, 0xe2, 0xa0, 0x6a,
+ 0x61, 0x48, 0x05, 0x16, 0x07, 0xb7, 0x4d, 0xb8, 0x27, 0x9f, 0xf7, 0x2c, 0x92, 0xcd, 0x38, 0x45,
+ 0x95, 0xeb, 0x24, 0x1f, 0xa9, 0x52, 0x36, 0xe1, 0xcf, 0x21, 0xeb, 0x43, 0x54, 0x03, 0xac, 0x20,
+ 0x6a, 0xa6, 0x8f, 0xea, 0xb1, 0xe9, 0x3b, 0x88, 0xbc, 0x49, 0x6e, 0x45, 0x23, 0x7b, 0x23, 0x33,
+ 0x97, 0x74, 0x60, 0x59, 0x46, 0x6b, 0x58, 0x41, 0x18, 0x34, 0xb6, 0x10, 0xa9, 0x0e, 0x93, 0x5e,
+ 0xa5, 0x4c, 0x04, 0xe8, 0xd4, 0x1f, 0xa0, 0xeb, 0x35, 0xb0, 0x97, 0x47, 0x49, 0x36, 0xae, 0x0c,
+ 0x96, 0x82, 0xb0, 0xa3, 0xf4, 0x4e, 0x5b, 0xa8, 0x80, 0x92, 0xdb, 0xb1, 0x0a, 0xbc, 0x9e, 0xe9,
+ 0x4b, 0xbf, 0xf5, 0x72, 0x36, 0x16, 0xd7, 0x4e, 0x64, 0xc3, 0xf3, 0x35, 0x37, 0xee, 0xee, 0x96,
+ 0x83, 0x39, 0xa2, 0xe1, 0x84, 0x62, 0x20, 0x3f, 0x14, 0x99, 0x10, 0x1e, 0xdd, 0x44, 0xb8, 0x35,
+ 0x72, 0x23, 0x0a, 0x4e, 0xf6, 0x03, 0x35, 0x48, 0x0f, 0x2c, 0x56, 0x41, 0x89, 0x33, 0x79, 0x29,
+ 0x62, 0x9e, 0xe7, 0x7a, 0xe3, 0x09, 0xb2, 0x3c, 0xa4, 0x44, 0x85, 0xe4, 0x21, 0xa4, 0xab, 0xdc,
+ 0x61, 0x7a, 0xbb, 0xa2, 0x37, 0x5e, 0x30, 0xee, 0x96, 0x7b, 0x9c, 0xac, 0x04, 0x22, 0x2d, 0x19,
+ 0xe5, 0x1e, 0x8f, 0xdd, 0x40, 0x63, 0x5b, 0x09, 0x72, 0x88, 0x6d, 0x15, 0x33, 0xcf, 0x99, 0x02,
+ 0x2a, 0x75, 0x2e, 0x99, 0x4f, 0x84, 0xf1, 0x4b, 0x1d, 0x3a, 0x76, 0x37, 0x41, 0x1e, 0x41, 0x56,
+ 0xc1, 0xec, 0x9f, 0xe9, 0x9d, 0x16, 0xc3, 0xa9, 0x62, 0xbc, 0xcb, 0xb9, 0x00, 0x92, 0x6f, 0x09,
+ 0x82, 0x9d, 0xc2, 0x42, 0x3f, 0x21, 0xf2, 0xbb, 0x55, 0xb0, 0xf1, 0x0f, 0x87, 0x2b, 0x6e, 0xb3,
+ 0xaa, 0x68, 0x79, 0x39, 0xc9, 0xc8, 0x1e, 0xcd, 0xff, 0x8d, 0x24, 0x6a, 0x0e, 0x9a, 0x8f, 0x22,
+ 0xd2, 0xdb, 0xa8, 0x22, 0x4f, 0xfb, 0x09, 0x09, 0x8c, 0x55, 0xc5, 0x21, 0x7b, 0x8a, 0x76, 0xfb,
+ 0xd1, 0x23, 0x07, 0x03, 0xfe, 0x2f, 0x1f, 0x61, 0xc3, 0x03, 0xa8, 0xd2, 0x70, 0x03, 0x32, 0xb2,
+ 0x58, 0xfc, 0x30, 0xc3, 0xdf, 0x42, 0x15, 0xb7, 0xf2, 0x97, 0xa8, 0x10, 0xd6, 0x1b, 0x90, 0x91,
+ 0xbd, 0xd0, 0x95, 0x5a, 0xe2, 0xf6, 0x93, 0xf2, 0x65, 0xfb, 0x32, 0x5f, 0xd4, 0xc1, 0x08, 0x7c,
+ 0xfd, 0xb9, 0xf2, 0x60, 0x04, 0x22, 0x16, 0x3a, 0x18, 0x01, 0x2d, 0xe4, 0x31, 0x36, 0xf4, 0x78,
+ 0xf5, 0xb8, 0xd1, 0x0d, 0xbd, 0xe4, 0x79, 0x5d, 0x22, 0x59, 0x8b, 0xbf, 0x78, 0x5c, 0xf2, 0x05,
+ 0xcc, 0x7a, 0x63, 0xdf, 0x00, 0x58, 0x2e, 0x6e, 0x7e, 0x4c, 0xdf, 0x46, 0xd8, 0xdb, 0xf4, 0x66,
+ 0x24, 0xac, 0xcb, 0xac, 0x66, 0x8d, 0x0b, 0xb4, 0xa7, 0xd8, 0x1f, 0x05, 0xc6, 0xe6, 0xc3, 0xef,
+ 0xb7, 0xa1, 0xb9, 0x7a, 0xb8, 0xf2, 0x88, 0x63, 0x24, 0xe4, 0xd4, 0x8b, 0xad, 0x59, 0x27, 0x5f,
+ 0x02, 0x39, 0x62, 0x7c, 0x68, 0x72, 0x3e, 0x34, 0x04, 0x8b, 0x1a, 0xae, 0x87, 0xe3, 0x11, 0xc4,
+ 0xc6, 0x39, 0x3d, 0x71, 0x61, 0xbe, 0x6a, 0xb6, 0x7b, 0x96, 0xce, 0x19, 0xae, 0x27, 0xeb, 0xfd,
+ 0x40, 0xf8, 0xc9, 0xea, 0x5b, 0x57, 0xdc, 0x9d, 0x1f, 0x1a, 0x4c, 0x04, 0x63, 0xa4, 0x90, 0x6a,
+ 0x02, 0x49, 0xec, 0xcc, 0x7d, 0x98, 0xeb, 0x8f, 0xc8, 0xc9, 0x0d, 0x4f, 0x61, 0x68, 0x78, 0x9e,
+ 0x8f, 0x67, 0xd1, 0x31, 0x72, 0x0c, 0x20, 0xdf, 0xaa, 0x70, 0x88, 0x94, 0xf2, 0x77, 0x04, 0xb1,
+ 0x1b, 0x5a, 0xbd, 0x8e, 0xd2, 0x05, 0x61, 0xe3, 0x60, 0xb5, 0x7a, 0x61, 0x56, 0xef, 0x52, 0x23,
+ 0xe0, 0x0d, 0xde, 0xfa, 0xce, 0x3f, 0x28, 0xfa, 0x96, 0x0b, 0xc0, 0x2f, 0x20, 0x29, 0x8a, 0xc7,
+ 0x2b, 0x8e, 0xdf, 0xdd, 0xc8, 0x8a, 0x17, 0x39, 0xf9, 0x19, 0xae, 0xcb, 0x1a, 0x66, 0xd3, 0x64,
+ 0x4e, 0x7e, 0xc9, 0xa3, 0x6b, 0x8c, 0xf7, 0x9c, 0x0e, 0x72, 0x5d, 0xba, 0x86, 0xc0, 0xcb, 0x24,
+ 0xeb, 0x05, 0xd4, 0x0f, 0x75, 0x02, 0xc9, 0xaa, 0xef, 0xb1, 0x3f, 0xb6, 0xf5, 0x3e, 0xf0, 0xc5,
+ 0x9a, 0x1b, 0x42, 0xf5, 0xc3, 0x9c, 0x41, 0xb6, 0xca, 0x75, 0x87, 0x7b, 0x9f, 0x37, 0x45, 0x4b,
+ 0x6a, 0x77, 0x48, 0xff, 0xcb, 0xef, 0xd0, 0x67, 0xcf, 0xc1, 0x61, 0x0e, 0x9c, 0x16, 0x55, 0x32,
+ 0x68, 0x7f, 0xa2, 0xeb, 0x0a, 0xcc, 0x1a, 0x7e, 0x19, 0x12, 0xc7, 0xe4, 0x93, 0xc4, 0xf6, 0x9e,
+ 0x05, 0x59, 0xdb, 0x69, 0xe1, 0x8d, 0xd1, 0xb0, 0x1d, 0x43, 0xe1, 0xec, 0xa5, 0xe4, 0xcc, 0xbd,
+ 0x82, 0x3f, 0x7d, 0xf8, 0x45, 0xa1, 0x65, 0xf2, 0xb3, 0x5e, 0x5d, 0x44, 0xa7, 0xe8, 0x49, 0xaa,
+ 0x9f, 0xa0, 0xdc, 0xf1, 0x7e, 0x90, 0x72, 0xbf, 0xd8, 0xb2, 0x15, 0xed, 0xaf, 0xe3, 0x2b, 0x65,
+ 0x0f, 0xef, 0xa9, 0x7f, 0x84, 0x5f, 0x19, 0xaf, 0x4c, 0x54, 0x26, 0x2b, 0x53, 0x95, 0xe9, 0xca,
+ 0x4c, 0x65, 0xb6, 0x3e, 0x8d, 0x6b, 0x77, 0xfe, 0x13, 0x00, 0x00, 0xff, 0xff, 0xb4, 0x0e, 0xe5,
+ 0xbc, 0xdc, 0x22, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@@ -2430,6 +2433,8 @@
RebootDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
// Delete a device
DeleteDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
+ // Forcefully delete a device
+ ForceDeleteDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error)
// Request an image download to the standby partition
// of a device.
// Note that the call is expected to be non-blocking.
@@ -2757,6 +2762,15 @@
return out, nil
}
+func (c *volthaServiceClient) ForceDeleteDevice(ctx context.Context, in *common.ID, opts ...grpc.CallOption) (*empty.Empty, error) {
+ out := new(empty.Empty)
+ err := c.cc.Invoke(ctx, "/voltha.VolthaService/ForceDeleteDevice", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
func (c *volthaServiceClient) DownloadImage(ctx context.Context, in *ImageDownload, opts ...grpc.CallOption) (*common.OperationResp, error) {
out := new(common.OperationResp)
err := c.cc.Invoke(ctx, "/voltha.VolthaService/DownloadImage", in, out, opts...)
@@ -3201,6 +3215,8 @@
RebootDevice(context.Context, *common.ID) (*empty.Empty, error)
// Delete a device
DeleteDevice(context.Context, *common.ID) (*empty.Empty, error)
+ // Forcefully delete a device
+ ForceDeleteDevice(context.Context, *common.ID) (*empty.Empty, error)
// Request an image download to the standby partition
// of a device.
// Note that the call is expected to be non-blocking.
@@ -3767,6 +3783,24 @@
return interceptor(ctx, in, info, handler)
}
+func _VolthaService_ForceDeleteDevice_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(common.ID)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VolthaServiceServer).ForceDeleteDevice(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/voltha.VolthaService/ForceDeleteDevice",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VolthaServiceServer).ForceDeleteDevice(ctx, req.(*common.ID))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
func _VolthaService_DownloadImage_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ImageDownload)
if err := dec(in); err != nil {
@@ -4524,6 +4558,10 @@
Handler: _VolthaService_DeleteDevice_Handler,
},
{
+ MethodName: "ForceDeleteDevice",
+ Handler: _VolthaService_ForceDeleteDevice_Handler,
+ },
+ {
MethodName: "DownloadImage",
Handler: _VolthaService_DownloadImage_Handler,
},
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 5c0ce99..ad94dd7 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -72,30 +72,30 @@
github.com/mitchellh/go-homedir
# github.com/mitchellh/mapstructure v1.1.2
github.com/mitchellh/mapstructure
-# github.com/opencord/voltha-lib-go/v3 v3.2.8
-github.com/opencord/voltha-lib-go/v3/pkg/adapters
-github.com/opencord/voltha-lib-go/v3/pkg/adapters/adapterif
-github.com/opencord/voltha-lib-go/v3/pkg/adapters/common
-github.com/opencord/voltha-lib-go/v3/pkg/config
-github.com/opencord/voltha-lib-go/v3/pkg/db
-github.com/opencord/voltha-lib-go/v3/pkg/db/kvstore
-github.com/opencord/voltha-lib-go/v3/pkg/flows
-github.com/opencord/voltha-lib-go/v3/pkg/kafka
-github.com/opencord/voltha-lib-go/v3/pkg/log
-github.com/opencord/voltha-lib-go/v3/pkg/pmmetrics
-github.com/opencord/voltha-lib-go/v3/pkg/ponresourcemanager
-github.com/opencord/voltha-lib-go/v3/pkg/probe
-github.com/opencord/voltha-lib-go/v3/pkg/techprofile
-github.com/opencord/voltha-lib-go/v3/pkg/version
-# github.com/opencord/voltha-protos/v3 v3.4.5
-github.com/opencord/voltha-protos/v3/go/common
-github.com/opencord/voltha-protos/v3/go/ext/config
-github.com/opencord/voltha-protos/v3/go/inter_container
-github.com/opencord/voltha-protos/v3/go/omci
-github.com/opencord/voltha-protos/v3/go/openflow_13
-github.com/opencord/voltha-protos/v3/go/openolt
-github.com/opencord/voltha-protos/v3/go/tech_profile
-github.com/opencord/voltha-protos/v3/go/voltha
+# github.com/opencord/voltha-lib-go/v4 v4.0.0
+github.com/opencord/voltha-lib-go/v4/pkg/adapters
+github.com/opencord/voltha-lib-go/v4/pkg/adapters/adapterif
+github.com/opencord/voltha-lib-go/v4/pkg/adapters/common
+github.com/opencord/voltha-lib-go/v4/pkg/config
+github.com/opencord/voltha-lib-go/v4/pkg/db
+github.com/opencord/voltha-lib-go/v4/pkg/db/kvstore
+github.com/opencord/voltha-lib-go/v4/pkg/flows
+github.com/opencord/voltha-lib-go/v4/pkg/kafka
+github.com/opencord/voltha-lib-go/v4/pkg/log
+github.com/opencord/voltha-lib-go/v4/pkg/pmmetrics
+github.com/opencord/voltha-lib-go/v4/pkg/ponresourcemanager
+github.com/opencord/voltha-lib-go/v4/pkg/probe
+github.com/opencord/voltha-lib-go/v4/pkg/techprofile
+github.com/opencord/voltha-lib-go/v4/pkg/version
+# github.com/opencord/voltha-protos/v4 v4.0.2
+github.com/opencord/voltha-protos/v4/go/common
+github.com/opencord/voltha-protos/v4/go/ext/config
+github.com/opencord/voltha-protos/v4/go/inter_container
+github.com/opencord/voltha-protos/v4/go/omci
+github.com/opencord/voltha-protos/v4/go/openflow_13
+github.com/opencord/voltha-protos/v4/go/openolt
+github.com/opencord/voltha-protos/v4/go/tech_profile
+github.com/opencord/voltha-protos/v4/go/voltha
# github.com/opentracing/opentracing-go v1.1.0
github.com/opentracing/opentracing-go
github.com/opentracing/opentracing-go/ext