
enum MapEnum {
  MA = 0;
  MB = 1;
  MC = 2;
}

message AllMaps {
  map<string, double> StringToDoubleMap = 1;
  map<string, float> StringToFloatMap = 2;
  map<int32, int32> Int32Map = 3;
  map<int64, int64> Int64Map = 4;
  map<uint32, uint32> Uint32Map = 5;
  map<uint64, uint64> Uint64Map = 6;
  map<sint32, sint32> Sint32Map = 7;
  map<sint64, sint64> Sint64Map = 8;
  map<fixed32, fixed32> Fixed32Map = 9;
  map<sfixed32, sfixed32> Sfixed32Map = 10;
  map<fixed64, fixed64> Fixed64Map = 11;
  map<sfixed64, sfixed64> Sfixed64Map = 12;
  map<bool, bool> BoolMap = 13;
  map<string, string> StringMap = 14;
  map<string, bytes> StringToBytesMap = 15;
  map<string, MapEnum> StringToEnumMap = 16;
  map<string, FloatingPoint> StringToMsgMap = 17;
}

message AllMapsOrdered {
  option (gogoproto.stable_marshaler) = true;

  map<string, double> StringToDoubleMap = 1;
  map<string, float> StringToFloatMap = 2;
  map<int32, int32> Int32Map = 3;
  map<int64, int64> Int64Map = 4;
  map<uint32, uint32> Uint32Map = 5;
  map<uint64, uint64> Uint64Map = 6;
  map<sint32, sint32> Sint32Map = 7;
  map<sint64, sint64> Sint64Map = 8;
  map<fixed32, fixed32> Fixed32Map = 9;
  map<sfixed32, sfixed32> Sfixed32Map = 10;
  map<fixed64, fixed64> Fixed64Map = 11;
  map<sfixed64, sfixed64> Sfixed64Map = 12;
  map<bool, bool> BoolMap = 13;
  map<string, string> StringMap = 14;
  map<string, bytes> StringToBytesMap = 15;
  map<string, MapEnum> StringToEnumMap = 16;
  map<string, FloatingPoint> StringToMsgMap = 17;
}
