This file contains statistics and figures from the paper, “Molecular, Cellular, and Developmental Organization of the Mouse Vomeronasal organ at Single Cell Resolution” by Max Hills Jr., Limei Ma, Ai Fang, Thelma Chiremba, Seth Malloy, Allison Scott, Anoja Perera, and C. Ron Yu.

The paper can be found here:

Molecular, Cellular, and Developmental Organization of the Mouse Vomeronasal organ at Single Cell Resolution


Novel neuronal lineage

Normalized Gap43 and Stmn2 expression in the neuronal lineage

In all lineages the cells can be distinguished to have both immature and mature populations, as determined by the expression of Gap43 and Stmn2 genes (Fig. S1).

Normalized Xist expression in the neuronal lineage, split by sex

Violin plot of normalized Gnai2 expression in mature V2R neurons, split by sample

Total number of genes, counts, and percent ribosomal gene expression detected in mature neurons, split by cell type

Heatmap of 503 significant (padj ≤ 0.001, fold-change ≥ 1.5) differentially expressed genes in sVSNs

[1] "sVSN Significant Upregulated Genes"
[1] 97
[1] "sVSN Significant Downregulated Genes"
[1] 406

LS0tCnRpdGxlOiAiVk5PIEF0bGFzIEZpZ3VyZSBTNCIKYXV0aG9yOiAiTWF4IEhpbGxzIgpkYXRlOiAiYHIgZm9ybWF0KFN5cy50aW1lKCksICclZCAlQiwgJVknKWAiCm91dHB1dDoKICBodG1sX25vdGVib29rOgogICAgY3NzOiBzdHlsZS5jc3MKLS0tCgpgYGB7ciwgcmVzdWx0cz0nYXNpcyd9CgpjYXQoIjxidXR0b24gb25jbGljaz0naGlzdG9yeS5iYWNrKCknIHN0eWxlPSdmb250LXNpemU6IDIwcHg7IGJhY2tncm91bmQtY29sb3I6IGJsYWNrOyBjb2xvcjogd2hpdGU7IHBhZGRpbmc6IDEwcHggMjBweDsgYm9yZGVyOiAzcHggc29saWQgeWVsbG93OyBib3JkZXItcmFkaXVzOiA1cHg7Jz5DbGljayBIZXJlIHRvIFJldHVybiB0byBQcmV2aW91cyBQYWdlPC9idXR0b24+IikKCmBgYAoKKioqICAKCmBgYHtyLCBlbmdpbmU9J2NzcycsIGVjaG8gPSBGQUxTRX0KCmJvZHkgewogIGZvbnQtc2l6ZTogMThweDsKfQoubmF2LXBpbGxzID4gbGkgPiBhIHsKICBjb2xvcjogYmxhY2s7IC8qIFNldCBpbmFjdGl2ZSB0YWIgdGV4dCBjb2xvciB0byBibGFjayAqLwogIGJvcmRlcjogMnB4IHNvbGlkIGJsYWNrOyAvKiBBZGQgYmxhY2sgYm9yZGVyIHRvIGluYWN0aXZlIHRhYnMgKi8KICBib3JkZXItcmFkaXVzOiA0cHg7IC8qIE9wdGlvbmFsOiBTbGlnaHRseSByb3VuZCB0aGUgY29ybmVycyAqLwp9CgoubmF2LXBpbGxzID4gbGkgPiBhOmhvdmVyLCAubmF2LXBpbGxzID4gbGkgPiBhOmZvY3VzIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBkYXJrZ3JheTsgLyogU2V0IGhvdmVyIGJhY2tncm91bmQgY29sb3IgdG8gYSBkYXJrZXIgZ3JheSAqLwogIGNvbG9yOiB3aGl0ZTsgLyogU2V0IGhvdmVyIHRleHQgY29sb3IgdG8gd2hpdGUgZm9yIGJldHRlciBjb250cmFzdCAqLwp9CgoubmF2LXBpbGxzID4gbGkuYWN0aXZlID4gYSB7CiAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7IC8qIFNldCBhY3RpdmUgdGFiIGJhY2tncm91bmQgY29sb3IgdG8gYmxhY2sgKi8KICBjb2xvcjogd2hpdGU7IC8qIFNldCBhY3RpdmUgdGFiIHRleHQgY29sb3IgdG8gd2hpdGUgKi8KICBib3JkZXI6IDNweCBzb2xpZCB5ZWxsb3cKfQoKLm5hdi1waWxscyA+IGxpLmFjdGl2ZSA+IGE6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6IGRhcmtncmF5OyAvKiBTZXQgYWN0aXZlIHRhYiBiYWNrZ3JvdW5kIGNvbG9yIHRvIGJsYWNrICovCiAgY29sb3I6IHdoaXRlOyAvKiBTZXQgYWN0aXZlIHRhYiB0ZXh0IGNvbG9yIHRvIHdoaXRlICovCiAgYm9yZGVyOiAzcHggc29saWQgYmxhY2sKfQoKYGBgIAoKPlRoaXMgZmlsZSBjb250YWlucyBzdGF0aXN0aWNzIGFuZCBmaWd1cmVzIGZyb20gdGhlIHBhcGVyLCAiTW9sZWN1bGFyLCBDZWxsdWxhciwgYW5kIERldmVsb3BtZW50YWwgT3JnYW5pemF0aW9uIG9mIHRoZSBNb3VzZSBWb21lcm9uYXNhbCBvcmdhbiBhdCBTaW5nbGUgQ2VsbCBSZXNvbHV0aW9uIiBieSBNYXggSGlsbHMgSnIuLCBMaW1laSBNYSwgQWkgRmFuZywgVGhlbG1hIENoaXJlbWJhLCBTZXRoIE1hbGxveSwgQWxsaXNvbiBTY290dCwgQW5vamEgUGVyZXJhLCBhbmQgQy4gUm9uIFl1LiAgICAKClRoZSBwYXBlciBjYW4gYmUgZm91bmQgaGVyZTogIAoKW01vbGVjdWxhciwgQ2VsbHVsYXIsIGFuZCBEZXZlbG9wbWVudGFsIE9yZ2FuaXphdGlvbiBvZiB0aGUgTW91c2UgVm9tZXJvbmFzYWwgb3JnYW4gYXQgU2luZ2xlIENlbGwgUmVzb2x1dGlvbl0oaHR0cHM6Ly9lbGlmZXNjaWVuY2VzLm9yZy9yZXZpZXdlZC1wcmVwcmludHMvOTczNTYjdGFiLWNvbnRlbnQpCgoqKiogIAoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CgojIFItTWFya2Rvd24gR2xvYmFsIFNldHRpbmdzICAKCiMgU2V0LXVwIGEgZGVmYXVsdCBpbWFnZSBzaXplIG9mIDEwIFggMTAgaW5jaGVzLiBTdXBwcmVzcyB3YXJuaW5nCiMgYW5kIGVycm9yIG1lc3NhZ2VzLiBIaWRlIGNvZGUuCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBtZXNzYWdlPUZBTFNFLCBjb21tZW50PSIiLAogICAgICAgICAgICAgICAgICAgICAgZXJyb3I9RkFMU0UsIGZpZy53aWR0aD0xMiwgZmlnLmhlaWdodD0xMiwgY2FjaGU9RkFMU0UpCgpgYGAKCmBgYHtyIGxpYnJhcmllcywgaW5jbHVkZT1GQUxTRX0KCiMgTGlicmFyeSBMb2FkaW5nICAKCnN1cHByZXNzUGFja2FnZVN0YXJ0dXBNZXNzYWdlcyh7CiAgbGlicmFyeShraXQpOyBsaWJyYXJ5KHRpZHl2ZXJzZSk7IGxpYnJhcnkoc3RyaW5ncik7IGxpYnJhcnkocGxvdDNEKSAKICBsaWJyYXJ5KGdncGxvdDIpOyBsaWJyYXJ5KGRhdGEudGFibGUpOyBsaWJyYXJ5KG9yZy5NbS5lZy5kYikKICBsaWJyYXJ5KGRwbHlyKTsgbGlicmFyeShTZXVyYXQpOyBsaWJyYXJ5KERCSSk7IGxpYnJhcnkoY293cGxvdCkKICBsaWJyYXJ5KE1hdHJpeCk7IGxpYnJhcnkoZ2xtR2FtUG9pKTsgbGlicmFyeShjaXJjbGl6ZSkKICBsaWJyYXJ5KHRpYmJsZSk7IGxpYnJhcnkoZ2dwdWJyKTsgbGlicmFyeShzdmdsaXRlKTsgbGlicmFyeShnZ3NpZ25pZikKICBsaWJyYXJ5KHN0YXRzKTsgbGlicmFyeSh2ZWdhbik7IGxpYnJhcnkoc2NhbGVzKTsgbGlicmFyeShjYXJldCkKICBsaWJyYXJ5KHBhdGNod29yayk7IGxpYnJhcnkocGxvdGx5KTsgbGlicmFyeShnZW9tdGV4dHBhdGgpCiAgbGlicmFyeShvcGVueGxzeCk7IGxpYnJhcnkoZ3JpZEV4dHJhKTsgbGlicmFyeShnZ3JlcGVsKQogIGxpYnJhcnkoR2VuZU92ZXJsYXApOyBsaWJyYXJ5KGJpb21hUnQpOyBsaWJyYXJ5KGdncG9pbnRkZW5zaXR5KQogIGxpYnJhcnkoc2xpbmdzaG90KTsgbGlicmFyeSh0cmFkZVNlcSk7IGxpYnJhcnkoU2luZ2xlQ2VsbEV4cGVyaW1lbnQpCiAgbGlicmFyeSh2aXJpZGlzKTsgbGlicmFyeShVcFNldFIpOyBsaWJyYXJ5KHBoZWF0bWFwKTsgbGlicmFyeShtc2lnZGJyKQogIGxpYnJhcnkoZmdzZWEpOyBsaWJyYXJ5KGdyaWQpOyBsaWJyYXJ5KElEUG1pc2MpOyBsaWJyYXJ5KE1BU1MpCiAgbGlicmFyeShSbWlzYyk7IGxpYnJhcnkoZ2dwbG90aWZ5KTsgbGlicmFyeShnZ3BtaXNjKTsgbGlicmFyeShzY2FsZXMpCiAgbGlicmFyeShoZWF0bWFwbHkpOyBsaWJyYXJ5KGRlbmRleHRlbmQpCn0pCgpgYGAKCmBgYHtyfQoKIyBHbG9iYWwgVmFyaWFibGVzCgojIFRoZSBob21lIGRpcmVjdG9yeQpob21lX2RpciA8LSAiL2wvWXUvWXVMYWIvQmlvaW5mb3JtYXRpY3MvcHJvamVjdHMvbWhoL3NjX1ZOTy8iCiMgRGlyZWN0b3J5IGZvciBzdG9yaW5nIGRhdGEgb2JqZWN0cyBhdCBjcnVjaWFsIHN0YWdlcwpvYmplY3RfZGlyIDwtIHBhc3RlMChob21lX2RpciwiZmluYWwuc2V1Lm9ianMvIikKIyBEaXJlY3RvcnkgZm9yIGltYWdlcyBmcm9tIHRoZSBmaW5hbCBhbmFseXNpcwppbWFnZV9kaXIgPC0gcGFzdGUwKGhvbWVfZGlyLCJmaW5hbF9pbWFnZXMvIikKYWRvYmVfaW1hZ2VzIDwtIHBhc3RlMChpbWFnZV9kaXIsICJhZG9iZV9pbGx1c3RyYXRvcl9zdmdfZmlsZXMvIikKIyBEaXJlY3RvcnkgZm9yIGltYWdlcyBmb3IgdGhlIGZpbmFsIHBhcGVyCmNsdXN0cmVlX2RpciA8LSBwYXN0ZTAoaW1hZ2VfZGlyLCJjbHVzdHJlZS8iKQojIEEgZGlyZWN0b3J5IGZvciBUcmFkZVNlcSBmaXRHQU0gb3V0cHV0CmZpdEdBTV9kaXIgPC0gcGFzdGUwKG9iamVjdF9kaXIsICJmaXRHQU0vIikKbW9lX2RpciA8LSAiL2wvWXUvWXVMYWIvQmlvaW5mb3JtYXRpY3MvcHJvamVjdHMvbWhoL21vbG5nXzI0MDdfMjQ1My9SX29iai8iCgojIE9QRU4gYGBgdm5vLnNldS5pbnRlZ3JhdGVkYGBgCmxvYWQoZmlsZSA9IHBhc3RlMChvYmplY3RfZGlyLCJ2bm8uaW50ZWdyYXRlZC5wb3N0Q2VsbElEIikpCiNMb2FkIE5ldXJvbmFsIExpbmVhZ2UgU2V1cmF0IE9iamVjdCAgCmxvYWQoZmlsZSA9IHBhc3RlMChvYmplY3RfZGlyLCJuZXVyb24uaW50ZWdyYXRlZC5wb3N0Q2VsbElEIikpCgojIFJlbmFtZSB1bmtub3duX21WU04gdG8gc1ZTTgpsZXZlbHModm5vLnNldS5pbnRlZ3JhdGVkQGFjdGl2ZS5pZGVudClbbGV2ZWxzKHZuby5zZXUuaW50ZWdyYXRlZEBhY3RpdmUuaWRlbnQpPT0idW5rbm93bl9tVlNOIl0gPC0gInNWU04iCmxldmVscyhuZXVyb24uaW50ZWdyYXRlZEBhY3RpdmUuaWRlbnQpW2xldmVscyhuZXVyb24uaW50ZWdyYXRlZEBhY3RpdmUuaWRlbnQpPT0idW5rbm93bl9tVlNOIl0gPC0gInNWU04iCmxldmVscyh2bm8uc2V1LmludGVncmF0ZWQkY2VsbF90eXBlKVtsZXZlbHModm5vLnNldS5pbnRlZ3JhdGVkJGNlbGxfdHlwZSk9PSJ1bmtub3duX21WU04iXSA8LSAic1ZTTiIKbGV2ZWxzKG5ldXJvbi5pbnRlZ3JhdGVkJGNlbGxfdHlwZSlbbGV2ZWxzKG5ldXJvbi5pbnRlZ3JhdGVkJGNlbGxfdHlwZSk9PSJ1bmtub3duX21WU04iXSA8LSAic1ZTTiIKCiMgR2V0IGNvbG9yIHNjaGVtZSBmb3IgdGhlIHdob2xlIHZubyBkYXRhc2V0CnZuby5jZWxsX3R5cGUuY29sb3JzIDwtIGh1ZV9wYWwoKShsZW5ndGgobGV2ZWxzKHZuby5zZXUuaW50ZWdyYXRlZEBhY3RpdmUuaWRlbnQpKSkKbmFtZXModm5vLmNlbGxfdHlwZS5jb2xvcnMpIDwtIGxldmVscyh2bm8uc2V1LmludGVncmF0ZWRAYWN0aXZlLmlkZW50KQoKIyBLZWVwIG5ldXJvbiBkYXRhc2V0IGNvbG9yIHNjaGVtZSBjb25zaXN0ZW50IHdpdGggdGhlIHdob2xlIHZubyBjb2xvciBzY2hlbWUsIHdoZXJlIHBvc3NpYmxlICAKbmV1cm9uLmNlbGxfdHlwZS5jb2xvcnMgPC0gdm5vLmNlbGxfdHlwZS5jb2xvcnNbYygiVjFSX21WU04iLCJWMlJfbVZTTiIsIm1PU04iLCJzVlNOIiwiVjFSX2lWU04iLCJWMlJfaVZTTiIsIkdCQyIpXQpuZXVyb24uY2VsbF90eXBlLmNvbG9ycyA8LSBzZXROYW1lcyhjKG5ldXJvbi5jZWxsX3R5cGUuY29sb3JzLCIjMDBCMEY2IiwiIzk1OTBGRiIsIiNFNzZCRjMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyhuYW1lcyhuZXVyb24uY2VsbF90eXBlLmNvbG9ycyksImlPU04iLCJsYXRlX0lOUCIsImVhcmx5X0lOUCIpKQoKbWF0dXJlLm5ldXJvbnMgPC0gc3Vic2V0KG5ldXJvbi5pbnRlZ3JhdGVkLGlkZW50cz1jKCJWMVJfbVZTTiIsIlYyUl9tVlNOIiwibU9TTiIsInNWU04iKSkKbWF0dXJlLmNlbGxfdHlwZS5jb2xvcnMgPC0gbmV1cm9uLmNlbGxfdHlwZS5jb2xvcnNbYygiVjFSX21WU04iLCJWMlJfbVZTTiIsIm1PU04iLCJzVlNOIildCgpnbG9iYWwudmFycyA8LSBjKGxzKCksImdsb2JhbC52YXJzIikKCmBgYAoKYGBge3J9Cgp1bmtub3duX21WU05fVjFSX21WU04uREVHcyA8LSAKICByZWFkLnhsc3goeGxzeEZpbGUgPSBwYXN0ZTAob2JqZWN0X2RpciwidW5rbm93bl9tVlNOX1YxUl9tVlNOLkRFR3MueGxzeCIpLHJvd05hbWVzPVRSVUUpCnVua25vd25fbVZTTl9WMlJfbVZTTi5ERUdzIDwtIAogIHJlYWQueGxzeCh4bHN4RmlsZSA9IHBhc3RlMChvYmplY3RfZGlyLCJ1bmtub3duX21WU05fVjJSX21WU04uREVHcy54bHN4Iikscm93TmFtZXM9VFJVRSkKdW5rbm93bl9tVlNOX21PU04uREVHcyA8LSAKICByZWFkLnhsc3goeGxzeEZpbGUgPSBwYXN0ZTAob2JqZWN0X2RpciwidW5rbm93bl9tVlNOX21PU04uREVHcy54bHN4Iikscm93TmFtZXM9VFJVRSkKCmBgYAoKIyBOb3ZlbCBuZXVyb25hbCBsaW5lYWdlIHsudGFic2V0IC50YWJzZXQtcGlsbHN9ICAKCmBgYHtyfQoKUzFfdGhlbWUgPC0gdGhlbWUocGxvdC50aXRsZT1lbGVtZW50X3RleHQoc2l6ZT0zMiksCiAgICAgICAgICAgICAgICAgIGF4aXMudGl0bGU9ZWxlbWVudF90ZXh0KHNpemU9MjQpLAogICAgICAgICAgICAgICAgICBheGlzLnRleHQgPWVsZW1lbnRfdGV4dChzaXplPTIwKSwKICAgICAgICAgICAgICAgICAgbGVnZW5kLnRleHQ9ZWxlbWVudF90ZXh0KHNpemU9MjApLAogICAgICAgICAgICAgICAgICBsZWdlbmQucG9zaXRpb249InJpZ2h0IiwKICAgICAgICAgICAgICAgICAgYXNwZWN0LnJhdGlvPTEsCiAgICAgICAgICAgICAgICAgIHBsb3QubWFyZ2luPXVuaXQoYygtMSwwLjI1LC0xLDAuMjUpLCJsaW5lcyIpLAogICAgICAgICAgICAgICAgICBwYW5lbC5zcGFjaW5nPXVuaXQoMCwgImxpbmVzIikpCgpgYGAKCiMjIE5vcm1hbGl6ZWQgR2FwNDMgYW5kIFN0bW4yIGV4cHJlc3Npb24gaW4gdGhlIG5ldXJvbmFsIGxpbmVhZ2UgIAoKPkluIGFsbCBsaW5lYWdlcyB0aGUgY2VsbHMgY2FuIGJlIGRpc3Rpbmd1aXNoZWQgdG8gaGF2ZSBib3RoIGltbWF0dXJlIGFuZCBtYXR1cmUgcG9wdWxhdGlvbnMsIGFzIGRldGVybWluZWQgYnkgdGhlIGV4cHJlc3Npb24gb2YgR2FwNDMgYW5kIFN0bW4yIGdlbmVzIChGaWcuIFMxKS4gIAoKYGBge3IsIGZpZy53aWR0aD0xNixmaWcuaGVpZ2h0PTh9CgpmaWdTXzFBQiA8LSBGZWF0dXJlUGxvdChvYmplY3Q9bmV1cm9uLmludGVncmF0ZWQsIGZlYXR1cmVzPWMoIkdhcDQzIiwiU3RtbjIiKSwgb3JkZXI9VFJVRSwKICAgICAgICAgICAgICAgICAgICAgIGNvbHM9YygiY3lhbiIsIm1hZ2VudGEiKSxrZWVwLnNjYWxlPSdhbGwnKSAmIFMxX3RoZW1lCgpmaWdTXzFBQgoKYGBgCgojIyBOb3JtYWxpemVkIFhpc3QgZXhwcmVzc2lvbiBpbiB0aGUgbmV1cm9uYWwgbGluZWFnZSwgc3BsaXQgYnkgc2V4ICAKCmBgYHtyLGZpZy53aWR0aD0xNixmaWcuaGVpZ2h0PTh9CgpmaWdTXzFDIDwtIEZlYXR1cmVQbG90KG9iamVjdD1uZXVyb24uaW50ZWdyYXRlZCxmZWF0dXJlcz0iWGlzdCIsb3JkZXI9VFJVRSwKICAgICAgICAgICAgY29scz1jKCJjeWFuIiwibWFnZW50YSIpLHNwbGl0LmJ5PSJzZXgiLGtlZXAuc2NhbGU9J2FsbCcpICYgUzFfdGhlbWUgJgogIHRoZW1lKGF4aXMudGl0bGUueT1lbGVtZW50X2JsYW5rKCkpCgpmaWdTXzFDCgpgYGAKCiMjIFZpb2xpbiBwbG90IG9mIG5vcm1hbGl6ZWQgR25haTIgZXhwcmVzc2lvbiBpbiBtYXR1cmUgVjJSIG5ldXJvbnMsIHNwbGl0IGJ5IHNhbXBsZSAgCgpgYGB7cn0KCiMgR2V0IGRhdGFmcmFtZSBmb3IgcGxvdHRpbmcgZmVhdHVyZXMgb2Ygc1ZTTnMKc1ZTTi5jb21wYXJlLmRmIDwtIEZldGNoRGF0YShtYXR1cmUubmV1cm9ucyx2YXJzPWMoImNlbGxfdHlwZSIsIm5GZWF0dXJlX1JOQSIsIm5Db3VudF9STkEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGVyY2VudC5yaWJvIiwiUDJyeTE0IiwiQXAxczMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ3NwcDEiLCJNdWMyIiwiT2JwMmEiLCJPYnAyYiIsIkxjbjMiLCMjIFVwLXJlZ3VsYXRlZCBnZW5lcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT21wIiwiVHViYTFhIiwiUHRtYSIpKSAgICAgICAgICAgICAgICMjIERvd24tcmVndWxhdGVkIGdlbmVzCgpteV9jb21wYXJpc29ucyA9IGxpc3QoYygiVjFSX21WU04iLCJWMlJfbVZTTiIpLGMoIlYyUl9tVlNOIiwibU9TTiIpLGMoIm1PU04iLCJzVlNOIiksCiAgICAgICAgICAgICAgICAgICAgICBjKCJWMVJfbVZTTiIsIm1PU04iKSxjKCJWMlJfbVZTTiIsInNWU04iKSxjKCJWMVJfbVZTTiIsInNWU04iKSkKCm15X3RoZW1lIDwtIHRoZW1lKHBsb3QudGl0bGU9ZWxlbWVudF90ZXh0KGhqdXN0PTAuNSxzaXplPTMyLGZhY2U9J2JvbGQnKSwgIyBDZW50ZXIgdGhlIHRpdGxlCiAgICAgICAgICAgICAgICAgIGF4aXMudGl0bGUueT1lbGVtZW50X3RleHQoc2l6ZT0yNCksCiAgICAgICAgICAgICAgICAgIGF4aXMudGV4dC55PWVsZW1lbnRfdGV4dChzaXplPTIwKSwKICAgICAgICAgICAgICAgICAgYXhpcy50aXRsZS54PWVsZW1lbnRfYmxhbmsoKSwKICAgICAgICAgICAgICAgICAgYXhpcy50aWNrcy54PWVsZW1lbnRfYmxhbmsoKSwgCiAgICAgICAgICAgICAgICAgIGF4aXMudGV4dC54PWVsZW1lbnRfYmxhbmsoKSxhc3BlY3QucmF0aW89MSwKICAgICAgICAgICAgICAgICAgbGVnZW5kLnBvc2l0aW9uPSJyaWdodCIsCiAgICAgICAgICAgICAgICAgIGxlZ2VuZC5rZXkuc2l6ZT11bml0KDgsJ21tJyksCiAgICAgICAgICAgICAgICAgIGxlZ2VuZC50aXRsZS5hbGlnbj0wLAogICAgICAgICAgICAgICAgICBsZWdlbmQudGl0bGU9ZWxlbWVudF90ZXh0KHNpemU9MjQpLAogICAgICAgICAgICAgICAgICBsZWdlbmQudGV4dD1lbGVtZW50X3RleHQoc2l6ZT0yMCksCiAgICAgICAgICAgICAgICAgIHBsb3QubWFyZ2luPXVuaXQoYygwLDAuMjUsMCwwLjI1KSx1bml0cz0nbGluZScpLAogICAgICAgICAgICAgICAgICBwYW5lbC5zcGFjaW5nPXVuaXQoYygwLDAsMCwwKSx1bml0cz0nbGluZScpKQoKbXlfdGhlbWUyIDwtIHRoZW1lKHBsb3QudGl0bGU9ZWxlbWVudF90ZXh0KGhqdXN0PTAuNSxzaXplPTMyLGZhY2U9J2JvbGQnKSwKICAgICAgICAgICAgICAgICAgIGF4aXMudGl0bGU9ZWxlbWVudF90ZXh0KHNpemU9MjQpLAogICAgICAgICAgICAgICAgICAgYXhpcy50ZXh0PWVsZW1lbnRfdGV4dChzaXplPTIwKSwKICAgICAgICAgICAgICAgICAgIGxlZ2VuZC5wb3NpdGlvbj0ibm9uZSIsYXNwZWN0LnJhdGlvPTEpCgpgYGAKCmBgYHtyfQoKZmlnU18xRCA8LSBWbG5QbG90KG9iamVjdD1zdWJzZXQobmV1cm9uLmludGVncmF0ZWQsaWRlbnRzPWMoIlYyUl9tVlNOIikpLCAKICAgICAgICBmZWF0dXJlcz0iR25haTIiLCBncm91cC5ieT0ib3JpZy5pZGVudCIpICsKICBteV90aGVtZTIgKyBnZ3RpdGxlKCJHbmFpMiBpbiBNYXR1cmUgVjJSIE5ldXJvbnMiKQpmaWdTXzFECgpgYGAKCiMjIFRvdGFsIG51bWJlciBvZiBnZW5lcywgY291bnRzLCBhbmQgcGVyY2VudCByaWJvc29tYWwgZ2VuZSBleHByZXNzaW9uIGRldGVjdGVkIGluIG1hdHVyZSBuZXVyb25zLCBzcGxpdCBieSBjZWxsIHR5cGUgIAoKYGBge3IsZmlnLndpZHRoPTE2LGZpZy5oZWlnaHQ9NS4zMzMzM30KCmZpZ1NfMUUgPC0gZ2dwbG90KHNWU04uY29tcGFyZS5kZixhZXMoeD1jZWxsX3R5cGUseT1uRmVhdHVyZV9STkEsZmlsbD1jZWxsX3R5cGUpKSArIGdlb21fdmlvbGluKCkgKwogIHNjYWxlX2ZpbGxfbWFudWFsKCJDZWxsIFR5cGUiLHZhbHVlcz1tYXR1cmUuY2VsbF90eXBlLmNvbG9ycykgKyB0aGVtZV9jbGFzc2ljKCkgKwogIHN0YXRfc3VtbWFyeShmdW4ueT1tZWFuLGdlb209J3BvaW50JyxzaXplPTEwLGNvbG91cj0iYmxhY2siLHNoYXBlPTk1LHNob3dfZ3VpZGU9RkFMU0UpICsKICBzdGF0X2NvbXBhcmVfbWVhbnMoY29tcGFyaXNvbnM9bXlfY29tcGFyaXNvbnMsdGlwLmxlbmd0aD0wLjAxLAogICAgICAgICAgICAgICAgICAgICBtZXRob2Q9IndpbGNveC50ZXN0IixsYWJlbD0icC5zaWduaWYiLHZqdXN0PTAuMykgKwogIGdndGl0bGUoIlRvdGFsIEdlbmVzIikgKyB5bGFiKCJjb3VudCIpICsgbXlfdGhlbWUgKyBOb0xlZ2VuZCgpCgpmaWdTXzFGIDwtIGdncGxvdChzVlNOLmNvbXBhcmUuZGYsYWVzKHg9Y2VsbF90eXBlLHk9bkNvdW50X1JOQSxmaWxsPWNlbGxfdHlwZSkpICsgZ2VvbV92aW9saW4oKSArCiAgc2NhbGVfZmlsbF9tYW51YWwoIkNlbGwgVHlwZSIsdmFsdWVzPW1hdHVyZS5jZWxsX3R5cGUuY29sb3JzKSArIHRoZW1lX2NsYXNzaWMoKSArCiAgc3RhdF9zdW1tYXJ5KGZ1bi55PW1lYW4sZ2VvbT0ncG9pbnQnLHNpemU9MTAsY29sb3VyPSJibGFjayIsc2hhcGU9OTUsc2hvd19ndWlkZT1GQUxTRSkgKwogIHN0YXRfY29tcGFyZV9tZWFucyhjb21wYXJpc29ucz1teV9jb21wYXJpc29ucyx0aXAubGVuZ3RoPTAuMDEsCiAgICAgICAgICAgICAgICAgICAgIG1ldGhvZD0id2lsY294LnRlc3QiLGxhYmVsPSJwLnNpZ25pZiIsdmp1c3Q9MC4zKSArCiAgZ2d0aXRsZSgiVG90YWwgQ291bnRzIikgKyB5bGFiKCJjb3VudCIpICsgbXlfdGhlbWUgKyBOb0xlZ2VuZCgpCgpmaWdTXzFHIDwtIGdncGxvdChzVlNOLmNvbXBhcmUuZGYsYWVzKHg9Y2VsbF90eXBlLHk9cGVyY2VudC5yaWJvLGZpbGw9Y2VsbF90eXBlKSkgKyBnZW9tX3Zpb2xpbigpICsKICBzY2FsZV9maWxsX21hbnVhbCgiQ2VsbCBUeXBlIix2YWx1ZXM9bWF0dXJlLmNlbGxfdHlwZS5jb2xvcnMpICsgdGhlbWVfY2xhc3NpYygpICsKICBzdGF0X3N1bW1hcnkoZnVuLnk9bWVhbixnZW9tPSdwb2ludCcsc2l6ZT0xMCxjb2xvdXI9ImJsYWNrIixzaGFwZT05NSxzaG93X2d1aWRlPUZBTFNFKSArCiAgc3RhdF9jb21wYXJlX21lYW5zKGNvbXBhcmlzb25zPW15X2NvbXBhcmlzb25zLHRpcC5sZW5ndGg9MC4wMSwKICAgICAgICAgICAgICAgICAgICAgbWV0aG9kPSJ3aWxjb3gudGVzdCIsbGFiZWw9InAuc2lnbmlmIix2anVzdD0wLjMpICsKICBnZ3RpdGxlKCJSaWJvc29tYWwgJSIpICsgeWxhYigicGVyY2VudCIpICsgbXlfdGhlbWUgKyBOb0xlZ2VuZCgpCgpnZ2FycmFuZ2UoZmlnU18xRSwgZmlnU18xRiwgZmlnU18xRywgbmNvbD0zLCBjb21tb24ubGVnZW5kPVRSVUUsIGxlZ2VuZD0iYm90dG9tIiwgYWxpZ249Imh2IikKCmBgYAoKIyMgSGVhdG1hcCBvZiA1MDMgc2lnbmlmaWNhbnQgKHBhZGog4omkIDAuMDAxLCBmb2xkLWNoYW5nZSDiiaUgMS41KSBkaWZmZXJlbnRpYWxseSBleHByZXNzZWQgZ2VuZXMgaW4gc1ZTTnMgIAoKYGBge3J9CgojIFRoZSBnZW5lIG5hbWVzIGZvciBzVlNOIHNpZ25pZmljYW50bHkgdXAtcmVndWxhdGVkIGdlbmVzIGFnYWluc3QgVjFSL1YyUiBWU05zIGFuZCBPU05zCnNWU05fT1NOLnVwX2dlbmVzIDwtIHJvd25hbWVzKHVua25vd25fbVZTTl9tT1NOLkRFR3NbdW5rbm93bl9tVlNOX21PU04uREVHcyRwX3ZhbF9hZGogPCAwLjAwMSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmtub3duX21WU05fbU9TTi5ERUdzJGF2Z19sb2cyRkMgPiBsb2cyKDEuNSksIF0pCnNWU05fVjFSLnVwX2dlbmVzIDwtIHJvd25hbWVzKHVua25vd25fbVZTTl9WMVJfbVZTTi5ERUdzW3Vua25vd25fbVZTTl9WMVJfbVZTTi5ERUdzJHBfdmFsX2FkaiA8IDAuMDAxICYgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5rbm93bl9tVlNOX1YxUl9tVlNOLkRFR3MkYXZnX2xvZzJGQyA+IGxvZzIoMS41KSwgXSkKc1ZTTl9WMlIudXBfZ2VuZXMgPC0gcm93bmFtZXModW5rbm93bl9tVlNOX1YyUl9tVlNOLkRFR3NbdW5rbm93bl9tVlNOX1YyUl9tVlNOLkRFR3MkcF92YWxfYWRqIDwgMC4wMDEgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVua25vd25fbVZTTl9WMlJfbVZTTi5ERUdzJGF2Z19sb2cyRkMgPiBsb2cyKDEuNSksIF0pCgpzVlNOLnVwX2dlbmVzIDwtIGludGVyc2VjdChzVlNOX09TTi51cF9nZW5lcywgaW50ZXJzZWN0KHNWU05fVjFSLnVwX2dlbmVzLCBzVlNOX1YyUi51cF9nZW5lcykpCgpzVlNOX09TTi5kb3duX2dlbmVzIDwtIHJvd25hbWVzKHVua25vd25fbVZTTl9tT1NOLkRFR3NbdW5rbm93bl9tVlNOX21PU04uREVHcyRwX3ZhbF9hZGogPCAwLjAwMSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmtub3duX21WU05fbU9TTi5ERUdzJGF2Z19sb2cyRkMgPCAtbG9nMigxLjUpLCBdKQpzVlNOX1YxUi5kb3duX2dlbmVzIDwtIHJvd25hbWVzKHVua25vd25fbVZTTl9WMVJfbVZTTi5ERUdzW3Vua25vd25fbVZTTl9WMVJfbVZTTi5ERUdzJHBfdmFsX2FkaiA8IDAuMDAxICYgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5rbm93bl9tVlNOX1YxUl9tVlNOLkRFR3MkYXZnX2xvZzJGQyA8IC1sb2cyKDEuNSksIF0pCnNWU05fVjJSLmRvd25fZ2VuZXMgPC0gcm93bmFtZXModW5rbm93bl9tVlNOX1YyUl9tVlNOLkRFR3NbdW5rbm93bl9tVlNOX1YyUl9tVlNOLkRFR3MkcF92YWxfYWRqIDwgMC4wMDEgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVua25vd25fbVZTTl9WMlJfbVZTTi5ERUdzJGF2Z19sb2cyRkMgPCAtbG9nMigxLjUpLCBdKQoKc1ZTTi5kb3duX2dlbmVzIDwtIGludGVyc2VjdChzVlNOX09TTi5kb3duX2dlbmVzLCBpbnRlcnNlY3Qoc1ZTTl9WMVIuZG93bl9nZW5lcywgc1ZTTl9WMlIuZG93bl9nZW5lcykpCgojIEhvdyBtYW55IHVuaXZlcnNhbGx5IHNpZ25pZmljYW50IHJlZ3VsYXRlZCBnZW5lcyBpbiBzVlNOcyB3aGVuIGNvbXBhcmVkIGFnYWluc3Qgb3RoZXIgbWF0dXJlIG5ldXJvbiB0eXBlcwpwcmludCgic1ZTTiBTaWduaWZpY2FudCBVcHJlZ3VsYXRlZCBHZW5lcyIpCmxlbmd0aChzVlNOLnVwX2dlbmVzKQpwcmludCgic1ZTTiBTaWduaWZpY2FudCBEb3ducmVndWxhdGVkIEdlbmVzIikKbGVuZ3RoKHNWU04uZG93bl9nZW5lcykKCmFsbC5zdnNuLmRlZ3MgPC0gYyhzVlNOLnVwX2dlbmVzLHNWU04uZG93bl9nZW5lcykKCmBgYAoKYGBge3J9CgojIEdldCBjb3VudCBkYXRhIGZvciBtYXR1cmUgc2Vuc29yeSBuZXVyb25zCm1TTi5tYXRyaXggPC0gR2V0QXNzYXlEYXRhKHN1YnNldChuZXVyb24uaW50ZWdyYXRlZCxpZGVudHM9YygiVjFSX21WU04iLCJWMlJfbVZTTiIsIm1PU04iLCJzVlNOIiksZG93bnNhbXBsZT00MDApLHNsb3Q9J2RhdGEnKQojIFN1YnNldCB0aGUgbWF0cml4IGZvciBvdXIgc1ZTTiBERUdzCnNWU04udG9wLmRmIDwtIGFzLmRhdGEuZnJhbWUobVNOLm1hdHJpeFthbGwuc3Zzbi5kZWdzLCBdKQoKIyBUaGUgY2VsbCBJRHMgZm9yIEFMTCBtYXR1cmUgc2Vuc29yeSBuZXVyb25zCm1hdHVyZS5uZXVyb24uY2VsbElEcyA8LSBjb2xuYW1lcyhzVlNOLnRvcC5kZikKIyBHZXQgY29ycmVzcG9uZGluZyBjZWxsLXR5cGUgbWV0YWRhdGEgZm9yIGNvbHVtbiBhbm5vdGF0aW9ucwptYXR1cmUubmV1cm9uLmFubm90YXRpb24gPC0gZGF0YS5mcmFtZShjZWxsX3R5cGU9bmV1cm9uLmludGVncmF0ZWRAbWV0YS5kYXRhW21hdHVyZS5uZXVyb24uY2VsbElEcyxjKCJjZWxsX3R5cGUiKV0pCnJvd25hbWVzKG1hdHVyZS5uZXVyb24uYW5ub3RhdGlvbikgPC0gY29sbmFtZXMoc1ZTTi50b3AuZGYpCgpybShtU04ubWF0cml4LG1hdHVyZS5uZXVyb24uY2VsbElEcykKCmBgYAoKYGBge3IsIGZpZy53aWR0aD0xNiwgZmlnLmhlaWdodD0xNn0KCiMgQ3VzdG9tIFBhbGV0dGUgZm9yIGdlbmUgZXhwcmVzc2lvbgpjb2xvcnMgPC0gYygiIzAwN0ZGRiIsICIjMkU4QjU3IiwgIiNGRkZGNjYiLCAiI0ZGQTUwMCIsICIjRkYwMDAwIikKcGFsZXR0ZSA8LSBjb2xvclJhbXBQYWxldHRlKGNvbG9ycykKCiMgQ3VzdG9tIFBhbGV0dGUgZm9yIENlbGwgVHlwZXMKZmlnU180LnBhbGV0dGUgPC13ZXNhbmRlcnNvbjo6d2VzX3BhbGV0dGUoIkRhcmplZWxpbmcxIilbMjo1XQpuYW1lcyhmaWdTXzQucGFsZXR0ZSkgPC0gYygiVjFSX21WU04iLCJWMlJfbVZTTiIsIm1PU04iLCJzVlNOIikKCiMgQW5ub3RhdGlvbiBDb2xvciBTY2hlbWF0aWMgCnZzbi5hbm5fY29sb3JzIDwtIGxpc3QoY2VsbF90eXBlPWZpZ1NfNC5wYWxldHRlKQoKZmlnU180IDwtIHBoZWF0bWFwKG1hdD1zVlNOLnRvcC5kZiwgCiAgICAgICAgICAgICAgICAgICBjb2xvcj1wYWxldHRlKG49NTApLCBmb250c2l6ZT0xNCwgdHJlZWhlaWdodF9jb2w9MCwgY2VsbHdpZHRoID0gMC41OSwKICAgICAgICAgICAgICAgICAgIGNsdXN0ZXJfcm93cz1UUlVFLCBjbHVzdGVyX2NvbHM9VFJVRSwgdHJlZWhlaWdodF9yb3c9MjUsIAogICAgICAgICAgICAgICAgICAgYW5ub3RhdGlvbl9jb2w9bWF0dXJlLm5ldXJvbi5hbm5vdGF0aW9uLCBzaG93X2NvbG5hbWVzPUZBTFNFLAogICAgICAgICAgICAgICAgICAgc2hvd19yb3duYW1lcz1GQUxTRSwgYW5ub3RhdGlvbl9jb2xvcnM9dnNuLmFubl9jb2xvcnMsCiAgICAgICAgICAgICAgICAgICBtYWluPSJTaWduaWZpY2FudCBEaWZmZXJlbnRpYWxseSBFeHByZXNzZWQgR2VuZXMgaW4gc1ZTTnMiKQoKYGBgCgpgYGB7cn0KCnJtKGxpc3Q9bHMoKSkKaW52aXNpYmxlKGdjKCkpCgpgYGAKCgo=