slot0 = setmetatable slot1 = rawset slot2 = rawget slot3 = error slot4 = ipairs slot5 = pairs slot6 = print slot7 = table slot8 = string slot9 = tostring slot10 = type slot11 = require("pb") slot12 = require("wire_format") slot13 = require("type_checkers") slot14 = require("encoder") slot15 = require("decoder") slot16 = require("listener") slot17 = require("containers") slot19 = require("descriptor").FieldDescriptor slot20 = require("text_format") module("protobuf") function slot21(slot0, slot1, slot2) slot3 = { __newindex = function (slot0, slot1, slot2) if uv0[slot1] then uv1(slot0, slot1, slot2) else uv2("error key: " .. slot1) end end, __index = slot3 } function slot3.__call() return uv0({}, uv1) end _M[slot0] = uv2(slot1, slot3) end slot21("Descriptor", {}, { full_name = true, name = true, containing_type = true, is_extendable = true, extensions = true, fields = true, extension_ranges = true, nested_types = true, options = true, enum_types = true, filename = true }) slot21("FieldDescriptor", slot19, { full_name = true, name = true, containing_type = true, type = true, index = true, label = true, default_value = true, number = true, extension_scope = true, is_extension = true, enum_type = true, has_default_value = true, message_type = true, cpp_type = true }) slot21("EnumDescriptor", {}, { full_name = true, values = true, containing_type = true, name = true, options = true }) slot21("EnumValueDescriptor", {}, { options = true, name = true, type = true, index = true, number = true }) slot22 = { [slot19.TYPE_DOUBLE] = slot12.WIRETYPE_FIXED64, [slot19.TYPE_FLOAT] = slot12.WIRETYPE_FIXED32, [slot19.TYPE_INT64] = slot12.WIRETYPE_VARINT, [slot19.TYPE_UINT64] = slot12.WIRETYPE_VARINT, [slot19.TYPE_INT32] = slot12.WIRETYPE_VARINT, [slot19.TYPE_FIXED64] = slot12.WIRETYPE_FIXED64, [slot19.TYPE_FIXED32] = slot12.WIRETYPE_FIXED32, [slot19.TYPE_BOOL] = slot12.WIRETYPE_VARINT, [slot19.TYPE_STRING] = slot12.WIRETYPE_LENGTH_DELIMITED, [slot19.TYPE_GROUP] = slot12.WIRETYPE_START_GROUP, [slot19.TYPE_MESSAGE] = slot12.WIRETYPE_LENGTH_DELIMITED, [slot19.TYPE_BYTES] = slot12.WIRETYPE_LENGTH_DELIMITED, [slot19.TYPE_UINT32] = slot12.WIRETYPE_VARINT, [slot19.TYPE_ENUM] = slot12.WIRETYPE_VARINT, [slot19.TYPE_SFIXED32] = slot12.WIRETYPE_FIXED32, [slot19.TYPE_SFIXED64] = slot12.WIRETYPE_FIXED64, [slot19.TYPE_SINT32] = slot12.WIRETYPE_VARINT, [slot19.TYPE_SINT64] = slot12.WIRETYPE_VARINT } slot23 = { [slot19.TYPE_STRING] = true, [slot19.TYPE_GROUP] = true, [slot19.TYPE_MESSAGE] = true, [slot19.TYPE_BYTES] = true } slot24 = { [slot19.CPPTYPE_INT32] = slot13.Int32ValueChecker(), [slot19.CPPTYPE_INT64] = slot13.TypeChecker({ string = true, number = true }), [slot19.CPPTYPE_UINT32] = slot13.Uint32ValueChecker(), [slot19.CPPTYPE_UINT64] = slot13.TypeChecker({ string = true, number = true }), [slot19.CPPTYPE_DOUBLE] = slot13.TypeChecker({ number = true }), [slot19.CPPTYPE_FLOAT] = slot13.TypeChecker({ number = true }), [slot19.CPPTYPE_BOOL] = slot13.TypeChecker({ boolean = true, int = true, bool = true }), [slot19.CPPTYPE_ENUM] = slot13.Int32ValueChecker(), [slot19.CPPTYPE_STRING] = slot13.TypeChecker({ string = true }) } slot25 = { [slot19.TYPE_DOUBLE] = slot12.DoubleByteSize, [slot19.TYPE_FLOAT] = slot12.FloatByteSize, [slot19.TYPE_INT64] = slot12.Int64ByteSize, [slot19.TYPE_UINT64] = slot12.UInt64ByteSize, [slot19.TYPE_INT32] = slot12.Int32ByteSize, [slot19.TYPE_FIXED64] = slot12.Fixed64ByteSize, [slot19.TYPE_FIXED32] = slot12.Fixed32ByteSize, [slot19.TYPE_BOOL] = slot12.BoolByteSize, [slot19.TYPE_STRING] = slot12.StringByteSize, [slot19.TYPE_GROUP] = slot12.GroupByteSize, [slot19.TYPE_MESSAGE] = slot12.MessageByteSize, [slot19.TYPE_BYTES] = slot12.BytesByteSize, [slot19.TYPE_UINT32] = slot12.UInt32ByteSize, [slot19.TYPE_ENUM] = slot12.EnumByteSize, [slot19.TYPE_SFIXED32] = slot12.SFixed32ByteSize, [slot19.TYPE_SFIXED64] = slot12.SFixed64ByteSize, [slot19.TYPE_SINT32] = slot12.SInt32ByteSize, [slot19.TYPE_SINT64] = slot12.SInt64ByteSize } slot26 = { [slot19.TYPE_DOUBLE] = slot14.DoubleEncoder, [slot19.TYPE_FLOAT] = slot14.FloatEncoder, [slot19.TYPE_INT64] = slot14.Int64Encoder, [slot19.TYPE_UINT64] = slot14.UInt64Encoder, [slot19.TYPE_INT32] = slot14.Int32Encoder, [slot19.TYPE_FIXED64] = slot14.Fixed64Encoder, [slot19.TYPE_FIXED32] = slot14.Fixed32Encoder, [slot19.TYPE_BOOL] = slot14.BoolEncoder, [slot19.TYPE_STRING] = slot14.StringEncoder, [slot19.TYPE_GROUP] = slot14.GroupEncoder, [slot19.TYPE_MESSAGE] = slot14.MessageEncoder, [slot19.TYPE_BYTES] = slot14.BytesEncoder, [slot19.TYPE_UINT32] = slot14.UInt32Encoder, [slot19.TYPE_ENUM] = slot14.EnumEncoder, [slot19.TYPE_SFIXED32] = slot14.SFixed32Encoder, [slot19.TYPE_SFIXED64] = slot14.SFixed64Encoder, [slot19.TYPE_SINT32] = slot14.SInt32Encoder, [slot19.TYPE_SINT64] = slot14.SInt64Encoder } slot27 = { [slot19.TYPE_DOUBLE] = slot14.DoubleSizer, [slot19.TYPE_FLOAT] = slot14.FloatSizer, [slot19.TYPE_INT64] = slot14.Int64Sizer, [slot19.TYPE_UINT64] = slot14.UInt64Sizer, [slot19.TYPE_INT32] = slot14.Int32Sizer, [slot19.TYPE_FIXED64] = slot14.Fixed64Sizer, [slot19.TYPE_FIXED32] = slot14.Fixed32Sizer, [slot19.TYPE_BOOL] = slot14.BoolSizer, [slot19.TYPE_STRING] = slot14.StringSizer, [slot19.TYPE_GROUP] = slot14.GroupSizer, [slot19.TYPE_MESSAGE] = slot14.MessageSizer, [slot19.TYPE_BYTES] = slot14.BytesSizer, [slot19.TYPE_UINT32] = slot14.UInt32Sizer, [slot19.TYPE_ENUM] = slot14.EnumSizer, [slot19.TYPE_SFIXED32] = slot14.SFixed32Sizer, [slot19.TYPE_SFIXED64] = slot14.SFixed64Sizer, [slot19.TYPE_SINT32] = slot14.SInt32Sizer, [slot19.TYPE_SINT64] = slot14.SInt64Sizer } slot28 = { [slot19.TYPE_DOUBLE] = slot15.DoubleDecoder, [slot19.TYPE_FLOAT] = slot15.FloatDecoder, [slot19.TYPE_INT64] = slot15.Int64Decoder, [slot19.TYPE_UINT64] = slot15.UInt64Decoder, [slot19.TYPE_INT32] = slot15.Int32Decoder, [slot19.TYPE_FIXED64] = slot15.Fixed64Decoder, [slot19.TYPE_FIXED32] = slot15.Fixed32Decoder, [slot19.TYPE_BOOL] = slot15.BoolDecoder, [slot19.TYPE_STRING] = slot15.StringDecoder, [slot19.TYPE_GROUP] = slot15.GroupDecoder, [slot19.TYPE_MESSAGE] = slot15.MessageDecoder, [slot19.TYPE_BYTES] = slot15.BytesDecoder, [slot19.TYPE_UINT32] = slot15.UInt32Decoder, [slot19.TYPE_ENUM] = slot15.EnumDecoder, [slot19.TYPE_SFIXED32] = slot15.SFixed32Decoder, [slot19.TYPE_SFIXED64] = slot15.SFixed64Decoder, [slot19.TYPE_SINT32] = slot15.SInt32Decoder, [slot19.TYPE_SINT64] = slot15.SInt64Decoder } slot29 = { [slot19.TYPE_DOUBLE] = slot12.WIRETYPE_FIXED64, [slot19.TYPE_FLOAT] = slot12.WIRETYPE_FIXED32, [slot19.TYPE_INT64] = slot12.WIRETYPE_VARINT, [slot19.TYPE_UINT64] = slot12.WIRETYPE_VARINT, [slot19.TYPE_INT32] = slot12.WIRETYPE_VARINT, [slot19.TYPE_FIXED64] = slot12.WIRETYPE_FIXED64, [slot19.TYPE_FIXED32] = slot12.WIRETYPE_FIXED32, [slot19.TYPE_BOOL] = slot12.WIRETYPE_VARINT, [slot19.TYPE_STRING] = slot12.WIRETYPE_LENGTH_DELIMITED, [slot19.TYPE_GROUP] = slot12.WIRETYPE_START_GROUP, [slot19.TYPE_MESSAGE] = slot12.WIRETYPE_LENGTH_DELIMITED, [slot19.TYPE_BYTES] = slot12.WIRETYPE_LENGTH_DELIMITED, [slot19.TYPE_UINT32] = slot12.WIRETYPE_VARINT, [slot19.TYPE_ENUM] = slot12.WIRETYPE_VARINT, [slot19.TYPE_SFIXED32] = slot12.WIRETYPE_FIXED32, [slot19.TYPE_SFIXED64] = slot12.WIRETYPE_FIXED64, [slot19.TYPE_SINT32] = slot12.WIRETYPE_VARINT, [slot19.TYPE_SINT64] = slot12.WIRETYPE_VARINT } function slot30(slot0) return uv0[slot0] == nil end function slot31(slot0, slot1) if slot0 == uv0.CPPTYPE_STRING and slot1 == uv0.TYPE_STRING then return uv1.UnicodeValueChecker() end return uv2[slot0] end function slot32(slot0) if slot0.label == uv0.LABEL_REPEATED then if uv1(slot0.default_value) ~= "table" or #slot0.default_value ~= 0 then uv2("Repeated field default value not empty list:" .. uv3(slot0.default_value)) end if slot0.cpp_type == uv0.CPPTYPE_MESSAGE then slot1 = slot0.message_type return function (slot0) return uv0.RepeatedCompositeFieldContainer(slot0._listener_for_children, uv1) end else slot1 = uv5(slot0.cpp_type, slot0.type) return function (slot0) return uv0.RepeatedScalarFieldContainer(slot0._listener_for_children, uv1) end end end if slot0.cpp_type == uv0.CPPTYPE_MESSAGE then slot1 = slot0.message_type return function (slot0) slot1 = uv0._concrete_class() slot1._SetListener(slot0._listener_for_children) return slot1 end end return function (slot0) return uv0.default_value end end function slot33(slot0, slot1) slot2 = slot1.label == uv0.LABEL_REPEATED slot3 = slot1.has_options and slot1.GetOptions().packed uv1(slot1, "_encoder", uv2[slot1.type](slot1.number, slot2, slot3)) uv1(slot1, "_sizer", uv3[slot1.type](slot1.number, slot2, slot3)) uv1(slot1, "_default_constructor", uv4(slot1)) function (slot0, slot1) uv2._decoders_by_tag[uv0.TagBytes(uv1.number, slot0)] = uv3[uv1.type](uv1.number, uv4, slot1, uv1, uv1._default_constructor) end(uv7[slot1.type], False) if slot2 and uv8(slot1.type) then slot4(uv9.WIRETYPE_LENGTH_DELIMITED, True) end end function slot34(slot0, slot1) for slot5, slot6 in uv0(slot0.enum_types) do for slot10, slot11 in uv0(slot6.values) do slot1._member[slot11.name] = slot11.number end end end function slot35(slot0) return function () slot0 = { _cached_byte_size = 0, _cached_byte_size_dirty = false, _fields = {}, _is_present_in_parent = false, _listener = uv0.NullMessageListener(), _listener_for_children = uv0.Listener(slot0) } return uv1(slot0, uv2) end end function slot36(slot0, slot1) slot2 = slot0.name slot1._getter[slot2] = function (slot0) if slot0._fields[uv0] == nil then slot0._fields[uv0] = uv0._default_constructor(slot0) if not slot0._cached_byte_size_dirty then uv1._member._Modified(slot0) end end return slot1 end slot1._setter[slot2] = function (slot0) uv0("Assignment not allowed to repeated field \"" .. uv1 .. "\" in protocol message object.") end end function slot37(slot0, slot1) slot2 = slot0.name slot3 = slot0.message_type slot1._getter[slot2] = function (slot0) if slot0._fields[uv0] == nil then slot1 = uv1._concrete_class() slot1:_SetListener(slot0._listener_for_children) slot0._fields[uv0] = slot1 if not slot0._cached_byte_size_dirty then uv2._member._Modified(slot0) end end return slot1 end slot1._setter[slot2] = function (slot0, slot1) uv0("Assignment not allowed to composite field" .. uv1 .. "in protocol message object.") end end function slot38(slot0, slot1) slot2 = slot0.name slot3 = uv0(slot0.cpp_type, slot0.type) slot4 = slot0.default_value slot1._getter[slot2] = function (slot0) if slot0._fields[uv0] ~= nil then return slot0._fields[uv0] else return uv1 end end slot1._setter[slot2] = function (slot0, slot1) uv0(slot1) slot0._fields[uv1] = slot1 if not slot0._cached_byte_size_dirty then uv2._member._Modified(slot0) end end end function slot39(slot0, slot1) slot1._member[slot0.name:upper() .. "_FIELD_NUMBER"] = slot0.number if slot0.label == uv0.LABEL_REPEATED then uv1(slot0, slot1) elseif slot0.cpp_type == uv0.CPPTYPE_MESSAGE then uv2(slot0, slot1) else uv3(slot0, slot1) end end slot40 = { __index = function (slot0, slot1) if uv0(slot0, "_extended_message")._fields[slot1] ~= nil then return slot3 end if slot1.label == uv1.LABEL_REPEATED then slot3 = slot1._default_constructor(slot0._extended_message) elseif slot1.cpp_type == uv1.CPPTYPE_MESSAGE then slot1.message_type._concrete_class():_SetListener(slot2._listener_for_children) else return slot1.default_value end slot2._fields[slot1] = slot3 return slot3 end, __newindex = function (slot0, slot1, slot2) slot3 = uv0(slot0, "_extended_message") if slot1.label == uv1.LABEL_REPEATED or slot1.cpp_type == uv1.CPPTYPE_MESSAGE then uv2("Cannot assign to extension \"" .. slot1.full_name .. "\" because it is a repeated or composite type.") end uv3(slot1.cpp_type, slot1.type).CheckValue(slot2) slot3._fields[slot1] = slot2 slot3._Modified() end } function slot41(slot0) return uv0({ _extended_message = slot0 }, uv1) end function slot42(slot0, slot1) for slot5, slot6 in uv0(slot0.fields) do uv1(slot6, slot1) end if slot0.is_extendable then function slot1._getter.Extensions(slot0) return uv0(slot0) end end end function slot43(slot0, slot1) for slot6, slot7 in uv0(slot0._extensions_by_name) do slot1._member[uv1.upper(slot6) .. "_FIELD_NUMBER"] = slot7.number end end function slot44(slot0) function slot0._member.RegisterExtension(slot0) slot0.containing_type = uv0._descriptor uv1(uv0, slot0) if uv0._extensions_by_number[slot0.number] == nil then uv0._extensions_by_number[slot0.number] = slot0 else uv2(uv3.format("Extensions \"%s\" and \"%s\" both try to extend message type \"%s\" with field number %d.", slot0.full_name, actual_handle.full_name, uv0._descriptor.full_name, slot0.number)) end uv0._extensions_by_name[slot0.full_name] = slot0 end function slot0._member.FromString(slot0) slot1 = uv0._member.__call() slot1.MergeFromString(slot0) return slot1 end end function slot45(slot0, slot1) if slot0.label == uv0.LABEL_REPEATED then return slot1 elseif slot0.cpp_type == uv0.CPPTYPE_MESSAGE then return slot1._is_present_in_parent else return true end end function sortFunc(slot0, slot1) return slot0.index < slot1.index end function pairsByKeys(slot0, slot1) slot2 = {} for slot6 in uv0(slot0) do uv1.insert(slot2, slot6) end uv1.sort(slot2, slot1) slot3 = 0 return function () uv0 = uv0 + 1 if uv1[uv0] == nil then return nil else return uv1[uv0], uv2[uv1[uv0]] end end end function slot46(slot0, slot1) function slot1._member.ListFields(slot0) return function (slot0) slot1, slot2, slot3 = pairsByKeys(uv0._fields, sortFunc) return function (slot0, slot1) while true do slot2, slot3 = uv0(slot0, slot1) if slot2 == nil then return elseif uv1(slot2, slot3) then return slot2, slot3 end end end, slot2, slot3 end(slot0._fields) end end function slot47(slot0, slot1) slot2 = { [slot7.name] = slot7 } for slot6, slot7 in uv0(slot0.fields) do if slot7.label ~= uv1.LABEL_REPEATED then -- Nothing end end function slot1._member.HasField(slot0, slot1) if uv0[slot1] == nil then uv1("Protocol message has no singular \"" .. slot1 .. "\" field.") end if slot2.cpp_type == uv2.CPPTYPE_MESSAGE then return slot0._fields[slot2] ~= nil and slot3._is_present_in_parent else return slot0._fields[slot2] ~= nil end end end function slot48(slot0, slot1) slot2 = { [slot7.name] = slot7 } for slot6, slot7 in uv0(slot0.fields) do if slot7.label ~= uv1.LABEL_REPEATED then -- Nothing end end function slot1._member.ClearField(slot0, slot1) field = uv0[slot1] if field == nil then uv1("Protocol message has no singular \"" .. slot1 .. "\" field.") end if slot0._fields[field] then slot0._fields[field] = nil end uv2._member._Modified(slot0) end end function slot49(slot0) function slot0._member.ClearExtension(slot0, slot1) if slot0._fields[slot1] == nil then slot0._fields[slot1] = nil end uv0._member._Modified(slot0) end end function slot50(slot0, slot1) function slot1._member.Clear(slot0) slot0._fields = {} uv0._member._Modified(slot0) end end function slot51(slot0) slot1 = uv0.msg_format function slot0.__tostring(slot0) return uv0(slot0) end end function slot52(slot0) function slot0._member.HasExtension(slot0, slot1) if slot1.label == uv0.LABEL_REPEATED then uv1(slot1.full_name .. " is repeated.") end if slot1.cpp_type == uv0.CPPTYPE_MESSAGE then return slot0._fields[slot1] ~= nil and slot2._is_present_in_parent else return slot0._fields[slot1] end end end function slot53(slot0) function slot0._member._SetListener(slot0, slot1) if slot1 ~= nil then slot0._listener = uv0.NullMessageListener() else slot0._listener = slot1 end end end function slot54(slot0, slot1) function slot1._member.ByteSize(slot0) if not slot0._cached_byte_size_dirty and slot0._cached_byte_size > 0 then return slot0._cached_byte_size end for slot5, slot6 in uv0._member.ListFields(slot0) do slot1 = slot5._sizer(slot6) + 0 end slot0._cached_byte_size = slot1 slot0._cached_byte_size_dirty = false slot0._listener_for_children.dirty = false return slot1 end end function slot55(slot0, slot1) function slot1._member.SerializeToString(slot0) if not uv0._member.IsInitialized(slot0) then uv1("Message is missing required fields: " .. uv2.concat(uv0._member.FindInitializationErrors(slot0), ",")) end return uv0._member.SerializePartialToString(slot0) end function slot1._member.SerializeToIOString(slot0, slot1) if not uv0._member.IsInitialized(slot0) then uv1("Message is missing required fields: " .. uv2.concat(uv0._member.FindInitializationErrors(slot0), ",")) end return uv0._member.SerializePartialToIOString(slot0, slot1) end end function slot56(slot0, slot1) slot2 = uv0.concat function slot1._member._InternalSerialize(slot0, slot1) for slot5, slot6 in uv0._member.ListFields(slot0) do slot5._encoder(slot1, slot6) end end function slot1._member.SerializePartialToIOString(slot0, slot1) slot2 = slot1.write uv0(slot0, function (slot0) uv0(uv1, slot0) end) end function slot1._member.SerializePartialToString(slot0) uv0(slot0, function (slot0) uv0[#uv0 + 1] = slot0 end) return uv1({}) end end function slot57(slot0, slot1) slot2 = uv0.ReadTag slot3 = uv0.SkipField slot4 = slot1._decoders_by_tag function slot1._member._InternalParse(slot0, slot1, slot2, slot3) uv0._member._Modified(slot0) slot4 = slot0._fields slot5, slot6, slot7 = nil while slot2 ~= slot3 do slot8, slot6 = uv1(slot1, slot2) if uv2[slot8] == nil then if uv3(slot1, slot6, slot3, slot5) == -1 then return slot2 end slot2 = slot6 else slot2 = slot7(slot1, slot6, slot3, slot0, slot4) end end return slot2 end function slot1._member.MergeFromString(slot0, slot1) slot2 = #slot1 if uv0(slot0, slot1, 0, slot2) ~= slot2 then uv1("Unexpected end-group tag.") end return slot2 end function slot1._member.ParseFromString(slot0, slot1) uv0._member.Clear(slot0) uv1(slot0, slot1) end end function slot58(slot0, slot1) slot2 = {} for slot6, slot7 in uv0(slot0.fields) do if slot7.label == uv1.LABEL_REQUIRED then slot2[#slot2 + 1] = slot7 end end function slot1._member.IsInitialized(slot0, slot1) for slot5, slot6 in uv0(uv1) do if slot0._fields[slot6] == nil or slot6.cpp_type == uv2.CPPTYPE_MESSAGE and not slot0._fields[slot6]._is_present_in_parent then if slot1 ~= nil then slot1[#slot1 + 1] = uv3._member.FindInitializationErrors(slot0) end return false end end for slot5, slot6 in uv4(slot0._fields) do if slot5.cpp_type == uv2.CPPTYPE_MESSAGE then if slot5.label == uv2.LABEL_REPEATED then for slot10, slot11 in uv0(slot6) do if not slot11:IsInitialized() then if slot1 ~= nil then slot1[#slot1 + 1] = uv3._member.FindInitializationErrors(slot0) end return false end end elseif slot6._is_present_in_parent and not slot6:IsInitialized() then if slot1 ~= nil then slot1[#slot1 + 1] = uv3._member.FindInitializationErrors(slot0) end return false end end end return true end function slot1._member.FindInitializationErrors(slot0) slot1 = {} for slot5, slot6 in uv0(uv1) do if not uv2._member.HasField(slot0, slot6.name) then slot1[#slot1 + 1] = slot6.name end end slot2, slot3, slot4 = nil for slot8, slot9 in uv2._member.ListFields(slot0) do if slot8.cpp_type == uv3.CPPTYPE_MESSAGE then slot2 = (not slot8.is_extension or io:format("(%s)", slot8.full_name)) and slot8.name if slot8.label == uv3.LABEL_REPEATED then for slot13, slot14 in uv0(slot9) do slot18 = slot2 slot19 = slot13 for slot18, slot19 in uv0(slot14:FindInitializationErrors()) do slot1[#slot1 + 1] = io:format("%s[%d].", slot18, slot19) .. slot19 end end else for slot13, slot14 in uv0(slot9:FindInitializationErrors()) do slot1[#slot1 + 1] = slot2 .. "." .. slot14 end end end end return slot1 end end function slot59(slot0) slot1 = uv0.LABEL_REPEATED slot2 = uv0.CPPTYPE_MESSAGE function slot0._member.MergeFrom(slot0, slot1) uv0._member._Modified(slot0) slot2 = slot0._fields for slot6, slot7 in uv1(slot1._fields) do if slot6.label == uv2 or slot6.cpp_type == uv3 then if slot2[slot6] == nil then slot2[slot6] = slot6._default_constructor(slot0) end slot8:MergeFrom(slot7) else slot0._fields[slot6] = slot7 end end end end function slot60(slot0, slot1) uv0(slot0, slot1) uv1(slot0, slot1) uv2(slot0, slot1) if slot0.is_extendable then uv3(slot1) uv4(slot1) end uv5(slot0, slot1) uv6(slot1) uv7(slot1) uv8(slot0, slot1) uv9(slot0, slot1) uv10(slot0, slot1) uv11(slot0, slot1) uv12(slot0, slot1) uv13(slot1) end function slot61(slot0) function slot1(slot0) if not slot0._cached_byte_size_dirty then slot0._cached_byte_size_dirty = true slot0._listener_for_children.dirty = true slot0._is_present_in_parent = true slot0._listener:Modified() end end slot0._member._Modified = slot1 slot0._member.SetInParent = slot1 end function slot62(slot0) slot1 = slot0._getter slot2 = slot0._member return function (slot0, slot1) if uv0[slot1] then return slot2(slot0) else return uv1[slot1] end end end function slot63(slot0) slot1 = slot0._setter return function (slot0, slot1, slot2) if uv0[slot1] then slot3(slot0, slot2) else uv1(slot1 .. " not found") end end end function _AddClassAttributesForNestedExtensions(slot0, slot1) for slot6, slot7 in uv0(slot0._extensions_by_name) do slot1._member[slot6] = slot7 end end function _M.Message(slot0) slot1 = { _decoders_by_tag = {} } slot5 = {} uv0(slot0, "_extensions_by_name", slot5) for slot5, slot6 in uv1(slot0.extensions) do slot0._extensions_by_name[slot6.name] = slot6 end slot5 = {} uv0(slot0, "_extensions_by_number", slot5) for slot5, slot6 in uv1(slot0.extensions) do slot0._extensions_by_number[slot6.number] = slot6 end slot1._descriptor = slot0 slot1._extensions_by_name = {} slot1._extensions_by_number = {} slot1._getter = {} slot1._setter = {} slot1._member = { __call = uv3(slot1), __index = slot1._member, type = uv2({}, slot1._member) } if uv4(slot0, "_concrete_class") == nil then slot6 = slot2 uv0(slot0, "_concrete_class", slot6) for slot6, slot7 in uv1(slot0.fields) do uv5(slot1, slot7) end end uv6(slot0, slot1) _AddClassAttributesForNestedExtensions(slot0, slot1) uv7(slot0, slot1) uv8(slot0, slot1) uv9(slot1) uv10(slot0, slot1) uv11(slot1) slot1.__index = uv12(slot1) slot1.__newindex = uv13(slot1) return slot2 end