syntax = "proto3";

package basic_test;

import "google/protobuf/descriptor.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/struct.proto";
import "google/protobuf/timestamp.proto";
import "google/protobuf/wrappers.proto";
import "test_import_proto2.proto";

option deprecated = true;

message Foo {
  Bar bar = 1;
  repeated Baz baz = 2;
}

message Bar {
  string msg = 1;
}

message Baz {
  string msg = 1;
}

message TestMessage {
  optional int32 optional_int32 = 1;
  optional int64 optional_int64 = 2;
  optional uint32 optional_uint32 = 3;
  optional uint64 optional_uint64 = 4;
  optional bool optional_bool = 5;
  optional float optional_float = 6;
  optional double optional_double = 7;
  optional string optional_string = 8;
  optional bytes optional_bytes = 9;
  optional TestMessage2 optional_msg = 10;
  optional TestEnum optional_enum = 11;
  optional foo_bar.proto2.TestImportedMessage optional_proto2_submessage = 24;

  repeated int32 repeated_int32 = 12;
  repeated int64 repeated_int64 = 13;
  repeated uint32 repeated_uint32 = 14;
  repeated uint64 repeated_uint64 = 15;
  repeated bool repeated_bool = 16;
  repeated float repeated_float = 17;
  repeated double repeated_double = 18;
  repeated string repeated_string = 19;
  repeated bytes repeated_bytes = 20;
  repeated TestMessage2 repeated_msg = 21;
  repeated TestEnum repeated_enum = 22;

  optional TestSingularFields optional_msg2 = 23;
}

message TestUnpackedMessage {
  repeated int32 repeated_int32 = 25 [packed = false];
}

message TestSingularFields {
  int32 singular_int32 = 1;
  int64 singular_int64 = 2;
  uint32 singular_uint32 = 3;
  uint64 singular_uint64 = 4;
  bool singular_bool = 5;
  float singular_float = 6;
  double singular_double = 7;
  string singular_string = 8;
  bytes singular_bytes = 9;
  TestMessage2 singular_msg = 10;
  TestEnum singular_enum = 11;
}

message TestMessage2 {
  optional int32 foo = 1;
}

extend google.protobuf.OneofOptions {
  optional string test_top_level_option = 1000;
}

message TestDeprecatedMessage {
  option deprecated = true;

  extend google.protobuf.OneofOptions {
    optional string test_nested_option = 1001;
  }

  optional int32 foo = 1 [deprecated = true];

  oneof test_deprecated_message_oneof {
    option (test_top_level_option) = "Custom option value";
    option (test_nested_option) = "Another custom option value";

    string a = 2;
    int32 b = 3;
  }

  map<string, TestMessage2> map_string_msg = 4;
  repeated TestMessage2 repeated_msg = 5;
}

enum TestEnum {
  Default = 0;
  A = 1;
  B = 2;
  C = 3;
  v0 = 4;
}

enum TestDeprecatedEnum {
  option deprecated = true;

  DefaultA = 0;
  AA = 1 [deprecated = true];
}

message TestEmbeddedMessageParent {
  TestEmbeddedMessageChild child_msg = 1;
  int32 number = 2;

  repeated TestEmbeddedMessageChild repeated_msg = 3;
  repeated int32 repeated_number = 4;
}

message TestEmbeddedMessageChild {
  TestMessage sub_child = 1;
}

message Recursive1 {
  Recursive2 foo = 1;
}

message Recursive2 {
  Recursive1 foo = 1;
}

message MapMessage {
  map<string, int32> map_string_int32 = 1;
  map<string, TestMessage2> map_string_msg = 2;
  map<string, TestEnum> map_string_enum = 3;
}

message MapOfSingularFields {
  map<string, TestSingularFields> map_string_singular = 1;
}

message MapMessageWireEquiv {
  repeated MapMessageWireEquiv_entry1 map_string_int32 = 1;
  repeated MapMessageWireEquiv_entry2 map_string_msg = 2;
}

message MapMessageWireEquiv_entry1 {
  string key = 1;
  int32 value = 2;
}

message MapMessageWireEquiv_entry2 {
  string key = 1;
  TestMessage2 value = 2;
}

message OneofMessage {
  oneof my_oneof {
    string a = 1;
    int32 b = 2;
    TestMessage2 c = 3;
    TestEnum d = 4;
  }
}

message Outer {
  map<int32, Inner> items = 1;
}

message Inner {}

