github.com/cockroachdb/cockroachdb-parser@v0.23.3-0.20240213214944-911057d40c9a/pkg/util/log/logpb/log.pb.go (about)

     1  // Code generated by protoc-gen-gogo. DO NOT EDIT.
     2  // source: util/log/logpb/log.proto
     3  
     4  package logpb
     5  
     6  import (
     7  	fmt "fmt"
     8  	_ "github.com/gogo/protobuf/gogoproto"
     9  	proto "github.com/gogo/protobuf/proto"
    10  	io "io"
    11  	math "math"
    12  	math_bits "math/bits"
    13  )
    14  
    15  // Reference imports to suppress errors if they are not otherwise used.
    16  var _ = proto.Marshal
    17  var _ = fmt.Errorf
    18  var _ = math.Inf
    19  
    20  // This is a compile-time assertion to ensure that this generated file
    21  // is compatible with the proto package it is being compiled against.
    22  // A compilation error at this line likely means your copy of the
    23  // proto package needs to be updated.
    24  const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package
    25  
    26  // Severity is the severity level of individual log events.
    27  //
    28  // Note: do not forget to run gen.sh (go generate) when
    29  // changing this list or the explanatory comments.
    30  type Severity int32
    31  
    32  const (
    33  	// UNKNOWN is populated into decoded log entries when the
    34  	// severity could not be determined.
    35  	Severity_UNKNOWN Severity = 0
    36  	// INFO is used for informational messages that do not
    37  	// require action.
    38  	Severity_INFO Severity = 1
    39  	// WARNING is used for situations which may require special handling,
    40  	// where normal operation is expected to resume automatically.
    41  	Severity_WARNING Severity = 2
    42  	// ERROR is used for situations that require special handling,
    43  	// where normal operation could not proceed as expected.
    44  	// Other operations can continue mostly unaffected.
    45  	Severity_ERROR Severity = 3
    46  	// FATAL is used for situations that require an immedate, hard
    47  	// server shutdown. A report is also sent to telemetry if telemetry
    48  	// is enabled.
    49  	Severity_FATAL Severity = 4
    50  	// NONE can be used in filters to specify that no messages
    51  	// should be emitted.
    52  	Severity_NONE Severity = 5
    53  	// DEFAULT is the end sentinel. It is used during command-line
    54  	// handling to indicate that another value should be replaced instead
    55  	// (depending on which command is being run); see cli/flags.go for
    56  	// details.
    57  	Severity_DEFAULT Severity = 6
    58  )
    59  
    60  var Severity_name = map[int32]string{
    61  	0: "UNKNOWN",
    62  	1: "INFO",
    63  	2: "WARNING",
    64  	3: "ERROR",
    65  	4: "FATAL",
    66  	5: "NONE",
    67  	6: "DEFAULT",
    68  }
    69  
    70  var Severity_value = map[string]int32{
    71  	"UNKNOWN": 0,
    72  	"INFO":    1,
    73  	"WARNING": 2,
    74  	"ERROR":   3,
    75  	"FATAL":   4,
    76  	"NONE":    5,
    77  	"DEFAULT": 6,
    78  }
    79  
    80  func (x Severity) String() string {
    81  	return proto.EnumName(Severity_name, int32(x))
    82  }
    83  
    84  func (Severity) EnumDescriptor() ([]byte, []int) {
    85  	return fileDescriptor_84e824ab4ae60f77, []int{0}
    86  }
    87  
    88  // Channel is the logical logging channel on which a message is sent.
    89  // Different channels can be redirected to different sinks. All
    90  // messages from the same channel are sent to the same sink(s).
    91  //
    92  // Note: do not forget to run gen.sh (go generate) when
    93  // changing this list or the explanatory comments.
    94  type Channel int32
    95  
    96  const (
    97  	// DEV is used during development to collect log
    98  	// details useful for troubleshooting that fall outside the
    99  	// scope of other channels. It is also the default logging
   100  	// channel for events not associated with a channel.
   101  	//
   102  	// This channel is special in that there are no constraints as to
   103  	// what may or may not be logged on it. Conversely, users in
   104  	// production deployments are invited to not collect `DEV` logs in
   105  	// centralized logging facilities, because they likely contain
   106  	// sensitive operational data.
   107  	// See [Configure logs](configure-logs.html#dev-channel).
   108  	Channel_DEV Channel = 0
   109  	// OPS is used to report "point" operational events,
   110  	// initiated by user operators or automation:
   111  	//
   112  	//   - Operator or system actions on server processes: process starts,
   113  	//     stops, shutdowns, crashes (if they can be logged),
   114  	//     including each time: command-line parameters, current version being run
   115  	//   - Actions that impact the topology of a cluster: node additions,
   116  	//     removals, decommissions, etc.
   117  	//   - Job-related initiation or termination
   118  	//   - [Cluster setting](cluster-settings.html) changes
   119  	//   - [Zone configuration](configure-replication-zones.html) changes
   120  	Channel_OPS Channel = 1
   121  	// HEALTH is used to report "background" operational
   122  	// events, initiated by CockroachDB or reporting on automatic processes:
   123  	//
   124  	//   - Current resource usage, including critical resource usage
   125  	//   - Node-node connection events, including connection errors and
   126  	//     gossip details
   127  	//   - Range and table leasing events
   128  	//   - Up- and down-replication, range unavailability
   129  	Channel_HEALTH Channel = 2
   130  	// STORAGE is used to report low-level storage
   131  	// layer events (RocksDB/Pebble).
   132  	Channel_STORAGE Channel = 3
   133  	// SESSIONS is used to report client network activity when enabled via
   134  	// the `server.auth_log.sql_connections.enabled` and/or
   135  	// `server.auth_log.sql_sessions.enabled` [cluster setting](cluster-settings.html):
   136  	//
   137  	//   - Connections opened/closed
   138  	//   - Authentication events: logins, failed attempts
   139  	//   - Session and query cancellation
   140  	//
   141  	// This is typically configured in "audit" mode, with event
   142  	// numbering and synchronous writes.
   143  	Channel_SESSIONS Channel = 4
   144  	// SQL_SCHEMA is used to report changes to the
   145  	// SQL logical schema, excluding privilege and ownership changes
   146  	// (which are reported separately on the `PRIVILEGES` channel) and
   147  	// zone configuration changes (which go to the `OPS` channel).
   148  	//
   149  	// This includes:
   150  	//
   151  	//   - Database/schema/table/sequence/view/type creation
   152  	//   - Adding/removing/changing table columns
   153  	//   - Changing sequence parameters
   154  	//
   155  	// `SQL_SCHEMA` events generally comprise changes to the schema that affect the
   156  	// functional behavior of client apps using stored objects.
   157  	Channel_SQL_SCHEMA Channel = 5
   158  	// USER_ADMIN is used to report changes
   159  	// in users and roles, including:
   160  	//
   161  	//   - Users added/dropped
   162  	//   - Changes to authentication credentials (e.g., passwords, validity, etc.)
   163  	//   - Role grants/revocations
   164  	//   - Role option grants/revocations
   165  	//
   166  	// This is typically configured in "audit" mode, with event
   167  	// numbering and synchronous writes.
   168  	Channel_USER_ADMIN Channel = 6
   169  	// PRIVILEGES is used to report data
   170  	// authorization changes, including:
   171  	//
   172  	//   - Privilege grants/revocations on database, objects, etc.
   173  	//   - Object ownership changes
   174  	//
   175  	// This is typically configured in "audit" mode, with event
   176  	// numbering and synchronous writes.
   177  	Channel_PRIVILEGES Channel = 7
   178  	// SENSITIVE_ACCESS is used to report SQL
   179  	// data access to sensitive data:
   180  	//
   181  	//   - Data access audit events (when table audit is enabled via
   182  	//     [ALTER TABLE ... EXPERIMENTAL_AUDIT](alter-table.html#experimental_audit))
   183  	//   - Data access audit events (when role-based audit is enabled via
   184  	//     [`sql.log.user_audit` cluster setting](role-based-audit-logging.html#syntax-of-audit-settings))
   185  	//   - SQL statements executed by users with the admin role
   186  	//   - Operations that write to system tables
   187  	//
   188  	// This is typically configured in "audit" mode, with event
   189  	// numbering and synchronous writes.
   190  	Channel_SENSITIVE_ACCESS Channel = 8
   191  	// SQL_EXEC is used to report SQL execution on
   192  	// behalf of client connections:
   193  	//
   194  	//   - Logical SQL statement executions (when enabled via the
   195  	//     `sql.log.all_statements.enabled` [cluster setting](cluster-settings.html))
   196  	//   - uncaught Go panic errors during the execution of a SQL statement.
   197  	Channel_SQL_EXEC Channel = 9
   198  	// SQL_PERF is used to report SQL executions
   199  	// that are marked as "out of the ordinary"
   200  	// to facilitate performance investigations.
   201  	// This includes the SQL "slow query log".
   202  	//
   203  	// Arguably, this channel overlaps with `SQL_EXEC`.
   204  	// However, we keep both channels separate for backward compatibility
   205  	// with versions prior to v21.1, where the corresponding events
   206  	// were redirected to separate files.
   207  	Channel_SQL_PERF Channel = 10
   208  	// SQL_INTERNAL_PERF is like the `SQL_PERF` channel, but is aimed at
   209  	// helping developers of CockroachDB itself. It exists as a separate
   210  	// channel so as to not pollute the `SQL_PERF` logging output with
   211  	// internal troubleshooting details.
   212  	Channel_SQL_INTERNAL_PERF Channel = 11
   213  	// TELEMETRY reports telemetry events. Telemetry events describe
   214  	// feature usage within CockroachDB and anonymizes any application-
   215  	// specific data.
   216  	Channel_TELEMETRY Channel = 12
   217  	// KV_DISTRIBUTION is used to report data distribution events, such as moving
   218  	// replicas between stores in the cluster, or adding (removing) replicas to
   219  	// ranges.
   220  	Channel_KV_DISTRIBUTION Channel = 13
   221  	// CHANNEL_MAX is the maximum allocated channel number so far.
   222  	// This should be increased every time a new channel is added.
   223  	Channel_CHANNEL_MAX Channel = 14
   224  )
   225  
   226  var Channel_name = map[int32]string{
   227  	0:  "DEV",
   228  	1:  "OPS",
   229  	2:  "HEALTH",
   230  	3:  "STORAGE",
   231  	4:  "SESSIONS",
   232  	5:  "SQL_SCHEMA",
   233  	6:  "USER_ADMIN",
   234  	7:  "PRIVILEGES",
   235  	8:  "SENSITIVE_ACCESS",
   236  	9:  "SQL_EXEC",
   237  	10: "SQL_PERF",
   238  	11: "SQL_INTERNAL_PERF",
   239  	12: "TELEMETRY",
   240  	13: "KV_DISTRIBUTION",
   241  	14: "CHANNEL_MAX",
   242  }
   243  
   244  var Channel_value = map[string]int32{
   245  	"DEV":               0,
   246  	"OPS":               1,
   247  	"HEALTH":            2,
   248  	"STORAGE":           3,
   249  	"SESSIONS":          4,
   250  	"SQL_SCHEMA":        5,
   251  	"USER_ADMIN":        6,
   252  	"PRIVILEGES":        7,
   253  	"SENSITIVE_ACCESS":  8,
   254  	"SQL_EXEC":          9,
   255  	"SQL_PERF":          10,
   256  	"SQL_INTERNAL_PERF": 11,
   257  	"TELEMETRY":         12,
   258  	"KV_DISTRIBUTION":   13,
   259  	"CHANNEL_MAX":       14,
   260  }
   261  
   262  func (x Channel) String() string {
   263  	return proto.EnumName(Channel_name, int32(x))
   264  }
   265  
   266  func (Channel) EnumDescriptor() ([]byte, []int) {
   267  	return fileDescriptor_84e824ab4ae60f77, []int{1}
   268  }
   269  
   270  // Entry represents a cockroach log entry in the following two cases:
   271  //   - when reading a log file using the crdb-v1 format, entries
   272  //     are parsed into this struct.
   273  //   - when injecting an interceptor into the logging package, the
   274  //     interceptor is fed entries using this structure.
   275  type Entry struct {
   276  	// Severity is the importance of the log entry. See the
   277  	// documentation for the Severity enum for more details.
   278  	Severity Severity `protobuf:"varint,1,opt,name=severity,proto3,enum=cockroach.util.log.Severity" json:"severity,omitempty"`
   279  	// Nanoseconds since the epoch.
   280  	Time int64 `protobuf:"varint,2,opt,name=time,proto3" json:"time,omitempty"`
   281  	// Goroutine ID. This helps match logging events with goroutine
   282  	// stack dumps.
   283  	Goroutine int64 `protobuf:"varint,6,opt,name=goroutine,proto3" json:"goroutine,omitempty"`
   284  	// File name where the logging event was produced. Logging client
   285  	// code can adjust this with the "depth" parameter.
   286  	File string `protobuf:"bytes,3,opt,name=file,proto3" json:"file,omitempty"`
   287  	// Line number in the file where the logging event was produced.
   288  	Line int64 `protobuf:"varint,4,opt,name=line,proto3" json:"line,omitempty"`
   289  	// Message contains the main text of the logging message.
   290  	Message string `protobuf:"bytes,5,opt,name=message,proto3" json:"message,omitempty"`
   291  	// Tags contains the context tags available in the context where the
   292  	// entry was created.
   293  	Tags string `protobuf:"bytes,7,opt,name=tags,proto3" json:"tags,omitempty"`
   294  	// Counter is an entry counter, meant for use in audit logs as an
   295  	// instrument against log repudiation.
   296  	// See: https://en.wikipedia.org/wiki/Non-repudiation
   297  	//
   298  	// It is incremented for every use of the logger where the entry was
   299  	// produced.
   300  	Counter uint64 `protobuf:"varint,8,opt,name=counter,proto3" json:"counter,omitempty"`
   301  	// Redactable is true if the message and tags fields include markers
   302  	// to delineate sensitive information. In that case, confidentiality
   303  	// can be obtained by only stripping away the data within this
   304  	// marker. If redactable is false or unknown, the message should be
   305  	// considered to only contain sensitive information, and should be
   306  	// stripped away completely for confidentiality.
   307  	Redactable bool `protobuf:"varint,9,opt,name=redactable,proto3" json:"redactable,omitempty"`
   308  	// Channel is the channel on which the message was sent.
   309  	Channel Channel `protobuf:"varint,10,opt,name=channel,proto3,enum=cockroach.util.log.Channel" json:"channel,omitempty"`
   310  	// StructuredEnd, if non-zero, indicates that the entry
   311  	// is structured; it is also the index
   312  	// inside the Message field where the JSON payload ends (exclusive).
   313  	StructuredEnd uint32 `protobuf:"varint,11,opt,name=structured_end,json=structuredEnd,proto3" json:"structured_end,omitempty"`
   314  	// StructuredStart, when StructuredEnd is non-zero, is the index
   315  	// inside the Message field where the JSON payload starts (inclusive).
   316  	StructuredStart uint32 `protobuf:"varint,12,opt,name=structured_start,json=structuredStart,proto3" json:"structured_start,omitempty"`
   317  	// StackTraceStart is the index inside Message where a detailed
   318  	// stack trace starts. If zero, no stack trace is present. Stack
   319  	// traces are always separated from the message using a newline
   320  	// character. If a stack trace is included, StackTracePosition is
   321  	// the index of the character immediately after the newline
   322  	// character.
   323  	//
   324  	// We use an index-in-string field in the protobuf, instead of two
   325  	// separate string fields, because previous-version consumers of
   326  	// Entry are still expecting the message and the stack trace in the
   327  	// same field.
   328  	StackTraceStart uint32 `protobuf:"varint,13,opt,name=stack_trace_start,json=stackTraceStart,proto3" json:"stack_trace_start,omitempty"`
   329  	// TenantID is the tenant ID that the log entry originated from. NB: if a
   330  	// log entry was not found to contain any tenant ID, we default to the system
   331  	// tenant ID.
   332  	TenantID string `protobuf:"bytes,14,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"`
   333  	// TenantName is the tenant name that the log entry originated from. NB: if a
   334  	// log entry was not found to contain any tenant name, we default to the empty
   335  	// string.
   336  	TenantName string `protobuf:"bytes,15,opt,name=tenant_name,json=tenantName,proto3" json:"tenant_name,omitempty"`
   337  }
   338  
   339  func (m *Entry) Reset()         { *m = Entry{} }
   340  func (m *Entry) String() string { return proto.CompactTextString(m) }
   341  func (*Entry) ProtoMessage()    {}
   342  func (*Entry) Descriptor() ([]byte, []int) {
   343  	return fileDescriptor_84e824ab4ae60f77, []int{0}
   344  }
   345  func (m *Entry) XXX_Unmarshal(b []byte) error {
   346  	return m.Unmarshal(b)
   347  }
   348  func (m *Entry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   349  	b = b[:cap(b)]
   350  	n, err := m.MarshalToSizedBuffer(b)
   351  	if err != nil {
   352  		return nil, err
   353  	}
   354  	return b[:n], nil
   355  }
   356  func (m *Entry) XXX_Merge(src proto.Message) {
   357  	xxx_messageInfo_Entry.Merge(m, src)
   358  }
   359  func (m *Entry) XXX_Size() int {
   360  	return m.Size()
   361  }
   362  func (m *Entry) XXX_DiscardUnknown() {
   363  	xxx_messageInfo_Entry.DiscardUnknown(m)
   364  }
   365  
   366  var xxx_messageInfo_Entry proto.InternalMessageInfo
   367  
   368  // A FileDetails holds all of the particulars that can be parsed by the name of
   369  // a log file.
   370  type FileDetails struct {
   371  	// program contains the combination of program name and log file
   372  	// group name, separated by a hyphen. The program name part is
   373  	// guaranteed to not contain hyphens itself; if there had been any
   374  	// in the executable file name, they would be escaped to
   375  	// underscores. The first hyphen separates the program name from the
   376  	// file group name. The file group itself can contain hyphens.
   377  	//
   378  	// For example, if the field is set to "mybinary-my-log-group",
   379  	// the program name is "mybinary" and the file group is "my-log-group".
   380  	//
   381  	// The field is also guaranteed not to contain periods. If there had
   382  	// been periods in the executable file name, they would be replaced
   383  	// by underscores.
   384  	Program string `protobuf:"bytes,1,opt,name=program,proto3" json:"program,omitempty"`
   385  	// host is the hostname part of the file name.
   386  	// The field is guaranteed not to contain periods. If there had
   387  	// been periods in the hostname, they would be replaced by underscores.
   388  	Host string `protobuf:"bytes,2,opt,name=host,proto3" json:"host,omitempty"`
   389  	// user_name is the unix username part of the file name.
   390  	// The field is guaranteed not to contain periods. If there had
   391  	// been periods in the username, they would be replaced by underscores.
   392  	UserName string `protobuf:"bytes,3,opt,name=user_name,json=userName,proto3" json:"user_name,omitempty"`
   393  	Time     int64  `protobuf:"varint,5,opt,name=time,proto3" json:"time,omitempty"`
   394  	PID      int64  `protobuf:"varint,6,opt,name=pid,proto3" json:"pid,omitempty"`
   395  }
   396  
   397  func (m *FileDetails) Reset()         { *m = FileDetails{} }
   398  func (m *FileDetails) String() string { return proto.CompactTextString(m) }
   399  func (*FileDetails) ProtoMessage()    {}
   400  func (*FileDetails) Descriptor() ([]byte, []int) {
   401  	return fileDescriptor_84e824ab4ae60f77, []int{1}
   402  }
   403  func (m *FileDetails) XXX_Unmarshal(b []byte) error {
   404  	return m.Unmarshal(b)
   405  }
   406  func (m *FileDetails) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   407  	b = b[:cap(b)]
   408  	n, err := m.MarshalToSizedBuffer(b)
   409  	if err != nil {
   410  		return nil, err
   411  	}
   412  	return b[:n], nil
   413  }
   414  func (m *FileDetails) XXX_Merge(src proto.Message) {
   415  	xxx_messageInfo_FileDetails.Merge(m, src)
   416  }
   417  func (m *FileDetails) XXX_Size() int {
   418  	return m.Size()
   419  }
   420  func (m *FileDetails) XXX_DiscardUnknown() {
   421  	xxx_messageInfo_FileDetails.DiscardUnknown(m)
   422  }
   423  
   424  var xxx_messageInfo_FileDetails proto.InternalMessageInfo
   425  
   426  type FileInfo struct {
   427  	Name         string      `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
   428  	SizeBytes    int64       `protobuf:"varint,2,opt,name=size_bytes,json=sizeBytes,proto3" json:"size_bytes,omitempty"`
   429  	ModTimeNanos int64       `protobuf:"varint,3,opt,name=mod_time_nanos,json=modTimeNanos,proto3" json:"mod_time_nanos,omitempty"`
   430  	Details      FileDetails `protobuf:"bytes,4,opt,name=details,proto3" json:"details"`
   431  	FileMode     uint32      `protobuf:"varint,5,opt,name=file_mode,json=fileMode,proto3" json:"file_mode,omitempty"`
   432  }
   433  
   434  func (m *FileInfo) Reset()         { *m = FileInfo{} }
   435  func (m *FileInfo) String() string { return proto.CompactTextString(m) }
   436  func (*FileInfo) ProtoMessage()    {}
   437  func (*FileInfo) Descriptor() ([]byte, []int) {
   438  	return fileDescriptor_84e824ab4ae60f77, []int{2}
   439  }
   440  func (m *FileInfo) XXX_Unmarshal(b []byte) error {
   441  	return m.Unmarshal(b)
   442  }
   443  func (m *FileInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
   444  	b = b[:cap(b)]
   445  	n, err := m.MarshalToSizedBuffer(b)
   446  	if err != nil {
   447  		return nil, err
   448  	}
   449  	return b[:n], nil
   450  }
   451  func (m *FileInfo) XXX_Merge(src proto.Message) {
   452  	xxx_messageInfo_FileInfo.Merge(m, src)
   453  }
   454  func (m *FileInfo) XXX_Size() int {
   455  	return m.Size()
   456  }
   457  func (m *FileInfo) XXX_DiscardUnknown() {
   458  	xxx_messageInfo_FileInfo.DiscardUnknown(m)
   459  }
   460  
   461  var xxx_messageInfo_FileInfo proto.InternalMessageInfo
   462  
   463  func init() {
   464  	proto.RegisterEnum("cockroach.parser.util.log.Severity", Severity_name, Severity_value)
   465  	proto.RegisterEnum("cockroach.parser.util.log.Channel", Channel_name, Channel_value)
   466  	proto.RegisterType((*Entry)(nil), "cockroach.parser.util.log.Entry")
   467  	proto.RegisterType((*FileDetails)(nil), "cockroach.parser.util.log.FileDetails")
   468  	proto.RegisterType((*FileInfo)(nil), "cockroach.parser.util.log.FileInfo")
   469  }
   470  
   471  func init() { proto.RegisterFile("util/log/logpb/log.proto", fileDescriptor_84e824ab4ae60f77) }
   472  
   473  var fileDescriptor_84e824ab4ae60f77 = []byte{
   474  	// 880 bytes of a gzipped FileDescriptorProto
   475  	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x94, 0x41, 0x6f, 0xdb, 0x36,
   476  	0x14, 0xc7, 0xad, 0x58, 0x8e, 0xa5, 0xe7, 0xd8, 0x61, 0xb9, 0x0e, 0xd0, 0xd6, 0xce, 0x31, 0x82,
   477  	0x0d, 0x70, 0x73, 0xb0, 0x81, 0x16, 0x03, 0x76, 0x1b, 0x64, 0x9b, 0x49, 0xb4, 0x3a, 0x72, 0x4a,
   478  	0x29, 0x69, 0xb7, 0x1d, 0x04, 0x59, 0x62, 0x15, 0x21, 0x96, 0x18, 0x48, 0xf4, 0x80, 0xec, 0x3b,
   479  	0x0c, 0xd8, 0x61, 0x5f, 0x68, 0xb7, 0x1c, 0x7b, 0xec, 0x29, 0xd8, 0x9c, 0x2f, 0xb0, 0x8f, 0x30,
   480  	0x90, 0xb2, 0x93, 0x0c, 0xeb, 0xc1, 0xc6, 0xff, 0xfd, 0xf9, 0xe3, 0x23, 0x1f, 0xf9, 0x44, 0xb0,
   481  	0x96, 0x22, 0x5d, 0x0c, 0x17, 0x3c, 0x91, 0xbf, 0xab, 0xb9, 0xfc, 0x1f, 0x5c, 0x15, 0x5c, 0x70,
   482  	0x8c, 0x23, 0x1e, 0x5d, 0x16, 0x3c, 0x8c, 0x2e, 0x06, 0x92, 0x19, 0x2c, 0x78, 0xf2, 0xe5, 0xd3,
   483  	0x84, 0x27, 0x5c, 0x0d, 0x0f, 0xa5, 0xaa, 0xc8, 0xfd, 0x3f, 0x74, 0x68, 0x90, 0x5c, 0x14, 0xd7,
   484  	0xf8, 0x3b, 0x30, 0x4a, 0xf6, 0x0b, 0x2b, 0x52, 0x71, 0x6d, 0x69, 0x3d, 0xad, 0xdf, 0x79, 0xf9,
   485  	0x7c, 0xf0, 0xff, 0x34, 0x03, 0x6f, 0xcd, 0xd0, 0x7b, 0x1a, 0x63, 0xd0, 0x45, 0x9a, 0x31, 0x6b,
   486  	0xab, 0xa7, 0xf5, 0xeb, 0x54, 0x69, 0xfc, 0x1c, 0xcc, 0x84, 0x17, 0x7c, 0x29, 0xd2, 0x9c, 0x59,
   487  	0xdb, 0x6a, 0xe0, 0xc1, 0x90, 0x33, 0xde, 0xa7, 0x0b, 0x66, 0xd5, 0x7b, 0x5a, 0xdf, 0xa4, 0x4a,
   488  	0x4b, 0x6f, 0x21, 0x61, 0xbd, 0xca, 0x22, 0x35, 0xb6, 0xa0, 0x99, 0xb1, 0xb2, 0x0c, 0x13, 0x66,
   489  	0x35, 0x14, 0xba, 0x09, 0xd5, 0x9a, 0x61, 0x52, 0x5a, 0xcd, 0x2a, 0x83, 0xd4, 0x92, 0x8e, 0xf8,
   490  	0x32, 0x17, 0xac, 0xb0, 0x8c, 0x9e, 0xd6, 0xd7, 0xe9, 0x26, 0xc4, 0x5d, 0x80, 0x82, 0xc5, 0x61,
   491  	0x24, 0xc2, 0xf9, 0x82, 0x59, 0x66, 0x4f, 0xeb, 0x1b, 0xf4, 0x91, 0x83, 0xbf, 0x85, 0x66, 0x74,
   492  	0x11, 0xe6, 0x39, 0x5b, 0x58, 0xa0, 0x4a, 0x7f, 0xf6, 0xa9, 0xd2, 0xc7, 0x15, 0x42, 0x37, 0x2c,
   493  	0xfe, 0x06, 0x3a, 0xa5, 0x28, 0x96, 0x91, 0x58, 0x16, 0x2c, 0x0e, 0x58, 0x1e, 0x5b, 0xad, 0x9e,
   494  	0xd6, 0x6f, 0xd3, 0xf6, 0x83, 0x4b, 0xf2, 0x18, 0xbf, 0x00, 0xf4, 0x08, 0x2b, 0x45, 0x58, 0x08,
   495  	0x6b, 0x47, 0x81, 0xbb, 0x0f, 0xbe, 0x27, 0x6d, 0x7c, 0x00, 0x4f, 0x4a, 0x11, 0x46, 0x97, 0x81,
   496  	0x28, 0xc2, 0x88, 0xad, 0xd9, 0xf6, 0x86, 0x0d, 0xa3, 0x4b, 0x5f, 0xfa, 0x15, 0xfb, 0x02, 0x4c,
   497  	0xc1, 0xf2, 0x30, 0x17, 0x41, 0x1a, 0x5b, 0x1d, 0x79, 0x0e, 0xa3, 0x9d, 0xd5, 0xed, 0x9e, 0xe1,
   498  	0x2b, 0xd3, 0x99, 0x50, 0xa3, 0x1a, 0x76, 0x62, 0x3c, 0x84, 0xd6, 0x1a, 0xcd, 0xc3, 0x8c, 0x59,
   499  	0xbb, 0x0a, 0xee, 0xac, 0x6e, 0xf7, 0xa0, 0x82, 0xdd, 0x30, 0x63, 0x14, 0xc4, 0xbd, 0xde, 0xff,
   500  	0x4d, 0x83, 0xd6, 0x61, 0xba, 0x60, 0x13, 0x26, 0xc2, 0x74, 0xa1, 0x8e, 0xf6, 0xaa, 0xe0, 0x49,
   501  	0x11, 0x66, 0xaa, 0x37, 0x4c, 0xba, 0x09, 0xe5, 0x45, 0x5c, 0xf0, 0x52, 0xa8, 0xcb, 0x37, 0xa9,
   502  	0xd2, 0xf8, 0x19, 0x98, 0xcb, 0x92, 0x15, 0xd5, 0x62, 0xd5, 0x1d, 0x1b, 0xd2, 0x90, 0xa9, 0xef,
   503  	0xbb, 0xa5, 0xf1, 0xa8, 0x5b, 0xbe, 0x80, 0xfa, 0x55, 0x1a, 0x57, 0x7d, 0x32, 0x6a, 0xae, 0x6e,
   504  	0xf7, 0xea, 0xa7, 0xce, 0x84, 0x4a, 0xef, 0x07, 0xdd, 0xd0, 0x51, 0x63, 0xff, 0x4f, 0x0d, 0x0c,
   505  	0xb9, 0x1f, 0x27, 0x7f, 0xcf, 0x65, 0x06, 0x95, 0xb9, 0xda, 0x89, 0xd2, 0xf8, 0x2b, 0x80, 0x32,
   506  	0xfd, 0x95, 0x05, 0xf3, 0x6b, 0xc1, 0xca, 0x75, 0x27, 0x9a, 0xd2, 0x19, 0x49, 0x03, 0x7f, 0x0d,
   507  	0x9d, 0x8c, 0xc7, 0x81, 0x5c, 0x2c, 0xc8, 0xc3, 0x9c, 0x97, 0x6a, 0x5b, 0x75, 0xba, 0x93, 0xf1,
   508  	0xd8, 0x4f, 0x33, 0xe6, 0x4a, 0x0f, 0x7f, 0x0f, 0xcd, 0xb8, 0x2a, 0x58, 0x75, 0x61, 0xeb, 0xe5,
   509  	0xde, 0xa7, 0xda, 0xe0, 0xd1, 0xb9, 0x8c, 0xf4, 0x9b, 0xdb, 0xbd, 0x1a, 0xdd, 0xcc, 0x92, 0x85,
   510  	0xcb, 0x5e, 0x0e, 0x32, 0x1e, 0x57, 0x05, 0xb6, 0xa9, 0x21, 0x8d, 0x13, 0x1e, 0xb3, 0x83, 0x9f,
   511  	0xc1, 0xd8, 0x7c, 0x3c, 0xb8, 0x05, 0xcd, 0x33, 0xf7, 0xb5, 0x3b, 0x7b, 0xeb, 0xa2, 0x1a, 0x36,
   512  	0x40, 0x77, 0xdc, 0xc3, 0x19, 0xd2, 0xa4, 0xfd, 0xd6, 0xa6, 0xae, 0xe3, 0x1e, 0xa1, 0x2d, 0x6c,
   513  	0x42, 0x83, 0x50, 0x3a, 0xa3, 0xa8, 0x2e, 0xe5, 0xa1, 0xed, 0xdb, 0x53, 0xa4, 0x4b, 0xd8, 0x9d,
   514  	0xb9, 0x04, 0x35, 0x24, 0x3c, 0x21, 0x87, 0xf6, 0xd9, 0xd4, 0x47, 0xdb, 0x07, 0xff, 0x68, 0xd0,
   515  	0x5c, 0xf7, 0x27, 0x6e, 0x42, 0x7d, 0x42, 0xce, 0x51, 0x4d, 0x8a, 0xd9, 0xa9, 0x87, 0x34, 0x0c,
   516  	0xb0, 0x7d, 0x4c, 0xec, 0xa9, 0x7f, 0x8c, 0xb6, 0xe4, 0x34, 0xcf, 0x9f, 0x51, 0xfb, 0x88, 0xa0,
   517  	0x3a, 0xde, 0x01, 0xc3, 0x23, 0x9e, 0xe7, 0xcc, 0x5c, 0x0f, 0xe9, 0xb8, 0x03, 0xe0, 0xbd, 0x99,
   518  	0x06, 0xde, 0xf8, 0x98, 0x9c, 0xd8, 0xa8, 0x21, 0xe3, 0x33, 0x8f, 0xd0, 0xc0, 0x9e, 0x9c, 0x38,
   519  	0x2e, 0xda, 0x96, 0xf1, 0x29, 0x75, 0xce, 0x9d, 0x29, 0x39, 0x22, 0x1e, 0x6a, 0xe2, 0xa7, 0x80,
   520  	0x3c, 0xe2, 0x7a, 0x8e, 0xef, 0x9c, 0x93, 0xc0, 0x1e, 0x8f, 0x89, 0xe7, 0x21, 0x43, 0xe5, 0x7c,
   521  	0x33, 0x0d, 0xc8, 0x3b, 0x32, 0x46, 0xe6, 0x26, 0x3a, 0x25, 0xf4, 0x10, 0x01, 0xfe, 0x1c, 0x9e,
   522  	0xc8, 0xc8, 0x71, 0x7d, 0x42, 0x5d, 0x7b, 0x6d, 0xb7, 0x70, 0x1b, 0x4c, 0x9f, 0x4c, 0xc9, 0x09,
   523  	0xf1, 0xe9, 0x8f, 0x68, 0x07, 0x7f, 0x06, 0xbb, 0xaf, 0xcf, 0x83, 0x89, 0xe3, 0xf9, 0xd4, 0x19,
   524  	0x9d, 0xf9, 0xce, 0xcc, 0x45, 0x6d, 0xbc, 0x0b, 0xad, 0xf1, 0xb1, 0xed, 0xba, 0x64, 0x1a, 0x9c,
   525  	0xd8, 0xef, 0x50, 0x67, 0x74, 0x76, 0xf3, 0x77, 0xb7, 0x76, 0xb3, 0xea, 0x6a, 0x1f, 0x56, 0x5d,
   526  	0xed, 0xe3, 0xaa, 0xab, 0xfd, 0xb5, 0xea, 0x6a, 0xbf, 0xdf, 0x75, 0x6b, 0x1f, 0xee, 0xba, 0xb5,
   527  	0x8f, 0x77, 0xdd, 0xda, 0x4f, 0xaf, 0x92, 0x54, 0x5c, 0x2c, 0xe7, 0x83, 0x88, 0x67, 0xc3, 0xfb,
   528  	0x8b, 0x8c, 0xe7, 0x0f, 0x7a, 0x78, 0x75, 0x99, 0x0c, 0xff, 0xfb, 0x8a, 0xce, 0xb7, 0xd5, 0xc3,
   529  	0xf8, 0xea, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xad, 0x13, 0x1e, 0x54, 0x5e, 0x05, 0x00, 0x00,
   530  }
   531  
   532  func (m *Entry) Marshal() (dAtA []byte, err error) {
   533  	size := m.Size()
   534  	dAtA = make([]byte, size)
   535  	n, err := m.MarshalToSizedBuffer(dAtA[:size])
   536  	if err != nil {
   537  		return nil, err
   538  	}
   539  	return dAtA[:n], nil
   540  }
   541  
   542  func (m *Entry) MarshalTo(dAtA []byte) (int, error) {
   543  	size := m.Size()
   544  	return m.MarshalToSizedBuffer(dAtA[:size])
   545  }
   546  
   547  func (m *Entry) MarshalToSizedBuffer(dAtA []byte) (int, error) {
   548  	i := len(dAtA)
   549  	_ = i
   550  	var l int
   551  	_ = l
   552  	if len(m.TenantName) > 0 {
   553  		i -= len(m.TenantName)
   554  		copy(dAtA[i:], m.TenantName)
   555  		i = encodeVarintLog(dAtA, i, uint64(len(m.TenantName)))
   556  		i--
   557  		dAtA[i] = 0x7a
   558  	}
   559  	if len(m.TenantID) > 0 {
   560  		i -= len(m.TenantID)
   561  		copy(dAtA[i:], m.TenantID)
   562  		i = encodeVarintLog(dAtA, i, uint64(len(m.TenantID)))
   563  		i--
   564  		dAtA[i] = 0x72
   565  	}
   566  	if m.StackTraceStart != 0 {
   567  		i = encodeVarintLog(dAtA, i, uint64(m.StackTraceStart))
   568  		i--
   569  		dAtA[i] = 0x68
   570  	}
   571  	if m.StructuredStart != 0 {
   572  		i = encodeVarintLog(dAtA, i, uint64(m.StructuredStart))
   573  		i--
   574  		dAtA[i] = 0x60
   575  	}
   576  	if m.StructuredEnd != 0 {
   577  		i = encodeVarintLog(dAtA, i, uint64(m.StructuredEnd))
   578  		i--
   579  		dAtA[i] = 0x58
   580  	}
   581  	if m.Channel != 0 {
   582  		i = encodeVarintLog(dAtA, i, uint64(m.Channel))
   583  		i--
   584  		dAtA[i] = 0x50
   585  	}
   586  	if m.Redactable {
   587  		i--
   588  		if m.Redactable {
   589  			dAtA[i] = 1
   590  		} else {
   591  			dAtA[i] = 0
   592  		}
   593  		i--
   594  		dAtA[i] = 0x48
   595  	}
   596  	if m.Counter != 0 {
   597  		i = encodeVarintLog(dAtA, i, uint64(m.Counter))
   598  		i--
   599  		dAtA[i] = 0x40
   600  	}
   601  	if len(m.Tags) > 0 {
   602  		i -= len(m.Tags)
   603  		copy(dAtA[i:], m.Tags)
   604  		i = encodeVarintLog(dAtA, i, uint64(len(m.Tags)))
   605  		i--
   606  		dAtA[i] = 0x3a
   607  	}
   608  	if m.Goroutine != 0 {
   609  		i = encodeVarintLog(dAtA, i, uint64(m.Goroutine))
   610  		i--
   611  		dAtA[i] = 0x30
   612  	}
   613  	if len(m.Message) > 0 {
   614  		i -= len(m.Message)
   615  		copy(dAtA[i:], m.Message)
   616  		i = encodeVarintLog(dAtA, i, uint64(len(m.Message)))
   617  		i--
   618  		dAtA[i] = 0x2a
   619  	}
   620  	if m.Line != 0 {
   621  		i = encodeVarintLog(dAtA, i, uint64(m.Line))
   622  		i--
   623  		dAtA[i] = 0x20
   624  	}
   625  	if len(m.File) > 0 {
   626  		i -= len(m.File)
   627  		copy(dAtA[i:], m.File)
   628  		i = encodeVarintLog(dAtA, i, uint64(len(m.File)))
   629  		i--
   630  		dAtA[i] = 0x1a
   631  	}
   632  	if m.Time != 0 {
   633  		i = encodeVarintLog(dAtA, i, uint64(m.Time))
   634  		i--
   635  		dAtA[i] = 0x10
   636  	}
   637  	if m.Severity != 0 {
   638  		i = encodeVarintLog(dAtA, i, uint64(m.Severity))
   639  		i--
   640  		dAtA[i] = 0x8
   641  	}
   642  	return len(dAtA) - i, nil
   643  }
   644  
   645  func (m *FileDetails) Marshal() (dAtA []byte, err error) {
   646  	size := m.Size()
   647  	dAtA = make([]byte, size)
   648  	n, err := m.MarshalToSizedBuffer(dAtA[:size])
   649  	if err != nil {
   650  		return nil, err
   651  	}
   652  	return dAtA[:n], nil
   653  }
   654  
   655  func (m *FileDetails) MarshalTo(dAtA []byte) (int, error) {
   656  	size := m.Size()
   657  	return m.MarshalToSizedBuffer(dAtA[:size])
   658  }
   659  
   660  func (m *FileDetails) MarshalToSizedBuffer(dAtA []byte) (int, error) {
   661  	i := len(dAtA)
   662  	_ = i
   663  	var l int
   664  	_ = l
   665  	if m.PID != 0 {
   666  		i = encodeVarintLog(dAtA, i, uint64(m.PID))
   667  		i--
   668  		dAtA[i] = 0x30
   669  	}
   670  	if m.Time != 0 {
   671  		i = encodeVarintLog(dAtA, i, uint64(m.Time))
   672  		i--
   673  		dAtA[i] = 0x28
   674  	}
   675  	if len(m.UserName) > 0 {
   676  		i -= len(m.UserName)
   677  		copy(dAtA[i:], m.UserName)
   678  		i = encodeVarintLog(dAtA, i, uint64(len(m.UserName)))
   679  		i--
   680  		dAtA[i] = 0x1a
   681  	}
   682  	if len(m.Host) > 0 {
   683  		i -= len(m.Host)
   684  		copy(dAtA[i:], m.Host)
   685  		i = encodeVarintLog(dAtA, i, uint64(len(m.Host)))
   686  		i--
   687  		dAtA[i] = 0x12
   688  	}
   689  	if len(m.Program) > 0 {
   690  		i -= len(m.Program)
   691  		copy(dAtA[i:], m.Program)
   692  		i = encodeVarintLog(dAtA, i, uint64(len(m.Program)))
   693  		i--
   694  		dAtA[i] = 0xa
   695  	}
   696  	return len(dAtA) - i, nil
   697  }
   698  
   699  func (m *FileInfo) Marshal() (dAtA []byte, err error) {
   700  	size := m.Size()
   701  	dAtA = make([]byte, size)
   702  	n, err := m.MarshalToSizedBuffer(dAtA[:size])
   703  	if err != nil {
   704  		return nil, err
   705  	}
   706  	return dAtA[:n], nil
   707  }
   708  
   709  func (m *FileInfo) MarshalTo(dAtA []byte) (int, error) {
   710  	size := m.Size()
   711  	return m.MarshalToSizedBuffer(dAtA[:size])
   712  }
   713  
   714  func (m *FileInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) {
   715  	i := len(dAtA)
   716  	_ = i
   717  	var l int
   718  	_ = l
   719  	if m.FileMode != 0 {
   720  		i = encodeVarintLog(dAtA, i, uint64(m.FileMode))
   721  		i--
   722  		dAtA[i] = 0x28
   723  	}
   724  	{
   725  		size, err := m.Details.MarshalToSizedBuffer(dAtA[:i])
   726  		if err != nil {
   727  			return 0, err
   728  		}
   729  		i -= size
   730  		i = encodeVarintLog(dAtA, i, uint64(size))
   731  	}
   732  	i--
   733  	dAtA[i] = 0x22
   734  	if m.ModTimeNanos != 0 {
   735  		i = encodeVarintLog(dAtA, i, uint64(m.ModTimeNanos))
   736  		i--
   737  		dAtA[i] = 0x18
   738  	}
   739  	if m.SizeBytes != 0 {
   740  		i = encodeVarintLog(dAtA, i, uint64(m.SizeBytes))
   741  		i--
   742  		dAtA[i] = 0x10
   743  	}
   744  	if len(m.Name) > 0 {
   745  		i -= len(m.Name)
   746  		copy(dAtA[i:], m.Name)
   747  		i = encodeVarintLog(dAtA, i, uint64(len(m.Name)))
   748  		i--
   749  		dAtA[i] = 0xa
   750  	}
   751  	return len(dAtA) - i, nil
   752  }
   753  
   754  func encodeVarintLog(dAtA []byte, offset int, v uint64) int {
   755  	offset -= sovLog(v)
   756  	base := offset
   757  	for v >= 1<<7 {
   758  		dAtA[offset] = uint8(v&0x7f | 0x80)
   759  		v >>= 7
   760  		offset++
   761  	}
   762  	dAtA[offset] = uint8(v)
   763  	return base
   764  }
   765  func (m *Entry) Size() (n int) {
   766  	if m == nil {
   767  		return 0
   768  	}
   769  	var l int
   770  	_ = l
   771  	if m.Severity != 0 {
   772  		n += 1 + sovLog(uint64(m.Severity))
   773  	}
   774  	if m.Time != 0 {
   775  		n += 1 + sovLog(uint64(m.Time))
   776  	}
   777  	l = len(m.File)
   778  	if l > 0 {
   779  		n += 1 + l + sovLog(uint64(l))
   780  	}
   781  	if m.Line != 0 {
   782  		n += 1 + sovLog(uint64(m.Line))
   783  	}
   784  	l = len(m.Message)
   785  	if l > 0 {
   786  		n += 1 + l + sovLog(uint64(l))
   787  	}
   788  	if m.Goroutine != 0 {
   789  		n += 1 + sovLog(uint64(m.Goroutine))
   790  	}
   791  	l = len(m.Tags)
   792  	if l > 0 {
   793  		n += 1 + l + sovLog(uint64(l))
   794  	}
   795  	if m.Counter != 0 {
   796  		n += 1 + sovLog(uint64(m.Counter))
   797  	}
   798  	if m.Redactable {
   799  		n += 2
   800  	}
   801  	if m.Channel != 0 {
   802  		n += 1 + sovLog(uint64(m.Channel))
   803  	}
   804  	if m.StructuredEnd != 0 {
   805  		n += 1 + sovLog(uint64(m.StructuredEnd))
   806  	}
   807  	if m.StructuredStart != 0 {
   808  		n += 1 + sovLog(uint64(m.StructuredStart))
   809  	}
   810  	if m.StackTraceStart != 0 {
   811  		n += 1 + sovLog(uint64(m.StackTraceStart))
   812  	}
   813  	l = len(m.TenantID)
   814  	if l > 0 {
   815  		n += 1 + l + sovLog(uint64(l))
   816  	}
   817  	l = len(m.TenantName)
   818  	if l > 0 {
   819  		n += 1 + l + sovLog(uint64(l))
   820  	}
   821  	return n
   822  }
   823  
   824  func (m *FileDetails) Size() (n int) {
   825  	if m == nil {
   826  		return 0
   827  	}
   828  	var l int
   829  	_ = l
   830  	l = len(m.Program)
   831  	if l > 0 {
   832  		n += 1 + l + sovLog(uint64(l))
   833  	}
   834  	l = len(m.Host)
   835  	if l > 0 {
   836  		n += 1 + l + sovLog(uint64(l))
   837  	}
   838  	l = len(m.UserName)
   839  	if l > 0 {
   840  		n += 1 + l + sovLog(uint64(l))
   841  	}
   842  	if m.Time != 0 {
   843  		n += 1 + sovLog(uint64(m.Time))
   844  	}
   845  	if m.PID != 0 {
   846  		n += 1 + sovLog(uint64(m.PID))
   847  	}
   848  	return n
   849  }
   850  
   851  func (m *FileInfo) Size() (n int) {
   852  	if m == nil {
   853  		return 0
   854  	}
   855  	var l int
   856  	_ = l
   857  	l = len(m.Name)
   858  	if l > 0 {
   859  		n += 1 + l + sovLog(uint64(l))
   860  	}
   861  	if m.SizeBytes != 0 {
   862  		n += 1 + sovLog(uint64(m.SizeBytes))
   863  	}
   864  	if m.ModTimeNanos != 0 {
   865  		n += 1 + sovLog(uint64(m.ModTimeNanos))
   866  	}
   867  	l = m.Details.Size()
   868  	n += 1 + l + sovLog(uint64(l))
   869  	if m.FileMode != 0 {
   870  		n += 1 + sovLog(uint64(m.FileMode))
   871  	}
   872  	return n
   873  }
   874  
   875  func sovLog(x uint64) (n int) {
   876  	return (math_bits.Len64(x|1) + 6) / 7
   877  }
   878  func sozLog(x uint64) (n int) {
   879  	return sovLog(uint64((x << 1) ^ uint64((int64(x) >> 63))))
   880  }
   881  func (m *Entry) Unmarshal(dAtA []byte) error {
   882  	l := len(dAtA)
   883  	iNdEx := 0
   884  	for iNdEx < l {
   885  		preIndex := iNdEx
   886  		var wire uint64
   887  		for shift := uint(0); ; shift += 7 {
   888  			if shift >= 64 {
   889  				return ErrIntOverflowLog
   890  			}
   891  			if iNdEx >= l {
   892  				return io.ErrUnexpectedEOF
   893  			}
   894  			b := dAtA[iNdEx]
   895  			iNdEx++
   896  			wire |= uint64(b&0x7F) << shift
   897  			if b < 0x80 {
   898  				break
   899  			}
   900  		}
   901  		fieldNum := int32(wire >> 3)
   902  		wireType := int(wire & 0x7)
   903  		if wireType == 4 {
   904  			return fmt.Errorf("proto: Entry: wiretype end group for non-group")
   905  		}
   906  		if fieldNum <= 0 {
   907  			return fmt.Errorf("proto: Entry: illegal tag %d (wire type %d)", fieldNum, wire)
   908  		}
   909  		switch fieldNum {
   910  		case 1:
   911  			if wireType != 0 {
   912  				return fmt.Errorf("proto: wrong wireType = %d for field Severity", wireType)
   913  			}
   914  			m.Severity = 0
   915  			for shift := uint(0); ; shift += 7 {
   916  				if shift >= 64 {
   917  					return ErrIntOverflowLog
   918  				}
   919  				if iNdEx >= l {
   920  					return io.ErrUnexpectedEOF
   921  				}
   922  				b := dAtA[iNdEx]
   923  				iNdEx++
   924  				m.Severity |= Severity(b&0x7F) << shift
   925  				if b < 0x80 {
   926  					break
   927  				}
   928  			}
   929  		case 2:
   930  			if wireType != 0 {
   931  				return fmt.Errorf("proto: wrong wireType = %d for field Time", wireType)
   932  			}
   933  			m.Time = 0
   934  			for shift := uint(0); ; shift += 7 {
   935  				if shift >= 64 {
   936  					return ErrIntOverflowLog
   937  				}
   938  				if iNdEx >= l {
   939  					return io.ErrUnexpectedEOF
   940  				}
   941  				b := dAtA[iNdEx]
   942  				iNdEx++
   943  				m.Time |= int64(b&0x7F) << shift
   944  				if b < 0x80 {
   945  					break
   946  				}
   947  			}
   948  		case 3:
   949  			if wireType != 2 {
   950  				return fmt.Errorf("proto: wrong wireType = %d for field File", wireType)
   951  			}
   952  			var stringLen uint64
   953  			for shift := uint(0); ; shift += 7 {
   954  				if shift >= 64 {
   955  					return ErrIntOverflowLog
   956  				}
   957  				if iNdEx >= l {
   958  					return io.ErrUnexpectedEOF
   959  				}
   960  				b := dAtA[iNdEx]
   961  				iNdEx++
   962  				stringLen |= uint64(b&0x7F) << shift
   963  				if b < 0x80 {
   964  					break
   965  				}
   966  			}
   967  			intStringLen := int(stringLen)
   968  			if intStringLen < 0 {
   969  				return ErrInvalidLengthLog
   970  			}
   971  			postIndex := iNdEx + intStringLen
   972  			if postIndex < 0 {
   973  				return ErrInvalidLengthLog
   974  			}
   975  			if postIndex > l {
   976  				return io.ErrUnexpectedEOF
   977  			}
   978  			m.File = string(dAtA[iNdEx:postIndex])
   979  			iNdEx = postIndex
   980  		case 4:
   981  			if wireType != 0 {
   982  				return fmt.Errorf("proto: wrong wireType = %d for field Line", wireType)
   983  			}
   984  			m.Line = 0
   985  			for shift := uint(0); ; shift += 7 {
   986  				if shift >= 64 {
   987  					return ErrIntOverflowLog
   988  				}
   989  				if iNdEx >= l {
   990  					return io.ErrUnexpectedEOF
   991  				}
   992  				b := dAtA[iNdEx]
   993  				iNdEx++
   994  				m.Line |= int64(b&0x7F) << shift
   995  				if b < 0x80 {
   996  					break
   997  				}
   998  			}
   999  		case 5:
  1000  			if wireType != 2 {
  1001  				return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType)
  1002  			}
  1003  			var stringLen uint64
  1004  			for shift := uint(0); ; shift += 7 {
  1005  				if shift >= 64 {
  1006  					return ErrIntOverflowLog
  1007  				}
  1008  				if iNdEx >= l {
  1009  					return io.ErrUnexpectedEOF
  1010  				}
  1011  				b := dAtA[iNdEx]
  1012  				iNdEx++
  1013  				stringLen |= uint64(b&0x7F) << shift
  1014  				if b < 0x80 {
  1015  					break
  1016  				}
  1017  			}
  1018  			intStringLen := int(stringLen)
  1019  			if intStringLen < 0 {
  1020  				return ErrInvalidLengthLog
  1021  			}
  1022  			postIndex := iNdEx + intStringLen
  1023  			if postIndex < 0 {
  1024  				return ErrInvalidLengthLog
  1025  			}
  1026  			if postIndex > l {
  1027  				return io.ErrUnexpectedEOF
  1028  			}
  1029  			m.Message = string(dAtA[iNdEx:postIndex])
  1030  			iNdEx = postIndex
  1031  		case 6:
  1032  			if wireType != 0 {
  1033  				return fmt.Errorf("proto: wrong wireType = %d for field Goroutine", wireType)
  1034  			}
  1035  			m.Goroutine = 0
  1036  			for shift := uint(0); ; shift += 7 {
  1037  				if shift >= 64 {
  1038  					return ErrIntOverflowLog
  1039  				}
  1040  				if iNdEx >= l {
  1041  					return io.ErrUnexpectedEOF
  1042  				}
  1043  				b := dAtA[iNdEx]
  1044  				iNdEx++
  1045  				m.Goroutine |= int64(b&0x7F) << shift
  1046  				if b < 0x80 {
  1047  					break
  1048  				}
  1049  			}
  1050  		case 7:
  1051  			if wireType != 2 {
  1052  				return fmt.Errorf("proto: wrong wireType = %d for field Tags", wireType)
  1053  			}
  1054  			var stringLen uint64
  1055  			for shift := uint(0); ; shift += 7 {
  1056  				if shift >= 64 {
  1057  					return ErrIntOverflowLog
  1058  				}
  1059  				if iNdEx >= l {
  1060  					return io.ErrUnexpectedEOF
  1061  				}
  1062  				b := dAtA[iNdEx]
  1063  				iNdEx++
  1064  				stringLen |= uint64(b&0x7F) << shift
  1065  				if b < 0x80 {
  1066  					break
  1067  				}
  1068  			}
  1069  			intStringLen := int(stringLen)
  1070  			if intStringLen < 0 {
  1071  				return ErrInvalidLengthLog
  1072  			}
  1073  			postIndex := iNdEx + intStringLen
  1074  			if postIndex < 0 {
  1075  				return ErrInvalidLengthLog
  1076  			}
  1077  			if postIndex > l {
  1078  				return io.ErrUnexpectedEOF
  1079  			}
  1080  			m.Tags = string(dAtA[iNdEx:postIndex])
  1081  			iNdEx = postIndex
  1082  		case 8:
  1083  			if wireType != 0 {
  1084  				return fmt.Errorf("proto: wrong wireType = %d for field Counter", wireType)
  1085  			}
  1086  			m.Counter = 0
  1087  			for shift := uint(0); ; shift += 7 {
  1088  				if shift >= 64 {
  1089  					return ErrIntOverflowLog
  1090  				}
  1091  				if iNdEx >= l {
  1092  					return io.ErrUnexpectedEOF
  1093  				}
  1094  				b := dAtA[iNdEx]
  1095  				iNdEx++
  1096  				m.Counter |= uint64(b&0x7F) << shift
  1097  				if b < 0x80 {
  1098  					break
  1099  				}
  1100  			}
  1101  		case 9:
  1102  			if wireType != 0 {
  1103  				return fmt.Errorf("proto: wrong wireType = %d for field Redactable", wireType)
  1104  			}
  1105  			var v int
  1106  			for shift := uint(0); ; shift += 7 {
  1107  				if shift >= 64 {
  1108  					return ErrIntOverflowLog
  1109  				}
  1110  				if iNdEx >= l {
  1111  					return io.ErrUnexpectedEOF
  1112  				}
  1113  				b := dAtA[iNdEx]
  1114  				iNdEx++
  1115  				v |= int(b&0x7F) << shift
  1116  				if b < 0x80 {
  1117  					break
  1118  				}
  1119  			}
  1120  			m.Redactable = bool(v != 0)
  1121  		case 10:
  1122  			if wireType != 0 {
  1123  				return fmt.Errorf("proto: wrong wireType = %d for field Channel", wireType)
  1124  			}
  1125  			m.Channel = 0
  1126  			for shift := uint(0); ; shift += 7 {
  1127  				if shift >= 64 {
  1128  					return ErrIntOverflowLog
  1129  				}
  1130  				if iNdEx >= l {
  1131  					return io.ErrUnexpectedEOF
  1132  				}
  1133  				b := dAtA[iNdEx]
  1134  				iNdEx++
  1135  				m.Channel |= Channel(b&0x7F) << shift
  1136  				if b < 0x80 {
  1137  					break
  1138  				}
  1139  			}
  1140  		case 11:
  1141  			if wireType != 0 {
  1142  				return fmt.Errorf("proto: wrong wireType = %d for field StructuredEnd", wireType)
  1143  			}
  1144  			m.StructuredEnd = 0
  1145  			for shift := uint(0); ; shift += 7 {
  1146  				if shift >= 64 {
  1147  					return ErrIntOverflowLog
  1148  				}
  1149  				if iNdEx >= l {
  1150  					return io.ErrUnexpectedEOF
  1151  				}
  1152  				b := dAtA[iNdEx]
  1153  				iNdEx++
  1154  				m.StructuredEnd |= uint32(b&0x7F) << shift
  1155  				if b < 0x80 {
  1156  					break
  1157  				}
  1158  			}
  1159  		case 12:
  1160  			if wireType != 0 {
  1161  				return fmt.Errorf("proto: wrong wireType = %d for field StructuredStart", wireType)
  1162  			}
  1163  			m.StructuredStart = 0
  1164  			for shift := uint(0); ; shift += 7 {
  1165  				if shift >= 64 {
  1166  					return ErrIntOverflowLog
  1167  				}
  1168  				if iNdEx >= l {
  1169  					return io.ErrUnexpectedEOF
  1170  				}
  1171  				b := dAtA[iNdEx]
  1172  				iNdEx++
  1173  				m.StructuredStart |= uint32(b&0x7F) << shift
  1174  				if b < 0x80 {
  1175  					break
  1176  				}
  1177  			}
  1178  		case 13:
  1179  			if wireType != 0 {
  1180  				return fmt.Errorf("proto: wrong wireType = %d for field StackTraceStart", wireType)
  1181  			}
  1182  			m.StackTraceStart = 0
  1183  			for shift := uint(0); ; shift += 7 {
  1184  				if shift >= 64 {
  1185  					return ErrIntOverflowLog
  1186  				}
  1187  				if iNdEx >= l {
  1188  					return io.ErrUnexpectedEOF
  1189  				}
  1190  				b := dAtA[iNdEx]
  1191  				iNdEx++
  1192  				m.StackTraceStart |= uint32(b&0x7F) << shift
  1193  				if b < 0x80 {
  1194  					break
  1195  				}
  1196  			}
  1197  		case 14:
  1198  			if wireType != 2 {
  1199  				return fmt.Errorf("proto: wrong wireType = %d for field TenantID", wireType)
  1200  			}
  1201  			var stringLen uint64
  1202  			for shift := uint(0); ; shift += 7 {
  1203  				if shift >= 64 {
  1204  					return ErrIntOverflowLog
  1205  				}
  1206  				if iNdEx >= l {
  1207  					return io.ErrUnexpectedEOF
  1208  				}
  1209  				b := dAtA[iNdEx]
  1210  				iNdEx++
  1211  				stringLen |= uint64(b&0x7F) << shift
  1212  				if b < 0x80 {
  1213  					break
  1214  				}
  1215  			}
  1216  			intStringLen := int(stringLen)
  1217  			if intStringLen < 0 {
  1218  				return ErrInvalidLengthLog
  1219  			}
  1220  			postIndex := iNdEx + intStringLen
  1221  			if postIndex < 0 {
  1222  				return ErrInvalidLengthLog
  1223  			}
  1224  			if postIndex > l {
  1225  				return io.ErrUnexpectedEOF
  1226  			}
  1227  			m.TenantID = string(dAtA[iNdEx:postIndex])
  1228  			iNdEx = postIndex
  1229  		case 15:
  1230  			if wireType != 2 {
  1231  				return fmt.Errorf("proto: wrong wireType = %d for field TenantName", wireType)
  1232  			}
  1233  			var stringLen uint64
  1234  			for shift := uint(0); ; shift += 7 {
  1235  				if shift >= 64 {
  1236  					return ErrIntOverflowLog
  1237  				}
  1238  				if iNdEx >= l {
  1239  					return io.ErrUnexpectedEOF
  1240  				}
  1241  				b := dAtA[iNdEx]
  1242  				iNdEx++
  1243  				stringLen |= uint64(b&0x7F) << shift
  1244  				if b < 0x80 {
  1245  					break
  1246  				}
  1247  			}
  1248  			intStringLen := int(stringLen)
  1249  			if intStringLen < 0 {
  1250  				return ErrInvalidLengthLog
  1251  			}
  1252  			postIndex := iNdEx + intStringLen
  1253  			if postIndex < 0 {
  1254  				return ErrInvalidLengthLog
  1255  			}
  1256  			if postIndex > l {
  1257  				return io.ErrUnexpectedEOF
  1258  			}
  1259  			m.TenantName = string(dAtA[iNdEx:postIndex])
  1260  			iNdEx = postIndex
  1261  		default:
  1262  			iNdEx = preIndex
  1263  			skippy, err := skipLog(dAtA[iNdEx:])
  1264  			if err != nil {
  1265  				return err
  1266  			}
  1267  			if (skippy < 0) || (iNdEx+skippy) < 0 {
  1268  				return ErrInvalidLengthLog
  1269  			}
  1270  			if (iNdEx + skippy) > l {
  1271  				return io.ErrUnexpectedEOF
  1272  			}
  1273  			iNdEx += skippy
  1274  		}
  1275  	}
  1276  
  1277  	if iNdEx > l {
  1278  		return io.ErrUnexpectedEOF
  1279  	}
  1280  	return nil
  1281  }
  1282  func (m *FileDetails) Unmarshal(dAtA []byte) error {
  1283  	l := len(dAtA)
  1284  	iNdEx := 0
  1285  	for iNdEx < l {
  1286  		preIndex := iNdEx
  1287  		var wire uint64
  1288  		for shift := uint(0); ; shift += 7 {
  1289  			if shift >= 64 {
  1290  				return ErrIntOverflowLog
  1291  			}
  1292  			if iNdEx >= l {
  1293  				return io.ErrUnexpectedEOF
  1294  			}
  1295  			b := dAtA[iNdEx]
  1296  			iNdEx++
  1297  			wire |= uint64(b&0x7F) << shift
  1298  			if b < 0x80 {
  1299  				break
  1300  			}
  1301  		}
  1302  		fieldNum := int32(wire >> 3)
  1303  		wireType := int(wire & 0x7)
  1304  		if wireType == 4 {
  1305  			return fmt.Errorf("proto: FileDetails: wiretype end group for non-group")
  1306  		}
  1307  		if fieldNum <= 0 {
  1308  			return fmt.Errorf("proto: FileDetails: illegal tag %d (wire type %d)", fieldNum, wire)
  1309  		}
  1310  		switch fieldNum {
  1311  		case 1:
  1312  			if wireType != 2 {
  1313  				return fmt.Errorf("proto: wrong wireType = %d for field Program", wireType)
  1314  			}
  1315  			var stringLen uint64
  1316  			for shift := uint(0); ; shift += 7 {
  1317  				if shift >= 64 {
  1318  					return ErrIntOverflowLog
  1319  				}
  1320  				if iNdEx >= l {
  1321  					return io.ErrUnexpectedEOF
  1322  				}
  1323  				b := dAtA[iNdEx]
  1324  				iNdEx++
  1325  				stringLen |= uint64(b&0x7F) << shift
  1326  				if b < 0x80 {
  1327  					break
  1328  				}
  1329  			}
  1330  			intStringLen := int(stringLen)
  1331  			if intStringLen < 0 {
  1332  				return ErrInvalidLengthLog
  1333  			}
  1334  			postIndex := iNdEx + intStringLen
  1335  			if postIndex < 0 {
  1336  				return ErrInvalidLengthLog
  1337  			}
  1338  			if postIndex > l {
  1339  				return io.ErrUnexpectedEOF
  1340  			}
  1341  			m.Program = string(dAtA[iNdEx:postIndex])
  1342  			iNdEx = postIndex
  1343  		case 2:
  1344  			if wireType != 2 {
  1345  				return fmt.Errorf("proto: wrong wireType = %d for field Host", wireType)
  1346  			}
  1347  			var stringLen uint64
  1348  			for shift := uint(0); ; shift += 7 {
  1349  				if shift >= 64 {
  1350  					return ErrIntOverflowLog
  1351  				}
  1352  				if iNdEx >= l {
  1353  					return io.ErrUnexpectedEOF
  1354  				}
  1355  				b := dAtA[iNdEx]
  1356  				iNdEx++
  1357  				stringLen |= uint64(b&0x7F) << shift
  1358  				if b < 0x80 {
  1359  					break
  1360  				}
  1361  			}
  1362  			intStringLen := int(stringLen)
  1363  			if intStringLen < 0 {
  1364  				return ErrInvalidLengthLog
  1365  			}
  1366  			postIndex := iNdEx + intStringLen
  1367  			if postIndex < 0 {
  1368  				return ErrInvalidLengthLog
  1369  			}
  1370  			if postIndex > l {
  1371  				return io.ErrUnexpectedEOF
  1372  			}
  1373  			m.Host = string(dAtA[iNdEx:postIndex])
  1374  			iNdEx = postIndex
  1375  		case 3:
  1376  			if wireType != 2 {
  1377  				return fmt.Errorf("proto: wrong wireType = %d for field UserName", wireType)
  1378  			}
  1379  			var stringLen uint64
  1380  			for shift := uint(0); ; shift += 7 {
  1381  				if shift >= 64 {
  1382  					return ErrIntOverflowLog
  1383  				}
  1384  				if iNdEx >= l {
  1385  					return io.ErrUnexpectedEOF
  1386  				}
  1387  				b := dAtA[iNdEx]
  1388  				iNdEx++
  1389  				stringLen |= uint64(b&0x7F) << shift
  1390  				if b < 0x80 {
  1391  					break
  1392  				}
  1393  			}
  1394  			intStringLen := int(stringLen)
  1395  			if intStringLen < 0 {
  1396  				return ErrInvalidLengthLog
  1397  			}
  1398  			postIndex := iNdEx + intStringLen
  1399  			if postIndex < 0 {
  1400  				return ErrInvalidLengthLog
  1401  			}
  1402  			if postIndex > l {
  1403  				return io.ErrUnexpectedEOF
  1404  			}
  1405  			m.UserName = string(dAtA[iNdEx:postIndex])
  1406  			iNdEx = postIndex
  1407  		case 5:
  1408  			if wireType != 0 {
  1409  				return fmt.Errorf("proto: wrong wireType = %d for field Time", wireType)
  1410  			}
  1411  			m.Time = 0
  1412  			for shift := uint(0); ; shift += 7 {
  1413  				if shift >= 64 {
  1414  					return ErrIntOverflowLog
  1415  				}
  1416  				if iNdEx >= l {
  1417  					return io.ErrUnexpectedEOF
  1418  				}
  1419  				b := dAtA[iNdEx]
  1420  				iNdEx++
  1421  				m.Time |= int64(b&0x7F) << shift
  1422  				if b < 0x80 {
  1423  					break
  1424  				}
  1425  			}
  1426  		case 6:
  1427  			if wireType != 0 {
  1428  				return fmt.Errorf("proto: wrong wireType = %d for field PID", wireType)
  1429  			}
  1430  			m.PID = 0
  1431  			for shift := uint(0); ; shift += 7 {
  1432  				if shift >= 64 {
  1433  					return ErrIntOverflowLog
  1434  				}
  1435  				if iNdEx >= l {
  1436  					return io.ErrUnexpectedEOF
  1437  				}
  1438  				b := dAtA[iNdEx]
  1439  				iNdEx++
  1440  				m.PID |= int64(b&0x7F) << shift
  1441  				if b < 0x80 {
  1442  					break
  1443  				}
  1444  			}
  1445  		default:
  1446  			iNdEx = preIndex
  1447  			skippy, err := skipLog(dAtA[iNdEx:])
  1448  			if err != nil {
  1449  				return err
  1450  			}
  1451  			if (skippy < 0) || (iNdEx+skippy) < 0 {
  1452  				return ErrInvalidLengthLog
  1453  			}
  1454  			if (iNdEx + skippy) > l {
  1455  				return io.ErrUnexpectedEOF
  1456  			}
  1457  			iNdEx += skippy
  1458  		}
  1459  	}
  1460  
  1461  	if iNdEx > l {
  1462  		return io.ErrUnexpectedEOF
  1463  	}
  1464  	return nil
  1465  }
  1466  func (m *FileInfo) Unmarshal(dAtA []byte) error {
  1467  	l := len(dAtA)
  1468  	iNdEx := 0
  1469  	for iNdEx < l {
  1470  		preIndex := iNdEx
  1471  		var wire uint64
  1472  		for shift := uint(0); ; shift += 7 {
  1473  			if shift >= 64 {
  1474  				return ErrIntOverflowLog
  1475  			}
  1476  			if iNdEx >= l {
  1477  				return io.ErrUnexpectedEOF
  1478  			}
  1479  			b := dAtA[iNdEx]
  1480  			iNdEx++
  1481  			wire |= uint64(b&0x7F) << shift
  1482  			if b < 0x80 {
  1483  				break
  1484  			}
  1485  		}
  1486  		fieldNum := int32(wire >> 3)
  1487  		wireType := int(wire & 0x7)
  1488  		if wireType == 4 {
  1489  			return fmt.Errorf("proto: FileInfo: wiretype end group for non-group")
  1490  		}
  1491  		if fieldNum <= 0 {
  1492  			return fmt.Errorf("proto: FileInfo: illegal tag %d (wire type %d)", fieldNum, wire)
  1493  		}
  1494  		switch fieldNum {
  1495  		case 1:
  1496  			if wireType != 2 {
  1497  				return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
  1498  			}
  1499  			var stringLen uint64
  1500  			for shift := uint(0); ; shift += 7 {
  1501  				if shift >= 64 {
  1502  					return ErrIntOverflowLog
  1503  				}
  1504  				if iNdEx >= l {
  1505  					return io.ErrUnexpectedEOF
  1506  				}
  1507  				b := dAtA[iNdEx]
  1508  				iNdEx++
  1509  				stringLen |= uint64(b&0x7F) << shift
  1510  				if b < 0x80 {
  1511  					break
  1512  				}
  1513  			}
  1514  			intStringLen := int(stringLen)
  1515  			if intStringLen < 0 {
  1516  				return ErrInvalidLengthLog
  1517  			}
  1518  			postIndex := iNdEx + intStringLen
  1519  			if postIndex < 0 {
  1520  				return ErrInvalidLengthLog
  1521  			}
  1522  			if postIndex > l {
  1523  				return io.ErrUnexpectedEOF
  1524  			}
  1525  			m.Name = string(dAtA[iNdEx:postIndex])
  1526  			iNdEx = postIndex
  1527  		case 2:
  1528  			if wireType != 0 {
  1529  				return fmt.Errorf("proto: wrong wireType = %d for field SizeBytes", wireType)
  1530  			}
  1531  			m.SizeBytes = 0
  1532  			for shift := uint(0); ; shift += 7 {
  1533  				if shift >= 64 {
  1534  					return ErrIntOverflowLog
  1535  				}
  1536  				if iNdEx >= l {
  1537  					return io.ErrUnexpectedEOF
  1538  				}
  1539  				b := dAtA[iNdEx]
  1540  				iNdEx++
  1541  				m.SizeBytes |= int64(b&0x7F) << shift
  1542  				if b < 0x80 {
  1543  					break
  1544  				}
  1545  			}
  1546  		case 3:
  1547  			if wireType != 0 {
  1548  				return fmt.Errorf("proto: wrong wireType = %d for field ModTimeNanos", wireType)
  1549  			}
  1550  			m.ModTimeNanos = 0
  1551  			for shift := uint(0); ; shift += 7 {
  1552  				if shift >= 64 {
  1553  					return ErrIntOverflowLog
  1554  				}
  1555  				if iNdEx >= l {
  1556  					return io.ErrUnexpectedEOF
  1557  				}
  1558  				b := dAtA[iNdEx]
  1559  				iNdEx++
  1560  				m.ModTimeNanos |= int64(b&0x7F) << shift
  1561  				if b < 0x80 {
  1562  					break
  1563  				}
  1564  			}
  1565  		case 4:
  1566  			if wireType != 2 {
  1567  				return fmt.Errorf("proto: wrong wireType = %d for field Details", wireType)
  1568  			}
  1569  			var msglen int
  1570  			for shift := uint(0); ; shift += 7 {
  1571  				if shift >= 64 {
  1572  					return ErrIntOverflowLog
  1573  				}
  1574  				if iNdEx >= l {
  1575  					return io.ErrUnexpectedEOF
  1576  				}
  1577  				b := dAtA[iNdEx]
  1578  				iNdEx++
  1579  				msglen |= int(b&0x7F) << shift
  1580  				if b < 0x80 {
  1581  					break
  1582  				}
  1583  			}
  1584  			if msglen < 0 {
  1585  				return ErrInvalidLengthLog
  1586  			}
  1587  			postIndex := iNdEx + msglen
  1588  			if postIndex < 0 {
  1589  				return ErrInvalidLengthLog
  1590  			}
  1591  			if postIndex > l {
  1592  				return io.ErrUnexpectedEOF
  1593  			}
  1594  			if err := m.Details.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
  1595  				return err
  1596  			}
  1597  			iNdEx = postIndex
  1598  		case 5:
  1599  			if wireType != 0 {
  1600  				return fmt.Errorf("proto: wrong wireType = %d for field FileMode", wireType)
  1601  			}
  1602  			m.FileMode = 0
  1603  			for shift := uint(0); ; shift += 7 {
  1604  				if shift >= 64 {
  1605  					return ErrIntOverflowLog
  1606  				}
  1607  				if iNdEx >= l {
  1608  					return io.ErrUnexpectedEOF
  1609  				}
  1610  				b := dAtA[iNdEx]
  1611  				iNdEx++
  1612  				m.FileMode |= uint32(b&0x7F) << shift
  1613  				if b < 0x80 {
  1614  					break
  1615  				}
  1616  			}
  1617  		default:
  1618  			iNdEx = preIndex
  1619  			skippy, err := skipLog(dAtA[iNdEx:])
  1620  			if err != nil {
  1621  				return err
  1622  			}
  1623  			if (skippy < 0) || (iNdEx+skippy) < 0 {
  1624  				return ErrInvalidLengthLog
  1625  			}
  1626  			if (iNdEx + skippy) > l {
  1627  				return io.ErrUnexpectedEOF
  1628  			}
  1629  			iNdEx += skippy
  1630  		}
  1631  	}
  1632  
  1633  	if iNdEx > l {
  1634  		return io.ErrUnexpectedEOF
  1635  	}
  1636  	return nil
  1637  }
  1638  func skipLog(dAtA []byte) (n int, err error) {
  1639  	l := len(dAtA)
  1640  	iNdEx := 0
  1641  	depth := 0
  1642  	for iNdEx < l {
  1643  		var wire uint64
  1644  		for shift := uint(0); ; shift += 7 {
  1645  			if shift >= 64 {
  1646  				return 0, ErrIntOverflowLog
  1647  			}
  1648  			if iNdEx >= l {
  1649  				return 0, io.ErrUnexpectedEOF
  1650  			}
  1651  			b := dAtA[iNdEx]
  1652  			iNdEx++
  1653  			wire |= (uint64(b) & 0x7F) << shift
  1654  			if b < 0x80 {
  1655  				break
  1656  			}
  1657  		}
  1658  		wireType := int(wire & 0x7)
  1659  		switch wireType {
  1660  		case 0:
  1661  			for shift := uint(0); ; shift += 7 {
  1662  				if shift >= 64 {
  1663  					return 0, ErrIntOverflowLog
  1664  				}
  1665  				if iNdEx >= l {
  1666  					return 0, io.ErrUnexpectedEOF
  1667  				}
  1668  				iNdEx++
  1669  				if dAtA[iNdEx-1] < 0x80 {
  1670  					break
  1671  				}
  1672  			}
  1673  		case 1:
  1674  			iNdEx += 8
  1675  		case 2:
  1676  			var length int
  1677  			for shift := uint(0); ; shift += 7 {
  1678  				if shift >= 64 {
  1679  					return 0, ErrIntOverflowLog
  1680  				}
  1681  				if iNdEx >= l {
  1682  					return 0, io.ErrUnexpectedEOF
  1683  				}
  1684  				b := dAtA[iNdEx]
  1685  				iNdEx++
  1686  				length |= (int(b) & 0x7F) << shift
  1687  				if b < 0x80 {
  1688  					break
  1689  				}
  1690  			}
  1691  			if length < 0 {
  1692  				return 0, ErrInvalidLengthLog
  1693  			}
  1694  			iNdEx += length
  1695  		case 3:
  1696  			depth++
  1697  		case 4:
  1698  			if depth == 0 {
  1699  				return 0, ErrUnexpectedEndOfGroupLog
  1700  			}
  1701  			depth--
  1702  		case 5:
  1703  			iNdEx += 4
  1704  		default:
  1705  			return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
  1706  		}
  1707  		if iNdEx < 0 {
  1708  			return 0, ErrInvalidLengthLog
  1709  		}
  1710  		if depth == 0 {
  1711  			return iNdEx, nil
  1712  		}
  1713  	}
  1714  	return 0, io.ErrUnexpectedEOF
  1715  }
  1716  
  1717  var (
  1718  	ErrInvalidLengthLog        = fmt.Errorf("proto: negative length found during unmarshaling")
  1719  	ErrIntOverflowLog          = fmt.Errorf("proto: integer overflow")
  1720  	ErrUnexpectedEndOfGroupLog = fmt.Errorf("proto: unexpected end of group")
  1721  )
  1722