Codebase list golang-goprotobuf / upstream/0.0_git20170808.0.1909bc2
New upstream version 0.0~git20170808.0.1909bc2 aviau 6 years ago
58 changed file(s) with 5383 addition(s) and 1002 deletion(s). Raw diff Collapse all Expand all
0 sudo: false
1 language: go
2 go:
3 - 1.6.x
4 - 1.7.x
5 - 1.8.x
6
7 install:
8 - go get -v -d -t github.com/golang/protobuf/...
9 - curl -L https://github.com/google/protobuf/releases/download/v3.3.0/protoc-3.3.0-linux-x86_64.zip -o /tmp/protoc.zip
10 - unzip /tmp/protoc.zip -d $HOME/protoc
11
12 env:
13 - PATH=$HOME/protoc/bin:$PATH
14
15 script:
16 - make all test
5151 make -C protoc-gen-go/testdata regenerate
5252 make -C proto/testdata regenerate
5353 make -C jsonpb/jsonpb_test_proto regenerate
54 make -C _conformance regenerate
00 # Go support for Protocol Buffers
1
2 [![Build Status](https://travis-ci.org/golang/protobuf.svg?branch=master)](https://travis-ci.org/golang/protobuf)
13
24 Google's data interchange format.
35 Copyright 2010 The Go Authors.
2123 for details or, if you are using gccgo, follow the instructions at
2224 https://golang.org/doc/install/gccgo
2325 - Grab the code from the repository and install the proto package.
24 The simplest way is to run `go get -u github.com/golang/protobuf/{proto,protoc-gen-go}`.
26 The simplest way is to run `go get -u github.com/golang/protobuf/protoc-gen-go`.
2527 The compiler plugin, protoc-gen-go, will be installed in $GOBIN,
2628 defaulting to $GOPATH/bin. It must be in your $PATH for the protocol
2729 compiler, protoc, to find it.
103105 When the .proto file specifies `syntax="proto3"`, there are some differences:
104106
105107 - Non-repeated fields of non-message type are values instead of pointers.
106 - Getters are only generated for message and oneof fields.
107108 - Enum types do not get an Enum method.
108109
109110 Consider file test.proto, containing
0 # Go support for Protocol Buffers - Google's data interchange format
1 #
2 # Copyright 2016 The Go Authors. All rights reserved.
3 # https://github.com/golang/protobuf
4 #
5 # Redistribution and use in source and binary forms, with or without
6 # modification, are permitted provided that the following conditions are
7 # met:
8 #
9 # * Redistributions of source code must retain the above copyright
10 # notice, this list of conditions and the following disclaimer.
11 # * Redistributions in binary form must reproduce the above
12 # copyright notice, this list of conditions and the following disclaimer
13 # in the documentation and/or other materials provided with the
14 # distribution.
15 # * Neither the name of Google Inc. nor the names of its
16 # contributors may be used to endorse or promote products derived from
17 # this software without specific prior written permission.
18 #
19 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
31 regenerate:
32 protoc --go_out=Mgoogle/protobuf/any.proto=github.com/golang/protobuf/ptypes/any,Mgoogle/protobuf/duration.proto=github.com/golang/protobuf/ptypes/duration,Mgoogle/protobuf/struct.proto=github.com/golang/protobuf/ptypes/struct,Mgoogle/protobuf/timestamp.proto=github.com/golang/protobuf/ptypes/timestamp,Mgoogle/protobuf/wrappers.proto=github.com/golang/protobuf/ptypes/wrappers,Mgoogle/protobuf/field_mask.proto=google.golang.org/genproto/protobuf:. conformance_proto/conformance.proto
0 // Go support for Protocol Buffers - Google's data interchange format
1 //
2 // Copyright 2016 The Go Authors. All rights reserved.
3 // https://github.com/golang/protobuf
4 //
5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are
7 // met:
8 //
9 // * Redistributions of source code must retain the above copyright
10 // notice, this list of conditions and the following disclaimer.
11 // * Redistributions in binary form must reproduce the above
12 // copyright notice, this list of conditions and the following disclaimer
13 // in the documentation and/or other materials provided with the
14 // distribution.
15 // * Neither the name of Google Inc. nor the names of its
16 // contributors may be used to endorse or promote products derived from
17 // this software without specific prior written permission.
18 //
19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
31 // conformance implements the conformance test subprocess protocol as
32 // documented in conformance.proto.
33 package main
34
35 import (
36 "encoding/binary"
37 "fmt"
38 "io"
39 "os"
40
41 pb "github.com/golang/protobuf/_conformance/conformance_proto"
42 "github.com/golang/protobuf/jsonpb"
43 "github.com/golang/protobuf/proto"
44 )
45
46 func main() {
47 var sizeBuf [4]byte
48 inbuf := make([]byte, 0, 4096)
49 outbuf := proto.NewBuffer(nil)
50 for {
51 if _, err := io.ReadFull(os.Stdin, sizeBuf[:]); err == io.EOF {
52 break
53 } else if err != nil {
54 fmt.Fprintln(os.Stderr, "go conformance: read request:", err)
55 os.Exit(1)
56 }
57 size := binary.LittleEndian.Uint32(sizeBuf[:])
58 if int(size) > cap(inbuf) {
59 inbuf = make([]byte, size)
60 }
61 inbuf = inbuf[:size]
62 if _, err := io.ReadFull(os.Stdin, inbuf); err != nil {
63 fmt.Fprintln(os.Stderr, "go conformance: read request:", err)
64 os.Exit(1)
65 }
66
67 req := new(pb.ConformanceRequest)
68 if err := proto.Unmarshal(inbuf, req); err != nil {
69 fmt.Fprintln(os.Stderr, "go conformance: parse request:", err)
70 os.Exit(1)
71 }
72 res := handle(req)
73
74 if err := outbuf.Marshal(res); err != nil {
75 fmt.Fprintln(os.Stderr, "go conformance: marshal response:", err)
76 os.Exit(1)
77 }
78 binary.LittleEndian.PutUint32(sizeBuf[:], uint32(len(outbuf.Bytes())))
79 if _, err := os.Stdout.Write(sizeBuf[:]); err != nil {
80 fmt.Fprintln(os.Stderr, "go conformance: write response:", err)
81 os.Exit(1)
82 }
83 if _, err := os.Stdout.Write(outbuf.Bytes()); err != nil {
84 fmt.Fprintln(os.Stderr, "go conformance: write response:", err)
85 os.Exit(1)
86 }
87 outbuf.Reset()
88 }
89 }
90
91 var jsonMarshaler = jsonpb.Marshaler{
92 OrigName: true,
93 }
94
95 func handle(req *pb.ConformanceRequest) *pb.ConformanceResponse {
96 var err error
97 var msg pb.TestAllTypes
98 switch p := req.Payload.(type) {
99 case *pb.ConformanceRequest_ProtobufPayload:
100 err = proto.Unmarshal(p.ProtobufPayload, &msg)
101 case *pb.ConformanceRequest_JsonPayload:
102 err = jsonpb.UnmarshalString(p.JsonPayload, &msg)
103 if err != nil && err.Error() == "unmarshaling Any not supported yet" {
104 return &pb.ConformanceResponse{
105 Result: &pb.ConformanceResponse_Skipped{
106 Skipped: err.Error(),
107 },
108 }
109 }
110 default:
111 return &pb.ConformanceResponse{
112 Result: &pb.ConformanceResponse_RuntimeError{
113 RuntimeError: "unknown request payload type",
114 },
115 }
116 }
117 if err != nil {
118 return &pb.ConformanceResponse{
119 Result: &pb.ConformanceResponse_ParseError{
120 ParseError: err.Error(),
121 },
122 }
123 }
124 switch req.RequestedOutputFormat {
125 case pb.WireFormat_PROTOBUF:
126 p, err := proto.Marshal(&msg)
127 if err != nil {
128 return &pb.ConformanceResponse{
129 Result: &pb.ConformanceResponse_SerializeError{
130 SerializeError: err.Error(),
131 },
132 }
133 }
134 return &pb.ConformanceResponse{
135 Result: &pb.ConformanceResponse_ProtobufPayload{
136 ProtobufPayload: p,
137 },
138 }
139 case pb.WireFormat_JSON:
140 p, err := jsonMarshaler.MarshalToString(&msg)
141 if err != nil {
142 return &pb.ConformanceResponse{
143 Result: &pb.ConformanceResponse_SerializeError{
144 SerializeError: err.Error(),
145 },
146 }
147 }
148 return &pb.ConformanceResponse{
149 Result: &pb.ConformanceResponse_JsonPayload{
150 JsonPayload: p,
151 },
152 }
153 default:
154 return &pb.ConformanceResponse{
155 Result: &pb.ConformanceResponse_RuntimeError{
156 RuntimeError: "unknown output format",
157 },
158 }
159 }
160 }
0 // Code generated by protoc-gen-go. DO NOT EDIT.
1 // source: conformance_proto/conformance.proto
2
3 /*
4 Package conformance is a generated protocol buffer package.
5
6 It is generated from these files:
7 conformance_proto/conformance.proto
8
9 It has these top-level messages:
10 ConformanceRequest
11 ConformanceResponse
12 TestAllTypes
13 ForeignMessage
14 */
15 package conformance
16
17 import proto "github.com/golang/protobuf/proto"
18 import fmt "fmt"
19 import math "math"
20 import google_protobuf "github.com/golang/protobuf/ptypes/any"
21 import google_protobuf1 "github.com/golang/protobuf/ptypes/duration"
22 import google_protobuf2 "google.golang.org/genproto/protobuf"
23 import google_protobuf3 "github.com/golang/protobuf/ptypes/struct"
24 import google_protobuf4 "github.com/golang/protobuf/ptypes/timestamp"
25 import google_protobuf5 "github.com/golang/protobuf/ptypes/wrappers"
26
27 // Reference imports to suppress errors if they are not otherwise used.
28 var _ = proto.Marshal
29 var _ = fmt.Errorf
30 var _ = math.Inf
31
32 // This is a compile-time assertion to ensure that this generated file
33 // is compatible with the proto package it is being compiled against.
34 // A compilation error at this line likely means your copy of the
35 // proto package needs to be updated.
36 const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
37
38 type WireFormat int32
39
40 const (
41 WireFormat_UNSPECIFIED WireFormat = 0
42 WireFormat_PROTOBUF WireFormat = 1
43 WireFormat_JSON WireFormat = 2
44 )
45
46 var WireFormat_name = map[int32]string{
47 0: "UNSPECIFIED",
48 1: "PROTOBUF",
49 2: "JSON",
50 }
51 var WireFormat_value = map[string]int32{
52 "UNSPECIFIED": 0,
53 "PROTOBUF": 1,
54 "JSON": 2,
55 }
56
57 func (x WireFormat) String() string {
58 return proto.EnumName(WireFormat_name, int32(x))
59 }
60 func (WireFormat) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
61
62 type ForeignEnum int32
63
64 const (
65 ForeignEnum_FOREIGN_FOO ForeignEnum = 0
66 ForeignEnum_FOREIGN_BAR ForeignEnum = 1
67 ForeignEnum_FOREIGN_BAZ ForeignEnum = 2
68 )
69
70 var ForeignEnum_name = map[int32]string{
71 0: "FOREIGN_FOO",
72 1: "FOREIGN_BAR",
73 2: "FOREIGN_BAZ",
74 }
75 var ForeignEnum_value = map[string]int32{
76 "FOREIGN_FOO": 0,
77 "FOREIGN_BAR": 1,
78 "FOREIGN_BAZ": 2,
79 }
80
81 func (x ForeignEnum) String() string {
82 return proto.EnumName(ForeignEnum_name, int32(x))
83 }
84 func (ForeignEnum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
85
86 type TestAllTypes_NestedEnum int32
87
88 const (
89 TestAllTypes_FOO TestAllTypes_NestedEnum = 0
90 TestAllTypes_BAR TestAllTypes_NestedEnum = 1
91 TestAllTypes_BAZ TestAllTypes_NestedEnum = 2
92 TestAllTypes_NEG TestAllTypes_NestedEnum = -1
93 )
94
95 var TestAllTypes_NestedEnum_name = map[int32]string{
96 0: "FOO",
97 1: "BAR",
98 2: "BAZ",
99 -1: "NEG",
100 }
101 var TestAllTypes_NestedEnum_value = map[string]int32{
102 "FOO": 0,
103 "BAR": 1,
104 "BAZ": 2,
105 "NEG": -1,
106 }
107
108 func (x TestAllTypes_NestedEnum) String() string {
109 return proto.EnumName(TestAllTypes_NestedEnum_name, int32(x))
110 }
111 func (TestAllTypes_NestedEnum) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} }
112
113 // Represents a single test case's input. The testee should:
114 //
115 // 1. parse this proto (which should always succeed)
116 // 2. parse the protobuf or JSON payload in "payload" (which may fail)
117 // 3. if the parse succeeded, serialize the message in the requested format.
118 type ConformanceRequest struct {
119 // The payload (whether protobuf of JSON) is always for a TestAllTypes proto
120 // (see below).
121 //
122 // Types that are valid to be assigned to Payload:
123 // *ConformanceRequest_ProtobufPayload
124 // *ConformanceRequest_JsonPayload
125 Payload isConformanceRequest_Payload `protobuf_oneof:"payload"`
126 // Which format should the testee serialize its message to?
127 RequestedOutputFormat WireFormat `protobuf:"varint,3,opt,name=requested_output_format,json=requestedOutputFormat,enum=conformance.WireFormat" json:"requested_output_format,omitempty"`
128 }
129
130 func (m *ConformanceRequest) Reset() { *m = ConformanceRequest{} }
131 func (m *ConformanceRequest) String() string { return proto.CompactTextString(m) }
132 func (*ConformanceRequest) ProtoMessage() {}
133 func (*ConformanceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
134
135 type isConformanceRequest_Payload interface {
136 isConformanceRequest_Payload()
137 }
138
139 type ConformanceRequest_ProtobufPayload struct {
140 ProtobufPayload []byte `protobuf:"bytes,1,opt,name=protobuf_payload,json=protobufPayload,proto3,oneof"`
141 }
142 type ConformanceRequest_JsonPayload struct {
143 JsonPayload string `protobuf:"bytes,2,opt,name=json_payload,json=jsonPayload,oneof"`
144 }
145
146 func (*ConformanceRequest_ProtobufPayload) isConformanceRequest_Payload() {}
147 func (*ConformanceRequest_JsonPayload) isConformanceRequest_Payload() {}
148
149 func (m *ConformanceRequest) GetPayload() isConformanceRequest_Payload {
150 if m != nil {
151 return m.Payload
152 }
153 return nil
154 }
155
156 func (m *ConformanceRequest) GetProtobufPayload() []byte {
157 if x, ok := m.GetPayload().(*ConformanceRequest_ProtobufPayload); ok {
158 return x.ProtobufPayload
159 }
160 return nil
161 }
162
163 func (m *ConformanceRequest) GetJsonPayload() string {
164 if x, ok := m.GetPayload().(*ConformanceRequest_JsonPayload); ok {
165 return x.JsonPayload
166 }
167 return ""
168 }
169
170 func (m *ConformanceRequest) GetRequestedOutputFormat() WireFormat {
171 if m != nil {
172 return m.RequestedOutputFormat
173 }
174 return WireFormat_UNSPECIFIED
175 }
176
177 // XXX_OneofFuncs is for the internal use of the proto package.
178 func (*ConformanceRequest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
179 return _ConformanceRequest_OneofMarshaler, _ConformanceRequest_OneofUnmarshaler, _ConformanceRequest_OneofSizer, []interface{}{
180 (*ConformanceRequest_ProtobufPayload)(nil),
181 (*ConformanceRequest_JsonPayload)(nil),
182 }
183 }
184
185 func _ConformanceRequest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
186 m := msg.(*ConformanceRequest)
187 // payload
188 switch x := m.Payload.(type) {
189 case *ConformanceRequest_ProtobufPayload:
190 b.EncodeVarint(1<<3 | proto.WireBytes)
191 b.EncodeRawBytes(x.ProtobufPayload)
192 case *ConformanceRequest_JsonPayload:
193 b.EncodeVarint(2<<3 | proto.WireBytes)
194 b.EncodeStringBytes(x.JsonPayload)
195 case nil:
196 default:
197 return fmt.Errorf("ConformanceRequest.Payload has unexpected type %T", x)
198 }
199 return nil
200 }
201
202 func _ConformanceRequest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
203 m := msg.(*ConformanceRequest)
204 switch tag {
205 case 1: // payload.protobuf_payload
206 if wire != proto.WireBytes {
207 return true, proto.ErrInternalBadWireType
208 }
209 x, err := b.DecodeRawBytes(true)
210 m.Payload = &ConformanceRequest_ProtobufPayload{x}
211 return true, err
212 case 2: // payload.json_payload
213 if wire != proto.WireBytes {
214 return true, proto.ErrInternalBadWireType
215 }
216 x, err := b.DecodeStringBytes()
217 m.Payload = &ConformanceRequest_JsonPayload{x}
218 return true, err
219 default:
220 return false, nil
221 }
222 }
223
224 func _ConformanceRequest_OneofSizer(msg proto.Message) (n int) {
225 m := msg.(*ConformanceRequest)
226 // payload
227 switch x := m.Payload.(type) {
228 case *ConformanceRequest_ProtobufPayload:
229 n += proto.SizeVarint(1<<3 | proto.WireBytes)
230 n += proto.SizeVarint(uint64(len(x.ProtobufPayload)))
231 n += len(x.ProtobufPayload)
232 case *ConformanceRequest_JsonPayload:
233 n += proto.SizeVarint(2<<3 | proto.WireBytes)
234 n += proto.SizeVarint(uint64(len(x.JsonPayload)))
235 n += len(x.JsonPayload)
236 case nil:
237 default:
238 panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
239 }
240 return n
241 }
242
243 // Represents a single test case's output.
244 type ConformanceResponse struct {
245 // Types that are valid to be assigned to Result:
246 // *ConformanceResponse_ParseError
247 // *ConformanceResponse_SerializeError
248 // *ConformanceResponse_RuntimeError
249 // *ConformanceResponse_ProtobufPayload
250 // *ConformanceResponse_JsonPayload
251 // *ConformanceResponse_Skipped
252 Result isConformanceResponse_Result `protobuf_oneof:"result"`
253 }
254
255 func (m *ConformanceResponse) Reset() { *m = ConformanceResponse{} }
256 func (m *ConformanceResponse) String() string { return proto.CompactTextString(m) }
257 func (*ConformanceResponse) ProtoMessage() {}
258 func (*ConformanceResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
259
260 type isConformanceResponse_Result interface {
261 isConformanceResponse_Result()
262 }
263
264 type ConformanceResponse_ParseError struct {
265 ParseError string `protobuf:"bytes,1,opt,name=parse_error,json=parseError,oneof"`
266 }
267 type ConformanceResponse_SerializeError struct {
268 SerializeError string `protobuf:"bytes,6,opt,name=serialize_error,json=serializeError,oneof"`
269 }
270 type ConformanceResponse_RuntimeError struct {
271 RuntimeError string `protobuf:"bytes,2,opt,name=runtime_error,json=runtimeError,oneof"`
272 }
273 type ConformanceResponse_ProtobufPayload struct {
274 ProtobufPayload []byte `protobuf:"bytes,3,opt,name=protobuf_payload,json=protobufPayload,proto3,oneof"`
275 }
276 type ConformanceResponse_JsonPayload struct {
277 JsonPayload string `protobuf:"bytes,4,opt,name=json_payload,json=jsonPayload,oneof"`
278 }
279 type ConformanceResponse_Skipped struct {
280 Skipped string `protobuf:"bytes,5,opt,name=skipped,oneof"`
281 }
282
283 func (*ConformanceResponse_ParseError) isConformanceResponse_Result() {}
284 func (*ConformanceResponse_SerializeError) isConformanceResponse_Result() {}
285 func (*ConformanceResponse_RuntimeError) isConformanceResponse_Result() {}
286 func (*ConformanceResponse_ProtobufPayload) isConformanceResponse_Result() {}
287 func (*ConformanceResponse_JsonPayload) isConformanceResponse_Result() {}
288 func (*ConformanceResponse_Skipped) isConformanceResponse_Result() {}
289
290 func (m *ConformanceResponse) GetResult() isConformanceResponse_Result {
291 if m != nil {
292 return m.Result
293 }
294 return nil
295 }
296
297 func (m *ConformanceResponse) GetParseError() string {
298 if x, ok := m.GetResult().(*ConformanceResponse_ParseError); ok {
299 return x.ParseError
300 }
301 return ""
302 }
303
304 func (m *ConformanceResponse) GetSerializeError() string {
305 if x, ok := m.GetResult().(*ConformanceResponse_SerializeError); ok {
306 return x.SerializeError
307 }
308 return ""
309 }
310
311 func (m *ConformanceResponse) GetRuntimeError() string {
312 if x, ok := m.GetResult().(*ConformanceResponse_RuntimeError); ok {
313 return x.RuntimeError
314 }
315 return ""
316 }
317
318 func (m *ConformanceResponse) GetProtobufPayload() []byte {
319 if x, ok := m.GetResult().(*ConformanceResponse_ProtobufPayload); ok {
320 return x.ProtobufPayload
321 }
322 return nil
323 }
324
325 func (m *ConformanceResponse) GetJsonPayload() string {
326 if x, ok := m.GetResult().(*ConformanceResponse_JsonPayload); ok {
327 return x.JsonPayload
328 }
329 return ""
330 }
331
332 func (m *ConformanceResponse) GetSkipped() string {
333 if x, ok := m.GetResult().(*ConformanceResponse_Skipped); ok {
334 return x.Skipped
335 }
336 return ""
337 }
338
339 // XXX_OneofFuncs is for the internal use of the proto package.
340 func (*ConformanceResponse) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
341 return _ConformanceResponse_OneofMarshaler, _ConformanceResponse_OneofUnmarshaler, _ConformanceResponse_OneofSizer, []interface{}{
342 (*ConformanceResponse_ParseError)(nil),
343 (*ConformanceResponse_SerializeError)(nil),
344 (*ConformanceResponse_RuntimeError)(nil),
345 (*ConformanceResponse_ProtobufPayload)(nil),
346 (*ConformanceResponse_JsonPayload)(nil),
347 (*ConformanceResponse_Skipped)(nil),
348 }
349 }
350
351 func _ConformanceResponse_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
352 m := msg.(*ConformanceResponse)
353 // result
354 switch x := m.Result.(type) {
355 case *ConformanceResponse_ParseError:
356 b.EncodeVarint(1<<3 | proto.WireBytes)
357 b.EncodeStringBytes(x.ParseError)
358 case *ConformanceResponse_SerializeError:
359 b.EncodeVarint(6<<3 | proto.WireBytes)
360 b.EncodeStringBytes(x.SerializeError)
361 case *ConformanceResponse_RuntimeError:
362 b.EncodeVarint(2<<3 | proto.WireBytes)
363 b.EncodeStringBytes(x.RuntimeError)
364 case *ConformanceResponse_ProtobufPayload:
365 b.EncodeVarint(3<<3 | proto.WireBytes)
366 b.EncodeRawBytes(x.ProtobufPayload)
367 case *ConformanceResponse_JsonPayload:
368 b.EncodeVarint(4<<3 | proto.WireBytes)
369 b.EncodeStringBytes(x.JsonPayload)
370 case *ConformanceResponse_Skipped:
371 b.EncodeVarint(5<<3 | proto.WireBytes)
372 b.EncodeStringBytes(x.Skipped)
373 case nil:
374 default:
375 return fmt.Errorf("ConformanceResponse.Result has unexpected type %T", x)
376 }
377 return nil
378 }
379
380 func _ConformanceResponse_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
381 m := msg.(*ConformanceResponse)
382 switch tag {
383 case 1: // result.parse_error
384 if wire != proto.WireBytes {
385 return true, proto.ErrInternalBadWireType
386 }
387 x, err := b.DecodeStringBytes()
388 m.Result = &ConformanceResponse_ParseError{x}
389 return true, err
390 case 6: // result.serialize_error
391 if wire != proto.WireBytes {
392 return true, proto.ErrInternalBadWireType
393 }
394 x, err := b.DecodeStringBytes()
395 m.Result = &ConformanceResponse_SerializeError{x}
396 return true, err
397 case 2: // result.runtime_error
398 if wire != proto.WireBytes {
399 return true, proto.ErrInternalBadWireType
400 }
401 x, err := b.DecodeStringBytes()
402 m.Result = &ConformanceResponse_RuntimeError{x}
403 return true, err
404 case 3: // result.protobuf_payload
405 if wire != proto.WireBytes {
406 return true, proto.ErrInternalBadWireType
407 }
408 x, err := b.DecodeRawBytes(true)
409 m.Result = &ConformanceResponse_ProtobufPayload{x}
410 return true, err
411 case 4: // result.json_payload
412 if wire != proto.WireBytes {
413 return true, proto.ErrInternalBadWireType
414 }
415 x, err := b.DecodeStringBytes()
416 m.Result = &ConformanceResponse_JsonPayload{x}
417 return true, err
418 case 5: // result.skipped
419 if wire != proto.WireBytes {
420 return true, proto.ErrInternalBadWireType
421 }
422 x, err := b.DecodeStringBytes()
423 m.Result = &ConformanceResponse_Skipped{x}
424 return true, err
425 default:
426 return false, nil
427 }
428 }
429
430 func _ConformanceResponse_OneofSizer(msg proto.Message) (n int) {
431 m := msg.(*ConformanceResponse)
432 // result
433 switch x := m.Result.(type) {
434 case *ConformanceResponse_ParseError:
435 n += proto.SizeVarint(1<<3 | proto.WireBytes)
436 n += proto.SizeVarint(uint64(len(x.ParseError)))
437 n += len(x.ParseError)
438 case *ConformanceResponse_SerializeError:
439 n += proto.SizeVarint(6<<3 | proto.WireBytes)
440 n += proto.SizeVarint(uint64(len(x.SerializeError)))
441 n += len(x.SerializeError)
442 case *ConformanceResponse_RuntimeError:
443 n += proto.SizeVarint(2<<3 | proto.WireBytes)
444 n += proto.SizeVarint(uint64(len(x.RuntimeError)))
445 n += len(x.RuntimeError)
446 case *ConformanceResponse_ProtobufPayload:
447 n += proto.SizeVarint(3<<3 | proto.WireBytes)
448 n += proto.SizeVarint(uint64(len(x.ProtobufPayload)))
449 n += len(x.ProtobufPayload)
450 case *ConformanceResponse_JsonPayload:
451 n += proto.SizeVarint(4<<3 | proto.WireBytes)
452 n += proto.SizeVarint(uint64(len(x.JsonPayload)))
453 n += len(x.JsonPayload)
454 case *ConformanceResponse_Skipped:
455 n += proto.SizeVarint(5<<3 | proto.WireBytes)
456 n += proto.SizeVarint(uint64(len(x.Skipped)))
457 n += len(x.Skipped)
458 case nil:
459 default:
460 panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
461 }
462 return n
463 }
464
465 // This proto includes every type of field in both singular and repeated
466 // forms.
467 type TestAllTypes struct {
468 // Singular
469 OptionalInt32 int32 `protobuf:"varint,1,opt,name=optional_int32,json=optionalInt32" json:"optional_int32,omitempty"`
470 OptionalInt64 int64 `protobuf:"varint,2,opt,name=optional_int64,json=optionalInt64" json:"optional_int64,omitempty"`
471 OptionalUint32 uint32 `protobuf:"varint,3,opt,name=optional_uint32,json=optionalUint32" json:"optional_uint32,omitempty"`
472 OptionalUint64 uint64 `protobuf:"varint,4,opt,name=optional_uint64,json=optionalUint64" json:"optional_uint64,omitempty"`
473 OptionalSint32 int32 `protobuf:"zigzag32,5,opt,name=optional_sint32,json=optionalSint32" json:"optional_sint32,omitempty"`
474 OptionalSint64 int64 `protobuf:"zigzag64,6,opt,name=optional_sint64,json=optionalSint64" json:"optional_sint64,omitempty"`
475 OptionalFixed32 uint32 `protobuf:"fixed32,7,opt,name=optional_fixed32,json=optionalFixed32" json:"optional_fixed32,omitempty"`
476 OptionalFixed64 uint64 `protobuf:"fixed64,8,opt,name=optional_fixed64,json=optionalFixed64" json:"optional_fixed64,omitempty"`
477 OptionalSfixed32 int32 `protobuf:"fixed32,9,opt,name=optional_sfixed32,json=optionalSfixed32" json:"optional_sfixed32,omitempty"`
478 OptionalSfixed64 int64 `protobuf:"fixed64,10,opt,name=optional_sfixed64,json=optionalSfixed64" json:"optional_sfixed64,omitempty"`
479 OptionalFloat float32 `protobuf:"fixed32,11,opt,name=optional_float,json=optionalFloat" json:"optional_float,omitempty"`
480 OptionalDouble float64 `protobuf:"fixed64,12,opt,name=optional_double,json=optionalDouble" json:"optional_double,omitempty"`
481 OptionalBool bool `protobuf:"varint,13,opt,name=optional_bool,json=optionalBool" json:"optional_bool,omitempty"`
482 OptionalString string `protobuf:"bytes,14,opt,name=optional_string,json=optionalString" json:"optional_string,omitempty"`
483 OptionalBytes []byte `protobuf:"bytes,15,opt,name=optional_bytes,json=optionalBytes,proto3" json:"optional_bytes,omitempty"`
484 OptionalNestedMessage *TestAllTypes_NestedMessage `protobuf:"bytes,18,opt,name=optional_nested_message,json=optionalNestedMessage" json:"optional_nested_message,omitempty"`
485 OptionalForeignMessage *ForeignMessage `protobuf:"bytes,19,opt,name=optional_foreign_message,json=optionalForeignMessage" json:"optional_foreign_message,omitempty"`
486 OptionalNestedEnum TestAllTypes_NestedEnum `protobuf:"varint,21,opt,name=optional_nested_enum,json=optionalNestedEnum,enum=conformance.TestAllTypes_NestedEnum" json:"optional_nested_enum,omitempty"`
487 OptionalForeignEnum ForeignEnum `protobuf:"varint,22,opt,name=optional_foreign_enum,json=optionalForeignEnum,enum=conformance.ForeignEnum" json:"optional_foreign_enum,omitempty"`
488 OptionalStringPiece string `protobuf:"bytes,24,opt,name=optional_string_piece,json=optionalStringPiece" json:"optional_string_piece,omitempty"`
489 OptionalCord string `protobuf:"bytes,25,opt,name=optional_cord,json=optionalCord" json:"optional_cord,omitempty"`
490 RecursiveMessage *TestAllTypes `protobuf:"bytes,27,opt,name=recursive_message,json=recursiveMessage" json:"recursive_message,omitempty"`
491 // Repeated
492 RepeatedInt32 []int32 `protobuf:"varint,31,rep,packed,name=repeated_int32,json=repeatedInt32" json:"repeated_int32,omitempty"`
493 RepeatedInt64 []int64 `protobuf:"varint,32,rep,packed,name=repeated_int64,json=repeatedInt64" json:"repeated_int64,omitempty"`
494 RepeatedUint32 []uint32 `protobuf:"varint,33,rep,packed,name=repeated_uint32,json=repeatedUint32" json:"repeated_uint32,omitempty"`
495 RepeatedUint64 []uint64 `protobuf:"varint,34,rep,packed,name=repeated_uint64,json=repeatedUint64" json:"repeated_uint64,omitempty"`
496 RepeatedSint32 []int32 `protobuf:"zigzag32,35,rep,packed,name=repeated_sint32,json=repeatedSint32" json:"repeated_sint32,omitempty"`
497 RepeatedSint64 []int64 `protobuf:"zigzag64,36,rep,packed,name=repeated_sint64,json=repeatedSint64" json:"repeated_sint64,omitempty"`
498 RepeatedFixed32 []uint32 `protobuf:"fixed32,37,rep,packed,name=repeated_fixed32,json=repeatedFixed32" json:"repeated_fixed32,omitempty"`
499 RepeatedFixed64 []uint64 `protobuf:"fixed64,38,rep,packed,name=repeated_fixed64,json=repeatedFixed64" json:"repeated_fixed64,omitempty"`
500 RepeatedSfixed32 []int32 `protobuf:"fixed32,39,rep,packed,name=repeated_sfixed32,json=repeatedSfixed32" json:"repeated_sfixed32,omitempty"`
501 RepeatedSfixed64 []int64 `protobuf:"fixed64,40,rep,packed,name=repeated_sfixed64,json=repeatedSfixed64" json:"repeated_sfixed64,omitempty"`
502 RepeatedFloat []float32 `protobuf:"fixed32,41,rep,packed,name=repeated_float,json=repeatedFloat" json:"repeated_float,omitempty"`
503 RepeatedDouble []float64 `protobuf:"fixed64,42,rep,packed,name=repeated_double,json=repeatedDouble" json:"repeated_double,omitempty"`
504 RepeatedBool []bool `protobuf:"varint,43,rep,packed,name=repeated_bool,json=repeatedBool" json:"repeated_bool,omitempty"`
505 RepeatedString []string `protobuf:"bytes,44,rep,name=repeated_string,json=repeatedString" json:"repeated_string,omitempty"`
506 RepeatedBytes [][]byte `protobuf:"bytes,45,rep,name=repeated_bytes,json=repeatedBytes,proto3" json:"repeated_bytes,omitempty"`
507 RepeatedNestedMessage []*TestAllTypes_NestedMessage `protobuf:"bytes,48,rep,name=repeated_nested_message,json=repeatedNestedMessage" json:"repeated_nested_message,omitempty"`
508 RepeatedForeignMessage []*ForeignMessage `protobuf:"bytes,49,rep,name=repeated_foreign_message,json=repeatedForeignMessage" json:"repeated_foreign_message,omitempty"`
509 RepeatedNestedEnum []TestAllTypes_NestedEnum `protobuf:"varint,51,rep,packed,name=repeated_nested_enum,json=repeatedNestedEnum,enum=conformance.TestAllTypes_NestedEnum" json:"repeated_nested_enum,omitempty"`
510 RepeatedForeignEnum []ForeignEnum `protobuf:"varint,52,rep,packed,name=repeated_foreign_enum,json=repeatedForeignEnum,enum=conformance.ForeignEnum" json:"repeated_foreign_enum,omitempty"`
511 RepeatedStringPiece []string `protobuf:"bytes,54,rep,name=repeated_string_piece,json=repeatedStringPiece" json:"repeated_string_piece,omitempty"`
512 RepeatedCord []string `protobuf:"bytes,55,rep,name=repeated_cord,json=repeatedCord" json:"repeated_cord,omitempty"`
513 // Map
514 MapInt32Int32 map[int32]int32 `protobuf:"bytes,56,rep,name=map_int32_int32,json=mapInt32Int32" json:"map_int32_int32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
515 MapInt64Int64 map[int64]int64 `protobuf:"bytes,57,rep,name=map_int64_int64,json=mapInt64Int64" json:"map_int64_int64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
516 MapUint32Uint32 map[uint32]uint32 `protobuf:"bytes,58,rep,name=map_uint32_uint32,json=mapUint32Uint32" json:"map_uint32_uint32,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
517 MapUint64Uint64 map[uint64]uint64 `protobuf:"bytes,59,rep,name=map_uint64_uint64,json=mapUint64Uint64" json:"map_uint64_uint64,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
518 MapSint32Sint32 map[int32]int32 `protobuf:"bytes,60,rep,name=map_sint32_sint32,json=mapSint32Sint32" json:"map_sint32_sint32,omitempty" protobuf_key:"zigzag32,1,opt,name=key" protobuf_val:"zigzag32,2,opt,name=value"`
519 MapSint64Sint64 map[int64]int64 `protobuf:"bytes,61,rep,name=map_sint64_sint64,json=mapSint64Sint64" json:"map_sint64_sint64,omitempty" protobuf_key:"zigzag64,1,opt,name=key" protobuf_val:"zigzag64,2,opt,name=value"`
520 MapFixed32Fixed32 map[uint32]uint32 `protobuf:"bytes,62,rep,name=map_fixed32_fixed32,json=mapFixed32Fixed32" json:"map_fixed32_fixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
521 MapFixed64Fixed64 map[uint64]uint64 `protobuf:"bytes,63,rep,name=map_fixed64_fixed64,json=mapFixed64Fixed64" json:"map_fixed64_fixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
522 MapSfixed32Sfixed32 map[int32]int32 `protobuf:"bytes,64,rep,name=map_sfixed32_sfixed32,json=mapSfixed32Sfixed32" json:"map_sfixed32_sfixed32,omitempty" protobuf_key:"fixed32,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
523 MapSfixed64Sfixed64 map[int64]int64 `protobuf:"bytes,65,rep,name=map_sfixed64_sfixed64,json=mapSfixed64Sfixed64" json:"map_sfixed64_sfixed64,omitempty" protobuf_key:"fixed64,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
524 MapInt32Float map[int32]float32 `protobuf:"bytes,66,rep,name=map_int32_float,json=mapInt32Float" json:"map_int32_float,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed32,2,opt,name=value"`
525 MapInt32Double map[int32]float64 `protobuf:"bytes,67,rep,name=map_int32_double,json=mapInt32Double" json:"map_int32_double,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"`
526 MapBoolBool map[bool]bool `protobuf:"bytes,68,rep,name=map_bool_bool,json=mapBoolBool" json:"map_bool_bool,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
527 MapStringString map[string]string `protobuf:"bytes,69,rep,name=map_string_string,json=mapStringString" json:"map_string_string,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
528 MapStringBytes map[string][]byte `protobuf:"bytes,70,rep,name=map_string_bytes,json=mapStringBytes" json:"map_string_bytes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value,proto3"`
529 MapStringNestedMessage map[string]*TestAllTypes_NestedMessage `protobuf:"bytes,71,rep,name=map_string_nested_message,json=mapStringNestedMessage" json:"map_string_nested_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
530 MapStringForeignMessage map[string]*ForeignMessage `protobuf:"bytes,72,rep,name=map_string_foreign_message,json=mapStringForeignMessage" json:"map_string_foreign_message,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
531 MapStringNestedEnum map[string]TestAllTypes_NestedEnum `protobuf:"bytes,73,rep,name=map_string_nested_enum,json=mapStringNestedEnum" json:"map_string_nested_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=conformance.TestAllTypes_NestedEnum"`
532 MapStringForeignEnum map[string]ForeignEnum `protobuf:"bytes,74,rep,name=map_string_foreign_enum,json=mapStringForeignEnum" json:"map_string_foreign_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value,enum=conformance.ForeignEnum"`
533 // Types that are valid to be assigned to OneofField:
534 // *TestAllTypes_OneofUint32
535 // *TestAllTypes_OneofNestedMessage
536 // *TestAllTypes_OneofString
537 // *TestAllTypes_OneofBytes
538 // *TestAllTypes_OneofBool
539 // *TestAllTypes_OneofUint64
540 // *TestAllTypes_OneofFloat
541 // *TestAllTypes_OneofDouble
542 // *TestAllTypes_OneofEnum
543 OneofField isTestAllTypes_OneofField `protobuf_oneof:"oneof_field"`
544 // Well-known types
545 OptionalBoolWrapper *google_protobuf5.BoolValue `protobuf:"bytes,201,opt,name=optional_bool_wrapper,json=optionalBoolWrapper" json:"optional_bool_wrapper,omitempty"`
546 OptionalInt32Wrapper *google_protobuf5.Int32Value `protobuf:"bytes,202,opt,name=optional_int32_wrapper,json=optionalInt32Wrapper" json:"optional_int32_wrapper,omitempty"`
547 OptionalInt64Wrapper *google_protobuf5.Int64Value `protobuf:"bytes,203,opt,name=optional_int64_wrapper,json=optionalInt64Wrapper" json:"optional_int64_wrapper,omitempty"`
548 OptionalUint32Wrapper *google_protobuf5.UInt32Value `protobuf:"bytes,204,opt,name=optional_uint32_wrapper,json=optionalUint32Wrapper" json:"optional_uint32_wrapper,omitempty"`
549 OptionalUint64Wrapper *google_protobuf5.UInt64Value `protobuf:"bytes,205,opt,name=optional_uint64_wrapper,json=optionalUint64Wrapper" json:"optional_uint64_wrapper,omitempty"`
550 OptionalFloatWrapper *google_protobuf5.FloatValue `protobuf:"bytes,206,opt,name=optional_float_wrapper,json=optionalFloatWrapper" json:"optional_float_wrapper,omitempty"`
551 OptionalDoubleWrapper *google_protobuf5.DoubleValue `protobuf:"bytes,207,opt,name=optional_double_wrapper,json=optionalDoubleWrapper" json:"optional_double_wrapper,omitempty"`
552 OptionalStringWrapper *google_protobuf5.StringValue `protobuf:"bytes,208,opt,name=optional_string_wrapper,json=optionalStringWrapper" json:"optional_string_wrapper,omitempty"`
553 OptionalBytesWrapper *google_protobuf5.BytesValue `protobuf:"bytes,209,opt,name=optional_bytes_wrapper,json=optionalBytesWrapper" json:"optional_bytes_wrapper,omitempty"`
554 RepeatedBoolWrapper []*google_protobuf5.BoolValue `protobuf:"bytes,211,rep,name=repeated_bool_wrapper,json=repeatedBoolWrapper" json:"repeated_bool_wrapper,omitempty"`
555 RepeatedInt32Wrapper []*google_protobuf5.Int32Value `protobuf:"bytes,212,rep,name=repeated_int32_wrapper,json=repeatedInt32Wrapper" json:"repeated_int32_wrapper,omitempty"`
556 RepeatedInt64Wrapper []*google_protobuf5.Int64Value `protobuf:"bytes,213,rep,name=repeated_int64_wrapper,json=repeatedInt64Wrapper" json:"repeated_int64_wrapper,omitempty"`
557 RepeatedUint32Wrapper []*google_protobuf5.UInt32Value `protobuf:"bytes,214,rep,name=repeated_uint32_wrapper,json=repeatedUint32Wrapper" json:"repeated_uint32_wrapper,omitempty"`
558 RepeatedUint64Wrapper []*google_protobuf5.UInt64Value `protobuf:"bytes,215,rep,name=repeated_uint64_wrapper,json=repeatedUint64Wrapper" json:"repeated_uint64_wrapper,omitempty"`
559 RepeatedFloatWrapper []*google_protobuf5.FloatValue `protobuf:"bytes,216,rep,name=repeated_float_wrapper,json=repeatedFloatWrapper" json:"repeated_float_wrapper,omitempty"`
560 RepeatedDoubleWrapper []*google_protobuf5.DoubleValue `protobuf:"bytes,217,rep,name=repeated_double_wrapper,json=repeatedDoubleWrapper" json:"repeated_double_wrapper,omitempty"`
561 RepeatedStringWrapper []*google_protobuf5.StringValue `protobuf:"bytes,218,rep,name=repeated_string_wrapper,json=repeatedStringWrapper" json:"repeated_string_wrapper,omitempty"`
562 RepeatedBytesWrapper []*google_protobuf5.BytesValue `protobuf:"bytes,219,rep,name=repeated_bytes_wrapper,json=repeatedBytesWrapper" json:"repeated_bytes_wrapper,omitempty"`
563 OptionalDuration *google_protobuf1.Duration `protobuf:"bytes,301,opt,name=optional_duration,json=optionalDuration" json:"optional_duration,omitempty"`
564 OptionalTimestamp *google_protobuf4.Timestamp `protobuf:"bytes,302,opt,name=optional_timestamp,json=optionalTimestamp" json:"optional_timestamp,omitempty"`
565 OptionalFieldMask *google_protobuf2.FieldMask `protobuf:"bytes,303,opt,name=optional_field_mask,json=optionalFieldMask" json:"optional_field_mask,omitempty"`
566 OptionalStruct *google_protobuf3.Struct `protobuf:"bytes,304,opt,name=optional_struct,json=optionalStruct" json:"optional_struct,omitempty"`
567 OptionalAny *google_protobuf.Any `protobuf:"bytes,305,opt,name=optional_any,json=optionalAny" json:"optional_any,omitempty"`
568 OptionalValue *google_protobuf3.Value `protobuf:"bytes,306,opt,name=optional_value,json=optionalValue" json:"optional_value,omitempty"`
569 RepeatedDuration []*google_protobuf1.Duration `protobuf:"bytes,311,rep,name=repeated_duration,json=repeatedDuration" json:"repeated_duration,omitempty"`
570 RepeatedTimestamp []*google_protobuf4.Timestamp `protobuf:"bytes,312,rep,name=repeated_timestamp,json=repeatedTimestamp" json:"repeated_timestamp,omitempty"`
571 RepeatedFieldmask []*google_protobuf2.FieldMask `protobuf:"bytes,313,rep,name=repeated_fieldmask,json=repeatedFieldmask" json:"repeated_fieldmask,omitempty"`
572 RepeatedStruct []*google_protobuf3.Struct `protobuf:"bytes,324,rep,name=repeated_struct,json=repeatedStruct" json:"repeated_struct,omitempty"`
573 RepeatedAny []*google_protobuf.Any `protobuf:"bytes,315,rep,name=repeated_any,json=repeatedAny" json:"repeated_any,omitempty"`
574 RepeatedValue []*google_protobuf3.Value `protobuf:"bytes,316,rep,name=repeated_value,json=repeatedValue" json:"repeated_value,omitempty"`
575 // Test field-name-to-JSON-name convention.
576 // (protobuf says names can be any valid C/C++ identifier.)
577 Fieldname1 int32 `protobuf:"varint,401,opt,name=fieldname1" json:"fieldname1,omitempty"`
578 FieldName2 int32 `protobuf:"varint,402,opt,name=field_name2,json=fieldName2" json:"field_name2,omitempty"`
579 XFieldName3 int32 `protobuf:"varint,403,opt,name=_field_name3,json=FieldName3" json:"_field_name3,omitempty"`
580 Field_Name4_ int32 `protobuf:"varint,404,opt,name=field__name4_,json=fieldName4" json:"field__name4_,omitempty"`
581 Field0Name5 int32 `protobuf:"varint,405,opt,name=field0name5" json:"field0name5,omitempty"`
582 Field_0Name6 int32 `protobuf:"varint,406,opt,name=field_0_name6,json=field0Name6" json:"field_0_name6,omitempty"`
583 FieldName7 int32 `protobuf:"varint,407,opt,name=fieldName7" json:"fieldName7,omitempty"`
584 FieldName8 int32 `protobuf:"varint,408,opt,name=FieldName8" json:"FieldName8,omitempty"`
585 Field_Name9 int32 `protobuf:"varint,409,opt,name=field_Name9,json=fieldName9" json:"field_Name9,omitempty"`
586 Field_Name10 int32 `protobuf:"varint,410,opt,name=Field_Name10,json=FieldName10" json:"Field_Name10,omitempty"`
587 FIELD_NAME11 int32 `protobuf:"varint,411,opt,name=FIELD_NAME11,json=FIELDNAME11" json:"FIELD_NAME11,omitempty"`
588 FIELDName12 int32 `protobuf:"varint,412,opt,name=FIELD_name12,json=FIELDName12" json:"FIELD_name12,omitempty"`
589 XFieldName13 int32 `protobuf:"varint,413,opt,name=__field_name13,json=FieldName13" json:"__field_name13,omitempty"`
590 X_FieldName14 int32 `protobuf:"varint,414,opt,name=__Field_name14,json=FieldName14" json:"__Field_name14,omitempty"`
591 Field_Name15 int32 `protobuf:"varint,415,opt,name=field__name15,json=fieldName15" json:"field__name15,omitempty"`
592 Field__Name16 int32 `protobuf:"varint,416,opt,name=field__Name16,json=fieldName16" json:"field__Name16,omitempty"`
593 FieldName17__ int32 `protobuf:"varint,417,opt,name=field_name17__,json=fieldName17" json:"field_name17__,omitempty"`
594 FieldName18__ int32 `protobuf:"varint,418,opt,name=Field_name18__,json=FieldName18" json:"Field_name18__,omitempty"`
595 }
596
597 func (m *TestAllTypes) Reset() { *m = TestAllTypes{} }
598 func (m *TestAllTypes) String() string { return proto.CompactTextString(m) }
599 func (*TestAllTypes) ProtoMessage() {}
600 func (*TestAllTypes) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
601
602 type isTestAllTypes_OneofField interface {
603 isTestAllTypes_OneofField()
604 }
605
606 type TestAllTypes_OneofUint32 struct {
607 OneofUint32 uint32 `protobuf:"varint,111,opt,name=oneof_uint32,json=oneofUint32,oneof"`
608 }
609 type TestAllTypes_OneofNestedMessage struct {
610 OneofNestedMessage *TestAllTypes_NestedMessage `protobuf:"bytes,112,opt,name=oneof_nested_message,json=oneofNestedMessage,oneof"`
611 }
612 type TestAllTypes_OneofString struct {
613 OneofString string `protobuf:"bytes,113,opt,name=oneof_string,json=oneofString,oneof"`
614 }
615 type TestAllTypes_OneofBytes struct {
616 OneofBytes []byte `protobuf:"bytes,114,opt,name=oneof_bytes,json=oneofBytes,proto3,oneof"`
617 }
618 type TestAllTypes_OneofBool struct {
619 OneofBool bool `protobuf:"varint,115,opt,name=oneof_bool,json=oneofBool,oneof"`
620 }
621 type TestAllTypes_OneofUint64 struct {
622 OneofUint64 uint64 `protobuf:"varint,116,opt,name=oneof_uint64,json=oneofUint64,oneof"`
623 }
624 type TestAllTypes_OneofFloat struct {
625 OneofFloat float32 `protobuf:"fixed32,117,opt,name=oneof_float,json=oneofFloat,oneof"`
626 }
627 type TestAllTypes_OneofDouble struct {
628 OneofDouble float64 `protobuf:"fixed64,118,opt,name=oneof_double,json=oneofDouble,oneof"`
629 }
630 type TestAllTypes_OneofEnum struct {
631 OneofEnum TestAllTypes_NestedEnum `protobuf:"varint,119,opt,name=oneof_enum,json=oneofEnum,enum=conformance.TestAllTypes_NestedEnum,oneof"`
632 }
633
634 func (*TestAllTypes_OneofUint32) isTestAllTypes_OneofField() {}
635 func (*TestAllTypes_OneofNestedMessage) isTestAllTypes_OneofField() {}
636 func (*TestAllTypes_OneofString) isTestAllTypes_OneofField() {}
637 func (*TestAllTypes_OneofBytes) isTestAllTypes_OneofField() {}
638 func (*TestAllTypes_OneofBool) isTestAllTypes_OneofField() {}
639 func (*TestAllTypes_OneofUint64) isTestAllTypes_OneofField() {}
640 func (*TestAllTypes_OneofFloat) isTestAllTypes_OneofField() {}
641 func (*TestAllTypes_OneofDouble) isTestAllTypes_OneofField() {}
642 func (*TestAllTypes_OneofEnum) isTestAllTypes_OneofField() {}
643
644 func (m *TestAllTypes) GetOneofField() isTestAllTypes_OneofField {
645 if m != nil {
646 return m.OneofField
647 }
648 return nil
649 }
650
651 func (m *TestAllTypes) GetOptionalInt32() int32 {
652 if m != nil {
653 return m.OptionalInt32
654 }
655 return 0
656 }
657
658 func (m *TestAllTypes) GetOptionalInt64() int64 {
659 if m != nil {
660 return m.OptionalInt64
661 }
662 return 0
663 }
664
665 func (m *TestAllTypes) GetOptionalUint32() uint32 {
666 if m != nil {
667 return m.OptionalUint32
668 }
669 return 0
670 }
671
672 func (m *TestAllTypes) GetOptionalUint64() uint64 {
673 if m != nil {
674 return m.OptionalUint64
675 }
676 return 0
677 }
678
679 func (m *TestAllTypes) GetOptionalSint32() int32 {
680 if m != nil {
681 return m.OptionalSint32
682 }
683 return 0
684 }
685
686 func (m *TestAllTypes) GetOptionalSint64() int64 {
687 if m != nil {
688 return m.OptionalSint64
689 }
690 return 0
691 }
692
693 func (m *TestAllTypes) GetOptionalFixed32() uint32 {
694 if m != nil {
695 return m.OptionalFixed32
696 }
697 return 0
698 }
699
700 func (m *TestAllTypes) GetOptionalFixed64() uint64 {
701 if m != nil {
702 return m.OptionalFixed64
703 }
704 return 0
705 }
706
707 func (m *TestAllTypes) GetOptionalSfixed32() int32 {
708 if m != nil {
709 return m.OptionalSfixed32
710 }
711 return 0
712 }
713
714 func (m *TestAllTypes) GetOptionalSfixed64() int64 {
715 if m != nil {
716 return m.OptionalSfixed64
717 }
718 return 0
719 }
720
721 func (m *TestAllTypes) GetOptionalFloat() float32 {
722 if m != nil {
723 return m.OptionalFloat
724 }
725 return 0
726 }
727
728 func (m *TestAllTypes) GetOptionalDouble() float64 {
729 if m != nil {
730 return m.OptionalDouble
731 }
732 return 0
733 }
734
735 func (m *TestAllTypes) GetOptionalBool() bool {
736 if m != nil {
737 return m.OptionalBool
738 }
739 return false
740 }
741
742 func (m *TestAllTypes) GetOptionalString() string {
743 if m != nil {
744 return m.OptionalString
745 }
746 return ""
747 }
748
749 func (m *TestAllTypes) GetOptionalBytes() []byte {
750 if m != nil {
751 return m.OptionalBytes
752 }
753 return nil
754 }
755
756 func (m *TestAllTypes) GetOptionalNestedMessage() *TestAllTypes_NestedMessage {
757 if m != nil {
758 return m.OptionalNestedMessage
759 }
760 return nil
761 }
762
763 func (m *TestAllTypes) GetOptionalForeignMessage() *ForeignMessage {
764 if m != nil {
765 return m.OptionalForeignMessage
766 }
767 return nil
768 }
769
770 func (m *TestAllTypes) GetOptionalNestedEnum() TestAllTypes_NestedEnum {
771 if m != nil {
772 return m.OptionalNestedEnum
773 }
774 return TestAllTypes_FOO
775 }
776
777 func (m *TestAllTypes) GetOptionalForeignEnum() ForeignEnum {
778 if m != nil {
779 return m.OptionalForeignEnum
780 }
781 return ForeignEnum_FOREIGN_FOO
782 }
783
784 func (m *TestAllTypes) GetOptionalStringPiece() string {
785 if m != nil {
786 return m.OptionalStringPiece
787 }
788 return ""
789 }
790
791 func (m *TestAllTypes) GetOptionalCord() string {
792 if m != nil {
793 return m.OptionalCord
794 }
795 return ""
796 }
797
798 func (m *TestAllTypes) GetRecursiveMessage() *TestAllTypes {
799 if m != nil {
800 return m.RecursiveMessage
801 }
802 return nil
803 }
804
805 func (m *TestAllTypes) GetRepeatedInt32() []int32 {
806 if m != nil {
807 return m.RepeatedInt32
808 }
809 return nil
810 }
811
812 func (m *TestAllTypes) GetRepeatedInt64() []int64 {
813 if m != nil {
814 return m.RepeatedInt64
815 }
816 return nil
817 }
818
819 func (m *TestAllTypes) GetRepeatedUint32() []uint32 {
820 if m != nil {
821 return m.RepeatedUint32
822 }
823 return nil
824 }
825
826 func (m *TestAllTypes) GetRepeatedUint64() []uint64 {
827 if m != nil {
828 return m.RepeatedUint64
829 }
830 return nil
831 }
832
833 func (m *TestAllTypes) GetRepeatedSint32() []int32 {
834 if m != nil {
835 return m.RepeatedSint32
836 }
837 return nil
838 }
839
840 func (m *TestAllTypes) GetRepeatedSint64() []int64 {
841 if m != nil {
842 return m.RepeatedSint64
843 }
844 return nil
845 }
846
847 func (m *TestAllTypes) GetRepeatedFixed32() []uint32 {
848 if m != nil {
849 return m.RepeatedFixed32
850 }
851 return nil
852 }
853
854 func (m *TestAllTypes) GetRepeatedFixed64() []uint64 {
855 if m != nil {
856 return m.RepeatedFixed64
857 }
858 return nil
859 }
860
861 func (m *TestAllTypes) GetRepeatedSfixed32() []int32 {
862 if m != nil {
863 return m.RepeatedSfixed32
864 }
865 return nil
866 }
867
868 func (m *TestAllTypes) GetRepeatedSfixed64() []int64 {
869 if m != nil {
870 return m.RepeatedSfixed64
871 }
872 return nil
873 }
874
875 func (m *TestAllTypes) GetRepeatedFloat() []float32 {
876 if m != nil {
877 return m.RepeatedFloat
878 }
879 return nil
880 }
881
882 func (m *TestAllTypes) GetRepeatedDouble() []float64 {
883 if m != nil {
884 return m.RepeatedDouble
885 }
886 return nil
887 }
888
889 func (m *TestAllTypes) GetRepeatedBool() []bool {
890 if m != nil {
891 return m.RepeatedBool
892 }
893 return nil
894 }
895
896 func (m *TestAllTypes) GetRepeatedString() []string {
897 if m != nil {
898 return m.RepeatedString
899 }
900 return nil
901 }
902
903 func (m *TestAllTypes) GetRepeatedBytes() [][]byte {
904 if m != nil {
905 return m.RepeatedBytes
906 }
907 return nil
908 }
909
910 func (m *TestAllTypes) GetRepeatedNestedMessage() []*TestAllTypes_NestedMessage {
911 if m != nil {
912 return m.RepeatedNestedMessage
913 }
914 return nil
915 }
916
917 func (m *TestAllTypes) GetRepeatedForeignMessage() []*ForeignMessage {
918 if m != nil {
919 return m.RepeatedForeignMessage
920 }
921 return nil
922 }
923
924 func (m *TestAllTypes) GetRepeatedNestedEnum() []TestAllTypes_NestedEnum {
925 if m != nil {
926 return m.RepeatedNestedEnum
927 }
928 return nil
929 }
930
931 func (m *TestAllTypes) GetRepeatedForeignEnum() []ForeignEnum {
932 if m != nil {
933 return m.RepeatedForeignEnum
934 }
935 return nil
936 }
937
938 func (m *TestAllTypes) GetRepeatedStringPiece() []string {
939 if m != nil {
940 return m.RepeatedStringPiece
941 }
942 return nil
943 }
944
945 func (m *TestAllTypes) GetRepeatedCord() []string {
946 if m != nil {
947 return m.RepeatedCord
948 }
949 return nil
950 }
951
952 func (m *TestAllTypes) GetMapInt32Int32() map[int32]int32 {
953 if m != nil {
954 return m.MapInt32Int32
955 }
956 return nil
957 }
958
959 func (m *TestAllTypes) GetMapInt64Int64() map[int64]int64 {
960 if m != nil {
961 return m.MapInt64Int64
962 }
963 return nil
964 }
965
966 func (m *TestAllTypes) GetMapUint32Uint32() map[uint32]uint32 {
967 if m != nil {
968 return m.MapUint32Uint32
969 }
970 return nil
971 }
972
973 func (m *TestAllTypes) GetMapUint64Uint64() map[uint64]uint64 {
974 if m != nil {
975 return m.MapUint64Uint64
976 }
977 return nil
978 }
979
980 func (m *TestAllTypes) GetMapSint32Sint32() map[int32]int32 {
981 if m != nil {
982 return m.MapSint32Sint32
983 }
984 return nil
985 }
986
987 func (m *TestAllTypes) GetMapSint64Sint64() map[int64]int64 {
988 if m != nil {
989 return m.MapSint64Sint64
990 }
991 return nil
992 }
993
994 func (m *TestAllTypes) GetMapFixed32Fixed32() map[uint32]uint32 {
995 if m != nil {
996 return m.MapFixed32Fixed32
997 }
998 return nil
999 }
1000
1001 func (m *TestAllTypes) GetMapFixed64Fixed64() map[uint64]uint64 {
1002 if m != nil {
1003 return m.MapFixed64Fixed64
1004 }
1005 return nil
1006 }
1007
1008 func (m *TestAllTypes) GetMapSfixed32Sfixed32() map[int32]int32 {
1009 if m != nil {
1010 return m.MapSfixed32Sfixed32
1011 }
1012 return nil
1013 }
1014
1015 func (m *TestAllTypes) GetMapSfixed64Sfixed64() map[int64]int64 {
1016 if m != nil {
1017 return m.MapSfixed64Sfixed64
1018 }
1019 return nil
1020 }
1021
1022 func (m *TestAllTypes) GetMapInt32Float() map[int32]float32 {
1023 if m != nil {
1024 return m.MapInt32Float
1025 }
1026 return nil
1027 }
1028
1029 func (m *TestAllTypes) GetMapInt32Double() map[int32]float64 {
1030 if m != nil {
1031 return m.MapInt32Double
1032 }
1033 return nil
1034 }
1035
1036 func (m *TestAllTypes) GetMapBoolBool() map[bool]bool {
1037 if m != nil {
1038 return m.MapBoolBool
1039 }
1040 return nil
1041 }
1042
1043 func (m *TestAllTypes) GetMapStringString() map[string]string {
1044 if m != nil {
1045 return m.MapStringString
1046 }
1047 return nil
1048 }
1049
1050 func (m *TestAllTypes) GetMapStringBytes() map[string][]byte {
1051 if m != nil {
1052 return m.MapStringBytes
1053 }
1054 return nil
1055 }
1056
1057 func (m *TestAllTypes) GetMapStringNestedMessage() map[string]*TestAllTypes_NestedMessage {
1058 if m != nil {
1059 return m.MapStringNestedMessage
1060 }
1061 return nil
1062 }
1063
1064 func (m *TestAllTypes) GetMapStringForeignMessage() map[string]*ForeignMessage {
1065 if m != nil {
1066 return m.MapStringForeignMessage
1067 }
1068 return nil
1069 }
1070
1071 func (m *TestAllTypes) GetMapStringNestedEnum() map[string]TestAllTypes_NestedEnum {
1072 if m != nil {
1073 return m.MapStringNestedEnum
1074 }
1075 return nil
1076 }
1077
1078 func (m *TestAllTypes) GetMapStringForeignEnum() map[string]ForeignEnum {
1079 if m != nil {
1080 return m.MapStringForeignEnum
1081 }
1082 return nil
1083 }
1084
1085 func (m *TestAllTypes) GetOneofUint32() uint32 {
1086 if x, ok := m.GetOneofField().(*TestAllTypes_OneofUint32); ok {
1087 return x.OneofUint32
1088 }
1089 return 0
1090 }
1091
1092 func (m *TestAllTypes) GetOneofNestedMessage() *TestAllTypes_NestedMessage {
1093 if x, ok := m.GetOneofField().(*TestAllTypes_OneofNestedMessage); ok {
1094 return x.OneofNestedMessage
1095 }
1096 return nil
1097 }
1098
1099 func (m *TestAllTypes) GetOneofString() string {
1100 if x, ok := m.GetOneofField().(*TestAllTypes_OneofString); ok {
1101 return x.OneofString
1102 }
1103 return ""
1104 }
1105
1106 func (m *TestAllTypes) GetOneofBytes() []byte {
1107 if x, ok := m.GetOneofField().(*TestAllTypes_OneofBytes); ok {
1108 return x.OneofBytes
1109 }
1110 return nil
1111 }
1112
1113 func (m *TestAllTypes) GetOneofBool() bool {
1114 if x, ok := m.GetOneofField().(*TestAllTypes_OneofBool); ok {
1115 return x.OneofBool
1116 }
1117 return false
1118 }
1119
1120 func (m *TestAllTypes) GetOneofUint64() uint64 {
1121 if x, ok := m.GetOneofField().(*TestAllTypes_OneofUint64); ok {
1122 return x.OneofUint64
1123 }
1124 return 0
1125 }
1126
1127 func (m *TestAllTypes) GetOneofFloat() float32 {
1128 if x, ok := m.GetOneofField().(*TestAllTypes_OneofFloat); ok {
1129 return x.OneofFloat
1130 }
1131 return 0
1132 }
1133
1134 func (m *TestAllTypes) GetOneofDouble() float64 {
1135 if x, ok := m.GetOneofField().(*TestAllTypes_OneofDouble); ok {
1136 return x.OneofDouble
1137 }
1138 return 0
1139 }
1140
1141 func (m *TestAllTypes) GetOneofEnum() TestAllTypes_NestedEnum {
1142 if x, ok := m.GetOneofField().(*TestAllTypes_OneofEnum); ok {
1143 return x.OneofEnum
1144 }
1145 return TestAllTypes_FOO
1146 }
1147
1148 func (m *TestAllTypes) GetOptionalBoolWrapper() *google_protobuf5.BoolValue {
1149 if m != nil {
1150 return m.OptionalBoolWrapper
1151 }
1152 return nil
1153 }
1154
1155 func (m *TestAllTypes) GetOptionalInt32Wrapper() *google_protobuf5.Int32Value {
1156 if m != nil {
1157 return m.OptionalInt32Wrapper
1158 }
1159 return nil
1160 }
1161
1162 func (m *TestAllTypes) GetOptionalInt64Wrapper() *google_protobuf5.Int64Value {
1163 if m != nil {
1164 return m.OptionalInt64Wrapper
1165 }
1166 return nil
1167 }
1168
1169 func (m *TestAllTypes) GetOptionalUint32Wrapper() *google_protobuf5.UInt32Value {
1170 if m != nil {
1171 return m.OptionalUint32Wrapper
1172 }
1173 return nil
1174 }
1175
1176 func (m *TestAllTypes) GetOptionalUint64Wrapper() *google_protobuf5.UInt64Value {
1177 if m != nil {
1178 return m.OptionalUint64Wrapper
1179 }
1180 return nil
1181 }
1182
1183 func (m *TestAllTypes) GetOptionalFloatWrapper() *google_protobuf5.FloatValue {
1184 if m != nil {
1185 return m.OptionalFloatWrapper
1186 }
1187 return nil
1188 }
1189
1190 func (m *TestAllTypes) GetOptionalDoubleWrapper() *google_protobuf5.DoubleValue {
1191 if m != nil {
1192 return m.OptionalDoubleWrapper
1193 }
1194 return nil
1195 }
1196
1197 func (m *TestAllTypes) GetOptionalStringWrapper() *google_protobuf5.StringValue {
1198 if m != nil {
1199 return m.OptionalStringWrapper
1200 }
1201 return nil
1202 }
1203
1204 func (m *TestAllTypes) GetOptionalBytesWrapper() *google_protobuf5.BytesValue {
1205 if m != nil {
1206 return m.OptionalBytesWrapper
1207 }
1208 return nil
1209 }
1210
1211 func (m *TestAllTypes) GetRepeatedBoolWrapper() []*google_protobuf5.BoolValue {
1212 if m != nil {
1213 return m.RepeatedBoolWrapper
1214 }
1215 return nil
1216 }
1217
1218 func (m *TestAllTypes) GetRepeatedInt32Wrapper() []*google_protobuf5.Int32Value {
1219 if m != nil {
1220 return m.RepeatedInt32Wrapper
1221 }
1222 return nil
1223 }
1224
1225 func (m *TestAllTypes) GetRepeatedInt64Wrapper() []*google_protobuf5.Int64Value {
1226 if m != nil {
1227 return m.RepeatedInt64Wrapper
1228 }
1229 return nil
1230 }
1231
1232 func (m *TestAllTypes) GetRepeatedUint32Wrapper() []*google_protobuf5.UInt32Value {
1233 if m != nil {
1234 return m.RepeatedUint32Wrapper
1235 }
1236 return nil
1237 }
1238
1239 func (m *TestAllTypes) GetRepeatedUint64Wrapper() []*google_protobuf5.UInt64Value {
1240 if m != nil {
1241 return m.RepeatedUint64Wrapper
1242 }
1243 return nil
1244 }
1245
1246 func (m *TestAllTypes) GetRepeatedFloatWrapper() []*google_protobuf5.FloatValue {
1247 if m != nil {
1248 return m.RepeatedFloatWrapper
1249 }
1250 return nil
1251 }
1252
1253 func (m *TestAllTypes) GetRepeatedDoubleWrapper() []*google_protobuf5.DoubleValue {
1254 if m != nil {
1255 return m.RepeatedDoubleWrapper
1256 }
1257 return nil
1258 }
1259
1260 func (m *TestAllTypes) GetRepeatedStringWrapper() []*google_protobuf5.StringValue {
1261 if m != nil {
1262 return m.RepeatedStringWrapper
1263 }
1264 return nil
1265 }
1266
1267 func (m *TestAllTypes) GetRepeatedBytesWrapper() []*google_protobuf5.BytesValue {
1268 if m != nil {
1269 return m.RepeatedBytesWrapper
1270 }
1271 return nil
1272 }
1273
1274 func (m *TestAllTypes) GetOptionalDuration() *google_protobuf1.Duration {
1275 if m != nil {
1276 return m.OptionalDuration
1277 }
1278 return nil
1279 }
1280
1281 func (m *TestAllTypes) GetOptionalTimestamp() *google_protobuf4.Timestamp {
1282 if m != nil {
1283 return m.OptionalTimestamp
1284 }
1285 return nil
1286 }
1287
1288 func (m *TestAllTypes) GetOptionalFieldMask() *google_protobuf2.FieldMask {
1289 if m != nil {
1290 return m.OptionalFieldMask
1291 }
1292 return nil
1293 }
1294
1295 func (m *TestAllTypes) GetOptionalStruct() *google_protobuf3.Struct {
1296 if m != nil {
1297 return m.OptionalStruct
1298 }
1299 return nil
1300 }
1301
1302 func (m *TestAllTypes) GetOptionalAny() *google_protobuf.Any {
1303 if m != nil {
1304 return m.OptionalAny
1305 }
1306 return nil
1307 }
1308
1309 func (m *TestAllTypes) GetOptionalValue() *google_protobuf3.Value {
1310 if m != nil {
1311 return m.OptionalValue
1312 }
1313 return nil
1314 }
1315
1316 func (m *TestAllTypes) GetRepeatedDuration() []*google_protobuf1.Duration {
1317 if m != nil {
1318 return m.RepeatedDuration
1319 }
1320 return nil
1321 }
1322
1323 func (m *TestAllTypes) GetRepeatedTimestamp() []*google_protobuf4.Timestamp {
1324 if m != nil {
1325 return m.RepeatedTimestamp
1326 }
1327 return nil
1328 }
1329
1330 func (m *TestAllTypes) GetRepeatedFieldmask() []*google_protobuf2.FieldMask {
1331 if m != nil {
1332 return m.RepeatedFieldmask
1333 }
1334 return nil
1335 }
1336
1337 func (m *TestAllTypes) GetRepeatedStruct() []*google_protobuf3.Struct {
1338 if m != nil {
1339 return m.RepeatedStruct
1340 }
1341 return nil
1342 }
1343
1344 func (m *TestAllTypes) GetRepeatedAny() []*google_protobuf.Any {
1345 if m != nil {
1346 return m.RepeatedAny
1347 }
1348 return nil
1349 }
1350
1351 func (m *TestAllTypes) GetRepeatedValue() []*google_protobuf3.Value {
1352 if m != nil {
1353 return m.RepeatedValue
1354 }
1355 return nil
1356 }
1357
1358 func (m *TestAllTypes) GetFieldname1() int32 {
1359 if m != nil {
1360 return m.Fieldname1
1361 }
1362 return 0
1363 }
1364
1365 func (m *TestAllTypes) GetFieldName2() int32 {
1366 if m != nil {
1367 return m.FieldName2
1368 }
1369 return 0
1370 }
1371
1372 func (m *TestAllTypes) GetXFieldName3() int32 {
1373 if m != nil {
1374 return m.XFieldName3
1375 }
1376 return 0
1377 }
1378
1379 func (m *TestAllTypes) GetField_Name4_() int32 {
1380 if m != nil {
1381 return m.Field_Name4_
1382 }
1383 return 0
1384 }
1385
1386 func (m *TestAllTypes) GetField0Name5() int32 {
1387 if m != nil {
1388 return m.Field0Name5
1389 }
1390 return 0
1391 }
1392
1393 func (m *TestAllTypes) GetField_0Name6() int32 {
1394 if m != nil {
1395 return m.Field_0Name6
1396 }
1397 return 0
1398 }
1399
1400 func (m *TestAllTypes) GetFieldName7() int32 {
1401 if m != nil {
1402 return m.FieldName7
1403 }
1404 return 0
1405 }
1406
1407 func (m *TestAllTypes) GetFieldName8() int32 {
1408 if m != nil {
1409 return m.FieldName8
1410 }
1411 return 0
1412 }
1413
1414 func (m *TestAllTypes) GetField_Name9() int32 {
1415 if m != nil {
1416 return m.Field_Name9
1417 }
1418 return 0
1419 }
1420
1421 func (m *TestAllTypes) GetField_Name10() int32 {
1422 if m != nil {
1423 return m.Field_Name10
1424 }
1425 return 0
1426 }
1427
1428 func (m *TestAllTypes) GetFIELD_NAME11() int32 {
1429 if m != nil {
1430 return m.FIELD_NAME11
1431 }
1432 return 0
1433 }
1434
1435 func (m *TestAllTypes) GetFIELDName12() int32 {
1436 if m != nil {
1437 return m.FIELDName12
1438 }
1439 return 0
1440 }
1441
1442 func (m *TestAllTypes) GetXFieldName13() int32 {
1443 if m != nil {
1444 return m.XFieldName13
1445 }
1446 return 0
1447 }
1448
1449 func (m *TestAllTypes) GetX_FieldName14() int32 {
1450 if m != nil {
1451 return m.X_FieldName14
1452 }
1453 return 0
1454 }
1455
1456 func (m *TestAllTypes) GetField_Name15() int32 {
1457 if m != nil {
1458 return m.Field_Name15
1459 }
1460 return 0
1461 }
1462
1463 func (m *TestAllTypes) GetField__Name16() int32 {
1464 if m != nil {
1465 return m.Field__Name16
1466 }
1467 return 0
1468 }
1469
1470 func (m *TestAllTypes) GetFieldName17__() int32 {
1471 if m != nil {
1472 return m.FieldName17__
1473 }
1474 return 0
1475 }
1476
1477 func (m *TestAllTypes) GetFieldName18__() int32 {
1478 if m != nil {
1479 return m.FieldName18__
1480 }
1481 return 0
1482 }
1483
1484 // XXX_OneofFuncs is for the internal use of the proto package.
1485 func (*TestAllTypes) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
1486 return _TestAllTypes_OneofMarshaler, _TestAllTypes_OneofUnmarshaler, _TestAllTypes_OneofSizer, []interface{}{
1487 (*TestAllTypes_OneofUint32)(nil),
1488 (*TestAllTypes_OneofNestedMessage)(nil),
1489 (*TestAllTypes_OneofString)(nil),
1490 (*TestAllTypes_OneofBytes)(nil),
1491 (*TestAllTypes_OneofBool)(nil),
1492 (*TestAllTypes_OneofUint64)(nil),
1493 (*TestAllTypes_OneofFloat)(nil),
1494 (*TestAllTypes_OneofDouble)(nil),
1495 (*TestAllTypes_OneofEnum)(nil),
1496 }
1497 }
1498
1499 func _TestAllTypes_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
1500 m := msg.(*TestAllTypes)
1501 // oneof_field
1502 switch x := m.OneofField.(type) {
1503 case *TestAllTypes_OneofUint32:
1504 b.EncodeVarint(111<<3 | proto.WireVarint)
1505 b.EncodeVarint(uint64(x.OneofUint32))
1506 case *TestAllTypes_OneofNestedMessage:
1507 b.EncodeVarint(112<<3 | proto.WireBytes)
1508 if err := b.EncodeMessage(x.OneofNestedMessage); err != nil {
1509 return err
1510 }
1511 case *TestAllTypes_OneofString:
1512 b.EncodeVarint(113<<3 | proto.WireBytes)
1513 b.EncodeStringBytes(x.OneofString)
1514 case *TestAllTypes_OneofBytes:
1515 b.EncodeVarint(114<<3 | proto.WireBytes)
1516 b.EncodeRawBytes(x.OneofBytes)
1517 case *TestAllTypes_OneofBool:
1518 t := uint64(0)
1519 if x.OneofBool {
1520 t = 1
1521 }
1522 b.EncodeVarint(115<<3 | proto.WireVarint)
1523 b.EncodeVarint(t)
1524 case *TestAllTypes_OneofUint64:
1525 b.EncodeVarint(116<<3 | proto.WireVarint)
1526 b.EncodeVarint(uint64(x.OneofUint64))
1527 case *TestAllTypes_OneofFloat:
1528 b.EncodeVarint(117<<3 | proto.WireFixed32)
1529 b.EncodeFixed32(uint64(math.Float32bits(x.OneofFloat)))
1530 case *TestAllTypes_OneofDouble:
1531 b.EncodeVarint(118<<3 | proto.WireFixed64)
1532 b.EncodeFixed64(math.Float64bits(x.OneofDouble))
1533 case *TestAllTypes_OneofEnum:
1534 b.EncodeVarint(119<<3 | proto.WireVarint)
1535 b.EncodeVarint(uint64(x.OneofEnum))
1536 case nil:
1537 default:
1538 return fmt.Errorf("TestAllTypes.OneofField has unexpected type %T", x)
1539 }
1540 return nil
1541 }
1542
1543 func _TestAllTypes_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
1544 m := msg.(*TestAllTypes)
1545 switch tag {
1546 case 111: // oneof_field.oneof_uint32
1547 if wire != proto.WireVarint {
1548 return true, proto.ErrInternalBadWireType
1549 }
1550 x, err := b.DecodeVarint()
1551 m.OneofField = &TestAllTypes_OneofUint32{uint32(x)}
1552 return true, err
1553 case 112: // oneof_field.oneof_nested_message
1554 if wire != proto.WireBytes {
1555 return true, proto.ErrInternalBadWireType
1556 }
1557 msg := new(TestAllTypes_NestedMessage)
1558 err := b.DecodeMessage(msg)
1559 m.OneofField = &TestAllTypes_OneofNestedMessage{msg}
1560 return true, err
1561 case 113: // oneof_field.oneof_string
1562 if wire != proto.WireBytes {
1563 return true, proto.ErrInternalBadWireType
1564 }
1565 x, err := b.DecodeStringBytes()
1566 m.OneofField = &TestAllTypes_OneofString{x}
1567 return true, err
1568 case 114: // oneof_field.oneof_bytes
1569 if wire != proto.WireBytes {
1570 return true, proto.ErrInternalBadWireType
1571 }
1572 x, err := b.DecodeRawBytes(true)
1573 m.OneofField = &TestAllTypes_OneofBytes{x}
1574 return true, err
1575 case 115: // oneof_field.oneof_bool
1576 if wire != proto.WireVarint {
1577 return true, proto.ErrInternalBadWireType
1578 }
1579 x, err := b.DecodeVarint()
1580 m.OneofField = &TestAllTypes_OneofBool{x != 0}
1581 return true, err
1582 case 116: // oneof_field.oneof_uint64
1583 if wire != proto.WireVarint {
1584 return true, proto.ErrInternalBadWireType
1585 }
1586 x, err := b.DecodeVarint()
1587 m.OneofField = &TestAllTypes_OneofUint64{x}
1588 return true, err
1589 case 117: // oneof_field.oneof_float
1590 if wire != proto.WireFixed32 {
1591 return true, proto.ErrInternalBadWireType
1592 }
1593 x, err := b.DecodeFixed32()
1594 m.OneofField = &TestAllTypes_OneofFloat{math.Float32frombits(uint32(x))}
1595 return true, err
1596 case 118: // oneof_field.oneof_double
1597 if wire != proto.WireFixed64 {
1598 return true, proto.ErrInternalBadWireType
1599 }
1600 x, err := b.DecodeFixed64()
1601 m.OneofField = &TestAllTypes_OneofDouble{math.Float64frombits(x)}
1602 return true, err
1603 case 119: // oneof_field.oneof_enum
1604 if wire != proto.WireVarint {
1605 return true, proto.ErrInternalBadWireType
1606 }
1607 x, err := b.DecodeVarint()
1608 m.OneofField = &TestAllTypes_OneofEnum{TestAllTypes_NestedEnum(x)}
1609 return true, err
1610 default:
1611 return false, nil
1612 }
1613 }
1614
1615 func _TestAllTypes_OneofSizer(msg proto.Message) (n int) {
1616 m := msg.(*TestAllTypes)
1617 // oneof_field
1618 switch x := m.OneofField.(type) {
1619 case *TestAllTypes_OneofUint32:
1620 n += proto.SizeVarint(111<<3 | proto.WireVarint)
1621 n += proto.SizeVarint(uint64(x.OneofUint32))
1622 case *TestAllTypes_OneofNestedMessage:
1623 s := proto.Size(x.OneofNestedMessage)
1624 n += proto.SizeVarint(112<<3 | proto.WireBytes)
1625 n += proto.SizeVarint(uint64(s))
1626 n += s
1627 case *TestAllTypes_OneofString:
1628 n += proto.SizeVarint(113<<3 | proto.WireBytes)
1629 n += proto.SizeVarint(uint64(len(x.OneofString)))
1630 n += len(x.OneofString)
1631 case *TestAllTypes_OneofBytes:
1632 n += proto.SizeVarint(114<<3 | proto.WireBytes)
1633 n += proto.SizeVarint(uint64(len(x.OneofBytes)))
1634 n += len(x.OneofBytes)
1635 case *TestAllTypes_OneofBool:
1636 n += proto.SizeVarint(115<<3 | proto.WireVarint)
1637 n += 1
1638 case *TestAllTypes_OneofUint64:
1639 n += proto.SizeVarint(116<<3 | proto.WireVarint)
1640 n += proto.SizeVarint(uint64(x.OneofUint64))
1641 case *TestAllTypes_OneofFloat:
1642 n += proto.SizeVarint(117<<3 | proto.WireFixed32)
1643 n += 4
1644 case *TestAllTypes_OneofDouble:
1645 n += proto.SizeVarint(118<<3 | proto.WireFixed64)
1646 n += 8
1647 case *TestAllTypes_OneofEnum:
1648 n += proto.SizeVarint(119<<3 | proto.WireVarint)
1649 n += proto.SizeVarint(uint64(x.OneofEnum))
1650 case nil:
1651 default:
1652 panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
1653 }
1654 return n
1655 }
1656
1657 type TestAllTypes_NestedMessage struct {
1658 A int32 `protobuf:"varint,1,opt,name=a" json:"a,omitempty"`
1659 Corecursive *TestAllTypes `protobuf:"bytes,2,opt,name=corecursive" json:"corecursive,omitempty"`
1660 }
1661
1662 func (m *TestAllTypes_NestedMessage) Reset() { *m = TestAllTypes_NestedMessage{} }
1663 func (m *TestAllTypes_NestedMessage) String() string { return proto.CompactTextString(m) }
1664 func (*TestAllTypes_NestedMessage) ProtoMessage() {}
1665 func (*TestAllTypes_NestedMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} }
1666
1667 func (m *TestAllTypes_NestedMessage) GetA() int32 {
1668 if m != nil {
1669 return m.A
1670 }
1671 return 0
1672 }
1673
1674 func (m *TestAllTypes_NestedMessage) GetCorecursive() *TestAllTypes {
1675 if m != nil {
1676 return m.Corecursive
1677 }
1678 return nil
1679 }
1680
1681 type ForeignMessage struct {
1682 C int32 `protobuf:"varint,1,opt,name=c" json:"c,omitempty"`
1683 }
1684
1685 func (m *ForeignMessage) Reset() { *m = ForeignMessage{} }
1686 func (m *ForeignMessage) String() string { return proto.CompactTextString(m) }
1687 func (*ForeignMessage) ProtoMessage() {}
1688 func (*ForeignMessage) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
1689
1690 func (m *ForeignMessage) GetC() int32 {
1691 if m != nil {
1692 return m.C
1693 }
1694 return 0
1695 }
1696
1697 func init() {
1698 proto.RegisterType((*ConformanceRequest)(nil), "conformance.ConformanceRequest")
1699 proto.RegisterType((*ConformanceResponse)(nil), "conformance.ConformanceResponse")
1700 proto.RegisterType((*TestAllTypes)(nil), "conformance.TestAllTypes")
1701 proto.RegisterType((*TestAllTypes_NestedMessage)(nil), "conformance.TestAllTypes.NestedMessage")
1702 proto.RegisterType((*ForeignMessage)(nil), "conformance.ForeignMessage")
1703 proto.RegisterEnum("conformance.WireFormat", WireFormat_name, WireFormat_value)
1704 proto.RegisterEnum("conformance.ForeignEnum", ForeignEnum_name, ForeignEnum_value)
1705 proto.RegisterEnum("conformance.TestAllTypes_NestedEnum", TestAllTypes_NestedEnum_name, TestAllTypes_NestedEnum_value)
1706 }
1707
1708 func init() { proto.RegisterFile("conformance_proto/conformance.proto", fileDescriptor0) }
1709
1710 var fileDescriptor0 = []byte{
1711 // 2737 bytes of a gzipped FileDescriptorProto
1712 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x5a, 0xd9, 0x72, 0xdb, 0xc8,
1713 0xd5, 0x16, 0x08, 0x59, 0x4b, 0x93, 0x92, 0xa8, 0xd6, 0xd6, 0x96, 0x5d, 0x63, 0x58, 0xb2, 0x7f,
1714 0xd3, 0xf6, 0x8c, 0xac, 0x05, 0x86, 0x65, 0xcf, 0x3f, 0x8e, 0x45, 0x9b, 0xb4, 0xe4, 0x8c, 0x25,
1715 0x17, 0x64, 0x8d, 0xab, 0x9c, 0x0b, 0x06, 0xa6, 0x20, 0x15, 0xc7, 0x24, 0xc1, 0x01, 0x48, 0x4f,
1716 0x94, 0xcb, 0xbc, 0x41, 0xf6, 0x7d, 0xbd, 0xcf, 0x7a, 0x93, 0xa4, 0x92, 0xab, 0x54, 0x6e, 0xb2,
1717 0x27, 0x95, 0x3d, 0x79, 0x85, 0xbc, 0x43, 0x52, 0xbd, 0xa2, 0xbb, 0x01, 0x50, 0xf4, 0x54, 0x0d,
1718 0x25, 0x1e, 0x7c, 0xfd, 0x9d, 0xd3, 0xe7, 0x1c, 0x7c, 0x2d, 0x1c, 0x18, 0x2c, 0xd7, 0x83, 0xf6,
1719 0x51, 0x10, 0xb6, 0xbc, 0x76, 0xdd, 0xaf, 0x75, 0xc2, 0xa0, 0x1b, 0xdc, 0x90, 0x2c, 0x2b, 0xc4,
1720 0x02, 0xf3, 0x92, 0x69, 0xf1, 0xec, 0x71, 0x10, 0x1c, 0x37, 0xfd, 0x1b, 0xe4, 0xd2, 0x8b, 0xde,
1721 0xd1, 0x0d, 0xaf, 0x7d, 0x42, 0x71, 0x8b, 0x6f, 0xe8, 0x97, 0x0e, 0x7b, 0xa1, 0xd7, 0x6d, 0x04,
1722 0x6d, 0x76, 0xdd, 0xd2, 0xaf, 0x1f, 0x35, 0xfc, 0xe6, 0x61, 0xad, 0xe5, 0x45, 0x2f, 0x19, 0xe2,
1723 0xbc, 0x8e, 0x88, 0xba, 0x61, 0xaf, 0xde, 0x65, 0x57, 0x2f, 0xe8, 0x57, 0xbb, 0x8d, 0x96, 0x1f,
1724 0x75, 0xbd, 0x56, 0x27, 0x2b, 0x80, 0x0f, 0x43, 0xaf, 0xd3, 0xf1, 0xc3, 0x88, 0x5e, 0x5f, 0xfa,
1725 0x85, 0x01, 0xe0, 0xfd, 0x78, 0x2f, 0xae, 0xff, 0x41, 0xcf, 0x8f, 0xba, 0xf0, 0x3a, 0x28, 0xf2,
1726 0x15, 0xb5, 0x8e, 0x77, 0xd2, 0x0c, 0xbc, 0x43, 0x64, 0x58, 0x46, 0xa9, 0xb0, 0x3d, 0xe4, 0x4e,
1727 0xf1, 0x2b, 0x4f, 0xe8, 0x05, 0xb8, 0x0c, 0x0a, 0xef, 0x47, 0x41, 0x5b, 0x00, 0x73, 0x96, 0x51,
1728 0x1a, 0xdf, 0x1e, 0x72, 0xf3, 0xd8, 0xca, 0x41, 0x7b, 0x60, 0x21, 0xa4, 0xe4, 0xfe, 0x61, 0x2d,
1729 0xe8, 0x75, 0x3b, 0xbd, 0x6e, 0x8d, 0x78, 0xed, 0x22, 0xd3, 0x32, 0x4a, 0x93, 0xeb, 0x0b, 0x2b,
1730 0x72, 0x9a, 0x9f, 0x35, 0x42, 0xbf, 0x4a, 0x2e, 0xbb, 0x73, 0x62, 0xdd, 0x1e, 0x59, 0x46, 0xcd,
1731 0xe5, 0x71, 0x30, 0xca, 0x1c, 0x2e, 0x7d, 0x2a, 0x07, 0x66, 0x94, 0x4d, 0x44, 0x9d, 0xa0, 0x1d,
1732 0xf9, 0xf0, 0x22, 0xc8, 0x77, 0xbc, 0x30, 0xf2, 0x6b, 0x7e, 0x18, 0x06, 0x21, 0xd9, 0x00, 0x8e,
1733 0x0b, 0x10, 0x63, 0x05, 0xdb, 0xe0, 0x55, 0x30, 0x15, 0xf9, 0x61, 0xc3, 0x6b, 0x36, 0x3e, 0xc9,
1734 0x61, 0x23, 0x0c, 0x36, 0x29, 0x2e, 0x50, 0xe8, 0x65, 0x30, 0x11, 0xf6, 0xda, 0x38, 0xc1, 0x0c,
1735 0xc8, 0xf7, 0x59, 0x60, 0x66, 0x0a, 0x4b, 0x4b, 0x9d, 0x39, 0x68, 0xea, 0x86, 0xd3, 0x52, 0xb7,
1736 0x08, 0x46, 0xa3, 0x97, 0x8d, 0x4e, 0xc7, 0x3f, 0x44, 0x67, 0xd8, 0x75, 0x6e, 0x28, 0x8f, 0x81,
1737 0x91, 0xd0, 0x8f, 0x7a, 0xcd, 0xee, 0xd2, 0x7f, 0xaa, 0xa0, 0xf0, 0xd4, 0x8f, 0xba, 0x5b, 0xcd,
1738 0xe6, 0xd3, 0x93, 0x8e, 0x1f, 0xc1, 0xcb, 0x60, 0x32, 0xe8, 0xe0, 0x5e, 0xf3, 0x9a, 0xb5, 0x46,
1739 0xbb, 0xbb, 0xb1, 0x4e, 0x12, 0x70, 0xc6, 0x9d, 0xe0, 0xd6, 0x1d, 0x6c, 0xd4, 0x61, 0x8e, 0x4d,
1740 0xf6, 0x65, 0x2a, 0x30, 0xc7, 0x86, 0x57, 0xc0, 0x94, 0x80, 0xf5, 0x28, 0x1d, 0xde, 0xd5, 0x84,
1741 0x2b, 0x56, 0x1f, 0x10, 0x6b, 0x02, 0xe8, 0xd8, 0x64, 0x57, 0xc3, 0x2a, 0x50, 0x63, 0x8c, 0x28,
1742 0x23, 0xde, 0xde, 0x74, 0x0c, 0xdc, 0x4f, 0x32, 0x46, 0x94, 0x11, 0xd7, 0x08, 0xaa, 0x40, 0xc7,
1743 0x86, 0x57, 0x41, 0x51, 0x00, 0x8f, 0x1a, 0x9f, 0xf0, 0x0f, 0x37, 0xd6, 0xd1, 0xa8, 0x65, 0x94,
1744 0x46, 0x5d, 0x41, 0x50, 0xa5, 0xe6, 0x24, 0xd4, 0xb1, 0xd1, 0x98, 0x65, 0x94, 0x46, 0x34, 0xa8,
1745 0x63, 0xc3, 0xeb, 0x60, 0x3a, 0x76, 0xcf, 0x69, 0xc7, 0x2d, 0xa3, 0x34, 0xe5, 0x0a, 0x8e, 0x7d,
1746 0x66, 0x4f, 0x01, 0x3b, 0x36, 0x02, 0x96, 0x51, 0x2a, 0xea, 0x60, 0xc7, 0x56, 0x52, 0x7f, 0xd4,
1747 0x0c, 0xbc, 0x2e, 0xca, 0x5b, 0x46, 0x29, 0x17, 0xa7, 0xbe, 0x8a, 0x8d, 0xca, 0xfe, 0x0f, 0x83,
1748 0xde, 0x8b, 0xa6, 0x8f, 0x0a, 0x96, 0x51, 0x32, 0xe2, 0xfd, 0x3f, 0x20, 0x56, 0xb8, 0x0c, 0xc4,
1749 0xca, 0xda, 0x8b, 0x20, 0x68, 0xa2, 0x09, 0xcb, 0x28, 0x8d, 0xb9, 0x05, 0x6e, 0x2c, 0x07, 0x41,
1750 0x53, 0xcd, 0x66, 0x37, 0x6c, 0xb4, 0x8f, 0xd1, 0x24, 0xee, 0x2a, 0x29, 0x9b, 0xc4, 0xaa, 0x44,
1751 0xf7, 0xe2, 0xa4, 0xeb, 0x47, 0x68, 0x0a, 0xb7, 0x71, 0x1c, 0x5d, 0x19, 0x1b, 0x61, 0x0d, 0x2c,
1752 0x08, 0x58, 0x9b, 0xde, 0xde, 0x2d, 0x3f, 0x8a, 0xbc, 0x63, 0x1f, 0x41, 0xcb, 0x28, 0xe5, 0xd7,
1753 0xaf, 0x28, 0x37, 0xb6, 0xdc, 0xa2, 0x2b, 0xbb, 0x04, 0xff, 0x98, 0xc2, 0xdd, 0x39, 0xce, 0xa3,
1754 0x98, 0xe1, 0x01, 0x40, 0x71, 0x96, 0x82, 0xd0, 0x6f, 0x1c, 0xb7, 0x85, 0x87, 0x19, 0xe2, 0xe1,
1755 0x9c, 0xe2, 0xa1, 0x4a, 0x31, 0x9c, 0x75, 0x5e, 0x24, 0x53, 0xb1, 0xc3, 0xf7, 0xc0, 0xac, 0x1e,
1756 0xb7, 0xdf, 0xee, 0xb5, 0xd0, 0x1c, 0x51, 0xa3, 0x4b, 0xa7, 0x05, 0x5d, 0x69, 0xf7, 0x5a, 0x2e,
1757 0x54, 0x23, 0xc6, 0x36, 0xf8, 0x2e, 0x98, 0x4b, 0x84, 0x4b, 0x88, 0xe7, 0x09, 0x31, 0x4a, 0x8b,
1758 0x95, 0x90, 0xcd, 0x68, 0x81, 0x12, 0x36, 0x47, 0x62, 0xa3, 0xd5, 0xaa, 0x75, 0x1a, 0x7e, 0xdd,
1759 0x47, 0x08, 0xd7, 0xac, 0x9c, 0x1b, 0xcb, 0xc5, 0xeb, 0x68, 0xdd, 0x9e, 0xe0, 0xcb, 0xf0, 0x8a,
1760 0xd4, 0x0a, 0xf5, 0x20, 0x3c, 0x44, 0x67, 0x19, 0xde, 0x88, 0xdb, 0xe1, 0x7e, 0x10, 0x1e, 0xc2,
1761 0x2a, 0x98, 0x0e, 0xfd, 0x7a, 0x2f, 0x8c, 0x1a, 0xaf, 0x7c, 0x91, 0xd6, 0x73, 0x24, 0xad, 0x67,
1762 0x33, 0x73, 0xe0, 0x16, 0xc5, 0x1a, 0x9e, 0xce, 0xcb, 0x60, 0x32, 0xf4, 0x3b, 0xbe, 0x87, 0xf3,
1763 0x48, 0x6f, 0xe6, 0x0b, 0x96, 0x89, 0xd5, 0x86, 0x5b, 0x85, 0xda, 0xc8, 0x30, 0xc7, 0x46, 0x96,
1764 0x65, 0x62, 0xb5, 0x91, 0x60, 0x54, 0x1b, 0x04, 0x8c, 0xa9, 0xcd, 0x45, 0xcb, 0xc4, 0x6a, 0xc3,
1765 0xcd, 0xb1, 0xda, 0x28, 0x40, 0xc7, 0x46, 0x4b, 0x96, 0x89, 0xd5, 0x46, 0x06, 0x6a, 0x8c, 0x4c,
1766 0x6d, 0x96, 0x2d, 0x13, 0xab, 0x0d, 0x37, 0xef, 0x27, 0x19, 0x99, 0xda, 0x5c, 0xb2, 0x4c, 0xac,
1767 0x36, 0x32, 0x90, 0xaa, 0x8d, 0x00, 0x72, 0x59, 0xb8, 0x6c, 0x99, 0x58, 0x6d, 0xb8, 0x5d, 0x52,
1768 0x1b, 0x15, 0xea, 0xd8, 0xe8, 0xff, 0x2c, 0x13, 0xab, 0x8d, 0x02, 0xa5, 0x6a, 0x13, 0xbb, 0xe7,
1769 0xb4, 0x57, 0x2c, 0x13, 0xab, 0x8d, 0x08, 0x40, 0x52, 0x1b, 0x0d, 0xec, 0xd8, 0xa8, 0x64, 0x99,
1770 0x58, 0x6d, 0x54, 0x30, 0x55, 0x9b, 0x38, 0x08, 0xa2, 0x36, 0x57, 0x2d, 0x13, 0xab, 0x8d, 0x08,
1771 0x81, 0xab, 0x8d, 0x80, 0x31, 0xb5, 0xb9, 0x66, 0x99, 0x58, 0x6d, 0xb8, 0x39, 0x56, 0x1b, 0x01,
1772 0x24, 0x6a, 0x73, 0xdd, 0x32, 0xb1, 0xda, 0x70, 0x23, 0x57, 0x9b, 0x38, 0x42, 0xaa, 0x36, 0x6f,
1773 0x5a, 0x26, 0x56, 0x1b, 0x11, 0x9f, 0x50, 0x9b, 0x98, 0x8d, 0xa8, 0xcd, 0x5b, 0x96, 0x89, 0xd5,
1774 0x46, 0xd0, 0x71, 0xb5, 0x11, 0x30, 0x4d, 0x6d, 0x56, 0x2d, 0xf3, 0xb5, 0xd4, 0x86, 0xf3, 0x24,
1775 0xd4, 0x26, 0xce, 0x92, 0xa6, 0x36, 0x6b, 0xc4, 0x43, 0x7f, 0xb5, 0x11, 0xc9, 0x4c, 0xa8, 0x8d,
1776 0x1e, 0x37, 0x11, 0x85, 0x0d, 0xcb, 0x1c, 0x5c, 0x6d, 0xd4, 0x88, 0xb9, 0xda, 0x24, 0xc2, 0x25,
1777 0xc4, 0x36, 0x21, 0xee, 0xa3, 0x36, 0x5a, 0xa0, 0x5c, 0x6d, 0xb4, 0x6a, 0x31, 0xb5, 0x71, 0x70,
1778 0xcd, 0xa8, 0xda, 0xa8, 0x75, 0x13, 0x6a, 0x23, 0xd6, 0x11, 0xb5, 0xb9, 0xc5, 0xf0, 0x46, 0xdc,
1779 0x0e, 0x44, 0x6d, 0x9e, 0x82, 0xa9, 0x96, 0xd7, 0xa1, 0x02, 0xc1, 0x64, 0x62, 0x93, 0x24, 0xf5,
1780 0xcd, 0xec, 0x0c, 0x3c, 0xf6, 0x3a, 0x44, 0x3b, 0xc8, 0x47, 0xa5, 0xdd, 0x0d, 0x4f, 0xdc, 0x89,
1781 0x96, 0x6c, 0x93, 0x58, 0x1d, 0x9b, 0xa9, 0xca, 0xed, 0xc1, 0x58, 0x1d, 0x9b, 0x7c, 0x28, 0xac,
1782 0xcc, 0x06, 0x9f, 0x83, 0x69, 0xcc, 0x4a, 0xe5, 0x87, 0xab, 0xd0, 0x1d, 0xc2, 0xbb, 0xd2, 0x97,
1783 0x97, 0x4a, 0x13, 0xfd, 0xa4, 0xcc, 0x38, 0x3c, 0xd9, 0x2a, 0x73, 0x3b, 0x36, 0x17, 0xae, 0xb7,
1784 0x07, 0xe4, 0x76, 0x6c, 0xfa, 0xa9, 0x72, 0x73, 0x2b, 0xe7, 0xa6, 0x22, 0xc7, 0xb5, 0xee, 0xff,
1785 0x07, 0xe0, 0xa6, 0x02, 0xb8, 0xaf, 0xc5, 0x2d, 0x5b, 0x65, 0x6e, 0xc7, 0xe6, 0xf2, 0xf8, 0xce,
1786 0x80, 0xdc, 0x8e, 0xbd, 0xaf, 0xc5, 0x2d, 0x5b, 0xe1, 0xc7, 0xc1, 0x0c, 0xe6, 0x66, 0xda, 0x26,
1787 0x24, 0xf5, 0x2e, 0x61, 0x5f, 0xed, 0xcb, 0xce, 0x74, 0x96, 0xfd, 0xa0, 0xfc, 0x38, 0x50, 0xd5,
1788 0xae, 0x78, 0x70, 0x6c, 0xa1, 0xc4, 0x1f, 0x19, 0xd4, 0x83, 0x63, 0xb3, 0x1f, 0x9a, 0x07, 0x61,
1789 0x87, 0x47, 0x60, 0x8e, 0xe4, 0x87, 0x6f, 0x42, 0x28, 0xf8, 0x3d, 0xe2, 0x63, 0xbd, 0x7f, 0x8e,
1790 0x18, 0x98, 0xff, 0xa4, 0x5e, 0x70, 0xc8, 0xfa, 0x15, 0xd5, 0x0f, 0xae, 0x04, 0xdf, 0xcb, 0xd6,
1791 0xc0, 0x7e, 0x1c, 0x9b, 0xff, 0xd4, 0xfd, 0xc4, 0x57, 0xd4, 0xfb, 0x95, 0x1e, 0x1a, 0xe5, 0x41,
1792 0xef, 0x57, 0x72, 0x9c, 0x68, 0xf7, 0x2b, 0x3d, 0x62, 0x9e, 0x81, 0x62, 0xcc, 0xca, 0xce, 0x98,
1793 0xfb, 0x84, 0xf6, 0xad, 0xd3, 0x69, 0xe9, 0xe9, 0x43, 0x79, 0x27, 0x5b, 0x8a, 0x11, 0xee, 0x02,
1794 0xec, 0x89, 0x9c, 0x46, 0xf4, 0x48, 0x7a, 0x40, 0x58, 0xaf, 0xf5, 0x65, 0xc5, 0xe7, 0x14, 0xfe,
1795 0x9f, 0x52, 0xe6, 0x5b, 0xb1, 0x45, 0xb4, 0x3b, 0x95, 0x42, 0x76, 0x7e, 0x55, 0x06, 0x69, 0x77,
1796 0x02, 0xa5, 0x9f, 0x52, 0xbb, 0x4b, 0x56, 0x9e, 0x04, 0xc6, 0x4d, 0x8f, 0xbc, 0xea, 0x00, 0x49,
1797 0xa0, 0xcb, 0xc9, 0x69, 0x18, 0x27, 0x41, 0x32, 0xc2, 0x0e, 0x38, 0x2b, 0x11, 0x6b, 0x87, 0xe4,
1798 0x43, 0xe2, 0xe1, 0xe6, 0x00, 0x1e, 0x94, 0x63, 0x91, 0x7a, 0x9a, 0x6f, 0xa5, 0x5e, 0x84, 0x11,
1799 0x58, 0x94, 0x3c, 0xea, 0xa7, 0xe6, 0x36, 0x71, 0xe9, 0x0c, 0xe0, 0x52, 0x3d, 0x33, 0xa9, 0xcf,
1800 0x85, 0x56, 0xfa, 0x55, 0x78, 0x0c, 0xe6, 0x93, 0xdb, 0x24, 0x47, 0xdf, 0xce, 0x20, 0xf7, 0x80,
1801 0xb4, 0x0d, 0x7c, 0xf4, 0x49, 0xf7, 0x80, 0x76, 0x05, 0xbe, 0x0f, 0x16, 0x52, 0x76, 0x47, 0x3c,
1802 0x3d, 0x22, 0x9e, 0x36, 0x06, 0xdf, 0x5a, 0xec, 0x6a, 0xb6, 0x95, 0x72, 0x09, 0x2e, 0x83, 0x42,
1803 0xd0, 0xf6, 0x83, 0x23, 0x7e, 0xdc, 0x04, 0xf8, 0x11, 0x7b, 0x7b, 0xc8, 0xcd, 0x13, 0x2b, 0x3b,
1804 0x3c, 0x3e, 0x06, 0x66, 0x29, 0x48, 0xab, 0x6d, 0xe7, 0xb5, 0x1e, 0xb7, 0xb6, 0x87, 0x5c, 0x48,
1805 0x68, 0xd4, 0x5a, 0x8a, 0x08, 0x58, 0xb7, 0x7f, 0xc0, 0x27, 0x12, 0xc4, 0xca, 0x7a, 0xf7, 0x22,
1806 0xa0, 0x5f, 0x59, 0xdb, 0x86, 0x6c, 0xbc, 0x01, 0x88, 0x91, 0x76, 0xe1, 0x05, 0x00, 0x18, 0x04,
1807 0xdf, 0x87, 0x11, 0x7e, 0x10, 0xdd, 0x1e, 0x72, 0xc7, 0x29, 0x02, 0xdf, 0x5b, 0xca, 0x56, 0x1d,
1808 0x1b, 0x75, 0x2d, 0xa3, 0x34, 0xac, 0x6c, 0xd5, 0xb1, 0x63, 0x47, 0x54, 0x7b, 0x7a, 0xf8, 0xf1,
1809 0x58, 0x38, 0xa2, 0x62, 0x22, 0x78, 0x98, 0x90, 0xbc, 0xc2, 0x8f, 0xc6, 0x82, 0x87, 0x09, 0x43,
1810 0x85, 0x47, 0x43, 0xca, 0xf6, 0xe1, 0xe0, 0x8f, 0x78, 0x22, 0x66, 0x52, 0x9e, 0x3d, 0xe9, 0x69,
1811 0x8c, 0x88, 0x0c, 0x9b, 0xa6, 0xa1, 0x5f, 0x19, 0x24, 0xf7, 0x8b, 0x2b, 0x74, 0xdc, 0xb6, 0xc2,
1812 0xe7, 0x3c, 0x2b, 0x78, 0xab, 0xef, 0x79, 0xcd, 0x9e, 0x1f, 0x3f, 0xa6, 0x61, 0xd3, 0x33, 0xba,
1813 0x0e, 0xba, 0x60, 0x5e, 0x9d, 0xd1, 0x08, 0xc6, 0x5f, 0x1b, 0xec, 0xd1, 0x56, 0x67, 0x24, 0x7a,
1814 0x47, 0x29, 0x67, 0x95, 0x49, 0x4e, 0x06, 0xa7, 0x63, 0x0b, 0xce, 0xdf, 0xf4, 0xe1, 0x74, 0xec,
1815 0x24, 0xa7, 0x63, 0x73, 0xce, 0x03, 0xe9, 0x21, 0xbf, 0xa7, 0x06, 0xfa, 0x5b, 0x4a, 0x7a, 0x3e,
1816 0x41, 0x7a, 0x20, 0x45, 0x3a, 0xa7, 0x0e, 0x89, 0xb2, 0x68, 0xa5, 0x58, 0x7f, 0xd7, 0x8f, 0x96,
1817 0x07, 0x3b, 0xa7, 0x8e, 0x94, 0xd2, 0x32, 0x40, 0x1a, 0x47, 0xb0, 0xfe, 0x3e, 0x2b, 0x03, 0xa4,
1818 0x97, 0xb4, 0x0c, 0x10, 0x5b, 0x5a, 0xa8, 0xb4, 0xd3, 0x04, 0xe9, 0x1f, 0xb2, 0x42, 0xa5, 0xcd,
1819 0xa7, 0x85, 0x4a, 0x8d, 0x69, 0xb4, 0x4c, 0x61, 0x38, 0xed, 0x1f, 0xb3, 0x68, 0xe9, 0x4d, 0xa8,
1820 0xd1, 0x52, 0x63, 0x5a, 0x06, 0xc8, 0x3d, 0x2a, 0x58, 0xff, 0x94, 0x95, 0x01, 0x72, 0xdb, 0x6a,
1821 0x19, 0x20, 0x36, 0xce, 0xb9, 0x27, 0x3d, 0x1c, 0x28, 0xcd, 0xff, 0x67, 0x83, 0xc8, 0x60, 0xdf,
1822 0xe6, 0x97, 0x1f, 0x0a, 0xa5, 0x20, 0xd5, 0x91, 0x81, 0x60, 0xfc, 0x8b, 0xc1, 0x9e, 0xb4, 0xfa,
1823 0x35, 0xbf, 0x32, 0x58, 0xc8, 0xe0, 0x94, 0x1a, 0xea, 0xaf, 0x7d, 0x38, 0x45, 0xf3, 0x2b, 0x53,
1824 0x08, 0xa9, 0x46, 0xda, 0x30, 0x42, 0x90, 0xfe, 0x8d, 0x92, 0x9e, 0xd2, 0xfc, 0xea, 0xcc, 0x22,
1825 0x8b, 0x56, 0x8a, 0xf5, 0xef, 0xfd, 0x68, 0x45, 0xf3, 0xab, 0x13, 0x8e, 0xb4, 0x0c, 0xa8, 0xcd,
1826 0xff, 0x8f, 0xac, 0x0c, 0xc8, 0xcd, 0xaf, 0x0c, 0x03, 0xd2, 0x42, 0xd5, 0x9a, 0xff, 0x9f, 0x59,
1827 0xa1, 0x2a, 0xcd, 0xaf, 0x8e, 0x0e, 0xd2, 0x68, 0xb5, 0xe6, 0xff, 0x57, 0x16, 0xad, 0xd2, 0xfc,
1828 0xea, 0xb3, 0x68, 0x5a, 0x06, 0xd4, 0xe6, 0xff, 0x77, 0x56, 0x06, 0xe4, 0xe6, 0x57, 0x06, 0x0e,
1829 0x9c, 0xf3, 0xa1, 0x34, 0xd7, 0xe5, 0xef, 0x70, 0xd0, 0x77, 0x73, 0x6c, 0x4e, 0x96, 0xd8, 0x3b,
1830 0x43, 0xc4, 0x33, 0x5f, 0x6e, 0x81, 0x8f, 0x80, 0x18, 0x1a, 0xd6, 0xc4, 0xcb, 0x1a, 0xf4, 0xbd,
1831 0x5c, 0xc6, 0xf9, 0xf1, 0x94, 0x43, 0x5c, 0xe1, 0x5f, 0x98, 0xe0, 0x47, 0xc1, 0x8c, 0x34, 0xc4,
1832 0xe6, 0x2f, 0x8e, 0xd0, 0xf7, 0xb3, 0xc8, 0xaa, 0x18, 0xf3, 0xd8, 0x8b, 0x5e, 0xc6, 0x64, 0xc2,
1833 0x04, 0xb7, 0xd4, 0xb9, 0x70, 0xaf, 0xde, 0x45, 0x3f, 0xa0, 0x44, 0x0b, 0x69, 0x45, 0xe8, 0xd5,
1834 0xbb, 0xca, 0xc4, 0xb8, 0x57, 0xef, 0xc2, 0x4d, 0x20, 0x66, 0x8b, 0x35, 0xaf, 0x7d, 0x82, 0x7e,
1835 0x48, 0xd7, 0xcf, 0x26, 0xd6, 0x6f, 0xb5, 0x4f, 0xdc, 0x3c, 0x87, 0x6e, 0xb5, 0x4f, 0xe0, 0x5d,
1836 0x69, 0xd6, 0xfc, 0x0a, 0x97, 0x01, 0xfd, 0x88, 0xae, 0x9d, 0x4f, 0xac, 0xa5, 0x55, 0x12, 0xd3,
1837 0x4d, 0xf2, 0x15, 0x97, 0x27, 0x6e, 0x50, 0x5e, 0x9e, 0x1f, 0xe7, 0x48, 0xb5, 0xfb, 0x95, 0x47,
1838 0xf4, 0xa5, 0x54, 0x1e, 0x41, 0x14, 0x97, 0xe7, 0x27, 0xb9, 0x0c, 0x85, 0x93, 0xca, 0xc3, 0x97,
1839 0xc5, 0xe5, 0x91, 0xb9, 0x48, 0x79, 0x48, 0x75, 0x7e, 0x9a, 0xc5, 0x25, 0x55, 0x27, 0x1e, 0x0a,
1840 0xb2, 0x55, 0xb8, 0x3a, 0xf2, 0xad, 0x82, 0xab, 0xf3, 0x4b, 0x4a, 0x94, 0x5d, 0x1d, 0xe9, 0xee,
1841 0x60, 0xd5, 0x11, 0x14, 0xb8, 0x3a, 0x3f, 0xa3, 0xeb, 0x33, 0xaa, 0xc3, 0xa1, 0xac, 0x3a, 0x62,
1842 0x25, 0xad, 0xce, 0xcf, 0xe9, 0xda, 0xcc, 0xea, 0x70, 0x38, 0xad, 0xce, 0x05, 0x00, 0xc8, 0xfe,
1843 0xdb, 0x5e, 0xcb, 0x5f, 0x43, 0x9f, 0x36, 0xc9, 0x6b, 0x28, 0xc9, 0x04, 0x2d, 0x90, 0xa7, 0xfd,
1844 0x8b, 0xbf, 0xae, 0xa3, 0xcf, 0xc8, 0x88, 0x5d, 0x6c, 0x82, 0x17, 0x41, 0xa1, 0x16, 0x43, 0x36,
1845 0xd0, 0x67, 0x19, 0xa4, 0xca, 0x21, 0x1b, 0x70, 0x09, 0x4c, 0x50, 0x04, 0x81, 0xd8, 0x35, 0xf4,
1846 0x39, 0x9d, 0x86, 0xfc, 0x3d, 0x49, 0xbe, 0xad, 0x62, 0xc8, 0x4d, 0xf4, 0x79, 0x8a, 0x90, 0x6d,
1847 0x70, 0x99, 0xd3, 0xac, 0x12, 0x1e, 0x07, 0x7d, 0x41, 0x01, 0x61, 0x1e, 0x47, 0xec, 0x08, 0x7f,
1848 0xbb, 0x85, 0xbe, 0xa8, 0x3b, 0xba, 0x85, 0x01, 0x22, 0xb4, 0x4d, 0xf4, 0x25, 0x3d, 0xda, 0xcd,
1849 0x78, 0xcb, 0xf8, 0xeb, 0x6d, 0xf4, 0x65, 0x9d, 0xe2, 0x36, 0x5c, 0x02, 0x85, 0xaa, 0x40, 0xac,
1850 0xad, 0xa2, 0xaf, 0xb0, 0x38, 0x04, 0xc9, 0xda, 0x2a, 0xc1, 0xec, 0x54, 0xde, 0x7d, 0x50, 0xdb,
1851 0xdd, 0x7a, 0x5c, 0x59, 0x5b, 0x43, 0x5f, 0xe5, 0x18, 0x6c, 0xa4, 0xb6, 0x18, 0x43, 0x72, 0xbd,
1852 0x8e, 0xbe, 0xa6, 0x60, 0x88, 0x0d, 0x5e, 0x02, 0x93, 0x35, 0x29, 0xbf, 0x6b, 0x1b, 0xe8, 0xeb,
1853 0x09, 0x6f, 0x1b, 0x14, 0x55, 0x8d, 0x51, 0x36, 0xfa, 0x46, 0x02, 0x65, 0xc7, 0x09, 0xa4, 0xa0,
1854 0x9b, 0xe8, 0x9b, 0x72, 0x02, 0x09, 0x48, 0xca, 0x32, 0xdd, 0x9d, 0x83, 0xbe, 0x95, 0x00, 0x39,
1855 0xd8, 0x9f, 0x14, 0xd3, 0xad, 0x5a, 0x0d, 0x7d, 0x3b, 0x81, 0xba, 0x85, 0x51, 0x52, 0x4c, 0x9b,
1856 0xb5, 0x1a, 0xfa, 0x4e, 0x22, 0xaa, 0xcd, 0xc5, 0xe7, 0x60, 0x42, 0x7d, 0xd0, 0x29, 0x00, 0xc3,
1857 0x63, 0x6f, 0x44, 0x0d, 0x0f, 0xbe, 0x0d, 0xf2, 0xf5, 0x40, 0xbc, 0xd4, 0x40, 0xb9, 0xd3, 0x5e,
1858 0x80, 0xc8, 0xe8, 0xc5, 0x7b, 0x00, 0x26, 0x87, 0x94, 0xb0, 0x08, 0xcc, 0x97, 0xfe, 0x09, 0x73,
1859 0x81, 0x7f, 0x85, 0xb3, 0xe0, 0x0c, 0xbd, 0x7d, 0x72, 0xc4, 0x46, 0xbf, 0xdc, 0xc9, 0x6d, 0x1a,
1860 0x31, 0x83, 0x3c, 0x90, 0x94, 0x19, 0xcc, 0x14, 0x06, 0x53, 0x66, 0x28, 0x83, 0xd9, 0xb4, 0xd1,
1861 0xa3, 0xcc, 0x31, 0x91, 0xc2, 0x31, 0x91, 0xce, 0xa1, 0x8c, 0x18, 0x65, 0x8e, 0xe1, 0x14, 0x8e,
1862 0xe1, 0x24, 0x47, 0x62, 0x94, 0x28, 0x73, 0x4c, 0xa7, 0x70, 0x4c, 0xa7, 0x73, 0x28, 0x23, 0x43,
1863 0x99, 0x03, 0xa6, 0x70, 0x40, 0x99, 0xe3, 0x01, 0x98, 0x4f, 0x1f, 0x0c, 0xca, 0x2c, 0xa3, 0x29,
1864 0x2c, 0xa3, 0x19, 0x2c, 0xea, 0xf0, 0x4f, 0x66, 0x19, 0x49, 0x61, 0x19, 0x91, 0x59, 0xaa, 0x00,
1865 0x65, 0x8d, 0xf7, 0x64, 0x9e, 0xa9, 0x14, 0x9e, 0xa9, 0x2c, 0x1e, 0x6d, 0x7c, 0x27, 0xf3, 0x14,
1866 0x53, 0x78, 0x8a, 0xa9, 0xdd, 0x26, 0x0f, 0xe9, 0x4e, 0xeb, 0xd7, 0x9c, 0xcc, 0xb0, 0x05, 0x66,
1867 0x52, 0xe6, 0x71, 0xa7, 0x51, 0x18, 0x32, 0xc5, 0x5d, 0x50, 0xd4, 0x87, 0x6f, 0xf2, 0xfa, 0xb1,
1868 0x94, 0xf5, 0x63, 0x29, 0x4d, 0xa2, 0x0f, 0xda, 0x64, 0x8e, 0xf1, 0x14, 0x8e, 0xf1, 0xe4, 0x36,
1869 0xf4, 0x89, 0xda, 0x69, 0x14, 0x05, 0x99, 0x22, 0x04, 0xe7, 0xfa, 0x8c, 0xcc, 0x52, 0xa8, 0xde,
1870 0x91, 0xa9, 0x5e, 0xe3, 0x7d, 0x95, 0xe4, 0xf3, 0x18, 0x9c, 0xef, 0x37, 0x33, 0x4b, 0x71, 0xba,
1871 0xa6, 0x3a, 0xed, 0xfb, 0x0a, 0x4b, 0x72, 0xd4, 0xa4, 0x0d, 0x97, 0x36, 0x2b, 0x4b, 0x71, 0x72,
1872 0x47, 0x76, 0x32, 0xe8, 0x4b, 0x2d, 0xc9, 0x9b, 0x07, 0xce, 0x66, 0xce, 0xcb, 0x52, 0xdc, 0xad,
1873 0xa8, 0xee, 0xb2, 0x5f, 0x75, 0xc5, 0x2e, 0x96, 0x6e, 0x03, 0x20, 0x4d, 0xf6, 0x46, 0x81, 0x59,
1874 0xdd, 0xdb, 0x2b, 0x0e, 0xe1, 0x5f, 0xca, 0x5b, 0x6e, 0xd1, 0xa0, 0xbf, 0x3c, 0x2f, 0xe6, 0xb0,
1875 0xbb, 0xdd, 0xca, 0xc3, 0xe2, 0x7f, 0xf9, 0x7f, 0x46, 0x79, 0x42, 0x8c, 0xa2, 0xf0, 0xa9, 0xb2,
1876 0xf4, 0x06, 0x98, 0xd4, 0x06, 0x92, 0x05, 0x60, 0xd4, 0xf9, 0x81, 0x52, 0xbf, 0x76, 0x13, 0x80,
1877 0xf8, 0xdf, 0x30, 0xc1, 0x29, 0x90, 0x3f, 0xd8, 0xdd, 0x7f, 0x52, 0xb9, 0xbf, 0x53, 0xdd, 0xa9,
1878 0x3c, 0x28, 0x0e, 0xc1, 0x02, 0x18, 0x7b, 0xe2, 0xee, 0x3d, 0xdd, 0x2b, 0x1f, 0x54, 0x8b, 0x06,
1879 0x1c, 0x03, 0xc3, 0x8f, 0xf6, 0xf7, 0x76, 0x8b, 0xb9, 0x6b, 0xf7, 0x40, 0x5e, 0x9e, 0x07, 0x4e,
1880 0x81, 0x7c, 0x75, 0xcf, 0xad, 0xec, 0x3c, 0xdc, 0xad, 0xd1, 0x48, 0x25, 0x03, 0x8d, 0x58, 0x31,
1881 0x3c, 0x2f, 0xe6, 0xca, 0x17, 0xc1, 0x85, 0x7a, 0xd0, 0x4a, 0xfc, 0x61, 0x26, 0x25, 0xe7, 0xc5,
1882 0x08, 0xb1, 0x6e, 0xfc, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x33, 0xc2, 0x0c, 0xb6, 0xeb, 0x26, 0x00,
1883 0x00,
1884 }
0 // Protocol Buffers - Google's data interchange format
1 // Copyright 2008 Google Inc. All rights reserved.
2 // https://developers.google.com/protocol-buffers/
3 //
4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are
6 // met:
7 //
8 // * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above
11 // copyright notice, this list of conditions and the following disclaimer
12 // in the documentation and/or other materials provided with the
13 // distribution.
14 // * Neither the name of Google Inc. nor the names of its
15 // contributors may be used to endorse or promote products derived from
16 // this software without specific prior written permission.
17 //
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
30 syntax = "proto3";
31 package conformance;
32 option java_package = "com.google.protobuf.conformance";
33
34 import "google/protobuf/any.proto";
35 import "google/protobuf/duration.proto";
36 import "google/protobuf/field_mask.proto";
37 import "google/protobuf/struct.proto";
38 import "google/protobuf/timestamp.proto";
39 import "google/protobuf/wrappers.proto";
40
41 // This defines the conformance testing protocol. This protocol exists between
42 // the conformance test suite itself and the code being tested. For each test,
43 // the suite will send a ConformanceRequest message and expect a
44 // ConformanceResponse message.
45 //
46 // You can either run the tests in two different ways:
47 //
48 // 1. in-process (using the interface in conformance_test.h).
49 //
50 // 2. as a sub-process communicating over a pipe. Information about how to
51 // do this is in conformance_test_runner.cc.
52 //
53 // Pros/cons of the two approaches:
54 //
55 // - running as a sub-process is much simpler for languages other than C/C++.
56 //
57 // - running as a sub-process may be more tricky in unusual environments like
58 // iOS apps, where fork/stdin/stdout are not available.
59
60 enum WireFormat {
61 UNSPECIFIED = 0;
62 PROTOBUF = 1;
63 JSON = 2;
64 }
65
66 // Represents a single test case's input. The testee should:
67 //
68 // 1. parse this proto (which should always succeed)
69 // 2. parse the protobuf or JSON payload in "payload" (which may fail)
70 // 3. if the parse succeeded, serialize the message in the requested format.
71 message ConformanceRequest {
72 // The payload (whether protobuf of JSON) is always for a TestAllTypes proto
73 // (see below).
74 oneof payload {
75 bytes protobuf_payload = 1;
76 string json_payload = 2;
77 }
78
79 // Which format should the testee serialize its message to?
80 WireFormat requested_output_format = 3;
81 }
82
83 // Represents a single test case's output.
84 message ConformanceResponse {
85 oneof result {
86 // This string should be set to indicate parsing failed. The string can
87 // provide more information about the parse error if it is available.
88 //
89 // Setting this string does not necessarily mean the testee failed the
90 // test. Some of the test cases are intentionally invalid input.
91 string parse_error = 1;
92
93 // If the input was successfully parsed but errors occurred when
94 // serializing it to the requested output format, set the error message in
95 // this field.
96 string serialize_error = 6;
97
98 // This should be set if some other error occurred. This will always
99 // indicate that the test failed. The string can provide more information
100 // about the failure.
101 string runtime_error = 2;
102
103 // If the input was successfully parsed and the requested output was
104 // protobuf, serialize it to protobuf and set it in this field.
105 bytes protobuf_payload = 3;
106
107 // If the input was successfully parsed and the requested output was JSON,
108 // serialize to JSON and set it in this field.
109 string json_payload = 4;
110
111 // For when the testee skipped the test, likely because a certain feature
112 // wasn't supported, like JSON input/output.
113 string skipped = 5;
114 }
115 }
116
117 // This proto includes every type of field in both singular and repeated
118 // forms.
119 message TestAllTypes {
120 message NestedMessage {
121 int32 a = 1;
122 TestAllTypes corecursive = 2;
123 }
124
125 enum NestedEnum {
126 FOO = 0;
127 BAR = 1;
128 BAZ = 2;
129 NEG = -1; // Intentionally negative.
130 }
131
132 // Singular
133 int32 optional_int32 = 1;
134 int64 optional_int64 = 2;
135 uint32 optional_uint32 = 3;
136 uint64 optional_uint64 = 4;
137 sint32 optional_sint32 = 5;
138 sint64 optional_sint64 = 6;
139 fixed32 optional_fixed32 = 7;
140 fixed64 optional_fixed64 = 8;
141 sfixed32 optional_sfixed32 = 9;
142 sfixed64 optional_sfixed64 = 10;
143 float optional_float = 11;
144 double optional_double = 12;
145 bool optional_bool = 13;
146 string optional_string = 14;
147 bytes optional_bytes = 15;
148
149 NestedMessage optional_nested_message = 18;
150 ForeignMessage optional_foreign_message = 19;
151
152 NestedEnum optional_nested_enum = 21;
153 ForeignEnum optional_foreign_enum = 22;
154
155 string optional_string_piece = 24 [ctype=STRING_PIECE];
156 string optional_cord = 25 [ctype=CORD];
157
158 TestAllTypes recursive_message = 27;
159
160 // Repeated
161 repeated int32 repeated_int32 = 31;
162 repeated int64 repeated_int64 = 32;
163 repeated uint32 repeated_uint32 = 33;
164 repeated uint64 repeated_uint64 = 34;
165 repeated sint32 repeated_sint32 = 35;
166 repeated sint64 repeated_sint64 = 36;
167 repeated fixed32 repeated_fixed32 = 37;
168 repeated fixed64 repeated_fixed64 = 38;
169 repeated sfixed32 repeated_sfixed32 = 39;
170 repeated sfixed64 repeated_sfixed64 = 40;
171 repeated float repeated_float = 41;
172 repeated double repeated_double = 42;
173 repeated bool repeated_bool = 43;
174 repeated string repeated_string = 44;
175 repeated bytes repeated_bytes = 45;
176
177 repeated NestedMessage repeated_nested_message = 48;
178 repeated ForeignMessage repeated_foreign_message = 49;
179
180 repeated NestedEnum repeated_nested_enum = 51;
181 repeated ForeignEnum repeated_foreign_enum = 52;
182
183 repeated string repeated_string_piece = 54 [ctype=STRING_PIECE];
184 repeated string repeated_cord = 55 [ctype=CORD];
185
186 // Map
187 map < int32, int32> map_int32_int32 = 56;
188 map < int64, int64> map_int64_int64 = 57;
189 map < uint32, uint32> map_uint32_uint32 = 58;
190 map < uint64, uint64> map_uint64_uint64 = 59;
191 map < sint32, sint32> map_sint32_sint32 = 60;
192 map < sint64, sint64> map_sint64_sint64 = 61;
193 map < fixed32, fixed32> map_fixed32_fixed32 = 62;
194 map < fixed64, fixed64> map_fixed64_fixed64 = 63;
195 map <sfixed32, sfixed32> map_sfixed32_sfixed32 = 64;
196 map <sfixed64, sfixed64> map_sfixed64_sfixed64 = 65;
197 map < int32, float> map_int32_float = 66;
198 map < int32, double> map_int32_double = 67;
199 map < bool, bool> map_bool_bool = 68;
200 map < string, string> map_string_string = 69;
201 map < string, bytes> map_string_bytes = 70;
202 map < string, NestedMessage> map_string_nested_message = 71;
203 map < string, ForeignMessage> map_string_foreign_message = 72;
204 map < string, NestedEnum> map_string_nested_enum = 73;
205 map < string, ForeignEnum> map_string_foreign_enum = 74;
206
207 oneof oneof_field {
208 uint32 oneof_uint32 = 111;
209 NestedMessage oneof_nested_message = 112;
210 string oneof_string = 113;
211 bytes oneof_bytes = 114;
212 bool oneof_bool = 115;
213 uint64 oneof_uint64 = 116;
214 float oneof_float = 117;
215 double oneof_double = 118;
216 NestedEnum oneof_enum = 119;
217 }
218
219 // Well-known types
220 google.protobuf.BoolValue optional_bool_wrapper = 201;
221 google.protobuf.Int32Value optional_int32_wrapper = 202;
222 google.protobuf.Int64Value optional_int64_wrapper = 203;
223 google.protobuf.UInt32Value optional_uint32_wrapper = 204;
224 google.protobuf.UInt64Value optional_uint64_wrapper = 205;
225 google.protobuf.FloatValue optional_float_wrapper = 206;
226 google.protobuf.DoubleValue optional_double_wrapper = 207;
227 google.protobuf.StringValue optional_string_wrapper = 208;
228 google.protobuf.BytesValue optional_bytes_wrapper = 209;
229
230 repeated google.protobuf.BoolValue repeated_bool_wrapper = 211;
231 repeated google.protobuf.Int32Value repeated_int32_wrapper = 212;
232 repeated google.protobuf.Int64Value repeated_int64_wrapper = 213;
233 repeated google.protobuf.UInt32Value repeated_uint32_wrapper = 214;
234 repeated google.protobuf.UInt64Value repeated_uint64_wrapper = 215;
235 repeated google.protobuf.FloatValue repeated_float_wrapper = 216;
236 repeated google.protobuf.DoubleValue repeated_double_wrapper = 217;
237 repeated google.protobuf.StringValue repeated_string_wrapper = 218;
238 repeated google.protobuf.BytesValue repeated_bytes_wrapper = 219;
239
240 google.protobuf.Duration optional_duration = 301;
241 google.protobuf.Timestamp optional_timestamp = 302;
242 google.protobuf.FieldMask optional_field_mask = 303;
243 google.protobuf.Struct optional_struct = 304;
244 google.protobuf.Any optional_any = 305;
245 google.protobuf.Value optional_value = 306;
246
247 repeated google.protobuf.Duration repeated_duration = 311;
248 repeated google.protobuf.Timestamp repeated_timestamp = 312;
249 repeated google.protobuf.FieldMask repeated_fieldmask = 313;
250 repeated google.protobuf.Struct repeated_struct = 324;
251 repeated google.protobuf.Any repeated_any = 315;
252 repeated google.protobuf.Value repeated_value = 316;
253
254 // Test field-name-to-JSON-name convention.
255 // (protobuf says names can be any valid C/C++ identifier.)
256 int32 fieldname1 = 401;
257 int32 field_name2 = 402;
258 int32 _field_name3 = 403;
259 int32 field__name4_ = 404;
260 int32 field0name5 = 405;
261 int32 field_0_name6 = 406;
262 int32 fieldName7 = 407;
263 int32 FieldName8 = 408;
264 int32 field_Name9 = 409;
265 int32 Field_Name10 = 410;
266 int32 FIELD_NAME11 = 411;
267 int32 FIELD_name12 = 412;
268 int32 __field_name13 = 413;
269 int32 __Field_name14 = 414;
270 int32 field__name15 = 415;
271 int32 field__Name16 = 416;
272 int32 field_name17__ = 417;
273 int32 Field_name18__ = 418;
274 }
275
276 message ForeignMessage {
277 int32 c = 1;
278 }
279
280 enum ForeignEnum {
281 FOREIGN_FOO = 0;
282 FOREIGN_BAR = 1;
283 FOREIGN_BAZ = 2;
284 }
0 // Go support for Protocol Buffers - Google's data interchange format
1 //
2 // Copyright 2016 The Go Authors. All rights reserved.
3 // https://github.com/golang/protobuf
4 //
5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are
7 // met:
8 //
9 // * Redistributions of source code must retain the above copyright
10 // notice, this list of conditions and the following disclaimer.
11 // * Redistributions in binary form must reproduce the above
12 // copyright notice, this list of conditions and the following disclaimer
13 // in the documentation and/or other materials provided with the
14 // distribution.
15 // * Neither the name of Google Inc. nor the names of its
16 // contributors may be used to endorse or promote products derived from
17 // this software without specific prior written permission.
18 //
19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
31 // Package descriptor provides functions for obtaining protocol buffer
32 // descriptors for generated Go types.
33 //
34 // These functions cannot go in package proto because they depend on the
35 // generated protobuf descriptor messages, which themselves depend on proto.
36 package descriptor
37
38 import (
39 "bytes"
40 "compress/gzip"
41 "fmt"
42 "io/ioutil"
43
44 "github.com/golang/protobuf/proto"
45 protobuf "github.com/golang/protobuf/protoc-gen-go/descriptor"
46 )
47
48 // extractFile extracts a FileDescriptorProto from a gzip'd buffer.
49 func extractFile(gz []byte) (*protobuf.FileDescriptorProto, error) {
50 r, err := gzip.NewReader(bytes.NewReader(gz))
51 if err != nil {
52 return nil, fmt.Errorf("failed to open gzip reader: %v", err)
53 }
54 defer r.Close()
55
56 b, err := ioutil.ReadAll(r)
57 if err != nil {
58 return nil, fmt.Errorf("failed to uncompress descriptor: %v", err)
59 }
60
61 fd := new(protobuf.FileDescriptorProto)
62 if err := proto.Unmarshal(b, fd); err != nil {
63 return nil, fmt.Errorf("malformed FileDescriptorProto: %v", err)
64 }
65
66 return fd, nil
67 }
68
69 // Message is a proto.Message with a method to return its descriptor.
70 //
71 // Message types generated by the protocol compiler always satisfy
72 // the Message interface.
73 type Message interface {
74 proto.Message
75 Descriptor() ([]byte, []int)
76 }
77
78 // ForMessage returns a FileDescriptorProto and a DescriptorProto from within it
79 // describing the given message.
80 func ForMessage(msg Message) (fd *protobuf.FileDescriptorProto, md *protobuf.DescriptorProto) {
81 gz, path := msg.Descriptor()
82 fd, err := extractFile(gz)
83 if err != nil {
84 panic(fmt.Sprintf("invalid FileDescriptorProto for %T: %v", msg, err))
85 }
86
87 md = fd.MessageType[path[0]]
88 for _, i := range path[1:] {
89 md = md.NestedType[i]
90 }
91 return fd, md
92 }
0 package descriptor_test
1
2 import (
3 "fmt"
4 "testing"
5
6 "github.com/golang/protobuf/descriptor"
7 tpb "github.com/golang/protobuf/proto/testdata"
8 protobuf "github.com/golang/protobuf/protoc-gen-go/descriptor"
9 )
10
11 func TestMessage(t *testing.T) {
12 var msg *protobuf.DescriptorProto
13 fd, md := descriptor.ForMessage(msg)
14 if pkg, want := fd.GetPackage(), "google.protobuf"; pkg != want {
15 t.Errorf("descriptor.ForMessage(%T).GetPackage() = %q; want %q", msg, pkg, want)
16 }
17 if name, want := md.GetName(), "DescriptorProto"; name != want {
18 t.Fatalf("descriptor.ForMessage(%T).GetName() = %q; want %q", msg, name, want)
19 }
20 }
21
22 func Example_Options() {
23 var msg *tpb.MyMessageSet
24 _, md := descriptor.ForMessage(msg)
25 if md.GetOptions().GetMessageSetWireFormat() {
26 fmt.Printf("%v uses option message_set_wire_format.\n", md.GetName())
27 }
28
29 // Output:
30 // MyMessageSet uses option message_set_wire_format.
31 }
4343 "errors"
4444 "fmt"
4545 "io"
46 "math"
4647 "reflect"
4748 "sort"
4849 "strconv"
5051 "time"
5152
5253 "github.com/golang/protobuf/proto"
54
55 stpb "github.com/golang/protobuf/ptypes/struct"
5356 )
5457
5558 // Marshaler is a configurable object for converting between
7174 OrigName bool
7275 }
7376
77 // JSONPBMarshaler is implemented by protobuf messages that customize the
78 // way they are marshaled to JSON. Messages that implement this should
79 // also implement JSONPBUnmarshaler so that the custom format can be
80 // parsed.
81 type JSONPBMarshaler interface {
82 MarshalJSONPB(*Marshaler) ([]byte, error)
83 }
84
85 // JSONPBUnmarshaler is implemented by protobuf messages that customize
86 // the way they are unmarshaled from JSON. Messages that implement this
87 // should also implement JSONPBMarshaler so that the custom format can be
88 // produced.
89 type JSONPBUnmarshaler interface {
90 UnmarshalJSONPB(*Unmarshaler, []byte) error
91 }
92
7493 // Marshal marshals a protocol buffer into JSON.
7594 func (m *Marshaler) Marshal(out io.Writer, pb proto.Message) error {
7695 writer := &errWriter{writer: out}
88107
89108 type int32Slice []int32
90109
110 var nonFinite = map[string]float64{
111 `"NaN"`: math.NaN(),
112 `"Infinity"`: math.Inf(1),
113 `"-Infinity"`: math.Inf(-1),
114 }
115
91116 // For sorting extensions ids to ensure stable output.
92117 func (s int32Slice) Len() int { return len(s) }
93118 func (s int32Slice) Less(i, j int) bool { return s[i] < s[j] }
99124
100125 // marshalObject writes a struct to the Writer.
101126 func (m *Marshaler) marshalObject(out *errWriter, v proto.Message, indent, typeURL string) error {
127 if jsm, ok := v.(JSONPBMarshaler); ok {
128 b, err := jsm.MarshalJSONPB(m)
129 if err != nil {
130 return err
131 }
132 if typeURL != "" {
133 // we are marshaling this object to an Any type
134 var js map[string]*json.RawMessage
135 if err = json.Unmarshal(b, &js); err != nil {
136 return fmt.Errorf("type %T produced invalid JSON: %v", v, err)
137 }
138 turl, err := json.Marshal(typeURL)
139 if err != nil {
140 return fmt.Errorf("failed to marshal type URL %q to JSON: %v", typeURL, err)
141 }
142 js["@type"] = (*json.RawMessage)(&turl)
143 if b, err = json.Marshal(js); err != nil {
144 return err
145 }
146 }
147
148 out.write(string(b))
149 return out.err
150 }
151
102152 s := reflect.ValueOf(v).Elem()
103153
104154 // Handle well-known types.
125175 out.write(x)
126176 out.write(`s"`)
127177 return out.err
128 case "Struct":
129 // Let marshalValue handle the `fields` map.
178 case "Struct", "ListValue":
179 // Let marshalValue handle the `Struct.fields` map or the `ListValue.values` slice.
130180 // TODO: pass the correct Properties if needed.
131181 return m.marshalValue(out, &proto.Properties{}, s.Field(0), indent)
132182 case "Timestamp":
179229
180230 // IsNil will panic on most value kinds.
181231 switch value.Kind() {
182 case reflect.Chan, reflect.Func, reflect.Interface, reflect.Map, reflect.Ptr, reflect.Slice:
232 case reflect.Chan, reflect.Func, reflect.Interface:
183233 if value.IsNil() {
184234 continue
185235 }
205255 }
206256 case reflect.String:
207257 if value.Len() == 0 {
258 continue
259 }
260 case reflect.Map, reflect.Ptr, reflect.Slice:
261 if value.IsNil() {
208262 continue
209263 }
210264 }
370424
371425 // marshalValue writes the value to the Writer.
372426 func (m *Marshaler) marshalValue(out *errWriter, prop *proto.Properties, v reflect.Value, indent string) error {
373
374427 var err error
375428 v = reflect.Indirect(v)
429
430 // Handle nil pointer
431 if v.Kind() == reflect.Invalid {
432 out.write("null")
433 return out.err
434 }
376435
377436 // Handle repeated elements.
378437 if v.Kind() == reflect.Slice && v.Type().Elem().Kind() != reflect.Uint8 {
403462
404463 // Handle well-known types.
405464 // Most are handled up in marshalObject (because 99% are messages).
406 type wkt interface {
407 XXX_WellKnownType() string
408 }
409465 if wkt, ok := v.Interface().(wkt); ok {
410466 switch wkt.XXX_WellKnownType() {
411467 case "NullValue":
493549 return out.err
494550 }
495551
552 // Handle non-finite floats, e.g. NaN, Infinity and -Infinity.
553 if v.Kind() == reflect.Float32 || v.Kind() == reflect.Float64 {
554 f := v.Float()
555 var sval string
556 switch {
557 case math.IsInf(f, 1):
558 sval = `"Infinity"`
559 case math.IsInf(f, -1):
560 sval = `"-Infinity"`
561 case math.IsNaN(f):
562 sval = `"NaN"`
563 }
564 if sval != "" {
565 out.write(sval)
566 return out.err
567 }
568 }
569
496570 // Default handling defers to the encoding/json library.
497571 b, err := json.Marshal(v.Interface())
498572 if err != nil {
564638
565639 // Allocate memory for pointer fields.
566640 if targetType.Kind() == reflect.Ptr {
641 // If input value is "null" and target is a pointer type, then the field should be treated as not set
642 // UNLESS the target is structpb.Value, in which case it should be set to structpb.NullValue.
643 if string(inputValue) == "null" && targetType != reflect.TypeOf(&stpb.Value{}) {
644 return nil
645 }
567646 target.Set(reflect.New(targetType.Elem()))
647
568648 return u.unmarshalValue(target.Elem(), inputValue, prop)
569649 }
570650
571 // Handle well-known types.
572 type wkt interface {
573 XXX_WellKnownType() string
574 }
575 if wkt, ok := target.Addr().Interface().(wkt); ok {
576 switch wkt.XXX_WellKnownType() {
651 if jsu, ok := target.Addr().Interface().(JSONPBUnmarshaler); ok {
652 return jsu.UnmarshalJSONPB(u, []byte(inputValue))
653 }
654
655 // Handle well-known types that are not pointers.
656 if w, ok := target.Addr().Interface().(wkt); ok {
657 switch w.XXX_WellKnownType() {
577658 case "DoubleValue", "FloatValue", "Int64Value", "UInt64Value",
578659 "Int32Value", "UInt32Value", "BoolValue", "StringValue", "BytesValue":
579 // "Wrappers use the same representation in JSON
580 // as the wrapped primitive type, except that null is allowed."
581 // encoding/json will turn JSON `null` into Go `nil`,
582 // so we don't have to do any extra work.
583660 return u.unmarshalValue(target.Field(0), inputValue, prop)
584661 case "Any":
585 return fmt.Errorf("unmarshaling Any not supported yet")
662 // Use json.RawMessage pointer type instead of value to support pre-1.8 version.
663 // 1.8 changed RawMessage.MarshalJSON from pointer type to value type, see
664 // https://github.com/golang/go/issues/14493
665 var jsonFields map[string]*json.RawMessage
666 if err := json.Unmarshal(inputValue, &jsonFields); err != nil {
667 return err
668 }
669
670 val, ok := jsonFields["@type"]
671 if !ok || val == nil {
672 return errors.New("Any JSON doesn't have '@type'")
673 }
674
675 var turl string
676 if err := json.Unmarshal([]byte(*val), &turl); err != nil {
677 return fmt.Errorf("can't unmarshal Any's '@type': %q", *val)
678 }
679 target.Field(0).SetString(turl)
680
681 mname := turl
682 if slash := strings.LastIndex(mname, "/"); slash >= 0 {
683 mname = mname[slash+1:]
684 }
685 mt := proto.MessageType(mname)
686 if mt == nil {
687 return fmt.Errorf("unknown message type %q", mname)
688 }
689
690 m := reflect.New(mt.Elem()).Interface().(proto.Message)
691 if _, ok := m.(wkt); ok {
692 val, ok := jsonFields["value"]
693 if !ok {
694 return errors.New("Any JSON doesn't have 'value'")
695 }
696
697 if err := u.unmarshalValue(reflect.ValueOf(m).Elem(), *val, nil); err != nil {
698 return fmt.Errorf("can't unmarshal Any nested proto %T: %v", m, err)
699 }
700 } else {
701 delete(jsonFields, "@type")
702 nestedProto, err := json.Marshal(jsonFields)
703 if err != nil {
704 return fmt.Errorf("can't generate JSON for Any's nested proto to be unmarshaled: %v", err)
705 }
706
707 if err = u.unmarshalValue(reflect.ValueOf(m).Elem(), nestedProto, nil); err != nil {
708 return fmt.Errorf("can't unmarshal Any nested proto %T: %v", m, err)
709 }
710 }
711
712 b, err := proto.Marshal(m)
713 if err != nil {
714 return fmt.Errorf("can't marshal proto %T into Any.Value: %v", m, err)
715 }
716 target.Field(1).SetBytes(b)
717
718 return nil
586719 case "Duration":
587720 unq, err := strconv.Unquote(string(inputValue))
588721 if err != nil {
589722 return err
590723 }
724
591725 d, err := time.ParseDuration(unq)
592726 if err != nil {
593727 return fmt.Errorf("bad Duration: %v", err)
594728 }
729
595730 ns := d.Nanoseconds()
596731 s := ns / 1e9
597732 ns %= 1e9
603738 if err != nil {
604739 return err
605740 }
741
606742 t, err := time.Parse(time.RFC3339Nano, unq)
607743 if err != nil {
608744 return fmt.Errorf("bad Timestamp: %v", err)
609745 }
610 ns := t.UnixNano()
611 s := ns / 1e9
612 ns %= 1e9
613 target.Field(0).SetInt(s)
614 target.Field(1).SetInt(ns)
746
747 target.Field(0).SetInt(t.Unix())
748 target.Field(1).SetInt(int64(t.Nanosecond()))
749 return nil
750 case "Struct":
751 var m map[string]json.RawMessage
752 if err := json.Unmarshal(inputValue, &m); err != nil {
753 return fmt.Errorf("bad StructValue: %v", err)
754 }
755
756 target.Field(0).Set(reflect.ValueOf(map[string]*stpb.Value{}))
757 for k, jv := range m {
758 pv := &stpb.Value{}
759 if err := u.unmarshalValue(reflect.ValueOf(pv).Elem(), jv, prop); err != nil {
760 return fmt.Errorf("bad value in StructValue for key %q: %v", k, err)
761 }
762 target.Field(0).SetMapIndex(reflect.ValueOf(k), reflect.ValueOf(pv))
763 }
764 return nil
765 case "ListValue":
766 var s []json.RawMessage
767 if err := json.Unmarshal(inputValue, &s); err != nil {
768 return fmt.Errorf("bad ListValue: %v", err)
769 }
770
771 target.Field(0).Set(reflect.ValueOf(make([]*stpb.Value, len(s), len(s))))
772 for i, sv := range s {
773 if err := u.unmarshalValue(target.Field(0).Index(i), sv, prop); err != nil {
774 return err
775 }
776 }
777 return nil
778 case "Value":
779 ivStr := string(inputValue)
780 if ivStr == "null" {
781 target.Field(0).Set(reflect.ValueOf(&stpb.Value_NullValue{}))
782 } else if v, err := strconv.ParseFloat(ivStr, 0); err == nil {
783 target.Field(0).Set(reflect.ValueOf(&stpb.Value_NumberValue{v}))
784 } else if v, err := strconv.Unquote(ivStr); err == nil {
785 target.Field(0).Set(reflect.ValueOf(&stpb.Value_StringValue{v}))
786 } else if v, err := strconv.ParseBool(ivStr); err == nil {
787 target.Field(0).Set(reflect.ValueOf(&stpb.Value_BoolValue{v}))
788 } else if err := json.Unmarshal(inputValue, &[]json.RawMessage{}); err == nil {
789 lv := &stpb.ListValue{}
790 target.Field(0).Set(reflect.ValueOf(&stpb.Value_ListValue{lv}))
791 return u.unmarshalValue(reflect.ValueOf(lv).Elem(), inputValue, prop)
792 } else if err := json.Unmarshal(inputValue, &map[string]json.RawMessage{}); err == nil {
793 sv := &stpb.Struct{}
794 target.Field(0).Set(reflect.ValueOf(&stpb.Value_StructValue{sv}))
795 return u.unmarshalValue(reflect.ValueOf(sv).Elem(), inputValue, prop)
796 } else {
797 return fmt.Errorf("unrecognized type for Value %q", ivStr)
798 }
615799 return nil
616800 }
617801 }
696880 }
697881 }
698882 }
883 // Handle proto2 extensions.
884 if len(jsonFields) > 0 {
885 if ep, ok := target.Addr().Interface().(proto.Message); ok {
886 for _, ext := range proto.RegisteredExtensions(ep) {
887 name := fmt.Sprintf("[%s]", ext.Name)
888 raw, ok := jsonFields[name]
889 if !ok {
890 continue
891 }
892 delete(jsonFields, name)
893 nv := reflect.New(reflect.TypeOf(ext.ExtensionType).Elem())
894 if err := u.unmarshalValue(nv.Elem(), raw, nil); err != nil {
895 return err
896 }
897 if err := proto.SetExtension(ep, ext, nv.Interface()); err != nil {
898 return err
899 }
900 }
901 }
902 }
699903 if !u.AllowUnknownFields && len(jsonFields) > 0 {
700904 // Pick any field to be the scapegoat.
701905 var f string
714918 if err := json.Unmarshal(inputValue, &slc); err != nil {
715919 return err
716920 }
717 len := len(slc)
718 target.Set(reflect.MakeSlice(targetType, len, len))
719 for i := 0; i < len; i++ {
720 if err := u.unmarshalValue(target.Index(i), slc[i], prop); err != nil {
721 return err
921 if slc != nil {
922 l := len(slc)
923 target.Set(reflect.MakeSlice(targetType, l, l))
924 for i := 0; i < l; i++ {
925 if err := u.unmarshalValue(target.Index(i), slc[i], prop); err != nil {
926 return err
927 }
722928 }
723929 }
724930 return nil
730936 if err := json.Unmarshal(inputValue, &mp); err != nil {
731937 return err
732938 }
733 target.Set(reflect.MakeMap(targetType))
734 var keyprop, valprop *proto.Properties
735 if prop != nil {
736 // These could still be nil if the protobuf metadata is broken somehow.
737 // TODO: This won't work because the fields are unexported.
738 // We should probably just reparse them.
739 //keyprop, valprop = prop.mkeyprop, prop.mvalprop
740 }
741 for ks, raw := range mp {
742 // Unmarshal map key. The core json library already decoded the key into a
743 // string, so we handle that specially. Other types were quoted post-serialization.
744 var k reflect.Value
745 if targetType.Key().Kind() == reflect.String {
746 k = reflect.ValueOf(ks)
747 } else {
748 k = reflect.New(targetType.Key()).Elem()
749 if err := u.unmarshalValue(k, json.RawMessage(ks), keyprop); err != nil {
939 if mp != nil {
940 target.Set(reflect.MakeMap(targetType))
941 var keyprop, valprop *proto.Properties
942 if prop != nil {
943 // These could still be nil if the protobuf metadata is broken somehow.
944 // TODO: This won't work because the fields are unexported.
945 // We should probably just reparse them.
946 //keyprop, valprop = prop.mkeyprop, prop.mvalprop
947 }
948 for ks, raw := range mp {
949 // Unmarshal map key. The core json library already decoded the key into a
950 // string, so we handle that specially. Other types were quoted post-serialization.
951 var k reflect.Value
952 if targetType.Key().Kind() == reflect.String {
953 k = reflect.ValueOf(ks)
954 } else {
955 k = reflect.New(targetType.Key()).Elem()
956 if err := u.unmarshalValue(k, json.RawMessage(ks), keyprop); err != nil {
957 return err
958 }
959 }
960
961 // Unmarshal map value.
962 v := reflect.New(targetType.Elem()).Elem()
963 if err := u.unmarshalValue(v, raw, valprop); err != nil {
750964 return err
751965 }
752 }
753
754 // Unmarshal map value.
755 v := reflect.New(targetType.Elem()).Elem()
756 if err := u.unmarshalValue(v, raw, valprop); err != nil {
757 return err
758 }
759 target.SetMapIndex(k, v)
966 target.SetMapIndex(k, v)
967 }
760968 }
761969 return nil
762970 }
766974 isNum := targetType.Kind() == reflect.Int64 || targetType.Kind() == reflect.Uint64
767975 if isNum && strings.HasPrefix(string(inputValue), `"`) {
768976 inputValue = inputValue[1 : len(inputValue)-1]
977 }
978
979 // Non-finite numbers can be encoded as strings.
980 isFloat := targetType.Kind() == reflect.Float32 || targetType.Kind() == reflect.Float64
981 if isFloat {
982 if num, ok := nonFinite[string(inputValue)]; ok {
983 target.SetFloat(num)
984 return nil
985 }
769986 }
770987
771988 // Use the encoding/json for parsing other value types.
3434 "bytes"
3535 "encoding/json"
3636 "io"
37 "math"
3738 "reflect"
3839 "strings"
3940 "testing"
4243
4344 pb "github.com/golang/protobuf/jsonpb/jsonpb_test_proto"
4445 proto3pb "github.com/golang/protobuf/proto/proto3_proto"
46 "github.com/golang/protobuf/ptypes"
4547 anypb "github.com/golang/protobuf/ptypes/any"
4648 durpb "github.com/golang/protobuf/ptypes/duration"
4749 stpb "github.com/golang/protobuf/ptypes/struct"
107109 RSint32: []int32{-1, -2, -3},
108110 RSint64: []int64{-6789012345, -3456789012},
109111 RFloat: []float32{3.14, 6.28},
110 RDouble: []float64{299792458, 6.62606957e-34},
112 RDouble: []float64{299792458 * 1e20, 6.62606957e-34},
111113 RString: []string{"happy", "days"},
112114 RBytes: [][]byte{[]byte("skittles"), []byte("m&m's")},
113115 }
121123 `"rSint32":[-1,-2,-3],` +
122124 `"rSint64":["-6789012345","-3456789012"],` +
123125 `"rFloat":[3.14,6.28],` +
124 `"rDouble":[2.99792458e+08,6.62606957e-34],` +
126 `"rDouble":[2.99792458e+28,6.62606957e-34],` +
125127 `"rString":["happy","days"],` +
126128 `"rBytes":["c2tpdHRsZXM=","bSZtJ3M="]` +
127129 `}`
164166 6.28
165167 ],
166168 "rDouble": [
167 2.99792458e+08,
169 2.99792458e+28,
168170 6.62606957e-34
169171 ],
170172 "rString": [
306308 "value": "1.212s"
307309 }
308310 }`
311
312 nonFinites = &pb.NonFinites{
313 FNan: proto.Float32(float32(math.NaN())),
314 FPinf: proto.Float32(float32(math.Inf(1))),
315 FNinf: proto.Float32(float32(math.Inf(-1))),
316 DNan: proto.Float64(float64(math.NaN())),
317 DPinf: proto.Float64(float64(math.Inf(1))),
318 DNinf: proto.Float64(float64(math.Inf(-1))),
319 }
320 nonFinitesJSON = `{` +
321 `"fNan":"NaN",` +
322 `"fPinf":"Infinity",` +
323 `"fNinf":"-Infinity",` +
324 `"dNan":"NaN",` +
325 `"dPinf":"Infinity",` +
326 `"dNinf":"-Infinity"` +
327 `}`
309328 )
310329
311330 func init() {
325344 }{
326345 {"simple flat object", marshaler, simpleObject, simpleObjectJSON},
327346 {"simple pretty object", marshalerAllOptions, simpleObject, simpleObjectPrettyJSON},
347 {"non-finite floats fields object", marshaler, nonFinites, nonFinitesJSON},
328348 {"repeated fields flat object", marshaler, repeatsObject, repeatsObjectJSON},
329349 {"repeated fields pretty object", marshalerAllOptions, repeatsObject, repeatsObjectPrettyJSON},
330350 {"nested message/enum flat object", marshaler, complexObject, complexObjectJSON},
349369 `{"rFunny":[1,2]}`},
350370 {"empty value", marshaler, &pb.Simple3{}, `{}`},
351371 {"empty value emitted", Marshaler{EmitDefaults: true}, &pb.Simple3{}, `{"dub":0}`},
372 {"empty repeated emitted", Marshaler{EmitDefaults: true}, &pb.SimpleSlice3{}, `{"slices":[]}`},
373 {"empty map emitted", Marshaler{EmitDefaults: true}, &pb.SimpleMap3{}, `{"stringy":{}}`},
374 {"nested struct null", Marshaler{EmitDefaults: true}, &pb.SimpleNull3{}, `{"simple":null}`},
352375 {"map<int64, int32>", marshaler, &pb.Mappy{Nummy: map[int64]int32{1: 2, 3: 4}}, `{"nummy":{"1":2,"3":4}}`},
353376 {"map<int64, int32>", marshalerAllOptions, &pb.Mappy{Nummy: map[int64]int32{1: 2, 3: 4}}, nummyPrettyJSON},
354377 {"map<string, string>", marshaler,
355378 &pb.Mappy{Strry: map[string]string{`"one"`: "two", "three": "four"}},
356379 `{"strry":{"\"one\"":"two","three":"four"}}`},
357380 {"map<int32, Object>", marshaler,
358 &pb.Mappy{Objjy: map[int32]*pb.Simple3{1: &pb.Simple3{Dub: 1}}}, `{"objjy":{"1":{"dub":1}}}`},
381 &pb.Mappy{Objjy: map[int32]*pb.Simple3{1: {Dub: 1}}}, `{"objjy":{"1":{"dub":1}}}`},
359382 {"map<int32, Object>", marshalerAllOptions,
360 &pb.Mappy{Objjy: map[int32]*pb.Simple3{1: &pb.Simple3{Dub: 1}}}, objjyPrettyJSON},
383 &pb.Mappy{Objjy: map[int32]*pb.Simple3{1: {Dub: 1}}}, objjyPrettyJSON},
361384 {"map<int64, string>", marshaler, &pb.Mappy{Buggy: map[int64]string{1234: "yup"}},
362385 `{"buggy":{"1234":"yup"}}`},
363386 {"map<bool, bool>", marshaler, &pb.Mappy{Booly: map[bool]bool{false: true}}, `{"booly":{"false":true}}`},
371394 {"proto2 map<int64, string>", marshaler, &pb.Maps{MInt64Str: map[int64]string{213: "cat"}},
372395 `{"mInt64Str":{"213":"cat"}}`},
373396 {"proto2 map<bool, Object>", marshaler,
374 &pb.Maps{MBoolSimple: map[bool]*pb.Simple{true: &pb.Simple{OInt32: proto.Int32(1)}}},
397 &pb.Maps{MBoolSimple: map[bool]*pb.Simple{true: {OInt32: proto.Int32(1)}}},
375398 `{"mBoolSimple":{"true":{"oInt32":1}}}`},
376399 {"oneof, not set", marshaler, &pb.MsgWithOneof{}, `{}`},
377400 {"oneof, set", marshaler, &pb.MsgWithOneof{Union: &pb.MsgWithOneof_Title{"Grand Poobah"}}, `{"title":"Grand Poobah"}`},
385408 {"Duration", marshaler, &pb.KnownTypes{Dur: &durpb.Duration{Seconds: 3}}, `{"dur":"3.000s"}`},
386409 {"Struct", marshaler, &pb.KnownTypes{St: &stpb.Struct{
387410 Fields: map[string]*stpb.Value{
388 "one": &stpb.Value{Kind: &stpb.Value_StringValue{"loneliest number"}},
389 "two": &stpb.Value{Kind: &stpb.Value_NullValue{stpb.NullValue_NULL_VALUE}},
411 "one": {Kind: &stpb.Value_StringValue{"loneliest number"}},
412 "two": {Kind: &stpb.Value_NullValue{stpb.NullValue_NULL_VALUE}},
390413 },
391414 }}, `{"st":{"one":"loneliest number","two":null}}`},
415 {"empty ListValue", marshaler, &pb.KnownTypes{Lv: &stpb.ListValue{}}, `{"lv":[]}`},
416 {"basic ListValue", marshaler, &pb.KnownTypes{Lv: &stpb.ListValue{Values: []*stpb.Value{
417 {Kind: &stpb.Value_StringValue{"x"}},
418 {Kind: &stpb.Value_NullValue{}},
419 {Kind: &stpb.Value_NumberValue{3}},
420 {Kind: &stpb.Value_BoolValue{true}},
421 }}}, `{"lv":["x",null,3,true]}`},
392422 {"Timestamp", marshaler, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: 14e8, Nanos: 21e6}}, `{"ts":"2014-05-13T16:53:20.021Z"}`},
423 {"number Value", marshaler, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_NumberValue{1}}}, `{"val":1}`},
424 {"null Value", marshaler, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_NullValue{stpb.NullValue_NULL_VALUE}}}, `{"val":null}`},
425 {"string number value", marshaler, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_StringValue{"9223372036854775807"}}}, `{"val":"9223372036854775807"}`},
426 {"list of lists Value", marshaler, &pb.KnownTypes{Val: &stpb.Value{
427 Kind: &stpb.Value_ListValue{&stpb.ListValue{
428 Values: []*stpb.Value{
429 {Kind: &stpb.Value_StringValue{"x"}},
430 {Kind: &stpb.Value_ListValue{&stpb.ListValue{
431 Values: []*stpb.Value{
432 {Kind: &stpb.Value_ListValue{&stpb.ListValue{
433 Values: []*stpb.Value{{Kind: &stpb.Value_StringValue{"y"}}},
434 }}},
435 {Kind: &stpb.Value_StringValue{"z"}},
436 },
437 }}},
438 },
439 }},
440 }}, `{"val":["x",[["y"],"z"]]}`},
393441
394442 {"DoubleValue", marshaler, &pb.KnownTypes{Dbl: &wpb.DoubleValue{Value: 1.2}}, `{"dbl":1.2}`},
395443 {"FloatValue", marshaler, &pb.KnownTypes{Flt: &wpb.FloatValue{Value: 1.2}}, `{"flt":1.2}`},
410458 } else if tt.json != json {
411459 t.Errorf("%s: got [%v] want [%v]", tt.desc, json, tt.json)
412460 }
461 }
462 }
463
464 func TestMarshalJSONPBMarshaler(t *testing.T) {
465 rawJson := `{ "foo": "bar", "baz": [0, 1, 2, 3] }`
466 msg := dynamicMessage{rawJson: rawJson}
467 str, err := new(Marshaler).MarshalToString(&msg)
468 if err != nil {
469 t.Errorf("an unexpected error occurred when marshalling JSONPBMarshaler: %v", err)
470 }
471 if str != rawJson {
472 t.Errorf("marshalling JSON produced incorrect output: got %s, wanted %s", str, rawJson)
473 }
474 }
475
476 func TestMarshalAnyJSONPBMarshaler(t *testing.T) {
477 msg := dynamicMessage{rawJson: `{ "foo": "bar", "baz": [0, 1, 2, 3] }`}
478 a, err := ptypes.MarshalAny(&msg)
479 if err != nil {
480 t.Errorf("an unexpected error occurred when marshalling to Any: %v", err)
481 }
482 str, err := new(Marshaler).MarshalToString(a)
483 if err != nil {
484 t.Errorf("an unexpected error occurred when marshalling Any to JSON: %v", err)
485 }
486 // after custom marshaling, it's round-tripped through JSON decoding/encoding already,
487 // so the keys are sorted, whitespace is compacted, and "@type" key has been added
488 expected := `{"@type":"type.googleapis.com/` + dynamicMessageName + `","baz":[0,1,2,3],"foo":"bar"}`
489 if str != expected {
490 t.Errorf("marshalling JSON produced incorrect output: got %s, wanted %s", str, expected)
413491 }
414492 }
415493
451529 }}},
452530 {"unquoted int64 object", Unmarshaler{}, `{"oInt64":-314}`, &pb.Simple{OInt64: proto.Int64(-314)}},
453531 {"unquoted uint64 object", Unmarshaler{}, `{"oUint64":123}`, &pb.Simple{OUint64: proto.Uint64(123)}},
532 {"NaN", Unmarshaler{}, `{"oDouble":"NaN"}`, &pb.Simple{ODouble: proto.Float64(math.NaN())}},
533 {"Inf", Unmarshaler{}, `{"oFloat":"Infinity"}`, &pb.Simple{OFloat: proto.Float32(float32(math.Inf(1)))}},
534 {"-Inf", Unmarshaler{}, `{"oDouble":"-Infinity"}`, &pb.Simple{ODouble: proto.Float64(math.Inf(-1))}},
454535 {"map<int64, int32>", Unmarshaler{}, `{"nummy":{"1":2,"3":4}}`, &pb.Mappy{Nummy: map[int64]int32{1: 2, 3: 4}}},
455536 {"map<string, string>", Unmarshaler{}, `{"strry":{"\"one\"":"two","three":"four"}}`, &pb.Mappy{Strry: map[string]string{`"one"`: "two", "three": "four"}}},
456 {"map<int32, Object>", Unmarshaler{}, `{"objjy":{"1":{"dub":1}}}`, &pb.Mappy{Objjy: map[int32]*pb.Simple3{1: &pb.Simple3{Dub: 1}}}},
537 {"map<int32, Object>", Unmarshaler{}, `{"objjy":{"1":{"dub":1}}}`, &pb.Mappy{Objjy: map[int32]*pb.Simple3{1: {Dub: 1}}}},
538 {"proto2 extension", Unmarshaler{}, realNumberJSON, realNumber},
539 {"Any with message", Unmarshaler{}, anySimpleJSON, anySimple},
540 {"Any with message and indent", Unmarshaler{}, anySimplePrettyJSON, anySimple},
541 {"Any with WKT", Unmarshaler{}, anyWellKnownJSON, anyWellKnown},
542 {"Any with WKT and indent", Unmarshaler{}, anyWellKnownPrettyJSON, anyWellKnown},
457543 // TODO: This is broken.
458544 //{"map<string, enum>", Unmarshaler{}, `{"enumy":{"XIV":"ROMAN"}`, &pb.Mappy{Enumy: map[string]pb.Numeral{"XIV": pb.Numeral_ROMAN}}},
459545 {"map<string, enum as int>", Unmarshaler{}, `{"enumy":{"XIV":2}}`, &pb.Mappy{Enumy: map[string]pb.Numeral{"XIV": pb.Numeral_ROMAN}}},
466552 {"camelName input", Unmarshaler{}, `{"oBool":true}`, &pb.Simple{OBool: proto.Bool(true)}},
467553
468554 {"Duration", Unmarshaler{}, `{"dur":"3.000s"}`, &pb.KnownTypes{Dur: &durpb.Duration{Seconds: 3}}},
555 {"null Duration", Unmarshaler{}, `{"dur":null}`, &pb.KnownTypes{Dur: nil}},
469556 {"Timestamp", Unmarshaler{}, `{"ts":"2014-05-13T16:53:20.021Z"}`, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: 14e8, Nanos: 21e6}}},
557 {"PreEpochTimestamp", Unmarshaler{}, `{"ts":"1969-12-31T23:59:58.999999995Z"}`, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: -2, Nanos: 999999995}}},
558 {"ZeroTimeTimestamp", Unmarshaler{}, `{"ts":"0001-01-01T00:00:00Z"}`, &pb.KnownTypes{Ts: &tspb.Timestamp{Seconds: -62135596800, Nanos: 0}}},
559 {"null Timestamp", Unmarshaler{}, `{"ts":null}`, &pb.KnownTypes{Ts: nil}},
560 {"null Struct", Unmarshaler{}, `{"st": null}`, &pb.KnownTypes{St: nil}},
561 {"empty Struct", Unmarshaler{}, `{"st": {}}`, &pb.KnownTypes{St: &stpb.Struct{}}},
562 {"basic Struct", Unmarshaler{}, `{"st": {"a": "x", "b": null, "c": 3, "d": true}}`, &pb.KnownTypes{St: &stpb.Struct{Fields: map[string]*stpb.Value{
563 "a": {Kind: &stpb.Value_StringValue{"x"}},
564 "b": {Kind: &stpb.Value_NullValue{}},
565 "c": {Kind: &stpb.Value_NumberValue{3}},
566 "d": {Kind: &stpb.Value_BoolValue{true}},
567 }}}},
568 {"nested Struct", Unmarshaler{}, `{"st": {"a": {"b": 1, "c": [{"d": true}, "f"]}}}`, &pb.KnownTypes{St: &stpb.Struct{Fields: map[string]*stpb.Value{
569 "a": {Kind: &stpb.Value_StructValue{&stpb.Struct{Fields: map[string]*stpb.Value{
570 "b": {Kind: &stpb.Value_NumberValue{1}},
571 "c": {Kind: &stpb.Value_ListValue{&stpb.ListValue{Values: []*stpb.Value{
572 {Kind: &stpb.Value_StructValue{&stpb.Struct{Fields: map[string]*stpb.Value{"d": {Kind: &stpb.Value_BoolValue{true}}}}}},
573 {Kind: &stpb.Value_StringValue{"f"}},
574 }}}},
575 }}}},
576 }}}},
577 {"null ListValue", Unmarshaler{}, `{"lv": null}`, &pb.KnownTypes{Lv: nil}},
578 {"empty ListValue", Unmarshaler{}, `{"lv": []}`, &pb.KnownTypes{Lv: &stpb.ListValue{}}},
579 {"basic ListValue", Unmarshaler{}, `{"lv": ["x", null, 3, true]}`, &pb.KnownTypes{Lv: &stpb.ListValue{Values: []*stpb.Value{
580 {Kind: &stpb.Value_StringValue{"x"}},
581 {Kind: &stpb.Value_NullValue{}},
582 {Kind: &stpb.Value_NumberValue{3}},
583 {Kind: &stpb.Value_BoolValue{true}},
584 }}}},
585 {"number Value", Unmarshaler{}, `{"val":1}`, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_NumberValue{1}}}},
586 {"null Value", Unmarshaler{}, `{"val":null}`, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_NullValue{stpb.NullValue_NULL_VALUE}}}},
587 {"bool Value", Unmarshaler{}, `{"val":true}`, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_BoolValue{true}}}},
588 {"string Value", Unmarshaler{}, `{"val":"x"}`, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_StringValue{"x"}}}},
589 {"string number value", Unmarshaler{}, `{"val":"9223372036854775807"}`, &pb.KnownTypes{Val: &stpb.Value{Kind: &stpb.Value_StringValue{"9223372036854775807"}}}},
590 {"list of lists Value", Unmarshaler{}, `{"val":["x", [["y"], "z"]]}`, &pb.KnownTypes{Val: &stpb.Value{
591 Kind: &stpb.Value_ListValue{&stpb.ListValue{
592 Values: []*stpb.Value{
593 {Kind: &stpb.Value_StringValue{"x"}},
594 {Kind: &stpb.Value_ListValue{&stpb.ListValue{
595 Values: []*stpb.Value{
596 {Kind: &stpb.Value_ListValue{&stpb.ListValue{
597 Values: []*stpb.Value{{Kind: &stpb.Value_StringValue{"y"}}},
598 }}},
599 {Kind: &stpb.Value_StringValue{"z"}},
600 },
601 }}},
602 },
603 }}}}},
470604
471605 {"DoubleValue", Unmarshaler{}, `{"dbl":1.2}`, &pb.KnownTypes{Dbl: &wpb.DoubleValue{Value: 1.2}}},
472606 {"FloatValue", Unmarshaler{}, `{"flt":1.2}`, &pb.KnownTypes{Flt: &wpb.FloatValue{Value: 1.2}}},
477611 {"BoolValue", Unmarshaler{}, `{"bool":true}`, &pb.KnownTypes{Bool: &wpb.BoolValue{Value: true}}},
478612 {"StringValue", Unmarshaler{}, `{"str":"plush"}`, &pb.KnownTypes{Str: &wpb.StringValue{Value: "plush"}}},
479613 {"BytesValue", Unmarshaler{}, `{"bytes":"d293"}`, &pb.KnownTypes{Bytes: &wpb.BytesValue{Value: []byte("wow")}}},
480 // `null` is also a permissible value. Let's just test one.
481 {"null DoubleValue", Unmarshaler{}, `{"dbl":null}`, &pb.KnownTypes{Dbl: &wpb.DoubleValue{}}},
614
615 // Ensure that `null` as a value ends up with a nil pointer instead of a [type]Value struct.
616 {"null DoubleValue", Unmarshaler{}, `{"dbl":null}`, &pb.KnownTypes{Dbl: nil}},
617 {"null FloatValue", Unmarshaler{}, `{"flt":null}`, &pb.KnownTypes{Flt: nil}},
618 {"null Int64Value", Unmarshaler{}, `{"i64":null}`, &pb.KnownTypes{I64: nil}},
619 {"null UInt64Value", Unmarshaler{}, `{"u64":null}`, &pb.KnownTypes{U64: nil}},
620 {"null Int32Value", Unmarshaler{}, `{"i32":null}`, &pb.KnownTypes{I32: nil}},
621 {"null UInt32Value", Unmarshaler{}, `{"u32":null}`, &pb.KnownTypes{U32: nil}},
622 {"null BoolValue", Unmarshaler{}, `{"bool":null}`, &pb.KnownTypes{Bool: nil}},
623 {"null StringValue", Unmarshaler{}, `{"str":null}`, &pb.KnownTypes{Str: nil}},
624 {"null BytesValue", Unmarshaler{}, `{"bytes":null}`, &pb.KnownTypes{Bytes: nil}},
482625 }
483626
484627 func TestUnmarshaling(t *testing.T) {
498641 if string(exp) != string(act) {
499642 t.Errorf("%s: got [%s] want [%s]", tt.desc, act, exp)
500643 }
644 }
645 }
646
647 func TestUnmarshalNullArray(t *testing.T) {
648 var repeats pb.Repeats
649 if err := UnmarshalString(`{"rBool":null}`, &repeats); err != nil {
650 t.Fatal(err)
651 }
652 if !reflect.DeepEqual(repeats, pb.Repeats{}) {
653 t.Errorf("got non-nil fields in [%#v]", repeats)
654 }
655 }
656
657 func TestUnmarshalNullObject(t *testing.T) {
658 var maps pb.Maps
659 if err := UnmarshalString(`{"mInt64Str":null}`, &maps); err != nil {
660 t.Fatal(err)
661 }
662 if !reflect.DeepEqual(maps, pb.Maps{}) {
663 t.Errorf("got non-nil fields in [%#v]", maps)
501664 }
502665 }
503666
556719 }
557720 }
558721 }
722
723 func TestUnmarshalJSONPBUnmarshaler(t *testing.T) {
724 rawJson := `{ "foo": "bar", "baz": [0, 1, 2, 3] }`
725 var msg dynamicMessage
726 if err := Unmarshal(strings.NewReader(rawJson), &msg); err != nil {
727 t.Errorf("an unexpected error occurred when parsing into JSONPBUnmarshaler: %v", err)
728 }
729 if msg.rawJson != rawJson {
730 t.Errorf("message contents not set correctly after unmarshalling JSON: got %s, wanted %s", msg.rawJson, rawJson)
731 }
732 }
733
734 func TestUnmarshalAnyJSONPBUnmarshaler(t *testing.T) {
735 rawJson := `{ "@type": "blah.com/` + dynamicMessageName + `", "foo": "bar", "baz": [0, 1, 2, 3] }`
736 var got anypb.Any
737 if err := Unmarshal(strings.NewReader(rawJson), &got); err != nil {
738 t.Errorf("an unexpected error occurred when parsing into JSONPBUnmarshaler: %v", err)
739 }
740
741 dm := &dynamicMessage{rawJson: `{"baz":[0,1,2,3],"foo":"bar"}`}
742 var want anypb.Any
743 if b, err := proto.Marshal(dm); err != nil {
744 t.Errorf("an unexpected error occurred when marshaling message: %v", err)
745 } else {
746 want.TypeUrl = "blah.com/" + dynamicMessageName
747 want.Value = b
748 }
749
750 if !proto.Equal(&got, &want) {
751 t.Errorf("message contents not set correctly after unmarshalling JSON: got %s, wanted %s", got, want)
752 }
753 }
754
755 const (
756 dynamicMessageName = "google.protobuf.jsonpb.testing.dynamicMessage"
757 )
758
759 func init() {
760 // we register the custom type below so that we can use it in Any types
761 proto.RegisterType((*dynamicMessage)(nil), dynamicMessageName)
762 }
763
764 // dynamicMessage implements protobuf.Message but is not a normal generated message type.
765 // It provides implementations of JSONPBMarshaler and JSONPBUnmarshaler for JSON support.
766 type dynamicMessage struct {
767 rawJson string `protobuf:"bytes,1,opt,name=rawJson"`
768 }
769
770 func (m *dynamicMessage) Reset() {
771 m.rawJson = "{}"
772 }
773
774 func (m *dynamicMessage) String() string {
775 return m.rawJson
776 }
777
778 func (m *dynamicMessage) ProtoMessage() {
779 }
780
781 func (m *dynamicMessage) MarshalJSONPB(jm *Marshaler) ([]byte, error) {
782 return []byte(m.rawJson), nil
783 }
784
785 func (m *dynamicMessage) UnmarshalJSONPB(jum *Unmarshaler, js []byte) error {
786 m.rawJson = string(js)
787 return nil
788 }
0 // Code generated by protoc-gen-go.
0 // Code generated by protoc-gen-go. DO NOT EDIT.
11 // source: more_test_objects.proto
2 // DO NOT EDIT!
32
43 /*
54 Package jsonpb is a generated protocol buffer package.
109
1110 It has these top-level messages:
1211 Simple3
12 SimpleSlice3
13 SimpleMap3
14 SimpleNull3
1315 Mappy
1416 Simple
17 NonFinites
1518 Repeats
1619 Widget
1720 Maps
6972 func (m *Simple3) String() string { return proto.CompactTextString(m) }
7073 func (*Simple3) ProtoMessage() {}
7174 func (*Simple3) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
75
76 func (m *Simple3) GetDub() float64 {
77 if m != nil {
78 return m.Dub
79 }
80 return 0
81 }
82
83 type SimpleSlice3 struct {
84 Slices []string `protobuf:"bytes,1,rep,name=slices" json:"slices,omitempty"`
85 }
86
87 func (m *SimpleSlice3) Reset() { *m = SimpleSlice3{} }
88 func (m *SimpleSlice3) String() string { return proto.CompactTextString(m) }
89 func (*SimpleSlice3) ProtoMessage() {}
90 func (*SimpleSlice3) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
91
92 func (m *SimpleSlice3) GetSlices() []string {
93 if m != nil {
94 return m.Slices
95 }
96 return nil
97 }
98
99 type SimpleMap3 struct {
100 Stringy map[string]string `protobuf:"bytes,1,rep,name=stringy" json:"stringy,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
101 }
102
103 func (m *SimpleMap3) Reset() { *m = SimpleMap3{} }
104 func (m *SimpleMap3) String() string { return proto.CompactTextString(m) }
105 func (*SimpleMap3) ProtoMessage() {}
106 func (*SimpleMap3) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
107
108 func (m *SimpleMap3) GetStringy() map[string]string {
109 if m != nil {
110 return m.Stringy
111 }
112 return nil
113 }
114
115 type SimpleNull3 struct {
116 Simple *Simple3 `protobuf:"bytes,1,opt,name=simple" json:"simple,omitempty"`
117 }
118
119 func (m *SimpleNull3) Reset() { *m = SimpleNull3{} }
120 func (m *SimpleNull3) String() string { return proto.CompactTextString(m) }
121 func (*SimpleNull3) ProtoMessage() {}
122 func (*SimpleNull3) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
123
124 func (m *SimpleNull3) GetSimple() *Simple3 {
125 if m != nil {
126 return m.Simple
127 }
128 return nil
129 }
72130
73131 type Mappy struct {
74132 Nummy map[int64]int32 `protobuf:"bytes,1,rep,name=nummy" json:"nummy,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
86144 func (m *Mappy) Reset() { *m = Mappy{} }
87145 func (m *Mappy) String() string { return proto.CompactTextString(m) }
88146 func (*Mappy) ProtoMessage() {}
89 func (*Mappy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
147 func (*Mappy) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
90148
91149 func (m *Mappy) GetNummy() map[int64]int32 {
92150 if m != nil {
160218
161219 func init() {
162220 proto.RegisterType((*Simple3)(nil), "jsonpb.Simple3")
221 proto.RegisterType((*SimpleSlice3)(nil), "jsonpb.SimpleSlice3")
222 proto.RegisterType((*SimpleMap3)(nil), "jsonpb.SimpleMap3")
223 proto.RegisterType((*SimpleNull3)(nil), "jsonpb.SimpleNull3")
163224 proto.RegisterType((*Mappy)(nil), "jsonpb.Mappy")
164225 proto.RegisterEnum("jsonpb.Numeral", Numeral_name, Numeral_value)
165226 }
167228 func init() { proto.RegisterFile("more_test_objects.proto", fileDescriptor0) }
168229
169230 var fileDescriptor0 = []byte{
170 // 444 bytes of a gzipped FileDescriptorProto
171 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x8c, 0x94, 0xc1, 0x6b, 0xdb, 0x30,
172 0x14, 0x87, 0xe7, 0xa4, 0x4e, 0xec, 0x17, 0xba, 0x19, 0x31, 0x98, 0x58, 0x2f, 0xa1, 0x30, 0x08,
173 0x83, 0xf9, 0x90, 0x8c, 0xad, 0x6c, 0xa7, 0x74, 0xf4, 0x50, 0x46, 0x1d, 0x70, 0x09, 0x3b, 0x96,
174 0x78, 0x13, 0x65, 0x9e, 0x6d, 0x19, 0xdb, 0x1a, 0xe8, 0x8f, 0x1f, 0x8c, 0x27, 0xcb, 0xb5, 0x6c,
175 0x14, 0xd2, 0x9b, 0xcc, 0xef, 0xfb, 0xf2, 0x9e, 0xf4, 0x1e, 0x81, 0x37, 0x39, 0xaf, 0xd8, 0x43,
176 0xc3, 0xea, 0xe6, 0x81, 0x27, 0x29, 0xfb, 0xd9, 0xd4, 0x61, 0x59, 0xf1, 0x86, 0x93, 0x59, 0x5a,
177 0xf3, 0xa2, 0x4c, 0x2e, 0x2f, 0x60, 0x7e, 0xff, 0x3b, 0x2f, 0x33, 0xb6, 0x21, 0x01, 0x4c, 0x7f,
178 0x89, 0x84, 0x3a, 0x4b, 0x67, 0xe5, 0xc4, 0x78, 0xbc, 0xfc, 0xe7, 0x81, 0x7b, 0x77, 0x28, 0x4b,
179 0x49, 0x42, 0x70, 0x0b, 0x91, 0xe7, 0x92, 0x3a, 0xcb, 0xe9, 0x6a, 0xb1, 0xa6, 0x61, 0xab, 0x87,
180 0x2a, 0x0d, 0x23, 0x8c, 0x6e, 0x8a, 0xa6, 0x92, 0x71, 0x8b, 0x21, 0x5f, 0x37, 0x55, 0x25, 0xe9,
181 0xc4, 0xc6, 0xdf, 0x63, 0xa4, 0x79, 0x85, 0x21, 0xcf, 0x93, 0x34, 0x95, 0x74, 0x6a, 0xe3, 0x77,
182 0x18, 0x69, 0x5e, 0x61, 0xc8, 0x27, 0xe2, 0xf1, 0x51, 0xd2, 0x33, 0x1b, 0x7f, 0x8d, 0x91, 0xe6,
183 0x15, 0xa6, 0x78, 0xce, 0x33, 0x49, 0x5d, 0x2b, 0x8f, 0x51, 0xc7, 0xe3, 0x19, 0x79, 0x56, 0x88,
184 0x5c, 0xd2, 0x99, 0x8d, 0xbf, 0xc1, 0x48, 0xf3, 0x0a, 0x23, 0x9f, 0xc1, 0xab, 0x37, 0xeb, 0xb6,
185 0xc4, 0x5c, 0x29, 0x17, 0xa3, 0x2b, 0xeb, 0xb4, 0xb5, 0x9e, 0x60, 0x25, 0x7e, 0xfa, 0xd8, 0x8a,
186 0x9e, 0x55, 0xd4, 0x69, 0x27, 0xea, 0x4f, 0x14, 0x45, 0x57, 0xd1, 0xb7, 0x89, 0xfb, 0x61, 0x45,
187 0x61, 0x54, 0x14, 0x5d, 0x45, 0xb0, 0x8a, 0xc3, 0x8a, 0x1d, 0xfc, 0xf6, 0x0a, 0xa0, 0x1f, 0x34,
188 0x6e, 0xcb, 0x1f, 0x26, 0xd5, 0xb6, 0x4c, 0x63, 0x3c, 0x92, 0xd7, 0xe0, 0xfe, 0x3d, 0x64, 0x82,
189 0xd1, 0xc9, 0xd2, 0x59, 0xb9, 0x71, 0xfb, 0xf1, 0x65, 0x72, 0xe5, 0xa0, 0xd9, 0x8f, 0xdc, 0x34,
190 0x7d, 0x8b, 0xe9, 0x9b, 0xe6, 0x2d, 0x40, 0x3f, 0x7c, 0xd3, 0x74, 0x5b, 0xf3, 0x9d, 0x69, 0x2e,
191 0xd6, 0xaf, 0xba, 0x9b, 0xe8, 0x9d, 0x1e, 0x35, 0xd1, 0xef, 0xc5, 0xa9, 0xf6, 0xfd, 0xb1, 0xf9,
192 0xf4, 0x20, 0xa6, 0xe9, 0x59, 0x4c, 0x6f, 0xd4, 0x7e, 0xbf, 0x2b, 0x96, 0x8b, 0x0f, 0xda, 0x7f,
193 0xd9, 0xb7, 0x1f, 0x89, 0x9c, 0x55, 0x87, 0xcc, 0xfc, 0xa9, 0xaf, 0x70, 0x3e, 0xd8, 0x21, 0xcb,
194 0x63, 0x1c, 0xef, 0x03, 0x65, 0x73, 0xaa, 0xa7, 0xae, 0x3f, 0x96, 0xf7, 0xc7, 0x2a, 0x9f, 0x3f,
195 0x47, 0x3e, 0x56, 0xf9, 0xec, 0x84, 0xfc, 0xfe, 0x03, 0xcc, 0xf5, 0x4b, 0x90, 0x05, 0xcc, 0xf7,
196 0xd1, 0xf7, 0x68, 0xf7, 0x23, 0x0a, 0x5e, 0x10, 0x80, 0xd9, 0x36, 0xde, 0x5e, 0xdf, 0x7e, 0x0b,
197 0x1c, 0xe2, 0x83, 0x1b, 0xef, 0xee, 0xb6, 0x51, 0x30, 0x49, 0x66, 0xea, 0xaf, 0x6d, 0xf3, 0x3f,
198 0x00, 0x00, 0xff, 0xff, 0xa2, 0x4b, 0xe1, 0x77, 0xf5, 0x04, 0x00, 0x00,
199 }
231 // 526 bytes of a gzipped FileDescriptorProto
232 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x94, 0xdd, 0x6b, 0xdb, 0x3c,
233 0x14, 0x87, 0x5f, 0x27, 0xf5, 0xd7, 0x49, 0xfb, 0x2e, 0x88, 0xb1, 0x99, 0xf4, 0x62, 0xc5, 0xb0,
234 0xad, 0x0c, 0xe6, 0x8b, 0x78, 0x74, 0x5d, 0x77, 0x95, 0x8e, 0x5e, 0x94, 0x11, 0x07, 0x1c, 0xc2,
235 0x2e, 0x4b, 0xdc, 0x99, 0x90, 0xcc, 0x5f, 0xd8, 0xd6, 0xc0, 0xd7, 0xfb, 0xbb, 0x07, 0xe3, 0x48,
236 0x72, 0x2d, 0x07, 0x85, 0x6c, 0x77, 0x52, 0x7e, 0xcf, 0xe3, 0x73, 0x24, 0x1d, 0x02, 0x2f, 0xd3,
237 0xbc, 0x8c, 0x1f, 0xea, 0xb8, 0xaa, 0x1f, 0xf2, 0x68, 0x17, 0x3f, 0xd6, 0x95, 0x57, 0x94, 0x79,
238 0x9d, 0x13, 0x63, 0x57, 0xe5, 0x59, 0x11, 0xb9, 0xe7, 0x60, 0x2e, 0xb7, 0x69, 0x91, 0xc4, 0x3e,
239 0x19, 0xc3, 0xf0, 0x3b, 0x8d, 0x1c, 0xed, 0x42, 0xbb, 0xd4, 0x42, 0x5c, 0xba, 0x6f, 0xe0, 0x94,
240 0x87, 0xcb, 0x64, 0xfb, 0x18, 0xfb, 0xe4, 0x05, 0x18, 0x15, 0xae, 0x2a, 0x47, 0xbb, 0x18, 0x5e,
241 0xda, 0xa1, 0xd8, 0xb9, 0xbf, 0x34, 0x00, 0x0e, 0xce, 0xd7, 0x85, 0x4f, 0x3e, 0x81, 0x59, 0xd5,
242 0xe5, 0x36, 0xdb, 0x34, 0x8c, 0x1b, 0x4d, 0x5f, 0x79, 0xbc, 0x9a, 0xd7, 0x41, 0xde, 0x92, 0x13,
243 0x77, 0x59, 0x5d, 0x36, 0x61, 0xcb, 0x4f, 0x6e, 0xe0, 0x54, 0x0e, 0xb0, 0xa7, 0x1f, 0x71, 0xc3,
244 0x7a, 0xb2, 0x43, 0x5c, 0x92, 0xe7, 0xa0, 0xff, 0x5c, 0x27, 0x34, 0x76, 0x06, 0xec, 0x37, 0xbe,
245 0xb9, 0x19, 0x5c, 0x6b, 0xee, 0x15, 0x8c, 0xf8, 0xf7, 0x03, 0x9a, 0x24, 0x3e, 0x79, 0x0b, 0x46,
246 0xc5, 0xb6, 0xcc, 0x1e, 0x4d, 0x9f, 0xf5, 0x9b, 0xf0, 0x43, 0x11, 0xbb, 0xbf, 0x2d, 0xd0, 0xe7,
247 0xeb, 0xa2, 0x68, 0x88, 0x07, 0x7a, 0x46, 0xd3, 0xb4, 0x6d, 0xdb, 0x69, 0x0d, 0x96, 0x7a, 0x01,
248 0x46, 0xbc, 0x5f, 0x8e, 0x21, 0x5f, 0xd5, 0x65, 0xd9, 0x38, 0x03, 0x15, 0xbf, 0xc4, 0x48, 0xf0,
249 0x0c, 0x43, 0x3e, 0x8f, 0x76, 0xbb, 0xc6, 0x19, 0xaa, 0xf8, 0x05, 0x46, 0x82, 0x67, 0x18, 0xf2,
250 0x11, 0xdd, 0x6c, 0x1a, 0xe7, 0x44, 0xc5, 0xdf, 0x62, 0x24, 0x78, 0x86, 0x31, 0x3e, 0xcf, 0x93,
251 0xc6, 0xd1, 0x95, 0x3c, 0x46, 0x2d, 0x8f, 0x6b, 0xe4, 0xe3, 0x8c, 0xa6, 0x8d, 0x63, 0xa8, 0xf8,
252 0x3b, 0x8c, 0x04, 0xcf, 0x30, 0xf2, 0x11, 0xac, 0xca, 0x9f, 0xf2, 0x12, 0x26, 0x53, 0xce, 0xf7,
253 0x8e, 0x2c, 0x52, 0x6e, 0x3d, 0xc1, 0x4c, 0xbc, 0xfa, 0xc0, 0x45, 0x4b, 0x29, 0x8a, 0xb4, 0x15,
254 0xc5, 0x16, 0x45, 0xda, 0x56, 0xb4, 0x55, 0xe2, 0xaa, 0x5f, 0x91, 0x4a, 0x15, 0x69, 0x5b, 0x11,
255 0x94, 0x62, 0xbf, 0x62, 0x0b, 0x4f, 0xae, 0x01, 0xba, 0x87, 0x96, 0xe7, 0x6f, 0xa8, 0x98, 0x3f,
256 0x5d, 0x9a, 0x3f, 0x34, 0xbb, 0x27, 0xff, 0x97, 0xc9, 0x9d, 0xdc, 0x03, 0x74, 0x8f, 0x2f, 0x9b,
257 0x3a, 0x37, 0x5f, 0xcb, 0xa6, 0x62, 0x92, 0xfb, 0x4d, 0x74, 0x73, 0x71, 0xac, 0x7d, 0x7b, 0xdf,
258 0x7c, 0xba, 0x10, 0xd9, 0xb4, 0x14, 0xa6, 0xb5, 0xd7, 0x7e, 0x37, 0x2b, 0x8a, 0x83, 0xf7, 0xda,
259 0xff, 0xbf, 0x6b, 0x3f, 0xa0, 0x69, 0x5c, 0xae, 0x13, 0xf9, 0x53, 0x9f, 0xe1, 0xac, 0x37, 0x43,
260 0x8a, 0xcb, 0x38, 0xdc, 0x07, 0xca, 0xf2, 0xab, 0x1e, 0x3b, 0xfe, 0xbe, 0xbc, 0x3a, 0x54, 0xf9,
261 0xec, 0x6f, 0xe4, 0x43, 0x95, 0x4f, 0x8e, 0xc8, 0xef, 0xde, 0x83, 0x29, 0x6e, 0x82, 0x8c, 0xc0,
262 0x5c, 0x05, 0x5f, 0x83, 0xc5, 0xb7, 0x60, 0xfc, 0x1f, 0x01, 0x30, 0x66, 0xe1, 0xec, 0xf6, 0xfe,
263 0xcb, 0x58, 0x23, 0x36, 0xe8, 0xe1, 0x62, 0x3e, 0x0b, 0xc6, 0x83, 0xc8, 0x60, 0x7f, 0xe0, 0xfe,
264 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xdc, 0x84, 0x34, 0xaf, 0xdb, 0x05, 0x00, 0x00,
265 }
3636 double dub = 1;
3737 }
3838
39 message SimpleSlice3 {
40 repeated string slices = 1;
41 }
42
43 message SimpleMap3 {
44 map<string,string> stringy = 1;
45 }
46
47 message SimpleNull3 {
48 Simple3 simple = 1;
49 }
50
3951 enum Numeral {
4052 UNKNOWN = 0;
4153 ARABIC = 1;
0 // Code generated by protoc-gen-go.
0 // Code generated by protoc-gen-go. DO NOT EDIT.
11 // source: test_objects.proto
2 // DO NOT EDIT!
32
43 package jsonpb
54
5251 *x = Widget_Color(value)
5352 return nil
5453 }
55 func (Widget_Color) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{2, 0} }
54 func (Widget_Color) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{3, 0} }
5655
5756 // Test message for holding primitive types.
5857 type Simple struct {
152151 return nil
153152 }
154153
154 // Test message for holding special non-finites primitives.
155 type NonFinites struct {
156 FNan *float32 `protobuf:"fixed32,1,opt,name=f_nan,json=fNan" json:"f_nan,omitempty"`
157 FPinf *float32 `protobuf:"fixed32,2,opt,name=f_pinf,json=fPinf" json:"f_pinf,omitempty"`
158 FNinf *float32 `protobuf:"fixed32,3,opt,name=f_ninf,json=fNinf" json:"f_ninf,omitempty"`
159 DNan *float64 `protobuf:"fixed64,4,opt,name=d_nan,json=dNan" json:"d_nan,omitempty"`
160 DPinf *float64 `protobuf:"fixed64,5,opt,name=d_pinf,json=dPinf" json:"d_pinf,omitempty"`
161 DNinf *float64 `protobuf:"fixed64,6,opt,name=d_ninf,json=dNinf" json:"d_ninf,omitempty"`
162 XXX_unrecognized []byte `json:"-"`
163 }
164
165 func (m *NonFinites) Reset() { *m = NonFinites{} }
166 func (m *NonFinites) String() string { return proto.CompactTextString(m) }
167 func (*NonFinites) ProtoMessage() {}
168 func (*NonFinites) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} }
169
170 func (m *NonFinites) GetFNan() float32 {
171 if m != nil && m.FNan != nil {
172 return *m.FNan
173 }
174 return 0
175 }
176
177 func (m *NonFinites) GetFPinf() float32 {
178 if m != nil && m.FPinf != nil {
179 return *m.FPinf
180 }
181 return 0
182 }
183
184 func (m *NonFinites) GetFNinf() float32 {
185 if m != nil && m.FNinf != nil {
186 return *m.FNinf
187 }
188 return 0
189 }
190
191 func (m *NonFinites) GetDNan() float64 {
192 if m != nil && m.DNan != nil {
193 return *m.DNan
194 }
195 return 0
196 }
197
198 func (m *NonFinites) GetDPinf() float64 {
199 if m != nil && m.DPinf != nil {
200 return *m.DPinf
201 }
202 return 0
203 }
204
205 func (m *NonFinites) GetDNinf() float64 {
206 if m != nil && m.DNinf != nil {
207 return *m.DNinf
208 }
209 return 0
210 }
211
155212 // Test message for holding repeated primitives.
156213 type Repeats struct {
157214 RBool []bool `protobuf:"varint,1,rep,name=r_bool,json=rBool" json:"r_bool,omitempty"`
171228 func (m *Repeats) Reset() { *m = Repeats{} }
172229 func (m *Repeats) String() string { return proto.CompactTextString(m) }
173230 func (*Repeats) ProtoMessage() {}
174 func (*Repeats) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} }
231 func (*Repeats) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} }
175232
176233 func (m *Repeats) GetRBool() []bool {
177234 if m != nil {
264321 func (m *Widget) Reset() { *m = Widget{} }
265322 func (m *Widget) String() string { return proto.CompactTextString(m) }
266323 func (*Widget) ProtoMessage() {}
267 func (*Widget) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} }
324 func (*Widget) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} }
268325
269326 func (m *Widget) GetColor() Widget_Color {
270327 if m != nil && m.Color != nil {
317374 func (m *Maps) Reset() { *m = Maps{} }
318375 func (m *Maps) String() string { return proto.CompactTextString(m) }
319376 func (*Maps) ProtoMessage() {}
320 func (*Maps) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} }
377 func (*Maps) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} }
321378
322379 func (m *Maps) GetMInt64Str() map[int64]string {
323380 if m != nil {
346403 func (m *MsgWithOneof) Reset() { *m = MsgWithOneof{} }
347404 func (m *MsgWithOneof) String() string { return proto.CompactTextString(m) }
348405 func (*MsgWithOneof) ProtoMessage() {}
349 func (*MsgWithOneof) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} }
406 func (*MsgWithOneof) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} }
350407
351408 type isMsgWithOneof_Union interface {
352409 isMsgWithOneof_Union()
359416 Salary int64 `protobuf:"varint,2,opt,name=salary,oneof"`
360417 }
361418 type MsgWithOneof_Country struct {
362 Country string `protobuf:"bytes,3,opt,name=Country,json=country,oneof"`
419 Country string `protobuf:"bytes,3,opt,name=Country,oneof"`
363420 }
364421 type MsgWithOneof_HomeAddress struct {
365422 HomeAddress string `protobuf:"bytes,4,opt,name=home_address,json=homeAddress,oneof"`
509566 func (m *Real) Reset() { *m = Real{} }
510567 func (m *Real) String() string { return proto.CompactTextString(m) }
511568 func (*Real) ProtoMessage() {}
512 func (*Real) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} }
569 func (*Real) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} }
513570
514571 var extRange_Real = []proto.ExtensionRange{
515572 {100, 536870911},
535592 func (m *Complex) Reset() { *m = Complex{} }
536593 func (m *Complex) String() string { return proto.CompactTextString(m) }
537594 func (*Complex) ProtoMessage() {}
538 func (*Complex) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} }
595 func (*Complex) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} }
539596
540597 var extRange_Complex = []proto.ExtensionRange{
541598 {100, 536870911},
558615 Field: 123,
559616 Name: "jsonpb.Complex.real_extension",
560617 Tag: "bytes,123,opt,name=real_extension,json=realExtension",
618 Filename: "test_objects.proto",
561619 }
562620
563621 type KnownTypes struct {
565623 Dur *google_protobuf1.Duration `protobuf:"bytes,1,opt,name=dur" json:"dur,omitempty"`
566624 St *google_protobuf2.Struct `protobuf:"bytes,12,opt,name=st" json:"st,omitempty"`
567625 Ts *google_protobuf3.Timestamp `protobuf:"bytes,2,opt,name=ts" json:"ts,omitempty"`
626 Lv *google_protobuf2.ListValue `protobuf:"bytes,15,opt,name=lv" json:"lv,omitempty"`
627 Val *google_protobuf2.Value `protobuf:"bytes,16,opt,name=val" json:"val,omitempty"`
568628 Dbl *google_protobuf4.DoubleValue `protobuf:"bytes,3,opt,name=dbl" json:"dbl,omitempty"`
569629 Flt *google_protobuf4.FloatValue `protobuf:"bytes,4,opt,name=flt" json:"flt,omitempty"`
570630 I64 *google_protobuf4.Int64Value `protobuf:"bytes,5,opt,name=i64" json:"i64,omitempty"`
580640 func (m *KnownTypes) Reset() { *m = KnownTypes{} }
581641 func (m *KnownTypes) String() string { return proto.CompactTextString(m) }
582642 func (*KnownTypes) ProtoMessage() {}
583 func (*KnownTypes) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} }
643 func (*KnownTypes) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} }
584644
585645 func (m *KnownTypes) GetAn() *google_protobuf.Any {
586646 if m != nil {
606666 func (m *KnownTypes) GetTs() *google_protobuf3.Timestamp {
607667 if m != nil {
608668 return m.Ts
669 }
670 return nil
671 }
672
673 func (m *KnownTypes) GetLv() *google_protobuf2.ListValue {
674 if m != nil {
675 return m.Lv
676 }
677 return nil
678 }
679
680 func (m *KnownTypes) GetVal() *google_protobuf2.Value {
681 if m != nil {
682 return m.Val
609683 }
610684 return nil
611685 }
679753 Field: 124,
680754 Name: "jsonpb.name",
681755 Tag: "bytes,124,opt,name=name",
756 Filename: "test_objects.proto",
682757 }
683758
684759 func init() {
685760 proto.RegisterType((*Simple)(nil), "jsonpb.Simple")
761 proto.RegisterType((*NonFinites)(nil), "jsonpb.NonFinites")
686762 proto.RegisterType((*Repeats)(nil), "jsonpb.Repeats")
687763 proto.RegisterType((*Widget)(nil), "jsonpb.Widget")
688764 proto.RegisterType((*Maps)(nil), "jsonpb.Maps")
698774 func init() { proto.RegisterFile("test_objects.proto", fileDescriptor1) }
699775
700776 var fileDescriptor1 = []byte{
701 // 1055 bytes of a gzipped FileDescriptorProto
702 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x74, 0x95, 0x51, 0x73, 0xdb, 0x44,
703 0x10, 0xc7, 0x23, 0xc9, 0x96, 0xec, 0x73, 0x12, 0xcc, 0x4d, 0x4a, 0x15, 0x13, 0x40, 0x63, 0x4a,
704 0x11, 0x85, 0xba, 0x83, 0xe2, 0xf1, 0x30, 0x85, 0x97, 0xa4, 0x31, 0x94, 0x81, 0x94, 0x99, 0x4b,
705 0x43, 0x1f, 0x3d, 0x72, 0x7c, 0x71, 0x55, 0x64, 0x9d, 0xe7, 0xee, 0x44, 0xea, 0x81, 0x87, 0x3c,
706 0xf3, 0xcc, 0x57, 0x80, 0x8f, 0xc0, 0x27, 0xe2, 0x83, 0x74, 0x76, 0x4f, 0xb2, 0x12, 0x3b, 0x7e,
707 0x8a, 0xf7, 0xf6, 0xbf, 0xff, 0x9c, 0x7e, 0xb7, 0x77, 0x4b, 0xa8, 0xe6, 0x4a, 0x8f, 0xc4, 0xf8,
708 0x0d, 0xbf, 0xd0, 0xaa, 0x37, 0x97, 0x42, 0x0b, 0xea, 0xbe, 0x51, 0x22, 0x9b, 0x8f, 0x3b, 0xfb,
709 0x53, 0x21, 0xa6, 0x29, 0x7f, 0x82, 0xab, 0xe3, 0xfc, 0xf2, 0x49, 0x9c, 0x2d, 0x8c, 0xa4, 0xf3,
710 0xf1, 0x6a, 0x6a, 0x92, 0xcb, 0x58, 0x27, 0x22, 0x2b, 0xf2, 0x07, 0xab, 0x79, 0xa5, 0x65, 0x7e,
711 0xa1, 0x8b, 0xec, 0x27, 0xab, 0x59, 0x9d, 0xcc, 0xb8, 0xd2, 0xf1, 0x6c, 0xbe, 0xc9, 0xfe, 0x4a,
712 0xc6, 0xf3, 0x39, 0x97, 0xc5, 0x0e, 0xbb, 0xff, 0xd8, 0xc4, 0x3d, 0x4b, 0x66, 0xf3, 0x94, 0xd3,
713 0x7b, 0xc4, 0x15, 0xa3, 0xb1, 0x10, 0xa9, 0x6f, 0x05, 0x56, 0xd8, 0x60, 0x75, 0x71, 0x2c, 0x44,
714 0x4a, 0xef, 0x13, 0x4f, 0x8c, 0x92, 0x4c, 0x1f, 0x46, 0xbe, 0x1d, 0x58, 0x61, 0x9d, 0xb9, 0xe2,
715 0x47, 0x88, 0x96, 0x89, 0x41, 0xdf, 0x77, 0x02, 0x2b, 0x74, 0x4c, 0x62, 0xd0, 0xa7, 0xfb, 0xa4,
716 0x21, 0x46, 0xb9, 0x29, 0xa9, 0x05, 0x56, 0xb8, 0xc3, 0x3c, 0x71, 0x8e, 0x61, 0x95, 0x1a, 0xf4,
717 0xfd, 0x7a, 0x60, 0x85, 0xb5, 0x22, 0x55, 0x56, 0x29, 0x53, 0xe5, 0x06, 0x56, 0xf8, 0x3e, 0xf3,
718 0xc4, 0xd9, 0x8d, 0x2a, 0x65, 0xaa, 0xbc, 0xc0, 0x0a, 0x69, 0x91, 0x1a, 0xf4, 0xcd, 0x26, 0x2e,
719 0x53, 0x11, 0x6b, 0xbf, 0x11, 0x58, 0xa1, 0xcd, 0x5c, 0xf1, 0x3d, 0x44, 0xa6, 0x66, 0x22, 0xf2,
720 0x71, 0xca, 0xfd, 0x66, 0x60, 0x85, 0x16, 0xf3, 0xc4, 0x09, 0x86, 0x85, 0x9d, 0x96, 0x49, 0x36,
721 0xf5, 0x49, 0x60, 0x85, 0x4d, 0xb0, 0xc3, 0xd0, 0xd8, 0x8d, 0x17, 0x9a, 0x2b, 0xbf, 0x15, 0x58,
722 0xe1, 0x36, 0x73, 0xc5, 0x31, 0x44, 0xdd, 0x7f, 0x6d, 0xe2, 0x31, 0x3e, 0xe7, 0xb1, 0x56, 0x00,
723 0x4a, 0x96, 0xa0, 0x1c, 0x00, 0x25, 0x4b, 0x50, 0x72, 0x09, 0xca, 0x01, 0x50, 0x72, 0x09, 0x4a,
724 0x2e, 0x41, 0x39, 0x00, 0x4a, 0x2e, 0x41, 0xc9, 0x0a, 0x94, 0x03, 0xa0, 0x64, 0x05, 0x4a, 0x56,
725 0xa0, 0x1c, 0x00, 0x25, 0x2b, 0x50, 0xb2, 0x02, 0xe5, 0x00, 0x28, 0x79, 0x76, 0xa3, 0x6a, 0x09,
726 0xca, 0x01, 0x50, 0xb2, 0x02, 0x25, 0x97, 0xa0, 0x1c, 0x00, 0x25, 0x97, 0xa0, 0x64, 0x05, 0xca,
727 0x01, 0x50, 0xb2, 0x02, 0x25, 0x2b, 0x50, 0x0e, 0x80, 0x92, 0x15, 0x28, 0xb9, 0x04, 0xe5, 0x00,
728 0x28, 0x69, 0x40, 0xfd, 0x67, 0x13, 0xf7, 0x55, 0x32, 0x99, 0x72, 0x4d, 0x1f, 0x91, 0xfa, 0x85,
729 0x48, 0x85, 0xc4, 0x7e, 0xda, 0x8d, 0xf6, 0x7a, 0xe6, 0x36, 0xf4, 0x4c, 0xba, 0xf7, 0x0c, 0x72,
730 0xcc, 0x48, 0xe8, 0x63, 0xf0, 0x33, 0x6a, 0x80, 0xb7, 0x49, 0xed, 0x4a, 0xfc, 0x4b, 0x1f, 0x12,
731 0x57, 0x61, 0xd7, 0xe2, 0x01, 0xb6, 0xa2, 0xdd, 0x52, 0x6d, 0x7a, 0x99, 0x15, 0x59, 0xfa, 0x85,
732 0x01, 0x82, 0x4a, 0xd8, 0xe7, 0xba, 0x12, 0x00, 0x15, 0x52, 0x4f, 0x9a, 0x03, 0xf6, 0xf7, 0xd0,
733 0xf3, 0xbd, 0x52, 0x59, 0x9c, 0x3b, 0x2b, 0xf3, 0xf4, 0x2b, 0xd2, 0x94, 0xa3, 0x52, 0x7c, 0x0f,
734 0x6d, 0xd7, 0xc4, 0x0d, 0x59, 0xfc, 0xea, 0x7e, 0x46, 0xea, 0x66, 0xd3, 0x1e, 0x71, 0xd8, 0xf0,
735 0xa4, 0xbd, 0x45, 0x9b, 0xa4, 0xfe, 0x03, 0x1b, 0x0e, 0x5f, 0xb4, 0x2d, 0xda, 0x20, 0xb5, 0xe3,
736 0x9f, 0xcf, 0x87, 0x6d, 0xbb, 0xfb, 0xb7, 0x4d, 0x6a, 0xa7, 0xf1, 0x5c, 0xd1, 0x6f, 0x49, 0x6b,
737 0x66, 0xda, 0x05, 0xd8, 0x63, 0x8f, 0xb5, 0xa2, 0x0f, 0x4b, 0x7f, 0x90, 0xf4, 0x4e, 0xb1, 0x7f,
738 0xce, 0xb4, 0x1c, 0x66, 0x5a, 0x2e, 0x58, 0x73, 0x56, 0xc6, 0xf4, 0x88, 0xec, 0xcc, 0xb0, 0x37,
739 0xcb, 0xaf, 0xb6, 0xb1, 0xfc, 0xa3, 0xdb, 0xe5, 0xd0, 0xaf, 0xe6, 0xb3, 0x8d, 0x41, 0x6b, 0x56,
740 0xad, 0x74, 0xbe, 0x23, 0xbb, 0xb7, 0xfd, 0x69, 0x9b, 0x38, 0xbf, 0xf1, 0x05, 0x1e, 0xa3, 0xc3,
741 0xe0, 0x27, 0xdd, 0x23, 0xf5, 0xdf, 0xe3, 0x34, 0xe7, 0xf8, 0x24, 0x34, 0x99, 0x09, 0x9e, 0xda,
742 0xdf, 0x58, 0x9d, 0x17, 0xa4, 0xbd, 0x6a, 0x7f, 0xb3, 0xbe, 0x61, 0xea, 0x1f, 0xdc, 0xac, 0x5f,
743 0x3f, 0x94, 0xca, 0xaf, 0xfb, 0x97, 0x45, 0xb6, 0x4f, 0xd5, 0xf4, 0x55, 0xa2, 0x5f, 0xff, 0x92,
744 0x71, 0x71, 0x49, 0x3f, 0x20, 0x75, 0x9d, 0xe8, 0x94, 0xa3, 0x5d, 0xf3, 0xf9, 0x16, 0x33, 0x21,
745 0xf5, 0x89, 0xab, 0xe2, 0x34, 0x96, 0x0b, 0xf4, 0x74, 0x9e, 0x6f, 0xb1, 0x22, 0xa6, 0x1d, 0xe2,
746 0x3d, 0x13, 0x39, 0xec, 0x04, 0x1f, 0x2a, 0xa8, 0xf1, 0x2e, 0xcc, 0x02, 0xfd, 0x94, 0x6c, 0xbf,
747 0x16, 0x33, 0x3e, 0x8a, 0x27, 0x13, 0xc9, 0x95, 0xc2, 0xf7, 0x0a, 0x04, 0x2d, 0x58, 0x3d, 0x32,
748 0x8b, 0xc7, 0x1e, 0xa9, 0xe7, 0x59, 0x22, 0xb2, 0xee, 0x43, 0x52, 0x63, 0x3c, 0x4e, 0xab, 0xcf,
749 0xb7, 0xf0, 0x65, 0x31, 0xc1, 0xa3, 0x46, 0x63, 0xd2, 0xbe, 0xbe, 0xbe, 0xbe, 0xb6, 0xbb, 0x57,
750 0xf0, 0x1f, 0xe1, 0x4b, 0xde, 0xd2, 0x03, 0xd2, 0x4c, 0x66, 0xf1, 0x34, 0xc9, 0x60, 0x67, 0x46,
751 0x5e, 0x2d, 0x54, 0x25, 0xd1, 0x09, 0xd9, 0x95, 0x3c, 0x4e, 0x47, 0xfc, 0xad, 0xe6, 0x99, 0x4a,
752 0x44, 0x46, 0xb7, 0xab, 0x96, 0x8a, 0x53, 0xff, 0x8f, 0xdb, 0x3d, 0x59, 0xd8, 0xb3, 0x1d, 0x28,
753 0x1a, 0x96, 0x35, 0xdd, 0xff, 0x6b, 0x84, 0xfc, 0x94, 0x89, 0xab, 0xec, 0xe5, 0x62, 0xce, 0x15,
754 0x7d, 0x40, 0xec, 0x38, 0xf3, 0x77, 0xb1, 0x74, 0xaf, 0x67, 0x46, 0x41, 0xaf, 0x1c, 0x05, 0xbd,
755 0xa3, 0x6c, 0xc1, 0xec, 0x38, 0xa3, 0x5f, 0x12, 0x67, 0x92, 0x9b, 0x5b, 0xda, 0x8a, 0xf6, 0xd7,
756 0x64, 0x27, 0xc5, 0x40, 0x62, 0xa0, 0xa2, 0x9f, 0x13, 0x5b, 0x69, 0x7f, 0x1b, 0xb5, 0xf7, 0xd7,
757 0xb4, 0x67, 0x38, 0x9c, 0x98, 0xad, 0xe0, 0xf6, 0xdb, 0x5a, 0x15, 0xe7, 0xdb, 0x59, 0x13, 0xbe,
758 0x2c, 0xe7, 0x14, 0xb3, 0xb5, 0xa2, 0x3d, 0xe2, 0x4c, 0xc6, 0x29, 0x9e, 0x4e, 0x2b, 0x3a, 0x58,
759 0xdf, 0x01, 0x3e, 0x47, 0xbf, 0x02, 0x64, 0x06, 0x42, 0xfa, 0x98, 0x38, 0x97, 0xa9, 0xc6, 0xc3,
760 0x82, 0xab, 0xb1, 0xaa, 0xc7, 0x87, 0xad, 0x90, 0x5f, 0xa6, 0x1a, 0xe4, 0x49, 0x31, 0x70, 0xee,
761 0x92, 0x63, 0xb3, 0x17, 0xf2, 0x64, 0xd0, 0x87, 0xdd, 0xe4, 0x83, 0x3e, 0x0e, 0xa1, 0xbb, 0x76,
762 0x73, 0x7e, 0x53, 0x9f, 0x0f, 0xfa, 0x68, 0x7f, 0x18, 0xe1, 0x64, 0xda, 0x60, 0x7f, 0x18, 0x95,
763 0xf6, 0x87, 0x11, 0xda, 0x1f, 0x46, 0x38, 0xae, 0x36, 0xd9, 0x2f, 0xf5, 0x39, 0xea, 0x6b, 0x38,
764 0x6c, 0x9a, 0x1b, 0x50, 0xc2, 0x6d, 0x33, 0x72, 0xd4, 0x81, 0x3f, 0xbc, 0x1b, 0x64, 0x83, 0xbf,
765 0x79, 0xc0, 0x0b, 0x7f, 0xa5, 0x25, 0xfd, 0x9a, 0xd4, 0xab, 0x89, 0x77, 0xd7, 0x07, 0xe0, 0xc3,
766 0x6e, 0x0a, 0x8c, 0xf2, 0x69, 0x40, 0x6a, 0x59, 0x3c, 0xe3, 0x2b, 0x2d, 0xfa, 0x27, 0xbe, 0x05,
767 0x98, 0x79, 0x17, 0x00, 0x00, 0xff, 0xff, 0xda, 0x8b, 0x4a, 0x7a, 0x0e, 0x09, 0x00, 0x00,
768 }
777 // 1160 bytes of a gzipped FileDescriptorProto
778 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x95, 0x41, 0x73, 0xdb, 0x44,
779 0x14, 0xc7, 0x23, 0xc9, 0x92, 0xed, 0x75, 0x92, 0x9a, 0x6d, 0xda, 0x2a, 0x26, 0x80, 0xc6, 0x94,
780 0x22, 0x0a, 0x75, 0x07, 0xc7, 0xe3, 0x61, 0x0a, 0x97, 0xa4, 0x71, 0x29, 0x43, 0x13, 0x98, 0x4d,
781 0x43, 0x8f, 0x1e, 0x39, 0x5a, 0xbb, 0x2a, 0xf2, 0xae, 0x67, 0x77, 0x95, 0xd4, 0x03, 0x87, 0x9c,
782 0x39, 0x32, 0x7c, 0x05, 0xf8, 0x08, 0x1c, 0xf8, 0x74, 0xcc, 0xdb, 0x95, 0xac, 0xc4, 0x8e, 0x4f,
783 0xf1, 0x7b, 0xef, 0xff, 0xfe, 0x59, 0xed, 0x6f, 0x77, 0x1f, 0xc2, 0x8a, 0x4a, 0x35, 0xe4, 0xa3,
784 0x77, 0xf4, 0x5c, 0xc9, 0xce, 0x4c, 0x70, 0xc5, 0xb1, 0xf7, 0x4e, 0x72, 0x36, 0x1b, 0xb5, 0x76,
785 0x27, 0x9c, 0x4f, 0x52, 0xfa, 0x54, 0x67, 0x47, 0xd9, 0xf8, 0x69, 0xc4, 0xe6, 0x46, 0xd2, 0xfa,
786 0x78, 0xb9, 0x14, 0x67, 0x22, 0x52, 0x09, 0x67, 0x79, 0x7d, 0x6f, 0xb9, 0x2e, 0x95, 0xc8, 0xce,
787 0x55, 0x5e, 0xfd, 0x64, 0xb9, 0xaa, 0x92, 0x29, 0x95, 0x2a, 0x9a, 0xce, 0xd6, 0xd9, 0x5f, 0x8a,
788 0x68, 0x36, 0xa3, 0x22, 0x5f, 0x61, 0xfb, 0x6f, 0x1b, 0x79, 0xa7, 0xc9, 0x74, 0x96, 0x52, 0x7c,
789 0x0f, 0x79, 0x7c, 0x38, 0xe2, 0x3c, 0xf5, 0xad, 0xc0, 0x0a, 0x6b, 0xc4, 0xe5, 0x87, 0x9c, 0xa7,
790 0xf8, 0x01, 0xaa, 0xf2, 0x61, 0xc2, 0xd4, 0x7e, 0xd7, 0xb7, 0x03, 0x2b, 0x74, 0x89, 0xc7, 0x7f,
791 0x80, 0x68, 0x51, 0xe8, 0xf7, 0x7c, 0x27, 0xb0, 0x42, 0xc7, 0x14, 0xfa, 0x3d, 0xbc, 0x8b, 0x6a,
792 0x7c, 0x98, 0x99, 0x96, 0x4a, 0x60, 0x85, 0x5b, 0xa4, 0xca, 0xcf, 0x74, 0x58, 0x96, 0xfa, 0x3d,
793 0xdf, 0x0d, 0xac, 0xb0, 0x92, 0x97, 0x8a, 0x2e, 0x69, 0xba, 0xbc, 0xc0, 0x0a, 0x3f, 0x20, 0x55,
794 0x7e, 0x7a, 0xad, 0x4b, 0x9a, 0xae, 0x6a, 0x60, 0x85, 0x38, 0x2f, 0xf5, 0x7b, 0x66, 0x11, 0xe3,
795 0x94, 0x47, 0xca, 0xaf, 0x05, 0x56, 0x68, 0x13, 0x8f, 0xbf, 0x80, 0xc8, 0xf4, 0xc4, 0x3c, 0x1b,
796 0xa5, 0xd4, 0xaf, 0x07, 0x56, 0x68, 0x91, 0x2a, 0x3f, 0xd2, 0x61, 0x6e, 0xa7, 0x44, 0xc2, 0x26,
797 0x3e, 0x0a, 0xac, 0xb0, 0x0e, 0x76, 0x3a, 0x34, 0x76, 0xa3, 0xb9, 0xa2, 0xd2, 0x6f, 0x04, 0x56,
798 0xb8, 0x49, 0x3c, 0x7e, 0x08, 0x51, 0xfb, 0x4f, 0x0b, 0xa1, 0x13, 0xce, 0x5e, 0x24, 0x2c, 0x51,
799 0x54, 0xe2, 0xbb, 0xc8, 0x1d, 0x0f, 0x59, 0xc4, 0xf4, 0x56, 0xd9, 0xa4, 0x32, 0x3e, 0x89, 0x18,
800 0x6c, 0xe0, 0x78, 0x38, 0x4b, 0xd8, 0x58, 0x6f, 0x94, 0x4d, 0xdc, 0xf1, 0xcf, 0x09, 0x1b, 0x9b,
801 0x34, 0x83, 0xb4, 0x93, 0xa7, 0x4f, 0x20, 0x7d, 0x17, 0xb9, 0xb1, 0xb6, 0xa8, 0xe8, 0xd5, 0x55,
802 0xe2, 0xdc, 0x22, 0x36, 0x16, 0xae, 0xce, 0xba, 0x71, 0x61, 0x11, 0x1b, 0x0b, 0x2f, 0x4f, 0x83,
803 0x45, 0xfb, 0x1f, 0x1b, 0x55, 0x09, 0x9d, 0xd1, 0x48, 0x49, 0x90, 0x88, 0x82, 0x9e, 0x03, 0xf4,
804 0x44, 0x41, 0x4f, 0x2c, 0xe8, 0x39, 0x40, 0x4f, 0x2c, 0xe8, 0x89, 0x05, 0x3d, 0x07, 0xe8, 0x89,
805 0x05, 0x3d, 0x51, 0xd2, 0x73, 0x80, 0x9e, 0x28, 0xe9, 0x89, 0x92, 0x9e, 0x03, 0xf4, 0x44, 0x49,
806 0x4f, 0x94, 0xf4, 0x1c, 0xa0, 0x27, 0x4e, 0xaf, 0x75, 0x2d, 0xe8, 0x39, 0x40, 0x4f, 0x94, 0xf4,
807 0xc4, 0x82, 0x9e, 0x03, 0xf4, 0xc4, 0x82, 0x9e, 0x28, 0xe9, 0x39, 0x40, 0x4f, 0x94, 0xf4, 0x44,
808 0x49, 0xcf, 0x01, 0x7a, 0xa2, 0xa4, 0x27, 0x16, 0xf4, 0x1c, 0xa0, 0x27, 0x0c, 0xbd, 0x7f, 0x6d,
809 0xe4, 0xbd, 0x49, 0xe2, 0x09, 0x55, 0xf8, 0x31, 0x72, 0xcf, 0x79, 0xca, 0x85, 0x26, 0xb7, 0xdd,
810 0xdd, 0xe9, 0x98, 0x2b, 0xda, 0x31, 0xe5, 0xce, 0x73, 0xa8, 0x11, 0x23, 0xc1, 0x4f, 0xc0, 0xcf,
811 0xa8, 0x61, 0xf3, 0xd6, 0xa9, 0x3d, 0xa1, 0xff, 0xe2, 0x47, 0xc8, 0x93, 0xfa, 0x2a, 0xe9, 0x53,
812 0xd5, 0xe8, 0x6e, 0x17, 0x6a, 0x73, 0xc1, 0x48, 0x5e, 0xc5, 0x5f, 0x98, 0x0d, 0xd1, 0x4a, 0x58,
813 0xe7, 0xaa, 0x12, 0x36, 0x28, 0x97, 0x56, 0x85, 0x01, 0xec, 0xef, 0x68, 0xcf, 0x3b, 0x85, 0x32,
814 0xe7, 0x4e, 0x8a, 0x3a, 0xfe, 0x0a, 0xd5, 0xc5, 0xb0, 0x10, 0xdf, 0xd3, 0xb6, 0x2b, 0xe2, 0x9a,
815 0xc8, 0x7f, 0xb5, 0x3f, 0x43, 0xae, 0x59, 0x74, 0x15, 0x39, 0x64, 0x70, 0xd4, 0xdc, 0xc0, 0x75,
816 0xe4, 0x7e, 0x4f, 0x06, 0x83, 0x93, 0xa6, 0x85, 0x6b, 0xa8, 0x72, 0xf8, 0xea, 0x6c, 0xd0, 0xb4,
817 0xdb, 0x7f, 0xd9, 0xa8, 0x72, 0x1c, 0xcd, 0x24, 0xfe, 0x16, 0x35, 0xa6, 0xe6, 0xb8, 0xc0, 0xde,
818 0xeb, 0x33, 0xd6, 0xe8, 0x7e, 0x58, 0xf8, 0x83, 0xa4, 0x73, 0xac, 0xcf, 0xcf, 0xa9, 0x12, 0x03,
819 0xa6, 0xc4, 0x9c, 0xd4, 0xa7, 0x45, 0x8c, 0x0f, 0xd0, 0xd6, 0x54, 0x9f, 0xcd, 0xe2, 0xab, 0x6d,
820 0xdd, 0xfe, 0xd1, 0xcd, 0x76, 0x38, 0xaf, 0xe6, 0xb3, 0x8d, 0x41, 0x63, 0x5a, 0x66, 0x5a, 0xdf,
821 0xa1, 0xed, 0x9b, 0xfe, 0xb8, 0x89, 0x9c, 0x5f, 0xe9, 0x5c, 0x63, 0x74, 0x08, 0xfc, 0xc4, 0x3b,
822 0xc8, 0xbd, 0x88, 0xd2, 0x8c, 0xea, 0xeb, 0x57, 0x27, 0x26, 0x78, 0x66, 0x7f, 0x63, 0xb5, 0x4e,
823 0x50, 0x73, 0xd9, 0xfe, 0x7a, 0x7f, 0xcd, 0xf4, 0x3f, 0xbc, 0xde, 0xbf, 0x0a, 0xa5, 0xf4, 0x6b,
824 0xff, 0x61, 0xa1, 0xcd, 0x63, 0x39, 0x79, 0x93, 0xa8, 0xb7, 0x3f, 0x31, 0xca, 0xc7, 0xf8, 0x3e,
825 0x72, 0x55, 0xa2, 0x52, 0xaa, 0xed, 0xea, 0x2f, 0x37, 0x88, 0x09, 0xb1, 0x8f, 0x3c, 0x19, 0xa5,
826 0x91, 0x98, 0x6b, 0x4f, 0xe7, 0xe5, 0x06, 0xc9, 0x63, 0xdc, 0x42, 0xd5, 0xe7, 0x3c, 0x83, 0x95,
827 0xe8, 0x67, 0x01, 0x7a, 0x8a, 0x04, 0xfe, 0x14, 0x6d, 0xbe, 0xe5, 0x53, 0x3a, 0x8c, 0xe2, 0x58,
828 0x50, 0x29, 0xf5, 0x0b, 0x01, 0x82, 0x06, 0x64, 0x0f, 0x4c, 0xf2, 0xb0, 0x8a, 0xdc, 0x8c, 0x25,
829 0x9c, 0xb5, 0x1f, 0xa1, 0x0a, 0xa1, 0x51, 0x5a, 0x7e, 0xbe, 0x65, 0xde, 0x08, 0x1d, 0x3c, 0xae,
830 0xd5, 0xe2, 0xe6, 0xd5, 0xd5, 0xd5, 0x95, 0xdd, 0xbe, 0x84, 0xff, 0x08, 0x5f, 0xf2, 0x1e, 0xef,
831 0xa1, 0x7a, 0x32, 0x8d, 0x26, 0x09, 0x83, 0x95, 0x19, 0x79, 0x99, 0x28, 0x5b, 0xba, 0x47, 0x68,
832 0x5b, 0xd0, 0x28, 0x1d, 0xd2, 0xf7, 0x8a, 0x32, 0x99, 0x70, 0x86, 0x37, 0xcb, 0x23, 0x15, 0xa5,
833 0xfe, 0x6f, 0x37, 0xcf, 0x64, 0x6e, 0x4f, 0xb6, 0xa0, 0x69, 0x50, 0xf4, 0xb4, 0xff, 0x73, 0x11,
834 0xfa, 0x91, 0xf1, 0x4b, 0xf6, 0x7a, 0x3e, 0xa3, 0x12, 0x3f, 0x44, 0x76, 0xc4, 0xfc, 0x6d, 0xdd,
835 0xba, 0xd3, 0x31, 0xf3, 0xa9, 0x53, 0xcc, 0xa7, 0xce, 0x01, 0x9b, 0x13, 0x3b, 0x62, 0xf8, 0x4b,
836 0xe4, 0xc4, 0x99, 0xb9, 0xa5, 0x8d, 0xee, 0xee, 0x8a, 0xec, 0x28, 0x9f, 0x92, 0x04, 0x54, 0xf8,
837 0x73, 0x64, 0x4b, 0xe5, 0x6f, 0x6a, 0xed, 0x83, 0x15, 0xed, 0xa9, 0x9e, 0x98, 0xc4, 0x96, 0x70,
838 0xfb, 0x6d, 0x25, 0x73, 0xbe, 0xad, 0x15, 0xe1, 0xeb, 0x62, 0x78, 0x12, 0x5b, 0x49, 0xd0, 0xa6,
839 0x17, 0xfe, 0x9d, 0x35, 0xda, 0x57, 0x89, 0x54, 0xbf, 0xc0, 0x0e, 0x13, 0x3b, 0xbd, 0xc0, 0x21,
840 0x72, 0x2e, 0xa2, 0xd4, 0x6f, 0x6a, 0xf1, 0xfd, 0x15, 0xb1, 0x11, 0x82, 0x04, 0x77, 0x90, 0x13,
841 0x8f, 0x52, 0xcd, 0xbc, 0xd1, 0xdd, 0x5b, 0xfd, 0x2e, 0xfd, 0xc8, 0xe5, 0xfa, 0x78, 0x94, 0xe2,
842 0x27, 0xc8, 0x19, 0xa7, 0x4a, 0x1f, 0x01, 0xb8, 0x70, 0xcb, 0x7a, 0xfd, 0x5c, 0xe6, 0xf2, 0x71,
843 0xaa, 0x40, 0x9e, 0xe4, 0xb3, 0xf5, 0x36, 0xb9, 0xbe, 0x42, 0xb9, 0x3c, 0xe9, 0xf7, 0x60, 0x35,
844 0x59, 0xbf, 0xa7, 0xa7, 0xca, 0x6d, 0xab, 0x39, 0xbb, 0xae, 0xcf, 0xfa, 0x3d, 0x6d, 0xbf, 0xdf,
845 0xd5, 0x43, 0x78, 0x8d, 0xfd, 0x7e, 0xb7, 0xb0, 0xdf, 0xef, 0x6a, 0xfb, 0xfd, 0xae, 0x9e, 0xcc,
846 0xeb, 0xec, 0x17, 0xfa, 0x4c, 0xeb, 0x2b, 0x7a, 0x84, 0xd5, 0xd7, 0x6c, 0x3a, 0xdc, 0x61, 0x23,
847 0xd7, 0x3a, 0xf0, 0x87, 0xd7, 0x08, 0xad, 0xf1, 0x37, 0x63, 0x21, 0xf7, 0x97, 0x4a, 0xe0, 0xaf,
848 0x91, 0x5b, 0x0e, 0xf7, 0xdb, 0x3e, 0x40, 0x8f, 0x0b, 0xd3, 0x60, 0x94, 0xcf, 0x02, 0x54, 0x61,
849 0xd1, 0x94, 0x2e, 0x1d, 0xfc, 0xdf, 0xf5, 0x0b, 0xa3, 0x2b, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff,
850 0xd5, 0x39, 0x32, 0x09, 0xf9, 0x09, 0x00, 0x00,
851 }
5151 optional double o_double = 9;
5252 optional string o_string = 10;
5353 optional bytes o_bytes = 11;
54 }
55
56 // Test message for holding special non-finites primitives.
57 message NonFinites {
58 optional float f_nan = 1;
59 optional float f_pinf = 2;
60 optional float f_ninf = 3;
61 optional double d_nan = 4;
62 optional double d_pinf = 5;
63 optional double d_ninf = 6;
5464 }
5565
5666 // Test message for holding repeated primitives.
121131 optional google.protobuf.Duration dur = 1;
122132 optional google.protobuf.Struct st = 12;
123133 optional google.protobuf.Timestamp ts = 2;
134 optional google.protobuf.ListValue lv = 15;
135 optional google.protobuf.Value val = 16;
124136
125137 optional google.protobuf.DoubleValue dbl = 3;
126138 optional google.protobuf.FloatValue flt = 4;
419419 name string
420420 m Message
421421 want []byte
422 wantErr error
422 errType reflect.Type
423423 }{
424424 {
425425 name: "Marshaler that fails",
427427 err: errors.New("some marshal err"),
428428 b: []byte{5, 6, 7},
429429 },
430 // Since there's an error, nothing should be written to buffer.
431 want: nil,
432 wantErr: errors.New("some marshal err"),
430 // Since the Marshal method returned bytes, they should be written to the
431 // buffer. (For efficiency, we assume that Marshal implementations are
432 // always correct w.r.t. RequiredNotSetError and output.)
433 want: []byte{5, 6, 7},
434 errType: reflect.TypeOf(errors.New("some marshal err")),
433435 },
434436 {
435437 name: "Marshaler that fails with RequiredNotSetError",
445447 10, 3, // for &msgWithFakeMarshaler
446448 5, 6, 7, // for &fakeMarshaler
447449 },
448 wantErr: &RequiredNotSetError{},
450 errType: reflect.TypeOf(&RequiredNotSetError{}),
449451 },
450452 {
451453 name: "Marshaler that succeeds",
452454 m: &fakeMarshaler{
453455 b: []byte{0, 1, 2, 3, 4, 127, 255},
454456 },
455 want: []byte{0, 1, 2, 3, 4, 127, 255},
456 wantErr: nil,
457 want: []byte{0, 1, 2, 3, 4, 127, 255},
457458 },
458459 }
459460 for _, test := range tests {
460461 b := NewBuffer(nil)
461462 err := b.Marshal(test.m)
462 if _, ok := err.(*RequiredNotSetError); ok {
463 // We're not in package proto, so we can only assert the type in this case.
464 err = &RequiredNotSetError{}
465 }
466 if !reflect.DeepEqual(test.wantErr, err) {
467 t.Errorf("%s: got err %v wanted %v", test.name, err, test.wantErr)
463 if reflect.TypeOf(err) != test.errType {
464 t.Errorf("%s: got err %T(%v) wanted %T", test.name, err, err, test.errType)
468465 }
469466 if !reflect.DeepEqual(test.want, b.Bytes()) {
470467 t.Errorf("%s: got bytes %v wanted %v", test.name, b.Bytes(), test.want)
468 }
469 if size := Size(test.m); size != len(b.Bytes()) {
470 t.Errorf("%s: Size(_) = %v, but marshaled to %v bytes", test.name, size, len(b.Bytes()))
471 }
472
473 m, mErr := Marshal(test.m)
474 if !bytes.Equal(b.Bytes(), m) {
475 t.Errorf("%s: Marshal returned %v, but (*Buffer).Marshal wrote %v", test.name, m, b.Bytes())
476 }
477 if !reflect.DeepEqual(err, mErr) {
478 t.Errorf("%s: Marshal err = %q, but (*Buffer).Marshal returned %q",
479 test.name, fmt.Sprint(mErr), fmt.Sprint(err))
471480 }
472481 }
473482 }
13011310 // We don't care what the value actually is, just as long as it doesn't crash.
13021311 func TestPrintingNilEnumFields(t *testing.T) {
13031312 pb := new(GoEnum)
1304 fmt.Sprintf("%+v", pb)
1313 _ = fmt.Sprintf("%+v", pb)
13051314 }
13061315
13071316 // Verify that absent required fields cause Marshal/Unmarshal to return errors.
6060 // int32, int64, uint32, uint64, bool, and enum
6161 // protocol buffer types.
6262 func DecodeVarint(buf []byte) (x uint64, n int) {
63 // x, n already 0
6463 for shift := uint(0); shift < 64; shift += 7 {
6564 if n >= len(buf) {
6665 return 0, 0
7776 return 0, 0
7877 }
7978
80 // DecodeVarint reads a varint-encoded integer from the Buffer.
81 // This is the format for the
82 // int32, int64, uint32, uint64, bool, and enum
83 // protocol buffer types.
84 func (p *Buffer) DecodeVarint() (x uint64, err error) {
85 // x, err already 0
86
79 func (p *Buffer) decodeVarintSlow() (x uint64, err error) {
8780 i := p.index
8881 l := len(p.buf)
8982
10497 // The number is too large to represent in a 64-bit value.
10598 err = errOverflow
10699 return
100 }
101
102 // DecodeVarint reads a varint-encoded integer from the Buffer.
103 // This is the format for the
104 // int32, int64, uint32, uint64, bool, and enum
105 // protocol buffer types.
106 func (p *Buffer) DecodeVarint() (x uint64, err error) {
107 i := p.index
108 buf := p.buf
109
110 if i >= len(buf) {
111 return 0, io.ErrUnexpectedEOF
112 } else if buf[i] < 0x80 {
113 p.index++
114 return uint64(buf[i]), nil
115 } else if len(buf)-i < 10 {
116 return p.decodeVarintSlow()
117 }
118
119 var b uint64
120 // we already checked the first byte
121 x = uint64(buf[i]) - 0x80
122 i++
123
124 b = uint64(buf[i])
125 i++
126 x += b << 7
127 if b&0x80 == 0 {
128 goto done
129 }
130 x -= 0x80 << 7
131
132 b = uint64(buf[i])
133 i++
134 x += b << 14
135 if b&0x80 == 0 {
136 goto done
137 }
138 x -= 0x80 << 14
139
140 b = uint64(buf[i])
141 i++
142 x += b << 21
143 if b&0x80 == 0 {
144 goto done
145 }
146 x -= 0x80 << 21
147
148 b = uint64(buf[i])
149 i++
150 x += b << 28
151 if b&0x80 == 0 {
152 goto done
153 }
154 x -= 0x80 << 28
155
156 b = uint64(buf[i])
157 i++
158 x += b << 35
159 if b&0x80 == 0 {
160 goto done
161 }
162 x -= 0x80 << 35
163
164 b = uint64(buf[i])
165 i++
166 x += b << 42
167 if b&0x80 == 0 {
168 goto done
169 }
170 x -= 0x80 << 42
171
172 b = uint64(buf[i])
173 i++
174 x += b << 49
175 if b&0x80 == 0 {
176 goto done
177 }
178 x -= 0x80 << 49
179
180 b = uint64(buf[i])
181 i++
182 x += b << 56
183 if b&0x80 == 0 {
184 goto done
185 }
186 x -= 0x80 << 56
187
188 b = uint64(buf[i])
189 i++
190 x += b << 63
191 if b&0x80 == 0 {
192 goto done
193 }
194 // x -= 0x80 << 63 // Always zero.
195
196 return 0, errOverflow
197
198 done:
199 p.index = i
200 return x, nil
107201 }
108202
109203 // DecodeFixed64 reads a 64-bit integer from the Buffer.
339433 // Buffer and places the decoded result in pb. If the struct
340434 // underlying pb does not match the data in the buffer, the results can be
341435 // unpredictable.
436 //
437 // Unlike proto.Unmarshal, this does not reset pb before starting to unmarshal.
342438 func (p *Buffer) Unmarshal(pb Message) error {
343439 // If the object can unmarshal itself, let it.
344440 if u, ok := pb.(Unmarshaler); ok {
0 // Go support for Protocol Buffers - Google's data interchange format
1 //
2 // Copyright 2010 The Go Authors. All rights reserved.
3 // https://github.com/golang/protobuf
4 //
5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are
7 // met:
8 //
9 // * Redistributions of source code must retain the above copyright
10 // notice, this list of conditions and the following disclaimer.
11 // * Redistributions in binary form must reproduce the above
12 // copyright notice, this list of conditions and the following disclaimer
13 // in the documentation and/or other materials provided with the
14 // distribution.
15 // * Neither the name of Google Inc. nor the names of its
16 // contributors may be used to endorse or promote products derived from
17 // this software without specific prior written permission.
18 //
19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
31 // +build go1.7
32
33 package proto_test
34
35 import (
36 "fmt"
37 "testing"
38
39 "github.com/golang/protobuf/proto"
40 tpb "github.com/golang/protobuf/proto/proto3_proto"
41 )
42
43 var (
44 bytesBlackhole []byte
45 msgBlackhole = new(tpb.Message)
46 )
47
48 // BenchmarkVarint32ArraySmall shows the performance on an array of small int32 fields (1 and
49 // 2 bytes long).
50 func BenchmarkVarint32ArraySmall(b *testing.B) {
51 for i := uint(1); i <= 10; i++ {
52 dist := genInt32Dist([7]int{0, 3, 1}, 1<<i)
53 raw, err := proto.Marshal(&tpb.Message{
54 ShortKey: dist,
55 })
56 if err != nil {
57 b.Error("wrong encode", err)
58 }
59 b.Run(fmt.Sprintf("Len%v", len(dist)), func(b *testing.B) {
60 scratchBuf := proto.NewBuffer(nil)
61 b.ResetTimer()
62 for k := 0; k < b.N; k++ {
63 scratchBuf.SetBuf(raw)
64 msgBlackhole.Reset()
65 if err := scratchBuf.Unmarshal(msgBlackhole); err != nil {
66 b.Error("wrong decode", err)
67 }
68 }
69 })
70 }
71 }
72
73 // BenchmarkVarint32ArrayLarge shows the performance on an array of large int32 fields (3 and
74 // 4 bytes long, with a small number of 1, 2, 5 and 10 byte long versions).
75 func BenchmarkVarint32ArrayLarge(b *testing.B) {
76 for i := uint(1); i <= 10; i++ {
77 dist := genInt32Dist([7]int{0, 1, 2, 4, 8, 1, 1}, 1<<i)
78 raw, err := proto.Marshal(&tpb.Message{
79 ShortKey: dist,
80 })
81 if err != nil {
82 b.Error("wrong encode", err)
83 }
84 b.Run(fmt.Sprintf("Len%v", len(dist)), func(b *testing.B) {
85 scratchBuf := proto.NewBuffer(nil)
86 b.ResetTimer()
87 for k := 0; k < b.N; k++ {
88 scratchBuf.SetBuf(raw)
89 msgBlackhole.Reset()
90 if err := scratchBuf.Unmarshal(msgBlackhole); err != nil {
91 b.Error("wrong decode", err)
92 }
93 }
94 })
95 }
96 }
97
98 // BenchmarkVarint64ArraySmall shows the performance on an array of small int64 fields (1 and
99 // 2 bytes long).
100 func BenchmarkVarint64ArraySmall(b *testing.B) {
101 for i := uint(1); i <= 10; i++ {
102 dist := genUint64Dist([11]int{0, 3, 1}, 1<<i)
103 raw, err := proto.Marshal(&tpb.Message{
104 Key: dist,
105 })
106 if err != nil {
107 b.Error("wrong encode", err)
108 }
109 b.Run(fmt.Sprintf("Len%v", len(dist)), func(b *testing.B) {
110 scratchBuf := proto.NewBuffer(nil)
111 b.ResetTimer()
112 for k := 0; k < b.N; k++ {
113 scratchBuf.SetBuf(raw)
114 msgBlackhole.Reset()
115 if err := scratchBuf.Unmarshal(msgBlackhole); err != nil {
116 b.Error("wrong decode", err)
117 }
118 }
119 })
120 }
121 }
122
123 // BenchmarkVarint64ArrayLarge shows the performance on an array of large int64 fields (6, 7,
124 // and 8 bytes long with a small number of the other sizes).
125 func BenchmarkVarint64ArrayLarge(b *testing.B) {
126 for i := uint(1); i <= 10; i++ {
127 dist := genUint64Dist([11]int{0, 1, 1, 2, 4, 8, 16, 32, 16, 1, 1}, 1<<i)
128 raw, err := proto.Marshal(&tpb.Message{
129 Key: dist,
130 })
131 if err != nil {
132 b.Error("wrong encode", err)
133 }
134 b.Run(fmt.Sprintf("Len%v", len(dist)), func(b *testing.B) {
135 scratchBuf := proto.NewBuffer(nil)
136 b.ResetTimer()
137 for k := 0; k < b.N; k++ {
138 scratchBuf.SetBuf(raw)
139 msgBlackhole.Reset()
140 if err := scratchBuf.Unmarshal(msgBlackhole); err != nil {
141 b.Error("wrong decode", err)
142 }
143 }
144 })
145 }
146 }
147
148 // BenchmarkVarint64ArrayMixed shows the performance of lots of small messages, each
149 // containing a small number of large (3, 4, and 5 byte) repeated int64s.
150 func BenchmarkVarint64ArrayMixed(b *testing.B) {
151 for i := uint(1); i <= 1<<5; i <<= 1 {
152 dist := genUint64Dist([11]int{0, 0, 0, 4, 6, 4, 0, 0, 0, 0, 0}, int(i))
153 // number of sub fields
154 for k := uint(1); k <= 1<<10; k <<= 2 {
155 msg := &tpb.Message{}
156 for m := uint(0); m < k; m++ {
157 msg.Children = append(msg.Children, &tpb.Message{
158 Key: dist,
159 })
160 }
161 raw, err := proto.Marshal(msg)
162 if err != nil {
163 b.Error("wrong encode", err)
164 }
165 b.Run(fmt.Sprintf("Fields%vLen%v", k, i), func(b *testing.B) {
166 scratchBuf := proto.NewBuffer(nil)
167 b.ResetTimer()
168 for k := 0; k < b.N; k++ {
169 scratchBuf.SetBuf(raw)
170 msgBlackhole.Reset()
171 if err := scratchBuf.Unmarshal(msgBlackhole); err != nil {
172 b.Error("wrong decode", err)
173 }
174 }
175 })
176 }
177 }
178 }
179
180 // genInt32Dist generates a slice of ints that will match the size distribution of dist.
181 // A size of 6 corresponds to a max length varint32, which is 10 bytes. The distribution
182 // is 1-indexed. (i.e. the value at index 1 is how many 1 byte ints to create).
183 func genInt32Dist(dist [7]int, count int) (dest []int32) {
184 for i := 0; i < count; i++ {
185 for k := 0; k < len(dist); k++ {
186 var num int32
187 switch k {
188 case 1:
189 num = 1<<7 - 1
190 case 2:
191 num = 1<<14 - 1
192 case 3:
193 num = 1<<21 - 1
194 case 4:
195 num = 1<<28 - 1
196 case 5:
197 num = 1<<29 - 1
198 case 6:
199 num = -1
200 }
201 for m := 0; m < dist[k]; m++ {
202 dest = append(dest, num)
203 }
204 }
205 }
206 return
207 }
208
209 // genUint64Dist generates a slice of ints that will match the size distribution of dist.
210 // The distribution is 1-indexed. (i.e. the value at index 1 is how many 1 byte ints to create).
211 func genUint64Dist(dist [11]int, count int) (dest []uint64) {
212 for i := 0; i < count; i++ {
213 for k := 0; k < len(dist); k++ {
214 var num uint64
215 switch k {
216 case 1:
217 num = 1<<7 - 1
218 case 2:
219 num = 1<<14 - 1
220 case 3:
221 num = 1<<21 - 1
222 case 4:
223 num = 1<<28 - 1
224 case 5:
225 num = 1<<35 - 1
226 case 6:
227 num = 1<<42 - 1
228 case 7:
229 num = 1<<49 - 1
230 case 8:
231 num = 1<<56 - 1
232 case 9:
233 num = 1<<63 - 1
234 case 10:
235 num = 1<<64 - 1
236 }
237 for m := 0; m < dist[k]; m++ {
238 dest = append(dest, num)
239 }
240 }
241 }
242 return
243 }
244
245 // BenchmarkDecodeEmpty measures the overhead of doing the minimal possible decode.
246 func BenchmarkDecodeEmpty(b *testing.B) {
247 raw, err := proto.Marshal(&tpb.Message{})
248 if err != nil {
249 b.Error("wrong encode", err)
250 }
251 b.ResetTimer()
252 for i := 0; i < b.N; i++ {
253 if err := proto.Unmarshal(raw, msgBlackhole); err != nil {
254 b.Error("wrong decode", err)
255 }
256 }
257 }
173173 // This is the format used for the sint64 protocol buffer type.
174174 func (p *Buffer) EncodeZigzag64(x uint64) error {
175175 // use signed number to get arithmetic right shift.
176 return p.EncodeVarint(uint64((x << 1) ^ uint64((int64(x) >> 63))))
176 return p.EncodeVarint((x << 1) ^ uint64((int64(x) >> 63)))
177177 }
178178
179179 func sizeZigzag64(x uint64) int {
180 return sizeVarint(uint64((x << 1) ^ uint64((int64(x) >> 63))))
180 return sizeVarint((x << 1) ^ uint64((int64(x) >> 63)))
181181 }
182182
183183 // EncodeZigzag32 writes a zigzag-encoded 32-bit integer
233233 }
234234 p := NewBuffer(nil)
235235 err := p.Marshal(pb)
236 var state errorState
237 if err != nil && !state.shouldContinue(err, nil) {
238 return nil, err
239 }
240236 if p.buf == nil && err == nil {
241237 // Return a non-nil slice on success.
242238 return []byte{}, nil
265261 // Can the object marshal itself?
266262 if m, ok := pb.(Marshaler); ok {
267263 data, err := m.Marshal()
268 if err != nil {
269 return err
270 }
271264 p.buf = append(p.buf, data...)
272 return nil
265 return err
273266 }
274267
275268 t, base, err := getbase(pb)
281274 }
282275
283276 if collectStats {
284 stats.Encode++
277 (stats).Encode++ // Parens are to work around a goimports bug.
285278 }
286279
287280 if len(p.buf) > maxMarshalSize {
308301 }
309302
310303 if collectStats {
311 stats.Size++
304 (stats).Size++ // Parens are to work around a goimports bug.
312305 }
313306
314307 return
10131006 if p.isMarshaler {
10141007 m := structPointer_Interface(structp, p.stype).(Marshaler)
10151008 data, _ := m.Marshal()
1016 n += len(p.tagcode)
10171009 n += sizeRawBytes(data)
10181010 continue
10191011 }
10821074
10831075 func (o *Buffer) enc_exts(p *Properties, base structPointer) error {
10841076 exts := structPointer_Extensions(base, p.field)
1085 if err := encodeExtensions(exts); err != nil {
1077
1078 v, mu := exts.extensionsRead()
1079 if v == nil {
1080 return nil
1081 }
1082
1083 mu.Lock()
1084 defer mu.Unlock()
1085 if err := encodeExtensionsMap(v); err != nil {
10861086 return err
10871087 }
1088 v, _ := exts.extensionsRead()
10891088
10901089 return o.enc_map_body(v)
10911090 }
0 // Go support for Protocol Buffers - Google's data interchange format
1 //
2 // Copyright 2010 The Go Authors. All rights reserved.
3 // https://github.com/golang/protobuf
4 //
5 // Redistribution and use in source and binary forms, with or without
6 // modification, are permitted provided that the following conditions are
7 // met:
8 //
9 // * Redistributions of source code must retain the above copyright
10 // notice, this list of conditions and the following disclaimer.
11 // * Redistributions in binary form must reproduce the above
12 // copyright notice, this list of conditions and the following disclaimer
13 // in the documentation and/or other materials provided with the
14 // distribution.
15 // * Neither the name of Google Inc. nor the names of its
16 // contributors may be used to endorse or promote products derived from
17 // this software without specific prior written permission.
18 //
19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
31 // +build go1.7
32
33 package proto_test
34
35 import (
36 "strconv"
37 "testing"
38
39 "github.com/golang/protobuf/proto"
40 tpb "github.com/golang/protobuf/proto/proto3_proto"
41 "github.com/golang/protobuf/ptypes"
42 )
43
44 var (
45 blackhole []byte
46 )
47
48 // BenchmarkAny creates increasingly large arbitrary Any messages. The type is always the
49 // same.
50 func BenchmarkAny(b *testing.B) {
51 data := make([]byte, 1<<20)
52 quantum := 1 << 10
53 for i := uint(0); i <= 10; i++ {
54 b.Run(strconv.Itoa(quantum<<i), func(b *testing.B) {
55 for k := 0; k < b.N; k++ {
56 inner := &tpb.Message{
57 Data: data[:quantum<<i],
58 }
59 outer, err := ptypes.MarshalAny(inner)
60 if err != nil {
61 b.Error("wrong encode", err)
62 }
63 raw, err := proto.Marshal(&tpb.Message{
64 Anything: outer,
65 })
66 if err != nil {
67 b.Error("wrong encode", err)
68 }
69 blackhole = raw
70 }
71 })
72 }
73 }
74
75 // BenchmarkEmpy measures the overhead of doing the minimal possible encode.
76 func BenchmarkEmpy(b *testing.B) {
77 for i := 0; i < b.N; i++ {
78 raw, err := proto.Marshal(&tpb.Message{})
79 if err != nil {
80 b.Error("wrong encode", err)
81 }
82 blackhole = raw
83 }
84 }
5353 in a proto3 .proto file, fields are not "set"; specifically,
5454 zero length proto3 "bytes" fields are equal (nil == {}).
5555 - Two repeated fields are equal iff their lengths are the same,
56 and their corresponding elements are equal (a "bytes" field,
57 although represented by []byte, is not a repeated field)
56 and their corresponding elements are equal. Note a "bytes" field,
57 although represented by []byte, is not a repeated field and the
58 rule for the scalar fields described above applies.
5859 - Two unset fields are equal.
5960 - Two unknown field sets are equal if their current
6061 encoded state is equal.
6162 - Two extension sets are equal iff they have corresponding
6263 elements that are pairwise equal.
64 - Two map fields are equal iff their lengths are the same,
65 and they contain the same set of elements. Zero-length map
66 fields are equal.
6367 - Every other combination of things are not equal.
6468
6569 The return value is undefined if a and b are not protocol buffers.
183183 false,
184184 },
185185 {
186 "zero-length maps same",
187 &pb.MessageWithMap{NameMapping: map[int32]string{}},
188 &pb.MessageWithMap{NameMapping: nil},
189 true,
190 },
191 {
192 "orders in map don't matter",
193 &pb.MessageWithMap{NameMapping: map[int32]string{1: "Ken", 2: "Rob"}},
194 &pb.MessageWithMap{NameMapping: map[int32]string{2: "Rob", 1: "Ken"}},
195 true,
196 },
197 {
186198 "oneof same",
187199 &pb.Communique{Union: &pb.Communique_Number{41}},
188200 &pb.Communique{Union: &pb.Communique_Number{41}},
153153 Field int32 // field number
154154 Name string // fully-qualified name of extension, for text formatting
155155 Tag string // protobuf tag style
156 Filename string // name of the file in which the extension is defined
156157 }
157158
158159 func (ed *ExtensionDesc) repeated() bool {
3939
4040 "github.com/golang/protobuf/proto"
4141 pb "github.com/golang/protobuf/proto/testdata"
42 "golang.org/x/sync/errgroup"
4243 )
4344
4445 func TestGetExtensionsWithMissingExtensions(t *testing.T) {
505506 t.Errorf("proto.HasExtension(%s): got true, want false", proto.MarshalTextString(m))
506507 }
507508 }
509
510 func TestMarshalRace(t *testing.T) {
511 // unregistered extension
512 desc := &proto.ExtensionDesc{
513 ExtendedType: (*pb.MyMessage)(nil),
514 ExtensionType: (*bool)(nil),
515 Field: 101010100,
516 Name: "emptyextension",
517 Tag: "varint,0,opt",
518 }
519
520 m := &pb.MyMessage{Count: proto.Int32(4)}
521 if err := proto.SetExtension(m, desc, proto.Bool(true)); err != nil {
522 t.Errorf("proto.SetExtension(m, desc, true): got error %q, want nil", err)
523 }
524
525 var g errgroup.Group
526 for n := 3; n > 0; n-- {
527 g.Go(func() error {
528 _, err := proto.Marshal(m)
529 return err
530 })
531 }
532 if err := g.Wait(); err != nil {
533 t.Fatal(err)
534 }
535 }
7272 When the .proto file specifies `syntax="proto3"`, there are some differences:
7373
7474 - Non-repeated fields of non-message type are values instead of pointers.
75 - Getters are only generated for message and oneof fields.
7675 - Enum types do not get an Enum method.
7776
7877 The simplest way to describe this is to see an example.
0 package proto_test
1
2 import (
3 "fmt"
4 "testing"
5
6 "github.com/golang/protobuf/proto"
7 ppb "github.com/golang/protobuf/proto/proto3_proto"
8 )
9
10 func marshalled() []byte {
11 m := &ppb.IntMaps{}
12 for i := 0; i < 1000; i++ {
13 m.Maps = append(m.Maps, &ppb.IntMap{
14 Rtt: map[int32]int32{1: 2},
15 })
16 }
17 b, err := proto.Marshal(m)
18 if err != nil {
19 panic(fmt.Sprintf("Can't marshal %+v: %v", m, err))
20 }
21 return b
22 }
23
24 func BenchmarkConcurrentMapUnmarshal(b *testing.B) {
25 in := marshalled()
26 b.RunParallel(func(pb *testing.PB) {
27 for pb.Next() {
28 var out ppb.IntMaps
29 if err := proto.Unmarshal(in, &out); err != nil {
30 b.Errorf("Can't unmarshal ppb.IntMaps: %v", err)
31 }
32 }
33 })
34 }
35
36 func BenchmarkSequentialMapUnmarshal(b *testing.B) {
37 in := marshalled()
38 b.ResetTimer()
39 for i := 0; i < b.N; i++ {
40 var out ppb.IntMaps
41 if err := proto.Unmarshal(in, &out); err != nil {
42 b.Errorf("Can't unmarshal ppb.IntMaps: %v", err)
43 }
44 }
45 }
843843 }
844844
845845 // MessageName returns the fully-qualified proto name for the given message type.
846 func MessageName(x Message) string { return revProtoTypes[reflect.TypeOf(x)] }
846 func MessageName(x Message) string {
847 type xname interface {
848 XXX_MessageName() string
849 }
850 if m, ok := x.(xname); ok {
851 return m.XXX_MessageName()
852 }
853 return revProtoTypes[reflect.TypeOf(x)]
854 }
847855
848856 // MessageType returns the message type (pointer to struct) for a named message.
849857 func MessageType(name string) reflect.Type { return protoTypes[name] }
1111 Message
1212 Nested
1313 MessageWithMap
14 IntMap
15 IntMaps
1416 */
1517 package proto3_proto
1618
2729
2830 // This is a compile-time assertion to ensure that this generated file
2931 // is compatible with the proto package it is being compiled against.
30 const _ = proto.ProtoPackageIsVersion1
32 // A compilation error at this line likely means your copy of the
33 // proto package needs to be updated.
34 const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
3135
3236 type Message_Humour int32
3337
6468 ResultCount int64 `protobuf:"varint,7,opt,name=result_count,json=resultCount" json:"result_count,omitempty"`
6569 TrueScotsman bool `protobuf:"varint,8,opt,name=true_scotsman,json=trueScotsman" json:"true_scotsman,omitempty"`
6670 Score float32 `protobuf:"fixed32,9,opt,name=score" json:"score,omitempty"`
67 Key []uint64 `protobuf:"varint,5,rep,name=key" json:"key,omitempty"`
71 Key []uint64 `protobuf:"varint,5,rep,packed,name=key" json:"key,omitempty"`
72 ShortKey []int32 `protobuf:"varint,19,rep,packed,name=short_key,json=shortKey" json:"short_key,omitempty"`
6873 Nested *Nested `protobuf:"bytes,6,opt,name=nested" json:"nested,omitempty"`
69 RFunny []Message_Humour `protobuf:"varint,16,rep,name=r_funny,json=rFunny,enum=proto3_proto.Message_Humour" json:"r_funny,omitempty"`
74 RFunny []Message_Humour `protobuf:"varint,16,rep,packed,name=r_funny,json=rFunny,enum=proto3_proto.Message_Humour" json:"r_funny,omitempty"`
7075 Terrain map[string]*Nested `protobuf:"bytes,10,rep,name=terrain" json:"terrain,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
7176 Proto2Field *testdata.SubDefaults `protobuf:"bytes,11,opt,name=proto2_field,json=proto2Field" json:"proto2_field,omitempty"`
7277 Proto2Value map[string]*testdata.SubDefaults `protobuf:"bytes,13,rep,name=proto2_value,json=proto2Value" json:"proto2_value,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
7378 Anything *google_protobuf.Any `protobuf:"bytes,14,opt,name=anything" json:"anything,omitempty"`
7479 ManyThings []*google_protobuf.Any `protobuf:"bytes,15,rep,name=many_things,json=manyThings" json:"many_things,omitempty"`
80 Submessage *Message `protobuf:"bytes,17,opt,name=submessage" json:"submessage,omitempty"`
81 Children []*Message `protobuf:"bytes,18,rep,name=children" json:"children,omitempty"`
7582 }
7683
7784 func (m *Message) Reset() { *m = Message{} }
7986 func (*Message) ProtoMessage() {}
8087 func (*Message) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
8188
89 func (m *Message) GetName() string {
90 if m != nil {
91 return m.Name
92 }
93 return ""
94 }
95
96 func (m *Message) GetHilarity() Message_Humour {
97 if m != nil {
98 return m.Hilarity
99 }
100 return Message_UNKNOWN
101 }
102
103 func (m *Message) GetHeightInCm() uint32 {
104 if m != nil {
105 return m.HeightInCm
106 }
107 return 0
108 }
109
110 func (m *Message) GetData() []byte {
111 if m != nil {
112 return m.Data
113 }
114 return nil
115 }
116
117 func (m *Message) GetResultCount() int64 {
118 if m != nil {
119 return m.ResultCount
120 }
121 return 0
122 }
123
124 func (m *Message) GetTrueScotsman() bool {
125 if m != nil {
126 return m.TrueScotsman
127 }
128 return false
129 }
130
131 func (m *Message) GetScore() float32 {
132 if m != nil {
133 return m.Score
134 }
135 return 0
136 }
137
138 func (m *Message) GetKey() []uint64 {
139 if m != nil {
140 return m.Key
141 }
142 return nil
143 }
144
145 func (m *Message) GetShortKey() []int32 {
146 if m != nil {
147 return m.ShortKey
148 }
149 return nil
150 }
151
82152 func (m *Message) GetNested() *Nested {
83153 if m != nil {
84154 return m.Nested
86156 return nil
87157 }
88158
159 func (m *Message) GetRFunny() []Message_Humour {
160 if m != nil {
161 return m.RFunny
162 }
163 return nil
164 }
165
89166 func (m *Message) GetTerrain() map[string]*Nested {
90167 if m != nil {
91168 return m.Terrain
117194 func (m *Message) GetManyThings() []*google_protobuf.Any {
118195 if m != nil {
119196 return m.ManyThings
197 }
198 return nil
199 }
200
201 func (m *Message) GetSubmessage() *Message {
202 if m != nil {
203 return m.Submessage
204 }
205 return nil
206 }
207
208 func (m *Message) GetChildren() []*Message {
209 if m != nil {
210 return m.Children
120211 }
121212 return nil
122213 }
131222 func (*Nested) ProtoMessage() {}
132223 func (*Nested) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
133224
225 func (m *Nested) GetBunny() string {
226 if m != nil {
227 return m.Bunny
228 }
229 return ""
230 }
231
232 func (m *Nested) GetCute() bool {
233 if m != nil {
234 return m.Cute
235 }
236 return false
237 }
238
134239 type MessageWithMap struct {
135240 ByteMapping map[bool][]byte `protobuf:"bytes,1,rep,name=byte_mapping,json=byteMapping" json:"byte_mapping,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value,proto3"`
136241 }
147252 return nil
148253 }
149254
255 type IntMap struct {
256 Rtt map[int32]int32 `protobuf:"bytes,1,rep,name=rtt" json:"rtt,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"`
257 }
258
259 func (m *IntMap) Reset() { *m = IntMap{} }
260 func (m *IntMap) String() string { return proto.CompactTextString(m) }
261 func (*IntMap) ProtoMessage() {}
262 func (*IntMap) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
263
264 func (m *IntMap) GetRtt() map[int32]int32 {
265 if m != nil {
266 return m.Rtt
267 }
268 return nil
269 }
270
271 type IntMaps struct {
272 Maps []*IntMap `protobuf:"bytes,1,rep,name=maps" json:"maps,omitempty"`
273 }
274
275 func (m *IntMaps) Reset() { *m = IntMaps{} }
276 func (m *IntMaps) String() string { return proto.CompactTextString(m) }
277 func (*IntMaps) ProtoMessage() {}
278 func (*IntMaps) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
279
280 func (m *IntMaps) GetMaps() []*IntMap {
281 if m != nil {
282 return m.Maps
283 }
284 return nil
285 }
286
150287 func init() {
151288 proto.RegisterType((*Message)(nil), "proto3_proto.Message")
152289 proto.RegisterType((*Nested)(nil), "proto3_proto.Nested")
153290 proto.RegisterType((*MessageWithMap)(nil), "proto3_proto.MessageWithMap")
291 proto.RegisterType((*IntMap)(nil), "proto3_proto.IntMap")
292 proto.RegisterType((*IntMaps)(nil), "proto3_proto.IntMaps")
154293 proto.RegisterEnum("proto3_proto.Message_Humour", Message_Humour_name, Message_Humour_value)
155294 }
156295
296 func init() { proto.RegisterFile("proto3_proto/proto3.proto", fileDescriptor0) }
297
157298 var fileDescriptor0 = []byte{
158 // 621 bytes of a gzipped FileDescriptorProto
159 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x84, 0x53, 0x5b, 0x6f, 0xd3, 0x4c,
160 0x10, 0xfd, 0x72, 0xa9, 0xe3, 0x8e, 0x9d, 0xd6, 0xda, 0xaf, 0x48, 0xdb, 0x88, 0x87, 0x12, 0x24,
161 0x54, 0x71, 0x71, 0x51, 0x10, 0x52, 0x85, 0x10, 0xa8, 0x2d, 0xad, 0x88, 0x9a, 0x86, 0x68, 0xd3,
162 0x52, 0xf1, 0x64, 0xad, 0xd3, 0x4d, 0x62, 0x11, 0xaf, 0x23, 0x7b, 0x8d, 0xe4, 0xbf, 0xc3, 0xaf,
163 0xe4, 0x91, 0xbd, 0x38, 0xad, 0x5b, 0x05, 0x78, 0xf2, 0xee, 0xcc, 0x39, 0x33, 0xb3, 0xe7, 0x8c,
164 0x61, 0x77, 0x99, 0x26, 0x22, 0x79, 0x13, 0xe8, 0xcf, 0x81, 0xb9, 0xf8, 0xfa, 0x83, 0xdc, 0x6a,
165 0xaa, 0xb3, 0x3b, 0x4b, 0x92, 0xd9, 0x82, 0x19, 0x48, 0x98, 0x4f, 0x0f, 0x28, 0x2f, 0x0c, 0xb0,
166 0xf3, 0xbf, 0x60, 0x99, 0xb8, 0xa1, 0x82, 0x1e, 0xa8, 0x83, 0x09, 0x76, 0x7f, 0x59, 0xd0, 0xba,
167 0x60, 0x59, 0x46, 0x67, 0x0c, 0x21, 0x68, 0x72, 0x1a, 0x33, 0x5c, 0xdb, 0xab, 0xed, 0x6f, 0x12,
168 0x7d, 0x46, 0x87, 0x60, 0xcf, 0xa3, 0x05, 0x4d, 0x23, 0x51, 0xe0, 0xba, 0x8c, 0x6f, 0xf5, 0x1e,
169 0xfb, 0xd5, 0x86, 0x7e, 0x49, 0xf6, 0x3f, 0xe7, 0x71, 0x92, 0xa7, 0xe4, 0x16, 0x8d, 0xf6, 0xc0,
170 0x9d, 0xb3, 0x68, 0x36, 0x17, 0x41, 0xc4, 0x83, 0x49, 0x8c, 0x1b, 0x92, 0xdd, 0x26, 0x60, 0x62,
171 0x7d, 0x7e, 0x12, 0xab, 0x7e, 0x6a, 0x1c, 0xdc, 0x94, 0x19, 0x97, 0xe8, 0x33, 0x7a, 0x02, 0x6e,
172 0xca, 0xb2, 0x7c, 0x21, 0x82, 0x49, 0x92, 0x73, 0x81, 0x5b, 0x32, 0xd7, 0x20, 0x8e, 0x89, 0x9d,
173 0xa8, 0x10, 0x7a, 0x0a, 0x6d, 0x91, 0xe6, 0x2c, 0xc8, 0x26, 0x89, 0xc8, 0x62, 0xca, 0xb1, 0x2d,
174 0x31, 0x36, 0x71, 0x55, 0x70, 0x5c, 0xc6, 0xd0, 0x0e, 0x6c, 0xc8, 0x7c, 0xca, 0xf0, 0xa6, 0x4c,
175 0xd6, 0x89, 0xb9, 0x20, 0x0f, 0x1a, 0xdf, 0x59, 0x81, 0x37, 0xf6, 0x1a, 0xfb, 0x4d, 0xa2, 0x8e,
176 0xe8, 0x25, 0x58, 0x5c, 0xaa, 0xc1, 0x6e, 0xb0, 0x25, 0x81, 0x4e, 0x6f, 0xe7, 0xfe, 0xeb, 0x86,
177 0x3a, 0x47, 0x4a, 0x0c, 0x7a, 0x0b, 0xad, 0x34, 0x98, 0xe6, 0x9c, 0x17, 0xd8, 0x93, 0x35, 0xfe,
178 0x25, 0x86, 0x95, 0x9e, 0x29, 0x2c, 0x7a, 0x0f, 0x2d, 0xc1, 0xd2, 0x94, 0x46, 0x1c, 0x83, 0xa4,
179 0x39, 0xbd, 0xee, 0x7a, 0xda, 0xa5, 0x01, 0x9d, 0x72, 0x91, 0x16, 0x64, 0x45, 0x91, 0x16, 0x18,
180 0x8b, 0x7b, 0xc1, 0x34, 0x62, 0x8b, 0x1b, 0xec, 0xe8, 0x41, 0x1f, 0xf9, 0x2b, 0x3b, 0xfd, 0x71,
181 0x1e, 0x7e, 0x62, 0x53, 0x2a, 0x05, 0xca, 0x88, 0x63, 0xa0, 0x67, 0x0a, 0x89, 0xfa, 0xb7, 0xcc,
182 0x1f, 0x74, 0x91, 0x33, 0xdc, 0xd6, 0xcd, 0x9f, 0xad, 0x6f, 0x3e, 0xd2, 0xc8, 0xaf, 0x0a, 0x68,
183 0x06, 0x28, 0x4b, 0xe9, 0x08, 0x7a, 0x0d, 0xb6, 0xdc, 0x24, 0x31, 0x8f, 0xf8, 0x0c, 0x6f, 0x95,
184 0x4a, 0x99, 0x55, 0xf3, 0x57, 0xab, 0xe6, 0x1f, 0xf1, 0x82, 0xdc, 0xa2, 0xa4, 0x56, 0x8e, 0x34,
185 0xa2, 0x08, 0xf4, 0x2d, 0xc3, 0xdb, 0xba, 0xf7, 0x7a, 0x12, 0x28, 0xe0, 0xa5, 0xc6, 0x75, 0x46,
186 0xe0, 0x56, 0x65, 0x58, 0x59, 0x66, 0x76, 0x52, 0x5b, 0xf6, 0x1c, 0x36, 0xcc, 0x73, 0xea, 0x7f,
187 0x71, 0xcc, 0x40, 0xde, 0xd5, 0x0f, 0x6b, 0x9d, 0x2b, 0xf0, 0x1e, 0xbe, 0x6d, 0x4d, 0xd5, 0x17,
188 0xf7, 0xab, 0xfe, 0x41, 0xde, 0xbb, 0xb2, 0xdd, 0x8f, 0x60, 0x19, 0x9b, 0x91, 0x03, 0xad, 0xab,
189 0xe1, 0xf9, 0xf0, 0xcb, 0xf5, 0xd0, 0xfb, 0x0f, 0xd9, 0xd0, 0x1c, 0x5d, 0x0d, 0xc7, 0x5e, 0x0d,
190 0xb5, 0x61, 0x73, 0x3c, 0x38, 0x1a, 0x8d, 0x2f, 0xfb, 0x27, 0xe7, 0x5e, 0x1d, 0x6d, 0x83, 0x73,
191 0xdc, 0x1f, 0x0c, 0x82, 0xe3, 0xa3, 0xfe, 0xe0, 0xf4, 0x9b, 0xd7, 0xe8, 0xf6, 0xc0, 0x32, 0xc3,
192 0xaa, 0x65, 0x0d, 0xf5, 0x52, 0x99, 0x79, 0xcc, 0x45, 0xfd, 0x1e, 0x93, 0x5c, 0x98, 0x81, 0x6c,
193 0xa2, 0xcf, 0xdd, 0x9f, 0x35, 0xd8, 0x2a, 0x0d, 0xbb, 0x8e, 0xc4, 0xfc, 0x82, 0x2e, 0x91, 0x14,
194 0x2c, 0x2c, 0x04, 0x0b, 0x62, 0xba, 0x5c, 0x2a, 0x77, 0x6a, 0x5a, 0xe8, 0x57, 0x6b, 0x4d, 0x2e,
195 0x39, 0xfe, 0xb1, 0x24, 0x5c, 0x18, 0x7c, 0xe9, 0x75, 0x78, 0x17, 0xe9, 0x7c, 0x00, 0xef, 0x21,
196 0xa0, 0x2a, 0x98, 0x6d, 0x04, 0xdb, 0xa9, 0x0a, 0xe6, 0x56, 0x94, 0x09, 0x2d, 0xd3, 0xfa, 0x77,
197 0x00, 0x00, 0x00, 0xff, 0xff, 0x78, 0xc9, 0x75, 0x36, 0xb5, 0x04, 0x00, 0x00,
198 }
299 // 733 bytes of a gzipped FileDescriptorProto
300 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x84, 0x53, 0x6d, 0x6f, 0xf3, 0x34,
301 0x14, 0x25, 0x4d, 0x5f, 0xd2, 0x9b, 0x74, 0x0b, 0x5e, 0x91, 0xbc, 0x02, 0x52, 0x28, 0x12, 0x8a,
302 0x78, 0x49, 0xa1, 0xd3, 0xd0, 0x84, 0x10, 0x68, 0x1b, 0x9b, 0xa8, 0xd6, 0x95, 0xca, 0xdd, 0x98,
303 0xf8, 0x14, 0xa5, 0xad, 0xdb, 0x46, 0x34, 0x4e, 0x49, 0x1c, 0xa4, 0xfc, 0x1d, 0xfe, 0x28, 0x8f,
304 0x6c, 0xa7, 0x5d, 0x36, 0x65, 0xcf, 0xf3, 0x29, 0xf6, 0xf1, 0xb9, 0xf7, 0x9c, 0x1c, 0x5f, 0xc3,
305 0xe9, 0x2e, 0x89, 0x79, 0x7c, 0xe6, 0xcb, 0xcf, 0x40, 0x6d, 0x3c, 0xf9, 0x41, 0x56, 0xf9, 0xa8,
306 0x77, 0xba, 0x8e, 0xe3, 0xf5, 0x96, 0x2a, 0xca, 0x3c, 0x5b, 0x0d, 0x02, 0x96, 0x2b, 0x62, 0xef,
307 0x84, 0xd3, 0x94, 0x2f, 0x03, 0x1e, 0x0c, 0xc4, 0x42, 0x81, 0xfd, 0xff, 0x5b, 0xd0, 0xba, 0xa7,
308 0x69, 0x1a, 0xac, 0x29, 0x42, 0x50, 0x67, 0x41, 0x44, 0xb1, 0xe6, 0x68, 0x6e, 0x9b, 0xc8, 0x35,
309 0xba, 0x00, 0x63, 0x13, 0x6e, 0x83, 0x24, 0xe4, 0x39, 0xae, 0x39, 0x9a, 0x7b, 0x34, 0xfc, 0xcc,
310 0x2b, 0x0b, 0x7a, 0x45, 0xb1, 0xf7, 0x7b, 0x16, 0xc5, 0x59, 0x42, 0x0e, 0x6c, 0xe4, 0x80, 0xb5,
311 0xa1, 0xe1, 0x7a, 0xc3, 0xfd, 0x90, 0xf9, 0x8b, 0x08, 0xeb, 0x8e, 0xe6, 0x76, 0x08, 0x28, 0x6c,
312 0xc4, 0xae, 0x23, 0xa1, 0x27, 0xec, 0xe0, 0xba, 0xa3, 0xb9, 0x16, 0x91, 0x6b, 0xf4, 0x05, 0x58,
313 0x09, 0x4d, 0xb3, 0x2d, 0xf7, 0x17, 0x71, 0xc6, 0x38, 0x6e, 0x39, 0x9a, 0xab, 0x13, 0x53, 0x61,
314 0xd7, 0x02, 0x42, 0x5f, 0x42, 0x87, 0x27, 0x19, 0xf5, 0xd3, 0x45, 0xcc, 0xd3, 0x28, 0x60, 0xd8,
315 0x70, 0x34, 0xd7, 0x20, 0x96, 0x00, 0x67, 0x05, 0x86, 0xba, 0xd0, 0x48, 0x17, 0x71, 0x42, 0x71,
316 0xdb, 0xd1, 0xdc, 0x1a, 0x51, 0x1b, 0x64, 0x83, 0xfe, 0x37, 0xcd, 0x71, 0xc3, 0xd1, 0xdd, 0x3a,
317 0x11, 0x4b, 0xf4, 0x29, 0xb4, 0xd3, 0x4d, 0x9c, 0x70, 0x5f, 0xe0, 0x27, 0x8e, 0xee, 0x36, 0x88,
318 0x21, 0x81, 0x3b, 0x9a, 0xa3, 0x6f, 0xa1, 0xc9, 0x68, 0xca, 0xe9, 0x12, 0x37, 0x1d, 0xcd, 0x35,
319 0x87, 0xdd, 0x97, 0xbf, 0x3e, 0x91, 0x67, 0xa4, 0xe0, 0xa0, 0x73, 0x68, 0x25, 0xfe, 0x2a, 0x63,
320 0x2c, 0xc7, 0xb6, 0xa3, 0x7f, 0x30, 0xa9, 0x66, 0x72, 0x2b, 0xb8, 0xe8, 0x67, 0x68, 0x71, 0x9a,
321 0x24, 0x41, 0xc8, 0x30, 0x38, 0xba, 0x6b, 0x0e, 0xfb, 0xd5, 0x65, 0x0f, 0x8a, 0x74, 0xc3, 0x78,
322 0x92, 0x93, 0x7d, 0x09, 0xba, 0x00, 0x75, 0xff, 0x43, 0x7f, 0x15, 0xd2, 0xed, 0x12, 0x9b, 0xd2,
323 0xe8, 0x27, 0xde, 0xfe, 0xae, 0xbd, 0x59, 0x36, 0xff, 0x8d, 0xae, 0x82, 0x6c, 0xcb, 0x53, 0x62,
324 0x2a, 0xea, 0xad, 0x60, 0xa2, 0xd1, 0xa1, 0xf2, 0xdf, 0x60, 0x9b, 0x51, 0xdc, 0x91, 0xe2, 0x5f,
325 0x55, 0x8b, 0x4f, 0x25, 0xf3, 0x4f, 0x41, 0x54, 0x06, 0x8a, 0x56, 0x12, 0x41, 0xdf, 0x83, 0x11,
326 0xb0, 0x9c, 0x6f, 0x42, 0xb6, 0xc6, 0x47, 0x45, 0x52, 0x6a, 0x0e, 0xbd, 0xfd, 0x1c, 0x7a, 0x97,
327 0x2c, 0x27, 0x07, 0x16, 0x3a, 0x07, 0x33, 0x0a, 0x58, 0xee, 0xcb, 0x5d, 0x8a, 0x8f, 0xa5, 0x76,
328 0x75, 0x11, 0x08, 0xe2, 0x83, 0xe4, 0xa1, 0x73, 0x80, 0x34, 0x9b, 0x47, 0xca, 0x14, 0xfe, 0xb8,
329 0xf8, 0xd7, 0x2a, 0xc7, 0xa4, 0x44, 0x44, 0x3f, 0x80, 0xb1, 0xd8, 0x84, 0xdb, 0x65, 0x42, 0x19,
330 0x46, 0x52, 0xea, 0x8d, 0xa2, 0x03, 0xad, 0x37, 0x05, 0xab, 0x1c, 0xf8, 0x7e, 0x72, 0xd4, 0xd3,
331 0x90, 0x93, 0xf3, 0x35, 0x34, 0x54, 0x70, 0xb5, 0xf7, 0xcc, 0x86, 0xa2, 0xfc, 0x54, 0xbb, 0xd0,
332 0x7a, 0x8f, 0x60, 0xbf, 0x4e, 0xb1, 0xa2, 0xeb, 0x37, 0x2f, 0xbb, 0xbe, 0x71, 0x91, 0xcf, 0x6d,
333 0xfb, 0xbf, 0x42, 0x53, 0x0d, 0x14, 0x32, 0xa1, 0xf5, 0x38, 0xb9, 0x9b, 0xfc, 0xf1, 0x34, 0xb1,
334 0x3f, 0x42, 0x06, 0xd4, 0xa7, 0x8f, 0x93, 0x99, 0xad, 0xa1, 0x0e, 0xb4, 0x67, 0xe3, 0xcb, 0xe9,
335 0xec, 0x61, 0x74, 0x7d, 0x67, 0xd7, 0xd0, 0x31, 0x98, 0x57, 0xa3, 0xf1, 0xd8, 0xbf, 0xba, 0x1c,
336 0x8d, 0x6f, 0xfe, 0xb2, 0xf5, 0xfe, 0x10, 0x9a, 0xca, 0xac, 0x78, 0x33, 0x73, 0x39, 0xbe, 0xca,
337 0x8f, 0xda, 0x88, 0x57, 0xba, 0xc8, 0xb8, 0x32, 0x64, 0x10, 0xb9, 0xee, 0xff, 0xa7, 0xc1, 0x51,
338 0x91, 0xd9, 0x53, 0xc8, 0x37, 0xf7, 0xc1, 0x0e, 0x4d, 0xc1, 0x9a, 0xe7, 0x9c, 0xfa, 0x51, 0xb0,
339 0xdb, 0x89, 0x39, 0xd0, 0x64, 0xce, 0xdf, 0x55, 0xe6, 0x5c, 0xd4, 0x78, 0x57, 0x39, 0xa7, 0xf7,
340 0x8a, 0x5f, 0x4c, 0xd5, 0xfc, 0x19, 0xe9, 0xfd, 0x02, 0xf6, 0x6b, 0x42, 0x39, 0x30, 0x43, 0x05,
341 0xd6, 0x2d, 0x07, 0x66, 0x95, 0x93, 0xf9, 0x07, 0x9a, 0x23, 0xc6, 0x85, 0xb7, 0x01, 0xe8, 0x09,
342 0xe7, 0x85, 0xa5, 0xcf, 0x5f, 0x5a, 0x52, 0x14, 0x8f, 0x70, 0xae, 0x2c, 0x08, 0x66, 0xef, 0x47,
343 0x30, 0xf6, 0x40, 0x59, 0xb2, 0x51, 0x21, 0xd9, 0x28, 0x4b, 0x9e, 0x41, 0x4b, 0xf5, 0x4b, 0x91,
344 0x0b, 0xf5, 0x28, 0xd8, 0xa5, 0x85, 0x68, 0xb7, 0x4a, 0x94, 0x48, 0xc6, 0xbc, 0xa9, 0x8e, 0xde,
345 0x05, 0x00, 0x00, 0xff, 0xff, 0x75, 0x38, 0xad, 0x84, 0xe4, 0x05, 0x00, 0x00,
346 }
5252 float score = 9;
5353
5454 repeated uint64 key = 5;
55 repeated int32 short_key = 19;
5556 Nested nested = 6;
5657 repeated Humour r_funny = 16;
5758
6162
6263 google.protobuf.Any anything = 14;
6364 repeated google.protobuf.Any many_things = 15;
65
66 Message submessage = 17;
67 repeated Message children = 18;
6468 }
6569
6670 message Nested {
7175 message MessageWithMap {
7276 map<bool, bytes> byte_mapping = 1;
7377 }
78
79
80 message IntMap {
81 map<int32, int32> rtt = 1;
82 }
83
84 message IntMaps {
85 repeated IntMap maps = 1;
86 }
9292 }
9393 }
9494
95 func TestGettersForBasicTypesExist(t *testing.T) {
96 var m pb.Message
97 if got := m.GetNested().GetBunny(); got != "" {
98 t.Errorf("m.GetNested().GetBunny() = %q, want empty string", got)
99 }
100 if got := m.GetNested().GetCute(); got {
101 t.Errorf("m.GetNested().GetCute() = %t, want false", got)
102 }
103 }
104
95105 func TestProto3SetDefaults(t *testing.T) {
96106 in := &pb.Message{
97107 Terrain: map[string]*pb.Nested{
0 // Code generated by protoc-gen-go.
0 // Code generated by protoc-gen-go. DO NOT EDIT.
11 // source: test.proto
2 // DO NOT EDIT!
32
43 /*
54 Package testdata is a generated protocol buffer package.
322321 }
323322
324323 type GoTestField struct {
325 Label *string `protobuf:"bytes,1,req,name=Label,json=label" json:"Label,omitempty"`
326 Type *string `protobuf:"bytes,2,req,name=Type,json=type" json:"Type,omitempty"`
324 Label *string `protobuf:"bytes,1,req,name=Label" json:"Label,omitempty"`
325 Type *string `protobuf:"bytes,2,req,name=Type" json:"Type,omitempty"`
327326 XXX_unrecognized []byte `json:"-"`
328327 }
329328
348347
349348 type GoTest struct {
350349 // Some typical parameters
351 Kind *GoTest_KIND `protobuf:"varint,1,req,name=Kind,json=kind,enum=testdata.GoTest_KIND" json:"Kind,omitempty"`
352 Table *string `protobuf:"bytes,2,opt,name=Table,json=table" json:"Table,omitempty"`
353 Param *int32 `protobuf:"varint,3,opt,name=Param,json=param" json:"Param,omitempty"`
350 Kind *GoTest_KIND `protobuf:"varint,1,req,name=Kind,enum=testdata.GoTest_KIND" json:"Kind,omitempty"`
351 Table *string `protobuf:"bytes,2,opt,name=Table" json:"Table,omitempty"`
352 Param *int32 `protobuf:"varint,3,opt,name=Param" json:"Param,omitempty"`
354353 // Required, repeated and optional foreign fields.
355 RequiredField *GoTestField `protobuf:"bytes,4,req,name=RequiredField,json=requiredField" json:"RequiredField,omitempty"`
356 RepeatedField []*GoTestField `protobuf:"bytes,5,rep,name=RepeatedField,json=repeatedField" json:"RepeatedField,omitempty"`
357 OptionalField *GoTestField `protobuf:"bytes,6,opt,name=OptionalField,json=optionalField" json:"OptionalField,omitempty"`
354 RequiredField *GoTestField `protobuf:"bytes,4,req,name=RequiredField" json:"RequiredField,omitempty"`
355 RepeatedField []*GoTestField `protobuf:"bytes,5,rep,name=RepeatedField" json:"RepeatedField,omitempty"`
356 OptionalField *GoTestField `protobuf:"bytes,6,opt,name=OptionalField" json:"OptionalField,omitempty"`
358357 // Required fields of all basic types
359 F_BoolRequired *bool `protobuf:"varint,10,req,name=F_Bool_required,json=fBoolRequired" json:"F_Bool_required,omitempty"`
360 F_Int32Required *int32 `protobuf:"varint,11,req,name=F_Int32_required,json=fInt32Required" json:"F_Int32_required,omitempty"`
361 F_Int64Required *int64 `protobuf:"varint,12,req,name=F_Int64_required,json=fInt64Required" json:"F_Int64_required,omitempty"`
362 F_Fixed32Required *uint32 `protobuf:"fixed32,13,req,name=F_Fixed32_required,json=fFixed32Required" json:"F_Fixed32_required,omitempty"`
363 F_Fixed64Required *uint64 `protobuf:"fixed64,14,req,name=F_Fixed64_required,json=fFixed64Required" json:"F_Fixed64_required,omitempty"`
364 F_Uint32Required *uint32 `protobuf:"varint,15,req,name=F_Uint32_required,json=fUint32Required" json:"F_Uint32_required,omitempty"`
365 F_Uint64Required *uint64 `protobuf:"varint,16,req,name=F_Uint64_required,json=fUint64Required" json:"F_Uint64_required,omitempty"`
366 F_FloatRequired *float32 `protobuf:"fixed32,17,req,name=F_Float_required,json=fFloatRequired" json:"F_Float_required,omitempty"`
367 F_DoubleRequired *float64 `protobuf:"fixed64,18,req,name=F_Double_required,json=fDoubleRequired" json:"F_Double_required,omitempty"`
368 F_StringRequired *string `protobuf:"bytes,19,req,name=F_String_required,json=fStringRequired" json:"F_String_required,omitempty"`
369 F_BytesRequired []byte `protobuf:"bytes,101,req,name=F_Bytes_required,json=fBytesRequired" json:"F_Bytes_required,omitempty"`
370 F_Sint32Required *int32 `protobuf:"zigzag32,102,req,name=F_Sint32_required,json=fSint32Required" json:"F_Sint32_required,omitempty"`
371 F_Sint64Required *int64 `protobuf:"zigzag64,103,req,name=F_Sint64_required,json=fSint64Required" json:"F_Sint64_required,omitempty"`
358 F_BoolRequired *bool `protobuf:"varint,10,req,name=F_Bool_required,json=FBoolRequired" json:"F_Bool_required,omitempty"`
359 F_Int32Required *int32 `protobuf:"varint,11,req,name=F_Int32_required,json=FInt32Required" json:"F_Int32_required,omitempty"`
360 F_Int64Required *int64 `protobuf:"varint,12,req,name=F_Int64_required,json=FInt64Required" json:"F_Int64_required,omitempty"`
361 F_Fixed32Required *uint32 `protobuf:"fixed32,13,req,name=F_Fixed32_required,json=FFixed32Required" json:"F_Fixed32_required,omitempty"`
362 F_Fixed64Required *uint64 `protobuf:"fixed64,14,req,name=F_Fixed64_required,json=FFixed64Required" json:"F_Fixed64_required,omitempty"`
363 F_Uint32Required *uint32 `protobuf:"varint,15,req,name=F_Uint32_required,json=FUint32Required" json:"F_Uint32_required,omitempty"`
364 F_Uint64Required *uint64 `protobuf:"varint,16,req,name=F_Uint64_required,json=FUint64Required" json:"F_Uint64_required,omitempty"`
365 F_FloatRequired *float32 `protobuf:"fixed32,17,req,name=F_Float_required,json=FFloatRequired" json:"F_Float_required,omitempty"`
366 F_DoubleRequired *float64 `protobuf:"fixed64,18,req,name=F_Double_required,json=FDoubleRequired" json:"F_Double_required,omitempty"`
367 F_StringRequired *string `protobuf:"bytes,19,req,name=F_String_required,json=FStringRequired" json:"F_String_required,omitempty"`
368 F_BytesRequired []byte `protobuf:"bytes,101,req,name=F_Bytes_required,json=FBytesRequired" json:"F_Bytes_required,omitempty"`
369 F_Sint32Required *int32 `protobuf:"zigzag32,102,req,name=F_Sint32_required,json=FSint32Required" json:"F_Sint32_required,omitempty"`
370 F_Sint64Required *int64 `protobuf:"zigzag64,103,req,name=F_Sint64_required,json=FSint64Required" json:"F_Sint64_required,omitempty"`
372371 // Repeated fields of all basic types
373 F_BoolRepeated []bool `protobuf:"varint,20,rep,name=F_Bool_repeated,json=fBoolRepeated" json:"F_Bool_repeated,omitempty"`
374 F_Int32Repeated []int32 `protobuf:"varint,21,rep,name=F_Int32_repeated,json=fInt32Repeated" json:"F_Int32_repeated,omitempty"`
375 F_Int64Repeated []int64 `protobuf:"varint,22,rep,name=F_Int64_repeated,json=fInt64Repeated" json:"F_Int64_repeated,omitempty"`
376 F_Fixed32Repeated []uint32 `protobuf:"fixed32,23,rep,name=F_Fixed32_repeated,json=fFixed32Repeated" json:"F_Fixed32_repeated,omitempty"`
377 F_Fixed64Repeated []uint64 `protobuf:"fixed64,24,rep,name=F_Fixed64_repeated,json=fFixed64Repeated" json:"F_Fixed64_repeated,omitempty"`
378 F_Uint32Repeated []uint32 `protobuf:"varint,25,rep,name=F_Uint32_repeated,json=fUint32Repeated" json:"F_Uint32_repeated,omitempty"`
379 F_Uint64Repeated []uint64 `protobuf:"varint,26,rep,name=F_Uint64_repeated,json=fUint64Repeated" json:"F_Uint64_repeated,omitempty"`
380 F_FloatRepeated []float32 `protobuf:"fixed32,27,rep,name=F_Float_repeated,json=fFloatRepeated" json:"F_Float_repeated,omitempty"`
381 F_DoubleRepeated []float64 `protobuf:"fixed64,28,rep,name=F_Double_repeated,json=fDoubleRepeated" json:"F_Double_repeated,omitempty"`
382 F_StringRepeated []string `protobuf:"bytes,29,rep,name=F_String_repeated,json=fStringRepeated" json:"F_String_repeated,omitempty"`
383 F_BytesRepeated [][]byte `protobuf:"bytes,201,rep,name=F_Bytes_repeated,json=fBytesRepeated" json:"F_Bytes_repeated,omitempty"`
384 F_Sint32Repeated []int32 `protobuf:"zigzag32,202,rep,name=F_Sint32_repeated,json=fSint32Repeated" json:"F_Sint32_repeated,omitempty"`
385 F_Sint64Repeated []int64 `protobuf:"zigzag64,203,rep,name=F_Sint64_repeated,json=fSint64Repeated" json:"F_Sint64_repeated,omitempty"`
372 F_BoolRepeated []bool `protobuf:"varint,20,rep,name=F_Bool_repeated,json=FBoolRepeated" json:"F_Bool_repeated,omitempty"`
373 F_Int32Repeated []int32 `protobuf:"varint,21,rep,name=F_Int32_repeated,json=FInt32Repeated" json:"F_Int32_repeated,omitempty"`
374 F_Int64Repeated []int64 `protobuf:"varint,22,rep,name=F_Int64_repeated,json=FInt64Repeated" json:"F_Int64_repeated,omitempty"`
375 F_Fixed32Repeated []uint32 `protobuf:"fixed32,23,rep,name=F_Fixed32_repeated,json=FFixed32Repeated" json:"F_Fixed32_repeated,omitempty"`
376 F_Fixed64Repeated []uint64 `protobuf:"fixed64,24,rep,name=F_Fixed64_repeated,json=FFixed64Repeated" json:"F_Fixed64_repeated,omitempty"`
377 F_Uint32Repeated []uint32 `protobuf:"varint,25,rep,name=F_Uint32_repeated,json=FUint32Repeated" json:"F_Uint32_repeated,omitempty"`
378 F_Uint64Repeated []uint64 `protobuf:"varint,26,rep,name=F_Uint64_repeated,json=FUint64Repeated" json:"F_Uint64_repeated,omitempty"`
379 F_FloatRepeated []float32 `protobuf:"fixed32,27,rep,name=F_Float_repeated,json=FFloatRepeated" json:"F_Float_repeated,omitempty"`
380 F_DoubleRepeated []float64 `protobuf:"fixed64,28,rep,name=F_Double_repeated,json=FDoubleRepeated" json:"F_Double_repeated,omitempty"`
381 F_StringRepeated []string `protobuf:"bytes,29,rep,name=F_String_repeated,json=FStringRepeated" json:"F_String_repeated,omitempty"`
382 F_BytesRepeated [][]byte `protobuf:"bytes,201,rep,name=F_Bytes_repeated,json=FBytesRepeated" json:"F_Bytes_repeated,omitempty"`
383 F_Sint32Repeated []int32 `protobuf:"zigzag32,202,rep,name=F_Sint32_repeated,json=FSint32Repeated" json:"F_Sint32_repeated,omitempty"`
384 F_Sint64Repeated []int64 `protobuf:"zigzag64,203,rep,name=F_Sint64_repeated,json=FSint64Repeated" json:"F_Sint64_repeated,omitempty"`
386385 // Optional fields of all basic types
387 F_BoolOptional *bool `protobuf:"varint,30,opt,name=F_Bool_optional,json=fBoolOptional" json:"F_Bool_optional,omitempty"`
388 F_Int32Optional *int32 `protobuf:"varint,31,opt,name=F_Int32_optional,json=fInt32Optional" json:"F_Int32_optional,omitempty"`
389 F_Int64Optional *int64 `protobuf:"varint,32,opt,name=F_Int64_optional,json=fInt64Optional" json:"F_Int64_optional,omitempty"`
390 F_Fixed32Optional *uint32 `protobuf:"fixed32,33,opt,name=F_Fixed32_optional,json=fFixed32Optional" json:"F_Fixed32_optional,omitempty"`
391 F_Fixed64Optional *uint64 `protobuf:"fixed64,34,opt,name=F_Fixed64_optional,json=fFixed64Optional" json:"F_Fixed64_optional,omitempty"`
392 F_Uint32Optional *uint32 `protobuf:"varint,35,opt,name=F_Uint32_optional,json=fUint32Optional" json:"F_Uint32_optional,omitempty"`
393 F_Uint64Optional *uint64 `protobuf:"varint,36,opt,name=F_Uint64_optional,json=fUint64Optional" json:"F_Uint64_optional,omitempty"`
394 F_FloatOptional *float32 `protobuf:"fixed32,37,opt,name=F_Float_optional,json=fFloatOptional" json:"F_Float_optional,omitempty"`
395 F_DoubleOptional *float64 `protobuf:"fixed64,38,opt,name=F_Double_optional,json=fDoubleOptional" json:"F_Double_optional,omitempty"`
396 F_StringOptional *string `protobuf:"bytes,39,opt,name=F_String_optional,json=fStringOptional" json:"F_String_optional,omitempty"`
397 F_BytesOptional []byte `protobuf:"bytes,301,opt,name=F_Bytes_optional,json=fBytesOptional" json:"F_Bytes_optional,omitempty"`
398 F_Sint32Optional *int32 `protobuf:"zigzag32,302,opt,name=F_Sint32_optional,json=fSint32Optional" json:"F_Sint32_optional,omitempty"`
399 F_Sint64Optional *int64 `protobuf:"zigzag64,303,opt,name=F_Sint64_optional,json=fSint64Optional" json:"F_Sint64_optional,omitempty"`
386 F_BoolOptional *bool `protobuf:"varint,30,opt,name=F_Bool_optional,json=FBoolOptional" json:"F_Bool_optional,omitempty"`
387 F_Int32Optional *int32 `protobuf:"varint,31,opt,name=F_Int32_optional,json=FInt32Optional" json:"F_Int32_optional,omitempty"`
388 F_Int64Optional *int64 `protobuf:"varint,32,opt,name=F_Int64_optional,json=FInt64Optional" json:"F_Int64_optional,omitempty"`
389 F_Fixed32Optional *uint32 `protobuf:"fixed32,33,opt,name=F_Fixed32_optional,json=FFixed32Optional" json:"F_Fixed32_optional,omitempty"`
390 F_Fixed64Optional *uint64 `protobuf:"fixed64,34,opt,name=F_Fixed64_optional,json=FFixed64Optional" json:"F_Fixed64_optional,omitempty"`
391 F_Uint32Optional *uint32 `protobuf:"varint,35,opt,name=F_Uint32_optional,json=FUint32Optional" json:"F_Uint32_optional,omitempty"`
392 F_Uint64Optional *uint64 `protobuf:"varint,36,opt,name=F_Uint64_optional,json=FUint64Optional" json:"F_Uint64_optional,omitempty"`
393 F_FloatOptional *float32 `protobuf:"fixed32,37,opt,name=F_Float_optional,json=FFloatOptional" json:"F_Float_optional,omitempty"`
394 F_DoubleOptional *float64 `protobuf:"fixed64,38,opt,name=F_Double_optional,json=FDoubleOptional" json:"F_Double_optional,omitempty"`
395 F_StringOptional *string `protobuf:"bytes,39,opt,name=F_String_optional,json=FStringOptional" json:"F_String_optional,omitempty"`
396 F_BytesOptional []byte `protobuf:"bytes,301,opt,name=F_Bytes_optional,json=FBytesOptional" json:"F_Bytes_optional,omitempty"`
397 F_Sint32Optional *int32 `protobuf:"zigzag32,302,opt,name=F_Sint32_optional,json=FSint32Optional" json:"F_Sint32_optional,omitempty"`
398 F_Sint64Optional *int64 `protobuf:"zigzag64,303,opt,name=F_Sint64_optional,json=FSint64Optional" json:"F_Sint64_optional,omitempty"`
400399 // Default-valued fields of all basic types
401 F_BoolDefaulted *bool `protobuf:"varint,40,opt,name=F_Bool_defaulted,json=fBoolDefaulted,def=1" json:"F_Bool_defaulted,omitempty"`
402 F_Int32Defaulted *int32 `protobuf:"varint,41,opt,name=F_Int32_defaulted,json=fInt32Defaulted,def=32" json:"F_Int32_defaulted,omitempty"`
403 F_Int64Defaulted *int64 `protobuf:"varint,42,opt,name=F_Int64_defaulted,json=fInt64Defaulted,def=64" json:"F_Int64_defaulted,omitempty"`
404 F_Fixed32Defaulted *uint32 `protobuf:"fixed32,43,opt,name=F_Fixed32_defaulted,json=fFixed32Defaulted,def=320" json:"F_Fixed32_defaulted,omitempty"`
405 F_Fixed64Defaulted *uint64 `protobuf:"fixed64,44,opt,name=F_Fixed64_defaulted,json=fFixed64Defaulted,def=640" json:"F_Fixed64_defaulted,omitempty"`
406 F_Uint32Defaulted *uint32 `protobuf:"varint,45,opt,name=F_Uint32_defaulted,json=fUint32Defaulted,def=3200" json:"F_Uint32_defaulted,omitempty"`
407 F_Uint64Defaulted *uint64 `protobuf:"varint,46,opt,name=F_Uint64_defaulted,json=fUint64Defaulted,def=6400" json:"F_Uint64_defaulted,omitempty"`
408 F_FloatDefaulted *float32 `protobuf:"fixed32,47,opt,name=F_Float_defaulted,json=fFloatDefaulted,def=314159" json:"F_Float_defaulted,omitempty"`
409 F_DoubleDefaulted *float64 `protobuf:"fixed64,48,opt,name=F_Double_defaulted,json=fDoubleDefaulted,def=271828" json:"F_Double_defaulted,omitempty"`
410 F_StringDefaulted *string `protobuf:"bytes,49,opt,name=F_String_defaulted,json=fStringDefaulted,def=hello, \"world!\"\n" json:"F_String_defaulted,omitempty"`
411 F_BytesDefaulted []byte `protobuf:"bytes,401,opt,name=F_Bytes_defaulted,json=fBytesDefaulted,def=Bignose" json:"F_Bytes_defaulted,omitempty"`
412 F_Sint32Defaulted *int32 `protobuf:"zigzag32,402,opt,name=F_Sint32_defaulted,json=fSint32Defaulted,def=-32" json:"F_Sint32_defaulted,omitempty"`
413 F_Sint64Defaulted *int64 `protobuf:"zigzag64,403,opt,name=F_Sint64_defaulted,json=fSint64Defaulted,def=-64" json:"F_Sint64_defaulted,omitempty"`
400 F_BoolDefaulted *bool `protobuf:"varint,40,opt,name=F_Bool_defaulted,json=FBoolDefaulted,def=1" json:"F_Bool_defaulted,omitempty"`
401 F_Int32Defaulted *int32 `protobuf:"varint,41,opt,name=F_Int32_defaulted,json=FInt32Defaulted,def=32" json:"F_Int32_defaulted,omitempty"`
402 F_Int64Defaulted *int64 `protobuf:"varint,42,opt,name=F_Int64_defaulted,json=FInt64Defaulted,def=64" json:"F_Int64_defaulted,omitempty"`
403 F_Fixed32Defaulted *uint32 `protobuf:"fixed32,43,opt,name=F_Fixed32_defaulted,json=FFixed32Defaulted,def=320" json:"F_Fixed32_defaulted,omitempty"`
404 F_Fixed64Defaulted *uint64 `protobuf:"fixed64,44,opt,name=F_Fixed64_defaulted,json=FFixed64Defaulted,def=640" json:"F_Fixed64_defaulted,omitempty"`
405 F_Uint32Defaulted *uint32 `protobuf:"varint,45,opt,name=F_Uint32_defaulted,json=FUint32Defaulted,def=3200" json:"F_Uint32_defaulted,omitempty"`
406 F_Uint64Defaulted *uint64 `protobuf:"varint,46,opt,name=F_Uint64_defaulted,json=FUint64Defaulted,def=6400" json:"F_Uint64_defaulted,omitempty"`
407 F_FloatDefaulted *float32 `protobuf:"fixed32,47,opt,name=F_Float_defaulted,json=FFloatDefaulted,def=314159" json:"F_Float_defaulted,omitempty"`
408 F_DoubleDefaulted *float64 `protobuf:"fixed64,48,opt,name=F_Double_defaulted,json=FDoubleDefaulted,def=271828" json:"F_Double_defaulted,omitempty"`
409 F_StringDefaulted *string `protobuf:"bytes,49,opt,name=F_String_defaulted,json=FStringDefaulted,def=hello, \"world!\"\n" json:"F_String_defaulted,omitempty"`
410 F_BytesDefaulted []byte `protobuf:"bytes,401,opt,name=F_Bytes_defaulted,json=FBytesDefaulted,def=Bignose" json:"F_Bytes_defaulted,omitempty"`
411 F_Sint32Defaulted *int32 `protobuf:"zigzag32,402,opt,name=F_Sint32_defaulted,json=FSint32Defaulted,def=-32" json:"F_Sint32_defaulted,omitempty"`
412 F_Sint64Defaulted *int64 `protobuf:"zigzag64,403,opt,name=F_Sint64_defaulted,json=FSint64Defaulted,def=-64" json:"F_Sint64_defaulted,omitempty"`
414413 // Packed repeated fields (no string or bytes).
415 F_BoolRepeatedPacked []bool `protobuf:"varint,50,rep,packed,name=F_Bool_repeated_packed,json=fBoolRepeatedPacked" json:"F_Bool_repeated_packed,omitempty"`
416 F_Int32RepeatedPacked []int32 `protobuf:"varint,51,rep,packed,name=F_Int32_repeated_packed,json=fInt32RepeatedPacked" json:"F_Int32_repeated_packed,omitempty"`
417 F_Int64RepeatedPacked []int64 `protobuf:"varint,52,rep,packed,name=F_Int64_repeated_packed,json=fInt64RepeatedPacked" json:"F_Int64_repeated_packed,omitempty"`
418 F_Fixed32RepeatedPacked []uint32 `protobuf:"fixed32,53,rep,packed,name=F_Fixed32_repeated_packed,json=fFixed32RepeatedPacked" json:"F_Fixed32_repeated_packed,omitempty"`
419 F_Fixed64RepeatedPacked []uint64 `protobuf:"fixed64,54,rep,packed,name=F_Fixed64_repeated_packed,json=fFixed64RepeatedPacked" json:"F_Fixed64_repeated_packed,omitempty"`
420 F_Uint32RepeatedPacked []uint32 `protobuf:"varint,55,rep,packed,name=F_Uint32_repeated_packed,json=fUint32RepeatedPacked" json:"F_Uint32_repeated_packed,omitempty"`
421 F_Uint64RepeatedPacked []uint64 `protobuf:"varint,56,rep,packed,name=F_Uint64_repeated_packed,json=fUint64RepeatedPacked" json:"F_Uint64_repeated_packed,omitempty"`
422 F_FloatRepeatedPacked []float32 `protobuf:"fixed32,57,rep,packed,name=F_Float_repeated_packed,json=fFloatRepeatedPacked" json:"F_Float_repeated_packed,omitempty"`
423 F_DoubleRepeatedPacked []float64 `protobuf:"fixed64,58,rep,packed,name=F_Double_repeated_packed,json=fDoubleRepeatedPacked" json:"F_Double_repeated_packed,omitempty"`
424 F_Sint32RepeatedPacked []int32 `protobuf:"zigzag32,502,rep,packed,name=F_Sint32_repeated_packed,json=fSint32RepeatedPacked" json:"F_Sint32_repeated_packed,omitempty"`
425 F_Sint64RepeatedPacked []int64 `protobuf:"zigzag64,503,rep,packed,name=F_Sint64_repeated_packed,json=fSint64RepeatedPacked" json:"F_Sint64_repeated_packed,omitempty"`
414 F_BoolRepeatedPacked []bool `protobuf:"varint,50,rep,packed,name=F_Bool_repeated_packed,json=FBoolRepeatedPacked" json:"F_Bool_repeated_packed,omitempty"`
415 F_Int32RepeatedPacked []int32 `protobuf:"varint,51,rep,packed,name=F_Int32_repeated_packed,json=FInt32RepeatedPacked" json:"F_Int32_repeated_packed,omitempty"`
416 F_Int64RepeatedPacked []int64 `protobuf:"varint,52,rep,packed,name=F_Int64_repeated_packed,json=FInt64RepeatedPacked" json:"F_Int64_repeated_packed,omitempty"`
417 F_Fixed32RepeatedPacked []uint32 `protobuf:"fixed32,53,rep,packed,name=F_Fixed32_repeated_packed,json=FFixed32RepeatedPacked" json:"F_Fixed32_repeated_packed,omitempty"`
418 F_Fixed64RepeatedPacked []uint64 `protobuf:"fixed64,54,rep,packed,name=F_Fixed64_repeated_packed,json=FFixed64RepeatedPacked" json:"F_Fixed64_repeated_packed,omitempty"`
419 F_Uint32RepeatedPacked []uint32 `protobuf:"varint,55,rep,packed,name=F_Uint32_repeated_packed,json=FUint32RepeatedPacked" json:"F_Uint32_repeated_packed,omitempty"`
420 F_Uint64RepeatedPacked []uint64 `protobuf:"varint,56,rep,packed,name=F_Uint64_repeated_packed,json=FUint64RepeatedPacked" json:"F_Uint64_repeated_packed,omitempty"`
421 F_FloatRepeatedPacked []float32 `protobuf:"fixed32,57,rep,packed,name=F_Float_repeated_packed,json=FFloatRepeatedPacked" json:"F_Float_repeated_packed,omitempty"`
422 F_DoubleRepeatedPacked []float64 `protobuf:"fixed64,58,rep,packed,name=F_Double_repeated_packed,json=FDoubleRepeatedPacked" json:"F_Double_repeated_packed,omitempty"`
423 F_Sint32RepeatedPacked []int32 `protobuf:"zigzag32,502,rep,packed,name=F_Sint32_repeated_packed,json=FSint32RepeatedPacked" json:"F_Sint32_repeated_packed,omitempty"`
424 F_Sint64RepeatedPacked []int64 `protobuf:"zigzag64,503,rep,packed,name=F_Sint64_repeated_packed,json=FSint64RepeatedPacked" json:"F_Sint64_repeated_packed,omitempty"`
426425 Requiredgroup *GoTest_RequiredGroup `protobuf:"group,70,req,name=RequiredGroup,json=requiredgroup" json:"requiredgroup,omitempty"`
427426 Repeatedgroup []*GoTest_RepeatedGroup `protobuf:"group,80,rep,name=RepeatedGroup,json=repeatedgroup" json:"repeatedgroup,omitempty"`
428427 Optionalgroup *GoTest_OptionalGroup `protobuf:"group,90,opt,name=OptionalGroup,json=optionalgroup" json:"optionalgroup,omitempty"`
956955
957956 // Required, repeated, and optional groups.
958957 type GoTest_RequiredGroup struct {
959 RequiredField *string `protobuf:"bytes,71,req,name=RequiredField,json=requiredField" json:"RequiredField,omitempty"`
958 RequiredField *string `protobuf:"bytes,71,req,name=RequiredField" json:"RequiredField,omitempty"`
960959 XXX_unrecognized []byte `json:"-"`
961960 }
962961
973972 }
974973
975974 type GoTest_RepeatedGroup struct {
976 RequiredField *string `protobuf:"bytes,81,req,name=RequiredField,json=requiredField" json:"RequiredField,omitempty"`
975 RequiredField *string `protobuf:"bytes,81,req,name=RequiredField" json:"RequiredField,omitempty"`
977976 XXX_unrecognized []byte `json:"-"`
978977 }
979978
990989 }
991990
992991 type GoTest_OptionalGroup struct {
993 RequiredField *string `protobuf:"bytes,91,req,name=RequiredField,json=requiredField" json:"RequiredField,omitempty"`
992 RequiredField *string `protobuf:"bytes,91,req,name=RequiredField" json:"RequiredField,omitempty"`
994993 XXX_unrecognized []byte `json:"-"`
995994 }
996995
10251024 }
10261025
10271026 type GoTestRequiredGroupField_Group struct {
1028 Field *int32 `protobuf:"varint,2,req,name=Field,json=field" json:"Field,omitempty"`
1027 Field *int32 `protobuf:"varint,2,req,name=Field" json:"Field,omitempty"`
10291028 XXX_unrecognized []byte `json:"-"`
10301029 }
10311030
15261525 Field: 103,
15271526 Name: "testdata.Ext.more",
15281527 Tag: "bytes,103,opt,name=more",
1528 Filename: "test.proto",
15291529 }
15301530
15311531 var E_Ext_Text = &proto.ExtensionDesc{
15341534 Field: 104,
15351535 Name: "testdata.Ext.text",
15361536 Tag: "bytes,104,opt,name=text",
1537 Filename: "test.proto",
15371538 }
15381539
15391540 var E_Ext_Number = &proto.ExtensionDesc{
15421543 Field: 105,
15431544 Name: "testdata.Ext.number",
15441545 Tag: "varint,105,opt,name=number",
1546 Filename: "test.proto",
15451547 }
15461548
15471549 type ComplexExtension struct {
17091711 type Defaults struct {
17101712 // Default-valued fields of all basic types.
17111713 // Same as GoTest, but copied here to make testing easier.
1712 F_Bool *bool `protobuf:"varint,1,opt,name=F_Bool,json=fBool,def=1" json:"F_Bool,omitempty"`
1713 F_Int32 *int32 `protobuf:"varint,2,opt,name=F_Int32,json=fInt32,def=32" json:"F_Int32,omitempty"`
1714 F_Int64 *int64 `protobuf:"varint,3,opt,name=F_Int64,json=fInt64,def=64" json:"F_Int64,omitempty"`
1715 F_Fixed32 *uint32 `protobuf:"fixed32,4,opt,name=F_Fixed32,json=fFixed32,def=320" json:"F_Fixed32,omitempty"`
1716 F_Fixed64 *uint64 `protobuf:"fixed64,5,opt,name=F_Fixed64,json=fFixed64,def=640" json:"F_Fixed64,omitempty"`
1717 F_Uint32 *uint32 `protobuf:"varint,6,opt,name=F_Uint32,json=fUint32,def=3200" json:"F_Uint32,omitempty"`
1718 F_Uint64 *uint64 `protobuf:"varint,7,opt,name=F_Uint64,json=fUint64,def=6400" json:"F_Uint64,omitempty"`
1719 F_Float *float32 `protobuf:"fixed32,8,opt,name=F_Float,json=fFloat,def=314159" json:"F_Float,omitempty"`
1720 F_Double *float64 `protobuf:"fixed64,9,opt,name=F_Double,json=fDouble,def=271828" json:"F_Double,omitempty"`
1721 F_String *string `protobuf:"bytes,10,opt,name=F_String,json=fString,def=hello, \"world!\"\n" json:"F_String,omitempty"`
1722 F_Bytes []byte `protobuf:"bytes,11,opt,name=F_Bytes,json=fBytes,def=Bignose" json:"F_Bytes,omitempty"`
1723 F_Sint32 *int32 `protobuf:"zigzag32,12,opt,name=F_Sint32,json=fSint32,def=-32" json:"F_Sint32,omitempty"`
1724 F_Sint64 *int64 `protobuf:"zigzag64,13,opt,name=F_Sint64,json=fSint64,def=-64" json:"F_Sint64,omitempty"`
1725 F_Enum *Defaults_Color `protobuf:"varint,14,opt,name=F_Enum,json=fEnum,enum=testdata.Defaults_Color,def=1" json:"F_Enum,omitempty"`
1714 F_Bool *bool `protobuf:"varint,1,opt,name=F_Bool,json=FBool,def=1" json:"F_Bool,omitempty"`
1715 F_Int32 *int32 `protobuf:"varint,2,opt,name=F_Int32,json=FInt32,def=32" json:"F_Int32,omitempty"`
1716 F_Int64 *int64 `protobuf:"varint,3,opt,name=F_Int64,json=FInt64,def=64" json:"F_Int64,omitempty"`
1717 F_Fixed32 *uint32 `protobuf:"fixed32,4,opt,name=F_Fixed32,json=FFixed32,def=320" json:"F_Fixed32,omitempty"`
1718 F_Fixed64 *uint64 `protobuf:"fixed64,5,opt,name=F_Fixed64,json=FFixed64,def=640" json:"F_Fixed64,omitempty"`
1719 F_Uint32 *uint32 `protobuf:"varint,6,opt,name=F_Uint32,json=FUint32,def=3200" json:"F_Uint32,omitempty"`
1720 F_Uint64 *uint64 `protobuf:"varint,7,opt,name=F_Uint64,json=FUint64,def=6400" json:"F_Uint64,omitempty"`
1721 F_Float *float32 `protobuf:"fixed32,8,opt,name=F_Float,json=FFloat,def=314159" json:"F_Float,omitempty"`
1722 F_Double *float64 `protobuf:"fixed64,9,opt,name=F_Double,json=FDouble,def=271828" json:"F_Double,omitempty"`
1723 F_String *string `protobuf:"bytes,10,opt,name=F_String,json=FString,def=hello, \"world!\"\n" json:"F_String,omitempty"`
1724 F_Bytes []byte `protobuf:"bytes,11,opt,name=F_Bytes,json=FBytes,def=Bignose" json:"F_Bytes,omitempty"`
1725 F_Sint32 *int32 `protobuf:"zigzag32,12,opt,name=F_Sint32,json=FSint32,def=-32" json:"F_Sint32,omitempty"`
1726 F_Sint64 *int64 `protobuf:"zigzag64,13,opt,name=F_Sint64,json=FSint64,def=-64" json:"F_Sint64,omitempty"`
1727 F_Enum *Defaults_Color `protobuf:"varint,14,opt,name=F_Enum,json=FEnum,enum=testdata.Defaults_Color,def=1" json:"F_Enum,omitempty"`
17261728 // More fields with crazy defaults.
1727 F_Pinf *float32 `protobuf:"fixed32,15,opt,name=F_Pinf,json=fPinf,def=inf" json:"F_Pinf,omitempty"`
1728 F_Ninf *float32 `protobuf:"fixed32,16,opt,name=F_Ninf,json=fNinf,def=-inf" json:"F_Ninf,omitempty"`
1729 F_Nan *float32 `protobuf:"fixed32,17,opt,name=F_Nan,json=fNan,def=nan" json:"F_Nan,omitempty"`
1729 F_Pinf *float32 `protobuf:"fixed32,15,opt,name=F_Pinf,json=FPinf,def=inf" json:"F_Pinf,omitempty"`
1730 F_Ninf *float32 `protobuf:"fixed32,16,opt,name=F_Ninf,json=FNinf,def=-inf" json:"F_Ninf,omitempty"`
1731 F_Nan *float32 `protobuf:"fixed32,17,opt,name=F_Nan,json=FNan,def=nan" json:"F_Nan,omitempty"`
17301732 // Sub-message.
17311733 Sub *SubDefaults `protobuf:"bytes,18,opt,name=sub" json:"sub,omitempty"`
17321734 // Redundant but explicit defaults.
21752177 }
21762178
21772179 type Oneof_F_Bool struct {
2178 F_Bool bool `protobuf:"varint,1,opt,name=F_Bool,json=fBool,oneof"`
2180 F_Bool bool `protobuf:"varint,1,opt,name=F_Bool,json=FBool,oneof"`
21792181 }
21802182 type Oneof_F_Int32 struct {
2181 F_Int32 int32 `protobuf:"varint,2,opt,name=F_Int32,json=fInt32,oneof"`
2183 F_Int32 int32 `protobuf:"varint,2,opt,name=F_Int32,json=FInt32,oneof"`
21822184 }
21832185 type Oneof_F_Int64 struct {
2184 F_Int64 int64 `protobuf:"varint,3,opt,name=F_Int64,json=fInt64,oneof"`
2186 F_Int64 int64 `protobuf:"varint,3,opt,name=F_Int64,json=FInt64,oneof"`
21852187 }
21862188 type Oneof_F_Fixed32 struct {
2187 F_Fixed32 uint32 `protobuf:"fixed32,4,opt,name=F_Fixed32,json=fFixed32,oneof"`
2189 F_Fixed32 uint32 `protobuf:"fixed32,4,opt,name=F_Fixed32,json=FFixed32,oneof"`
21882190 }
21892191 type Oneof_F_Fixed64 struct {
2190 F_Fixed64 uint64 `protobuf:"fixed64,5,opt,name=F_Fixed64,json=fFixed64,oneof"`
2192 F_Fixed64 uint64 `protobuf:"fixed64,5,opt,name=F_Fixed64,json=FFixed64,oneof"`
21912193 }
21922194 type Oneof_F_Uint32 struct {
2193 F_Uint32 uint32 `protobuf:"varint,6,opt,name=F_Uint32,json=fUint32,oneof"`
2195 F_Uint32 uint32 `protobuf:"varint,6,opt,name=F_Uint32,json=FUint32,oneof"`
21942196 }
21952197 type Oneof_F_Uint64 struct {
2196 F_Uint64 uint64 `protobuf:"varint,7,opt,name=F_Uint64,json=fUint64,oneof"`
2198 F_Uint64 uint64 `protobuf:"varint,7,opt,name=F_Uint64,json=FUint64,oneof"`
21972199 }
21982200 type Oneof_F_Float struct {
2199 F_Float float32 `protobuf:"fixed32,8,opt,name=F_Float,json=fFloat,oneof"`
2201 F_Float float32 `protobuf:"fixed32,8,opt,name=F_Float,json=FFloat,oneof"`
22002202 }
22012203 type Oneof_F_Double struct {
2202 F_Double float64 `protobuf:"fixed64,9,opt,name=F_Double,json=fDouble,oneof"`
2204 F_Double float64 `protobuf:"fixed64,9,opt,name=F_Double,json=FDouble,oneof"`
22032205 }
22042206 type Oneof_F_String struct {
2205 F_String string `protobuf:"bytes,10,opt,name=F_String,json=fString,oneof"`
2207 F_String string `protobuf:"bytes,10,opt,name=F_String,json=FString,oneof"`
22062208 }
22072209 type Oneof_F_Bytes struct {
2208 F_Bytes []byte `protobuf:"bytes,11,opt,name=F_Bytes,json=fBytes,oneof"`
2210 F_Bytes []byte `protobuf:"bytes,11,opt,name=F_Bytes,json=FBytes,oneof"`
22092211 }
22102212 type Oneof_F_Sint32 struct {
2211 F_Sint32 int32 `protobuf:"zigzag32,12,opt,name=F_Sint32,json=fSint32,oneof"`
2213 F_Sint32 int32 `protobuf:"zigzag32,12,opt,name=F_Sint32,json=FSint32,oneof"`
22122214 }
22132215 type Oneof_F_Sint64 struct {
2214 F_Sint64 int64 `protobuf:"zigzag64,13,opt,name=F_Sint64,json=fSint64,oneof"`
2216 F_Sint64 int64 `protobuf:"zigzag64,13,opt,name=F_Sint64,json=FSint64,oneof"`
22152217 }
22162218 type Oneof_F_Enum struct {
2217 F_Enum MyMessage_Color `protobuf:"varint,14,opt,name=F_Enum,json=fEnum,enum=testdata.MyMessage_Color,oneof"`
2219 F_Enum MyMessage_Color `protobuf:"varint,14,opt,name=F_Enum,json=FEnum,enum=testdata.MyMessage_Color,oneof"`
22182220 }
22192221 type Oneof_F_Message struct {
2220 F_Message *GoTestField `protobuf:"bytes,15,opt,name=F_Message,json=fMessage,oneof"`
2222 F_Message *GoTestField `protobuf:"bytes,15,opt,name=F_Message,json=FMessage,oneof"`
22212223 }
22222224 type Oneof_FGroup struct {
22232225 FGroup *Oneof_F_Group `protobuf:"group,16,opt,name=F_Group,json=fGroup,oneof"`
22242226 }
22252227 type Oneof_F_Largest_Tag struct {
2226 F_Largest_Tag int32 `protobuf:"varint,536870911,opt,name=F_Largest_Tag,json=fLargestTag,oneof"`
2228 F_Largest_Tag int32 `protobuf:"varint,536870911,opt,name=F_Largest_Tag,json=FLargestTag,oneof"`
22272229 }
22282230 type Oneof_Value struct {
22292231 Value int32 `protobuf:"varint,100,opt,name=value,oneof"`
29592961 Field: 106,
29602962 Name: "testdata.greeting",
29612963 Tag: "bytes,106,rep,name=greeting",
2964 Filename: "test.proto",
29622965 }
29632966
29642967 var E_Complex = &proto.ExtensionDesc{
29672970 Field: 200,
29682971 Name: "testdata.complex",
29692972 Tag: "bytes,200,opt,name=complex",
2973 Filename: "test.proto",
29702974 }
29712975
29722976 var E_RComplex = &proto.ExtensionDesc{
29752979 Field: 201,
29762980 Name: "testdata.r_complex",
29772981 Tag: "bytes,201,rep,name=r_complex,json=rComplex",
2982 Filename: "test.proto",
29782983 }
29792984
29802985 var E_NoDefaultDouble = &proto.ExtensionDesc{
29832988 Field: 101,
29842989 Name: "testdata.no_default_double",
29852990 Tag: "fixed64,101,opt,name=no_default_double,json=noDefaultDouble",
2991 Filename: "test.proto",
29862992 }
29872993
29882994 var E_NoDefaultFloat = &proto.ExtensionDesc{
29912997 Field: 102,
29922998 Name: "testdata.no_default_float",
29932999 Tag: "fixed32,102,opt,name=no_default_float,json=noDefaultFloat",
3000 Filename: "test.proto",
29943001 }
29953002
29963003 var E_NoDefaultInt32 = &proto.ExtensionDesc{
29993006 Field: 103,
30003007 Name: "testdata.no_default_int32",
30013008 Tag: "varint,103,opt,name=no_default_int32,json=noDefaultInt32",
3009 Filename: "test.proto",
30023010 }
30033011
30043012 var E_NoDefaultInt64 = &proto.ExtensionDesc{
30073015 Field: 104,
30083016 Name: "testdata.no_default_int64",
30093017 Tag: "varint,104,opt,name=no_default_int64,json=noDefaultInt64",
3018 Filename: "test.proto",
30103019 }
30113020
30123021 var E_NoDefaultUint32 = &proto.ExtensionDesc{
30153024 Field: 105,
30163025 Name: "testdata.no_default_uint32",
30173026 Tag: "varint,105,opt,name=no_default_uint32,json=noDefaultUint32",
3027 Filename: "test.proto",
30183028 }
30193029
30203030 var E_NoDefaultUint64 = &proto.ExtensionDesc{
30233033 Field: 106,
30243034 Name: "testdata.no_default_uint64",
30253035 Tag: "varint,106,opt,name=no_default_uint64,json=noDefaultUint64",
3036 Filename: "test.proto",
30263037 }
30273038
30283039 var E_NoDefaultSint32 = &proto.ExtensionDesc{
30313042 Field: 107,
30323043 Name: "testdata.no_default_sint32",
30333044 Tag: "zigzag32,107,opt,name=no_default_sint32,json=noDefaultSint32",
3045 Filename: "test.proto",
30343046 }
30353047
30363048 var E_NoDefaultSint64 = &proto.ExtensionDesc{
30393051 Field: 108,
30403052 Name: "testdata.no_default_sint64",
30413053 Tag: "zigzag64,108,opt,name=no_default_sint64,json=noDefaultSint64",
3054 Filename: "test.proto",
30423055 }
30433056
30443057 var E_NoDefaultFixed32 = &proto.ExtensionDesc{
30473060 Field: 109,
30483061 Name: "testdata.no_default_fixed32",
30493062 Tag: "fixed32,109,opt,name=no_default_fixed32,json=noDefaultFixed32",
3063 Filename: "test.proto",
30503064 }
30513065
30523066 var E_NoDefaultFixed64 = &proto.ExtensionDesc{
30553069 Field: 110,
30563070 Name: "testdata.no_default_fixed64",
30573071 Tag: "fixed64,110,opt,name=no_default_fixed64,json=noDefaultFixed64",
3072 Filename: "test.proto",
30583073 }
30593074
30603075 var E_NoDefaultSfixed32 = &proto.ExtensionDesc{
30633078 Field: 111,
30643079 Name: "testdata.no_default_sfixed32",
30653080 Tag: "fixed32,111,opt,name=no_default_sfixed32,json=noDefaultSfixed32",
3081 Filename: "test.proto",
30663082 }
30673083
30683084 var E_NoDefaultSfixed64 = &proto.ExtensionDesc{
30713087 Field: 112,
30723088 Name: "testdata.no_default_sfixed64",
30733089 Tag: "fixed64,112,opt,name=no_default_sfixed64,json=noDefaultSfixed64",
3090 Filename: "test.proto",
30743091 }
30753092
30763093 var E_NoDefaultBool = &proto.ExtensionDesc{
30793096 Field: 113,
30803097 Name: "testdata.no_default_bool",
30813098 Tag: "varint,113,opt,name=no_default_bool,json=noDefaultBool",
3099 Filename: "test.proto",
30823100 }
30833101
30843102 var E_NoDefaultString = &proto.ExtensionDesc{
30873105 Field: 114,
30883106 Name: "testdata.no_default_string",
30893107 Tag: "bytes,114,opt,name=no_default_string,json=noDefaultString",
3108 Filename: "test.proto",
30903109 }
30913110
30923111 var E_NoDefaultBytes = &proto.ExtensionDesc{
30953114 Field: 115,
30963115 Name: "testdata.no_default_bytes",
30973116 Tag: "bytes,115,opt,name=no_default_bytes,json=noDefaultBytes",
3117 Filename: "test.proto",
30983118 }
30993119
31003120 var E_NoDefaultEnum = &proto.ExtensionDesc{
31033123 Field: 116,
31043124 Name: "testdata.no_default_enum",
31053125 Tag: "varint,116,opt,name=no_default_enum,json=noDefaultEnum,enum=testdata.DefaultsMessage_DefaultsEnum",
3126 Filename: "test.proto",
31063127 }
31073128
31083129 var E_DefaultDouble = &proto.ExtensionDesc{
31113132 Field: 201,
31123133 Name: "testdata.default_double",
31133134 Tag: "fixed64,201,opt,name=default_double,json=defaultDouble,def=3.1415",
3135 Filename: "test.proto",
31143136 }
31153137
31163138 var E_DefaultFloat = &proto.ExtensionDesc{
31193141 Field: 202,
31203142 Name: "testdata.default_float",
31213143 Tag: "fixed32,202,opt,name=default_float,json=defaultFloat,def=3.14",
3144 Filename: "test.proto",
31223145 }
31233146
31243147 var E_DefaultInt32 = &proto.ExtensionDesc{
31273150 Field: 203,
31283151 Name: "testdata.default_int32",
31293152 Tag: "varint,203,opt,name=default_int32,json=defaultInt32,def=42",
3153 Filename: "test.proto",
31303154 }
31313155
31323156 var E_DefaultInt64 = &proto.ExtensionDesc{
31353159 Field: 204,
31363160 Name: "testdata.default_int64",
31373161 Tag: "varint,204,opt,name=default_int64,json=defaultInt64,def=43",
3162 Filename: "test.proto",
31383163 }
31393164
31403165 var E_DefaultUint32 = &proto.ExtensionDesc{
31433168 Field: 205,
31443169 Name: "testdata.default_uint32",
31453170 Tag: "varint,205,opt,name=default_uint32,json=defaultUint32,def=44",
3171 Filename: "test.proto",
31463172 }
31473173
31483174 var E_DefaultUint64 = &proto.ExtensionDesc{
31513177 Field: 206,
31523178 Name: "testdata.default_uint64",
31533179 Tag: "varint,206,opt,name=default_uint64,json=defaultUint64,def=45",
3180 Filename: "test.proto",
31543181 }
31553182
31563183 var E_DefaultSint32 = &proto.ExtensionDesc{
31593186 Field: 207,
31603187 Name: "testdata.default_sint32",
31613188 Tag: "zigzag32,207,opt,name=default_sint32,json=defaultSint32,def=46",
3189 Filename: "test.proto",
31623190 }
31633191
31643192 var E_DefaultSint64 = &proto.ExtensionDesc{
31673195 Field: 208,
31683196 Name: "testdata.default_sint64",
31693197 Tag: "zigzag64,208,opt,name=default_sint64,json=defaultSint64,def=47",
3198 Filename: "test.proto",
31703199 }
31713200
31723201 var E_DefaultFixed32 = &proto.ExtensionDesc{
31753204 Field: 209,
31763205 Name: "testdata.default_fixed32",
31773206 Tag: "fixed32,209,opt,name=default_fixed32,json=defaultFixed32,def=48",
3207 Filename: "test.proto",
31783208 }
31793209
31803210 var E_DefaultFixed64 = &proto.ExtensionDesc{
31833213 Field: 210,
31843214 Name: "testdata.default_fixed64",
31853215 Tag: "fixed64,210,opt,name=default_fixed64,json=defaultFixed64,def=49",
3216 Filename: "test.proto",
31863217 }
31873218
31883219 var E_DefaultSfixed32 = &proto.ExtensionDesc{
31913222 Field: 211,
31923223 Name: "testdata.default_sfixed32",
31933224 Tag: "fixed32,211,opt,name=default_sfixed32,json=defaultSfixed32,def=50",
3225 Filename: "test.proto",
31943226 }
31953227
31963228 var E_DefaultSfixed64 = &proto.ExtensionDesc{
31993231 Field: 212,
32003232 Name: "testdata.default_sfixed64",
32013233 Tag: "fixed64,212,opt,name=default_sfixed64,json=defaultSfixed64,def=51",
3234 Filename: "test.proto",
32023235 }
32033236
32043237 var E_DefaultBool = &proto.ExtensionDesc{
32073240 Field: 213,
32083241 Name: "testdata.default_bool",
32093242 Tag: "varint,213,opt,name=default_bool,json=defaultBool,def=1",
3243 Filename: "test.proto",
32103244 }
32113245
32123246 var E_DefaultString = &proto.ExtensionDesc{
32153249 Field: 214,
32163250 Name: "testdata.default_string",
32173251 Tag: "bytes,214,opt,name=default_string,json=defaultString,def=Hello, string",
3252 Filename: "test.proto",
32183253 }
32193254
32203255 var E_DefaultBytes = &proto.ExtensionDesc{
32233258 Field: 215,
32243259 Name: "testdata.default_bytes",
32253260 Tag: "bytes,215,opt,name=default_bytes,json=defaultBytes,def=Hello, bytes",
3261 Filename: "test.proto",
32263262 }
32273263
32283264 var E_DefaultEnum = &proto.ExtensionDesc{
32313267 Field: 216,
32323268 Name: "testdata.default_enum",
32333269 Tag: "varint,216,opt,name=default_enum,json=defaultEnum,enum=testdata.DefaultsMessage_DefaultsEnum,def=1",
3270 Filename: "test.proto",
32343271 }
32353272
32363273 var E_X201 = &proto.ExtensionDesc{
32393276 Field: 201,
32403277 Name: "testdata.x201",
32413278 Tag: "bytes,201,opt,name=x201",
3279 Filename: "test.proto",
32423280 }
32433281
32443282 var E_X202 = &proto.ExtensionDesc{
32473285 Field: 202,
32483286 Name: "testdata.x202",
32493287 Tag: "bytes,202,opt,name=x202",
3288 Filename: "test.proto",
32503289 }
32513290
32523291 var E_X203 = &proto.ExtensionDesc{
32553294 Field: 203,
32563295 Name: "testdata.x203",
32573296 Tag: "bytes,203,opt,name=x203",
3297 Filename: "test.proto",
32583298 }
32593299
32603300 var E_X204 = &proto.ExtensionDesc{
32633303 Field: 204,
32643304 Name: "testdata.x204",
32653305 Tag: "bytes,204,opt,name=x204",
3306 Filename: "test.proto",
32663307 }
32673308
32683309 var E_X205 = &proto.ExtensionDesc{
32713312 Field: 205,
32723313 Name: "testdata.x205",
32733314 Tag: "bytes,205,opt,name=x205",
3315 Filename: "test.proto",
32743316 }
32753317
32763318 var E_X206 = &proto.ExtensionDesc{
32793321 Field: 206,
32803322 Name: "testdata.x206",
32813323 Tag: "bytes,206,opt,name=x206",
3324 Filename: "test.proto",
32823325 }
32833326
32843327 var E_X207 = &proto.ExtensionDesc{
32873330 Field: 207,
32883331 Name: "testdata.x207",
32893332 Tag: "bytes,207,opt,name=x207",
3333 Filename: "test.proto",
32903334 }
32913335
32923336 var E_X208 = &proto.ExtensionDesc{
32953339 Field: 208,
32963340 Name: "testdata.x208",
32973341 Tag: "bytes,208,opt,name=x208",
3342 Filename: "test.proto",
32983343 }
32993344
33003345 var E_X209 = &proto.ExtensionDesc{
33033348 Field: 209,
33043349 Name: "testdata.x209",
33053350 Tag: "bytes,209,opt,name=x209",
3351 Filename: "test.proto",
33063352 }
33073353
33083354 var E_X210 = &proto.ExtensionDesc{
33113357 Field: 210,
33123358 Name: "testdata.x210",
33133359 Tag: "bytes,210,opt,name=x210",
3360 Filename: "test.proto",
33143361 }
33153362
33163363 var E_X211 = &proto.ExtensionDesc{
33193366 Field: 211,
33203367 Name: "testdata.x211",
33213368 Tag: "bytes,211,opt,name=x211",
3369 Filename: "test.proto",
33223370 }
33233371
33243372 var E_X212 = &proto.ExtensionDesc{
33273375 Field: 212,
33283376 Name: "testdata.x212",
33293377 Tag: "bytes,212,opt,name=x212",
3378 Filename: "test.proto",
33303379 }
33313380
33323381 var E_X213 = &proto.ExtensionDesc{
33353384 Field: 213,
33363385 Name: "testdata.x213",
33373386 Tag: "bytes,213,opt,name=x213",
3387 Filename: "test.proto",
33383388 }
33393389
33403390 var E_X214 = &proto.ExtensionDesc{
33433393 Field: 214,
33443394 Name: "testdata.x214",
33453395 Tag: "bytes,214,opt,name=x214",
3396 Filename: "test.proto",
33463397 }
33473398
33483399 var E_X215 = &proto.ExtensionDesc{
33513402 Field: 215,
33523403 Name: "testdata.x215",
33533404 Tag: "bytes,215,opt,name=x215",
3405 Filename: "test.proto",
33543406 }
33553407
33563408 var E_X216 = &proto.ExtensionDesc{
33593411 Field: 216,
33603412 Name: "testdata.x216",
33613413 Tag: "bytes,216,opt,name=x216",
3414 Filename: "test.proto",
33623415 }
33633416
33643417 var E_X217 = &proto.ExtensionDesc{
33673420 Field: 217,
33683421 Name: "testdata.x217",
33693422 Tag: "bytes,217,opt,name=x217",
3423 Filename: "test.proto",
33703424 }
33713425
33723426 var E_X218 = &proto.ExtensionDesc{
33753429 Field: 218,
33763430 Name: "testdata.x218",
33773431 Tag: "bytes,218,opt,name=x218",
3432 Filename: "test.proto",
33783433 }
33793434
33803435 var E_X219 = &proto.ExtensionDesc{
33833438 Field: 219,
33843439 Name: "testdata.x219",
33853440 Tag: "bytes,219,opt,name=x219",
3441 Filename: "test.proto",
33863442 }
33873443
33883444 var E_X220 = &proto.ExtensionDesc{
33913447 Field: 220,
33923448 Name: "testdata.x220",
33933449 Tag: "bytes,220,opt,name=x220",
3450 Filename: "test.proto",
33943451 }
33953452
33963453 var E_X221 = &proto.ExtensionDesc{
33993456 Field: 221,
34003457 Name: "testdata.x221",
34013458 Tag: "bytes,221,opt,name=x221",
3459 Filename: "test.proto",
34023460 }
34033461
34043462 var E_X222 = &proto.ExtensionDesc{
34073465 Field: 222,
34083466 Name: "testdata.x222",
34093467 Tag: "bytes,222,opt,name=x222",
3468 Filename: "test.proto",
34103469 }
34113470
34123471 var E_X223 = &proto.ExtensionDesc{
34153474 Field: 223,
34163475 Name: "testdata.x223",
34173476 Tag: "bytes,223,opt,name=x223",
3477 Filename: "test.proto",
34183478 }
34193479
34203480 var E_X224 = &proto.ExtensionDesc{
34233483 Field: 224,
34243484 Name: "testdata.x224",
34253485 Tag: "bytes,224,opt,name=x224",
3486 Filename: "test.proto",
34263487 }
34273488
34283489 var E_X225 = &proto.ExtensionDesc{
34313492 Field: 225,
34323493 Name: "testdata.x225",
34333494 Tag: "bytes,225,opt,name=x225",
3495 Filename: "test.proto",
34343496 }
34353497
34363498 var E_X226 = &proto.ExtensionDesc{
34393501 Field: 226,
34403502 Name: "testdata.x226",
34413503 Tag: "bytes,226,opt,name=x226",
3504 Filename: "test.proto",
34423505 }
34433506
34443507 var E_X227 = &proto.ExtensionDesc{
34473510 Field: 227,
34483511 Name: "testdata.x227",
34493512 Tag: "bytes,227,opt,name=x227",
3513 Filename: "test.proto",
34503514 }
34513515
34523516 var E_X228 = &proto.ExtensionDesc{
34553519 Field: 228,
34563520 Name: "testdata.x228",
34573521 Tag: "bytes,228,opt,name=x228",
3522 Filename: "test.proto",
34583523 }
34593524
34603525 var E_X229 = &proto.ExtensionDesc{
34633528 Field: 229,
34643529 Name: "testdata.x229",
34653530 Tag: "bytes,229,opt,name=x229",
3531 Filename: "test.proto",
34663532 }
34673533
34683534 var E_X230 = &proto.ExtensionDesc{
34713537 Field: 230,
34723538 Name: "testdata.x230",
34733539 Tag: "bytes,230,opt,name=x230",
3540 Filename: "test.proto",
34743541 }
34753542
34763543 var E_X231 = &proto.ExtensionDesc{
34793546 Field: 231,
34803547 Name: "testdata.x231",
34813548 Tag: "bytes,231,opt,name=x231",
3549 Filename: "test.proto",
34823550 }
34833551
34843552 var E_X232 = &proto.ExtensionDesc{
34873555 Field: 232,
34883556 Name: "testdata.x232",
34893557 Tag: "bytes,232,opt,name=x232",
3558 Filename: "test.proto",
34903559 }
34913560
34923561 var E_X233 = &proto.ExtensionDesc{
34953564 Field: 233,
34963565 Name: "testdata.x233",
34973566 Tag: "bytes,233,opt,name=x233",
3567 Filename: "test.proto",
34983568 }
34993569
35003570 var E_X234 = &proto.ExtensionDesc{
35033573 Field: 234,
35043574 Name: "testdata.x234",
35053575 Tag: "bytes,234,opt,name=x234",
3576 Filename: "test.proto",
35063577 }
35073578
35083579 var E_X235 = &proto.ExtensionDesc{
35113582 Field: 235,
35123583 Name: "testdata.x235",
35133584 Tag: "bytes,235,opt,name=x235",
3585 Filename: "test.proto",
35143586 }
35153587
35163588 var E_X236 = &proto.ExtensionDesc{
35193591 Field: 236,
35203592 Name: "testdata.x236",
35213593 Tag: "bytes,236,opt,name=x236",
3594 Filename: "test.proto",
35223595 }
35233596
35243597 var E_X237 = &proto.ExtensionDesc{
35273600 Field: 237,
35283601 Name: "testdata.x237",
35293602 Tag: "bytes,237,opt,name=x237",
3603 Filename: "test.proto",
35303604 }
35313605
35323606 var E_X238 = &proto.ExtensionDesc{
35353609 Field: 238,
35363610 Name: "testdata.x238",
35373611 Tag: "bytes,238,opt,name=x238",
3612 Filename: "test.proto",
35383613 }
35393614
35403615 var E_X239 = &proto.ExtensionDesc{
35433618 Field: 239,
35443619 Name: "testdata.x239",
35453620 Tag: "bytes,239,opt,name=x239",
3621 Filename: "test.proto",
35463622 }
35473623
35483624 var E_X240 = &proto.ExtensionDesc{
35513627 Field: 240,
35523628 Name: "testdata.x240",
35533629 Tag: "bytes,240,opt,name=x240",
3630 Filename: "test.proto",
35543631 }
35553632
35563633 var E_X241 = &proto.ExtensionDesc{
35593636 Field: 241,
35603637 Name: "testdata.x241",
35613638 Tag: "bytes,241,opt,name=x241",
3639 Filename: "test.proto",
35623640 }
35633641
35643642 var E_X242 = &proto.ExtensionDesc{
35673645 Field: 242,
35683646 Name: "testdata.x242",
35693647 Tag: "bytes,242,opt,name=x242",
3648 Filename: "test.proto",
35703649 }
35713650
35723651 var E_X243 = &proto.ExtensionDesc{
35753654 Field: 243,
35763655 Name: "testdata.x243",
35773656 Tag: "bytes,243,opt,name=x243",
3657 Filename: "test.proto",
35783658 }
35793659
35803660 var E_X244 = &proto.ExtensionDesc{
35833663 Field: 244,
35843664 Name: "testdata.x244",
35853665 Tag: "bytes,244,opt,name=x244",
3666 Filename: "test.proto",
35863667 }
35873668
35883669 var E_X245 = &proto.ExtensionDesc{
35913672 Field: 245,
35923673 Name: "testdata.x245",
35933674 Tag: "bytes,245,opt,name=x245",
3675 Filename: "test.proto",
35943676 }
35953677
35963678 var E_X246 = &proto.ExtensionDesc{
35993681 Field: 246,
36003682 Name: "testdata.x246",
36013683 Tag: "bytes,246,opt,name=x246",
3684 Filename: "test.proto",
36023685 }
36033686
36043687 var E_X247 = &proto.ExtensionDesc{
36073690 Field: 247,
36083691 Name: "testdata.x247",
36093692 Tag: "bytes,247,opt,name=x247",
3693 Filename: "test.proto",
36103694 }
36113695
36123696 var E_X248 = &proto.ExtensionDesc{
36153699 Field: 248,
36163700 Name: "testdata.x248",
36173701 Tag: "bytes,248,opt,name=x248",
3702 Filename: "test.proto",
36183703 }
36193704
36203705 var E_X249 = &proto.ExtensionDesc{
36233708 Field: 249,
36243709 Name: "testdata.x249",
36253710 Tag: "bytes,249,opt,name=x249",
3711 Filename: "test.proto",
36263712 }
36273713
36283714 var E_X250 = &proto.ExtensionDesc{
36313717 Field: 250,
36323718 Name: "testdata.x250",
36333719 Tag: "bytes,250,opt,name=x250",
3720 Filename: "test.proto",
36343721 }
36353722
36363723 func init() {
37763863 func init() { proto.RegisterFile("test.proto", fileDescriptor0) }
37773864
37783865 var fileDescriptor0 = []byte{
3779 // 4465 bytes of a gzipped FileDescriptorProto
3780 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x94, 0x5a, 0xc9, 0x77, 0xdb, 0x48,
3866 // 4453 bytes of a gzipped FileDescriptorProto
3867 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x5a, 0xc9, 0x77, 0xdb, 0x48,
37813868 0x7a, 0x37, 0xc0, 0xfd, 0x23, 0x25, 0x42, 0x65, 0xb5, 0x9b, 0x96, 0xbc, 0xc0, 0x9c, 0xe9, 0x6e,
3782 0x7a, 0xd3, 0x48, 0x20, 0x44, 0xdb, 0x74, 0xa7, 0xdf, 0xf3, 0x42, 0xc9, 0x7a, 0x63, 0x89, 0x0a,
3783 0xa4, 0xee, 0x7e, 0xd3, 0x39, 0xf0, 0x51, 0x22, 0x48, 0xb3, 0x4d, 0x02, 0x34, 0x09, 0xc5, 0x52,
3869 0x7a, 0xd3, 0x48, 0x20, 0x44, 0xdb, 0x74, 0xa7, 0xdf, 0xf3, 0x42, 0xca, 0x7a, 0x63, 0x89, 0x0a,
3870 0xa4, 0xee, 0x7e, 0xd3, 0x39, 0xf0, 0x51, 0x22, 0x44, 0xb3, 0x4d, 0x02, 0x34, 0x09, 0xc5, 0x52,
37843871 0x72, 0xe9, 0x4b, 0x72, 0xcd, 0x76, 0xc9, 0x35, 0xa7, 0x9c, 0x92, 0xbc, 0x97, 0x7f, 0x22, 0xe9,
37853872 0xee, 0x59, 0x7b, 0xd6, 0xac, 0x93, 0x7d, 0x99, 0xec, 0xdb, 0x4c, 0x92, 0x4b, 0xcf, 0xab, 0xaf,
37863873 0x0a, 0x40, 0x01, 0x24, 0x20, 0xf9, 0x24, 0x56, 0xd5, 0xef, 0xf7, 0xd5, 0xf6, 0xab, 0xef, 0xab,
3787 0xaf, 0x20, 0x00, 0xc7, 0x9c, 0x38, 0x2b, 0xa3, 0xb1, 0xed, 0xd8, 0x24, 0x4b, 0x7f, 0x77, 0xda,
3788 0x4e, 0xbb, 0x7c, 0x1d, 0xd2, 0x9b, 0x76, 0xc3, 0x3a, 0x1a, 0x92, 0xab, 0x90, 0xe8, 0xda, 0x76,
3789 0x49, 0x52, 0xe5, 0xca, 0xbc, 0x36, 0xb7, 0xe2, 0x22, 0x56, 0x36, 0x9a, 0x4d, 0x83, 0xb6, 0x94,
3790 0xef, 0x40, 0x7e, 0xd3, 0xde, 0x37, 0x27, 0xce, 0x46, 0xdf, 0x1c, 0x74, 0xc8, 0x22, 0xa4, 0x9e,
3791 0xb6, 0x0f, 0xcc, 0x01, 0x32, 0x72, 0x46, 0x6a, 0x40, 0x0b, 0x84, 0x40, 0x72, 0xff, 0x64, 0x64,
3792 0x96, 0x64, 0xac, 0x4c, 0x3a, 0x27, 0x23, 0xb3, 0xfc, 0x2b, 0x57, 0x68, 0x27, 0x94, 0x49, 0xae,
3793 0x43, 0xf2, 0xcb, 0x7d, 0xab, 0xc3, 0x7b, 0x79, 0xcd, 0xef, 0x85, 0xb5, 0xaf, 0x7c, 0x79, 0x6b,
3794 0xe7, 0xb1, 0x91, 0x7c, 0xde, 0xb7, 0xd0, 0xfe, 0x7e, 0xfb, 0x60, 0x40, 0x4d, 0x49, 0xd4, 0xbe,
3795 0x43, 0x0b, 0xb4, 0x76, 0xb7, 0x3d, 0x6e, 0x0f, 0x4b, 0x09, 0x55, 0xaa, 0xa4, 0x8c, 0xd4, 0x88,
3796 0x16, 0xc8, 0x7d, 0x98, 0x33, 0xcc, 0x17, 0x47, 0xfd, 0xb1, 0xd9, 0xc1, 0xc1, 0x95, 0x92, 0xaa,
3797 0x5c, 0xc9, 0x4f, 0xdb, 0xc7, 0x46, 0x63, 0x6e, 0x2c, 0x62, 0x19, 0x79, 0x64, 0xb6, 0x1d, 0x97,
3798 0x9c, 0x52, 0x13, 0xb1, 0x64, 0x01, 0x4b, 0xc9, 0xcd, 0x91, 0xd3, 0xb7, 0xad, 0xf6, 0x80, 0x91,
3799 0xd3, 0xaa, 0x14, 0x43, 0xb6, 0x45, 0x2c, 0x79, 0x13, 0x8a, 0x1b, 0xad, 0x87, 0xb6, 0x3d, 0x68,
3800 0xb9, 0x23, 0x2a, 0x81, 0x2a, 0x57, 0xb2, 0xc6, 0x5c, 0x97, 0xd6, 0xba, 0x53, 0x22, 0x15, 0x50,
3801 0x36, 0x5a, 0x5b, 0x96, 0x53, 0xd5, 0x7c, 0x60, 0x5e, 0x95, 0x2b, 0x29, 0x63, 0xbe, 0x8b, 0xd5,
3802 0x53, 0xc8, 0x9a, 0xee, 0x23, 0x0b, 0xaa, 0x5c, 0x49, 0x30, 0x64, 0x4d, 0xf7, 0x90, 0xb7, 0x80,
3803 0x6c, 0xb4, 0x36, 0xfa, 0xc7, 0x66, 0x47, 0xb4, 0x3a, 0xa7, 0xca, 0x95, 0x8c, 0xa1, 0x74, 0x79,
3804 0xc3, 0x0c, 0xb4, 0x68, 0x79, 0x5e, 0x95, 0x2b, 0x69, 0x17, 0x2d, 0xd8, 0xbe, 0x01, 0x0b, 0x1b,
3805 0xad, 0x77, 0xfb, 0xc1, 0x01, 0x17, 0x55, 0xb9, 0x32, 0x67, 0x14, 0xbb, 0xac, 0x7e, 0x1a, 0x2b,
3806 0x1a, 0x56, 0x54, 0xb9, 0x92, 0xe4, 0x58, 0xc1, 0x2e, 0xce, 0x6e, 0x63, 0x60, 0xb7, 0x1d, 0x1f,
3807 0xba, 0xa0, 0xca, 0x15, 0xd9, 0x98, 0xef, 0x62, 0x75, 0xd0, 0xea, 0x63, 0xfb, 0xe8, 0x60, 0x60,
3808 0xfa, 0x50, 0xa2, 0xca, 0x15, 0xc9, 0x28, 0x76, 0x59, 0x7d, 0x10, 0xbb, 0xe7, 0x8c, 0xfb, 0x56,
3809 0xcf, 0xc7, 0x9e, 0x47, 0xfd, 0x16, 0xbb, 0xac, 0x3e, 0x38, 0x82, 0x87, 0x27, 0x8e, 0x39, 0xf1,
3810 0xa1, 0xa6, 0x2a, 0x57, 0x0a, 0xc6, 0x7c, 0x17, 0xab, 0x43, 0x56, 0x43, 0x6b, 0xd0, 0x55, 0xe5,
3811 0xca, 0x02, 0xb5, 0x3a, 0x63, 0x0d, 0xf6, 0x42, 0x6b, 0xd0, 0x53, 0xe5, 0x0a, 0xe1, 0x58, 0x61,
3812 0x0d, 0x44, 0xcd, 0x30, 0x21, 0x96, 0x16, 0xd5, 0x84, 0xa0, 0x19, 0x56, 0x19, 0xd4, 0x0c, 0x07,
3813 0xbe, 0xa6, 0x26, 0x44, 0xcd, 0x84, 0x90, 0xd8, 0x39, 0x47, 0x5e, 0x50, 0x13, 0xa2, 0x66, 0x38,
3814 0x32, 0xa4, 0x19, 0x8e, 0x7d, 0x5d, 0x4d, 0x04, 0x35, 0x33, 0x85, 0x16, 0x2d, 0x97, 0xd4, 0x44,
3815 0x50, 0x33, 0x1c, 0x1d, 0xd4, 0x0c, 0x07, 0x5f, 0x54, 0x13, 0x01, 0xcd, 0x84, 0xb1, 0xa2, 0xe1,
3816 0x25, 0x35, 0x11, 0xd0, 0x8c, 0x38, 0x3b, 0x57, 0x33, 0x1c, 0xba, 0xac, 0x26, 0x44, 0xcd, 0x88,
3817 0x56, 0x3d, 0xcd, 0x70, 0xe8, 0x25, 0x35, 0x11, 0xd0, 0x8c, 0x88, 0xf5, 0x34, 0xc3, 0xb1, 0x97,
3818 0xd5, 0x44, 0x40, 0x33, 0x1c, 0x7b, 0x5d, 0xd4, 0x0c, 0x87, 0x7e, 0x2c, 0xa9, 0x09, 0x51, 0x34,
3819 0x1c, 0x7a, 0x33, 0x20, 0x1a, 0x8e, 0xfd, 0x84, 0x62, 0x45, 0xd5, 0x84, 0xc1, 0xe2, 0x2a, 0x7c,
3820 0x4a, 0xc1, 0xa2, 0x6c, 0x38, 0xd8, 0x97, 0x8d, 0xeb, 0x82, 0x4a, 0x57, 0x54, 0xc9, 0x93, 0x8d,
3821 0xeb, 0xc3, 0x44, 0xd9, 0x78, 0xc0, 0xab, 0xe8, 0x6a, 0xb9, 0x6c, 0xa6, 0x90, 0x35, 0xdd, 0x47,
3822 0xaa, 0xaa, 0xe4, 0xcb, 0xc6, 0x43, 0x06, 0x64, 0xe3, 0x61, 0xaf, 0xa9, 0x92, 0x28, 0x9b, 0x19,
3823 0x68, 0xd1, 0x72, 0x59, 0x95, 0x44, 0xd9, 0x78, 0x68, 0x51, 0x36, 0x1e, 0xf8, 0x0b, 0xaa, 0x24,
3824 0xc8, 0x66, 0x1a, 0x2b, 0x1a, 0xfe, 0xa2, 0x2a, 0x09, 0xb2, 0x09, 0xce, 0x8e, 0xc9, 0xc6, 0x83,
3825 0xbe, 0xa1, 0x4a, 0xbe, 0x6c, 0x82, 0x56, 0xb9, 0x6c, 0x3c, 0xe8, 0x9b, 0xaa, 0x24, 0xc8, 0x26,
3826 0x88, 0xe5, 0xb2, 0xf1, 0xb0, 0x6f, 0x61, 0x7c, 0x73, 0x65, 0xe3, 0x61, 0x05, 0xd9, 0x78, 0xd0,
3827 0xdf, 0xa1, 0xb1, 0xd0, 0x93, 0x8d, 0x07, 0x15, 0x65, 0xe3, 0x61, 0x7f, 0x97, 0x62, 0x7d, 0xd9,
3828 0x4c, 0x83, 0xc5, 0x55, 0xf8, 0x3d, 0x0a, 0xf6, 0x65, 0xe3, 0x81, 0x57, 0x70, 0x10, 0x54, 0x36,
3829 0x1d, 0xb3, 0xdb, 0x3e, 0x1a, 0x50, 0x89, 0x55, 0xa8, 0x6e, 0xea, 0x49, 0x67, 0x7c, 0x64, 0xd2,
3830 0x91, 0xd8, 0xf6, 0xe0, 0xb1, 0xdb, 0x46, 0x56, 0xa8, 0x71, 0x26, 0x1f, 0x9f, 0x70, 0x9d, 0xea,
3831 0xa7, 0x2e, 0x57, 0x35, 0xa3, 0xc8, 0x34, 0x34, 0x8d, 0xaf, 0xe9, 0x02, 0xfe, 0x06, 0x55, 0x51,
3832 0x5d, 0xae, 0xe9, 0x0c, 0x5f, 0xd3, 0x7d, 0x7c, 0x15, 0xce, 0xfb, 0x52, 0xf2, 0x19, 0x37, 0xa9,
3833 0x96, 0xea, 0x89, 0xaa, 0xb6, 0x6a, 0x2c, 0xb8, 0x82, 0x9a, 0x45, 0x0a, 0x74, 0x73, 0x8b, 0x4a,
3834 0xaa, 0x9e, 0xa8, 0xe9, 0x1e, 0x49, 0xec, 0x49, 0xa3, 0x32, 0xe4, 0xc2, 0xf2, 0x39, 0xb7, 0xa9,
3835 0xb2, 0xea, 0xc9, 0xaa, 0xb6, 0xba, 0x6a, 0x28, 0x5c, 0x5f, 0x33, 0x38, 0x81, 0x7e, 0x56, 0xa8,
3836 0xc2, 0xea, 0xc9, 0x9a, 0xee, 0x71, 0x82, 0xfd, 0x2c, 0xb8, 0x42, 0xf3, 0x29, 0x5f, 0xa2, 0x4a,
3837 0xab, 0xa7, 0xab, 0x6b, 0xfa, 0xda, 0xfa, 0x3d, 0xa3, 0xc8, 0x14, 0xe7, 0x73, 0x74, 0xda, 0x0f,
3838 0x97, 0x9c, 0x4f, 0x5a, 0xa5, 0x9a, 0xab, 0xa7, 0xb5, 0x3b, 0x6b, 0x77, 0xb5, 0xbb, 0x86, 0xc2,
3839 0xb5, 0xe7, 0xb3, 0xde, 0xa1, 0x2c, 0x2e, 0x3e, 0x9f, 0xb5, 0x46, 0xd5, 0x57, 0x57, 0x9e, 0x99,
3840 0x83, 0x81, 0x7d, 0x4b, 0x2d, 0xbf, 0xb4, 0xc7, 0x83, 0xce, 0xb5, 0x32, 0x18, 0x0a, 0xd7, 0xa3,
3841 0xd8, 0xeb, 0x82, 0x2b, 0x48, 0x9f, 0xfe, 0x6b, 0xf4, 0x1e, 0x56, 0xa8, 0x67, 0x1e, 0xf6, 0x7b,
3842 0x96, 0x3d, 0x31, 0x8d, 0x22, 0x93, 0x66, 0x68, 0x4d, 0xf6, 0xc2, 0xeb, 0xf8, 0xeb, 0x94, 0xb6,
3843 0x50, 0x4f, 0xdc, 0xae, 0x6a, 0xb4, 0xa7, 0x59, 0xeb, 0xb8, 0x17, 0x5e, 0xc7, 0xdf, 0xa0, 0x1c,
3844 0x52, 0x4f, 0xdc, 0xae, 0xe9, 0x9c, 0x23, 0xae, 0xe3, 0x1d, 0xb8, 0x10, 0x8a, 0x8b, 0xad, 0x51,
3845 0xfb, 0xf0, 0xb9, 0xd9, 0x29, 0x69, 0x34, 0x3c, 0x3e, 0x94, 0x15, 0xc9, 0x38, 0x1f, 0x08, 0x91,
3846 0xbb, 0xd8, 0x4c, 0xee, 0xc1, 0xeb, 0xe1, 0x40, 0xe9, 0x32, 0xab, 0x34, 0x5e, 0x22, 0x73, 0x31,
3847 0x18, 0x33, 0x43, 0x54, 0xc1, 0x01, 0xbb, 0x54, 0x9d, 0x06, 0x50, 0x9f, 0xea, 0x7b, 0x62, 0x4e,
3848 0xfd, 0x19, 0xb8, 0x38, 0x1d, 0x4a, 0x5d, 0xf2, 0x3a, 0x8d, 0xa8, 0x48, 0xbe, 0x10, 0x8e, 0xaa,
3849 0x53, 0xf4, 0x19, 0x7d, 0xd7, 0x68, 0x88, 0x15, 0xe9, 0x53, 0xbd, 0xdf, 0x87, 0xd2, 0x54, 0xb0,
3850 0x75, 0xd9, 0x77, 0x68, 0xcc, 0x45, 0xf6, 0x6b, 0xa1, 0xb8, 0x1b, 0x26, 0xcf, 0xe8, 0xfa, 0x2e,
3851 0x0d, 0xc2, 0x02, 0x79, 0xaa, 0x67, 0x5c, 0xb2, 0x60, 0x38, 0x76, 0xb9, 0xf7, 0x68, 0x54, 0xe6,
3852 0x4b, 0x16, 0x88, 0xcc, 0x62, 0xbf, 0xa1, 0xf8, 0xec, 0x72, 0xeb, 0x34, 0x4c, 0xf3, 0x7e, 0x83,
3853 0xa1, 0x9a, 0x93, 0xdf, 0xa6, 0xe4, 0xbd, 0xd9, 0x33, 0xfe, 0x71, 0x82, 0x06, 0x58, 0xce, 0xde,
3854 0x9b, 0x35, 0x65, 0x8f, 0x3d, 0x63, 0xca, 0x3f, 0xa1, 0x6c, 0x22, 0xb0, 0xa7, 0xe6, 0xfc, 0x18,
3855 0xbc, 0x8c, 0xa3, 0x37, 0xb6, 0x8f, 0x46, 0xa5, 0x0d, 0x55, 0xae, 0x80, 0x76, 0x65, 0x2a, 0xfb,
3856 0x71, 0x2f, 0x79, 0x9b, 0x14, 0x65, 0x04, 0x49, 0xcc, 0x0a, 0xb3, 0xcb, 0xac, 0xec, 0xaa, 0x89,
3857 0x08, 0x2b, 0x0c, 0xe5, 0x59, 0x11, 0x48, 0xd4, 0x8a, 0xeb, 0xf4, 0x99, 0x95, 0x0f, 0x54, 0x69,
3858 0xa6, 0x15, 0x37, 0x04, 0x70, 0x2b, 0x01, 0xd2, 0xd2, 0xba, 0x9f, 0x6f, 0x61, 0x3b, 0xf9, 0x62,
3859 0x38, 0x01, 0xdb, 0xc4, 0xfb, 0x73, 0x30, 0xd3, 0x62, 0x34, 0x61, 0x70, 0xd3, 0xb4, 0x9f, 0x8d,
3860 0xa0, 0x05, 0x46, 0x33, 0x4d, 0xfb, 0xb9, 0x19, 0xb4, 0xf2, 0x6f, 0x4a, 0x90, 0xa4, 0xf9, 0x24,
3861 0xc9, 0x42, 0xf2, 0xbd, 0xe6, 0xd6, 0x63, 0xe5, 0x1c, 0xfd, 0xf5, 0xb0, 0xd9, 0x7c, 0xaa, 0x48,
3862 0x24, 0x07, 0xa9, 0x87, 0x5f, 0xd9, 0x6f, 0xec, 0x29, 0x32, 0x29, 0x42, 0x7e, 0x63, 0x6b, 0x67,
3863 0xb3, 0x61, 0xec, 0x1a, 0x5b, 0x3b, 0xfb, 0x4a, 0x82, 0xb6, 0x6d, 0x3c, 0x6d, 0x3e, 0xd8, 0x57,
3864 0x92, 0x24, 0x03, 0x09, 0x5a, 0x97, 0x22, 0x00, 0xe9, 0xbd, 0x7d, 0x63, 0x6b, 0x67, 0x53, 0x49,
3865 0x53, 0x2b, 0xfb, 0x5b, 0xdb, 0x0d, 0x25, 0x43, 0x91, 0xfb, 0xef, 0xee, 0x3e, 0x6d, 0x28, 0x59,
3866 0xfa, 0xf3, 0x81, 0x61, 0x3c, 0xf8, 0x8a, 0x92, 0xa3, 0xa4, 0xed, 0x07, 0xbb, 0x0a, 0x60, 0xf3,
3867 0x83, 0x87, 0x4f, 0x1b, 0x4a, 0x9e, 0x14, 0x20, 0xbb, 0xf1, 0xee, 0xce, 0xa3, 0xfd, 0xad, 0xe6,
3868 0x8e, 0x52, 0x28, 0x9f, 0x40, 0x89, 0x2d, 0x73, 0x60, 0x15, 0x59, 0x52, 0xf8, 0x0e, 0xa4, 0xd8,
3869 0xce, 0x48, 0xa8, 0x92, 0x4a, 0x78, 0x67, 0xa6, 0x29, 0x2b, 0x6c, 0x8f, 0x18, 0x6d, 0xe9, 0x32,
3870 0xa4, 0xd8, 0x2a, 0x2d, 0x42, 0x8a, 0xad, 0x8e, 0x8c, 0xa9, 0x62, 0xaa, 0x8b, 0xab, 0xf2, 0x5b,
3871 0x32, 0xc0, 0xa6, 0xbd, 0xf7, 0xbc, 0x3f, 0xc2, 0x84, 0xfc, 0x32, 0xc0, 0xe4, 0x79, 0x7f, 0xd4,
3872 0x42, 0xd5, 0xf3, 0xa4, 0x32, 0x47, 0x6b, 0xd0, 0xdf, 0x91, 0x6b, 0x50, 0xc0, 0xe6, 0x2e, 0xf3,
3873 0x42, 0x98, 0x4b, 0x66, 0x8c, 0x3c, 0xad, 0xe3, 0x8e, 0x29, 0x08, 0xa9, 0xe9, 0x98, 0x42, 0xa6,
3874 0x05, 0x48, 0x4d, 0x27, 0x57, 0x01, 0x8b, 0xad, 0x09, 0x46, 0x14, 0x4c, 0x1b, 0x73, 0x06, 0xf6,
3875 0xcb, 0x62, 0x0c, 0x79, 0x1b, 0xb0, 0x4f, 0x36, 0xef, 0xe2, 0xf4, 0xe9, 0x70, 0x87, 0xbb, 0x42,
3876 0x7f, 0xb0, 0xd9, 0xfa, 0x84, 0xa5, 0x26, 0xe4, 0xbc, 0x7a, 0xda, 0x17, 0xd6, 0xf2, 0x19, 0x29,
3877 0x38, 0x23, 0xc0, 0x2a, 0x6f, 0x4a, 0x0c, 0xc0, 0x47, 0xb3, 0x80, 0xa3, 0x61, 0x24, 0x36, 0x9c,
3878 0xf2, 0x65, 0x98, 0xdb, 0xb1, 0x2d, 0x76, 0x7a, 0x71, 0x95, 0x0a, 0x20, 0xb5, 0x4b, 0x12, 0x66,
3879 0x4f, 0x52, 0xbb, 0x7c, 0x05, 0x40, 0x68, 0x53, 0x40, 0x3a, 0x60, 0x6d, 0xe8, 0x03, 0xa4, 0x83,
3880 0xf2, 0x4d, 0x48, 0x6f, 0xb7, 0x8f, 0xf7, 0xdb, 0x3d, 0x72, 0x0d, 0x60, 0xd0, 0x9e, 0x38, 0x2d,
3881 0x5c, 0xfa, 0xd2, 0xe7, 0x9f, 0x7f, 0xfe, 0xb9, 0x84, 0x97, 0xbd, 0x1c, 0xad, 0x65, 0x2a, 0x7d,
3882 0x01, 0xd0, 0x1c, 0x74, 0xb6, 0xcd, 0xc9, 0xa4, 0xdd, 0x33, 0x49, 0x15, 0xd2, 0x96, 0x39, 0xa1,
3883 0xd1, 0x4e, 0xc2, 0x77, 0x84, 0x65, 0x7f, 0x15, 0x7c, 0xd4, 0xca, 0x0e, 0x42, 0x0c, 0x0e, 0x25,
3884 0x0a, 0x24, 0xac, 0xa3, 0x21, 0xbe, 0x93, 0xa4, 0x0c, 0xfa, 0x73, 0xe9, 0x12, 0xa4, 0x19, 0x86,
3885 0x10, 0x48, 0x5a, 0xed, 0xa1, 0x59, 0x62, 0xfd, 0xe2, 0xef, 0xf2, 0xaf, 0x4a, 0x00, 0x3b, 0xe6,
3886 0xcb, 0x33, 0xf4, 0xe9, 0xa3, 0x62, 0xfa, 0x4c, 0xb0, 0x3e, 0xef, 0xc7, 0xf5, 0x49, 0x75, 0xd6,
3887 0xb5, 0xed, 0x4e, 0x8b, 0x6d, 0x31, 0x7b, 0xd2, 0xc9, 0xd1, 0x1a, 0xdc, 0xb5, 0xf2, 0x07, 0x50,
3888 0xd8, 0xb2, 0x2c, 0x73, 0xec, 0x8e, 0x89, 0x40, 0xf2, 0x99, 0x3d, 0x71, 0xf8, 0xdb, 0x12, 0xfe,
3889 0x26, 0x25, 0x48, 0x8e, 0xec, 0xb1, 0xc3, 0xe6, 0x59, 0x4f, 0xea, 0xab, 0xab, 0xab, 0x06, 0xd6,
3890 0x90, 0x4b, 0x90, 0x3b, 0xb4, 0x2d, 0xcb, 0x3c, 0xa4, 0x93, 0x48, 0x60, 0x5a, 0xe3, 0x57, 0x94,
3891 0x7f, 0x59, 0x82, 0x42, 0xd3, 0x79, 0xe6, 0x1b, 0x57, 0x20, 0xf1, 0xdc, 0x3c, 0xc1, 0xe1, 0x25,
3892 0x0c, 0xfa, 0x93, 0x1e, 0x95, 0x9f, 0x6f, 0x0f, 0x8e, 0xd8, 0x5b, 0x53, 0xc1, 0x60, 0x05, 0x72,
3893 0x01, 0xd2, 0x2f, 0xcd, 0x7e, 0xef, 0x99, 0x83, 0x36, 0x65, 0x83, 0x97, 0xc8, 0x2d, 0x48, 0xf5,
3894 0xe9, 0x60, 0x4b, 0x49, 0x5c, 0xaf, 0x0b, 0xfe, 0x7a, 0x89, 0x73, 0x30, 0x18, 0xe8, 0x46, 0x36,
3895 0xdb, 0x51, 0x3e, 0xfa, 0xe8, 0xa3, 0x8f, 0xe4, 0x72, 0x17, 0x16, 0xdd, 0xc3, 0x1b, 0x98, 0xec,
3896 0x0e, 0x94, 0x06, 0xa6, 0xdd, 0xea, 0xf6, 0xad, 0xf6, 0x60, 0x70, 0xd2, 0x7a, 0x69, 0x5b, 0xad,
3897 0xb6, 0xd5, 0xb2, 0x27, 0x87, 0xed, 0x31, 0x2e, 0x40, 0x74, 0x17, 0x8b, 0x03, 0xd3, 0xde, 0x60,
3898 0xb4, 0xf7, 0x6d, 0xeb, 0x81, 0xd5, 0xa4, 0x9c, 0xf2, 0x1f, 0x24, 0x21, 0xb7, 0x7d, 0xe2, 0x5a,
3899 0x5f, 0x84, 0xd4, 0xa1, 0x7d, 0x64, 0xb1, 0xb5, 0x4c, 0x19, 0xac, 0xe0, 0xed, 0x91, 0x2c, 0xec,
3900 0xd1, 0x22, 0xa4, 0x5e, 0x1c, 0xd9, 0x8e, 0x89, 0xd3, 0xcd, 0x19, 0xac, 0x40, 0x57, 0x6b, 0x64,
3901 0x3a, 0xa5, 0x24, 0x26, 0xb7, 0xf4, 0xa7, 0x3f, 0xff, 0xd4, 0x19, 0xe6, 0x4f, 0x56, 0x20, 0x6d,
3902 0xd3, 0xd5, 0x9f, 0x94, 0xd2, 0xf8, 0xae, 0x26, 0xc0, 0xc5, 0x5d, 0x31, 0x38, 0x8a, 0x6c, 0xc1,
3903 0xc2, 0x4b, 0xb3, 0x35, 0x3c, 0x9a, 0x38, 0xad, 0x9e, 0xdd, 0xea, 0x98, 0xe6, 0xc8, 0x1c, 0x97,
3904 0xe6, 0xb0, 0x27, 0xc1, 0x27, 0xcc, 0x5a, 0x48, 0x63, 0xfe, 0xa5, 0xb9, 0x7d, 0x34, 0x71, 0x36,
3905 0xed, 0xc7, 0xc8, 0x22, 0x55, 0xc8, 0x8d, 0x4d, 0xea, 0x09, 0xe8, 0x60, 0x0b, 0xe1, 0xde, 0x03,
3906 0xd4, 0xec, 0xd8, 0x1c, 0x61, 0x05, 0x59, 0x87, 0xec, 0x41, 0xff, 0xb9, 0x39, 0x79, 0x66, 0x76,
3907 0x4a, 0x19, 0x55, 0xaa, 0xcc, 0x6b, 0x17, 0x7d, 0x8e, 0xb7, 0xac, 0x2b, 0x8f, 0xec, 0x81, 0x3d,
3908 0x36, 0x3c, 0x28, 0xb9, 0x0f, 0xb9, 0x89, 0x3d, 0x34, 0x99, 0xbe, 0xb3, 0x18, 0x54, 0x2f, 0xcf,
3909 0xe2, 0xed, 0xd9, 0x43, 0xd3, 0xf5, 0x60, 0x2e, 0x9e, 0x2c, 0xb3, 0x81, 0x1e, 0xd0, 0xab, 0x73,
3910 0x09, 0xf0, 0x69, 0x80, 0x0e, 0x08, 0xaf, 0xd2, 0x64, 0x89, 0x0e, 0xa8, 0xd7, 0xa5, 0x37, 0xa2,
3911 0x52, 0x1e, 0xf3, 0x4a, 0xaf, 0xbc, 0x74, 0x0b, 0x72, 0x9e, 0x41, 0xdf, 0xf5, 0x31, 0x77, 0x93,
3912 0x43, 0x7f, 0xc0, 0x5c, 0x1f, 0xf3, 0x35, 0x6f, 0x40, 0x0a, 0x87, 0x4d, 0x23, 0x94, 0xd1, 0xa0,
3913 0x01, 0x31, 0x07, 0xa9, 0x4d, 0xa3, 0xd1, 0xd8, 0x51, 0x24, 0x8c, 0x8d, 0x4f, 0xdf, 0x6d, 0x28,
3914 0xb2, 0xa0, 0xd8, 0xdf, 0x96, 0x20, 0xd1, 0x38, 0x46, 0xb5, 0xd0, 0x69, 0xb8, 0x27, 0x9a, 0xfe,
3915 0xd6, 0x6a, 0x90, 0x1c, 0xda, 0x63, 0x93, 0x9c, 0x9f, 0x31, 0xcb, 0x52, 0x0f, 0xf7, 0x4b, 0x78,
3916 0x45, 0x6e, 0x1c, 0x3b, 0x06, 0xe2, 0xb5, 0xb7, 0x20, 0xe9, 0x98, 0xc7, 0xce, 0x6c, 0xde, 0x33,
3917 0xd6, 0x01, 0x05, 0x68, 0x37, 0x21, 0x6d, 0x1d, 0x0d, 0x0f, 0xcc, 0xf1, 0x6c, 0x68, 0x1f, 0xa7,
3918 0xc7, 0x21, 0xe5, 0xf7, 0x40, 0x79, 0x64, 0x0f, 0x47, 0x03, 0xf3, 0xb8, 0x71, 0xec, 0x98, 0xd6,
3919 0xa4, 0x6f, 0x5b, 0x54, 0xcf, 0xdd, 0xfe, 0x18, 0xbd, 0x88, 0xc4, 0x02, 0xe0, 0x78, 0xe2, 0xd0,
3920 0x53, 0x3d, 0x31, 0x0f, 0x6d, 0xab, 0xc3, 0x1d, 0x26, 0x2f, 0x51, 0xb4, 0xf3, 0xac, 0x3f, 0xa6,
3921 0x0e, 0x84, 0xfa, 0x79, 0x56, 0x28, 0x6f, 0x42, 0x91, 0xe7, 0x18, 0x13, 0xde, 0x71, 0xf9, 0x06,
3922 0x14, 0xdc, 0x2a, 0x7c, 0x38, 0xcf, 0x42, 0xf2, 0x83, 0x86, 0xd1, 0x54, 0xce, 0xd1, 0x65, 0x6d,
3923 0xee, 0x34, 0x14, 0x89, 0xfe, 0xd8, 0x7f, 0xbf, 0x19, 0x58, 0xca, 0x4b, 0x50, 0xf0, 0xc6, 0xbe,
3924 0x67, 0x3a, 0xd8, 0x42, 0x03, 0x42, 0xa6, 0x2e, 0x67, 0xa5, 0x72, 0x06, 0x52, 0x8d, 0xe1, 0xc8,
3925 0x39, 0x29, 0xff, 0x22, 0xe4, 0x39, 0xe8, 0x69, 0x7f, 0xe2, 0x90, 0x3b, 0x90, 0x19, 0xf2, 0xf9,
3926 0x4a, 0x78, 0xdd, 0x13, 0x35, 0xe5, 0xe3, 0xdc, 0xdf, 0x86, 0x8b, 0x5e, 0xaa, 0x42, 0x46, 0xf0,
3927 0xa5, 0xfc, 0xa8, 0xcb, 0xe2, 0x51, 0x67, 0x4e, 0x21, 0x21, 0x38, 0x85, 0xf2, 0x36, 0x64, 0x58,
3928 0x04, 0x9c, 0x60, 0x54, 0x67, 0xa9, 0x22, 0x13, 0x13, 0xdb, 0xf9, 0x3c, 0xab, 0x63, 0x17, 0x95,
3929 0xab, 0x90, 0x47, 0xc1, 0x72, 0x04, 0x73, 0x9d, 0x80, 0x55, 0x4c, 0x6e, 0xbf, 0x9f, 0x82, 0xac,
3930 0xbb, 0x52, 0x64, 0x19, 0xd2, 0x2c, 0x3f, 0x43, 0x53, 0xee, 0xfb, 0x41, 0x0a, 0x33, 0x32, 0xb2,
3931 0x0c, 0x19, 0x9e, 0x83, 0x71, 0xef, 0x2e, 0x57, 0x35, 0x23, 0xcd, 0x72, 0x2e, 0xaf, 0xb1, 0xa6,
3932 0xa3, 0x63, 0x62, 0x2f, 0x03, 0x69, 0x96, 0x55, 0x11, 0x15, 0x72, 0x5e, 0x1e, 0x85, 0xfe, 0x98,
3933 0x3f, 0x03, 0x64, 0xdd, 0xc4, 0x49, 0x40, 0xd4, 0x74, 0xf4, 0x58, 0x3c, 0xe7, 0xcf, 0x76, 0xfd,
3934 0xeb, 0x49, 0xd6, 0xcd, 0x86, 0xf0, 0xf9, 0xde, 0x4d, 0xf0, 0x33, 0x3c, 0xff, 0xf1, 0x01, 0x35,
3935 0x1d, 0x5d, 0x82, 0x9b, 0xcd, 0x67, 0x78, 0x8e, 0x43, 0xae, 0xd2, 0x21, 0x62, 0xce, 0x82, 0x47,
3936 0xdf, 0x4f, 0xdd, 0xd3, 0x2c, 0x93, 0x21, 0xd7, 0xa8, 0x05, 0x96, 0x98, 0xe0, 0xb9, 0xf4, 0xf3,
3937 0xf4, 0x0c, 0xcf, 0x57, 0xc8, 0x4d, 0x0a, 0x61, 0xcb, 0x5f, 0x82, 0x88, 0xa4, 0x3c, 0xc3, 0x93,
3938 0x72, 0xa2, 0xd2, 0x0e, 0xd1, 0x3d, 0xa0, 0x4b, 0x10, 0x12, 0xf0, 0x34, 0x4b, 0xc0, 0xc9, 0x15,
3939 0x34, 0xc7, 0x26, 0x55, 0xf0, 0x93, 0xed, 0x0c, 0x4f, 0x70, 0xfc, 0x76, 0xbc, 0xb2, 0x79, 0x89,
3940 0x75, 0x86, 0xa7, 0x30, 0xa4, 0x46, 0xf7, 0x8b, 0xea, 0xbb, 0x34, 0x8f, 0x4e, 0xb0, 0xe4, 0x0b,
3941 0xcf, 0xdd, 0x53, 0xe6, 0x03, 0xeb, 0xcc, 0x83, 0x18, 0xa9, 0x2e, 0x9e, 0x86, 0x25, 0xca, 0xdb,
3942 0xed, 0x5b, 0xdd, 0x52, 0x11, 0x57, 0x22, 0xd1, 0xb7, 0xba, 0x46, 0xaa, 0x4b, 0x6b, 0x98, 0x06,
3943 0x76, 0x68, 0x9b, 0x82, 0x6d, 0xc9, 0xdb, 0xac, 0x91, 0x56, 0x91, 0x12, 0xa4, 0x36, 0x5a, 0x3b,
3944 0x6d, 0xab, 0xb4, 0xc0, 0x78, 0x56, 0xdb, 0x32, 0x92, 0xdd, 0x9d, 0xb6, 0x45, 0xde, 0x82, 0xc4,
3945 0xe4, 0xe8, 0xa0, 0x44, 0xc2, 0x5f, 0x56, 0xf6, 0x8e, 0x0e, 0xdc, 0xa1, 0x18, 0x14, 0x41, 0x96,
3946 0x21, 0x3b, 0x71, 0xc6, 0xad, 0x5f, 0x30, 0xc7, 0x76, 0xe9, 0x3c, 0x2e, 0xe1, 0x39, 0x23, 0x33,
3947 0x71, 0xc6, 0x1f, 0x98, 0x63, 0xfb, 0x8c, 0xce, 0xaf, 0x7c, 0x05, 0xf2, 0x82, 0x5d, 0x52, 0x04,
3948 0xc9, 0x62, 0x37, 0x85, 0xba, 0x74, 0xc7, 0x90, 0xac, 0xf2, 0x3e, 0x14, 0xdc, 0x1c, 0x06, 0xe7,
3949 0xab, 0xd1, 0x93, 0x34, 0xb0, 0xc7, 0x78, 0x3e, 0xe7, 0xb5, 0x4b, 0x62, 0x88, 0xf2, 0x61, 0x3c,
3950 0x5c, 0x30, 0x68, 0x59, 0x09, 0x0d, 0x45, 0x2a, 0xff, 0x50, 0x82, 0xc2, 0xb6, 0x3d, 0xf6, 0x1f,
3951 0x98, 0x17, 0x21, 0x75, 0x60, 0xdb, 0x83, 0x09, 0x9a, 0xcd, 0x1a, 0xac, 0x40, 0xde, 0x80, 0x02,
3952 0xfe, 0x70, 0x73, 0x4f, 0xd9, 0x7b, 0xda, 0xc8, 0x63, 0x3d, 0x4f, 0x38, 0x09, 0x24, 0xfb, 0x96,
3953 0x33, 0xe1, 0x9e, 0x0c, 0x7f, 0x93, 0x2f, 0x40, 0x9e, 0xfe, 0x75, 0x99, 0x49, 0xef, 0xc2, 0x0a,
3954 0xb4, 0x9a, 0x13, 0xdf, 0x82, 0x39, 0xdc, 0x7d, 0x0f, 0x96, 0xf1, 0x9e, 0x31, 0x0a, 0xac, 0x81,
3955 0x03, 0x4b, 0x90, 0x61, 0xae, 0x60, 0x82, 0x5f, 0xcb, 0x72, 0x86, 0x5b, 0xa4, 0xee, 0x15, 0x33,
3956 0x01, 0x16, 0xee, 0x33, 0x06, 0x2f, 0x95, 0x1f, 0x40, 0x16, 0xa3, 0x54, 0x73, 0xd0, 0x21, 0x65,
3957 0x90, 0x7a, 0x25, 0x13, 0x63, 0xe4, 0xa2, 0x70, 0xcd, 0xe7, 0xcd, 0x2b, 0x9b, 0x86, 0xd4, 0x5b,
3958 0x5a, 0x00, 0x69, 0x93, 0xde, 0xbb, 0x8f, 0xb9, 0x9b, 0x96, 0x8e, 0xcb, 0x4d, 0x6e, 0x62, 0xc7,
3959 0x7c, 0x19, 0x67, 0x62, 0xc7, 0x7c, 0xc9, 0x4c, 0x5c, 0x9d, 0x32, 0x41, 0x4b, 0x27, 0xfc, 0xd3,
3960 0xa1, 0x74, 0x52, 0xae, 0xc2, 0x1c, 0x1e, 0xcf, 0xbe, 0xd5, 0xdb, 0xb5, 0xfb, 0x16, 0xde, 0xf3,
3961 0xbb, 0x78, 0x4f, 0x92, 0x0c, 0xa9, 0x4b, 0xf7, 0xc0, 0x3c, 0x6e, 0x1f, 0xb2, 0x1b, 0x67, 0xd6,
3962 0x60, 0x85, 0xf2, 0x67, 0x49, 0x98, 0xe7, 0xae, 0xf5, 0xfd, 0xbe, 0xf3, 0x6c, 0xbb, 0x3d, 0x22,
3963 0x4f, 0xa1, 0x40, 0xbd, 0x6a, 0x6b, 0xd8, 0x1e, 0x8d, 0xe8, 0xf1, 0x95, 0xf0, 0xaa, 0x71, 0x7d,
3964 0xca, 0x55, 0x73, 0xfc, 0xca, 0x4e, 0x7b, 0x68, 0x6e, 0x33, 0x6c, 0xc3, 0x72, 0xc6, 0x27, 0x46,
3965 0xde, 0xf2, 0x6b, 0xc8, 0x16, 0xe4, 0x87, 0x93, 0x9e, 0x67, 0x4c, 0x46, 0x63, 0x95, 0x48, 0x63,
3966 0xdb, 0x93, 0x5e, 0xc0, 0x16, 0x0c, 0xbd, 0x0a, 0x3a, 0x30, 0xea, 0x8f, 0x3d, 0x5b, 0x89, 0x53,
3967 0x06, 0x46, 0x5d, 0x47, 0x70, 0x60, 0x07, 0x7e, 0x0d, 0x79, 0x0c, 0x40, 0x8f, 0x97, 0x63, 0xd3,
3968 0xd4, 0x09, 0x15, 0x94, 0xd7, 0xde, 0x8c, 0xb4, 0xb5, 0xe7, 0x8c, 0xf7, 0xed, 0x3d, 0x67, 0xcc,
3969 0x0c, 0xd1, 0x83, 0x89, 0xc5, 0xa5, 0x77, 0x40, 0x09, 0xcf, 0x5f, 0xbc, 0x91, 0xa7, 0x66, 0xdc,
3970 0xc8, 0x73, 0xfc, 0x46, 0x5e, 0x97, 0xef, 0x4a, 0x4b, 0xef, 0x41, 0x31, 0x34, 0x65, 0x91, 0x4e,
3971 0x18, 0xfd, 0xb6, 0x48, 0xcf, 0x6b, 0xaf, 0x0b, 0x9f, 0xb3, 0xc5, 0x0d, 0x17, 0xed, 0xbe, 0x03,
3972 0x4a, 0x78, 0xfa, 0xa2, 0xe1, 0x6c, 0x4c, 0xa6, 0x80, 0xfc, 0xfb, 0x30, 0x17, 0x98, 0xb2, 0x48,
3973 0xce, 0x9d, 0x32, 0xa9, 0xf2, 0x2f, 0xa5, 0x20, 0xd5, 0xb4, 0x4c, 0xbb, 0x4b, 0x5e, 0x0f, 0xc6,
3974 0xc9, 0x27, 0xe7, 0xdc, 0x18, 0x79, 0x31, 0x14, 0x23, 0x9f, 0x9c, 0xf3, 0x22, 0xe4, 0xc5, 0x50,
3975 0x84, 0x74, 0x9b, 0x6a, 0x3a, 0xb9, 0x3c, 0x15, 0x1f, 0x9f, 0x9c, 0x13, 0x82, 0xe3, 0xe5, 0xa9,
3976 0xe0, 0xe8, 0x37, 0xd7, 0x74, 0xea, 0x50, 0x83, 0x91, 0xf1, 0xc9, 0x39, 0x3f, 0x2a, 0x2e, 0x87,
3977 0xa3, 0xa2, 0xd7, 0x58, 0xd3, 0xd9, 0x90, 0x84, 0x88, 0x88, 0x43, 0x62, 0xb1, 0x70, 0x39, 0x1c,
3978 0x0b, 0x91, 0xc7, 0xa3, 0xe0, 0x72, 0x38, 0x0a, 0x62, 0x23, 0x8f, 0x7a, 0x17, 0x43, 0x51, 0x0f,
3979 0x8d, 0xb2, 0x70, 0xb7, 0x1c, 0x0e, 0x77, 0x8c, 0x27, 0x8c, 0x54, 0x8c, 0x75, 0x5e, 0x63, 0x4d,
3980 0x27, 0x5a, 0x28, 0xd0, 0x45, 0xdf, 0xf6, 0x71, 0x2f, 0xd0, 0xe9, 0xeb, 0x74, 0xd9, 0xdc, 0x8b,
3981 0x68, 0x31, 0xe6, 0x8b, 0x3f, 0xae, 0xa6, 0x7b, 0x11, 0xd3, 0x20, 0xd3, 0xe5, 0x09, 0xb0, 0x82,
3982 0x9e, 0x4b, 0x90, 0x25, 0x6e, 0xfe, 0xca, 0x46, 0x0b, 0x3d, 0x18, 0xce, 0x8b, 0xdd, 0xe9, 0x2b,
3983 0x30, 0xb7, 0xd1, 0x7a, 0xda, 0x1e, 0xf7, 0xcc, 0x89, 0xd3, 0xda, 0x6f, 0xf7, 0xbc, 0x47, 0x04,
3984 0xba, 0xff, 0xf9, 0x2e, 0x6f, 0xd9, 0x6f, 0xf7, 0xc8, 0x05, 0x57, 0x5c, 0x1d, 0x6c, 0x95, 0xb8,
3985 0xbc, 0x96, 0x5e, 0xa7, 0x8b, 0xc6, 0x8c, 0xa1, 0x2f, 0x5c, 0xe0, 0xbe, 0xf0, 0x61, 0x06, 0x52,
3986 0x47, 0x56, 0xdf, 0xb6, 0x1e, 0xe6, 0x20, 0xe3, 0xd8, 0xe3, 0x61, 0xdb, 0xb1, 0xcb, 0x3f, 0x92,
3987 0x00, 0x1e, 0xd9, 0xc3, 0xe1, 0x91, 0xd5, 0x7f, 0x71, 0x64, 0x92, 0x2b, 0x90, 0x1f, 0xb6, 0x9f,
3988 0x9b, 0xad, 0xa1, 0xd9, 0x3a, 0x1c, 0xbb, 0xe7, 0x20, 0x47, 0xab, 0xb6, 0xcd, 0x47, 0xe3, 0x13,
3989 0x52, 0x72, 0xaf, 0xe8, 0xa8, 0x1d, 0x94, 0x24, 0xbf, 0xb2, 0x2f, 0xf2, 0x4b, 0x67, 0x9a, 0xef,
3990 0xa1, 0x7b, 0xed, 0x64, 0x79, 0x44, 0x86, 0xef, 0x1e, 0x96, 0xa8, 0xe4, 0x1d, 0x73, 0x38, 0x6a,
3991 0x1d, 0xa2, 0x54, 0xa8, 0x1c, 0x52, 0xb4, 0xfc, 0x88, 0xdc, 0x86, 0xc4, 0xa1, 0x3d, 0x40, 0x91,
3992 0x9c, 0xb2, 0x2f, 0x14, 0x47, 0xde, 0x80, 0xc4, 0x70, 0xc2, 0x64, 0x93, 0xd7, 0x16, 0x84, 0x7b,
3993 0x02, 0x0b, 0x4d, 0x14, 0x36, 0x9c, 0xf4, 0xbc, 0x79, 0xdf, 0x28, 0x42, 0x62, 0xa3, 0xd9, 0xa4,
3994 0xb1, 0x7f, 0xa3, 0xd9, 0x5c, 0x53, 0xa4, 0xfa, 0x97, 0x20, 0xdb, 0x1b, 0x9b, 0x26, 0x75, 0x0f,
3995 0xb3, 0x73, 0x8e, 0x0f, 0x31, 0xd6, 0x79, 0xa0, 0xfa, 0x36, 0x64, 0x0e, 0x59, 0xd6, 0x41, 0x22,
3996 0xd2, 0xda, 0xd2, 0x1f, 0xb2, 0x47, 0x95, 0x25, 0xbf, 0x39, 0x9c, 0xa7, 0x18, 0xae, 0x8d, 0xfa,
3997 0x2e, 0xe4, 0xc6, 0xad, 0xd3, 0x0c, 0x7e, 0xcc, 0xa2, 0x4b, 0x9c, 0xc1, 0xec, 0x98, 0x57, 0xd5,
3998 0x1b, 0xb0, 0x60, 0xd9, 0xee, 0x37, 0x94, 0x56, 0x87, 0x9d, 0xb1, 0x8b, 0xd3, 0x57, 0x39, 0xd7,
3999 0xb8, 0xc9, 0xbe, 0x5b, 0x5a, 0x36, 0x6f, 0x60, 0xa7, 0xb2, 0xfe, 0x08, 0x14, 0xc1, 0x0c, 0xa6,
4000 0x9e, 0x71, 0x56, 0xba, 0xec, 0x43, 0xa9, 0x67, 0x05, 0xcf, 0x7d, 0xc8, 0x08, 0x3b, 0x99, 0x31,
4001 0x46, 0x7a, 0xec, 0xab, 0xb3, 0x67, 0x04, 0x5d, 0xdd, 0xb4, 0x11, 0xea, 0x6b, 0xa2, 0x8d, 0x3c,
4002 0x63, 0x1f, 0xa4, 0x45, 0x23, 0x35, 0x3d, 0xb4, 0x2a, 0x47, 0xa7, 0x0e, 0xa5, 0xcf, 0xbe, 0x27,
4003 0x7b, 0x56, 0x98, 0x03, 0x9c, 0x61, 0x26, 0x7e, 0x30, 0x1f, 0xb2, 0x4f, 0xcd, 0x01, 0x33, 0x53,
4004 0xa3, 0x99, 0x9c, 0x3a, 0x9a, 0xe7, 0xec, 0xbb, 0xae, 0x67, 0x66, 0x6f, 0xd6, 0x68, 0x26, 0xa7,
4005 0x8e, 0x66, 0xc0, 0xbe, 0xf8, 0x06, 0xcc, 0xd4, 0xf4, 0xfa, 0x26, 0x10, 0x71, 0xab, 0x79, 0x9c,
4006 0x88, 0xb1, 0x33, 0x64, 0xdf, 0xf1, 0xfd, 0xcd, 0x66, 0x94, 0x59, 0x86, 0xe2, 0x07, 0x64, 0xb1,
4007 0x4f, 0xfc, 0x41, 0x43, 0x35, 0xbd, 0xbe, 0x05, 0xe7, 0xc5, 0x89, 0x9d, 0x61, 0x48, 0xb6, 0x2a,
4008 0x55, 0x8a, 0xc6, 0x82, 0x3f, 0x35, 0xce, 0x99, 0x69, 0x2a, 0x7e, 0x50, 0x23, 0x55, 0xaa, 0x28,
4009 0x53, 0xa6, 0x6a, 0x7a, 0xfd, 0x01, 0x14, 0x05, 0x53, 0x07, 0x18, 0xa1, 0xa3, 0xcd, 0xbc, 0x60,
4010 0xff, 0x6b, 0xe1, 0x99, 0xa1, 0x11, 0x3d, 0xbc, 0x63, 0x3c, 0xc6, 0x45, 0x1b, 0x19, 0xb3, 0x7f,
4011 0x14, 0xf0, 0xc7, 0x82, 0x8c, 0xd0, 0x91, 0xc0, 0xfc, 0x3b, 0xce, 0xca, 0x84, 0xfd, 0x0b, 0x81,
4012 0x3f, 0x14, 0x4a, 0xa8, 0xf7, 0x03, 0xd3, 0x31, 0x69, 0x90, 0x8b, 0xb1, 0xe1, 0xa0, 0x47, 0x7e,
4013 0x33, 0x12, 0xb0, 0x22, 0x3e, 0x90, 0x08, 0xd3, 0xa6, 0xc5, 0xfa, 0x16, 0xcc, 0x9f, 0xdd, 0x21,
4014 0x7d, 0x2c, 0xb1, 0x6c, 0xb9, 0xba, 0x42, 0x13, 0x6a, 0x63, 0xae, 0x13, 0xf0, 0x4b, 0x0d, 0x98,
4015 0x3b, 0xb3, 0x53, 0xfa, 0x44, 0x62, 0x39, 0x27, 0xb5, 0x64, 0x14, 0x3a, 0x41, 0xcf, 0x34, 0x77,
4016 0x66, 0xb7, 0xf4, 0xa9, 0xc4, 0x1e, 0x28, 0x74, 0xcd, 0x33, 0xe2, 0x7a, 0xa6, 0xb9, 0x33, 0xbb,
4017 0xa5, 0xaf, 0xb2, 0x8c, 0x52, 0xd6, 0xab, 0xa2, 0x11, 0xf4, 0x05, 0xf3, 0x67, 0x77, 0x4b, 0x5f,
4018 0x93, 0xf0, 0xb1, 0x42, 0xd6, 0x75, 0x6f, 0x5d, 0x3c, 0xcf, 0x34, 0x7f, 0x76, 0xb7, 0xf4, 0x75,
4019 0x09, 0x9f, 0x34, 0x64, 0x7d, 0x3d, 0x60, 0x26, 0x38, 0x9a, 0xd3, 0xdd, 0xd2, 0x37, 0x24, 0x7c,
4020 0x65, 0x90, 0xf5, 0x9a, 0x67, 0x66, 0x6f, 0x6a, 0x34, 0xa7, 0xbb, 0xa5, 0x6f, 0xe2, 0x2d, 0xbe,
4021 0x2e, 0xeb, 0x77, 0x02, 0x66, 0xd0, 0x33, 0x15, 0x5f, 0xc1, 0x2d, 0x7d, 0x4b, 0xc2, 0xc7, 0x20,
4022 0x59, 0xbf, 0x6b, 0xb8, 0xbd, 0xfb, 0x9e, 0xa9, 0xf8, 0x0a, 0x6e, 0xe9, 0x33, 0x09, 0xdf, 0x8c,
4023 0x64, 0xfd, 0x5e, 0xd0, 0x10, 0x7a, 0x26, 0xe5, 0x55, 0xdc, 0xd2, 0xb7, 0xa9, 0xa5, 0x62, 0x5d,
4024 0x5e, 0x5f, 0x35, 0xdc, 0x01, 0x08, 0x9e, 0x49, 0x79, 0x15, 0xb7, 0xf4, 0x1d, 0x6a, 0x4a, 0xa9,
4025 0xcb, 0xeb, 0x6b, 0x21, 0x53, 0x35, 0xbd, 0xfe, 0x08, 0x0a, 0x67, 0x75, 0x4b, 0xdf, 0x15, 0xdf,
4026 0xe2, 0xf2, 0x1d, 0xc1, 0x37, 0xed, 0x0a, 0x7b, 0x76, 0xaa, 0x63, 0xfa, 0x1e, 0xe6, 0x38, 0xf5,
4027 0xb9, 0x27, 0xec, 0xbd, 0x8a, 0x11, 0xfc, 0xed, 0x63, 0x6e, 0x6a, 0xdb, 0x3f, 0x1f, 0xa7, 0xfa,
4028 0xa8, 0xef, 0x4b, 0xf8, 0xa8, 0x55, 0xe0, 0x06, 0x11, 0xef, 0x9d, 0x14, 0xe6, 0xb0, 0x3e, 0xf4,
4029 0x67, 0x79, 0x9a, 0xb7, 0xfa, 0x81, 0xf4, 0x2a, 0xee, 0xaa, 0x9e, 0x68, 0xee, 0x34, 0xbc, 0xc5,
4030 0xc0, 0x9a, 0xb7, 0x21, 0x79, 0xac, 0xad, 0xae, 0x89, 0x57, 0x32, 0xf1, 0x2d, 0x97, 0x39, 0xa9,
4031 0xbc, 0x56, 0x14, 0x9e, 0xbb, 0x87, 0x23, 0xe7, 0xc4, 0x40, 0x16, 0x67, 0x6b, 0x91, 0xec, 0x4f,
4032 0x62, 0xd8, 0x1a, 0x67, 0x57, 0x23, 0xd9, 0x9f, 0xc6, 0xb0, 0xab, 0x9c, 0xad, 0x47, 0xb2, 0xbf,
4033 0x1a, 0xc3, 0xd6, 0x39, 0x7b, 0x3d, 0x92, 0xfd, 0xb5, 0x18, 0xf6, 0x3a, 0x67, 0xd7, 0x22, 0xd9,
4034 0x5f, 0x8f, 0x61, 0xd7, 0x38, 0xfb, 0x4e, 0x24, 0xfb, 0x1b, 0x31, 0xec, 0x3b, 0x9c, 0x7d, 0x37,
4035 0x92, 0xfd, 0xcd, 0x18, 0xf6, 0x5d, 0xce, 0xbe, 0x17, 0xc9, 0xfe, 0x56, 0x0c, 0xfb, 0x1e, 0x63,
4036 0xaf, 0xad, 0x46, 0xb2, 0x3f, 0x8b, 0x66, 0xaf, 0xad, 0x72, 0x76, 0xb4, 0xd6, 0xbe, 0x1d, 0xc3,
4037 0xe6, 0x5a, 0x5b, 0x8b, 0xd6, 0xda, 0x77, 0x62, 0xd8, 0x5c, 0x6b, 0x6b, 0xd1, 0x5a, 0xfb, 0x6e,
4038 0x0c, 0x9b, 0x6b, 0x6d, 0x2d, 0x5a, 0x6b, 0xdf, 0x8b, 0x61, 0x73, 0xad, 0xad, 0x45, 0x6b, 0xed,
4039 0xfb, 0x31, 0x6c, 0xae, 0xb5, 0xb5, 0x68, 0xad, 0xfd, 0x20, 0x86, 0xcd, 0xb5, 0xb6, 0x16, 0xad,
4040 0xb5, 0x3f, 0x8a, 0x61, 0x73, 0xad, 0xad, 0x45, 0x6b, 0xed, 0x8f, 0x63, 0xd8, 0x5c, 0x6b, 0x6b,
4041 0xd1, 0x5a, 0xfb, 0x93, 0x18, 0x36, 0xd7, 0x9a, 0x16, 0xad, 0xb5, 0x3f, 0x8d, 0x66, 0x6b, 0x5c,
4042 0x6b, 0x5a, 0xb4, 0xd6, 0xfe, 0x2c, 0x86, 0xcd, 0xb5, 0xa6, 0x45, 0x6b, 0xed, 0xcf, 0x63, 0xd8,
4043 0x5c, 0x6b, 0x5a, 0xb4, 0xd6, 0x7e, 0x18, 0xc3, 0xe6, 0x5a, 0xd3, 0xa2, 0xb5, 0xf6, 0x17, 0x31,
4044 0x6c, 0xae, 0x35, 0x2d, 0x5a, 0x6b, 0x7f, 0x19, 0xc3, 0xe6, 0x5a, 0xd3, 0xa2, 0xb5, 0xf6, 0x57,
4045 0x31, 0x6c, 0xae, 0x35, 0x2d, 0x5a, 0x6b, 0x7f, 0x1d, 0xc3, 0xe6, 0x5a, 0xd3, 0xa2, 0xb5, 0xf6,
4046 0x37, 0x31, 0x6c, 0xae, 0x35, 0x2d, 0x5a, 0x6b, 0x7f, 0x1b, 0xc3, 0xe6, 0x5a, 0xab, 0x46, 0x6b,
4047 0xed, 0xef, 0xa2, 0xd9, 0x55, 0xae, 0xb5, 0x6a, 0xb4, 0xd6, 0xfe, 0x3e, 0x86, 0xcd, 0xb5, 0x56,
4048 0x8d, 0xd6, 0xda, 0x3f, 0xc4, 0xb0, 0xb9, 0xd6, 0xaa, 0xd1, 0x5a, 0xfb, 0xc7, 0x18, 0x36, 0xd7,
4049 0x5a, 0x35, 0x5a, 0x6b, 0x3f, 0x8a, 0x61, 0x73, 0xad, 0x55, 0xa3, 0xb5, 0xf6, 0x4f, 0x31, 0x6c,
4050 0xae, 0xb5, 0x6a, 0xb4, 0xd6, 0xfe, 0x39, 0x86, 0xcd, 0xb5, 0x56, 0x8d, 0xd6, 0xda, 0xbf, 0xc4,
4051 0xb0, 0xb9, 0xd6, 0xaa, 0xd1, 0x5a, 0xfb, 0xd7, 0x18, 0x36, 0xd7, 0x5a, 0x35, 0x5a, 0x6b, 0xff,
4052 0x16, 0xc3, 0xe6, 0x5a, 0xd3, 0xa3, 0xb5, 0xf6, 0xef, 0xd1, 0x6c, 0x9d, 0x6b, 0x4d, 0x8f, 0xd6,
4053 0xda, 0x7f, 0xc4, 0xb0, 0xb9, 0xd6, 0xf4, 0x68, 0xad, 0xfd, 0x67, 0x0c, 0x9b, 0x6b, 0x4d, 0x8f,
4054 0xd6, 0xda, 0x7f, 0xc5, 0xb0, 0xb9, 0xd6, 0xf4, 0x68, 0xad, 0xfd, 0x77, 0x0c, 0x9b, 0x6b, 0x4d,
4055 0x8f, 0xd6, 0xda, 0xff, 0xc4, 0xb0, 0xb9, 0xd6, 0xf4, 0x68, 0xad, 0xfd, 0x38, 0x86, 0xcd, 0xb5,
4056 0xa6, 0x47, 0x6b, 0xed, 0x27, 0x31, 0x6c, 0xae, 0x35, 0x3d, 0x5a, 0x6b, 0xff, 0x1b, 0xc3, 0xe6,
4057 0x5a, 0xd3, 0xa3, 0xb5, 0xf6, 0x7f, 0x31, 0x6c, 0xae, 0xb5, 0xf5, 0x68, 0xad, 0xfd, 0x7f, 0x34,
4058 0x7b, 0x7d, 0xf5, 0xa7, 0x01, 0x00, 0x00, 0xff, 0xff, 0x40, 0x32, 0xb7, 0xac, 0x57, 0x39, 0x00,
4059 0x00,
4060 }
3874 0xaf, 0x20, 0x00, 0xc7, 0x9c, 0x38, 0x2b, 0xa3, 0xb1, 0xed, 0xd8, 0x24, 0x4b, 0x7f, 0x77, 0x3b,
3875 0x4e, 0xa7, 0x7c, 0x1d, 0xd2, 0x1b, 0x76, 0xc3, 0x3a, 0x1a, 0x92, 0xab, 0x90, 0x38, 0xb4, 0xed,
3876 0x92, 0xa4, 0xca, 0x95, 0x79, 0x6d, 0x6e, 0xc5, 0x45, 0xac, 0x34, 0x5b, 0x2d, 0x83, 0xb6, 0x94,
3877 0xef, 0x40, 0x7e, 0xc3, 0xde, 0x33, 0x27, 0x4e, 0xb3, 0x6f, 0x0e, 0xba, 0x64, 0x11, 0x52, 0x4f,
3878 0x3b, 0xfb, 0xe6, 0x00, 0x19, 0x39, 0x83, 0x15, 0x08, 0x81, 0xe4, 0xde, 0xc9, 0xc8, 0x2c, 0xc9,
3879 0x58, 0x89, 0xbf, 0xcb, 0xbf, 0x72, 0x85, 0x76, 0x42, 0x99, 0xe4, 0x3a, 0x24, 0xbf, 0xdc, 0xb7,
3880 0xba, 0xbc, 0x97, 0xd7, 0xfc, 0x5e, 0x58, 0xfb, 0xca, 0x97, 0x37, 0xb7, 0x1f, 0x1b, 0x08, 0xa1,
3881 0xf6, 0xf7, 0x3a, 0xfb, 0x03, 0x6a, 0x4a, 0xa2, 0xf6, 0xb1, 0x40, 0x6b, 0x77, 0x3a, 0xe3, 0xce,
3882 0xb0, 0x94, 0x50, 0xa5, 0x4a, 0xca, 0x60, 0x05, 0x72, 0x1f, 0xe6, 0x0c, 0xf3, 0xc5, 0x51, 0x7f,
3883 0x6c, 0x76, 0x71, 0x70, 0xa5, 0xa4, 0x2a, 0x57, 0xf2, 0xd3, 0xf6, 0xb1, 0xd1, 0x08, 0x62, 0x19,
3884 0x79, 0x64, 0x76, 0x1c, 0x97, 0x9c, 0x52, 0x13, 0xb1, 0x64, 0x01, 0x4b, 0xc9, 0xad, 0x91, 0xd3,
3885 0xb7, 0xad, 0xce, 0x80, 0x91, 0xd3, 0xaa, 0x14, 0x43, 0x0e, 0x60, 0xc9, 0x9b, 0x50, 0x6c, 0xb6,
3886 0x1f, 0xda, 0xf6, 0xa0, 0x3d, 0xe6, 0x23, 0x2a, 0x81, 0x2a, 0x57, 0xb2, 0xc6, 0x5c, 0x93, 0xd6,
3887 0xba, 0xc3, 0x24, 0x15, 0x50, 0x9a, 0xed, 0x4d, 0xcb, 0xa9, 0x6a, 0x3e, 0x30, 0xaf, 0xca, 0x95,
3888 0x94, 0x31, 0xdf, 0xc4, 0xea, 0x29, 0x64, 0x4d, 0xf7, 0x91, 0x05, 0x55, 0xae, 0x24, 0x18, 0xb2,
3889 0xa6, 0x7b, 0xc8, 0x5b, 0x40, 0x9a, 0xed, 0x66, 0xff, 0xd8, 0xec, 0x8a, 0x56, 0xe7, 0x54, 0xb9,
3890 0x92, 0x31, 0x94, 0x26, 0x6f, 0x98, 0x81, 0x16, 0x2d, 0xcf, 0xab, 0x72, 0x25, 0xed, 0xa2, 0x05,
3891 0xdb, 0x37, 0x60, 0xa1, 0xd9, 0x7e, 0xb7, 0x1f, 0x1c, 0x70, 0x51, 0x95, 0x2b, 0x73, 0x46, 0xb1,
3892 0xc9, 0xea, 0xa7, 0xb1, 0xa2, 0x61, 0x45, 0x95, 0x2b, 0x49, 0x8e, 0x15, 0xec, 0xe2, 0xec, 0x9a,
3893 0x03, 0xbb, 0xe3, 0xf8, 0xd0, 0x05, 0x55, 0xae, 0xc8, 0xc6, 0x7c, 0x13, 0xab, 0x83, 0x56, 0x1f,
3894 0xdb, 0x47, 0xfb, 0x03, 0xd3, 0x87, 0x12, 0x55, 0xae, 0x48, 0x46, 0xb1, 0xc9, 0xea, 0x83, 0xd8,
3895 0x5d, 0x67, 0xdc, 0xb7, 0x7a, 0x3e, 0xf6, 0x3c, 0xea, 0xb7, 0xd8, 0x64, 0xf5, 0xc1, 0x11, 0x3c,
3896 0x3c, 0x71, 0xcc, 0x89, 0x0f, 0x35, 0x55, 0xb9, 0x52, 0x30, 0xe6, 0x9b, 0x58, 0x1d, 0xb2, 0x1a,
3897 0x5a, 0x83, 0x43, 0x55, 0xae, 0x2c, 0x50, 0xab, 0x33, 0xd6, 0x60, 0x37, 0xb4, 0x06, 0x3d, 0x55,
3898 0xae, 0x10, 0x8e, 0x15, 0xd6, 0x40, 0xd4, 0x0c, 0x13, 0x62, 0x69, 0x51, 0x4d, 0x08, 0x9a, 0x61,
3899 0x95, 0x41, 0xcd, 0x70, 0xe0, 0x6b, 0x6a, 0x42, 0xd4, 0x4c, 0x08, 0x89, 0x9d, 0x73, 0xe4, 0x05,
3900 0x35, 0x21, 0x6a, 0x86, 0x23, 0x43, 0x9a, 0xe1, 0xd8, 0xd7, 0xd5, 0x44, 0x50, 0x33, 0x53, 0x68,
3901 0xd1, 0x72, 0x49, 0x4d, 0x04, 0x35, 0xc3, 0xd1, 0x41, 0xcd, 0x70, 0xf0, 0x45, 0x35, 0x11, 0xd0,
3902 0x4c, 0x18, 0x2b, 0x1a, 0x5e, 0x52, 0x13, 0x01, 0xcd, 0x88, 0xb3, 0x73, 0x35, 0xc3, 0xa1, 0xcb,
3903 0x6a, 0x42, 0xd4, 0x8c, 0x68, 0xd5, 0xd3, 0x0c, 0x87, 0x5e, 0x52, 0x13, 0x01, 0xcd, 0x88, 0x58,
3904 0x4f, 0x33, 0x1c, 0x7b, 0x59, 0x4d, 0x04, 0x34, 0xc3, 0xb1, 0xd7, 0x45, 0xcd, 0x70, 0xe8, 0xc7,
3905 0x92, 0x9a, 0x10, 0x45, 0xc3, 0xa1, 0x37, 0x03, 0xa2, 0xe1, 0xd8, 0x4f, 0x28, 0x56, 0x54, 0x4d,
3906 0x18, 0x2c, 0xae, 0xc2, 0xa7, 0x14, 0x2c, 0xca, 0x86, 0x83, 0x7d, 0xd9, 0xd8, 0xdc, 0x05, 0x95,
3907 0xae, 0xa8, 0x92, 0x27, 0x1b, 0xd7, 0x2f, 0x89, 0xb2, 0xf1, 0x80, 0x57, 0xd1, 0xd5, 0x72, 0xd9,
3908 0x4c, 0x21, 0x6b, 0xba, 0x8f, 0x54, 0x55, 0xc9, 0x97, 0x8d, 0x87, 0x0c, 0xc8, 0xc6, 0xc3, 0x5e,
3909 0x53, 0x25, 0x51, 0x36, 0x33, 0xd0, 0xa2, 0xe5, 0xb2, 0x2a, 0x89, 0xb2, 0xf1, 0xd0, 0xa2, 0x6c,
3910 0x3c, 0xf0, 0x17, 0x54, 0x49, 0x90, 0xcd, 0x34, 0x56, 0x34, 0xfc, 0x45, 0x55, 0x12, 0x64, 0x13,
3911 0x9c, 0x1d, 0x93, 0x8d, 0x07, 0x7d, 0x43, 0x95, 0x7c, 0xd9, 0x04, 0xad, 0x72, 0xd9, 0x78, 0xd0,
3912 0x37, 0x55, 0x49, 0x90, 0x4d, 0x10, 0xcb, 0x65, 0xe3, 0x61, 0xdf, 0xc2, 0xf8, 0xe6, 0xca, 0xc6,
3913 0xc3, 0x0a, 0xb2, 0xf1, 0xa0, 0xbf, 0x43, 0x63, 0xa1, 0x27, 0x1b, 0x0f, 0x2a, 0xca, 0xc6, 0xc3,
3914 0xfe, 0x2e, 0xc5, 0xfa, 0xb2, 0x99, 0x06, 0x8b, 0xab, 0xf0, 0x7b, 0x14, 0xec, 0xcb, 0xc6, 0x03,
3915 0xaf, 0xe0, 0x20, 0xa8, 0x6c, 0xba, 0xe6, 0x61, 0xe7, 0x68, 0x40, 0x25, 0x56, 0xa1, 0xba, 0xa9,
3916 0x27, 0x9d, 0xf1, 0x91, 0x49, 0x47, 0x62, 0xdb, 0x83, 0xc7, 0x6e, 0x1b, 0x59, 0xa1, 0xc6, 0x99,
3917 0x7c, 0x7c, 0xc2, 0x75, 0xaa, 0x9f, 0xba, 0x5c, 0xd5, 0x8c, 0x22, 0xd3, 0xd0, 0x34, 0xbe, 0xa6,
3918 0x0b, 0xf8, 0x1b, 0x54, 0x45, 0x75, 0xb9, 0xa6, 0x33, 0x7c, 0x4d, 0xf7, 0xf1, 0x55, 0x38, 0xef,
3919 0x4b, 0xc9, 0x67, 0xdc, 0xa4, 0x5a, 0xaa, 0x27, 0xaa, 0xda, 0xaa, 0xb1, 0xe0, 0x0a, 0x6a, 0x16,
3920 0x29, 0xd0, 0xcd, 0x2d, 0x2a, 0xa9, 0x7a, 0xa2, 0xa6, 0x7b, 0x24, 0xb1, 0x27, 0x8d, 0xca, 0x90,
3921 0x0b, 0xcb, 0xe7, 0xdc, 0xa6, 0xca, 0xaa, 0x27, 0xab, 0xda, 0xea, 0xaa, 0xa1, 0x70, 0x7d, 0xcd,
3922 0xe0, 0x04, 0xfa, 0x59, 0xa1, 0x0a, 0xab, 0x27, 0x6b, 0xba, 0xc7, 0x09, 0xf6, 0xb3, 0xe0, 0x0a,
3923 0xcd, 0xa7, 0x7c, 0x89, 0x2a, 0xad, 0x9e, 0xae, 0xae, 0xe9, 0x6b, 0xeb, 0xf7, 0x8c, 0x22, 0x53,
3924 0x9c, 0xcf, 0xd1, 0x69, 0x3f, 0x5c, 0x72, 0x3e, 0x69, 0x95, 0x6a, 0xae, 0x9e, 0xd6, 0xee, 0xac,
3925 0xdd, 0xd5, 0xee, 0x1a, 0x0a, 0xd7, 0x9e, 0xcf, 0x7a, 0x87, 0xb2, 0xb8, 0xf8, 0x7c, 0xd6, 0x1a,
3926 0x55, 0x5f, 0x5d, 0x79, 0x66, 0x0e, 0x06, 0xf6, 0x2d, 0xb5, 0xfc, 0xd2, 0x1e, 0x0f, 0xba, 0xd7,
3927 0xca, 0x60, 0x28, 0x5c, 0x8f, 0x62, 0xaf, 0x0b, 0xae, 0x20, 0x7d, 0xfa, 0xaf, 0xd1, 0x7b, 0x58,
3928 0xa1, 0x9e, 0x79, 0xd8, 0xef, 0x59, 0xf6, 0xc4, 0x34, 0x8a, 0x4c, 0x9a, 0xa1, 0x35, 0xd9, 0x0d,
3929 0xaf, 0xe3, 0xaf, 0x53, 0xda, 0x42, 0x3d, 0x71, 0xbb, 0xaa, 0xd1, 0x9e, 0x66, 0xad, 0xe3, 0x6e,
3930 0x78, 0x1d, 0x7f, 0x83, 0x72, 0x48, 0x3d, 0x71, 0xbb, 0xa6, 0x73, 0x8e, 0xb8, 0x8e, 0x77, 0xe0,
3931 0x42, 0x28, 0x2e, 0xb6, 0x47, 0x9d, 0x83, 0xe7, 0x66, 0xb7, 0xa4, 0xd1, 0xf0, 0xf8, 0x50, 0x56,
3932 0x24, 0xe3, 0x7c, 0x20, 0x44, 0xee, 0x60, 0x33, 0xb9, 0x07, 0xaf, 0x87, 0x03, 0xa5, 0xcb, 0xac,
3933 0xd2, 0x78, 0x89, 0xcc, 0xc5, 0x60, 0xcc, 0x0c, 0x51, 0x05, 0x07, 0xec, 0x52, 0x75, 0x1a, 0x40,
3934 0x7d, 0xaa, 0xef, 0x89, 0x39, 0xf5, 0x67, 0xe0, 0xe2, 0x74, 0x28, 0x75, 0xc9, 0xeb, 0x34, 0xa2,
3935 0x22, 0xf9, 0x42, 0x38, 0xaa, 0x4e, 0xd1, 0x67, 0xf4, 0x5d, 0xa3, 0x21, 0x56, 0xa4, 0x4f, 0xf5,
3936 0x7e, 0x1f, 0x4a, 0x53, 0xc1, 0xd6, 0x65, 0xdf, 0xa1, 0x31, 0x17, 0xd9, 0xaf, 0x85, 0xe2, 0x6e,
3937 0x98, 0x3c, 0xa3, 0xeb, 0xbb, 0x34, 0x08, 0x0b, 0xe4, 0xa9, 0x9e, 0x71, 0xc9, 0x82, 0xe1, 0xd8,
3938 0xe5, 0xde, 0xa3, 0x51, 0x99, 0x2f, 0x59, 0x20, 0x32, 0x8b, 0xfd, 0x86, 0xe2, 0xb3, 0xcb, 0xad,
3939 0xd3, 0x30, 0xcd, 0xfb, 0x0d, 0x86, 0x6a, 0x4e, 0x7e, 0x9b, 0x92, 0x77, 0x67, 0xcf, 0xf8, 0xc7,
3940 0x09, 0x1a, 0x60, 0x39, 0x7b, 0x77, 0xd6, 0x94, 0x3d, 0xf6, 0x8c, 0x29, 0xff, 0x84, 0xb2, 0x89,
3941 0xc0, 0x9e, 0x9a, 0xf3, 0x63, 0x98, 0x73, 0x6f, 0x75, 0xbd, 0xb1, 0x7d, 0x34, 0x2a, 0x35, 0x55,
3942 0xb9, 0x02, 0xda, 0x95, 0xa9, 0xec, 0xc7, 0xbd, 0xe4, 0x6d, 0x50, 0x94, 0x11, 0x24, 0x31, 0x2b,
3943 0xcc, 0x2e, 0xb3, 0xb2, 0xa3, 0x26, 0x22, 0xac, 0x30, 0x94, 0x67, 0x45, 0x20, 0x51, 0x2b, 0xae,
3944 0xd3, 0x67, 0x56, 0x3e, 0x50, 0xa5, 0x99, 0x56, 0xdc, 0x10, 0xc0, 0xad, 0x04, 0x48, 0x4b, 0xeb,
3945 0x7e, 0xbe, 0x85, 0xed, 0xe4, 0x8b, 0xe1, 0x04, 0x6c, 0x03, 0xef, 0xcf, 0xc1, 0x4a, 0x46, 0x13,
3946 0x06, 0x37, 0x4d, 0xfb, 0xd9, 0x08, 0x5a, 0x60, 0x34, 0xd3, 0xb4, 0x9f, 0x9b, 0x41, 0x2b, 0xff,
3947 0xa6, 0x04, 0x49, 0x9a, 0x4f, 0x92, 0x2c, 0x24, 0xdf, 0x6b, 0x6d, 0x3e, 0x56, 0xce, 0xd1, 0x5f,
3948 0x0f, 0x5b, 0xad, 0xa7, 0x8a, 0x44, 0x72, 0x90, 0x7a, 0xf8, 0x95, 0xbd, 0xc6, 0xae, 0x22, 0x93,
3949 0x22, 0xe4, 0x9b, 0x9b, 0xdb, 0x1b, 0x0d, 0x63, 0xc7, 0xd8, 0xdc, 0xde, 0x53, 0x12, 0xb4, 0xad,
3950 0xf9, 0xb4, 0xf5, 0x60, 0x4f, 0x49, 0x92, 0x0c, 0x24, 0x68, 0x5d, 0x8a, 0x00, 0xa4, 0x77, 0xf7,
3951 0x8c, 0xcd, 0xed, 0x0d, 0x25, 0x4d, 0xad, 0xec, 0x6d, 0x6e, 0x35, 0x94, 0x0c, 0x45, 0xee, 0xbd,
3952 0xbb, 0xf3, 0xb4, 0xa1, 0x64, 0xe9, 0xcf, 0x07, 0x86, 0xf1, 0xe0, 0x2b, 0x4a, 0x8e, 0x92, 0xb6,
3953 0x1e, 0xec, 0x28, 0x80, 0xcd, 0x0f, 0x1e, 0x3e, 0x6d, 0x28, 0x79, 0x52, 0x80, 0x6c, 0xf3, 0xdd,
3954 0xed, 0x47, 0x7b, 0x9b, 0xad, 0x6d, 0xa5, 0x50, 0x3e, 0x81, 0x12, 0x5b, 0xe6, 0xc0, 0x2a, 0xb2,
3955 0xa4, 0xf0, 0x1d, 0x48, 0xb1, 0x9d, 0x91, 0x50, 0x25, 0x95, 0xf0, 0xce, 0x4c, 0x53, 0x56, 0xd8,
3956 0x1e, 0x31, 0xda, 0xd2, 0x65, 0x48, 0xb1, 0x55, 0x5a, 0x84, 0x14, 0x5b, 0x1d, 0x19, 0x53, 0x45,
3957 0x56, 0x28, 0xff, 0x96, 0x0c, 0xb0, 0x61, 0xef, 0x3e, 0xef, 0x8f, 0x30, 0x21, 0xbf, 0x0c, 0x30,
3958 0x79, 0xde, 0x1f, 0xb5, 0x51, 0xf5, 0x3c, 0xa9, 0xcc, 0xd1, 0x1a, 0xf4, 0x77, 0xe4, 0x1a, 0x14,
3959 0xb0, 0xf9, 0x90, 0x79, 0x21, 0xcc, 0x25, 0x33, 0x46, 0x9e, 0xd6, 0x71, 0xc7, 0x14, 0x84, 0xd4,
3960 0x74, 0x4c, 0x21, 0xd3, 0x02, 0xa4, 0xa6, 0x93, 0xab, 0x80, 0xc5, 0xf6, 0x04, 0x23, 0x0a, 0xa6,
3961 0x8d, 0x39, 0x03, 0xfb, 0x65, 0x31, 0x86, 0xbc, 0x0d, 0xd8, 0x27, 0x9b, 0x77, 0x71, 0xfa, 0x74,
3962 0xb8, 0xc3, 0x5d, 0xa1, 0x3f, 0xd8, 0x6c, 0x7d, 0xc2, 0x52, 0x0b, 0x72, 0x5e, 0x3d, 0xed, 0x0b,
3963 0x6b, 0xf9, 0x8c, 0x14, 0x9c, 0x11, 0x60, 0x95, 0x37, 0x25, 0x06, 0xe0, 0xa3, 0x59, 0xc0, 0xd1,
3964 0x30, 0x12, 0x1b, 0x4e, 0xf9, 0x32, 0xcc, 0x6d, 0xdb, 0x16, 0x3b, 0xbd, 0xb8, 0x4a, 0x05, 0x90,
3965 0x3a, 0x25, 0x09, 0xb3, 0x27, 0xa9, 0x53, 0xbe, 0x02, 0x20, 0xb4, 0x29, 0x20, 0xed, 0xb3, 0x36,
3966 0xf4, 0x01, 0xd2, 0x7e, 0xf9, 0x26, 0xa4, 0xb7, 0x3a, 0xc7, 0x7b, 0x9d, 0x1e, 0xb9, 0x06, 0x30,
3967 0xe8, 0x4c, 0x9c, 0xf6, 0x21, 0xee, 0xc3, 0xe7, 0x9f, 0x7f, 0xfe, 0xb9, 0x84, 0x97, 0xbd, 0x1c,
3968 0xad, 0x65, 0xfb, 0xf1, 0x02, 0xa0, 0x35, 0xe8, 0x6e, 0x99, 0x93, 0x49, 0xa7, 0x67, 0x92, 0x2a,
3969 0xa4, 0x2d, 0x73, 0x42, 0xa3, 0x9d, 0x84, 0xef, 0x08, 0xcb, 0xfe, 0x2a, 0xf8, 0xa8, 0x95, 0x6d,
3970 0x84, 0x18, 0x1c, 0x4a, 0x14, 0x48, 0x58, 0x47, 0x43, 0x7c, 0x27, 0x49, 0x19, 0xf4, 0xe7, 0xd2,
3971 0x25, 0x48, 0x33, 0x0c, 0x21, 0x90, 0xb4, 0x3a, 0x43, 0xb3, 0xc4, 0xfa, 0xc5, 0xdf, 0xe5, 0x5f,
3972 0x95, 0x00, 0xb6, 0xcd, 0x97, 0x67, 0xe8, 0xd3, 0x47, 0xc5, 0xf4, 0x99, 0x60, 0x7d, 0xde, 0x8f,
3973 0xeb, 0x93, 0xea, 0xec, 0xd0, 0xb6, 0xbb, 0x6d, 0xb6, 0xc5, 0xec, 0x49, 0x27, 0x47, 0x6b, 0x70,
3974 0xd7, 0xca, 0x1f, 0x40, 0x61, 0xd3, 0xb2, 0xcc, 0xb1, 0x3b, 0x26, 0x02, 0xc9, 0x67, 0xf6, 0xc4,
3975 0xe1, 0x6f, 0x4b, 0xf8, 0x9b, 0x94, 0x20, 0x39, 0xb2, 0xc7, 0x0e, 0x9b, 0x67, 0x3d, 0xa9, 0xaf,
3976 0xae, 0xae, 0x1a, 0x58, 0x43, 0x2e, 0x41, 0xee, 0xc0, 0xb6, 0x2c, 0xf3, 0x80, 0x4e, 0x22, 0x81,
3977 0x69, 0x8d, 0x5f, 0x51, 0xfe, 0x65, 0x09, 0x0a, 0x2d, 0xe7, 0x99, 0x6f, 0x5c, 0x81, 0xc4, 0x73,
3978 0xf3, 0x04, 0x87, 0x97, 0x30, 0xe8, 0x4f, 0x7a, 0x54, 0x7e, 0xbe, 0x33, 0x38, 0x62, 0x6f, 0x4d,
3979 0x05, 0x83, 0x15, 0xc8, 0x05, 0x48, 0xbf, 0x34, 0xfb, 0xbd, 0x67, 0x0e, 0xda, 0x94, 0x0d, 0x5e,
3980 0x22, 0xb7, 0x20, 0xd5, 0xa7, 0x83, 0x2d, 0x25, 0x71, 0xbd, 0x2e, 0xf8, 0xeb, 0x25, 0xce, 0xc1,
3981 0x60, 0xa0, 0x1b, 0xd9, 0x6c, 0x57, 0xf9, 0xe8, 0xa3, 0x8f, 0x3e, 0x92, 0xcb, 0x87, 0xb0, 0xe8,
3982 0x1e, 0xde, 0xc0, 0x64, 0xb7, 0xa1, 0x34, 0x30, 0xed, 0xf6, 0x61, 0xdf, 0xea, 0x0c, 0x06, 0x27,
3983 0xed, 0x97, 0xb6, 0xd5, 0xee, 0x58, 0x6d, 0x7b, 0x72, 0xd0, 0x19, 0xe3, 0x02, 0x44, 0x77, 0xb1,
3984 0x38, 0x30, 0xed, 0x26, 0xa3, 0xbd, 0x6f, 0x5b, 0x0f, 0xac, 0x16, 0xe5, 0x94, 0xff, 0x20, 0x09,
3985 0xb9, 0xad, 0x13, 0xd7, 0xfa, 0x22, 0xa4, 0x0e, 0xec, 0x23, 0x8b, 0xad, 0x65, 0xca, 0x60, 0x05,
3986 0x6f, 0x8f, 0x64, 0x61, 0x8f, 0x16, 0x21, 0xf5, 0xe2, 0xc8, 0x76, 0x4c, 0x9c, 0x6e, 0xce, 0x60,
3987 0x05, 0xba, 0x5a, 0x23, 0xd3, 0x29, 0x25, 0x31, 0xb9, 0xa5, 0x3f, 0xfd, 0xf9, 0xa7, 0xce, 0x30,
3988 0x7f, 0xb2, 0x02, 0x69, 0x9b, 0xae, 0xfe, 0xa4, 0x94, 0xc6, 0x77, 0x35, 0x01, 0x2e, 0xee, 0x8a,
3989 0xc1, 0x51, 0x64, 0x13, 0x16, 0x5e, 0x9a, 0xed, 0xe1, 0xd1, 0xc4, 0x69, 0xf7, 0xec, 0x76, 0xd7,
3990 0x34, 0x47, 0xe6, 0xb8, 0x34, 0x87, 0x3d, 0x09, 0x3e, 0x61, 0xd6, 0x42, 0x1a, 0xf3, 0x2f, 0xcd,
3991 0xad, 0xa3, 0x89, 0xb3, 0x61, 0x3f, 0x46, 0x16, 0xa9, 0x42, 0x6e, 0x6c, 0x52, 0x4f, 0x40, 0x07,
3992 0x5b, 0x08, 0xf7, 0x1e, 0xa0, 0x66, 0xc7, 0xe6, 0x08, 0x2b, 0xc8, 0x3a, 0x64, 0xf7, 0xfb, 0xcf,
3993 0xcd, 0xc9, 0x33, 0xb3, 0x5b, 0xca, 0xa8, 0x52, 0x65, 0x5e, 0xbb, 0xe8, 0x73, 0xbc, 0x65, 0x5d,
3994 0x79, 0x64, 0x0f, 0xec, 0xb1, 0xe1, 0x41, 0xc9, 0x7d, 0xc8, 0x4d, 0xec, 0xa1, 0xc9, 0xf4, 0x9d,
3995 0xc5, 0xa0, 0x7a, 0x79, 0x16, 0x6f, 0xd7, 0x1e, 0x9a, 0xae, 0x07, 0x73, 0xf1, 0x64, 0x99, 0x0d,
3996 0x74, 0x9f, 0x5e, 0x9d, 0x4b, 0x80, 0x4f, 0x03, 0x74, 0x40, 0x78, 0x95, 0x26, 0x4b, 0x74, 0x40,
3997 0xbd, 0x43, 0x7a, 0x23, 0x2a, 0xe5, 0x31, 0xaf, 0xf4, 0xca, 0x4b, 0xb7, 0x20, 0xe7, 0x19, 0xf4,
3998 0x5d, 0x1f, 0x73, 0x37, 0x39, 0xf4, 0x07, 0xcc, 0xf5, 0x31, 0x5f, 0xf3, 0x06, 0xa4, 0x70, 0xd8,
3999 0x34, 0x42, 0x19, 0x0d, 0x1a, 0x10, 0x73, 0x90, 0xda, 0x30, 0x1a, 0x8d, 0x6d, 0x45, 0xc2, 0xd8,
4000 0xf8, 0xf4, 0xdd, 0x86, 0x22, 0x0b, 0x8a, 0xfd, 0x6d, 0x09, 0x12, 0x8d, 0x63, 0x54, 0x0b, 0x9d,
4001 0x86, 0x7b, 0xa2, 0xe9, 0x6f, 0xad, 0x06, 0xc9, 0xa1, 0x3d, 0x36, 0xc9, 0xf9, 0x19, 0xb3, 0x2c,
4002 0xf5, 0x70, 0xbf, 0x84, 0x57, 0xe4, 0xc6, 0xb1, 0x63, 0x20, 0x5e, 0x7b, 0x0b, 0x92, 0x8e, 0x79,
4003 0xec, 0xcc, 0xe6, 0x3d, 0x63, 0x1d, 0x50, 0x80, 0x76, 0x13, 0xd2, 0xd6, 0xd1, 0x70, 0xdf, 0x1c,
4004 0xcf, 0x86, 0xf6, 0x71, 0x7a, 0x1c, 0x52, 0x7e, 0x0f, 0x94, 0x47, 0xf6, 0x70, 0x34, 0x30, 0x8f,
4005 0x1b, 0xc7, 0x8e, 0x69, 0x4d, 0xfa, 0xb6, 0x45, 0xf5, 0x7c, 0xd8, 0x1f, 0xa3, 0x17, 0xc1, 0xb7,
4006 0x62, 0x2c, 0xd0, 0x53, 0x3d, 0x31, 0x0f, 0x6c, 0xab, 0xcb, 0x1d, 0x26, 0x2f, 0x51, 0xb4, 0xf3,
4007 0xac, 0x3f, 0xa6, 0x0e, 0x84, 0xfa, 0x79, 0x56, 0x28, 0x6f, 0x40, 0x91, 0xe7, 0x18, 0x13, 0xde,
4008 0x71, 0xf9, 0x06, 0x14, 0xdc, 0x2a, 0x7c, 0x38, 0xcf, 0x42, 0xf2, 0x83, 0x86, 0xd1, 0x52, 0xce,
4009 0xd1, 0x65, 0x6d, 0x6d, 0x37, 0x14, 0x89, 0xfe, 0xd8, 0x7b, 0xbf, 0x15, 0x58, 0xca, 0x4b, 0x50,
4010 0xf0, 0xc6, 0xbe, 0x6b, 0x3a, 0xd8, 0x42, 0x03, 0x42, 0xa6, 0x2e, 0x67, 0xa5, 0x72, 0x06, 0x52,
4011 0x8d, 0xe1, 0xc8, 0x39, 0x29, 0xff, 0x22, 0xe4, 0x39, 0xe8, 0x69, 0x7f, 0xe2, 0x90, 0x3b, 0x90,
4012 0x19, 0xf2, 0xf9, 0x4a, 0x78, 0xdd, 0x13, 0x35, 0xe5, 0xe3, 0xdc, 0xdf, 0x86, 0x8b, 0x5e, 0xaa,
4013 0x42, 0x46, 0xf0, 0xa5, 0xfc, 0xa8, 0xcb, 0xe2, 0x51, 0x67, 0x4e, 0x21, 0x21, 0x38, 0x85, 0xf2,
4014 0x16, 0x64, 0x58, 0x04, 0x9c, 0x60, 0x54, 0x67, 0xa9, 0x22, 0x13, 0x13, 0xdb, 0xf9, 0x3c, 0xab,
4015 0x63, 0x17, 0x95, 0xab, 0x90, 0x47, 0xc1, 0x72, 0x04, 0x73, 0x9d, 0x80, 0x55, 0x4c, 0x6e, 0xbf,
4016 0x9f, 0x82, 0xac, 0xbb, 0x52, 0x64, 0x19, 0xd2, 0x2c, 0x3f, 0x43, 0x53, 0xee, 0xfb, 0x41, 0x0a,
4017 0x33, 0x32, 0xb2, 0x0c, 0x19, 0x9e, 0x83, 0x71, 0xef, 0x2e, 0x57, 0x35, 0x23, 0xcd, 0x72, 0x2e,
4018 0xaf, 0xb1, 0xa6, 0xa3, 0x63, 0x62, 0x2f, 0x03, 0x69, 0x96, 0x55, 0x11, 0x15, 0x72, 0x5e, 0x1e,
4019 0x85, 0xfe, 0x98, 0x3f, 0x03, 0x64, 0xdd, 0xc4, 0x49, 0x40, 0xd4, 0x74, 0xf4, 0x58, 0x3c, 0xe7,
4020 0xcf, 0x36, 0xfd, 0xeb, 0x49, 0xd6, 0xcd, 0x86, 0xf0, 0xf9, 0xde, 0x4d, 0xf0, 0x33, 0x3c, 0xff,
4021 0xf1, 0x01, 0x35, 0x1d, 0x5d, 0x82, 0x9b, 0xcd, 0x67, 0x78, 0x8e, 0x43, 0xae, 0xd2, 0x21, 0x62,
4022 0xce, 0x82, 0x47, 0xdf, 0x4f, 0xdd, 0xd3, 0x2c, 0x93, 0x21, 0xd7, 0xa8, 0x05, 0x96, 0x98, 0xe0,
4023 0xb9, 0xf4, 0xf3, 0xf4, 0x0c, 0xcf, 0x57, 0xc8, 0x4d, 0x0a, 0x61, 0xcb, 0x5f, 0x82, 0x88, 0xa4,
4024 0x3c, 0xc3, 0x93, 0x72, 0xa2, 0xd2, 0x0e, 0xd1, 0x3d, 0xa0, 0x4b, 0x10, 0x12, 0xf0, 0x34, 0x4b,
4025 0xc0, 0xc9, 0x15, 0x34, 0xc7, 0x26, 0x55, 0xf0, 0x93, 0xed, 0x0c, 0x4f, 0x70, 0xfc, 0x76, 0xbc,
4026 0xb2, 0x79, 0x89, 0x75, 0x86, 0xa7, 0x30, 0xa4, 0x46, 0xf7, 0x8b, 0xea, 0xbb, 0x34, 0x8f, 0x4e,
4027 0xb0, 0xe4, 0x0b, 0xcf, 0xdd, 0x53, 0xe6, 0x03, 0xeb, 0xcc, 0x83, 0x18, 0xa9, 0x26, 0x9e, 0x86,
4028 0x25, 0xca, 0xdb, 0xe9, 0x5b, 0x87, 0xa5, 0x22, 0xae, 0x44, 0xa2, 0x6f, 0x1d, 0x1a, 0xa9, 0x26,
4029 0xad, 0x61, 0x1a, 0xd8, 0xa6, 0x6d, 0x0a, 0xb6, 0x25, 0x6f, 0xb3, 0x46, 0x5a, 0x45, 0x4a, 0x90,
4030 0x6a, 0xb6, 0xb7, 0x3b, 0x56, 0x69, 0x81, 0xf1, 0xac, 0x8e, 0x65, 0x24, 0x9b, 0xdb, 0x1d, 0x8b,
4031 0xbc, 0x05, 0x89, 0xc9, 0xd1, 0x7e, 0x89, 0x84, 0xbf, 0xac, 0xec, 0x1e, 0xed, 0xbb, 0x43, 0x31,
4032 0x28, 0x82, 0x2c, 0x43, 0x76, 0xe2, 0x8c, 0xdb, 0xbf, 0x60, 0x8e, 0xed, 0xd2, 0x79, 0x5c, 0xc2,
4033 0x73, 0x46, 0x66, 0xe2, 0x8c, 0x3f, 0x30, 0xc7, 0xf6, 0x19, 0x9d, 0x5f, 0xf9, 0x0a, 0xe4, 0x05,
4034 0xbb, 0xa4, 0x08, 0x92, 0xc5, 0x6e, 0x0a, 0x75, 0xe9, 0x8e, 0x21, 0x59, 0xe5, 0x3d, 0x28, 0xb8,
4035 0x39, 0x0c, 0xce, 0x57, 0xa3, 0x27, 0x69, 0x60, 0x8f, 0xf1, 0x7c, 0xce, 0x6b, 0x97, 0xc4, 0x10,
4036 0xe5, 0xc3, 0x78, 0xb8, 0x60, 0xd0, 0xb2, 0x12, 0x1a, 0x8a, 0x54, 0xfe, 0xa1, 0x04, 0x85, 0x2d,
4037 0x7b, 0xec, 0x3f, 0x30, 0x2f, 0x42, 0x6a, 0xdf, 0xb6, 0x07, 0x13, 0x34, 0x9b, 0x35, 0x58, 0x81,
4038 0xbc, 0x01, 0x05, 0xfc, 0xe1, 0xe6, 0x9e, 0xb2, 0xf7, 0xb4, 0x91, 0xc7, 0x7a, 0x9e, 0x70, 0x12,
4039 0x48, 0xf6, 0x2d, 0x67, 0xc2, 0x3d, 0x19, 0xfe, 0x26, 0x5f, 0x80, 0x3c, 0xfd, 0xeb, 0x32, 0x93,
4040 0xde, 0x85, 0x15, 0x68, 0x35, 0x27, 0xbe, 0x05, 0x73, 0xb8, 0xfb, 0x1e, 0x2c, 0xe3, 0x3d, 0x63,
4041 0x14, 0x58, 0x03, 0x07, 0x96, 0x20, 0xc3, 0x5c, 0xc1, 0x04, 0xbf, 0x96, 0xe5, 0x0c, 0xb7, 0x48,
4042 0xdd, 0x2b, 0x66, 0x02, 0x2c, 0xdc, 0x67, 0x0c, 0x5e, 0x2a, 0x3f, 0x80, 0x2c, 0x46, 0xa9, 0xd6,
4043 0xa0, 0x4b, 0xca, 0x20, 0xf5, 0x4a, 0x26, 0xc6, 0xc8, 0x45, 0xe1, 0x9a, 0xcf, 0x9b, 0x57, 0x36,
4044 0x0c, 0xa9, 0xb7, 0xb4, 0x00, 0xd2, 0x06, 0xbd, 0x77, 0x1f, 0x73, 0x37, 0x2d, 0x1d, 0x97, 0x5b,
4045 0xdc, 0xc4, 0xb6, 0xf9, 0x32, 0xce, 0xc4, 0xb6, 0xf9, 0x92, 0x99, 0xb8, 0x3a, 0x65, 0x82, 0x96,
4046 0x4e, 0xf8, 0xa7, 0x43, 0xe9, 0xa4, 0x5c, 0x85, 0x39, 0x3c, 0x9e, 0x7d, 0xab, 0xb7, 0x63, 0xf7,
4047 0x2d, 0xbc, 0xe7, 0x1f, 0xe2, 0x3d, 0x49, 0x32, 0xa4, 0x43, 0xba, 0x07, 0xe6, 0x71, 0xe7, 0x80,
4048 0xdd, 0x38, 0xb3, 0x06, 0x2b, 0x94, 0x3f, 0x4b, 0xc2, 0x3c, 0x77, 0xad, 0xef, 0xf7, 0x9d, 0x67,
4049 0x5b, 0x9d, 0x11, 0x79, 0x0a, 0x05, 0xea, 0x55, 0xdb, 0xc3, 0xce, 0x68, 0x44, 0x8f, 0xaf, 0x84,
4050 0x57, 0x8d, 0xeb, 0x53, 0xae, 0x9a, 0xe3, 0x57, 0xb6, 0x3b, 0x43, 0x73, 0x8b, 0x61, 0x1b, 0x96,
4051 0x33, 0x3e, 0x31, 0xf2, 0x96, 0x5f, 0x43, 0x36, 0x21, 0x3f, 0x9c, 0xf4, 0x3c, 0x63, 0x32, 0x1a,
4052 0xab, 0x44, 0x1a, 0xdb, 0x9a, 0xf4, 0x02, 0xb6, 0x60, 0xe8, 0x55, 0xd0, 0x81, 0x51, 0x7f, 0xec,
4053 0xd9, 0x4a, 0x9c, 0x32, 0x30, 0xea, 0x3a, 0x82, 0x03, 0xdb, 0xf7, 0x6b, 0xc8, 0x63, 0x00, 0x7a,
4054 0xbc, 0x1c, 0x9b, 0xa6, 0x4e, 0xa8, 0xa0, 0xbc, 0xf6, 0x66, 0xa4, 0xad, 0x5d, 0x67, 0xbc, 0x67,
4055 0xef, 0x3a, 0x63, 0x66, 0x88, 0x1e, 0x4c, 0x2c, 0x2e, 0xbd, 0x03, 0x4a, 0x78, 0xfe, 0xe2, 0x8d,
4056 0x3c, 0x35, 0xe3, 0x46, 0x9e, 0xe3, 0x37, 0xf2, 0xba, 0x7c, 0x57, 0x5a, 0x7a, 0x0f, 0x8a, 0xa1,
4057 0x29, 0x8b, 0x74, 0xc2, 0xe8, 0xb7, 0x45, 0x7a, 0x5e, 0x7b, 0x5d, 0xf8, 0x9c, 0x2d, 0x6e, 0xb8,
4058 0x68, 0xf7, 0x1d, 0x50, 0xc2, 0xd3, 0x17, 0x0d, 0x67, 0x63, 0x32, 0x05, 0xe4, 0xdf, 0x87, 0xb9,
4059 0xc0, 0x94, 0x45, 0x72, 0xee, 0x94, 0x49, 0x95, 0x7f, 0x29, 0x05, 0xa9, 0x96, 0x65, 0xda, 0x87,
4060 0xe4, 0xf5, 0x60, 0x9c, 0x7c, 0x72, 0xce, 0x8d, 0x91, 0x17, 0x43, 0x31, 0xf2, 0xc9, 0x39, 0x2f,
4061 0x42, 0x5e, 0x0c, 0x45, 0x48, 0xb7, 0xa9, 0xa6, 0x93, 0xcb, 0x53, 0xf1, 0xf1, 0xc9, 0x39, 0x21,
4062 0x38, 0x5e, 0x9e, 0x0a, 0x8e, 0x7e, 0x73, 0x4d, 0xa7, 0x0e, 0x35, 0x18, 0x19, 0x9f, 0x9c, 0xf3,
4063 0xa3, 0xe2, 0x72, 0x38, 0x2a, 0x7a, 0x8d, 0x35, 0x9d, 0x0d, 0x49, 0x88, 0x88, 0x38, 0x24, 0x16,
4064 0x0b, 0x97, 0xc3, 0xb1, 0x10, 0x79, 0x3c, 0x0a, 0x2e, 0x87, 0xa3, 0x20, 0x36, 0xf2, 0xa8, 0x77,
4065 0x31, 0x14, 0xf5, 0xd0, 0x28, 0x0b, 0x77, 0xcb, 0xe1, 0x70, 0xc7, 0x78, 0xc2, 0x48, 0xc5, 0x58,
4066 0xe7, 0x35, 0xd6, 0x74, 0xa2, 0x85, 0x02, 0x5d, 0xf4, 0x6d, 0x1f, 0xf7, 0x02, 0x9d, 0xbe, 0x4e,
4067 0x97, 0xcd, 0xbd, 0x88, 0x16, 0x63, 0xbe, 0xf8, 0xe3, 0x6a, 0xba, 0x17, 0x31, 0x0d, 0x32, 0x87,
4068 0x3c, 0x01, 0x56, 0xd0, 0x73, 0x09, 0xb2, 0xc4, 0xcd, 0x5f, 0x69, 0xb6, 0xd1, 0x83, 0xd1, 0x79,
4069 0x1d, 0xb2, 0x3b, 0x7d, 0x05, 0xe6, 0x9a, 0xed, 0xa7, 0x9d, 0x71, 0xcf, 0x9c, 0x38, 0xed, 0xbd,
4070 0x4e, 0xcf, 0x7b, 0x44, 0xa0, 0xfb, 0x9f, 0x6f, 0xf2, 0x96, 0xbd, 0x4e, 0x8f, 0x5c, 0x70, 0xc5,
4071 0xd5, 0xc5, 0x56, 0x89, 0xcb, 0x6b, 0xe9, 0x75, 0xba, 0x68, 0xcc, 0x18, 0xfa, 0xc2, 0x05, 0xee,
4072 0x0b, 0x1f, 0x66, 0x20, 0x75, 0x64, 0xf5, 0x6d, 0xeb, 0x61, 0x0e, 0x32, 0x8e, 0x3d, 0x1e, 0x76,
4073 0x1c, 0xbb, 0xfc, 0x23, 0x09, 0xe0, 0x91, 0x3d, 0x1c, 0x1e, 0x59, 0xfd, 0x17, 0x47, 0x26, 0xb9,
4074 0x02, 0xf9, 0x61, 0xe7, 0xb9, 0xd9, 0x1e, 0x9a, 0xed, 0x83, 0xb1, 0x7b, 0x0e, 0x72, 0xb4, 0x6a,
4075 0xcb, 0x7c, 0x34, 0x3e, 0x21, 0x25, 0xf7, 0x8a, 0x8e, 0xda, 0x41, 0x49, 0xf2, 0x2b, 0xfb, 0x22,
4076 0xbf, 0x74, 0xa6, 0xf9, 0x1e, 0xba, 0xd7, 0x4e, 0x96, 0x47, 0x64, 0xf8, 0xee, 0x61, 0x89, 0x4a,
4077 0xde, 0x31, 0x87, 0xa3, 0xf6, 0x01, 0x4a, 0x85, 0xca, 0x21, 0x45, 0xcb, 0x8f, 0xc8, 0x6d, 0x48,
4078 0x1c, 0xd8, 0x03, 0x14, 0xc9, 0x29, 0xfb, 0x42, 0x71, 0xe4, 0x0d, 0x48, 0x0c, 0x27, 0x4c, 0x36,
4079 0x79, 0x6d, 0x41, 0xb8, 0x27, 0xb0, 0xd0, 0x44, 0x61, 0xc3, 0x49, 0xcf, 0x9b, 0xf7, 0x8d, 0x22,
4080 0x24, 0x9a, 0xad, 0x16, 0x8d, 0xfd, 0xcd, 0x56, 0x6b, 0x4d, 0x91, 0xea, 0x5f, 0x82, 0x6c, 0x6f,
4081 0x6c, 0x9a, 0xd4, 0x3d, 0xcc, 0xce, 0x39, 0x3e, 0xc4, 0x58, 0xe7, 0x81, 0xea, 0x5b, 0x90, 0x39,
4082 0x60, 0x59, 0x07, 0x89, 0x48, 0x6b, 0x4b, 0x7f, 0xc8, 0x1e, 0x55, 0x96, 0xfc, 0xe6, 0x70, 0x9e,
4083 0x62, 0xb8, 0x36, 0xea, 0x3b, 0x90, 0x1b, 0xb7, 0x4f, 0x33, 0xf8, 0x31, 0x8b, 0x2e, 0x71, 0x06,
4084 0xb3, 0x63, 0x5e, 0x55, 0x6f, 0xc0, 0x82, 0x65, 0xbb, 0xdf, 0x50, 0xda, 0x5d, 0x76, 0xc6, 0x2e,
4085 0x4e, 0x5f, 0xe5, 0x5c, 0xe3, 0x26, 0xfb, 0x6e, 0x69, 0xd9, 0xbc, 0x81, 0x9d, 0xca, 0xfa, 0x23,
4086 0x50, 0x04, 0x33, 0x98, 0x7a, 0xc6, 0x59, 0x39, 0x64, 0x1f, 0x4a, 0x3d, 0x2b, 0x78, 0xee, 0x43,
4087 0x46, 0xd8, 0xc9, 0x8c, 0x31, 0xd2, 0x63, 0x5f, 0x9d, 0x3d, 0x23, 0xe8, 0xea, 0xa6, 0x8d, 0x50,
4088 0x5f, 0x13, 0x6d, 0xe4, 0x19, 0xfb, 0x20, 0x2d, 0x1a, 0xa9, 0xe9, 0xa1, 0x55, 0x39, 0x3a, 0x75,
4089 0x28, 0x7d, 0xf6, 0x3d, 0xd9, 0xb3, 0xc2, 0x1c, 0xe0, 0x0c, 0x33, 0xf1, 0x83, 0xf9, 0x90, 0x7d,
4090 0x6a, 0x0e, 0x98, 0x99, 0x1a, 0xcd, 0xe4, 0xd4, 0xd1, 0x3c, 0x67, 0xdf, 0x75, 0x3d, 0x33, 0xbb,
4091 0xb3, 0x46, 0x33, 0x39, 0x75, 0x34, 0x03, 0xf6, 0xc5, 0x37, 0x60, 0xa6, 0xa6, 0xd7, 0x37, 0x80,
4092 0x88, 0x5b, 0xcd, 0xe3, 0x44, 0x8c, 0x9d, 0x21, 0xfb, 0x8e, 0xef, 0x6f, 0x36, 0xa3, 0xcc, 0x32,
4093 0x14, 0x3f, 0x20, 0x8b, 0x7d, 0xe2, 0x0f, 0x1a, 0xaa, 0xe9, 0xf5, 0x4d, 0x38, 0x2f, 0x4e, 0xec,
4094 0x0c, 0x43, 0xb2, 0x55, 0xa9, 0x52, 0x34, 0x16, 0xfc, 0xa9, 0x71, 0xce, 0x4c, 0x53, 0xf1, 0x83,
4095 0x1a, 0xa9, 0x52, 0x45, 0x99, 0x32, 0x55, 0xd3, 0xeb, 0x0f, 0xa0, 0x28, 0x98, 0xda, 0xc7, 0x08,
4096 0x1d, 0x6d, 0xe6, 0x05, 0xfb, 0x5f, 0x0b, 0xcf, 0x0c, 0x8d, 0xe8, 0xe1, 0x1d, 0xe3, 0x31, 0x2e,
4097 0xda, 0xc8, 0x98, 0xfd, 0xa3, 0x80, 0x3f, 0x16, 0x64, 0x84, 0x8e, 0x04, 0xe6, 0xdf, 0x71, 0x56,
4098 0x26, 0xec, 0x5f, 0x08, 0xfc, 0xa1, 0x50, 0x42, 0xbd, 0x1f, 0x98, 0x8e, 0x49, 0x83, 0x5c, 0x8c,
4099 0x0d, 0x07, 0x3d, 0xf2, 0x9b, 0x91, 0x80, 0x15, 0xf1, 0x81, 0x44, 0x98, 0x36, 0x2d, 0xd6, 0x37,
4100 0x61, 0xfe, 0xec, 0x0e, 0xe9, 0x63, 0x89, 0x65, 0xcb, 0xd5, 0x15, 0x9a, 0x50, 0x1b, 0x73, 0xdd,
4101 0x80, 0x5f, 0x6a, 0xc0, 0xdc, 0x99, 0x9d, 0xd2, 0x27, 0x12, 0xcb, 0x39, 0xa9, 0x25, 0xa3, 0xd0,
4102 0x0d, 0x7a, 0xa6, 0xb9, 0x33, 0xbb, 0xa5, 0x4f, 0x25, 0xf6, 0x40, 0xa1, 0x6b, 0x9e, 0x11, 0xd7,
4103 0x33, 0xcd, 0x9d, 0xd9, 0x2d, 0x7d, 0x95, 0x65, 0x94, 0xb2, 0x5e, 0x15, 0x8d, 0xa0, 0x2f, 0x98,
4104 0x3f, 0xbb, 0x5b, 0xfa, 0x9a, 0x84, 0x8f, 0x15, 0xb2, 0xae, 0x7b, 0xeb, 0xe2, 0x79, 0xa6, 0xf9,
4105 0xb3, 0xbb, 0xa5, 0xaf, 0x4b, 0xf8, 0xa4, 0x21, 0xeb, 0xeb, 0x01, 0x33, 0xc1, 0xd1, 0x9c, 0xee,
4106 0x96, 0xbe, 0x21, 0xe1, 0x2b, 0x83, 0xac, 0xd7, 0x3c, 0x33, 0xbb, 0x53, 0xa3, 0x39, 0xdd, 0x2d,
4107 0x7d, 0x13, 0x6f, 0xf1, 0x75, 0x59, 0xbf, 0x13, 0x30, 0x83, 0x9e, 0xa9, 0xf8, 0x0a, 0x6e, 0xe9,
4108 0x5b, 0x12, 0x3e, 0x06, 0xc9, 0xfa, 0x5d, 0xc3, 0xed, 0xdd, 0xf7, 0x4c, 0xc5, 0x57, 0x70, 0x4b,
4109 0x9f, 0x49, 0xf8, 0x66, 0x24, 0xeb, 0xf7, 0x82, 0x86, 0xd0, 0x33, 0x29, 0xaf, 0xe2, 0x96, 0xbe,
4110 0x4d, 0x2d, 0x15, 0xeb, 0xf2, 0xfa, 0xaa, 0xe1, 0x0e, 0x40, 0xf0, 0x4c, 0xca, 0xab, 0xb8, 0xa5,
4111 0xef, 0x50, 0x53, 0x4a, 0x5d, 0x5e, 0x5f, 0x0b, 0x99, 0xaa, 0xe9, 0xf5, 0x47, 0x50, 0x38, 0xab,
4112 0x5b, 0xfa, 0xae, 0xf8, 0x16, 0x97, 0xef, 0x0a, 0xbe, 0x69, 0x47, 0xd8, 0xb3, 0x53, 0x1d, 0xd3,
4113 0xf7, 0x30, 0xc7, 0xa9, 0xcf, 0x3d, 0x61, 0xef, 0x55, 0x8c, 0xe0, 0x6f, 0x1f, 0x73, 0x53, 0x5b,
4114 0xfe, 0xf9, 0x38, 0xd5, 0x47, 0x7d, 0x5f, 0xc2, 0x47, 0xad, 0x02, 0x37, 0x88, 0x78, 0xef, 0xa4,
4115 0x30, 0x87, 0xf5, 0xa1, 0x3f, 0xcb, 0xd3, 0xbc, 0xd5, 0x0f, 0xa4, 0x57, 0x71, 0x57, 0xf5, 0x44,
4116 0x6b, 0xbb, 0xe1, 0x2d, 0x06, 0xd6, 0xbc, 0x0d, 0xc9, 0x63, 0x6d, 0x75, 0x4d, 0xbc, 0x92, 0x89,
4117 0x6f, 0xb9, 0xcc, 0x49, 0xe5, 0xb5, 0xa2, 0xf0, 0xdc, 0x3d, 0x1c, 0x39, 0x27, 0x06, 0xb2, 0x38,
4118 0x5b, 0x8b, 0x64, 0x7f, 0x12, 0xc3, 0xd6, 0x38, 0xbb, 0x1a, 0xc9, 0xfe, 0x34, 0x86, 0x5d, 0xe5,
4119 0x6c, 0x3d, 0x92, 0xfd, 0xd5, 0x18, 0xb6, 0xce, 0xd9, 0xeb, 0x91, 0xec, 0xaf, 0xc5, 0xb0, 0xd7,
4120 0x39, 0xbb, 0x16, 0xc9, 0xfe, 0x7a, 0x0c, 0xbb, 0xc6, 0xd9, 0x77, 0x22, 0xd9, 0xdf, 0x88, 0x61,
4121 0xdf, 0xe1, 0xec, 0xbb, 0x91, 0xec, 0x6f, 0xc6, 0xb0, 0xef, 0x72, 0xf6, 0xbd, 0x48, 0xf6, 0xb7,
4122 0x62, 0xd8, 0xf7, 0x18, 0x7b, 0x6d, 0x35, 0x92, 0xfd, 0x59, 0x34, 0x7b, 0x6d, 0x95, 0xb3, 0xa3,
4123 0xb5, 0xf6, 0xed, 0x18, 0x36, 0xd7, 0xda, 0x5a, 0xb4, 0xd6, 0xbe, 0x13, 0xc3, 0xe6, 0x5a, 0x5b,
4124 0x8b, 0xd6, 0xda, 0x77, 0x63, 0xd8, 0x5c, 0x6b, 0x6b, 0xd1, 0x5a, 0xfb, 0x5e, 0x0c, 0x9b, 0x6b,
4125 0x6d, 0x2d, 0x5a, 0x6b, 0xdf, 0x8f, 0x61, 0x73, 0xad, 0xad, 0x45, 0x6b, 0xed, 0x07, 0x31, 0x6c,
4126 0xae, 0xb5, 0xb5, 0x68, 0xad, 0xfd, 0x51, 0x0c, 0x9b, 0x6b, 0x6d, 0x2d, 0x5a, 0x6b, 0x7f, 0x1c,
4127 0xc3, 0xe6, 0x5a, 0x5b, 0x8b, 0xd6, 0xda, 0x9f, 0xc4, 0xb0, 0xb9, 0xd6, 0xb4, 0x68, 0xad, 0xfd,
4128 0x69, 0x34, 0x5b, 0xe3, 0x5a, 0xd3, 0xa2, 0xb5, 0xf6, 0x67, 0x31, 0x6c, 0xae, 0x35, 0x2d, 0x5a,
4129 0x6b, 0x7f, 0x1e, 0xc3, 0xe6, 0x5a, 0xd3, 0xa2, 0xb5, 0xf6, 0xc3, 0x18, 0x36, 0xd7, 0x9a, 0x16,
4130 0xad, 0xb5, 0xbf, 0x88, 0x61, 0x73, 0xad, 0x69, 0xd1, 0x5a, 0xfb, 0xcb, 0x18, 0x36, 0xd7, 0x9a,
4131 0x16, 0xad, 0xb5, 0xbf, 0x8a, 0x61, 0x73, 0xad, 0x69, 0xd1, 0x5a, 0xfb, 0xeb, 0x18, 0x36, 0xd7,
4132 0x9a, 0x16, 0xad, 0xb5, 0xbf, 0x89, 0x61, 0x73, 0xad, 0x69, 0xd1, 0x5a, 0xfb, 0xdb, 0x18, 0x36,
4133 0xd7, 0x5a, 0x35, 0x5a, 0x6b, 0x7f, 0x17, 0xcd, 0xae, 0x72, 0xad, 0x55, 0xa3, 0xb5, 0xf6, 0xf7,
4134 0x31, 0x6c, 0xae, 0xb5, 0x6a, 0xb4, 0xd6, 0xfe, 0x21, 0x86, 0xcd, 0xb5, 0x56, 0x8d, 0xd6, 0xda,
4135 0x3f, 0xc6, 0xb0, 0xb9, 0xd6, 0xaa, 0xd1, 0x5a, 0xfb, 0x51, 0x0c, 0x9b, 0x6b, 0xad, 0x1a, 0xad,
4136 0xb5, 0x7f, 0x8a, 0x61, 0x73, 0xad, 0x55, 0xa3, 0xb5, 0xf6, 0xcf, 0x31, 0x6c, 0xae, 0xb5, 0x6a,
4137 0xb4, 0xd6, 0xfe, 0x25, 0x86, 0xcd, 0xb5, 0x56, 0x8d, 0xd6, 0xda, 0xbf, 0xc6, 0xb0, 0xb9, 0xd6,
4138 0xaa, 0xd1, 0x5a, 0xfb, 0xb7, 0x18, 0x36, 0xd7, 0x9a, 0x1e, 0xad, 0xb5, 0x7f, 0x8f, 0x66, 0xeb,
4139 0x5c, 0x6b, 0x7a, 0xb4, 0xd6, 0xfe, 0x23, 0x86, 0xcd, 0xb5, 0xa6, 0x47, 0x6b, 0xed, 0x3f, 0x63,
4140 0xd8, 0x5c, 0x6b, 0x7a, 0xb4, 0xd6, 0xfe, 0x2b, 0x86, 0xcd, 0xb5, 0xa6, 0x47, 0x6b, 0xed, 0xbf,
4141 0x63, 0xd8, 0x5c, 0x6b, 0x7a, 0xb4, 0xd6, 0xfe, 0x27, 0x86, 0xcd, 0xb5, 0xa6, 0x47, 0x6b, 0xed,
4142 0xc7, 0x31, 0x6c, 0xae, 0x35, 0x3d, 0x5a, 0x6b, 0x3f, 0x89, 0x61, 0x73, 0xad, 0xe9, 0xd1, 0x5a,
4143 0xfb, 0xdf, 0x18, 0x36, 0xd7, 0x9a, 0x1e, 0xad, 0xb5, 0xff, 0x8b, 0x61, 0x73, 0xad, 0xad, 0x47,
4144 0x6b, 0xed, 0xff, 0xa3, 0xd9, 0xeb, 0xab, 0x3f, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xaa, 0x00, 0xcd,
4145 0x32, 0x57, 0x39, 0x00, 0x00,
4146 }
591591 props = oop.Prop
592592 nv := reflect.New(oop.Type.Elem())
593593 dst = nv.Elem().Field(0)
594 sv.Field(oop.Field).Set(nv)
594 field := sv.Field(oop.Field)
595 if !field.IsNil() {
596 return p.errorf("field '%s' would overwrite already parsed oneof '%s'", name, sv.Type().Field(oop.Field).Name)
597 }
598 field.Set(nv)
595599 }
596600 if !dst.IsValid() {
597601 return p.errorf("unknown field name %q in %v", name, st)
791795 fv.Set(reflect.Append(fv, reflect.New(at.Elem()).Elem()))
792796 return p.readAny(fv.Index(fv.Len()-1), props)
793797 case reflect.Bool:
794 // Either "true", "false", 1 or 0.
798 // true/1/t/True or false/f/0/False.
795799 switch tok.value {
796 case "true", "1":
800 case "true", "1", "t", "True":
797801 fv.SetBool(true)
798802 return nil
799 case "false", "0":
803 case "false", "0", "f", "False":
800804 fv.SetBool(false)
801805 return nil
802806 }
860864 return p.readStruct(fv, terminator)
861865 case reflect.Uint32:
862866 if x, err := strconv.ParseUint(tok.value, 0, 32); err == nil {
863 fv.SetUint(uint64(x))
867 fv.SetUint(x)
864868 return nil
865869 }
866870 case reflect.Uint64:
379379 },
380380 },
381381
382 // Boolean false
383 {
384 in: `count:42 inner { host: "example.com" connected: false }`,
385 out: &MyMessage{
386 Count: Int32(42),
387 Inner: &InnerMessage{
388 Host: String("example.com"),
389 Connected: Bool(false),
390 },
391 },
392 },
393 // Boolean true
394 {
395 in: `count:42 inner { host: "example.com" connected: true }`,
396 out: &MyMessage{
397 Count: Int32(42),
398 Inner: &InnerMessage{
399 Host: String("example.com"),
400 Connected: Bool(true),
401 },
402 },
403 },
404 // Boolean 0
405 {
406 in: `count:42 inner { host: "example.com" connected: 0 }`,
407 out: &MyMessage{
408 Count: Int32(42),
409 Inner: &InnerMessage{
410 Host: String("example.com"),
411 Connected: Bool(false),
412 },
413 },
414 },
415 // Boolean 1
416 {
417 in: `count:42 inner { host: "example.com" connected: 1 }`,
418 out: &MyMessage{
419 Count: Int32(42),
420 Inner: &InnerMessage{
421 Host: String("example.com"),
422 Connected: Bool(true),
423 },
424 },
425 },
426 // Boolean f
427 {
428 in: `count:42 inner { host: "example.com" connected: f }`,
429 out: &MyMessage{
430 Count: Int32(42),
431 Inner: &InnerMessage{
432 Host: String("example.com"),
433 Connected: Bool(false),
434 },
435 },
436 },
437 // Boolean t
438 {
439 in: `count:42 inner { host: "example.com" connected: t }`,
440 out: &MyMessage{
441 Count: Int32(42),
442 Inner: &InnerMessage{
443 Host: String("example.com"),
444 Connected: Bool(true),
445 },
446 },
447 },
448 // Boolean False
449 {
450 in: `count:42 inner { host: "example.com" connected: False }`,
451 out: &MyMessage{
452 Count: Int32(42),
453 Inner: &InnerMessage{
454 Host: String("example.com"),
455 Connected: Bool(false),
456 },
457 },
458 },
459 // Boolean True
460 {
461 in: `count:42 inner { host: "example.com" connected: True }`,
462 out: &MyMessage{
463 Count: Int32(42),
464 Inner: &InnerMessage{
465 Host: String("example.com"),
466 Connected: Bool(true),
467 },
468 },
469 },
470
382471 // Extension
383472 buildExtStructTest(`count: 42 [testdata.Ext.more]:<data:"Hello, world!" >`),
384473 buildExtStructTest(`count: 42 [testdata.Ext.more] {data:"Hello, world!"}`),
545634 if !Equal(m, want) {
546635 t.Errorf("\n got %v\nwant %v", m, want)
547636 }
637
638 const inOverwrite = `name:"Shrek" number:42`
639 m = new(Communique)
640 testErr := "line 1.13: field 'number' would overwrite already parsed oneof 'Union'"
641 if err := UnmarshalText(inOverwrite, m); err == nil {
642 t.Errorf("TestOneofParsing: Didn't get expected error: %v", testErr)
643 } else if err.Error() != testErr {
644 t.Errorf("TestOneofParsing: Incorrect error.\nHave: %v\nWant: %v",
645 err.Error(), testErr)
646 }
647
548648 }
549649
550650 var benchInput string
3131 # Not stored here, but descriptor.proto is in https://github.com/google/protobuf/
3232 # at src/google/protobuf/descriptor.proto
3333 regenerate:
34 echo WARNING! THIS RULE IS PROBABLY NOT RIGHT FOR YOUR INSTALLATION
35 protoc --go_out=. -I$(HOME)/src/protobuf/src $(HOME)/src/protobuf/src/google/protobuf/descriptor.proto && \
36 sed 's,^package google_protobuf,package descriptor,' google/protobuf/descriptor.pb.go > \
37 $(GOPATH)/src/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.pb.go && \
38 rm -f google/protobuf/descriptor.pb.go
34 @echo WARNING! THIS RULE IS PROBABLY NOT RIGHT FOR YOUR INSTALLATION
35 protoc --go_out=../../../../.. -I$(HOME)/src/protobuf/include $(HOME)/src/protobuf/include/google/protobuf/descriptor.proto
0 // Code generated by protoc-gen-go.
0 // Code generated by protoc-gen-go. DO NOT EDIT.
11 // source: google/protobuf/descriptor.proto
2 // DO NOT EDIT!
32
43 /*
54 Package descriptor is a generated protocol buffer package.
6463 FieldDescriptorProto_TYPE_FIXED32 FieldDescriptorProto_Type = 7
6564 FieldDescriptorProto_TYPE_BOOL FieldDescriptorProto_Type = 8
6665 FieldDescriptorProto_TYPE_STRING FieldDescriptorProto_Type = 9
66 // Tag-delimited aggregate.
67 // Group type is deprecated and not supported in proto3. However, Proto3
68 // implementations should still be able to parse the group wire format and
69 // treat group fields as unknown fields.
6770 FieldDescriptorProto_TYPE_GROUP FieldDescriptorProto_Type = 10
6871 FieldDescriptorProto_TYPE_MESSAGE FieldDescriptorProto_Type = 11
6972 // New in version 2.
291294 return nil
292295 }
293296 func (FieldOptions_JSType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{11, 1} }
297
298 // Is this method side-effect-free (or safe in HTTP parlance), or idempotent,
299 // or neither? HTTP based RPC implementation may choose GET verb for safe
300 // methods, and PUT verb for idempotent methods instead of the default POST.
301 type MethodOptions_IdempotencyLevel int32
302
303 const (
304 MethodOptions_IDEMPOTENCY_UNKNOWN MethodOptions_IdempotencyLevel = 0
305 MethodOptions_NO_SIDE_EFFECTS MethodOptions_IdempotencyLevel = 1
306 MethodOptions_IDEMPOTENT MethodOptions_IdempotencyLevel = 2
307 )
308
309 var MethodOptions_IdempotencyLevel_name = map[int32]string{
310 0: "IDEMPOTENCY_UNKNOWN",
311 1: "NO_SIDE_EFFECTS",
312 2: "IDEMPOTENT",
313 }
314 var MethodOptions_IdempotencyLevel_value = map[string]int32{
315 "IDEMPOTENCY_UNKNOWN": 0,
316 "NO_SIDE_EFFECTS": 1,
317 "IDEMPOTENT": 2,
318 }
319
320 func (x MethodOptions_IdempotencyLevel) Enum() *MethodOptions_IdempotencyLevel {
321 p := new(MethodOptions_IdempotencyLevel)
322 *p = x
323 return p
324 }
325 func (x MethodOptions_IdempotencyLevel) String() string {
326 return proto.EnumName(MethodOptions_IdempotencyLevel_name, int32(x))
327 }
328 func (x *MethodOptions_IdempotencyLevel) UnmarshalJSON(data []byte) error {
329 value, err := proto.UnmarshalJSONEnum(MethodOptions_IdempotencyLevel_value, data, "MethodOptions_IdempotencyLevel")
330 if err != nil {
331 return err
332 }
333 *x = MethodOptions_IdempotencyLevel(value)
334 return nil
335 }
336 func (MethodOptions_IdempotencyLevel) EnumDescriptor() ([]byte, []int) {
337 return fileDescriptor0, []int{16, 0}
338 }
294339
295340 // The protocol compiler can output a FileDescriptorSet containing the .proto
296341 // files it parses.
899944 // generated to contain the file's getDescriptor() method as well as any
900945 // top-level extensions defined in the file.
901946 JavaMultipleFiles *bool `protobuf:"varint,10,opt,name=java_multiple_files,json=javaMultipleFiles,def=0" json:"java_multiple_files,omitempty"`
902 // If set true, then the Java code generator will generate equals() and
903 // hashCode() methods for all messages defined in the .proto file.
904 // This increases generated code size, potentially substantially for large
905 // protos, which may harm a memory-constrained application.
906 // - In the full runtime this is a speed optimization, as the
907 // AbstractMessage base class includes reflection-based implementations of
908 // these methods.
909 // - In the lite runtime, setting this option changes the semantics of
910 // equals() and hashCode() to more closely match those of the full runtime;
911 // the generated methods compute their results based on field values rather
912 // than object identity. (Implementations should not assume that hashcodes
913 // will be consistent across runtimes or versions of the protocol compiler.)
914 JavaGenerateEqualsAndHash *bool `protobuf:"varint,20,opt,name=java_generate_equals_and_hash,json=javaGenerateEqualsAndHash,def=0" json:"java_generate_equals_and_hash,omitempty"`
947 // This option does nothing.
948 JavaGenerateEqualsAndHash *bool `protobuf:"varint,20,opt,name=java_generate_equals_and_hash,json=javaGenerateEqualsAndHash" json:"java_generate_equals_and_hash,omitempty"`
915949 // If set true, then the Java2 code generator will generate code that
916950 // throws an exception whenever an attempt is made to assign a non-UTF-8
917951 // byte sequence to a string field.
952986 ObjcClassPrefix *string `protobuf:"bytes,36,opt,name=objc_class_prefix,json=objcClassPrefix" json:"objc_class_prefix,omitempty"`
953987 // Namespace for generated classes; defaults to the package.
954988 CsharpNamespace *string `protobuf:"bytes,37,opt,name=csharp_namespace,json=csharpNamespace" json:"csharp_namespace,omitempty"`
989 // By default Swift generators will take the proto package and CamelCase it
990 // replacing '.' with underscore and use that to prefix the types/symbols
991 // defined. When this options is provided, they will use this value instead
992 // to prefix the types/symbols defined.
993 SwiftPrefix *string `protobuf:"bytes,39,opt,name=swift_prefix,json=swiftPrefix" json:"swift_prefix,omitempty"`
994 // Sets the php class prefix which is prepended to all php generated classes
995 // from this .proto. Default is empty.
996 PhpClassPrefix *string `protobuf:"bytes,40,opt,name=php_class_prefix,json=phpClassPrefix" json:"php_class_prefix,omitempty"`
955997 // The parser stores options it doesn't recognize here. See above.
956998 UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
957999 proto.XXX_InternalExtensions `json:"-"`
9721014 }
9731015
9741016 const Default_FileOptions_JavaMultipleFiles bool = false
975 const Default_FileOptions_JavaGenerateEqualsAndHash bool = false
9761017 const Default_FileOptions_JavaStringCheckUtf8 bool = false
9771018 const Default_FileOptions_OptimizeFor FileOptions_OptimizeMode = FileOptions_SPEED
9781019 const Default_FileOptions_CcGenericServices bool = false
10061047 if m != nil && m.JavaGenerateEqualsAndHash != nil {
10071048 return *m.JavaGenerateEqualsAndHash
10081049 }
1009 return Default_FileOptions_JavaGenerateEqualsAndHash
1050 return false
10101051 }
10111052
10121053 func (m *FileOptions) GetJavaStringCheckUtf8() bool {
10751116 func (m *FileOptions) GetCsharpNamespace() string {
10761117 if m != nil && m.CsharpNamespace != nil {
10771118 return *m.CsharpNamespace
1119 }
1120 return ""
1121 }
1122
1123 func (m *FileOptions) GetSwiftPrefix() string {
1124 if m != nil && m.SwiftPrefix != nil {
1125 return *m.SwiftPrefix
1126 }
1127 return ""
1128 }
1129
1130 func (m *FileOptions) GetPhpClassPrefix() string {
1131 if m != nil && m.PhpClassPrefix != nil {
1132 return *m.PhpClassPrefix
10781133 }
10791134 return ""
10801135 }
12361291 //
12371292 //
12381293 // Note that implementations may choose not to check required fields within
1239 // a lazy sub-message. That is, calling IsInitialized() on the outher message
1294 // a lazy sub-message. That is, calling IsInitialized() on the outer message
12401295 // may return true even if the inner message has missing required fields.
12411296 // This is necessary because otherwise the inner message would have to be
12421297 // parsed in order to perform the check, defeating the purpose of lazy
14921547 // Depending on the target platform, this can emit Deprecated annotations
14931548 // for the method, or it will be completely ignored; in the very least,
14941549 // this is a formalization for deprecating methods.
1495 Deprecated *bool `protobuf:"varint,33,opt,name=deprecated,def=0" json:"deprecated,omitempty"`
1550 Deprecated *bool `protobuf:"varint,33,opt,name=deprecated,def=0" json:"deprecated,omitempty"`
1551 IdempotencyLevel *MethodOptions_IdempotencyLevel `protobuf:"varint,34,opt,name=idempotency_level,json=idempotencyLevel,enum=google.protobuf.MethodOptions_IdempotencyLevel,def=0" json:"idempotency_level,omitempty"`
14961552 // The parser stores options it doesn't recognize here. See above.
14971553 UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
14981554 proto.XXX_InternalExtensions `json:"-"`
15131569 }
15141570
15151571 const Default_MethodOptions_Deprecated bool = false
1572 const Default_MethodOptions_IdempotencyLevel MethodOptions_IdempotencyLevel = MethodOptions_IDEMPOTENCY_UNKNOWN
15161573
15171574 func (m *MethodOptions) GetDeprecated() bool {
15181575 if m != nil && m.Deprecated != nil {
15191576 return *m.Deprecated
15201577 }
15211578 return Default_MethodOptions_Deprecated
1579 }
1580
1581 func (m *MethodOptions) GetIdempotencyLevel() MethodOptions_IdempotencyLevel {
1582 if m != nil && m.IdempotencyLevel != nil {
1583 return *m.IdempotencyLevel
1584 }
1585 return Default_MethodOptions_IdempotencyLevel
15221586 }
15231587
15241588 func (m *MethodOptions) GetUninterpretedOption() []*UninterpretedOption {
19231987 proto.RegisterEnum("google.protobuf.FileOptions_OptimizeMode", FileOptions_OptimizeMode_name, FileOptions_OptimizeMode_value)
19241988 proto.RegisterEnum("google.protobuf.FieldOptions_CType", FieldOptions_CType_name, FieldOptions_CType_value)
19251989 proto.RegisterEnum("google.protobuf.FieldOptions_JSType", FieldOptions_JSType_name, FieldOptions_JSType_value)
1990 proto.RegisterEnum("google.protobuf.MethodOptions_IdempotencyLevel", MethodOptions_IdempotencyLevel_name, MethodOptions_IdempotencyLevel_value)
19261991 }
19271992
19281993 func init() { proto.RegisterFile("google/protobuf/descriptor.proto", fileDescriptor0) }
19291994
19301995 var fileDescriptor0 = []byte{
1931 // 2287 bytes of a gzipped FileDescriptorProto
1932 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xcc, 0x59, 0xcd, 0x73, 0xdb, 0xc6,
1933 0x15, 0x0f, 0xf8, 0x25, 0xf2, 0x91, 0xa2, 0x56, 0x2b, 0xc5, 0x86, 0xe5, 0x38, 0x96, 0x19, 0x3b,
1934 0x96, 0xed, 0x96, 0xce, 0xc8, 0x1f, 0x71, 0x94, 0x4e, 0x3a, 0x94, 0x08, 0x2b, 0xf4, 0x50, 0x22,
1935 0x0b, 0x4a, 0xad, 0x93, 0x1e, 0x30, 0x2b, 0x60, 0x49, 0xc1, 0x06, 0x17, 0x28, 0x00, 0xda, 0x56,
1936 0x4e, 0x9e, 0xe9, 0xa9, 0xc7, 0xde, 0x3a, 0x6d, 0xa7, 0xd3, 0xc9, 0x25, 0x33, 0xfd, 0x03, 0x7a,
1937 0xe8, 0xbd, 0xd7, 0xce, 0xf4, 0xde, 0x63, 0x67, 0xda, 0xff, 0xa0, 0xd7, 0xce, 0xee, 0x02, 0x20,
1938 0xf8, 0x15, 0xab, 0x99, 0x49, 0xd2, 0x93, 0xb8, 0xbf, 0xf7, 0x7b, 0x0f, 0x6f, 0xdf, 0x3e, 0xbc,
1939 0xf7, 0xb0, 0x82, 0xcd, 0x81, 0xeb, 0x0e, 0x1c, 0x7a, 0xd7, 0xf3, 0xdd, 0xd0, 0x3d, 0x19, 0xf5,
1940 0xef, 0x5a, 0x34, 0x30, 0x7d, 0xdb, 0x0b, 0x5d, 0xbf, 0x2e, 0x30, 0xbc, 0x22, 0x19, 0xf5, 0x98,
1941 0x51, 0x3b, 0x80, 0xd5, 0xc7, 0xb6, 0x43, 0x9b, 0x09, 0xb1, 0x47, 0x43, 0xfc, 0x08, 0x72, 0x7d,
1942 0xdb, 0xa1, 0xaa, 0xb2, 0x99, 0xdd, 0x2a, 0x6f, 0x5f, 0xaf, 0x4f, 0x29, 0xd5, 0x27, 0x35, 0xba,
1943 0x1c, 0xd6, 0x85, 0x46, 0xed, 0x9f, 0x39, 0x58, 0x9b, 0x23, 0xc5, 0x18, 0x72, 0x8c, 0x0c, 0xb9,
1944 0x45, 0x65, 0xab, 0xa4, 0x8b, 0xdf, 0x58, 0x85, 0x25, 0x8f, 0x98, 0xcf, 0xc9, 0x80, 0xaa, 0x19,
1945 0x01, 0xc7, 0x4b, 0xfc, 0x2e, 0x80, 0x45, 0x3d, 0xca, 0x2c, 0xca, 0xcc, 0x33, 0x35, 0xbb, 0x99,
1946 0xdd, 0x2a, 0xe9, 0x29, 0x04, 0xdf, 0x81, 0x55, 0x6f, 0x74, 0xe2, 0xd8, 0xa6, 0x91, 0xa2, 0xc1,
1947 0x66, 0x76, 0x2b, 0xaf, 0x23, 0x29, 0x68, 0x8e, 0xc9, 0x37, 0x61, 0xe5, 0x25, 0x25, 0xcf, 0xd3,
1948 0xd4, 0xb2, 0xa0, 0x56, 0x39, 0x9c, 0x22, 0xee, 0x41, 0x65, 0x48, 0x83, 0x80, 0x0c, 0xa8, 0x11,
1949 0x9e, 0x79, 0x54, 0xcd, 0x89, 0xdd, 0x6f, 0xce, 0xec, 0x7e, 0x7a, 0xe7, 0xe5, 0x48, 0xeb, 0xe8,
1950 0xcc, 0xa3, 0xb8, 0x01, 0x25, 0xca, 0x46, 0x43, 0x69, 0x21, 0xbf, 0x20, 0x7e, 0x1a, 0x1b, 0x0d,
1951 0xa7, 0xad, 0x14, 0xb9, 0x5a, 0x64, 0x62, 0x29, 0xa0, 0xfe, 0x0b, 0xdb, 0xa4, 0x6a, 0x41, 0x18,
1952 0xb8, 0x39, 0x63, 0xa0, 0x27, 0xe5, 0xd3, 0x36, 0x62, 0x3d, 0xbc, 0x07, 0x25, 0xfa, 0x2a, 0xa4,
1953 0x2c, 0xb0, 0x5d, 0xa6, 0x2e, 0x09, 0x23, 0x37, 0xe6, 0x9c, 0x22, 0x75, 0xac, 0x69, 0x13, 0x63,
1954 0x3d, 0xfc, 0x10, 0x96, 0x5c, 0x2f, 0xb4, 0x5d, 0x16, 0xa8, 0xc5, 0x4d, 0x65, 0xab, 0xbc, 0xfd,
1955 0xce, 0xdc, 0x44, 0xe8, 0x48, 0x8e, 0x1e, 0x93, 0x71, 0x0b, 0x50, 0xe0, 0x8e, 0x7c, 0x93, 0x1a,
1956 0xa6, 0x6b, 0x51, 0xc3, 0x66, 0x7d, 0x57, 0x2d, 0x09, 0x03, 0x57, 0x67, 0x37, 0x22, 0x88, 0x7b,
1957 0xae, 0x45, 0x5b, 0xac, 0xef, 0xea, 0xd5, 0x60, 0x62, 0x8d, 0x2f, 0x40, 0x21, 0x38, 0x63, 0x21,
1958 0x79, 0xa5, 0x56, 0x44, 0x86, 0x44, 0xab, 0xda, 0x7f, 0xf2, 0xb0, 0x72, 0x9e, 0x14, 0xfb, 0x18,
1959 0xf2, 0x7d, 0xbe, 0x4b, 0x35, 0xf3, 0xbf, 0xc4, 0x40, 0xea, 0x4c, 0x06, 0xb1, 0xf0, 0x0d, 0x83,
1960 0xd8, 0x80, 0x32, 0xa3, 0x41, 0x48, 0x2d, 0x99, 0x11, 0xd9, 0x73, 0xe6, 0x14, 0x48, 0xa5, 0xd9,
1961 0x94, 0xca, 0x7d, 0xa3, 0x94, 0x7a, 0x0a, 0x2b, 0x89, 0x4b, 0x86, 0x4f, 0xd8, 0x20, 0xce, 0xcd,
1962 0xbb, 0x6f, 0xf2, 0xa4, 0xae, 0xc5, 0x7a, 0x3a, 0x57, 0xd3, 0xab, 0x74, 0x62, 0x8d, 0x9b, 0x00,
1963 0x2e, 0xa3, 0x6e, 0xdf, 0xb0, 0xa8, 0xe9, 0xa8, 0xc5, 0x05, 0x51, 0xea, 0x70, 0xca, 0x4c, 0x94,
1964 0x5c, 0x89, 0x9a, 0x0e, 0xfe, 0x68, 0x9c, 0x6a, 0x4b, 0x0b, 0x32, 0xe5, 0x40, 0xbe, 0x64, 0x33,
1965 0xd9, 0x76, 0x0c, 0x55, 0x9f, 0xf2, 0xbc, 0xa7, 0x56, 0xb4, 0xb3, 0x92, 0x70, 0xa2, 0xfe, 0xc6,
1966 0x9d, 0xe9, 0x91, 0x9a, 0xdc, 0xd8, 0xb2, 0x9f, 0x5e, 0xe2, 0xf7, 0x20, 0x01, 0x0c, 0x91, 0x56,
1967 0x20, 0xaa, 0x50, 0x25, 0x06, 0x0f, 0xc9, 0x90, 0x6e, 0x3c, 0x82, 0xea, 0x64, 0x78, 0xf0, 0x3a,
1968 0xe4, 0x83, 0x90, 0xf8, 0xa1, 0xc8, 0xc2, 0xbc, 0x2e, 0x17, 0x18, 0x41, 0x96, 0x32, 0x4b, 0x54,
1969 0xb9, 0xbc, 0xce, 0x7f, 0x6e, 0x7c, 0x08, 0xcb, 0x13, 0x8f, 0x3f, 0xaf, 0x62, 0xed, 0x37, 0x05,
1970 0x58, 0x9f, 0x97, 0x73, 0x73, 0xd3, 0xff, 0x02, 0x14, 0xd8, 0x68, 0x78, 0x42, 0x7d, 0x35, 0x2b,
1971 0x2c, 0x44, 0x2b, 0xdc, 0x80, 0xbc, 0x43, 0x4e, 0xa8, 0xa3, 0xe6, 0x36, 0x95, 0xad, 0xea, 0xf6,
1972 0x9d, 0x73, 0x65, 0x75, 0xbd, 0xcd, 0x55, 0x74, 0xa9, 0x89, 0x3f, 0x81, 0x5c, 0x54, 0xe2, 0xb8,
1973 0x85, 0xdb, 0xe7, 0xb3, 0xc0, 0x73, 0x51, 0x17, 0x7a, 0xf8, 0x32, 0x94, 0xf8, 0x5f, 0x19, 0xdb,
1974 0x82, 0xf0, 0xb9, 0xc8, 0x01, 0x1e, 0x57, 0xbc, 0x01, 0x45, 0x91, 0x66, 0x16, 0x8d, 0x5b, 0x43,
1975 0xb2, 0xe6, 0x07, 0x63, 0xd1, 0x3e, 0x19, 0x39, 0xa1, 0xf1, 0x82, 0x38, 0x23, 0x2a, 0x12, 0xa6,
1976 0xa4, 0x57, 0x22, 0xf0, 0xa7, 0x1c, 0xc3, 0x57, 0xa1, 0x2c, 0xb3, 0xd2, 0x66, 0x16, 0x7d, 0x25,
1977 0xaa, 0x4f, 0x5e, 0x97, 0x89, 0xda, 0xe2, 0x08, 0x7f, 0xfc, 0xb3, 0xc0, 0x65, 0xf1, 0xd1, 0x8a,
1978 0x47, 0x70, 0x40, 0x3c, 0xfe, 0xc3, 0xe9, 0xc2, 0x77, 0x65, 0xfe, 0xf6, 0xa6, 0x73, 0xb1, 0xf6,
1979 0xe7, 0x0c, 0xe4, 0xc4, 0xfb, 0xb6, 0x02, 0xe5, 0xa3, 0xcf, 0xba, 0x9a, 0xd1, 0xec, 0x1c, 0xef,
1980 0xb6, 0x35, 0xa4, 0xe0, 0x2a, 0x80, 0x00, 0x1e, 0xb7, 0x3b, 0x8d, 0x23, 0x94, 0x49, 0xd6, 0xad,
1981 0xc3, 0xa3, 0x87, 0xf7, 0x51, 0x36, 0x51, 0x38, 0x96, 0x40, 0x2e, 0x4d, 0xb8, 0xb7, 0x8d, 0xf2,
1982 0x18, 0x41, 0x45, 0x1a, 0x68, 0x3d, 0xd5, 0x9a, 0x0f, 0xef, 0xa3, 0xc2, 0x24, 0x72, 0x6f, 0x1b,
1983 0x2d, 0xe1, 0x65, 0x28, 0x09, 0x64, 0xb7, 0xd3, 0x69, 0xa3, 0x62, 0x62, 0xb3, 0x77, 0xa4, 0xb7,
1984 0x0e, 0xf7, 0x51, 0x29, 0xb1, 0xb9, 0xaf, 0x77, 0x8e, 0xbb, 0x08, 0x12, 0x0b, 0x07, 0x5a, 0xaf,
1985 0xd7, 0xd8, 0xd7, 0x50, 0x39, 0x61, 0xec, 0x7e, 0x76, 0xa4, 0xf5, 0x50, 0x65, 0xc2, 0xad, 0x7b,
1986 0xdb, 0x68, 0x39, 0x79, 0x84, 0x76, 0x78, 0x7c, 0x80, 0xaa, 0x78, 0x15, 0x96, 0xe5, 0x23, 0x62,
1987 0x27, 0x56, 0xa6, 0xa0, 0x87, 0xf7, 0x11, 0x1a, 0x3b, 0x22, 0xad, 0xac, 0x4e, 0x00, 0x0f, 0xef,
1988 0x23, 0x5c, 0xdb, 0x83, 0xbc, 0xc8, 0x2e, 0x8c, 0xa1, 0xda, 0x6e, 0xec, 0x6a, 0x6d, 0xa3, 0xd3,
1989 0x3d, 0x6a, 0x75, 0x0e, 0x1b, 0x6d, 0xa4, 0x8c, 0x31, 0x5d, 0xfb, 0xc9, 0x71, 0x4b, 0xd7, 0x9a,
1990 0x28, 0x93, 0xc6, 0xba, 0x5a, 0xe3, 0x48, 0x6b, 0xa2, 0x6c, 0xcd, 0x84, 0xf5, 0x79, 0x75, 0x66,
1991 0xee, 0x9b, 0x91, 0x3a, 0xe2, 0xcc, 0x82, 0x23, 0x16, 0xb6, 0x66, 0x8e, 0xf8, 0x4b, 0x05, 0xd6,
1992 0xe6, 0xd4, 0xda, 0xb9, 0x0f, 0xf9, 0x31, 0xe4, 0x65, 0x8a, 0xca, 0xee, 0x73, 0x6b, 0x6e, 0xd1,
1993 0x16, 0x09, 0x3b, 0xd3, 0x81, 0x84, 0x5e, 0xba, 0x03, 0x67, 0x17, 0x74, 0x60, 0x6e, 0x62, 0xc6,
1994 0xc9, 0x5f, 0x2a, 0xa0, 0x2e, 0xb2, 0xfd, 0x86, 0x42, 0x91, 0x99, 0x28, 0x14, 0x1f, 0x4f, 0x3b,
1995 0x70, 0x6d, 0xf1, 0x1e, 0x66, 0xbc, 0xf8, 0x4a, 0x81, 0x0b, 0xf3, 0x07, 0x95, 0xb9, 0x3e, 0x7c,
1996 0x02, 0x85, 0x21, 0x0d, 0x4f, 0xdd, 0xb8, 0x59, 0xbf, 0x3f, 0xa7, 0x05, 0x70, 0xf1, 0x74, 0xac,
1997 0x22, 0xad, 0x74, 0x0f, 0xc9, 0x2e, 0x9a, 0x36, 0xa4, 0x37, 0x33, 0x9e, 0xfe, 0x2a, 0x03, 0x6f,
1998 0xcf, 0x35, 0x3e, 0xd7, 0xd1, 0x2b, 0x00, 0x36, 0xf3, 0x46, 0xa1, 0x6c, 0xc8, 0xb2, 0x3e, 0x95,
1999 0x04, 0x22, 0xde, 0x7d, 0x5e, 0x7b, 0x46, 0x61, 0x22, 0xcf, 0x0a, 0x39, 0x48, 0x48, 0x10, 0x1e,
2000 0x8d, 0x1d, 0xcd, 0x09, 0x47, 0xdf, 0x5d, 0xb0, 0xd3, 0x99, 0x5e, 0xf7, 0x01, 0x20, 0xd3, 0xb1,
2001 0x29, 0x0b, 0x8d, 0x20, 0xf4, 0x29, 0x19, 0xda, 0x6c, 0x20, 0x0a, 0x70, 0x71, 0x27, 0xdf, 0x27,
2002 0x4e, 0x40, 0xf5, 0x15, 0x29, 0xee, 0xc5, 0x52, 0xae, 0x21, 0xba, 0x8c, 0x9f, 0xd2, 0x28, 0x4c,
2003 0x68, 0x48, 0x71, 0xa2, 0x51, 0xfb, 0xf5, 0x12, 0x94, 0x53, 0x63, 0x1d, 0xbe, 0x06, 0x95, 0x67,
2004 0xe4, 0x05, 0x31, 0xe2, 0x51, 0x5d, 0x46, 0xa2, 0xcc, 0xb1, 0x6e, 0x34, 0xae, 0x7f, 0x00, 0xeb,
2005 0x82, 0xe2, 0x8e, 0x42, 0xea, 0x1b, 0xa6, 0x43, 0x82, 0x40, 0x04, 0xad, 0x28, 0xa8, 0x98, 0xcb,
2006 0x3a, 0x5c, 0xb4, 0x17, 0x4b, 0xf0, 0x03, 0x58, 0x13, 0x1a, 0xc3, 0x91, 0x13, 0xda, 0x9e, 0x43,
2007 0x0d, 0xfe, 0xf1, 0x10, 0x88, 0x42, 0x9c, 0x78, 0xb6, 0xca, 0x19, 0x07, 0x11, 0x81, 0x7b, 0x14,
2008 0xe0, 0x7d, 0xb8, 0x22, 0xd4, 0x06, 0x94, 0x51, 0x9f, 0x84, 0xd4, 0xa0, 0xbf, 0x18, 0x11, 0x27,
2009 0x30, 0x08, 0xb3, 0x8c, 0x53, 0x12, 0x9c, 0xaa, 0xeb, 0x69, 0x03, 0x97, 0x38, 0x77, 0x3f, 0xa2,
2010 0x6a, 0x82, 0xd9, 0x60, 0xd6, 0xa7, 0x24, 0x38, 0xc5, 0x3b, 0x70, 0x41, 0x18, 0x0a, 0x42, 0xdf,
2011 0x66, 0x03, 0xc3, 0x3c, 0xa5, 0xe6, 0x73, 0x63, 0x14, 0xf6, 0x1f, 0xa9, 0x97, 0xd3, 0x16, 0x84,
2012 0x93, 0x3d, 0xc1, 0xd9, 0xe3, 0x94, 0xe3, 0xb0, 0xff, 0x08, 0xf7, 0xa0, 0xc2, 0xcf, 0x63, 0x68,
2013 0x7f, 0x41, 0x8d, 0xbe, 0xeb, 0x8b, 0xe6, 0x52, 0x9d, 0xf3, 0x72, 0xa7, 0x82, 0x58, 0xef, 0x44,
2014 0x0a, 0x07, 0xae, 0x45, 0x77, 0xf2, 0xbd, 0xae, 0xa6, 0x35, 0xf5, 0x72, 0x6c, 0xe5, 0xb1, 0xeb,
2015 0xf3, 0x9c, 0x1a, 0xb8, 0x49, 0x8c, 0xcb, 0x32, 0xa7, 0x06, 0x6e, 0x1c, 0xe1, 0x07, 0xb0, 0x66,
2016 0x9a, 0x72, 0xdb, 0xb6, 0x69, 0x44, 0x53, 0x7e, 0xa0, 0xa2, 0x89, 0x78, 0x99, 0xe6, 0xbe, 0x24,
2017 0x44, 0x69, 0x1e, 0xe0, 0x8f, 0xe0, 0xed, 0x71, 0xbc, 0xd2, 0x8a, 0xab, 0x33, 0xbb, 0x9c, 0x56,
2018 0x7d, 0x00, 0x6b, 0xde, 0xd9, 0xac, 0x22, 0x9e, 0x78, 0xa2, 0x77, 0x36, 0xad, 0x76, 0x43, 0x7c,
2019 0xb9, 0xf9, 0xd4, 0x24, 0x21, 0xb5, 0xd4, 0x8b, 0x69, 0x76, 0x4a, 0x80, 0xef, 0x02, 0x32, 0x4d,
2020 0x83, 0x32, 0x72, 0xe2, 0x50, 0x83, 0xf8, 0x94, 0x91, 0x40, 0xbd, 0x9a, 0x26, 0x57, 0x4d, 0x53,
2021 0x13, 0xd2, 0x86, 0x10, 0xe2, 0xdb, 0xb0, 0xea, 0x9e, 0x3c, 0x33, 0x65, 0x72, 0x19, 0x9e, 0x4f,
2022 0xfb, 0xf6, 0x2b, 0xf5, 0xba, 0x08, 0xd3, 0x0a, 0x17, 0x88, 0xd4, 0xea, 0x0a, 0x18, 0xdf, 0x02,
2023 0x64, 0x06, 0xa7, 0xc4, 0xf7, 0x44, 0x77, 0x0f, 0x3c, 0x62, 0x52, 0xf5, 0x86, 0xa4, 0x4a, 0xfc,
2024 0x30, 0x86, 0xf1, 0x53, 0x58, 0x1f, 0x31, 0x9b, 0x85, 0xd4, 0xf7, 0x7c, 0xca, 0x87, 0x74, 0xf9,
2025 0xa6, 0xa9, 0xff, 0x5a, 0x5a, 0x30, 0x66, 0x1f, 0xa7, 0xd9, 0xf2, 0x74, 0xf5, 0xb5, 0xd1, 0x2c,
2026 0x58, 0xdb, 0x81, 0x4a, 0xfa, 0xd0, 0x71, 0x09, 0xe4, 0xb1, 0x23, 0x85, 0xf7, 0xd0, 0xbd, 0x4e,
2027 0x93, 0x77, 0xbf, 0xcf, 0x35, 0x94, 0xe1, 0x5d, 0xb8, 0xdd, 0x3a, 0xd2, 0x0c, 0xfd, 0xf8, 0xf0,
2028 0xa8, 0x75, 0xa0, 0xa1, 0xec, 0xed, 0x52, 0xf1, 0xdf, 0x4b, 0xe8, 0xf5, 0xeb, 0xd7, 0xaf, 0x33,
2029 0x4f, 0x72, 0xc5, 0xf7, 0xd1, 0xcd, 0xda, 0x5f, 0x33, 0x50, 0x9d, 0x9c, 0x7f, 0xf1, 0x8f, 0xe0,
2030 0x62, 0xfc, 0xb1, 0x1a, 0xd0, 0xd0, 0x78, 0x69, 0xfb, 0x22, 0x1b, 0x87, 0x44, 0x4e, 0x90, 0x49,
2031 0x20, 0xd7, 0x23, 0x56, 0x8f, 0x86, 0x3f, 0xb3, 0x7d, 0x9e, 0x6b, 0x43, 0x12, 0xe2, 0x36, 0x5c,
2032 0x65, 0xae, 0x11, 0x84, 0x84, 0x59, 0xc4, 0xb7, 0x8c, 0xf1, 0x35, 0x81, 0x41, 0x4c, 0x93, 0x06,
2033 0x81, 0x2b, 0x1b, 0x41, 0x62, 0xe5, 0x1d, 0xe6, 0xf6, 0x22, 0xf2, 0xb8, 0x42, 0x36, 0x22, 0xea,
2034 0xd4, 0xa1, 0x67, 0x17, 0x1d, 0xfa, 0x65, 0x28, 0x0d, 0x89, 0x67, 0x50, 0x16, 0xfa, 0x67, 0x62,
2035 0x6a, 0x2b, 0xea, 0xc5, 0x21, 0xf1, 0x34, 0xbe, 0xfe, 0xf6, 0x4e, 0x22, 0x15, 0xcd, 0xda, 0x3f,
2036 0xb2, 0x50, 0x49, 0x4f, 0x6e, 0x7c, 0x10, 0x36, 0x45, 0x95, 0x56, 0xc4, 0x4b, 0xfc, 0xde, 0xd7,
2037 0xce, 0x79, 0xf5, 0x3d, 0x5e, 0xbe, 0x77, 0x0a, 0x72, 0x9e, 0xd2, 0xa5, 0x26, 0x6f, 0x9d, 0xfc,
2038 0xb5, 0xa5, 0x72, 0x4a, 0x2f, 0xea, 0xd1, 0x0a, 0xef, 0x43, 0xe1, 0x59, 0x20, 0x6c, 0x17, 0x84,
2039 0xed, 0xeb, 0x5f, 0x6f, 0xfb, 0x49, 0x4f, 0x18, 0x2f, 0x3d, 0xe9, 0x19, 0x87, 0x1d, 0xfd, 0xa0,
2040 0xd1, 0xd6, 0x23, 0x75, 0x7c, 0x09, 0x72, 0x0e, 0xf9, 0xe2, 0x6c, 0xb2, 0xd0, 0x0b, 0xe8, 0xbc,
2041 0x81, 0xbf, 0x04, 0xb9, 0x97, 0x94, 0x3c, 0x9f, 0x2c, 0xaf, 0x02, 0xfa, 0x16, 0x5f, 0x80, 0xbb,
2042 0x90, 0x17, 0xf1, 0xc2, 0x00, 0x51, 0xc4, 0xd0, 0x5b, 0xb8, 0x08, 0xb9, 0xbd, 0x8e, 0xce, 0x5f,
2043 0x02, 0x04, 0x15, 0x89, 0x1a, 0xdd, 0x96, 0xb6, 0xa7, 0xa1, 0x4c, 0xed, 0x01, 0x14, 0x64, 0x10,
2044 0xf8, 0x0b, 0x92, 0x84, 0x01, 0xbd, 0x15, 0x2d, 0x23, 0x1b, 0x4a, 0x2c, 0x3d, 0x3e, 0xd8, 0xd5,
2045 0x74, 0x94, 0x49, 0x1f, 0x6f, 0x00, 0x95, 0xf4, 0xd0, 0xf6, 0xdd, 0xe4, 0xd4, 0x5f, 0x14, 0x28,
2046 0xa7, 0x86, 0x30, 0xde, 0xfe, 0x89, 0xe3, 0xb8, 0x2f, 0x0d, 0xe2, 0xd8, 0x24, 0x88, 0x92, 0x02,
2047 0x04, 0xd4, 0xe0, 0xc8, 0x79, 0x0f, 0xed, 0x3b, 0x71, 0xfe, 0x0f, 0x0a, 0xa0, 0xe9, 0x01, 0x6e,
2048 0xca, 0x41, 0xe5, 0x7b, 0x75, 0xf0, 0xf7, 0x0a, 0x54, 0x27, 0xa7, 0xb6, 0x29, 0xf7, 0xae, 0x7d,
2049 0xaf, 0xee, 0xfd, 0x4e, 0x81, 0xe5, 0x89, 0x59, 0xed, 0xff, 0xca, 0xbb, 0xdf, 0x66, 0x61, 0x6d,
2050 0x8e, 0x1e, 0x6e, 0x44, 0x43, 0xad, 0x9c, 0xb3, 0x7f, 0x78, 0x9e, 0x67, 0xd5, 0x79, 0xcf, 0xec,
2051 0x12, 0x3f, 0x8c, 0x66, 0xe0, 0x5b, 0x80, 0x6c, 0x8b, 0xb2, 0xd0, 0xee, 0xdb, 0xd4, 0x8f, 0x3e,
2052 0xc4, 0xe5, 0xa4, 0xbb, 0x32, 0xc6, 0xe5, 0xb7, 0xf8, 0x0f, 0x00, 0x7b, 0x6e, 0x60, 0x87, 0xf6,
2053 0x0b, 0x6a, 0xd8, 0x2c, 0xfe, 0x6a, 0xe7, 0x93, 0x6f, 0x4e, 0x47, 0xb1, 0xa4, 0xc5, 0xc2, 0x84,
2054 0xcd, 0xe8, 0x80, 0x4c, 0xb1, 0x79, 0xed, 0xcb, 0xea, 0x28, 0x96, 0x24, 0xec, 0x6b, 0x50, 0xb1,
2055 0xdc, 0x11, 0x1f, 0x22, 0x24, 0x8f, 0x97, 0x5a, 0x45, 0x2f, 0x4b, 0x2c, 0xa1, 0x44, 0x53, 0xde,
2056 0xf8, 0xba, 0xa0, 0xa2, 0x97, 0x25, 0x26, 0x29, 0x37, 0x61, 0x85, 0x0c, 0x06, 0x3e, 0x37, 0x1e,
2057 0x1b, 0x92, 0xa3, 0x6b, 0x35, 0x81, 0x05, 0x71, 0xe3, 0x09, 0x14, 0xe3, 0x38, 0xf0, 0x6e, 0xc6,
2058 0x23, 0x61, 0x78, 0xf2, 0xd2, 0x26, 0xb3, 0x55, 0xd2, 0x8b, 0x2c, 0x16, 0x5e, 0x83, 0x8a, 0x1d,
2059 0x18, 0xe3, 0xdb, 0xc3, 0xcc, 0x66, 0x66, 0xab, 0xa8, 0x97, 0xed, 0x20, 0xb9, 0x2e, 0xaa, 0x7d,
2060 0x95, 0x81, 0xea, 0xe4, 0xed, 0x27, 0x6e, 0x42, 0xd1, 0x71, 0x4d, 0x22, 0x12, 0x41, 0x5e, 0xbd,
2061 0x6f, 0xbd, 0xe1, 0xc2, 0xb4, 0xde, 0x8e, 0xf8, 0x7a, 0xa2, 0xb9, 0xf1, 0x37, 0x05, 0x8a, 0x31,
2062 0x8c, 0x2f, 0x40, 0xce, 0x23, 0xe1, 0xa9, 0x30, 0x97, 0xdf, 0xcd, 0x20, 0x45, 0x17, 0x6b, 0x8e,
2063 0x07, 0x1e, 0x61, 0x22, 0x05, 0x22, 0x9c, 0xaf, 0xf9, 0xb9, 0x3a, 0x94, 0x58, 0x62, 0x28, 0x76,
2064 0x87, 0x43, 0xca, 0xc2, 0x20, 0x3e, 0xd7, 0x08, 0xdf, 0x8b, 0x60, 0x7c, 0x07, 0x56, 0x43, 0x9f,
2065 0xd8, 0xce, 0x04, 0x37, 0x27, 0xb8, 0x28, 0x16, 0x24, 0xe4, 0x1d, 0xb8, 0x14, 0xdb, 0xb5, 0x68,
2066 0x48, 0xcc, 0x53, 0x6a, 0x8d, 0x95, 0x0a, 0xe2, 0x6a, 0xed, 0x62, 0x44, 0x68, 0x46, 0xf2, 0x58,
2067 0xb7, 0xf6, 0x77, 0x05, 0x56, 0xe3, 0x31, 0xde, 0x4a, 0x82, 0x75, 0x00, 0x40, 0x18, 0x73, 0xc3,
2068 0x74, 0xb8, 0x66, 0x53, 0x79, 0x46, 0xaf, 0xde, 0x48, 0x94, 0xf4, 0x94, 0x81, 0x8d, 0x21, 0xc0,
2069 0x58, 0xb2, 0x30, 0x6c, 0x57, 0xa1, 0x1c, 0x5d, 0x6d, 0x8b, 0xff, 0x8f, 0xc8, 0x6f, 0x3f, 0x90,
2070 0x10, 0x9f, 0xf7, 0xf1, 0x3a, 0xe4, 0x4f, 0xe8, 0xc0, 0x66, 0xd1, 0x85, 0x9b, 0x5c, 0xc4, 0xd7,
2071 0x78, 0xb9, 0xe4, 0x1a, 0x6f, 0xf7, 0xe7, 0xb0, 0x66, 0xba, 0xc3, 0x69, 0x77, 0x77, 0xd1, 0xd4,
2072 0xf7, 0x67, 0xf0, 0xa9, 0xf2, 0x39, 0x8c, 0xa7, 0xb3, 0x3f, 0x2a, 0xca, 0x97, 0x99, 0xec, 0x7e,
2073 0x77, 0xf7, 0x4f, 0x99, 0x8d, 0x7d, 0xa9, 0xda, 0x8d, 0x77, 0xaa, 0xd3, 0xbe, 0x43, 0x4d, 0xee,
2074 0xfd, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x05, 0x54, 0xc8, 0x7d, 0x07, 0x1a, 0x00, 0x00,
2075 }
1996 // 2460 bytes of a gzipped FileDescriptorProto
1997 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0x5b, 0x6f, 0xdb, 0xc8,
1998 0x15, 0x5e, 0x5d, 0x2d, 0x1d, 0xc9, 0xf2, 0x78, 0xec, 0x4d, 0x18, 0xef, 0x25, 0x8e, 0xf6, 0x12,
1999 0x6f, 0xd2, 0xc8, 0x0b, 0xe7, 0xb2, 0x59, 0xa7, 0x48, 0x21, 0x4b, 0x8c, 0x57, 0xa9, 0x2c, 0xa9,
2000 0x94, 0xdc, 0x4d, 0xf6, 0x85, 0x18, 0x93, 0x23, 0x99, 0x09, 0x45, 0x72, 0x49, 0x2a, 0x89, 0xf7,
2001 0x29, 0x40, 0x9f, 0x0a, 0xf4, 0x07, 0x14, 0x45, 0xd1, 0x87, 0x7d, 0x59, 0xa0, 0x3f, 0xa0, 0xcf,
2002 0xfd, 0x05, 0x05, 0xf6, 0xb9, 0x2f, 0x45, 0x51, 0xa0, 0xfd, 0x07, 0x7d, 0x2d, 0x66, 0x86, 0xa4,
2003 0x48, 0x5d, 0x12, 0x77, 0x81, 0xec, 0x3e, 0xd9, 0x73, 0xce, 0x77, 0x0e, 0xcf, 0x9c, 0xf9, 0x66,
2004 0xce, 0x99, 0x11, 0x6c, 0x8f, 0x6c, 0x7b, 0x64, 0xd2, 0x5d, 0xc7, 0xb5, 0x7d, 0xfb, 0x64, 0x32,
2005 0xdc, 0xd5, 0xa9, 0xa7, 0xb9, 0x86, 0xe3, 0xdb, 0x6e, 0x8d, 0xcb, 0xf0, 0x9a, 0x40, 0xd4, 0x42,
2006 0x44, 0xf5, 0x08, 0xd6, 0x1f, 0x18, 0x26, 0x6d, 0x46, 0xc0, 0x3e, 0xf5, 0xf1, 0x5d, 0xc8, 0x0e,
2007 0x0d, 0x93, 0x4a, 0xa9, 0xed, 0xcc, 0x4e, 0x69, 0xef, 0xc3, 0xda, 0x8c, 0x51, 0x2d, 0x69, 0xd1,
2008 0x63, 0x62, 0x85, 0x5b, 0x54, 0xff, 0x95, 0x85, 0x8d, 0x05, 0x5a, 0x8c, 0x21, 0x6b, 0x91, 0x31,
2009 0xf3, 0x98, 0xda, 0x29, 0x2a, 0xfc, 0x7f, 0x2c, 0xc1, 0x8a, 0x43, 0xb4, 0xa7, 0x64, 0x44, 0xa5,
2010 0x34, 0x17, 0x87, 0x43, 0xfc, 0x3e, 0x80, 0x4e, 0x1d, 0x6a, 0xe9, 0xd4, 0xd2, 0xce, 0xa4, 0xcc,
2011 0x76, 0x66, 0xa7, 0xa8, 0xc4, 0x24, 0xf8, 0x3a, 0xac, 0x3b, 0x93, 0x13, 0xd3, 0xd0, 0xd4, 0x18,
2012 0x0c, 0xb6, 0x33, 0x3b, 0x39, 0x05, 0x09, 0x45, 0x73, 0x0a, 0xbe, 0x0a, 0x6b, 0xcf, 0x29, 0x79,
2013 0x1a, 0x87, 0x96, 0x38, 0xb4, 0xc2, 0xc4, 0x31, 0x60, 0x03, 0xca, 0x63, 0xea, 0x79, 0x64, 0x44,
2014 0x55, 0xff, 0xcc, 0xa1, 0x52, 0x96, 0xcf, 0x7e, 0x7b, 0x6e, 0xf6, 0xb3, 0x33, 0x2f, 0x05, 0x56,
2015 0x83, 0x33, 0x87, 0xe2, 0x3a, 0x14, 0xa9, 0x35, 0x19, 0x0b, 0x0f, 0xb9, 0x25, 0xf9, 0x93, 0xad,
2016 0xc9, 0x78, 0xd6, 0x4b, 0x81, 0x99, 0x05, 0x2e, 0x56, 0x3c, 0xea, 0x3e, 0x33, 0x34, 0x2a, 0xe5,
2017 0xb9, 0x83, 0xab, 0x73, 0x0e, 0xfa, 0x42, 0x3f, 0xeb, 0x23, 0xb4, 0xc3, 0x0d, 0x28, 0xd2, 0x17,
2018 0x3e, 0xb5, 0x3c, 0xc3, 0xb6, 0xa4, 0x15, 0xee, 0xe4, 0xa3, 0x05, 0xab, 0x48, 0x4d, 0x7d, 0xd6,
2019 0xc5, 0xd4, 0x0e, 0xdf, 0x81, 0x15, 0xdb, 0xf1, 0x0d, 0xdb, 0xf2, 0xa4, 0xc2, 0x76, 0x6a, 0xa7,
2020 0xb4, 0xf7, 0xee, 0x42, 0x22, 0x74, 0x05, 0x46, 0x09, 0xc1, 0xb8, 0x05, 0xc8, 0xb3, 0x27, 0xae,
2021 0x46, 0x55, 0xcd, 0xd6, 0xa9, 0x6a, 0x58, 0x43, 0x5b, 0x2a, 0x72, 0x07, 0x97, 0xe7, 0x27, 0xc2,
2022 0x81, 0x0d, 0x5b, 0xa7, 0x2d, 0x6b, 0x68, 0x2b, 0x15, 0x2f, 0x31, 0xc6, 0x17, 0x20, 0xef, 0x9d,
2023 0x59, 0x3e, 0x79, 0x21, 0x95, 0x39, 0x43, 0x82, 0x51, 0xf5, 0xbf, 0x39, 0x58, 0x3b, 0x0f, 0xc5,
2024 0xee, 0x41, 0x6e, 0xc8, 0x66, 0x29, 0xa5, 0xff, 0x9f, 0x1c, 0x08, 0x9b, 0x64, 0x12, 0xf3, 0x3f,
2025 0x30, 0x89, 0x75, 0x28, 0x59, 0xd4, 0xf3, 0xa9, 0x2e, 0x18, 0x91, 0x39, 0x27, 0xa7, 0x40, 0x18,
2026 0xcd, 0x53, 0x2a, 0xfb, 0x83, 0x28, 0xf5, 0x08, 0xd6, 0xa2, 0x90, 0x54, 0x97, 0x58, 0xa3, 0x90,
2027 0x9b, 0xbb, 0xaf, 0x8b, 0xa4, 0x26, 0x87, 0x76, 0x0a, 0x33, 0x53, 0x2a, 0x34, 0x31, 0xc6, 0x4d,
2028 0x00, 0xdb, 0xa2, 0xf6, 0x50, 0xd5, 0xa9, 0x66, 0x4a, 0x85, 0x25, 0x59, 0xea, 0x32, 0xc8, 0x5c,
2029 0x96, 0x6c, 0x21, 0xd5, 0x4c, 0xfc, 0xf9, 0x94, 0x6a, 0x2b, 0x4b, 0x98, 0x72, 0x24, 0x36, 0xd9,
2030 0x1c, 0xdb, 0x8e, 0xa1, 0xe2, 0x52, 0xc6, 0x7b, 0xaa, 0x07, 0x33, 0x2b, 0xf2, 0x20, 0x6a, 0xaf,
2031 0x9d, 0x99, 0x12, 0x98, 0x89, 0x89, 0xad, 0xba, 0xf1, 0x21, 0xfe, 0x00, 0x22, 0x81, 0xca, 0x69,
2032 0x05, 0xfc, 0x14, 0x2a, 0x87, 0xc2, 0x0e, 0x19, 0xd3, 0xad, 0xbb, 0x50, 0x49, 0xa6, 0x07, 0x6f,
2033 0x42, 0xce, 0xf3, 0x89, 0xeb, 0x73, 0x16, 0xe6, 0x14, 0x31, 0xc0, 0x08, 0x32, 0xd4, 0xd2, 0xf9,
2034 0x29, 0x97, 0x53, 0xd8, 0xbf, 0x5b, 0x9f, 0xc1, 0x6a, 0xe2, 0xf3, 0xe7, 0x35, 0xac, 0xfe, 0x3e,
2035 0x0f, 0x9b, 0x8b, 0x38, 0xb7, 0x90, 0xfe, 0x17, 0x20, 0x6f, 0x4d, 0xc6, 0x27, 0xd4, 0x95, 0x32,
2036 0xdc, 0x43, 0x30, 0xc2, 0x75, 0xc8, 0x99, 0xe4, 0x84, 0x9a, 0x52, 0x76, 0x3b, 0xb5, 0x53, 0xd9,
2037 0xbb, 0x7e, 0x2e, 0x56, 0xd7, 0xda, 0xcc, 0x44, 0x11, 0x96, 0xf8, 0x3e, 0x64, 0x83, 0x23, 0x8e,
2038 0x79, 0xb8, 0x76, 0x3e, 0x0f, 0x8c, 0x8b, 0x0a, 0xb7, 0xc3, 0xef, 0x40, 0x91, 0xfd, 0x15, 0xb9,
2039 0xcd, 0xf3, 0x98, 0x0b, 0x4c, 0xc0, 0xf2, 0x8a, 0xb7, 0xa0, 0xc0, 0x69, 0xa6, 0xd3, 0xb0, 0x34,
2040 0x44, 0x63, 0xb6, 0x30, 0x3a, 0x1d, 0x92, 0x89, 0xe9, 0xab, 0xcf, 0x88, 0x39, 0xa1, 0x9c, 0x30,
2041 0x45, 0xa5, 0x1c, 0x08, 0x7f, 0xcd, 0x64, 0xf8, 0x32, 0x94, 0x04, 0x2b, 0x0d, 0x4b, 0xa7, 0x2f,
2042 0xf8, 0xe9, 0x93, 0x53, 0x04, 0x51, 0x5b, 0x4c, 0xc2, 0x3e, 0xff, 0xc4, 0xb3, 0xad, 0x70, 0x69,
2043 0xf9, 0x27, 0x98, 0x80, 0x7f, 0xfe, 0xb3, 0xd9, 0x83, 0xef, 0xbd, 0xc5, 0xd3, 0x9b, 0xe5, 0x62,
2044 0xf5, 0x2f, 0x69, 0xc8, 0xf2, 0xfd, 0xb6, 0x06, 0xa5, 0xc1, 0xe3, 0x9e, 0xac, 0x36, 0xbb, 0xc7,
2045 0x07, 0x6d, 0x19, 0xa5, 0x70, 0x05, 0x80, 0x0b, 0x1e, 0xb4, 0xbb, 0xf5, 0x01, 0x4a, 0x47, 0xe3,
2046 0x56, 0x67, 0x70, 0xe7, 0x16, 0xca, 0x44, 0x06, 0xc7, 0x42, 0x90, 0x8d, 0x03, 0x6e, 0xee, 0xa1,
2047 0x1c, 0x46, 0x50, 0x16, 0x0e, 0x5a, 0x8f, 0xe4, 0xe6, 0x9d, 0x5b, 0x28, 0x9f, 0x94, 0xdc, 0xdc,
2048 0x43, 0x2b, 0x78, 0x15, 0x8a, 0x5c, 0x72, 0xd0, 0xed, 0xb6, 0x51, 0x21, 0xf2, 0xd9, 0x1f, 0x28,
2049 0xad, 0xce, 0x21, 0x2a, 0x46, 0x3e, 0x0f, 0x95, 0xee, 0x71, 0x0f, 0x41, 0xe4, 0xe1, 0x48, 0xee,
2050 0xf7, 0xeb, 0x87, 0x32, 0x2a, 0x45, 0x88, 0x83, 0xc7, 0x03, 0xb9, 0x8f, 0xca, 0x89, 0xb0, 0x6e,
2051 0xee, 0xa1, 0xd5, 0xe8, 0x13, 0x72, 0xe7, 0xf8, 0x08, 0x55, 0xf0, 0x3a, 0xac, 0x8a, 0x4f, 0x84,
2052 0x41, 0xac, 0xcd, 0x88, 0xee, 0xdc, 0x42, 0x68, 0x1a, 0x88, 0xf0, 0xb2, 0x9e, 0x10, 0xdc, 0xb9,
2053 0x85, 0x70, 0xb5, 0x01, 0x39, 0xce, 0x2e, 0x8c, 0xa1, 0xd2, 0xae, 0x1f, 0xc8, 0x6d, 0xb5, 0xdb,
2054 0x1b, 0xb4, 0xba, 0x9d, 0x7a, 0x1b, 0xa5, 0xa6, 0x32, 0x45, 0xfe, 0xd5, 0x71, 0x4b, 0x91, 0x9b,
2055 0x28, 0x1d, 0x97, 0xf5, 0xe4, 0xfa, 0x40, 0x6e, 0xa2, 0x4c, 0x55, 0x83, 0xcd, 0x45, 0xe7, 0xcc,
2056 0xc2, 0x9d, 0x11, 0x5b, 0xe2, 0xf4, 0x92, 0x25, 0xe6, 0xbe, 0xe6, 0x96, 0xf8, 0xdb, 0x14, 0x6c,
2057 0x2c, 0x38, 0x6b, 0x17, 0x7e, 0xe4, 0x17, 0x90, 0x13, 0x14, 0x15, 0xd5, 0xe7, 0x93, 0x85, 0x87,
2058 0x36, 0x27, 0xec, 0x5c, 0x05, 0xe2, 0x76, 0xf1, 0x0a, 0x9c, 0x59, 0x52, 0x81, 0x99, 0x8b, 0xb9,
2059 0x20, 0x7f, 0x93, 0x02, 0x69, 0x99, 0xef, 0xd7, 0x1c, 0x14, 0xe9, 0xc4, 0x41, 0x71, 0x6f, 0x36,
2060 0x80, 0x2b, 0xcb, 0xe7, 0x30, 0x17, 0xc5, 0x77, 0x29, 0xb8, 0xb0, 0xb8, 0x51, 0x59, 0x18, 0xc3,
2061 0x7d, 0xc8, 0x8f, 0xa9, 0x7f, 0x6a, 0x87, 0xc5, 0xfa, 0xe3, 0x05, 0x25, 0x80, 0xa9, 0x67, 0x73,
2062 0x15, 0x58, 0xc5, 0x6b, 0x48, 0x66, 0x59, 0xb7, 0x21, 0xa2, 0x99, 0x8b, 0xf4, 0xb7, 0x69, 0x78,
2063 0x7b, 0xa1, 0xf3, 0x85, 0x81, 0xbe, 0x07, 0x60, 0x58, 0xce, 0xc4, 0x17, 0x05, 0x59, 0x9c, 0x4f,
2064 0x45, 0x2e, 0xe1, 0x7b, 0x9f, 0x9d, 0x3d, 0x13, 0x3f, 0xd2, 0x67, 0xb8, 0x1e, 0x84, 0x88, 0x03,
2065 0xee, 0x4e, 0x03, 0xcd, 0xf2, 0x40, 0xdf, 0x5f, 0x32, 0xd3, 0xb9, 0x5a, 0xf7, 0x29, 0x20, 0xcd,
2066 0x34, 0xa8, 0xe5, 0xab, 0x9e, 0xef, 0x52, 0x32, 0x36, 0xac, 0x11, 0x3f, 0x80, 0x0b, 0xfb, 0xb9,
2067 0x21, 0x31, 0x3d, 0xaa, 0xac, 0x09, 0x75, 0x3f, 0xd4, 0x32, 0x0b, 0x5e, 0x65, 0xdc, 0x98, 0x45,
2068 0x3e, 0x61, 0x21, 0xd4, 0x91, 0x45, 0xf5, 0xef, 0x2b, 0x50, 0x8a, 0xb5, 0x75, 0xf8, 0x0a, 0x94,
2069 0x9f, 0x90, 0x67, 0x44, 0x0d, 0x5b, 0x75, 0x91, 0x89, 0x12, 0x93, 0xf5, 0x82, 0x76, 0xfd, 0x53,
2070 0xd8, 0xe4, 0x10, 0x7b, 0xe2, 0x53, 0x57, 0xd5, 0x4c, 0xe2, 0x79, 0x3c, 0x69, 0x05, 0x0e, 0xc5,
2071 0x4c, 0xd7, 0x65, 0xaa, 0x46, 0xa8, 0xc1, 0xb7, 0x61, 0x83, 0x5b, 0x8c, 0x27, 0xa6, 0x6f, 0x38,
2072 0x26, 0x55, 0xd9, 0xe5, 0xc1, 0xe3, 0x07, 0x71, 0x14, 0xd9, 0x3a, 0x43, 0x1c, 0x05, 0x00, 0x16,
2073 0x91, 0x87, 0x9b, 0xf0, 0x1e, 0x37, 0x1b, 0x51, 0x8b, 0xba, 0xc4, 0xa7, 0x2a, 0xfd, 0x7a, 0x42,
2074 0x4c, 0x4f, 0x25, 0x96, 0xae, 0x9e, 0x12, 0xef, 0x54, 0xda, 0x64, 0x0e, 0x0e, 0xd2, 0x52, 0x4a,
2075 0xb9, 0xc4, 0x80, 0x87, 0x01, 0x4e, 0xe6, 0xb0, 0xba, 0xa5, 0x7f, 0x41, 0xbc, 0x53, 0xbc, 0x0f,
2076 0x17, 0xb8, 0x17, 0xcf, 0x77, 0x0d, 0x6b, 0xa4, 0x6a, 0xa7, 0x54, 0x7b, 0xaa, 0x4e, 0xfc, 0xe1,
2077 0x5d, 0xe9, 0x9d, 0xf8, 0xf7, 0x79, 0x84, 0x7d, 0x8e, 0x69, 0x30, 0xc8, 0xb1, 0x3f, 0xbc, 0x8b,
2078 0xfb, 0x50, 0x66, 0x8b, 0x31, 0x36, 0xbe, 0xa1, 0xea, 0xd0, 0x76, 0x79, 0x65, 0xa9, 0x2c, 0xd8,
2079 0xd9, 0xb1, 0x0c, 0xd6, 0xba, 0x81, 0xc1, 0x91, 0xad, 0xd3, 0xfd, 0x5c, 0xbf, 0x27, 0xcb, 0x4d,
2080 0xa5, 0x14, 0x7a, 0x79, 0x60, 0xbb, 0x8c, 0x50, 0x23, 0x3b, 0x4a, 0x70, 0x49, 0x10, 0x6a, 0x64,
2081 0x87, 0xe9, 0xbd, 0x0d, 0x1b, 0x9a, 0x26, 0xe6, 0x6c, 0x68, 0x6a, 0xd0, 0xe2, 0x7b, 0x12, 0x4a,
2082 0x24, 0x4b, 0xd3, 0x0e, 0x05, 0x20, 0xe0, 0xb8, 0x87, 0x3f, 0x87, 0xb7, 0xa7, 0xc9, 0x8a, 0x1b,
2083 0xae, 0xcf, 0xcd, 0x72, 0xd6, 0xf4, 0x36, 0x6c, 0x38, 0x67, 0xf3, 0x86, 0x38, 0xf1, 0x45, 0xe7,
2084 0x6c, 0xd6, 0xec, 0x23, 0x7e, 0x6d, 0x73, 0xa9, 0x46, 0x7c, 0xaa, 0x4b, 0x17, 0xe3, 0xe8, 0x98,
2085 0x02, 0xef, 0x02, 0xd2, 0x34, 0x95, 0x5a, 0xe4, 0xc4, 0xa4, 0x2a, 0x71, 0xa9, 0x45, 0x3c, 0xe9,
2086 0x72, 0x1c, 0x5c, 0xd1, 0x34, 0x99, 0x6b, 0xeb, 0x5c, 0x89, 0xaf, 0xc1, 0xba, 0x7d, 0xf2, 0x44,
2087 0x13, 0xcc, 0x52, 0x1d, 0x97, 0x0e, 0x8d, 0x17, 0xd2, 0x87, 0x3c, 0x4d, 0x6b, 0x4c, 0xc1, 0x79,
2088 0xd5, 0xe3, 0x62, 0xfc, 0x09, 0x20, 0xcd, 0x3b, 0x25, 0xae, 0xc3, 0x4b, 0xbb, 0xe7, 0x10, 0x8d,
2089 0x4a, 0x1f, 0x09, 0xa8, 0x90, 0x77, 0x42, 0x31, 0x63, 0xb6, 0xf7, 0xdc, 0x18, 0xfa, 0xa1, 0xc7,
2090 0xab, 0x82, 0xd9, 0x5c, 0x16, 0x78, 0xdb, 0x01, 0xe4, 0x9c, 0x3a, 0xc9, 0x0f, 0xef, 0x70, 0x58,
2091 0xc5, 0x39, 0x75, 0xe2, 0xdf, 0x7d, 0x04, 0x9b, 0x13, 0xcb, 0xb0, 0x7c, 0xea, 0x3a, 0x2e, 0x65,
2092 0xed, 0xbe, 0xd8, 0xb3, 0xd2, 0xbf, 0x57, 0x96, 0x34, 0xec, 0xc7, 0x71, 0xb4, 0xa0, 0x8a, 0xb2,
2093 0x31, 0x99, 0x17, 0x56, 0xf7, 0xa1, 0x1c, 0x67, 0x10, 0x2e, 0x82, 0xe0, 0x10, 0x4a, 0xb1, 0x6a,
2094 0xdc, 0xe8, 0x36, 0x59, 0x1d, 0xfd, 0x4a, 0x46, 0x69, 0x56, 0xcf, 0xdb, 0xad, 0x81, 0xac, 0x2a,
2095 0xc7, 0x9d, 0x41, 0xeb, 0x48, 0x46, 0x99, 0x6b, 0xc5, 0xc2, 0x7f, 0x56, 0xd0, 0xcb, 0x97, 0x2f,
2096 0x5f, 0xa6, 0x1f, 0x66, 0x0b, 0x1f, 0xa3, 0xab, 0xd5, 0xef, 0xd3, 0x50, 0x49, 0x76, 0xd2, 0xf8,
2097 0xe7, 0x70, 0x31, 0xbc, 0xf6, 0x7a, 0xd4, 0x57, 0x9f, 0x1b, 0x2e, 0xa7, 0xf6, 0x98, 0x88, 0x5e,
2098 0x34, 0x5a, 0x95, 0xcd, 0x00, 0xd5, 0xa7, 0xfe, 0x97, 0x86, 0xcb, 0x88, 0x3b, 0x26, 0x3e, 0x6e,
2099 0xc3, 0x65, 0xcb, 0x56, 0x3d, 0x9f, 0x58, 0x3a, 0x71, 0x75, 0x75, 0xfa, 0xe0, 0xa0, 0x12, 0x4d,
2100 0xa3, 0x9e, 0x67, 0x8b, 0x92, 0x12, 0x79, 0x79, 0xd7, 0xb2, 0xfb, 0x01, 0x78, 0x7a, 0xd6, 0xd6,
2101 0x03, 0xe8, 0x0c, 0x83, 0x32, 0xcb, 0x18, 0xf4, 0x0e, 0x14, 0xc7, 0xc4, 0x51, 0xa9, 0xe5, 0xbb,
2102 0x67, 0xbc, 0xff, 0x2b, 0x28, 0x85, 0x31, 0x71, 0x64, 0x36, 0x7e, 0x73, 0x2b, 0x91, 0xcc, 0x66,
2103 0x01, 0x15, 0x1f, 0x66, 0x0b, 0x45, 0x04, 0xd5, 0x7f, 0x66, 0xa0, 0x1c, 0xef, 0x07, 0x59, 0x7b,
2104 0xad, 0xf1, 0xb3, 0x3f, 0xc5, 0x4f, 0x87, 0x0f, 0x5e, 0xd9, 0x3d, 0xd6, 0x1a, 0xac, 0x28, 0xec,
2105 0xe7, 0x45, 0x97, 0xa6, 0x08, 0x4b, 0x56, 0x90, 0xd9, 0x79, 0x40, 0x45, 0xef, 0x5f, 0x50, 0x82,
2106 0x11, 0x3e, 0x84, 0xfc, 0x13, 0x8f, 0xfb, 0xce, 0x73, 0xdf, 0x1f, 0xbe, 0xda, 0xf7, 0xc3, 0x3e,
2107 0x77, 0x5e, 0x7c, 0xd8, 0x57, 0x3b, 0x5d, 0xe5, 0xa8, 0xde, 0x56, 0x02, 0x73, 0x7c, 0x09, 0xb2,
2108 0x26, 0xf9, 0xe6, 0x2c, 0x59, 0x3e, 0xb8, 0xe8, 0xbc, 0x8b, 0x70, 0x09, 0xb2, 0xcf, 0x29, 0x79,
2109 0x9a, 0x3c, 0xb4, 0xb9, 0xe8, 0x0d, 0x6e, 0x86, 0x5d, 0xc8, 0xf1, 0x7c, 0x61, 0x80, 0x20, 0x63,
2110 0xe8, 0x2d, 0x5c, 0x80, 0x6c, 0xa3, 0xab, 0xb0, 0x0d, 0x81, 0xa0, 0x2c, 0xa4, 0x6a, 0xaf, 0x25,
2111 0x37, 0x64, 0x94, 0xae, 0xde, 0x86, 0xbc, 0x48, 0x02, 0xdb, 0x2c, 0x51, 0x1a, 0xd0, 0x5b, 0xc1,
2112 0x30, 0xf0, 0x91, 0x0a, 0xb5, 0xc7, 0x47, 0x07, 0xb2, 0x82, 0xd2, 0xc9, 0xa5, 0xce, 0xa2, 0x5c,
2113 0xd5, 0x83, 0x72, 0xbc, 0x21, 0xfc, 0x51, 0x58, 0x56, 0xfd, 0x6b, 0x0a, 0x4a, 0xb1, 0x06, 0x8f,
2114 0xb5, 0x16, 0xc4, 0x34, 0xed, 0xe7, 0x2a, 0x31, 0x0d, 0xe2, 0x05, 0xd4, 0x00, 0x2e, 0xaa, 0x33,
2115 0xc9, 0x79, 0x97, 0xee, 0x47, 0xda, 0x22, 0x39, 0x94, 0xaf, 0xfe, 0x29, 0x05, 0x68, 0xb6, 0x45,
2116 0x9c, 0x09, 0x33, 0xf5, 0x53, 0x86, 0x59, 0xfd, 0x63, 0x0a, 0x2a, 0xc9, 0xbe, 0x70, 0x26, 0xbc,
2117 0x2b, 0x3f, 0x69, 0x78, 0xff, 0x48, 0xc3, 0x6a, 0xa2, 0x1b, 0x3c, 0x6f, 0x74, 0x5f, 0xc3, 0xba,
2118 0xa1, 0xd3, 0xb1, 0x63, 0xfb, 0xd4, 0xd2, 0xce, 0x54, 0x93, 0x3e, 0xa3, 0xa6, 0x54, 0xe5, 0x87,
2119 0xc6, 0xee, 0xab, 0xfb, 0xcd, 0x5a, 0x6b, 0x6a, 0xd7, 0x66, 0x66, 0xfb, 0x1b, 0xad, 0xa6, 0x7c,
2120 0xd4, 0xeb, 0x0e, 0xe4, 0x4e, 0xe3, 0xb1, 0x7a, 0xdc, 0xf9, 0x65, 0xa7, 0xfb, 0x65, 0x47, 0x41,
2121 0xc6, 0x0c, 0xec, 0x0d, 0x6e, 0xfb, 0x1e, 0xa0, 0xd9, 0xa0, 0xf0, 0x45, 0x58, 0x14, 0x16, 0x7a,
2122 0x0b, 0x6f, 0xc0, 0x5a, 0xa7, 0xab, 0xf6, 0x5b, 0x4d, 0x59, 0x95, 0x1f, 0x3c, 0x90, 0x1b, 0x83,
2123 0xbe, 0xb8, 0x80, 0x47, 0xe8, 0x41, 0x62, 0x83, 0x57, 0xff, 0x90, 0x81, 0x8d, 0x05, 0x91, 0xe0,
2124 0x7a, 0xd0, 0xfb, 0x8b, 0xeb, 0xc8, 0x8d, 0xf3, 0x44, 0x5f, 0x63, 0xdd, 0x45, 0x8f, 0xb8, 0x7e,
2125 0x70, 0x55, 0xf8, 0x04, 0x58, 0x96, 0x2c, 0xdf, 0x18, 0x1a, 0xd4, 0x0d, 0xde, 0x2b, 0xc4, 0x85,
2126 0x60, 0x6d, 0x2a, 0x17, 0x4f, 0x16, 0x3f, 0x03, 0xec, 0xd8, 0x9e, 0xe1, 0x1b, 0xcf, 0xa8, 0x6a,
2127 0x58, 0xe1, 0xe3, 0x06, 0xbb, 0x20, 0x64, 0x15, 0x14, 0x6a, 0x5a, 0x96, 0x1f, 0xa1, 0x2d, 0x3a,
2128 0x22, 0x33, 0x68, 0x76, 0x98, 0x67, 0x14, 0x14, 0x6a, 0x22, 0xf4, 0x15, 0x28, 0xeb, 0xf6, 0x84,
2129 0xb5, 0x5b, 0x02, 0xc7, 0x6a, 0x47, 0x4a, 0x29, 0x09, 0x59, 0x04, 0x09, 0xfa, 0xe1, 0xe9, 0xab,
2130 0x4a, 0x59, 0x29, 0x09, 0x99, 0x80, 0x5c, 0x85, 0x35, 0x32, 0x1a, 0xb9, 0xcc, 0x79, 0xe8, 0x48,
2131 0x74, 0xf8, 0x95, 0x48, 0xcc, 0x81, 0x5b, 0x0f, 0xa1, 0x10, 0xe6, 0x81, 0x95, 0x6a, 0x96, 0x09,
2132 0xd5, 0x11, 0x6f, 0x5b, 0xe9, 0x9d, 0xa2, 0x52, 0xb0, 0x42, 0xe5, 0x15, 0x28, 0x1b, 0x9e, 0x3a,
2133 0x7d, 0x64, 0x4d, 0x6f, 0xa7, 0x77, 0x0a, 0x4a, 0xc9, 0xf0, 0xa2, 0x57, 0xb5, 0xea, 0x77, 0x69,
2134 0xa8, 0x24, 0x1f, 0x89, 0x71, 0x13, 0x0a, 0xa6, 0xad, 0x11, 0x4e, 0x2d, 0xf1, 0x0b, 0xc5, 0xce,
2135 0x6b, 0xde, 0x95, 0x6b, 0xed, 0x00, 0xaf, 0x44, 0x96, 0x5b, 0x7f, 0x4b, 0x41, 0x21, 0x14, 0xe3,
2136 0x0b, 0x90, 0x75, 0x88, 0x7f, 0xca, 0xdd, 0xe5, 0x0e, 0xd2, 0x28, 0xa5, 0xf0, 0x31, 0x93, 0x7b,
2137 0x0e, 0xb1, 0x38, 0x05, 0x02, 0x39, 0x1b, 0xb3, 0x75, 0x35, 0x29, 0xd1, 0xf9, 0xf5, 0xc1, 0x1e,
2138 0x8f, 0xa9, 0xe5, 0x7b, 0xe1, 0xba, 0x06, 0xf2, 0x46, 0x20, 0xc6, 0xd7, 0x61, 0xdd, 0x77, 0x89,
2139 0x61, 0x26, 0xb0, 0x59, 0x8e, 0x45, 0xa1, 0x22, 0x02, 0xef, 0xc3, 0xa5, 0xd0, 0xaf, 0x4e, 0x7d,
2140 0xa2, 0x9d, 0x52, 0x7d, 0x6a, 0x94, 0xe7, 0x2f, 0x90, 0x17, 0x03, 0x40, 0x33, 0xd0, 0x87, 0xb6,
2141 0xd5, 0xef, 0x53, 0xb0, 0x1e, 0x5e, 0x78, 0xf4, 0x28, 0x59, 0x47, 0x00, 0xc4, 0xb2, 0x6c, 0x3f,
2142 0x9e, 0xae, 0x79, 0x2a, 0xcf, 0xd9, 0xd5, 0xea, 0x91, 0x91, 0x12, 0x73, 0xb0, 0x35, 0x06, 0x98,
2143 0x6a, 0x96, 0xa6, 0xed, 0x32, 0x94, 0x82, 0x5f, 0x00, 0xf8, 0xcf, 0x48, 0xe2, 0x8a, 0x0c, 0x42,
2144 0xc4, 0x6e, 0x46, 0x78, 0x13, 0x72, 0x27, 0x74, 0x64, 0x58, 0xc1, 0xbb, 0xa4, 0x18, 0x84, 0xaf,
2145 0x9d, 0xd9, 0xe8, 0xb5, 0xf3, 0xe0, 0x77, 0x29, 0xd8, 0xd0, 0xec, 0xf1, 0x6c, 0xbc, 0x07, 0x68,
2146 0xe6, 0x9e, 0xee, 0x7d, 0x91, 0xfa, 0xea, 0xfe, 0xc8, 0xf0, 0x4f, 0x27, 0x27, 0x35, 0xcd, 0x1e,
2147 0xef, 0x8e, 0x6c, 0x93, 0x58, 0xa3, 0xe9, 0xef, 0x60, 0xfc, 0x1f, 0xed, 0xc6, 0x88, 0x5a, 0x37,
2148 0x46, 0x76, 0xec, 0x57, 0xb1, 0x7b, 0xd3, 0x7f, 0xbf, 0x4d, 0x67, 0x0e, 0x7b, 0x07, 0x7f, 0x4e,
2149 0x6f, 0x1d, 0x8a, 0x6f, 0xf5, 0xc2, 0xdc, 0x28, 0x74, 0x68, 0x52, 0x8d, 0xcd, 0xf7, 0x7f, 0x01,
2150 0x00, 0x00, 0xff, 0xff, 0x8e, 0x54, 0xe7, 0xef, 0x60, 0x1b, 0x00, 0x00,
2151 }
625625 }
626626 }
627627 }
628
629628 if pluginList != "" {
630629 // Amend the set of plugins.
631630 enabled := make(map[string]bool)
11801179 g.P("const _ = ", g.Pkg["proto"], ".ProtoPackageIsVersion", generatedCodeVersion, " // please upgrade the proto package")
11811180 g.P()
11821181 }
1183
11841182 for _, td := range g.file.imp {
11851183 g.generateImported(td)
11861184 }
12381236
12391237 // Generate the header, including package definition
12401238 func (g *Generator) generateHeader() {
1241 g.P("// Code generated by protoc-gen-go.")
1239 g.P("// Code generated by protoc-gen-go. DO NOT EDIT.")
12421240 g.P("// source: ", g.file.Name)
1243 g.P("// DO NOT EDIT!")
12441241 g.P()
12451242
12461243 name := g.file.PackageName()
20772074 star = "*"
20782075 }
20792076
2080 // In proto3, only generate getters for message fields and oneof fields.
2081 if message.proto3() && *field.Type != descriptor.FieldDescriptorProto_TYPE_MESSAGE && !oneof {
2082 continue
2083 }
2084
20852077 // Only export getter symbols for basic types,
20862078 // and for messages and enums in the same package.
20872079 // Groups are not exported.
21402132 continue
21412133 }
21422134 if !oneof {
2143 g.P("if m != nil && m." + fname + " != nil {")
2135 if message.proto3() {
2136 g.P("if m != nil {")
2137 } else {
2138 g.P("if m != nil && m." + fname + " != nil {")
2139 }
21442140 g.In()
21452141 g.P("return " + star + "m." + fname)
21462142 g.Out()
25582554 g.P("Field: ", field.Number, ",")
25592555 g.P(`Name: "`, extName, `",`)
25602556 g.P("Tag: ", tag, ",")
2557 g.P(`Filename: "`, g.file.GetName(), `",`)
25612558
25622559 g.Out()
25632560 g.P("}")
4747 // It is incremented whenever an incompatibility between the generated code and
4848 // the grpc package is introduced; the generated code references
4949 // a constant, grpc.SupportPackageIsVersionN (where N is generatedCodeVersion).
50 const generatedCodeVersion = 3
50 const generatedCodeVersion = 4
5151
5252 // Paths for packages used by code generated in this file,
5353 // relative to the import_prefix of the generator.Generator.
253253 g.P("},")
254254 }
255255 g.P("},")
256 g.P("Metadata: ", file.VarName(), ",")
256 g.P("Metadata: \"", file.GetName(), "\",")
257257 g.P("}")
258258 g.P()
259259 }
3232 # at src/google/protobuf/compiler/plugin.proto
3333 # Also we need to fix an import.
3434 regenerate:
35 echo WARNING! THIS RULE IS PROBABLY NOT RIGHT FOR YOUR INSTALLATION
36 protoc --go_out=Mgoogle/protobuf/descriptor.proto=github.com/golang/protobuf/protoc-gen-go/descriptor:. \
37 -I$(HOME)/src/protobuf/src $(HOME)/src/protobuf/src/google/protobuf/compiler/plugin.proto && \
38 mv google/protobuf/compiler/plugin.pb.go $(GOPATH)/src/github.com/golang/protobuf/protoc-gen-go/plugin
35 @echo WARNING! THIS RULE IS PROBABLY NOT RIGHT FOR YOUR INSTALLATION
36 protoc --go_out=Mgoogle/protobuf/descriptor.proto=github.com/golang/protobuf/protoc-gen-go/descriptor:../../../../.. \
37 -I$(HOME)/src/protobuf/include $(HOME)/src/protobuf/include/google/protobuf/compiler/plugin.proto
3938
4039 restore:
4140 cp plugin.pb.golden plugin.pb.go
0 // Code generated by protoc-gen-go.
0 // Code generated by protoc-gen-go. DO NOT EDIT.
11 // source: google/protobuf/compiler/plugin.proto
2 // DO NOT EDIT!
32
43 /*
54 Package plugin_go is a generated protocol buffer package.
87 google/protobuf/compiler/plugin.proto
98
109 It has these top-level messages:
10 Version
1111 CodeGeneratorRequest
1212 CodeGeneratorResponse
1313 */
2828 // A compilation error at this line likely means your copy of the
2929 // proto package needs to be updated.
3030 const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
31
32 // The version number of protocol compiler.
33 type Version struct {
34 Major *int32 `protobuf:"varint,1,opt,name=major" json:"major,omitempty"`
35 Minor *int32 `protobuf:"varint,2,opt,name=minor" json:"minor,omitempty"`
36 Patch *int32 `protobuf:"varint,3,opt,name=patch" json:"patch,omitempty"`
37 // A suffix for alpha, beta or rc release, e.g., "alpha-1", "rc2". It should
38 // be empty for mainline stable releases.
39 Suffix *string `protobuf:"bytes,4,opt,name=suffix" json:"suffix,omitempty"`
40 XXX_unrecognized []byte `json:"-"`
41 }
42
43 func (m *Version) Reset() { *m = Version{} }
44 func (m *Version) String() string { return proto.CompactTextString(m) }
45 func (*Version) ProtoMessage() {}
46 func (*Version) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
47
48 func (m *Version) GetMajor() int32 {
49 if m != nil && m.Major != nil {
50 return *m.Major
51 }
52 return 0
53 }
54
55 func (m *Version) GetMinor() int32 {
56 if m != nil && m.Minor != nil {
57 return *m.Minor
58 }
59 return 0
60 }
61
62 func (m *Version) GetPatch() int32 {
63 if m != nil && m.Patch != nil {
64 return *m.Patch
65 }
66 return 0
67 }
68
69 func (m *Version) GetSuffix() string {
70 if m != nil && m.Suffix != nil {
71 return *m.Suffix
72 }
73 return ""
74 }
3175
3276 // An encoded CodeGeneratorRequest is written to the plugin's stdin.
3377 type CodeGeneratorRequest struct {
4892 // the entire set into memory at once. However, as of this writing, this
4993 // is not similarly optimized on protoc's end -- it will store all fields in
5094 // memory at once before sending them to the plugin.
51 ProtoFile []*google_protobuf.FileDescriptorProto `protobuf:"bytes,15,rep,name=proto_file,json=protoFile" json:"proto_file,omitempty"`
52 XXX_unrecognized []byte `json:"-"`
95 //
96 // Type names of fields and extensions in the FileDescriptorProto are always
97 // fully qualified.
98 ProtoFile []*google_protobuf.FileDescriptorProto `protobuf:"bytes,15,rep,name=proto_file,json=protoFile" json:"proto_file,omitempty"`
99 // The version number of protocol compiler.
100 CompilerVersion *Version `protobuf:"bytes,3,opt,name=compiler_version,json=compilerVersion" json:"compiler_version,omitempty"`
101 XXX_unrecognized []byte `json:"-"`
53102 }
54103
55104 func (m *CodeGeneratorRequest) Reset() { *m = CodeGeneratorRequest{} }
56105 func (m *CodeGeneratorRequest) String() string { return proto.CompactTextString(m) }
57106 func (*CodeGeneratorRequest) ProtoMessage() {}
58 func (*CodeGeneratorRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
107 func (*CodeGeneratorRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
59108
60109 func (m *CodeGeneratorRequest) GetFileToGenerate() []string {
61110 if m != nil {
74123 func (m *CodeGeneratorRequest) GetProtoFile() []*google_protobuf.FileDescriptorProto {
75124 if m != nil {
76125 return m.ProtoFile
126 }
127 return nil
128 }
129
130 func (m *CodeGeneratorRequest) GetCompilerVersion() *Version {
131 if m != nil {
132 return m.CompilerVersion
77133 }
78134 return nil
79135 }
96152 func (m *CodeGeneratorResponse) Reset() { *m = CodeGeneratorResponse{} }
97153 func (m *CodeGeneratorResponse) String() string { return proto.CompactTextString(m) }
98154 func (*CodeGeneratorResponse) ProtoMessage() {}
99 func (*CodeGeneratorResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
155 func (*CodeGeneratorResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
100156
101157 func (m *CodeGeneratorResponse) GetError() string {
102158 if m != nil && m.Error != nil {
172228 func (m *CodeGeneratorResponse_File) Reset() { *m = CodeGeneratorResponse_File{} }
173229 func (m *CodeGeneratorResponse_File) String() string { return proto.CompactTextString(m) }
174230 func (*CodeGeneratorResponse_File) ProtoMessage() {}
175 func (*CodeGeneratorResponse_File) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1, 0} }
231 func (*CodeGeneratorResponse_File) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2, 0} }
176232
177233 func (m *CodeGeneratorResponse_File) GetName() string {
178234 if m != nil && m.Name != nil {
196252 }
197253
198254 func init() {
255 proto.RegisterType((*Version)(nil), "google.protobuf.compiler.Version")
199256 proto.RegisterType((*CodeGeneratorRequest)(nil), "google.protobuf.compiler.CodeGeneratorRequest")
200257 proto.RegisterType((*CodeGeneratorResponse)(nil), "google.protobuf.compiler.CodeGeneratorResponse")
201258 proto.RegisterType((*CodeGeneratorResponse_File)(nil), "google.protobuf.compiler.CodeGeneratorResponse.File")
204261 func init() { proto.RegisterFile("google/protobuf/compiler/plugin.proto", fileDescriptor0) }
205262
206263 var fileDescriptor0 = []byte{
207 // 310 bytes of a gzipped FileDescriptorProto
208 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x74, 0x51, 0xc1, 0x4a, 0xc3, 0x40,
209 0x10, 0x25, 0xb6, 0x22, 0x19, 0xa5, 0x95, 0xa5, 0xc2, 0x52, 0x7a, 0x08, 0x45, 0x31, 0xa7, 0x14,
210 0x44, 0xf0, 0xde, 0x8a, 0x7a, 0x2c, 0xc1, 0x93, 0x20, 0x21, 0xa6, 0xd3, 0xb0, 0x90, 0xec, 0xac,
211 0xb3, 0xdb, 0x2f, 0xf2, 0x9f, 0xfc, 0x1e, 0xd9, 0x4d, 0x5b, 0xa5, 0xd8, 0xdb, 0xce, 0x7b, 0x6f,
212 0xe6, 0xbd, 0x9d, 0x81, 0x9b, 0x9a, 0xa8, 0x6e, 0x70, 0x66, 0x98, 0x1c, 0x7d, 0x6c, 0xd6, 0xb3,
213 0x8a, 0x5a, 0xa3, 0x1a, 0xe4, 0x99, 0x69, 0x36, 0xb5, 0xd2, 0x59, 0x20, 0x84, 0xec, 0x64, 0xd9,
214 0x4e, 0x96, 0xed, 0x64, 0xe3, 0xe4, 0x70, 0xc0, 0x0a, 0x6d, 0xc5, 0xca, 0x38, 0xe2, 0x4e, 0x3d,
215 0xfd, 0x8a, 0x60, 0xb4, 0xa0, 0x15, 0x3e, 0xa3, 0x46, 0x2e, 0x1d, 0x71, 0x8e, 0x9f, 0x1b, 0xb4,
216 0x4e, 0xa4, 0x70, 0xb9, 0x56, 0x0d, 0x16, 0x8e, 0x8a, 0xba, 0xe3, 0x50, 0x46, 0x49, 0x2f, 0x8d,
217 0xf3, 0x81, 0xc7, 0x5f, 0x69, 0xdb, 0x81, 0x62, 0x02, 0xb1, 0x29, 0xb9, 0x6c, 0xd1, 0x21, 0xcb,
218 0x93, 0x24, 0x4a, 0xe3, 0xfc, 0x17, 0x10, 0x0b, 0x80, 0xe0, 0x54, 0xf8, 0x2e, 0x39, 0x4c, 0x7a,
219 0xe9, 0xf9, 0xdd, 0x75, 0x76, 0x98, 0xf8, 0x49, 0x35, 0xf8, 0xb8, 0xcf, 0xb6, 0xf4, 0x70, 0x1e,
220 0x07, 0xd6, 0x33, 0xd3, 0xef, 0x08, 0xae, 0x0e, 0x52, 0x5a, 0x43, 0xda, 0xa2, 0x18, 0xc1, 0x29,
221 0x32, 0x13, 0xcb, 0x28, 0x18, 0x77, 0x85, 0x78, 0x81, 0xfe, 0x1f, 0xbb, 0xfb, 0xec, 0xd8, 0x82,
222 0xb2, 0x7f, 0x87, 0x86, 0x34, 0x79, 0x98, 0x30, 0x7e, 0x87, 0xbe, 0xaf, 0x84, 0x80, 0xbe, 0x2e,
223 0x5b, 0xdc, 0xda, 0x84, 0xb7, 0xb8, 0x85, 0xa1, 0xd2, 0x16, 0xd9, 0x29, 0xd2, 0x85, 0x21, 0xa5,
224 0xdd, 0xf6, 0xfb, 0x83, 0x3d, 0xbc, 0xf4, 0xa8, 0x90, 0x70, 0x56, 0x91, 0x76, 0xa8, 0x9d, 0x1c,
225 0x06, 0xc1, 0xae, 0x9c, 0x3f, 0xc0, 0xa4, 0xa2, 0xf6, 0x68, 0xbe, 0xf9, 0xc5, 0x32, 0x1c, 0x3a,
226 0x2c, 0xc4, 0xbe, 0xc5, 0xdd, 0xd9, 0x8b, 0x9a, 0x7e, 0x02, 0x00, 0x00, 0xff, 0xff, 0x83, 0x7b,
227 0x5c, 0x7c, 0x1b, 0x02, 0x00, 0x00,
228 }
264 // 417 bytes of a gzipped FileDescriptorProto
265 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0xcf, 0x6a, 0x14, 0x41,
266 0x10, 0xc6, 0x19, 0x77, 0x63, 0x98, 0x8a, 0x64, 0x43, 0x13, 0xa5, 0x09, 0x39, 0x8c, 0x8b, 0xe2,
267 0x5c, 0x32, 0x0b, 0xc1, 0x8b, 0x78, 0x4b, 0x44, 0x3d, 0x78, 0x58, 0x1a, 0xf1, 0x20, 0xc8, 0x30,
268 0x99, 0xd4, 0x74, 0x5a, 0x66, 0xba, 0xc6, 0xee, 0x1e, 0xf1, 0x49, 0x7d, 0x0f, 0xdf, 0x40, 0xfa,
269 0xcf, 0x24, 0xb2, 0xb8, 0xa7, 0xee, 0xef, 0x57, 0xd5, 0xd5, 0x55, 0x1f, 0x05, 0x2f, 0x25, 0x91,
270 0xec, 0x71, 0x33, 0x1a, 0x72, 0x74, 0x33, 0x75, 0x9b, 0x96, 0x86, 0x51, 0xf5, 0x68, 0x36, 0x63,
271 0x3f, 0x49, 0xa5, 0xab, 0x10, 0x60, 0x3c, 0xa6, 0x55, 0x73, 0x5a, 0x35, 0xa7, 0x9d, 0x15, 0xbb,
272 0x05, 0x6e, 0xd1, 0xb6, 0x46, 0x8d, 0x8e, 0x4c, 0xcc, 0x5e, 0xb7, 0x70, 0xf8, 0x05, 0x8d, 0x55,
273 0xa4, 0xd9, 0x29, 0x1c, 0x0c, 0xcd, 0x77, 0x32, 0x3c, 0x2b, 0xb2, 0xf2, 0x40, 0x44, 0x11, 0xa8,
274 0xd2, 0x64, 0xf8, 0xa3, 0x44, 0xbd, 0xf0, 0x74, 0x6c, 0x5c, 0x7b, 0xc7, 0x17, 0x91, 0x06, 0xc1,
275 0x9e, 0xc1, 0x63, 0x3b, 0x75, 0x9d, 0xfa, 0xc5, 0x97, 0x45, 0x56, 0xe6, 0x22, 0xa9, 0xf5, 0x9f,
276 0x0c, 0x4e, 0xaf, 0xe9, 0x16, 0x3f, 0xa0, 0x46, 0xd3, 0x38, 0x32, 0x02, 0x7f, 0x4c, 0x68, 0x1d,
277 0x2b, 0xe1, 0xa4, 0x53, 0x3d, 0xd6, 0x8e, 0x6a, 0x19, 0x63, 0xc8, 0xb3, 0x62, 0x51, 0xe6, 0xe2,
278 0xd8, 0xf3, 0xcf, 0x94, 0x5e, 0x20, 0x3b, 0x87, 0x7c, 0x6c, 0x4c, 0x33, 0xa0, 0xc3, 0xd8, 0x4a,
279 0x2e, 0x1e, 0x00, 0xbb, 0x06, 0x08, 0xe3, 0xd4, 0xfe, 0x15, 0x5f, 0x15, 0x8b, 0xf2, 0xe8, 0xf2,
280 0x45, 0xb5, 0x6b, 0xcb, 0x7b, 0xd5, 0xe3, 0xbb, 0x7b, 0x03, 0xb6, 0x1e, 0x8b, 0x3c, 0x44, 0x7d,
281 0x84, 0x7d, 0x82, 0x93, 0xd9, 0xb8, 0xfa, 0x67, 0xf4, 0x24, 0x8c, 0x77, 0x74, 0xf9, 0xbc, 0xda,
282 0xe7, 0x70, 0x95, 0xcc, 0x13, 0xab, 0x99, 0x24, 0xb0, 0xfe, 0x9d, 0xc1, 0xd3, 0x9d, 0x99, 0xed,
283 0x48, 0xda, 0xa2, 0xf7, 0x0e, 0x8d, 0x49, 0x3e, 0xe7, 0x22, 0x0a, 0xf6, 0x11, 0x96, 0xff, 0x34,
284 0xff, 0x7a, 0xff, 0x8f, 0xff, 0x2d, 0x1a, 0x66, 0x13, 0xa1, 0xc2, 0xd9, 0x37, 0x58, 0x86, 0x79,
285 0x18, 0x2c, 0x75, 0x33, 0x60, 0xfa, 0x26, 0xdc, 0xd9, 0x2b, 0x58, 0x29, 0x6d, 0xd1, 0x38, 0x45,
286 0xba, 0x1e, 0x49, 0x69, 0x97, 0xcc, 0x3c, 0xbe, 0xc7, 0x5b, 0x4f, 0x19, 0x87, 0xc3, 0x96, 0xb4,
287 0x43, 0xed, 0xf8, 0x2a, 0x24, 0xcc, 0xf2, 0x4a, 0xc2, 0x79, 0x4b, 0xc3, 0xde, 0xfe, 0xae, 0x9e,
288 0x6c, 0xc3, 0x6e, 0x06, 0x7b, 0xed, 0xd7, 0x37, 0x52, 0xb9, 0xbb, 0xe9, 0xc6, 0x87, 0x37, 0x92,
289 0xfa, 0x46, 0xcb, 0x87, 0x65, 0x0c, 0x97, 0xf6, 0x42, 0xa2, 0xbe, 0x90, 0x94, 0x56, 0xfa, 0x6d,
290 0x3c, 0x6a, 0x49, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xf7, 0x15, 0x40, 0xc5, 0xfe, 0x02, 0x00,
291 0x00,
292 }
4444
4545 golden:
4646 make -B my_test/test.pb.go
47 sed -i '/return.*fileDescriptor/d' my_test/test.pb.go
48 sed -i '/^var fileDescriptor/,/^}/d' my_test/test.pb.go
49 sed -i '/proto.RegisterFile.*fileDescriptor/d' my_test/test.pb.go
47 sed -i -e '/return.*fileDescriptor/d' my_test/test.pb.go
48 sed -i -e '/^var fileDescriptor/,/^}/d' my_test/test.pb.go
49 sed -i -e '/proto.RegisterFile.*fileDescriptor/d' my_test/test.pb.go
5050 gofmt -w my_test/test.pb.go
5151 diff -w my_test/test.pb.go my_test/test.pb.go.golden
5252
5757
5858 regenerate:
5959 # Invoke protoc once to generate three independent .pb.go files in the same package.
60 protoc --go_out=. multi/multi{1,2,3}.proto
60 protoc --go_out=. multi/multi1.proto multi/multi2.proto multi/multi3.proto
6161
6262 #extension_test: extension_test.$O
6363 # $(LD) -L. -o $@ $<
0 // Code generated by protoc-gen-go.
0 // Code generated by protoc-gen-go. DO NOT EDIT.
11 // source: my_test/test.proto
2 // DO NOT EDIT!
32
43 /*
54 Package my_test is a generated protocol buffer package.
318317 type Reply_Entry struct {
319318 KeyThatNeeds_1234Camel_CasIng *int64 `protobuf:"varint,1,req,name=key_that_needs_1234camel_CasIng,json=keyThatNeeds1234camelCasIng" json:"key_that_needs_1234camel_CasIng,omitempty"`
320319 Value *int64 `protobuf:"varint,2,opt,name=value,def=7" json:"value,omitempty"`
321 XMyFieldName_2 *int64 `protobuf:"varint,3,opt,name=_my_field_name_2,json=myFieldName2" json:"_my_field_name_2,omitempty"`
320 XMyFieldName_2 *int64 `protobuf:"varint,3,opt,name=_my_field_name_2,json=MyFieldName2" json:"_my_field_name_2,omitempty"`
322321 XXX_unrecognized []byte `json:"-"`
323322 }
324323
388387 Field: 101,
389388 Name: "my.test.ReplyExtensions.time",
390389 Tag: "fixed64,101,opt,name=time",
390 Filename: "my_test/test.proto",
391391 }
392392
393393 var E_ReplyExtensions_Carrot = &proto.ExtensionDesc{
396396 Field: 105,
397397 Name: "my.test.ReplyExtensions.carrot",
398398 Tag: "bytes,105,opt,name=carrot",
399 Filename: "my_test/test.proto",
399400 }
400401
401402 var E_ReplyExtensions_Donut = &proto.ExtensionDesc{
404405 Field: 101,
405406 Name: "my.test.ReplyExtensions.donut",
406407 Tag: "bytes,101,opt,name=donut",
408 Filename: "my_test/test.proto",
407409 }
408410
409411 type OtherReplyExtensions struct {
831833 Field: 103,
832834 Name: "my.test.tag",
833835 Tag: "bytes,103,opt,name=tag",
836 Filename: "my_test/test.proto",
834837 }
835838
836839 var E_Donut = &proto.ExtensionDesc{
839842 Field: 106,
840843 Name: "my.test.donut",
841844 Tag: "bytes,106,opt,name=donut",
845 Filename: "my_test/test.proto",
842846 }
843847
844848 func init() {
0 // Code generated by protoc-gen-go.
0 // Code generated by protoc-gen-go. DO NOT EDIT.
11 // source: my_test/test.proto
2 // DO NOT EDIT!
32
43 /*
54 Package my_test is a generated protocol buffer package.
318317 type Reply_Entry struct {
319318 KeyThatNeeds_1234Camel_CasIng *int64 `protobuf:"varint,1,req,name=key_that_needs_1234camel_CasIng,json=keyThatNeeds1234camelCasIng" json:"key_that_needs_1234camel_CasIng,omitempty"`
320319 Value *int64 `protobuf:"varint,2,opt,name=value,def=7" json:"value,omitempty"`
321 XMyFieldName_2 *int64 `protobuf:"varint,3,opt,name=_my_field_name_2,json=myFieldName2" json:"_my_field_name_2,omitempty"`
320 XMyFieldName_2 *int64 `protobuf:"varint,3,opt,name=_my_field_name_2,json=MyFieldName2" json:"_my_field_name_2,omitempty"`
322321 XXX_unrecognized []byte `json:"-"`
323322 }
324323
388387 Field: 101,
389388 Name: "my.test.ReplyExtensions.time",
390389 Tag: "fixed64,101,opt,name=time",
390 Filename: "my_test/test.proto",
391391 }
392392
393393 var E_ReplyExtensions_Carrot = &proto.ExtensionDesc{
396396 Field: 105,
397397 Name: "my.test.ReplyExtensions.carrot",
398398 Tag: "bytes,105,opt,name=carrot",
399 Filename: "my_test/test.proto",
399400 }
400401
401402 var E_ReplyExtensions_Donut = &proto.ExtensionDesc{
404405 Field: 101,
405406 Name: "my.test.ReplyExtensions.donut",
406407 Tag: "bytes,101,opt,name=donut",
408 Filename: "my_test/test.proto",
407409 }
408410
409411 type OtherReplyExtensions struct {
831833 Field: 103,
832834 Name: "my.test.tag",
833835 Tag: "bytes,103,opt,name=tag",
836 Filename: "my_test/test.proto",
834837 }
835838
836839 var E_Donut = &proto.ExtensionDesc{
839842 Field: 106,
840843 Name: "my.test.donut",
841844 Tag: "bytes,106,opt,name=donut",
845 Filename: "my_test/test.proto",
842846 }
843847
844848 func init() {
0 // Code generated by protoc-gen-go.
0 // Code generated by protoc-gen-go. DO NOT EDIT.
11 // source: github.com/golang/protobuf/ptypes/any/any.proto
2 // DO NOT EDIT!
32
43 /*
54 Package any is a generated protocol buffer package.
131130 func (*Any) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
132131 func (*Any) XXX_WellKnownType() string { return "Any" }
133132
133 func (m *Any) GetTypeUrl() string {
134 if m != nil {
135 return m.TypeUrl
136 }
137 return ""
138 }
139
140 func (m *Any) GetValue() []byte {
141 if m != nil {
142 return m.Value
143 }
144 return nil
145 }
146
134147 func init() {
135148 proto.RegisterType((*Any)(nil), "google.protobuf.Any")
136149 }
138151 func init() { proto.RegisterFile("github.com/golang/protobuf/ptypes/any/any.proto", fileDescriptor0) }
139152
140153 var fileDescriptor0 = []byte{
141 // 187 bytes of a gzipped FileDescriptorProto
142 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xd2, 0x4f, 0xcf, 0x2c, 0xc9,
154 // 184 bytes of a gzipped FileDescriptorProto
155 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xd2, 0x4f, 0xcf, 0x2c, 0xc9,
143156 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0xd7, 0x2f, 0x28,
144157 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x28, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x4f, 0xcc,
145158 0xab, 0x04, 0x61, 0x3d, 0xb0, 0xb8, 0x10, 0x7f, 0x7a, 0x7e, 0x7e, 0x7a, 0x4e, 0xaa, 0x1e, 0x4c,
146159 0x95, 0x92, 0x19, 0x17, 0xb3, 0x63, 0x5e, 0xa5, 0x90, 0x24, 0x17, 0x07, 0x48, 0x79, 0x7c, 0x69,
147160 0x51, 0x8e, 0x04, 0xa3, 0x02, 0xa3, 0x06, 0x67, 0x10, 0x3b, 0x88, 0x1f, 0x5a, 0x94, 0x23, 0x24,
148161 0xc2, 0xc5, 0x5a, 0x96, 0x98, 0x53, 0x9a, 0x2a, 0xc1, 0xa4, 0xc0, 0xa8, 0xc1, 0x13, 0x04, 0xe1,
149 0x38, 0x15, 0x71, 0x09, 0x27, 0xe7, 0xe7, 0xea, 0xa1, 0x19, 0xe7, 0xc4, 0xe1, 0x98, 0x57, 0x19,
150 0x00, 0xe2, 0x04, 0x30, 0x46, 0xa9, 0x12, 0xe5, 0xb8, 0x05, 0x8c, 0x8c, 0x8b, 0x98, 0x98, 0xdd,
151 0x03, 0x9c, 0x56, 0x31, 0xc9, 0xb9, 0x43, 0x4c, 0x0b, 0x80, 0xaa, 0xd2, 0x0b, 0x4f, 0xcd, 0xc9,
152 0xf1, 0xce, 0xcb, 0x2f, 0xcf, 0x0b, 0x01, 0xa9, 0x4e, 0x62, 0x03, 0x6b, 0x37, 0x06, 0x04, 0x00,
153 0x00, 0xff, 0xff, 0xc6, 0x4d, 0x03, 0x23, 0xf6, 0x00, 0x00, 0x00,
162 0x38, 0xe5, 0x73, 0x09, 0x27, 0xe7, 0xe7, 0xea, 0xa1, 0x19, 0xe7, 0xc4, 0xe1, 0x98, 0x57, 0x19,
163 0x00, 0xe2, 0x04, 0x30, 0x46, 0xa9, 0x12, 0xe5, 0xb8, 0x45, 0x4c, 0xcc, 0xee, 0x01, 0x4e, 0xab,
164 0x98, 0xe4, 0xdc, 0x21, 0x46, 0x05, 0x40, 0x95, 0xe8, 0x85, 0xa7, 0xe6, 0xe4, 0x78, 0xe7, 0xe5,
165 0x97, 0xe7, 0x85, 0x80, 0x94, 0x26, 0xb1, 0x81, 0xf5, 0x1a, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff,
166 0x45, 0x1f, 0x1a, 0xf2, 0xf3, 0x00, 0x00, 0x00,
154167 }
3636 option java_package = "com.google.protobuf";
3737 option java_outer_classname = "AnyProto";
3838 option java_multiple_files = true;
39 option java_generate_equals_and_hash = true;
4039 option objc_class_prefix = "GPB";
4140
4241 // `Any` contains an arbitrary serialized protocol buffer message along with a
5050 // function. AnyMessageName is provided for less common use cases like filtering a
5151 // sequence of Any messages based on a set of allowed message type names.
5252 func AnyMessageName(any *any.Any) (string, error) {
53 if any == nil {
54 return "", fmt.Errorf("message is nil")
55 }
5356 slash := strings.LastIndex(any.TypeUrl, "/")
5457 if slash < 0 {
5558 return "", fmt.Errorf("message type url %q is invalid", any.TypeUrl)
0 // Code generated by protoc-gen-go.
0 // Code generated by protoc-gen-go. DO NOT EDIT.
11 // source: github.com/golang/protobuf/ptypes/duration/duration.proto
2 // DO NOT EDIT!
32
43 /*
54 Package duration is a generated protocol buffer package.
3332 // or "month". It is related to Timestamp in that the difference between
3433 // two Timestamp values is a Duration and it can be added or subtracted
3534 // from a Timestamp. Range is approximately +-10,000 years.
35 //
36 // # Examples
3637 //
3738 // Example 1: Compute Duration from two Timestamps in pseudo code.
3839 //
6869 // end.nanos -= 1000000000;
6970 // }
7071 //
72 // Example 3: Compute Duration from datetime.timedelta in Python.
73 //
74 // td = datetime.timedelta(days=3, minutes=10)
75 // duration = Duration()
76 // duration.FromTimedelta(td)
77 //
78 // # JSON Mapping
79 //
80 // In JSON format, the Duration type is encoded as a string rather than an
81 // object, where the string ends in the suffix "s" (indicating seconds) and
82 // is preceded by the number of seconds, with nanoseconds expressed as
83 // fractional seconds. For example, 3 seconds with 0 nanoseconds should be
84 // encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should
85 // be expressed in JSON format as "3.000000001s", and 3 seconds and 1
86 // microsecond should be expressed in JSON format as "3.000001s".
87 //
7188 //
7289 type Duration struct {
7390 // Signed seconds of the span of time. Must be from -315,576,000,000
74 // to +315,576,000,000 inclusive.
91 // to +315,576,000,000 inclusive. Note: these bounds are computed from:
92 // 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
7593 Seconds int64 `protobuf:"varint,1,opt,name=seconds" json:"seconds,omitempty"`
7694 // Signed fractions of a second at nanosecond resolution of the span
7795 // of time. Durations less than one second are represented with a 0
88106 func (*Duration) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
89107 func (*Duration) XXX_WellKnownType() string { return "Duration" }
90108
109 func (m *Duration) GetSeconds() int64 {
110 if m != nil {
111 return m.Seconds
112 }
113 return 0
114 }
115
116 func (m *Duration) GetNanos() int32 {
117 if m != nil {
118 return m.Nanos
119 }
120 return 0
121 }
122
91123 func init() {
92124 proto.RegisterType((*Duration)(nil), "google.protobuf.Duration")
93125 }
98130
99131 var fileDescriptor0 = []byte{
100132 // 189 bytes of a gzipped FileDescriptorProto
101 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xb2, 0x4c, 0xcf, 0x2c, 0xc9,
133 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xb2, 0x4c, 0xcf, 0x2c, 0xc9,
102134 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0xd7, 0x2f, 0x28,
103135 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x28, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x4f, 0x29,
104136 0x2d, 0x4a, 0x2c, 0xc9, 0xcc, 0xcf, 0x83, 0x33, 0xf4, 0xc0, 0x2a, 0x84, 0xf8, 0xd3, 0xf3, 0xf3,
106138 0xd8, 0x8b, 0x53, 0x93, 0xf3, 0xf3, 0x52, 0x8a, 0x25, 0x18, 0x15, 0x18, 0x35, 0x98, 0x83, 0x60,
107139 0x5c, 0x21, 0x11, 0x2e, 0xd6, 0xbc, 0xc4, 0xbc, 0xfc, 0x62, 0x09, 0x26, 0x05, 0x46, 0x0d, 0xd6,
108140 0x20, 0x08, 0xc7, 0xa9, 0x86, 0x4b, 0x38, 0x39, 0x3f, 0x57, 0x0f, 0xcd, 0x48, 0x27, 0x5e, 0x98,
109 0x81, 0x01, 0x20, 0x91, 0x00, 0xc6, 0x28, 0x2d, 0xe2, 0xdd, 0xbb, 0x80, 0x91, 0x71, 0x11, 0x13,
141 0x81, 0x01, 0x20, 0x91, 0x00, 0xc6, 0x28, 0x2d, 0xe2, 0xdd, 0xfb, 0x83, 0x91, 0x71, 0x11, 0x13,
110142 0xb3, 0x7b, 0x80, 0xd3, 0x2a, 0x26, 0x39, 0x77, 0x88, 0xb9, 0x01, 0x50, 0xa5, 0x7a, 0xe1, 0xa9,
111143 0x39, 0x39, 0xde, 0x79, 0xf9, 0xe5, 0x79, 0x21, 0x20, 0x2d, 0x49, 0x6c, 0x60, 0x33, 0x8c, 0x01,
112 0x01, 0x00, 0x00, 0xff, 0xff, 0x62, 0xfb, 0xb1, 0x51, 0x0e, 0x01, 0x00, 0x00,
144 0x01, 0x00, 0x00, 0xff, 0xff, 0x45, 0x5a, 0x81, 0x3d, 0x0e, 0x01, 0x00, 0x00,
113145 }
3232 package google.protobuf;
3333
3434 option csharp_namespace = "Google.Protobuf.WellKnownTypes";
35 option cc_enable_arenas = true;
3536 option go_package = "github.com/golang/protobuf/ptypes/duration";
3637 option java_package = "com.google.protobuf";
3738 option java_outer_classname = "DurationProto";
3839 option java_multiple_files = true;
39 option java_generate_equals_and_hash = true;
4040 option objc_class_prefix = "GPB";
4141
4242 // A Duration represents a signed, fixed-length span of time represented
4545 // or "month". It is related to Timestamp in that the difference between
4646 // two Timestamp values is a Duration and it can be added or subtracted
4747 // from a Timestamp. Range is approximately +-10,000 years.
48 //
49 // # Examples
4850 //
4951 // Example 1: Compute Duration from two Timestamps in pseudo code.
5052 //
8082 // end.nanos -= 1000000000;
8183 // }
8284 //
85 // Example 3: Compute Duration from datetime.timedelta in Python.
86 //
87 // td = datetime.timedelta(days=3, minutes=10)
88 // duration = Duration()
89 // duration.FromTimedelta(td)
90 //
91 // # JSON Mapping
92 //
93 // In JSON format, the Duration type is encoded as a string rather than an
94 // object, where the string ends in the suffix "s" (indicating seconds) and
95 // is preceded by the number of seconds, with nanoseconds expressed as
96 // fractional seconds. For example, 3 seconds with 0 nanoseconds should be
97 // encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should
98 // be expressed in JSON format as "3.000000001s", and 3 seconds and 1
99 // microsecond should be expressed in JSON format as "3.000001s".
100 //
83101 //
84102 message Duration {
85103
86104 // Signed seconds of the span of time. Must be from -315,576,000,000
87 // to +315,576,000,000 inclusive.
105 // to +315,576,000,000 inclusive. Note: these bounds are computed from:
106 // 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
88107 int64 seconds = 1;
89108
90109 // Signed fractions of a second at nanosecond resolution of the span
5151 dur time.Duration
5252 }{
5353 // The zero duration.
54 {&durpb.Duration{0, 0}, true, true, 0},
54 {&durpb.Duration{Seconds: 0, Nanos: 0}, true, true, 0},
5555 // Some ordinary non-zero durations.
56 {&durpb.Duration{100, 0}, true, true, 100 * time.Second},
57 {&durpb.Duration{-100, 0}, true, true, -100 * time.Second},
58 {&durpb.Duration{100, 987}, true, true, 100*time.Second + 987},
59 {&durpb.Duration{-100, -987}, true, true, -(100*time.Second + 987)},
56 {&durpb.Duration{Seconds: 100, Nanos: 0}, true, true, 100 * time.Second},
57 {&durpb.Duration{Seconds: -100, Nanos: 0}, true, true, -100 * time.Second},
58 {&durpb.Duration{Seconds: 100, Nanos: 987}, true, true, 100*time.Second + 987},
59 {&durpb.Duration{Seconds: -100, Nanos: -987}, true, true, -(100*time.Second + 987)},
6060 // The largest duration representable in Go.
61 {&durpb.Duration{maxGoSeconds, int32(math.MaxInt64 - 1e9*maxGoSeconds)}, true, true, math.MaxInt64},
61 {&durpb.Duration{Seconds: maxGoSeconds, Nanos: int32(math.MaxInt64 - 1e9*maxGoSeconds)}, true, true, math.MaxInt64},
6262 // The smallest duration representable in Go.
63 {&durpb.Duration{minGoSeconds, int32(math.MinInt64 - 1e9*minGoSeconds)}, true, true, math.MinInt64},
63 {&durpb.Duration{Seconds: minGoSeconds, Nanos: int32(math.MinInt64 - 1e9*minGoSeconds)}, true, true, math.MinInt64},
6464 {nil, false, false, 0},
65 {&durpb.Duration{-100, 987}, false, false, 0},
66 {&durpb.Duration{100, -987}, false, false, 0},
67 {&durpb.Duration{math.MinInt64, 0}, false, false, 0},
68 {&durpb.Duration{math.MaxInt64, 0}, false, false, 0},
65 {&durpb.Duration{Seconds: -100, Nanos: 987}, false, false, 0},
66 {&durpb.Duration{Seconds: 100, Nanos: -987}, false, false, 0},
67 {&durpb.Duration{Seconds: math.MinInt64, Nanos: 0}, false, false, 0},
68 {&durpb.Duration{Seconds: math.MaxInt64, Nanos: 0}, false, false, 0},
6969 // The largest valid duration.
70 {&durpb.Duration{maxSeconds, 1e9 - 1}, true, false, 0},
70 {&durpb.Duration{Seconds: maxSeconds, Nanos: 1e9 - 1}, true, false, 0},
7171 // The smallest valid duration.
72 {&durpb.Duration{minSeconds, -(1e9 - 1)}, true, false, 0},
72 {&durpb.Duration{Seconds: minSeconds, Nanos: -(1e9 - 1)}, true, false, 0},
7373 // The smallest invalid duration above the valid range.
74 {&durpb.Duration{maxSeconds + 1, 0}, false, false, 0},
74 {&durpb.Duration{Seconds: maxSeconds + 1, Nanos: 0}, false, false, 0},
7575 // The largest invalid duration below the valid range.
76 {&durpb.Duration{minSeconds - 1, -(1e9 - 1)}, false, false, 0},
76 {&durpb.Duration{Seconds: minSeconds - 1, Nanos: -(1e9 - 1)}, false, false, 0},
7777 // One nanosecond past the largest duration representable in Go.
78 {&durpb.Duration{maxGoSeconds, int32(math.MaxInt64-1e9*maxGoSeconds) + 1}, true, false, 0},
78 {&durpb.Duration{Seconds: maxGoSeconds, Nanos: int32(math.MaxInt64-1e9*maxGoSeconds) + 1}, true, false, 0},
7979 // One nanosecond past the smallest duration representable in Go.
80 {&durpb.Duration{minGoSeconds, int32(math.MinInt64-1e9*minGoSeconds) - 1}, true, false, 0},
80 {&durpb.Duration{Seconds: minGoSeconds, Nanos: int32(math.MinInt64-1e9*minGoSeconds) - 1}, true, false, 0},
8181 // One second past the largest duration representable in Go.
82 {&durpb.Duration{maxGoSeconds + 1, int32(math.MaxInt64 - 1e9*maxGoSeconds)}, true, false, 0},
82 {&durpb.Duration{Seconds: maxGoSeconds + 1, Nanos: int32(math.MaxInt64 - 1e9*maxGoSeconds)}, true, false, 0},
8383 // One second past the smallest duration representable in Go.
84 {&durpb.Duration{minGoSeconds - 1, int32(math.MinInt64 - 1e9*minGoSeconds)}, true, false, 0},
84 {&durpb.Duration{Seconds: minGoSeconds - 1, Nanos: int32(math.MinInt64 - 1e9*minGoSeconds)}, true, false, 0},
8585 }
8686
8787 func TestValidateDuration(t *testing.T) {
0 // Code generated by protoc-gen-go.
0 // Code generated by protoc-gen-go. DO NOT EDIT.
11 // source: github.com/golang/protobuf/ptypes/empty/empty.proto
2 // DO NOT EDIT!
32
43 /*
54 Package empty is a generated protocol buffer package.
5453 }
5554
5655 var fileDescriptor0 = []byte{
57 // 150 bytes of a gzipped FileDescriptorProto
58 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0x32, 0x4e, 0xcf, 0x2c, 0xc9,
56 // 147 bytes of a gzipped FileDescriptorProto
57 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x32, 0x4e, 0xcf, 0x2c, 0xc9,
5958 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0xd7, 0x2f, 0x28,
6059 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x28, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x4f, 0xcd,
6160 0x2d, 0x28, 0xa9, 0x84, 0x90, 0x7a, 0x60, 0x39, 0x21, 0xfe, 0xf4, 0xfc, 0xfc, 0xf4, 0x9c, 0x54,
62 0x3d, 0x98, 0x4a, 0x25, 0x76, 0x2e, 0x56, 0x57, 0x90, 0xbc, 0x53, 0x25, 0x97, 0x70, 0x72, 0x7e,
61 0x3d, 0x98, 0x4a, 0x25, 0x76, 0x2e, 0x56, 0x57, 0x90, 0xbc, 0x53, 0x19, 0x97, 0x70, 0x72, 0x7e,
6362 0xae, 0x1e, 0x9a, 0xbc, 0x13, 0x17, 0x58, 0x36, 0x00, 0xc4, 0x0d, 0x60, 0x8c, 0x52, 0x27, 0xd2,
64 0xce, 0x05, 0x8c, 0x8c, 0x3f, 0x18, 0x19, 0x17, 0x31, 0x31, 0xbb, 0x07, 0x38, 0xad, 0x62, 0x92,
65 0x73, 0x87, 0x18, 0x1a, 0x00, 0x55, 0xaa, 0x17, 0x9e, 0x9a, 0x93, 0xe3, 0x9d, 0x97, 0x5f, 0x9e,
66 0x17, 0x02, 0xd2, 0x92, 0xc4, 0x06, 0x36, 0xc3, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x7f, 0xbb,
67 0xf4, 0x0e, 0xd2, 0x00, 0x00, 0x00,
63 0xce, 0x1f, 0x8c, 0x8c, 0x8b, 0x98, 0x98, 0xdd, 0x03, 0x9c, 0x56, 0x31, 0xc9, 0xb9, 0x43, 0x4c,
64 0x0c, 0x80, 0xaa, 0xd3, 0x0b, 0x4f, 0xcd, 0xc9, 0xf1, 0xce, 0xcb, 0x2f, 0xcf, 0x0b, 0x01, 0xa9,
65 0x4f, 0x62, 0x03, 0x1b, 0x60, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x6e, 0x8e, 0x0a, 0x06, 0xcf,
66 0x00, 0x00, 0x00,
6867 }
3636 option java_package = "com.google.protobuf";
3737 option java_outer_classname = "EmptyProto";
3838 option java_multiple_files = true;
39 option java_generate_equals_and_hash = true;
4039 option objc_class_prefix = "GPB";
4140 option cc_enable_arenas = true;
4241
0 // Code generated by protoc-gen-go.
0 // Code generated by protoc-gen-go. DO NOT EDIT.
11 // source: github.com/golang/protobuf/ptypes/struct/struct.proto
2 // DO NOT EDIT!
32
43 /*
54 Package structpb is a generated protocol buffer package.
351350 }
352351
353352 var fileDescriptor0 = []byte{
354 // 416 bytes of a gzipped FileDescriptorProto
355 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x8c, 0x92, 0x41, 0x8b, 0xd3, 0x40,
353 // 417 bytes of a gzipped FileDescriptorProto
354 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0x41, 0x8b, 0xd3, 0x40,
356355 0x14, 0x80, 0x3b, 0xc9, 0x36, 0x98, 0x17, 0x59, 0x97, 0x11, 0xb4, 0xac, 0xa0, 0xa1, 0x7b, 0x09,
357356 0x22, 0x09, 0x56, 0x04, 0x31, 0x5e, 0x0c, 0xac, 0xbb, 0x60, 0x58, 0x62, 0x74, 0x57, 0xf0, 0x52,
358 0x9a, 0x34, 0x8d, 0xa1, 0xd3, 0x99, 0x90, 0xcc, 0x28, 0x3d, 0xfa, 0x2f, 0x3c, 0x8a, 0x47, 0x8f,
359 0xfe, 0x42, 0x99, 0x99, 0x24, 0x4a, 0x4b, 0xc1, 0xd3, 0xf4, 0xbd, 0xf9, 0xde, 0x37, 0xef, 0xbd,
360 0x06, 0x9e, 0x97, 0x15, 0xff, 0x2c, 0x32, 0x3f, 0x67, 0x9b, 0xa0, 0x64, 0x64, 0x41, 0xcb, 0xa0,
361 0x6e, 0x18, 0x67, 0x99, 0x58, 0x05, 0x35, 0xdf, 0xd6, 0x45, 0x1b, 0xb4, 0xbc, 0x11, 0x39, 0xef,
362 0x0e, 0x5f, 0xdd, 0xe2, 0x3b, 0x25, 0x63, 0x25, 0x29, 0xfc, 0x9e, 0x9d, 0x7e, 0x47, 0x60, 0xbd,
363 0x57, 0x04, 0x0e, 0xc1, 0x5a, 0x55, 0x05, 0x59, 0xb6, 0x13, 0xe4, 0x9a, 0x9e, 0x33, 0x3b, 0xf3,
364 0x77, 0x60, 0x5f, 0x83, 0xfe, 0x1b, 0x45, 0x9d, 0x53, 0xde, 0x6c, 0xd3, 0xae, 0xe4, 0xf4, 0x1d,
365 0x38, 0xff, 0xa4, 0xf1, 0x09, 0x98, 0xeb, 0x62, 0x3b, 0x41, 0x2e, 0xf2, 0xec, 0x54, 0xfe, 0xc4,
366 0x4f, 0x60, 0xfc, 0x65, 0x41, 0x44, 0x31, 0x31, 0x5c, 0xe4, 0x39, 0xb3, 0x7b, 0x7b, 0xf2, 0x1b,
367 0x79, 0x9b, 0x6a, 0xe8, 0xa5, 0xf1, 0x02, 0x4d, 0x7f, 0x1b, 0x30, 0x56, 0x49, 0x1c, 0x02, 0x50,
368 0x41, 0xc8, 0x5c, 0x0b, 0xa4, 0xf4, 0x78, 0x76, 0xba, 0x27, 0xb8, 0x12, 0x84, 0x28, 0xfe, 0x72,
369 0x94, 0xda, 0xb4, 0x0f, 0xf0, 0x19, 0xdc, 0xa6, 0x62, 0x93, 0x15, 0xcd, 0xfc, 0xef, 0xfb, 0xe8,
370 0x72, 0x94, 0x3a, 0x3a, 0x3b, 0x40, 0x2d, 0x6f, 0x2a, 0x5a, 0x76, 0x90, 0x29, 0x1b, 0x97, 0x90,
371 0xce, 0x6a, 0xe8, 0x11, 0x40, 0xc6, 0x58, 0xdf, 0xc6, 0x91, 0x8b, 0xbc, 0x5b, 0xf2, 0x29, 0x99,
372 0xd3, 0xc0, 0x2b, 0x65, 0x11, 0x39, 0xef, 0x90, 0xb1, 0x1a, 0xf5, 0xfe, 0x81, 0x3d, 0x76, 0x7a,
373 0x91, 0xf3, 0x61, 0x4a, 0x52, 0xb5, 0x7d, 0xad, 0xa5, 0x6a, 0xf7, 0xa7, 0x8c, 0xab, 0x96, 0x0f,
374 0x53, 0x92, 0x3e, 0x88, 0x2c, 0x38, 0x5a, 0x57, 0x74, 0x39, 0x0d, 0xc1, 0x1e, 0x08, 0xec, 0x83,
375 0xa5, 0x64, 0xfd, 0x3f, 0x7a, 0x68, 0xe9, 0x1d, 0xf5, 0xf8, 0x01, 0xd8, 0xc3, 0x12, 0xf1, 0x31,
376 0xc0, 0xd5, 0x75, 0x1c, 0xcf, 0x6f, 0x5e, 0xc7, 0xd7, 0xe7, 0x27, 0xa3, 0xe8, 0x1b, 0x82, 0xbb,
377 0x39, 0xdb, 0xec, 0x2a, 0x22, 0x47, 0x4f, 0x93, 0xc8, 0x38, 0x41, 0x9f, 0x9e, 0xfe, 0xef, 0x87,
378 0x19, 0xea, 0xa3, 0xce, 0x7e, 0x20, 0xf4, 0xd3, 0x30, 0x2f, 0x92, 0xe8, 0x97, 0xf1, 0xf0, 0x42,
379 0xcb, 0x93, 0xbe, 0xbf, 0x8f, 0x05, 0x21, 0x6f, 0x29, 0xfb, 0x4a, 0x3f, 0xc8, 0xca, 0xcc, 0x52,
380 0xaa, 0x67, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xbc, 0xcf, 0x6d, 0x50, 0xfe, 0x02, 0x00, 0x00,
381 }
357 0x9a, 0x34, 0x8d, 0xa1, 0xd3, 0x99, 0x90, 0xcc, 0x28, 0x3d, 0xfa, 0x2f, 0x3c, 0x7b, 0xf4, 0xe8,
358 0xaf, 0xf3, 0x28, 0x33, 0x93, 0x44, 0x69, 0x29, 0x78, 0x9a, 0xbe, 0x37, 0xdf, 0xfb, 0xe6, 0xbd,
359 0xd7, 0xc0, 0xf3, 0xb2, 0xe2, 0x9f, 0x45, 0xe6, 0xe7, 0x6c, 0x13, 0x94, 0x8c, 0x2c, 0x68, 0x19,
360 0xd4, 0x0d, 0xe3, 0x2c, 0x13, 0xab, 0xa0, 0xe6, 0xdb, 0xba, 0x68, 0x83, 0x96, 0x37, 0x22, 0xe7,
361 0xdd, 0xe1, 0xab, 0x5b, 0x7c, 0xa7, 0x64, 0xac, 0x24, 0x85, 0xdf, 0xb3, 0xd3, 0xef, 0x08, 0xac,
362 0xf7, 0x8a, 0xc0, 0x21, 0x58, 0xab, 0xaa, 0x20, 0xcb, 0x76, 0x82, 0x5c, 0xd3, 0x73, 0x66, 0x67,
363 0xfe, 0x0e, 0xec, 0x6b, 0xd0, 0x7f, 0xa3, 0xa8, 0x73, 0xca, 0x9b, 0x6d, 0xda, 0x95, 0x9c, 0xbe,
364 0x03, 0xe7, 0x9f, 0x34, 0x3e, 0x01, 0x73, 0x5d, 0x6c, 0x27, 0xc8, 0x45, 0x9e, 0x9d, 0xca, 0x9f,
365 0xf8, 0x09, 0x8c, 0xbf, 0x2c, 0x88, 0x28, 0x26, 0x86, 0x8b, 0x3c, 0x67, 0x76, 0x6f, 0x4f, 0x7e,
366 0x23, 0x6f, 0x53, 0x0d, 0xbd, 0x34, 0x5e, 0xa0, 0xe9, 0x2f, 0x03, 0xc6, 0x2a, 0x89, 0x43, 0x00,
367 0x2a, 0x08, 0x99, 0x6b, 0x81, 0x94, 0x1e, 0xcf, 0x4e, 0xf7, 0x04, 0x57, 0x82, 0x10, 0xc5, 0x5f,
368 0x8e, 0x52, 0x9b, 0xf6, 0x01, 0x3e, 0x83, 0xdb, 0x54, 0x6c, 0xb2, 0xa2, 0x99, 0xff, 0x7d, 0x1f,
369 0x5d, 0x8e, 0x52, 0x47, 0x67, 0x07, 0xa8, 0xe5, 0x4d, 0x45, 0xcb, 0x0e, 0x32, 0x65, 0xe3, 0x12,
370 0xd2, 0x59, 0x0d, 0x3d, 0x02, 0xc8, 0x18, 0xeb, 0xdb, 0x38, 0x72, 0x91, 0x77, 0x4b, 0x3e, 0x25,
371 0x73, 0x1a, 0x78, 0xa5, 0x2c, 0x22, 0xe7, 0x1d, 0x32, 0x56, 0xa3, 0xde, 0x3f, 0xb0, 0xc7, 0x4e,
372 0x2f, 0x72, 0x3e, 0x4c, 0x49, 0xaa, 0xb6, 0xaf, 0xb5, 0x54, 0xed, 0xfe, 0x94, 0x71, 0xd5, 0xf2,
373 0x61, 0x4a, 0xd2, 0x07, 0x91, 0x05, 0x47, 0xeb, 0x8a, 0x2e, 0xa7, 0x21, 0xd8, 0x03, 0x81, 0x7d,
374 0xb0, 0x94, 0xac, 0xff, 0x47, 0x0f, 0x2d, 0xbd, 0xa3, 0x1e, 0x3f, 0x00, 0x7b, 0x58, 0x22, 0x3e,
375 0x06, 0xb8, 0xba, 0x8e, 0xe3, 0xf9, 0xcd, 0xeb, 0xf8, 0xfa, 0xfc, 0x64, 0x14, 0x7d, 0x43, 0x70,
376 0x37, 0x67, 0x9b, 0x5d, 0x45, 0xe4, 0xe8, 0x69, 0x12, 0x19, 0x27, 0xe8, 0xd3, 0xd3, 0xff, 0xfd,
377 0x30, 0x43, 0x7d, 0xd4, 0xd9, 0x6f, 0x84, 0x7e, 0x18, 0xe6, 0x45, 0x12, 0xfd, 0x34, 0x1e, 0x5e,
378 0x68, 0x79, 0xd2, 0xf7, 0xf7, 0xb1, 0x20, 0xe4, 0x2d, 0x65, 0x5f, 0xe9, 0x07, 0x59, 0x99, 0x59,
379 0x4a, 0xf5, 0xec, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x9b, 0x6e, 0x5d, 0x3c, 0xfe, 0x02, 0x00,
380 0x00,
381 }
3232 package google.protobuf;
3333
3434 option csharp_namespace = "Google.Protobuf.WellKnownTypes";
35 option cc_enable_arenas = true;
3536 option go_package = "github.com/golang/protobuf/ptypes/struct;structpb";
3637 option java_package = "com.google.protobuf";
3738 option java_outer_classname = "StructProto";
3839 option java_multiple_files = true;
39 option java_generate_equals_and_hash = true;
4040 option objc_class_prefix = "GPB";
4141
4242
0 // Code generated by protoc-gen-go.
0 // Code generated by protoc-gen-go. DO NOT EDIT.
11 // source: github.com/golang/protobuf/ptypes/timestamp/timestamp.proto
2 // DO NOT EDIT!
32
43 /*
54 Package timestamp is a generated protocol buffer package.
3938 // and from RFC 3339 date strings.
4039 // See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.txt).
4140 //
41 // # Examples
42 //
4243 // Example 1: Compute Timestamp from POSIX `time()`.
4344 //
4445 // Timestamp timestamp;
7677 //
7778 // Example 5: Compute Timestamp from current time in Python.
7879 //
79 // now = time.time()
80 // seconds = int(now)
81 // nanos = int((now - seconds) * 10**9)
82 // timestamp = Timestamp(seconds=seconds, nanos=nanos)
80 // timestamp = Timestamp()
81 // timestamp.GetCurrentTime()
82 //
83 // # JSON Mapping
84 //
85 // In JSON format, the Timestamp type is encoded as a string in the
86 // [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the
87 // format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
88 // where {year} is always expressed using four digits while {month}, {day},
89 // {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional
90 // seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),
91 // are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone
92 // is required, though only UTC (as indicated by "Z") is presently supported.
93 //
94 // For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past
95 // 01:30 UTC on January 15, 2017.
96 //
97 // In JavaScript, one can convert a Date object to this format using the
98 // standard [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString]
99 // method. In Python, a standard `datetime.datetime` object can be converted
100 // to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime)
101 // with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one
102 // can use the Joda Time's [`ISODateTimeFormat.dateTime()`](
103 // http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime())
104 // to obtain a formatter capable of generating timestamps in this format.
83105 //
84106 //
85107 type Timestamp struct {
86108 // Represents seconds of UTC time since Unix epoch
87 // 1970-01-01T00:00:00Z. Must be from from 0001-01-01T00:00:00Z to
109 // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
88110 // 9999-12-31T23:59:59Z inclusive.
89111 Seconds int64 `protobuf:"varint,1,opt,name=seconds" json:"seconds,omitempty"`
90112 // Non-negative fractions of a second at nanosecond resolution. Negative
100122 func (*Timestamp) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
101123 func (*Timestamp) XXX_WellKnownType() string { return "Timestamp" }
102124
125 func (m *Timestamp) GetSeconds() int64 {
126 if m != nil {
127 return m.Seconds
128 }
129 return 0
130 }
131
132 func (m *Timestamp) GetNanos() int32 {
133 if m != nil {
134 return m.Nanos
135 }
136 return 0
137 }
138
103139 func init() {
104140 proto.RegisterType((*Timestamp)(nil), "google.protobuf.Timestamp")
105141 }
109145 }
110146
111147 var fileDescriptor0 = []byte{
112 // 194 bytes of a gzipped FileDescriptorProto
113 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xb2, 0x4e, 0xcf, 0x2c, 0xc9,
148 // 190 bytes of a gzipped FileDescriptorProto
149 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xb2, 0x4e, 0xcf, 0x2c, 0xc9,
114150 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0xd7, 0x2f, 0x28,
115151 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x28, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x2f, 0xc9,
116152 0xcc, 0x4d, 0x2d, 0x2e, 0x49, 0xcc, 0x2d, 0x40, 0xb0, 0xf4, 0xc0, 0x6a, 0x84, 0xf8, 0xd3, 0xf3,
117153 0xf3, 0xd3, 0x73, 0x52, 0xf5, 0x60, 0x3a, 0x94, 0xac, 0xb9, 0x38, 0x43, 0x60, 0x6a, 0x84, 0x24,
118154 0xb8, 0xd8, 0x8b, 0x53, 0x93, 0xf3, 0xf3, 0x52, 0x8a, 0x25, 0x18, 0x15, 0x18, 0x35, 0x98, 0x83,
119155 0x60, 0x5c, 0x21, 0x11, 0x2e, 0xd6, 0xbc, 0xc4, 0xbc, 0xfc, 0x62, 0x09, 0x26, 0x05, 0x46, 0x0d,
120 0xd6, 0x20, 0x08, 0xc7, 0xa9, 0x91, 0x91, 0x4b, 0x38, 0x39, 0x3f, 0x57, 0x0f, 0xcd, 0x50, 0x27,
121 0x3e, 0xb8, 0x91, 0x01, 0x20, 0xa1, 0x00, 0xc6, 0x28, 0x6d, 0x12, 0x1c, 0xbd, 0x80, 0x91, 0xf1,
122 0x07, 0x23, 0xe3, 0x22, 0x26, 0x66, 0xf7, 0x00, 0xa7, 0x55, 0x4c, 0x72, 0xee, 0x10, 0xc3, 0x03,
123 0xa0, 0xca, 0xf5, 0xc2, 0x53, 0x73, 0x72, 0xbc, 0xf3, 0xf2, 0xcb, 0xf3, 0x42, 0x40, 0xda, 0x92,
124 0xd8, 0xc0, 0xe6, 0x18, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x17, 0x5f, 0xb7, 0xdc, 0x17, 0x01,
125 0x00, 0x00,
156 0xd6, 0x20, 0x08, 0xc7, 0xa9, 0x8e, 0x4b, 0x38, 0x39, 0x3f, 0x57, 0x0f, 0xcd, 0x4c, 0x27, 0x3e,
157 0xb8, 0x89, 0x01, 0x20, 0xa1, 0x00, 0xc6, 0x28, 0x6d, 0x12, 0xdc, 0xfc, 0x83, 0x91, 0x71, 0x11,
158 0x13, 0xb3, 0x7b, 0x80, 0xd3, 0x2a, 0x26, 0x39, 0x77, 0x88, 0xc9, 0x01, 0x50, 0xb5, 0x7a, 0xe1,
159 0xa9, 0x39, 0x39, 0xde, 0x79, 0xf9, 0xe5, 0x79, 0x21, 0x20, 0x3d, 0x49, 0x6c, 0x60, 0x43, 0x8c,
160 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x6b, 0x59, 0x0a, 0x4d, 0x13, 0x01, 0x00, 0x00,
126161 }
3737 option java_package = "com.google.protobuf";
3838 option java_outer_classname = "TimestampProto";
3939 option java_multiple_files = true;
40 option java_generate_equals_and_hash = true;
4140 option objc_class_prefix = "GPB";
4241
4342 // A Timestamp represents a point in time independent of any time zone
5150 // By restricting to that range, we ensure that we can convert to
5251 // and from RFC 3339 date strings.
5352 // See [https://www.ietf.org/rfc/rfc3339.txt](https://www.ietf.org/rfc/rfc3339.txt).
53 //
54 // # Examples
5455 //
5556 // Example 1: Compute Timestamp from POSIX `time()`.
5657 //
8990 //
9091 // Example 5: Compute Timestamp from current time in Python.
9192 //
92 // now = time.time()
93 // seconds = int(now)
94 // nanos = int((now - seconds) * 10**9)
95 // timestamp = Timestamp(seconds=seconds, nanos=nanos)
93 // timestamp = Timestamp()
94 // timestamp.GetCurrentTime()
95 //
96 // # JSON Mapping
97 //
98 // In JSON format, the Timestamp type is encoded as a string in the
99 // [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the
100 // format is "{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z"
101 // where {year} is always expressed using four digits while {month}, {day},
102 // {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional
103 // seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),
104 // are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone
105 // is required, though only UTC (as indicated by "Z") is presently supported.
106 //
107 // For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past
108 // 01:30 UTC on January 15, 2017.
109 //
110 // In JavaScript, one can convert a Date object to this format using the
111 // standard [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString]
112 // method. In Python, a standard `datetime.datetime` object can be converted
113 // to this format using [`strftime`](https://docs.python.org/2/library/time.html#time.strftime)
114 // with the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one
115 // can use the Joda Time's [`ISODateTimeFormat.dateTime()`](
116 // http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime())
117 // to obtain a formatter capable of generating timestamps in this format.
96118 //
97119 //
98120 message Timestamp {
99121
100122 // Represents seconds of UTC time since Unix epoch
101 // 1970-01-01T00:00:00Z. Must be from from 0001-01-01T00:00:00Z to
123 // 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
102124 // 9999-12-31T23:59:59Z inclusive.
103125 int64 seconds = 1;
104126
9898 return t, validateTimestamp(ts)
9999 }
100100
101 // TimestampNow returns a google.protobuf.Timestamp for the current time.
102 func TimestampNow() *tspb.Timestamp {
103 ts, err := TimestampProto(time.Now())
104 if err != nil {
105 panic("ptypes: time.Now() out of Timestamp range")
106 }
107 return ts
108 }
109
101110 // TimestampProto converts the time.Time to a google.protobuf.Timestamp proto.
102111 // It returns an error if the resulting Timestamp is invalid.
103112 func TimestampProto(t time.Time) (*tspb.Timestamp, error) {
4545 t time.Time
4646 }{
4747 // The timestamp representing the Unix epoch date.
48 {&tspb.Timestamp{0, 0}, true, utcDate(1970, 1, 1)},
48 {&tspb.Timestamp{Seconds: 0, Nanos: 0}, true, utcDate(1970, 1, 1)},
4949 // The smallest representable timestamp.
50 {&tspb.Timestamp{math.MinInt64, math.MinInt32}, false,
50 {&tspb.Timestamp{Seconds: math.MinInt64, Nanos: math.MinInt32}, false,
5151 time.Unix(math.MinInt64, math.MinInt32).UTC()},
5252 // The smallest representable timestamp with non-negative nanos.
53 {&tspb.Timestamp{math.MinInt64, 0}, false, time.Unix(math.MinInt64, 0).UTC()},
53 {&tspb.Timestamp{Seconds: math.MinInt64, Nanos: 0}, false, time.Unix(math.MinInt64, 0).UTC()},
5454 // The earliest valid timestamp.
55 {&tspb.Timestamp{minValidSeconds, 0}, true, utcDate(1, 1, 1)},
55 {&tspb.Timestamp{Seconds: minValidSeconds, Nanos: 0}, true, utcDate(1, 1, 1)},
5656 //"0001-01-01T00:00:00Z"},
5757 // The largest representable timestamp.
58 {&tspb.Timestamp{math.MaxInt64, math.MaxInt32}, false,
58 {&tspb.Timestamp{Seconds: math.MaxInt64, Nanos: math.MaxInt32}, false,
5959 time.Unix(math.MaxInt64, math.MaxInt32).UTC()},
6060 // The largest representable timestamp with nanos in range.
61 {&tspb.Timestamp{math.MaxInt64, 1e9 - 1}, false,
61 {&tspb.Timestamp{Seconds: math.MaxInt64, Nanos: 1e9 - 1}, false,
6262 time.Unix(math.MaxInt64, 1e9-1).UTC()},
6363 // The largest valid timestamp.
64 {&tspb.Timestamp{maxValidSeconds - 1, 1e9 - 1}, true,
64 {&tspb.Timestamp{Seconds: maxValidSeconds - 1, Nanos: 1e9 - 1}, true,
6565 time.Date(9999, 12, 31, 23, 59, 59, 1e9-1, time.UTC)},
6666 // The smallest invalid timestamp that is larger than the valid range.
67 {&tspb.Timestamp{maxValidSeconds, 0}, false, time.Unix(maxValidSeconds, 0).UTC()},
67 {&tspb.Timestamp{Seconds: maxValidSeconds, Nanos: 0}, false, time.Unix(maxValidSeconds, 0).UTC()},
6868 // A date before the epoch.
69 {&tspb.Timestamp{-281836800, 0}, true, utcDate(1961, 1, 26)},
69 {&tspb.Timestamp{Seconds: -281836800, Nanos: 0}, true, utcDate(1961, 1, 26)},
7070 // A date after the epoch.
71 {&tspb.Timestamp{1296000000, 0}, true, utcDate(2011, 1, 26)},
71 {&tspb.Timestamp{Seconds: 1296000000, Nanos: 0}, true, utcDate(2011, 1, 26)},
7272 // A date after the epoch, in the middle of the day.
73 {&tspb.Timestamp{1296012345, 940483}, true,
73 {&tspb.Timestamp{Seconds: 1296012345, Nanos: 940483}, true,
7474 time.Date(2011, 1, 26, 3, 25, 45, 940483, time.UTC)},
7575 }
7676
122122 }{
123123 // Not much testing needed because presumably time.Format is
124124 // well-tested.
125 {&tspb.Timestamp{0, 0}, "1970-01-01T00:00:00Z"},
126 {&tspb.Timestamp{minValidSeconds - 1, 0}, "(timestamp: seconds:-62135596801 before 0001-01-01)"},
125 {&tspb.Timestamp{Seconds: 0, Nanos: 0}, "1970-01-01T00:00:00Z"},
126 {&tspb.Timestamp{Seconds: minValidSeconds - 1, Nanos: 0}, "(timestamp: seconds:-62135596801 before 0001-01-01)"},
127127 } {
128128 got := TimestampString(test.ts)
129129 if got != test.want {
135135 func utcDate(year, month, day int) time.Time {
136136 return time.Date(year, time.Month(month), day, 0, 0, 0, 0, time.UTC)
137137 }
138
139 func TestTimestampNow(t *testing.T) {
140 // Bracket the expected time.
141 before := time.Now()
142 ts := TimestampNow()
143 after := time.Now()
144
145 tm, err := Timestamp(ts)
146 if err != nil {
147 t.Errorf("between %v and %v\nTimestampNow() = %v\nwhich is invalid (%v)", before, after, ts, err)
148 }
149 if tm.Before(before) || tm.After(after) {
150 t.Errorf("between %v and %v\nTimestamp(TimestampNow()) = %v", before, after, tm)
151 }
152 }
0 // Code generated by protoc-gen-go.
0 // Code generated by protoc-gen-go. DO NOT EDIT.
11 // source: github.com/golang/protobuf/ptypes/wrappers/wrappers.proto
2 // DO NOT EDIT!
32
43 /*
54 Package wrappers is a generated protocol buffer package.
4948 func (*DoubleValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
5049 func (*DoubleValue) XXX_WellKnownType() string { return "DoubleValue" }
5150
51 func (m *DoubleValue) GetValue() float64 {
52 if m != nil {
53 return m.Value
54 }
55 return 0
56 }
57
5258 // Wrapper message for `float`.
5359 //
5460 // The JSON representation for `FloatValue` is JSON number.
6369 func (*FloatValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
6470 func (*FloatValue) XXX_WellKnownType() string { return "FloatValue" }
6571
72 func (m *FloatValue) GetValue() float32 {
73 if m != nil {
74 return m.Value
75 }
76 return 0
77 }
78
6679 // Wrapper message for `int64`.
6780 //
6881 // The JSON representation for `Int64Value` is JSON string.
7790 func (*Int64Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
7891 func (*Int64Value) XXX_WellKnownType() string { return "Int64Value" }
7992
93 func (m *Int64Value) GetValue() int64 {
94 if m != nil {
95 return m.Value
96 }
97 return 0
98 }
99
80100 // Wrapper message for `uint64`.
81101 //
82102 // The JSON representation for `UInt64Value` is JSON string.
91111 func (*UInt64Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
92112 func (*UInt64Value) XXX_WellKnownType() string { return "UInt64Value" }
93113
114 func (m *UInt64Value) GetValue() uint64 {
115 if m != nil {
116 return m.Value
117 }
118 return 0
119 }
120
94121 // Wrapper message for `int32`.
95122 //
96123 // The JSON representation for `Int32Value` is JSON number.
105132 func (*Int32Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
106133 func (*Int32Value) XXX_WellKnownType() string { return "Int32Value" }
107134
135 func (m *Int32Value) GetValue() int32 {
136 if m != nil {
137 return m.Value
138 }
139 return 0
140 }
141
108142 // Wrapper message for `uint32`.
109143 //
110144 // The JSON representation for `UInt32Value` is JSON number.
119153 func (*UInt32Value) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
120154 func (*UInt32Value) XXX_WellKnownType() string { return "UInt32Value" }
121155
156 func (m *UInt32Value) GetValue() uint32 {
157 if m != nil {
158 return m.Value
159 }
160 return 0
161 }
162
122163 // Wrapper message for `bool`.
123164 //
124165 // The JSON representation for `BoolValue` is JSON `true` and `false`.
133174 func (*BoolValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
134175 func (*BoolValue) XXX_WellKnownType() string { return "BoolValue" }
135176
177 func (m *BoolValue) GetValue() bool {
178 if m != nil {
179 return m.Value
180 }
181 return false
182 }
183
136184 // Wrapper message for `string`.
137185 //
138186 // The JSON representation for `StringValue` is JSON string.
147195 func (*StringValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
148196 func (*StringValue) XXX_WellKnownType() string { return "StringValue" }
149197
198 func (m *StringValue) GetValue() string {
199 if m != nil {
200 return m.Value
201 }
202 return ""
203 }
204
150205 // Wrapper message for `bytes`.
151206 //
152207 // The JSON representation for `BytesValue` is JSON string.
160215 func (*BytesValue) ProtoMessage() {}
161216 func (*BytesValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
162217 func (*BytesValue) XXX_WellKnownType() string { return "BytesValue" }
218
219 func (m *BytesValue) GetValue() []byte {
220 if m != nil {
221 return m.Value
222 }
223 return nil
224 }
163225
164226 func init() {
165227 proto.RegisterType((*DoubleValue)(nil), "google.protobuf.DoubleValue")
178240 }
179241
180242 var fileDescriptor0 = []byte{
181 // 260 bytes of a gzipped FileDescriptorProto
182 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xb2, 0x4c, 0xcf, 0x2c, 0xc9,
243 // 257 bytes of a gzipped FileDescriptorProto
244 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xb2, 0x4c, 0xcf, 0x2c, 0xc9,
183245 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xcf, 0xcf, 0x49, 0xcc, 0x4b, 0xd7, 0x2f, 0x28,
184246 0xca, 0x2f, 0xc9, 0x4f, 0x2a, 0x4d, 0xd3, 0x2f, 0x28, 0xa9, 0x2c, 0x48, 0x2d, 0xd6, 0x2f, 0x2f,
185247 0x4a, 0x2c, 0x28, 0x48, 0x2d, 0x42, 0x30, 0xf4, 0xc0, 0x2a, 0x84, 0xf8, 0xd3, 0xf3, 0xf3, 0xd3,
190252 0xe2, 0x52, 0xc4, 0x82, 0x6a, 0x90, 0xb1, 0x11, 0x16, 0x35, 0xac, 0x68, 0x06, 0x61, 0x55, 0xc4,
191253 0x0b, 0x53, 0xa4, 0xc8, 0xc5, 0xe9, 0x94, 0x9f, 0x9f, 0x83, 0x45, 0x09, 0x07, 0x92, 0x39, 0xc1,
192254 0x25, 0x45, 0x99, 0x79, 0xe9, 0x58, 0x14, 0x71, 0x22, 0x39, 0xc8, 0xa9, 0xb2, 0x24, 0xb5, 0x18,
193 0x8b, 0x1a, 0x1e, 0xa8, 0x1a, 0xa7, 0x7a, 0x2e, 0xe1, 0xe4, 0xfc, 0x5c, 0x3d, 0xb4, 0xd0, 0x75,
194 0xe2, 0x0d, 0x87, 0x06, 0x7f, 0x00, 0x48, 0x24, 0x80, 0x31, 0x4a, 0x8b, 0xf8, 0xa8, 0x5b, 0xc0,
195 0xc8, 0xf8, 0x83, 0x91, 0x71, 0x11, 0x13, 0xb3, 0x7b, 0x80, 0xd3, 0x2a, 0x26, 0x39, 0x77, 0x88,
196 0xd1, 0x01, 0x50, 0xd5, 0x7a, 0xe1, 0xa9, 0x39, 0x39, 0xde, 0x79, 0xf9, 0xe5, 0x79, 0x21, 0x20,
197 0x5d, 0x49, 0x6c, 0x60, 0x63, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xa9, 0xdf, 0x64, 0x4b,
198 0x1c, 0x02, 0x00, 0x00,
199 }
255 0x8b, 0x1a, 0x1e, 0xa8, 0x1a, 0xa7, 0x1a, 0x2e, 0xe1, 0xe4, 0xfc, 0x5c, 0x3d, 0xb4, 0xd0, 0x75,
256 0xe2, 0x0d, 0x87, 0x06, 0x7f, 0x00, 0x48, 0x24, 0x80, 0x31, 0x4a, 0x8b, 0xf8, 0xa8, 0xfb, 0xc1,
257 0xc8, 0xb8, 0x88, 0x89, 0xd9, 0x3d, 0xc0, 0x69, 0x15, 0x93, 0x9c, 0x3b, 0xc4, 0xdc, 0x00, 0xa8,
258 0x52, 0xbd, 0xf0, 0xd4, 0x9c, 0x1c, 0xef, 0xbc, 0xfc, 0xf2, 0xbc, 0x10, 0x90, 0x96, 0x24, 0x36,
259 0xb0, 0x19, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xee, 0x36, 0x8d, 0xd8, 0x19, 0x02, 0x00,
260 0x00,
261 }
4242 option java_package = "com.google.protobuf";
4343 option java_outer_classname = "WrappersProto";
4444 option java_multiple_files = true;
45 option java_generate_equals_and_hash = true;
4645 option objc_class_prefix = "GPB";
4746
4847 // Wrapper message for `double`.