message Wrapper {
  google.protobuf.DoubleValue double = 1;
  google.protobuf.FloatValue float = 2;
  google.protobuf.Int32Value int32 = 3;
  google.protobuf.Int64Value int64 = 4;
  google.protobuf.UInt32Value uint32 = 5;
  google.protobuf.UInt64Value uint64 = 6;
  google.protobuf.BoolValue bool = 7;
  google.protobuf.StringValue string = 8;
  google.protobuf.BytesValue bytes = 9;
  string real_string = 100;
  oneof a_oneof {
    string string_in_oneof = 10;
  }

  // Repeated wrappers don't make sense, but we still need to make sure they
  // work and don't crash.
  repeated google.protobuf.DoubleValue repeated_double = 11;
  repeated google.protobuf.FloatValue repeated_float = 12;
  repeated google.protobuf.Int32Value repeated_int32 = 13;
  repeated google.protobuf.Int64Value repeated_int64 = 14;
  repeated google.protobuf.UInt32Value repeated_uint32 = 15;
  repeated google.protobuf.UInt64Value repeated_uint64 = 16;
  repeated google.protobuf.BoolValue repeated_bool = 17;
  repeated google.protobuf.StringValue repeated_string = 18;
  repeated google.protobuf.BytesValue repeated_bytes = 19;

  // Wrappers as map keys don't make sense, but we still need to make sure they
  // work and don't crash.
  map<int32, google.protobuf.DoubleValue> map_double = 21;
  map<int32, google.protobuf.FloatValue> map_float = 22;
  map<int32, google.protobuf.Int32Value> map_int32 = 23;
  map<int32, google.protobuf.Int64Value> map_int64 = 24;
  map<int32, google.protobuf.UInt32Value> map_uint32 = 25;
  map<int32, google.protobuf.UInt64Value> map_uint64 = 26;
  map<int32, google.protobuf.BoolValue> map_bool = 27;
  map<int32, google.protobuf.StringValue> map_string = 28;
  map<int32, google.protobuf.BytesValue> map_bytes = 29;

  // Wrappers in oneofs don't make sense, but we still need to make sure they
  // work and don't crash.
  oneof wrapper_oneof {
    google.protobuf.DoubleValue oneof_double = 31;
    google.protobuf.FloatValue oneof_float = 32;
    google.protobuf.Int32Value oneof_int32 = 33;
    google.protobuf.Int64Value oneof_int64 = 34;
    google.protobuf.UInt32Value oneof_uint32 = 35;
    google.protobuf.UInt64Value oneof_uint64 = 36;
    google.protobuf.BoolValue oneof_bool = 37;
    google.protobuf.StringValue oneof_string = 38;
    google.protobuf.BytesValue oneof_bytes = 39;
    string oneof_plain_string = 101;
  }
}

message TimeMessage {
  google.protobuf.Timestamp timestamp = 1;
  google.protobuf.Duration duration = 2;
}

message Enumer {
  TestEnum optional_enum = 1;
  repeated TestEnum repeated_enum = 2;
  string a_const = 3;
  oneof a_oneof {
    string str = 10;
    TestEnum const = 11;
  }
}

message MyRepeatedStruct {
  repeated MyStruct structs = 1;
}

message MyStruct {
  string string = 1;
  google.protobuf.Struct struct = 2;
}

message WithJsonName {
  optional int32 foo_bar = 1 [json_name = "jsonFooBar"];
  repeated WithJsonName baz = 2 [json_name = "jsonBaz"];
}

message HelloRequest {
  optional uint32 id = 1;
  optional uint32 random_name_a0 = 2;
  optional uint32 random_name_a1 = 3;
  optional uint32 random_name_a2 = 4;
  optional uint32 random_name_a3 = 5;
  optional uint32 random_name_a4 = 6;
  optional uint32 random_name_a5 = 7;
  optional uint32 random_name_a6 = 8;
  optional uint32 random_name_a7 = 9;
  optional uint32 random_name_a8 = 10;
  optional uint32 random_name_a9 = 11;
  optional uint32 random_name_b0 = 12;
  optional uint32 random_name_b1 = 13;
  optional uint32 random_name_b2 = 14;
  optional uint32 random_name_b3 = 15;
  optional uint32 random_name_b4 = 16;
  optional uint32 random_name_b5 = 17;
  optional uint32 random_name_b6 = 18;
  optional uint32 random_name_b7 = 19;
  optional uint32 random_name_b8 = 20;
  optional uint32 random_name_b9 = 21;
  optional uint32 random_name_c0 = 22;
  optional uint32 random_name_c1 = 23;
  optional uint32 random_name_c2 = 24;
  optional uint32 random_name_c3 = 25;
  optional uint32 random_name_c4 = 26;
  optional uint32 random_name_c5 = 27;
  optional uint32 random_name_c6 = 28;
  optional uint32 random_name_c7 = 29;
  optional uint32 random_name_c8 = 30;
  optional uint32 random_name_c9 = 31;
  optional string version = 32;
}

message BadFieldNames {
  optional int32 dup = 1;
  optional int32 class = 2;
}

// Messages to test the fix for
// https://github.com/protocolbuffers/protobuf/issues/8311.
message Inner8311 {
  // Removing either of these fixes the segfault.
  optional string foo = 1;
  optional string bar = 2;
}

message Outer8311 {
  repeated Inner8311 inners = 1;
}

// Messages to test the fix for
// https://github.com/protocolbuffers/protobuf/issues/9507
message NpeMessage {
  optional TestEnum9507 type = 1;
  optional string other = 2;
}

enum TestEnum9507 {
  Something = 0;
}
