2021-09-09 20:46:07 +02:00
<!DOCTYPE html>
< html class = "" >
< head >
< meta charset = "utf-8" >
< title > TL schema for serialization of TL schemas< / title >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0" >
< meta property = "description" content = "If necessary, a TL schema can be serialized in binary form. Here, this serialization format is defined by a TL schema (usually…" >
< meta property = "og:title" content = " TL schema for serialization of TL schemas" >
< meta property = "og:image" content = "" >
< meta property = "og:description" content = "If necessary, a TL schema can be serialized in binary form. Here, this serialization format is defined by a TL schema (usually…" >
< link rel = "shortcut icon" href = "/favicon.ico?4" type = "image/x-icon" / >
< link href = "/css/bootstrap.min.css?3" rel = "stylesheet" >
2021-11-02 13:52:29 +01:00
< link href = "/css/telegram.css?214" rel = "stylesheet" media = "screen" >
2021-09-09 20:46:07 +02:00
< style >
< / style >
< / head >
< body class = "preload" >
< div class = "dev_page_wrap" >
< div class = "dev_page_head navbar navbar-static-top navbar-tg" >
< div class = "navbar-inner" >
< div class = "container clearfix" >
< ul class = "nav navbar-nav navbar-right hidden-xs" > < li class = "navbar-twitter" > < a href = "https://twitter.com/telegram" target = "_blank" data-track = "Follow/Twitter" onclick = "trackDlClick(this, event)" > < i class = "icon icon-twitter" > < / i > < span > Twitter< / span > < / a > < / li > < / ul >
< ul class = "nav navbar-nav" >
< li > < a href = "//telegram.org/" > Home< / a > < / li >
< li class = "hidden-xs" > < a href = "//telegram.org/faq" > FAQ< / a > < / li >
< li class = "hidden-xs" > < a href = "//telegram.org/apps" > Apps< / a > < / li >
< li class = "" > < a href = "/api" > API< / a > < / li >
< li class = "active" > < a href = "/mtproto" > Protocol< / a > < / li >
< li class = "" > < a href = "/schema" > Schema< / a > < / li >
< / ul >
< / div >
< / div >
< / div >
< div class = "container clearfix" >
< div class = "dev_page" >
< div id = "dev_page_content_wrap" class = " " >
< div class = "dev_page_bread_crumbs" > < ul class = "breadcrumb clearfix" > < li > < a href = "/mtproto" > Mobile Protocol< / a > < / li > < i class = "icon icon-breadcrumb-divider" > < / i > < li > < a href = "/mtproto/TL-tl" > TL schema for serialization of TL schemas< / a > < / li > < / ul > < / div >
< h1 id = "dev_page_title" > TL schema for serialization of TL schemas< / h1 >
< div id = "dev_page_content" > < p > If necessary, a < a href = "TL" > TL< / a > schema can be serialized in binary form. Here, this serialization format is defined by a TL schema (usually stored in the file < code > tl.tl< / code > ). This can be useful, for example, to make it possible to write a parser one time for converting a TL schema from text form (stored in the file < code > something.tl< / code > ) to binary form (stored in the file < code > something.tlo< / code > ). All other programs (for example, auto-generators of TL-(de)serializers for various programming languages) only need to know how to read < code > .tlo< / code > files, which only requires generating an automatic deserializer according to the schema presented below.< / p >
< p > First, a fragment of the file < code > common.tl< / code > with certain required built-in types:< / p >
< pre > < code > /////
//
// Common Types (source file common.tl, only necessary definitions included)
//
/////
// Built-in types
int ? = Int;
long ? = Long;
double ? = Double;
string ? = String;
// Boolean emulation
boolFalse = Bool;
boolTrue = Bool;
// Vector
vector {t:Type} # [t] = Vector t;
tuple {t:Type} {n:#} [t] = Tuple t n;
vectorTotal {t:Type} total_count:int vector:%(Vector t) = VectorTotal t;
Empty False;
true = True;< / code > < / pre >
< p > Next, properly, comes < code > tl.tl< / code > itself. Note that the declaration for a fairly complex data type required only twenty lines in TL. This demonstrates the expressiveness and compactness of the TL language.< / p >
< pre > < code > /////
//
// Serialized binary TL-schema in TL format, source file tl.tl
//
/////
tls.schema_v2 version:int date:int types_num:# types:types_num*[tls.Type]
constructor_num:# constructors:constructor_num*[tls.Combinator]
functions_num:# functions:functions_num*[tls.Combinator] = tls.Schema;
tls.type name:int id:string constructors_num:int flags:int arity:int params_type:long = tls.Type;
tls.combinator name:int id:string type_name:int left:tls.CombinatorLeft right:tls.CombinatorRight = tls.Combinator;
tls.combinatorLeftBuiltin = tls.CombinatorLeft;
tls.combinatorLeft args_num:# args:args_num*[tls.Arg] = tls.CombinatorLeft;
tls.combinatorRight value:tls.TypeExpr = tls.CombinatorRight;
tls.arg id:string flags:# var_num:flags.1?int exist_var_num:flags.2?int exist_var_bit:flags.2?int type:tls.TypeExpr = tls.Arg;
tls.exprType _:tls.TypeExpr = tls.Expr;
tls.exprNat _:tls.NatExpr = tls.Expr;
tls.natConst value:int = tls.NatExpr;
tls.natVar dif:int var_num:int = tls.NatExpr;
tls.typeVar var_num:int flags:int = tls.TypeExpr;
tls.array multiplicity:tls.NatExpr args_num:# args:args_num*[tls.Arg] = tls.TypeExpr;
tls.typeExpr name:int flags:int children_num:# children:children_num*[tls.Expr] = tls.TypeExpr;< / code > < / pre >
< h2 > < a class = "anchor" href = "#remarks" id = "remarks" name = "remarks" > < i class = "anchor-icon" > < / i > < / a > Remarks< / h2 >
< p > Schema serialization (version 2) always begins with the index number of the < code > tls.schema_v2< / code > constructor for < code > tls.Schema< / code > .
Because the CRC32 of the string< / p >
< pre > < code > tls.schema_v2 version:int date:int types_num:# types:types_num*[ tls.Type ] constructor_num:# constructors:constructor_num*[ tls.Combinator ] functions_num:# functions:functions_num*[ tls.Combinator ] = tls.Schema< / code > < / pre >
< p > is 0x3a2f9be2, this constant is in fact the magic number for tlo files in the current version’ s format.
If the format is extended in the future (for example, if TL’ s additional features are supported), then a < code > tls.schema_v3< / code > constructor with a different number will appear.< / p >
< h2 > < a class = "anchor" href = "#example" id = "example" name = "example" > < i class = "anchor-icon" > < / i > < / a > Example< / h2 >
< p > If one adds declarations for the used built-in types (like < code > int ? = Int;< / code > ) from the file < code > common.tl< / code > before < code > tl.tl< / code > and serialize the resulting schema, the following binary data is obtained (< code > tl.tlo< / code > ):< / p >
< div class = "richcode" >
< p > < strong > 0000< / strong > : 3a2f9be2 00000000 51fec698 00000015 12eb4386 70659eff 00002301 00000000< br >
< strong > 0020< / strong > : 00000000 00000000 00000000 00000000 12eb4386 250be282 6f6f4204 0000006c< br >
< strong > 0040< / strong > : 00000002 02000010 00000000 00000000 00000000 12eb4386 2210c154 756f4406< br >
< strong > 0060< / strong > : 00656c62 00000001 02000000 00000000 00000000 00000000 12eb4386 00000000< br >
< strong > 0080< / strong > : 6c614605 00006573 00000000 00000401 00000000 00000000 00000000 12eb4386< br >
< strong > 00a0< / strong > : a8509bda 746e4903 00000001 02000001 00000000 00000000 00000000 12eb4386< br >
< strong > 00c0< / strong > : 22076cba 6e6f4c04 00000067 00000001 02000001 00000000 00000000 00000000< br >
< strong > 00e0< / strong > : 12eb4386 b5286e24 72745306 00676e69 00000001 02000001 00000000 00000000< br >
< strong > 0100< / strong > : 00000000 12eb4386 3fedd339 75725404 00000065 00000001 02000000 00000000< br >
< strong > 0120< / strong > : 00000000 00000000 12eb4386 9770768a 70755405 0000656c 00000001 02000000< br >
< strong > 0140< / strong > : 00000002 00000002 00000000 12eb4386 2cecf817 70795404 00000065 00000000< br >
< strong > 0160< / strong > : 00000000 00000000 00000000 00000000 12eb4386 1cb5c415 63655606 00726f74< br >
< strong > 0180< / strong > : 00000001 02000008 00000001 00000000 00000000 12eb4386 10133f47 6365560b< br >
< strong > 01a0< / strong > : 54726f74 6c61746f 00000001 02000000 00000001 00000000 00000000 12eb4386< br >
< strong > 01c0< / strong > : 29dfe61b 736c7407 6772412e 00000001 02000000 00000000 00000000 00000000< br >
< strong > 01e0< / strong > : 12eb4386 5c0a1ed5 736c740e 6d6f432e 616e6962 00726f74 00000001 02000000< br >
< strong > 0200< / strong > : 00000000 00000000 00000000 12eb4386 8133d9ba 736c7412 6d6f432e 616e6962< br >
< strong > 0220< / strong > : 4c726f74 00746665 00000002 02000010 00000000 00000000 00000000 12eb4386< br >
< strong > 0240< / strong > : 2c064372 736c7413 6d6f432e 616e6962 52726f74 74686769 00000001 02000000< br >
< strong > 0260< / strong > : 00000000 00000000 00000000 12eb4386 307d41a0 736c7408 7078452e 00000072< br >
< strong > 0280< / strong > : 00000002 02000010 00000000 00000000 00000000 12eb4386 c2635441 736c740b< br >
< strong > 02a0< / strong > : 74614e2e 72707845 00000002 02000010 00000000 00000000 00000000 12eb4386< br >
< strong > 02c0< / strong > : 3a2f9be2 736c740a 6863532e 00616d65 00000001 02000000 00000000 00000000< br >
< strong > 02e0< / strong > : 00000000 12eb4386 12eb4386 736c7408 7079542e 00000065 00000001 02000000< br >
< strong > 0300< / strong > : 00000000 00000000 00000000 12eb4386 193fd378 736c740c 7079542e 70784565< br >
< strong > 0320< / strong > : 00000072 00000003 02000010 00000000 00000000 00000000 00000018 5c0a1ed5< br >
< strong > 0340< / strong > : bc799737 6f6f6209 6c61466c 00006573 250be282 4c12c6d9 00000000 2c064372< br >
< strong > 0360< / strong > : c1863d08 250be282 00000000 00000000 5c0a1ed5 997275b5 6f6f6208 7572546c< br >
< strong > 0380< / strong > : 00000065 250be282 4c12c6d9 00000000 2c064372 c1863d08 250be282 00000000< br >
< strong > 03a0< / strong > : 00000000 5c0a1ed5 2210c154 756f6406 00656c62 2210c154 cd211f63 2c064372< br >
< strong > 03c0< / strong > : c1863d08 2210c154 00000000 00000000 5c0a1ed5 a8509bda 746e6903 a8509bda< br >
< strong > 03e0< / strong > : cd211f63 2c064372 c1863d08 a8509bda 00000000 00000000 5c0a1ed5 22076cba< br >
< strong > 0400< / strong > : 6e6f6c04 00000067 22076cba cd211f63 2c064372 c1863d08 22076cba 00000000< br >
< strong > 0420< / strong > : 00000000 5c0a1ed5 b5286e24 72747306 00676e69 b5286e24 cd211f63 2c064372< br >
< strong > 0440< / strong > : c1863d08 b5286e24 00000000 00000000 5c0a1ed5 3fedd339 75727404 00000065< br >
< strong > 0460< / strong > : 3fedd339 4c12c6d9 00000000 2c064372 c1863d08 3fedd339 00000000 00000000< br >
< strong > 0480< / strong > : 5c0a1ed5 9770768a 70757405 0000656c 9770768a 4c12c6d9 00000003 29dfe61b< br >
< strong > 04a0< / strong > : 00007401 00020005 00000000 c1863d08 2cecf817 00000000 00000000 29dfe61b< br >
< strong > 04c0< / strong > : 00006e01 00020005 00000001 c1863d08 70659eff 00000000 00000000 29dfe61b< br >
< strong > 04e0< / strong > : 00000000 00000000 d9fb20de 4e8a14f0 00000000 00000001 00000001 29dfe61b< br >
< strong > 0500< / strong > : 00000000 00000000 0142ceae 00000000 00000000 2c064372 c1863d08 9770768a< br >
< strong > 0520< / strong > : 00000000 00000002 ecc9da78 0142ceae 00000000 00000000 dcb49bd8 4e8a14f0< br >
< strong > 0540< / strong > : 00000000 00000001 5c0a1ed5 1cb5c415 63657606 00726f74 1cb5c415 4c12c6d9< br >
< strong > 0560< / strong > : 00000003 29dfe61b 00007401 00020005 00000000 c1863d08 2cecf817 00000000< br >
< strong > 0580< / strong > : 00000000 29dfe61b 00000000 00000004 00000001 c1863d08 70659eff 00000000< br >
< strong > 05a0< / strong > : 00000000 29dfe61b 00000000 00000000 d9fb20de 4e8a14f0 00000000 00000001< br >
< strong > 05c0< / strong > : 00000001 29dfe61b 00000000 00000000 0142ceae 00000000 00000000 2c064372< br >
< strong > 05e0< / strong > : c1863d08 1cb5c415 00000000 00000001 ecc9da78 0142ceae 00000000 00000000< br >
< strong > 0600< / strong > : 5c0a1ed5 10133f47 6365760b 54726f74 6c61746f 10133f47 4c12c6d9 00000003< br >
< strong > 0620< / strong > : 29dfe61b 00007401 00020005 00000000 c1863d08 2cecf817 00000000 00000000< br >
< strong > 0640< / strong > : 29dfe61b 746f740b 635f6c61 746e756f 00000000 c1863d08 a8509bda 00000001< br >
< strong > 0660< / strong > : 00000000 29dfe61b 63657606 00726f74 00000000 c1863d08 1cb5c415 00000001< br >
< strong > 0680< / strong > : 00000001 ecc9da78 0142ceae 00000000 00000000 2c064372 c1863d08 10133f47< br >
< strong > 06a0< / strong > : 00000000 00000001 ecc9da78 0142ceae 00000000 00000000 5c0a1ed5 29dfe61b< br >
< strong > 06c0< / strong > : 736c7407 6772612e 29dfe61b 4c12c6d9 00000006 29dfe61b 00646902 00000000< br >
< strong > 06e0< / strong > : c1863d08 b5286e24 00000001 00000000 29dfe61b 616c6605 00007367 00000004< br >
< strong > 0700< / strong > : 00000000 c1863d08 70659eff 00000000 00000000 29dfe61b 72617607 6d756e5f< br >
< strong > 0720< / strong > : 00000002 00000000 00000001 c1863d08 a8509bda 00000001 00000000 29dfe61b< br >
< strong > 0740< / strong > : 6978650d 765f7473 6e5f7261 00006d75 00000002 00000000 00000002 c1863d08< br >
< strong > 0760< / strong > : a8509bda 00000001 00000000 29dfe61b 6978650d 765f7473 625f7261 00007469< br >
< strong > 0780< / strong > : 00000002 00000000 00000002 c1863d08 a8509bda 00000001 00000000 29dfe61b< br >
< strong > 07a0< / strong > : 70797404 00000065 00000000 c1863d08 193fd378 00000000 00000000 2c064372< br >
< strong > 07c0< / strong > : c1863d08 29dfe61b 00000000 00000000 5c0a1ed5 5c0a1ed5 736c740e 6d6f632e< br >
< strong > 07e0< / strong > : 616e6962 00726f74 5c0a1ed5 4c12c6d9 00000005 29dfe61b 6d616e04 00000065< br >
< strong > 0800< / strong > : 00000000 c1863d08 a8509bda 00000001 00000000 29dfe61b 00646902 00000000< br >
< strong > 0820< / strong > : c1863d08 b5286e24 00000001 00000000 29dfe61b 70797409 616e5f65 0000656d< br >
< strong > 0840< / strong > : 00000000 c1863d08 a8509bda 00000001 00000000 29dfe61b 66656c04 00000074< br >
< strong > 0860< / strong > : 00000000 c1863d08 8133d9ba 00000000 00000000 29dfe61b 67697205 00007468< br >
< strong > 0880< / strong > : 00000000 c1863d08 2c064372 00000000 00000000 2c064372 c1863d08 5c0a1ed5< br >
< strong > 08a0< / strong > : 00000000 00000000 5c0a1ed5 cd211f63 736c7419 6d6f632e 616e6962 4c726f74< br >
< strong > 08c0< / strong > : 42746665 746c6975 00006e69 8133d9ba 4c12c6d9 00000000 2c064372 c1863d08< br >
< strong > 08e0< / strong > : 8133d9ba 00000000 00000000 5c0a1ed5 4c12c6d9 736c7412 6d6f632e 616e6962< br >
< strong > 0900< / strong > : 4c726f74 00746665 8133d9ba 4c12c6d9 00000002 29dfe61b 67726108 756e5f73< br >
< strong > 0920< / strong > : 0000006d 00000004 00000000 c1863d08 70659eff 00000000 00000000 29dfe61b< br >
< strong > 0940< / strong > : 67726104 00000073 00000000 d9fb20de 4e8a14f0 00000000 00000000 00000001< br >
< strong > 0960< / strong > : 29dfe61b 00000000 00000000 c1863d08 29dfe61b 00000000 00000000 2c064372< br >
< strong > 0980< / strong > : c1863d08 8133d9ba 00000000 00000000 5c0a1ed5 2c064372 736c7413 6d6f632e< br >
< strong > 09a0< / strong > : 616e6962 52726f74 74686769 2c064372 4c12c6d9 00000001 29dfe61b 6c617605< br >
< strong > 09c0< / strong > : 00006575 00000000 c1863d08 193fd378 00000000 00000000 2c064372 c1863d08< br >
< strong > 09e0< / strong > : 2c064372 00000000 00000000 5c0a1ed5 ecc9da78 736c740c 7078652e 70795472< br >
< strong > 0a00< / strong > : 00000065 307d41a0 4c12c6d9 00000001 29dfe61b 00000000 00000000 c1863d08< br >
< strong > 0a20< / strong > : 193fd378 00000000 00000000 2c064372 c1863d08 307d41a0 00000000 00000000< br >
< strong > 0a40< / strong > : 5c0a1ed5 dcb49bd8 736c740b 7078652e 74614e72 307d41a0 4c12c6d9 00000001< br >
< strong > 0a60< / strong > : 29dfe61b 00000000 00000000 c1863d08 c2635441 00000000 00000000 2c064372< br >
< strong > 0a80< / strong > : c1863d08 307d41a0 00000000 00000000 5c0a1ed5 8ce940b1 736c740c 74616e2e< br >
< strong > 0aa0< / strong > : 736e6f43 00000074 c2635441 4c12c6d9 00000001 29dfe61b 6c617605 00006575< br >
< strong > 0ac0< / strong > : 00000000 c1863d08 a8509bda 00000001 00000000 2c064372 c1863d08 c2635441< br >
< strong > 0ae0< / strong > : 00000000 00000000 5c0a1ed5 4e8a14f0 736c740a 74616e2e 00726156 c2635441< br >
< strong > 0b00< / strong > : 4c12c6d9 00000002 29dfe61b 66696403 00000000 c1863d08 a8509bda 00000001< br >
< strong > 0b20< / strong > : 00000000 29dfe61b 72617607 6d756e5f 00000000 c1863d08 a8509bda 00000001< br >
< strong > 0b40< / strong > : 00000000 2c064372 c1863d08 c2635441 00000000 00000000 5c0a1ed5 3a2f9be2< br >
< strong > 0b60< / strong > : 736c740d 6863732e 5f616d65 00003276 3a2f9be2 4c12c6d9 00000008 29dfe61b< br >
< strong > 0b80< / strong > : 72657607 6e6f6973 00000000 c1863d08 a8509bda 00000001 00000000 29dfe61b< br >
< strong > 0ba0< / strong > : 74616404 00000065 00000000 c1863d08 a8509bda 00000001 00000000 29dfe61b< br >
< strong > 0bc0< / strong > : 70797409 6e5f7365 00006d75 00000004 00000000 c1863d08 70659eff 00000000< br >
< strong > 0be0< / strong > : 00000000 29dfe61b 70797405 00007365 00000000 d9fb20de 4e8a14f0 00000000< br >
< strong > 0c00< / strong > : 00000000 00000001 29dfe61b 00000000 00000000 c1863d08 12eb4386 00000000< br >
< strong > 0c20< / strong > : 00000000 29dfe61b 6e6f630f 75727473 726f7463 6d756e5f 00000004 00000001< br >
< strong > 0c40< / strong > : c1863d08 70659eff 00000000 00000000 29dfe61b 6e6f630c 75727473 726f7463< br >
< strong > 0c60< / strong > : 00000073 00000000 d9fb20de 4e8a14f0 00000000 00000001 00000001 29dfe61b< br >
< strong > 0c80< / strong > : 00000000 00000000 c1863d08 5c0a1ed5 00000000 00000000 29dfe61b 6e75660d< br >
< strong > 0ca0< / strong > : 6f697463 6e5f736e 00006d75 00000004 00000002 c1863d08 70659eff 00000000< br >
< strong > 0cc0< / strong > : 00000000 29dfe61b 6e756609 6f697463 0000736e 00000000 d9fb20de 4e8a14f0< br >
< strong > 0ce0< / strong > : 00000000 00000002 00000001 29dfe61b 00000000 00000000 c1863d08 5c0a1ed5< br >
< strong > 0d00< / strong > : 00000000 00000000 2c064372 c1863d08 3a2f9be2 00000000 00000000 5c0a1ed5< br >
< strong > 0d20< / strong > : 12eb4386 736c7408 7079742e 00000065 12eb4386 4c12c6d9 00000006 29dfe61b< br >
< strong > 0d40< / strong > : 6d616e04 00000065 00000000 c1863d08 a8509bda 00000001 00000000 29dfe61b< br >
< strong > 0d60< / strong > : 00646902 00000000 c1863d08 b5286e24 00000001 00000000 29dfe61b 6e6f6310< br >
< strong > 0d80< / strong > : 75727473 726f7463 756e5f73 0000006d 00000000 c1863d08 a8509bda 00000001< br >
< strong > 0da0< / strong > : 00000000 29dfe61b 616c6605 00007367 00000000 c1863d08 a8509bda 00000001< br >
< strong > 0dc0< / strong > : 00000000 29dfe61b 69726105 00007974 00000000 c1863d08 a8509bda 00000001< br >
< strong > 0de0< / strong > : 00000000 29dfe61b 7261700b 5f736d61 65707974 00000000 c1863d08 22076cba< br >
< strong > 0e00< / strong > : 00000001 00000000 2c064372 c1863d08 12eb4386 00000000 00000000 5c0a1ed5< br >
< strong > 0e20< / strong > : 0142ceae 736c740b 7079742e 72615665 193fd378 4c12c6d9 00000002 29dfe61b< br >
< strong > 0e40< / strong > : 72617607 6d756e5f 00000000 c1863d08 a8509bda 00000001 00000000 29dfe61b< br >
< strong > 0e60< / strong > : 616c6605 00007367 00000000 c1863d08 a8509bda 00000001 00000000 2c064372< br >
< strong > 0e80< / strong > : c1863d08 193fd378 00000000 00000000 5c0a1ed5 d9fb20de 736c7409 7272612e< br >
< strong > 0ea0< / strong > : 00007961 193fd378 4c12c6d9 00000003 29dfe61b 6c756d0c 6c706974 74696369< br >
< strong > 0ec0< / strong > : 00000079 00000000 c1863d08 c2635441 00000000 00000000 29dfe61b 67726108< br >
< strong > 0ee0< / strong > : 756e5f73 0000006d 00000004 00000000 c1863d08 70659eff 00000000 00000000< br >
< strong > 0f00< / strong > : 29dfe61b 67726104 00000073 00000000 d9fb20de 4e8a14f0 00000000 00000000< br >
< strong > 0f20< / strong > : 00000001 29dfe61b 00000000 00000000 c1863d08 29dfe61b 00000000 00000000< br >
< strong > 0f40< / strong > : 2c064372 c1863d08 193fd378 00000000 00000000 5c0a1ed5 c1863d08 736c740c< br >
< strong > 0f60< / strong > : 7079742e 70784565 00000072 193fd378 4c12c6d9 00000004 29dfe61b 6d616e04< br >
< strong > 0f80< / strong > : 00000065 00000000 c1863d08 a8509bda 00000001 00000000 29dfe61b 616c6605< br >
< strong > 0fa0< / strong > : 00007367 00000000 c1863d08 a8509bda 00000001 00000000 29dfe61b 6968630c< br >
< strong > 0fc0< / strong > : 6572646c 756e5f6e 0000006d 00000004 00000000 c1863d08 70659eff 00000000< br >
< strong > 0fe0< / strong > : 00000000 29dfe61b 69686308 6572646c 0000006e 00000000 d9fb20de 4e8a14f0< br >
< strong > 1000< / strong > : 00000000 00000000 00000001 29dfe61b 00000000 00000000 c1863d08 307d41a0< br >
< strong > 1020< / strong > : 00000000 00000000 2c064372 c1863d08 193fd378 00000000 00000000 00000000 < / p >
< / div > < / div >
< / div >
< / div >
< / div >
< div class = "footer_wrap" >
< div class = "footer_columns_wrap footer_desktop" >
< div class = "footer_column footer_column_telegram" >
< h5 > Telegram< / h5 >
< div class = "footer_telegram_description" > < / div >
Telegram is a cloud-based mobile and desktop messaging app with a focus on security and speed.
< / div >
< div class = "footer_column" >
< h5 > < a href = "//telegram.org/faq" > About< / a > < / h5 >
< ul >
< li > < a href = "//telegram.org/faq" > FAQ< / a > < / li >
< li > < a href = "//telegram.org/blog" > Blog< / a > < / li >
< li > < a href = "//telegram.org/jobs" > Jobs< / a > < / li >
< / ul >
< / div >
< div class = "footer_column" >
< h5 > < a href = "//telegram.org/apps#mobile-apps" > Mobile Apps< / a > < / h5 >
< ul >
< li > < a href = "//telegram.org/dl/ios" > iPhone/iPad< / a > < / li >
< li > < a href = "//telegram.org/dl/android" > Android< / a > < / li >
< li > < a href = "//telegram.org/dl/wp" > Windows Phone< / a > < / li >
< / ul >
< / div >
< div class = "footer_column" >
< h5 > < a href = "//telegram.org/apps#desktop-apps" > Desktop Apps< / a > < / h5 >
< ul >
< li > < a href = "//desktop.telegram.org/" > PC/Mac/Linux< / a > < / li >
< li > < a href = "//macos.telegram.org/" > macOS< / a > < / li >
< li > < a href = "//telegram.org/dl/web" > Web-browser< / a > < / li >
< / ul >
< / div >
< div class = "footer_column footer_column_platform" >
< h5 > < a href = "//core.telegram.org/" > Platform< / a > < / h5 >
< ul >
< li > < a href = "//core.telegram.org/api" > API< / a > < / li >
< li > < a href = "//translations.telegram.org/" > Translations< / a > < / li >
< li > < a href = "//instantview.telegram.org/" > Instant View< / a > < / li >
< / ul >
< / div >
< / div >
< div class = "footer_columns_wrap footer_mobile" >
< div class = "footer_column" >
< h5 > < a href = "//telegram.org/faq" > About< / a > < / h5 >
< / div >
< div class = "footer_column" >
< h5 > < a href = "//telegram.org/blog" > Blog< / a > < / h5 >
< / div >
< div class = "footer_column" >
< h5 > < a href = "//telegram.org/apps" > Apps< / a > < / h5 >
< / div >
< div class = "footer_column" >
< h5 > < a href = "//core.telegram.org/" > Platform< / a > < / h5 >
< / div >
< div class = "footer_column" >
< h5 > < a href = "https://twitter.com/telegram" target = "_blank" data-track = "Follow/Twitter" onclick = "trackDlClick(this, event)" > Twitter< / a > < / h5 >
< / div >
< / div >
< / div >
< / div >
< script src = "/js/main.js?42" > < / script >
< script > b a c k T o T o p I n i t ( " G o u p " ) ;
removePreloadInit();
< / script >
< / body >
< / html >