liuxiaolong
2020-03-04 2637c4209590f557a295b0309d055704437e3fdd
add sensor
2个文件已修改
1112 ■■■■ 已修改文件
protomsg.pb.go 1096 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
protomsg.proto 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
protomsg.pb.go
@@ -232,26 +232,29 @@
//Camera结构体
type Camera struct {
    Id          string  `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
    Name        string  `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
    Alias       string  `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"`
    SnapshotUrl string  `protobuf:"bytes,4,opt,name=snapshot_url,json=snapshotUrl,proto3" json:"snapshot_url,omitempty"`
    Type        int32   `protobuf:"varint,5,opt,name=type,proto3" json:"type,omitempty"`
    Addr        string  `protobuf:"bytes,6,opt,name=addr,proto3" json:"addr,omitempty"`
    Longitude   float32 `protobuf:"fixed32,7,opt,name=longitude,proto3" json:"longitude,omitempty"`
    Latitude    float32 `protobuf:"fixed32,8,opt,name=latitude,proto3" json:"latitude,omitempty"`
    Floor       int32   `protobuf:"varint,9,opt,name=floor,proto3" json:"floor,omitempty"`
    Rtsp        string  `protobuf:"bytes,10,opt,name=rtsp,proto3" json:"rtsp,omitempty"`
    Ip          string  `protobuf:"bytes,11,opt,name=ip,proto3" json:"ip,omitempty"`
    Port        int32   `protobuf:"varint,12,opt,name=port,proto3" json:"port,omitempty"`
    Username    string  `protobuf:"bytes,13,opt,name=username,proto3" json:"username,omitempty"`
    Password    string  `protobuf:"bytes,14,opt,name=password,proto3" json:"password,omitempty"`
    Brand       string  `protobuf:"bytes,15,opt,name=brand,proto3" json:"brand,omitempty"`
    Reserved    string  `protobuf:"bytes,16,opt,name=reserved,proto3" json:"reserved,omitempty"`
    IsRunning   bool    `protobuf:"varint,17,opt,name=is_running,json=isRunning,proto3" json:"is_running,omitempty"`
    RunEnable   bool    `protobuf:"varint,18,opt,name=run_enable,json=runEnable,proto3" json:"run_enable,omitempty"`
    RunType     int32   `protobuf:"varint,19,opt,name=run_type,json=runType,proto3" json:"run_type,omitempty"`
    RunServerId string  `protobuf:"bytes,20,opt,name=run_server_id,json=runServerId,proto3" json:"run_server_id,omitempty"`
    Id               string    `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
    Name             string    `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
    Alias            string    `protobuf:"bytes,3,opt,name=alias,proto3" json:"alias,omitempty"`
    SnapshotUrl      string    `protobuf:"bytes,4,opt,name=snapshot_url,json=snapshotUrl,proto3" json:"snapshot_url,omitempty"`
    Type             int32     `protobuf:"varint,5,opt,name=type,proto3" json:"type,omitempty"`
    Addr             string    `protobuf:"bytes,6,opt,name=addr,proto3" json:"addr,omitempty"`
    Longitude        float32   `protobuf:"fixed32,7,opt,name=longitude,proto3" json:"longitude,omitempty"`
    Latitude         float32   `protobuf:"fixed32,8,opt,name=latitude,proto3" json:"latitude,omitempty"`
    Floor            int32     `protobuf:"varint,9,opt,name=floor,proto3" json:"floor,omitempty"`
    Rtsp             string    `protobuf:"bytes,10,opt,name=rtsp,proto3" json:"rtsp,omitempty"`
    Ip               string    `protobuf:"bytes,11,opt,name=ip,proto3" json:"ip,omitempty"`
    Port             int32     `protobuf:"varint,12,opt,name=port,proto3" json:"port,omitempty"`
    Username         string    `protobuf:"bytes,13,opt,name=username,proto3" json:"username,omitempty"`
    Password         string    `protobuf:"bytes,14,opt,name=password,proto3" json:"password,omitempty"`
    Brand            string    `protobuf:"bytes,15,opt,name=brand,proto3" json:"brand,omitempty"`
    Reserved         string    `protobuf:"bytes,16,opt,name=reserved,proto3" json:"reserved,omitempty"`
    IsRunning        bool      `protobuf:"varint,17,opt,name=is_running,json=isRunning,proto3" json:"is_running,omitempty"`
    RunEnable        bool      `protobuf:"varint,18,opt,name=run_enable,json=runEnable,proto3" json:"run_enable,omitempty"`
    RunType          int32     `protobuf:"varint,19,opt,name=run_type,json=runType,proto3" json:"run_type,omitempty"`
    RunServerId      string    `protobuf:"bytes,20,opt,name=run_server_id,json=runServerId,proto3" json:"run_server_id,omitempty"`
    ResolutionWidth  int32     `protobuf:"varint,21,opt,name=resolution_width,json=resolutionWidth,proto3" json:"resolution_width,omitempty"`
    ResolutionHeight int32     `protobuf:"varint,22,opt,name=resolution_height,json=resolutionHeight,proto3" json:"resolution_height,omitempty"`
    Sensors          []*Sensor `protobuf:"bytes,23,rep,name=sensors,proto3" json:"sensors,omitempty"`
}
func (m *Camera) Reset()         { *m = Camera{} }
@@ -427,6 +430,135 @@
    return ""
}
func (m *Camera) GetResolutionWidth() int32 {
    if m != nil {
        return m.ResolutionWidth
    }
    return 0
}
func (m *Camera) GetResolutionHeight() int32 {
    if m != nil {
        return m.ResolutionHeight
    }
    return 0
}
func (m *Camera) GetSensors() []*Sensor {
    if m != nil {
        return m.Sensors
    }
    return nil
}
type Sensor struct {
    Id        string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
    Type      int32  `protobuf:"varint,2,opt,name=type,proto3" json:"type,omitempty"`
    Ip        string `protobuf:"bytes,3,opt,name=ip,proto3" json:"ip,omitempty"`
    Port      int32  `protobuf:"varint,4,opt,name=port,proto3" json:"port,omitempty"`
    Username  string `protobuf:"bytes,5,opt,name=username,proto3" json:"username,omitempty"`
    Password  string `protobuf:"bytes,6,opt,name=password,proto3" json:"password,omitempty"`
    Threshold int32  `protobuf:"varint,7,opt,name=threshold,proto3" json:"threshold,omitempty"`
    Enable    bool   `protobuf:"varint,8,opt,name=enable,proto3" json:"enable,omitempty"`
    DevId     string `protobuf:"bytes,9,opt,name=devId,proto3" json:"devId,omitempty"`
}
func (m *Sensor) Reset()         { *m = Sensor{} }
func (m *Sensor) String() string { return proto.CompactTextString(m) }
func (*Sensor) ProtoMessage()    {}
func (*Sensor) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{2}
}
func (m *Sensor) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
}
func (m *Sensor) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
    if deterministic {
        return xxx_messageInfo_Sensor.Marshal(b, m, deterministic)
    } else {
        b = b[:cap(b)]
        n, err := m.MarshalTo(b)
        if err != nil {
            return nil, err
        }
        return b[:n], nil
    }
}
func (m *Sensor) XXX_Merge(src proto.Message) {
    xxx_messageInfo_Sensor.Merge(m, src)
}
func (m *Sensor) XXX_Size() int {
    return m.Size()
}
func (m *Sensor) XXX_DiscardUnknown() {
    xxx_messageInfo_Sensor.DiscardUnknown(m)
}
var xxx_messageInfo_Sensor proto.InternalMessageInfo
func (m *Sensor) GetId() string {
    if m != nil {
        return m.Id
    }
    return ""
}
func (m *Sensor) GetType() int32 {
    if m != nil {
        return m.Type
    }
    return 0
}
func (m *Sensor) GetIp() string {
    if m != nil {
        return m.Ip
    }
    return ""
}
func (m *Sensor) GetPort() int32 {
    if m != nil {
        return m.Port
    }
    return 0
}
func (m *Sensor) GetUsername() string {
    if m != nil {
        return m.Username
    }
    return ""
}
func (m *Sensor) GetPassword() string {
    if m != nil {
        return m.Password
    }
    return ""
}
func (m *Sensor) GetThreshold() int32 {
    if m != nil {
        return m.Threshold
    }
    return 0
}
func (m *Sensor) GetEnable() bool {
    if m != nil {
        return m.Enable
    }
    return false
}
func (m *Sensor) GetDevId() string {
    if m != nil {
        return m.DevId
    }
    return ""
}
//摄像机联动
type CameraLink struct {
    CameraIds  string `protobuf:"bytes,1,opt,name=camera_ids,json=cameraIds,proto3" json:"camera_ids,omitempty"`
@@ -437,7 +569,7 @@
func (m *CameraLink) String() string { return proto.CompactTextString(m) }
func (*CameraLink) ProtoMessage()    {}
func (*CameraLink) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{2}
    return fileDescriptor_32de24555f916688, []int{3}
}
func (m *CameraLink) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -490,7 +622,7 @@
func (m *CameraAndTaskInfo) String() string { return proto.CompactTextString(m) }
func (*CameraAndTaskInfo) ProtoMessage()    {}
func (*CameraAndTaskInfo) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{3}
    return fileDescriptor_32de24555f916688, []int{4}
}
func (m *CameraAndTaskInfo) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -549,7 +681,7 @@
func (m *Task) String() string { return proto.CompactTextString(m) }
func (*Task) ProtoMessage()    {}
func (*Task) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{4}
    return fileDescriptor_32de24555f916688, []int{5}
}
func (m *Task) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -643,7 +775,7 @@
func (m *TaskSdkInfo) String() string { return proto.CompactTextString(m) }
func (*TaskSdkInfo) ProtoMessage()    {}
func (*TaskSdkInfo) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{5}
    return fileDescriptor_32de24555f916688, []int{6}
}
func (m *TaskSdkInfo) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -695,7 +827,7 @@
func (m *SdkRun) String() string { return proto.CompactTextString(m) }
func (*SdkRun) ProtoMessage()    {}
func (*SdkRun) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{6}
    return fileDescriptor_32de24555f916688, []int{7}
}
func (m *SdkRun) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -747,7 +879,7 @@
func (m *TaskSdkRun) String() string { return proto.CompactTextString(m) }
func (*TaskSdkRun) ProtoMessage()    {}
func (*TaskSdkRun) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{7}
    return fileDescriptor_32de24555f916688, []int{8}
}
func (m *TaskSdkRun) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -810,7 +942,7 @@
func (m *CameraTask) String() string { return proto.CompactTextString(m) }
func (*CameraTask) ProtoMessage()    {}
func (*CameraTask) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{8}
    return fileDescriptor_32de24555f916688, []int{9}
}
func (m *CameraTask) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -934,7 +1066,7 @@
func (m *CameraTimerule) String() string { return proto.CompactTextString(m) }
func (*CameraTimerule) ProtoMessage()    {}
func (*CameraTimerule) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{9}
    return fileDescriptor_32de24555f916688, []int{10}
}
func (m *CameraTimerule) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -994,7 +1126,7 @@
func (m *DayCtl) String() string { return proto.CompactTextString(m) }
func (*DayCtl) ProtoMessage()    {}
func (*DayCtl) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{10}
    return fileDescriptor_32de24555f916688, []int{11}
}
func (m *DayCtl) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -1047,7 +1179,7 @@
func (m *TimeRange) String() string { return proto.CompactTextString(m) }
func (*TimeRange) ProtoMessage()    {}
func (*TimeRange) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{11}
    return fileDescriptor_32de24555f916688, []int{12}
}
func (m *TimeRange) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -1101,7 +1233,7 @@
func (m *Polygon) String() string { return proto.CompactTextString(m) }
func (*Polygon) ProtoMessage()    {}
func (*Polygon) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{12}
    return fileDescriptor_32de24555f916688, []int{13}
}
func (m *Polygon) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -1160,7 +1292,7 @@
func (m *CameraTaskArgs) String() string { return proto.CompactTextString(m) }
func (*CameraTaskArgs) ProtoMessage()    {}
func (*CameraTaskArgs) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{13}
    return fileDescriptor_32de24555f916688, []int{14}
}
func (m *CameraTaskArgs) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -1213,7 +1345,7 @@
func (m *TaskGroupArgs) String() string { return proto.CompactTextString(m) }
func (*TaskGroupArgs) ProtoMessage()    {}
func (*TaskGroupArgs) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{14}
    return fileDescriptor_32de24555f916688, []int{15}
}
func (m *TaskGroupArgs) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -1276,7 +1408,7 @@
func (m *GroupRule) String() string { return proto.CompactTextString(m) }
func (*GroupRule) ProtoMessage()    {}
func (*GroupRule) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{15}
    return fileDescriptor_32de24555f916688, []int{16}
}
func (m *GroupRule) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -1366,7 +1498,7 @@
func (m *Rule) String() string { return proto.CompactTextString(m) }
func (*Rule) ProtoMessage()    {}
func (*Rule) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{16}
    return fileDescriptor_32de24555f916688, []int{17}
}
func (m *Rule) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -1499,7 +1631,7 @@
func (m *Sdk) String() string { return proto.CompactTextString(m) }
func (*Sdk) ProtoMessage()    {}
func (*Sdk) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{17}
    return fileDescriptor_32de24555f916688, []int{18}
}
func (m *Sdk) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -1622,7 +1754,7 @@
func (m *TaskSdkRule) String() string { return proto.CompactTextString(m) }
func (*TaskSdkRule) ProtoMessage()    {}
func (*TaskSdkRule) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{18}
    return fileDescriptor_32de24555f916688, []int{19}
}
func (m *TaskSdkRule) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -1683,7 +1815,7 @@
func (m *SdkRuleSet) String() string { return proto.CompactTextString(m) }
func (*SdkRuleSet) ProtoMessage()    {}
func (*SdkRuleSet) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{19}
    return fileDescriptor_32de24555f916688, []int{20}
}
func (m *SdkRuleSet) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -1751,7 +1883,7 @@
func (m *SdkRule) String() string { return proto.CompactTextString(m) }
func (*SdkRule) ProtoMessage()    {}
func (*SdkRule) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{20}
    return fileDescriptor_32de24555f916688, []int{21}
}
func (m *SdkRule) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -1825,7 +1957,7 @@
func (m *SdkArg) String() string { return proto.CompactTextString(m) }
func (*SdkArg) ProtoMessage()    {}
func (*SdkArg) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{21}
    return fileDescriptor_32de24555f916688, []int{22}
}
func (m *SdkArg) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -1926,7 +2058,7 @@
func (m *SdkChanSet) String() string { return proto.CompactTextString(m) }
func (*SdkChanSet) ProtoMessage()    {}
func (*SdkChanSet) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{22}
    return fileDescriptor_32de24555f916688, []int{23}
}
func (m *SdkChanSet) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -1981,7 +2113,7 @@
func (m *DbChangeMessage) String() string { return proto.CompactTextString(m) }
func (*DbChangeMessage) ProtoMessage()    {}
func (*DbChangeMessage) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{23}
    return fileDescriptor_32de24555f916688, []int{24}
}
func (m *DbChangeMessage) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -2053,7 +2185,7 @@
func (m *CameraPolygon) String() string { return proto.CompactTextString(m) }
func (*CameraPolygon) ProtoMessage()    {}
func (*CameraPolygon) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{24}
    return fileDescriptor_32de24555f916688, []int{25}
}
func (m *CameraPolygon) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -2152,7 +2284,7 @@
func (m *VideotapeInfo) String() string { return proto.CompactTextString(m) }
func (*VideotapeInfo) ProtoMessage()    {}
func (*VideotapeInfo) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{25}
    return fileDescriptor_32de24555f916688, []int{26}
}
func (m *VideotapeInfo) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -2249,7 +2381,7 @@
func (m *CompareArgs) String() string { return proto.CompactTextString(m) }
func (*CompareArgs) ProtoMessage()    {}
func (*CompareArgs) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{26}
    return fileDescriptor_32de24555f916688, []int{27}
}
func (m *CompareArgs) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -2371,7 +2503,7 @@
func (m *CompareEvent) String() string { return proto.CompactTextString(m) }
func (*CompareEvent) ProtoMessage()    {}
func (*CompareEvent) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{27}
    return fileDescriptor_32de24555f916688, []int{28}
}
func (m *CompareEvent) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -2424,7 +2556,7 @@
func (m *SdkCompareEach) String() string { return proto.CompactTextString(m) }
func (*SdkCompareEach) ProtoMessage()    {}
func (*SdkCompareEach) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{28}
    return fileDescriptor_32de24555f916688, []int{29}
}
func (m *SdkCompareEach) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -2482,7 +2614,7 @@
func (m *SdkCompareResult) String() string { return proto.CompactTextString(m) }
func (*SdkCompareResult) ProtoMessage()    {}
func (*SdkCompareResult) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{29}
    return fileDescriptor_32de24555f916688, []int{30}
}
func (m *SdkCompareResult) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -2537,7 +2669,7 @@
func (m *EventPush) String() string { return proto.CompactTextString(m) }
func (*EventPush) ProtoMessage()    {}
func (*EventPush) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{30}
    return fileDescriptor_32de24555f916688, []int{31}
}
func (m *EventPush) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -2664,7 +2796,7 @@
func (m *EventPushRule) String() string { return proto.CompactTextString(m) }
func (*EventPushRule) ProtoMessage()    {}
func (*EventPushRule) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{31}
    return fileDescriptor_32de24555f916688, []int{32}
}
func (m *EventPushRule) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -2752,7 +2884,7 @@
func (m *PushIpPort) String() string { return proto.CompactTextString(m) }
func (*PushIpPort) ProtoMessage()    {}
func (*PushIpPort) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{32}
    return fileDescriptor_32de24555f916688, []int{33}
}
func (m *PushIpPort) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -2811,7 +2943,7 @@
func (m *PushUrl) String() string { return proto.CompactTextString(m) }
func (*PushUrl) ProtoMessage()    {}
func (*PushUrl) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{33}
    return fileDescriptor_32de24555f916688, []int{34}
}
func (m *PushUrl) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -2867,7 +2999,7 @@
func (m *PushAttach) String() string { return proto.CompactTextString(m) }
func (*PushAttach) ProtoMessage()    {}
func (*PushAttach) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{34}
    return fileDescriptor_32de24555f916688, []int{35}
}
func (m *PushAttach) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -2951,7 +3083,7 @@
func (m *EsPersonCacheChange) String() string { return proto.CompactTextString(m) }
func (*EsPersonCacheChange) ProtoMessage()    {}
func (*EsPersonCacheChange) Descriptor() ([]byte, []int) {
    return fileDescriptor_32de24555f916688, []int{35}
    return fileDescriptor_32de24555f916688, []int{36}
}
func (m *EsPersonCacheChange) XXX_Unmarshal(b []byte) error {
    return m.Unmarshal(b)
@@ -3029,6 +3161,7 @@
    proto.RegisterEnum("protomsg.EsCacheChanged", EsCacheChanged_name, EsCacheChanged_value)
    proto.RegisterType((*Area)(nil), "protomsg.Area")
    proto.RegisterType((*Camera)(nil), "protomsg.Camera")
    proto.RegisterType((*Sensor)(nil), "protomsg.Sensor")
    proto.RegisterType((*CameraLink)(nil), "protomsg.CameraLink")
    proto.RegisterType((*CameraAndTaskInfo)(nil), "protomsg.CameraAndTaskInfo")
    proto.RegisterType((*Task)(nil), "protomsg.Task")
@@ -3068,172 +3201,179 @@
func init() { proto.RegisterFile("protomsg.proto", fileDescriptor_32de24555f916688) }
var fileDescriptor_32de24555f916688 = []byte{
    // 2625 bytes of a gzipped FileDescriptorProto
    0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x58, 0xcd, 0x8f, 0x1c, 0x47,
    0x15, 0xdf, 0x9e, 0xef, 0x7e, 0xf3, 0xe1, 0x76, 0xdb, 0x24, 0x63, 0x27, 0xd9, 0x6c, 0x1a, 0x47,
    0x31, 0x56, 0x08, 0x68, 0x93, 0x03, 0xe2, 0x80, 0xb4, 0xf1, 0xda, 0x68, 0xa4, 0xc4, 0x2c, 0xbd,
    0x6b, 0x73, 0xa3, 0x55, 0xdb, 0x5d, 0x3b, 0xdb, 0xda, 0xda, 0xee, 0x56, 0x55, 0xf7, 0x26, 0x7b,
    0xe0, 0xc6, 0x85, 0x13, 0xfc, 0x43, 0x08, 0x8e, 0x1c, 0x38, 0xe4, 0xc0, 0x01, 0x4e, 0x41, 0xf1,
    0x05, 0x09, 0xf1, 0x1f, 0x80, 0x84, 0xde, 0xab, 0xaa, 0xfe, 0x98, 0x59, 0x27, 0x3e, 0x4d, 0xbd,
    0xdf, 0xab, 0xae, 0x7a, 0xf5, 0xbe, 0xdf, 0xc0, 0xa2, 0x90, 0x79, 0x99, 0x5f, 0xaa, 0xf5, 0x47,
    0xb4, 0xf0, 0x27, 0x96, 0xbe, 0x0f, 0xa7, 0x4c, 0x71, 0x8d, 0x06, 0x4f, 0x61, 0x70, 0x20, 0x39,
    0xf3, 0x17, 0xd0, 0x4b, 0x93, 0xa5, 0xb3, 0xe7, 0x3c, 0x1c, 0x86, 0xbd, 0x34, 0xf1, 0xef, 0xc3,
    0xa4, 0x60, 0x92, 0x67, 0x65, 0x9a, 0x2c, 0x7b, 0x84, 0xd6, 0xb4, 0xef, 0xc3, 0x20, 0x63, 0x97,
    0x7c, 0xd9, 0xdf, 0x73, 0x1e, 0xba, 0x21, 0xad, 0x83, 0xff, 0xf6, 0x61, 0xf4, 0x98, 0x5d, 0x72,
    0xd9, 0x3e, 0xca, 0xa5, 0xa3, 0xec, 0xf6, 0x5e, 0xb3, 0xdd, 0xbf, 0x0b, 0x43, 0x26, 0x52, 0xa6,
    0xcc, 0x19, 0x9a, 0xf0, 0xdf, 0x83, 0x99, 0xca, 0x58, 0xa1, 0xce, 0xf3, 0x32, 0xaa, 0xa4, 0x58,
    0x0e, 0x88, 0x39, 0xb5, 0xd8, 0x73, 0x29, 0xf0, 0xb0, 0xf2, 0xba, 0xe0, 0xcb, 0x21, 0xc9, 0x44,
    0x6b, 0xc4, 0x58, 0x92, 0xc8, 0xe5, 0x48, 0x5f, 0x80, 0x6b, 0xff, 0x6d, 0x70, 0x45, 0x9e, 0xad,
    0xd3, 0xb2, 0x4a, 0xf8, 0x72, 0xbc, 0xe7, 0x3c, 0xec, 0x85, 0x0d, 0x80, 0xaf, 0x13, 0xac, 0xd4,
    0xcc, 0x09, 0x31, 0x6b, 0x1a, 0x45, 0x3b, 0x13, 0x79, 0x2e, 0x97, 0x2e, 0x5d, 0xa1, 0x09, 0xbc,
    0x43, 0x96, 0xaa, 0x58, 0x82, 0xbe, 0x03, 0xd7, 0xf4, 0xd0, 0x62, 0x39, 0x35, 0x0f, 0x2d, 0x70,
    0x4f, 0x91, 0xcb, 0x72, 0x39, 0xd3, 0xb2, 0xe1, 0x1a, 0x6f, 0xaa, 0x14, 0x97, 0xa4, 0x80, 0x39,
    0xed, 0xac, 0x69, 0xad, 0x63, 0xa5, 0xbe, 0xc8, 0x65, 0xb2, 0x5c, 0x68, 0x9e, 0xa5, 0x51, 0x8a,
    0x53, 0xc9, 0xb2, 0x64, 0x79, 0x4b, 0x2b, 0x88, 0x08, 0xfc, 0x42, 0x72, 0xc5, 0xe5, 0x15, 0x4f,
    0x96, 0x9e, 0xfe, 0xc2, 0xd2, 0xfe, 0x3b, 0x00, 0xa9, 0x8a, 0x64, 0x95, 0x65, 0x69, 0xb6, 0x5e,
    0xde, 0xde, 0x73, 0x1e, 0x4e, 0x42, 0x37, 0x55, 0xa1, 0x06, 0x90, 0x2d, 0xab, 0x2c, 0xe2, 0x19,
    0x3b, 0x15, 0x7c, 0xe9, 0x6b, 0xb6, 0xac, 0xb2, 0x27, 0x04, 0xf8, 0xf7, 0x60, 0x82, 0x6c, 0xd2,
    0xed, 0x1d, 0x92, 0x7f, 0x2c, 0xab, 0xec, 0x04, 0xd5, 0x1b, 0xc0, 0x1c, 0x59, 0x74, 0x8d, 0x8c,
    0xd2, 0x64, 0x79, 0x57, 0x9b, 0x45, 0x56, 0xd9, 0x31, 0x61, 0xab, 0x24, 0xf8, 0x1c, 0x40, 0x5b,
    0xff, 0xb3, 0x34, 0xbb, 0xc0, 0xbb, 0x62, 0xa2, 0xa2, 0x34, 0x51, 0xc6, 0x13, 0x5c, 0x8d, 0xac,
    0x12, 0xe5, 0xef, 0xc1, 0x4c, 0xa4, 0xd9, 0x45, 0x54, 0x32, 0x75, 0x11, 0x19, 0xff, 0x72, 0x43,
    0x40, 0xec, 0x84, 0xa9, 0x8b, 0x55, 0x12, 0xc4, 0x70, 0x5b, 0x1f, 0x77, 0x90, 0x25, 0x04, 0x65,
    0x67, 0xb9, 0xff, 0x10, 0x46, 0xfa, 0x0c, 0x3a, 0x71, 0xba, 0xef, 0x7d, 0x54, 0x7b, 0xb8, 0xde,
    0x1c, 0x1a, 0xbe, 0xff, 0x00, 0x86, 0x78, 0xb6, 0x5a, 0xf6, 0xf6, 0xfa, 0x0f, 0xa7, 0xfb, 0x8b,
    0x66, 0x23, 0x1e, 0x16, 0x6a, 0x66, 0xf0, 0xb5, 0x03, 0x03, 0xa4, 0xfd, 0x37, 0x60, 0x84, 0x48,
    0xed, 0xb4, 0x86, 0x42, 0x6d, 0xe3, 0xaa, 0xe5, 0xbc, 0x35, 0xed, 0xbf, 0x05, 0x6e, 0x2c, 0x39,
    0x2b, 0x79, 0xc4, 0x4a, 0xe3, 0xc4, 0x13, 0x0d, 0x1c, 0x94, 0x2d, 0xe6, 0xe9, 0xb5, 0x71, 0x62,
    0xc3, 0xfc, 0xf4, 0x1a, 0x99, 0x55, 0x91, 0x98, 0x2f, 0x87, 0xc6, 0x25, 0x08, 0x38, 0x28, 0x51,
    0x14, 0x63, 0xa1, 0x11, 0x59, 0xc8, 0x50, 0x68, 0x9e, 0x54, 0x45, 0x4c, 0x30, 0x79, 0x49, 0xde,
    0x3c, 0x09, 0xc7, 0xa9, 0x3a, 0x40, 0x12, 0x59, 0x09, 0x17, 0xd1, 0x99, 0x60, 0x6b, 0xf2, 0xe5,
    0x49, 0x38, 0x4e, 0xb8, 0x78, 0x2a, 0xd8, 0x3a, 0x38, 0x81, 0x29, 0x3e, 0xf0, 0x38, 0xd1, 0x0a,
    0x0c, 0x60, 0x80, 0xf2, 0x1b, 0xf5, 0x6d, 0x6a, 0x85, 0x78, 0xfe, 0x7b, 0x30, 0x50, 0x49, 0xad,
    0xb9, 0x79, 0xb3, 0xe7, 0x38, 0xb9, 0x08, 0x89, 0x15, 0xfc, 0x14, 0x46, 0x48, 0x54, 0x99, 0xff,
    0x3d, 0x18, 0xa5, 0x45, 0x1c, 0xd5, 0x8a, 0x1b, 0xa6, 0x45, 0xbc, 0x4a, 0x50, 0x22, 0x95, 0x5c,
    0x68, 0x5f, 0xd2, 0x7a, 0x1b, 0xab, 0xe4, 0x02, 0x7d, 0x29, 0x78, 0x01, 0x60, 0x24, 0xc2, 0xef,
    0x5f, 0x47, 0xa0, 0x07, 0x1d, 0x81, 0xbc, 0xae, 0x40, 0x55, 0x66, 0x64, 0xfa, 0x5b, 0xcf, 0x3a,
    0x20, 0x59, 0x74, 0x33, 0x05, 0xa1, 0x41, 0xac, 0x43, 0x5a, 0x53, 0x5a, 0x7f, 0xf4, 0xdf, 0x84,
    0xb1, 0xf5, 0xc4, 0x7e, 0x63, 0xff, 0x15, 0x7d, 0x55, 0xa6, 0x97, 0x3c, 0x92, 0x95, 0xe0, 0xd6,
    0x8c, 0x08, 0x84, 0x95, 0xe0, 0x14, 0x4f, 0x9c, 0xc5, 0xa5, 0xe6, 0x6a, 0x3b, 0xba, 0x84, 0x10,
    0xfb, 0x3d, 0x98, 0x69, 0x76, 0xc2, 0xaf, 0xd2, 0x98, 0x9b, 0xdc, 0x34, 0x25, 0xec, 0x90, 0xa0,
    0x8e, 0xe1, 0xc6, 0x1d, 0xc3, 0xf9, 0xef, 0xc2, 0xd4, 0xf8, 0x48, 0xcb, 0xac, 0xa0, 0x21, 0xda,
    0xd0, 0xf8, 0x89, 0xdb, 0xf1, 0x13, 0x1f, 0x06, 0x0a, 0x53, 0x10, 0xe8, 0x14, 0x84, 0x6b, 0x7c,
    0x5f, 0xaa, 0xa2, 0xb3, 0x4a, 0x08, 0xca, 0x55, 0x93, 0x70, 0x94, 0xaa, 0xa7, 0x95, 0x10, 0x5b,
    0x71, 0x38, 0xdb, 0x8a, 0xc3, 0x5f, 0xc2, 0xc2, 0x68, 0x35, 0xbd, 0xe4, 0xf8, 0xd0, 0xd7, 0x4a,
    0xee, 0x1d, 0xbd, 0xf5, 0xbb, 0x7a, 0x0b, 0x9e, 0xc1, 0xe8, 0x90, 0x5d, 0x3f, 0x2e, 0x85, 0xef,
    0x41, 0x3f, 0x61, 0xd7, 0xa6, 0xe6, 0xe0, 0xd2, 0xdf, 0x07, 0xd0, 0x1f, 0xb2, 0x6c, 0xcd, 0x8d,
    0xc5, 0xef, 0xb4, 0xbc, 0x02, 0xcf, 0x40, 0x56, 0x48, 0xe7, 0xd3, 0x32, 0xf8, 0x18, 0xdc, 0x1a,
    0xc7, 0xac, 0xa9, 0x4a, 0x26, 0x4b, 0xeb, 0x8f, 0x44, 0xe0, 0x45, 0x3c, 0xb3, 0x76, 0xc7, 0x65,
    0xf0, 0x02, 0xc6, 0x47, 0xb9, 0xb8, 0x5e, 0xe7, 0xd9, 0x6b, 0x3d, 0xe8, 0x03, 0x18, 0x15, 0x79,
    0x9a, 0x95, 0x58, 0xae, 0x50, 0xa6, 0x5b, 0x8d, 0x4c, 0x47, 0x88, 0x87, 0x86, 0x1d, 0xc4, 0xb5,
    0xbe, 0x98, 0xba, 0x38, 0x90, 0x6b, 0xd5, 0xf5, 0x3c, 0x67, 0xc3, 0xf3, 0x3e, 0x01, 0x97, 0x74,
    0xcf, 0xe4, 0xda, 0x3a, 0xf8, 0x9b, 0xdd, 0x20, 0xf8, 0xb9, 0xcc, 0xab, 0x02, 0x0f, 0xd2, 0xa9,
    0x07, 0x57, 0xc1, 0x15, 0xcc, 0x3b, 0xac, 0xb6, 0x03, 0x3b, 0x1d, 0x07, 0xfe, 0x04, 0xa6, 0x6b,
    0xdc, 0x45, 0x96, 0x50, 0xdb, 0x0a, 0xa5, 0x23, 0xd0, 0x2a, 0x21, 0xac, 0xed, 0x52, 0xb5, 0x7c,
    0xab, 0xdf, 0xf6, 0xad, 0xe0, 0xaf, 0x0e, 0xb8, 0xf5, 0x17, 0xe8, 0xbd, 0xfa, 0xec, 0xfa, 0xd6,
    0x31, 0xd1, 0x2b, 0xaa, 0x44, 0x9a, 0x55, 0xf2, 0x2f, 0x4b, 0xa3, 0x48, 0x97, 0x90, 0x13, 0xfe,
    0x65, 0x89, 0xce, 0x4d, 0x89, 0x2c, 0x12, 0xfc, 0x8a, 0x0b, 0xba, 0x64, 0x18, 0x02, 0x41, 0x9f,
    0x21, 0x82, 0xe9, 0x5b, 0x0b, 0x3c, 0xd8, 0x4c, 0xdf, 0x24, 0xab, 0x66, 0x52, 0x96, 0xe1, 0x65,
    0x54, 0x77, 0x03, 0x98, 0x65, 0x78, 0x49, 0x15, 0xeb, 0xfb, 0x30, 0x4f, 0xf8, 0x19, 0xcf, 0x62,
    0x1e, 0xa9, 0x92, 0x95, 0x36, 0x99, 0xce, 0x0c, 0x78, 0x8c, 0x58, 0xf0, 0xef, 0x1e, 0x0c, 0xc2,
    0x9b, 0x5c, 0xfa, 0x01, 0x2c, 0x8c, 0xc9, 0xba, 0x05, 0x6a, 0x16, 0xd7, 0xa6, 0x5d, 0x6d, 0xa4,
    0x94, 0xfe, 0x86, 0x61, 0xdf, 0x01, 0x28, 0xb4, 0x7f, 0x21, 0x57, 0xa7, 0x0e, 0xd7, 0x20, 0xab,
    0x04, 0xf3, 0x26, 0x26, 0xc8, 0x34, 0x31, 0x82, 0x0f, 0x55, 0x82, 0x47, 0x06, 0x30, 0x47, 0x98,
    0xc9, 0x75, 0xa4, 0x9b, 0x23, 0x93, 0x34, 0x54, 0x82, 0x86, 0x3f, 0xa0, 0x16, 0xe9, 0x3e, 0x4c,
    0xf2, 0x82, 0x4b, 0x56, 0xe6, 0x92, 0x92, 0x86, 0x1b, 0xd6, 0x34, 0x3e, 0xdb, 0xae, 0xb5, 0x5a,
    0x26, 0x5a, 0x6e, 0x0b, 0xda, 0x6a, 0x6e, 0x2f, 0xb9, 0x62, 0xa2, 0xd2, 0x09, 0xa4, 0xbe, 0xe4,
    0x05, 0x42, 0x37, 0x66, 0x11, 0xea, 0x02, 0x04, 0x8f, 0xbe, 0x48, 0xcb, 0xf3, 0xa8, 0x90, 0xdc,
    0xf4, 0x3d, 0x53, 0x04, 0x7f, 0x95, 0x96, 0xe7, 0x47, 0xb2, 0xeb, 0x13, 0xb3, 0x8e, 0x4f, 0x04,
    0x7f, 0xee, 0x41, 0xff, 0x38, 0xd9, 0xce, 0xcc, 0x4d, 0x09, 0xe9, 0xbd, 0xaa, 0x84, 0xf4, 0x3b,
    0x25, 0xc4, 0xb2, 0x28, 0x48, 0x07, 0x35, 0xeb, 0x19, 0xc6, 0xe9, 0x03, 0x18, 0x50, 0x28, 0x0d,
    0x6f, 0xa8, 0x15, 0x07, 0x72, 0x1d, 0x12, 0x17, 0x5f, 0x97, 0xc6, 0x79, 0x66, 0xdb, 0x45, 0x5c,
    0x63, 0x8a, 0xc0, 0x86, 0x53, 0x6b, 0x14, 0x97, 0xe8, 0xa5, 0xa6, 0x86, 0x63, 0xae, 0x31, 0xaa,
    0x04, 0x0d, 0x61, 0xc2, 0x69, 0xe5, 0x68, 0xda, 0xa0, 0xd5, 0x68, 0x72, 0x34, 0x6d, 0xe8, 0x74,
    0x01, 0xb0, 0xd1, 0x05, 0x34, 0x41, 0x36, 0xdd, 0x2c, 0xf4, 0x75, 0x51, 0xd0, 0x7d, 0x64, 0x5d,
    0xcd, 0xf3, 0xba, 0x9a, 0x93, 0xdb, 0x9a, 0xae, 0x65, 0xb5, 0x19, 0xf4, 0xcd, 0xc9, 0xbd, 0xce,
    0xc9, 0x3f, 0x26, 0xbd, 0x51, 0x88, 0x9b, 0x34, 0x76, 0x77, 0xa3, 0x98, 0x0a, 0x7e, 0xcc, 0xcb,
    0xb0, 0xde, 0x15, 0x54, 0x00, 0x0d, 0x4e, 0xb9, 0x35, 0x69, 0xae, 0x33, 0x3e, 0x7b, 0x17, 0xb4,
    0xc5, 0xba, 0xe6, 0xfb, 0xc0, 0x46, 0xb0, 0xbe, 0xe8, 0xf6, 0xd6, 0x45, 0x36, 0x88, 0xad, 0xa7,
    0x0d, 0x1a, 0x4f, 0x0b, 0x7e, 0x03, 0x63, 0xfb, 0xc6, 0x4d, 0x6f, 0xd9, 0x8a, 0x90, 0xde, 0xb7,
    0x47, 0x48, 0x7f, 0x23, 0x42, 0xb6, 0x9c, 0x7f, 0xb0, 0xe5, 0xfc, 0xc1, 0xbf, 0x1c, 0xea, 0x6f,
    0x0e, 0xe4, 0xba, 0x99, 0x52, 0x9c, 0xf6, 0x94, 0x72, 0x53, 0x85, 0xb0, 0x63, 0x89, 0x19, 0x89,
    0xec, 0x58, 0x72, 0x59, 0x29, 0xfd, 0xb6, 0x49, 0x48, 0x6b, 0xc4, 0xaa, 0x2c, 0xb5, 0x7d, 0x1f,
    0xad, 0xf1, 0x16, 0x5d, 0xf0, 0xb4, 0x43, 0x6a, 0xc2, 0xe4, 0x30, 0x56, 0x89, 0xd2, 0x88, 0xaa,
    0x7d, 0x73, 0x66, 0x40, 0x1d, 0xa8, 0x3f, 0x00, 0xcf, 0x6e, 0xaa, 0xdf, 0xac, 0x3d, 0xf5, 0x96,
    0xc1, 0x7f, 0x61, 0x9f, 0x6e, 0x35, 0xed, 0xb6, 0x34, 0xfd, 0x29, 0x19, 0xf8, 0xf1, 0x39, 0xcb,
    0xd0, 0xc0, 0xed, 0x98, 0x73, 0xb6, 0x62, 0x2e, 0x3e, 0x67, 0x59, 0x94, 0x55, 0x97, 0x66, 0x1a,
    0x1c, 0x23, 0xfd, 0xac, 0xba, 0x0c, 0x7e, 0xef, 0xc0, 0xad, 0xc3, 0x53, 0x3c, 0x63, 0xcd, 0x3f,
    0xe7, 0x4a, 0xb1, 0x35, 0xf7, 0x3f, 0xc4, 0xfe, 0x1b, 0x3d, 0x10, 0x8f, 0x59, 0xec, 0xbf, 0xd1,
    0xae, 0x69, 0xa7, 0x82, 0xeb, 0xcd, 0x49, 0xa8, 0x37, 0x19, 0x23, 0xf7, 0x6a, 0x23, 0x3f, 0x82,
    0x11, 0x8b, 0xcb, 0x34, 0xcf, 0x48, 0x9b, 0x8b, 0x7d, 0xbf, 0xf9, 0xfc, 0xf0, 0xf4, 0x80, 0x38,
    0xa1, 0xd9, 0x41, 0xb1, 0x9c, 0x9d, 0xe5, 0xc6, 0x8e, 0xb4, 0x0e, 0xfe, 0xe3, 0xc0, 0x5c, 0x57,
    0xe1, 0x57, 0xd5, 0xf8, 0x6f, 0x6d, 0x07, 0x6f, 0x98, 0x6e, 0xfd, 0x25, 0x8c, 0x4d, 0xf6, 0xb6,
    0x29, 0xc7, 0x90, 0xd8, 0xe7, 0x95, 0x32, 0x5d, 0xaf, 0xb9, 0x8c, 0x44, 0x9a, 0xd9, 0x4a, 0x34,
    0x35, 0xd8, 0x67, 0x69, 0xc6, 0xfd, 0xf7, 0x61, 0x91, 0xa4, 0x92, 0x93, 0xc0, 0x7a, 0x93, 0x36,
    0xf4, 0xbc, 0x46, 0x69, 0x9b, 0x75, 0xa1, 0x71, 0xcb, 0x85, 0xb6, 0x0a, 0xd9, 0x84, 0x94, 0xdf,
    0x2d, 0x64, 0x7f, 0x74, 0x60, 0xfe, 0x22, 0x4d, 0x78, 0x5e, 0xb2, 0x82, 0x53, 0xa3, 0x7f, 0x1f,
    0x26, 0x5c, 0x1d, 0xb2, 0x92, 0xd5, 0xd1, 0x5a, 0xd3, 0xc8, 0xb3, 0x4f, 0xdd, 0x7a, 0x7a, 0x93,
    0x52, 0xba, 0x8d, 0x30, 0x06, 0xf9, 0xe5, 0x7a, 0xa5, 0x2b, 0x59, 0x3f, 0xd4, 0x04, 0x9e, 0x74,
    0x85, 0xd7, 0x3e, 0x97, 0xc2, 0xce, 0x31, 0x96, 0xc6, 0x93, 0x28, 0x3f, 0x60, 0x0d, 0xeb, 0xe3,
    0x49, 0x9a, 0xea, 0x3c, 0xd2, 0x8c, 0xef, 0xc1, 0xff, 0x7a, 0x30, 0x7d, 0x9c, 0x5f, 0x16, 0x4c,
    0x72, 0x6a, 0x67, 0x68, 0xec, 0x3a, 0x15, 0x7c, 0x45, 0xb3, 0x63, 0x5f, 0x8f, 0x5d, 0x9a, 0xf6,
    0x1f, 0x81, 0x17, 0xeb, 0xad, 0x27, 0xe7, 0x92, 0xab, 0xf3, 0x5c, 0xe8, 0x57, 0xf4, 0xc2, 0x2d,
    0xdc, 0xdf, 0x83, 0xe9, 0x19, 0x8b, 0xf9, 0x53, 0xce, 0xca, 0x4a, 0x6a, 0x7b, 0xce, 0xc2, 0x36,
    0x84, 0xef, 0xd2, 0x73, 0xe2, 0x80, 0xae, 0xd1, 0x84, 0xff, 0x36, 0xb8, 0xa5, 0xe4, 0xfc, 0x59,
    0x9e, 0x70, 0x5d, 0x4a, 0xdc, 0xb0, 0x01, 0xe8, 0x05, 0xec, 0xd4, 0xbe, 0x8b, 0xd6, 0xfe, 0x2e,
    0xb4, 0xda, 0x17, 0x63, 0xc0, 0x76, 0x43, 0xb3, 0x0b, 0xa0, 0x38, 0x93, 0xf1, 0xf9, 0x89, 0x2e,
    0x25, 0xf8, 0x65, 0x0b, 0x41, 0x7e, 0x9a, 0x15, 0x95, 0x0e, 0x6a, 0x5b, 0x49, 0x1a, 0x04, 0xf9,
    0x71, 0x2e, 0x84, 0x76, 0x16, 0x53, 0x4a, 0x5a, 0x08, 0x69, 0x3b, 0xaf, 0x64, 0x5c, 0x17, 0x13,
    0x4d, 0xf9, 0x0f, 0x60, 0xce, 0x32, 0x26, 0xae, 0xed, 0x98, 0x6e, 0x8a, 0x72, 0x17, 0x0c, 0x4e,
    0x61, 0x66, 0xd4, 0xff, 0xe4, 0x8a, 0x67, 0xa5, 0xff, 0x13, 0x70, 0x39, 0x2e, 0x4e, 0x6c, 0x22,
    0x58, 0xec, 0xdf, 0x6f, 0x8d, 0xda, 0xad, 0xad, 0xb8, 0x23, 0x6c, 0x36, 0x53, 0x98, 0xb0, 0x6b,
    0x91, 0x33, 0x6d, 0x94, 0x59, 0x68, 0xc9, 0xe0, 0xd7, 0xb0, 0xc0, 0x4c, 0x63, 0xbe, 0x65, 0xf1,
    0xf9, 0x56, 0x4c, 0x2e, 0xb1, 0x89, 0x3d, 0x15, 0xbc, 0x8e, 0x48, 0x4b, 0xfa, 0x01, 0xcc, 0x8c,
    0x6d, 0x8f, 0xe3, 0xdc, 0x18, 0xb2, 0x17, 0x76, 0xb0, 0x20, 0x04, 0xaf, 0x39, 0x3f, 0xe4, 0xaa,
    0x12, 0xa5, 0xff, 0x33, 0x98, 0xc7, 0x6d, 0x80, 0x9c, 0x69, 0xba, 0xbf, 0xec, 0x14, 0xa3, 0x96,
    0x48, 0x61, 0x77, 0x7b, 0xf0, 0xbb, 0x3e, 0xb8, 0xf4, 0xcc, 0xa3, 0x4a, 0x9d, 0xbf, 0xd6, 0x9c,
    0xf0, 0x8e, 0x99, 0x5f, 0xf4, 0x0c, 0xa2, 0x63, 0x88, 0x46, 0x95, 0x63, 0x9a, 0x43, 0xee, 0x01,
    0x8d, 0x41, 0x11, 0x0e, 0x23, 0x26, 0x8d, 0x20, 0xfd, 0x24, 0xa3, 0x9e, 0x33, 0x55, 0x91, 0x62,
    0x65, 0xaa, 0xce, 0xae, 0x23, 0x26, 0x74, 0x44, 0x4d, 0xc2, 0x59, 0xaa, 0x8e, 0x35, 0x78, 0x20,
    0x04, 0xe6, 0x2d, 0xea, 0xc1, 0xa8, 0xaf, 0x1e, 0x99, 0xff, 0x7f, 0x2a, 0xc1, 0xa9, 0xad, 0x6e,
    0xea, 0xfe, 0xb8, 0x53, 0xf7, 0xdf, 0x02, 0x57, 0x4f, 0x79, 0x4d, 0x47, 0x38, 0xa1, 0x11, 0x0f,
    0x2d, 0xf6, 0x2e, 0x4c, 0x89, 0x69, 0xa6, 0x54, 0xb7, 0x99, 0x00, 0xcd, 0x90, 0xfa, 0x23, 0x98,
    0xa4, 0x45, 0x54, 0xe4, 0xb2, 0x54, 0x4b, 0xd8, 0xec, 0x1a, 0x50, 0x31, 0xab, 0xe2, 0x28, 0x97,
    0x65, 0x38, 0x4e, 0xe9, 0x57, 0xf9, 0xef, 0xc3, 0xa0, 0x92, 0x42, 0x2d, 0xa7, 0x9b, 0x95, 0x1f,
    0x37, 0x3f, 0x97, 0x22, 0x24, 0xb6, 0xff, 0x43, 0xdb, 0x21, 0xcc, 0x36, 0xc7, 0x9e, 0x5a, 0xe5,
    0xad, 0x3e, 0x21, 0xf8, 0xda, 0x81, 0x79, 0x87, 0xb1, 0x65, 0x0f, 0xd4, 0x7d, 0x5e, 0xa4, 0x71,
    0xfb, 0x6f, 0x07, 0x97, 0x10, 0x7a, 0x28, 0xce, 0xa4, 0xc4, 0x66, 0x72, 0x5d, 0xcf, 0xa4, 0x08,
    0x60, 0x9d, 0x6f, 0xb7, 0x0c, 0x83, 0xef, 0x6a, 0xaa, 0x87, 0x37, 0x34, 0xd5, 0xf4, 0xe7, 0x9a,
    0xe0, 0xa6, 0x52, 0x8f, 0xcc, 0x9f, 0x01, 0x95, 0xe0, 0x3a, 0x7e, 0x03, 0x98, 0x53, 0x90, 0x44,
    0x45, 0xa5, 0xce, 0xb1, 0xe6, 0xe8, 0x14, 0x31, 0xe5, 0xf6, 0x45, 0xab, 0x24, 0x78, 0x0e, 0xd0,
    0xa8, 0x13, 0xc5, 0xb5, 0xff, 0xb7, 0x15, 0x36, 0x85, 0x6b, 0x60, 0xd5, 0xfc, 0xcf, 0xd8, 0x6b,
    0xfd, 0xcf, 0xf8, 0xaa, 0xa1, 0xed, 0x63, 0x18, 0x1b, 0xc5, 0xdb, 0x1e, 0xd7, 0x69, 0x7a, 0xdc,
    0x57, 0xb4, 0x8a, 0xc1, 0x9f, 0x1c, 0x2d, 0xcc, 0x41, 0x59, 0x62, 0xa8, 0xbe, 0x09, 0x63, 0x2b,
    0xb8, 0x69, 0x35, 0x0b, 0x92, 0xd9, 0x0f, 0xa0, 0x1f, 0x33, 0xdd, 0x11, 0xdc, 0xf4, 0x77, 0x1c,
    0x32, 0xdb, 0x2f, 0xa9, 0xe7, 0x24, 0xf3, 0x92, 0x04, 0xdd, 0xcf, 0x30, 0x5b, 0xed, 0x3c, 0x68,
    0x88, 0x3a, 0xfa, 0x7b, 0x30, 0x11, 0x79, 0xcc, 0x04, 0xaa, 0xc1, 0x0c, 0x79, 0x44, 0xaf, 0x0a,
    0x3c, 0x98, 0xca, 0x0d, 0xfd, 0x53, 0x3c, 0xea, 0xd6, 0x9f, 0xe0, 0x1f, 0x0e, 0xdc, 0x79, 0xa2,
    0x8e, 0xb8, 0x54, 0x79, 0xf6, 0x98, 0xc5, 0xe7, 0xa6, 0xe7, 0xf0, 0x3f, 0x34, 0xf5, 0x47, 0xa7,
    0xb5, 0x56, 0x2a, 0x78, 0xa2, 0x5a, 0xdb, 0x12, 0x53, 0x7e, 0xef, 0x99, 0x4a, 0xa4, 0xdb, 0x84,
    0x7e, 0x9d, 0x94, 0xf4, 0xf8, 0x57, 0xd0, 0xe9, 0xad, 0x67, 0x69, 0x60, 0x45, 0xb9, 0xec, 0xcc,
    0x54, 0x1d, 0x13, 0xe7, 0x86, 0x6c, 0xf5, 0x36, 0xc3, 0xef, 0xec, 0x6d, 0xba, 0xff, 0x05, 0x0e,
    0xad, 0x75, 0x1e, 0xfd, 0xb6, 0x07, 0xb3, 0x76, 0x1f, 0xe5, 0xcf, 0x60, 0x72, 0x12, 0x69, 0x9d,
    0x7b, 0x3b, 0xbe, 0x07, 0x33, 0x4b, 0xe1, 0xb8, 0xe0, 0x39, 0xfe, 0x5d, 0xf0, 0xda, 0x08, 0x16,
    0x59, 0xaf, 0xe7, 0x03, 0x8c, 0x4e, 0x22, 0xda, 0xd1, 0xf7, 0xe7, 0xe0, 0xea, 0xf5, 0x71, 0x72,
    0xe1, 0x0d, 0xfc, 0xdb, 0x30, 0xaf, 0x49, 0x0c, 0x36, 0x6f, 0xe8, 0xbb, 0x30, 0x3c, 0x89, 0x90,
    0x3b, 0xf2, 0xef, 0xc0, 0x2d, 0x7b, 0x9c, 0x69, 0xb0, 0xbc, 0xb1, 0xbf, 0x00, 0x38, 0x89, 0x4e,
    0xcc, 0x9f, 0x3c, 0xde, 0x44, 0xcb, 0xa4, 0x4b, 0x8c, 0xe7, 0x6a, 0x99, 0x8e, 0x72, 0x21, 0x1e,
    0xe7, 0xd9, 0x59, 0xba, 0xf6, 0x40, 0xdf, 0xfe, 0x34, 0x15, 0xdc, 0x9b, 0xea, 0xeb, 0x70, 0x7d,
    0xcc, 0xcb, 0x32, 0xcd, 0xd6, 0xde, 0x4c, 0x7f, 0xd0, 0xf4, 0xa6, 0xde, 0xdc, 0xbf, 0x05, 0x53,
    0xb3, 0xa9, 0x64, 0xf1, 0x85, 0xb7, 0x78, 0xf4, 0x11, 0x4c, 0xac, 0xca, 0xf0, 0xb4, 0x55, 0xa6,
    0xb8, 0x2c, 0xbd, 0x1d, 0x5c, 0x3f, 0xa7, 0x21, 0xcc, 0x73, 0x70, 0x7d, 0xc8, 0x05, 0x2f, 0xb9,
    0xd7, 0x7b, 0x74, 0x00, 0xde, 0x66, 0xed, 0xc2, 0x43, 0x43, 0xbe, 0xca, 0xd2, 0x92, 0x8c, 0xef,
    0xed, 0x20, 0xa0, 0x3f, 0xd6, 0x80, 0xe3, 0x4f, 0x61, 0x6c, 0xbe, 0xf2, 0x7a, 0x8f, 0x3e, 0x81,
    0x45, 0xd7, 0x4f, 0xb4, 0xe2, 0x0e, 0x4f, 0xc9, 0x1c, 0xde, 0x8e, 0x56, 0x8d, 0x21, 0xb5, 0xf3,
    0x79, 0xce, 0xa7, 0xcb, 0xbf, 0x7c, 0xb3, 0xeb, 0x7c, 0xf5, 0xcd, 0xae, 0xf3, 0xcf, 0x6f, 0x76,
    0x9d, 0x3f, 0xbc, 0xdc, 0xdd, 0xf9, 0xea, 0xe5, 0xee, 0xce, 0xdf, 0x5f, 0xee, 0xee, 0x9c, 0x8e,
    0xc8, 0xf8, 0x1f, 0xff, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xbc, 0x0b, 0x36, 0x5f, 0xab, 0x19, 0x00,
    0x00,
    // 2743 bytes of a gzipped FileDescriptorProto
    0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x58, 0xcb, 0x6f, 0xdd, 0xc6,
    0xd5, 0x17, 0xef, 0x9b, 0xe7, 0x3e, 0x44, 0xd3, 0x4e, 0x4c, 0x3b, 0x89, 0xa2, 0xf0, 0x73, 0x10,
    0x47, 0x5f, 0xbe, 0x7c, 0x85, 0x93, 0x45, 0xd1, 0x45, 0x01, 0xc5, 0xb2, 0xdb, 0x0b, 0x24, 0xae,
    0x4a, 0xc9, 0xce, 0xae, 0xc4, 0x88, 0x1c, 0xdd, 0x4b, 0x88, 0x22, 0x89, 0x19, 0x52, 0x89, 0x16,
    0x05, 0xba, 0xe8, 0xa6, 0xab, 0xf6, 0x1f, 0x2a, 0xda, 0x65, 0x17, 0x5d, 0x64, 0x91, 0x45, 0xbb,
    0x4a, 0x91, 0x6c, 0x0a, 0x14, 0xfd, 0x13, 0x0a, 0x14, 0xe7, 0xcc, 0x0c, 0x1f, 0xf7, 0xca, 0x89,
    0x57, 0x77, 0xce, 0xef, 0xcc, 0x3d, 0x33, 0x73, 0xde, 0x87, 0xb0, 0x28, 0x44, 0x5e, 0xe6, 0x97,
    0x72, 0xf5, 0x21, 0x2d, 0xdc, 0x89, 0xa1, 0xef, 0xc3, 0x19, 0x93, 0x5c, 0xa1, 0xfe, 0x53, 0x18,
    0x1c, 0x0a, 0xce, 0xdc, 0x05, 0xf4, 0x92, 0xd8, 0xb3, 0xf6, 0xad, 0x87, 0xc3, 0xa0, 0x97, 0xc4,
    0xee, 0x7d, 0x98, 0x14, 0x4c, 0xf0, 0xac, 0x4c, 0x62, 0xaf, 0x47, 0x68, 0x4d, 0xbb, 0x2e, 0x0c,
    0x32, 0x76, 0xc9, 0xbd, 0xfe, 0xbe, 0xf5, 0xd0, 0x0e, 0x68, 0xed, 0xff, 0x66, 0x08, 0xa3, 0xc7,
    0xec, 0x92, 0x8b, 0xb6, 0x28, 0x9b, 0x44, 0x99, 0xed, 0xbd, 0x66, 0xbb, 0x7b, 0x07, 0x86, 0x2c,
    0x4d, 0x98, 0xd4, 0x32, 0x14, 0xe1, 0xbe, 0x03, 0x33, 0x99, 0xb1, 0x42, 0xae, 0xf3, 0x32, 0xac,
    0x44, 0xea, 0x0d, 0x88, 0x39, 0x35, 0xd8, 0x73, 0x91, 0xa2, 0xb0, 0xf2, 0xba, 0xe0, 0xde, 0x90,
    0xee, 0x44, 0x6b, 0xc4, 0x58, 0x1c, 0x0b, 0x6f, 0xa4, 0x0e, 0xc0, 0xb5, 0xfb, 0x26, 0xd8, 0x69,
    0x9e, 0xad, 0x92, 0xb2, 0x8a, 0xb9, 0x37, 0xde, 0xb7, 0x1e, 0xf6, 0x82, 0x06, 0xc0, 0xd7, 0xa5,
    0xac, 0x54, 0xcc, 0x09, 0x31, 0x6b, 0x1a, 0xaf, 0x76, 0x9e, 0xe6, 0xb9, 0xf0, 0x6c, 0x3a, 0x42,
    0x11, 0x78, 0x86, 0x28, 0x65, 0xe1, 0x81, 0x3a, 0x03, 0xd7, 0xf4, 0xd0, 0xc2, 0x9b, 0xea, 0x87,
    0x16, 0xb8, 0xa7, 0xc8, 0x45, 0xe9, 0xcd, 0xd4, 0xdd, 0x70, 0x8d, 0x27, 0x55, 0x92, 0x0b, 0x52,
    0xc0, 0x9c, 0x76, 0xd6, 0xb4, 0xd2, 0xb1, 0x94, 0x5f, 0xe4, 0x22, 0xf6, 0x16, 0x8a, 0x67, 0x68,
    0xbc, 0xc5, 0x99, 0x60, 0x59, 0xec, 0xed, 0x2a, 0x05, 0x11, 0x81, 0xff, 0x10, 0x5c, 0x72, 0x71,
    0xc5, 0x63, 0xcf, 0x51, 0xff, 0x30, 0xb4, 0xfb, 0x16, 0x40, 0x22, 0x43, 0x51, 0x65, 0x59, 0x92,
    0xad, 0xbc, 0x5b, 0xfb, 0xd6, 0xc3, 0x49, 0x60, 0x27, 0x32, 0x50, 0x00, 0xb2, 0x45, 0x95, 0x85,
    0x3c, 0x63, 0x67, 0x29, 0xf7, 0x5c, 0xc5, 0x16, 0x55, 0xf6, 0x84, 0x00, 0xf7, 0x1e, 0x4c, 0x90,
    0x4d, 0xba, 0xbd, 0x4d, 0xf7, 0x1f, 0x8b, 0x2a, 0x3b, 0x45, 0xf5, 0xfa, 0x30, 0x47, 0x16, 0x1d,
    0x23, 0xc2, 0x24, 0xf6, 0xee, 0x28, 0xb3, 0x88, 0x2a, 0x3b, 0x21, 0x6c, 0x19, 0xbb, 0xef, 0x83,
    0x23, 0xb8, 0xcc, 0xd3, 0xaa, 0x4c, 0xf2, 0x2c, 0xfc, 0x22, 0x89, 0xcb, 0xb5, 0xf7, 0x1a, 0x89,
    0xd9, 0x6d, 0xf0, 0xcf, 0x11, 0x76, 0xff, 0x17, 0x6e, 0xb5, 0xb6, 0xae, 0x79, 0xb2, 0x5a, 0x97,
    0xde, 0xeb, 0xb4, 0xb7, 0x25, 0xe3, 0xe7, 0x84, 0xbb, 0x07, 0x30, 0x96, 0x3c, 0x93, 0xb9, 0x90,
    0xde, 0xdd, 0xfd, 0xfe, 0xc3, 0xe9, 0x23, 0xe7, 0xc3, 0xda, 0xad, 0x4f, 0x88, 0x11, 0x98, 0x0d,
    0xfe, 0xd7, 0x16, 0x8c, 0x14, 0x76, 0x93, 0x0b, 0xd2, 0xcb, 0x7a, 0x2d, 0xaf, 0x51, 0xd6, 0xeb,
    0x6f, 0x59, 0x6f, 0xf0, 0x12, 0xeb, 0x0d, 0xbf, 0xc7, 0x7a, 0xa3, 0x0d, 0xeb, 0xbd, 0x09, 0x76,
    0xb9, 0x16, 0x5c, 0xae, 0xf3, 0x34, 0x26, 0xef, 0x1b, 0x06, 0x0d, 0xe0, 0xbe, 0x0e, 0x23, 0x6d,
    0x86, 0x09, 0x99, 0x41, 0x53, 0x68, 0xf3, 0x98, 0x5f, 0x2d, 0x63, 0xf2, 0x3c, 0x3b, 0x50, 0x84,
    0xff, 0x19, 0x80, 0x0a, 0xac, 0x4f, 0x93, 0xec, 0x02, 0xcd, 0x18, 0x11, 0x15, 0x26, 0xb1, 0xd4,
    0x2f, 0xb4, 0x15, 0xb2, 0x8c, 0xa5, 0xbb, 0x0f, 0xb3, 0x34, 0xc9, 0x2e, 0xc2, 0x92, 0xc9, 0x8b,
    0x50, 0x87, 0xae, 0x1d, 0x00, 0x62, 0xa7, 0x4c, 0x5e, 0x2c, 0x63, 0x3f, 0x82, 0x5b, 0x4a, 0xdc,
    0x61, 0x16, 0x13, 0x94, 0x9d, 0xe7, 0xee, 0x43, 0x18, 0x29, 0x19, 0x24, 0xb1, 0xa3, 0x65, 0xb5,
    0x39, 0xd0, 0x7c, 0xf7, 0x01, 0x0c, 0x51, 0xb6, 0xf4, 0x7a, 0x64, 0x8e, 0x45, 0xb3, 0x11, 0x85,
    0x05, 0x8a, 0xe9, 0x7f, 0x63, 0xc1, 0x00, 0x69, 0x7c, 0x2a, 0x22, 0xb5, 0x31, 0x34, 0x85, 0xca,
    0xc3, 0x55, 0x2b, 0x2f, 0xd4, 0xb4, 0xfb, 0x06, 0xd8, 0x91, 0xe0, 0xac, 0xe4, 0x21, 0x2b, 0xb5,
    0x7d, 0x26, 0x0a, 0x38, 0x2c, 0x5b, 0xcc, 0xb3, 0x6b, 0x9d, 0x1f, 0x34, 0xf3, 0x93, 0x6b, 0x64,
    0x56, 0x45, 0xac, 0xff, 0x69, 0xec, 0x45, 0xc0, 0x61, 0xd9, 0xd2, 0xfa, 0xa8, 0xa3, 0xf5, 0x7b,
    0x30, 0x49, 0x64, 0xc8, 0x52, 0x26, 0x2e, 0xc9, 0x54, 0x93, 0x60, 0x9c, 0xc8, 0x43, 0x24, 0x91,
    0x15, 0xf3, 0x34, 0x3c, 0x4f, 0xd9, 0x4a, 0x9b, 0x6a, 0x1c, 0xf3, 0xf4, 0x69, 0xca, 0x56, 0xfe,
    0x29, 0x4c, 0xf1, 0x81, 0x27, 0xb1, 0x52, 0xa0, 0x0f, 0x03, 0xbc, 0xbf, 0x56, 0xdf, 0xa6, 0x56,
    0x88, 0xe7, 0xbe, 0x03, 0x03, 0x19, 0xd7, 0x9a, 0x9b, 0xb7, 0x1c, 0x39, 0xbe, 0x08, 0x88, 0xe5,
    0xff, 0x04, 0x46, 0x48, 0x54, 0x99, 0xfb, 0x1a, 0x8c, 0x92, 0x22, 0x0a, 0x6b, 0xc5, 0x0d, 0x93,
    0x22, 0x5a, 0xc6, 0x78, 0x23, 0x19, 0x5f, 0x84, 0xb5, 0x33, 0xdb, 0xc1, 0x58, 0xc6, 0x17, 0x18,
    0xa6, 0xfe, 0x0b, 0x00, 0x7d, 0x23, 0xfc, 0xff, 0xab, 0x5c, 0xe8, 0x41, 0xe7, 0x42, 0x4e, 0xf7,
    0x42, 0x55, 0xa6, 0xef, 0xf4, 0x75, 0xcf, 0x38, 0x20, 0x59, 0x74, 0x33, 0xb4, 0xd0, 0x20, 0xc6,
    0x21, 0x8d, 0x29, 0x8d, 0x3f, 0xba, 0x77, 0x61, 0x6c, 0x3c, 0xb1, 0xdf, 0xd8, 0x7f, 0x49, 0xff,
    0x2a, 0x93, 0x4b, 0x1e, 0x8a, 0x2a, 0xe5, 0xc6, 0x8c, 0x08, 0x04, 0x55, 0xca, 0x29, 0x55, 0x71,
    0x16, 0x95, 0x8a, 0xab, 0xec, 0x68, 0x13, 0x42, 0xec, 0x77, 0x60, 0xa6, 0xd8, 0x31, 0xbf, 0x4a,
    0x22, 0xae, 0x83, 0x6f, 0x4a, 0xd8, 0x11, 0x41, 0x1d, 0xc3, 0x8d, 0x3b, 0x86, 0x73, 0xdf, 0x86,
    0xa9, 0xf6, 0x91, 0x96, 0x59, 0x41, 0x41, 0xb4, 0xa1, 0xf1, 0x13, 0xbb, 0xe3, 0x27, 0x2e, 0x0c,
    0x24, 0xe6, 0x07, 0x50, 0xf9, 0x01, 0xd7, 0xf8, 0xbe, 0x44, 0x86, 0xe7, 0x55, 0x9a, 0x52, 0x19,
    0x98, 0x04, 0xa3, 0x44, 0x3e, 0xad, 0xd2, 0x74, 0x2b, 0x0e, 0x67, 0x5b, 0x71, 0xf8, 0x4b, 0x58,
    0x68, 0xad, 0x26, 0x97, 0x1c, 0x1f, 0xfa, 0x4a, 0x75, 0xb3, 0xa3, 0xb7, 0x7e, 0x57, 0x6f, 0xfe,
    0x33, 0x18, 0x1d, 0xb1, 0xeb, 0xc7, 0x65, 0xea, 0x3a, 0xd0, 0x8f, 0xd9, 0xb5, 0x2e, 0xe7, 0xb8,
    0x74, 0x1f, 0x01, 0xa8, 0x3f, 0xb2, 0x6c, 0xc5, 0xb5, 0xc5, 0x6f, 0xb7, 0xbc, 0x02, 0x65, 0x20,
    0x2b, 0x20, 0xf9, 0xb4, 0xf4, 0x3f, 0x02, 0xbb, 0xc6, 0x31, 0x39, 0xc9, 0x92, 0x89, 0xd2, 0xf8,
    0x23, 0x11, 0x78, 0x10, 0xcf, 0x8c, 0xdd, 0x71, 0xe9, 0xbf, 0x80, 0xf1, 0x71, 0x9e, 0x5e, 0xaf,
    0xf2, 0xec, 0x95, 0x1e, 0xf4, 0x1e, 0x8c, 0x8a, 0x3c, 0xc9, 0x4a, 0xec, 0x04, 0xf0, 0x4e, 0xbb,
    0xcd, 0x9d, 0x8e, 0x11, 0x0f, 0x34, 0xdb, 0x8f, 0x6a, 0x7d, 0x31, 0x79, 0x71, 0x28, 0x56, 0xb2,
    0xeb, 0x79, 0xd6, 0x86, 0xe7, 0x7d, 0x0c, 0x36, 0xe9, 0x9e, 0x89, 0x95, 0x71, 0xf0, 0xbb, 0xdd,
    0x20, 0xf8, 0x99, 0xc8, 0xab, 0x02, 0x05, 0xa9, 0xd4, 0x83, 0x2b, 0xff, 0x0a, 0xe6, 0x1d, 0x56,
    0xdb, 0x81, 0xad, 0x8e, 0x03, 0x7f, 0x0c, 0xd3, 0x15, 0xee, 0x22, 0x4b, 0xc8, 0x6d, 0x85, 0x92,
    0x08, 0xb4, 0x4a, 0x00, 0x2b, 0xb3, 0x94, 0x2d, 0xdf, 0xea, 0xb7, 0x7d, 0xcb, 0xff, 0xab, 0x05,
    0x76, 0xfd, 0x0f, 0xf4, 0x5e, 0x25, 0xbb, 0x3e, 0x75, 0x4c, 0xf4, 0x92, 0x8a, 0xbc, 0x62, 0x95,
    0xfc, 0xcb, 0x52, 0x2b, 0xd2, 0x26, 0xe4, 0x94, 0x7f, 0x59, 0xa2, 0x73, 0x53, 0x22, 0x0b, 0x53,
    0x7e, 0xc5, 0x53, 0x3a, 0x64, 0x18, 0x00, 0x41, 0x9f, 0x22, 0x82, 0xe9, 0x5b, 0x5d, 0x78, 0xb0,
    0x99, 0xbe, 0xe9, 0xae, 0x8a, 0x49, 0x59, 0x86, 0x97, 0x61, 0xdd, 0x68, 0x61, 0x96, 0xe1, 0x25,
    0x35, 0x03, 0xff, 0x03, 0xf3, 0x98, 0x9f, 0xf3, 0x2c, 0xe2, 0xa1, 0x2c, 0x59, 0x69, 0x92, 0xe9,
    0x4c, 0x83, 0x27, 0x88, 0xf9, 0xff, 0xea, 0xc1, 0x20, 0xb8, 0xc9, 0xa5, 0x1f, 0xc0, 0x42, 0x9b,
    0xac, 0x5b, 0xa0, 0x66, 0x51, 0x6d, 0xda, 0xe5, 0x46, 0x4a, 0xe9, 0x6f, 0x18, 0xf6, 0x2d, 0x80,
    0x42, 0xf9, 0x17, 0x72, 0x55, 0xea, 0xb0, 0x35, 0xb2, 0x8c, 0x31, 0x6f, 0x62, 0x82, 0x4c, 0x62,
    0x7d, 0xf1, 0xa1, 0x8c, 0x51, 0xa4, 0x0f, 0x73, 0x84, 0x99, 0x58, 0x85, 0xaa, 0xef, 0xd4, 0x49,
    0x43, 0xc6, 0x68, 0xf8, 0x43, 0xea, 0x3e, 0xef, 0xc3, 0x24, 0x2f, 0xb8, 0x60, 0x65, 0x2e, 0x28,
    0x69, 0xd8, 0x41, 0x4d, 0xe3, 0xb3, 0xcd, 0x5a, 0xa9, 0x65, 0xa2, 0xee, 0x6d, 0x40, 0xd3, 0x28,
    0x99, 0x43, 0xae, 0x58, 0x5a, 0x71, 0x5d, 0xc7, 0xf5, 0x21, 0x2f, 0x10, 0xba, 0x31, 0x8b, 0x50,
    0x83, 0x95, 0xf2, 0xf0, 0x8b, 0xa4, 0x5c, 0x87, 0x85, 0xe0, 0xba, 0xa5, 0x9c, 0x22, 0xf8, 0x79,
    0x52, 0xae, 0x8f, 0x45, 0xd7, 0x27, 0x66, 0x1d, 0x9f, 0xf0, 0xff, 0xdc, 0x83, 0xfe, 0x49, 0xbc,
    0x9d, 0x99, 0x9b, 0x12, 0xd2, 0x7b, 0x59, 0x09, 0xe9, 0x77, 0x4a, 0x88, 0x61, 0x51, 0x90, 0x0e,
    0x6a, 0xd6, 0x33, 0x8c, 0xd3, 0x07, 0x30, 0xa0, 0x50, 0x1a, 0xde, 0x50, 0x2b, 0x0e, 0xc5, 0x2a,
    0x20, 0x2e, 0xbe, 0x2e, 0x89, 0xf2, 0xcc, 0x74, 0xe2, 0xb8, 0xc6, 0x14, 0x81, 0xbd, 0xbc, 0xd2,
    0x28, 0x2e, 0xd1, 0x4b, 0x75, 0x0d, 0xc7, 0x5c, 0xa3, 0x55, 0x09, 0x0a, 0xc2, 0x84, 0xd3, 0xca,
    0xd1, 0xb4, 0x41, 0xa9, 0x51, 0xe7, 0x68, 0xda, 0xd0, 0xe9, 0x02, 0x60, 0xa3, 0x0b, 0x68, 0x82,
    0x6c, 0xba, 0x59, 0xe8, 0xeb, 0xa2, 0xa0, 0x5a, 0xf4, 0xba, 0x9a, 0xe7, 0x75, 0x35, 0x27, 0xb7,
    0xd5, 0x5d, 0xcb, 0x72, 0x33, 0xe8, 0x1b, 0xc9, 0xbd, 0x8e, 0xe4, 0x1f, 0x91, 0xde, 0x28, 0xc4,
    0x75, 0x1a, 0xbb, 0xb3, 0x51, 0x4c, 0x53, 0x7e, 0xc2, 0xcb, 0xa0, 0xde, 0xe5, 0x57, 0x00, 0x0d,
    0x4e, 0xb9, 0x35, 0x6e, 0x8e, 0xd3, 0x3e, 0x7b, 0x07, 0x94, 0xc5, 0xba, 0xe6, 0x7b, 0xcf, 0x44,
    0xb0, 0x3a, 0xe8, 0xd6, 0xd6, 0x41, 0x26, 0x88, 0x8d, 0xa7, 0x0d, 0x1a, 0x4f, 0xf3, 0x7f, 0x0d,
    0x63, 0xf3, 0xc6, 0x4d, 0x6f, 0xd9, 0x8a, 0x90, 0xde, 0xf7, 0x47, 0x48, 0x7f, 0x23, 0x42, 0xb6,
    0x9c, 0x7f, 0xb0, 0xe5, 0xfc, 0xfe, 0x3f, 0x2d, 0xea, 0x6f, 0x0e, 0xc5, 0xaa, 0x19, 0x00, 0xad,
    0xf6, 0x00, 0x78, 0x53, 0x85, 0x30, 0xbd, 0xbb, 0x9e, 0x36, 0xcd, 0xc4, 0x77, 0x59, 0x49, 0xf5,
    0xb6, 0x49, 0x40, 0x6b, 0xc4, 0xaa, 0x2c, 0x31, 0x7d, 0x1f, 0xad, 0xf1, 0x14, 0x55, 0xf0, 0x94,
    0x43, 0x2a, 0x42, 0xe7, 0x30, 0x56, 0xa5, 0xa5, 0xbe, 0xaa, 0xf2, 0xcd, 0x99, 0x06, 0x55, 0xa0,
    0xbe, 0x0f, 0x8e, 0xd9, 0x54, 0xbf, 0x59, 0x79, 0xea, 0xae, 0xc6, 0x7f, 0x61, 0x9e, 0x6e, 0x34,
    0x6d, 0xb7, 0x34, 0xfd, 0x09, 0x19, 0xf8, 0xf1, 0x9a, 0x65, 0x68, 0xe0, 0x76, 0xcc, 0x59, 0x5b,
    0x31, 0x17, 0xad, 0x59, 0x16, 0x66, 0xd5, 0xa5, 0x1e, 0x4f, 0xc6, 0x48, 0x3f, 0xab, 0x2e, 0xfd,
    0xdf, 0x5b, 0xb0, 0x7b, 0x74, 0x86, 0x32, 0x56, 0xfc, 0x33, 0x2e, 0x25, 0x5b, 0x71, 0xf7, 0x03,
    0xec, 0xbf, 0xd1, 0x03, 0x51, 0xcc, 0xe2, 0xd1, 0xeb, 0xed, 0x9a, 0x76, 0x96, 0x72, 0xb5, 0x39,
    0x0e, 0xd4, 0x26, 0x6d, 0xe4, 0x5e, 0x6d, 0xe4, 0x03, 0x18, 0xb1, 0x08, 0xc7, 0x2b, 0xd2, 0xe6,
    0xe2, 0x91, 0xdb, 0xfc, 0xfd, 0xe8, 0xec, 0x90, 0x38, 0x81, 0xde, 0x41, 0xb1, 0x9c, 0x9d, 0xe7,
    0xda, 0x8e, 0xb4, 0xf6, 0xff, 0x6d, 0xc1, 0x5c, 0x55, 0xe1, 0x97, 0xd5, 0xf8, 0xef, 0x6d, 0x07,
    0x6f, 0xf8, 0x70, 0xe0, 0x7a, 0x30, 0xd6, 0xd9, 0xdb, 0xa4, 0x1c, 0x4d, 0x62, 0x9f, 0x57, 0x8a,
    0x64, 0xb5, 0xe2, 0x22, 0x4c, 0x93, 0xcc, 0x54, 0xa2, 0xa9, 0xc6, 0x3e, 0x4d, 0x32, 0xee, 0xbe,
    0x0b, 0x8b, 0x38, 0x11, 0x9c, 0x2e, 0xac, 0x36, 0x29, 0x43, 0xcf, 0x6b, 0x94, 0xb6, 0x19, 0x17,
    0x1a, 0xb7, 0x5c, 0x68, 0xab, 0x90, 0x4d, 0x48, 0xf9, 0xdd, 0x42, 0xf6, 0x47, 0x0b, 0xe6, 0x2f,
    0x92, 0x98, 0xe7, 0x25, 0x2b, 0x38, 0x35, 0xfa, 0xf7, 0x61, 0xc2, 0xe5, 0x11, 0x2b, 0x59, 0x1d,
    0xad, 0x35, 0x8d, 0x3c, 0xf3, 0xd4, 0xad, 0xa7, 0x37, 0x29, 0xa5, 0xdb, 0x08, 0x63, 0x90, 0x5f,
    0xae, 0x96, 0xaa, 0x92, 0xf5, 0x03, 0x45, 0xa0, 0xa4, 0x2b, 0x3c, 0xf6, 0xb9, 0x48, 0xcd, 0x1c,
    0x63, 0x68, 0x94, 0x44, 0xf9, 0x01, 0x6b, 0x58, 0x1f, 0x25, 0x29, 0xaa, 0xf3, 0x48, 0x3d, 0xe3,
    0xfa, 0xff, 0xe9, 0xc1, 0xf4, 0x71, 0x7e, 0x59, 0x30, 0xc1, 0xa9, 0x9d, 0xa1, 0xb1, 0xeb, 0x2c,
    0xe5, 0x4b, 0x9a, 0x1d, 0xfb, 0x6a, 0xec, 0x52, 0xb4, 0x7b, 0x00, 0x4e, 0xa4, 0xb6, 0x9e, 0xd6,
    0xa3, 0x6b, 0x8f, 0xbe, 0x8d, 0x6c, 0xe1, 0xee, 0x3e, 0x4c, 0xcf, 0x59, 0xc4, 0x9f, 0x72, 0x56,
    0x56, 0x42, 0xd9, 0x73, 0x16, 0xb4, 0x21, 0x7c, 0x97, 0x9a, 0x13, 0x07, 0x74, 0x8c, 0x22, 0x68,
    0x2e, 0x16, 0x9c, 0x3f, 0xcb, 0x63, 0xae, 0x4a, 0x89, 0x1d, 0x34, 0x00, 0xbd, 0x80, 0x9d, 0x99,
    0x77, 0xd1, 0xda, 0xdd, 0x83, 0x56, 0xfb, 0xa2, 0x0d, 0xd8, 0x6e, 0x68, 0xf6, 0x00, 0x24, 0x67,
    0x22, 0x5a, 0x9f, 0xaa, 0x52, 0x82, 0xff, 0x6c, 0x21, 0xc8, 0x4f, 0xb2, 0xa2, 0x52, 0x41, 0x6d,
    0x2a, 0x49, 0x83, 0x20, 0x3f, 0xca, 0xd3, 0x54, 0x39, 0x8b, 0x2e, 0x25, 0x2d, 0x84, 0xb4, 0x9d,
    0x57, 0x22, 0xaa, 0x8b, 0x89, 0xa2, 0xdc, 0x07, 0x30, 0x67, 0x19, 0x4b, 0xaf, 0xcd, 0x17, 0x10,
    0x5d, 0x94, 0xbb, 0xa0, 0x7f, 0x06, 0x33, 0xad, 0xfe, 0x27, 0x57, 0x3c, 0x2b, 0xdd, 0x1f, 0x83,
    0xcd, 0x71, 0x71, 0x6a, 0x12, 0xc1, 0xe2, 0xd1, 0xfd, 0xd6, 0xa8, 0xdd, 0xda, 0x8a, 0x3b, 0x82,
    0x66, 0x33, 0x85, 0x09, 0xbb, 0x4e, 0x73, 0xa6, 0x8c, 0x32, 0x0b, 0x0c, 0xe9, 0xff, 0x0a, 0x16,
    0x98, 0x69, 0xf4, 0x7f, 0x59, 0xb4, 0xde, 0x8a, 0x49, 0x0f, 0x9b, 0xd8, 0xb3, 0x94, 0xd7, 0x11,
    0x69, 0x48, 0xd7, 0x87, 0x99, 0xb6, 0xed, 0x49, 0x94, 0x6b, 0x43, 0xf6, 0x82, 0x0e, 0xe6, 0x07,
    0xe0, 0x34, 0xf2, 0x03, 0x2e, 0xab, 0xb4, 0x74, 0x7f, 0x0a, 0xf3, 0xa8, 0x0d, 0x90, 0x33, 0x4d,
    0x1f, 0x79, 0x9d, 0x62, 0xd4, 0xba, 0x52, 0xd0, 0xdd, 0xee, 0xff, 0xae, 0x0f, 0x36, 0x3d, 0xf3,
    0xb8, 0x92, 0xeb, 0x57, 0x9a, 0x13, 0xde, 0xd2, 0xf3, 0x8b, 0x9a, 0x41, 0x54, 0x0c, 0xd1, 0xa8,
    0x72, 0x42, 0x73, 0xc8, 0x3d, 0xa0, 0x31, 0x28, 0xc4, 0x61, 0x44, 0xa7, 0x11, 0xa4, 0x9f, 0x64,
    0xd4, 0x73, 0x26, 0x32, 0x94, 0xac, 0x4c, 0xe4, 0xf9, 0x75, 0xc8, 0x52, 0x15, 0x51, 0x93, 0x60,
    0x96, 0xc8, 0x13, 0x05, 0x1e, 0xa6, 0x29, 0xe6, 0x2d, 0xea, 0xc1, 0xa8, 0xaf, 0xd6, 0x9f, 0x73,
    0x10, 0xa0, 0xb6, 0xba, 0xa9, 0xfb, 0xe3, 0x4e, 0xdd, 0x7f, 0x03, 0x6c, 0x35, 0xe5, 0x35, 0x1d,
    0xe1, 0x84, 0x46, 0x3c, 0xb4, 0xd8, 0xdb, 0x30, 0x25, 0xa6, 0x9e, 0x52, 0xed, 0x66, 0x02, 0xd4,
    0x43, 0xea, 0xff, 0xc3, 0x24, 0x29, 0xc2, 0x22, 0x17, 0xa5, 0xf4, 0x60, 0xb3, 0x6b, 0x40, 0xc5,
    0x2c, 0x8b, 0xe3, 0x5c, 0x94, 0xc1, 0x38, 0xa1, 0x5f, 0xe9, 0xbe, 0x0b, 0x83, 0x4a, 0xa4, 0xd2,
    0x9b, 0x6e, 0x56, 0x7e, 0xdc, 0xfc, 0x5c, 0xa4, 0x01, 0xb1, 0xdd, 0xff, 0x33, 0x1d, 0xc2, 0x6c,
    0x73, 0xec, 0xa9, 0x55, 0xde, 0xea, 0x13, 0xfc, 0x6f, 0x2c, 0x98, 0x77, 0x18, 0x5b, 0xf6, 0x40,
    0xdd, 0xe7, 0x45, 0x12, 0xb5, 0x3f, 0x3b, 0xd8, 0x84, 0xd0, 0x43, 0x71, 0x26, 0x25, 0x36, 0x13,
    0xab, 0x7a, 0x26, 0x45, 0x00, 0xeb, 0x7c, 0xbb, 0x65, 0x18, 0xfc, 0x50, 0x53, 0x3d, 0xbc, 0xa1,
    0xa9, 0xa6, 0xef, 0x96, 0x29, 0xd7, 0x95, 0x7a, 0xa4, 0x3f, 0x06, 0x54, 0x29, 0x57, 0xf1, 0xeb,
    0xc3, 0x9c, 0x82, 0x24, 0x2c, 0x2a, 0xb9, 0xc6, 0x9a, 0xa3, 0x52, 0xc4, 0x94, 0x9b, 0x17, 0x2d,
    0x63, 0xff, 0x39, 0x40, 0xa3, 0x4e, 0xbc, 0xae, 0xf9, 0x94, 0x59, 0x98, 0x14, 0xae, 0x80, 0x65,
    0xf3, 0x11, 0xb0, 0xd7, 0xfa, 0x08, 0xf8, 0xb2, 0xa1, 0xed, 0x23, 0x18, 0x6b, 0xc5, 0x9b, 0x1e,
    0xd7, 0x6a, 0x7a, 0xdc, 0x97, 0xb4, 0x8a, 0xfe, 0x9f, 0x2c, 0x75, 0x99, 0xc3, 0xb2, 0xc4, 0x50,
    0xbd, 0x0b, 0x63, 0x73, 0x71, 0xdd, 0x6a, 0x16, 0x74, 0x67, 0xd7, 0x87, 0x7e, 0xc4, 0x54, 0x47,
    0x70, 0xd3, 0xe7, 0x38, 0x64, 0xb6, 0x5f, 0x52, 0xcf, 0x49, 0xd2, 0x7c, 0x91, 0x7d, 0x1b, 0xa6,
    0x9a, 0xd9, 0x6a, 0xe7, 0x41, 0x41, 0xd4, 0xd1, 0xdf, 0x83, 0x49, 0x9a, 0x47, 0x2c, 0x45, 0x35,
    0xe8, 0x21, 0x8f, 0xe8, 0x65, 0x81, 0x82, 0xa9, 0xdc, 0xd0, 0x47, 0xf8, 0x51, 0xb7, 0xfe, 0xf8,
    0x7f, 0xb7, 0xe0, 0xf6, 0x13, 0x79, 0xcc, 0x85, 0xcc, 0xb3, 0xc7, 0x2c, 0x5a, 0xeb, 0x9e, 0xc3,
    0xfd, 0x40, 0xd7, 0x1f, 0x95, 0xd6, 0x5a, 0xa9, 0xe0, 0x89, 0x6c, 0x6d, 0x8b, 0x75, 0xf9, 0xbd,
    0xa7, 0x2b, 0x91, 0x6a, 0x13, 0xfa, 0x75, 0x52, 0x52, 0xe3, 0x5f, 0x41, 0xd2, 0x5b, 0xcf, 0x52,
    0xc0, 0x92, 0x72, 0xd9, 0xb9, 0xae, 0x3a, 0x3a, 0xce, 0x35, 0xd9, 0xea, 0x6d, 0x86, 0x3f, 0xd8,
    0xdb, 0x74, 0xbf, 0x05, 0x0e, 0x8d, 0x75, 0x0e, 0x7e, 0xdb, 0x83, 0x59, 0xbb, 0x8f, 0x72, 0x67,
    0x30, 0x39, 0x0d, 0x95, 0xce, 0x9d, 0x1d, 0xd7, 0x81, 0x99, 0xa1, 0x70, 0x5c, 0x70, 0x2c, 0xf7,
    0x0e, 0x38, 0x6d, 0x04, 0x8b, 0xac, 0xd3, 0x73, 0x01, 0x46, 0xa7, 0x21, 0xed, 0xe8, 0xbb, 0x73,
    0xb0, 0xd5, 0xfa, 0x24, 0xbe, 0x70, 0x06, 0xee, 0x2d, 0x98, 0xd7, 0x24, 0x06, 0x9b, 0x33, 0x74,
    0x6d, 0x18, 0x9e, 0x86, 0xc8, 0x1d, 0xb9, 0xb7, 0x61, 0xd7, 0x88, 0xd3, 0x0d, 0x96, 0x33, 0x76,
    0x17, 0x00, 0xa7, 0xe1, 0xa9, 0xfe, 0xc8, 0xe3, 0x4c, 0xd4, 0x9d, 0x54, 0x89, 0x71, 0x6c, 0x75,
    0xa7, 0xe3, 0x3c, 0x4d, 0x1f, 0xe7, 0xd9, 0x79, 0xb2, 0x72, 0x40, 0x9d, 0xfe, 0x34, 0x49, 0xb9,
    0x33, 0x55, 0xc7, 0xe1, 0xfa, 0x84, 0x97, 0x65, 0x92, 0xad, 0x9c, 0x99, 0xfa, 0x43, 0xd3, 0x9b,
    0x3a, 0x73, 0x77, 0x17, 0xa6, 0x7a, 0x53, 0xc9, 0xa2, 0x0b, 0x67, 0x71, 0xf0, 0x21, 0x4c, 0x8c,
    0xca, 0x50, 0xda, 0x32, 0x93, 0x5c, 0x94, 0xce, 0x0e, 0xae, 0x9f, 0xd3, 0x10, 0xe6, 0x58, 0xb8,
    0x3e, 0xe2, 0x29, 0x2f, 0xb9, 0xd3, 0x3b, 0x38, 0x04, 0x67, 0xb3, 0x76, 0xa1, 0xd0, 0x80, 0x2f,
    0xb3, 0xa4, 0x24, 0xe3, 0x3b, 0x3b, 0x08, 0xa8, 0x3f, 0x2b, 0xc0, 0x72, 0xa7, 0x30, 0xd6, 0xff,
    0x72, 0x7a, 0x07, 0x1f, 0xc3, 0xa2, 0xeb, 0x27, 0x4a, 0x71, 0x47, 0x67, 0x64, 0x0e, 0x67, 0x47,
    0xa9, 0x46, 0x93, 0xca, 0xf9, 0x1c, 0xeb, 0x13, 0xef, 0x2f, 0xdf, 0xee, 0x59, 0x5f, 0x7d, 0xbb,
    0x67, 0xfd, 0xe3, 0xdb, 0x3d, 0xeb, 0x0f, 0xdf, 0xed, 0xed, 0x7c, 0xf5, 0xdd, 0xde, 0xce, 0xdf,
    0xbe, 0xdb, 0xdb, 0x39, 0x1b, 0x91, 0xf1, 0x3f, 0xfa, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb9,
    0x00, 0xf7, 0xc0, 0x06, 0x1b, 0x00, 0x00,
}
func (m *Area) Marshal() (dAtA []byte, err error) {
@@ -3418,6 +3558,107 @@
        i++
        i = encodeVarintProtomsg(dAtA, i, uint64(len(m.RunServerId)))
        i += copy(dAtA[i:], m.RunServerId)
    }
    if m.ResolutionWidth != 0 {
        dAtA[i] = 0xa8
        i++
        dAtA[i] = 0x1
        i++
        i = encodeVarintProtomsg(dAtA, i, uint64(m.ResolutionWidth))
    }
    if m.ResolutionHeight != 0 {
        dAtA[i] = 0xb0
        i++
        dAtA[i] = 0x1
        i++
        i = encodeVarintProtomsg(dAtA, i, uint64(m.ResolutionHeight))
    }
    if len(m.Sensors) > 0 {
        for _, msg := range m.Sensors {
            dAtA[i] = 0xba
            i++
            dAtA[i] = 0x1
            i++
            i = encodeVarintProtomsg(dAtA, i, uint64(msg.Size()))
            n, err := msg.MarshalTo(dAtA[i:])
            if err != nil {
                return 0, err
            }
            i += n
        }
    }
    return i, nil
}
func (m *Sensor) Marshal() (dAtA []byte, err error) {
    size := m.Size()
    dAtA = make([]byte, size)
    n, err := m.MarshalTo(dAtA)
    if err != nil {
        return nil, err
    }
    return dAtA[:n], nil
}
func (m *Sensor) MarshalTo(dAtA []byte) (int, error) {
    var i int
    _ = i
    var l int
    _ = l
    if len(m.Id) > 0 {
        dAtA[i] = 0xa
        i++
        i = encodeVarintProtomsg(dAtA, i, uint64(len(m.Id)))
        i += copy(dAtA[i:], m.Id)
    }
    if m.Type != 0 {
        dAtA[i] = 0x10
        i++
        i = encodeVarintProtomsg(dAtA, i, uint64(m.Type))
    }
    if len(m.Ip) > 0 {
        dAtA[i] = 0x1a
        i++
        i = encodeVarintProtomsg(dAtA, i, uint64(len(m.Ip)))
        i += copy(dAtA[i:], m.Ip)
    }
    if m.Port != 0 {
        dAtA[i] = 0x20
        i++
        i = encodeVarintProtomsg(dAtA, i, uint64(m.Port))
    }
    if len(m.Username) > 0 {
        dAtA[i] = 0x2a
        i++
        i = encodeVarintProtomsg(dAtA, i, uint64(len(m.Username)))
        i += copy(dAtA[i:], m.Username)
    }
    if len(m.Password) > 0 {
        dAtA[i] = 0x32
        i++
        i = encodeVarintProtomsg(dAtA, i, uint64(len(m.Password)))
        i += copy(dAtA[i:], m.Password)
    }
    if m.Threshold != 0 {
        dAtA[i] = 0x38
        i++
        i = encodeVarintProtomsg(dAtA, i, uint64(m.Threshold))
    }
    if m.Enable {
        dAtA[i] = 0x40
        i++
        if m.Enable {
            dAtA[i] = 1
        } else {
            dAtA[i] = 0
        }
        i++
    }
    if len(m.DevId) > 0 {
        dAtA[i] = 0x4a
        i++
        i = encodeVarintProtomsg(dAtA, i, uint64(len(m.DevId)))
        i += copy(dAtA[i:], m.DevId)
    }
    return i, nil
}
@@ -5379,6 +5620,59 @@
    if l > 0 {
        n += 2 + l + sovProtomsg(uint64(l))
    }
    if m.ResolutionWidth != 0 {
        n += 2 + sovProtomsg(uint64(m.ResolutionWidth))
    }
    if m.ResolutionHeight != 0 {
        n += 2 + sovProtomsg(uint64(m.ResolutionHeight))
    }
    if len(m.Sensors) > 0 {
        for _, e := range m.Sensors {
            l = e.Size()
            n += 2 + l + sovProtomsg(uint64(l))
        }
    }
    return n
}
func (m *Sensor) Size() (n int) {
    if m == nil {
        return 0
    }
    var l int
    _ = l
    l = len(m.Id)
    if l > 0 {
        n += 1 + l + sovProtomsg(uint64(l))
    }
    if m.Type != 0 {
        n += 1 + sovProtomsg(uint64(m.Type))
    }
    l = len(m.Ip)
    if l > 0 {
        n += 1 + l + sovProtomsg(uint64(l))
    }
    if m.Port != 0 {
        n += 1 + sovProtomsg(uint64(m.Port))
    }
    l = len(m.Username)
    if l > 0 {
        n += 1 + l + sovProtomsg(uint64(l))
    }
    l = len(m.Password)
    if l > 0 {
        n += 1 + l + sovProtomsg(uint64(l))
    }
    if m.Threshold != 0 {
        n += 1 + sovProtomsg(uint64(m.Threshold))
    }
    if m.Enable {
        n += 2
    }
    l = len(m.DevId)
    if l > 0 {
        n += 1 + l + sovProtomsg(uint64(l))
    }
    return n
}
@@ -7055,6 +7349,368 @@
            }
            m.RunServerId = string(dAtA[iNdEx:postIndex])
            iNdEx = postIndex
        case 21:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field ResolutionWidth", wireType)
            }
            m.ResolutionWidth = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowProtomsg
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.ResolutionWidth |= int32(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        case 22:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field ResolutionHeight", wireType)
            }
            m.ResolutionHeight = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowProtomsg
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.ResolutionHeight |= int32(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        case 23:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field Sensors", wireType)
            }
            var msglen int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowProtomsg
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                msglen |= int(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            if msglen < 0 {
                return ErrInvalidLengthProtomsg
            }
            postIndex := iNdEx + msglen
            if postIndex < 0 {
                return ErrInvalidLengthProtomsg
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            m.Sensors = append(m.Sensors, &Sensor{})
            if err := m.Sensors[len(m.Sensors)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
                return err
            }
            iNdEx = postIndex
        default:
            iNdEx = preIndex
            skippy, err := skipProtomsg(dAtA[iNdEx:])
            if err != nil {
                return err
            }
            if skippy < 0 {
                return ErrInvalidLengthProtomsg
            }
            if (iNdEx + skippy) < 0 {
                return ErrInvalidLengthProtomsg
            }
            if (iNdEx + skippy) > l {
                return io.ErrUnexpectedEOF
            }
            iNdEx += skippy
        }
    }
    if iNdEx > l {
        return io.ErrUnexpectedEOF
    }
    return nil
}
func (m *Sensor) Unmarshal(dAtA []byte) error {
    l := len(dAtA)
    iNdEx := 0
    for iNdEx < l {
        preIndex := iNdEx
        var wire uint64
        for shift := uint(0); ; shift += 7 {
            if shift >= 64 {
                return ErrIntOverflowProtomsg
            }
            if iNdEx >= l {
                return io.ErrUnexpectedEOF
            }
            b := dAtA[iNdEx]
            iNdEx++
            wire |= uint64(b&0x7F) << shift
            if b < 0x80 {
                break
            }
        }
        fieldNum := int32(wire >> 3)
        wireType := int(wire & 0x7)
        if wireType == 4 {
            return fmt.Errorf("proto: Sensor: wiretype end group for non-group")
        }
        if fieldNum <= 0 {
            return fmt.Errorf("proto: Sensor: illegal tag %d (wire type %d)", fieldNum, wire)
        }
        switch fieldNum {
        case 1:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType)
            }
            var stringLen uint64
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowProtomsg
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                stringLen |= uint64(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            intStringLen := int(stringLen)
            if intStringLen < 0 {
                return ErrInvalidLengthProtomsg
            }
            postIndex := iNdEx + intStringLen
            if postIndex < 0 {
                return ErrInvalidLengthProtomsg
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            m.Id = string(dAtA[iNdEx:postIndex])
            iNdEx = postIndex
        case 2:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType)
            }
            m.Type = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowProtomsg
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.Type |= int32(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        case 3:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field Ip", wireType)
            }
            var stringLen uint64
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowProtomsg
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                stringLen |= uint64(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            intStringLen := int(stringLen)
            if intStringLen < 0 {
                return ErrInvalidLengthProtomsg
            }
            postIndex := iNdEx + intStringLen
            if postIndex < 0 {
                return ErrInvalidLengthProtomsg
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            m.Ip = string(dAtA[iNdEx:postIndex])
            iNdEx = postIndex
        case 4:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field Port", wireType)
            }
            m.Port = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowProtomsg
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.Port |= int32(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        case 5:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field Username", wireType)
            }
            var stringLen uint64
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowProtomsg
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                stringLen |= uint64(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            intStringLen := int(stringLen)
            if intStringLen < 0 {
                return ErrInvalidLengthProtomsg
            }
            postIndex := iNdEx + intStringLen
            if postIndex < 0 {
                return ErrInvalidLengthProtomsg
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            m.Username = string(dAtA[iNdEx:postIndex])
            iNdEx = postIndex
        case 6:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field Password", wireType)
            }
            var stringLen uint64
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowProtomsg
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                stringLen |= uint64(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            intStringLen := int(stringLen)
            if intStringLen < 0 {
                return ErrInvalidLengthProtomsg
            }
            postIndex := iNdEx + intStringLen
            if postIndex < 0 {
                return ErrInvalidLengthProtomsg
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            m.Password = string(dAtA[iNdEx:postIndex])
            iNdEx = postIndex
        case 7:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field Threshold", wireType)
            }
            m.Threshold = 0
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowProtomsg
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                m.Threshold |= int32(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
        case 8:
            if wireType != 0 {
                return fmt.Errorf("proto: wrong wireType = %d for field Enable", wireType)
            }
            var v int
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowProtomsg
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                v |= int(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            m.Enable = bool(v != 0)
        case 9:
            if wireType != 2 {
                return fmt.Errorf("proto: wrong wireType = %d for field DevId", wireType)
            }
            var stringLen uint64
            for shift := uint(0); ; shift += 7 {
                if shift >= 64 {
                    return ErrIntOverflowProtomsg
                }
                if iNdEx >= l {
                    return io.ErrUnexpectedEOF
                }
                b := dAtA[iNdEx]
                iNdEx++
                stringLen |= uint64(b&0x7F) << shift
                if b < 0x80 {
                    break
                }
            }
            intStringLen := int(stringLen)
            if intStringLen < 0 {
                return ErrInvalidLengthProtomsg
            }
            postIndex := iNdEx + intStringLen
            if postIndex < 0 {
                return ErrInvalidLengthProtomsg
            }
            if postIndex > l {
                return io.ErrUnexpectedEOF
            }
            m.DevId = string(dAtA[iNdEx:postIndex])
            iNdEx = postIndex
        default:
            iNdEx = preIndex
            skippy, err := skipProtomsg(dAtA[iNdEx:])
protomsg.proto
@@ -36,6 +36,22 @@
    int32 run_type = 19;//做任务的类型(0:轮询,1:实时)
    string run_server_id = 20;//当前正在哪台服务器上做任务
    int32 resolution_width = 21; //分辨率宽
    int32 resolution_height = 22; //分辨率高
    repeated Sensor sensors = 23; //传感器
}
message Sensor {
    string id = 1;
    int32 type = 2;
    string ip = 3;
    int32 port = 4;
    string username = 5;
    string password = 6;
    int32 threshold = 7;
    bool enable = 8;
    string devId = 9;
}
//摄像机联动