The second dataset consists of 5 samples from human embryonic and fetal lung tissue. These samples are a subset of a larger study (20 samples) performed at Wellcome Sanger Institute (UK), and have been made available through a collaboration agreement with IPMC. Full details on this dataset are available at Sanger’s pre-print here.

The 5 samples available for this project were collected at 11 (1 sample), 15 (2 samples), and 20 (2 samples) weeks of gestation, and sequenced on both Illumina NextSeq (5’ assay) and Nanopore promethION, then processed by 10X Genomics Cell Ranger and SiCeLoRe (Lebrigand et al., 2020) pipelines, yielding gene- and isoform-level profiles for 12.803 cells.

The original cell type annotation provided by Sanger includes 124 cell types split across 9 compartments numbered C0 to C9 shown below:

Before running the isoform differential expression analysis cell clusters with less than 20 cells were filtered out.
Compartments C7 (Peripheral Nervous System), C8 (Mast cells), C9 (Hepatoblasts) are removed entirely.

The treemap below shows the composition of the resulting dataset after filtering:

Isoform switch reports

Three separate analyses were performed:

2- Between cell types across different compartments.

3- Between developmental stage for each cell type

LS0tCnRpdGxlOiAiRmV0YWwgbHVuZyBkYXRhc2V0IC0gaXNvc3dpdGNoIHJlcG9ydCIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICBjc3M6ICJzdHlsZS5jc3MiCiAgICBjb2RlX2ZvbGRpbmc6IG5vbmUKICAgIHRoZW1lOiBqb3VybmFsCiAgICB0b2M6IHllcwogICAgdG9jX2RlcHRoOiAzCiAgICB0b2NfZmxvYXQ6IHllcwogIGh0bWxfZG9jdW1lbnQ6CiAgICBkZl9wcmludDogcGFnZWQKICAgIHRvYzogeWVzCiAgICB0b2NfZGVwdGg6ICczJwogIHBkZl9kb2N1bWVudDoKICAgIHRvYzogeWVzCiAgICB0b2NfZGVwdGg6ICczJwotLS0KCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KAogIGVjaG8gPSBGQUxTRSwKICBtZXNzYWdlID0gRkFMU0UsCiAgd2FybmluZyA9IEZBTFNFLCAKICBjYWNoZSA9IEZBTFNFLAogIGNhY2hlLmxhenkgPSBGQUxTRSwKICB0aWR5ID0gVFJVRQopCgpzZXR3ZCgiL2RhdGEvMTB4X2RhdGEvMTB4XzVwc2FuZ2VyIikKc291cmNlKCIuL2lzb3N3aXRjaC8wMC5jb21tb24uaW1wb3J0LlIiKQpzb3VyY2UoIi4vaXNvc3dpdGNoLzAwLnZpc3VhbC5SIikKbGlicmFyeSh0cmVlbWFwaWZ5KQoKc2FuZ2VyIDwtIHJlYWRSRFMoIm91dHB1dC9BMDQtc2FuZ2VyTVVMVEkucmRzIikKYGBgCgoKVGhlIHNlY29uZCBkYXRhc2V0IGNvbnNpc3RzIG9mIDUgc2FtcGxlcyBmcm9tIGh1bWFuIGVtYnJ5b25pYyBhbmQgZmV0YWwgbHVuZyB0aXNzdWUuIFRoZXNlIHNhbXBsZXMgYXJlIGEgc3Vic2V0IG9mIGEgbGFyZ2VyIHN0dWR5ICgyMCBzYW1wbGVzKSBwZXJmb3JtZWQgYXQgV2VsbGNvbWUgU2FuZ2VyIEluc3RpdHV0ZSAoVUspLCBhbmQgaGF2ZSBiZWVuIG1hZGUgYXZhaWxhYmxlIHRocm91Z2ggYSBjb2xsYWJvcmF0aW9uIGFncmVlbWVudCB3aXRoIElQTUMuIEZ1bGwgZGV0YWlscyBvbiB0aGlzIGRhdGFzZXQgYXJlIGF2YWlsYWJsZSBhdCBTYW5nZXIncyBwcmUtcHJpbnQgKipbaGVyZV0oaHR0cHM6Ly93d3cuYmlvcnhpdi5vcmcvY29udGVudC8xMC4xMTAxLzIwMjIuMDEuMTEuNDc0OTMzdjEpKiouIAoKVGhlIDUgc2FtcGxlcyBhdmFpbGFibGUgZm9yIHRoaXMgcHJvamVjdCB3ZXJlIGNvbGxlY3RlZCBhdCAxMSAoMSBzYW1wbGUpLCAxNSAoMiBzYW1wbGVzKSwgYW5kIDIwICgyIHNhbXBsZXMpIHdlZWtzIG9mIGdlc3RhdGlvbiwgYW5kIHNlcXVlbmNlZCBvbiBib3RoIElsbHVtaW5hIE5leHRTZXEgKDUnIGFzc2F5KSBhbmQgTmFub3BvcmUgcHJvbWV0aElPTiwgdGhlbiBwcm9jZXNzZWQgYnkgMTBYIEdlbm9taWNzIENlbGwgUmFuZ2VyIGFuZCBTaUNlTG9SZSAoTGVicmlnYW5kIGV0IGFsLiwgMjAyMCkgcGlwZWxpbmVzLCB5aWVsZGluZyBnZW5lLSBhbmQgaXNvZm9ybS1sZXZlbCBwcm9maWxlcyBmb3IgMTIuODAzIGNlbGxzLiAKClRoZSBvcmlnaW5hbCBjZWxsIHR5cGUgYW5ub3RhdGlvbiBwcm92aWRlZCBieSBTYW5nZXIgaW5jbHVkZXMgMTI0IGNlbGwgdHlwZXMgc3BsaXQgYWNyb3NzIDkgY29tcGFydG1lbnRzIG51bWJlcmVkIEMwIHRvIEM5IHNob3duIGJlbG93OgoKYGBge3IgaW5jbHVkZT1GQUxTRX0KCmNvdW50X2RmIDwtIHNhbmdlckBtZXRhLmRhdGEgJT4lCiAgZ3JvdXBfYnkoYmlnX2NsdXN0ZXIsIG5ld19jZWxsdHlwZSkgJT4lCiAgZHBseXI6OnN1bW1hcml6ZShuID0gbigpKQoKY2x1c3Rlcl9sYWJlbHMgPSBjKAogICJDMDogRmlicm9ibGFzdCIsCiAgIyAiQzE6IEVwaXRoZWxpYWwgKGV4IGNpbGlhdGVkKSIsCiAgIkMxOiBFcGl0aGVsaWFsIiwKICAjIkMyOiBNeWVsb2lkIChleGNsdWRpbmcgbWFzdCkiLAogICJDMjogTXllbG9pZCIsCiAgIyJDMzogRW5kb3RoZWxpYWwgKyBlcnl0aHJvaWQiLAogICJDMzogRW5kb3RoZWxpYWwiLAogICJDNDogVCtOSytJTEMiLAogICJDNTogQiIsCiAgIkM2OiBDaWxpYXRlZCIsCiAgIkM3OiBQTlMiLAogICJDODogTWFzdCIsCiAgIkM5OiBIZXBhdG9ibGFzdCIKKQoKYGBgCgo8IS0tIFN0YW5kYXJkIG5vbi1jb21wYXJ0bWVudCB2aWV3LCBETyBOT1QgSU5DTFVERSAtLT4KYGBge3IgZmlnLmhlaWdodD00LCBmaWcud2lkdGg9OSwgaW5jbHVkZT1GQUxTRX0KIyAKIyBzdWJtYXQgPC0gYXMubWF0cml4KHNhbmdlckBtZXRhLmRhdGFbYygiWF91bWFwX29yaWdpbmFsX3giLCJYX3VtYXBfb3JpZ2luYWxfeSIpXSkKIyBjb2xuYW1lcyhzdWJtYXQpIDwtIGMoIlVNQVBfMSIsIlVNQVBfMiIpCiMgc2FuZ2VyQHJlZHVjdGlvbnMkdW1hcEBjZWxsLmVtYmVkZGluZ3MgPC0gc3VibWF0CiMgZHAgPC0gRGltUGxvdChzYW5nZXIsIHJlZHVjdGlvbiA9ICJ1bWFwIiwgZ3JvdXAuYnk9ImJpZ19jbHVzdGVyIiwgbGFiZWwgPSBUUlVFLCBsYWJlbC5zaXplPTMuNSwgcHQuc2l6ZT0wLjEpICsgCiMgICBsYWJzKHRpdGxlPU5VTEwsIHg9TlVMTCwgeT1OVUxMKSArIAojICAgdGhlbWVfdm9pZCgpICsKIyAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbj0ibm9uZSIpICsgCiMgICBzY2FsZV9jb2xvcl9kaXNjcmV0ZShsYWJlbHM9Y2x1c3Rlcl9sYWJlbHMpCiMgCiMgZHAKYGBgCgoKYGBge3IgZmlnLndpZHRoPTksIGZpZy5oZWlnaHQ9NC41fQoKY2x1c3Rlcl9sYWJlbHMgPSBjKAogICJGaWJyb2JsYXN0XG4oQzApIiwKICAiRXBpdGhlbGlhbFxuKEMxKSIsCiAgIk15ZWxvaWRcbihDMikiLAogICJFbmRvdGhlbGlhbFxuKEMzKSIsCiAgIlQrTksrSUxDXG4oQzQpIiwKICAiQlxuKEM1KSIsCiAgIkNpbGlhdGVkXG4oQzYpIiwKICAiUE5TXG4oQzcpIiwKICAiTWFzdFxuKEM4KSIsCiAgIkhlcGF0b2JsYXN0XG4oQzkpIgopCgojIGxhYmVsIGNvbXBhcnRtZW50cyBmb3IgcGxvdHRpbmcKc2FuZ2VyW1snYmlnX2NsdXN0ZXJfbGFiZWxzJ11dIDwtIHNhbmdlcltbJ2JpZ19jbHVzdGVyJ11dCmxldmVscyhzYW5nZXJAbWV0YS5kYXRhJGJpZ19jbHVzdGVyX2xhYmVscykgPC0gY2x1c3Rlcl9sYWJlbHMKCnN1Ym1hdCA8LSBhcy5tYXRyaXgoc2FuZ2VyQG1ldGEuZGF0YVtjKCJYX3VtYXBfeCIsIlhfdW1hcF95IildKQpjb2xuYW1lcyhzdWJtYXQpIDwtIGMoIlVNQVBfMSIsIlVNQVBfMiIpCnNhbmdlckByZWR1Y3Rpb25zJHVtYXBAY2VsbC5lbWJlZGRpbmdzIDwtIHN1Ym1hdAoKZHAgPC0gRGltUGxvdChzYW5nZXIsIHJlZHVjdGlvbiA9ICJ1bWFwIiwgZ3JvdXAuYnk9ImJpZ19jbHVzdGVyX2xhYmVscyIsIGxhYmVsID0gVFJVRSwgbGFiZWwuc2l6ZT0zLjUsIHB0LnNpemU9MC4xKSArIAogIGxhYnModGl0bGU9TlVMTCkgKyAKICBjb29yZF9jYXJ0ZXNpYW4oY2xpcCA9ICdvZmYnKSArIAogIHRoZW1lX3ZvaWQoKSArIAogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbj0ibm9uZSIpICsgCiAgc2NhbGVfY29sb3JfZGlzY3JldGUobGFiZWxzPWNsdXN0ZXJfbGFiZWxzKSArIAogIGxhYnModGl0bGU9IkRhdGFzZXQgY29tcGFydG1lbnRzIikKZHAKCiMgZ2dzYXZlKCJpbWcvRmlnOV91bWFwX2NvbXBhcnRtZW50c19oMy5wbmciLCBwbG90PWRwLCBkZXZpY2U9InBuZyIsIHdpZHRoPTYsIGhlaWdodD0zLCB1bml0cz0iaW4iLCBkcGk9MzAwLCB0eXBlPSJjYWlybyIpCmBgYAoKQmVmb3JlIHJ1bm5pbmcgdGhlIGlzb2Zvcm0gZGlmZmVyZW50aWFsIGV4cHJlc3Npb24gYW5hbHlzaXMgY2VsbCBjbHVzdGVycyB3aXRoIGxlc3MgdGhhbiAyMCBjZWxscyB3ZXJlIGZpbHRlcmVkIG91dC4gICAKQ29tcGFydG1lbnRzIEM3IChQZXJpcGhlcmFsIE5lcnZvdXMgU3lzdGVtKSwgQzggKE1hc3QgY2VsbHMpLCBDOSAoSGVwYXRvYmxhc3RzKSBhcmUgcmVtb3ZlZCBlbnRpcmVseS4KClRoZSB0cmVlbWFwIGJlbG93IHNob3dzIHRoZSBjb21wb3NpdGlvbiBvZiB0aGUgcmVzdWx0aW5nIGRhdGFzZXQgYWZ0ZXIgZmlsdGVyaW5nOgoKYGBge3IgZmlnLndpZHRoPTEwLCBmaWcuaGVpZ2h0PTQuNX0KCmRmIDwtIGNvdW50X2RmICU+JQogIGZpbHRlcihuPjIwKSAlPiUKICBtdXRhdGUobmV3X2NlbGx0eXBlID0gc3RyX3N1YihuZXdfY2VsbHR5cGUsIGVuZD0tMykpCiAgICAgICAgICAgCmdncGxvdChkZiwgYWVzKGFyZWEgPSBuLCBmaWxsID0gYmlnX2NsdXN0ZXIsIGxhYmVsID0gZ2x1ZSgie25ld19jZWxsdHlwZX0gKHtufSkiKSwgc3ViZ3JvdXAgPSBiaWdfY2x1c3RlcikpICsKICBnZW9tX3RyZWVtYXAoKSArCiAgZ2VvbV90cmVlbWFwX3N1Ymdyb3VwX2JvcmRlcigpICsKICBnZW9tX3RyZWVtYXBfc3ViZ3JvdXBfdGV4dChwbGFjZSA9ICJjZW50cmUiLCBncm93PUYsIGFscGhhID0gMC41LCBjb2xvdXIgPSAiYmxhY2siLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250ZmFjZSA9ICJpdGFsaWMiLCBtaW4uc2l6ZSA9IDApICsKICBnZW9tX3RyZWVtYXBfdGV4dChjb2xvdXIgPSAid2hpdGUiLCBwbGFjZSA9ICJ0b3BsZWZ0Iiwgc2l6ZT0xMCwgZ3Jvdz1GLCByZWZsb3cgPSBUKSArCiAgc2NhbGVfZmlsbF9kaXNjcmV0ZShuYW1lID0gIkNvbXBhcnRtZW50IiwgbGFiZWxzID0gY2x1c3Rlcl9sYWJlbHMpICsgCiAgZ2d0aXRsZShnbHVlKCJuPXtmb3JtYXQoc3VtKGRmJG4pLCBiaWcubWFyaz0nLicpfSIpKQoKYGBgCgoKYGBge3IgaW5jbHVkZT1GQUxTRX0KIyBjb2RlIHJ1biBhZnRlciBsYXVuY2hpbmcgYWxsIHRoZSBjbHVzdGVyIGFuYWx5c2lzCiMgc2FuZ2VyX21hcmtlcnMgPSBkYXRhLmZyYW1lKCkKIyBzYW5nZXJfbWFya2VycyA8LSBiaW5kX3Jvd3Moc2FuZ2VyX21hcmtlcnMsIG11dGF0ZShDMF9tYXJrZXJzLCBjbHVzdGVyPSJDMCIpKQojIHNhbmdlcl9tYXJrZXJzIDwtIGJpbmRfcm93cyhzYW5nZXJfbWFya2VycywgbXV0YXRlKEMxX21hcmtlcnMsIGNsdXN0ZXI9IkMxIikpCiMgc2FuZ2VyX21hcmtlcnMgPC0gYmluZF9yb3dzKHNhbmdlcl9tYXJrZXJzLCBtdXRhdGUoQzJfbWFya2VycywgY2x1c3Rlcj0iQzIiKSkKIyBzYW5nZXJfbWFya2VycyA8LSBiaW5kX3Jvd3Moc2FuZ2VyX21hcmtlcnMsIG11dGF0ZShDM19tYXJrZXJzLCBjbHVzdGVyPSJDMyIpKQojIHNhbmdlcl9tYXJrZXJzIDwtIGJpbmRfcm93cyhzYW5nZXJfbWFya2VycywgbXV0YXRlKEM0X21hcmtlcnMsIGNsdXN0ZXI9IkM0IikpCiMgc2FuZ2VyX21hcmtlcnMgPC0gYmluZF9yb3dzKHNhbmdlcl9tYXJrZXJzLCBtdXRhdGUoQzVfbWFya2VycywgY2x1c3Rlcj0iQzUiKSkKIyAjIHNhbmdlcl9tYXJrZXJzIDwtIGJpbmRfcm93cyhzYW5nZXJfbWFya2VycywgbXV0YXRlKEM2X21hcmtlcnMsIGNsdXN0ZXI9IkM2IikpICAjIEM2IG5vIG1hcmtlcnMKIyAKIyAjd3JpdGUudGFibGUoc2FuZ2VyX21hcmtlcnMsICIuL291dHB1dC9BMDYtc2FuZ2VyX21hcmtlcnNfQUxMLmNzdiIsIHNlcD0iLCIpCnNhbmdlcl9tYXJrZXJzIDwtIHJlYWQudGFibGUoIi4vb3V0cHV0L0EwNi1zYW5nZXJfbWFya2Vyc19BTEwuY3N2Iiwgc2VwPSIsIikKIyAKIyBzYW5nZXJfc3dpdGNoZXMgPSBkYXRhLmZyYW1lKCkKIyBzYW5nZXJfc3dpdGNoZXMgPC0gYmluZF9yb3dzKHNhbmdlcl9zd2l0Y2hlcywgbXV0YXRlKEMwX3N3aXRjaGVzLCBjbHVzdGVyPSJDMCIsIHR5cGU9ImNlbGx0eXBlIikpCiMgc2FuZ2VyX3N3aXRjaGVzIDwtIGJpbmRfcm93cyhzYW5nZXJfc3dpdGNoZXMsIG11dGF0ZShDMV9zd2l0Y2hlcywgY2x1c3Rlcj0iQzEiLCB0eXBlPSJjZWxsdHlwZSIpKQojIHNhbmdlcl9zd2l0Y2hlcyA8LSBiaW5kX3Jvd3Moc2FuZ2VyX3N3aXRjaGVzLCBtdXRhdGUoQzJfc3dpdGNoZXMsIGNsdXN0ZXI9IkMyIiwgdHlwZT0iY2VsbHR5cGUiKSkKIyBzYW5nZXJfc3dpdGNoZXMgPC0gYmluZF9yb3dzKHNhbmdlcl9zd2l0Y2hlcywgbXV0YXRlKEMzX3N3aXRjaGVzLCBjbHVzdGVyPSJDMyIsIHR5cGU9ImNlbGx0eXBlIikpCiMgc2FuZ2VyX3N3aXRjaGVzIDwtIGJpbmRfcm93cyhzYW5nZXJfc3dpdGNoZXMsIG11dGF0ZShDNF9zd2l0Y2hlcywgY2x1c3Rlcj0iQzQiLCB0eXBlPSJjZWxsdHlwZSIpKQojIHNhbmdlcl9zd2l0Y2hlcyA8LSBiaW5kX3Jvd3Moc2FuZ2VyX3N3aXRjaGVzLCBtdXRhdGUoQzVfc3dpdGNoZXMsIGNsdXN0ZXI9IkM1IiwgdHlwZT0iY2VsbHR5cGUiKSkKIyAKIyAjd3JpdGUudGFibGUoc2FuZ2VyX3N3aXRjaGVzLCAiLi9vdXRwdXQvQTA2LXNhbmdlcl9zd2l0Y2hlc19BTEwuY3N2Iiwgc2VwPSIsIikKc2FuZ2VyX3N3aXRjaGVzIDwtIHJlYWQudGFibGUoIi4vb3V0cHV0L0EwNi1zYW5nZXJfc3dpdGNoZXNfQUxMLmNzdiIsIHNlcD0iLCIpCmBgYAoKIyBJc29mb3JtIHN3aXRjaCByZXBvcnRzCgpUaHJlZSBzZXBhcmF0ZSBhbmFseXNlcyB3ZXJlIHBlcmZvcm1lZDoKCiMjIDEtIEJldHdlZW4gY2VsbCB0eXBlcyBpbnNpZGUgZWFjaCBjb21wYXJ0bWVudCAKCgpgYGB7ciBmaWcud2lkdGg9OCwgZmlnLmhlaWdodD00fQoKCiBzZyA8LSBtdXRhdGUoc2FuZ2VyX21hcmtlcnMsIGNsdXN0ZXIgPSBjYXNlX3doZW4oY2x1c3RlciA9PSAiQzAiIH4gIkMwIC0gRmlicm9ibGFzdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2x1c3RlciA9PSAiQzEiIH4gIkMxIC0gRXBpdGhlbGlhbCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2x1c3RlciA9PSAiQzIiIH4gIkMyIC0gTXllbG9pZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2x1c3RlciA9PSAiQzMiIH4gIkMzIC0gRW5kb3RoZWxpYWwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsdXN0ZXIgPT0gIkM0IiB+ICJDNCAtIFQrTksrSUxDIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHVzdGVyID09ICJDNSIgfiAiQzUgLSBCIGNlbGxzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHVzdGVyID09ICJDNiIgfiAiQzYgLSBDaWxpYXRlZCIpKQogcGxvdF9tYXJrZXJfc2NvcmUoc2FuZ2VyLCBzZywgZmFjZXQ9VFJVRSwgbmNvbD0zLCBvdmVybGFwcz0xNikKYGBgICAgIAoqIFtSZXN1bHRzIEMwOiBGaWJyb2JsYXN0XSguL0EwNi1pc29zd2l0Y2gucmVwb3J0LkMwLm5iLmh0bWwpCiogW1Jlc3VsdHMgQzE6IEVwaXRoZWxpYWxdKC4vQTA2LWlzb3N3aXRjaC5yZXBvcnQuQzEubmIuaHRtbCkgCiogW1Jlc3VsdHMgQzI6IE15ZWxvaWRdKC4vQTA2LWlzb3N3aXRjaC5yZXBvcnQuQzIubmIuaHRtbCkgCiogW1Jlc3VsdHMgQzM6IEVuZG90aGVsaWFsXSguL0EwNi1pc29zd2l0Y2gucmVwb3J0LkMzLm5iLmh0bWwpICAKKiBbUmVzdWx0cyBDNDogVCtOSytJTENdKC4vQTA2LWlzb3N3aXRjaC5yZXBvcnQuQzQubmIuaHRtbCkgCiogW1Jlc3VsdHMgQzU6IEIgY2VsbHNdKC4vQTA2LWlzb3N3aXRjaC5yZXBvcnQuQzUubmIuaHRtbCkKKiBbUmVzdWx0cyBDNjogQ2lsaWF0ZWRdKC4vQTA2LWlzb3N3aXRjaC5yZXBvcnQuQzYubmIuaHRtbCkgIAogICAgCiAgICAKIyMgMi0gQmV0d2VlbiBjZWxsIHR5cGVzIGFjcm9zcyBkaWZmZXJlbnQgY29tcGFydG1lbnRzLiAKKiBbUmVzdWx0cyBjcm9zcy1jb21wYXJ0bWVudF0oLi9BMDYtaXNvc3dpdGNoLmNyb3NzLm5iLmh0bWwpCiAgICAKIyMgMy0gQmV0d2VlbiBkZXZlbG9wbWVudGFsIHN0YWdlIGZvciBlYWNoIGNlbGwgdHlwZQoqIFtSZXN1bHRzIGRldmVsb3BtZW50YWwgc3RhZ2VdKC4vQTA2LWlzb3N3aXRjaC1jZWxsdHlwZV9zdGFnZS5uYi5odG1sKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgoKCgoKCmBgYHtyIGZpZy53aWR0aD00LCBmaWcuaGVpZ2h0PTIsIGluY2x1ZGU9RkFMU0V9CmJwaCA8LSBzYW5nZXJfbWFya2VycyAlPiUKICBncm91cF9ieShjbHVzdGVyKSAlPiUKICBzdW1tYXJpc2UobiA9IG5fZGlzdGluY3QoZ2VuZUlkKSkgJT4lCiAgZ2dwbG90KGFlcyh4PWNsdXN0ZXIsIHk9bikpICsKICAgIGdlb21fYmFyKHN0YXQ9ImlkZW50aXR5IikgKyAKICAgIGxhYnMoeD0iTnVtYmVyIG9mIHN3aXRjaGluZyBnZW5lcyBwZXIgY29tcGFydG1lbnQiLCB5PU5VTEwpICsgCiAgICBzY2FsZV94X2Rpc2NyZXRlKGRyb3A9RkFMU0UpICsgCiAgICB0aGVtZV9taW5pbWFsKCkgKyAKICAgIHRoZW1lKGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZT04KSkKICAgICN0aGVtZShheGlzLnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemU9OCksCiAgICAjICAgICAgcGxvdC5tYXJnaW4gPSB1bml0KGMoMC43NSwwLjc1LDAuNzUsMC43NSksICJjbSIpKQpicGgKYGBgCgoKYGBge3IgZmlnLndpZHRoPTMsIGZpZy5oZWlnaHQ9MywgaW5jbHVkZT1GQUxTRX0KCiMgc2FuZ2VyX21hcmtlcnMgJT4lCiMgICBncm91cF9ieShjbHVzdGVyKSAlPiUKIyAgIHN1bW1hcmlzZShuID0gbl9kaXN0aW5jdChnZW5lSWQpKSAlPiUKIyAgIGdncGxvdChhZXMoeD1jbHVzdGVyLCB5PW4pKSArCiMgICAgIGdlb21fYmFyKHN0YXQ9ImlkZW50aXR5IikgKyAKIyAgICAgbGFicyh0aXRsZT0iTnVtYmVyIG9mIHN3aXRjaGluZyBnZW5lcyBwZXIgY29tcGFydG1lbnQiKSArIAojICAgICB0aGVtZV9taW5pbWFsKCkKCgojIGJwIDwtIHNhbmdlcl9tYXJrZXJzICU+JQojICAgZ3JvdXBfYnkoY2x1c3RlcikgJT4lCiMgICBzdW1tYXJpc2UobiA9IG5fZGlzdGluY3QoZ2VuZUlkKSkgJT4lCiMgICBnZ3Bsb3QoYWVzKHk9ZmN0X3JldihjbHVzdGVyKSwgeD1uKSkgKwojICAgICBnZW9tX2JhcihzdGF0PSJpZGVudGl0eSIpICsgCiMgICAgIGxhYnMoeD0iTnVtYmVyIG9mIHN3aXRjaGluZyBnZW5lc1xucGVyIGNvbXBhcnRtZW50IiwgeT1OVUxMKSArIAojICAgICB0aGVtZV9taW5pbWFsKCkgKyAKIyAgICAgdGhlbWUoYXhpcy50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplPTgpKQojICAgICAjdGhlbWUoYXhpcy50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplPTgpLAojICAgICAjICAgICAgcGxvdC5tYXJnaW4gPSB1bml0KGMoMC43NSwwLjc1LDAuNzUsMC43NSksICJjbSIpKQojIGJwCiMgCiMgbnJvdyhzYW5nZXJfc3dpdGNoZXMpCiMgbl9kaXN0aW5jdChzYW5nZXJfc3dpdGNoZXMkZ2VuZUlkKQpgYGAKCmBgYHtyIGZpZy53aWR0aD04LCBpbmNsdWRlPUZBTFNFfQojIHB3IDwtKCBkcCB8IGJwICkgKyBwbG90X2xheW91dCh3aWR0aHMgPSBjKDcsMykpCiMgcHcKIyBnZ3NhdmUoImltZy9GaWc5X3VtYXBfOHg0X25vX2F4aXMucG5nIiwgcGxvdD1kcCwgZGV2aWNlPSJwbmciLCB3aWR0aD04LCBoZWlnaHQ9NCwgdW5pdHM9ImluIiwgZHBpPTMwMCwgdHlwZT0iY2Fpcm8iKQojIGdnc2F2ZSgiaW1nL0ZpZzlfbmJfZ2VuZXMucG5nIiwgcGxvdD1icGgsIGRldmljZT0icG5nIiwgd2lkdGg9MywgaGVpZ2h0PTEuNSwgdW5pdHM9ImluIiwgZHBpPTMwMCwgdHlwZT0iY2Fpcm8iKQojIGdnc2F2ZShwYXN0ZTAoIkZpZzlfdG9wX3VtYXAucG5nIiksIHBsb3Q9cHcsIGRldmljZT0icG5nIiwgd2lkdGg9OCwgaGVpZ2h0PTQsIHVuaXRzPSJpbiIsIGRwaT0zMDAsIHR5cGU9ImNhaXJvIikKCmBgYAoKYGBge3J9CiNsaWJyYXJ5KGthYmxlRXh0cmEpCiNmbXQgPC0gc2FuZ2VyX3N3aXRjaGVzICU+JQojICAgIHNlbGVjdChnZW5lSWQsIHQxLCBjMSwgcDEsIGxvZzJmYzEsIHQyLCBjMiwgcDIsIGxvZzJmYzIsIGNsdXN0ZXIpICU+JQojICAgIG11dGF0ZShwMSA9IGZvcm1hdChwMSwgZGlnaXRzPTMpLAojICAgICAgICAgICBsb2cyZmMxID0gZm9ybWF0KGxvZzJmYzEsIGRpZ2l0cz0yKSwKIyAgICAgICAgICAgcDIgPSBmb3JtYXQocDIsIGRpZ2l0cz0zKSwKIyAgICAgICAgICAgbG9nMmZjMiA9IGZvcm1hdChsb2cyZmMyLCBkaWdpdHM9MikpCgojZm10ICU+JQojICBrYmwoKSAlPiUKIyAga2FibGVfcGFwZXIoInN0cmlwZWQiLCBmdWxsX3dpZHRoID0gRikgJT4lCiMgIHBhY2tfcm93cyhpbmRleCA9IHRhYmxlKGZtdCRjbHVzdGVyKSkKICAKYGBgCgo=