fileprivate let parsers: [Int32 : (BufferReader) -> Any?] = { var dict: [Int32 : (BufferReader) -> Any?] = [:] dict[-1471112230] = { return $0.readInt32() } dict[570911930] = { return $0.readInt64() } dict[571523412] = { return $0.readDouble() } dict[-1255641564] = { return parseString($0) } dict[590459437] = { return Api.Photo.parse_photoEmpty($0) } dict[-797637467] = { return Api.Photo.parse_photo($0) } dict[236446268] = { return Api.PhotoSize.parse_photoSizeEmpty($0) } dict[2009052699] = { return Api.PhotoSize.parse_photoSize($0) } dict[-374917894] = { return Api.PhotoSize.parse_photoCachedSize($0) } dict[-525288402] = { return Api.PhotoSize.parse_photoStrippedSize($0) } dict[-1132476723] = { return Api.FileLocation.parse_fileLocationToBeDeprecated($0) } dict[1815593308] = { return Api.DocumentAttribute.parse_documentAttributeImageSize($0) } dict[297109817] = { return Api.DocumentAttribute.parse_documentAttributeAnimated($0) } dict[1662637586] = { return Api.DocumentAttribute.parse_documentAttributeSticker($0) } dict[250621158] = { return Api.DocumentAttribute.parse_documentAttributeVideo($0) } dict[-1739392570] = { return Api.DocumentAttribute.parse_documentAttributeAudio($0) } dict[358154344] = { return Api.DocumentAttribute.parse_documentAttributeFilename($0) } dict[-1744710921] = { return Api.DocumentAttribute.parse_documentAttributeHasStickers($0) } dict[-4838507] = { return Api.InputStickerSet.parse_inputStickerSetEmpty($0) } dict[-1645763991] = { return Api.InputStickerSet.parse_inputStickerSetID($0) } dict[-2044933984] = { return Api.InputStickerSet.parse_inputStickerSetShortName($0) } dict[1075322878] = { return Api.InputFileLocation.parse_inputPhotoFileLocation($0) } dict[-1160743548] = { return Api.InputFileLocation.parse_inputDocumentFileLocation($0) } dict[-1361650766] = { return Api.MaskCoords.parse_maskCoords($0) } dict[-1683841855] = { return Api.Document.parse_document($0) } return dict }() struct Api { static func parse(_ buffer: Buffer) -> Any? { let reader = BufferReader(buffer) if let signature = reader.readInt32() { return parse(reader, signature: signature) } return nil } static func parse(_ reader: BufferReader, signature: Int32) -> Any? { if let parser = parsers[signature] { return parser(reader) } else { //Logger.shared.log("TL", "Type constructor \(String(signature, radix: 16, uppercase: false)) not found") return nil } } static func parseVector(_ reader: BufferReader, elementSignature: Int32, elementType: T.Type) -> [T]? { if let count = reader.readInt32() { var array = [T]() var i: Int32 = 0 while i < count { var signature = elementSignature if elementSignature == 0 { if let unboxedSignature = reader.readInt32() { signature = unboxedSignature } else { return nil } } if elementType == Buffer.self { if let item = parseBytes(reader) as? T { array.append(item) } else { return nil } } else { if let item = Api.parse(reader, signature: signature) as? T { array.append(item) } else { return nil } } i += 1 } return array } return nil } static func serializeObject(_ object: Any, buffer: Buffer, boxed: Swift.Bool) { switch object { case let _1 as Api.Photo: _1.serialize(buffer, boxed) case let _1 as Api.PhotoSize: _1.serialize(buffer, boxed) case let _1 as Api.FileLocation: _1.serialize(buffer, boxed) case let _1 as Api.DocumentAttribute: _1.serialize(buffer, boxed) case let _1 as Api.InputStickerSet: _1.serialize(buffer, boxed) case let _1 as Api.InputFileLocation: _1.serialize(buffer, boxed) case let _1 as Api.MaskCoords: _1.serialize(buffer, boxed) case let _1 as Api.Document: _1.serialize(buffer, boxed) default: break } } } extension Api { enum Photo: TypeConstructorDescription { case photoEmpty(id: Int64) case photo(flags: Int32, id: Int64, accessHash: Int64, fileReference: Buffer, date: Int32, sizes: [Api.PhotoSize], dcId: Int32) func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { switch self { case .photoEmpty(let id): if boxed { buffer.appendInt32(590459437) } serializeInt64(id, buffer: buffer, boxed: false) break case .photo(let flags, let id, let accessHash, let fileReference, let date, let sizes, let dcId): if boxed { buffer.appendInt32(-797637467) } serializeInt32(flags, buffer: buffer, boxed: false) serializeInt64(id, buffer: buffer, boxed: false) serializeInt64(accessHash, buffer: buffer, boxed: false) serializeBytes(fileReference, buffer: buffer, boxed: false) serializeInt32(date, buffer: buffer, boxed: false) buffer.appendInt32(481674261) buffer.appendInt32(Int32(sizes.count)) for item in sizes { item.serialize(buffer, true) } serializeInt32(dcId, buffer: buffer, boxed: false) break } } func descriptionFields() -> (String, [(String, Any)]) { switch self { case .photoEmpty(let id): return ("photoEmpty", [("id", id)]) case .photo(let flags, let id, let accessHash, let fileReference, let date, let sizes, let dcId): return ("photo", [("flags", flags), ("id", id), ("accessHash", accessHash), ("fileReference", fileReference), ("date", date), ("sizes", sizes), ("dcId", dcId)]) } } static func parse_photoEmpty(_ reader: BufferReader) -> Photo? { var _1: Int64? _1 = reader.readInt64() let _c1 = _1 != nil if _c1 { return Api.Photo.photoEmpty(id: _1!) } else { return nil } } static func parse_photo(_ reader: BufferReader) -> Photo? { var _1: Int32? _1 = reader.readInt32() var _2: Int64? _2 = reader.readInt64() var _3: Int64? _3 = reader.readInt64() var _4: Buffer? _4 = parseBytes(reader) var _5: Int32? _5 = reader.readInt32() var _6: [Api.PhotoSize]? if let _ = reader.readInt32() { _6 = Api.parseVector(reader, elementSignature: 0, elementType: Api.PhotoSize.self) } var _7: Int32? _7 = reader.readInt32() let _c1 = _1 != nil let _c2 = _2 != nil let _c3 = _3 != nil let _c4 = _4 != nil let _c5 = _5 != nil let _c6 = _6 != nil let _c7 = _7 != nil if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 { return Api.Photo.photo(flags: _1!, id: _2!, accessHash: _3!, fileReference: _4!, date: _5!, sizes: _6!, dcId: _7!) } else { return nil } } } enum PhotoSize: TypeConstructorDescription { case photoSizeEmpty(type: String) case photoSize(type: String, location: Api.FileLocation, w: Int32, h: Int32, size: Int32) case photoCachedSize(type: String, location: Api.FileLocation, w: Int32, h: Int32, bytes: Buffer) case photoStrippedSize(type: String, bytes: Buffer) func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { switch self { case .photoSizeEmpty(let type): if boxed { buffer.appendInt32(236446268) } serializeString(type, buffer: buffer, boxed: false) break case .photoSize(let type, let location, let w, let h, let size): if boxed { buffer.appendInt32(2009052699) } serializeString(type, buffer: buffer, boxed: false) location.serialize(buffer, true) serializeInt32(w, buffer: buffer, boxed: false) serializeInt32(h, buffer: buffer, boxed: false) serializeInt32(size, buffer: buffer, boxed: false) break case .photoCachedSize(let type, let location, let w, let h, let bytes): if boxed { buffer.appendInt32(-374917894) } serializeString(type, buffer: buffer, boxed: false) location.serialize(buffer, true) serializeInt32(w, buffer: buffer, boxed: false) serializeInt32(h, buffer: buffer, boxed: false) serializeBytes(bytes, buffer: buffer, boxed: false) break case .photoStrippedSize(let type, let bytes): if boxed { buffer.appendInt32(-525288402) } serializeString(type, buffer: buffer, boxed: false) serializeBytes(bytes, buffer: buffer, boxed: false) break } } func descriptionFields() -> (String, [(String, Any)]) { switch self { case .photoSizeEmpty(let type): return ("photoSizeEmpty", [("type", type)]) case .photoSize(let type, let location, let w, let h, let size): return ("photoSize", [("type", type), ("location", location), ("w", w), ("h", h), ("size", size)]) case .photoCachedSize(let type, let location, let w, let h, let bytes): return ("photoCachedSize", [("type", type), ("location", location), ("w", w), ("h", h), ("bytes", bytes)]) case .photoStrippedSize(let type, let bytes): return ("photoStrippedSize", [("type", type), ("bytes", bytes)]) } } static func parse_photoSizeEmpty(_ reader: BufferReader) -> PhotoSize? { var _1: String? _1 = parseString(reader) let _c1 = _1 != nil if _c1 { return Api.PhotoSize.photoSizeEmpty(type: _1!) } else { return nil } } static func parse_photoSize(_ reader: BufferReader) -> PhotoSize? { var _1: String? _1 = parseString(reader) var _2: Api.FileLocation? if let signature = reader.readInt32() { _2 = Api.parse(reader, signature: signature) as? Api.FileLocation } var _3: Int32? _3 = reader.readInt32() var _4: Int32? _4 = reader.readInt32() var _5: Int32? _5 = reader.readInt32() let _c1 = _1 != nil let _c2 = _2 != nil let _c3 = _3 != nil let _c4 = _4 != nil let _c5 = _5 != nil if _c1 && _c2 && _c3 && _c4 && _c5 { return Api.PhotoSize.photoSize(type: _1!, location: _2!, w: _3!, h: _4!, size: _5!) } else { return nil } } static func parse_photoCachedSize(_ reader: BufferReader) -> PhotoSize? { var _1: String? _1 = parseString(reader) var _2: Api.FileLocation? if let signature = reader.readInt32() { _2 = Api.parse(reader, signature: signature) as? Api.FileLocation } var _3: Int32? _3 = reader.readInt32() var _4: Int32? _4 = reader.readInt32() var _5: Buffer? _5 = parseBytes(reader) let _c1 = _1 != nil let _c2 = _2 != nil let _c3 = _3 != nil let _c4 = _4 != nil let _c5 = _5 != nil if _c1 && _c2 && _c3 && _c4 && _c5 { return Api.PhotoSize.photoCachedSize(type: _1!, location: _2!, w: _3!, h: _4!, bytes: _5!) } else { return nil } } static func parse_photoStrippedSize(_ reader: BufferReader) -> PhotoSize? { var _1: String? _1 = parseString(reader) var _2: Buffer? _2 = parseBytes(reader) let _c1 = _1 != nil let _c2 = _2 != nil if _c1 && _c2 { return Api.PhotoSize.photoStrippedSize(type: _1!, bytes: _2!) } else { return nil } } } enum FileLocation: TypeConstructorDescription { case fileLocationToBeDeprecated(volumeId: Int64, localId: Int32) func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { switch self { case .fileLocationToBeDeprecated(let volumeId, let localId): if boxed { buffer.appendInt32(-1132476723) } serializeInt64(volumeId, buffer: buffer, boxed: false) serializeInt32(localId, buffer: buffer, boxed: false) break } } func descriptionFields() -> (String, [(String, Any)]) { switch self { case .fileLocationToBeDeprecated(let volumeId, let localId): return ("fileLocationToBeDeprecated", [("volumeId", volumeId), ("localId", localId)]) } } static func parse_fileLocationToBeDeprecated(_ reader: BufferReader) -> FileLocation? { var _1: Int64? _1 = reader.readInt64() var _2: Int32? _2 = reader.readInt32() let _c1 = _1 != nil let _c2 = _2 != nil if _c1 && _c2 { return Api.FileLocation.fileLocationToBeDeprecated(volumeId: _1!, localId: _2!) } else { return nil } } } enum DocumentAttribute: TypeConstructorDescription { case documentAttributeImageSize(w: Int32, h: Int32) case documentAttributeAnimated case documentAttributeSticker(flags: Int32, alt: String, stickerset: Api.InputStickerSet, maskCoords: Api.MaskCoords?) case documentAttributeVideo(flags: Int32, duration: Int32, w: Int32, h: Int32) case documentAttributeAudio(flags: Int32, duration: Int32, title: String?, performer: String?, waveform: Buffer?) case documentAttributeFilename(fileName: String) case documentAttributeHasStickers func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { switch self { case .documentAttributeImageSize(let w, let h): if boxed { buffer.appendInt32(1815593308) } serializeInt32(w, buffer: buffer, boxed: false) serializeInt32(h, buffer: buffer, boxed: false) break case .documentAttributeAnimated: if boxed { buffer.appendInt32(297109817) } break case .documentAttributeSticker(let flags, let alt, let stickerset, let maskCoords): if boxed { buffer.appendInt32(1662637586) } serializeInt32(flags, buffer: buffer, boxed: false) serializeString(alt, buffer: buffer, boxed: false) stickerset.serialize(buffer, true) if Int(flags) & Int(1 << 0) != 0 {maskCoords!.serialize(buffer, true)} break case .documentAttributeVideo(let flags, let duration, let w, let h): if boxed { buffer.appendInt32(250621158) } serializeInt32(flags, buffer: buffer, boxed: false) serializeInt32(duration, buffer: buffer, boxed: false) serializeInt32(w, buffer: buffer, boxed: false) serializeInt32(h, buffer: buffer, boxed: false) break case .documentAttributeAudio(let flags, let duration, let title, let performer, let waveform): if boxed { buffer.appendInt32(-1739392570) } serializeInt32(flags, buffer: buffer, boxed: false) serializeInt32(duration, buffer: buffer, boxed: false) if Int(flags) & Int(1 << 0) != 0 {serializeString(title!, buffer: buffer, boxed: false)} if Int(flags) & Int(1 << 1) != 0 {serializeString(performer!, buffer: buffer, boxed: false)} if Int(flags) & Int(1 << 2) != 0 {serializeBytes(waveform!, buffer: buffer, boxed: false)} break case .documentAttributeFilename(let fileName): if boxed { buffer.appendInt32(358154344) } serializeString(fileName, buffer: buffer, boxed: false) break case .documentAttributeHasStickers: if boxed { buffer.appendInt32(-1744710921) } break } } func descriptionFields() -> (String, [(String, Any)]) { switch self { case .documentAttributeImageSize(let w, let h): return ("documentAttributeImageSize", [("w", w), ("h", h)]) case .documentAttributeAnimated: return ("documentAttributeAnimated", []) case .documentAttributeSticker(let flags, let alt, let stickerset, let maskCoords): return ("documentAttributeSticker", [("flags", flags), ("alt", alt), ("stickerset", stickerset), ("maskCoords", maskCoords)]) case .documentAttributeVideo(let flags, let duration, let w, let h): return ("documentAttributeVideo", [("flags", flags), ("duration", duration), ("w", w), ("h", h)]) case .documentAttributeAudio(let flags, let duration, let title, let performer, let waveform): return ("documentAttributeAudio", [("flags", flags), ("duration", duration), ("title", title), ("performer", performer), ("waveform", waveform)]) case .documentAttributeFilename(let fileName): return ("documentAttributeFilename", [("fileName", fileName)]) case .documentAttributeHasStickers: return ("documentAttributeHasStickers", []) } } static func parse_documentAttributeImageSize(_ reader: BufferReader) -> DocumentAttribute? { var _1: Int32? _1 = reader.readInt32() var _2: Int32? _2 = reader.readInt32() let _c1 = _1 != nil let _c2 = _2 != nil if _c1 && _c2 { return Api.DocumentAttribute.documentAttributeImageSize(w: _1!, h: _2!) } else { return nil } } static func parse_documentAttributeAnimated(_ reader: BufferReader) -> DocumentAttribute? { return Api.DocumentAttribute.documentAttributeAnimated } static func parse_documentAttributeSticker(_ reader: BufferReader) -> DocumentAttribute? { var _1: Int32? _1 = reader.readInt32() var _2: String? _2 = parseString(reader) var _3: Api.InputStickerSet? if let signature = reader.readInt32() { _3 = Api.parse(reader, signature: signature) as? Api.InputStickerSet } var _4: Api.MaskCoords? if Int(_1!) & Int(1 << 0) != 0 {if let signature = reader.readInt32() { _4 = Api.parse(reader, signature: signature) as? Api.MaskCoords } } let _c1 = _1 != nil let _c2 = _2 != nil let _c3 = _3 != nil let _c4 = (Int(_1!) & Int(1 << 0) == 0) || _4 != nil if _c1 && _c2 && _c3 && _c4 { return Api.DocumentAttribute.documentAttributeSticker(flags: _1!, alt: _2!, stickerset: _3!, maskCoords: _4) } else { return nil } } static func parse_documentAttributeVideo(_ reader: BufferReader) -> DocumentAttribute? { var _1: Int32? _1 = reader.readInt32() var _2: Int32? _2 = reader.readInt32() var _3: Int32? _3 = reader.readInt32() var _4: Int32? _4 = reader.readInt32() let _c1 = _1 != nil let _c2 = _2 != nil let _c3 = _3 != nil let _c4 = _4 != nil if _c1 && _c2 && _c3 && _c4 { return Api.DocumentAttribute.documentAttributeVideo(flags: _1!, duration: _2!, w: _3!, h: _4!) } else { return nil } } static func parse_documentAttributeAudio(_ reader: BufferReader) -> DocumentAttribute? { var _1: Int32? _1 = reader.readInt32() var _2: Int32? _2 = reader.readInt32() var _3: String? if Int(_1!) & Int(1 << 0) != 0 {_3 = parseString(reader) } var _4: String? if Int(_1!) & Int(1 << 1) != 0 {_4 = parseString(reader) } var _5: Buffer? if Int(_1!) & Int(1 << 2) != 0 {_5 = parseBytes(reader) } let _c1 = _1 != nil let _c2 = _2 != nil let _c3 = (Int(_1!) & Int(1 << 0) == 0) || _3 != nil let _c4 = (Int(_1!) & Int(1 << 1) == 0) || _4 != nil let _c5 = (Int(_1!) & Int(1 << 2) == 0) || _5 != nil if _c1 && _c2 && _c3 && _c4 && _c5 { return Api.DocumentAttribute.documentAttributeAudio(flags: _1!, duration: _2!, title: _3, performer: _4, waveform: _5) } else { return nil } } static func parse_documentAttributeFilename(_ reader: BufferReader) -> DocumentAttribute? { var _1: String? _1 = parseString(reader) let _c1 = _1 != nil if _c1 { return Api.DocumentAttribute.documentAttributeFilename(fileName: _1!) } else { return nil } } static func parse_documentAttributeHasStickers(_ reader: BufferReader) -> DocumentAttribute? { return Api.DocumentAttribute.documentAttributeHasStickers } } enum InputStickerSet: TypeConstructorDescription { case inputStickerSetEmpty case inputStickerSetID(id: Int64, accessHash: Int64) case inputStickerSetShortName(shortName: String) func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { switch self { case .inputStickerSetEmpty: if boxed { buffer.appendInt32(-4838507) } break case .inputStickerSetID(let id, let accessHash): if boxed { buffer.appendInt32(-1645763991) } serializeInt64(id, buffer: buffer, boxed: false) serializeInt64(accessHash, buffer: buffer, boxed: false) break case .inputStickerSetShortName(let shortName): if boxed { buffer.appendInt32(-2044933984) } serializeString(shortName, buffer: buffer, boxed: false) break } } func descriptionFields() -> (String, [(String, Any)]) { switch self { case .inputStickerSetEmpty: return ("inputStickerSetEmpty", []) case .inputStickerSetID(let id, let accessHash): return ("inputStickerSetID", [("id", id), ("accessHash", accessHash)]) case .inputStickerSetShortName(let shortName): return ("inputStickerSetShortName", [("shortName", shortName)]) } } static func parse_inputStickerSetEmpty(_ reader: BufferReader) -> InputStickerSet? { return Api.InputStickerSet.inputStickerSetEmpty } static func parse_inputStickerSetID(_ reader: BufferReader) -> InputStickerSet? { var _1: Int64? _1 = reader.readInt64() var _2: Int64? _2 = reader.readInt64() let _c1 = _1 != nil let _c2 = _2 != nil if _c1 && _c2 { return Api.InputStickerSet.inputStickerSetID(id: _1!, accessHash: _2!) } else { return nil } } static func parse_inputStickerSetShortName(_ reader: BufferReader) -> InputStickerSet? { var _1: String? _1 = parseString(reader) let _c1 = _1 != nil if _c1 { return Api.InputStickerSet.inputStickerSetShortName(shortName: _1!) } else { return nil } } } enum InputFileLocation: TypeConstructorDescription { case inputPhotoFileLocation(id: Int64, accessHash: Int64, fileReference: Buffer, thumbSize: String) case inputDocumentFileLocation(id: Int64, accessHash: Int64, fileReference: Buffer, thumbSize: String) func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { switch self { case .inputPhotoFileLocation(let id, let accessHash, let fileReference, let thumbSize): if boxed { buffer.appendInt32(1075322878) } serializeInt64(id, buffer: buffer, boxed: false) serializeInt64(accessHash, buffer: buffer, boxed: false) serializeBytes(fileReference, buffer: buffer, boxed: false) serializeString(thumbSize, buffer: buffer, boxed: false) break case .inputDocumentFileLocation(let id, let accessHash, let fileReference, let thumbSize): if boxed { buffer.appendInt32(-1160743548) } serializeInt64(id, buffer: buffer, boxed: false) serializeInt64(accessHash, buffer: buffer, boxed: false) serializeBytes(fileReference, buffer: buffer, boxed: false) serializeString(thumbSize, buffer: buffer, boxed: false) break } } func descriptionFields() -> (String, [(String, Any)]) { switch self { case .inputPhotoFileLocation(let id, let accessHash, let fileReference, let thumbSize): return ("inputPhotoFileLocation", [("id", id), ("accessHash", accessHash), ("fileReference", fileReference), ("thumbSize", thumbSize)]) case .inputDocumentFileLocation(let id, let accessHash, let fileReference, let thumbSize): return ("inputDocumentFileLocation", [("id", id), ("accessHash", accessHash), ("fileReference", fileReference), ("thumbSize", thumbSize)]) } } static func parse_inputPhotoFileLocation(_ reader: BufferReader) -> InputFileLocation? { var _1: Int64? _1 = reader.readInt64() var _2: Int64? _2 = reader.readInt64() var _3: Buffer? _3 = parseBytes(reader) var _4: String? _4 = parseString(reader) let _c1 = _1 != nil let _c2 = _2 != nil let _c3 = _3 != nil let _c4 = _4 != nil if _c1 && _c2 && _c3 && _c4 { return Api.InputFileLocation.inputPhotoFileLocation(id: _1!, accessHash: _2!, fileReference: _3!, thumbSize: _4!) } else { return nil } } static func parse_inputDocumentFileLocation(_ reader: BufferReader) -> InputFileLocation? { var _1: Int64? _1 = reader.readInt64() var _2: Int64? _2 = reader.readInt64() var _3: Buffer? _3 = parseBytes(reader) var _4: String? _4 = parseString(reader) let _c1 = _1 != nil let _c2 = _2 != nil let _c3 = _3 != nil let _c4 = _4 != nil if _c1 && _c2 && _c3 && _c4 { return Api.InputFileLocation.inputDocumentFileLocation(id: _1!, accessHash: _2!, fileReference: _3!, thumbSize: _4!) } else { return nil } } } enum MaskCoords: TypeConstructorDescription { case maskCoords(n: Int32, x: Double, y: Double, zoom: Double) func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { switch self { case .maskCoords(let n, let x, let y, let zoom): if boxed { buffer.appendInt32(-1361650766) } serializeInt32(n, buffer: buffer, boxed: false) serializeDouble(x, buffer: buffer, boxed: false) serializeDouble(y, buffer: buffer, boxed: false) serializeDouble(zoom, buffer: buffer, boxed: false) break } } func descriptionFields() -> (String, [(String, Any)]) { switch self { case .maskCoords(let n, let x, let y, let zoom): return ("maskCoords", [("n", n), ("x", x), ("y", y), ("zoom", zoom)]) } } static func parse_maskCoords(_ reader: BufferReader) -> MaskCoords? { var _1: Int32? _1 = reader.readInt32() var _2: Double? _2 = reader.readDouble() var _3: Double? _3 = reader.readDouble() var _4: Double? _4 = reader.readDouble() let _c1 = _1 != nil let _c2 = _2 != nil let _c3 = _3 != nil let _c4 = _4 != nil if _c1 && _c2 && _c3 && _c4 { return Api.MaskCoords.maskCoords(n: _1!, x: _2!, y: _3!, zoom: _4!) } else { return nil } } } enum Document: TypeConstructorDescription { case document(flags: Int32, id: Int64, accessHash: Int64, fileReference: Buffer, date: Int32, mimeType: String, size: Int32, thumbs: [Api.PhotoSize]?, dcId: Int32, attributes: [Api.DocumentAttribute]) func serialize(_ buffer: Buffer, _ boxed: Swift.Bool) { switch self { case .document(let flags, let id, let accessHash, let fileReference, let date, let mimeType, let size, let thumbs, let dcId, let attributes): if boxed { buffer.appendInt32(-1683841855) } serializeInt32(flags, buffer: buffer, boxed: false) serializeInt64(id, buffer: buffer, boxed: false) serializeInt64(accessHash, buffer: buffer, boxed: false) serializeBytes(fileReference, buffer: buffer, boxed: false) serializeInt32(date, buffer: buffer, boxed: false) serializeString(mimeType, buffer: buffer, boxed: false) serializeInt32(size, buffer: buffer, boxed: false) if Int(flags) & Int(1 << 0) != 0 {buffer.appendInt32(481674261) buffer.appendInt32(Int32(thumbs!.count)) for item in thumbs! { item.serialize(buffer, true) }} serializeInt32(dcId, buffer: buffer, boxed: false) buffer.appendInt32(481674261) buffer.appendInt32(Int32(attributes.count)) for item in attributes { item.serialize(buffer, true) } break } } func descriptionFields() -> (String, [(String, Any)]) { switch self { case .document(let flags, let id, let accessHash, let fileReference, let date, let mimeType, let size, let thumbs, let dcId, let attributes): return ("document", [("flags", flags), ("id", id), ("accessHash", accessHash), ("fileReference", fileReference), ("date", date), ("mimeType", mimeType), ("size", size), ("thumbs", thumbs), ("dcId", dcId), ("attributes", attributes)]) } } static func parse_document(_ reader: BufferReader) -> Document? { var _1: Int32? _1 = reader.readInt32() var _2: Int64? _2 = reader.readInt64() var _3: Int64? _3 = reader.readInt64() var _4: Buffer? _4 = parseBytes(reader) var _5: Int32? _5 = reader.readInt32() var _6: String? _6 = parseString(reader) var _7: Int32? _7 = reader.readInt32() var _8: [Api.PhotoSize]? if Int(_1!) & Int(1 << 0) != 0 {if let _ = reader.readInt32() { _8 = Api.parseVector(reader, elementSignature: 0, elementType: Api.PhotoSize.self) } } var _9: Int32? _9 = reader.readInt32() var _10: [Api.DocumentAttribute]? if let _ = reader.readInt32() { _10 = Api.parseVector(reader, elementSignature: 0, elementType: Api.DocumentAttribute.self) } let _c1 = _1 != nil let _c2 = _2 != nil let _c3 = _3 != nil let _c4 = _4 != nil let _c5 = _5 != nil let _c6 = _6 != nil let _c7 = _7 != nil let _c8 = (Int(_1!) & Int(1 << 0) == 0) || _8 != nil let _c9 = _9 != nil let _c10 = _10 != nil if _c1 && _c2 && _c3 && _c4 && _c5 && _c6 && _c7 && _c8 && _c9 && _c10 { return Api.Document.document(flags: _1!, id: _2!, accessHash: _3!, fileReference: _4!, date: _5!, mimeType: _6!, size: _7!, thumbs: _8, dcId: _9!, attributes: _10!) } else { return nil } } } } extension Api { struct functions { } }