From 2802c547a188192b47fe76e82eef21c5c327de67 Mon Sep 17 00:00:00 2001 From: liqun Fu Date: Fri, 28 Apr 2023 11:20:29 -0700 Subject: [PATCH] update OnnxMl.cs (#15702) --- .../OnnxMl.cs | 152 +++++++--- .../OnnxMl.cs | 278 +++++++++++------- 2 files changed, 279 insertions(+), 151 deletions(-) diff --git a/csharp/test/Microsoft.ML.OnnxRuntime.Tests.Common/OnnxMl.cs b/csharp/test/Microsoft.ML.OnnxRuntime.Tests.Common/OnnxMl.cs index 72686b3775..510097e2f4 100644 --- a/csharp/test/Microsoft.ML.OnnxRuntime.Tests.Common/OnnxMl.cs +++ b/csharp/test/Microsoft.ML.OnnxRuntime.Tests.Common/OnnxMl.cs @@ -71,7 +71,7 @@ namespace Onnx { "X2luZm8YDSADKAsyFC5vbm54LlZhbHVlSW5mb1Byb3RvEjcKF3F1YW50aXph", "dGlvbl9hbm5vdGF0aW9uGA4gAygLMhYub25ueC5UZW5zb3JBbm5vdGF0aW9u", "SgQIAxAESgQIBBAFSgQIBhAKUgppcl92ZXJzaW9uUhBwcm9kdWNlcl92ZXJz", - "aW9uUgxwcm9kdWNlcl90YWdSBmRvbWFpbiK4BQoLVGVuc29yUHJvdG8SDAoE", + "aW9uUgxwcm9kdWNlcl90YWdSBmRvbWFpbiKCBgoLVGVuc29yUHJvdG8SDAoE", "ZGltcxgBIAMoAxIRCglkYXRhX3R5cGUYAiABKAUSKgoHc2VnbWVudBgDIAEo", "CzIZLm9ubnguVGVuc29yUHJvdG8uU2VnbWVudBIWCgpmbG9hdF9kYXRhGAQg", "AygCQgIQARIWCgppbnQzMl9kYXRhGAUgAygFQgIQARITCgtzdHJpbmdfZGF0", @@ -81,46 +81,50 @@ namespace Onnx { "bxI1Cg1kYXRhX2xvY2F0aW9uGA4gASgOMh4ub25ueC5UZW5zb3JQcm90by5E", "YXRhTG9jYXRpb24SFwoLZG91YmxlX2RhdGEYCiADKAFCAhABEhcKC3VpbnQ2", "NF9kYXRhGAsgAygEQgIQARolCgdTZWdtZW50Eg0KBWJlZ2luGAEgASgDEgsK", - "A2VuZBgCIAEoAyLaAQoIRGF0YVR5cGUSDQoJVU5ERUZJTkVEEAASCQoFRkxP", + "A2VuZBgCIAEoAyKkAgoIRGF0YVR5cGUSDQoJVU5ERUZJTkVEEAASCQoFRkxP", "QVQQARIJCgVVSU5UOBACEggKBElOVDgQAxIKCgZVSU5UMTYQBBIJCgVJTlQx", "NhAFEgkKBUlOVDMyEAYSCQoFSU5UNjQQBxIKCgZTVFJJTkcQCBIICgRCT09M", "EAkSCwoHRkxPQVQxNhAKEgoKBkRPVUJMRRALEgoKBlVJTlQzMhAMEgoKBlVJ", "TlQ2NBANEg0KCUNPTVBMRVg2NBAOEg4KCkNPTVBMRVgxMjgQDxIMCghCRkxP", - "QVQxNhAQIikKDERhdGFMb2NhdGlvbhILCgdERUZBVUxUEAASDAoIRVhURVJO", - "QUwQASJoChFTcGFyc2VUZW5zb3JQcm90bxIhCgZ2YWx1ZXMYASABKAsyES5v", - "bm54LlRlbnNvclByb3RvEiIKB2luZGljZXMYAiABKAsyES5vbm54LlRlbnNv", - "clByb3RvEgwKBGRpbXMYAyADKAMilQEKEFRlbnNvclNoYXBlUHJvdG8SLQoD", - "ZGltGAEgAygLMiAub25ueC5UZW5zb3JTaGFwZVByb3RvLkRpbWVuc2lvbhpS", - "CglEaW1lbnNpb24SEwoJZGltX3ZhbHVlGAEgASgDSAASEwoJZGltX3BhcmFt", - "GAIgASgJSAASEgoKZGVub3RhdGlvbhgDIAEoCUIHCgV2YWx1ZSKlBQoJVHlw", - "ZVByb3RvEi0KC3RlbnNvcl90eXBlGAEgASgLMhYub25ueC5UeXBlUHJvdG8u", - "VGVuc29ySAASMQoNc2VxdWVuY2VfdHlwZRgEIAEoCzIYLm9ubnguVHlwZVBy", - "b3RvLlNlcXVlbmNlSAASJwoIbWFwX3R5cGUYBSABKAsyEy5vbm54LlR5cGVQ", - "cm90by5NYXBIABIxCg1vcHRpb25hbF90eXBlGAkgASgLMhgub25ueC5UeXBl", - "UHJvdG8uT3B0aW9uYWxIABI6ChJzcGFyc2VfdGVuc29yX3R5cGUYCCABKAsy", - "HC5vbm54LlR5cGVQcm90by5TcGFyc2VUZW5zb3JIABItCgtvcGFxdWVfdHlw", - "ZRgHIAEoCzIWLm9ubnguVHlwZVByb3RvLk9wYXF1ZUgAEhIKCmRlbm90YXRp", - "b24YBiABKAkaQgoGVGVuc29yEhEKCWVsZW1fdHlwZRgBIAEoBRIlCgVzaGFw", - "ZRgCIAEoCzIWLm9ubnguVGVuc29yU2hhcGVQcm90bxouCghTZXF1ZW5jZRIi", - "CgllbGVtX3R5cGUYASABKAsyDy5vbm54LlR5cGVQcm90bxo8CgNNYXASEAoI", - "a2V5X3R5cGUYASABKAUSIwoKdmFsdWVfdHlwZRgCIAEoCzIPLm9ubnguVHlw", - "ZVByb3RvGi4KCE9wdGlvbmFsEiIKCWVsZW1fdHlwZRgBIAEoCzIPLm9ubngu", - "VHlwZVByb3RvGkgKDFNwYXJzZVRlbnNvchIRCgllbGVtX3R5cGUYASABKAUS", - "JQoFc2hhcGUYAiABKAsyFi5vbm54LlRlbnNvclNoYXBlUHJvdG8aJgoGT3Bh", - "cXVlEg4KBmRvbWFpbhgBIAEoCRIMCgRuYW1lGAIgASgJQgcKBXZhbHVlIjUK", - "Ek9wZXJhdG9yU2V0SWRQcm90bxIOCgZkb21haW4YASABKAkSDwoHdmVyc2lv", - "bhgCIAEoAyLlAQoNRnVuY3Rpb25Qcm90bxIMCgRuYW1lGAEgASgJEg0KBWlu", - "cHV0GAQgAygJEg4KBm91dHB1dBgFIAMoCRIRCglhdHRyaWJ1dGUYBiADKAkS", - "HQoEbm9kZRgHIAMoCzIPLm9ubnguTm9kZVByb3RvEhIKCmRvY19zdHJpbmcY", - "CCABKAkSLgoMb3BzZXRfaW1wb3J0GAkgAygLMhgub25ueC5PcGVyYXRvclNl", - "dElkUHJvdG8SDgoGZG9tYWluGAogASgJSgQIAhADSgQIAxAEUg1zaW5jZV92", - "ZXJzaW9uUgZzdGF0dXMq5AEKB1ZlcnNpb24SEgoOX1NUQVJUX1ZFUlNJT04Q", - "ABIZChVJUl9WRVJTSU9OXzIwMTdfMTBfMTAQARIZChVJUl9WRVJTSU9OXzIw", - "MTdfMTBfMzAQAhIYChRJUl9WRVJTSU9OXzIwMTdfMTFfMxADEhgKFElSX1ZF", - "UlNJT05fMjAxOV8xXzIyEAQSGAoUSVJfVkVSU0lPTl8yMDE5XzNfMTgQBRIY", - "ChRJUl9WRVJTSU9OXzIwMTlfOV8xORAGEhcKE0lSX1ZFUlNJT05fMjAyMF81", - "XzgQBxIOCgpJUl9WRVJTSU9OEAgqLgoOT3BlcmF0b3JTdGF0dXMSEAoMRVhQ", - "RVJJTUVOVEFMEAASCgoGU1RBQkxFEAFCAkgDYgZwcm90bzM=")); + "QVQxNhAQEhAKDEZMT0FUOEU0TTNGThAREhIKDkZMT0FUOEU0TTNGTlVaEBIS", + "DgoKRkxPQVQ4RTVNMhATEhIKDkZMT0FUOEU1TTJGTlVaEBQiKQoMRGF0YUxv", + "Y2F0aW9uEgsKB0RFRkFVTFQQABIMCghFWFRFUk5BTBABImgKEVNwYXJzZVRl", + "bnNvclByb3RvEiEKBnZhbHVlcxgBIAEoCzIRLm9ubnguVGVuc29yUHJvdG8S", + "IgoHaW5kaWNlcxgCIAEoCzIRLm9ubnguVGVuc29yUHJvdG8SDAoEZGltcxgD", + "IAMoAyKVAQoQVGVuc29yU2hhcGVQcm90bxItCgNkaW0YASADKAsyIC5vbm54", + "LlRlbnNvclNoYXBlUHJvdG8uRGltZW5zaW9uGlIKCURpbWVuc2lvbhITCglk", + "aW1fdmFsdWUYASABKANIABITCglkaW1fcGFyYW0YAiABKAlIABISCgpkZW5v", + "dGF0aW9uGAMgASgJQgcKBXZhbHVlIqUFCglUeXBlUHJvdG8SLQoLdGVuc29y", + "X3R5cGUYASABKAsyFi5vbm54LlR5cGVQcm90by5UZW5zb3JIABIxCg1zZXF1", + "ZW5jZV90eXBlGAQgASgLMhgub25ueC5UeXBlUHJvdG8uU2VxdWVuY2VIABIn", + "CghtYXBfdHlwZRgFIAEoCzITLm9ubnguVHlwZVByb3RvLk1hcEgAEjEKDW9w", + "dGlvbmFsX3R5cGUYCSABKAsyGC5vbm54LlR5cGVQcm90by5PcHRpb25hbEgA", + "EjoKEnNwYXJzZV90ZW5zb3JfdHlwZRgIIAEoCzIcLm9ubnguVHlwZVByb3Rv", + "LlNwYXJzZVRlbnNvckgAEi0KC29wYXF1ZV90eXBlGAcgASgLMhYub25ueC5U", + "eXBlUHJvdG8uT3BhcXVlSAASEgoKZGVub3RhdGlvbhgGIAEoCRpCCgZUZW5z", + "b3ISEQoJZWxlbV90eXBlGAEgASgFEiUKBXNoYXBlGAIgASgLMhYub25ueC5U", + "ZW5zb3JTaGFwZVByb3RvGi4KCFNlcXVlbmNlEiIKCWVsZW1fdHlwZRgBIAEo", + "CzIPLm9ubnguVHlwZVByb3RvGjwKA01hcBIQCghrZXlfdHlwZRgBIAEoBRIj", + "Cgp2YWx1ZV90eXBlGAIgASgLMg8ub25ueC5UeXBlUHJvdG8aLgoIT3B0aW9u", + "YWwSIgoJZWxlbV90eXBlGAEgASgLMg8ub25ueC5UeXBlUHJvdG8aSAoMU3Bh", + "cnNlVGVuc29yEhEKCWVsZW1fdHlwZRgBIAEoBRIlCgVzaGFwZRgCIAEoCzIW", + "Lm9ubnguVGVuc29yU2hhcGVQcm90bxomCgZPcGFxdWUSDgoGZG9tYWluGAEg", + "ASgJEgwKBG5hbWUYAiABKAlCBwoFdmFsdWUiNQoST3BlcmF0b3JTZXRJZFBy", + "b3RvEg4KBmRvbWFpbhgBIAEoCRIPCgd2ZXJzaW9uGAIgASgDIpQCCg1GdW5j", + "dGlvblByb3RvEgwKBG5hbWUYASABKAkSDQoFaW5wdXQYBCADKAkSDgoGb3V0", + "cHV0GAUgAygJEhEKCWF0dHJpYnV0ZRgGIAMoCRItCg9hdHRyaWJ1dGVfcHJv", + "dG8YCyADKAsyFC5vbm54LkF0dHJpYnV0ZVByb3RvEh0KBG5vZGUYByADKAsy", + "Dy5vbm54Lk5vZGVQcm90bxISCgpkb2Nfc3RyaW5nGAggASgJEi4KDG9wc2V0", + "X2ltcG9ydBgJIAMoCzIYLm9ubnguT3BlcmF0b3JTZXRJZFByb3RvEg4KBmRv", + "bWFpbhgKIAEoCUoECAIQA0oECAMQBFINc2luY2VfdmVyc2lvblIGc3RhdHVz", + "Kv4BCgdWZXJzaW9uEhIKDl9TVEFSVF9WRVJTSU9OEAASGQoVSVJfVkVSU0lP", + "Tl8yMDE3XzEwXzEwEAESGQoVSVJfVkVSU0lPTl8yMDE3XzEwXzMwEAISGAoU", + "SVJfVkVSU0lPTl8yMDE3XzExXzMQAxIYChRJUl9WRVJTSU9OXzIwMTlfMV8y", + "MhAEEhgKFElSX1ZFUlNJT05fMjAxOV8zXzE4EAUSGAoUSVJfVkVSU0lPTl8y", + "MDE5XzlfMTkQBhIXChNJUl9WRVJTSU9OXzIwMjBfNV84EAcSGAoUSVJfVkVS", + "U0lPTl8yMDIxXzdfMzAQCBIOCgpJUl9WRVJTSU9OEAkqLgoOT3BlcmF0b3JT", + "dGF0dXMSEAoMRVhQRVJJTUVOVEFMEAASCgoGU1RBQkxFEAFCAkgDYgZwcm90", + "bzM=")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Onnx.Version), typeof(global::Onnx.OperatorStatus), }, null, new pbr::GeneratedClrTypeInfo[] { @@ -142,7 +146,7 @@ namespace Onnx { new pbr::GeneratedClrTypeInfo(typeof(global::Onnx.TypeProto.Types.SparseTensor), global::Onnx.TypeProto.Types.SparseTensor.Parser, new[]{ "ElemType", "Shape" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Onnx.TypeProto.Types.Opaque), global::Onnx.TypeProto.Types.Opaque.Parser, new[]{ "Domain", "Name" }, null, null, null, null)}), new pbr::GeneratedClrTypeInfo(typeof(global::Onnx.OperatorSetIdProto), global::Onnx.OperatorSetIdProto.Parser, new[]{ "Domain", "Version" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Onnx.FunctionProto), global::Onnx.FunctionProto.Parser, new[]{ "Name", "Input", "Output", "Attribute", "Node", "DocString", "OpsetImport", "Domain" }, null, null, null, null) + new pbr::GeneratedClrTypeInfo(typeof(global::Onnx.FunctionProto), global::Onnx.FunctionProto.Parser, new[]{ "Name", "Input", "Output", "Attribute", "AttributeProto", "Node", "DocString", "OpsetImport", "Domain" }, null, null, null, null) })); } #endregion @@ -216,13 +220,19 @@ namespace Onnx { /// [pbr::OriginalName("IR_VERSION_2020_5_8")] IrVersion202058 = 7, /// - /// IR VERSION 8 published on <TBD> + /// IR VERSION 8 published on July 30, 2021 /// Introduce TypeProto.SparseTensor /// Introduce TypeProto.Optional /// Added a list of FunctionProtos local to the model /// Deprecated since_version and operator status from FunctionProto /// - [pbr::OriginalName("IR_VERSION")] IrVersion = 8, + [pbr::OriginalName("IR_VERSION_2021_7_30")] IrVersion2021730 = 8, + /// + /// IR VERSION 9 published on TBD + /// Added AttributeProto to FunctionProto so that default attribute values can be set. + /// Added FLOAT8E4M3FN, FLOAT8E4M3FNUZ, FLOAT8E5M2, FLOAT8E5M2FNUZ. + /// + [pbr::OriginalName("IR_VERSION")] IrVersion = 9, } /// @@ -3860,11 +3870,11 @@ namespace Onnx { = pb::FieldCodec.ForInt32(42); private readonly pbc::RepeatedField int32Data_ = new pbc::RepeatedField(); /// - /// For int32, uint8, int8, uint16, int16, bool, and float16 values - /// float16 values must be bit-wise converted to an uint16_t prior + /// For int32, uint8, int8, uint16, int16, bool, float8, and float16 values + /// float16 and float8 values must be bit-wise converted to an uint16_t prior /// to writing to the buffer. /// When this field is present, the data_type field MUST be - /// INT32, INT16, INT8, UINT16, UINT8, BOOL, FLOAT16 or BFLOAT16 + /// INT32, INT16, INT8, UINT16, UINT8, BOOL, FLOAT16, BFLOAT16, FLOAT8E4M3FN, FLOAT8E4M3FNUZ, FLOAT8E5M2, FLOAT8E5M2FNUZ /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -4486,6 +4496,27 @@ namespace Onnx { /// This format has 1 sign bit, 8 exponent bits, and 7 mantissa bits. /// [pbr::OriginalName("BFLOAT16")] Bfloat16 = 16, + /// + /// Non-IEEE floating-point format based on papers + /// FP8 Formats for Deep Learning, https://arxiv.org/abs/2209.05433, + /// 8-bit Numerical Formats For Deep Neural Networks, https://arxiv.org/pdf/2206.02915.pdf. + /// Operators supported FP8 are Cast, CastLike, QuantizeLinear, DequantizeLinear. + /// The computation usually happens inside a block quantize / dequantize + /// fused by the runtime. + /// + [pbr::OriginalName("FLOAT8E4M3FN")] Float8E4M3Fn = 17, + /// + /// float 8, mostly used for coefficients, supports nan, not inf, no negative zero + /// + [pbr::OriginalName("FLOAT8E4M3FNUZ")] Float8E4M3Fnuz = 18, + /// + /// follows IEEE 754, supports nan, inf, mostly used for gradients + /// + [pbr::OriginalName("FLOAT8E5M2")] Float8E5M2 = 19, + /// + /// follows IEEE 754, supports nan, inf, mostly used for gradients, no negative zero + /// + [pbr::OriginalName("FLOAT8E5M2FNUZ")] Float8E5M2Fnuz = 20, } /// @@ -7743,6 +7774,7 @@ namespace Onnx { input_ = other.input_.Clone(); output_ = other.output_.Clone(); attribute_ = other.attribute_.Clone(); + attributeProto_ = other.attributeProto_.Clone(); node_ = other.node_.Clone(); docString_ = other.docString_; opsetImport_ = other.opsetImport_.Clone(); @@ -7804,7 +7836,8 @@ namespace Onnx { = pb::FieldCodec.ForString(50); private readonly pbc::RepeatedField attribute_ = new pbc::RepeatedField(); /// - /// The attributes of the function. + /// The attribute parameters of the function. + /// It is for function parameters without default values. /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -7812,6 +7845,23 @@ namespace Onnx { get { return attribute_; } } + /// Field number for the "attribute_proto" field. + public const int AttributeProtoFieldNumber = 11; + private static readonly pb::FieldCodec _repeated_attributeProto_codec + = pb::FieldCodec.ForMessage(90, global::Onnx.AttributeProto.Parser); + private readonly pbc::RepeatedField attributeProto_ = new pbc::RepeatedField(); + /// + /// The attribute protos of the function. + /// It is for function attributes with default values. + /// A function attribute shall be represented either as + /// a string attribute or an AttributeProto, not both. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField AttributeProto { + get { return attributeProto_; } + } + /// Field number for the "node" field. public const int NodeFieldNumber = 7; private static readonly pb::FieldCodec _repeated_node_codec @@ -7887,6 +7937,7 @@ namespace Onnx { if(!input_.Equals(other.input_)) return false; if(!output_.Equals(other.output_)) return false; if(!attribute_.Equals(other.attribute_)) return false; + if(!attributeProto_.Equals(other.attributeProto_)) return false; if(!node_.Equals(other.node_)) return false; if (DocString != other.DocString) return false; if(!opsetImport_.Equals(other.opsetImport_)) return false; @@ -7902,6 +7953,7 @@ namespace Onnx { hash ^= input_.GetHashCode(); hash ^= output_.GetHashCode(); hash ^= attribute_.GetHashCode(); + hash ^= attributeProto_.GetHashCode(); hash ^= node_.GetHashCode(); if (DocString.Length != 0) hash ^= DocString.GetHashCode(); hash ^= opsetImport_.GetHashCode(); @@ -7941,6 +7993,7 @@ namespace Onnx { output.WriteRawTag(82); output.WriteString(Domain); } + attributeProto_.WriteTo(output, _repeated_attributeProto_codec); if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -7968,6 +8021,7 @@ namespace Onnx { output.WriteRawTag(82); output.WriteString(Domain); } + attributeProto_.WriteTo(ref output, _repeated_attributeProto_codec); if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -7984,6 +8038,7 @@ namespace Onnx { size += input_.CalculateSize(_repeated_input_codec); size += output_.CalculateSize(_repeated_output_codec); size += attribute_.CalculateSize(_repeated_attribute_codec); + size += attributeProto_.CalculateSize(_repeated_attributeProto_codec); size += node_.CalculateSize(_repeated_node_codec); if (DocString.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(DocString); @@ -8010,6 +8065,7 @@ namespace Onnx { input_.Add(other.input_); output_.Add(other.output_); attribute_.Add(other.attribute_); + attributeProto_.Add(other.attributeProto_); node_.Add(other.node_); if (other.DocString.Length != 0) { DocString = other.DocString; @@ -8065,6 +8121,10 @@ namespace Onnx { Domain = input.ReadString(); break; } + case 90: { + attributeProto_.AddEntriesFrom(input, _repeated_attributeProto_codec); + break; + } } } #endif @@ -8112,6 +8172,10 @@ namespace Onnx { Domain = input.ReadString(); break; } + case 90: { + attributeProto_.AddEntriesFrom(ref input, _repeated_attributeProto_codec); + break; + } } } } diff --git a/csharp/tools/Microsoft.ML.OnnxRuntime.PerfTool/OnnxMl.cs b/csharp/tools/Microsoft.ML.OnnxRuntime.PerfTool/OnnxMl.cs index 8805b95839..9ee5e44a35 100644 --- a/csharp/tools/Microsoft.ML.OnnxRuntime.PerfTool/OnnxMl.cs +++ b/csharp/tools/Microsoft.ML.OnnxRuntime.PerfTool/OnnxMl.cs @@ -1,6 +1,6 @@ // // Generated by the protocol buffer compiler. DO NOT EDIT! -// source: onnx-ml.proto3 +// source: onnx/onnx-ml.proto3 // #pragma warning disable 1591, 0612, 3021 #region Designer generated code @@ -11,11 +11,11 @@ using pbr = global::Google.Protobuf.Reflection; using scg = global::System.Collections.Generic; namespace Onnx { - /// Holder for reflection information generated from onnx-ml.proto3 + /// Holder for reflection information generated from onnx/onnx-ml.proto3 public static partial class OnnxMlReflection { #region Descriptor - /// File descriptor for onnx-ml.proto3 + /// File descriptor for onnx/onnx-ml.proto3 public static pbr::FileDescriptor Descriptor { get { return descriptor; } } @@ -24,103 +24,107 @@ namespace Onnx { static OnnxMlReflection() { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( - "Cg5vbm54LW1sLnByb3RvMxIEb25ueCLMBQoOQXR0cmlidXRlUHJvdG8SDAoE", - "bmFtZRgBIAEoCRIVCg1yZWZfYXR0cl9uYW1lGBUgASgJEhIKCmRvY19zdHJp", - "bmcYDSABKAkSMAoEdHlwZRgUIAEoDjIiLm9ubnguQXR0cmlidXRlUHJvdG8u", - "QXR0cmlidXRlVHlwZRIJCgFmGAIgASgCEgkKAWkYAyABKAMSCQoBcxgEIAEo", - "DBIcCgF0GAUgASgLMhEub25ueC5UZW5zb3JQcm90bxIbCgFnGAYgASgLMhAu", - "b25ueC5HcmFwaFByb3RvEi4KDXNwYXJzZV90ZW5zb3IYFiABKAsyFy5vbm54", - "LlNwYXJzZVRlbnNvclByb3RvEhsKAnRwGA4gASgLMg8ub25ueC5UeXBlUHJv", - "dG8SDgoGZmxvYXRzGAcgAygCEgwKBGludHMYCCADKAMSDwoHc3RyaW5ncxgJ", - "IAMoDBIiCgd0ZW5zb3JzGAogAygLMhEub25ueC5UZW5zb3JQcm90bxIgCgZn", - "cmFwaHMYCyADKAsyEC5vbm54LkdyYXBoUHJvdG8SLwoOc3BhcnNlX3RlbnNv", - "cnMYFyADKAsyFy5vbm54LlNwYXJzZVRlbnNvclByb3RvEiQKC3R5cGVfcHJv", - "dG9zGA8gAygLMg8ub25ueC5UeXBlUHJvdG8i2QEKDUF0dHJpYnV0ZVR5cGUS", - "DQoJVU5ERUZJTkVEEAASCQoFRkxPQVQQARIHCgNJTlQQAhIKCgZTVFJJTkcQ", - "AxIKCgZURU5TT1IQBBIJCgVHUkFQSBAFEhEKDVNQQVJTRV9URU5TT1IQCxIO", - "CgpUWVBFX1BST1RPEA0SCgoGRkxPQVRTEAYSCAoESU5UUxAHEgsKB1NUUklO", - "R1MQCBILCgdURU5TT1JTEAkSCgoGR1JBUEhTEAoSEgoOU1BBUlNFX1RFTlNP", - "UlMQDBIPCgtUWVBFX1BST1RPUxAOIlEKDlZhbHVlSW5mb1Byb3RvEgwKBG5h", - "bWUYASABKAkSHQoEdHlwZRgCIAEoCzIPLm9ubnguVHlwZVByb3RvEhIKCmRv", - "Y19zdHJpbmcYAyABKAkilgEKCU5vZGVQcm90bxINCgVpbnB1dBgBIAMoCRIO", - "CgZvdXRwdXQYAiADKAkSDAoEbmFtZRgDIAEoCRIPCgdvcF90eXBlGAQgASgJ", - "Eg4KBmRvbWFpbhgHIAEoCRInCglhdHRyaWJ1dGUYBSADKAsyFC5vbm54LkF0", - "dHJpYnV0ZVByb3RvEhIKCmRvY19zdHJpbmcYBiABKAki1gEKEVRyYWluaW5n", - "SW5mb1Byb3RvEigKDmluaXRpYWxpemF0aW9uGAEgASgLMhAub25ueC5HcmFw", - "aFByb3RvEiMKCWFsZ29yaXRobRgCIAEoCzIQLm9ubnguR3JhcGhQcm90bxI8", - "ChZpbml0aWFsaXphdGlvbl9iaW5kaW5nGAMgAygLMhwub25ueC5TdHJpbmdT", - "dHJpbmdFbnRyeVByb3RvEjQKDnVwZGF0ZV9iaW5kaW5nGAQgAygLMhwub25u", - "eC5TdHJpbmdTdHJpbmdFbnRyeVByb3RvIusCCgpNb2RlbFByb3RvEhIKCmly", - "X3ZlcnNpb24YASABKAMSLgoMb3BzZXRfaW1wb3J0GAggAygLMhgub25ueC5P", - "cGVyYXRvclNldElkUHJvdG8SFQoNcHJvZHVjZXJfbmFtZRgCIAEoCRIYChBw", - "cm9kdWNlcl92ZXJzaW9uGAMgASgJEg4KBmRvbWFpbhgEIAEoCRIVCg1tb2Rl", - "bF92ZXJzaW9uGAUgASgDEhIKCmRvY19zdHJpbmcYBiABKAkSHwoFZ3JhcGgY", - "ByABKAsyEC5vbm54LkdyYXBoUHJvdG8SNAoObWV0YWRhdGFfcHJvcHMYDiAD", - "KAsyHC5vbm54LlN0cmluZ1N0cmluZ0VudHJ5UHJvdG8SLgoNdHJhaW5pbmdf", - "aW5mbxgUIAMoCzIXLm9ubnguVHJhaW5pbmdJbmZvUHJvdG8SJgoJZnVuY3Rp", - "b25zGBkgAygLMhMub25ueC5GdW5jdGlvblByb3RvIjQKFlN0cmluZ1N0cmlu", - "Z0VudHJ5UHJvdG8SCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJImsKEFRl", - "bnNvckFubm90YXRpb24SEwoLdGVuc29yX25hbWUYASABKAkSQgoccXVhbnRf", - "cGFyYW1ldGVyX3RlbnNvcl9uYW1lcxgCIAMoCzIcLm9ubnguU3RyaW5nU3Ry", - "aW5nRW50cnlQcm90byKeAwoKR3JhcGhQcm90bxIdCgRub2RlGAEgAygLMg8u", - "b25ueC5Ob2RlUHJvdG8SDAoEbmFtZRgCIAEoCRImCgtpbml0aWFsaXplchgF", - "IAMoCzIRLm9ubnguVGVuc29yUHJvdG8SMwoSc3BhcnNlX2luaXRpYWxpemVy", - "GA8gAygLMhcub25ueC5TcGFyc2VUZW5zb3JQcm90bxISCgpkb2Nfc3RyaW5n", - "GAogASgJEiMKBWlucHV0GAsgAygLMhQub25ueC5WYWx1ZUluZm9Qcm90bxIk", - "CgZvdXRwdXQYDCADKAsyFC5vbm54LlZhbHVlSW5mb1Byb3RvEigKCnZhbHVl", - "X2luZm8YDSADKAsyFC5vbm54LlZhbHVlSW5mb1Byb3RvEjcKF3F1YW50aXph", - "dGlvbl9hbm5vdGF0aW9uGA4gAygLMhYub25ueC5UZW5zb3JBbm5vdGF0aW9u", - "SgQIAxAESgQIBBAFSgQIBhAKUgppcl92ZXJzaW9uUhBwcm9kdWNlcl92ZXJz", - "aW9uUgxwcm9kdWNlcl90YWdSBmRvbWFpbiK4BQoLVGVuc29yUHJvdG8SDAoE", - "ZGltcxgBIAMoAxIRCglkYXRhX3R5cGUYAiABKAUSKgoHc2VnbWVudBgDIAEo", - "CzIZLm9ubnguVGVuc29yUHJvdG8uU2VnbWVudBIWCgpmbG9hdF9kYXRhGAQg", - "AygCQgIQARIWCgppbnQzMl9kYXRhGAUgAygFQgIQARITCgtzdHJpbmdfZGF0", - "YRgGIAMoDBIWCgppbnQ2NF9kYXRhGAcgAygDQgIQARIMCgRuYW1lGAggASgJ", - "EhIKCmRvY19zdHJpbmcYDCABKAkSEAoIcmF3X2RhdGEYCSABKAwSMwoNZXh0", - "ZXJuYWxfZGF0YRgNIAMoCzIcLm9ubnguU3RyaW5nU3RyaW5nRW50cnlQcm90", - "bxI1Cg1kYXRhX2xvY2F0aW9uGA4gASgOMh4ub25ueC5UZW5zb3JQcm90by5E", - "YXRhTG9jYXRpb24SFwoLZG91YmxlX2RhdGEYCiADKAFCAhABEhcKC3VpbnQ2", - "NF9kYXRhGAsgAygEQgIQARolCgdTZWdtZW50Eg0KBWJlZ2luGAEgASgDEgsK", - "A2VuZBgCIAEoAyLaAQoIRGF0YVR5cGUSDQoJVU5ERUZJTkVEEAASCQoFRkxP", - "QVQQARIJCgVVSU5UOBACEggKBElOVDgQAxIKCgZVSU5UMTYQBBIJCgVJTlQx", - "NhAFEgkKBUlOVDMyEAYSCQoFSU5UNjQQBxIKCgZTVFJJTkcQCBIICgRCT09M", - "EAkSCwoHRkxPQVQxNhAKEgoKBkRPVUJMRRALEgoKBlVJTlQzMhAMEgoKBlVJ", - "TlQ2NBANEg0KCUNPTVBMRVg2NBAOEg4KCkNPTVBMRVgxMjgQDxIMCghCRkxP", - "QVQxNhAQIikKDERhdGFMb2NhdGlvbhILCgdERUZBVUxUEAASDAoIRVhURVJO", - "QUwQASJoChFTcGFyc2VUZW5zb3JQcm90bxIhCgZ2YWx1ZXMYASABKAsyES5v", - "bm54LlRlbnNvclByb3RvEiIKB2luZGljZXMYAiABKAsyES5vbm54LlRlbnNv", - "clByb3RvEgwKBGRpbXMYAyADKAMilQEKEFRlbnNvclNoYXBlUHJvdG8SLQoD", - "ZGltGAEgAygLMiAub25ueC5UZW5zb3JTaGFwZVByb3RvLkRpbWVuc2lvbhpS", - "CglEaW1lbnNpb24SEwoJZGltX3ZhbHVlGAEgASgDSAASEwoJZGltX3BhcmFt", - "GAIgASgJSAASEgoKZGVub3RhdGlvbhgDIAEoCUIHCgV2YWx1ZSKlBQoJVHlw", - "ZVByb3RvEi0KC3RlbnNvcl90eXBlGAEgASgLMhYub25ueC5UeXBlUHJvdG8u", - "VGVuc29ySAASMQoNc2VxdWVuY2VfdHlwZRgEIAEoCzIYLm9ubnguVHlwZVBy", - "b3RvLlNlcXVlbmNlSAASJwoIbWFwX3R5cGUYBSABKAsyEy5vbm54LlR5cGVQ", - "cm90by5NYXBIABIxCg1vcHRpb25hbF90eXBlGAkgASgLMhgub25ueC5UeXBl", - "UHJvdG8uT3B0aW9uYWxIABI6ChJzcGFyc2VfdGVuc29yX3R5cGUYCCABKAsy", - "HC5vbm54LlR5cGVQcm90by5TcGFyc2VUZW5zb3JIABItCgtvcGFxdWVfdHlw", - "ZRgHIAEoCzIWLm9ubnguVHlwZVByb3RvLk9wYXF1ZUgAEhIKCmRlbm90YXRp", - "b24YBiABKAkaQgoGVGVuc29yEhEKCWVsZW1fdHlwZRgBIAEoBRIlCgVzaGFw", - "ZRgCIAEoCzIWLm9ubnguVGVuc29yU2hhcGVQcm90bxouCghTZXF1ZW5jZRIi", - "CgllbGVtX3R5cGUYASABKAsyDy5vbm54LlR5cGVQcm90bxo8CgNNYXASEAoI", - "a2V5X3R5cGUYASABKAUSIwoKdmFsdWVfdHlwZRgCIAEoCzIPLm9ubnguVHlw", - "ZVByb3RvGi4KCE9wdGlvbmFsEiIKCWVsZW1fdHlwZRgBIAEoCzIPLm9ubngu", - "VHlwZVByb3RvGkgKDFNwYXJzZVRlbnNvchIRCgllbGVtX3R5cGUYASABKAUS", - "JQoFc2hhcGUYAiABKAsyFi5vbm54LlRlbnNvclNoYXBlUHJvdG8aJgoGT3Bh", - "cXVlEg4KBmRvbWFpbhgBIAEoCRIMCgRuYW1lGAIgASgJQgcKBXZhbHVlIjUK", - "Ek9wZXJhdG9yU2V0SWRQcm90bxIOCgZkb21haW4YASABKAkSDwoHdmVyc2lv", - "bhgCIAEoAyLlAQoNRnVuY3Rpb25Qcm90bxIMCgRuYW1lGAEgASgJEg0KBWlu", - "cHV0GAQgAygJEg4KBm91dHB1dBgFIAMoCRIRCglhdHRyaWJ1dGUYBiADKAkS", - "HQoEbm9kZRgHIAMoCzIPLm9ubnguTm9kZVByb3RvEhIKCmRvY19zdHJpbmcY", - "CCABKAkSLgoMb3BzZXRfaW1wb3J0GAkgAygLMhgub25ueC5PcGVyYXRvclNl", - "dElkUHJvdG8SDgoGZG9tYWluGAogASgJSgQIAhADSgQIAxAEUg1zaW5jZV92", - "ZXJzaW9uUgZzdGF0dXMq5AEKB1ZlcnNpb24SEgoOX1NUQVJUX1ZFUlNJT04Q", - "ABIZChVJUl9WRVJTSU9OXzIwMTdfMTBfMTAQARIZChVJUl9WRVJTSU9OXzIw", - "MTdfMTBfMzAQAhIYChRJUl9WRVJTSU9OXzIwMTdfMTFfMxADEhgKFElSX1ZF", - "UlNJT05fMjAxOV8xXzIyEAQSGAoUSVJfVkVSU0lPTl8yMDE5XzNfMTgQBRIY", - "ChRJUl9WRVJTSU9OXzIwMTlfOV8xORAGEhcKE0lSX1ZFUlNJT05fMjAyMF81", - "XzgQBxIOCgpJUl9WRVJTSU9OEAgqLgoOT3BlcmF0b3JTdGF0dXMSEAoMRVhQ", - "RVJJTUVOVEFMEAASCgoGU1RBQkxFEAFCAkgDYgZwcm90bzM=")); + "ChNvbm54L29ubngtbWwucHJvdG8zEgRvbm54IswFCg5BdHRyaWJ1dGVQcm90", + "bxIMCgRuYW1lGAEgASgJEhUKDXJlZl9hdHRyX25hbWUYFSABKAkSEgoKZG9j", + "X3N0cmluZxgNIAEoCRIwCgR0eXBlGBQgASgOMiIub25ueC5BdHRyaWJ1dGVQ", + "cm90by5BdHRyaWJ1dGVUeXBlEgkKAWYYAiABKAISCQoBaRgDIAEoAxIJCgFz", + "GAQgASgMEhwKAXQYBSABKAsyES5vbm54LlRlbnNvclByb3RvEhsKAWcYBiAB", + "KAsyEC5vbm54LkdyYXBoUHJvdG8SLgoNc3BhcnNlX3RlbnNvchgWIAEoCzIX", + "Lm9ubnguU3BhcnNlVGVuc29yUHJvdG8SGwoCdHAYDiABKAsyDy5vbm54LlR5", + "cGVQcm90bxIOCgZmbG9hdHMYByADKAISDAoEaW50cxgIIAMoAxIPCgdzdHJp", + "bmdzGAkgAygMEiIKB3RlbnNvcnMYCiADKAsyES5vbm54LlRlbnNvclByb3Rv", + "EiAKBmdyYXBocxgLIAMoCzIQLm9ubnguR3JhcGhQcm90bxIvCg5zcGFyc2Vf", + "dGVuc29ycxgXIAMoCzIXLm9ubnguU3BhcnNlVGVuc29yUHJvdG8SJAoLdHlw", + "ZV9wcm90b3MYDyADKAsyDy5vbm54LlR5cGVQcm90byLZAQoNQXR0cmlidXRl", + "VHlwZRINCglVTkRFRklORUQQABIJCgVGTE9BVBABEgcKA0lOVBACEgoKBlNU", + "UklORxADEgoKBlRFTlNPUhAEEgkKBUdSQVBIEAUSEQoNU1BBUlNFX1RFTlNP", + "UhALEg4KClRZUEVfUFJPVE8QDRIKCgZGTE9BVFMQBhIICgRJTlRTEAcSCwoH", + "U1RSSU5HUxAIEgsKB1RFTlNPUlMQCRIKCgZHUkFQSFMQChISCg5TUEFSU0Vf", + "VEVOU09SUxAMEg8KC1RZUEVfUFJPVE9TEA4iUQoOVmFsdWVJbmZvUHJvdG8S", + "DAoEbmFtZRgBIAEoCRIdCgR0eXBlGAIgASgLMg8ub25ueC5UeXBlUHJvdG8S", + "EgoKZG9jX3N0cmluZxgDIAEoCSKWAQoJTm9kZVByb3RvEg0KBWlucHV0GAEg", + "AygJEg4KBm91dHB1dBgCIAMoCRIMCgRuYW1lGAMgASgJEg8KB29wX3R5cGUY", + "BCABKAkSDgoGZG9tYWluGAcgASgJEicKCWF0dHJpYnV0ZRgFIAMoCzIULm9u", + "bnguQXR0cmlidXRlUHJvdG8SEgoKZG9jX3N0cmluZxgGIAEoCSLWAQoRVHJh", + "aW5pbmdJbmZvUHJvdG8SKAoOaW5pdGlhbGl6YXRpb24YASABKAsyEC5vbm54", + "LkdyYXBoUHJvdG8SIwoJYWxnb3JpdGhtGAIgASgLMhAub25ueC5HcmFwaFBy", + "b3RvEjwKFmluaXRpYWxpemF0aW9uX2JpbmRpbmcYAyADKAsyHC5vbm54LlN0", + "cmluZ1N0cmluZ0VudHJ5UHJvdG8SNAoOdXBkYXRlX2JpbmRpbmcYBCADKAsy", + "HC5vbm54LlN0cmluZ1N0cmluZ0VudHJ5UHJvdG8i6wIKCk1vZGVsUHJvdG8S", + "EgoKaXJfdmVyc2lvbhgBIAEoAxIuCgxvcHNldF9pbXBvcnQYCCADKAsyGC5v", + "bm54Lk9wZXJhdG9yU2V0SWRQcm90bxIVCg1wcm9kdWNlcl9uYW1lGAIgASgJ", + "EhgKEHByb2R1Y2VyX3ZlcnNpb24YAyABKAkSDgoGZG9tYWluGAQgASgJEhUK", + "DW1vZGVsX3ZlcnNpb24YBSABKAMSEgoKZG9jX3N0cmluZxgGIAEoCRIfCgVn", + "cmFwaBgHIAEoCzIQLm9ubnguR3JhcGhQcm90bxI0Cg5tZXRhZGF0YV9wcm9w", + "cxgOIAMoCzIcLm9ubnguU3RyaW5nU3RyaW5nRW50cnlQcm90bxIuCg10cmFp", + "bmluZ19pbmZvGBQgAygLMhcub25ueC5UcmFpbmluZ0luZm9Qcm90bxImCglm", + "dW5jdGlvbnMYGSADKAsyEy5vbm54LkZ1bmN0aW9uUHJvdG8iNAoWU3RyaW5n", + "U3RyaW5nRW50cnlQcm90bxILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAki", + "awoQVGVuc29yQW5ub3RhdGlvbhITCgt0ZW5zb3JfbmFtZRgBIAEoCRJCChxx", + "dWFudF9wYXJhbWV0ZXJfdGVuc29yX25hbWVzGAIgAygLMhwub25ueC5TdHJp", + "bmdTdHJpbmdFbnRyeVByb3RvIp4DCgpHcmFwaFByb3RvEh0KBG5vZGUYASAD", + "KAsyDy5vbm54Lk5vZGVQcm90bxIMCgRuYW1lGAIgASgJEiYKC2luaXRpYWxp", + "emVyGAUgAygLMhEub25ueC5UZW5zb3JQcm90bxIzChJzcGFyc2VfaW5pdGlh", + "bGl6ZXIYDyADKAsyFy5vbm54LlNwYXJzZVRlbnNvclByb3RvEhIKCmRvY19z", + "dHJpbmcYCiABKAkSIwoFaW5wdXQYCyADKAsyFC5vbm54LlZhbHVlSW5mb1By", + "b3RvEiQKBm91dHB1dBgMIAMoCzIULm9ubnguVmFsdWVJbmZvUHJvdG8SKAoK", + "dmFsdWVfaW5mbxgNIAMoCzIULm9ubnguVmFsdWVJbmZvUHJvdG8SNwoXcXVh", + "bnRpemF0aW9uX2Fubm90YXRpb24YDiADKAsyFi5vbm54LlRlbnNvckFubm90", + "YXRpb25KBAgDEARKBAgEEAVKBAgGEApSCmlyX3ZlcnNpb25SEHByb2R1Y2Vy", + "X3ZlcnNpb25SDHByb2R1Y2VyX3RhZ1IGZG9tYWluIoIGCgtUZW5zb3JQcm90", + "bxIMCgRkaW1zGAEgAygDEhEKCWRhdGFfdHlwZRgCIAEoBRIqCgdzZWdtZW50", + "GAMgASgLMhkub25ueC5UZW5zb3JQcm90by5TZWdtZW50EhYKCmZsb2F0X2Rh", + "dGEYBCADKAJCAhABEhYKCmludDMyX2RhdGEYBSADKAVCAhABEhMKC3N0cmlu", + "Z19kYXRhGAYgAygMEhYKCmludDY0X2RhdGEYByADKANCAhABEgwKBG5hbWUY", + "CCABKAkSEgoKZG9jX3N0cmluZxgMIAEoCRIQCghyYXdfZGF0YRgJIAEoDBIz", + "Cg1leHRlcm5hbF9kYXRhGA0gAygLMhwub25ueC5TdHJpbmdTdHJpbmdFbnRy", + "eVByb3RvEjUKDWRhdGFfbG9jYXRpb24YDiABKA4yHi5vbm54LlRlbnNvclBy", + "b3RvLkRhdGFMb2NhdGlvbhIXCgtkb3VibGVfZGF0YRgKIAMoAUICEAESFwoL", + "dWludDY0X2RhdGEYCyADKARCAhABGiUKB1NlZ21lbnQSDQoFYmVnaW4YASAB", + "KAMSCwoDZW5kGAIgASgDIqQCCghEYXRhVHlwZRINCglVTkRFRklORUQQABIJ", + "CgVGTE9BVBABEgkKBVVJTlQ4EAISCAoESU5UOBADEgoKBlVJTlQxNhAEEgkK", + "BUlOVDE2EAUSCQoFSU5UMzIQBhIJCgVJTlQ2NBAHEgoKBlNUUklORxAIEggK", + "BEJPT0wQCRILCgdGTE9BVDE2EAoSCgoGRE9VQkxFEAsSCgoGVUlOVDMyEAwS", + "CgoGVUlOVDY0EA0SDQoJQ09NUExFWDY0EA4SDgoKQ09NUExFWDEyOBAPEgwK", + "CEJGTE9BVDE2EBASEAoMRkxPQVQ4RTRNM0ZOEBESEgoORkxPQVQ4RTRNM0ZO", + "VVoQEhIOCgpGTE9BVDhFNU0yEBMSEgoORkxPQVQ4RTVNMkZOVVoQFCIpCgxE", + "YXRhTG9jYXRpb24SCwoHREVGQVVMVBAAEgwKCEVYVEVSTkFMEAEiaAoRU3Bh", + "cnNlVGVuc29yUHJvdG8SIQoGdmFsdWVzGAEgASgLMhEub25ueC5UZW5zb3JQ", + "cm90bxIiCgdpbmRpY2VzGAIgASgLMhEub25ueC5UZW5zb3JQcm90bxIMCgRk", + "aW1zGAMgAygDIpUBChBUZW5zb3JTaGFwZVByb3RvEi0KA2RpbRgBIAMoCzIg", + "Lm9ubnguVGVuc29yU2hhcGVQcm90by5EaW1lbnNpb24aUgoJRGltZW5zaW9u", + "EhMKCWRpbV92YWx1ZRgBIAEoA0gAEhMKCWRpbV9wYXJhbRgCIAEoCUgAEhIK", + "CmRlbm90YXRpb24YAyABKAlCBwoFdmFsdWUipQUKCVR5cGVQcm90bxItCgt0", + "ZW5zb3JfdHlwZRgBIAEoCzIWLm9ubnguVHlwZVByb3RvLlRlbnNvckgAEjEK", + "DXNlcXVlbmNlX3R5cGUYBCABKAsyGC5vbm54LlR5cGVQcm90by5TZXF1ZW5j", + "ZUgAEicKCG1hcF90eXBlGAUgASgLMhMub25ueC5UeXBlUHJvdG8uTWFwSAAS", + "MQoNb3B0aW9uYWxfdHlwZRgJIAEoCzIYLm9ubnguVHlwZVByb3RvLk9wdGlv", + "bmFsSAASOgoSc3BhcnNlX3RlbnNvcl90eXBlGAggASgLMhwub25ueC5UeXBl", + "UHJvdG8uU3BhcnNlVGVuc29ySAASLQoLb3BhcXVlX3R5cGUYByABKAsyFi5v", + "bm54LlR5cGVQcm90by5PcGFxdWVIABISCgpkZW5vdGF0aW9uGAYgASgJGkIK", + "BlRlbnNvchIRCgllbGVtX3R5cGUYASABKAUSJQoFc2hhcGUYAiABKAsyFi5v", + "bm54LlRlbnNvclNoYXBlUHJvdG8aLgoIU2VxdWVuY2USIgoJZWxlbV90eXBl", + "GAEgASgLMg8ub25ueC5UeXBlUHJvdG8aPAoDTWFwEhAKCGtleV90eXBlGAEg", + "ASgFEiMKCnZhbHVlX3R5cGUYAiABKAsyDy5vbm54LlR5cGVQcm90bxouCghP", + "cHRpb25hbBIiCgllbGVtX3R5cGUYASABKAsyDy5vbm54LlR5cGVQcm90bxpI", + "CgxTcGFyc2VUZW5zb3ISEQoJZWxlbV90eXBlGAEgASgFEiUKBXNoYXBlGAIg", + "ASgLMhYub25ueC5UZW5zb3JTaGFwZVByb3RvGiYKBk9wYXF1ZRIOCgZkb21h", + "aW4YASABKAkSDAoEbmFtZRgCIAEoCUIHCgV2YWx1ZSI1ChJPcGVyYXRvclNl", + "dElkUHJvdG8SDgoGZG9tYWluGAEgASgJEg8KB3ZlcnNpb24YAiABKAMilAIK", + "DUZ1bmN0aW9uUHJvdG8SDAoEbmFtZRgBIAEoCRINCgVpbnB1dBgEIAMoCRIO", + "CgZvdXRwdXQYBSADKAkSEQoJYXR0cmlidXRlGAYgAygJEi0KD2F0dHJpYnV0", + "ZV9wcm90bxgLIAMoCzIULm9ubnguQXR0cmlidXRlUHJvdG8SHQoEbm9kZRgH", + "IAMoCzIPLm9ubnguTm9kZVByb3RvEhIKCmRvY19zdHJpbmcYCCABKAkSLgoM", + "b3BzZXRfaW1wb3J0GAkgAygLMhgub25ueC5PcGVyYXRvclNldElkUHJvdG8S", + "DgoGZG9tYWluGAogASgJSgQIAhADSgQIAxAEUg1zaW5jZV92ZXJzaW9uUgZz", + "dGF0dXMq/gEKB1ZlcnNpb24SEgoOX1NUQVJUX1ZFUlNJT04QABIZChVJUl9W", + "RVJTSU9OXzIwMTdfMTBfMTAQARIZChVJUl9WRVJTSU9OXzIwMTdfMTBfMzAQ", + "AhIYChRJUl9WRVJTSU9OXzIwMTdfMTFfMxADEhgKFElSX1ZFUlNJT05fMjAx", + "OV8xXzIyEAQSGAoUSVJfVkVSU0lPTl8yMDE5XzNfMTgQBRIYChRJUl9WRVJT", + "SU9OXzIwMTlfOV8xORAGEhcKE0lSX1ZFUlNJT05fMjAyMF81XzgQBxIYChRJ", + "Ul9WRVJTSU9OXzIwMjFfN18zMBAIEg4KCklSX1ZFUlNJT04QCSouCg5PcGVy", + "YXRvclN0YXR1cxIQCgxFWFBFUklNRU5UQUwQABIKCgZTVEFCTEUQAUICSANi", + "BnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Onnx.Version), typeof(global::Onnx.OperatorStatus), }, null, new pbr::GeneratedClrTypeInfo[] { @@ -142,7 +146,7 @@ namespace Onnx { new pbr::GeneratedClrTypeInfo(typeof(global::Onnx.TypeProto.Types.SparseTensor), global::Onnx.TypeProto.Types.SparseTensor.Parser, new[]{ "ElemType", "Shape" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Onnx.TypeProto.Types.Opaque), global::Onnx.TypeProto.Types.Opaque.Parser, new[]{ "Domain", "Name" }, null, null, null, null)}), new pbr::GeneratedClrTypeInfo(typeof(global::Onnx.OperatorSetIdProto), global::Onnx.OperatorSetIdProto.Parser, new[]{ "Domain", "Version" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Onnx.FunctionProto), global::Onnx.FunctionProto.Parser, new[]{ "Name", "Input", "Output", "Attribute", "Node", "DocString", "OpsetImport", "Domain" }, null, null, null, null) + new pbr::GeneratedClrTypeInfo(typeof(global::Onnx.FunctionProto), global::Onnx.FunctionProto.Parser, new[]{ "Name", "Input", "Output", "Attribute", "AttributeProto", "Node", "DocString", "OpsetImport", "Domain" }, null, null, null, null) })); } #endregion @@ -216,13 +220,19 @@ namespace Onnx { /// [pbr::OriginalName("IR_VERSION_2020_5_8")] IrVersion202058 = 7, /// - /// IR VERSION 8 published on <TBD> + /// IR VERSION 8 published on July 30, 2021 /// Introduce TypeProto.SparseTensor /// Introduce TypeProto.Optional /// Added a list of FunctionProtos local to the model /// Deprecated since_version and operator status from FunctionProto /// - [pbr::OriginalName("IR_VERSION")] IrVersion = 8, + [pbr::OriginalName("IR_VERSION_2021_7_30")] IrVersion2021730 = 8, + /// + /// IR VERSION 9 published on TBD + /// Added AttributeProto to FunctionProto so that default attribute values can be set. + /// Added FLOAT8E4M3FN, FLOAT8E4M3FNUZ, FLOAT8E5M2, FLOAT8E5M2FNUZ. + /// + [pbr::OriginalName("IR_VERSION")] IrVersion = 9, } /// @@ -3860,11 +3870,11 @@ namespace Onnx { = pb::FieldCodec.ForInt32(42); private readonly pbc::RepeatedField int32Data_ = new pbc::RepeatedField(); /// - /// For int32, uint8, int8, uint16, int16, bool, and float16 values - /// float16 values must be bit-wise converted to an uint16_t prior + /// For int32, uint8, int8, uint16, int16, bool, float8, and float16 values + /// float16 and float8 values must be bit-wise converted to an uint16_t prior /// to writing to the buffer. /// When this field is present, the data_type field MUST be - /// INT32, INT16, INT8, UINT16, UINT8, BOOL, or FLOAT16 + /// INT32, INT16, INT8, UINT16, UINT8, BOOL, FLOAT16, BFLOAT16, FLOAT8E4M3FN, FLOAT8E4M3FNUZ, FLOAT8E5M2, FLOAT8E5M2FNUZ /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -4486,6 +4496,27 @@ namespace Onnx { /// This format has 1 sign bit, 8 exponent bits, and 7 mantissa bits. /// [pbr::OriginalName("BFLOAT16")] Bfloat16 = 16, + /// + /// Non-IEEE floating-point format based on papers + /// FP8 Formats for Deep Learning, https://arxiv.org/abs/2209.05433, + /// 8-bit Numerical Formats For Deep Neural Networks, https://arxiv.org/pdf/2206.02915.pdf. + /// Operators supported FP8 are Cast, CastLike, QuantizeLinear, DequantizeLinear. + /// The computation usually happens inside a block quantize / dequantize + /// fused by the runtime. + /// + [pbr::OriginalName("FLOAT8E4M3FN")] Float8E4M3Fn = 17, + /// + /// float 8, mostly used for coefficients, supports nan, not inf, no negative zero + /// + [pbr::OriginalName("FLOAT8E4M3FNUZ")] Float8E4M3Fnuz = 18, + /// + /// follows IEEE 754, supports nan, inf, mostly used for gradients + /// + [pbr::OriginalName("FLOAT8E5M2")] Float8E5M2 = 19, + /// + /// follows IEEE 754, supports nan, inf, mostly used for gradients, no negative zero + /// + [pbr::OriginalName("FLOAT8E5M2FNUZ")] Float8E5M2Fnuz = 20, } /// @@ -7743,6 +7774,7 @@ namespace Onnx { input_ = other.input_.Clone(); output_ = other.output_.Clone(); attribute_ = other.attribute_.Clone(); + attributeProto_ = other.attributeProto_.Clone(); node_ = other.node_.Clone(); docString_ = other.docString_; opsetImport_ = other.opsetImport_.Clone(); @@ -7804,7 +7836,8 @@ namespace Onnx { = pb::FieldCodec.ForString(50); private readonly pbc::RepeatedField attribute_ = new pbc::RepeatedField(); /// - /// The attributes of the function. + /// The attribute parameters of the function. + /// It is for function parameters without default values. /// [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] @@ -7812,6 +7845,23 @@ namespace Onnx { get { return attribute_; } } + /// Field number for the "attribute_proto" field. + public const int AttributeProtoFieldNumber = 11; + private static readonly pb::FieldCodec _repeated_attributeProto_codec + = pb::FieldCodec.ForMessage(90, global::Onnx.AttributeProto.Parser); + private readonly pbc::RepeatedField attributeProto_ = new pbc::RepeatedField(); + /// + /// The attribute protos of the function. + /// It is for function attributes with default values. + /// A function attribute shall be represented either as + /// a string attribute or an AttributeProto, not both. + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public pbc::RepeatedField AttributeProto { + get { return attributeProto_; } + } + /// Field number for the "node" field. public const int NodeFieldNumber = 7; private static readonly pb::FieldCodec _repeated_node_codec @@ -7887,6 +7937,7 @@ namespace Onnx { if(!input_.Equals(other.input_)) return false; if(!output_.Equals(other.output_)) return false; if(!attribute_.Equals(other.attribute_)) return false; + if(!attributeProto_.Equals(other.attributeProto_)) return false; if(!node_.Equals(other.node_)) return false; if (DocString != other.DocString) return false; if(!opsetImport_.Equals(other.opsetImport_)) return false; @@ -7902,6 +7953,7 @@ namespace Onnx { hash ^= input_.GetHashCode(); hash ^= output_.GetHashCode(); hash ^= attribute_.GetHashCode(); + hash ^= attributeProto_.GetHashCode(); hash ^= node_.GetHashCode(); if (DocString.Length != 0) hash ^= DocString.GetHashCode(); hash ^= opsetImport_.GetHashCode(); @@ -7941,6 +7993,7 @@ namespace Onnx { output.WriteRawTag(82); output.WriteString(Domain); } + attributeProto_.WriteTo(output, _repeated_attributeProto_codec); if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -7968,6 +8021,7 @@ namespace Onnx { output.WriteRawTag(82); output.WriteString(Domain); } + attributeProto_.WriteTo(ref output, _repeated_attributeProto_codec); if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -7984,6 +8038,7 @@ namespace Onnx { size += input_.CalculateSize(_repeated_input_codec); size += output_.CalculateSize(_repeated_output_codec); size += attribute_.CalculateSize(_repeated_attribute_codec); + size += attributeProto_.CalculateSize(_repeated_attributeProto_codec); size += node_.CalculateSize(_repeated_node_codec); if (DocString.Length != 0) { size += 1 + pb::CodedOutputStream.ComputeStringSize(DocString); @@ -8010,6 +8065,7 @@ namespace Onnx { input_.Add(other.input_); output_.Add(other.output_); attribute_.Add(other.attribute_); + attributeProto_.Add(other.attributeProto_); node_.Add(other.node_); if (other.DocString.Length != 0) { DocString = other.DocString; @@ -8065,6 +8121,10 @@ namespace Onnx { Domain = input.ReadString(); break; } + case 90: { + attributeProto_.AddEntriesFrom(input, _repeated_attributeProto_codec); + break; + } } } #endif @@ -8112,6 +8172,10 @@ namespace Onnx { Domain = input.ReadString(); break; } + case 90: { + attributeProto_.AddEntriesFrom(ref input, _repeated_attributeProto_codec); + break; + } } } }