diff --git a/bindings/go/scip/scip.pb.go b/bindings/go/scip/scip.pb.go index f0a46f3b..c4bb8bf5 100644 --- a/bindings/go/scip/scip.pb.go +++ b/bindings/go/scip/scip.pb.go @@ -123,7 +123,7 @@ func (TextEncoding) EnumDescriptor() ([]byte, []int) { return file_scip_proto_rawDescGZIP(), []int{1} } -// SymbolRole declares what "role" a symbol has in an occurrence. A role is +// SymbolRole declares what "role" a symbol has in an occurrence. A role is // encoded as a bitset where each bit represents a different role. For example, // to determine if the `Import` role is set, test whether the second bit of the // enum value is defined. In pseudocode, this can be implemented with the @@ -1459,7 +1459,7 @@ type SymbolInformation struct { Symbol string `protobuf:"bytes,1,opt,name=symbol,proto3" json:"symbol,omitempty"` // (optional, but strongly recommended) The markdown-formatted documentation // for this symbol. This field is repeated to allow different kinds of - // documentation. For example, it's nice to include both the signature of a + // documentation. For example, it's nice to include both the signature of a // method (parameters and return type) along with the accompanying docstring. Documentation []string `protobuf:"bytes,3,rep,name=documentation,proto3" json:"documentation,omitempty"` // (optional) Relationships to other symbols (e.g., implements, type definition). @@ -1556,7 +1556,7 @@ type Relationship struct { // In the TypeScript example above, observe that `Dog#` has an // `is_implementation` relationship with `"Animal#"` but not `is_reference`. // This is because "Find references" on the "Animal#" symbol should not return - // "Dog#". We only want "Dog#" to return as a result for "Find + // "Dog#". We only want "Dog#" to return as a result for "Find // implementations" on the "Animal#" symbol. IsImplementation bool `protobuf:"varint,3,opt,name=is_implementation,json=isImplementation,proto3" json:"is_implementation,omitempty"` // Similar to `references_symbols` but for "Go to type definition". @@ -1672,7 +1672,7 @@ type Occurrence struct { // type with `start` and `end` fields of type `Position`, mirroring LSP. // Benchmarks revealed that this encoding was inefficient and that we could // reduce the total payload size of an index by 50% by using `repeated int32` - // instead. The `repeated int32` encoding is admittedly more embarrassing to + // instead. The `repeated int32` encoding is admittedly more embarrassing to // work with in some programming languages but we hope the performance // improvements make up for it. Range []int32 `protobuf:"varint,1,rep,packed,name=range,proto3" json:"range,omitempty"` @@ -1695,6 +1695,46 @@ type Occurrence struct { SyntaxKind SyntaxKind `protobuf:"varint,5,opt,name=syntax_kind,json=syntaxKind,proto3,enum=scip.SyntaxKind" json:"syntax_kind,omitempty"` // (optional) Diagnostics that have been reported for this specific range. Diagnostics []*Diagnostic `protobuf:"bytes,6,rep,name=diagnostics,proto3" json:"diagnostics,omitempty"` + // (optional) Using the same encoding as the sibling `range` field, source + // position of the nearest non-trivial enclosing AST node. This range must + // enclose the `range` field. Example applications that make use of the + // enclosing_range field: + // + // - Call hierarchies: to determine what symbols are references from the body + // of a function + // - Symbol outline: to display breadcrumbs from the cursor position to the + // root of the file + // - Expand selection: to select the nearest enclosing AST node. + // - Highlight range: to indicate the AST expression that is associated with a + // hover popover + // + // For definition occurrences, the enclosing range should indicate the + // start/end bounds of the entire definition AST node, including + // documentation. + // ``` + // const n = 3 + // ^ range + // ^^^^^^^^^^^ enclosing_range + // + // /** Parses the string into something */ + // ^ enclosing_range start --------------------------------------| + // function parse(input string): string { | + // ^^^^^ range | + // return input.slice(n) | + // } | + // ^ enclosing_range end <---------------------------------------| + // ``` + // For reference occurrences, the enclosing range should indicate the start/end + // bounds of the parent expression. + // ``` + // const a = a.b + // ^ range + // ^^^ enclosing_range + // const b = a.b(41).f(42).g(43) + // ^ range + // ^^^^^^^^^^^^^ enclosing_range + // ``` + EnclosingRange []int32 `protobuf:"varint,7,rep,packed,name=enclosing_range,json=enclosingRange,proto3" json:"enclosing_range,omitempty"` } func (x *Occurrence) Reset() { @@ -1771,6 +1811,13 @@ func (x *Occurrence) GetDiagnostics() []*Diagnostic { return nil } +func (x *Occurrence) GetEnclosingRange() []int32 { + if x != nil { + return x.EnclosingRange + } + return nil +} + // Represents a diagnostic, such as a compiler error or warning, which should be // reported for a document. type Diagnostic struct { @@ -1954,7 +2001,7 @@ var file_scip_proto_rawDesc = []byte{ 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x10, 0x69, 0x73, 0x54, 0x79, 0x70, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0c, 0x69, 0x73, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xfb, 0x01, + 0x0c, 0x69, 0x73, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa4, 0x02, 0x0a, 0x0a, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, @@ -1970,172 +2017,175 @@ var file_scip_proto_rawDesc = []byte{ 0x74, 0x61, 0x78, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x32, 0x0a, 0x0b, 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x73, 0x63, 0x69, 0x70, 0x2e, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x52, 0x0b, - 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x22, 0xa7, 0x01, 0x0a, 0x0a, - 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x12, 0x2a, 0x0a, 0x08, 0x73, 0x65, - 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x73, - 0x63, 0x69, 0x70, 0x2e, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x73, 0x65, - 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, - 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x04, - 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x73, 0x63, 0x69, - 0x70, 0x2e, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, - 0x04, 0x74, 0x61, 0x67, 0x73, 0x2a, 0x31, 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x1a, 0x55, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x10, 0x00, 0x2a, 0x40, 0x0a, 0x0c, 0x54, 0x65, 0x78, 0x74, - 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x1b, 0x0a, 0x17, 0x55, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x54, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, - 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x55, 0x54, 0x46, 0x38, 0x10, 0x01, 0x12, - 0x09, 0x0a, 0x05, 0x55, 0x54, 0x46, 0x31, 0x36, 0x10, 0x02, 0x2a, 0x7d, 0x0a, 0x0a, 0x53, 0x79, - 0x6d, 0x62, 0x6f, 0x6c, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x55, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x52, 0x6f, 0x6c, - 0x65, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, - 0x6e, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x10, 0x02, 0x12, - 0x0f, 0x0a, 0x0b, 0x57, 0x72, 0x69, 0x74, 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x04, - 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x65, 0x61, 0x64, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x08, - 0x12, 0x0d, 0x0a, 0x09, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x10, 0x10, 0x12, - 0x08, 0x0a, 0x04, 0x54, 0x65, 0x73, 0x74, 0x10, 0x20, 0x2a, 0xea, 0x06, 0x0a, 0x0a, 0x53, 0x79, - 0x6e, 0x74, 0x61, 0x78, 0x4b, 0x69, 0x6e, 0x64, 0x12, 0x19, 0x0a, 0x15, 0x55, 0x6e, 0x73, 0x70, - 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x53, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x4b, 0x69, 0x6e, - 0x64, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x01, - 0x12, 0x18, 0x0a, 0x14, 0x50, 0x75, 0x6e, 0x63, 0x74, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, - 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x75, - 0x6e, 0x63, 0x74, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x74, - 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x10, 0x04, 0x12, - 0x19, 0x0a, 0x11, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4b, 0x65, 0x79, - 0x77, 0x6f, 0x72, 0x64, 0x10, 0x04, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, - 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x42, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4e, 0x75, 0x6c, 0x6c, 0x10, 0x08, 0x12, 0x16, 0x0a, - 0x12, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x74, 0x10, 0x09, 0x12, 0x1b, 0x0a, 0x17, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, - 0x10, 0x0a, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x10, 0x0b, 0x12, 0x13, 0x0a, 0x0f, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x10, 0x0c, - 0x12, 0x16, 0x0a, 0x12, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x53, 0x68, - 0x61, 0x64, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x0d, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x10, - 0x0e, 0x12, 0x18, 0x0a, 0x10, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, - 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x10, 0x0e, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x49, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x10, 0x0f, 0x12, 0x20, 0x0a, 0x1c, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x10, 0x10, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x4d, 0x61, 0x63, 0x72, 0x6f, 0x10, 0x11, 0x12, 0x1d, 0x0a, 0x19, 0x49, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, 0x61, 0x63, 0x72, 0x6f, 0x44, 0x65, 0x66, - 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x12, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x64, 0x65, - 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x10, 0x13, 0x12, 0x19, 0x0a, - 0x15, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x75, 0x69, 0x6c, 0x74, - 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x10, 0x14, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x10, - 0x15, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x65, 0x67, 0x65, 0x78, 0x45, 0x73, 0x63, 0x61, 0x70, 0x65, - 0x10, 0x16, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x65, 0x67, 0x65, 0x78, 0x52, 0x65, 0x70, 0x65, 0x61, - 0x74, 0x65, 0x64, 0x10, 0x17, 0x12, 0x11, 0x0a, 0x0d, 0x52, 0x65, 0x67, 0x65, 0x78, 0x57, 0x69, - 0x6c, 0x64, 0x63, 0x61, 0x72, 0x64, 0x10, 0x18, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x65, 0x67, 0x65, - 0x78, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x10, 0x19, 0x12, 0x0d, 0x0a, 0x09, - 0x52, 0x65, 0x67, 0x65, 0x78, 0x4a, 0x6f, 0x69, 0x6e, 0x10, 0x1a, 0x12, 0x11, 0x0a, 0x0d, 0x53, - 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x10, 0x1b, 0x12, 0x17, - 0x0a, 0x13, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x45, - 0x73, 0x63, 0x61, 0x70, 0x65, 0x10, 0x1c, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x74, 0x72, 0x69, 0x6e, - 0x67, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x10, - 0x1d, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x74, 0x65, 0x72, - 0x61, 0x6c, 0x4b, 0x65, 0x79, 0x10, 0x1e, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x68, 0x61, 0x72, 0x61, - 0x63, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x10, 0x1f, 0x12, 0x12, 0x0a, - 0x0e, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x10, - 0x20, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x6f, 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x4c, 0x69, 0x74, 0x65, - 0x72, 0x61, 0x6c, 0x10, 0x21, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x61, 0x67, 0x10, 0x22, 0x12, 0x10, - 0x0a, 0x0c, 0x54, 0x61, 0x67, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x10, 0x23, - 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x61, 0x67, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, - 0x10, 0x24, 0x1a, 0x02, 0x10, 0x01, 0x2a, 0x56, 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, - 0x74, 0x79, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, - 0x64, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, - 0x67, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x69, 0x6e, 0x74, 0x10, 0x04, 0x2a, 0x4e, - 0x0a, 0x0d, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, - 0x1c, 0x0a, 0x18, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x44, 0x69, - 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x54, 0x61, 0x67, 0x10, 0x00, 0x12, 0x0f, 0x0a, - 0x0b, 0x55, 0x6e, 0x6e, 0x65, 0x63, 0x65, 0x73, 0x73, 0x61, 0x72, 0x79, 0x10, 0x01, 0x12, 0x0e, - 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x72, 0x65, 0x63, 0x61, 0x74, 0x65, 0x64, 0x10, 0x02, 0x2a, 0xe0, - 0x08, 0x0a, 0x08, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x55, - 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, - 0x67, 0x65, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x42, 0x41, 0x50, 0x10, 0x3c, 0x12, 0x07, - 0x0a, 0x03, 0x41, 0x50, 0x4c, 0x10, 0x31, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x64, 0x61, 0x10, 0x27, - 0x12, 0x08, 0x0a, 0x04, 0x41, 0x67, 0x64, 0x61, 0x10, 0x2d, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x73, - 0x63, 0x69, 0x69, 0x44, 0x6f, 0x63, 0x10, 0x56, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x73, 0x73, 0x65, - 0x6d, 0x62, 0x6c, 0x79, 0x10, 0x3a, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x77, 0x6b, 0x10, 0x42, 0x12, - 0x07, 0x0a, 0x03, 0x42, 0x61, 0x74, 0x10, 0x44, 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x69, 0x62, 0x54, - 0x65, 0x58, 0x10, 0x51, 0x12, 0x05, 0x0a, 0x01, 0x43, 0x10, 0x22, 0x12, 0x09, 0x0a, 0x05, 0x43, - 0x4f, 0x42, 0x4f, 0x4c, 0x10, 0x3b, 0x12, 0x07, 0x0a, 0x03, 0x43, 0x50, 0x50, 0x10, 0x23, 0x12, - 0x07, 0x0a, 0x03, 0x43, 0x53, 0x53, 0x10, 0x1a, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x53, 0x68, 0x61, - 0x72, 0x70, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x43, 0x6c, 0x6f, 0x6a, 0x75, 0x72, 0x65, 0x10, - 0x08, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x6f, 0x66, 0x66, 0x65, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x10, 0x15, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x69, 0x73, - 0x70, 0x10, 0x09, 0x12, 0x07, 0x0a, 0x03, 0x43, 0x6f, 0x71, 0x10, 0x2f, 0x12, 0x08, 0x0a, 0x04, - 0x44, 0x61, 0x72, 0x74, 0x10, 0x03, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x70, 0x68, 0x69, - 0x10, 0x39, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x69, 0x66, 0x66, 0x10, 0x58, 0x12, 0x0e, 0x0a, 0x0a, - 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, 0x69, 0x6c, 0x65, 0x10, 0x50, 0x12, 0x0a, 0x0a, 0x06, - 0x44, 0x79, 0x61, 0x6c, 0x6f, 0x67, 0x10, 0x32, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x6c, 0x69, 0x78, - 0x69, 0x72, 0x10, 0x11, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x72, 0x6c, 0x61, 0x6e, 0x67, 0x10, 0x12, - 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x53, 0x68, 0x61, 0x72, 0x70, 0x10, 0x2a, 0x12, 0x08, 0x0a, 0x04, - 0x46, 0x69, 0x73, 0x68, 0x10, 0x41, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x6c, 0x6f, 0x77, 0x10, 0x18, - 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x6f, 0x72, 0x74, 0x72, 0x61, 0x6e, 0x10, 0x38, 0x12, 0x0e, 0x0a, - 0x0a, 0x47, 0x69, 0x74, 0x5f, 0x43, 0x6f, 0x6d, 0x6d, 0x69, 0x74, 0x10, 0x5b, 0x12, 0x0e, 0x0a, - 0x0a, 0x47, 0x69, 0x74, 0x5f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0x59, 0x12, 0x0e, 0x0a, - 0x0a, 0x47, 0x69, 0x74, 0x5f, 0x52, 0x65, 0x62, 0x61, 0x73, 0x65, 0x10, 0x5c, 0x12, 0x06, 0x0a, - 0x02, 0x47, 0x6f, 0x10, 0x21, 0x12, 0x0a, 0x0a, 0x06, 0x47, 0x72, 0x6f, 0x6f, 0x76, 0x79, 0x10, - 0x07, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x54, 0x4d, 0x4c, 0x10, 0x1e, 0x12, 0x08, 0x0a, 0x04, 0x48, - 0x61, 0x63, 0x6b, 0x10, 0x14, 0x12, 0x0e, 0x0a, 0x0a, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x62, - 0x61, 0x72, 0x73, 0x10, 0x5a, 0x12, 0x0b, 0x0a, 0x07, 0x48, 0x61, 0x73, 0x6b, 0x65, 0x6c, 0x6c, - 0x10, 0x2c, 0x12, 0x09, 0x0a, 0x05, 0x49, 0x64, 0x72, 0x69, 0x73, 0x10, 0x2e, 0x12, 0x07, 0x0a, - 0x03, 0x49, 0x6e, 0x69, 0x10, 0x48, 0x12, 0x05, 0x0a, 0x01, 0x4a, 0x10, 0x33, 0x12, 0x08, 0x0a, - 0x04, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x4b, 0x12, 0x08, 0x0a, 0x04, 0x4a, 0x61, 0x76, 0x61, 0x10, - 0x06, 0x12, 0x0e, 0x0a, 0x0a, 0x4a, 0x61, 0x76, 0x61, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x10, - 0x16, 0x12, 0x13, 0x0a, 0x0f, 0x4a, 0x61, 0x76, 0x61, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, - 0x65, 0x61, 0x63, 0x74, 0x10, 0x5d, 0x12, 0x0b, 0x0a, 0x07, 0x4a, 0x73, 0x6f, 0x6e, 0x6e, 0x65, - 0x74, 0x10, 0x4c, 0x12, 0x09, 0x0a, 0x05, 0x4a, 0x75, 0x6c, 0x69, 0x61, 0x10, 0x37, 0x12, 0x0a, - 0x0a, 0x06, 0x4b, 0x6f, 0x74, 0x6c, 0x69, 0x6e, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x61, - 0x54, 0x65, 0x58, 0x10, 0x53, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x65, 0x61, 0x6e, 0x10, 0x30, 0x12, - 0x08, 0x0a, 0x04, 0x4c, 0x65, 0x73, 0x73, 0x10, 0x1b, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x75, 0x61, - 0x10, 0x0c, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x61, 0x6b, 0x65, 0x66, 0x69, 0x6c, 0x65, 0x10, 0x4f, - 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x61, 0x72, 0x6b, 0x64, 0x6f, 0x77, 0x6e, 0x10, 0x54, 0x12, 0x0a, - 0x0a, 0x06, 0x4d, 0x61, 0x74, 0x6c, 0x61, 0x62, 0x10, 0x34, 0x12, 0x07, 0x0a, 0x03, 0x4e, 0x69, - 0x78, 0x10, 0x4d, 0x12, 0x09, 0x0a, 0x05, 0x4f, 0x43, 0x61, 0x6d, 0x6c, 0x10, 0x29, 0x12, 0x0f, - 0x0a, 0x0b, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x43, 0x10, 0x24, 0x12, - 0x11, 0x0a, 0x0d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x43, 0x50, 0x50, - 0x10, 0x25, 0x12, 0x07, 0x0a, 0x03, 0x50, 0x48, 0x50, 0x10, 0x13, 0x12, 0x09, 0x0a, 0x05, 0x50, - 0x4c, 0x53, 0x51, 0x4c, 0x10, 0x46, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x65, 0x72, 0x6c, 0x10, 0x0d, - 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x10, 0x43, - 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x72, 0x6f, 0x6c, 0x6f, 0x67, 0x10, 0x47, 0x12, 0x0a, 0x0a, 0x06, - 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x10, 0x0f, 0x12, 0x05, 0x0a, 0x01, 0x52, 0x10, 0x36, 0x12, - 0x0a, 0x0a, 0x06, 0x52, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x10, 0x0b, 0x12, 0x08, 0x0a, 0x04, 0x52, - 0x61, 0x6b, 0x75, 0x10, 0x0e, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x61, 0x7a, 0x6f, 0x72, 0x10, 0x3e, - 0x12, 0x08, 0x0a, 0x04, 0x52, 0x65, 0x53, 0x54, 0x10, 0x55, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x75, - 0x62, 0x79, 0x10, 0x10, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x75, 0x73, 0x74, 0x10, 0x28, 0x12, 0x07, - 0x0a, 0x03, 0x53, 0x41, 0x53, 0x10, 0x3d, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x43, 0x53, 0x53, 0x10, - 0x1d, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x4d, 0x4c, 0x10, 0x2b, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x51, - 0x4c, 0x10, 0x45, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x61, 0x73, 0x73, 0x10, 0x1c, 0x12, 0x09, 0x0a, - 0x05, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x10, 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x65, 0x10, 0x0a, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x53, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x10, 0x40, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x6b, 0x79, 0x6c, 0x61, 0x72, 0x6b, - 0x10, 0x4e, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x77, 0x69, 0x66, 0x74, 0x10, 0x02, 0x12, 0x08, 0x0a, - 0x04, 0x54, 0x4f, 0x4d, 0x4c, 0x10, 0x49, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x65, 0x58, 0x10, 0x52, - 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x79, 0x70, 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x10, 0x17, - 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x79, 0x70, 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, - 0x61, 0x63, 0x74, 0x10, 0x5e, 0x12, 0x0f, 0x0a, 0x0b, 0x56, 0x69, 0x73, 0x75, 0x61, 0x6c, 0x42, - 0x61, 0x73, 0x69, 0x63, 0x10, 0x3f, 0x12, 0x07, 0x0a, 0x03, 0x56, 0x75, 0x65, 0x10, 0x19, 0x12, - 0x0b, 0x0a, 0x07, 0x57, 0x6f, 0x6c, 0x66, 0x72, 0x61, 0x6d, 0x10, 0x35, 0x12, 0x07, 0x0a, 0x03, - 0x58, 0x4d, 0x4c, 0x10, 0x1f, 0x12, 0x07, 0x0a, 0x03, 0x58, 0x53, 0x4c, 0x10, 0x20, 0x12, 0x08, - 0x0a, 0x04, 0x59, 0x41, 0x4d, 0x4c, 0x10, 0x4a, 0x12, 0x07, 0x0a, 0x03, 0x5a, 0x69, 0x67, 0x10, - 0x26, 0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x67, 0x72, 0x61, 0x70, 0x68, 0x2f, 0x73, 0x63, 0x69, 0x70, - 0x2f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x73, 0x63, 0x69, - 0x70, 0x2f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x64, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x65, + 0x6e, 0x63, 0x6c, 0x6f, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x07, + 0x20, 0x03, 0x28, 0x05, 0x52, 0x0e, 0x65, 0x6e, 0x63, 0x6c, 0x6f, 0x73, 0x69, 0x6e, 0x67, 0x52, + 0x61, 0x6e, 0x67, 0x65, 0x22, 0xa7, 0x01, 0x0a, 0x0a, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, + 0x74, 0x69, 0x63, 0x12, 0x2a, 0x0a, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x73, 0x63, 0x69, 0x70, 0x2e, 0x53, 0x65, 0x76, + 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x73, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, + 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, + 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x74, 0x61, 0x67, 0x73, 0x18, 0x05, 0x20, + 0x03, 0x28, 0x0e, 0x32, 0x13, 0x2e, 0x73, 0x63, 0x69, 0x70, 0x2e, 0x44, 0x69, 0x61, 0x67, 0x6e, + 0x6f, 0x73, 0x74, 0x69, 0x63, 0x54, 0x61, 0x67, 0x52, 0x04, 0x74, 0x61, 0x67, 0x73, 0x2a, 0x31, + 0x0a, 0x0f, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x12, 0x1e, 0x0a, 0x1a, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x10, + 0x00, 0x2a, 0x40, 0x0a, 0x0c, 0x54, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, + 0x67, 0x12, 0x1b, 0x0a, 0x17, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x54, 0x65, 0x78, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x10, 0x00, 0x12, 0x08, + 0x0a, 0x04, 0x55, 0x54, 0x46, 0x38, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x55, 0x54, 0x46, 0x31, + 0x36, 0x10, 0x02, 0x2a, 0x7d, 0x0a, 0x0a, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x52, 0x6f, 0x6c, + 0x65, 0x12, 0x19, 0x0a, 0x15, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x52, 0x6f, 0x6c, 0x65, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, + 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, + 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, 0x57, 0x72, 0x69, 0x74, + 0x65, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x52, 0x65, 0x61, + 0x64, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x08, 0x12, 0x0d, 0x0a, 0x09, 0x47, 0x65, 0x6e, + 0x65, 0x72, 0x61, 0x74, 0x65, 0x64, 0x10, 0x10, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x65, 0x73, 0x74, + 0x10, 0x20, 0x2a, 0xea, 0x06, 0x0a, 0x0a, 0x53, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x4b, 0x69, 0x6e, + 0x64, 0x12, 0x19, 0x0a, 0x15, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, + 0x53, 0x79, 0x6e, 0x74, 0x61, 0x78, 0x4b, 0x69, 0x6e, 0x64, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, + 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x75, 0x6e, + 0x63, 0x74, 0x75, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, + 0x72, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x50, 0x75, 0x6e, 0x63, 0x74, 0x75, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x42, 0x72, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x10, 0x03, 0x12, 0x0b, 0x0a, 0x07, 0x4b, + 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x10, 0x04, 0x12, 0x19, 0x0a, 0x11, 0x49, 0x64, 0x65, 0x6e, + 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x10, 0x04, 0x1a, + 0x02, 0x08, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x6f, 0x72, 0x10, 0x05, 0x12, 0x0e, 0x0a, 0x0a, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x42, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, + 0x10, 0x07, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x4e, 0x75, 0x6c, 0x6c, 0x10, 0x08, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x10, 0x09, 0x12, 0x1b, + 0x0a, 0x17, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, 0x75, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x10, 0x0a, 0x12, 0x17, 0x0a, 0x13, 0x49, + 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, + 0x65, 0x72, 0x10, 0x0b, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x10, 0x0c, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x64, 0x65, + 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x65, 0x64, 0x10, + 0x0d, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x10, 0x0e, 0x12, 0x18, 0x0a, 0x10, 0x49, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x75, 0x6c, 0x65, 0x10, 0x0e, + 0x1a, 0x02, 0x08, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x0f, 0x12, 0x20, 0x0a, 0x1c, + 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x10, 0x12, 0x13, + 0x0a, 0x0f, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x4d, 0x61, 0x63, 0x72, + 0x6f, 0x10, 0x11, 0x12, 0x1d, 0x0a, 0x19, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, + 0x72, 0x4d, 0x61, 0x63, 0x72, 0x6f, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x10, 0x12, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x54, 0x79, 0x70, 0x65, 0x10, 0x13, 0x12, 0x19, 0x0a, 0x15, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, + 0x66, 0x69, 0x65, 0x72, 0x42, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x10, + 0x14, 0x12, 0x17, 0x0a, 0x13, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x10, 0x15, 0x12, 0x0f, 0x0a, 0x0b, 0x52, 0x65, + 0x67, 0x65, 0x78, 0x45, 0x73, 0x63, 0x61, 0x70, 0x65, 0x10, 0x16, 0x12, 0x11, 0x0a, 0x0d, 0x52, + 0x65, 0x67, 0x65, 0x78, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x10, 0x17, 0x12, 0x11, + 0x0a, 0x0d, 0x52, 0x65, 0x67, 0x65, 0x78, 0x57, 0x69, 0x6c, 0x64, 0x63, 0x61, 0x72, 0x64, 0x10, + 0x18, 0x12, 0x12, 0x0a, 0x0e, 0x52, 0x65, 0x67, 0x65, 0x78, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x65, 0x72, 0x10, 0x19, 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x65, 0x67, 0x65, 0x78, 0x4a, 0x6f, + 0x69, 0x6e, 0x10, 0x1a, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, + 0x74, 0x65, 0x72, 0x61, 0x6c, 0x10, 0x1b, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x74, 0x72, 0x69, 0x6e, + 0x67, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x45, 0x73, 0x63, 0x61, 0x70, 0x65, 0x10, 0x1c, + 0x12, 0x18, 0x0a, 0x14, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, + 0x6c, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x10, 0x1d, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x4b, 0x65, 0x79, 0x10, 0x1e, + 0x12, 0x14, 0x0a, 0x10, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x4c, 0x69, 0x74, + 0x65, 0x72, 0x61, 0x6c, 0x10, 0x1f, 0x12, 0x12, 0x0a, 0x0e, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, + 0x63, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x10, 0x20, 0x12, 0x12, 0x0a, 0x0e, 0x42, 0x6f, + 0x6f, 0x6c, 0x65, 0x61, 0x6e, 0x4c, 0x69, 0x74, 0x65, 0x72, 0x61, 0x6c, 0x10, 0x21, 0x12, 0x07, + 0x0a, 0x03, 0x54, 0x61, 0x67, 0x10, 0x22, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x61, 0x67, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x10, 0x23, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x61, 0x67, + 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x72, 0x10, 0x24, 0x1a, 0x02, 0x10, 0x01, 0x2a, + 0x56, 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x12, 0x17, 0x0a, 0x13, 0x55, + 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x53, 0x65, 0x76, 0x65, 0x72, 0x69, + 0x74, 0x79, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, + 0x0b, 0x0a, 0x07, 0x57, 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x02, 0x12, 0x0f, 0x0a, 0x0b, + 0x49, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x03, 0x12, 0x08, 0x0a, + 0x04, 0x48, 0x69, 0x6e, 0x74, 0x10, 0x04, 0x2a, 0x4e, 0x0a, 0x0d, 0x44, 0x69, 0x61, 0x67, 0x6e, + 0x6f, 0x73, 0x74, 0x69, 0x63, 0x54, 0x61, 0x67, 0x12, 0x1c, 0x0a, 0x18, 0x55, 0x6e, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x44, 0x69, 0x61, 0x67, 0x6e, 0x6f, 0x73, 0x74, 0x69, + 0x63, 0x54, 0x61, 0x67, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x55, 0x6e, 0x6e, 0x65, 0x63, 0x65, + 0x73, 0x73, 0x61, 0x72, 0x79, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x65, 0x70, 0x72, 0x65, + 0x63, 0x61, 0x74, 0x65, 0x64, 0x10, 0x02, 0x2a, 0xe0, 0x08, 0x0a, 0x08, 0x4c, 0x61, 0x6e, 0x67, + 0x75, 0x61, 0x67, 0x65, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x6e, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x4c, 0x61, 0x6e, 0x67, 0x75, 0x61, 0x67, 0x65, 0x10, 0x00, 0x12, 0x08, 0x0a, + 0x04, 0x41, 0x42, 0x41, 0x50, 0x10, 0x3c, 0x12, 0x07, 0x0a, 0x03, 0x41, 0x50, 0x4c, 0x10, 0x31, + 0x12, 0x07, 0x0a, 0x03, 0x41, 0x64, 0x61, 0x10, 0x27, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x67, 0x64, + 0x61, 0x10, 0x2d, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x73, 0x63, 0x69, 0x69, 0x44, 0x6f, 0x63, 0x10, + 0x56, 0x12, 0x0c, 0x0a, 0x08, 0x41, 0x73, 0x73, 0x65, 0x6d, 0x62, 0x6c, 0x79, 0x10, 0x3a, 0x12, + 0x07, 0x0a, 0x03, 0x41, 0x77, 0x6b, 0x10, 0x42, 0x12, 0x07, 0x0a, 0x03, 0x42, 0x61, 0x74, 0x10, + 0x44, 0x12, 0x0a, 0x0a, 0x06, 0x42, 0x69, 0x62, 0x54, 0x65, 0x58, 0x10, 0x51, 0x12, 0x05, 0x0a, + 0x01, 0x43, 0x10, 0x22, 0x12, 0x09, 0x0a, 0x05, 0x43, 0x4f, 0x42, 0x4f, 0x4c, 0x10, 0x3b, 0x12, + 0x07, 0x0a, 0x03, 0x43, 0x50, 0x50, 0x10, 0x23, 0x12, 0x07, 0x0a, 0x03, 0x43, 0x53, 0x53, 0x10, + 0x1a, 0x12, 0x0a, 0x0a, 0x06, 0x43, 0x53, 0x68, 0x61, 0x72, 0x70, 0x10, 0x01, 0x12, 0x0b, 0x0a, + 0x07, 0x43, 0x6c, 0x6f, 0x6a, 0x75, 0x72, 0x65, 0x10, 0x08, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x6f, + 0x66, 0x66, 0x65, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x10, 0x15, 0x12, 0x0e, 0x0a, 0x0a, + 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4c, 0x69, 0x73, 0x70, 0x10, 0x09, 0x12, 0x07, 0x0a, 0x03, + 0x43, 0x6f, 0x71, 0x10, 0x2f, 0x12, 0x08, 0x0a, 0x04, 0x44, 0x61, 0x72, 0x74, 0x10, 0x03, 0x12, + 0x0a, 0x0a, 0x06, 0x44, 0x65, 0x6c, 0x70, 0x68, 0x69, 0x10, 0x39, 0x12, 0x08, 0x0a, 0x04, 0x44, + 0x69, 0x66, 0x66, 0x10, 0x58, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x6f, 0x63, 0x6b, 0x65, 0x72, 0x66, + 0x69, 0x6c, 0x65, 0x10, 0x50, 0x12, 0x0a, 0x0a, 0x06, 0x44, 0x79, 0x61, 0x6c, 0x6f, 0x67, 0x10, + 0x32, 0x12, 0x0a, 0x0a, 0x06, 0x45, 0x6c, 0x69, 0x78, 0x69, 0x72, 0x10, 0x11, 0x12, 0x0a, 0x0a, + 0x06, 0x45, 0x72, 0x6c, 0x61, 0x6e, 0x67, 0x10, 0x12, 0x12, 0x0a, 0x0a, 0x06, 0x46, 0x53, 0x68, + 0x61, 0x72, 0x70, 0x10, 0x2a, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x69, 0x73, 0x68, 0x10, 0x41, 0x12, + 0x08, 0x0a, 0x04, 0x46, 0x6c, 0x6f, 0x77, 0x10, 0x18, 0x12, 0x0b, 0x0a, 0x07, 0x46, 0x6f, 0x72, + 0x74, 0x72, 0x61, 0x6e, 0x10, 0x38, 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x69, 0x74, 0x5f, 0x43, 0x6f, + 0x6d, 0x6d, 0x69, 0x74, 0x10, 0x5b, 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x69, 0x74, 0x5f, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x10, 0x59, 0x12, 0x0e, 0x0a, 0x0a, 0x47, 0x69, 0x74, 0x5f, 0x52, 0x65, + 0x62, 0x61, 0x73, 0x65, 0x10, 0x5c, 0x12, 0x06, 0x0a, 0x02, 0x47, 0x6f, 0x10, 0x21, 0x12, 0x0a, + 0x0a, 0x06, 0x47, 0x72, 0x6f, 0x6f, 0x76, 0x79, 0x10, 0x07, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x54, + 0x4d, 0x4c, 0x10, 0x1e, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x61, 0x63, 0x6b, 0x10, 0x14, 0x12, 0x0e, + 0x0a, 0x0a, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x62, 0x61, 0x72, 0x73, 0x10, 0x5a, 0x12, 0x0b, + 0x0a, 0x07, 0x48, 0x61, 0x73, 0x6b, 0x65, 0x6c, 0x6c, 0x10, 0x2c, 0x12, 0x09, 0x0a, 0x05, 0x49, + 0x64, 0x72, 0x69, 0x73, 0x10, 0x2e, 0x12, 0x07, 0x0a, 0x03, 0x49, 0x6e, 0x69, 0x10, 0x48, 0x12, + 0x05, 0x0a, 0x01, 0x4a, 0x10, 0x33, 0x12, 0x08, 0x0a, 0x04, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x4b, + 0x12, 0x08, 0x0a, 0x04, 0x4a, 0x61, 0x76, 0x61, 0x10, 0x06, 0x12, 0x0e, 0x0a, 0x0a, 0x4a, 0x61, + 0x76, 0x61, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x10, 0x16, 0x12, 0x13, 0x0a, 0x0f, 0x4a, 0x61, + 0x76, 0x61, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x61, 0x63, 0x74, 0x10, 0x5d, 0x12, + 0x0b, 0x0a, 0x07, 0x4a, 0x73, 0x6f, 0x6e, 0x6e, 0x65, 0x74, 0x10, 0x4c, 0x12, 0x09, 0x0a, 0x05, + 0x4a, 0x75, 0x6c, 0x69, 0x61, 0x10, 0x37, 0x12, 0x0a, 0x0a, 0x06, 0x4b, 0x6f, 0x74, 0x6c, 0x69, + 0x6e, 0x10, 0x04, 0x12, 0x09, 0x0a, 0x05, 0x4c, 0x61, 0x54, 0x65, 0x58, 0x10, 0x53, 0x12, 0x08, + 0x0a, 0x04, 0x4c, 0x65, 0x61, 0x6e, 0x10, 0x30, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x65, 0x73, 0x73, + 0x10, 0x1b, 0x12, 0x07, 0x0a, 0x03, 0x4c, 0x75, 0x61, 0x10, 0x0c, 0x12, 0x0c, 0x0a, 0x08, 0x4d, + 0x61, 0x6b, 0x65, 0x66, 0x69, 0x6c, 0x65, 0x10, 0x4f, 0x12, 0x0c, 0x0a, 0x08, 0x4d, 0x61, 0x72, + 0x6b, 0x64, 0x6f, 0x77, 0x6e, 0x10, 0x54, 0x12, 0x0a, 0x0a, 0x06, 0x4d, 0x61, 0x74, 0x6c, 0x61, + 0x62, 0x10, 0x34, 0x12, 0x07, 0x0a, 0x03, 0x4e, 0x69, 0x78, 0x10, 0x4d, 0x12, 0x09, 0x0a, 0x05, + 0x4f, 0x43, 0x61, 0x6d, 0x6c, 0x10, 0x29, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x69, 0x76, 0x65, 0x5f, 0x43, 0x10, 0x24, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x43, 0x50, 0x50, 0x10, 0x25, 0x12, 0x07, 0x0a, 0x03, 0x50, + 0x48, 0x50, 0x10, 0x13, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x4c, 0x53, 0x51, 0x4c, 0x10, 0x46, 0x12, + 0x08, 0x0a, 0x04, 0x50, 0x65, 0x72, 0x6c, 0x10, 0x0d, 0x12, 0x0e, 0x0a, 0x0a, 0x50, 0x6f, 0x77, + 0x65, 0x72, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x10, 0x43, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x72, 0x6f, + 0x6c, 0x6f, 0x67, 0x10, 0x47, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x79, 0x74, 0x68, 0x6f, 0x6e, 0x10, + 0x0f, 0x12, 0x05, 0x0a, 0x01, 0x52, 0x10, 0x36, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x61, 0x63, 0x6b, + 0x65, 0x74, 0x10, 0x0b, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x61, 0x6b, 0x75, 0x10, 0x0e, 0x12, 0x09, + 0x0a, 0x05, 0x52, 0x61, 0x7a, 0x6f, 0x72, 0x10, 0x3e, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x65, 0x53, + 0x54, 0x10, 0x55, 0x12, 0x08, 0x0a, 0x04, 0x52, 0x75, 0x62, 0x79, 0x10, 0x10, 0x12, 0x08, 0x0a, + 0x04, 0x52, 0x75, 0x73, 0x74, 0x10, 0x28, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x41, 0x53, 0x10, 0x3d, + 0x12, 0x08, 0x0a, 0x04, 0x53, 0x43, 0x53, 0x53, 0x10, 0x1d, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x4d, + 0x4c, 0x10, 0x2b, 0x12, 0x07, 0x0a, 0x03, 0x53, 0x51, 0x4c, 0x10, 0x45, 0x12, 0x08, 0x0a, 0x04, + 0x53, 0x61, 0x73, 0x73, 0x10, 0x1c, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x10, + 0x05, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x65, 0x10, 0x0a, 0x12, 0x0f, 0x0a, + 0x0b, 0x53, 0x68, 0x65, 0x6c, 0x6c, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x10, 0x40, 0x12, 0x0b, + 0x0a, 0x07, 0x53, 0x6b, 0x79, 0x6c, 0x61, 0x72, 0x6b, 0x10, 0x4e, 0x12, 0x09, 0x0a, 0x05, 0x53, + 0x77, 0x69, 0x66, 0x74, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x54, 0x4f, 0x4d, 0x4c, 0x10, 0x49, + 0x12, 0x07, 0x0a, 0x03, 0x54, 0x65, 0x58, 0x10, 0x52, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x79, 0x70, + 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x10, 0x17, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x79, 0x70, + 0x65, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x61, 0x63, 0x74, 0x10, 0x5e, 0x12, 0x0f, + 0x0a, 0x0b, 0x56, 0x69, 0x73, 0x75, 0x61, 0x6c, 0x42, 0x61, 0x73, 0x69, 0x63, 0x10, 0x3f, 0x12, + 0x07, 0x0a, 0x03, 0x56, 0x75, 0x65, 0x10, 0x19, 0x12, 0x0b, 0x0a, 0x07, 0x57, 0x6f, 0x6c, 0x66, + 0x72, 0x61, 0x6d, 0x10, 0x35, 0x12, 0x07, 0x0a, 0x03, 0x58, 0x4d, 0x4c, 0x10, 0x1f, 0x12, 0x07, + 0x0a, 0x03, 0x58, 0x53, 0x4c, 0x10, 0x20, 0x12, 0x08, 0x0a, 0x04, 0x59, 0x41, 0x4d, 0x4c, 0x10, + 0x4a, 0x12, 0x07, 0x0a, 0x03, 0x5a, 0x69, 0x67, 0x10, 0x26, 0x42, 0x2f, 0x5a, 0x2d, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x67, + 0x72, 0x61, 0x70, 0x68, 0x2f, 0x73, 0x63, 0x69, 0x70, 0x2f, 0x62, 0x69, 0x6e, 0x64, 0x69, 0x6e, + 0x67, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x73, 0x63, 0x69, 0x70, 0x2f, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( diff --git a/bindings/rust/src/generated/scip.rs b/bindings/rust/src/generated/scip.rs index 61bbacb0..380a075a 100644 --- a/bindings/rust/src/generated/scip.rs +++ b/bindings/rust/src/generated/scip.rs @@ -1390,7 +1390,7 @@ pub struct SymbolInformation { pub symbol: ::std::string::String, /// (optional, but strongly recommended) The markdown-formatted documentation /// for this symbol. This field is repeated to allow different kinds of - /// documentation. For example, it's nice to include both the signature of a + /// documentation. For example, it's nice to include both the signature of a /// method (parameters and return type) along with the accompanying docstring. // @@protoc_insertion_point(field:scip.SymbolInformation.documentation) pub documentation: ::std::vec::Vec<::std::string::String>, @@ -1560,7 +1560,7 @@ pub struct Relationship { /// In the TypeScript example above, observe that `Dog#` has an /// `is_implementation` relationship with `"Animal#"` but not `is_reference`. /// This is because "Find references" on the "Animal#" symbol should not return - /// "Dog#". We only want "Dog#" to return as a result for "Find + /// "Dog#". We only want "Dog#" to return as a result for "Find /// implementations" on the "Animal#" symbol. // @@protoc_insertion_point(field:scip.Relationship.is_implementation) pub is_implementation: bool, @@ -1789,7 +1789,7 @@ pub struct Occurrence { /// type with `start` and `end` fields of type `Position`, mirroring LSP. /// Benchmarks revealed that this encoding was inefficient and that we could /// reduce the total payload size of an index by 50% by using `repeated int32` - /// instead. The `repeated int32` encoding is admittedly more embarrassing to + /// instead. The `repeated int32` encoding is admittedly more embarrassing to /// work with in some programming languages but we hope the performance /// improvements make up for it. // @@protoc_insertion_point(field:scip.Occurrence.range) @@ -1818,6 +1818,8 @@ pub struct Occurrence { /// (optional) Diagnostics that have been reported for this specific range. // @@protoc_insertion_point(field:scip.Occurrence.diagnostics) pub diagnostics: ::std::vec::Vec, + // @@protoc_insertion_point(field:scip.Occurrence.enclosing_range) + pub enclosing_range: ::std::vec::Vec, // special fields // @@protoc_insertion_point(special_field:scip.Occurrence.special_fields) pub special_fields: ::protobuf::SpecialFields, @@ -1835,7 +1837,7 @@ impl Occurrence { } fn generated_message_descriptor_data() -> ::protobuf::reflect::GeneratedMessageDescriptorData { - let mut fields = ::std::vec::Vec::with_capacity(6); + let mut fields = ::std::vec::Vec::with_capacity(7); let mut oneofs = ::std::vec::Vec::with_capacity(0); fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>( "range", @@ -1867,6 +1869,11 @@ impl Occurrence { |m: &Occurrence| { &m.diagnostics }, |m: &mut Occurrence| { &mut m.diagnostics }, )); + fields.push(::protobuf::reflect::rt::v2::make_vec_simpler_accessor::<_, _>( + "enclosing_range", + |m: &Occurrence| { &m.enclosing_range }, + |m: &mut Occurrence| { &mut m.enclosing_range }, + )); ::protobuf::reflect::GeneratedMessageDescriptorData::new_2::( "Occurrence", fields, @@ -1906,6 +1913,12 @@ impl ::protobuf::Message for Occurrence { 50 => { self.diagnostics.push(is.read_message()?); }, + 58 => { + is.read_repeated_packed_int32_into(&mut self.enclosing_range)?; + }, + 56 => { + self.enclosing_range.push(is.read_int32()?); + }, tag => { ::protobuf::rt::read_unknown_or_skip_group(tag, is, self.special_fields.mut_unknown_fields())?; }, @@ -1937,6 +1950,9 @@ impl ::protobuf::Message for Occurrence { let len = value.compute_size(); my_size += 1 + ::protobuf::rt::compute_raw_varint64_size(len) + len; }; + for value in &self.enclosing_range { + my_size += ::protobuf::rt::int32_size(7, *value); + }; my_size += ::protobuf::rt::unknown_fields_size(self.special_fields.unknown_fields()); self.special_fields.cached_size().set(my_size as u32); my_size @@ -1961,6 +1977,9 @@ impl ::protobuf::Message for Occurrence { for v in &self.diagnostics { ::protobuf::rt::write_message_field_with_cached_size(6, v, os)?; }; + for v in &self.enclosing_range { + os.write_int32(7, *v)?; + }; os.write_unknown_fields(self.special_fields.unknown_fields())?; ::std::result::Result::Ok(()) } @@ -1984,6 +2003,7 @@ impl ::protobuf::Message for Occurrence { self.override_documentation.clear(); self.syntax_kind = ::protobuf::EnumOrUnknown::new(SyntaxKind::UnspecifiedSyntaxKind); self.diagnostics.clear(); + self.enclosing_range.clear(); self.special_fields.clear(); } @@ -1995,6 +2015,7 @@ impl ::protobuf::Message for Occurrence { override_documentation: ::std::vec::Vec::new(), syntax_kind: ::protobuf::EnumOrUnknown::from_i32(0), diagnostics: ::std::vec::Vec::new(), + enclosing_range: ::std::vec::Vec::new(), special_fields: ::protobuf::SpecialFields::new(), }; &instance @@ -2330,7 +2351,7 @@ impl TextEncoding { } } -/// SymbolRole declares what "role" a symbol has in an occurrence. A role is +/// SymbolRole declares what "role" a symbol has in an occurrence. A role is /// encoded as a bitset where each bit represents a different role. For example, /// to determine if the `Import` role is set, test whether the second bit of the /// enum value is defined. In pseudocode, this can be implemented with the @@ -3394,18 +3415,19 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x18\x02\x20\x01(\x08R\x0bisReference\x12+\n\x11is_implementation\x18\ \x03\x20\x01(\x08R\x10isImplementation\x12,\n\x12is_type_definition\x18\ \x04\x20\x01(\x08R\x10isTypeDefinition\x12#\n\ris_definition\x18\x05\x20\ - \x01(\x08R\x0cisDefinition\"\xfb\x01\n\nOccurrence\x12\x14\n\x05range\ + \x01(\x08R\x0cisDefinition\"\xa4\x02\n\nOccurrence\x12\x14\n\x05range\ \x18\x01\x20\x03(\x05R\x05range\x12\x16\n\x06symbol\x18\x02\x20\x01(\tR\ \x06symbol\x12!\n\x0csymbol_roles\x18\x03\x20\x01(\x05R\x0bsymbolRoles\ \x125\n\x16override_documentation\x18\x04\x20\x03(\tR\x15overrideDocumen\ tation\x121\n\x0bsyntax_kind\x18\x05\x20\x01(\x0e2\x10.scip.SyntaxKindR\ \nsyntaxKind\x122\n\x0bdiagnostics\x18\x06\x20\x03(\x0b2\x10.scip.Diagno\ - sticR\x0bdiagnostics\"\xa7\x01\n\nDiagnostic\x12*\n\x08severity\x18\x01\ - \x20\x01(\x0e2\x0e.scip.SeverityR\x08severity\x12\x12\n\x04code\x18\x02\ - \x20\x01(\tR\x04code\x12\x18\n\x07message\x18\x03\x20\x01(\tR\x07message\ - \x12\x16\n\x06source\x18\x04\x20\x01(\tR\x06source\x12'\n\x04tags\x18\ - \x05\x20\x03(\x0e2\x13.scip.DiagnosticTagR\x04tags*1\n\x0fProtocolVersio\ - n\x12\x1e\n\x1aUnspecifiedProtocolVersion\x10\0*@\n\x0cTextEncoding\x12\ + sticR\x0bdiagnostics\x12'\n\x0fenclosing_range\x18\x07\x20\x03(\x05R\x0e\ + enclosingRange\"\xa7\x01\n\nDiagnostic\x12*\n\x08severity\x18\x01\x20\ + \x01(\x0e2\x0e.scip.SeverityR\x08severity\x12\x12\n\x04code\x18\x02\x20\ + \x01(\tR\x04code\x12\x18\n\x07message\x18\x03\x20\x01(\tR\x07message\x12\ + \x16\n\x06source\x18\x04\x20\x01(\tR\x06source\x12'\n\x04tags\x18\x05\ + \x20\x03(\x0e2\x13.scip.DiagnosticTagR\x04tags*1\n\x0fProtocolVersion\ + \x12\x1e\n\x1aUnspecifiedProtocolVersion\x10\0*@\n\x0cTextEncoding\x12\ \x1b\n\x17UnspecifiedTextEncoding\x10\0\x12\x08\n\x04UTF8\x10\x01\x12\t\ \n\x05UTF16\x10\x02*}\n\nSymbolRole\x12\x19\n\x15UnspecifiedSymbolRole\ \x10\0\x12\x0e\n\nDefinition\x10\x01\x12\n\n\x06Import\x10\x02\x12\x0f\n\ @@ -3469,8 +3491,8 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \nTypeScript\x10\x17\x12\x13\n\x0fTypeScriptReact\x10^\x12\x0f\n\x0bVisu\ alBasic\x10?\x12\x07\n\x03Vue\x10\x19\x12\x0b\n\x07Wolfram\x105\x12\x07\ \n\x03XML\x10\x1f\x12\x07\n\x03XSL\x10\x20\x12\x08\n\x04YAML\x10J\x12\ - \x07\n\x03Zig\x10&B/Z-github.com/sourcegraph/scip/bindings/go/scip/J\xab\ - \xc1\x01\n\x07\x12\x05\n\0\xa3\x04\x01\n\x82\x04\n\x01\x0c\x12\x03\n\0\ + \x07\n\x03Zig\x10&B/Z-github.com/sourcegraph/scip/bindings/go/scip/J\xe6\ + \xcd\x01\n\x07\x12\x05\n\0\xcb\x04\x01\n\x82\x04\n\x01\x0c\x12\x03\n\0\ \x122\xf7\x03\x20An\x20index\x20contains\x20one\x20or\x20more\x20pieces\ \x20of\x20information\x20about\x20a\x20given\x20piece\x20of\n\x20source\ \x20code\x20or\x20software\x20artifact.\x20Complementary\x20information\ @@ -3719,361 +3741,404 @@ static file_descriptor_proto_data: &'static [u8] = b"\ \x20formatted\x20according\x20to\x20the\x20grammar\x20in\x20`Symbol`.\n\ \n\r\n\x05\x04\x07\x02\0\x05\x12\x04\xb2\x01\x02\x08\n\r\n\x05\x04\x07\ \x02\0\x01\x12\x04\xb2\x01\t\x0f\n\r\n\x05\x04\x07\x02\0\x03\x12\x04\xb2\ - \x01\x12\x13\n\xb6\x02\n\x04\x04\x07\x02\x01\x12\x04\xb7\x01\x02$\x1a\ - \xa7\x02\x20(optional,\x20but\x20strongly\x20recommended)\x20The\x20mark\ + \x01\x12\x13\n\xb5\x02\n\x04\x04\x07\x02\x01\x12\x04\xb7\x01\x02$\x1a\ + \xa6\x02\x20(optional,\x20but\x20strongly\x20recommended)\x20The\x20mark\ down-formatted\x20documentation\n\x20for\x20this\x20symbol.\x20This\x20f\ ield\x20is\x20repeated\x20to\x20allow\x20different\x20kinds\x20of\n\x20d\ - ocumentation.\x20\x20For\x20example,\x20it's\x20nice\x20to\x20include\ - \x20both\x20the\x20signature\x20of\x20a\n\x20method\x20(parameters\x20an\ - d\x20return\x20type)\x20along\x20with\x20the\x20accompanying\x20docstrin\ - g.\n\n\r\n\x05\x04\x07\x02\x01\x04\x12\x04\xb7\x01\x02\n\n\r\n\x05\x04\ - \x07\x02\x01\x05\x12\x04\xb7\x01\x0b\x11\n\r\n\x05\x04\x07\x02\x01\x01\ - \x12\x04\xb7\x01\x12\x1f\n\r\n\x05\x04\x07\x02\x01\x03\x12\x04\xb7\x01\"\ - #\n^\n\x04\x04\x07\x02\x02\x12\x04\xb9\x01\x02*\x1aP\x20(optional)\x20Re\ - lationships\x20to\x20other\x20symbols\x20(e.g.,\x20implements,\x20type\ - \x20definition).\n\n\r\n\x05\x04\x07\x02\x02\x04\x12\x04\xb9\x01\x02\n\n\ - \r\n\x05\x04\x07\x02\x02\x06\x12\x04\xb9\x01\x0b\x17\n\r\n\x05\x04\x07\ - \x02\x02\x01\x12\x04\xb9\x01\x18%\n\r\n\x05\x04\x07\x02\x02\x03\x12\x04\ - \xb9\x01()\n\x0c\n\x02\x04\x08\x12\x06\xbc\x01\0\xf4\x01\x01\n\x0b\n\x03\ - \x04\x08\x01\x12\x04\xbc\x01\x08\x14\n\x0c\n\x04\x04\x08\x02\0\x12\x04\ - \xbd\x01\x02\x14\n\r\n\x05\x04\x08\x02\0\x05\x12\x04\xbd\x01\x02\x08\n\r\ - \n\x05\x04\x08\x02\0\x01\x12\x04\xbd\x01\t\x0f\n\r\n\x05\x04\x08\x02\0\ - \x03\x12\x04\xbd\x01\x12\x13\n\xde\x08\n\x04\x04\x08\x02\x01\x12\x04\xd6\ - \x01\x02\x18\x1a\xcf\x08\x20When\x20resolving\x20\"Find\x20references\",\ - \x20this\x20field\x20documents\x20what\x20other\x20symbols\n\x20should\ - \x20be\x20included\x20together\x20with\x20this\x20symbol.\x20For\x20exam\ - ple,\x20consider\x20the\n\x20following\x20TypeScript\x20code\x20that\x20\ - defines\x20two\x20symbols\x20`Animal#sound()`\x20and\n\x20`Dog#sound()`:\ - \n\x20```ts\n\x20interface\x20Animal\x20{\n\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20^^^^^^\x20definition\x20Animal#\n\x20\x20\x20sound():\ - \x20string\n\x20\x20\x20^^^^^\x20definition\x20Animal#sound()\n\x20}\n\ - \x20class\x20Dog\x20implements\x20Animal\x20{\n\x20\x20\x20\x20\x20\x20\ - \x20^^^\x20definition\x20Dog#,\x20relationships\x20=\x20[{symbol:\x20\"A\ - nimal#\",\x20is_implementation:\x20true}]\n\x20\x20\x20public\x20sound()\ - :\x20string\x20{\x20return\x20\"woof\"\x20}\n\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20^^^^^\x20definition\x20Dog#sound(),\x20references_symbol\ - s\x20=\x20Animal#sound(),\x20relationships\x20=\x20[{symbol:\x20\"Animal\ - #sound()\",\x20is_implementation:true,\x20is_reference:\x20true}]\n\x20}\ - \n\x20const\x20animal:\x20Animal\x20=\x20new\x20Dog()\n\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^^^^^^\x20reference\x20Anima\ - l#\n\x20console.log(animal.sound())\n\x20\x20\x20\x20\x20\x20\x20\x20\ - \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^^^^^\x20reference\x20An\ - imal#sound()\n\x20```\n\x20Doing\x20\"Find\x20references\"\x20on\x20the\ - \x20symbol\x20`Animal#sound()`\x20should\x20return\n\x20references\x20to\ - \x20the\x20`Dog#sound()`\x20method\x20as\x20well.\x20Vice-versa,\x20doin\ - g\x20\"Find\n\x20references\"\x20on\x20the\x20`Dog#sound()`\x20method\ - \x20should\x20include\x20references\x20to\x20the\n\x20`Animal#sound()`\ - \x20method\x20as\x20well.\n\n\r\n\x05\x04\x08\x02\x01\x05\x12\x04\xd6\ - \x01\x02\x06\n\r\n\x05\x04\x08\x02\x01\x01\x12\x04\xd6\x01\x07\x13\n\r\n\ - \x05\x04\x08\x02\x01\x03\x12\x04\xd6\x01\x16\x17\n\xef\x03\n\x04\x04\x08\ - \x02\x02\x12\x04\xdf\x01\x02\x1d\x1a\xe0\x03\x20Similar\x20to\x20`is_ref\ - erence`\x20but\x20for\x20\"Find\x20implementations\".\n\x20It's\x20commo\ - n\x20for\x20`is_implementation`\x20and\x20`is_reference`\x20to\x20both\ - \x20be\x20true\x20but\n\x20it's\x20not\x20always\x20the\x20case.\n\x20In\ - \x20the\x20TypeScript\x20example\x20above,\x20observe\x20that\x20`Dog#`\ - \x20has\x20an\n\x20`is_implementation`\x20relationship\x20with\x20`\"Ani\ - mal#\"`\x20but\x20not\x20`is_reference`.\n\x20This\x20is\x20because\x20\ - \"Find\x20references\"\x20on\x20the\x20\"Animal#\"\x20symbol\x20should\ - \x20not\x20return\n\x20\"Dog#\".\x20\x20We\x20only\x20want\x20\"Dog#\"\ - \x20to\x20return\x20as\x20a\x20result\x20for\x20\"Find\n\x20implementati\ - ons\"\x20on\x20the\x20\"Animal#\"\x20symbol.\n\n\r\n\x05\x04\x08\x02\x02\ - \x05\x12\x04\xdf\x01\x02\x06\n\r\n\x05\x04\x08\x02\x02\x01\x12\x04\xdf\ - \x01\x07\x18\n\r\n\x05\x04\x08\x02\x02\x03\x12\x04\xdf\x01\x1b\x1c\nP\n\ - \x04\x04\x08\x02\x03\x12\x04\xe1\x01\x02\x1e\x1aB\x20Similar\x20to\x20`r\ - eferences_symbols`\x20but\x20for\x20\"Go\x20to\x20type\x20definition\".\ - \n\n\r\n\x05\x04\x08\x02\x03\x05\x12\x04\xe1\x01\x02\x06\n\r\n\x05\x04\ - \x08\x02\x03\x01\x12\x04\xe1\x01\x07\x19\n\r\n\x05\x04\x08\x02\x03\x03\ - \x12\x04\xe1\x01\x1c\x1d\n\xa7\x07\n\x04\x04\x08\x02\x04\x12\x04\xf2\x01\ - \x02\x19\x1a\xd5\x06\x20Allows\x20overriding\x20the\x20behavior\x20of\ - \x20\"Go\x20to\x20definition\"\x20and\x20\"Find\x20references\"\n\x20for\ - \x20symbols\x20which\x20do\x20not\x20have\x20a\x20definition\x20of\x20th\ - eir\x20own\x20or\x20could\n\x20potentially\x20have\x20multiple\x20defini\ - tions.\n\n\x20For\x20example,\x20in\x20a\x20language\x20with\x20single\ - \x20inheritance\x20and\x20no\x20field\x20overriding,\n\x20inherited\x20f\ - ields\x20can\x20reuse\x20the\x20same\x20symbol\x20as\x20the\x20ancestor\ - \x20which\x20declares\n\x20the\x20field.\x20In\x20such\x20a\x20situation\ - ,\x20is_definition\x20is\x20not\x20needed.\n\n\x20On\x20the\x20other\x20\ - hand,\x20in\x20languages\x20with\x20single\x20inheritance\x20and\x20some\ - \x20form\n\x20of\x20mixins,\x20you\x20can\x20use\x20is_definition\x20to\ - \x20relate\x20the\x20symbol\x20to\x20the\n\x20matching\x20symbol\x20in\ - \x20ancestor\x20classes,\x20and\x20is_reference\x20to\x20relate\x20the\n\ - \x20symbol\x20to\x20the\x20matching\x20symbol\x20in\x20mixins.\n\n\x20NO\ - TE:\x20At\x20the\x20moment,\x20due\x20to\x20limitations\x20of\x20the\x20\ - SCIP\x20to\x20LSIF\x20conversion,\n\x20only\x20global\x20symbols\x20in\ - \x20an\x20index\x20are\x20allowed\x20to\x20use\x20is_definition.\n\x20Th\ - e\x20relationship\x20may\x20not\x20get\x20recorded\x20if\x20either\x20sy\ - mbol\x20is\x20local.\n\"A\x20Update\x20registerInverseRelationships\x20o\ - n\x20adding\x20a\x20new\x20field\x20here.\n\n\r\n\x05\x04\x08\x02\x04\ - \x05\x12\x04\xf2\x01\x02\x06\n\r\n\x05\x04\x08\x02\x04\x01\x12\x04\xf2\ - \x01\x07\x14\n\r\n\x05\x04\x08\x02\x04\x03\x12\x04\xf2\x01\x17\x18\n\x89\ - \x03\n\x02\x05\x02\x12\x06\xfb\x01\0\x8b\x02\x01\x1a\xfa\x02\x20SymbolRo\ - le\x20declares\x20what\x20\"role\"\x20a\x20symbol\x20has\x20in\x20an\x20\ - occurrence.\x20\x20A\x20role\x20is\n\x20encoded\x20as\x20a\x20bitset\x20\ - where\x20each\x20bit\x20represents\x20a\x20different\x20role.\x20For\x20\ - example,\n\x20to\x20determine\x20if\x20the\x20`Import`\x20role\x20is\x20\ - set,\x20test\x20whether\x20the\x20second\x20bit\x20of\x20the\n\x20enum\ - \x20value\x20is\x20defined.\x20In\x20pseudocode,\x20this\x20can\x20be\ - \x20implemented\x20with\x20the\n\x20logic:\x20`const\x20isImportRole\x20\ - =\x20(role.value\x20&\x20SymbolRole.Import.value)\x20>\x200`.\n\n\x0b\n\ - \x03\x05\x02\x01\x12\x04\xfb\x01\x05\x0f\nv\n\x04\x05\x02\x02\0\x12\x04\ - \xfe\x01\x02\x1c\x1ah\x20This\x20case\x20is\x20not\x20meant\x20to\x20be\ - \x20used;\x20it\x20only\x20exists\x20to\x20avoid\x20an\x20error\n\x20fro\ - m\x20the\x20Protobuf\x20code\x20generator.\n\n\r\n\x05\x05\x02\x02\0\x01\ - \x12\x04\xfe\x01\x02\x17\n\r\n\x05\x05\x02\x02\0\x02\x12\x04\xfe\x01\x1a\ - \x1b\nT\n\x04\x05\x02\x02\x01\x12\x04\x80\x02\x02\x13\x1aF\x20Is\x20the\ - \x20symbol\x20defined\x20here?\x20If\x20not,\x20then\x20this\x20is\x20a\ - \x20symbol\x20reference.\n\n\r\n\x05\x05\x02\x02\x01\x01\x12\x04\x80\x02\ - \x02\x0c\n\r\n\x05\x05\x02\x02\x01\x02\x12\x04\x80\x02\x0f\x12\n,\n\x04\ - \x05\x02\x02\x02\x12\x04\x82\x02\x02\x0f\x1a\x1e\x20Is\x20the\x20symbol\ - \x20imported\x20here?\n\n\r\n\x05\x05\x02\x02\x02\x01\x12\x04\x82\x02\ - \x02\x08\n\r\n\x05\x05\x02\x02\x02\x02\x12\x04\x82\x02\x0b\x0e\n+\n\x04\ - \x05\x02\x02\x03\x12\x04\x84\x02\x02\x14\x1a\x1d\x20Is\x20the\x20symbol\ - \x20written\x20here?\n\n\r\n\x05\x05\x02\x02\x03\x01\x12\x04\x84\x02\x02\ - \r\n\r\n\x05\x05\x02\x02\x03\x02\x12\x04\x84\x02\x10\x13\n(\n\x04\x05\ - \x02\x02\x04\x12\x04\x86\x02\x02\x13\x1a\x1a\x20Is\x20the\x20symbol\x20r\ - ead\x20here?\n\n\r\n\x05\x05\x02\x02\x04\x01\x12\x04\x86\x02\x02\x0c\n\r\ - \n\x05\x05\x02\x02\x04\x02\x12\x04\x86\x02\x0f\x12\n0\n\x04\x05\x02\x02\ - \x05\x12\x04\x88\x02\x02\x13\x1a\"\x20Is\x20the\x20symbol\x20in\x20gener\ - ated\x20code?\n\n\r\n\x05\x05\x02\x02\x05\x01\x12\x04\x88\x02\x02\x0b\n\ - \r\n\x05\x05\x02\x02\x05\x02\x12\x04\x88\x02\x0e\x12\n+\n\x04\x05\x02\ - \x02\x06\x12\x04\x8a\x02\x02\x0e\x1a\x1d\x20Is\x20the\x20symbol\x20in\ - \x20test\x20code?\n\n\r\n\x05\x05\x02\x02\x06\x01\x12\x04\x8a\x02\x02\ - \x06\n\r\n\x05\x05\x02\x02\x06\x02\x12\x04\x8a\x02\t\r\n\x0c\n\x02\x05\ - \x03\x12\x06\x8d\x02\0\xea\x02\x01\n\x0b\n\x03\x05\x03\x01\x12\x04\x8d\ - \x02\x05\x0f\n\x0b\n\x03\x05\x03\x03\x12\x04\x8e\x02\x02\x1c\n\x0c\n\x04\ - \x05\x03\x03\x02\x12\x04\x8e\x02\x02\x1c\n\x0c\n\x04\x05\x03\x02\0\x12\ - \x04\x90\x02\x02\x1c\n\r\n\x05\x05\x03\x02\0\x01\x12\x04\x90\x02\x02\x17\ - \n\r\n\x05\x05\x03\x02\0\x02\x12\x04\x90\x02\x1a\x1b\n;\n\x04\x05\x03\ - \x02\x01\x12\x04\x93\x02\x02\x0e\x1a-\x20Comment,\x20including\x20commen\ - t\x20markers\x20and\x20text\n\n\r\n\x05\x05\x03\x02\x01\x01\x12\x04\x93\ - \x02\x02\t\n\r\n\x05\x05\x03\x02\x01\x02\x12\x04\x93\x02\x0c\r\n\x1b\n\ - \x04\x05\x03\x02\x02\x12\x04\x96\x02\x02\x1b\x1a\r\x20`;`\x20`.`\x20`,`\ - \n\n\r\n\x05\x05\x03\x02\x02\x01\x12\x04\x96\x02\x02\x16\n\r\n\x05\x05\ - \x03\x02\x02\x02\x12\x04\x96\x02\x19\x1a\n2\n\x04\x05\x03\x02\x03\x12\ - \x04\x98\x02\x02\x19\x1a$\x20(),\x20{},\x20[]\x20when\x20used\x20syntact\ - ically\n\n\r\n\x05\x05\x03\x02\x03\x01\x12\x04\x98\x02\x02\x14\n\r\n\x05\ - \x05\x03\x02\x03\x02\x12\x04\x98\x02\x17\x18\n5\n\x04\x05\x03\x02\x04\ - \x12\x04\x9b\x02\x02\x0e\x1a'\x20`if`,\x20`else`,\x20`return`,\x20`class\ - `,\x20etc.\n\n\r\n\x05\x05\x03\x02\x04\x01\x12\x04\x9b\x02\x02\t\n\r\n\ - \x05\x05\x03\x02\x04\x02\x12\x04\x9b\x02\x0c\r\n\x0c\n\x04\x05\x03\x02\ - \x05\x12\x04\x9c\x02\x02*\n\r\n\x05\x05\x03\x02\x05\x01\x12\x04\x9c\x02\ - \x02\x13\n\r\n\x05\x05\x03\x02\x05\x02\x12\x04\x9c\x02\x16\x17\n\r\n\x05\ - \x05\x03\x02\x05\x03\x12\x04\x9c\x02\x18)\n\x0e\n\x06\x05\x03\x02\x05\ - \x03\x01\x12\x04\x9c\x02\x19(\n\x1e\n\x04\x05\x03\x02\x06\x12\x04\x9f\ - \x02\x02\x19\x1a\x10\x20`+`,\x20`*`,\x20etc.\n\n\r\n\x05\x05\x03\x02\x06\ - \x01\x12\x04\x9f\x02\x02\x14\n\r\n\x05\x05\x03\x02\x06\x02\x12\x04\x9f\ - \x02\x17\x18\nX\n\x04\x05\x03\x02\x07\x12\x04\xa2\x02\x02\x11\x1aJ\x20no\ - n-specific\x20catch-all\x20for\x20any\x20identifier\x20not\x20better\x20\ - described\x20elsewhere\n\n\r\n\x05\x05\x03\x02\x07\x01\x12\x04\xa2\x02\ - \x02\x0c\n\r\n\x05\x05\x03\x02\x07\x02\x12\x04\xa2\x02\x0f\x10\nN\n\x04\ - \x05\x03\x02\x08\x12\x04\xa4\x02\x02\x18\x1a@\x20Identifiers\x20builtin\ - \x20to\x20the\x20language:\x20`min`,\x20`print`\x20in\x20Python.\n\n\r\n\ - \x05\x05\x03\x02\x08\x01\x12\x04\xa4\x02\x02\x13\n\r\n\x05\x05\x03\x02\ - \x08\x02\x12\x04\xa4\x02\x16\x17\n[\n\x04\x05\x03\x02\t\x12\x04\xa6\x02\ - \x02\x15\x1aM\x20Identifiers\x20representing\x20`null`-like\x20values:\ - \x20`None`\x20in\x20Python,\x20`nil`\x20in\x20Go.\n\n\r\n\x05\x05\x03\ - \x02\t\x01\x12\x04\xa6\x02\x02\x10\n\r\n\x05\x05\x03\x02\t\x02\x12\x04\ - \xa6\x02\x13\x14\n.\n\x04\x05\x03\x02\n\x12\x04\xa8\x02\x02\x19\x1a\x20\ - \x20`xyz`\x20in\x20`const\x20xyz\x20=\x20\"hello\"`\n\n\r\n\x05\x05\x03\ - \x02\n\x01\x12\x04\xa8\x02\x02\x14\n\r\n\x05\x05\x03\x02\n\x02\x12\x04\ - \xa8\x02\x17\x18\n'\n\x04\x05\x03\x02\x0b\x12\x04\xaa\x02\x02\x1f\x1a\ - \x19\x20`var\x20X\x20=\x20\"hello\"`\x20in\x20Go\n\n\r\n\x05\x05\x03\x02\ - \x0b\x01\x12\x04\xaa\x02\x02\x19\n\r\n\x05\x05\x03\x02\x0b\x02\x12\x04\ - \xaa\x02\x1c\x1e\n3\n\x04\x05\x03\x02\x0c\x12\x04\xac\x02\x02\x1b\x1a%\ - \x20Parameter\x20definition\x20and\x20references\n\n\r\n\x05\x05\x03\x02\ - \x0c\x01\x12\x04\xac\x02\x02\x15\n\r\n\x05\x05\x03\x02\x0c\x02\x12\x04\ - \xac\x02\x18\x1a\nX\n\x04\x05\x03\x02\r\x12\x04\xae\x02\x02\x17\x1aJ\x20\ - Identifiers\x20for\x20variable\x20definitions\x20and\x20references\x20wi\ - thin\x20a\x20local\x20scope\n\n\r\n\x05\x05\x03\x02\r\x01\x12\x04\xae\ - \x02\x02\x11\n\r\n\x05\x05\x03\x02\r\x02\x12\x04\xae\x02\x14\x16\nK\n\ - \x04\x05\x03\x02\x0e\x12\x04\xb0\x02\x02\x1a\x1a=\x20Identifiers\x20that\ - \x20shadow\x20other\x20identifiers\x20in\x20an\x20outer\x20scope\n\n\r\n\ - \x05\x05\x03\x02\x0e\x01\x12\x04\xb0\x02\x02\x14\n\r\n\x05\x05\x03\x02\ - \x0e\x02\x12\x04\xb0\x02\x17\x19\n\xcd\x01\n\x04\x05\x03\x02\x0f\x12\x04\ - \xb5\x02\x02\x1b\x1a\xbe\x01\x20Identifier\x20representing\x20a\x20unit\ - \x20of\x20code\x20abstraction\x20and/or\x20namespacing.\n\n\x20NOTE:\x20\ - This\x20corresponds\x20to\x20a\x20package\x20in\x20Go\x20and\x20JVM\x20l\ - anguages,\n\x20and\x20a\x20module\x20in\x20languages\x20like\x20Python\ - \x20and\x20JavaScript.\n\n\r\n\x05\x05\x03\x02\x0f\x01\x12\x04\xb5\x02\ - \x02\x15\n\r\n\x05\x05\x03\x02\x0f\x02\x12\x04\xb5\x02\x18\x1a\n\x0c\n\ - \x04\x05\x03\x02\x10\x12\x04\xb6\x02\x02*\n\r\n\x05\x05\x03\x02\x10\x01\ - \x12\x04\xb6\x02\x02\x12\n\r\n\x05\x05\x03\x02\x10\x02\x12\x04\xb6\x02\ - \x15\x17\n\r\n\x05\x05\x03\x02\x10\x03\x12\x04\xb6\x02\x18)\n\x0e\n\x06\ - \x05\x03\x02\x10\x03\x01\x12\x04\xb6\x02\x19(\n4\n\x04\x05\x03\x02\x11\ - \x12\x04\xb9\x02\x02\x1a\x1a&\x20Function\x20references,\x20including\ - \x20calls\n\n\r\n\x05\x05\x03\x02\x11\x01\x12\x04\xb9\x02\x02\x14\n\r\n\ - \x05\x05\x03\x02\x11\x02\x12\x04\xb9\x02\x17\x19\n(\n\x04\x05\x03\x02\ - \x12\x12\x04\xbb\x02\x02$\x1a\x1a\x20Function\x20definition\x20only\n\n\ - \r\n\x05\x05\x03\x02\x12\x01\x12\x04\xbb\x02\x02\x1e\n\r\n\x05\x05\x03\ - \x02\x12\x02\x12\x04\xbb\x02!#\n7\n\x04\x05\x03\x02\x13\x12\x04\xbe\x02\ - \x02\x17\x1a)\x20Macro\x20references,\x20including\x20invocations\n\n\r\ - \n\x05\x05\x03\x02\x13\x01\x12\x04\xbe\x02\x02\x11\n\r\n\x05\x05\x03\x02\ - \x13\x02\x12\x04\xbe\x02\x14\x16\n%\n\x04\x05\x03\x02\x14\x12\x04\xc0\ - \x02\x02!\x1a\x17\x20Macro\x20definition\x20only\n\n\r\n\x05\x05\x03\x02\ - \x14\x01\x12\x04\xc0\x02\x02\x1b\n\r\n\x05\x05\x03\x02\x14\x02\x12\x04\ - \xc0\x02\x1e\x20\n!\n\x04\x05\x03\x02\x15\x12\x04\xc3\x02\x02\x16\x1a\ - \x13\x20non-builtin\x20types\n\n\r\n\x05\x05\x03\x02\x15\x01\x12\x04\xc3\ - \x02\x02\x10\n\r\n\x05\x05\x03\x02\x15\x02\x12\x04\xc3\x02\x13\x15\nK\n\ - \x04\x05\x03\x02\x16\x12\x04\xc5\x02\x02\x1d\x1a=\x20builtin\x20types\ - \x20only,\x20such\x20as\x20`str`\x20for\x20Python\x20or\x20`int`\x20in\ - \x20Go\n\n\r\n\x05\x05\x03\x02\x16\x01\x12\x04\xc5\x02\x02\x17\n\r\n\x05\ - \x05\x03\x02\x16\x02\x12\x04\xc5\x02\x1a\x1c\n7\n\x04\x05\x03\x02\x17\ - \x12\x04\xc8\x02\x02\x1b\x1a)\x20Python\x20decorators,\x20c-like\x20__at\ - tribute__\n\n\r\n\x05\x05\x03\x02\x17\x01\x12\x04\xc8\x02\x02\x15\n\r\n\ - \x05\x05\x03\x02\x17\x02\x12\x04\xc8\x02\x18\x1a\n\x14\n\x04\x05\x03\x02\ - \x18\x12\x04\xcb\x02\x02\x13\x1a\x06\x20`\\b`\n\n\r\n\x05\x05\x03\x02\ - \x18\x01\x12\x04\xcb\x02\x02\r\n\r\n\x05\x05\x03\x02\x18\x02\x12\x04\xcb\ - \x02\x10\x12\n\x18\n\x04\x05\x03\x02\x19\x12\x04\xcd\x02\x02\x15\x1a\n\ - \x20`*`,\x20`+`\n\n\r\n\x05\x05\x03\x02\x19\x01\x12\x04\xcd\x02\x02\x0f\ - \n\r\n\x05\x05\x03\x02\x19\x02\x12\x04\xcd\x02\x12\x14\n\x13\n\x04\x05\ - \x03\x02\x1a\x12\x04\xcf\x02\x02\x15\x1a\x05\x20`.`\n\n\r\n\x05\x05\x03\ - \x02\x1a\x01\x12\x04\xcf\x02\x02\x0f\n\r\n\x05\x05\x03\x02\x1a\x02\x12\ - \x04\xcf\x02\x12\x14\n\"\n\x04\x05\x03\x02\x1b\x12\x04\xd1\x02\x02\x16\ - \x1a\x14\x20`(`,\x20`)`,\x20`[`,\x20`]`\n\n\r\n\x05\x05\x03\x02\x1b\x01\ - \x12\x04\xd1\x02\x02\x10\n\r\n\x05\x05\x03\x02\x1b\x02\x12\x04\xd1\x02\ - \x13\x15\n\x18\n\x04\x05\x03\x02\x1c\x12\x04\xd3\x02\x02\x11\x1a\n\x20`|\ - `,\x20`-`\n\n\r\n\x05\x05\x03\x02\x1c\x01\x12\x04\xd3\x02\x02\x0b\n\r\n\ - \x05\x05\x03\x02\x1c\x02\x12\x04\xd3\x02\x0e\x10\n0\n\x04\x05\x03\x02\ - \x1d\x12\x04\xd6\x02\x02\x15\x1a\"\x20Literal\x20strings:\x20\"Hello,\ - \x20world!\"\n\n\r\n\x05\x05\x03\x02\x1d\x01\x12\x04\xd6\x02\x02\x0f\n\r\ - \n\x05\x05\x03\x02\x1d\x02\x12\x04\xd6\x02\x12\x14\n-\n\x04\x05\x03\x02\ - \x1e\x12\x04\xd8\x02\x02\x1b\x1a\x1f\x20non-regex\x20escapes:\x20\"\\t\"\ - ,\x20\"\\n\"\n\n\r\n\x05\x05\x03\x02\x1e\x01\x12\x04\xd8\x02\x02\x15\n\r\ - \n\x05\x05\x03\x02\x1e\x02\x12\x04\xd8\x02\x18\x1a\n_\n\x04\x05\x03\x02\ - \x1f\x12\x04\xda\x02\x02\x1c\x1aQ\x20datetimes\x20within\x20strings,\x20\ - special\x20words\x20within\x20a\x20string,\x20`{}`\x20in\x20format\x20st\ - rings\n\n\r\n\x05\x05\x03\x02\x1f\x01\x12\x04\xda\x02\x02\x16\n\r\n\x05\ - \x05\x03\x02\x1f\x02\x12\x04\xda\x02\x19\x1b\nG\n\x04\x05\x03\x02\x20\ - \x12\x04\xdc\x02\x02\x18\x1a9\x20\"key\"\x20in\x20{\x20\"key\":\x20\"val\ - ue\"\x20},\x20useful\x20for\x20example\x20in\x20JSON\n\n\r\n\x05\x05\x03\ - \x02\x20\x01\x12\x04\xdc\x02\x02\x12\n\r\n\x05\x05\x03\x02\x20\x02\x12\ - \x04\xdc\x02\x15\x17\nV\n\x04\x05\x03\x02!\x12\x04\xde\x02\x02\x18\x1aH\ - \x20'c'\x20or\x20similar,\x20in\x20languages\x20that\x20differentiate\ - \x20strings\x20and\x20characters\n\n\r\n\x05\x05\x03\x02!\x01\x12\x04\ - \xde\x02\x02\x12\n\r\n\x05\x05\x03\x02!\x02\x12\x04\xde\x02\x15\x17\n9\n\ - \x04\x05\x03\x02\"\x12\x04\xe0\x02\x02\x16\x1a+\x20Literal\x20numbers,\ - \x20both\x20floats\x20and\x20integers\n\n\r\n\x05\x05\x03\x02\"\x01\x12\ - \x04\xe0\x02\x02\x10\n\r\n\x05\x05\x03\x02\"\x02\x12\x04\xe0\x02\x13\x15\ - \n\x1f\n\x04\x05\x03\x02#\x12\x04\xe2\x02\x02\x16\x1a\x11\x20`true`,\x20\ - `false`\n\n\r\n\x05\x05\x03\x02#\x01\x12\x04\xe2\x02\x02\x10\n\r\n\x05\ - \x05\x03\x02#\x02\x12\x04\xe2\x02\x13\x15\n&\n\x04\x05\x03\x02$\x12\x04\ - \xe5\x02\x02\x0b\x1a\x18\x20Used\x20for\x20XML-like\x20tags\n\n\r\n\x05\ - \x05\x03\x02$\x01\x12\x04\xe5\x02\x02\x05\n\r\n\x05\x05\x03\x02$\x02\x12\ - \x04\xe5\x02\x08\n\n/\n\x04\x05\x03\x02%\x12\x04\xe7\x02\x02\x14\x1a!\ - \x20Attribute\x20name\x20in\x20XML-like\x20tags\n\n\r\n\x05\x05\x03\x02%\ - \x01\x12\x04\xe7\x02\x02\x0e\n\r\n\x05\x05\x03\x02%\x02\x12\x04\xe7\x02\ - \x11\x13\n,\n\x04\x05\x03\x02&\x12\x04\xe9\x02\x02\x14\x1a\x1e\x20Delimi\ - ters\x20for\x20XML-like\x20tags\n\n\r\n\x05\x05\x03\x02&\x01\x12\x04\xe9\ - \x02\x02\x0e\n\r\n\x05\x05\x03\x02&\x02\x12\x04\xe9\x02\x11\x13\n\xf9\ - \x01\n\x02\x04\t\x12\x06\xf1\x02\0\x98\x03\x01\x1a\xea\x01\x20Occurrence\ - \x20associates\x20a\x20source\x20position\x20with\x20a\x20symbol\x20and/\ - or\x20highlighting\n\x20information.\n\n\x20If\x20possible,\x20indexers\ - \x20should\x20try\x20to\x20bundle\x20logically\x20related\x20information\ - \n\x20across\x20occurrences\x20into\x20a\x20single\x20occurrence\x20to\ - \x20reduce\x20payload\x20sizes.\n\n\x0b\n\x03\x04\t\x01\x12\x04\xf1\x02\ - \x08\x12\n\xc7\x07\n\x04\x04\t\x02\0\x12\x04\x84\x03\x02\x1b\x1a\xb8\x07\ - \x20Source\x20position\x20of\x20this\x20occurrence.\x20Must\x20be\x20exa\ - ctly\x20three\x20or\x20four\n\x20elements:\n\n\x20-\x20Four\x20elements:\ - \x20`[startLine,\x20startCharacter,\x20endLine,\x20endCharacter]`\n\x20-\ - \x20Three\x20elements:\x20`[startLine,\x20startCharacter,\x20endCharacte\ - r]`.\x20The\x20end\x20line\n\x20\x20\x20is\x20inferred\x20to\x20have\x20\ - the\x20same\x20value\x20as\x20the\x20start\x20line.\n\n\x20Line\x20numbe\ - rs\x20and\x20characters\x20are\x20always\x200-based.\x20Make\x20sure\x20\ - to\x20increment\x20the\n\x20line/character\x20values\x20before\x20displa\ - ying\x20them\x20in\x20an\x20editor-like\x20UI\x20because\n\x20editors\ - \x20conventionally\x20use\x201-based\x20numbers.\n\n\x20Historical\x20no\ - te:\x20the\x20original\x20draft\x20of\x20this\x20schema\x20had\x20a\x20`\ - Range`\x20message\n\x20type\x20with\x20`start`\x20and\x20`end`\x20fields\ - \x20of\x20type\x20`Position`,\x20mirroring\x20LSP.\n\x20Benchmarks\x20re\ - vealed\x20that\x20this\x20encoding\x20was\x20inefficient\x20and\x20that\ - \x20we\x20could\n\x20reduce\x20the\x20total\x20payload\x20size\x20of\x20\ - an\x20index\x20by\x2050%\x20by\x20using\x20`repeated\x20int32`\n\x20inst\ - ead.\x20\x20The\x20`repeated\x20int32`\x20encoding\x20is\x20admittedly\ - \x20more\x20embarrassing\x20to\n\x20work\x20with\x20in\x20some\x20progra\ - mming\x20languages\x20but\x20we\x20hope\x20the\x20performance\n\x20impro\ - vements\x20make\x20up\x20for\x20it.\n\n\r\n\x05\x04\t\x02\0\x04\x12\x04\ - \x84\x03\x02\n\n\r\n\x05\x04\t\x02\0\x05\x12\x04\x84\x03\x0b\x10\n\r\n\ - \x05\x04\t\x02\0\x01\x12\x04\x84\x03\x11\x16\n\r\n\x05\x04\t\x02\0\x03\ - \x12\x04\x84\x03\x19\x1a\n\x8a\x01\n\x04\x04\t\x02\x01\x12\x04\x87\x03\ - \x02\x14\x1a|\x20(optional)\x20The\x20symbol\x20that\x20appears\x20at\ - \x20this\x20position.\x20See\n\x20`SymbolInformation.symbol`\x20for\x20h\ - ow\x20to\x20format\x20symbols\x20as\x20strings.\n\n\r\n\x05\x04\t\x02\ - \x01\x05\x12\x04\x87\x03\x02\x08\n\r\n\x05\x04\t\x02\x01\x01\x12\x04\x87\ - \x03\t\x0f\n\r\n\x05\x04\t\x02\x01\x03\x12\x04\x87\x03\x12\x13\n\x97\x01\ - \n\x04\x04\t\x02\x02\x12\x04\x8a\x03\x02\x19\x1a\x88\x01\x20(optional)\ - \x20Bitset\x20containing\x20`SymbolRole`s\x20in\x20this\x20occurrence.\n\ - \x20See\x20`SymbolRole`'s\x20documentation\x20for\x20how\x20to\x20read\ - \x20and\x20write\x20this\x20field.\n\n\r\n\x05\x04\t\x02\x02\x05\x12\x04\ - \x8a\x03\x02\x07\n\r\n\x05\x04\t\x02\x02\x01\x12\x04\x8a\x03\x08\x14\n\r\ - \n\x05\x04\t\x02\x02\x03\x12\x04\x8a\x03\x17\x18\n\xf1\x03\n\x04\x04\t\ - \x02\x03\x12\x04\x93\x03\x02-\x1a\xe2\x03\x20(optional)\x20CommonMark-fo\ - rmatted\x20documentation\x20for\x20this\x20specific\x20range.\x20If\n\ - \x20empty,\x20the\x20`Symbol.documentation`\x20field\x20is\x20used\x20in\ - stead.\x20One\x20example\n\x20where\x20this\x20field\x20might\x20be\x20u\ - seful\x20is\x20when\x20the\x20symbol\x20represents\x20a\x20generic\n\x20\ - function\x20(with\x20abstract\x20type\x20parameters\x20such\x20as\x20`Li\ - st`)\x20and\x20at\x20this\n\x20occurrence\x20we\x20know\x20the\x20exa\ - ct\x20values\x20(such\x20as\x20`List`).\n\n\x20This\x20field\x20\ - can\x20also\x20be\x20used\x20for\x20dynamically\x20or\x20gradually\x20ty\ - ped\x20languages,\n\x20which\x20commonly\x20allow\x20for\x20type-changin\ - g\x20assignment.\n\n\r\n\x05\x04\t\x02\x03\x04\x12\x04\x93\x03\x02\n\n\r\ - \n\x05\x04\t\x02\x03\x05\x12\x04\x93\x03\x0b\x11\n\r\n\x05\x04\t\x02\x03\ - \x01\x12\x04\x93\x03\x12(\n\r\n\x05\x04\t\x02\x03\x03\x12\x04\x93\x03+,\ - \nX\n\x04\x04\t\x02\x04\x12\x04\x95\x03\x02\x1d\x1aJ\x20(optional)\x20Wh\ - at\x20syntax\x20highlighting\x20class\x20should\x20be\x20used\x20for\x20\ - this\x20range?\n\n\r\n\x05\x04\t\x02\x04\x06\x12\x04\x95\x03\x02\x0c\n\r\ - \n\x05\x04\t\x02\x04\x01\x12\x04\x95\x03\r\x18\n\r\n\x05\x04\t\x02\x04\ - \x03\x12\x04\x95\x03\x1b\x1c\nW\n\x04\x04\t\x02\x05\x12\x04\x97\x03\x02&\ - \x1aI\x20(optional)\x20Diagnostics\x20that\x20have\x20been\x20reported\ - \x20for\x20this\x20specific\x20range.\n\n\r\n\x05\x04\t\x02\x05\x04\x12\ - \x04\x97\x03\x02\n\n\r\n\x05\x04\t\x02\x05\x06\x12\x04\x97\x03\x0b\x15\n\ - \r\n\x05\x04\t\x02\x05\x01\x12\x04\x97\x03\x16!\n\r\n\x05\x04\t\x02\x05\ - \x03\x12\x04\x97\x03$%\nw\n\x02\x04\n\x12\x06\x9c\x03\0\xa7\x03\x01\x1ai\ - \x20Represents\x20a\x20diagnostic,\x20such\x20as\x20a\x20compiler\x20err\ - or\x20or\x20warning,\x20which\x20should\x20be\n\x20reported\x20for\x20a\ - \x20document.\n\n\x0b\n\x03\x04\n\x01\x12\x04\x9c\x03\x08\x12\nW\n\x04\ - \x04\n\x02\0\x12\x04\x9e\x03\x02\x18\x1aI\x20Should\x20this\x20diagnosti\ + ocumentation.\x20For\x20example,\x20it's\x20nice\x20to\x20include\x20bot\ + h\x20the\x20signature\x20of\x20a\n\x20method\x20(parameters\x20and\x20re\ + turn\x20type)\x20along\x20with\x20the\x20accompanying\x20docstring.\n\n\ + \r\n\x05\x04\x07\x02\x01\x04\x12\x04\xb7\x01\x02\n\n\r\n\x05\x04\x07\x02\ + \x01\x05\x12\x04\xb7\x01\x0b\x11\n\r\n\x05\x04\x07\x02\x01\x01\x12\x04\ + \xb7\x01\x12\x1f\n\r\n\x05\x04\x07\x02\x01\x03\x12\x04\xb7\x01\"#\n^\n\ + \x04\x04\x07\x02\x02\x12\x04\xb9\x01\x02*\x1aP\x20(optional)\x20Relation\ + ships\x20to\x20other\x20symbols\x20(e.g.,\x20implements,\x20type\x20defi\ + nition).\n\n\r\n\x05\x04\x07\x02\x02\x04\x12\x04\xb9\x01\x02\n\n\r\n\x05\ + \x04\x07\x02\x02\x06\x12\x04\xb9\x01\x0b\x17\n\r\n\x05\x04\x07\x02\x02\ + \x01\x12\x04\xb9\x01\x18%\n\r\n\x05\x04\x07\x02\x02\x03\x12\x04\xb9\x01(\ + )\n\x0c\n\x02\x04\x08\x12\x06\xbc\x01\0\xf4\x01\x01\n\x0b\n\x03\x04\x08\ + \x01\x12\x04\xbc\x01\x08\x14\n\x0c\n\x04\x04\x08\x02\0\x12\x04\xbd\x01\ + \x02\x14\n\r\n\x05\x04\x08\x02\0\x05\x12\x04\xbd\x01\x02\x08\n\r\n\x05\ + \x04\x08\x02\0\x01\x12\x04\xbd\x01\t\x0f\n\r\n\x05\x04\x08\x02\0\x03\x12\ + \x04\xbd\x01\x12\x13\n\xde\x08\n\x04\x04\x08\x02\x01\x12\x04\xd6\x01\x02\ + \x18\x1a\xcf\x08\x20When\x20resolving\x20\"Find\x20references\",\x20this\ + \x20field\x20documents\x20what\x20other\x20symbols\n\x20should\x20be\x20\ + included\x20together\x20with\x20this\x20symbol.\x20For\x20example,\x20co\ + nsider\x20the\n\x20following\x20TypeScript\x20code\x20that\x20defines\ + \x20two\x20symbols\x20`Animal#sound()`\x20and\n\x20`Dog#sound()`:\n\x20`\ + ``ts\n\x20interface\x20Animal\x20{\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20^^^^^^\x20definition\x20Animal#\n\x20\x20\x20sound():\x20string\ + \n\x20\x20\x20^^^^^\x20definition\x20Animal#sound()\n\x20}\n\x20class\ + \x20Dog\x20implements\x20Animal\x20{\n\x20\x20\x20\x20\x20\x20\x20^^^\ + \x20definition\x20Dog#,\x20relationships\x20=\x20[{symbol:\x20\"Animal#\ + \",\x20is_implementation:\x20true}]\n\x20\x20\x20public\x20sound():\x20s\ + tring\x20{\x20return\x20\"woof\"\x20}\n\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20^^^^^\x20definition\x20Dog#sound(),\x20references_symbols\x20=\ + \x20Animal#sound(),\x20relationships\x20=\x20[{symbol:\x20\"Animal#sound\ + ()\",\x20is_implementation:true,\x20is_reference:\x20true}]\n\x20}\n\x20\ + const\x20animal:\x20Animal\x20=\x20new\x20Dog()\n\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^^^^^^\x20reference\x20Animal#\n\ + \x20console.log(animal.sound())\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^^^^^\x20reference\x20Animal\ + #sound()\n\x20```\n\x20Doing\x20\"Find\x20references\"\x20on\x20the\x20s\ + ymbol\x20`Animal#sound()`\x20should\x20return\n\x20references\x20to\x20t\ + he\x20`Dog#sound()`\x20method\x20as\x20well.\x20Vice-versa,\x20doing\x20\ + \"Find\n\x20references\"\x20on\x20the\x20`Dog#sound()`\x20method\x20shou\ + ld\x20include\x20references\x20to\x20the\n\x20`Animal#sound()`\x20method\ + \x20as\x20well.\n\n\r\n\x05\x04\x08\x02\x01\x05\x12\x04\xd6\x01\x02\x06\ + \n\r\n\x05\x04\x08\x02\x01\x01\x12\x04\xd6\x01\x07\x13\n\r\n\x05\x04\x08\ + \x02\x01\x03\x12\x04\xd6\x01\x16\x17\n\xee\x03\n\x04\x04\x08\x02\x02\x12\ + \x04\xdf\x01\x02\x1d\x1a\xdf\x03\x20Similar\x20to\x20`is_reference`\x20b\ + ut\x20for\x20\"Find\x20implementations\".\n\x20It's\x20common\x20for\x20\ + `is_implementation`\x20and\x20`is_reference`\x20to\x20both\x20be\x20true\ + \x20but\n\x20it's\x20not\x20always\x20the\x20case.\n\x20In\x20the\x20Typ\ + eScript\x20example\x20above,\x20observe\x20that\x20`Dog#`\x20has\x20an\n\ + \x20`is_implementation`\x20relationship\x20with\x20`\"Animal#\"`\x20but\ + \x20not\x20`is_reference`.\n\x20This\x20is\x20because\x20\"Find\x20refer\ + ences\"\x20on\x20the\x20\"Animal#\"\x20symbol\x20should\x20not\x20return\ + \n\x20\"Dog#\".\x20We\x20only\x20want\x20\"Dog#\"\x20to\x20return\x20as\ + \x20a\x20result\x20for\x20\"Find\n\x20implementations\"\x20on\x20the\x20\ + \"Animal#\"\x20symbol.\n\n\r\n\x05\x04\x08\x02\x02\x05\x12\x04\xdf\x01\ + \x02\x06\n\r\n\x05\x04\x08\x02\x02\x01\x12\x04\xdf\x01\x07\x18\n\r\n\x05\ + \x04\x08\x02\x02\x03\x12\x04\xdf\x01\x1b\x1c\nP\n\x04\x04\x08\x02\x03\ + \x12\x04\xe1\x01\x02\x1e\x1aB\x20Similar\x20to\x20`references_symbols`\ + \x20but\x20for\x20\"Go\x20to\x20type\x20definition\".\n\n\r\n\x05\x04\ + \x08\x02\x03\x05\x12\x04\xe1\x01\x02\x06\n\r\n\x05\x04\x08\x02\x03\x01\ + \x12\x04\xe1\x01\x07\x19\n\r\n\x05\x04\x08\x02\x03\x03\x12\x04\xe1\x01\ + \x1c\x1d\n\xa7\x07\n\x04\x04\x08\x02\x04\x12\x04\xf2\x01\x02\x19\x1a\xd5\ + \x06\x20Allows\x20overriding\x20the\x20behavior\x20of\x20\"Go\x20to\x20d\ + efinition\"\x20and\x20\"Find\x20references\"\n\x20for\x20symbols\x20whic\ + h\x20do\x20not\x20have\x20a\x20definition\x20of\x20their\x20own\x20or\ + \x20could\n\x20potentially\x20have\x20multiple\x20definitions.\n\n\x20Fo\ + r\x20example,\x20in\x20a\x20language\x20with\x20single\x20inheritance\ + \x20and\x20no\x20field\x20overriding,\n\x20inherited\x20fields\x20can\ + \x20reuse\x20the\x20same\x20symbol\x20as\x20the\x20ancestor\x20which\x20\ + declares\n\x20the\x20field.\x20In\x20such\x20a\x20situation,\x20is_defin\ + ition\x20is\x20not\x20needed.\n\n\x20On\x20the\x20other\x20hand,\x20in\ + \x20languages\x20with\x20single\x20inheritance\x20and\x20some\x20form\n\ + \x20of\x20mixins,\x20you\x20can\x20use\x20is_definition\x20to\x20relate\ + \x20the\x20symbol\x20to\x20the\n\x20matching\x20symbol\x20in\x20ancestor\ + \x20classes,\x20and\x20is_reference\x20to\x20relate\x20the\n\x20symbol\ + \x20to\x20the\x20matching\x20symbol\x20in\x20mixins.\n\n\x20NOTE:\x20At\ + \x20the\x20moment,\x20due\x20to\x20limitations\x20of\x20the\x20SCIP\x20t\ + o\x20LSIF\x20conversion,\n\x20only\x20global\x20symbols\x20in\x20an\x20i\ + ndex\x20are\x20allowed\x20to\x20use\x20is_definition.\n\x20The\x20relati\ + onship\x20may\x20not\x20get\x20recorded\x20if\x20either\x20symbol\x20is\ + \x20local.\n\"A\x20Update\x20registerInverseRelationships\x20on\x20addin\ + g\x20a\x20new\x20field\x20here.\n\n\r\n\x05\x04\x08\x02\x04\x05\x12\x04\ + \xf2\x01\x02\x06\n\r\n\x05\x04\x08\x02\x04\x01\x12\x04\xf2\x01\x07\x14\n\ + \r\n\x05\x04\x08\x02\x04\x03\x12\x04\xf2\x01\x17\x18\n\x88\x03\n\x02\x05\ + \x02\x12\x06\xfb\x01\0\x8b\x02\x01\x1a\xf9\x02\x20SymbolRole\x20declares\ + \x20what\x20\"role\"\x20a\x20symbol\x20has\x20in\x20an\x20occurrence.\ + \x20A\x20role\x20is\n\x20encoded\x20as\x20a\x20bitset\x20where\x20each\ + \x20bit\x20represents\x20a\x20different\x20role.\x20For\x20example,\n\ + \x20to\x20determine\x20if\x20the\x20`Import`\x20role\x20is\x20set,\x20te\ + st\x20whether\x20the\x20second\x20bit\x20of\x20the\n\x20enum\x20value\ + \x20is\x20defined.\x20In\x20pseudocode,\x20this\x20can\x20be\x20implemen\ + ted\x20with\x20the\n\x20logic:\x20`const\x20isImportRole\x20=\x20(role.v\ + alue\x20&\x20SymbolRole.Import.value)\x20>\x200`.\n\n\x0b\n\x03\x05\x02\ + \x01\x12\x04\xfb\x01\x05\x0f\nv\n\x04\x05\x02\x02\0\x12\x04\xfe\x01\x02\ + \x1c\x1ah\x20This\x20case\x20is\x20not\x20meant\x20to\x20be\x20used;\x20\ + it\x20only\x20exists\x20to\x20avoid\x20an\x20error\n\x20from\x20the\x20P\ + rotobuf\x20code\x20generator.\n\n\r\n\x05\x05\x02\x02\0\x01\x12\x04\xfe\ + \x01\x02\x17\n\r\n\x05\x05\x02\x02\0\x02\x12\x04\xfe\x01\x1a\x1b\nT\n\ + \x04\x05\x02\x02\x01\x12\x04\x80\x02\x02\x13\x1aF\x20Is\x20the\x20symbol\ + \x20defined\x20here?\x20If\x20not,\x20then\x20this\x20is\x20a\x20symbol\ + \x20reference.\n\n\r\n\x05\x05\x02\x02\x01\x01\x12\x04\x80\x02\x02\x0c\n\ + \r\n\x05\x05\x02\x02\x01\x02\x12\x04\x80\x02\x0f\x12\n,\n\x04\x05\x02\ + \x02\x02\x12\x04\x82\x02\x02\x0f\x1a\x1e\x20Is\x20the\x20symbol\x20impor\ + ted\x20here?\n\n\r\n\x05\x05\x02\x02\x02\x01\x12\x04\x82\x02\x02\x08\n\r\ + \n\x05\x05\x02\x02\x02\x02\x12\x04\x82\x02\x0b\x0e\n+\n\x04\x05\x02\x02\ + \x03\x12\x04\x84\x02\x02\x14\x1a\x1d\x20Is\x20the\x20symbol\x20written\ + \x20here?\n\n\r\n\x05\x05\x02\x02\x03\x01\x12\x04\x84\x02\x02\r\n\r\n\ + \x05\x05\x02\x02\x03\x02\x12\x04\x84\x02\x10\x13\n(\n\x04\x05\x02\x02\ + \x04\x12\x04\x86\x02\x02\x13\x1a\x1a\x20Is\x20the\x20symbol\x20read\x20h\ + ere?\n\n\r\n\x05\x05\x02\x02\x04\x01\x12\x04\x86\x02\x02\x0c\n\r\n\x05\ + \x05\x02\x02\x04\x02\x12\x04\x86\x02\x0f\x12\n0\n\x04\x05\x02\x02\x05\ + \x12\x04\x88\x02\x02\x13\x1a\"\x20Is\x20the\x20symbol\x20in\x20generated\ + \x20code?\n\n\r\n\x05\x05\x02\x02\x05\x01\x12\x04\x88\x02\x02\x0b\n\r\n\ + \x05\x05\x02\x02\x05\x02\x12\x04\x88\x02\x0e\x12\n+\n\x04\x05\x02\x02\ + \x06\x12\x04\x8a\x02\x02\x0e\x1a\x1d\x20Is\x20the\x20symbol\x20in\x20tes\ + t\x20code?\n\n\r\n\x05\x05\x02\x02\x06\x01\x12\x04\x8a\x02\x02\x06\n\r\n\ + \x05\x05\x02\x02\x06\x02\x12\x04\x8a\x02\t\r\n\x0c\n\x02\x05\x03\x12\x06\ + \x8d\x02\0\xea\x02\x01\n\x0b\n\x03\x05\x03\x01\x12\x04\x8d\x02\x05\x0f\n\ + \x0b\n\x03\x05\x03\x03\x12\x04\x8e\x02\x02\x1c\n\x0c\n\x04\x05\x03\x03\ + \x02\x12\x04\x8e\x02\x02\x1c\n\x0c\n\x04\x05\x03\x02\0\x12\x04\x90\x02\ + \x02\x1c\n\r\n\x05\x05\x03\x02\0\x01\x12\x04\x90\x02\x02\x17\n\r\n\x05\ + \x05\x03\x02\0\x02\x12\x04\x90\x02\x1a\x1b\n;\n\x04\x05\x03\x02\x01\x12\ + \x04\x93\x02\x02\x0e\x1a-\x20Comment,\x20including\x20comment\x20markers\ + \x20and\x20text\n\n\r\n\x05\x05\x03\x02\x01\x01\x12\x04\x93\x02\x02\t\n\ + \r\n\x05\x05\x03\x02\x01\x02\x12\x04\x93\x02\x0c\r\n\x1b\n\x04\x05\x03\ + \x02\x02\x12\x04\x96\x02\x02\x1b\x1a\r\x20`;`\x20`.`\x20`,`\n\n\r\n\x05\ + \x05\x03\x02\x02\x01\x12\x04\x96\x02\x02\x16\n\r\n\x05\x05\x03\x02\x02\ + \x02\x12\x04\x96\x02\x19\x1a\n2\n\x04\x05\x03\x02\x03\x12\x04\x98\x02\ + \x02\x19\x1a$\x20(),\x20{},\x20[]\x20when\x20used\x20syntactically\n\n\r\ + \n\x05\x05\x03\x02\x03\x01\x12\x04\x98\x02\x02\x14\n\r\n\x05\x05\x03\x02\ + \x03\x02\x12\x04\x98\x02\x17\x18\n5\n\x04\x05\x03\x02\x04\x12\x04\x9b\ + \x02\x02\x0e\x1a'\x20`if`,\x20`else`,\x20`return`,\x20`class`,\x20etc.\n\ + \n\r\n\x05\x05\x03\x02\x04\x01\x12\x04\x9b\x02\x02\t\n\r\n\x05\x05\x03\ + \x02\x04\x02\x12\x04\x9b\x02\x0c\r\n\x0c\n\x04\x05\x03\x02\x05\x12\x04\ + \x9c\x02\x02*\n\r\n\x05\x05\x03\x02\x05\x01\x12\x04\x9c\x02\x02\x13\n\r\ + \n\x05\x05\x03\x02\x05\x02\x12\x04\x9c\x02\x16\x17\n\r\n\x05\x05\x03\x02\ + \x05\x03\x12\x04\x9c\x02\x18)\n\x0e\n\x06\x05\x03\x02\x05\x03\x01\x12\ + \x04\x9c\x02\x19(\n\x1e\n\x04\x05\x03\x02\x06\x12\x04\x9f\x02\x02\x19\ + \x1a\x10\x20`+`,\x20`*`,\x20etc.\n\n\r\n\x05\x05\x03\x02\x06\x01\x12\x04\ + \x9f\x02\x02\x14\n\r\n\x05\x05\x03\x02\x06\x02\x12\x04\x9f\x02\x17\x18\n\ + X\n\x04\x05\x03\x02\x07\x12\x04\xa2\x02\x02\x11\x1aJ\x20non-specific\x20\ + catch-all\x20for\x20any\x20identifier\x20not\x20better\x20described\x20e\ + lsewhere\n\n\r\n\x05\x05\x03\x02\x07\x01\x12\x04\xa2\x02\x02\x0c\n\r\n\ + \x05\x05\x03\x02\x07\x02\x12\x04\xa2\x02\x0f\x10\nN\n\x04\x05\x03\x02\ + \x08\x12\x04\xa4\x02\x02\x18\x1a@\x20Identifiers\x20builtin\x20to\x20the\ + \x20language:\x20`min`,\x20`print`\x20in\x20Python.\n\n\r\n\x05\x05\x03\ + \x02\x08\x01\x12\x04\xa4\x02\x02\x13\n\r\n\x05\x05\x03\x02\x08\x02\x12\ + \x04\xa4\x02\x16\x17\n[\n\x04\x05\x03\x02\t\x12\x04\xa6\x02\x02\x15\x1aM\ + \x20Identifiers\x20representing\x20`null`-like\x20values:\x20`None`\x20i\ + n\x20Python,\x20`nil`\x20in\x20Go.\n\n\r\n\x05\x05\x03\x02\t\x01\x12\x04\ + \xa6\x02\x02\x10\n\r\n\x05\x05\x03\x02\t\x02\x12\x04\xa6\x02\x13\x14\n.\ + \n\x04\x05\x03\x02\n\x12\x04\xa8\x02\x02\x19\x1a\x20\x20`xyz`\x20in\x20`\ + const\x20xyz\x20=\x20\"hello\"`\n\n\r\n\x05\x05\x03\x02\n\x01\x12\x04\ + \xa8\x02\x02\x14\n\r\n\x05\x05\x03\x02\n\x02\x12\x04\xa8\x02\x17\x18\n'\ + \n\x04\x05\x03\x02\x0b\x12\x04\xaa\x02\x02\x1f\x1a\x19\x20`var\x20X\x20=\ + \x20\"hello\"`\x20in\x20Go\n\n\r\n\x05\x05\x03\x02\x0b\x01\x12\x04\xaa\ + \x02\x02\x19\n\r\n\x05\x05\x03\x02\x0b\x02\x12\x04\xaa\x02\x1c\x1e\n3\n\ + \x04\x05\x03\x02\x0c\x12\x04\xac\x02\x02\x1b\x1a%\x20Parameter\x20defini\ + tion\x20and\x20references\n\n\r\n\x05\x05\x03\x02\x0c\x01\x12\x04\xac\ + \x02\x02\x15\n\r\n\x05\x05\x03\x02\x0c\x02\x12\x04\xac\x02\x18\x1a\nX\n\ + \x04\x05\x03\x02\r\x12\x04\xae\x02\x02\x17\x1aJ\x20Identifiers\x20for\ + \x20variable\x20definitions\x20and\x20references\x20within\x20a\x20local\ + \x20scope\n\n\r\n\x05\x05\x03\x02\r\x01\x12\x04\xae\x02\x02\x11\n\r\n\ + \x05\x05\x03\x02\r\x02\x12\x04\xae\x02\x14\x16\nK\n\x04\x05\x03\x02\x0e\ + \x12\x04\xb0\x02\x02\x1a\x1a=\x20Identifiers\x20that\x20shadow\x20other\ + \x20identifiers\x20in\x20an\x20outer\x20scope\n\n\r\n\x05\x05\x03\x02\ + \x0e\x01\x12\x04\xb0\x02\x02\x14\n\r\n\x05\x05\x03\x02\x0e\x02\x12\x04\ + \xb0\x02\x17\x19\n\xcd\x01\n\x04\x05\x03\x02\x0f\x12\x04\xb5\x02\x02\x1b\ + \x1a\xbe\x01\x20Identifier\x20representing\x20a\x20unit\x20of\x20code\ + \x20abstraction\x20and/or\x20namespacing.\n\n\x20NOTE:\x20This\x20corres\ + ponds\x20to\x20a\x20package\x20in\x20Go\x20and\x20JVM\x20languages,\n\ + \x20and\x20a\x20module\x20in\x20languages\x20like\x20Python\x20and\x20Ja\ + vaScript.\n\n\r\n\x05\x05\x03\x02\x0f\x01\x12\x04\xb5\x02\x02\x15\n\r\n\ + \x05\x05\x03\x02\x0f\x02\x12\x04\xb5\x02\x18\x1a\n\x0c\n\x04\x05\x03\x02\ + \x10\x12\x04\xb6\x02\x02*\n\r\n\x05\x05\x03\x02\x10\x01\x12\x04\xb6\x02\ + \x02\x12\n\r\n\x05\x05\x03\x02\x10\x02\x12\x04\xb6\x02\x15\x17\n\r\n\x05\ + \x05\x03\x02\x10\x03\x12\x04\xb6\x02\x18)\n\x0e\n\x06\x05\x03\x02\x10\ + \x03\x01\x12\x04\xb6\x02\x19(\n4\n\x04\x05\x03\x02\x11\x12\x04\xb9\x02\ + \x02\x1a\x1a&\x20Function\x20references,\x20including\x20calls\n\n\r\n\ + \x05\x05\x03\x02\x11\x01\x12\x04\xb9\x02\x02\x14\n\r\n\x05\x05\x03\x02\ + \x11\x02\x12\x04\xb9\x02\x17\x19\n(\n\x04\x05\x03\x02\x12\x12\x04\xbb\ + \x02\x02$\x1a\x1a\x20Function\x20definition\x20only\n\n\r\n\x05\x05\x03\ + \x02\x12\x01\x12\x04\xbb\x02\x02\x1e\n\r\n\x05\x05\x03\x02\x12\x02\x12\ + \x04\xbb\x02!#\n7\n\x04\x05\x03\x02\x13\x12\x04\xbe\x02\x02\x17\x1a)\x20\ + Macro\x20references,\x20including\x20invocations\n\n\r\n\x05\x05\x03\x02\ + \x13\x01\x12\x04\xbe\x02\x02\x11\n\r\n\x05\x05\x03\x02\x13\x02\x12\x04\ + \xbe\x02\x14\x16\n%\n\x04\x05\x03\x02\x14\x12\x04\xc0\x02\x02!\x1a\x17\ + \x20Macro\x20definition\x20only\n\n\r\n\x05\x05\x03\x02\x14\x01\x12\x04\ + \xc0\x02\x02\x1b\n\r\n\x05\x05\x03\x02\x14\x02\x12\x04\xc0\x02\x1e\x20\n\ + !\n\x04\x05\x03\x02\x15\x12\x04\xc3\x02\x02\x16\x1a\x13\x20non-builtin\ + \x20types\n\n\r\n\x05\x05\x03\x02\x15\x01\x12\x04\xc3\x02\x02\x10\n\r\n\ + \x05\x05\x03\x02\x15\x02\x12\x04\xc3\x02\x13\x15\nK\n\x04\x05\x03\x02\ + \x16\x12\x04\xc5\x02\x02\x1d\x1a=\x20builtin\x20types\x20only,\x20such\ + \x20as\x20`str`\x20for\x20Python\x20or\x20`int`\x20in\x20Go\n\n\r\n\x05\ + \x05\x03\x02\x16\x01\x12\x04\xc5\x02\x02\x17\n\r\n\x05\x05\x03\x02\x16\ + \x02\x12\x04\xc5\x02\x1a\x1c\n7\n\x04\x05\x03\x02\x17\x12\x04\xc8\x02\ + \x02\x1b\x1a)\x20Python\x20decorators,\x20c-like\x20__attribute__\n\n\r\ + \n\x05\x05\x03\x02\x17\x01\x12\x04\xc8\x02\x02\x15\n\r\n\x05\x05\x03\x02\ + \x17\x02\x12\x04\xc8\x02\x18\x1a\n\x14\n\x04\x05\x03\x02\x18\x12\x04\xcb\ + \x02\x02\x13\x1a\x06\x20`\\b`\n\n\r\n\x05\x05\x03\x02\x18\x01\x12\x04\ + \xcb\x02\x02\r\n\r\n\x05\x05\x03\x02\x18\x02\x12\x04\xcb\x02\x10\x12\n\ + \x18\n\x04\x05\x03\x02\x19\x12\x04\xcd\x02\x02\x15\x1a\n\x20`*`,\x20`+`\ + \n\n\r\n\x05\x05\x03\x02\x19\x01\x12\x04\xcd\x02\x02\x0f\n\r\n\x05\x05\ + \x03\x02\x19\x02\x12\x04\xcd\x02\x12\x14\n\x13\n\x04\x05\x03\x02\x1a\x12\ + \x04\xcf\x02\x02\x15\x1a\x05\x20`.`\n\n\r\n\x05\x05\x03\x02\x1a\x01\x12\ + \x04\xcf\x02\x02\x0f\n\r\n\x05\x05\x03\x02\x1a\x02\x12\x04\xcf\x02\x12\ + \x14\n\"\n\x04\x05\x03\x02\x1b\x12\x04\xd1\x02\x02\x16\x1a\x14\x20`(`,\ + \x20`)`,\x20`[`,\x20`]`\n\n\r\n\x05\x05\x03\x02\x1b\x01\x12\x04\xd1\x02\ + \x02\x10\n\r\n\x05\x05\x03\x02\x1b\x02\x12\x04\xd1\x02\x13\x15\n\x18\n\ + \x04\x05\x03\x02\x1c\x12\x04\xd3\x02\x02\x11\x1a\n\x20`|`,\x20`-`\n\n\r\ + \n\x05\x05\x03\x02\x1c\x01\x12\x04\xd3\x02\x02\x0b\n\r\n\x05\x05\x03\x02\ + \x1c\x02\x12\x04\xd3\x02\x0e\x10\n0\n\x04\x05\x03\x02\x1d\x12\x04\xd6\ + \x02\x02\x15\x1a\"\x20Literal\x20strings:\x20\"Hello,\x20world!\"\n\n\r\ + \n\x05\x05\x03\x02\x1d\x01\x12\x04\xd6\x02\x02\x0f\n\r\n\x05\x05\x03\x02\ + \x1d\x02\x12\x04\xd6\x02\x12\x14\n-\n\x04\x05\x03\x02\x1e\x12\x04\xd8\ + \x02\x02\x1b\x1a\x1f\x20non-regex\x20escapes:\x20\"\\t\",\x20\"\\n\"\n\n\ + \r\n\x05\x05\x03\x02\x1e\x01\x12\x04\xd8\x02\x02\x15\n\r\n\x05\x05\x03\ + \x02\x1e\x02\x12\x04\xd8\x02\x18\x1a\n_\n\x04\x05\x03\x02\x1f\x12\x04\ + \xda\x02\x02\x1c\x1aQ\x20datetimes\x20within\x20strings,\x20special\x20w\ + ords\x20within\x20a\x20string,\x20`{}`\x20in\x20format\x20strings\n\n\r\ + \n\x05\x05\x03\x02\x1f\x01\x12\x04\xda\x02\x02\x16\n\r\n\x05\x05\x03\x02\ + \x1f\x02\x12\x04\xda\x02\x19\x1b\nG\n\x04\x05\x03\x02\x20\x12\x04\xdc\ + \x02\x02\x18\x1a9\x20\"key\"\x20in\x20{\x20\"key\":\x20\"value\"\x20},\ + \x20useful\x20for\x20example\x20in\x20JSON\n\n\r\n\x05\x05\x03\x02\x20\ + \x01\x12\x04\xdc\x02\x02\x12\n\r\n\x05\x05\x03\x02\x20\x02\x12\x04\xdc\ + \x02\x15\x17\nV\n\x04\x05\x03\x02!\x12\x04\xde\x02\x02\x18\x1aH\x20'c'\ + \x20or\x20similar,\x20in\x20languages\x20that\x20differentiate\x20string\ + s\x20and\x20characters\n\n\r\n\x05\x05\x03\x02!\x01\x12\x04\xde\x02\x02\ + \x12\n\r\n\x05\x05\x03\x02!\x02\x12\x04\xde\x02\x15\x17\n9\n\x04\x05\x03\ + \x02\"\x12\x04\xe0\x02\x02\x16\x1a+\x20Literal\x20numbers,\x20both\x20fl\ + oats\x20and\x20integers\n\n\r\n\x05\x05\x03\x02\"\x01\x12\x04\xe0\x02\ + \x02\x10\n\r\n\x05\x05\x03\x02\"\x02\x12\x04\xe0\x02\x13\x15\n\x1f\n\x04\ + \x05\x03\x02#\x12\x04\xe2\x02\x02\x16\x1a\x11\x20`true`,\x20`false`\n\n\ + \r\n\x05\x05\x03\x02#\x01\x12\x04\xe2\x02\x02\x10\n\r\n\x05\x05\x03\x02#\ + \x02\x12\x04\xe2\x02\x13\x15\n&\n\x04\x05\x03\x02$\x12\x04\xe5\x02\x02\ + \x0b\x1a\x18\x20Used\x20for\x20XML-like\x20tags\n\n\r\n\x05\x05\x03\x02$\ + \x01\x12\x04\xe5\x02\x02\x05\n\r\n\x05\x05\x03\x02$\x02\x12\x04\xe5\x02\ + \x08\n\n/\n\x04\x05\x03\x02%\x12\x04\xe7\x02\x02\x14\x1a!\x20Attribute\ + \x20name\x20in\x20XML-like\x20tags\n\n\r\n\x05\x05\x03\x02%\x01\x12\x04\ + \xe7\x02\x02\x0e\n\r\n\x05\x05\x03\x02%\x02\x12\x04\xe7\x02\x11\x13\n,\n\ + \x04\x05\x03\x02&\x12\x04\xe9\x02\x02\x14\x1a\x1e\x20Delimiters\x20for\ + \x20XML-like\x20tags\n\n\r\n\x05\x05\x03\x02&\x01\x12\x04\xe9\x02\x02\ + \x0e\n\r\n\x05\x05\x03\x02&\x02\x12\x04\xe9\x02\x11\x13\n\xf9\x01\n\x02\ + \x04\t\x12\x06\xf1\x02\0\xc0\x03\x01\x1a\xea\x01\x20Occurrence\x20associ\ + ates\x20a\x20source\x20position\x20with\x20a\x20symbol\x20and/or\x20high\ + lighting\n\x20information.\n\n\x20If\x20possible,\x20indexers\x20should\ + \x20try\x20to\x20bundle\x20logically\x20related\x20information\n\x20acro\ + ss\x20occurrences\x20into\x20a\x20single\x20occurrence\x20to\x20reduce\ + \x20payload\x20sizes.\n\n\x0b\n\x03\x04\t\x01\x12\x04\xf1\x02\x08\x12\n\ + \xc6\x07\n\x04\x04\t\x02\0\x12\x04\x84\x03\x02\x1b\x1a\xb7\x07\x20Source\ + \x20position\x20of\x20this\x20occurrence.\x20Must\x20be\x20exactly\x20th\ + ree\x20or\x20four\n\x20elements:\n\n\x20-\x20Four\x20elements:\x20`[star\ + tLine,\x20startCharacter,\x20endLine,\x20endCharacter]`\n\x20-\x20Three\ + \x20elements:\x20`[startLine,\x20startCharacter,\x20endCharacter]`.\x20T\ + he\x20end\x20line\n\x20\x20\x20is\x20inferred\x20to\x20have\x20the\x20sa\ + me\x20value\x20as\x20the\x20start\x20line.\n\n\x20Line\x20numbers\x20and\ + \x20characters\x20are\x20always\x200-based.\x20Make\x20sure\x20to\x20inc\ + rement\x20the\n\x20line/character\x20values\x20before\x20displaying\x20t\ + hem\x20in\x20an\x20editor-like\x20UI\x20because\n\x20editors\x20conventi\ + onally\x20use\x201-based\x20numbers.\n\n\x20Historical\x20note:\x20the\ + \x20original\x20draft\x20of\x20this\x20schema\x20had\x20a\x20`Range`\x20\ + message\n\x20type\x20with\x20`start`\x20and\x20`end`\x20fields\x20of\x20\ + type\x20`Position`,\x20mirroring\x20LSP.\n\x20Benchmarks\x20revealed\x20\ + that\x20this\x20encoding\x20was\x20inefficient\x20and\x20that\x20we\x20c\ + ould\n\x20reduce\x20the\x20total\x20payload\x20size\x20of\x20an\x20index\ + \x20by\x2050%\x20by\x20using\x20`repeated\x20int32`\n\x20instead.\x20The\ + \x20`repeated\x20int32`\x20encoding\x20is\x20admittedly\x20more\x20embar\ + rassing\x20to\n\x20work\x20with\x20in\x20some\x20programming\x20language\ + s\x20but\x20we\x20hope\x20the\x20performance\n\x20improvements\x20make\ + \x20up\x20for\x20it.\n\n\r\n\x05\x04\t\x02\0\x04\x12\x04\x84\x03\x02\n\n\ + \r\n\x05\x04\t\x02\0\x05\x12\x04\x84\x03\x0b\x10\n\r\n\x05\x04\t\x02\0\ + \x01\x12\x04\x84\x03\x11\x16\n\r\n\x05\x04\t\x02\0\x03\x12\x04\x84\x03\ + \x19\x1a\n\x8a\x01\n\x04\x04\t\x02\x01\x12\x04\x87\x03\x02\x14\x1a|\x20(\ + optional)\x20The\x20symbol\x20that\x20appears\x20at\x20this\x20position.\ + \x20See\n\x20`SymbolInformation.symbol`\x20for\x20how\x20to\x20format\ + \x20symbols\x20as\x20strings.\n\n\r\n\x05\x04\t\x02\x01\x05\x12\x04\x87\ + \x03\x02\x08\n\r\n\x05\x04\t\x02\x01\x01\x12\x04\x87\x03\t\x0f\n\r\n\x05\ + \x04\t\x02\x01\x03\x12\x04\x87\x03\x12\x13\n\x97\x01\n\x04\x04\t\x02\x02\ + \x12\x04\x8a\x03\x02\x19\x1a\x88\x01\x20(optional)\x20Bitset\x20containi\ + ng\x20`SymbolRole`s\x20in\x20this\x20occurrence.\n\x20See\x20`SymbolRole\ + `'s\x20documentation\x20for\x20how\x20to\x20read\x20and\x20write\x20this\ + \x20field.\n\n\r\n\x05\x04\t\x02\x02\x05\x12\x04\x8a\x03\x02\x07\n\r\n\ + \x05\x04\t\x02\x02\x01\x12\x04\x8a\x03\x08\x14\n\r\n\x05\x04\t\x02\x02\ + \x03\x12\x04\x8a\x03\x17\x18\n\xf1\x03\n\x04\x04\t\x02\x03\x12\x04\x93\ + \x03\x02-\x1a\xe2\x03\x20(optional)\x20CommonMark-formatted\x20documenta\ + tion\x20for\x20this\x20specific\x20range.\x20If\n\x20empty,\x20the\x20`S\ + ymbol.documentation`\x20field\x20is\x20used\x20instead.\x20One\x20exampl\ + e\n\x20where\x20this\x20field\x20might\x20be\x20useful\x20is\x20when\x20\ + the\x20symbol\x20represents\x20a\x20generic\n\x20function\x20(with\x20ab\ + stract\x20type\x20parameters\x20such\x20as\x20`List`)\x20and\x20at\ + \x20this\n\x20occurrence\x20we\x20know\x20the\x20exact\x20values\x20(suc\ + h\x20as\x20`List`).\n\n\x20This\x20field\x20can\x20also\x20be\ + \x20used\x20for\x20dynamically\x20or\x20gradually\x20typed\x20languages,\ + \n\x20which\x20commonly\x20allow\x20for\x20type-changing\x20assignment.\ + \n\n\r\n\x05\x04\t\x02\x03\x04\x12\x04\x93\x03\x02\n\n\r\n\x05\x04\t\x02\ + \x03\x05\x12\x04\x93\x03\x0b\x11\n\r\n\x05\x04\t\x02\x03\x01\x12\x04\x93\ + \x03\x12(\n\r\n\x05\x04\t\x02\x03\x03\x12\x04\x93\x03+,\nX\n\x04\x04\t\ + \x02\x04\x12\x04\x95\x03\x02\x1d\x1aJ\x20(optional)\x20What\x20syntax\ + \x20highlighting\x20class\x20should\x20be\x20used\x20for\x20this\x20rang\ + e?\n\n\r\n\x05\x04\t\x02\x04\x06\x12\x04\x95\x03\x02\x0c\n\r\n\x05\x04\t\ + \x02\x04\x01\x12\x04\x95\x03\r\x18\n\r\n\x05\x04\t\x02\x04\x03\x12\x04\ + \x95\x03\x1b\x1c\nW\n\x04\x04\t\x02\x05\x12\x04\x97\x03\x02&\x1aI\x20(op\ + tional)\x20Diagnostics\x20that\x20have\x20been\x20reported\x20for\x20thi\ + s\x20specific\x20range.\n\n\r\n\x05\x04\t\x02\x05\x04\x12\x04\x97\x03\ + \x02\n\n\r\n\x05\x04\t\x02\x05\x06\x12\x04\x97\x03\x0b\x15\n\r\n\x05\x04\ + \t\x02\x05\x01\x12\x04\x97\x03\x16!\n\r\n\x05\x04\t\x02\x05\x03\x12\x04\ + \x97\x03$%\n\x80\x0c\n\x04\x04\t\x02\x06\x12\x04\xbf\x03\x02%\x1a\xf1\ + \x0b\x20(optional)\x20Using\x20the\x20same\x20encoding\x20as\x20the\x20s\ + ibling\x20`range`\x20field,\x20source\n\x20position\x20of\x20the\x20near\ + est\x20non-trivial\x20enclosing\x20AST\x20node.\x20This\x20range\x20must\ + \n\x20enclose\x20the\x20`range`\x20field.\x20Example\x20applications\x20\ + that\x20make\x20use\x20of\x20the\n\x20enclosing_range\x20field:\n\n\x20-\ + \x20Call\x20hierarchies:\x20to\x20determine\x20what\x20symbols\x20are\ + \x20references\x20from\x20the\x20body\n\x20\x20\x20of\x20a\x20function\n\ + \x20-\x20Symbol\x20outline:\x20to\x20display\x20breadcrumbs\x20from\x20t\ + he\x20cursor\x20position\x20to\x20the\n\x20\x20\x20root\x20of\x20the\x20\ + file\n\x20-\x20Expand\x20selection:\x20to\x20select\x20the\x20nearest\ + \x20enclosing\x20AST\x20node.\n\x20-\x20Highlight\x20range:\x20to\x20ind\ + icate\x20the\x20AST\x20expression\x20that\x20is\x20associated\x20with\ + \x20a\n\x20\x20\x20hover\x20popover\n\n\x20For\x20definition\x20occurren\ + ces,\x20the\x20enclosing\x20range\x20should\x20indicate\x20the\n\x20star\ + t/end\x20bounds\x20of\x20the\x20entire\x20definition\x20AST\x20node,\x20\ + including\n\x20documentation.\n\x20```\n\x20const\x20n\x20=\x203\n\x20\ + \x20\x20\x20\x20\x20\x20^\x20range\n\x20^^^^^^^^^^^\x20enclosing_range\n\ + \n\x20/**\x20Parses\x20the\x20string\x20into\x20something\x20*/\n\x20^\ + \x20enclosing_range\x20start\x20--------------------------------------|\ + \n\x20function\x20parse(input\x20string):\x20string\x20{\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20|\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^^^^^\x20range\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20|\n\x20\x20\x20\x20\x20return\x20input.slice(n)\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + |\n\x20}\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20|\n\x20^\x20enclosing_range\x20end\ + \x20<---------------------------------------|\n\x20```\n\x20For\x20refer\ + ence\x20occurrences,\x20the\x20enclosing\x20range\x20should\x20indicate\ + \x20the\x20start/end\n\x20bounds\x20of\x20the\x20parent\x20expression.\n\ + \x20```\n\x20const\x20a\x20=\x20a.b\n\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20\x20\x20\x20\x20^\x20range\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20^^^\x20enclosing_range\n\x20const\x20b\x20=\x20a.b(41).f(42).g(43)\n\ + \x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\ + \x20^\x20range\n\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20^^^^^^^^^^^^\ + ^\x20enclosing_range\n\x20```\n\n\r\n\x05\x04\t\x02\x06\x04\x12\x04\xbf\ + \x03\x02\n\n\r\n\x05\x04\t\x02\x06\x05\x12\x04\xbf\x03\x0b\x10\n\r\n\x05\ + \x04\t\x02\x06\x01\x12\x04\xbf\x03\x11\x20\n\r\n\x05\x04\t\x02\x06\x03\ + \x12\x04\xbf\x03#$\nw\n\x02\x04\n\x12\x06\xc4\x03\0\xcf\x03\x01\x1ai\x20\ + Represents\x20a\x20diagnostic,\x20such\x20as\x20a\x20compiler\x20error\ + \x20or\x20warning,\x20which\x20should\x20be\n\x20reported\x20for\x20a\ + \x20document.\n\n\x0b\n\x03\x04\n\x01\x12\x04\xc4\x03\x08\x12\nW\n\x04\ + \x04\n\x02\0\x12\x04\xc6\x03\x02\x18\x1aI\x20Should\x20this\x20diagnosti\ c\x20be\x20reported\x20as\x20an\x20error,\x20warning,\x20info,\x20or\x20\ - hint?\n\n\r\n\x05\x04\n\x02\0\x06\x12\x04\x9e\x03\x02\n\n\r\n\x05\x04\n\ - \x02\0\x01\x12\x04\x9e\x03\x0b\x13\n\r\n\x05\x04\n\x02\0\x03\x12\x04\x9e\ - \x03\x16\x17\n]\n\x04\x04\n\x02\x01\x12\x04\xa0\x03\x02\x12\x1aO\x20(opt\ + hint?\n\n\r\n\x05\x04\n\x02\0\x06\x12\x04\xc6\x03\x02\n\n\r\n\x05\x04\n\ + \x02\0\x01\x12\x04\xc6\x03\x0b\x13\n\r\n\x05\x04\n\x02\0\x03\x12\x04\xc6\ + \x03\x16\x17\n]\n\x04\x04\n\x02\x01\x12\x04\xc8\x03\x02\x12\x1aO\x20(opt\ ional)\x20Code\x20of\x20this\x20diagnostic,\x20which\x20might\x20appear\ \x20in\x20the\x20user\x20interface.\n\n\r\n\x05\x04\n\x02\x01\x05\x12\ - \x04\xa0\x03\x02\x08\n\r\n\x05\x04\n\x02\x01\x01\x12\x04\xa0\x03\t\r\n\r\ - \n\x05\x04\n\x02\x01\x03\x12\x04\xa0\x03\x10\x11\n+\n\x04\x04\n\x02\x02\ - \x12\x04\xa2\x03\x02\x15\x1a\x1d\x20Message\x20of\x20this\x20diagnostic.\ - \n\n\r\n\x05\x04\n\x02\x02\x05\x12\x04\xa2\x03\x02\x08\n\r\n\x05\x04\n\ - \x02\x02\x01\x12\x04\xa2\x03\t\x10\n\r\n\x05\x04\n\x02\x02\x03\x12\x04\ - \xa2\x03\x13\x14\n~\n\x04\x04\n\x02\x03\x12\x04\xa5\x03\x02\x14\x1ap\x20\ + \x04\xc8\x03\x02\x08\n\r\n\x05\x04\n\x02\x01\x01\x12\x04\xc8\x03\t\r\n\r\ + \n\x05\x04\n\x02\x01\x03\x12\x04\xc8\x03\x10\x11\n+\n\x04\x04\n\x02\x02\ + \x12\x04\xca\x03\x02\x15\x1a\x1d\x20Message\x20of\x20this\x20diagnostic.\ + \n\n\r\n\x05\x04\n\x02\x02\x05\x12\x04\xca\x03\x02\x08\n\r\n\x05\x04\n\ + \x02\x02\x01\x12\x04\xca\x03\t\x10\n\r\n\x05\x04\n\x02\x02\x03\x12\x04\ + \xca\x03\x13\x14\n~\n\x04\x04\n\x02\x03\x12\x04\xcd\x03\x02\x14\x1ap\x20\ (optional)\x20Human-readable\x20string\x20describing\x20the\x20source\ \x20of\x20this\x20diagnostic,\x20e.g.\n\x20'typescript'\x20or\x20'super\ - \x20lint'.\n\n\r\n\x05\x04\n\x02\x03\x05\x12\x04\xa5\x03\x02\x08\n\r\n\ - \x05\x04\n\x02\x03\x01\x12\x04\xa5\x03\t\x0f\n\r\n\x05\x04\n\x02\x03\x03\ - \x12\x04\xa5\x03\x12\x13\n\x0c\n\x04\x04\n\x02\x04\x12\x04\xa6\x03\x02\"\ - \n\r\n\x05\x04\n\x02\x04\x04\x12\x04\xa6\x03\x02\n\n\r\n\x05\x04\n\x02\ - \x04\x06\x12\x04\xa6\x03\x0b\x18\n\r\n\x05\x04\n\x02\x04\x01\x12\x04\xa6\ - \x03\x19\x1d\n\r\n\x05\x04\n\x02\x04\x03\x12\x04\xa6\x03\x20!\n\x0c\n\ - \x02\x05\x04\x12\x06\xa9\x03\0\xaf\x03\x01\n\x0b\n\x03\x05\x04\x01\x12\ - \x04\xa9\x03\x05\r\n\x0c\n\x04\x05\x04\x02\0\x12\x04\xaa\x03\x02\x1a\n\r\ - \n\x05\x05\x04\x02\0\x01\x12\x04\xaa\x03\x02\x15\n\r\n\x05\x05\x04\x02\0\ - \x02\x12\x04\xaa\x03\x18\x19\n\x0c\n\x04\x05\x04\x02\x01\x12\x04\xab\x03\ - \x02\x0c\n\r\n\x05\x05\x04\x02\x01\x01\x12\x04\xab\x03\x02\x07\n\r\n\x05\ - \x05\x04\x02\x01\x02\x12\x04\xab\x03\n\x0b\n\x0c\n\x04\x05\x04\x02\x02\ - \x12\x04\xac\x03\x02\x0e\n\r\n\x05\x05\x04\x02\x02\x01\x12\x04\xac\x03\ - \x02\t\n\r\n\x05\x05\x04\x02\x02\x02\x12\x04\xac\x03\x0c\r\n\x0c\n\x04\ - \x05\x04\x02\x03\x12\x04\xad\x03\x02\x12\n\r\n\x05\x05\x04\x02\x03\x01\ - \x12\x04\xad\x03\x02\r\n\r\n\x05\x05\x04\x02\x03\x02\x12\x04\xad\x03\x10\ - \x11\n\x0c\n\x04\x05\x04\x02\x04\x12\x04\xae\x03\x02\x0b\n\r\n\x05\x05\ - \x04\x02\x04\x01\x12\x04\xae\x03\x02\x06\n\r\n\x05\x05\x04\x02\x04\x02\ - \x12\x04\xae\x03\t\n\n\x0c\n\x02\x05\x05\x12\x06\xb1\x03\0\xb5\x03\x01\n\ - \x0b\n\x03\x05\x05\x01\x12\x04\xb1\x03\x05\x12\n\x0c\n\x04\x05\x05\x02\0\ - \x12\x04\xb2\x03\x02\x1f\n\r\n\x05\x05\x05\x02\0\x01\x12\x04\xb2\x03\x02\ - \x1a\n\r\n\x05\x05\x05\x02\0\x02\x12\x04\xb2\x03\x1d\x1e\n\x0c\n\x04\x05\ - \x05\x02\x01\x12\x04\xb3\x03\x02\x12\n\r\n\x05\x05\x05\x02\x01\x01\x12\ - \x04\xb3\x03\x02\r\n\r\n\x05\x05\x05\x02\x01\x02\x12\x04\xb3\x03\x10\x11\ - \n\x0c\n\x04\x05\x05\x02\x02\x12\x04\xb4\x03\x02\x11\n\r\n\x05\x05\x05\ - \x02\x02\x01\x12\x04\xb4\x03\x02\x0c\n\r\n\x05\x05\x05\x02\x02\x02\x12\ - \x04\xb4\x03\x0f\x10\n\xd6\x03\n\x02\x05\x06\x12\x06\xbd\x03\0\xa3\x04\ + \x20lint'.\n\n\r\n\x05\x04\n\x02\x03\x05\x12\x04\xcd\x03\x02\x08\n\r\n\ + \x05\x04\n\x02\x03\x01\x12\x04\xcd\x03\t\x0f\n\r\n\x05\x04\n\x02\x03\x03\ + \x12\x04\xcd\x03\x12\x13\n\x0c\n\x04\x04\n\x02\x04\x12\x04\xce\x03\x02\"\ + \n\r\n\x05\x04\n\x02\x04\x04\x12\x04\xce\x03\x02\n\n\r\n\x05\x04\n\x02\ + \x04\x06\x12\x04\xce\x03\x0b\x18\n\r\n\x05\x04\n\x02\x04\x01\x12\x04\xce\ + \x03\x19\x1d\n\r\n\x05\x04\n\x02\x04\x03\x12\x04\xce\x03\x20!\n\x0c\n\ + \x02\x05\x04\x12\x06\xd1\x03\0\xd7\x03\x01\n\x0b\n\x03\x05\x04\x01\x12\ + \x04\xd1\x03\x05\r\n\x0c\n\x04\x05\x04\x02\0\x12\x04\xd2\x03\x02\x1a\n\r\ + \n\x05\x05\x04\x02\0\x01\x12\x04\xd2\x03\x02\x15\n\r\n\x05\x05\x04\x02\0\ + \x02\x12\x04\xd2\x03\x18\x19\n\x0c\n\x04\x05\x04\x02\x01\x12\x04\xd3\x03\ + \x02\x0c\n\r\n\x05\x05\x04\x02\x01\x01\x12\x04\xd3\x03\x02\x07\n\r\n\x05\ + \x05\x04\x02\x01\x02\x12\x04\xd3\x03\n\x0b\n\x0c\n\x04\x05\x04\x02\x02\ + \x12\x04\xd4\x03\x02\x0e\n\r\n\x05\x05\x04\x02\x02\x01\x12\x04\xd4\x03\ + \x02\t\n\r\n\x05\x05\x04\x02\x02\x02\x12\x04\xd4\x03\x0c\r\n\x0c\n\x04\ + \x05\x04\x02\x03\x12\x04\xd5\x03\x02\x12\n\r\n\x05\x05\x04\x02\x03\x01\ + \x12\x04\xd5\x03\x02\r\n\r\n\x05\x05\x04\x02\x03\x02\x12\x04\xd5\x03\x10\ + \x11\n\x0c\n\x04\x05\x04\x02\x04\x12\x04\xd6\x03\x02\x0b\n\r\n\x05\x05\ + \x04\x02\x04\x01\x12\x04\xd6\x03\x02\x06\n\r\n\x05\x05\x04\x02\x04\x02\ + \x12\x04\xd6\x03\t\n\n\x0c\n\x02\x05\x05\x12\x06\xd9\x03\0\xdd\x03\x01\n\ + \x0b\n\x03\x05\x05\x01\x12\x04\xd9\x03\x05\x12\n\x0c\n\x04\x05\x05\x02\0\ + \x12\x04\xda\x03\x02\x1f\n\r\n\x05\x05\x05\x02\0\x01\x12\x04\xda\x03\x02\ + \x1a\n\r\n\x05\x05\x05\x02\0\x02\x12\x04\xda\x03\x1d\x1e\n\x0c\n\x04\x05\ + \x05\x02\x01\x12\x04\xdb\x03\x02\x12\n\r\n\x05\x05\x05\x02\x01\x01\x12\ + \x04\xdb\x03\x02\r\n\r\n\x05\x05\x05\x02\x01\x02\x12\x04\xdb\x03\x10\x11\ + \n\x0c\n\x04\x05\x05\x02\x02\x12\x04\xdc\x03\x02\x11\n\r\n\x05\x05\x05\ + \x02\x02\x01\x12\x04\xdc\x03\x02\x0c\n\r\n\x05\x05\x05\x02\x02\x02\x12\ + \x04\xdc\x03\x0f\x10\n\xd6\x03\n\x02\x05\x06\x12\x06\xe5\x03\0\xcb\x04\ \x01\x1a\xc7\x03\x20Language\x20standardises\x20names\x20of\x20common\ \x20programming\x20languages\x20that\x20can\x20be\x20used\n\x20for\x20th\ e\x20`Document.language`\x20field.\x20The\x20primary\x20purpose\x20of\ @@ -4084,209 +4149,209 @@ static file_descriptor_proto_data: &'static [u8] = b"\ his\x20enum\x20and\x20other\x20names\x20such\x20as\x20\"cpp\"\x20are\x20\ incompatible.\n\x20Feel\x20free\x20to\x20send\x20a\x20pull-request\x20to\ \x20add\x20missing\x20programming\x20languages.\n\n\x0b\n\x03\x05\x06\ - \x01\x12\x04\xbd\x03\x05\r\n\x0c\n\x04\x05\x06\x02\0\x12\x04\xbe\x03\x02\ - \x1a\n\r\n\x05\x05\x06\x02\0\x01\x12\x04\xbe\x03\x02\x15\n\r\n\x05\x05\ - \x06\x02\0\x02\x12\x04\xbe\x03\x18\x19\n\x0c\n\x04\x05\x06\x02\x01\x12\ - \x04\xbf\x03\x02\x0c\n\r\n\x05\x05\x06\x02\x01\x01\x12\x04\xbf\x03\x02\ - \x06\n\r\n\x05\x05\x06\x02\x01\x02\x12\x04\xbf\x03\t\x0b\n\x0c\n\x04\x05\ - \x06\x02\x02\x12\x04\xc0\x03\x02\x0b\n\r\n\x05\x05\x06\x02\x02\x01\x12\ - \x04\xc0\x03\x02\x05\n\r\n\x05\x05\x06\x02\x02\x02\x12\x04\xc0\x03\x08\n\ - \n\x0c\n\x04\x05\x06\x02\x03\x12\x04\xc1\x03\x02\x0b\n\r\n\x05\x05\x06\ - \x02\x03\x01\x12\x04\xc1\x03\x02\x05\n\r\n\x05\x05\x06\x02\x03\x02\x12\ - \x04\xc1\x03\x08\n\n\x0c\n\x04\x05\x06\x02\x04\x12\x04\xc2\x03\x02\x0c\n\ - \r\n\x05\x05\x06\x02\x04\x01\x12\x04\xc2\x03\x02\x06\n\r\n\x05\x05\x06\ - \x02\x04\x02\x12\x04\xc2\x03\t\x0b\n\x0c\n\x04\x05\x06\x02\x05\x12\x04\ - \xc3\x03\x02\x10\n\r\n\x05\x05\x06\x02\x05\x01\x12\x04\xc3\x03\x02\n\n\r\ - \n\x05\x05\x06\x02\x05\x02\x12\x04\xc3\x03\r\x0f\n\x0c\n\x04\x05\x06\x02\ - \x06\x12\x04\xc4\x03\x02\x10\n\r\n\x05\x05\x06\x02\x06\x01\x12\x04\xc4\ - \x03\x02\n\n\r\n\x05\x05\x06\x02\x06\x02\x12\x04\xc4\x03\r\x0f\n\x0c\n\ - \x04\x05\x06\x02\x07\x12\x04\xc5\x03\x02\x0b\n\r\n\x05\x05\x06\x02\x07\ - \x01\x12\x04\xc5\x03\x02\x05\n\r\n\x05\x05\x06\x02\x07\x02\x12\x04\xc5\ - \x03\x08\n\n\x0c\n\x04\x05\x06\x02\x08\x12\x04\xc6\x03\x02\x0b\n\r\n\x05\ - \x05\x06\x02\x08\x01\x12\x04\xc6\x03\x02\x05\n\r\n\x05\x05\x06\x02\x08\ - \x02\x12\x04\xc6\x03\x08\n\n\x0c\n\x04\x05\x06\x02\t\x12\x04\xc7\x03\x02\ - \x0e\n\r\n\x05\x05\x06\x02\t\x01\x12\x04\xc7\x03\x02\x08\n\r\n\x05\x05\ - \x06\x02\t\x02\x12\x04\xc7\x03\x0b\r\n\x0c\n\x04\x05\x06\x02\n\x12\x04\ - \xc8\x03\x02\t\n\r\n\x05\x05\x06\x02\n\x01\x12\x04\xc8\x03\x02\x03\n\r\n\ - \x05\x05\x06\x02\n\x02\x12\x04\xc8\x03\x06\x08\n\x0c\n\x04\x05\x06\x02\ - \x0b\x12\x04\xc9\x03\x02\r\n\r\n\x05\x05\x06\x02\x0b\x01\x12\x04\xc9\x03\ - \x02\x07\n\r\n\x05\x05\x06\x02\x0b\x02\x12\x04\xc9\x03\n\x0c\nH\n\x04\ - \x05\x06\x02\x0c\x12\x04\xca\x03\x02\x0b\":\x20C++\x20(the\x20name\x20\"\ + \x01\x12\x04\xe5\x03\x05\r\n\x0c\n\x04\x05\x06\x02\0\x12\x04\xe6\x03\x02\ + \x1a\n\r\n\x05\x05\x06\x02\0\x01\x12\x04\xe6\x03\x02\x15\n\r\n\x05\x05\ + \x06\x02\0\x02\x12\x04\xe6\x03\x18\x19\n\x0c\n\x04\x05\x06\x02\x01\x12\ + \x04\xe7\x03\x02\x0c\n\r\n\x05\x05\x06\x02\x01\x01\x12\x04\xe7\x03\x02\ + \x06\n\r\n\x05\x05\x06\x02\x01\x02\x12\x04\xe7\x03\t\x0b\n\x0c\n\x04\x05\ + \x06\x02\x02\x12\x04\xe8\x03\x02\x0b\n\r\n\x05\x05\x06\x02\x02\x01\x12\ + \x04\xe8\x03\x02\x05\n\r\n\x05\x05\x06\x02\x02\x02\x12\x04\xe8\x03\x08\n\ + \n\x0c\n\x04\x05\x06\x02\x03\x12\x04\xe9\x03\x02\x0b\n\r\n\x05\x05\x06\ + \x02\x03\x01\x12\x04\xe9\x03\x02\x05\n\r\n\x05\x05\x06\x02\x03\x02\x12\ + \x04\xe9\x03\x08\n\n\x0c\n\x04\x05\x06\x02\x04\x12\x04\xea\x03\x02\x0c\n\ + \r\n\x05\x05\x06\x02\x04\x01\x12\x04\xea\x03\x02\x06\n\r\n\x05\x05\x06\ + \x02\x04\x02\x12\x04\xea\x03\t\x0b\n\x0c\n\x04\x05\x06\x02\x05\x12\x04\ + \xeb\x03\x02\x10\n\r\n\x05\x05\x06\x02\x05\x01\x12\x04\xeb\x03\x02\n\n\r\ + \n\x05\x05\x06\x02\x05\x02\x12\x04\xeb\x03\r\x0f\n\x0c\n\x04\x05\x06\x02\ + \x06\x12\x04\xec\x03\x02\x10\n\r\n\x05\x05\x06\x02\x06\x01\x12\x04\xec\ + \x03\x02\n\n\r\n\x05\x05\x06\x02\x06\x02\x12\x04\xec\x03\r\x0f\n\x0c\n\ + \x04\x05\x06\x02\x07\x12\x04\xed\x03\x02\x0b\n\r\n\x05\x05\x06\x02\x07\ + \x01\x12\x04\xed\x03\x02\x05\n\r\n\x05\x05\x06\x02\x07\x02\x12\x04\xed\ + \x03\x08\n\n\x0c\n\x04\x05\x06\x02\x08\x12\x04\xee\x03\x02\x0b\n\r\n\x05\ + \x05\x06\x02\x08\x01\x12\x04\xee\x03\x02\x05\n\r\n\x05\x05\x06\x02\x08\ + \x02\x12\x04\xee\x03\x08\n\n\x0c\n\x04\x05\x06\x02\t\x12\x04\xef\x03\x02\ + \x0e\n\r\n\x05\x05\x06\x02\t\x01\x12\x04\xef\x03\x02\x08\n\r\n\x05\x05\ + \x06\x02\t\x02\x12\x04\xef\x03\x0b\r\n\x0c\n\x04\x05\x06\x02\n\x12\x04\ + \xf0\x03\x02\t\n\r\n\x05\x05\x06\x02\n\x01\x12\x04\xf0\x03\x02\x03\n\r\n\ + \x05\x05\x06\x02\n\x02\x12\x04\xf0\x03\x06\x08\n\x0c\n\x04\x05\x06\x02\ + \x0b\x12\x04\xf1\x03\x02\r\n\r\n\x05\x05\x06\x02\x0b\x01\x12\x04\xf1\x03\ + \x02\x07\n\r\n\x05\x05\x06\x02\x0b\x02\x12\x04\xf1\x03\n\x0c\nH\n\x04\ + \x05\x06\x02\x0c\x12\x04\xf2\x03\x02\x0b\":\x20C++\x20(the\x20name\x20\"\ CPP\"\x20was\x20chosen\x20for\x20consistency\x20with\x20LSP)\n\n\r\n\x05\ - \x05\x06\x02\x0c\x01\x12\x04\xca\x03\x02\x05\n\r\n\x05\x05\x06\x02\x0c\ - \x02\x12\x04\xca\x03\x08\n\n\x0c\n\x04\x05\x06\x02\r\x12\x04\xcb\x03\x02\ - \x0b\n\r\n\x05\x05\x06\x02\r\x01\x12\x04\xcb\x03\x02\x05\n\r\n\x05\x05\ - \x06\x02\r\x02\x12\x04\xcb\x03\x08\n\n\x0c\n\x04\x05\x06\x02\x0e\x12\x04\ - \xcc\x03\x02\r\n\r\n\x05\x05\x06\x02\x0e\x01\x12\x04\xcc\x03\x02\x08\n\r\ - \n\x05\x05\x06\x02\x0e\x02\x12\x04\xcc\x03\x0b\x0c\n\x0c\n\x04\x05\x06\ - \x02\x0f\x12\x04\xcd\x03\x02\x0e\n\r\n\x05\x05\x06\x02\x0f\x01\x12\x04\ - \xcd\x03\x02\t\n\r\n\x05\x05\x06\x02\x0f\x02\x12\x04\xcd\x03\x0c\r\n\x0c\ - \n\x04\x05\x06\x02\x10\x12\x04\xce\x03\x02\x14\n\r\n\x05\x05\x06\x02\x10\ - \x01\x12\x04\xce\x03\x02\x0e\n\r\n\x05\x05\x06\x02\x10\x02\x12\x04\xce\ - \x03\x11\x13\n\x0c\n\x04\x05\x06\x02\x11\x12\x04\xcf\x03\x02\x11\n\r\n\ - \x05\x05\x06\x02\x11\x01\x12\x04\xcf\x03\x02\x0c\n\r\n\x05\x05\x06\x02\ - \x11\x02\x12\x04\xcf\x03\x0f\x10\n\x0c\n\x04\x05\x06\x02\x12\x12\x04\xd0\ - \x03\x02\x0b\n\r\n\x05\x05\x06\x02\x12\x01\x12\x04\xd0\x03\x02\x05\n\r\n\ - \x05\x05\x06\x02\x12\x02\x12\x04\xd0\x03\x08\n\n\x0c\n\x04\x05\x06\x02\ - \x13\x12\x04\xd1\x03\x02\x0b\n\r\n\x05\x05\x06\x02\x13\x01\x12\x04\xd1\ - \x03\x02\x06\n\r\n\x05\x05\x06\x02\x13\x02\x12\x04\xd1\x03\t\n\n\x0c\n\ - \x04\x05\x06\x02\x14\x12\x04\xd2\x03\x02\x0e\n\r\n\x05\x05\x06\x02\x14\ - \x01\x12\x04\xd2\x03\x02\x08\n\r\n\x05\x05\x06\x02\x14\x02\x12\x04\xd2\ - \x03\x0b\r\n\x0c\n\x04\x05\x06\x02\x15\x12\x04\xd3\x03\x02\x0c\n\r\n\x05\ - \x05\x06\x02\x15\x01\x12\x04\xd3\x03\x02\x06\n\r\n\x05\x05\x06\x02\x15\ - \x02\x12\x04\xd3\x03\t\x0b\n\x0c\n\x04\x05\x06\x02\x16\x12\x04\xd4\x03\ - \x02\x12\n\r\n\x05\x05\x06\x02\x16\x01\x12\x04\xd4\x03\x02\x0c\n\r\n\x05\ - \x05\x06\x02\x16\x02\x12\x04\xd4\x03\x0f\x11\n\x0c\n\x04\x05\x06\x02\x17\ - \x12\x04\xd5\x03\x02\x0e\n\r\n\x05\x05\x06\x02\x17\x01\x12\x04\xd5\x03\ - \x02\x08\n\r\n\x05\x05\x06\x02\x17\x02\x12\x04\xd5\x03\x0b\r\n\x0c\n\x04\ - \x05\x06\x02\x18\x12\x04\xd6\x03\x02\x0e\n\r\n\x05\x05\x06\x02\x18\x01\ - \x12\x04\xd6\x03\x02\x08\n\r\n\x05\x05\x06\x02\x18\x02\x12\x04\xd6\x03\ - \x0b\r\n\x0c\n\x04\x05\x06\x02\x19\x12\x04\xd7\x03\x02\x0e\n\r\n\x05\x05\ - \x06\x02\x19\x01\x12\x04\xd7\x03\x02\x08\n\r\n\x05\x05\x06\x02\x19\x02\ - \x12\x04\xd7\x03\x0b\r\n\x0c\n\x04\x05\x06\x02\x1a\x12\x04\xd8\x03\x02\ - \x0e\n\r\n\x05\x05\x06\x02\x1a\x01\x12\x04\xd8\x03\x02\x08\n\r\n\x05\x05\ - \x06\x02\x1a\x02\x12\x04\xd8\x03\x0b\r\n\x0c\n\x04\x05\x06\x02\x1b\x12\ - \x04\xd9\x03\x02\x0c\n\r\n\x05\x05\x06\x02\x1b\x01\x12\x04\xd9\x03\x02\ - \x06\n\r\n\x05\x05\x06\x02\x1b\x02\x12\x04\xd9\x03\t\x0b\n\x0c\n\x04\x05\ - \x06\x02\x1c\x12\x04\xda\x03\x02\x0c\n\r\n\x05\x05\x06\x02\x1c\x01\x12\ - \x04\xda\x03\x02\x06\n\r\n\x05\x05\x06\x02\x1c\x02\x12\x04\xda\x03\t\x0b\ - \n\x0c\n\x04\x05\x06\x02\x1d\x12\x04\xdb\x03\x02\x0f\n\r\n\x05\x05\x06\ - \x02\x1d\x01\x12\x04\xdb\x03\x02\t\n\r\n\x05\x05\x06\x02\x1d\x02\x12\x04\ - \xdb\x03\x0c\x0e\n\x0c\n\x04\x05\x06\x02\x1e\x12\x04\xdc\x03\x02\x12\n\r\ - \n\x05\x05\x06\x02\x1e\x01\x12\x04\xdc\x03\x02\x0c\n\r\n\x05\x05\x06\x02\ - \x1e\x02\x12\x04\xdc\x03\x0f\x11\n\x0c\n\x04\x05\x06\x02\x1f\x12\x04\xdd\ - \x03\x02\x12\n\r\n\x05\x05\x06\x02\x1f\x01\x12\x04\xdd\x03\x02\x0c\n\r\n\ - \x05\x05\x06\x02\x1f\x02\x12\x04\xdd\x03\x0f\x11\n\x0c\n\x04\x05\x06\x02\ - \x20\x12\x04\xde\x03\x02\x12\n\r\n\x05\x05\x06\x02\x20\x01\x12\x04\xde\ - \x03\x02\x0c\n\r\n\x05\x05\x06\x02\x20\x02\x12\x04\xde\x03\x0f\x11\n\x0c\ - \n\x04\x05\x06\x02!\x12\x04\xdf\x03\x02\n\n\r\n\x05\x05\x06\x02!\x01\x12\ - \x04\xdf\x03\x02\x04\n\r\n\x05\x05\x06\x02!\x02\x12\x04\xdf\x03\x07\t\n\ - \x0c\n\x04\x05\x06\x02\"\x12\x04\xe0\x03\x02\r\n\r\n\x05\x05\x06\x02\"\ - \x01\x12\x04\xe0\x03\x02\x08\n\r\n\x05\x05\x06\x02\"\x02\x12\x04\xe0\x03\ - \x0b\x0c\n\x0c\n\x04\x05\x06\x02#\x12\x04\xe1\x03\x02\x0c\n\r\n\x05\x05\ - \x06\x02#\x01\x12\x04\xe1\x03\x02\x06\n\r\n\x05\x05\x06\x02#\x02\x12\x04\ - \xe1\x03\t\x0b\n\x0c\n\x04\x05\x06\x02$\x12\x04\xe2\x03\x02\x0c\n\r\n\ - \x05\x05\x06\x02$\x01\x12\x04\xe2\x03\x02\x06\n\r\n\x05\x05\x06\x02$\x02\ - \x12\x04\xe2\x03\t\x0b\n\x0c\n\x04\x05\x06\x02%\x12\x04\xe3\x03\x02\x12\ - \n\r\n\x05\x05\x06\x02%\x01\x12\x04\xe3\x03\x02\x0c\n\r\n\x05\x05\x06\ - \x02%\x02\x12\x04\xe3\x03\x0f\x11\n\x0c\n\x04\x05\x06\x02&\x12\x04\xe4\ - \x03\x02\x0f\n\r\n\x05\x05\x06\x02&\x01\x12\x04\xe4\x03\x02\t\n\r\n\x05\ - \x05\x06\x02&\x02\x12\x04\xe4\x03\x0c\x0e\n\x0c\n\x04\x05\x06\x02'\x12\ - \x04\xe5\x03\x02\r\n\r\n\x05\x05\x06\x02'\x01\x12\x04\xe5\x03\x02\x07\n\ - \r\n\x05\x05\x06\x02'\x02\x12\x04\xe5\x03\n\x0c\n\x0c\n\x04\x05\x06\x02(\ - \x12\x04\xe6\x03\x02\x0b\n\r\n\x05\x05\x06\x02(\x01\x12\x04\xe6\x03\x02\ - \x05\n\r\n\x05\x05\x06\x02(\x02\x12\x04\xe6\x03\x08\n\n\x0c\n\x04\x05\ - \x06\x02)\x12\x04\xe7\x03\x02\t\n\r\n\x05\x05\x06\x02)\x01\x12\x04\xe7\ - \x03\x02\x03\n\r\n\x05\x05\x06\x02)\x02\x12\x04\xe7\x03\x06\x08\n\x0c\n\ - \x04\x05\x06\x02*\x12\x04\xe8\x03\x02\x0c\n\r\n\x05\x05\x06\x02*\x01\x12\ - \x04\xe8\x03\x02\x06\n\r\n\x05\x05\x06\x02*\x02\x12\x04\xe8\x03\t\x0b\n\ - \x0c\n\x04\x05\x06\x02+\x12\x04\xe9\x03\x02\x0b\n\r\n\x05\x05\x06\x02+\ - \x01\x12\x04\xe9\x03\x02\x06\n\r\n\x05\x05\x06\x02+\x02\x12\x04\xe9\x03\ - \t\n\n\x0c\n\x04\x05\x06\x02,\x12\x04\xea\x03\x02\x12\n\r\n\x05\x05\x06\ - \x02,\x01\x12\x04\xea\x03\x02\x0c\n\r\n\x05\x05\x06\x02,\x02\x12\x04\xea\ - \x03\x0f\x11\n\x0c\n\x04\x05\x06\x02-\x12\x04\xeb\x03\x02\x17\n\r\n\x05\ - \x05\x06\x02-\x01\x12\x04\xeb\x03\x02\x11\n\r\n\x05\x05\x06\x02-\x02\x12\ - \x04\xeb\x03\x14\x16\n\x0c\n\x04\x05\x06\x02.\x12\x04\xec\x03\x02\x0f\n\ - \r\n\x05\x05\x06\x02.\x01\x12\x04\xec\x03\x02\t\n\r\n\x05\x05\x06\x02.\ - \x02\x12\x04\xec\x03\x0c\x0e\n\x0c\n\x04\x05\x06\x02/\x12\x04\xed\x03\ - \x02\x0e\n\r\n\x05\x05\x06\x02/\x01\x12\x04\xed\x03\x02\x07\n\r\n\x05\ - \x05\x06\x02/\x02\x12\x04\xed\x03\x0b\r\n\x0c\n\x04\x05\x06\x020\x12\x04\ - \xee\x03\x02\r\n\r\n\x05\x05\x06\x020\x01\x12\x04\xee\x03\x02\x08\n\r\n\ - \x05\x05\x06\x020\x02\x12\x04\xee\x03\x0b\x0c\n\x0c\n\x04\x05\x06\x021\ - \x12\x04\xef\x03\x02\r\n\r\n\x05\x05\x06\x021\x01\x12\x04\xef\x03\x02\ - \x07\n\r\n\x05\x05\x06\x021\x02\x12\x04\xef\x03\n\x0c\n\x0c\n\x04\x05\ - \x06\x022\x12\x04\xf0\x03\x02\x0c\n\r\n\x05\x05\x06\x022\x01\x12\x04\xf0\ - \x03\x02\x06\n\r\n\x05\x05\x06\x022\x02\x12\x04\xf0\x03\t\x0b\n\x0c\n\ - \x04\x05\x06\x023\x12\x04\xf1\x03\x02\x0c\n\r\n\x05\x05\x06\x023\x01\x12\ - \x04\xf1\x03\x02\x06\n\r\n\x05\x05\x06\x023\x02\x12\x04\xf1\x03\t\x0b\n\ - \x0c\n\x04\x05\x06\x024\x12\x04\xf2\x03\x02\x0b\n\r\n\x05\x05\x06\x024\ - \x01\x12\x04\xf2\x03\x02\x05\n\r\n\x05\x05\x06\x024\x02\x12\x04\xf2\x03\ - \x08\n\n\x0c\n\x04\x05\x06\x025\x12\x04\xf3\x03\x02\x10\n\r\n\x05\x05\ - \x06\x025\x01\x12\x04\xf3\x03\x02\n\n\r\n\x05\x05\x06\x025\x02\x12\x04\ - \xf3\x03\r\x0f\n\x0c\n\x04\x05\x06\x026\x12\x04\xf4\x03\x02\x10\n\r\n\ - \x05\x05\x06\x026\x01\x12\x04\xf4\x03\x02\n\n\r\n\x05\x05\x06\x026\x02\ - \x12\x04\xf4\x03\r\x0f\n\x0c\n\x04\x05\x06\x027\x12\x04\xf5\x03\x02\x0e\ - \n\r\n\x05\x05\x06\x027\x01\x12\x04\xf5\x03\x02\x08\n\r\n\x05\x05\x06\ - \x027\x02\x12\x04\xf5\x03\x0b\r\n\x0c\n\x04\x05\x06\x028\x12\x04\xf6\x03\ - \x02\x0b\n\r\n\x05\x05\x06\x028\x01\x12\x04\xf6\x03\x02\x05\n\r\n\x05\ - \x05\x06\x028\x02\x12\x04\xf6\x03\x08\n\n\x0c\n\x04\x05\x06\x029\x12\x04\ - \xf7\x03\x02\r\n\r\n\x05\x05\x06\x029\x01\x12\x04\xf7\x03\x02\x07\n\r\n\ - \x05\x05\x06\x029\x02\x12\x04\xf7\x03\n\x0c\n\x0c\n\x04\x05\x06\x02:\x12\ - \x04\xf8\x03\x02\x13\n\r\n\x05\x05\x06\x02:\x01\x12\x04\xf8\x03\x02\r\n\ - \r\n\x05\x05\x06\x02:\x02\x12\x04\xf8\x03\x10\x12\n\x0c\n\x04\x05\x06\ - \x02;\x12\x04\xf9\x03\x02\x15\n\r\n\x05\x05\x06\x02;\x01\x12\x04\xf9\x03\ - \x02\x0f\n\r\n\x05\x05\x06\x02;\x02\x12\x04\xf9\x03\x12\x14\n\x0c\n\x04\ - \x05\x06\x02<\x12\x04\xfa\x03\x02\x0b\n\r\n\x05\x05\x06\x02<\x01\x12\x04\ - \xfa\x03\x02\x05\n\r\n\x05\x05\x06\x02<\x02\x12\x04\xfa\x03\x08\n\n\x0c\ - \n\x04\x05\x06\x02=\x12\x04\xfb\x03\x02\r\n\r\n\x05\x05\x06\x02=\x01\x12\ - \x04\xfb\x03\x02\x07\n\r\n\x05\x05\x06\x02=\x02\x12\x04\xfb\x03\n\x0c\n\ - \x0c\n\x04\x05\x06\x02>\x12\x04\xfc\x03\x02\x0c\n\r\n\x05\x05\x06\x02>\ - \x01\x12\x04\xfc\x03\x02\x06\n\r\n\x05\x05\x06\x02>\x02\x12\x04\xfc\x03\ - \t\x0b\n\x0c\n\x04\x05\x06\x02?\x12\x04\xfd\x03\x02\x12\n\r\n\x05\x05\ - \x06\x02?\x01\x12\x04\xfd\x03\x02\x0c\n\r\n\x05\x05\x06\x02?\x02\x12\x04\ - \xfd\x03\x0f\x11\n\x0c\n\x04\x05\x06\x02@\x12\x04\xfe\x03\x02\x0e\n\r\n\ - \x05\x05\x06\x02@\x01\x12\x04\xfe\x03\x02\x08\n\r\n\x05\x05\x06\x02@\x02\ - \x12\x04\xfe\x03\x0b\r\n\x0c\n\x04\x05\x06\x02A\x12\x04\xff\x03\x02\x0e\ - \n\r\n\x05\x05\x06\x02A\x01\x12\x04\xff\x03\x02\x08\n\r\n\x05\x05\x06\ - \x02A\x02\x12\x04\xff\x03\x0b\r\n\x0c\n\x04\x05\x06\x02B\x12\x04\x80\x04\ - \x02\t\n\r\n\x05\x05\x06\x02B\x01\x12\x04\x80\x04\x02\x03\n\r\n\x05\x05\ - \x06\x02B\x02\x12\x04\x80\x04\x06\x08\n\x0c\n\x04\x05\x06\x02C\x12\x04\ - \x81\x04\x02\x0e\n\r\n\x05\x05\x06\x02C\x01\x12\x04\x81\x04\x02\x08\n\r\ - \n\x05\x05\x06\x02C\x02\x12\x04\x81\x04\x0b\r\n\x0c\n\x04\x05\x06\x02D\ - \x12\x04\x82\x04\x02\x0c\n\r\n\x05\x05\x06\x02D\x01\x12\x04\x82\x04\x02\ - \x06\n\r\n\x05\x05\x06\x02D\x02\x12\x04\x82\x04\t\x0b\n\x0c\n\x04\x05\ - \x06\x02E\x12\x04\x83\x04\x02\r\n\r\n\x05\x05\x06\x02E\x01\x12\x04\x83\ - \x04\x02\x07\n\r\n\x05\x05\x06\x02E\x02\x12\x04\x83\x04\n\x0c\n\x0c\n\ - \x04\x05\x06\x02F\x12\x04\x84\x04\x02\x0c\n\r\n\x05\x05\x06\x02F\x01\x12\ - \x04\x84\x04\x02\x06\n\r\n\x05\x05\x06\x02F\x02\x12\x04\x84\x04\t\x0b\n\ - \x0c\n\x04\x05\x06\x02G\x12\x04\x85\x04\x02\x0c\n\r\n\x05\x05\x06\x02G\ - \x01\x12\x04\x85\x04\x02\x06\n\r\n\x05\x05\x06\x02G\x02\x12\x04\x85\x04\ - \t\x0b\n\x0c\n\x04\x05\x06\x02H\x12\x04\x86\x04\x02\x0c\n\r\n\x05\x05\ - \x06\x02H\x01\x12\x04\x86\x04\x02\x06\n\r\n\x05\x05\x06\x02H\x02\x12\x04\ - \x86\x04\t\x0b\n\x0c\n\x04\x05\x06\x02I\x12\x04\x87\x04\x02\x0b\n\r\n\ - \x05\x05\x06\x02I\x01\x12\x04\x87\x04\x02\x05\n\r\n\x05\x05\x06\x02I\x02\ - \x12\x04\x87\x04\x08\n\n\x0c\n\x04\x05\x06\x02J\x12\x04\x88\x04\x02\x0c\ - \n\r\n\x05\x05\x06\x02J\x01\x12\x04\x88\x04\x02\x06\n\r\n\x05\x05\x06\ - \x02J\x02\x12\x04\x88\x04\t\x0b\n\x0c\n\x04\x05\x06\x02K\x12\x04\x89\x04\ - \x02\x0b\n\r\n\x05\x05\x06\x02K\x01\x12\x04\x89\x04\x02\x05\n\r\n\x05\ - \x05\x06\x02K\x02\x12\x04\x89\x04\x08\n\n\x0c\n\x04\x05\x06\x02L\x12\x04\ - \x8a\x04\x02\x0b\n\r\n\x05\x05\x06\x02L\x01\x12\x04\x8a\x04\x02\x05\n\r\ - \n\x05\x05\x06\x02L\x02\x12\x04\x8a\x04\x08\n\n\x0c\n\x04\x05\x06\x02M\ - \x12\x04\x8b\x04\x02\x0c\n\r\n\x05\x05\x06\x02M\x01\x12\x04\x8b\x04\x02\ - \x06\n\r\n\x05\x05\x06\x02M\x02\x12\x04\x8b\x04\t\x0b\n\x0c\n\x04\x05\ - \x06\x02N\x12\x04\x8c\x04\x02\x0c\n\r\n\x05\x05\x06\x02N\x01\x12\x04\x8c\ - \x04\x02\x07\n\r\n\x05\x05\x06\x02N\x02\x12\x04\x8c\x04\n\x0b\n\x0c\n\ - \x04\x05\x06\x02O\x12\x04\x8d\x04\x02\x0e\n\r\n\x05\x05\x06\x02O\x01\x12\ - \x04\x8d\x04\x02\x08\n\r\n\x05\x05\x06\x02O\x02\x12\x04\x8d\x04\x0b\r\n\ - \x14\n\x04\x05\x06\x02P\x12\x04\x8e\x04\x02\x13\"\x06\x20Bash\n\n\r\n\ - \x05\x05\x06\x02P\x01\x12\x04\x8e\x04\x02\r\n\r\n\x05\x05\x06\x02P\x02\ - \x12\x04\x8e\x04\x10\x12\n\x0c\n\x04\x05\x06\x02Q\x12\x04\x8f\x04\x02\ - \x0f\n\r\n\x05\x05\x06\x02Q\x01\x12\x04\x8f\x04\x02\t\n\r\n\x05\x05\x06\ - \x02Q\x02\x12\x04\x8f\x04\x0c\x0e\n\x0c\n\x04\x05\x06\x02R\x12\x04\x90\ - \x04\x02\x0c\n\r\n\x05\x05\x06\x02R\x01\x12\x04\x90\x04\x02\x07\n\r\n\ - \x05\x05\x06\x02R\x02\x12\x04\x90\x04\n\x0b\n\x0c\n\x04\x05\x06\x02S\x12\ - \x04\x91\x04\x02\x0c\n\r\n\x05\x05\x06\x02S\x01\x12\x04\x91\x04\x02\x06\ - \n\r\n\x05\x05\x06\x02S\x02\x12\x04\x91\x04\t\x0b\n\x0c\n\x04\x05\x06\ - \x02T\x12\x04\x92\x04\x02\x0b\n\r\n\x05\x05\x06\x02T\x01\x12\x04\x92\x04\ - \x02\x05\n\r\n\x05\x05\x06\x02T\x02\x12\x04\x92\x04\x08\n\n\x0c\n\x04\ - \x05\x06\x02U\x12\x04\x93\x04\x02\x12\n\r\n\x05\x05\x06\x02U\x01\x12\x04\ - \x93\x04\x02\x0c\n\r\n\x05\x05\x06\x02U\x02\x12\x04\x93\x04\x0f\x11\n\ - \x0c\n\x04\x05\x06\x02V\x12\x04\x94\x04\x02\x17\n\r\n\x05\x05\x06\x02V\ - \x01\x12\x04\x94\x04\x02\x11\n\r\n\x05\x05\x06\x02V\x02\x12\x04\x94\x04\ - \x14\x16\n\x0c\n\x04\x05\x06\x02W\x12\x04\x95\x04\x02\x13\n\r\n\x05\x05\ - \x06\x02W\x01\x12\x04\x95\x04\x02\r\n\r\n\x05\x05\x06\x02W\x02\x12\x04\ - \x95\x04\x10\x12\n\x0c\n\x04\x05\x06\x02X\x12\x04\x96\x04\x02\x0b\n\r\n\ - \x05\x05\x06\x02X\x01\x12\x04\x96\x04\x02\x05\n\r\n\x05\x05\x06\x02X\x02\ - \x12\x04\x96\x04\x08\n\n\x0c\n\x04\x05\x06\x02Y\x12\x04\x97\x04\x02\x0f\ - \n\r\n\x05\x05\x06\x02Y\x01\x12\x04\x97\x04\x02\t\n\r\n\x05\x05\x06\x02Y\ - \x02\x12\x04\x97\x04\x0c\x0e\n\x0c\n\x04\x05\x06\x02Z\x12\x04\x98\x04\ - \x02\x0b\n\r\n\x05\x05\x06\x02Z\x01\x12\x04\x98\x04\x02\x05\n\r\n\x05\ - \x05\x06\x02Z\x02\x12\x04\x98\x04\x08\n\n\x0c\n\x04\x05\x06\x02[\x12\x04\ - \x99\x04\x02\x0b\n\r\n\x05\x05\x06\x02[\x01\x12\x04\x99\x04\x02\x05\n\r\ - \n\x05\x05\x06\x02[\x02\x12\x04\x99\x04\x08\n\n\x0c\n\x04\x05\x06\x02\\\ - \x12\x04\x9a\x04\x02\x0c\n\r\n\x05\x05\x06\x02\\\x01\x12\x04\x9a\x04\x02\ - \x06\n\r\n\x05\x05\x06\x02\\\x02\x12\x04\x9a\x04\t\x0b\n\x92\x03\n\x04\ - \x05\x06\x02]\x12\x04\x9b\x04\x02\x0b\"\x83\x03\x20NextLanguage\x20=\x20\ + \x05\x06\x02\x0c\x01\x12\x04\xf2\x03\x02\x05\n\r\n\x05\x05\x06\x02\x0c\ + \x02\x12\x04\xf2\x03\x08\n\n\x0c\n\x04\x05\x06\x02\r\x12\x04\xf3\x03\x02\ + \x0b\n\r\n\x05\x05\x06\x02\r\x01\x12\x04\xf3\x03\x02\x05\n\r\n\x05\x05\ + \x06\x02\r\x02\x12\x04\xf3\x03\x08\n\n\x0c\n\x04\x05\x06\x02\x0e\x12\x04\ + \xf4\x03\x02\r\n\r\n\x05\x05\x06\x02\x0e\x01\x12\x04\xf4\x03\x02\x08\n\r\ + \n\x05\x05\x06\x02\x0e\x02\x12\x04\xf4\x03\x0b\x0c\n\x0c\n\x04\x05\x06\ + \x02\x0f\x12\x04\xf5\x03\x02\x0e\n\r\n\x05\x05\x06\x02\x0f\x01\x12\x04\ + \xf5\x03\x02\t\n\r\n\x05\x05\x06\x02\x0f\x02\x12\x04\xf5\x03\x0c\r\n\x0c\ + \n\x04\x05\x06\x02\x10\x12\x04\xf6\x03\x02\x14\n\r\n\x05\x05\x06\x02\x10\ + \x01\x12\x04\xf6\x03\x02\x0e\n\r\n\x05\x05\x06\x02\x10\x02\x12\x04\xf6\ + \x03\x11\x13\n\x0c\n\x04\x05\x06\x02\x11\x12\x04\xf7\x03\x02\x11\n\r\n\ + \x05\x05\x06\x02\x11\x01\x12\x04\xf7\x03\x02\x0c\n\r\n\x05\x05\x06\x02\ + \x11\x02\x12\x04\xf7\x03\x0f\x10\n\x0c\n\x04\x05\x06\x02\x12\x12\x04\xf8\ + \x03\x02\x0b\n\r\n\x05\x05\x06\x02\x12\x01\x12\x04\xf8\x03\x02\x05\n\r\n\ + \x05\x05\x06\x02\x12\x02\x12\x04\xf8\x03\x08\n\n\x0c\n\x04\x05\x06\x02\ + \x13\x12\x04\xf9\x03\x02\x0b\n\r\n\x05\x05\x06\x02\x13\x01\x12\x04\xf9\ + \x03\x02\x06\n\r\n\x05\x05\x06\x02\x13\x02\x12\x04\xf9\x03\t\n\n\x0c\n\ + \x04\x05\x06\x02\x14\x12\x04\xfa\x03\x02\x0e\n\r\n\x05\x05\x06\x02\x14\ + \x01\x12\x04\xfa\x03\x02\x08\n\r\n\x05\x05\x06\x02\x14\x02\x12\x04\xfa\ + \x03\x0b\r\n\x0c\n\x04\x05\x06\x02\x15\x12\x04\xfb\x03\x02\x0c\n\r\n\x05\ + \x05\x06\x02\x15\x01\x12\x04\xfb\x03\x02\x06\n\r\n\x05\x05\x06\x02\x15\ + \x02\x12\x04\xfb\x03\t\x0b\n\x0c\n\x04\x05\x06\x02\x16\x12\x04\xfc\x03\ + \x02\x12\n\r\n\x05\x05\x06\x02\x16\x01\x12\x04\xfc\x03\x02\x0c\n\r\n\x05\ + \x05\x06\x02\x16\x02\x12\x04\xfc\x03\x0f\x11\n\x0c\n\x04\x05\x06\x02\x17\ + \x12\x04\xfd\x03\x02\x0e\n\r\n\x05\x05\x06\x02\x17\x01\x12\x04\xfd\x03\ + \x02\x08\n\r\n\x05\x05\x06\x02\x17\x02\x12\x04\xfd\x03\x0b\r\n\x0c\n\x04\ + \x05\x06\x02\x18\x12\x04\xfe\x03\x02\x0e\n\r\n\x05\x05\x06\x02\x18\x01\ + \x12\x04\xfe\x03\x02\x08\n\r\n\x05\x05\x06\x02\x18\x02\x12\x04\xfe\x03\ + \x0b\r\n\x0c\n\x04\x05\x06\x02\x19\x12\x04\xff\x03\x02\x0e\n\r\n\x05\x05\ + \x06\x02\x19\x01\x12\x04\xff\x03\x02\x08\n\r\n\x05\x05\x06\x02\x19\x02\ + \x12\x04\xff\x03\x0b\r\n\x0c\n\x04\x05\x06\x02\x1a\x12\x04\x80\x04\x02\ + \x0e\n\r\n\x05\x05\x06\x02\x1a\x01\x12\x04\x80\x04\x02\x08\n\r\n\x05\x05\ + \x06\x02\x1a\x02\x12\x04\x80\x04\x0b\r\n\x0c\n\x04\x05\x06\x02\x1b\x12\ + \x04\x81\x04\x02\x0c\n\r\n\x05\x05\x06\x02\x1b\x01\x12\x04\x81\x04\x02\ + \x06\n\r\n\x05\x05\x06\x02\x1b\x02\x12\x04\x81\x04\t\x0b\n\x0c\n\x04\x05\ + \x06\x02\x1c\x12\x04\x82\x04\x02\x0c\n\r\n\x05\x05\x06\x02\x1c\x01\x12\ + \x04\x82\x04\x02\x06\n\r\n\x05\x05\x06\x02\x1c\x02\x12\x04\x82\x04\t\x0b\ + \n\x0c\n\x04\x05\x06\x02\x1d\x12\x04\x83\x04\x02\x0f\n\r\n\x05\x05\x06\ + \x02\x1d\x01\x12\x04\x83\x04\x02\t\n\r\n\x05\x05\x06\x02\x1d\x02\x12\x04\ + \x83\x04\x0c\x0e\n\x0c\n\x04\x05\x06\x02\x1e\x12\x04\x84\x04\x02\x12\n\r\ + \n\x05\x05\x06\x02\x1e\x01\x12\x04\x84\x04\x02\x0c\n\r\n\x05\x05\x06\x02\ + \x1e\x02\x12\x04\x84\x04\x0f\x11\n\x0c\n\x04\x05\x06\x02\x1f\x12\x04\x85\ + \x04\x02\x12\n\r\n\x05\x05\x06\x02\x1f\x01\x12\x04\x85\x04\x02\x0c\n\r\n\ + \x05\x05\x06\x02\x1f\x02\x12\x04\x85\x04\x0f\x11\n\x0c\n\x04\x05\x06\x02\ + \x20\x12\x04\x86\x04\x02\x12\n\r\n\x05\x05\x06\x02\x20\x01\x12\x04\x86\ + \x04\x02\x0c\n\r\n\x05\x05\x06\x02\x20\x02\x12\x04\x86\x04\x0f\x11\n\x0c\ + \n\x04\x05\x06\x02!\x12\x04\x87\x04\x02\n\n\r\n\x05\x05\x06\x02!\x01\x12\ + \x04\x87\x04\x02\x04\n\r\n\x05\x05\x06\x02!\x02\x12\x04\x87\x04\x07\t\n\ + \x0c\n\x04\x05\x06\x02\"\x12\x04\x88\x04\x02\r\n\r\n\x05\x05\x06\x02\"\ + \x01\x12\x04\x88\x04\x02\x08\n\r\n\x05\x05\x06\x02\"\x02\x12\x04\x88\x04\ + \x0b\x0c\n\x0c\n\x04\x05\x06\x02#\x12\x04\x89\x04\x02\x0c\n\r\n\x05\x05\ + \x06\x02#\x01\x12\x04\x89\x04\x02\x06\n\r\n\x05\x05\x06\x02#\x02\x12\x04\ + \x89\x04\t\x0b\n\x0c\n\x04\x05\x06\x02$\x12\x04\x8a\x04\x02\x0c\n\r\n\ + \x05\x05\x06\x02$\x01\x12\x04\x8a\x04\x02\x06\n\r\n\x05\x05\x06\x02$\x02\ + \x12\x04\x8a\x04\t\x0b\n\x0c\n\x04\x05\x06\x02%\x12\x04\x8b\x04\x02\x12\ + \n\r\n\x05\x05\x06\x02%\x01\x12\x04\x8b\x04\x02\x0c\n\r\n\x05\x05\x06\ + \x02%\x02\x12\x04\x8b\x04\x0f\x11\n\x0c\n\x04\x05\x06\x02&\x12\x04\x8c\ + \x04\x02\x0f\n\r\n\x05\x05\x06\x02&\x01\x12\x04\x8c\x04\x02\t\n\r\n\x05\ + \x05\x06\x02&\x02\x12\x04\x8c\x04\x0c\x0e\n\x0c\n\x04\x05\x06\x02'\x12\ + \x04\x8d\x04\x02\r\n\r\n\x05\x05\x06\x02'\x01\x12\x04\x8d\x04\x02\x07\n\ + \r\n\x05\x05\x06\x02'\x02\x12\x04\x8d\x04\n\x0c\n\x0c\n\x04\x05\x06\x02(\ + \x12\x04\x8e\x04\x02\x0b\n\r\n\x05\x05\x06\x02(\x01\x12\x04\x8e\x04\x02\ + \x05\n\r\n\x05\x05\x06\x02(\x02\x12\x04\x8e\x04\x08\n\n\x0c\n\x04\x05\ + \x06\x02)\x12\x04\x8f\x04\x02\t\n\r\n\x05\x05\x06\x02)\x01\x12\x04\x8f\ + \x04\x02\x03\n\r\n\x05\x05\x06\x02)\x02\x12\x04\x8f\x04\x06\x08\n\x0c\n\ + \x04\x05\x06\x02*\x12\x04\x90\x04\x02\x0c\n\r\n\x05\x05\x06\x02*\x01\x12\ + \x04\x90\x04\x02\x06\n\r\n\x05\x05\x06\x02*\x02\x12\x04\x90\x04\t\x0b\n\ + \x0c\n\x04\x05\x06\x02+\x12\x04\x91\x04\x02\x0b\n\r\n\x05\x05\x06\x02+\ + \x01\x12\x04\x91\x04\x02\x06\n\r\n\x05\x05\x06\x02+\x02\x12\x04\x91\x04\ + \t\n\n\x0c\n\x04\x05\x06\x02,\x12\x04\x92\x04\x02\x12\n\r\n\x05\x05\x06\ + \x02,\x01\x12\x04\x92\x04\x02\x0c\n\r\n\x05\x05\x06\x02,\x02\x12\x04\x92\ + \x04\x0f\x11\n\x0c\n\x04\x05\x06\x02-\x12\x04\x93\x04\x02\x17\n\r\n\x05\ + \x05\x06\x02-\x01\x12\x04\x93\x04\x02\x11\n\r\n\x05\x05\x06\x02-\x02\x12\ + \x04\x93\x04\x14\x16\n\x0c\n\x04\x05\x06\x02.\x12\x04\x94\x04\x02\x0f\n\ + \r\n\x05\x05\x06\x02.\x01\x12\x04\x94\x04\x02\t\n\r\n\x05\x05\x06\x02.\ + \x02\x12\x04\x94\x04\x0c\x0e\n\x0c\n\x04\x05\x06\x02/\x12\x04\x95\x04\ + \x02\x0e\n\r\n\x05\x05\x06\x02/\x01\x12\x04\x95\x04\x02\x07\n\r\n\x05\ + \x05\x06\x02/\x02\x12\x04\x95\x04\x0b\r\n\x0c\n\x04\x05\x06\x020\x12\x04\ + \x96\x04\x02\r\n\r\n\x05\x05\x06\x020\x01\x12\x04\x96\x04\x02\x08\n\r\n\ + \x05\x05\x06\x020\x02\x12\x04\x96\x04\x0b\x0c\n\x0c\n\x04\x05\x06\x021\ + \x12\x04\x97\x04\x02\r\n\r\n\x05\x05\x06\x021\x01\x12\x04\x97\x04\x02\ + \x07\n\r\n\x05\x05\x06\x021\x02\x12\x04\x97\x04\n\x0c\n\x0c\n\x04\x05\ + \x06\x022\x12\x04\x98\x04\x02\x0c\n\r\n\x05\x05\x06\x022\x01\x12\x04\x98\ + \x04\x02\x06\n\r\n\x05\x05\x06\x022\x02\x12\x04\x98\x04\t\x0b\n\x0c\n\ + \x04\x05\x06\x023\x12\x04\x99\x04\x02\x0c\n\r\n\x05\x05\x06\x023\x01\x12\ + \x04\x99\x04\x02\x06\n\r\n\x05\x05\x06\x023\x02\x12\x04\x99\x04\t\x0b\n\ + \x0c\n\x04\x05\x06\x024\x12\x04\x9a\x04\x02\x0b\n\r\n\x05\x05\x06\x024\ + \x01\x12\x04\x9a\x04\x02\x05\n\r\n\x05\x05\x06\x024\x02\x12\x04\x9a\x04\ + \x08\n\n\x0c\n\x04\x05\x06\x025\x12\x04\x9b\x04\x02\x10\n\r\n\x05\x05\ + \x06\x025\x01\x12\x04\x9b\x04\x02\n\n\r\n\x05\x05\x06\x025\x02\x12\x04\ + \x9b\x04\r\x0f\n\x0c\n\x04\x05\x06\x026\x12\x04\x9c\x04\x02\x10\n\r\n\ + \x05\x05\x06\x026\x01\x12\x04\x9c\x04\x02\n\n\r\n\x05\x05\x06\x026\x02\ + \x12\x04\x9c\x04\r\x0f\n\x0c\n\x04\x05\x06\x027\x12\x04\x9d\x04\x02\x0e\ + \n\r\n\x05\x05\x06\x027\x01\x12\x04\x9d\x04\x02\x08\n\r\n\x05\x05\x06\ + \x027\x02\x12\x04\x9d\x04\x0b\r\n\x0c\n\x04\x05\x06\x028\x12\x04\x9e\x04\ + \x02\x0b\n\r\n\x05\x05\x06\x028\x01\x12\x04\x9e\x04\x02\x05\n\r\n\x05\ + \x05\x06\x028\x02\x12\x04\x9e\x04\x08\n\n\x0c\n\x04\x05\x06\x029\x12\x04\ + \x9f\x04\x02\r\n\r\n\x05\x05\x06\x029\x01\x12\x04\x9f\x04\x02\x07\n\r\n\ + \x05\x05\x06\x029\x02\x12\x04\x9f\x04\n\x0c\n\x0c\n\x04\x05\x06\x02:\x12\ + \x04\xa0\x04\x02\x13\n\r\n\x05\x05\x06\x02:\x01\x12\x04\xa0\x04\x02\r\n\ + \r\n\x05\x05\x06\x02:\x02\x12\x04\xa0\x04\x10\x12\n\x0c\n\x04\x05\x06\ + \x02;\x12\x04\xa1\x04\x02\x15\n\r\n\x05\x05\x06\x02;\x01\x12\x04\xa1\x04\ + \x02\x0f\n\r\n\x05\x05\x06\x02;\x02\x12\x04\xa1\x04\x12\x14\n\x0c\n\x04\ + \x05\x06\x02<\x12\x04\xa2\x04\x02\x0b\n\r\n\x05\x05\x06\x02<\x01\x12\x04\ + \xa2\x04\x02\x05\n\r\n\x05\x05\x06\x02<\x02\x12\x04\xa2\x04\x08\n\n\x0c\ + \n\x04\x05\x06\x02=\x12\x04\xa3\x04\x02\r\n\r\n\x05\x05\x06\x02=\x01\x12\ + \x04\xa3\x04\x02\x07\n\r\n\x05\x05\x06\x02=\x02\x12\x04\xa3\x04\n\x0c\n\ + \x0c\n\x04\x05\x06\x02>\x12\x04\xa4\x04\x02\x0c\n\r\n\x05\x05\x06\x02>\ + \x01\x12\x04\xa4\x04\x02\x06\n\r\n\x05\x05\x06\x02>\x02\x12\x04\xa4\x04\ + \t\x0b\n\x0c\n\x04\x05\x06\x02?\x12\x04\xa5\x04\x02\x12\n\r\n\x05\x05\ + \x06\x02?\x01\x12\x04\xa5\x04\x02\x0c\n\r\n\x05\x05\x06\x02?\x02\x12\x04\ + \xa5\x04\x0f\x11\n\x0c\n\x04\x05\x06\x02@\x12\x04\xa6\x04\x02\x0e\n\r\n\ + \x05\x05\x06\x02@\x01\x12\x04\xa6\x04\x02\x08\n\r\n\x05\x05\x06\x02@\x02\ + \x12\x04\xa6\x04\x0b\r\n\x0c\n\x04\x05\x06\x02A\x12\x04\xa7\x04\x02\x0e\ + \n\r\n\x05\x05\x06\x02A\x01\x12\x04\xa7\x04\x02\x08\n\r\n\x05\x05\x06\ + \x02A\x02\x12\x04\xa7\x04\x0b\r\n\x0c\n\x04\x05\x06\x02B\x12\x04\xa8\x04\ + \x02\t\n\r\n\x05\x05\x06\x02B\x01\x12\x04\xa8\x04\x02\x03\n\r\n\x05\x05\ + \x06\x02B\x02\x12\x04\xa8\x04\x06\x08\n\x0c\n\x04\x05\x06\x02C\x12\x04\ + \xa9\x04\x02\x0e\n\r\n\x05\x05\x06\x02C\x01\x12\x04\xa9\x04\x02\x08\n\r\ + \n\x05\x05\x06\x02C\x02\x12\x04\xa9\x04\x0b\r\n\x0c\n\x04\x05\x06\x02D\ + \x12\x04\xaa\x04\x02\x0c\n\r\n\x05\x05\x06\x02D\x01\x12\x04\xaa\x04\x02\ + \x06\n\r\n\x05\x05\x06\x02D\x02\x12\x04\xaa\x04\t\x0b\n\x0c\n\x04\x05\ + \x06\x02E\x12\x04\xab\x04\x02\r\n\r\n\x05\x05\x06\x02E\x01\x12\x04\xab\ + \x04\x02\x07\n\r\n\x05\x05\x06\x02E\x02\x12\x04\xab\x04\n\x0c\n\x0c\n\ + \x04\x05\x06\x02F\x12\x04\xac\x04\x02\x0c\n\r\n\x05\x05\x06\x02F\x01\x12\ + \x04\xac\x04\x02\x06\n\r\n\x05\x05\x06\x02F\x02\x12\x04\xac\x04\t\x0b\n\ + \x0c\n\x04\x05\x06\x02G\x12\x04\xad\x04\x02\x0c\n\r\n\x05\x05\x06\x02G\ + \x01\x12\x04\xad\x04\x02\x06\n\r\n\x05\x05\x06\x02G\x02\x12\x04\xad\x04\ + \t\x0b\n\x0c\n\x04\x05\x06\x02H\x12\x04\xae\x04\x02\x0c\n\r\n\x05\x05\ + \x06\x02H\x01\x12\x04\xae\x04\x02\x06\n\r\n\x05\x05\x06\x02H\x02\x12\x04\ + \xae\x04\t\x0b\n\x0c\n\x04\x05\x06\x02I\x12\x04\xaf\x04\x02\x0b\n\r\n\ + \x05\x05\x06\x02I\x01\x12\x04\xaf\x04\x02\x05\n\r\n\x05\x05\x06\x02I\x02\ + \x12\x04\xaf\x04\x08\n\n\x0c\n\x04\x05\x06\x02J\x12\x04\xb0\x04\x02\x0c\ + \n\r\n\x05\x05\x06\x02J\x01\x12\x04\xb0\x04\x02\x06\n\r\n\x05\x05\x06\ + \x02J\x02\x12\x04\xb0\x04\t\x0b\n\x0c\n\x04\x05\x06\x02K\x12\x04\xb1\x04\ + \x02\x0b\n\r\n\x05\x05\x06\x02K\x01\x12\x04\xb1\x04\x02\x05\n\r\n\x05\ + \x05\x06\x02K\x02\x12\x04\xb1\x04\x08\n\n\x0c\n\x04\x05\x06\x02L\x12\x04\ + \xb2\x04\x02\x0b\n\r\n\x05\x05\x06\x02L\x01\x12\x04\xb2\x04\x02\x05\n\r\ + \n\x05\x05\x06\x02L\x02\x12\x04\xb2\x04\x08\n\n\x0c\n\x04\x05\x06\x02M\ + \x12\x04\xb3\x04\x02\x0c\n\r\n\x05\x05\x06\x02M\x01\x12\x04\xb3\x04\x02\ + \x06\n\r\n\x05\x05\x06\x02M\x02\x12\x04\xb3\x04\t\x0b\n\x0c\n\x04\x05\ + \x06\x02N\x12\x04\xb4\x04\x02\x0c\n\r\n\x05\x05\x06\x02N\x01\x12\x04\xb4\ + \x04\x02\x07\n\r\n\x05\x05\x06\x02N\x02\x12\x04\xb4\x04\n\x0b\n\x0c\n\ + \x04\x05\x06\x02O\x12\x04\xb5\x04\x02\x0e\n\r\n\x05\x05\x06\x02O\x01\x12\ + \x04\xb5\x04\x02\x08\n\r\n\x05\x05\x06\x02O\x02\x12\x04\xb5\x04\x0b\r\n\ + \x14\n\x04\x05\x06\x02P\x12\x04\xb6\x04\x02\x13\"\x06\x20Bash\n\n\r\n\ + \x05\x05\x06\x02P\x01\x12\x04\xb6\x04\x02\r\n\r\n\x05\x05\x06\x02P\x02\ + \x12\x04\xb6\x04\x10\x12\n\x0c\n\x04\x05\x06\x02Q\x12\x04\xb7\x04\x02\ + \x0f\n\r\n\x05\x05\x06\x02Q\x01\x12\x04\xb7\x04\x02\t\n\r\n\x05\x05\x06\ + \x02Q\x02\x12\x04\xb7\x04\x0c\x0e\n\x0c\n\x04\x05\x06\x02R\x12\x04\xb8\ + \x04\x02\x0c\n\r\n\x05\x05\x06\x02R\x01\x12\x04\xb8\x04\x02\x07\n\r\n\ + \x05\x05\x06\x02R\x02\x12\x04\xb8\x04\n\x0b\n\x0c\n\x04\x05\x06\x02S\x12\ + \x04\xb9\x04\x02\x0c\n\r\n\x05\x05\x06\x02S\x01\x12\x04\xb9\x04\x02\x06\ + \n\r\n\x05\x05\x06\x02S\x02\x12\x04\xb9\x04\t\x0b\n\x0c\n\x04\x05\x06\ + \x02T\x12\x04\xba\x04\x02\x0b\n\r\n\x05\x05\x06\x02T\x01\x12\x04\xba\x04\ + \x02\x05\n\r\n\x05\x05\x06\x02T\x02\x12\x04\xba\x04\x08\n\n\x0c\n\x04\ + \x05\x06\x02U\x12\x04\xbb\x04\x02\x12\n\r\n\x05\x05\x06\x02U\x01\x12\x04\ + \xbb\x04\x02\x0c\n\r\n\x05\x05\x06\x02U\x02\x12\x04\xbb\x04\x0f\x11\n\ + \x0c\n\x04\x05\x06\x02V\x12\x04\xbc\x04\x02\x17\n\r\n\x05\x05\x06\x02V\ + \x01\x12\x04\xbc\x04\x02\x11\n\r\n\x05\x05\x06\x02V\x02\x12\x04\xbc\x04\ + \x14\x16\n\x0c\n\x04\x05\x06\x02W\x12\x04\xbd\x04\x02\x13\n\r\n\x05\x05\ + \x06\x02W\x01\x12\x04\xbd\x04\x02\r\n\r\n\x05\x05\x06\x02W\x02\x12\x04\ + \xbd\x04\x10\x12\n\x0c\n\x04\x05\x06\x02X\x12\x04\xbe\x04\x02\x0b\n\r\n\ + \x05\x05\x06\x02X\x01\x12\x04\xbe\x04\x02\x05\n\r\n\x05\x05\x06\x02X\x02\ + \x12\x04\xbe\x04\x08\n\n\x0c\n\x04\x05\x06\x02Y\x12\x04\xbf\x04\x02\x0f\ + \n\r\n\x05\x05\x06\x02Y\x01\x12\x04\xbf\x04\x02\t\n\r\n\x05\x05\x06\x02Y\ + \x02\x12\x04\xbf\x04\x0c\x0e\n\x0c\n\x04\x05\x06\x02Z\x12\x04\xc0\x04\ + \x02\x0b\n\r\n\x05\x05\x06\x02Z\x01\x12\x04\xc0\x04\x02\x05\n\r\n\x05\ + \x05\x06\x02Z\x02\x12\x04\xc0\x04\x08\n\n\x0c\n\x04\x05\x06\x02[\x12\x04\ + \xc1\x04\x02\x0b\n\r\n\x05\x05\x06\x02[\x01\x12\x04\xc1\x04\x02\x05\n\r\ + \n\x05\x05\x06\x02[\x02\x12\x04\xc1\x04\x08\n\n\x0c\n\x04\x05\x06\x02\\\ + \x12\x04\xc2\x04\x02\x0c\n\r\n\x05\x05\x06\x02\\\x01\x12\x04\xc2\x04\x02\ + \x06\n\r\n\x05\x05\x06\x02\\\x02\x12\x04\xc2\x04\t\x0b\n\x92\x03\n\x04\ + \x05\x06\x02]\x12\x04\xc3\x04\x02\x0b\"\x83\x03\x20NextLanguage\x20=\x20\ 95;\n\x20Steps\x20add\x20a\x20new\x20language:\n\x201.\x20Copy-paste\x20\ the\x20\"NextLanguage\x20=\x20N\"\x20line\x20above\n\x202.\x20Increment\ \x20\"NextLanguage\x20=\x20N\"\x20to\x20\"NextLanguage\x20=\x20N+1\"\n\ @@ -4295,8 +4360,8 @@ static file_descriptor_proto_data: &'static [u8] = b"\ age\x20to\x20the\x20correct\x20line\x20above\x20using\x20alphabetical\ \x20order\n\x205.\x20(optional)\x20Add\x20a\x20brief\x20comment\x20behin\ d\x20the\x20language\x20if\x20the\x20name\x20is\x20not\x20self-explanato\ - ry\n\n\r\n\x05\x05\x06\x02]\x01\x12\x04\x9b\x04\x02\x05\n\r\n\x05\x05\ - \x06\x02]\x02\x12\x04\x9b\x04\x08\nb\x06proto3\ + ry\n\n\r\n\x05\x05\x06\x02]\x01\x12\x04\xc3\x04\x02\x05\n\r\n\x05\x05\ + \x06\x02]\x02\x12\x04\xc3\x04\x08\nb\x06proto3\ "; /// `FileDescriptorProto` object which was a source for this generated file diff --git a/bindings/typescript/scip.ts b/bindings/typescript/scip.ts index af33acbb..69785b71 100644 --- a/bindings/typescript/scip.ts +++ b/bindings/typescript/scip.ts @@ -1316,9 +1316,10 @@ export namespace scip { override_documentation?: string[]; syntax_kind?: SyntaxKind; diagnostics?: Diagnostic[]; + enclosing_range?: number[]; }) { super(); - pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [1, 4, 6], this.#one_of_decls); + pb_1.Message.initialize(this, Array.isArray(data) ? data : [], 0, -1, [1, 4, 6, 7], this.#one_of_decls); if (!Array.isArray(data) && typeof data == "object") { if ("range" in data && data.range != undefined) { this.range = data.range; @@ -1338,6 +1339,9 @@ export namespace scip { if ("diagnostics" in data && data.diagnostics != undefined) { this.diagnostics = data.diagnostics; } + if ("enclosing_range" in data && data.enclosing_range != undefined) { + this.enclosing_range = data.enclosing_range; + } } } get range() { @@ -1376,6 +1380,12 @@ export namespace scip { set diagnostics(value: Diagnostic[]) { pb_1.Message.setRepeatedWrapperField(this, 6, value); } + get enclosing_range() { + return pb_1.Message.getFieldWithDefault(this, 7, []) as number[]; + } + set enclosing_range(value: number[]) { + pb_1.Message.setField(this, 7, value); + } static fromObject(data: { range?: number[]; symbol?: string; @@ -1383,6 +1393,7 @@ export namespace scip { override_documentation?: string[]; syntax_kind?: SyntaxKind; diagnostics?: ReturnType[]; + enclosing_range?: number[]; }): Occurrence { const message = new Occurrence({}); if (data.range != null) { @@ -1403,6 +1414,9 @@ export namespace scip { if (data.diagnostics != null) { message.diagnostics = data.diagnostics.map(item => Diagnostic.fromObject(item)); } + if (data.enclosing_range != null) { + message.enclosing_range = data.enclosing_range; + } return message; } toObject() { @@ -1413,6 +1427,7 @@ export namespace scip { override_documentation?: string[]; syntax_kind?: SyntaxKind; diagnostics?: ReturnType[]; + enclosing_range?: number[]; } = {}; if (this.range != null) { data.range = this.range; @@ -1432,6 +1447,9 @@ export namespace scip { if (this.diagnostics != null) { data.diagnostics = this.diagnostics.map((item: Diagnostic) => item.toObject()); } + if (this.enclosing_range != null) { + data.enclosing_range = this.enclosing_range; + } return data; } serialize(): Uint8Array; @@ -1450,6 +1468,8 @@ export namespace scip { writer.writeEnum(5, this.syntax_kind); if (this.diagnostics.length) writer.writeRepeatedMessage(6, this.diagnostics, (item: Diagnostic) => item.serialize(writer)); + if (this.enclosing_range.length) + writer.writePackedInt32(7, this.enclosing_range); if (!w) return writer.getResultBuffer(); } @@ -1477,6 +1497,9 @@ export namespace scip { case 6: reader.readMessage(message.diagnostics, () => pb_1.Message.addToRepeatedWrapperField(message, 6, Diagnostic.deserialize(reader), Diagnostic)); break; + case 7: + message.enclosing_range = reader.readPackedInt32(); + break; default: reader.skipField(); } } diff --git a/docs/scip.md b/docs/scip.md index 65a28d88..cfd1b67e 100644 --- a/docs/scip.md +++ b/docs/scip.md @@ -117,6 +117,7 @@ across occurrences into a single occurrence to reduce payload sizes. | repeated **override_documentation** | string | (optional) CommonMark-formatted documentation for this specific range. If empty, the `Symbol.documentation` field is used instead. One example where this field might be useful is when the symbol represents a generic function (with abstract type parameters such as `List`) and at this occurrence we know the exact values (such as `List`). | | **syntax_kind** | SyntaxKind | (optional) What syntax highlighting class should be used for this range? | | repeated **diagnostics** | Diagnostic | (optional) Diagnostics that have been reported for this specific range. | +| repeated **enclosing_range** | int32 | (optional) Using the same encoding as the sibling `range` field, source position of the nearest non-trivial enclosing AST node. This range must enclose the `range` field. Example applications that make use of the enclosing_range field: | Additional notes on **range**: @@ -150,6 +151,51 @@ occurrence we know the exact values (such as `List`). This field can also be used for dynamically or gradually typed languages, which commonly allow for type-changing assignment. +Additional notes on **enclosing_range**: + +(optional) Using the same encoding as the sibling `range` field, source +position of the nearest non-trivial enclosing AST node. This range must +enclose the `range` field. Example applications that make use of the +enclosing_range field: + +- Call hierarchies: to determine what symbols are references from the body + of a function +- Symbol outline: to display breadcrumbs from the cursor position to the + root of the file +- Expand selection: to select the nearest enclosing AST node. +- Highlight range: to indicate the AST expression that is associated with a + hover popover + +For definition occurrences, the enclosing range should indicate the +start/end bounds of the entire definition AST node, including +documentation. + +``` +const n = 3 + ^ range +^^^^^^^^^^^ enclosing_range + +/** Parses the string into something */ +^ enclosing_range start --------------------------------------| +function parse(input string): string { | + ^^^^^ range | + return input.slice(n) | +} | +^ enclosing_range end <---------------------------------------| +``` + +For reference occurrences, the enclosing range should indicate the start/end +bounds of the parent expression. + +``` +const a = a.b + ^ range + ^^^ enclosing_range +const b = a.b(41).f(42).g(43) + ^ range + ^^^^^^^^^^^^^ enclosing_range +``` + ### Package Unit of packaging and distribution. diff --git a/scip.proto b/scip.proto index 87c2cf75..af48b334 100644 --- a/scip.proto +++ b/scip.proto @@ -179,7 +179,7 @@ message SymbolInformation { string symbol = 1; // (optional, but strongly recommended) The markdown-formatted documentation // for this symbol. This field is repeated to allow different kinds of - // documentation. For example, it's nice to include both the signature of a + // documentation. For example, it's nice to include both the signature of a // method (parameters and return type) along with the accompanying docstring. repeated string documentation = 3; // (optional) Relationships to other symbols (e.g., implements, type definition). @@ -219,7 +219,7 @@ message Relationship { // In the TypeScript example above, observe that `Dog#` has an // `is_implementation` relationship with `"Animal#"` but not `is_reference`. // This is because "Find references" on the "Animal#" symbol should not return - // "Dog#". We only want "Dog#" to return as a result for "Find + // "Dog#". We only want "Dog#" to return as a result for "Find // implementations" on the "Animal#" symbol. bool is_implementation = 3; // Similar to `references_symbols` but for "Go to type definition". @@ -244,7 +244,7 @@ message Relationship { // Update registerInverseRelationships on adding a new field here. } -// SymbolRole declares what "role" a symbol has in an occurrence. A role is +// SymbolRole declares what "role" a symbol has in an occurrence. A role is // encoded as a bitset where each bit represents a different role. For example, // to determine if the `Import` role is set, test whether the second bit of the // enum value is defined. In pseudocode, this can be implemented with the @@ -383,7 +383,7 @@ message Occurrence { // type with `start` and `end` fields of type `Position`, mirroring LSP. // Benchmarks revealed that this encoding was inefficient and that we could // reduce the total payload size of an index by 50% by using `repeated int32` - // instead. The `repeated int32` encoding is admittedly more embarrassing to + // instead. The `repeated int32` encoding is admittedly more embarrassing to // work with in some programming languages but we hope the performance // improvements make up for it. repeated int32 range = 1; @@ -406,6 +406,46 @@ message Occurrence { SyntaxKind syntax_kind = 5; // (optional) Diagnostics that have been reported for this specific range. repeated Diagnostic diagnostics = 6; + // (optional) Using the same encoding as the sibling `range` field, source + // position of the nearest non-trivial enclosing AST node. This range must + // enclose the `range` field. Example applications that make use of the + // enclosing_range field: + // + // - Call hierarchies: to determine what symbols are references from the body + // of a function + // - Symbol outline: to display breadcrumbs from the cursor position to the + // root of the file + // - Expand selection: to select the nearest enclosing AST node. + // - Highlight range: to indicate the AST expression that is associated with a + // hover popover + // + // For definition occurrences, the enclosing range should indicate the + // start/end bounds of the entire definition AST node, including + // documentation. + // ``` + // const n = 3 + // ^ range + // ^^^^^^^^^^^ enclosing_range + // + // /** Parses the string into something */ + // ^ enclosing_range start --------------------------------------| + // function parse(input string): string { | + // ^^^^^ range | + // return input.slice(n) | + // } | + // ^ enclosing_range end <---------------------------------------| + // ``` + // For reference occurrences, the enclosing range should indicate the start/end + // bounds of the parent expression. + // ``` + // const a = a.b + // ^ range + // ^^^ enclosing_range + // const b = a.b(41).f(42).g(43) + // ^ range + // ^^^^^^^^^^^^^ enclosing_range + // ``` + repeated int32 enclosing_range = 7; } // Represents a diagnostic, such as a compiler error or warning, which should be