diff --git a/CHANGES.txt b/CHANGES.txt
index 72ee37175f98..d3cc7b861577 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,3 +1,56 @@
+2019-06-28 version 3.9.0 (C++/Java/Python/PHP/Objective-C/C#/Ruby/JavaScript)
+
+ C++
+ * Optimize and simplify implementation of RepeatedPtrFieldBase
+ * Don't create unnecessary unknown field sets.
+ * Remove branch from accessors to repeated field element array.
+ * Added delimited parse and serialize util.
+ * Reduce size by not emitting constants for fieldnumbers
+ * Fix a bug when comparing finite and infinite field values with explicit tolerances.
+ * TextFormat::Parser should use a custom Finder to look up extensions by number if one is provided.
+ * Add MessageLite::Utf8DebugString() to make MessageLite more compatible with Message.
+ * Fail fast for better performance in DescriptorPool::FindExtensionByNumber() if descriptor has no defined extensions.
+ * Adding the file name to help debug colliding extensions
+ * Added FieldDescriptor::PrintableNameForExtension() and DescriptorPool::FindExtensionByPrintableName().
+ The latter will replace Reflection::FindKnownExtensionByName().
+ * Replace NULL with nullptr
+ * Created a new Add method in repeated field that allows adding a range of elements all at once.
+ * Enabled enum name-to-value mapping functions for C++ lite
+ * Avoid dynamic initialization in descriptor.proto generated code
+ * Move stream functions to MessageLite from Message.
+ * Move all zero_copy_stream functionality to io_lite.
+ * Do not create array of matched fields for simple repeated fields
+ * Enabling silent mode by default to reduce make compilation noise. (#6237)
+
+ Java
+ * Expose TextFormat.Printer and make it configurable. Deprecate the static methods.
+ * Library for constructing google.protobuf.Struct and google.protobuf.Value
+ * Make OneofDescriptor extend GenericDescriptor.
+ * Expose streamingness of service methods from MethodDescriptor.
+ * Fix a bug where TextFormat fails to parse Any filed with > 1 embedded message sub-fields.
+ * Establish consistent JsonFormat behavior for nulls in oneofs, regardless of order.
+ * Update GSON version to 3.8.5. (#6268)
+ * Add `protobuf_java_lite` Bazel target. (#6177)
+
+ Python
+ * Change implementation of Name() for enums that allow aliases in proto2 in Python
+ to be in line with claims in C++ implementation (to return first value).
+ * Explicitly say what field cannot be set when the new value fails a type check.
+ * Duplicate register in descriptor pool will raise errors
+ * Add __slots__ to all well_known_types classes, custom attributes are not allowed anymore.
+ * text_format only present 8 valid digits for float fields by default
+
+ JavaScript
+ * Add Oneof enum to the list of goog.provide
+
+ PHP
+ * Make php message class final to avoid mocking. (#6277)
+ * Rename get/setXXXValue to get/setXXXWrapper. (#6295)
+
+ Ruby
+ * Remove to_hash methods. (#6166)
+
+
2019-04-29 version 3.8.0 (C++/Java/Python/PHP/Objective-C/C#/Ruby/JavaScript)
C++
diff --git a/Protobuf.podspec b/Protobuf.podspec
index c36cf0063b8f..0caca28f71f6 100644
--- a/Protobuf.podspec
+++ b/Protobuf.podspec
@@ -5,7 +5,7 @@
# dependent projects use the :git notation to refer to the library.
Pod::Spec.new do |s|
s.name = 'Protobuf'
- s.version = '3.9.0-rc2'
+ s.version = '3.9.1'
s.summary = 'Protocol Buffers v.3 runtime library for Objective-C.'
s.homepage = 'https://github.com/protocolbuffers/protobuf'
s.license = '3-Clause BSD License'
diff --git a/configure.ac b/configure.ac
index ca80e8cb0846..6dc48daae648 100644
--- a/configure.ac
+++ b/configure.ac
@@ -17,7 +17,7 @@ AC_PREREQ(2.59)
# In the SVN trunk, the version should always be the next anticipated release
# version with the "-pre" suffix. (We used to use "-SNAPSHOT" but this pushed
# the size of one file name in the dist tarfile over the 99-char limit.)
-AC_INIT([Protocol Buffers],[3.9.0-rc-1],[protobuf@googlegroups.com],[protobuf])
+AC_INIT([Protocol Buffers],[3.9.1],[protobuf@googlegroups.com],[protobuf])
AM_MAINTAINER_MODE([enable])
diff --git a/csharp/Google.Protobuf.Tools.nuspec b/csharp/Google.Protobuf.Tools.nuspec
index 709465817652..87372b6c94ef 100644
--- a/csharp/Google.Protobuf.Tools.nuspec
+++ b/csharp/Google.Protobuf.Tools.nuspec
@@ -5,7 +5,7 @@
Google Protocol Buffers toolsTools for Protocol Buffers - Google's data interchange format.See project site for more info.
- 3.9.0-rc1
+ 3.9.1Google Inc.protobuf-packageshttps://github.com/protocolbuffers/protobuf/blob/master/LICENSE
diff --git a/csharp/src/Google.Protobuf.Test/TestProtos/TestMessagesProto3.cs b/csharp/src/Google.Protobuf.Test/TestProtos/TestMessagesProto3.cs
index 822ff2681350..064d0c0acec0 100644
--- a/csharp/src/Google.Protobuf.Test/TestProtos/TestMessagesProto3.cs
+++ b/csharp/src/Google.Protobuf.Test/TestProtos/TestMessagesProto3.cs
@@ -29,7 +29,7 @@ public static partial class TestMessagesProto3Reflection {
"dWYvYW55LnByb3RvGh5nb29nbGUvcHJvdG9idWYvZHVyYXRpb24ucHJvdG8a",
"IGdvb2dsZS9wcm90b2J1Zi9maWVsZF9tYXNrLnByb3RvGhxnb29nbGUvcHJv",
"dG9idWYvc3RydWN0LnByb3RvGh9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1w",
- "LnByb3RvGh5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8ipz0KElRl",
+ "LnByb3RvGh5nb29nbGUvcHJvdG9idWYvd3JhcHBlcnMucHJvdG8iv0QKElRl",
"c3RBbGxUeXBlc1Byb3RvMxIWCg5vcHRpb25hbF9pbnQzMhgBIAEoBRIWCg5v",
"cHRpb25hbF9pbnQ2NBgCIAEoAxIXCg9vcHRpb25hbF91aW50MzIYAyABKA0S",
"FwoPb3B0aW9uYWxfdWludDY0GAQgASgEEhcKD29wdGlvbmFsX3NpbnQzMhgF",
@@ -69,149 +69,170 @@ public static partial class TestMessagesProto3Reflection {
"FXJlcGVhdGVkX2ZvcmVpZ25fZW51bRg0IAMoDjIqLnByb3RvYnVmX3Rlc3Rf",
"bWVzc2FnZXMucHJvdG8zLkZvcmVpZ25FbnVtEiEKFXJlcGVhdGVkX3N0cmlu",
"Z19waWVjZRg2IAMoCUICCAISGQoNcmVwZWF0ZWRfY29yZBg3IAMoCUICCAES",
- "XQoPbWFwX2ludDMyX2ludDMyGDggAygLMkQucHJvdG9idWZfdGVzdF9tZXNz",
- "YWdlcy5wcm90bzMuVGVzdEFsbFR5cGVzUHJvdG8zLk1hcEludDMySW50MzJF",
- "bnRyeRJdCg9tYXBfaW50NjRfaW50NjQYOSADKAsyRC5wcm90b2J1Zl90ZXN0",
- "X21lc3NhZ2VzLnByb3RvMy5UZXN0QWxsVHlwZXNQcm90bzMuTWFwSW50NjRJ",
- "bnQ2NEVudHJ5EmEKEW1hcF91aW50MzJfdWludDMyGDogAygLMkYucHJvdG9i",
- "dWZfdGVzdF9tZXNzYWdlcy5wcm90bzMuVGVzdEFsbFR5cGVzUHJvdG8zLk1h",
- "cFVpbnQzMlVpbnQzMkVudHJ5EmEKEW1hcF91aW50NjRfdWludDY0GDsgAygL",
- "MkYucHJvdG9idWZfdGVzdF9tZXNzYWdlcy5wcm90bzMuVGVzdEFsbFR5cGVz",
- "UHJvdG8zLk1hcFVpbnQ2NFVpbnQ2NEVudHJ5EmEKEW1hcF9zaW50MzJfc2lu",
- "dDMyGDwgAygLMkYucHJvdG9idWZfdGVzdF9tZXNzYWdlcy5wcm90bzMuVGVz",
- "dEFsbFR5cGVzUHJvdG8zLk1hcFNpbnQzMlNpbnQzMkVudHJ5EmEKEW1hcF9z",
- "aW50NjRfc2ludDY0GD0gAygLMkYucHJvdG9idWZfdGVzdF9tZXNzYWdlcy5w",
- "cm90bzMuVGVzdEFsbFR5cGVzUHJvdG8zLk1hcFNpbnQ2NFNpbnQ2NEVudHJ5",
- "EmUKE21hcF9maXhlZDMyX2ZpeGVkMzIYPiADKAsySC5wcm90b2J1Zl90ZXN0",
- "X21lc3NhZ2VzLnByb3RvMy5UZXN0QWxsVHlwZXNQcm90bzMuTWFwRml4ZWQz",
- "MkZpeGVkMzJFbnRyeRJlChNtYXBfZml4ZWQ2NF9maXhlZDY0GD8gAygLMkgu",
- "cHJvdG9idWZfdGVzdF9tZXNzYWdlcy5wcm90bzMuVGVzdEFsbFR5cGVzUHJv",
- "dG8zLk1hcEZpeGVkNjRGaXhlZDY0RW50cnkSaQoVbWFwX3NmaXhlZDMyX3Nm",
- "aXhlZDMyGEAgAygLMkoucHJvdG9idWZfdGVzdF9tZXNzYWdlcy5wcm90bzMu",
- "VGVzdEFsbFR5cGVzUHJvdG8zLk1hcFNmaXhlZDMyU2ZpeGVkMzJFbnRyeRJp",
- "ChVtYXBfc2ZpeGVkNjRfc2ZpeGVkNjQYQSADKAsySi5wcm90b2J1Zl90ZXN0",
- "X21lc3NhZ2VzLnByb3RvMy5UZXN0QWxsVHlwZXNQcm90bzMuTWFwU2ZpeGVk",
- "NjRTZml4ZWQ2NEVudHJ5El0KD21hcF9pbnQzMl9mbG9hdBhCIAMoCzJELnBy",
- "b3RvYnVmX3Rlc3RfbWVzc2FnZXMucHJvdG8zLlRlc3RBbGxUeXBlc1Byb3Rv",
- "My5NYXBJbnQzMkZsb2F0RW50cnkSXwoQbWFwX2ludDMyX2RvdWJsZRhDIAMo",
- "CzJFLnByb3RvYnVmX3Rlc3RfbWVzc2FnZXMucHJvdG8zLlRlc3RBbGxUeXBl",
- "c1Byb3RvMy5NYXBJbnQzMkRvdWJsZUVudHJ5ElkKDW1hcF9ib29sX2Jvb2wY",
- "RCADKAsyQi5wcm90b2J1Zl90ZXN0X21lc3NhZ2VzLnByb3RvMy5UZXN0QWxs",
- "VHlwZXNQcm90bzMuTWFwQm9vbEJvb2xFbnRyeRJhChFtYXBfc3RyaW5nX3N0",
- "cmluZxhFIAMoCzJGLnByb3RvYnVmX3Rlc3RfbWVzc2FnZXMucHJvdG8zLlRl",
- "c3RBbGxUeXBlc1Byb3RvMy5NYXBTdHJpbmdTdHJpbmdFbnRyeRJfChBtYXBf",
- "c3RyaW5nX2J5dGVzGEYgAygLMkUucHJvdG9idWZfdGVzdF9tZXNzYWdlcy5w",
- "cm90bzMuVGVzdEFsbFR5cGVzUHJvdG8zLk1hcFN0cmluZ0J5dGVzRW50cnkS",
- "cAoZbWFwX3N0cmluZ19uZXN0ZWRfbWVzc2FnZRhHIAMoCzJNLnByb3RvYnVm",
+ "GAoMcGFja2VkX2ludDMyGEsgAygFQgIQARIYCgxwYWNrZWRfaW50NjQYTCAD",
+ "KANCAhABEhkKDXBhY2tlZF91aW50MzIYTSADKA1CAhABEhkKDXBhY2tlZF91",
+ "aW50NjQYTiADKARCAhABEhkKDXBhY2tlZF9zaW50MzIYTyADKBFCAhABEhkK",
+ "DXBhY2tlZF9zaW50NjQYUCADKBJCAhABEhoKDnBhY2tlZF9maXhlZDMyGFEg",
+ "AygHQgIQARIaCg5wYWNrZWRfZml4ZWQ2NBhSIAMoBkICEAESGwoPcGFja2Vk",
+ "X3NmaXhlZDMyGFMgAygPQgIQARIbCg9wYWNrZWRfc2ZpeGVkNjQYVCADKBBC",
+ "AhABEhgKDHBhY2tlZF9mbG9hdBhVIAMoAkICEAESGQoNcGFja2VkX2RvdWJs",
+ "ZRhWIAMoAUICEAESFwoLcGFja2VkX2Jvb2wYVyADKAhCAhABElwKEnBhY2tl",
+ "ZF9uZXN0ZWRfZW51bRhYIAMoDjI8LnByb3RvYnVmX3Rlc3RfbWVzc2FnZXMu",
+ "cHJvdG8zLlRlc3RBbGxUeXBlc1Byb3RvMy5OZXN0ZWRFbnVtQgIQARIaCg51",
+ "bnBhY2tlZF9pbnQzMhhZIAMoBUICEAASGgoOdW5wYWNrZWRfaW50NjQYWiAD",
+ "KANCAhAAEhsKD3VucGFja2VkX3VpbnQzMhhbIAMoDUICEAASGwoPdW5wYWNr",
+ "ZWRfdWludDY0GFwgAygEQgIQABIbCg91bnBhY2tlZF9zaW50MzIYXSADKBFC",
+ "AhAAEhsKD3VucGFja2VkX3NpbnQ2NBheIAMoEkICEAASHAoQdW5wYWNrZWRf",
+ "Zml4ZWQzMhhfIAMoB0ICEAASHAoQdW5wYWNrZWRfZml4ZWQ2NBhgIAMoBkIC",
+ "EAASHQoRdW5wYWNrZWRfc2ZpeGVkMzIYYSADKA9CAhAAEh0KEXVucGFja2Vk",
+ "X3NmaXhlZDY0GGIgAygQQgIQABIaCg51bnBhY2tlZF9mbG9hdBhjIAMoAkIC",
+ "EAASGwoPdW5wYWNrZWRfZG91YmxlGGQgAygBQgIQABIZCg11bnBhY2tlZF9i",
+ "b29sGGUgAygIQgIQABJeChR1bnBhY2tlZF9uZXN0ZWRfZW51bRhmIAMoDjI8",
+ "LnByb3RvYnVmX3Rlc3RfbWVzc2FnZXMucHJvdG8zLlRlc3RBbGxUeXBlc1By",
+ "b3RvMy5OZXN0ZWRFbnVtQgIQABJdCg9tYXBfaW50MzJfaW50MzIYOCADKAsy",
+ "RC5wcm90b2J1Zl90ZXN0X21lc3NhZ2VzLnByb3RvMy5UZXN0QWxsVHlwZXNQ",
+ "cm90bzMuTWFwSW50MzJJbnQzMkVudHJ5El0KD21hcF9pbnQ2NF9pbnQ2NBg5",
+ "IAMoCzJELnByb3RvYnVmX3Rlc3RfbWVzc2FnZXMucHJvdG8zLlRlc3RBbGxU",
+ "eXBlc1Byb3RvMy5NYXBJbnQ2NEludDY0RW50cnkSYQoRbWFwX3VpbnQzMl91",
+ "aW50MzIYOiADKAsyRi5wcm90b2J1Zl90ZXN0X21lc3NhZ2VzLnByb3RvMy5U",
+ "ZXN0QWxsVHlwZXNQcm90bzMuTWFwVWludDMyVWludDMyRW50cnkSYQoRbWFw",
+ "X3VpbnQ2NF91aW50NjQYOyADKAsyRi5wcm90b2J1Zl90ZXN0X21lc3NhZ2Vz",
+ "LnByb3RvMy5UZXN0QWxsVHlwZXNQcm90bzMuTWFwVWludDY0VWludDY0RW50",
+ "cnkSYQoRbWFwX3NpbnQzMl9zaW50MzIYPCADKAsyRi5wcm90b2J1Zl90ZXN0",
+ "X21lc3NhZ2VzLnByb3RvMy5UZXN0QWxsVHlwZXNQcm90bzMuTWFwU2ludDMy",
+ "U2ludDMyRW50cnkSYQoRbWFwX3NpbnQ2NF9zaW50NjQYPSADKAsyRi5wcm90",
+ "b2J1Zl90ZXN0X21lc3NhZ2VzLnByb3RvMy5UZXN0QWxsVHlwZXNQcm90bzMu",
+ "TWFwU2ludDY0U2ludDY0RW50cnkSZQoTbWFwX2ZpeGVkMzJfZml4ZWQzMhg+",
+ "IAMoCzJILnByb3RvYnVmX3Rlc3RfbWVzc2FnZXMucHJvdG8zLlRlc3RBbGxU",
+ "eXBlc1Byb3RvMy5NYXBGaXhlZDMyRml4ZWQzMkVudHJ5EmUKE21hcF9maXhl",
+ "ZDY0X2ZpeGVkNjQYPyADKAsySC5wcm90b2J1Zl90ZXN0X21lc3NhZ2VzLnBy",
+ "b3RvMy5UZXN0QWxsVHlwZXNQcm90bzMuTWFwRml4ZWQ2NEZpeGVkNjRFbnRy",
+ "eRJpChVtYXBfc2ZpeGVkMzJfc2ZpeGVkMzIYQCADKAsySi5wcm90b2J1Zl90",
+ "ZXN0X21lc3NhZ2VzLnByb3RvMy5UZXN0QWxsVHlwZXNQcm90bzMuTWFwU2Zp",
+ "eGVkMzJTZml4ZWQzMkVudHJ5EmkKFW1hcF9zZml4ZWQ2NF9zZml4ZWQ2NBhB",
+ "IAMoCzJKLnByb3RvYnVmX3Rlc3RfbWVzc2FnZXMucHJvdG8zLlRlc3RBbGxU",
+ "eXBlc1Byb3RvMy5NYXBTZml4ZWQ2NFNmaXhlZDY0RW50cnkSXQoPbWFwX2lu",
+ "dDMyX2Zsb2F0GEIgAygLMkQucHJvdG9idWZfdGVzdF9tZXNzYWdlcy5wcm90",
+ "bzMuVGVzdEFsbFR5cGVzUHJvdG8zLk1hcEludDMyRmxvYXRFbnRyeRJfChBt",
+ "YXBfaW50MzJfZG91YmxlGEMgAygLMkUucHJvdG9idWZfdGVzdF9tZXNzYWdl",
+ "cy5wcm90bzMuVGVzdEFsbFR5cGVzUHJvdG8zLk1hcEludDMyRG91YmxlRW50",
+ "cnkSWQoNbWFwX2Jvb2xfYm9vbBhEIAMoCzJCLnByb3RvYnVmX3Rlc3RfbWVz",
+ "c2FnZXMucHJvdG8zLlRlc3RBbGxUeXBlc1Byb3RvMy5NYXBCb29sQm9vbEVu",
+ "dHJ5EmEKEW1hcF9zdHJpbmdfc3RyaW5nGEUgAygLMkYucHJvdG9idWZfdGVz",
+ "dF9tZXNzYWdlcy5wcm90bzMuVGVzdEFsbFR5cGVzUHJvdG8zLk1hcFN0cmlu",
+ "Z1N0cmluZ0VudHJ5El8KEG1hcF9zdHJpbmdfYnl0ZXMYRiADKAsyRS5wcm90",
+ "b2J1Zl90ZXN0X21lc3NhZ2VzLnByb3RvMy5UZXN0QWxsVHlwZXNQcm90bzMu",
+ "TWFwU3RyaW5nQnl0ZXNFbnRyeRJwChltYXBfc3RyaW5nX25lc3RlZF9tZXNz",
+ "YWdlGEcgAygLMk0ucHJvdG9idWZfdGVzdF9tZXNzYWdlcy5wcm90bzMuVGVz",
+ "dEFsbFR5cGVzUHJvdG8zLk1hcFN0cmluZ05lc3RlZE1lc3NhZ2VFbnRyeRJy",
+ "ChptYXBfc3RyaW5nX2ZvcmVpZ25fbWVzc2FnZRhIIAMoCzJOLnByb3RvYnVm",
"X3Rlc3RfbWVzc2FnZXMucHJvdG8zLlRlc3RBbGxUeXBlc1Byb3RvMy5NYXBT",
- "dHJpbmdOZXN0ZWRNZXNzYWdlRW50cnkScgoabWFwX3N0cmluZ19mb3JlaWdu",
- "X21lc3NhZ2UYSCADKAsyTi5wcm90b2J1Zl90ZXN0X21lc3NhZ2VzLnByb3Rv",
- "My5UZXN0QWxsVHlwZXNQcm90bzMuTWFwU3RyaW5nRm9yZWlnbk1lc3NhZ2VF",
- "bnRyeRJqChZtYXBfc3RyaW5nX25lc3RlZF9lbnVtGEkgAygLMkoucHJvdG9i",
- "dWZfdGVzdF9tZXNzYWdlcy5wcm90bzMuVGVzdEFsbFR5cGVzUHJvdG8zLk1h",
- "cFN0cmluZ05lc3RlZEVudW1FbnRyeRJsChdtYXBfc3RyaW5nX2ZvcmVpZ25f",
- "ZW51bRhKIAMoCzJLLnByb3RvYnVmX3Rlc3RfbWVzc2FnZXMucHJvdG8zLlRl",
- "c3RBbGxUeXBlc1Byb3RvMy5NYXBTdHJpbmdGb3JlaWduRW51bUVudHJ5EhYK",
- "DG9uZW9mX3VpbnQzMhhvIAEoDUgAEl8KFG9uZW9mX25lc3RlZF9tZXNzYWdl",
- "GHAgASgLMj8ucHJvdG9idWZfdGVzdF9tZXNzYWdlcy5wcm90bzMuVGVzdEFs",
- "bFR5cGVzUHJvdG8zLk5lc3RlZE1lc3NhZ2VIABIWCgxvbmVvZl9zdHJpbmcY",
- "cSABKAlIABIVCgtvbmVvZl9ieXRlcxhyIAEoDEgAEhQKCm9uZW9mX2Jvb2wY",
- "cyABKAhIABIWCgxvbmVvZl91aW50NjQYdCABKARIABIVCgtvbmVvZl9mbG9h",
- "dBh1IAEoAkgAEhYKDG9uZW9mX2RvdWJsZRh2IAEoAUgAElIKCm9uZW9mX2Vu",
- "dW0YdyABKA4yPC5wcm90b2J1Zl90ZXN0X21lc3NhZ2VzLnByb3RvMy5UZXN0",
- "QWxsVHlwZXNQcm90bzMuTmVzdGVkRW51bUgAEjoKFW9wdGlvbmFsX2Jvb2xf",
- "d3JhcHBlchjJASABKAsyGi5nb29nbGUucHJvdG9idWYuQm9vbFZhbHVlEjwK",
- "Fm9wdGlvbmFsX2ludDMyX3dyYXBwZXIYygEgASgLMhsuZ29vZ2xlLnByb3Rv",
- "YnVmLkludDMyVmFsdWUSPAoWb3B0aW9uYWxfaW50NjRfd3JhcHBlchjLASAB",
- "KAsyGy5nb29nbGUucHJvdG9idWYuSW50NjRWYWx1ZRI+ChdvcHRpb25hbF91",
- "aW50MzJfd3JhcHBlchjMASABKAsyHC5nb29nbGUucHJvdG9idWYuVUludDMy",
- "VmFsdWUSPgoXb3B0aW9uYWxfdWludDY0X3dyYXBwZXIYzQEgASgLMhwuZ29v",
- "Z2xlLnByb3RvYnVmLlVJbnQ2NFZhbHVlEjwKFm9wdGlvbmFsX2Zsb2F0X3dy",
- "YXBwZXIYzgEgASgLMhsuZ29vZ2xlLnByb3RvYnVmLkZsb2F0VmFsdWUSPgoX",
- "b3B0aW9uYWxfZG91YmxlX3dyYXBwZXIYzwEgASgLMhwuZ29vZ2xlLnByb3Rv",
- "YnVmLkRvdWJsZVZhbHVlEj4KF29wdGlvbmFsX3N0cmluZ193cmFwcGVyGNAB",
- "IAEoCzIcLmdvb2dsZS5wcm90b2J1Zi5TdHJpbmdWYWx1ZRI8ChZvcHRpb25h",
- "bF9ieXRlc193cmFwcGVyGNEBIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5CeXRl",
- "c1ZhbHVlEjoKFXJlcGVhdGVkX2Jvb2xfd3JhcHBlchjTASADKAsyGi5nb29n",
- "bGUucHJvdG9idWYuQm9vbFZhbHVlEjwKFnJlcGVhdGVkX2ludDMyX3dyYXBw",
- "ZXIY1AEgAygLMhsuZ29vZ2xlLnByb3RvYnVmLkludDMyVmFsdWUSPAoWcmVw",
- "ZWF0ZWRfaW50NjRfd3JhcHBlchjVASADKAsyGy5nb29nbGUucHJvdG9idWYu",
- "SW50NjRWYWx1ZRI+ChdyZXBlYXRlZF91aW50MzJfd3JhcHBlchjWASADKAsy",
- "HC5nb29nbGUucHJvdG9idWYuVUludDMyVmFsdWUSPgoXcmVwZWF0ZWRfdWlu",
- "dDY0X3dyYXBwZXIY1wEgAygLMhwuZ29vZ2xlLnByb3RvYnVmLlVJbnQ2NFZh",
- "bHVlEjwKFnJlcGVhdGVkX2Zsb2F0X3dyYXBwZXIY2AEgAygLMhsuZ29vZ2xl",
- "LnByb3RvYnVmLkZsb2F0VmFsdWUSPgoXcmVwZWF0ZWRfZG91YmxlX3dyYXBw",
- "ZXIY2QEgAygLMhwuZ29vZ2xlLnByb3RvYnVmLkRvdWJsZVZhbHVlEj4KF3Jl",
- "cGVhdGVkX3N0cmluZ193cmFwcGVyGNoBIAMoCzIcLmdvb2dsZS5wcm90b2J1",
- "Zi5TdHJpbmdWYWx1ZRI8ChZyZXBlYXRlZF9ieXRlc193cmFwcGVyGNsBIAMo",
- "CzIbLmdvb2dsZS5wcm90b2J1Zi5CeXRlc1ZhbHVlEjUKEW9wdGlvbmFsX2R1",
- "cmF0aW9uGK0CIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhI3ChJv",
- "cHRpb25hbF90aW1lc3RhbXAYrgIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRp",
- "bWVzdGFtcBI4ChNvcHRpb25hbF9maWVsZF9tYXNrGK8CIAEoCzIaLmdvb2ds",
- "ZS5wcm90b2J1Zi5GaWVsZE1hc2sSMQoPb3B0aW9uYWxfc3RydWN0GLACIAEo",
- "CzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSKwoMb3B0aW9uYWxfYW55GLEC",
- "IAEoCzIULmdvb2dsZS5wcm90b2J1Zi5BbnkSLwoOb3B0aW9uYWxfdmFsdWUY",
- "sgIgASgLMhYuZ29vZ2xlLnByb3RvYnVmLlZhbHVlEjUKEXJlcGVhdGVkX2R1",
- "cmF0aW9uGLcCIAMoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhI3ChJy",
- "ZXBlYXRlZF90aW1lc3RhbXAYuAIgAygLMhouZ29vZ2xlLnByb3RvYnVmLlRp",
- "bWVzdGFtcBI3ChJyZXBlYXRlZF9maWVsZG1hc2sYuQIgAygLMhouZ29vZ2xl",
- "LnByb3RvYnVmLkZpZWxkTWFzaxIxCg9yZXBlYXRlZF9zdHJ1Y3QYxAIgAygL",
- "MhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIrCgxyZXBlYXRlZF9hbnkYuwIg",
- "AygLMhQuZ29vZ2xlLnByb3RvYnVmLkFueRIvCg5yZXBlYXRlZF92YWx1ZRi8",
- "AiADKAsyFi5nb29nbGUucHJvdG9idWYuVmFsdWUSOAoTcmVwZWF0ZWRfbGlz",
- "dF92YWx1ZRi9AiADKAsyGi5nb29nbGUucHJvdG9idWYuTGlzdFZhbHVlEhMK",
- "CmZpZWxkbmFtZTEYkQMgASgFEhQKC2ZpZWxkX25hbWUyGJIDIAEoBRIVCgxf",
- "ZmllbGRfbmFtZTMYkwMgASgFEhYKDWZpZWxkX19uYW1lNF8YlAMgASgFEhQK",
- "C2ZpZWxkMG5hbWU1GJUDIAEoBRIWCg1maWVsZF8wX25hbWU2GJYDIAEoBRIT",
- "CgpmaWVsZE5hbWU3GJcDIAEoBRITCgpGaWVsZE5hbWU4GJgDIAEoBRIUCgtm",
- "aWVsZF9OYW1lORiZAyABKAUSFQoMRmllbGRfTmFtZTEwGJoDIAEoBRIVCgxG",
- "SUVMRF9OQU1FMTEYmwMgASgFEhUKDEZJRUxEX25hbWUxMhicAyABKAUSFwoO",
- "X19maWVsZF9uYW1lMTMYnQMgASgFEhcKDl9fRmllbGRfbmFtZTE0GJ4DIAEo",
- "BRIWCg1maWVsZF9fbmFtZTE1GJ8DIAEoBRIWCg1maWVsZF9fTmFtZTE2GKAD",
- "IAEoBRIXCg5maWVsZF9uYW1lMTdfXxihAyABKAUSFwoORmllbGRfbmFtZTE4",
- "X18YogMgASgFGmIKDU5lc3RlZE1lc3NhZ2USCQoBYRgBIAEoBRJGCgtjb3Jl",
- "Y3Vyc2l2ZRgCIAEoCzIxLnByb3RvYnVmX3Rlc3RfbWVzc2FnZXMucHJvdG8z",
- "LlRlc3RBbGxUeXBlc1Byb3RvMxo0ChJNYXBJbnQzMkludDMyRW50cnkSCwoD",
- "a2V5GAEgASgFEg0KBXZhbHVlGAIgASgFOgI4ARo0ChJNYXBJbnQ2NEludDY0",
- "RW50cnkSCwoDa2V5GAEgASgDEg0KBXZhbHVlGAIgASgDOgI4ARo2ChRNYXBV",
- "aW50MzJVaW50MzJFbnRyeRILCgNrZXkYASABKA0SDQoFdmFsdWUYAiABKA06",
- "AjgBGjYKFE1hcFVpbnQ2NFVpbnQ2NEVudHJ5EgsKA2tleRgBIAEoBBINCgV2",
- "YWx1ZRgCIAEoBDoCOAEaNgoUTWFwU2ludDMyU2ludDMyRW50cnkSCwoDa2V5",
- "GAEgASgREg0KBXZhbHVlGAIgASgROgI4ARo2ChRNYXBTaW50NjRTaW50NjRF",
- "bnRyeRILCgNrZXkYASABKBISDQoFdmFsdWUYAiABKBI6AjgBGjgKFk1hcEZp",
- "eGVkMzJGaXhlZDMyRW50cnkSCwoDa2V5GAEgASgHEg0KBXZhbHVlGAIgASgH",
- "OgI4ARo4ChZNYXBGaXhlZDY0Rml4ZWQ2NEVudHJ5EgsKA2tleRgBIAEoBhIN",
- "CgV2YWx1ZRgCIAEoBjoCOAEaOgoYTWFwU2ZpeGVkMzJTZml4ZWQzMkVudHJ5",
- "EgsKA2tleRgBIAEoDxINCgV2YWx1ZRgCIAEoDzoCOAEaOgoYTWFwU2ZpeGVk",
- "NjRTZml4ZWQ2NEVudHJ5EgsKA2tleRgBIAEoEBINCgV2YWx1ZRgCIAEoEDoC",
- "OAEaNAoSTWFwSW50MzJGbG9hdEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1",
- "ZRgCIAEoAjoCOAEaNQoTTWFwSW50MzJEb3VibGVFbnRyeRILCgNrZXkYASAB",
- "KAUSDQoFdmFsdWUYAiABKAE6AjgBGjIKEE1hcEJvb2xCb29sRW50cnkSCwoD",
- "a2V5GAEgASgIEg0KBXZhbHVlGAIgASgIOgI4ARo2ChRNYXBTdHJpbmdTdHJp",
- "bmdFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBGjUKE01h",
- "cFN0cmluZ0J5dGVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgM",
- "OgI4ARp+ChtNYXBTdHJpbmdOZXN0ZWRNZXNzYWdlRW50cnkSCwoDa2V5GAEg",
- "ASgJEk4KBXZhbHVlGAIgASgLMj8ucHJvdG9idWZfdGVzdF9tZXNzYWdlcy5w",
- "cm90bzMuVGVzdEFsbFR5cGVzUHJvdG8zLk5lc3RlZE1lc3NhZ2U6AjgBGm0K",
- "HE1hcFN0cmluZ0ZvcmVpZ25NZXNzYWdlRW50cnkSCwoDa2V5GAEgASgJEjwK",
- "BXZhbHVlGAIgASgLMi0ucHJvdG9idWZfdGVzdF9tZXNzYWdlcy5wcm90bzMu",
- "Rm9yZWlnbk1lc3NhZ2U6AjgBGngKGE1hcFN0cmluZ05lc3RlZEVudW1FbnRy",
- "eRILCgNrZXkYASABKAkSSwoFdmFsdWUYAiABKA4yPC5wcm90b2J1Zl90ZXN0",
- "X21lc3NhZ2VzLnByb3RvMy5UZXN0QWxsVHlwZXNQcm90bzMuTmVzdGVkRW51",
- "bToCOAEaZwoZTWFwU3RyaW5nRm9yZWlnbkVudW1FbnRyeRILCgNrZXkYASAB",
- "KAkSOQoFdmFsdWUYAiABKA4yKi5wcm90b2J1Zl90ZXN0X21lc3NhZ2VzLnBy",
- "b3RvMy5Gb3JlaWduRW51bToCOAEiOQoKTmVzdGVkRW51bRIHCgNGT08QABIH",
- "CgNCQVIQARIHCgNCQVoQAhIQCgNORUcQ////////////ASJZCgtBbGlhc2Vk",
- "RW51bRINCglBTElBU19GT08QABINCglBTElBU19CQVIQARINCglBTElBU19C",
- "QVoQAhIHCgNRVVgQAhIHCgNxdXgQAhIHCgNiQXoQAhoCEAFCDQoLb25lb2Zf",
- "ZmllbGRKBgj1AxD/AyIbCg5Gb3JlaWduTWVzc2FnZRIJCgFjGAEgASgFKkAK",
- "C0ZvcmVpZ25FbnVtEg8KC0ZPUkVJR05fRk9PEAASDwoLRk9SRUlHTl9CQVIQ",
- "ARIPCgtGT1JFSUdOX0JBWhACQjgKKGNvbS5nb29nbGUucHJvdG9idWZfdGVz",
- "dF9tZXNzYWdlcy5wcm90bzNIAfgBAaICBlByb3RvM2IGcHJvdG8z"));
+ "dHJpbmdGb3JlaWduTWVzc2FnZUVudHJ5EmoKFm1hcF9zdHJpbmdfbmVzdGVk",
+ "X2VudW0YSSADKAsySi5wcm90b2J1Zl90ZXN0X21lc3NhZ2VzLnByb3RvMy5U",
+ "ZXN0QWxsVHlwZXNQcm90bzMuTWFwU3RyaW5nTmVzdGVkRW51bUVudHJ5EmwK",
+ "F21hcF9zdHJpbmdfZm9yZWlnbl9lbnVtGEogAygLMksucHJvdG9idWZfdGVz",
+ "dF9tZXNzYWdlcy5wcm90bzMuVGVzdEFsbFR5cGVzUHJvdG8zLk1hcFN0cmlu",
+ "Z0ZvcmVpZ25FbnVtRW50cnkSFgoMb25lb2ZfdWludDMyGG8gASgNSAASXwoU",
+ "b25lb2ZfbmVzdGVkX21lc3NhZ2UYcCABKAsyPy5wcm90b2J1Zl90ZXN0X21l",
+ "c3NhZ2VzLnByb3RvMy5UZXN0QWxsVHlwZXNQcm90bzMuTmVzdGVkTWVzc2Fn",
+ "ZUgAEhYKDG9uZW9mX3N0cmluZxhxIAEoCUgAEhUKC29uZW9mX2J5dGVzGHIg",
+ "ASgMSAASFAoKb25lb2ZfYm9vbBhzIAEoCEgAEhYKDG9uZW9mX3VpbnQ2NBh0",
+ "IAEoBEgAEhUKC29uZW9mX2Zsb2F0GHUgASgCSAASFgoMb25lb2ZfZG91Ymxl",
+ "GHYgASgBSAASUgoKb25lb2ZfZW51bRh3IAEoDjI8LnByb3RvYnVmX3Rlc3Rf",
+ "bWVzc2FnZXMucHJvdG8zLlRlc3RBbGxUeXBlc1Byb3RvMy5OZXN0ZWRFbnVt",
+ "SAASOgoVb3B0aW9uYWxfYm9vbF93cmFwcGVyGMkBIAEoCzIaLmdvb2dsZS5w",
+ "cm90b2J1Zi5Cb29sVmFsdWUSPAoWb3B0aW9uYWxfaW50MzJfd3JhcHBlchjK",
+ "ASABKAsyGy5nb29nbGUucHJvdG9idWYuSW50MzJWYWx1ZRI8ChZvcHRpb25h",
+ "bF9pbnQ2NF93cmFwcGVyGMsBIAEoCzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQ2",
+ "NFZhbHVlEj4KF29wdGlvbmFsX3VpbnQzMl93cmFwcGVyGMwBIAEoCzIcLmdv",
+ "b2dsZS5wcm90b2J1Zi5VSW50MzJWYWx1ZRI+ChdvcHRpb25hbF91aW50NjRf",
+ "d3JhcHBlchjNASABKAsyHC5nb29nbGUucHJvdG9idWYuVUludDY0VmFsdWUS",
+ "PAoWb3B0aW9uYWxfZmxvYXRfd3JhcHBlchjOASABKAsyGy5nb29nbGUucHJv",
+ "dG9idWYuRmxvYXRWYWx1ZRI+ChdvcHRpb25hbF9kb3VibGVfd3JhcHBlchjP",
+ "ASABKAsyHC5nb29nbGUucHJvdG9idWYuRG91YmxlVmFsdWUSPgoXb3B0aW9u",
+ "YWxfc3RyaW5nX3dyYXBwZXIY0AEgASgLMhwuZ29vZ2xlLnByb3RvYnVmLlN0",
+ "cmluZ1ZhbHVlEjwKFm9wdGlvbmFsX2J5dGVzX3dyYXBwZXIY0QEgASgLMhsu",
+ "Z29vZ2xlLnByb3RvYnVmLkJ5dGVzVmFsdWUSOgoVcmVwZWF0ZWRfYm9vbF93",
+ "cmFwcGVyGNMBIAMoCzIaLmdvb2dsZS5wcm90b2J1Zi5Cb29sVmFsdWUSPAoW",
+ "cmVwZWF0ZWRfaW50MzJfd3JhcHBlchjUASADKAsyGy5nb29nbGUucHJvdG9i",
+ "dWYuSW50MzJWYWx1ZRI8ChZyZXBlYXRlZF9pbnQ2NF93cmFwcGVyGNUBIAMo",
+ "CzIbLmdvb2dsZS5wcm90b2J1Zi5JbnQ2NFZhbHVlEj4KF3JlcGVhdGVkX3Vp",
+ "bnQzMl93cmFwcGVyGNYBIAMoCzIcLmdvb2dsZS5wcm90b2J1Zi5VSW50MzJW",
+ "YWx1ZRI+ChdyZXBlYXRlZF91aW50NjRfd3JhcHBlchjXASADKAsyHC5nb29n",
+ "bGUucHJvdG9idWYuVUludDY0VmFsdWUSPAoWcmVwZWF0ZWRfZmxvYXRfd3Jh",
+ "cHBlchjYASADKAsyGy5nb29nbGUucHJvdG9idWYuRmxvYXRWYWx1ZRI+Chdy",
+ "ZXBlYXRlZF9kb3VibGVfd3JhcHBlchjZASADKAsyHC5nb29nbGUucHJvdG9i",
+ "dWYuRG91YmxlVmFsdWUSPgoXcmVwZWF0ZWRfc3RyaW5nX3dyYXBwZXIY2gEg",
+ "AygLMhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEjwKFnJlcGVhdGVk",
+ "X2J5dGVzX3dyYXBwZXIY2wEgAygLMhsuZ29vZ2xlLnByb3RvYnVmLkJ5dGVz",
+ "VmFsdWUSNQoRb3B0aW9uYWxfZHVyYXRpb24YrQIgASgLMhkuZ29vZ2xlLnBy",
+ "b3RvYnVmLkR1cmF0aW9uEjcKEm9wdGlvbmFsX3RpbWVzdGFtcBiuAiABKAsy",
+ "Gi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjgKE29wdGlvbmFsX2ZpZWxk",
+ "X21hc2sYrwIgASgLMhouZ29vZ2xlLnByb3RvYnVmLkZpZWxkTWFzaxIxCg9v",
+ "cHRpb25hbF9zdHJ1Y3QYsAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVj",
+ "dBIrCgxvcHRpb25hbF9hbnkYsQIgASgLMhQuZ29vZ2xlLnByb3RvYnVmLkFu",
+ "eRIvCg5vcHRpb25hbF92YWx1ZRiyAiABKAsyFi5nb29nbGUucHJvdG9idWYu",
+ "VmFsdWUSNQoRcmVwZWF0ZWRfZHVyYXRpb24YtwIgAygLMhkuZ29vZ2xlLnBy",
+ "b3RvYnVmLkR1cmF0aW9uEjcKEnJlcGVhdGVkX3RpbWVzdGFtcBi4AiADKAsy",
+ "Gi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjcKEnJlcGVhdGVkX2ZpZWxk",
+ "bWFzaxi5AiADKAsyGi5nb29nbGUucHJvdG9idWYuRmllbGRNYXNrEjEKD3Jl",
+ "cGVhdGVkX3N0cnVjdBjEAiADKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0",
+ "EisKDHJlcGVhdGVkX2FueRi7AiADKAsyFC5nb29nbGUucHJvdG9idWYuQW55",
+ "Ei8KDnJlcGVhdGVkX3ZhbHVlGLwCIAMoCzIWLmdvb2dsZS5wcm90b2J1Zi5W",
+ "YWx1ZRI4ChNyZXBlYXRlZF9saXN0X3ZhbHVlGL0CIAMoCzIaLmdvb2dsZS5w",
+ "cm90b2J1Zi5MaXN0VmFsdWUSEwoKZmllbGRuYW1lMRiRAyABKAUSFAoLZmll",
+ "bGRfbmFtZTIYkgMgASgFEhUKDF9maWVsZF9uYW1lMxiTAyABKAUSFgoNZmll",
+ "bGRfX25hbWU0XxiUAyABKAUSFAoLZmllbGQwbmFtZTUYlQMgASgFEhYKDWZp",
+ "ZWxkXzBfbmFtZTYYlgMgASgFEhMKCmZpZWxkTmFtZTcYlwMgASgFEhMKCkZp",
+ "ZWxkTmFtZTgYmAMgASgFEhQKC2ZpZWxkX05hbWU5GJkDIAEoBRIVCgxGaWVs",
+ "ZF9OYW1lMTAYmgMgASgFEhUKDEZJRUxEX05BTUUxMRibAyABKAUSFQoMRklF",
+ "TERfbmFtZTEyGJwDIAEoBRIXCg5fX2ZpZWxkX25hbWUxMxidAyABKAUSFwoO",
+ "X19GaWVsZF9uYW1lMTQYngMgASgFEhYKDWZpZWxkX19uYW1lMTUYnwMgASgF",
+ "EhYKDWZpZWxkX19OYW1lMTYYoAMgASgFEhcKDmZpZWxkX25hbWUxN19fGKED",
+ "IAEoBRIXCg5GaWVsZF9uYW1lMThfXxiiAyABKAUaYgoNTmVzdGVkTWVzc2Fn",
+ "ZRIJCgFhGAEgASgFEkYKC2NvcmVjdXJzaXZlGAIgASgLMjEucHJvdG9idWZf",
+ "dGVzdF9tZXNzYWdlcy5wcm90bzMuVGVzdEFsbFR5cGVzUHJvdG8zGjQKEk1h",
+ "cEludDMySW50MzJFbnRyeRILCgNrZXkYASABKAUSDQoFdmFsdWUYAiABKAU6",
+ "AjgBGjQKEk1hcEludDY0SW50NjRFbnRyeRILCgNrZXkYASABKAMSDQoFdmFs",
+ "dWUYAiABKAM6AjgBGjYKFE1hcFVpbnQzMlVpbnQzMkVudHJ5EgsKA2tleRgB",
+ "IAEoDRINCgV2YWx1ZRgCIAEoDToCOAEaNgoUTWFwVWludDY0VWludDY0RW50",
+ "cnkSCwoDa2V5GAEgASgEEg0KBXZhbHVlGAIgASgEOgI4ARo2ChRNYXBTaW50",
+ "MzJTaW50MzJFbnRyeRILCgNrZXkYASABKBESDQoFdmFsdWUYAiABKBE6AjgB",
+ "GjYKFE1hcFNpbnQ2NFNpbnQ2NEVudHJ5EgsKA2tleRgBIAEoEhINCgV2YWx1",
+ "ZRgCIAEoEjoCOAEaOAoWTWFwRml4ZWQzMkZpeGVkMzJFbnRyeRILCgNrZXkY",
+ "ASABKAcSDQoFdmFsdWUYAiABKAc6AjgBGjgKFk1hcEZpeGVkNjRGaXhlZDY0",
+ "RW50cnkSCwoDa2V5GAEgASgGEg0KBXZhbHVlGAIgASgGOgI4ARo6ChhNYXBT",
+ "Zml4ZWQzMlNmaXhlZDMyRW50cnkSCwoDa2V5GAEgASgPEg0KBXZhbHVlGAIg",
+ "ASgPOgI4ARo6ChhNYXBTZml4ZWQ2NFNmaXhlZDY0RW50cnkSCwoDa2V5GAEg",
+ "ASgQEg0KBXZhbHVlGAIgASgQOgI4ARo0ChJNYXBJbnQzMkZsb2F0RW50cnkS",
+ "CwoDa2V5GAEgASgFEg0KBXZhbHVlGAIgASgCOgI4ARo1ChNNYXBJbnQzMkRv",
+ "dWJsZUVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoAToCOAEaMgoQ",
+ "TWFwQm9vbEJvb2xFbnRyeRILCgNrZXkYASABKAgSDQoFdmFsdWUYAiABKAg6",
+ "AjgBGjYKFE1hcFN0cmluZ1N0cmluZ0VudHJ5EgsKA2tleRgBIAEoCRINCgV2",
+ "YWx1ZRgCIAEoCToCOAEaNQoTTWFwU3RyaW5nQnl0ZXNFbnRyeRILCgNrZXkY",
+ "ASABKAkSDQoFdmFsdWUYAiABKAw6AjgBGn4KG01hcFN0cmluZ05lc3RlZE1l",
+ "c3NhZ2VFbnRyeRILCgNrZXkYASABKAkSTgoFdmFsdWUYAiABKAsyPy5wcm90",
+ "b2J1Zl90ZXN0X21lc3NhZ2VzLnByb3RvMy5UZXN0QWxsVHlwZXNQcm90bzMu",
+ "TmVzdGVkTWVzc2FnZToCOAEabQocTWFwU3RyaW5nRm9yZWlnbk1lc3NhZ2VF",
+ "bnRyeRILCgNrZXkYASABKAkSPAoFdmFsdWUYAiABKAsyLS5wcm90b2J1Zl90",
+ "ZXN0X21lc3NhZ2VzLnByb3RvMy5Gb3JlaWduTWVzc2FnZToCOAEaeAoYTWFw",
+ "U3RyaW5nTmVzdGVkRW51bUVudHJ5EgsKA2tleRgBIAEoCRJLCgV2YWx1ZRgC",
+ "IAEoDjI8LnByb3RvYnVmX3Rlc3RfbWVzc2FnZXMucHJvdG8zLlRlc3RBbGxU",
+ "eXBlc1Byb3RvMy5OZXN0ZWRFbnVtOgI4ARpnChlNYXBTdHJpbmdGb3JlaWdu",
+ "RW51bUVudHJ5EgsKA2tleRgBIAEoCRI5CgV2YWx1ZRgCIAEoDjIqLnByb3Rv",
+ "YnVmX3Rlc3RfbWVzc2FnZXMucHJvdG8zLkZvcmVpZ25FbnVtOgI4ASI5CgpO",
+ "ZXN0ZWRFbnVtEgcKA0ZPTxAAEgcKA0JBUhABEgcKA0JBWhACEhAKA05FRxD/",
+ "//////////8BIlkKC0FsaWFzZWRFbnVtEg0KCUFMSUFTX0ZPTxAAEg0KCUFM",
+ "SUFTX0JBUhABEg0KCUFMSUFTX0JBWhACEgcKA1FVWBACEgcKA3F1eBACEgcK",
+ "A2JBehACGgIQAUINCgtvbmVvZl9maWVsZEoGCPUDEP8DIhsKDkZvcmVpZ25N",
+ "ZXNzYWdlEgkKAWMYASABKAUqQAoLRm9yZWlnbkVudW0SDwoLRk9SRUlHTl9G",
+ "T08QABIPCgtGT1JFSUdOX0JBUhABEg8KC0ZPUkVJR05fQkFaEAJCOAooY29t",
+ "Lmdvb2dsZS5wcm90b2J1Zl90ZXN0X21lc3NhZ2VzLnByb3RvM0gB+AEBogIG",
+ "UHJvdG8zYgZwcm90bzM="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::Google.Protobuf.WellKnownTypes.AnyReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.DurationReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.FieldMaskReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.StructReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.WrappersReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(new[] {typeof(global::ProtobufTestMessages.Proto3.ForeignEnum), }, null, new pbr::GeneratedClrTypeInfo[] {
- new pbr::GeneratedClrTypeInfo(typeof(global::ProtobufTestMessages.Proto3.TestAllTypesProto3), global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Parser, new[]{ "OptionalInt32", "OptionalInt64", "OptionalUint32", "OptionalUint64", "OptionalSint32", "OptionalSint64", "OptionalFixed32", "OptionalFixed64", "OptionalSfixed32", "OptionalSfixed64", "OptionalFloat", "OptionalDouble", "OptionalBool", "OptionalString", "OptionalBytes", "OptionalNestedMessage", "OptionalForeignMessage", "OptionalNestedEnum", "OptionalForeignEnum", "OptionalAliasedEnum", "OptionalStringPiece", "OptionalCord", "RecursiveMessage", "RepeatedInt32", "RepeatedInt64", "RepeatedUint32", "RepeatedUint64", "RepeatedSint32", "RepeatedSint64", "RepeatedFixed32", "RepeatedFixed64", "RepeatedSfixed32", "RepeatedSfixed64", "RepeatedFloat", "RepeatedDouble", "RepeatedBool", "RepeatedString", "RepeatedBytes", "RepeatedNestedMessage", "RepeatedForeignMessage", "RepeatedNestedEnum", "RepeatedForeignEnum", "RepeatedStringPiece", "RepeatedCord", "MapInt32Int32", "MapInt64Int64", "MapUint32Uint32", "MapUint64Uint64", "MapSint32Sint32", "MapSint64Sint64", "MapFixed32Fixed32", "MapFixed64Fixed64", "MapSfixed32Sfixed32", "MapSfixed64Sfixed64", "MapInt32Float", "MapInt32Double", "MapBoolBool", "MapStringString", "MapStringBytes", "MapStringNestedMessage", "MapStringForeignMessage", "MapStringNestedEnum", "MapStringForeignEnum", "OneofUint32", "OneofNestedMessage", "OneofString", "OneofBytes", "OneofBool", "OneofUint64", "OneofFloat", "OneofDouble", "OneofEnum", "OptionalBoolWrapper", "OptionalInt32Wrapper", "OptionalInt64Wrapper", "OptionalUint32Wrapper", "OptionalUint64Wrapper", "OptionalFloatWrapper", "OptionalDoubleWrapper", "OptionalStringWrapper", "OptionalBytesWrapper", "RepeatedBoolWrapper", "RepeatedInt32Wrapper", "RepeatedInt64Wrapper", "RepeatedUint32Wrapper", "RepeatedUint64Wrapper", "RepeatedFloatWrapper", "RepeatedDoubleWrapper", "RepeatedStringWrapper", "RepeatedBytesWrapper", "OptionalDuration", "OptionalTimestamp", "OptionalFieldMask", "OptionalStruct", "OptionalAny", "OptionalValue", "RepeatedDuration", "RepeatedTimestamp", "RepeatedFieldmask", "RepeatedStruct", "RepeatedAny", "RepeatedValue", "RepeatedListValue", "Fieldname1", "FieldName2", "FieldName3", "FieldName4", "Field0Name5", "Field0Name6", "FieldName7", "FieldName8", "FieldName9", "FieldName10", "FIELDNAME11", "FIELDName12", "FieldName13", "FieldName14", "FieldName15", "FieldName16", "FieldName17", "FieldName18" }, new[]{ "OneofField" }, new[]{ typeof(global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedEnum), typeof(global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.AliasedEnum) }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedMessage), global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedMessage.Parser, new[]{ "A", "Corecursive" }, null, null, null, null),
+ new pbr::GeneratedClrTypeInfo(typeof(global::ProtobufTestMessages.Proto3.TestAllTypesProto3), global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Parser, new[]{ "OptionalInt32", "OptionalInt64", "OptionalUint32", "OptionalUint64", "OptionalSint32", "OptionalSint64", "OptionalFixed32", "OptionalFixed64", "OptionalSfixed32", "OptionalSfixed64", "OptionalFloat", "OptionalDouble", "OptionalBool", "OptionalString", "OptionalBytes", "OptionalNestedMessage", "OptionalForeignMessage", "OptionalNestedEnum", "OptionalForeignEnum", "OptionalAliasedEnum", "OptionalStringPiece", "OptionalCord", "RecursiveMessage", "RepeatedInt32", "RepeatedInt64", "RepeatedUint32", "RepeatedUint64", "RepeatedSint32", "RepeatedSint64", "RepeatedFixed32", "RepeatedFixed64", "RepeatedSfixed32", "RepeatedSfixed64", "RepeatedFloat", "RepeatedDouble", "RepeatedBool", "RepeatedString", "RepeatedBytes", "RepeatedNestedMessage", "RepeatedForeignMessage", "RepeatedNestedEnum", "RepeatedForeignEnum", "RepeatedStringPiece", "RepeatedCord", "PackedInt32", "PackedInt64", "PackedUint32", "PackedUint64", "PackedSint32", "PackedSint64", "PackedFixed32", "PackedFixed64", "PackedSfixed32", "PackedSfixed64", "PackedFloat", "PackedDouble", "PackedBool", "PackedNestedEnum", "UnpackedInt32", "UnpackedInt64", "UnpackedUint32", "UnpackedUint64", "UnpackedSint32", "UnpackedSint64", "UnpackedFixed32", "UnpackedFixed64", "UnpackedSfixed32", "UnpackedSfixed64", "UnpackedFloat", "UnpackedDouble", "UnpackedBool", "UnpackedNestedEnum", "MapInt32Int32", "MapInt64Int64", "MapUint32Uint32", "MapUint64Uint64", "MapSint32Sint32", "MapSint64Sint64", "MapFixed32Fixed32", "MapFixed64Fixed64", "MapSfixed32Sfixed32", "MapSfixed64Sfixed64", "MapInt32Float", "MapInt32Double", "MapBoolBool", "MapStringString", "MapStringBytes", "MapStringNestedMessage", "MapStringForeignMessage", "MapStringNestedEnum", "MapStringForeignEnum", "OneofUint32", "OneofNestedMessage", "OneofString", "OneofBytes", "OneofBool", "OneofUint64", "OneofFloat", "OneofDouble", "OneofEnum", "OptionalBoolWrapper", "OptionalInt32Wrapper", "OptionalInt64Wrapper", "OptionalUint32Wrapper", "OptionalUint64Wrapper", "OptionalFloatWrapper", "OptionalDoubleWrapper", "OptionalStringWrapper", "OptionalBytesWrapper", "RepeatedBoolWrapper", "RepeatedInt32Wrapper", "RepeatedInt64Wrapper", "RepeatedUint32Wrapper", "RepeatedUint64Wrapper", "RepeatedFloatWrapper", "RepeatedDoubleWrapper", "RepeatedStringWrapper", "RepeatedBytesWrapper", "OptionalDuration", "OptionalTimestamp", "OptionalFieldMask", "OptionalStruct", "OptionalAny", "OptionalValue", "RepeatedDuration", "RepeatedTimestamp", "RepeatedFieldmask", "RepeatedStruct", "RepeatedAny", "RepeatedValue", "RepeatedListValue", "Fieldname1", "FieldName2", "FieldName3", "FieldName4", "Field0Name5", "Field0Name6", "FieldName7", "FieldName8", "FieldName9", "FieldName10", "FIELDNAME11", "FIELDName12", "FieldName13", "FieldName14", "FieldName15", "FieldName16", "FieldName17", "FieldName18" }, new[]{ "OneofField" }, new[]{ typeof(global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedEnum), typeof(global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.AliasedEnum) }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedMessage), global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedMessage.Parser, new[]{ "A", "Corecursive" }, null, null, null, null),
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, }),
new pbr::GeneratedClrTypeInfo(typeof(global::ProtobufTestMessages.Proto3.ForeignMessage), global::ProtobufTestMessages.Proto3.ForeignMessage.Parser, new[]{ "C" }, null, null, null, null)
}));
@@ -307,6 +328,34 @@ public sealed partial class TestAllTypesProto3 : pb::IMessageField number for the "packed_int32" field.
+ public const int PackedInt32FieldNumber = 75;
+ private static readonly pb::FieldCodec _repeated_packedInt32_codec
+ = pb::FieldCodec.ForInt32(602);
+ private readonly pbc::RepeatedField packedInt32_ = new pbc::RepeatedField();
+ ///
+ /// Packed
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField PackedInt32 {
+ get { return packedInt32_; }
+ }
+
+ /// Field number for the "packed_int64" field.
+ public const int PackedInt64FieldNumber = 76;
+ private static readonly pb::FieldCodec _repeated_packedInt64_codec
+ = pb::FieldCodec.ForInt64(610);
+ private readonly pbc::RepeatedField packedInt64_ = new pbc::RepeatedField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField PackedInt64 {
+ get { return packedInt64_; }
+ }
+
+ /// Field number for the "packed_uint32" field.
+ public const int PackedUint32FieldNumber = 77;
+ private static readonly pb::FieldCodec _repeated_packedUint32_codec
+ = pb::FieldCodec.ForUInt32(618);
+ private readonly pbc::RepeatedField packedUint32_ = new pbc::RepeatedField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField PackedUint32 {
+ get { return packedUint32_; }
+ }
+
+ /// Field number for the "packed_uint64" field.
+ public const int PackedUint64FieldNumber = 78;
+ private static readonly pb::FieldCodec _repeated_packedUint64_codec
+ = pb::FieldCodec.ForUInt64(626);
+ private readonly pbc::RepeatedField packedUint64_ = new pbc::RepeatedField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField PackedUint64 {
+ get { return packedUint64_; }
+ }
+
+ /// Field number for the "packed_sint32" field.
+ public const int PackedSint32FieldNumber = 79;
+ private static readonly pb::FieldCodec _repeated_packedSint32_codec
+ = pb::FieldCodec.ForSInt32(634);
+ private readonly pbc::RepeatedField packedSint32_ = new pbc::RepeatedField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField PackedSint32 {
+ get { return packedSint32_; }
+ }
+
+ /// Field number for the "packed_sint64" field.
+ public const int PackedSint64FieldNumber = 80;
+ private static readonly pb::FieldCodec _repeated_packedSint64_codec
+ = pb::FieldCodec.ForSInt64(642);
+ private readonly pbc::RepeatedField packedSint64_ = new pbc::RepeatedField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField PackedSint64 {
+ get { return packedSint64_; }
+ }
+
+ /// Field number for the "packed_fixed32" field.
+ public const int PackedFixed32FieldNumber = 81;
+ private static readonly pb::FieldCodec _repeated_packedFixed32_codec
+ = pb::FieldCodec.ForFixed32(650);
+ private readonly pbc::RepeatedField packedFixed32_ = new pbc::RepeatedField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField PackedFixed32 {
+ get { return packedFixed32_; }
+ }
+
+ /// Field number for the "packed_fixed64" field.
+ public const int PackedFixed64FieldNumber = 82;
+ private static readonly pb::FieldCodec _repeated_packedFixed64_codec
+ = pb::FieldCodec.ForFixed64(658);
+ private readonly pbc::RepeatedField packedFixed64_ = new pbc::RepeatedField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField PackedFixed64 {
+ get { return packedFixed64_; }
+ }
+
+ /// Field number for the "packed_sfixed32" field.
+ public const int PackedSfixed32FieldNumber = 83;
+ private static readonly pb::FieldCodec _repeated_packedSfixed32_codec
+ = pb::FieldCodec.ForSFixed32(666);
+ private readonly pbc::RepeatedField packedSfixed32_ = new pbc::RepeatedField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField PackedSfixed32 {
+ get { return packedSfixed32_; }
+ }
+
+ /// Field number for the "packed_sfixed64" field.
+ public const int PackedSfixed64FieldNumber = 84;
+ private static readonly pb::FieldCodec _repeated_packedSfixed64_codec
+ = pb::FieldCodec.ForSFixed64(674);
+ private readonly pbc::RepeatedField packedSfixed64_ = new pbc::RepeatedField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField PackedSfixed64 {
+ get { return packedSfixed64_; }
+ }
+
+ /// Field number for the "packed_float" field.
+ public const int PackedFloatFieldNumber = 85;
+ private static readonly pb::FieldCodec _repeated_packedFloat_codec
+ = pb::FieldCodec.ForFloat(682);
+ private readonly pbc::RepeatedField packedFloat_ = new pbc::RepeatedField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField PackedFloat {
+ get { return packedFloat_; }
+ }
+
+ /// Field number for the "packed_double" field.
+ public const int PackedDoubleFieldNumber = 86;
+ private static readonly pb::FieldCodec _repeated_packedDouble_codec
+ = pb::FieldCodec.ForDouble(690);
+ private readonly pbc::RepeatedField packedDouble_ = new pbc::RepeatedField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField PackedDouble {
+ get { return packedDouble_; }
+ }
+
+ /// Field number for the "packed_bool" field.
+ public const int PackedBoolFieldNumber = 87;
+ private static readonly pb::FieldCodec _repeated_packedBool_codec
+ = pb::FieldCodec.ForBool(698);
+ private readonly pbc::RepeatedField packedBool_ = new pbc::RepeatedField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField PackedBool {
+ get { return packedBool_; }
+ }
+
+ /// Field number for the "packed_nested_enum" field.
+ public const int PackedNestedEnumFieldNumber = 88;
+ private static readonly pb::FieldCodec _repeated_packedNestedEnum_codec
+ = pb::FieldCodec.ForEnum(706, x => (int) x, x => (global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedEnum) x);
+ private readonly pbc::RepeatedField packedNestedEnum_ = new pbc::RepeatedField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField PackedNestedEnum {
+ get { return packedNestedEnum_; }
+ }
+
+ /// Field number for the "unpacked_int32" field.
+ public const int UnpackedInt32FieldNumber = 89;
+ private static readonly pb::FieldCodec _repeated_unpackedInt32_codec
+ = pb::FieldCodec.ForInt32(712);
+ private readonly pbc::RepeatedField unpackedInt32_ = new pbc::RepeatedField();
+ ///
+ /// Unpacked
+ ///
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField UnpackedInt32 {
+ get { return unpackedInt32_; }
+ }
+
+ /// Field number for the "unpacked_int64" field.
+ public const int UnpackedInt64FieldNumber = 90;
+ private static readonly pb::FieldCodec _repeated_unpackedInt64_codec
+ = pb::FieldCodec.ForInt64(720);
+ private readonly pbc::RepeatedField unpackedInt64_ = new pbc::RepeatedField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField UnpackedInt64 {
+ get { return unpackedInt64_; }
+ }
+
+ /// Field number for the "unpacked_uint32" field.
+ public const int UnpackedUint32FieldNumber = 91;
+ private static readonly pb::FieldCodec _repeated_unpackedUint32_codec
+ = pb::FieldCodec.ForUInt32(728);
+ private readonly pbc::RepeatedField unpackedUint32_ = new pbc::RepeatedField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField UnpackedUint32 {
+ get { return unpackedUint32_; }
+ }
+
+ /// Field number for the "unpacked_uint64" field.
+ public const int UnpackedUint64FieldNumber = 92;
+ private static readonly pb::FieldCodec _repeated_unpackedUint64_codec
+ = pb::FieldCodec.ForUInt64(736);
+ private readonly pbc::RepeatedField unpackedUint64_ = new pbc::RepeatedField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField UnpackedUint64 {
+ get { return unpackedUint64_; }
+ }
+
+ /// Field number for the "unpacked_sint32" field.
+ public const int UnpackedSint32FieldNumber = 93;
+ private static readonly pb::FieldCodec _repeated_unpackedSint32_codec
+ = pb::FieldCodec.ForSInt32(744);
+ private readonly pbc::RepeatedField unpackedSint32_ = new pbc::RepeatedField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField UnpackedSint32 {
+ get { return unpackedSint32_; }
+ }
+
+ /// Field number for the "unpacked_sint64" field.
+ public const int UnpackedSint64FieldNumber = 94;
+ private static readonly pb::FieldCodec _repeated_unpackedSint64_codec
+ = pb::FieldCodec.ForSInt64(752);
+ private readonly pbc::RepeatedField unpackedSint64_ = new pbc::RepeatedField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField UnpackedSint64 {
+ get { return unpackedSint64_; }
+ }
+
+ /// Field number for the "unpacked_fixed32" field.
+ public const int UnpackedFixed32FieldNumber = 95;
+ private static readonly pb::FieldCodec _repeated_unpackedFixed32_codec
+ = pb::FieldCodec.ForFixed32(765);
+ private readonly pbc::RepeatedField unpackedFixed32_ = new pbc::RepeatedField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField UnpackedFixed32 {
+ get { return unpackedFixed32_; }
+ }
+
+ /// Field number for the "unpacked_fixed64" field.
+ public const int UnpackedFixed64FieldNumber = 96;
+ private static readonly pb::FieldCodec _repeated_unpackedFixed64_codec
+ = pb::FieldCodec.ForFixed64(769);
+ private readonly pbc::RepeatedField unpackedFixed64_ = new pbc::RepeatedField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField UnpackedFixed64 {
+ get { return unpackedFixed64_; }
+ }
+
+ /// Field number for the "unpacked_sfixed32" field.
+ public const int UnpackedSfixed32FieldNumber = 97;
+ private static readonly pb::FieldCodec _repeated_unpackedSfixed32_codec
+ = pb::FieldCodec.ForSFixed32(781);
+ private readonly pbc::RepeatedField unpackedSfixed32_ = new pbc::RepeatedField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField UnpackedSfixed32 {
+ get { return unpackedSfixed32_; }
+ }
+
+ /// Field number for the "unpacked_sfixed64" field.
+ public const int UnpackedSfixed64FieldNumber = 98;
+ private static readonly pb::FieldCodec _repeated_unpackedSfixed64_codec
+ = pb::FieldCodec.ForSFixed64(785);
+ private readonly pbc::RepeatedField unpackedSfixed64_ = new pbc::RepeatedField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField UnpackedSfixed64 {
+ get { return unpackedSfixed64_; }
+ }
+
+ /// Field number for the "unpacked_float" field.
+ public const int UnpackedFloatFieldNumber = 99;
+ private static readonly pb::FieldCodec _repeated_unpackedFloat_codec
+ = pb::FieldCodec.ForFloat(797);
+ private readonly pbc::RepeatedField unpackedFloat_ = new pbc::RepeatedField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField UnpackedFloat {
+ get { return unpackedFloat_; }
+ }
+
+ /// Field number for the "unpacked_double" field.
+ public const int UnpackedDoubleFieldNumber = 100;
+ private static readonly pb::FieldCodec _repeated_unpackedDouble_codec
+ = pb::FieldCodec.ForDouble(801);
+ private readonly pbc::RepeatedField unpackedDouble_ = new pbc::RepeatedField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField UnpackedDouble {
+ get { return unpackedDouble_; }
+ }
+
+ /// Field number for the "unpacked_bool" field.
+ public const int UnpackedBoolFieldNumber = 101;
+ private static readonly pb::FieldCodec _repeated_unpackedBool_codec
+ = pb::FieldCodec.ForBool(808);
+ private readonly pbc::RepeatedField unpackedBool_ = new pbc::RepeatedField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField UnpackedBool {
+ get { return unpackedBool_; }
+ }
+
+ /// Field number for the "unpacked_nested_enum" field.
+ public const int UnpackedNestedEnumFieldNumber = 102;
+ private static readonly pb::FieldCodec _repeated_unpackedNestedEnum_codec
+ = pb::FieldCodec.ForEnum(816, x => (int) x, x => (global::ProtobufTestMessages.Proto3.TestAllTypesProto3.Types.NestedEnum) x);
+ private readonly pbc::RepeatedField unpackedNestedEnum_ = new pbc::RepeatedField();
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
+ public pbc::RepeatedField UnpackedNestedEnum {
+ get { return unpackedNestedEnum_; }
+ }
+
/// Field number for the "map_int32_int32" field.
public const int MapInt32Int32FieldNumber = 56;
private static readonly pbc::MapField.Codec _map_mapInt32Int32_codec
@@ -1805,6 +2140,34 @@ public enum OneofFieldOneofCase {
if(!repeatedForeignEnum_.Equals(other.repeatedForeignEnum_)) return false;
if(!repeatedStringPiece_.Equals(other.repeatedStringPiece_)) return false;
if(!repeatedCord_.Equals(other.repeatedCord_)) return false;
+ if(!packedInt32_.Equals(other.packedInt32_)) return false;
+ if(!packedInt64_.Equals(other.packedInt64_)) return false;
+ if(!packedUint32_.Equals(other.packedUint32_)) return false;
+ if(!packedUint64_.Equals(other.packedUint64_)) return false;
+ if(!packedSint32_.Equals(other.packedSint32_)) return false;
+ if(!packedSint64_.Equals(other.packedSint64_)) return false;
+ if(!packedFixed32_.Equals(other.packedFixed32_)) return false;
+ if(!packedFixed64_.Equals(other.packedFixed64_)) return false;
+ if(!packedSfixed32_.Equals(other.packedSfixed32_)) return false;
+ if(!packedSfixed64_.Equals(other.packedSfixed64_)) return false;
+ if(!packedFloat_.Equals(other.packedFloat_)) return false;
+ if(!packedDouble_.Equals(other.packedDouble_)) return false;
+ if(!packedBool_.Equals(other.packedBool_)) return false;
+ if(!packedNestedEnum_.Equals(other.packedNestedEnum_)) return false;
+ if(!unpackedInt32_.Equals(other.unpackedInt32_)) return false;
+ if(!unpackedInt64_.Equals(other.unpackedInt64_)) return false;
+ if(!unpackedUint32_.Equals(other.unpackedUint32_)) return false;
+ if(!unpackedUint64_.Equals(other.unpackedUint64_)) return false;
+ if(!unpackedSint32_.Equals(other.unpackedSint32_)) return false;
+ if(!unpackedSint64_.Equals(other.unpackedSint64_)) return false;
+ if(!unpackedFixed32_.Equals(other.unpackedFixed32_)) return false;
+ if(!unpackedFixed64_.Equals(other.unpackedFixed64_)) return false;
+ if(!unpackedSfixed32_.Equals(other.unpackedSfixed32_)) return false;
+ if(!unpackedSfixed64_.Equals(other.unpackedSfixed64_)) return false;
+ if(!unpackedFloat_.Equals(other.unpackedFloat_)) return false;
+ if(!unpackedDouble_.Equals(other.unpackedDouble_)) return false;
+ if(!unpackedBool_.Equals(other.unpackedBool_)) return false;
+ if(!unpackedNestedEnum_.Equals(other.unpackedNestedEnum_)) return false;
if (!MapInt32Int32.Equals(other.MapInt32Int32)) return false;
if (!MapInt64Int64.Equals(other.MapInt64Int64)) return false;
if (!MapUint32Uint32.Equals(other.MapUint32Uint32)) return false;
@@ -1933,6 +2296,34 @@ public enum OneofFieldOneofCase {
hash ^= repeatedForeignEnum_.GetHashCode();
hash ^= repeatedStringPiece_.GetHashCode();
hash ^= repeatedCord_.GetHashCode();
+ hash ^= packedInt32_.GetHashCode();
+ hash ^= packedInt64_.GetHashCode();
+ hash ^= packedUint32_.GetHashCode();
+ hash ^= packedUint64_.GetHashCode();
+ hash ^= packedSint32_.GetHashCode();
+ hash ^= packedSint64_.GetHashCode();
+ hash ^= packedFixed32_.GetHashCode();
+ hash ^= packedFixed64_.GetHashCode();
+ hash ^= packedSfixed32_.GetHashCode();
+ hash ^= packedSfixed64_.GetHashCode();
+ hash ^= packedFloat_.GetHashCode();
+ hash ^= packedDouble_.GetHashCode();
+ hash ^= packedBool_.GetHashCode();
+ hash ^= packedNestedEnum_.GetHashCode();
+ hash ^= unpackedInt32_.GetHashCode();
+ hash ^= unpackedInt64_.GetHashCode();
+ hash ^= unpackedUint32_.GetHashCode();
+ hash ^= unpackedUint64_.GetHashCode();
+ hash ^= unpackedSint32_.GetHashCode();
+ hash ^= unpackedSint64_.GetHashCode();
+ hash ^= unpackedFixed32_.GetHashCode();
+ hash ^= unpackedFixed64_.GetHashCode();
+ hash ^= unpackedSfixed32_.GetHashCode();
+ hash ^= unpackedSfixed64_.GetHashCode();
+ hash ^= unpackedFloat_.GetHashCode();
+ hash ^= unpackedDouble_.GetHashCode();
+ hash ^= unpackedBool_.GetHashCode();
+ hash ^= unpackedNestedEnum_.GetHashCode();
hash ^= MapInt32Int32.GetHashCode();
hash ^= MapInt64Int64.GetHashCode();
hash ^= MapUint32Uint32.GetHashCode();
@@ -2156,6 +2547,34 @@ public enum OneofFieldOneofCase {
mapStringForeignMessage_.WriteTo(output, _map_mapStringForeignMessage_codec);
mapStringNestedEnum_.WriteTo(output, _map_mapStringNestedEnum_codec);
mapStringForeignEnum_.WriteTo(output, _map_mapStringForeignEnum_codec);
+ packedInt32_.WriteTo(output, _repeated_packedInt32_codec);
+ packedInt64_.WriteTo(output, _repeated_packedInt64_codec);
+ packedUint32_.WriteTo(output, _repeated_packedUint32_codec);
+ packedUint64_.WriteTo(output, _repeated_packedUint64_codec);
+ packedSint32_.WriteTo(output, _repeated_packedSint32_codec);
+ packedSint64_.WriteTo(output, _repeated_packedSint64_codec);
+ packedFixed32_.WriteTo(output, _repeated_packedFixed32_codec);
+ packedFixed64_.WriteTo(output, _repeated_packedFixed64_codec);
+ packedSfixed32_.WriteTo(output, _repeated_packedSfixed32_codec);
+ packedSfixed64_.WriteTo(output, _repeated_packedSfixed64_codec);
+ packedFloat_.WriteTo(output, _repeated_packedFloat_codec);
+ packedDouble_.WriteTo(output, _repeated_packedDouble_codec);
+ packedBool_.WriteTo(output, _repeated_packedBool_codec);
+ packedNestedEnum_.WriteTo(output, _repeated_packedNestedEnum_codec);
+ unpackedInt32_.WriteTo(output, _repeated_unpackedInt32_codec);
+ unpackedInt64_.WriteTo(output, _repeated_unpackedInt64_codec);
+ unpackedUint32_.WriteTo(output, _repeated_unpackedUint32_codec);
+ unpackedUint64_.WriteTo(output, _repeated_unpackedUint64_codec);
+ unpackedSint32_.WriteTo(output, _repeated_unpackedSint32_codec);
+ unpackedSint64_.WriteTo(output, _repeated_unpackedSint64_codec);
+ unpackedFixed32_.WriteTo(output, _repeated_unpackedFixed32_codec);
+ unpackedFixed64_.WriteTo(output, _repeated_unpackedFixed64_codec);
+ unpackedSfixed32_.WriteTo(output, _repeated_unpackedSfixed32_codec);
+ unpackedSfixed64_.WriteTo(output, _repeated_unpackedSfixed64_codec);
+ unpackedFloat_.WriteTo(output, _repeated_unpackedFloat_codec);
+ unpackedDouble_.WriteTo(output, _repeated_unpackedDouble_codec);
+ unpackedBool_.WriteTo(output, _repeated_unpackedBool_codec);
+ unpackedNestedEnum_.WriteTo(output, _repeated_unpackedNestedEnum_codec);
if (oneofFieldCase_ == OneofFieldOneofCase.OneofUint32) {
output.WriteRawTag(248, 6);
output.WriteUInt32(OneofUint32);
@@ -2429,6 +2848,34 @@ public enum OneofFieldOneofCase {
size += repeatedForeignEnum_.CalculateSize(_repeated_repeatedForeignEnum_codec);
size += repeatedStringPiece_.CalculateSize(_repeated_repeatedStringPiece_codec);
size += repeatedCord_.CalculateSize(_repeated_repeatedCord_codec);
+ size += packedInt32_.CalculateSize(_repeated_packedInt32_codec);
+ size += packedInt64_.CalculateSize(_repeated_packedInt64_codec);
+ size += packedUint32_.CalculateSize(_repeated_packedUint32_codec);
+ size += packedUint64_.CalculateSize(_repeated_packedUint64_codec);
+ size += packedSint32_.CalculateSize(_repeated_packedSint32_codec);
+ size += packedSint64_.CalculateSize(_repeated_packedSint64_codec);
+ size += packedFixed32_.CalculateSize(_repeated_packedFixed32_codec);
+ size += packedFixed64_.CalculateSize(_repeated_packedFixed64_codec);
+ size += packedSfixed32_.CalculateSize(_repeated_packedSfixed32_codec);
+ size += packedSfixed64_.CalculateSize(_repeated_packedSfixed64_codec);
+ size += packedFloat_.CalculateSize(_repeated_packedFloat_codec);
+ size += packedDouble_.CalculateSize(_repeated_packedDouble_codec);
+ size += packedBool_.CalculateSize(_repeated_packedBool_codec);
+ size += packedNestedEnum_.CalculateSize(_repeated_packedNestedEnum_codec);
+ size += unpackedInt32_.CalculateSize(_repeated_unpackedInt32_codec);
+ size += unpackedInt64_.CalculateSize(_repeated_unpackedInt64_codec);
+ size += unpackedUint32_.CalculateSize(_repeated_unpackedUint32_codec);
+ size += unpackedUint64_.CalculateSize(_repeated_unpackedUint64_codec);
+ size += unpackedSint32_.CalculateSize(_repeated_unpackedSint32_codec);
+ size += unpackedSint64_.CalculateSize(_repeated_unpackedSint64_codec);
+ size += unpackedFixed32_.CalculateSize(_repeated_unpackedFixed32_codec);
+ size += unpackedFixed64_.CalculateSize(_repeated_unpackedFixed64_codec);
+ size += unpackedSfixed32_.CalculateSize(_repeated_unpackedSfixed32_codec);
+ size += unpackedSfixed64_.CalculateSize(_repeated_unpackedSfixed64_codec);
+ size += unpackedFloat_.CalculateSize(_repeated_unpackedFloat_codec);
+ size += unpackedDouble_.CalculateSize(_repeated_unpackedDouble_codec);
+ size += unpackedBool_.CalculateSize(_repeated_unpackedBool_codec);
+ size += unpackedNestedEnum_.CalculateSize(_repeated_unpackedNestedEnum_codec);
size += mapInt32Int32_.CalculateSize(_map_mapInt32Int32_codec);
size += mapInt64Int64_.CalculateSize(_map_mapInt64Int64_codec);
size += mapUint32Uint32_.CalculateSize(_map_mapUint32Uint32_codec);
@@ -2700,6 +3147,34 @@ public enum OneofFieldOneofCase {
repeatedForeignEnum_.Add(other.repeatedForeignEnum_);
repeatedStringPiece_.Add(other.repeatedStringPiece_);
repeatedCord_.Add(other.repeatedCord_);
+ packedInt32_.Add(other.packedInt32_);
+ packedInt64_.Add(other.packedInt64_);
+ packedUint32_.Add(other.packedUint32_);
+ packedUint64_.Add(other.packedUint64_);
+ packedSint32_.Add(other.packedSint32_);
+ packedSint64_.Add(other.packedSint64_);
+ packedFixed32_.Add(other.packedFixed32_);
+ packedFixed64_.Add(other.packedFixed64_);
+ packedSfixed32_.Add(other.packedSfixed32_);
+ packedSfixed64_.Add(other.packedSfixed64_);
+ packedFloat_.Add(other.packedFloat_);
+ packedDouble_.Add(other.packedDouble_);
+ packedBool_.Add(other.packedBool_);
+ packedNestedEnum_.Add(other.packedNestedEnum_);
+ unpackedInt32_.Add(other.unpackedInt32_);
+ unpackedInt64_.Add(other.unpackedInt64_);
+ unpackedUint32_.Add(other.unpackedUint32_);
+ unpackedUint64_.Add(other.unpackedUint64_);
+ unpackedSint32_.Add(other.unpackedSint32_);
+ unpackedSint64_.Add(other.unpackedSint64_);
+ unpackedFixed32_.Add(other.unpackedFixed32_);
+ unpackedFixed64_.Add(other.unpackedFixed64_);
+ unpackedSfixed32_.Add(other.unpackedSfixed32_);
+ unpackedSfixed64_.Add(other.unpackedSfixed64_);
+ unpackedFloat_.Add(other.unpackedFloat_);
+ unpackedDouble_.Add(other.unpackedDouble_);
+ unpackedBool_.Add(other.unpackedBool_);
+ unpackedNestedEnum_.Add(other.unpackedNestedEnum_);
mapInt32Int32_.Add(other.mapInt32Int32_);
mapInt64Int64_.Add(other.mapInt64Int64_);
mapUint32Uint32_.Add(other.mapUint32Uint32_);
@@ -3190,6 +3665,146 @@ public enum OneofFieldOneofCase {
mapStringForeignEnum_.AddEntriesFrom(input, _map_mapStringForeignEnum_codec);
break;
}
+ case 602:
+ case 600: {
+ packedInt32_.AddEntriesFrom(input, _repeated_packedInt32_codec);
+ break;
+ }
+ case 610:
+ case 608: {
+ packedInt64_.AddEntriesFrom(input, _repeated_packedInt64_codec);
+ break;
+ }
+ case 618:
+ case 616: {
+ packedUint32_.AddEntriesFrom(input, _repeated_packedUint32_codec);
+ break;
+ }
+ case 626:
+ case 624: {
+ packedUint64_.AddEntriesFrom(input, _repeated_packedUint64_codec);
+ break;
+ }
+ case 634:
+ case 632: {
+ packedSint32_.AddEntriesFrom(input, _repeated_packedSint32_codec);
+ break;
+ }
+ case 642:
+ case 640: {
+ packedSint64_.AddEntriesFrom(input, _repeated_packedSint64_codec);
+ break;
+ }
+ case 650:
+ case 653: {
+ packedFixed32_.AddEntriesFrom(input, _repeated_packedFixed32_codec);
+ break;
+ }
+ case 658:
+ case 657: {
+ packedFixed64_.AddEntriesFrom(input, _repeated_packedFixed64_codec);
+ break;
+ }
+ case 666:
+ case 669: {
+ packedSfixed32_.AddEntriesFrom(input, _repeated_packedSfixed32_codec);
+ break;
+ }
+ case 674:
+ case 673: {
+ packedSfixed64_.AddEntriesFrom(input, _repeated_packedSfixed64_codec);
+ break;
+ }
+ case 682:
+ case 685: {
+ packedFloat_.AddEntriesFrom(input, _repeated_packedFloat_codec);
+ break;
+ }
+ case 690:
+ case 689: {
+ packedDouble_.AddEntriesFrom(input, _repeated_packedDouble_codec);
+ break;
+ }
+ case 698:
+ case 696: {
+ packedBool_.AddEntriesFrom(input, _repeated_packedBool_codec);
+ break;
+ }
+ case 706:
+ case 704: {
+ packedNestedEnum_.AddEntriesFrom(input, _repeated_packedNestedEnum_codec);
+ break;
+ }
+ case 714:
+ case 712: {
+ unpackedInt32_.AddEntriesFrom(input, _repeated_unpackedInt32_codec);
+ break;
+ }
+ case 722:
+ case 720: {
+ unpackedInt64_.AddEntriesFrom(input, _repeated_unpackedInt64_codec);
+ break;
+ }
+ case 730:
+ case 728: {
+ unpackedUint32_.AddEntriesFrom(input, _repeated_unpackedUint32_codec);
+ break;
+ }
+ case 738:
+ case 736: {
+ unpackedUint64_.AddEntriesFrom(input, _repeated_unpackedUint64_codec);
+ break;
+ }
+ case 746:
+ case 744: {
+ unpackedSint32_.AddEntriesFrom(input, _repeated_unpackedSint32_codec);
+ break;
+ }
+ case 754:
+ case 752: {
+ unpackedSint64_.AddEntriesFrom(input, _repeated_unpackedSint64_codec);
+ break;
+ }
+ case 762:
+ case 765: {
+ unpackedFixed32_.AddEntriesFrom(input, _repeated_unpackedFixed32_codec);
+ break;
+ }
+ case 770:
+ case 769: {
+ unpackedFixed64_.AddEntriesFrom(input, _repeated_unpackedFixed64_codec);
+ break;
+ }
+ case 778:
+ case 781: {
+ unpackedSfixed32_.AddEntriesFrom(input, _repeated_unpackedSfixed32_codec);
+ break;
+ }
+ case 786:
+ case 785: {
+ unpackedSfixed64_.AddEntriesFrom(input, _repeated_unpackedSfixed64_codec);
+ break;
+ }
+ case 794:
+ case 797: {
+ unpackedFloat_.AddEntriesFrom(input, _repeated_unpackedFloat_codec);
+ break;
+ }
+ case 802:
+ case 801: {
+ unpackedDouble_.AddEntriesFrom(input, _repeated_unpackedDouble_codec);
+ break;
+ }
+ case 810:
+ case 808: {
+ unpackedBool_.AddEntriesFrom(input, _repeated_unpackedBool_codec);
+ break;
+ }
+ case 818:
+ case 816: {
+ unpackedNestedEnum_.AddEntriesFrom(input, _repeated_unpackedNestedEnum_codec);
+ break;
+ }
case 888: {
OneofUint32 = input.ReadUInt32();
break;
diff --git a/csharp/src/Google.Protobuf.Test/testprotos.pb b/csharp/src/Google.Protobuf.Test/testprotos.pb
index e7a2fc68ccbe..101fe159cffa 100644
Binary files a/csharp/src/Google.Protobuf.Test/testprotos.pb and b/csharp/src/Google.Protobuf.Test/testprotos.pb differ
diff --git a/csharp/src/Google.Protobuf/Extension.cs b/csharp/src/Google.Protobuf/Extension.cs
index ddeb97795aae..a96f8d29b6a8 100644
--- a/csharp/src/Google.Protobuf/Extension.cs
+++ b/csharp/src/Google.Protobuf/Extension.cs
@@ -35,7 +35,7 @@
namespace Google.Protobuf
{
///
- /// Represents a non-generic extension definition
+ /// Represents a non-generic extension definition. This API is experimental and subject to change.
///
public abstract class Extension
{
@@ -44,9 +44,9 @@ public abstract class Extension
///
/// Internal use. Creates a new extension with the specified field number.
///
- protected Extension(int number)
+ protected Extension(int fieldNumber)
{
- FieldNumber = number;
+ FieldNumber = fieldNumber;
}
internal abstract IExtensionValue CreateValue();
@@ -58,7 +58,8 @@ protected Extension(int number)
}
///
- /// Represents a type-safe extension identifier used for getting and setting single extension values in instances
+ /// Represents a type-safe extension identifier used for getting and setting single extension values in instances.
+ /// This API is experimental and subject to change.
///
/// The message type this field applies to
/// The field value type of this extension
@@ -69,7 +70,7 @@ public sealed class Extension : Extension where TTarget : IExte
///
/// Creates a new extension identifier with the specified field number and codec
///
- public Extension(int number, FieldCodec codec) : base(number)
+ public Extension(int fieldNumber, FieldCodec codec) : base(fieldNumber)
{
this.codec = codec;
}
@@ -85,7 +86,8 @@ internal override IExtensionValue CreateValue()
}
///
- /// Represents a type-safe extension identifier used for getting repeated extension values in instances
+ /// Represents a type-safe extension identifier used for getting repeated extension values in instances.
+ /// This API is experimental and subject to change.
///
/// The message type this field applies to
/// The repeated field value type of this extension
@@ -96,7 +98,7 @@ public sealed class RepeatedExtension : Extension where TTarget
///
/// Creates a new repeated extension identifier with the specified field number and codec
///
- public RepeatedExtension(int number, FieldCodec codec) : base(number)
+ public RepeatedExtension(int fieldNumber, FieldCodec codec) : base(fieldNumber)
{
this.codec = codec;
}
diff --git a/csharp/src/Google.Protobuf/ExtensionRegistry.cs b/csharp/src/Google.Protobuf/ExtensionRegistry.cs
index ea655c123e2c..b8eee241769c 100644
--- a/csharp/src/Google.Protobuf/ExtensionRegistry.cs
+++ b/csharp/src/Google.Protobuf/ExtensionRegistry.cs
@@ -38,7 +38,7 @@
namespace Google.Protobuf
{
///
- /// Provides extensions to messages while parsing
+ /// Provides extensions to messages while parsing. This API is experimental and subject to change.
///
public sealed class ExtensionRegistry : ICollection, IDeepCloneable
{
@@ -67,9 +67,9 @@ private ExtensionRegistry(IDictionary, Extension> collection
///
bool ICollection.IsReadOnly => false;
- internal bool ContainsInputField(CodedInputStream stream, Type target, out Extension extension)
- {
- return extensions.TryGetValue(new ObjectIntPair(target, WireFormat.GetTagFieldNumber(stream.LastTag)), out extension);
+ internal bool ContainsInputField(CodedInputStream stream, Type target, out Extension extension)
+ {
+ return extensions.TryGetValue(new ObjectIntPair(target, WireFormat.GetTagFieldNumber(stream.LastTag)), out extension);
}
///
@@ -82,24 +82,14 @@ public void Add(Extension extension)
extensions.Add(new ObjectIntPair(extension.TargetType, extension.FieldNumber), extension);
}
- ///
- /// Adds the specified extensions to the registry
- ///
- public void Add(params Extension[] newExtensions)
- {
- ProtoPreconditions.CheckNotNull(newExtensions, nameof(newExtensions));
-
- Add((IEnumerable)newExtensions);
- }
-
///
/// Adds the specified extensions to the reigstry
///
- public void Add(IEnumerable newExtensions)
+ public void AddRange(IEnumerable extensions)
{
- ProtoPreconditions.CheckNotNull(newExtensions, nameof(newExtensions));
+ ProtoPreconditions.CheckNotNull(extensions, nameof(extensions));
- foreach (var extension in newExtensions)
+ foreach (var extension in extensions)
Add(extension);
}
@@ -134,10 +124,10 @@ void ICollection.CopyTo(Extension[] array, int arrayIndex)
if (array.Length - arrayIndex < Count)
throw new ArgumentException("The provided array is shorter than the number of elements in the registry");
- for (int i = 0; i < array.Length; i++)
- {
- Extension extension = array[i];
- extensions.Add(new ObjectIntPair(extension.TargetType, extension.FieldNumber), extension);
+ for (int i = 0; i < array.Length; i++)
+ {
+ Extension extension = array[i];
+ extensions.Add(new ObjectIntPair(extension.TargetType, extension.FieldNumber), extension);
}
}
diff --git a/csharp/src/Google.Protobuf/ExtensionSet.cs b/csharp/src/Google.Protobuf/ExtensionSet.cs
index fa81e6a633a0..a46e4997abfa 100644
--- a/csharp/src/Google.Protobuf/ExtensionSet.cs
+++ b/csharp/src/Google.Protobuf/ExtensionSet.cs
@@ -40,11 +40,11 @@ namespace Google.Protobuf
///
/// Methods for managing s with null checking.
///
- /// Most users will not use this class directly
+ /// Most users will not use this class directly and its API is experimental and subject to change.
///
public static class ExtensionSet
{
- private static bool GetValue(ref ExtensionSet set, Extension extension, out IExtensionValue value) where TTarget : IExtendableMessage
+ private static bool TryGetValue(ref ExtensionSet set, Extension extension, out IExtensionValue value) where TTarget : IExtendableMessage
{
if (set == null)
{
@@ -60,7 +60,7 @@ public static class ExtensionSet
public static TValue Get(ref ExtensionSet set, Extension extension) where TTarget : IExtendableMessage
{
IExtensionValue value;
- if (GetValue(ref set, extension, out value))
+ if (TryGetValue(ref set, extension, out value))
{
return ((ExtensionValue)value).GetValue();
}
@@ -76,7 +76,7 @@ public static class ExtensionSet
public static RepeatedField Get(ref ExtensionSet set, RepeatedExtension extension) where TTarget : IExtendableMessage
{
IExtensionValue value;
- if (GetValue(ref set, extension, out value))
+ if (TryGetValue(ref set, extension, out value))
{
return ((RepeatedExtensionValue)value).GetValue();
}
@@ -111,7 +111,7 @@ public static class ExtensionSet
}
///
- /// Sets the value of the specified extension
+ /// Sets the value of the specified extension. This will make a new instance of ExtensionSet if the set is null.
///
public static void Set(ref ExtensionSet set, Extension extension, TValue value) where TTarget : IExtendableMessage
{
@@ -140,14 +140,7 @@ public static class ExtensionSet
public static bool Has(ref ExtensionSet set, Extension extension) where TTarget : IExtendableMessage
{
IExtensionValue value;
- if (GetValue(ref set, extension, out value))
- {
- return ((ExtensionValue)value).HasValue;
- }
- else
- {
- return false;
- }
+ return TryGetValue(ref set, extension, out value);
}
///
diff --git a/csharp/src/Google.Protobuf/Google.Protobuf.csproj b/csharp/src/Google.Protobuf/Google.Protobuf.csproj
index f93897f3e97d..222f0fc56cf0 100644
--- a/csharp/src/Google.Protobuf/Google.Protobuf.csproj
+++ b/csharp/src/Google.Protobuf/Google.Protobuf.csproj
@@ -4,7 +4,7 @@
C# runtime library for Protocol Buffers - Google's data interchange format.Copyright 2015, Google Inc.Google Protocol Buffers
- 3.9.0-rc1
+ 3.9.16Google Inc.netstandard1.0;netstandard2.0;net45
diff --git a/csharp/src/Google.Protobuf/Reflection/FileDescriptor.cs b/csharp/src/Google.Protobuf/Reflection/FileDescriptor.cs
index 4c2fe54d560b..9b20e3d22ad6 100644
--- a/csharp/src/Google.Protobuf/Reflection/FileDescriptor.cs
+++ b/csharp/src/Google.Protobuf/Reflection/FileDescriptor.cs
@@ -407,7 +407,7 @@ private void CrossLink()
private static void AddAllExtensions(FileDescriptor[] dependencies, GeneratedClrTypeInfo generatedInfo, ExtensionRegistry registry)
{
- registry.Add(dependencies.SelectMany(GetAllDependedExtensions).Concat(GetAllGeneratedExtensions(generatedInfo)).ToArray());
+ registry.AddRange(dependencies.SelectMany(GetAllDependedExtensions).Concat(GetAllGeneratedExtensions(generatedInfo)).ToArray());
}
private static IEnumerable GetAllGeneratedExtensions(GeneratedClrTypeInfo generated)
diff --git a/java/bom/pom.xml b/java/bom/pom.xml
index 485dabfacbbc..792febb7b5cb 100644
--- a/java/bom/pom.xml
+++ b/java/bom/pom.xml
@@ -4,7 +4,7 @@
com.google.protobufprotobuf-bom
- 3.9.0-rc-1
+ 3.9.1pomProtocol Buffers [BOM]
diff --git a/java/core/pom.xml b/java/core/pom.xml
index fb518edd5a0a..0ec16945e25f 100644
--- a/java/core/pom.xml
+++ b/java/core/pom.xml
@@ -4,7 +4,7 @@
com.google.protobufprotobuf-parent
- 3.9.0-rc-1
+ 3.9.1protobuf-java
diff --git a/java/lite/pom.xml b/java/lite/pom.xml
index 5079d9661e42..a0e0b3c7b38e 100644
--- a/java/lite/pom.xml
+++ b/java/lite/pom.xml
@@ -4,7 +4,7 @@
com.google.protobufprotobuf-parent
- 3.9.0-rc-1
+ 3.9.1protobuf-javalite
diff --git a/java/pom.xml b/java/pom.xml
index 383ff5d0e6ca..e680cc816aac 100644
--- a/java/pom.xml
+++ b/java/pom.xml
@@ -4,7 +4,7 @@
com.google.protobufprotobuf-parent
- 3.9.0-rc-1
+ 3.9.1pomProtocol Buffers [Parent]
@@ -142,6 +142,9 @@
jar
+
+ false
+
@@ -188,13 +191,16 @@
org.apache.maven.pluginsmaven-javadoc-plugin
- 2.9.1
+ 2.10.3attach-javadocsjar
+
+ false
+
diff --git a/java/util/pom.xml b/java/util/pom.xml
index b905180dd505..c22ba17b11c3 100644
--- a/java/util/pom.xml
+++ b/java/util/pom.xml
@@ -4,7 +4,7 @@
com.google.protobufprotobuf-parent
- 3.9.0-rc-1
+ 3.9.1protobuf-java-util
diff --git a/js/package.json b/js/package.json
index 9336a1e4a9d2..202e8e4c419e 100644
--- a/js/package.json
+++ b/js/package.json
@@ -1,6 +1,6 @@
{
"name": "google-protobuf",
- "version": "3.9.0-rc.1",
+ "version": "3.9.1",
"description": "Protocol Buffers for JavaScript",
"main": "google-protobuf.js",
"files": [
diff --git a/php/ext/google/protobuf/message.c b/php/ext/google/protobuf/message.c
index 8197dbd12256..d60124ef08bf 100644
--- a/php/ext/google/protobuf/message.c
+++ b/php/ext/google/protobuf/message.c
@@ -471,11 +471,14 @@ void Message_construct(zval* msg, zval* array_wrapper) {
if (upb_fielddef_containingoneof(field)) {
void* memory = slot_memory(intern->descriptor->layout,
message_data(intern), field);
+ uint32_t* oneof_case = slot_oneof_case(intern->descriptor->layout,
+ message_data(intern), field);
int property_cache_index =
intern->descriptor->layout->fields[upb_fielddef_index(field)]
.cache_index;
cached = OBJ_PROP(Z_OBJ_P(msg), property_cache_index);
*(CACHED_VALUE**)(memory) = cached;
+ *oneof_case = upb_fielddef_number(field);
} else {
zend_property_info* property_info;
PHP_PROTO_FAKE_SCOPE_BEGIN(Z_OBJCE_P(msg));
diff --git a/php/ext/google/protobuf/package.xml b/php/ext/google/protobuf/package.xml
index f81e55f1ab0a..5430bc9703da 100644
--- a/php/ext/google/protobuf/package.xml
+++ b/php/ext/google/protobuf/package.xml
@@ -10,15 +10,15 @@
protobuf-opensource@google.comyes
- 2019-06-17
-
+ 2019-08-02
+
- 3.9.0RC1
- 3.9.0
+ 3.9.1
+ 3.9.1
- beta
- beta
+ stable
+ stable3-Clause BSD LicenseGA release.
@@ -361,5 +361,33 @@ G A release.
3-Clause BSD LicenseGA release.
+
+
+ 3.9.0
+ 3.9.0
+
+
+ stable
+ stable
+
+ 2019-07-10
+
+ 3-Clause BSD License
+ GA release.
+
+
+
+ 3.9.1
+ 3.9.1
+
+
+ stable
+ stable
+
+ 2019-08-02
+
+ 3-Clause BSD License
+ GA release.
+
diff --git a/php/ext/google/protobuf/protobuf.h b/php/ext/google/protobuf/protobuf.h
index b2a9b94c828f..1051d7218a7e 100644
--- a/php/ext/google/protobuf/protobuf.h
+++ b/php/ext/google/protobuf/protobuf.h
@@ -37,7 +37,7 @@
#include "upb.h"
#define PHP_PROTOBUF_EXTNAME "protobuf"
-#define PHP_PROTOBUF_VERSION "3.9.0RC1"
+#define PHP_PROTOBUF_VERSION "3.9.1"
#define MAX_LENGTH_OF_INT64 20
#define SIZEOF_INT64 8
@@ -948,6 +948,8 @@ void layout_merge(MessageLayout* layout, MessageHeader* from,
const char* layout_get_oneof_case(MessageLayout* layout, const void* storage,
const upb_oneofdef* oneof TSRMLS_DC);
void free_layout(MessageLayout* layout);
+uint32_t* slot_oneof_case(MessageLayout* layout, const void* storage,
+ const upb_fielddef* field);
void* slot_memory(MessageLayout* layout, const void* storage,
const upb_fielddef* field);
diff --git a/php/ext/google/protobuf/storage.c b/php/ext/google/protobuf/storage.c
index 8f717302dc31..1c28b1c18558 100644
--- a/php/ext/google/protobuf/storage.c
+++ b/php/ext/google/protobuf/storage.c
@@ -572,8 +572,8 @@ static size_t align_up_to(size_t offset, size_t granularity) {
return (offset + granularity - 1) & ~(granularity - 1);
}
-static uint32_t* slot_oneof_case(MessageLayout* layout, const void* storage,
- const upb_fielddef* field) {
+uint32_t* slot_oneof_case(MessageLayout* layout, const void* storage,
+ const upb_fielddef* field) {
return (uint32_t*)(((uint8_t*)storage) +
layout->fields[upb_fielddef_index(field)].case_offset);
}
diff --git a/php/src/Google/Protobuf/Internal/DescriptorProto.php b/php/src/Google/Protobuf/Internal/DescriptorProto.php
index 2d52831451ce..3b215d52ae4d 100644
--- a/php/src/Google/Protobuf/Internal/DescriptorProto.php
+++ b/php/src/Google/Protobuf/Internal/DescriptorProto.php
@@ -15,7 +15,7 @@
*
* Generated from protobuf message google.protobuf.DescriptorProto
*/
-final class DescriptorProto extends \Google\Protobuf\Internal\Message
+class DescriptorProto extends \Google\Protobuf\Internal\Message
{
/**
* Generated from protobuf field optional string name = 1;
diff --git a/php/src/Google/Protobuf/Internal/DescriptorProto/ExtensionRange.php b/php/src/Google/Protobuf/Internal/DescriptorProto/ExtensionRange.php
index fb98f7d5a090..a2057fd5d17e 100644
--- a/php/src/Google/Protobuf/Internal/DescriptorProto/ExtensionRange.php
+++ b/php/src/Google/Protobuf/Internal/DescriptorProto/ExtensionRange.php
@@ -13,7 +13,7 @@
/**
* Generated from protobuf message google.protobuf.DescriptorProto.ExtensionRange
*/
-final class ExtensionRange extends \Google\Protobuf\Internal\Message
+class ExtensionRange extends \Google\Protobuf\Internal\Message
{
/**
* Inclusive.
diff --git a/php/src/Google/Protobuf/Internal/DescriptorProto/ReservedRange.php b/php/src/Google/Protobuf/Internal/DescriptorProto/ReservedRange.php
index fa46419a53ae..73c964faa0b5 100644
--- a/php/src/Google/Protobuf/Internal/DescriptorProto/ReservedRange.php
+++ b/php/src/Google/Protobuf/Internal/DescriptorProto/ReservedRange.php
@@ -17,7 +17,7 @@
*
* Generated from protobuf message google.protobuf.DescriptorProto.ReservedRange
*/
-final class ReservedRange extends \Google\Protobuf\Internal\Message
+class ReservedRange extends \Google\Protobuf\Internal\Message
{
/**
* Inclusive.
diff --git a/php/src/Google/Protobuf/Internal/EnumDescriptorProto.php b/php/src/Google/Protobuf/Internal/EnumDescriptorProto.php
index b7c3a208bec2..da30fa99067f 100644
--- a/php/src/Google/Protobuf/Internal/EnumDescriptorProto.php
+++ b/php/src/Google/Protobuf/Internal/EnumDescriptorProto.php
@@ -15,7 +15,7 @@
*
* Generated from protobuf message google.protobuf.EnumDescriptorProto
*/
-final class EnumDescriptorProto extends \Google\Protobuf\Internal\Message
+class EnumDescriptorProto extends \Google\Protobuf\Internal\Message
{
/**
* Generated from protobuf field optional string name = 1;
diff --git a/php/src/Google/Protobuf/Internal/EnumDescriptorProto/EnumReservedRange.php b/php/src/Google/Protobuf/Internal/EnumDescriptorProto/EnumReservedRange.php
index 0103a1b30178..e1079585ec01 100644
--- a/php/src/Google/Protobuf/Internal/EnumDescriptorProto/EnumReservedRange.php
+++ b/php/src/Google/Protobuf/Internal/EnumDescriptorProto/EnumReservedRange.php
@@ -19,7 +19,7 @@
*
* Generated from protobuf message google.protobuf.EnumDescriptorProto.EnumReservedRange
*/
-final class EnumReservedRange extends \Google\Protobuf\Internal\Message
+class EnumReservedRange extends \Google\Protobuf\Internal\Message
{
/**
* Inclusive.
diff --git a/php/src/Google/Protobuf/Internal/EnumOptions.php b/php/src/Google/Protobuf/Internal/EnumOptions.php
index 4c73d527409d..3d74c81c2176 100644
--- a/php/src/Google/Protobuf/Internal/EnumOptions.php
+++ b/php/src/Google/Protobuf/Internal/EnumOptions.php
@@ -13,7 +13,7 @@
/**
* Generated from protobuf message google.protobuf.EnumOptions
*/
-final class EnumOptions extends \Google\Protobuf\Internal\Message
+class EnumOptions extends \Google\Protobuf\Internal\Message
{
/**
* Set this option to true to allow mapping different tag names to the same
diff --git a/php/src/Google/Protobuf/Internal/EnumValueDescriptorProto.php b/php/src/Google/Protobuf/Internal/EnumValueDescriptorProto.php
index d5a0a9afb532..50bda008e899 100644
--- a/php/src/Google/Protobuf/Internal/EnumValueDescriptorProto.php
+++ b/php/src/Google/Protobuf/Internal/EnumValueDescriptorProto.php
@@ -15,7 +15,7 @@
*
* Generated from protobuf message google.protobuf.EnumValueDescriptorProto
*/
-final class EnumValueDescriptorProto extends \Google\Protobuf\Internal\Message
+class EnumValueDescriptorProto extends \Google\Protobuf\Internal\Message
{
/**
* Generated from protobuf field optional string name = 1;
diff --git a/php/src/Google/Protobuf/Internal/EnumValueOptions.php b/php/src/Google/Protobuf/Internal/EnumValueOptions.php
index 50ac904ff972..a267c6d5e25e 100644
--- a/php/src/Google/Protobuf/Internal/EnumValueOptions.php
+++ b/php/src/Google/Protobuf/Internal/EnumValueOptions.php
@@ -13,7 +13,7 @@
/**
* Generated from protobuf message google.protobuf.EnumValueOptions
*/
-final class EnumValueOptions extends \Google\Protobuf\Internal\Message
+class EnumValueOptions extends \Google\Protobuf\Internal\Message
{
/**
* Is this enum value deprecated?
diff --git a/php/src/Google/Protobuf/Internal/ExtensionRangeOptions.php b/php/src/Google/Protobuf/Internal/ExtensionRangeOptions.php
index 97ad2c055f85..00fbebecaf6a 100644
--- a/php/src/Google/Protobuf/Internal/ExtensionRangeOptions.php
+++ b/php/src/Google/Protobuf/Internal/ExtensionRangeOptions.php
@@ -13,7 +13,7 @@
/**
* Generated from protobuf message google.protobuf.ExtensionRangeOptions
*/
-final class ExtensionRangeOptions extends \Google\Protobuf\Internal\Message
+class ExtensionRangeOptions extends \Google\Protobuf\Internal\Message
{
/**
* The parser stores options it doesn't recognize here. See above.
diff --git a/php/src/Google/Protobuf/Internal/FieldDescriptorProto.php b/php/src/Google/Protobuf/Internal/FieldDescriptorProto.php
index 6f8643c8d72c..e578197515f8 100644
--- a/php/src/Google/Protobuf/Internal/FieldDescriptorProto.php
+++ b/php/src/Google/Protobuf/Internal/FieldDescriptorProto.php
@@ -15,7 +15,7 @@
*
* Generated from protobuf message google.protobuf.FieldDescriptorProto
*/
-final class FieldDescriptorProto extends \Google\Protobuf\Internal\Message
+class FieldDescriptorProto extends \Google\Protobuf\Internal\Message
{
/**
* Generated from protobuf field optional string name = 1;
diff --git a/php/src/Google/Protobuf/Internal/FieldOptions.php b/php/src/Google/Protobuf/Internal/FieldOptions.php
index 47d1951d1659..751c278d7823 100644
--- a/php/src/Google/Protobuf/Internal/FieldOptions.php
+++ b/php/src/Google/Protobuf/Internal/FieldOptions.php
@@ -13,7 +13,7 @@
/**
* Generated from protobuf message google.protobuf.FieldOptions
*/
-final class FieldOptions extends \Google\Protobuf\Internal\Message
+class FieldOptions extends \Google\Protobuf\Internal\Message
{
/**
* The ctype option instructs the C++ code generator to use a different
diff --git a/php/src/Google/Protobuf/Internal/FileDescriptorProto.php b/php/src/Google/Protobuf/Internal/FileDescriptorProto.php
index e95205476cf8..cb10aa79390f 100644
--- a/php/src/Google/Protobuf/Internal/FileDescriptorProto.php
+++ b/php/src/Google/Protobuf/Internal/FileDescriptorProto.php
@@ -15,7 +15,7 @@
*
* Generated from protobuf message google.protobuf.FileDescriptorProto
*/
-final class FileDescriptorProto extends \Google\Protobuf\Internal\Message
+class FileDescriptorProto extends \Google\Protobuf\Internal\Message
{
/**
* file name, relative to root of source tree
diff --git a/php/src/Google/Protobuf/Internal/FileDescriptorSet.php b/php/src/Google/Protobuf/Internal/FileDescriptorSet.php
index c9a38808fb4c..9907b17d73c5 100644
--- a/php/src/Google/Protobuf/Internal/FileDescriptorSet.php
+++ b/php/src/Google/Protobuf/Internal/FileDescriptorSet.php
@@ -16,7 +16,7 @@
*
* Generated from protobuf message google.protobuf.FileDescriptorSet
*/
-final class FileDescriptorSet extends \Google\Protobuf\Internal\Message
+class FileDescriptorSet extends \Google\Protobuf\Internal\Message
{
/**
* Generated from protobuf field repeated .google.protobuf.FileDescriptorProto file = 1;
diff --git a/php/src/Google/Protobuf/Internal/FileOptions.php b/php/src/Google/Protobuf/Internal/FileOptions.php
index 911000501643..6fea195ec18a 100644
--- a/php/src/Google/Protobuf/Internal/FileOptions.php
+++ b/php/src/Google/Protobuf/Internal/FileOptions.php
@@ -13,7 +13,7 @@
/**
* Generated from protobuf message google.protobuf.FileOptions
*/
-final class FileOptions extends \Google\Protobuf\Internal\Message
+class FileOptions extends \Google\Protobuf\Internal\Message
{
/**
* Sets the Java package where classes generated from this .proto will be
diff --git a/php/src/Google/Protobuf/Internal/GeneratedCodeInfo.php b/php/src/Google/Protobuf/Internal/GeneratedCodeInfo.php
index c99d77afa3ad..f5a65bea4610 100644
--- a/php/src/Google/Protobuf/Internal/GeneratedCodeInfo.php
+++ b/php/src/Google/Protobuf/Internal/GeneratedCodeInfo.php
@@ -17,7 +17,7 @@
*
* Generated from protobuf message google.protobuf.GeneratedCodeInfo
*/
-final class GeneratedCodeInfo extends \Google\Protobuf\Internal\Message
+class GeneratedCodeInfo extends \Google\Protobuf\Internal\Message
{
/**
* An Annotation connects some span of text in generated code to an element
diff --git a/php/src/Google/Protobuf/Internal/GeneratedCodeInfo/Annotation.php b/php/src/Google/Protobuf/Internal/GeneratedCodeInfo/Annotation.php
index 8cc3cdf4573f..09f958d2512c 100644
--- a/php/src/Google/Protobuf/Internal/GeneratedCodeInfo/Annotation.php
+++ b/php/src/Google/Protobuf/Internal/GeneratedCodeInfo/Annotation.php
@@ -13,7 +13,7 @@
/**
* Generated from protobuf message google.protobuf.GeneratedCodeInfo.Annotation
*/
-final class Annotation extends \Google\Protobuf\Internal\Message
+class Annotation extends \Google\Protobuf\Internal\Message
{
/**
* Identifies the element in the original source .proto file. This field
diff --git a/php/src/Google/Protobuf/Internal/MessageOptions.php b/php/src/Google/Protobuf/Internal/MessageOptions.php
index 9032c97e9b10..445394211028 100644
--- a/php/src/Google/Protobuf/Internal/MessageOptions.php
+++ b/php/src/Google/Protobuf/Internal/MessageOptions.php
@@ -13,7 +13,7 @@
/**
* Generated from protobuf message google.protobuf.MessageOptions
*/
-final class MessageOptions extends \Google\Protobuf\Internal\Message
+class MessageOptions extends \Google\Protobuf\Internal\Message
{
/**
* Set true to use the old proto1 MessageSet wire format for extensions.
diff --git a/php/src/Google/Protobuf/Internal/MethodDescriptorProto.php b/php/src/Google/Protobuf/Internal/MethodDescriptorProto.php
index 25a2c166fd65..1bd5dd3e1c43 100644
--- a/php/src/Google/Protobuf/Internal/MethodDescriptorProto.php
+++ b/php/src/Google/Protobuf/Internal/MethodDescriptorProto.php
@@ -15,7 +15,7 @@
*
* Generated from protobuf message google.protobuf.MethodDescriptorProto
*/
-final class MethodDescriptorProto extends \Google\Protobuf\Internal\Message
+class MethodDescriptorProto extends \Google\Protobuf\Internal\Message
{
/**
* Generated from protobuf field optional string name = 1;
diff --git a/php/src/Google/Protobuf/Internal/MethodOptions.php b/php/src/Google/Protobuf/Internal/MethodOptions.php
index a9c093ad5d76..a2c729a9bbed 100644
--- a/php/src/Google/Protobuf/Internal/MethodOptions.php
+++ b/php/src/Google/Protobuf/Internal/MethodOptions.php
@@ -13,7 +13,7 @@
/**
* Generated from protobuf message google.protobuf.MethodOptions
*/
-final class MethodOptions extends \Google\Protobuf\Internal\Message
+class MethodOptions extends \Google\Protobuf\Internal\Message
{
/**
* Is this method deprecated?
diff --git a/php/src/Google/Protobuf/Internal/OneofDescriptorProto.php b/php/src/Google/Protobuf/Internal/OneofDescriptorProto.php
index a703fcb702ca..9ecfe5cbfe96 100644
--- a/php/src/Google/Protobuf/Internal/OneofDescriptorProto.php
+++ b/php/src/Google/Protobuf/Internal/OneofDescriptorProto.php
@@ -15,7 +15,7 @@
*
* Generated from protobuf message google.protobuf.OneofDescriptorProto
*/
-final class OneofDescriptorProto extends \Google\Protobuf\Internal\Message
+class OneofDescriptorProto extends \Google\Protobuf\Internal\Message
{
/**
* Generated from protobuf field optional string name = 1;
diff --git a/php/src/Google/Protobuf/Internal/OneofOptions.php b/php/src/Google/Protobuf/Internal/OneofOptions.php
index 749051f31fe8..46b516f3019f 100644
--- a/php/src/Google/Protobuf/Internal/OneofOptions.php
+++ b/php/src/Google/Protobuf/Internal/OneofOptions.php
@@ -13,7 +13,7 @@
/**
* Generated from protobuf message google.protobuf.OneofOptions
*/
-final class OneofOptions extends \Google\Protobuf\Internal\Message
+class OneofOptions extends \Google\Protobuf\Internal\Message
{
/**
* The parser stores options it doesn't recognize here. See above.
diff --git a/php/src/Google/Protobuf/Internal/ServiceDescriptorProto.php b/php/src/Google/Protobuf/Internal/ServiceDescriptorProto.php
index 9534f0480e76..8de7afd0bcd9 100644
--- a/php/src/Google/Protobuf/Internal/ServiceDescriptorProto.php
+++ b/php/src/Google/Protobuf/Internal/ServiceDescriptorProto.php
@@ -15,7 +15,7 @@
*
* Generated from protobuf message google.protobuf.ServiceDescriptorProto
*/
-final class ServiceDescriptorProto extends \Google\Protobuf\Internal\Message
+class ServiceDescriptorProto extends \Google\Protobuf\Internal\Message
{
/**
* Generated from protobuf field optional string name = 1;
diff --git a/php/src/Google/Protobuf/Internal/ServiceOptions.php b/php/src/Google/Protobuf/Internal/ServiceOptions.php
index 55bf7a77582a..67162f3764e6 100644
--- a/php/src/Google/Protobuf/Internal/ServiceOptions.php
+++ b/php/src/Google/Protobuf/Internal/ServiceOptions.php
@@ -13,7 +13,7 @@
/**
* Generated from protobuf message google.protobuf.ServiceOptions
*/
-final class ServiceOptions extends \Google\Protobuf\Internal\Message
+class ServiceOptions extends \Google\Protobuf\Internal\Message
{
/**
* Is this service deprecated?
diff --git a/php/src/Google/Protobuf/Internal/SourceCodeInfo.php b/php/src/Google/Protobuf/Internal/SourceCodeInfo.php
index 3ddd89226202..dfeb69ff6978 100644
--- a/php/src/Google/Protobuf/Internal/SourceCodeInfo.php
+++ b/php/src/Google/Protobuf/Internal/SourceCodeInfo.php
@@ -16,7 +16,7 @@
*
* Generated from protobuf message google.protobuf.SourceCodeInfo
*/
-final class SourceCodeInfo extends \Google\Protobuf\Internal\Message
+class SourceCodeInfo extends \Google\Protobuf\Internal\Message
{
/**
* A Location identifies a piece of source code in a .proto file which
diff --git a/php/src/Google/Protobuf/Internal/SourceCodeInfo/Location.php b/php/src/Google/Protobuf/Internal/SourceCodeInfo/Location.php
index 470d64c6e23d..bad247a11f66 100644
--- a/php/src/Google/Protobuf/Internal/SourceCodeInfo/Location.php
+++ b/php/src/Google/Protobuf/Internal/SourceCodeInfo/Location.php
@@ -13,7 +13,7 @@
/**
* Generated from protobuf message google.protobuf.SourceCodeInfo.Location
*/
-final class Location extends \Google\Protobuf\Internal\Message
+class Location extends \Google\Protobuf\Internal\Message
{
/**
* Identifies which part of the FileDescriptorProto was defined at this
diff --git a/php/src/Google/Protobuf/Internal/UninterpretedOption.php b/php/src/Google/Protobuf/Internal/UninterpretedOption.php
index 39273d62fa7a..3b517ec552c1 100644
--- a/php/src/Google/Protobuf/Internal/UninterpretedOption.php
+++ b/php/src/Google/Protobuf/Internal/UninterpretedOption.php
@@ -20,7 +20,7 @@
*
* Generated from protobuf message google.protobuf.UninterpretedOption
*/
-final class UninterpretedOption extends \Google\Protobuf\Internal\Message
+class UninterpretedOption extends \Google\Protobuf\Internal\Message
{
/**
* Generated from protobuf field repeated .google.protobuf.UninterpretedOption.NamePart name = 2;
diff --git a/php/src/Google/Protobuf/Internal/UninterpretedOption/NamePart.php b/php/src/Google/Protobuf/Internal/UninterpretedOption/NamePart.php
index a2f9250f936f..92ee4b44b92f 100644
--- a/php/src/Google/Protobuf/Internal/UninterpretedOption/NamePart.php
+++ b/php/src/Google/Protobuf/Internal/UninterpretedOption/NamePart.php
@@ -19,7 +19,7 @@
*
* Generated from protobuf message google.protobuf.UninterpretedOption.NamePart
*/
-final class NamePart extends \Google\Protobuf\Internal\Message
+class NamePart extends \Google\Protobuf\Internal\Message
{
/**
* Generated from protobuf field required string name_part = 1;
diff --git a/php/tests/generated_class_test.php b/php/tests/generated_class_test.php
index a54c4e5b766f..6af00effe29b 100644
--- a/php/tests/generated_class_test.php
+++ b/php/tests/generated_class_test.php
@@ -1452,6 +1452,8 @@ public function testOneofMessageInArrayConstructor()
$m = new TestMessage([
'oneof_message' => new Sub(),
]);
+ $this->assertSame('oneof_message', $m->getMyOneof());
+ $this->assertNotNull($m->getOneofMessage());
}
public function testOneofStringInArrayConstructor()
diff --git a/protoc-artifacts/pom.xml b/protoc-artifacts/pom.xml
index bff6f53e765f..38f371305572 100644
--- a/protoc-artifacts/pom.xml
+++ b/protoc-artifacts/pom.xml
@@ -8,7 +8,7 @@
com.google.protobufprotoc
- 3.9.0-rc-1
+ 3.9.1pomProtobuf Compiler
diff --git a/python/google/protobuf/__init__.py b/python/google/protobuf/__init__.py
index c35f84d54889..d75ab244dafc 100755
--- a/python/google/protobuf/__init__.py
+++ b/python/google/protobuf/__init__.py
@@ -30,7 +30,7 @@
# Copyright 2007 Google Inc. All Rights Reserved.
-__version__ = '3.9.0rc1'
+__version__ = '3.9.1'
if __name__ != '__main__':
try:
diff --git a/ruby/google-protobuf.gemspec b/ruby/google-protobuf.gemspec
index b9040052557a..ea4f0445cce2 100644
--- a/ruby/google-protobuf.gemspec
+++ b/ruby/google-protobuf.gemspec
@@ -1,6 +1,6 @@
Gem::Specification.new do |s|
s.name = "google-protobuf"
- s.version = "3.9.0.rc.1"
+ s.version = "3.9.1"
s.licenses = ["BSD-3-Clause"]
s.summary = "Protocol Buffers"
s.description = "Protocol Buffers are Google's data interchange format."
diff --git a/src/Makefile.am b/src/Makefile.am
index 58c9cd88bd84..a06f298356ae 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -18,7 +18,7 @@ else
PTHREAD_DEF =
endif
-PROTOBUF_VERSION = 20:0:0
+PROTOBUF_VERSION = 20:1:0
if GCC
# Turn on all warnings except for sign comparison (we ignore sign comparison
diff --git a/src/google/protobuf/any.pb.h b/src/google/protobuf/any.pb.h
index 1a69b921666d..f378d9b09036 100644
--- a/src/google/protobuf/any.pb.h
+++ b/src/google/protobuf/any.pb.h
@@ -13,7 +13,7 @@
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
-#if 3009000 < PROTOBUF_MIN_PROTOC_VERSION
+#if 3009001 < PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
diff --git a/src/google/protobuf/api.pb.h b/src/google/protobuf/api.pb.h
index 4e2a745b5622..0d919e3868c4 100644
--- a/src/google/protobuf/api.pb.h
+++ b/src/google/protobuf/api.pb.h
@@ -13,7 +13,7 @@
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
-#if 3009000 < PROTOBUF_MIN_PROTOC_VERSION
+#if 3009001 < PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
diff --git a/src/google/protobuf/compiler/php/php_generator.cc b/src/google/protobuf/compiler/php/php_generator.cc
index a16cbc25d7ce..4a1403f94fc4 100644
--- a/src/google/protobuf/compiler/php/php_generator.cc
+++ b/src/google/protobuf/compiler/php/php_generator.cc
@@ -1265,7 +1265,7 @@ void GenerateMessageFile(const FileDescriptor* file, const Descriptor* message,
}
printer.Print(
- "final class ^name^ extends \\Google\\Protobuf\\Internal\\Message\n"
+ "class ^name^ extends \\Google\\Protobuf\\Internal\\Message\n"
"{\n",
"name", fullname);
Indent(&printer);
diff --git a/src/google/protobuf/compiler/plugin.pb.h b/src/google/protobuf/compiler/plugin.pb.h
index 511abee2a3c4..e3e25eaac77c 100644
--- a/src/google/protobuf/compiler/plugin.pb.h
+++ b/src/google/protobuf/compiler/plugin.pb.h
@@ -13,7 +13,7 @@
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
-#if 3009000 < PROTOBUF_MIN_PROTOC_VERSION
+#if 3009001 < PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
diff --git a/src/google/protobuf/descriptor.pb.h b/src/google/protobuf/descriptor.pb.h
index cebbe9e0cd6e..8fc6861f31a1 100644
--- a/src/google/protobuf/descriptor.pb.h
+++ b/src/google/protobuf/descriptor.pb.h
@@ -13,7 +13,7 @@
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
-#if 3009000 < PROTOBUF_MIN_PROTOC_VERSION
+#if 3009001 < PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
diff --git a/src/google/protobuf/duration.pb.h b/src/google/protobuf/duration.pb.h
index dd0c6a874997..eb57be34141f 100644
--- a/src/google/protobuf/duration.pb.h
+++ b/src/google/protobuf/duration.pb.h
@@ -13,7 +13,7 @@
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
-#if 3009000 < PROTOBUF_MIN_PROTOC_VERSION
+#if 3009001 < PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
diff --git a/src/google/protobuf/empty.pb.h b/src/google/protobuf/empty.pb.h
index 50e82713b847..9768a4c225d5 100644
--- a/src/google/protobuf/empty.pb.h
+++ b/src/google/protobuf/empty.pb.h
@@ -13,7 +13,7 @@
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
-#if 3009000 < PROTOBUF_MIN_PROTOC_VERSION
+#if 3009001 < PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
diff --git a/src/google/protobuf/field_mask.pb.h b/src/google/protobuf/field_mask.pb.h
index d4937ec5901c..becad8618d27 100644
--- a/src/google/protobuf/field_mask.pb.h
+++ b/src/google/protobuf/field_mask.pb.h
@@ -13,7 +13,7 @@
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
-#if 3009000 < PROTOBUF_MIN_PROTOC_VERSION
+#if 3009001 < PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
diff --git a/src/google/protobuf/port_def.inc b/src/google/protobuf/port_def.inc
index 7b754ddb5714..afd7f0ed716f 100644
--- a/src/google/protobuf/port_def.inc
+++ b/src/google/protobuf/port_def.inc
@@ -288,7 +288,7 @@
// Shared google3/opensource definitions. //////////////////////////////////////
-#define PROTOBUF_VERSION 3009000
+#define PROTOBUF_VERSION 3009001
#define PROTOBUF_MIN_HEADER_VERSION_FOR_PROTOC 3009000
#define PROTOBUF_MIN_PROTOC_VERSION 3009000
#define PROTOBUF_VERSION_SUFFIX ""
diff --git a/src/google/protobuf/source_context.pb.h b/src/google/protobuf/source_context.pb.h
index 27a1a4aaf888..73cd2278d6a5 100644
--- a/src/google/protobuf/source_context.pb.h
+++ b/src/google/protobuf/source_context.pb.h
@@ -13,7 +13,7 @@
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
-#if 3009000 < PROTOBUF_MIN_PROTOC_VERSION
+#if 3009001 < PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
diff --git a/src/google/protobuf/struct.pb.h b/src/google/protobuf/struct.pb.h
index 124016bd9abb..9b7f5d195bb5 100644
--- a/src/google/protobuf/struct.pb.h
+++ b/src/google/protobuf/struct.pb.h
@@ -13,7 +13,7 @@
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
-#if 3009000 < PROTOBUF_MIN_PROTOC_VERSION
+#if 3009001 < PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
diff --git a/src/google/protobuf/stubs/common.h b/src/google/protobuf/stubs/common.h
index b9599010d549..8728b705d1e0 100644
--- a/src/google/protobuf/stubs/common.h
+++ b/src/google/protobuf/stubs/common.h
@@ -81,7 +81,7 @@ namespace internal {
// The current version, represented as a single integer to make comparison
// easier: major * 10^6 + minor * 10^3 + micro
-#define GOOGLE_PROTOBUF_VERSION 3009000
+#define GOOGLE_PROTOBUF_VERSION 3009001
// A suffix string for alpha, beta or rc releases. Empty for stable releases.
#define GOOGLE_PROTOBUF_VERSION_SUFFIX ""
diff --git a/src/google/protobuf/timestamp.pb.h b/src/google/protobuf/timestamp.pb.h
index 4c429925628c..ff9d0d959888 100644
--- a/src/google/protobuf/timestamp.pb.h
+++ b/src/google/protobuf/timestamp.pb.h
@@ -13,7 +13,7 @@
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
-#if 3009000 < PROTOBUF_MIN_PROTOC_VERSION
+#if 3009001 < PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
diff --git a/src/google/protobuf/type.pb.h b/src/google/protobuf/type.pb.h
index 49550a9f41ab..b60e23432ee5 100644
--- a/src/google/protobuf/type.pb.h
+++ b/src/google/protobuf/type.pb.h
@@ -13,7 +13,7 @@
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
-#if 3009000 < PROTOBUF_MIN_PROTOC_VERSION
+#if 3009001 < PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
diff --git a/src/google/protobuf/wrappers.pb.h b/src/google/protobuf/wrappers.pb.h
index 25b5b00cd814..b32d1364c2da 100644
--- a/src/google/protobuf/wrappers.pb.h
+++ b/src/google/protobuf/wrappers.pb.h
@@ -13,7 +13,7 @@
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
-#if 3009000 < PROTOBUF_MIN_PROTOC_VERSION
+#if 3009001 < PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
diff --git a/update_version.py b/update_version.py
index ddb2480c1ea5..bbb0dba350ee 100755
--- a/update_version.py
+++ b/update_version.py
@@ -147,31 +147,9 @@ def RewritePortDef(line):
'#define GOOGLE_PROTOBUF_MIN_LIBRARY_VERSION %s' % cpp_version,
line)
return line
- def RewritePbH(line):
- line = re.sub(
- r'^#if PROTOBUF_VERSION < .*$',
- '#if PROTOBUF_VERSION < %s' % cpp_version,
- line)
- line = re.sub(
- r'^#if .* < PROTOBUF_MIN_PROTOC_VERSION$',
- '#if %s < PROTOBUF_MIN_PROTOC_VERSION' % cpp_version,
- line)
- return line
-
+
RewriteTextFile('src/google/protobuf/stubs/common.h', RewriteCommon)
RewriteTextFile('src/google/protobuf/port_def.inc', RewritePortDef)
- RewriteTextFile('src/google/protobuf/any.pb.h', RewritePbH)
- RewriteTextFile('src/google/protobuf/api.pb.h', RewritePbH)
- RewriteTextFile('src/google/protobuf/descriptor.pb.h', RewritePbH)
- RewriteTextFile('src/google/protobuf/duration.pb.h', RewritePbH)
- RewriteTextFile('src/google/protobuf/empty.pb.h', RewritePbH)
- RewriteTextFile('src/google/protobuf/field_mask.pb.h', RewritePbH)
- RewriteTextFile('src/google/protobuf/source_context.pb.h', RewritePbH)
- RewriteTextFile('src/google/protobuf/struct.pb.h', RewritePbH)
- RewriteTextFile('src/google/protobuf/timestamp.pb.h', RewritePbH)
- RewriteTextFile('src/google/protobuf/type.pb.h', RewritePbH)
- RewriteTextFile('src/google/protobuf/wrappers.pb.h', RewritePbH)
- RewriteTextFile('src/google/protobuf/compiler/plugin.pb.h', RewritePbH)
def UpdateCsharp():