Name: series-workflow96mw7 Phase: Succeeded StartedAt: 2026-06-30 14:50:26 +0000 UTC FinishedAt: 2026-06-30 16:11:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow96mw7[0] Phase: Succeeded StartedAt: 2026-06-30 14:50:26 +0000 UTC FinishedAt: 2026-06-30 15:05:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow96mw7[0].run-triage Phase: Succeeded StartedAt: 2026-06-30 14:50:26 +0000 UTC FinishedAt: 2026-06-30 15:05:26 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "1398b1014909618f65ff6bcebcb2ee5ccd44fdc0", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BNGE", "INFINIBAND_BNG_RE", "DCB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "1398b1014909618f65ff6bcebcb2ee5ccd44fdc0", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BNGE", "INFINIBAND_BNG_RE", "DCB" ], "series_id": "80ad49a1-1dfe-4948-bc82-d71d3ed5d633" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "bng_re_net_ring_free", "bng_re_net_ring_alloc", "hwrm_ring_free_send_msg", "hwrm_ring_alloc_send_msg", "bnge_hwrm_rx_agg_ring_alloc", "bnge_hwrm_rx_ring_alloc", "bnge_hwrm_ring_alloc", "bnge_hwrm_rx_ring_free", "bnge_hwrm_rx_agg_ring_free", "bnge_hwrm_tx_ring_free", "bnge_hwrm_cp_ring_free", "bnge_hwrm_ring_free" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE1OjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JOR0UmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9CTkdfUkUmIzM0OywKICAgICYjMzQ7RENCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Ym5nX3JlX25ldF9yaW5nX2ZyZWUmIzM0OywKICAgICYjMzQ7Ym5nX3JlX25ldF9yaW5nX2FsbG9jJiMzNDssCiAgICAmIzM0O2h3cm1fcmluZ19mcmVlX3NlbmRfbXNnJiMzNDssCiAgICAmIzM0O2h3cm1fcmluZ19hbGxvY19zZW5kX21zZyYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm1fcnhfYWdnX3JpbmdfYWxsb2MmIzM0OywKICAgICYjMzQ7Ym5nZV9od3JtX3J4X3JpbmdfYWxsb2MmIzM0OywKICAgICYjMzQ7Ym5nZV9od3JtX3JpbmdfYWxsb2MmIzM0OywKICAgICYjMzQ7Ym5nZV9od3JtX3J4X3JpbmdfZnJlZSYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm1fcnhfYWdnX3JpbmdfZnJlZSYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm1fdHhfcmluZ19mcmVlJiMzNDssCiAgICAmIzM0O2JuZ2VfaHdybV9jcF9yaW5nX2ZyZWUmIzM0OywKICAgICYjMzQ7Ym5nZV9od3JtX3JpbmdfZnJlZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQnJvYWRjb20gQk5HRSBhbmQgQk5HX1JFIGRyaXZlcnMgdG8gc3VwcG9ydCAzMi1iaXQgZmlybXdhcmUgcmluZyBJRHMgaW5zdGVhZCBvZiAxNi1iaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGRyaXZlciYjMzk7cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBoYXJkd2FyZS9maXJtd2FyZSBkdXJpbmcgcmluZyBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nLiBUaGUgZHJpdmVyIGNhbiBiZSB0ZXN0ZWQgdmlhIFBDSSBlbXVsYXRpb24gaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE1OjAwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOTk2NmZhNjRmZmIyY2RkNDYwMzZiZDVkZDJmNmI5MDNiZDBhOWQ3MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDE1OjAwOjA1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmNcbmluZGV4IDcxYTdjYTIxOTZhZDg4Li4zMTFjOGJjOTMxNjAzYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuY1xuQEAgLTExMyw3ICYjNDM7MTEzLDcgQEAgc3RhdGljIHZvaWQgYm5nX3JlX2ZpbGxfZndfbXNnKHN0cnVjdCBibmdlX2Z3X21zZyAqZndfbXNnLCB2b2lkICptc2csXG4gfVxuIFxuIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2ZyZWUoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYsXG4tXHRcdFx0XHR1MTYgZndfcmluZ19pZCwgaW50IHR5cGUpXG4mIzQzO1x0XHRcdFx0dTMyIGZ3X3JpbmdfaWQsIGludCB0eXBlKVxuIHtcbiBcdHN0cnVjdCBibmdlX2F1eHJfZGV2ICphdXhfZGV2ID0gcmRldi1cdTAwM2VhdXhfZGV2O1xuIFx0c3RydWN0IGh3cm1fcmluZ19mcmVlX2lucHV0IHJlcSA9IHt9O1xuQEAgLTEyMyw3ICYjNDM7MTIzLDcgQEAgc3RhdGljIGludCBibmdfcmVfbmV0X3JpbmdfZnJlZShzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldixcbiBcbiBcdGJuZ19yZV9pbml0X2h3cm1faGRyKCh2b2lkICopXHUwMDI2cmVxLCBIV1JNX1JJTkdfRlJFRSk7XG4gXHRyZXEucmluZ190eXBlID0gdHlwZTtcbi1cdHJlcS5yaW5nX2lkID0gY3B1X3RvX2xlMTYoZndfcmluZ19pZCk7XG4mIzQzO1x0cmVxLnJpbmdfaWQgPSBjcHVfdG9fbGUzMihmd19yaW5nX2lkKTtcbiBcdGJuZ19yZV9maWxsX2Z3X21zZyhcdTAwMjZmd19tc2csICh2b2lkICopXHUwMDI2cmVxLCBzaXplb2YocmVxKSwgKHZvaWQgKilcdTAwMjZyZXNwLFxuIFx0XHRcdCAgICBzaXplb2YocmVzcCksIEJOR0VfREZMVF9IV1JNX0NNRF9USU1FT1VUKTtcbiBcdHJjID0gYm5nZV9zZW5kX21zZyhhdXhfZGV2LCBcdTAwMjZmd19tc2cpO1xuQEAgLTE2MSw3ICYjNDM7MTYxLDcgQEAgc3RhdGljIGludCBibmdfcmVfbmV0X3JpbmdfYWxsb2Moc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYsXG4gXHRcdFx0ICAgc2l6ZW9mKHJlc3ApLCBCTkdFX0RGTFRfSFdSTV9DTURfVElNRU9VVCk7XG4gXHRyYyA9IGJuZ2Vfc2VuZF9tc2coYXV4X2RldiwgXHUwMDI2ZndfbXNnKTtcbiBcdGlmICghcmMpXG4tXHRcdCpmd19yaW5nX2lkID0gbGUxNl90b19jcHUocmVzcC5yaW5nX2lkKTtcbiYjNDM7XHRcdCpmd19yaW5nX2lkID0gKHUxNilsZTMyX3RvX2NwdShyZXNwLnJpbmdfaWQpO1xuIFxuIFx0cmV0dXJuIHJjO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oXG5pbmRleCBmMjFjZmY2NTFmZDQ0YS4uNDQ3OWNjZDA3MWY1MzIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmhcbkBAIC0zNiw2ICYjNDM7MzYsNyBAQCBzdHJ1Y3QgYm5nZV9wZl9pbmZvIHtcbiB9O1xuIFxuICNkZWZpbmUgSU5WQUxJRF9IV19SSU5HX0lEICAgICAgKCh1MTYpLTEpXG4mIzQzOyNkZWZpbmUgSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUXHQoVTMyX01BWClcbiBcbiBlbnVtIHtcbiBcdEJOR0VfRldfQ0FQX1NIT1JUX0NNRFx0XHRcdFx0PSBCSVRfVUxMKDApLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmNcbmluZGV4IDFjOWNmZWMxYjYzM2ZjLi42NTFjNWU3ODM1MTZjYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuY1xuQEAgLTEyODMsNyAmIzQzOzEyODMsNyBAQCBpbnQgYm5nZV9od3JtX3N0YXRfY3R4X2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4pXG4gXG4gaW50IGh3cm1fcmluZ19mcmVlX3NlbmRfbXNnKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHRcdFx0ICAgIHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nLFxuLVx0XHRcdCAgICB1MzIgcmluZ190eXBlLCBpbnQgY21wbF9yaW5nX2lkKVxuJiM0MztcdFx0XHQgICAgdTMyIHJpbmdfdHlwZSwgdTMyIGNtcGxfcmluZ19pZClcbiB7XG4gXHRzdHJ1Y3QgaHdybV9yaW5nX2ZyZWVfaW5wdXQgKnJlcTtcbiBcdHN0cnVjdCBibmdlX2RldiAqYmQgPSBibi1cdTAwM2ViZDtcbkBAIC0xMjk1LDcgJiM0MzsxMjk1LDcgQEAgaW50IGh3cm1fcmluZ19mcmVlX3NlbmRfbXNnKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXG4gXHRyZXEtXHUwMDNlY21wbF9yaW5nID0gY3B1X3RvX2xlMTYoY21wbF9yaW5nX2lkKTtcbiBcdHJlcS1cdTAwM2VyaW5nX3R5cGUgPSByaW5nX3R5cGU7XG4tXHRyZXEtXHUwMDNlcmluZ19pZCA9IGNwdV90b19sZTE2KHJpbmctXHUwMDNlZndfcmluZ19pZCk7XG4mIzQzO1x0cmVxLVx1MDAzZXJpbmdfaWQgPSBjcHVfdG9fbGUzMihyaW5nLVx1MDAzZWZ3X3JpbmdfaWQpO1xuIFxuIFx0Ym5nZV9od3JtX3JlcV9ob2xkKGJkLCByZXEpO1xuIFx0cmMgPSBibmdlX2h3cm1fcmVxX3NlbmQoYmQsIHJlcSk7XG5AQCAtMTMxNyw3ICYjNDM7MTMxNyw3IEBAIGludCBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcdHN0cnVjdCBod3JtX3JpbmdfYWxsb2Nfb3V0cHV0ICpyZXNwO1xuIFx0c3RydWN0IGh3cm1fcmluZ19hbGxvY19pbnB1dCAqcmVxO1xuIFx0c3RydWN0IGJuZ2VfZGV2ICpiZCA9IGJuLVx1MDAzZWJkO1xuLVx0dTE2IHJpbmdfaWQsIGZsYWdzID0gMDtcbiYjNDM7XHR1MzIgcmluZ19pZCwgZmxhZ3MgPSAwO1xuIFx0aW50IHJjO1xuIFxuIFx0cmMgPSBibmdlX2h3cm1fcmVxX2luaXQoYmQsIHJlcSwgSFdSTV9SSU5HX0FMTE9DKTtcbkBAIC0xNDAxLDcgJiM0MzsxNDAxLDcgQEAgaW50IGh3cm1fcmluZ19hbGxvY19zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFxuIFx0cmVzcCA9IGJuZ2VfaHdybV9yZXFfaG9sZChiZCwgcmVxKTtcbiBcdHJjID0gYm5nZV9od3JtX3JlcV9zZW5kKGJkLCByZXEpO1xuLVx0cmluZ19pZCA9IGxlMTZfdG9fY3B1KHJlc3AtXHUwMDNlcmluZ19pZCk7XG4mIzQzO1x0cmluZ19pZCA9IGxlMzJfdG9fY3B1KHJlc3AtXHUwMDNlcmluZ19pZCk7XG4gXHRibmdlX2h3cm1fcmVxX2Ryb3AoYmQsIHJlcSk7XG4gXG4gZXhpdDpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5oXG5pbmRleCAzNTAxZGU3YTg5YjkxOS4uYmY0NTJlMzkwZDViZDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmhcbkBAIC01MCw3ICYjNDM7NTAsNyBAQCBpbnQgYm5nZV9od3JtX2NmYV9sMl9zZXRfcnhfbWFzayhzdHJ1Y3QgYm5nZV9kZXYgKmJkLFxuIHZvaWQgYm5nZV9od3JtX3N0YXRfY3R4X2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibik7XG4gaW50IGJuZ2VfaHdybV9zdGF0X2N0eF9hbGxvYyhzdHJ1Y3QgYm5nZV9uZXQgKmJuKTtcbiBpbnQgaHdybV9yaW5nX2ZyZWVfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibiwgc3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3QgKnJpbmcsXG4tXHRcdFx0ICAgIHUzMiByaW5nX3R5cGUsIGludCBjbXBsX3JpbmdfaWQpO1xuJiM0MztcdFx0XHQgICAgdTMyIHJpbmdfdHlwZSwgdTMyIGNtcGxfcmluZ19pZCk7XG4gaW50IGh3cm1fcmluZ19hbGxvY19zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0XHRcdCAgICAgc3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3QgKnJpbmcsXG4gXHRcdFx0ICAgICB1MzIgcmluZ190eXBlLCB1MzIgbWFwX2luZGV4KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmNcbmluZGV4IDcwNzY4MTkzMDA0Y2IyLi42ZjdlZjUwNmQ0ZTE4YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jXG5AQCAtMTMyNywxMiAmIzQzOzEzMjcsMTIgQEAgc3RhdGljIGludCBibmdlX2FsbG9jX2NvcmUoc3RydWN0IGJuZ2VfbmV0ICpibilcbiBcdHJldHVybiByYztcbiB9XG4gXG4tdTE2IGJuZ2VfY3BfcmluZ19mb3Jfcngoc3RydWN0IGJuZ2VfcnhfcmluZ19pbmZvICpyeHIpXG4mIzQzO3UzMiBibmdlX2NwX3JpbmdfZm9yX3J4KHN0cnVjdCBibmdlX3J4X3JpbmdfaW5mbyAqcnhyKVxuIHtcbiBcdHJldHVybiByeHItXHUwMDNlcnhfY3ByLVx1MDAzZXJpbmdfc3RydWN0LmZ3X3JpbmdfaWQ7XG4gfVxuIFxuLXUxNiBibmdlX2NwX3JpbmdfZm9yX3R4KHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyKVxuJiM0Mzt1MzIgYm5nZV9jcF9yaW5nX2Zvcl90eChzdHJ1Y3QgYm5nZV90eF9yaW5nX2luZm8gKnR4cilcbiB7XG4gXHRyZXR1cm4gdHhyLVx1MDAzZXR4X2Nwci1cdTAwM2VyaW5nX3N0cnVjdC5md19yaW5nX2lkO1xuIH1cbkBAIC0xMzc1LDEyICYjNDM7MTM3NSwxMiBAQCBzdGF0aWMgdm9pZCBibmdlX2luaXRfbnFfdHJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxuIFx0XHRzdHJ1Y3QgYm5nZV9ucV9yaW5nX2luZm8gKm5xciA9IFx1MDAyNmJuLVx1MDAzZWJuYXBpW2ldLVx1MDAzZW5xX3Jpbmc7XG4gXHRcdHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nID0gXHUwMDI2bnFyLVx1MDAzZXJpbmdfc3RydWN0O1xuIFxuLVx0XHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4mIzQzO1x0XHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIG5xci1cdTAwM2VjcF9yaW5nX2NvdW50OyBqJiM0MzsmIzQzOykge1xuIFx0XHRcdHN0cnVjdCBibmdlX2NwX3JpbmdfaW5mbyAqY3ByID0gXHUwMDI2bnFyLVx1MDAzZWNwX3JpbmdfYXJyW2pdO1xuIFxuIFx0XHRcdHJpbmcgPSBcdTAwMjZjcHItXHUwMDNlcmluZ19zdHJ1Y3Q7XG4tXHRcdFx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuJiM0MztcdFx0XHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gXHRcdH1cbiBcdH1cbiB9XG5AQCAtMTYzNyw3ICYjNDM7MTYzNyw3IEBAIHN0YXRpYyB2b2lkIGJuZ2VfaW5pdF9vbmVfcnhfcmluZ19yeGJkKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXG4gXHRyaW5nID0gXHUwMDI2cnhyLVx1MDAzZXJ4X3Jpbmdfc3RydWN0O1xuIFx0Ym5nZV9pbml0X3J4YmRfcGFnZXMocmluZywgdHlwZSk7XG4tXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4mIzQzO1x0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBibmdlX2luaXRfb25lX2FnZ19yaW5nX3J4YmQoc3RydWN0IGJuZ2VfbmV0ICpibixcbkBAIC0xNjQ3LDcgJiM0MzsxNjQ3LDcgQEAgc3RhdGljIHZvaWQgYm5nZV9pbml0X29uZV9hZ2dfcmluZ19yeGJkKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHR1MzIgdHlwZTtcbiBcbiBcdHJpbmcgPSBcdTAwMjZyeHItXHUwMDNlcnhfYWdnX3Jpbmdfc3RydWN0O1xuLVx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuJiM0MztcdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcbiBcdGlmIChibmdlX2lzX2FnZ19yZXFkKGJuLVx1MDAzZWJkKSkge1xuIFx0XHR0eXBlID0gKCh1MzIpQk5HRV9SWF9QQUdFX1NJWkUgXHUwMDNjXHUwMDNjIFJYX0JEX0xFTl9TSElGVCkgfFxuIFx0XHRcdFJYX0JEX1RZUEVfUlhfQUdHX0JEIHwgUlhfQkRfRkxBR1NfU09QO1xuQEAgLTE3MDgsNyAmIzQzOzE3MDgsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2luaXRfdHhfcmluZ3Moc3RydWN0IGJuZ2VfbmV0ICpibilcbiBcdFx0c3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIgPSBcdTAwMjZibi1cdTAwM2V0eF9yaW5nW2ldO1xuIFx0XHRzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyA9IFx1MDAyNnR4ci1cdTAwM2V0eF9yaW5nX3N0cnVjdDtcbiBcbi1cdFx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuJiM0MztcdFx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIFxuIFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShibi1cdTAwM2VuZXRkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1RYLFxuIFx0XHRcdFx0ICAgICBcdTAwMjZ0eHItXHUwMDNlYm5hcGktXHUwMDNlbmFwaSk7XG5AQCAtMTg2Nyw3ICYjNDM7MTg2Nyw3IEBAIHN0YXRpYyBpbnQgYm5nZV9od3JtX3J4X2FnZ19yaW5nX2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHRcdCAgICByaW5nLVx1MDAzZWZ3X3JpbmdfaWQpO1xuIFx0Ym5nZV9kYl93cml0ZShibi1cdTAwM2ViZCwgXHUwMDI2cnhyLVx1MDAzZXJ4X2FnZ19kYiwgcnhyLVx1MDAzZXJ4X2FnZ19wcm9kKTtcbiBcdGJuZ2VfZGJfd3JpdGUoYm4tXHUwMDNlYmQsIFx1MDAyNnJ4ci1cdTAwM2VyeF9kYiwgcnhyLVx1MDAzZXJ4X3Byb2QpO1xuLVx0Ym4tXHUwMDNlZ3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSByaW5nLVx1MDAzZWZ3X3JpbmdfaWQ7XG4mIzQzO1x0Ym4tXHUwMDNlZ3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSAodTE2KXJpbmctXHUwMDNlZndfcmluZ19pZDtcbiBcbiBcdHJldHVybiAwO1xuIH1cbkBAIC0xODg2LDcgJiM0MzsxODg2LDcgQEAgc3RhdGljIGludCBibmdlX2h3cm1fcnhfcmluZ19hbGxvYyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0XHRyZXR1cm4gcmM7XG4gXG4gXHRibmdlX3NldF9kYihibiwgXHUwMDI2cnhyLVx1MDAzZXJ4X2RiLCB0eXBlLCBtYXBfaWR4LCByaW5nLVx1MDAzZWZ3X3JpbmdfaWQpO1xuLVx0Ym4tXHUwMDNlZ3JwX2luZm9bbWFwX2lkeF0ucnhfZndfcmluZ19pZCA9IHJpbmctXHUwMDNlZndfcmluZ19pZDtcbiYjNDM7XHRibi1cdTAwM2VncnBfaW5mb1ttYXBfaWR4XS5yeF9md19yaW5nX2lkID0gKHUxNilyaW5nLVx1MDAzZWZ3X3JpbmdfaWQ7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5AQCAtMTkxNiw3ICYjNDM7MTkxNiw3IEBAIHN0YXRpYyBpbnQgYm5nZV9od3JtX3JpbmdfYWxsb2Moc3RydWN0IGJuZ2VfbmV0ICpibilcbiBcdFx0Ym5nZV9zZXRfZGIoYm4sIFx1MDAyNm5xci1cdTAwM2VucV9kYiwgdHlwZSwgbWFwX2lkeCwgcmluZy1cdTAwM2Vmd19yaW5nX2lkKTtcbiBcdFx0Ym5nZV9kYl9ucShibiwgXHUwMDI2bnFyLVx1MDAzZW5xX2RiLCBucXItXHUwMDNlbnFfcmF3X2NvbnMpO1xuIFx0XHRlbmFibGVfaXJxKHZlY3Rvcik7XG4tXHRcdGJuLVx1MDAzZWdycF9pbmZvW2ldLm5xX2Z3X3JpbmdfaWQgPSByaW5nLVx1MDAzZWZ3X3JpbmdfaWQ7XG4mIzQzO1x0XHRibi1cdTAwM2VncnBfaW5mb1tpXS5ucV9md19yaW5nX2lkID0gKHUxNilyaW5nLVx1MDAzZWZ3X3JpbmdfaWQ7XG4gXG4gXHRcdGlmICghaSkge1xuIFx0XHRcdHJjID0gYm5nZV9od3JtX3NldF9hc3luY19ldmVudF9jcihiZCwgcmluZy1cdTAwM2Vmd19yaW5nX2lkKTtcbkBAIC0xOTg2LDE1ICYjNDM7MTk4NiwxMyBAQCB2b2lkIGJuZ2VfZmlsbF9od19yc3NfdGJsKHN0cnVjdCBibmdlX25ldCAqYm4sIHN0cnVjdCBibmdlX3ZuaWNfaW5mbyAqdm5pYylcbiBcdHRibF9zaXplID0gYm5nZV9nZXRfcnhmaF9pbmRpcl9zaXplKGJkKTtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHRibF9zaXplOyBpJiM0MzsmIzQzOykge1xuLVx0XHR1MTYgcmluZ19pZCwgajtcbiYjNDM7XHRcdHUzMiBqO1xuIFxuIFx0XHRqID0gYmQtXHUwMDNlcnNzX2luZGlyX3RibFtpXTtcbiBcdFx0cnhyID0gXHUwMDI2Ym4tXHUwMDNlcnhfcmluZ1tqXTtcbiBcbi1cdFx0cmluZ19pZCA9IHJ4ci1cdTAwM2VyeF9yaW5nX3N0cnVjdC5md19yaW5nX2lkO1xuLVx0XHQqcmluZ190YmwmIzQzOyYjNDM7ID0gY3B1X3RvX2xlMTYocmluZ19pZCk7XG4tXHRcdHJpbmdfaWQgPSBibmdlX2NwX3JpbmdfZm9yX3J4KHJ4cik7XG4tXHRcdCpyaW5nX3RibCYjNDM7JiM0MzsgPSBjcHVfdG9fbGUxNihyaW5nX2lkKTtcbiYjNDM7XHRcdCpyaW5nX3RibCYjNDM7JiM0MzsgPSBjcHVfdG9fbGUxNihyeHItXHUwMDNlcnhfcmluZ19zdHJ1Y3QuZndfcmluZ19pZCk7XG4mIzQzO1x0XHQqcmluZ190YmwmIzQzOyYjNDM7ID0gY3B1X3RvX2xlMTYoYm5nZV9jcF9yaW5nX2Zvcl9yeChyeHIpKTtcbiBcdH1cbiB9XG4gXG5AQCAtMjI4NSw3ICYjNDM7MjI4Myw3IEBAIHN0YXRpYyB2b2lkIGJuZ2VfZGlzYWJsZV9pbnQoc3RydWN0IGJuZ2VfbmV0ICpibilcbiBcdFx0bnFyID0gXHUwMDI2Ym5hcGktXHUwMDNlbnFfcmluZztcbiBcdFx0cmluZyA9IFx1MDAyNm5xci1cdTAwM2VyaW5nX3N0cnVjdDtcbiBcbi1cdFx0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSUQpXG4mIzQzO1x0XHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkICE9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVClcbiBcdFx0XHRibmdlX2RiX25xKGJuLCBcdTAwMjZucXItXHUwMDNlbnFfZGIsIG5xci1cdTAwM2VucV9yYXdfY29ucyk7XG4gXHR9XG4gfVxuQEAgLTI0MDEsNyAmIzQzOzIzOTksNyBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHR1MzIgZ3JwX2lkeCA9IHJ4ci1cdTAwM2VibmFwaS1cdTAwM2VpbmRleDtcbiBcdHUzMiBjbXBsX3JpbmdfaWQ7XG4gXG4tXHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRClcbiYjNDM7XHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRF8zMkJJVClcbiBcdFx0cmV0dXJuO1xuIFxuIFx0Y21wbF9yaW5nX2lkID0gYm5nZV9jcF9yaW5nX2Zvcl9yeChyeHIpO1xuQEAgLTI0MDksNyAmIzQzOzI0MDcsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHRcdFx0XHRSSU5HX0ZSRUVfUkVRX1JJTkdfVFlQRV9SWCxcbiBcdFx0XHRcdGNsb3NlX3BhdGggPyBjbXBsX3JpbmdfaWQgOlxuIFx0XHRcdFx0SU5WQUxJRF9IV19SSU5HX0lEKTtcbi1cdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcbiYjNDM7XHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gXHRibi1cdTAwM2VncnBfaW5mb1tncnBfaWR4XS5yeF9md19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuIH1cbiBcbkBAIC0yNDIxLDE0ICYjNDM7MjQxOSwxNCBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfYWdnX3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0dTMyIGdycF9pZHggPSByeHItXHUwMDNlYm5hcGktXHUwMDNlaW5kZXg7XG4gXHR1MzIgY21wbF9yaW5nX2lkO1xuIFxuLVx0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSUQpXG4mIzQzO1x0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpXG4gXHRcdHJldHVybjtcbiBcbiBcdGNtcGxfcmluZ19pZCA9IGJuZ2VfY3BfcmluZ19mb3JfcngocnhyKTtcbiBcdGh3cm1fcmluZ19mcmVlX3NlbmRfbXNnKGJuLCByaW5nLCBSSU5HX0ZSRUVfUkVRX1JJTkdfVFlQRV9SWF9BR0csXG4gXHRcdFx0XHRjbG9zZV9wYXRoID8gY21wbF9yaW5nX2lkIDpcbiBcdFx0XHRcdElOVkFMSURfSFdfUklOR19JRCk7XG4tXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4mIzQzO1x0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIFx0Ym4tXHUwMDNlZ3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4gfVxuIFxuQEAgLTI0MzksMTQgJiM0MzsyNDM3LDE0IEBAIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV90eF9yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcdHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nID0gXHUwMDI2dHhyLVx1MDAzZXR4X3Jpbmdfc3RydWN0O1xuIFx0dTMyIGNtcGxfcmluZ19pZDtcbiBcbi1cdGlmIChyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEKVxuJiM0MztcdGlmIChyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRjbXBsX3JpbmdfaWQgPSBjbG9zZV9wYXRoID8gYm5nZV9jcF9yaW5nX2Zvcl90eCh0eHIpIDpcbiBcdFx0ICAgICAgIElOVkFMSURfSFdfUklOR19JRDtcbiBcdGh3cm1fcmluZ19mcmVlX3NlbmRfbXNnKGJuLCByaW5nLCBSSU5HX0ZSRUVfUkVRX1JJTkdfVFlQRV9UWCxcbiBcdFx0XHRcdGNtcGxfcmluZ19pZCk7XG4tXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4mIzQzO1x0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBibmdlX2h3cm1fY3BfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXG5AQCAtMjQ1NSwxMiAmIzQzOzI0NTMsMTIgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX2NwX3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0c3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3QgKnJpbmc7XG4gXG4gXHRyaW5nID0gXHUwMDI2Y3ByLVx1MDAzZXJpbmdfc3RydWN0O1xuLVx0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSUQpXG4mIzQzO1x0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpXG4gXHRcdHJldHVybjtcbiBcbiBcdGh3cm1fcmluZ19mcmVlX3NlbmRfbXNnKGJuLCByaW5nLCBSSU5HX0ZSRUVfUkVRX1JJTkdfVFlQRV9MMl9DTVBMLFxuIFx0XHRcdFx0SU5WQUxJRF9IV19SSU5HX0lEKTtcbi1cdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcbiYjNDM7XHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibiwgYm9vbCBjbG9zZV9wYXRoKVxuQEAgLTI0OTYsMTEgJiM0MzsyNDk0LDExIEBAIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibiwgYm9vbCBjbG9zZV9wYXRoKVxuIFx0XHRcdGJuZ2VfaHdybV9jcF9yaW5nX2ZyZWUoYm4sIFx1MDAyNm5xci1cdTAwM2VjcF9yaW5nX2FycltqXSk7XG4gXG4gXHRcdHJpbmcgPSBcdTAwMjZucXItXHUwMDNlcmluZ19zdHJ1Y3Q7XG4tXHRcdGlmIChyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgIT0gSU5WQUxJRF9IV19SSU5HX0lEKSB7XG4mIzQzO1x0XHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkICE9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVCkge1xuIFx0XHRcdGh3cm1fcmluZ19mcmVlX3NlbmRfbXNnKGJuLCByaW5nLFxuIFx0XHRcdFx0XHRcdFJJTkdfRlJFRV9SRVFfUklOR19UWVBFX05RLFxuIFx0XHRcdFx0XHRcdElOVkFMSURfSFdfUklOR19JRCk7XG4tXHRcdFx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuJiM0MztcdFx0XHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gXHRcdFx0Ym4tXHUwMDNlZ3JwX2luZm9baV0ubnFfZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcbiBcdFx0fVxuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuaFxuaW5kZXggZjQ2MzZiNWIwY2YzZjAuLmQxNzc5MTljMmUxMTcwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmhcbkBAIC02MzAsOCAmIzQzOzYzMCw4IEBAIHN0cnVjdCBibmdlX2wyX2ZpbHRlciB7XG4gXHRyZWZjb3VudF90XHRcdHJlZmNudDtcbiB9O1xuIFxuLXUxNiBibmdlX2NwX3JpbmdfZm9yX3J4KHN0cnVjdCBibmdlX3J4X3JpbmdfaW5mbyAqcnhyKTtcbi11MTYgYm5nZV9jcF9yaW5nX2Zvcl90eChzdHJ1Y3QgYm5nZV90eF9yaW5nX2luZm8gKnR4cik7XG4mIzQzO3UzMiBibmdlX2NwX3JpbmdfZm9yX3J4KHN0cnVjdCBibmdlX3J4X3JpbmdfaW5mbyAqcnhyKTtcbiYjNDM7dTMyIGJuZ2VfY3BfcmluZ19mb3JfdHgoc3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIpO1xuIHZvaWQgYm5nZV9maWxsX2h3X3Jzc190Ymwoc3RydWN0IGJuZ2VfbmV0ICpibiwgc3RydWN0IGJuZ2Vfdm5pY19pbmZvICp2bmljKTtcbiBpbnQgYm5nZV9hbGxvY19yeF9kYXRhKHN0cnVjdCBibmdlX25ldCAqYm4sIHN0cnVjdCBibmdlX3J4X3JpbmdfaW5mbyAqcnhyLFxuIFx0XHQgICAgICAgdTE2IHByb2QsIGdmcF90IGdmcCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX3JtZW0uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9ybWVtLmhcbmluZGV4IDM0MWM3ZjgxZWQwOTJiLi5iYjBjNzlhMWVlNjBmNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9ybWVtLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9ybWVtLmhcbkBAIC0xODQsNyAmIzQzOzE4NCw3IEBAIHN0cnVjdCBibmdlX2N0eF9tZW1faW5mbyB7XG4gc3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3Qge1xuIFx0c3RydWN0IGJuZ2VfcmluZ19tZW1faW5mb1x0cmluZ19tZW07XG4gXG4tXHR1MTZcdFx0XHRmd19yaW5nX2lkO1xuJiM0MztcdHUzMlx0XHRcdGZ3X3JpbmdfaWQ7XG4gXHR1bmlvbiB7XG4gXHRcdHUxNlx0XHRncnBfaWR4O1xuIFx0XHR1MTZcdFx0bWFwX2lkeDsgLyogVXNlZCBieSBOUXMgKi9cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2JuZ2UvaHNpLmggYi9pbmNsdWRlL2xpbnV4L2JuZ2UvaHNpLmhcbmluZGV4IDhlYTEzZDU0MDdlZWNkLi4xZjdiZDk2NDE1YTUyNyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvYm5nZS9oc2kuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9ibmdlL2hzaS5oXG5AQCAtODMxNyw4ICYjNDM7ODMxNyw3IEBAIHN0cnVjdCBod3JtX3JpbmdfYWxsb2Nfb3V0cHV0IHtcbiBcdF9fbGUxNlx0cmVxX3R5cGU7XG4gXHRfX2xlMTZcdHNlcV9pZDtcbiBcdF9fbGUxNlx0cmVzcF9sZW47XG4tXHRfX2xlMTZcdHJpbmdfaWQ7XG4tXHRfX2xlMTZcdGxvZ2ljYWxfcmluZ19pZDtcbiYjNDM7XHRfX2xlMzJcdHJpbmdfaWQ7XG4gXHR1OFx0cHVzaF9idWZmZXJfaW5kZXg7XG4gXHQjZGVmaW5lIFJJTkdfQUxMT0NfUkVTUF9QVVNIX0JVRkZFUl9JTkRFWF9QSU5HX0JVRkZFUiAweDBVTFxuIFx0I2RlZmluZSBSSU5HX0FMTE9DX1JFU1BfUFVTSF9CVUZGRVJfSU5ERVhfUE9OR19CVUZGRVIgMHgxVUxcbkBAIC04MzQ1LDEwICYjNDM7ODM0NCwxMCBAQCBzdHJ1Y3QgaHdybV9yaW5nX2ZyZWVfaW5wdXQge1xuIFx0dThcdGZsYWdzO1xuIFx0I2RlZmluZSBSSU5HX0ZSRUVfUkVRX0ZMQUdTX1ZJUlRJT19SSU5HX1ZBTElEIDB4MVVMXG4gXHQjZGVmaW5lIFJJTkdfRlJFRV9SRVFfRkxBR1NfTEFTVCAgICAgICAgICAgICBSSU5HX0ZSRUVfUkVRX0ZMQUdTX1ZJUlRJT19SSU5HX1ZBTElEXG4tXHRfX2xlMTZcdHJpbmdfaWQ7XG4mIzQzO1x0X19sZTE2XHR1bnVzZWRfMTtcbiBcdF9fbGUzMlx0cHJvZF9pZHg7XG4gXHRfX2xlMzJcdG9wYXF1ZTtcbi1cdF9fbGUzMlx0dW51c2VkXzE7XG4mIzQzO1x0X19sZTMyXHRyaW5nX2lkO1xuIH07XG4gXG4gLyogaHdybV9yaW5nX2ZyZWVfb3V0cHV0IChzaXplOjEyOGIvMTZCKSAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE1OjAwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjVtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JOR0UmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9CTkdfUkUmIzM0OywKICAgICYjMzQ7RENCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Ym5nX3JlX25ldF9yaW5nX2ZyZWUmIzM0OywKICAgICYjMzQ7Ym5nX3JlX25ldF9yaW5nX2FsbG9jJiMzNDssCiAgICAmIzM0O2h3cm1fcmluZ19mcmVlX3NlbmRfbXNnJiMzNDssCiAgICAmIzM0O2h3cm1fcmluZ19hbGxvY19zZW5kX21zZyYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm1fcnhfYWdnX3JpbmdfYWxsb2MmIzM0OywKICAgICYjMzQ7Ym5nZV9od3JtX3J4X3JpbmdfYWxsb2MmIzM0OywKICAgICYjMzQ7Ym5nZV9od3JtX3JpbmdfYWxsb2MmIzM0OywKICAgICYjMzQ7Ym5nZV9od3JtX3J4X3JpbmdfZnJlZSYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm1fcnhfYWdnX3JpbmdfZnJlZSYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm1fdHhfcmluZ19mcmVlJiMzNDssCiAgICAmIzM0O2JuZ2VfaHdybV9jcF9yaW5nX2ZyZWUmIzM0OywKICAgICYjMzQ7Ym5nZV9od3JtX3JpbmdfZnJlZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQnJvYWRjb20gQk5HRSBhbmQgQk5HX1JFIGRyaXZlcnMgdG8gc3VwcG9ydCAzMi1iaXQgZmlybXdhcmUgcmluZyBJRHMgaW5zdGVhZCBvZiAxNi1iaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGRyaXZlciYjMzk7cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBoYXJkd2FyZS9maXJtd2FyZSBkdXJpbmcgcmluZyBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nLiBUaGUgZHJpdmVyIGNhbiBiZSB0ZXN0ZWQgdmlhIFBDSSBlbXVsYXRpb24gaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5OTY2ZmE2NGZmYjJjZGQ0NjAzNmJkNWRkMmY2YjkwM2JkMGE5ZDcxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdW4gMzAgMTU6MDA6MDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jCmluZGV4IDcxYTdjYTIxOTZhZDg4Li4zMTFjOGJjOTMxNjAzYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMKQEAgLTExMyw3ICYjNDM7MTEzLDcgQEAgc3RhdGljIHZvaWQgYm5nX3JlX2ZpbGxfZndfbXNnKHN0cnVjdCBibmdlX2Z3X21zZyAqZndfbXNnLCB2b2lkICptc2csCiB9CiAKIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2ZyZWUoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYsCi0JCQkJdTE2IGZ3X3JpbmdfaWQsIGludCB0eXBlKQomIzQzOwkJCQl1MzIgZndfcmluZ19pZCwgaW50IHR5cGUpCiB7CiAJc3RydWN0IGJuZ2VfYXV4cl9kZXYgKmF1eF9kZXYgPSByZGV2LSZndDthdXhfZGV2OwogCXN0cnVjdCBod3JtX3JpbmdfZnJlZV9pbnB1dCByZXEgPSB7fTsKQEAgLTEyMyw3ICYjNDM7MTIzLDcgQEAgc3RhdGljIGludCBibmdfcmVfbmV0X3JpbmdfZnJlZShzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldiwKIAogCWJuZ19yZV9pbml0X2h3cm1faGRyKCh2b2lkICopJmFtcDtyZXEsIEhXUk1fUklOR19GUkVFKTsKIAlyZXEucmluZ190eXBlID0gdHlwZTsKLQlyZXEucmluZ19pZCA9IGNwdV90b19sZTE2KGZ3X3JpbmdfaWQpOwomIzQzOwlyZXEucmluZ19pZCA9IGNwdV90b19sZTMyKGZ3X3JpbmdfaWQpOwogCWJuZ19yZV9maWxsX2Z3X21zZygmYW1wO2Z3X21zZywgKHZvaWQgKikmYW1wO3JlcSwgc2l6ZW9mKHJlcSksICh2b2lkICopJmFtcDtyZXNwLAogCQkJICAgIHNpemVvZihyZXNwKSwgQk5HRV9ERkxUX0hXUk1fQ01EX1RJTUVPVVQpOwogCXJjID0gYm5nZV9zZW5kX21zZyhhdXhfZGV2LCAmYW1wO2Z3X21zZyk7CkBAIC0xNjEsNyAmIzQzOzE2MSw3IEBAIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2FsbG9jKHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2LAogCQkJICAgc2l6ZW9mKHJlc3ApLCBCTkdFX0RGTFRfSFdSTV9DTURfVElNRU9VVCk7CiAJcmMgPSBibmdlX3NlbmRfbXNnKGF1eF9kZXYsICZhbXA7ZndfbXNnKTsKIAlpZiAoIXJjKQotCQkqZndfcmluZ19pZCA9IGxlMTZfdG9fY3B1KHJlc3AucmluZ19pZCk7CiYjNDM7CQkqZndfcmluZ19pZCA9ICh1MTYpbGUzMl90b19jcHUocmVzcC5yaW5nX2lkKTsKIAogCXJldHVybiByYzsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgKaW5kZXggZjIxY2ZmNjUxZmQ0NGEuLjQ0NzljY2QwNzFmNTMyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaApAQCAtMzYsNiAmIzQzOzM2LDcgQEAgc3RydWN0IGJuZ2VfcGZfaW5mbyB7CiB9OwogCiAjZGVmaW5lIElOVkFMSURfSFdfUklOR19JRCAgICAgICgodTE2KS0xKQomIzQzOyNkZWZpbmUgSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUCShVMzJfTUFYKQogCiBlbnVtIHsKIAlCTkdFX0ZXX0NBUF9TSE9SVF9DTUQJCQkJPSBCSVRfVUxMKDApLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuYwppbmRleCAxYzljZmVjMWI2MzNmYy4uNjUxYzVlNzgzNTE2Y2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jCkBAIC0xMjgzLDcgJiM0MzsxMjgzLDcgQEAgaW50IGJuZ2VfaHdybV9zdGF0X2N0eF9hbGxvYyhzdHJ1Y3QgYm5nZV9uZXQgKmJuKQogCiBpbnQgaHdybV9yaW5nX2ZyZWVfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibiwKIAkJCSAgICBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZywKLQkJCSAgICB1MzIgcmluZ190eXBlLCBpbnQgY21wbF9yaW5nX2lkKQomIzQzOwkJCSAgICB1MzIgcmluZ190eXBlLCB1MzIgY21wbF9yaW5nX2lkKQogewogCXN0cnVjdCBod3JtX3JpbmdfZnJlZV9pbnB1dCAqcmVxOwogCXN0cnVjdCBibmdlX2RldiAqYmQgPSBibi0mZ3Q7YmQ7CkBAIC0xMjk1LDcgJiM0MzsxMjk1LDcgQEAgaW50IGh3cm1fcmluZ19mcmVlX3NlbmRfbXNnKHN0cnVjdCBibmdlX25ldCAqYm4sCiAKIAlyZXEtJmd0O2NtcGxfcmluZyA9IGNwdV90b19sZTE2KGNtcGxfcmluZ19pZCk7CiAJcmVxLSZndDtyaW5nX3R5cGUgPSByaW5nX3R5cGU7Ci0JcmVxLSZndDtyaW5nX2lkID0gY3B1X3RvX2xlMTYocmluZy0mZ3Q7ZndfcmluZ19pZCk7CiYjNDM7CXJlcS0mZ3Q7cmluZ19pZCA9IGNwdV90b19sZTMyKHJpbmctJmd0O2Z3X3JpbmdfaWQpOwogCiAJYm5nZV9od3JtX3JlcV9ob2xkKGJkLCByZXEpOwogCXJjID0gYm5nZV9od3JtX3JlcV9zZW5kKGJkLCByZXEpOwpAQCAtMTMxNyw3ICYjNDM7MTMxNyw3IEBAIGludCBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibiwKIAlzdHJ1Y3QgaHdybV9yaW5nX2FsbG9jX291dHB1dCAqcmVzcDsKIAlzdHJ1Y3QgaHdybV9yaW5nX2FsbG9jX2lucHV0ICpyZXE7CiAJc3RydWN0IGJuZ2VfZGV2ICpiZCA9IGJuLSZndDtiZDsKLQl1MTYgcmluZ19pZCwgZmxhZ3MgPSAwOwomIzQzOwl1MzIgcmluZ19pZCwgZmxhZ3MgPSAwOwogCWludCByYzsKIAogCXJjID0gYm5nZV9od3JtX3JlcV9pbml0KGJkLCByZXEsIEhXUk1fUklOR19BTExPQyk7CkBAIC0xNDAxLDcgJiM0MzsxNDAxLDcgQEAgaW50IGh3cm1fcmluZ19hbGxvY19zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLAogCiAJcmVzcCA9IGJuZ2VfaHdybV9yZXFfaG9sZChiZCwgcmVxKTsKIAlyYyA9IGJuZ2VfaHdybV9yZXFfc2VuZChiZCwgcmVxKTsKLQlyaW5nX2lkID0gbGUxNl90b19jcHUocmVzcC0mZ3Q7cmluZ19pZCk7CiYjNDM7CXJpbmdfaWQgPSBsZTMyX3RvX2NwdShyZXNwLSZndDtyaW5nX2lkKTsKIAlibmdlX2h3cm1fcmVxX2Ryb3AoYmQsIHJlcSk7CiAKIGV4aXQ6CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5oCmluZGV4IDM1MDFkZTdhODliOTE5Li5iZjQ1MmUzOTBkNWJkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmgKQEAgLTUwLDcgJiM0Mzs1MCw3IEBAIGludCBibmdlX2h3cm1fY2ZhX2wyX3NldF9yeF9tYXNrKHN0cnVjdCBibmdlX2RldiAqYmQsCiB2b2lkIGJuZ2VfaHdybV9zdGF0X2N0eF9mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4pOwogaW50IGJuZ2VfaHdybV9zdGF0X2N0eF9hbGxvYyhzdHJ1Y3QgYm5nZV9uZXQgKmJuKTsKIGludCBod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZywKLQkJCSAgICB1MzIgcmluZ190eXBlLCBpbnQgY21wbF9yaW5nX2lkKTsKJiM0MzsJCQkgICAgdTMyIHJpbmdfdHlwZSwgdTMyIGNtcGxfcmluZ19pZCk7CiBpbnQgaHdybV9yaW5nX2FsbG9jX3NlbmRfbXNnKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJCQkgICAgIHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nLAogCQkJICAgICB1MzIgcmluZ190eXBlLCB1MzIgbWFwX2luZGV4KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYwppbmRleCA3MDc2ODE5MzAwNGNiMi4uNmY3ZWY1MDZkNGUxOGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMKQEAgLTEzMjcsMTIgJiM0MzsxMzI3LDEyIEBAIHN0YXRpYyBpbnQgYm5nZV9hbGxvY19jb3JlKHN0cnVjdCBibmdlX25ldCAqYm4pCiAJcmV0dXJuIHJjOwogfQogCi11MTYgYm5nZV9jcF9yaW5nX2Zvcl9yeChzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cikKJiM0Mzt1MzIgYm5nZV9jcF9yaW5nX2Zvcl9yeChzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cikKIHsKIAlyZXR1cm4gcnhyLSZndDtyeF9jcHItJmd0O3Jpbmdfc3RydWN0LmZ3X3JpbmdfaWQ7CiB9CiAKLXUxNiBibmdlX2NwX3JpbmdfZm9yX3R4KHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyKQomIzQzO3UzMiBibmdlX2NwX3JpbmdfZm9yX3R4KHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyKQogewogCXJldHVybiB0eHItJmd0O3R4X2Nwci0mZ3Q7cmluZ19zdHJ1Y3QuZndfcmluZ19pZDsKIH0KQEAgLTEzNzUsMTIgJiM0MzsxMzc1LDEyIEBAIHN0YXRpYyB2b2lkIGJuZ2VfaW5pdF9ucV90cmVlKHN0cnVjdCBibmdlX25ldCAqYm4pCiAJCXN0cnVjdCBibmdlX25xX3JpbmdfaW5mbyAqbnFyID0gJmFtcDtibi0mZ3Q7Ym5hcGlbaV0tJmd0O25xX3Jpbmc7CiAJCXN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nID0gJmFtcDtucXItJmd0O3Jpbmdfc3RydWN0OwogCi0JCXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7CiYjNDM7CQlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUOwogCQlmb3IgKGogPSAwOyBqICZsdDsgbnFyLSZndDtjcF9yaW5nX2NvdW50OyBqJiM0MzsmIzQzOykgewogCQkJc3RydWN0IGJuZ2VfY3BfcmluZ19pbmZvICpjcHIgPSAmYW1wO25xci0mZ3Q7Y3BfcmluZ19hcnJbal07CiAKIAkJCXJpbmcgPSAmYW1wO2Nwci0mZ3Q7cmluZ19zdHJ1Y3Q7Ci0JCQlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEOwomIzQzOwkJCXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7CiAJCX0KIAl9CiB9CkBAIC0xNjM3LDcgJiM0MzsxNjM3LDcgQEAgc3RhdGljIHZvaWQgYm5nZV9pbml0X29uZV9yeF9yaW5nX3J4YmQoc3RydWN0IGJuZ2VfbmV0ICpibiwKIAogCXJpbmcgPSAmYW1wO3J4ci0mZ3Q7cnhfcmluZ19zdHJ1Y3Q7CiAJYm5nZV9pbml0X3J4YmRfcGFnZXMocmluZywgdHlwZSk7Ci0JcmluZy0mZ3Q7ZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDsKJiM0MzsJcmluZy0mZ3Q7ZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDsKIH0KIAogc3RhdGljIHZvaWQgYm5nZV9pbml0X29uZV9hZ2dfcmluZ19yeGJkKHN0cnVjdCBibmdlX25ldCAqYm4sCkBAIC0xNjQ3LDcgJiM0MzsxNjQ3LDcgQEAgc3RhdGljIHZvaWQgYm5nZV9pbml0X29uZV9hZ2dfcmluZ19yeGJkKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJdTMyIHR5cGU7CiAKIAlyaW5nID0gJmFtcDtyeHItJmd0O3J4X2FnZ19yaW5nX3N0cnVjdDsKLQlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEOwomIzQzOwlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUOwogCWlmIChibmdlX2lzX2FnZ19yZXFkKGJuLSZndDtiZCkpIHsKIAkJdHlwZSA9ICgodTMyKUJOR0VfUlhfUEFHRV9TSVpFICZsdDsmbHQ7IFJYX0JEX0xFTl9TSElGVCkgfAogCQkJUlhfQkRfVFlQRV9SWF9BR0dfQkQgfCBSWF9CRF9GTEFHU19TT1A7CkBAIC0xNzA4LDcgJiM0MzsxNzA4LDcgQEAgc3RhdGljIHZvaWQgYm5nZV9pbml0X3R4X3JpbmdzKHN0cnVjdCBibmdlX25ldCAqYm4pCiAJCXN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyID0gJmFtcDtibi0mZ3Q7dHhfcmluZ1tpXTsKIAkJc3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3QgKnJpbmcgPSAmYW1wO3R4ci0mZ3Q7dHhfcmluZ19zdHJ1Y3Q7CiAKLQkJcmluZy0mZ3Q7ZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDsKJiM0MzsJCXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7CiAKIAkJbmV0aWZfcXVldWVfc2V0X25hcGkoYm4tJmd0O25ldGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsCiAJCQkJICAgICAmYW1wO3R4ci0mZ3Q7Ym5hcGktJmd0O25hcGkpOwpAQCAtMTg2Nyw3ICYjNDM7MTg2Nyw3IEBAIHN0YXRpYyBpbnQgYm5nZV9od3JtX3J4X2FnZ19yaW5nX2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJCSAgICByaW5nLSZndDtmd19yaW5nX2lkKTsKIAlibmdlX2RiX3dyaXRlKGJuLSZndDtiZCwgJmFtcDtyeHItJmd0O3J4X2FnZ19kYiwgcnhyLSZndDtyeF9hZ2dfcHJvZCk7CiAJYm5nZV9kYl93cml0ZShibi0mZ3Q7YmQsICZhbXA7cnhyLSZndDtyeF9kYiwgcnhyLSZndDtyeF9wcm9kKTsKLQlibi0mZ3Q7Z3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSByaW5nLSZndDtmd19yaW5nX2lkOwomIzQzOwlibi0mZ3Q7Z3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSAodTE2KXJpbmctJmd0O2Z3X3JpbmdfaWQ7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE4ODYsNyAmIzQzOzE4ODYsNyBAQCBzdGF0aWMgaW50IGJuZ2VfaHdybV9yeF9yaW5nX2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJCXJldHVybiByYzsKIAogCWJuZ2Vfc2V0X2RiKGJuLCAmYW1wO3J4ci0mZ3Q7cnhfZGIsIHR5cGUsIG1hcF9pZHgsIHJpbmctJmd0O2Z3X3JpbmdfaWQpOwotCWJuLSZndDtncnBfaW5mb1ttYXBfaWR4XS5yeF9md19yaW5nX2lkID0gcmluZy0mZ3Q7ZndfcmluZ19pZDsKJiM0MzsJYm4tJmd0O2dycF9pbmZvW21hcF9pZHhdLnJ4X2Z3X3JpbmdfaWQgPSAodTE2KXJpbmctJmd0O2Z3X3JpbmdfaWQ7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE5MTYsNyAmIzQzOzE5MTYsNyBAQCBzdGF0aWMgaW50IGJuZ2VfaHdybV9yaW5nX2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4pCiAJCWJuZ2Vfc2V0X2RiKGJuLCAmYW1wO25xci0mZ3Q7bnFfZGIsIHR5cGUsIG1hcF9pZHgsIHJpbmctJmd0O2Z3X3JpbmdfaWQpOwogCQlibmdlX2RiX25xKGJuLCAmYW1wO25xci0mZ3Q7bnFfZGIsIG5xci0mZ3Q7bnFfcmF3X2NvbnMpOwogCQllbmFibGVfaXJxKHZlY3Rvcik7Ci0JCWJuLSZndDtncnBfaW5mb1tpXS5ucV9md19yaW5nX2lkID0gcmluZy0mZ3Q7ZndfcmluZ19pZDsKJiM0MzsJCWJuLSZndDtncnBfaW5mb1tpXS5ucV9md19yaW5nX2lkID0gKHUxNilyaW5nLSZndDtmd19yaW5nX2lkOwogCiAJCWlmICghaSkgewogCQkJcmMgPSBibmdlX2h3cm1fc2V0X2FzeW5jX2V2ZW50X2NyKGJkLCByaW5nLSZndDtmd19yaW5nX2lkKTsKQEAgLTE5ODYsMTUgJiM0MzsxOTg2LDEzIEBAIHZvaWQgYm5nZV9maWxsX2h3X3Jzc190Ymwoc3RydWN0IGJuZ2VfbmV0ICpibiwgc3RydWN0IGJuZ2Vfdm5pY19pbmZvICp2bmljKQogCXRibF9zaXplID0gYm5nZV9nZXRfcnhmaF9pbmRpcl9zaXplKGJkKTsKIAogCWZvciAoaSA9IDA7IGkgJmx0OyB0Ymxfc2l6ZTsgaSYjNDM7JiM0MzspIHsKLQkJdTE2IHJpbmdfaWQsIGo7CiYjNDM7CQl1MzIgajsKIAogCQlqID0gYmQtJmd0O3Jzc19pbmRpcl90YmxbaV07CiAJCXJ4ciA9ICZhbXA7Ym4tJmd0O3J4X3Jpbmdbal07CiAKLQkJcmluZ19pZCA9IHJ4ci0mZ3Q7cnhfcmluZ19zdHJ1Y3QuZndfcmluZ19pZDsKLQkJKnJpbmdfdGJsJiM0MzsmIzQzOyA9IGNwdV90b19sZTE2KHJpbmdfaWQpOwotCQlyaW5nX2lkID0gYm5nZV9jcF9yaW5nX2Zvcl9yeChyeHIpOwotCQkqcmluZ190YmwmIzQzOyYjNDM7ID0gY3B1X3RvX2xlMTYocmluZ19pZCk7CiYjNDM7CQkqcmluZ190YmwmIzQzOyYjNDM7ID0gY3B1X3RvX2xlMTYocnhyLSZndDtyeF9yaW5nX3N0cnVjdC5md19yaW5nX2lkKTsKJiM0MzsJCSpyaW5nX3RibCYjNDM7JiM0MzsgPSBjcHVfdG9fbGUxNihibmdlX2NwX3JpbmdfZm9yX3J4KHJ4cikpOwogCX0KIH0KIApAQCAtMjI4NSw3ICYjNDM7MjI4Myw3IEBAIHN0YXRpYyB2b2lkIGJuZ2VfZGlzYWJsZV9pbnQoc3RydWN0IGJuZ2VfbmV0ICpibikKIAkJbnFyID0gJmFtcDtibmFwaS0mZ3Q7bnFfcmluZzsKIAkJcmluZyA9ICZhbXA7bnFyLSZndDtyaW5nX3N0cnVjdDsKIAotCQlpZiAocmluZy0mZ3Q7ZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSUQpCiYjNDM7CQlpZiAocmluZy0mZ3Q7ZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpCiAJCQlibmdlX2RiX25xKGJuLCAmYW1wO25xci0mZ3Q7bnFfZGIsIG5xci0mZ3Q7bnFfcmF3X2NvbnMpOwogCX0KIH0KQEAgLTI0MDEsNyAmIzQzOzIzOTksNyBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJdTMyIGdycF9pZHggPSByeHItJmd0O2JuYXBpLSZndDtpbmRleDsKIAl1MzIgY21wbF9yaW5nX2lkOwogCi0JaWYgKHJpbmctJmd0O2Z3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEKQomIzQzOwlpZiAocmluZy0mZ3Q7ZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpCiAJCXJldHVybjsKIAogCWNtcGxfcmluZ19pZCA9IGJuZ2VfY3BfcmluZ19mb3JfcngocnhyKTsKQEAgLTI0MDksNyAmIzQzOzI0MDcsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJCQkJUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfUlgsCiAJCQkJY2xvc2VfcGF0aCA/IGNtcGxfcmluZ19pZCA6CiAJCQkJSU5WQUxJRF9IV19SSU5HX0lEKTsKLQlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEOwomIzQzOwlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUOwogCWJuLSZndDtncnBfaW5mb1tncnBfaWR4XS5yeF9md19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEOwogfQogCkBAIC0yNDIxLDE0ICYjNDM7MjQxOSwxNCBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfYWdnX3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLAogCXUzMiBncnBfaWR4ID0gcnhyLSZndDtibmFwaS0mZ3Q7aW5kZXg7CiAJdTMyIGNtcGxfcmluZ19pZDsKIAotCWlmIChyaW5nLSZndDtmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRCkKJiM0MzsJaWYgKHJpbmctJmd0O2Z3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKQogCQlyZXR1cm47CiAKIAljbXBsX3JpbmdfaWQgPSBibmdlX2NwX3JpbmdfZm9yX3J4KHJ4cik7CiAJaHdybV9yaW5nX2ZyZWVfc2VuZF9tc2coYm4sIHJpbmcsIFJJTkdfRlJFRV9SRVFfUklOR19UWVBFX1JYX0FHRywKIAkJCQljbG9zZV9wYXRoID8gY21wbF9yaW5nX2lkIDoKIAkJCQlJTlZBTElEX0hXX1JJTkdfSUQpOwotCXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7CiYjNDM7CXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7CiAJYm4tJmd0O2dycF9pbmZvW2dycF9pZHhdLmFnZ19md19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEOwogfQogCkBAIC0yNDM5LDE0ICYjNDM7MjQzNywxNCBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fdHhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJc3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3QgKnJpbmcgPSAmYW1wO3R4ci0mZ3Q7dHhfcmluZ19zdHJ1Y3Q7CiAJdTMyIGNtcGxfcmluZ19pZDsKIAotCWlmIChyaW5nLSZndDtmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRCkKJiM0MzsJaWYgKHJpbmctJmd0O2Z3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKQogCQlyZXR1cm47CiAKIAljbXBsX3JpbmdfaWQgPSBjbG9zZV9wYXRoID8gYm5nZV9jcF9yaW5nX2Zvcl90eCh0eHIpIDoKIAkJICAgICAgIElOVkFMSURfSFdfUklOR19JRDsKIAlod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfVFgsCiAJCQkJY21wbF9yaW5nX2lkKTsKLQlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEOwomIzQzOwlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUOwogfQogCiBzdGF0aWMgdm9pZCBibmdlX2h3cm1fY3BfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sCkBAIC0yNDU1LDEyICYjNDM7MjQ1MywxMiBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fY3BfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJc3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3QgKnJpbmc7CiAKIAlyaW5nID0gJmFtcDtjcHItJmd0O3Jpbmdfc3RydWN0OwotCWlmIChyaW5nLSZndDtmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRCkKJiM0MzsJaWYgKHJpbmctJmd0O2Z3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKQogCQlyZXR1cm47CiAKIAlod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfTDJfQ01QTCwKIAkJCQlJTlZBTElEX0hXX1JJTkdfSUQpOwotCXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7CiYjNDM7CXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7CiB9CiAKIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibiwgYm9vbCBjbG9zZV9wYXRoKQpAQCAtMjQ5NiwxMSAmIzQzOzI0OTQsMTEgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBib29sIGNsb3NlX3BhdGgpCiAJCQlibmdlX2h3cm1fY3BfcmluZ19mcmVlKGJuLCAmYW1wO25xci0mZ3Q7Y3BfcmluZ19hcnJbal0pOwogCiAJCXJpbmcgPSAmYW1wO25xci0mZ3Q7cmluZ19zdHJ1Y3Q7Ci0JCWlmIChyaW5nLSZndDtmd19yaW5nX2lkICE9IElOVkFMSURfSFdfUklOR19JRCkgewomIzQzOwkJaWYgKHJpbmctJmd0O2Z3X3JpbmdfaWQgIT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKSB7CiAJCQlod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywKIAkJCQkJCVJJTkdfRlJFRV9SRVFfUklOR19UWVBFX05RLAogCQkJCQkJSU5WQUxJRF9IV19SSU5HX0lEKTsKLQkJCXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7CiYjNDM7CQkJcmluZy0mZ3Q7ZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDsKIAkJCWJuLSZndDtncnBfaW5mb1tpXS5ucV9md19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5oCmluZGV4IGY0NjM2YjViMGNmM2YwLi5kMTc3OTE5YzJlMTE3MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuaApAQCAtNjMwLDggJiM0Mzs2MzAsOCBAQCBzdHJ1Y3QgYm5nZV9sMl9maWx0ZXIgewogCXJlZmNvdW50X3QJCXJlZmNudDsKIH07CiAKLXUxNiBibmdlX2NwX3JpbmdfZm9yX3J4KHN0cnVjdCBibmdlX3J4X3JpbmdfaW5mbyAqcnhyKTsKLXUxNiBibmdlX2NwX3JpbmdfZm9yX3R4KHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyKTsKJiM0Mzt1MzIgYm5nZV9jcF9yaW5nX2Zvcl9yeChzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cik7CiYjNDM7dTMyIGJuZ2VfY3BfcmluZ19mb3JfdHgoc3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIpOwogdm9pZCBibmdlX2ZpbGxfaHdfcnNzX3RibChzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV92bmljX2luZm8gKnZuaWMpOwogaW50IGJuZ2VfYWxsb2NfcnhfZGF0YShzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4ciwKIAkJICAgICAgIHUxNiBwcm9kLCBnZnBfdCBnZnApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX3JtZW0uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9ybWVtLmgKaW5kZXggMzQxYzdmODFlZDA5MmIuLmJiMGM3OWExZWU2MGY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2Vfcm1lbS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9ybWVtLmgKQEAgLTE4NCw3ICYjNDM7MTg0LDcgQEAgc3RydWN0IGJuZ2VfY3R4X21lbV9pbmZvIHsKIHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0IHsKIAlzdHJ1Y3QgYm5nZV9yaW5nX21lbV9pbmZvCXJpbmdfbWVtOwogCi0JdTE2CQkJZndfcmluZ19pZDsKJiM0MzsJdTMyCQkJZndfcmluZ19pZDsKIAl1bmlvbiB7CiAJCXUxNgkJZ3JwX2lkeDsKIAkJdTE2CQltYXBfaWR4OyAvKiBVc2VkIGJ5IE5RcyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ibmdlL2hzaS5oIGIvaW5jbHVkZS9saW51eC9ibmdlL2hzaS5oCmluZGV4IDhlYTEzZDU0MDdlZWNkLi4xZjdiZDk2NDE1YTUyNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9ibmdlL2hzaS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvYm5nZS9oc2kuaApAQCAtODMxNyw4ICYjNDM7ODMxNyw3IEBAIHN0cnVjdCBod3JtX3JpbmdfYWxsb2Nfb3V0cHV0IHsKIAlfX2xlMTYJcmVxX3R5cGU7CiAJX19sZTE2CXNlcV9pZDsKIAlfX2xlMTYJcmVzcF9sZW47Ci0JX19sZTE2CXJpbmdfaWQ7Ci0JX19sZTE2CWxvZ2ljYWxfcmluZ19pZDsKJiM0MzsJX19sZTMyCXJpbmdfaWQ7CiAJdTgJcHVzaF9idWZmZXJfaW5kZXg7CiAJI2RlZmluZSBSSU5HX0FMTE9DX1JFU1BfUFVTSF9CVUZGRVJfSU5ERVhfUElOR19CVUZGRVIgMHgwVUwKIAkjZGVmaW5lIFJJTkdfQUxMT0NfUkVTUF9QVVNIX0JVRkZFUl9JTkRFWF9QT05HX0JVRkZFUiAweDFVTApAQCAtODM0NSwxMCAmIzQzOzgzNDQsMTAgQEAgc3RydWN0IGh3cm1fcmluZ19mcmVlX2lucHV0IHsKIAl1OAlmbGFnczsKIAkjZGVmaW5lIFJJTkdfRlJFRV9SRVFfRkxBR1NfVklSVElPX1JJTkdfVkFMSUQgMHgxVUwKIAkjZGVmaW5lIFJJTkdfRlJFRV9SRVFfRkxBR1NfTEFTVCAgICAgICAgICAgICBSSU5HX0ZSRUVfUkVRX0ZMQUdTX1ZJUlRJT19SSU5HX1ZBTElECi0JX19sZTE2CXJpbmdfaWQ7CiYjNDM7CV9fbGUxNgl1bnVzZWRfMTsKIAlfX2xlMzIJcHJvZF9pZHg7CiAJX19sZTMyCW9wYXF1ZTsKLQlfX2xlMzIJdW51c2VkXzE7CiYjNDM7CV9fbGUzMglyaW5nX2lkOwogfTsKIAogLyogaHdybV9yaW5nX2ZyZWVfb3V0cHV0IChzaXplOjEyOGIvMTZCKSAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDc0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJyb2FkY29tIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gSXQgc2VlbXMgbGlrZSB3ZSYjMzk7cmUgZXhwYW5kaW5nIHRoZSBgZndfcmluZ19pZGAgZmllbGQgZnJvbSBhIGB1MTZgIHRvIGEgYHUzMmAgd2l0aGluIHRoZSBCcm9hZGNvbSBCTkdFIGRyaXZlci4gVGhhdCYjMzk7cyBhIHNpZ25pZmljYW50IGNoYW5nZSwgcG90ZW50aWFsbHkgaW5kaWNhdGluZyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgbXVjaCBsYXJnZXIgbnVtYmVyIG9mIHJpbmdzIGJlaW5nIGFsbG9jYXRlZC4gVGhlIHRhcmdldCBkaXJlY3RvcmllcyBhcmUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYCBhbmQgYGRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYCwgc28gdGhhdCYjMzk7cyB3aGVyZSB0aGUgY29yZSBtb2RpZmljYXRpb25zIGFyZS4gSXQmIzM5O3MgdG91Y2hpbmcgdGhlIGBibmdlX3Jpbmdfc3RydWN0YCBzdHJ1Y3R1cmUgYW5kIHRoZSBpbnZhbGlkIElEIGRlZmluaXRpb25zLiBBbHNvLCBpdCYjMzk7cyBtb2RpZnlpbmcgdGhlIGBod3JtX3JpbmdfYWxsb2Nfb3V0cHV0YCBhbmQgYGh3cm1fcmluZ19mcmVlX2lucHV0YCBzdHJ1Y3R1cmVzLCB3aGljaCBhcmUgY3JpdGljYWwgZm9yIHRoZSBoYXJkd2FyZSByZXNvdXJjZSBtYW5hZ2VtZW50LgoKQnV0IHdhaXQgYSBtaW51dGUuLi4gYGJuZ2VgPyBUaGF0IGRvZXNuJiMzOTt0IGltbWVkaWF0ZWx5IHJpbmcgYSBiZWxsLiBNeSBleHBlcmllbmNlIHdpdGggQnJvYWRjb20gbmV0d29yayBkcml2ZXJzIHVzdWFsbHkgaW52b2x2ZXMgYGJueHRgIGZvciBOZXRYdHJlbWUtQy9FLCBvciB0aGUgb2xkZXIgYGJueDJgIGFuZCBgYm54MnhgLiBgYm5nZWAgZmVlbHMgdW51c3VhbC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgaXMgYW4gYWN0dWFsIGRyaXZlci4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHNlYXJjaCB0aGUga2VybmVsIHRyZWUgdG8gY29uZmlybSB0aGF0IGBibmdlYCBpcywgaW5kZWVkLCBhIGxlZ2l0aW1hdGUgQnJvYWRjb20gZHJpdmVyLiBUaGlzIGlzIGEgY3J1Y2lhbCBmaXJzdCBzdGVwOyBJIGRvbiYjMzk7dCB3YW50IHRvIHdhc3RlIHRpbWUgYW5hbHl6aW5nIHNvbWV0aGluZyB0aGF0IGRvZXNuJiMzOTt0IGV2ZW4gZXhpc3Qgb3IgaXMgbWlzbGFiZWxlZC4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE1OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JuZ2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDYxMjAgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL01ha2VmaWxlPTIwPW9iai0kKENPTkZJR19CQ01BU1ApICYjNDM7PSBhc3AyL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vTWFrZWZpbGU6MjE6b2JqLSQoQ09ORklHX0JOR0UpICYjNDM7PSBibmdlL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvTWFrZWZpbGU9Mz1vYmotJChDT05GSUdfQk5HRSkgJiM0Mzs9IGJuZ19lbi5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL01ha2VmaWxlLTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL01ha2VmaWxlOjU6Ym5nX2VuLXkgOj0gYm5nZV9jb3JlLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvTWFrZWZpbGU6NjpcdCAgICBibmdlX2RldmxpbmsubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9NYWtlZmlsZTo3Olx0ICAgIGJuZ2VfaHdybS5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL01ha2VmaWxlOjg6XHQgICAgYm5nZV9od3JtX2xpYi5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL01ha2VmaWxlOjk6XHQgICAgYm5nZV9ybWVtLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvTWFrZWZpbGU6MTA6XHQgICAgYm5nZV9yZXNjLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvTWFrZWZpbGU6MTE6XHQgICAgYm5nZV9uZXRkZXYubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9NYWtlZmlsZToxMjpcdCAgICBibmdlX2V0aHRvb2wubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9NYWtlZmlsZToxMzpcdCAgICBibmdlX2F1eHIubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9NYWtlZmlsZToxNDpcdCAgICBibmdlX3R4cngubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9NYWtlZmlsZToxNTpcdCAgICBibmdlX2xpbmsub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTEwLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2V0aGVyZGV2aWNlLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjExOiNpbmNsdWRlIFx1MDAzY2xpbnV4L2JuZ2UvaHNpLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjEyOiNpbmNsdWRlIFwmIzM0O2JuZ2Vfcm1lbS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaDoxMzojaW5jbHVkZSBcJiMzNDtibmdlX3Jlc2MuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MTQ6I2luY2x1ZGUgXCYjMzQ7Ym5nZV9hdXhyLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTE1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTE5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MjA6ZXh0ZXJuIGNoYXIgYm5nZV9kcml2ZXJfbmFtZVtdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaD0yMj1lbnVtIGJvYXJkX2lkeCB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaDoyNjpzdHJ1Y3QgYm5nZV9hdXhyX3ByaXYge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjctXHRzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSBhdXhfZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6Mjg6XHRzdHJ1Y3QgYm5nZV9hdXhyX2RldiAqYXV4cl9kZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0yOS1cdGludCBpZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0zMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjMyOnN0cnVjdCBibmdlX3BmX2luZm8ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMzMtXHR1MTZcdGZ3X2ZpZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaD04MT1lbnVtIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC05Mi0jZGVmaW5lIEJOR0VfTUFYX1FVRVVFXHRcdDhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjkzOnN0cnVjdCBibmdlX3F1ZXVlX2luZm8ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtOTQtXHR1OCAgICAgIHF1ZXVlX2lkO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTEwMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjEwMzpzdHJ1Y3QgYm5nZV9kZXYge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMTA0LVx0c3RydWN0IGRldmljZVx0KmRldjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0xNDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaDoxNDU6XHRzdHJ1Y3QgYm5nZV9wZl9pbmZvXHRwZjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTE0Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0xNTMtXHQvKiBCYWNraW5nIHN0b3JlcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MTU0Olx0c3RydWN0IGJuZ2VfY3R4X21lbV9pbmZvXHQqY3R4O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMTU1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTE1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjE1ODpcdHN0cnVjdCBibmdlX2h3X3Jlc2NcdGh3X3Jlc2M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0xNTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjA0LVx0dThcdFx0XHRtYXhfbGx0YztcdC8qIGxvc3NsZXNzIFRDcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MjA1Olx0c3RydWN0IGJuZ2VfcXVldWVfaW5mb1x0cV9pbmZvW0JOR0VfTUFYX1FVRVVFXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTIwNi1cdHU4XHRcdFx0dGNfdG9fcWlkeFtCTkdFX01BWF9RVUVVRV07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MjExOlx0c3RydWN0IGJuZ2VfaXJxXHRcdCppcnFfdGJsO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjEyLVx0dTE2XHRcdFx0aXJxc19hY3F1aXJlZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTIxMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjIxNDpcdHN0cnVjdCBibmdlX2F1eHJfcHJpdlx0KmF1eF9wcml2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MjE1Olx0c3RydWN0IGJuZ2VfYXV4cl9kZXZcdCphdXhyX2RldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTIxNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjIxNzpcdHN0cnVjdCBibmdlX2xpbmtfaW5mb1x0bGlua19pbmZvO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjE4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTIyMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjIyMzpzdGF0aWMgaW5saW5lIGJvb2wgYm5nZV9pc19yb2NlX2VuKHN0cnVjdCBibmdlX2RldiAqYmQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0yMjQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTIyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjIyODpzdGF0aWMgaW5saW5lIGJvb2wgYm5nZV9pc19hZ2dfcmVxZChzdHJ1Y3QgYm5nZV9kZXYgKmJkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjI5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTIzMC1cdGlmIChiZC1cdTAwM2VuZXRkZXYpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjIzMTpcdFx0c3RydWN0IGJuZ2VfbmV0ICpibiA9IG5ldGRldl9wcml2KGJkLVx1MDAzZW5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0yMzItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MjQzOnN0YXRpYyBpbmxpbmUgdm9pZCBibmdlX3dyaXRlcShzdHJ1Y3QgYm5nZV9kZXYgKmJkLCB1NjQgdmFsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjQ0LVx0XHRcdCAgICAgICB2b2lkIF9faW9tZW0gKmFkZHIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjU1LS8qIEZvciBUWCBhbmQgUlggcmluZyBkb29yYmVsbHMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjI1NjpzdGF0aWMgaW5saW5lIHZvaWQgYm5nZV9kYl93cml0ZShzdHJ1Y3QgYm5nZV9kZXYgKmJkLCBzdHJ1Y3QgYm5nZV9kYl9pbmZvICpkYixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTI1Ny1cdFx0XHRcdCB1MzIgaWR4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjU4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjI1OTpcdGJuZ2Vfd3JpdGVxKGJkLCBkYi1cdTAwM2VkYl9rZXk2NCB8IERCX1JJTkdfSURYKGRiLCBpZHgpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjYwLVx0XHQgICAgZGItXHUwMDNlZG9vcmJlbGwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTI2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjI2Mzpib29sIGJuZ2VfYXV4X3JlZ2lzdGVyZWQoc3RydWN0IGJuZ2VfZGV2ICpiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaDoyNjQ6dTE2IGJuZ2VfYXV4X2dldF9tc2l4KHN0cnVjdCBibmdlX2RldiAqYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjY1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTYtI2luY2x1ZGUgXHUwMDNjbGludXgvYXV4aWxpYXJ5X2J1cy5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjE3OiNpbmNsdWRlIFx1MDAzY2xpbnV4L2JuZ2UvaHNpLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjE5OiNpbmNsdWRlIFwmIzM0O2JuZ2UuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoyMDojaW5jbHVkZSBcJiMzNDtibmdlX2h3cm0uaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoyMTojaW5jbHVkZSBcJiMzNDtibmdlX2F1eHIuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0yMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MjM6c3RhdGljIERFRklORV9JREEoYm5nZV9hdXhfZGV2X2lkcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoyNTpzdGF0aWMgdm9pZCBibmdlX2ZpbGxfbXNpeF92ZWNzKHN0cnVjdCBibmdlX2RldiAqYmQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjI2Olx0XHRcdFx0c3RydWN0IGJuZ2VfbXNpeF9pbmZvICppbmZvKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0yNy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjI4Olx0c3RydWN0IGJuZ2VfYXV4cl9kZXYgKmF1eHJfZGV2ID0gYmQtXHUwMDNlYXV4cl9kZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTI5LVx0aW50IG51bV9tc2l4LCBpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtNDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjQzOmludCBibmdlX3JlZ2lzdGVyX2RldihzdHJ1Y3QgYm5nZV9hdXhyX2RldiAqYXV4cl9kZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTQ0LVx0XHQgICAgICB2b2lkICpoYW5kbGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTQ1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6NDY6XHRzdHJ1Y3QgYm5nZV9kZXYgKmJkID0gcGNpX2dldF9kcnZkYXRhKGF1eHJfZGV2LVx1MDAzZXBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzo0NzpcdHN0cnVjdCBibmdlX2F1eHJfaW5mbyAqYXV4cl9pbmZvO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy00OC1cdGludCByYyA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy01Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6NTc6XHRpZiAoIWJuZ2VfYXV4X2hhc19lbm91Z2hfcmVzb3VyY2VzKGJkKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy01OC1cdFx0cmMgPSAtRU5PTUVNO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjY3Olx0Ym5nZV9maWxsX21zaXhfdmVjcyhiZCwgYmQtXHUwMDNlYXV4cl9kZXYtXHUwMDNlbXNpeF9pbmZvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtNjgtXHRhdXhyX2Rldi1cdTAwM2VmbGFncyB8PSBCTkdFX0FSREVWX01TSVhfQUxMT0M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy03NC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjc1OkVYUE9SVF9TWU1CT0woYm5nZV9yZWdpc3Rlcl9kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy03Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6Nzc6dm9pZCBibmdlX3VucmVnaXN0ZXJfZGV2KHN0cnVjdCBibmdlX2F1eHJfZGV2ICphdXhyX2RldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtNzgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzo3OTpcdHN0cnVjdCBibmdlX2RldiAqYmQgPSBwY2lfZ2V0X2RydmRhdGEoYXV4cl9kZXYtXHUwMDNlcGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjgwOlx0c3RydWN0IGJuZ2VfYXV4cl9pbmZvICphdXhyX2luZm87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTgxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtOTEtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzo5MjpFWFBPUlRfU1lNQk9MKGJuZ2VfdW5yZWdpc3Rlcl9kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy05My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6OTQ6aW50IGJuZ2Vfc2VuZF9tc2coc3RydWN0IGJuZ2VfYXV4cl9kZXYgKmF1eHJfZGV2LCBzdHJ1Y3QgYm5nZV9md19tc2cgKmZ3X21zZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtOTUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzo5NjpcdHN0cnVjdCBibmdlX2RldiAqYmQgPSBwY2lfZ2V0X2RydmRhdGEoYXV4cl9kZXYtXHUwMDNlcGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTk3LVx0c3RydWN0IG91dHB1dCAqcmVzcDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTEwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MTAyOlx0cmMgPSBibmdlX2h3cm1fcmVxX2luaXQoYmQsIHJlcSwgMCAvKiBkb24mIzM5O3QgY2FyZSAqLyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTEwMy1cdGlmIChyYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTEwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MTA2Olx0cmMgPSBibmdlX2h3cm1fcmVxX3JlcGxhY2UoYmQsIHJlcSwgZndfbXNnLVx1MDAzZW1zZywgZndfbXNnLVx1MDAzZW1zZ19sZW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0xMDctXHRpZiAocmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0xMDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjExMDpcdGJuZ2VfaHdybV9yZXFfdGltZW91dChiZCwgcmVxLCBmd19tc2ctXHUwMDNldGltZW91dCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjExMTpcdHJlc3AgPSBibmdlX2h3cm1fcmVxX2hvbGQoYmQsIHJlcSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjExMjpcdHJjID0gYm5nZV9od3JtX3JlcV9zZW5kKGJkLCByZXEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0xMTMtXHRyZXNwX2xlbiA9IGxlMTZfdG9fY3B1KHJlc3AtXHUwMDNlcmVzcF9sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTIwLWRyb3BfcmVxOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoxMjE6XHRibmdlX2h3cm1fcmVxX2Ryb3AoYmQsIHJlcSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTEyMi1cdHJldHVybiByYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTIzLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MTI0OkVYUE9SVF9TWU1CT0woYm5nZV9zZW5kX21zZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTEyNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MTI2OnZvaWQgYm5nZV9yZG1hX2F1eF9kZXZpY2VfdW5pbml0KHN0cnVjdCBibmdlX2RldiAqYmQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTEyNy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjEyODpcdHN0cnVjdCBibmdlX2F1eHJfcHJpdiAqYXV4X3ByaXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTEyOS1cdHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTM5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoxNDA6c3RhdGljIHZvaWQgYm5nZV9hdXhfZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0xNDEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoxNDI6XHRzdHJ1Y3QgYm5nZV9hdXhyX3ByaXYgKmF1eF9wcml2ID1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MTQzOlx0XHRcdGNvbnRhaW5lcl9vZihkZXYsIHN0cnVjdCBibmdlX2F1eHJfcHJpdiwgYXV4X2Rldi5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoxNDQ6XHRzdHJ1Y3QgYm5nZV9kZXYgKmJkID0gcGNpX2dldF9kcnZkYXRhKGF1eF9wcml2LVx1MDAzZWF1eHJfZGV2LVx1MDAzZXBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0xNDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjE0NjpcdGlkYV9mcmVlKFx1MDAyNmJuZ2VfYXV4X2Rldl9pZHMsIGF1eF9wcml2LVx1MDAzZWlkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTQ3LVx0a2ZyZWUoYXV4X3ByaXYtXHUwMDNlYXV4cl9kZXYtXHUwMDNlYXV4cl9pbmZvKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTE1My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MTU0OnZvaWQgYm5nZV9yZG1hX2F1eF9kZXZpY2VfZGVsKHN0cnVjdCBibmdlX2RldiAqYmQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTE1NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0xNjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjE2MjpzdGF0aWMgdm9pZCBibmdlX3NldF9hdXhyX2Rldl9pbmZvKHN0cnVjdCBibmdlX2F1eHJfZGV2ICphdXhyX2RldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MTYzOlx0XHRcdFx0ICAgc3RydWN0IGJuZ2VfZGV2ICpiZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTY0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTE4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MTgzOnZvaWQgYm5nZV9yZG1hX2F1eF9kZXZpY2VfYWRkKHN0cnVjdCBibmdlX2RldiAqYmQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTE4NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0yMDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjIwMzp2b2lkIGJuZ2VfcmRtYV9hdXhfZGV2aWNlX2luaXQoc3RydWN0IGJuZ2VfZGV2ICpiZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMjA0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMjA1LVx0c3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmF1eF9kZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjIwNjpcdHN0cnVjdCBibmdlX2F1eHJfaW5mbyAqYXV4cl9pbmZvO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoyMDc6XHRzdHJ1Y3QgYm5nZV9hdXhyX3ByaXYgKmF1eF9wcml2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoyMDg6XHRzdHJ1Y3QgYm5nZV9hdXhyX2RldiAqYXV4cl9kZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTIwOS1cdGludCByYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMjEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoyMTE6XHRpZiAoIWJuZ2VfaXNfcm9jZV9lbihiZCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTIxMi1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMjE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoyMTg6XHRhdXhfcHJpdi1cdTAwM2VpZCA9IGlkYV9hbGxvYyhcdTAwMjZibmdlX2F1eF9kZXZfaWRzLCBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMjE5LVx0aWYgKGF1eF9wcml2LVx1MDAzZWlkIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0yMjgtXHRhdXhfZGV2LVx1MDAzZWRldi5wYXJlbnQgPSBcdTAwMjZiZC1cdTAwM2VwZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MjI5Olx0YXV4X2Rldi1cdTAwM2VkZXYucmVsZWFzZSA9IGJuZ2VfYXV4X2Rldl9yZWxlYXNlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0yMzAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0yMzItXHRpZiAocmMpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MjMzOlx0XHRpZGFfZnJlZShcdTAwMjZibmdlX2F1eF9kZXZfaWRzLCBhdXhfcHJpdi1cdTAwM2VpZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTIzNC1cdFx0a2ZyZWUoYXV4X3ByaXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMjUwLVx0YmQtXHUwMDNlYXV4cl9kZXYgPSBhdXhyX2RldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MjUxOlx0Ym5nZV9zZXRfYXV4cl9kZXZfaW5mbyhhdXhyX2RldiwgYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0yNTItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaD0xND1zdHJ1Y3QgaHdybV9hc3luY19ldmVudF9jbXBsO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaDoxNTpzdHJ1Y3QgYm5nZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmgtMTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oOjE3OnN0cnVjdCBibmdlX21zaXhfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oLTE4LVx0dTMyXHR2ZWN0b3I7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaC0yMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmg6MjM6c3RydWN0IGJuZ2VfZndfbXNnIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmgtMjQtXHR2b2lkXHQqbXNnO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmgtMzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oOjMxOnN0cnVjdCBibmdlX2F1eHJfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oLTMyLVx0dm9pZFx0XHQqaGFuZGxlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmg9MzY9ZW51bSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaC00NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmg6NDU6c3RydWN0IGJuZ2VfYXV4cl9kZXYge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaC00Ni1cdHN0cnVjdCBuZXRfZGV2aWNlXHQqbmV0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmgtNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oOjUwOlx0c3RydWN0IGJuZ2VfbXNpeF9pbmZvXHRtc2l4X2luZm9bQk5HRV9NQVhfUk9DRV9NU0lYXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmgtNTEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaC01My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmg6NTQ6XHRzdHJ1Y3QgYm5nZV9hdXhyX2luZm9cdCphdXhyX2luZm87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oLTU1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmgtNzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oOjc1OnZvaWQgYm5nZV9yZG1hX2F1eF9kZXZpY2VfdW5pbml0KHN0cnVjdCBibmdlX2RldiAqYmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oOjc2OnZvaWQgYm5nZV9yZG1hX2F1eF9kZXZpY2VfZGVsKHN0cnVjdCBibmdlX2RldiAqYmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oOjc3OnZvaWQgYm5nZV9yZG1hX2F1eF9kZXZpY2VfYWRkKHN0cnVjdCBibmdlX2RldiAqYmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oOjc4OnZvaWQgYm5nZV9yZG1hX2F1eF9kZXZpY2VfaW5pdChzdHJ1Y3QgYm5nZV9kZXYgKmJkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaDo3OTppbnQgYm5nZV9yZWdpc3Rlcl9kZXYoc3RydWN0IGJuZ2VfYXV4cl9kZXYgKmFkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oLTgwLVx0XHQgICAgICB2b2lkICpoYW5kbGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaDo4MTp2b2lkIGJuZ2VfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IGJuZ2VfYXV4cl9kZXYgKmFkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaDo4MjppbnQgYm5nZV9zZW5kX21zZyhzdHJ1Y3QgYm5nZV9hdXhyX2RldiAqYWRldiwgc3RydWN0IGJuZ2VfZndfbXNnICpmd19tc2cpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaC04My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjk6I2luY2x1ZGUgXCYjMzQ7Ym5nZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjEwOiNpbmNsdWRlIFwmIzM0O2JuZ2VfZGV2bGluay5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjExOiNpbmNsdWRlIFwmIzM0O2JuZ2VfaHdybS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjEyOiNpbmNsdWRlIFwmIzM0O2JuZ2VfaHdybV9saWIuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoxMzojaW5jbHVkZSBcJiMzNDtibmdlX2xpbmsuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jPTE2PU1PRFVMRV9ERVNDUklQVElPTihEUlZfU1VNTUFSWSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoxODpjaGFyIGJuZ2VfZHJpdmVyX25hbWVbXSA9IERSVl9OQU1FO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM9MjA9c3RhdGljIGNvbnN0IHN0cnVjdCB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MjY6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGJuZ2VfcGNpX3RibFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yNy1cdHsgUENJX1ZERVZJQ0UoQlJPQURDT00sIDB4MTc4MCksIC5kcml2ZXJfZGF0YSA9IEJDTTU3NzA4IH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zMC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozMTpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgYm5nZV9wY2lfdGJsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjMzOnN0YXRpYyB2b2lkIGJuZ2VfcHJpbnRfZGV2aWNlX2luZm8oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGVudW0gYm9hcmRfaWR4IGlkeClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtNDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjQzOmJvb2wgYm5nZV9hdXhfcmVnaXN0ZXJlZChzdHJ1Y3QgYm5nZV9kZXYgKmJkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy00NC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjQ1Olx0c3RydWN0IGJuZ2VfYXV4cl9kZXYgKmJhX2RldiA9IGJkLVx1MDAzZWF1eHJfZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy00Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzo1MzpzdGF0aWMgdm9pZCBibmdlX252bV9jZmdfdmVyX2dldChzdHJ1Y3QgYm5nZV9kZXYgKmJkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy01NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy01Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6NTc6XHRpZiAoIWJuZ2VfaHdybV9udm1fZGV2X2luZm8oYmQsIFx1MDAyNm52bV9pbmZvKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtNTgtXHRcdHNucHJpbnRmKGJkLVx1MDAzZW52bV9jZmdfdmVyLCBGV19WRVJfU1RSX0xFTiwgXCYjMzQ7JWQuJWQuJWRcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy02Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6NjM6c3RhdGljIGludCBibmdlX2Z1bmNfcWNhcHMoc3RydWN0IGJuZ2VfZGV2ICpiZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtNjQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjY3Olx0cmMgPSBibmdlX2h3cm1fZnVuY19xY2FwcyhiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTY4LVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtNzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjcxOlx0cmMgPSBibmdlX2h3cm1fcXVldWVfcXBvcnRjZmcoYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy03Mi1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtNzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjgwOnN0YXRpYyBpbnQgYm5nZV9mdW5jX3FyY2Fwc19xY2ZnKHN0cnVjdCBibmdlX2RldiAqYmQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTgxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTgzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzo4NDpcdHJjID0gYm5nZV9od3JtX2Z1bmNfcmVzY19xY2FwcyhiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTg1LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy04OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6OTA6XHRyYyA9IGJuZ2VfaHdybV9mdW5jX3FjZmcoYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy05MS1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtOTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjk2Olx0cmMgPSBibmdlX2h3cm1fdm5pY19xY2FwcyhiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTk3LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xMDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjEwNTpzdGF0aWMgdm9pZCBibmdlX2Z3X3VucmVnaXN0ZXJfZGV2KHN0cnVjdCBibmdlX2RldiAqYmQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTEwNi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTEwNy1cdC8qIGN0eCBtZW0gZnJlZSBhZnRlciB1bnJndHIgb25seSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoxMDg6XHRibmdlX2h3cm1fZnVuY19kcnZfdW5yZ3RyKGJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTA5Olx0Ym5nZV9mcmVlX2N0eF9tZW0oYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xMTAtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjExMjpzdGF0aWMgdm9pZCBibmdlX3NldF9kZmx0X3Jzc19oYXNoX3R5cGUoc3RydWN0IGJuZ2VfZGV2ICpiZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTEzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTEyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTIyOnN0YXRpYyBpbnQgYm5nZV9md19yZWdpc3Rlcl9kZXYoc3RydWN0IGJuZ2VfZGV2ICpiZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTIzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTEyNi1cdGJkLVx1MDAzZWZ3X2NhcCA9IDA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjEyNzpcdHJjID0gYm5nZV9od3JtX3Zlcl9nZXQoYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xMjgtXHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTEzMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTMzOlx0Ym5nZV9udm1fY2ZnX3Zlcl9nZXQoYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xMzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjEzNTpcdHJjID0gYm5nZV9od3JtX2Z1bmNfcmVzZXQoYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xMzYtXHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTE0MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTQxOlx0Ym5nZV9od3JtX2Z3X3NldF90aW1lKGJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xNDMtXHQvKiBHZXQgdGhlIHJlc291cmNlcyBhbmQgY29uZmlndXJhdGlvbiBmcm9tIGZpcm13YXJlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjE0NDpcdHJjID0gYm5nZV9mdW5jX3FjYXBzKGJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTQ1LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjE1MDpcdHJjID0gYm5nZV9hbGxvY19jdHhfbWVtKGJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTUxLVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xNTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjE1NjpcdHJjID0gYm5nZV9od3JtX2Z1bmNfZHJ2X3JndHIoYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xNTctXHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTE2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTYyOlx0cmMgPSBibmdlX2Z1bmNfcXJjYXBzX3FjZmcoYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xNjMtXHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTE2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTY4Olx0Ym5nZV9zZXRfZGZsdF9yc3NfaGFzaF90eXBlKGJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTY5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTcyLWVycl9mdW5jX3Vucmd0cjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTczOlx0Ym5nZV9od3JtX2Z1bmNfZHJ2X3Vucmd0cihiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTE3NC1lcnJfZnJlZV9jdHhfbWVtOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoxNzU6XHRibmdlX2ZyZWVfY3R4X21lbShiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTE3Ni1cdHJldHVybiByYztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTE3OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTc5OnN0YXRpYyB2b2lkIGJuZ2VfcGNpX2Rpc2FibGUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTE4MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjE4NjpzdGF0aWMgaW50IGJuZ2VfcGNpX2VuYWJsZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTg3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTIwMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MjAzOlx0cmMgPSBwY2lfcmVxdWVzdF9yZWdpb25zKHBkZXYsIGJuZ2VfZHJpdmVyX25hbWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yMDQtXHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTIxOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MjIwOnN0YXRpYyB2b2lkIGJuZ2VfdW5tYXBfYmFycyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjIxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MjIyOlx0c3RydWN0IGJuZ2VfZGV2ICpiZCA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjIzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoyMzU6c3RhdGljIHZvaWQgYm5nZV9zZXRfbWF4X2Z1bmNfaXJxcyhzdHJ1Y3QgYm5nZV9kZXYgKmJkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yMzYtXHRcdFx0XHQgICB1bnNpZ25lZCBpbnQgbWF4X2lycXMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yNDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjI0MTpzdGF0aWMgaW50IGJuZ2VfZ2V0X21heF9pcnEoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTI0Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yNDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjI0OTpzdGF0aWMgaW50IGJuZ2VfbWFwX2RiX2JhcihzdHJ1Y3QgYm5nZV9kZXYgKmJkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yNTAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoyNjE6c3RhdGljIGludCBibmdlX3Byb2JlX29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjYyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjYzLVx0dW5zaWduZWQgaW50IG1heF9pcnFzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoyNjQ6XHRzdHJ1Y3QgYm5nZV9kZXYgKmJkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yNjUtXHRpbnQgcmM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yNzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjI4MDpcdHJjID0gYm5nZV9wY2lfZW5hYmxlKHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yODEtXHRpZiAocmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjI4NDpcdGJuZ2VfcHJpbnRfZGV2aWNlX2luZm8ocGRldiwgZW50LVx1MDAzZWRyaXZlcl9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoyODY6XHRiZCA9IGJuZ2VfZGV2bGlua19hbGxvYyhwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjg3LVx0aWYgKCFiZCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjk5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozMDA6XHRyYyA9IGJuZ2VfaW5pdF9od3JtX3Jlc291cmNlcyhiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTMwMS1cdGlmIChyYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTMwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MzA0Olx0cmMgPSBibmdlX2Z3X3JlZ2lzdGVyX2RldihiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTMwNS1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzA5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozMTA6XHRibmdlX2RldmxpbmtfcmVnaXN0ZXIoYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjMxMjpcdG1heF9pcnFzID0gYm5nZV9nZXRfbWF4X2lycShwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MzEzOlx0Ym5nZV9zZXRfbWF4X2Z1bmNfaXJxcyhiZCwgbWF4X2lycXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zMTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjMxNTpcdGJuZ2VfYXV4X2luaXRfZGZsdF9jb25maWcoYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zMTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjMxNzpcdHJjID0gYm5nZV9uZXRfaW5pdF9kZmx0X2NvbmZpZyhiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTMxOC1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzIzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozMjQ6XHRyYyA9IGJuZ2VfbWFwX2RiX2JhcihiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTMyNS1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozMzU6XHRibmdlX3JkbWFfYXV4X2RldmljZV9pbml0KGJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozMzc6XHRyYyA9IGJuZ2VfYWxsb2NfaXJxcyhiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTMzOC1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozNDM6XHRyYyA9IGJuZ2VfbmV0ZGV2X2FsbG9jKGJkLCBtYXhfaXJxcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM0NC1cdGlmIChyYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM0Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MzQ3Olx0Ym5nZV9yZG1hX2F1eF9kZXZpY2VfYWRkKGJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzQ4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzUzLWVycl9mcmVlX2lycTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MzU0Olx0Ym5nZV9mcmVlX2lycXMoYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM1Ni1lcnJfdW5pbml0X2F1eHI6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjM1NzpcdGJuZ2VfcmRtYV9hdXhfZGV2aWNlX3VuaW5pdChiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM1OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzU5LWVycl9jb25maWdfdW5pbml0OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozNjA6XHRibmdlX25ldF91bmluaXRfZGZsdF9jb25maWcoYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM2Mi1lcnJfZndfcmVnOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozNjM6XHRibmdlX2RldmxpbmtfdW5yZWdpc3RlcihiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjM2NDpcdGJuZ2VfZndfdW5yZWdpc3Rlcl9kZXYoYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM2Ni1lcnJfaHdybV9jbGVhbnVwOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozNjc6XHRibmdlX2NsZWFudXBfaHdybV9yZXNvdXJjZXMoYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM2OS1lcnJfYmFyX3VubWFwOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozNzA6XHRibmdlX3VubWFwX2JhcnMocGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM3MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzcyLWVycl9kZXZsX2ZyZWU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjM3MzpcdGJuZ2VfZGV2bGlua19mcmVlKGJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzc0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNzUtZXJyX3BjaV9kaXNhYmxlOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozNzY6XHRibmdlX3BjaV9kaXNhYmxlKHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNzctXHRyZXR1cm4gcmM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjM4MDpzdGF0aWMgdm9pZCBibmdlX3JlbW92ZV9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM4MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjM4MjpcdHN0cnVjdCBibmdlX2RldiAqYmQgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM4My1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE1OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNTEwCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRHJpdmVyJiMzOTtzIFByZXNlbmNlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRyaXZlciwgYGJuZ2VgLiBGaXJzdCB0aG91Z2h0IGlzLCAmIzM0O1doZXJlIGRvZXMgdGhpcyBldmVuIGZpdD8gSXMgaXQgYSBzdGFuZGFyZCBkcml2ZXIgaW4gdGhlIG1haW5saW5lIGtlcm5lbCwgcGVyaGFwcyBhIG1vY2sgb3IgYSB0ZXN0IGRyaXZlciwgb3Igc29tZXRoaW5nIHNwZWNpZmljPyYjMzQ7IFRoZW4gSSByZWFsaXplLCAmIzM0O0hhbmcgb24sIGBibmdlYCBkb2VzbiYjMzk7dCBpbW1lZGlhdGVseSByaW5nIGFueSBiZWxscyBmcm9tIHVwc3RyZWFtIExpbnV4LiYjMzQ7IFRoYXQgdHJpZ2dlcnMgYSB0aG91Z2h0OiAmIzM0O0NvdWxkIHRoaXMgYmUgc29tZXRoaW5nIGFkZGVkIGJ5IHN5ei1jbHVzdGVyIGZvciBmdXp6aW5nLCBvciBtYXliZSBpdCYjMzk7cyBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgZGV2ZWxvcG1lbnQgYnJhbmNoPyYjMzQ7CgpBaCwgbm93IHRoZSBjb25mdXNpb24ga2lja3MgaW4uIFRoZSB0ZXh0IGxpc3RzICpkaWZmZXJlbnQqIHBhdGhzIHRoYXQgYXJlIGNoYW5nZWQ6IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfZGV2LmNgICphbmQqIGBkcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuY2AgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuY2AuIFNvbWV0aGluZyBzZWVtcyBpbmNvbnNpc3RlbnQgYWJvdXQgdGhpcywgYnV0Li4uIHdhaXQsIHRoZSBwcm9tcHQgc2F5cyB0aGUgY2hhbmdlcyAqaGF2ZSBhbHJlYWR5KiBiZWVuIGNvbW1pdHRlZCB0byB0aGUgSEVBRC4gT2theSwgc28gdGhhdCBtZWFucyB0aGlzIGRyaXZlciAqZG9lcyogZXhpc3Qgc29tZXdoZXJlIGluIHRoZSB0cmVlLgoKTm93LCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhpcyBpcyBpbmRlZWQgcmVhY2hhYmxlIHRocm91Z2ggY29uZmlndXJhdGlvbi4gRmlyc3QsIGxldCYjMzk7cyBzdGFydCB3aXRoIGBDT05GSUdfQk5HRWAuIFRoYXQgc2hvdWxkIGJlIGEgc3RhbmRhcmQgY29uZmlnIG9wdGlvbi4gTGV0JiMzOTtzIHNlZS4uLiBZdXAsIGFuZCB0aGUgYnVpbGQgc3lzdGVtIHVzZXMgaXQ6IGBvYmotJChDT05GSUdfQk5HRSkgJiM0Mzs9IGJuZ2UvYC4gT2theSwgc28gYGJuZ2VgICpjYW4qIGJlIGJ1aWx0IGlmIGBDT05GSUdfQk5HRWAgaXMgZW5hYmxlZC4gTm93LCBsZXQmIzM5O3MgY2hlY2sgdGhlIG90aGVyIG9uZSwgYENPTkZJR19JTkZJTklCQU5EX0JOR19SRWAuIFRoYXQmIzM5O3MgdGhlIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtibmdfcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvaHcvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA5OTIgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9NYWtlZmlsZT0xNT1vYmotJChDT05GSUdfSU5GSU5JQkFORF9CTlhUX1JFKVx0JiM0Mzs9IGJueHRfcmUvXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX0lORklOSUJBTkRfQk5HX1JFKVx0XHQmIzQzOz0gYm5nX3JlL1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L01ha2VmaWxlLTE3LW9iai0kKENPTkZJR19JTkZJTklCQU5EX0VSRE1BKVx0XHQmIzQzOz0gZXJkbWEvXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9LY29uZmlnPTI9Y29uZmlnIElORklOSUJBTkRfQk5HX1JFXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9LY29uZmlnLTgtXHQgIDUwLzEwMC8yMDAvNDAwLzgwMCBnaWdhYml0IFJvQ0UgSENBcy4gVGhlIG1vZHVsZVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9LY29uZmlnOjk6XHQgIHdpbGwgYmUgY2FsbGVkIGJuZ19yZS4gVG8gY29tcGlsZSB0aGlzIGRyaXZlclxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9LY29uZmlnLTEwLVx0ICBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL01ha2VmaWxlPTI9Y2NmbGFncy15IDo9IC1JICQoc3JjdHJlZSkvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9NYWtlZmlsZS0zLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19JTkZJTklCQU5EX0JOR19SRSkgJiM0Mzs9IGJuZ19yZS5vXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL01ha2VmaWxlLTUtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL01ha2VmaWxlOjY6Ym5nX3JlLXkgOj0gYm5nX2Rldi5vIGJuZ19mdy5vIFxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL01ha2VmaWxlOjc6XHQgICAgYm5nX3Jlcy5vIGJuZ19zcC5vIFxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL01ha2VmaWxlLTgtXHQgICAgYm5nX2RlYnVnZnMub1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYy03LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jOjg6I2luY2x1ZGUgXCYjMzQ7Ym5nX3Jlcy5oXCYjMzQ7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmMtOS0jaW5jbHVkZSBcJiMzNDtibmdfZncuaFwmIzM0O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYy0xMS0jaW5jbHVkZSBcJiMzNDtibmdlX2F1eHIuaFwmIzM0O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jOjEyOiNpbmNsdWRlIFwmIzM0O2JuZ19yZS5oXCYjMzQ7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmMtMTMtI2luY2x1ZGUgXCYjMzQ7Ym5nX2RlYnVnZnMuaFwmIzM0O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jLTE0LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jOjE1OnN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpibmdfcmVfZGVidWdmc19yb290O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jLTE2LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jOjE3OnZvaWQgYm5nX3JlX2RlYnVnZnNfYWRkX3BkZXYoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmMtMTgte1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYy0yMS1cdHJkZXYtXHUwMDNlZGJnX3Jvb3QgPVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jOjIyOlx0XHRkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZGV2X25hbWUoXHUwMDI2cGRldi1cdTAwM2VkZXYpLCBibmdfcmVfZGVidWdmc19yb290KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYy0yMy19XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmMtMjQtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmM6MjU6dm9pZCBibmdfcmVfZGVidWdmc19yZW1fcGRldihzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldilcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYy0yNi17XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jLTMwLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jOjMxOnZvaWQgYm5nX3JlX3JlZ2lzdGVyX2RlYnVnZnModm9pZClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYy0zMi17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmM6MzM6XHRibmdfcmVfZGVidWdmc19yb290ID0gZGVidWdmc19jcmVhdGVfZGlyKFwmIzM0O2JuZ19yZVwmIzM0OywgTlVMTCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmMtMzQtfVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jLTM1LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jOjM2OnZvaWQgYm5nX3JlX3VucmVnaXN0ZXJfZGVidWdmcyh2b2lkKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jLTM3LXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYzozODpcdGRlYnVnZnNfcmVtb3ZlKGJuZ19yZV9kZWJ1Z2ZzX3Jvb3QpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jLTM5LX1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmgtNi1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuaDo3OnZvaWQgYm5nX3JlX2RlYnVnZnNfYWRkX3BkZXYoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5oOjg6dm9pZCBibmdfcmVfZGVidWdmc19yZW1fcGRldihzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmgtOS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuaDoxMDp2b2lkIGJuZ19yZV9yZWdpc3Rlcl9kZWJ1Z2ZzKHZvaWQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5oOjExOnZvaWQgYm5nX3JlX3VucmVnaXN0ZXJfZGVidWdmcyh2b2lkKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuaC0xMi0jZW5kaWZcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy05LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MTA6I2luY2x1ZGUgXCYjMzQ7Ym5nX3Jlcy5oXCYjMzQ7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xMS0jaW5jbHVkZSBcJiMzNDtibmdfc3AuaFwmIzM0O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTE0LSNpbmNsdWRlIFwmIzM0O2JuZ2VfYXV4ci5oXCYjMzQ7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoxNTojaW5jbHVkZSBcJiMzNDtibmdfcmUuaFwmIzM0O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTYtI2luY2x1ZGUgXCYjMzQ7Ym5nZV9od3JtLmhcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYz0yMT1NT0RVTEVfTElDRU5TRShcJiMzNDtEdWFsIEJTRC9HUExcJiMzNDspO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjItXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyMzpzdGF0aWMgc3RydWN0IGJuZ19yZV9kZXYgKmJuZ19yZV9kZXZfYWRkKHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjQtXHRcdFx0XHRcdCBzdHJ1Y3QgYm5nZV9hdXhyX2RldiAqYXV4X2RldilcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTI1LXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjI2Olx0c3RydWN0IGJuZ19yZV9kZXYgKnJkZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yNy1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjI4Olx0LyogQWxsb2NhdGUgYm5nX3JlX2RldiBpbnN0YW5jZSAqL1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6Mjk6XHRyZGV2ID0gaWJfYWxsb2NfZGV2aWNlKGJuZ19yZV9kZXYsIGliZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTMwLVx0aWYgKCFyZGV2KSB7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzozMTpcdFx0cHJfZXJyKFwmIzM0OyVzOiBibmdfcmVfZGV2IGFsbG9jYXRpb24gZmFpbHVyZSFcJiMzNDssIEtCVUlMRF9NT0ROQU1FKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTMyLVx0XHRyZXR1cm4gTlVMTDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00NC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjQ1OnN0YXRpYyBpbnQgYm5nX3JlX3JlZ2lzdGVyX25ldGRldihzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldilcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ2LXtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy01Mi1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjUzOnN0YXRpYyB2b2lkIGJuZ19yZV9kZXN0cm95X2NoaXBfY3R4KHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2KVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNTQte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NTU6XHRzdHJ1Y3QgYm5nX3JlX2NoaXBfY3R4ICpjaGlwX2N0eDtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTU2LVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTYyLVx0cmRldi1cdTAwM2VyY2Z3LnJlcyA9IE5VTEw7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo2MzpcdHJkZXYtXHUwMDNlYm5nX3Jlcy5jY3R4ID0gTlVMTDtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjY0Olx0cmRldi1cdTAwM2VibmdfcmVzLnBkZXYgPSBOVUxMO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNjUtXHRrZnJlZShjaGlwX2N0eCk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNjctXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo2ODpzdGF0aWMgaW50IGJuZ19yZV9zZXR1cF9jaGlwX2N0eChzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldilcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTY5LXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjcwOlx0c3RydWN0IGJuZ19yZV9jaGlwX2N0eCAqY2hpcF9jdHg7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy03MS1cdHN0cnVjdCBibmdlX2F1eHJfZGV2ICphdXhfZGV2O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTc0LVx0YXV4X2RldiA9IHJkZXYtXHUwMDNlYXV4X2RldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjc1Olx0cmRldi1cdTAwM2VibmdfcmVzLnBkZXYgPSBhdXhfZGV2LVx1MDAzZXBkZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo3NjpcdHJkZXYtXHUwMDNlcmNmdy5yZXMgPSBcdTAwMjZyZGV2LVx1MDAzZWJuZ19yZXM7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy03Ny1cdGNoaXBfY3R4ID0ga3phbGxvY19vYmooKmNoaXBfY3R4KTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy04My1cdHJkZXYtXHUwMDNlY2hpcF9jdHggPSBjaGlwX2N0eDtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjg0Olx0cmRldi1cdTAwM2VibmdfcmVzLmNjdHggPSByZGV2LVx1MDAzZWNoaXBfY3R4O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtODUtXHRyZGV2LVx1MDAzZWRldl9hdHRyID0ga3phbGxvY19vYmooKnJkZXYtXHUwMDNlZGV2X2F0dHIpO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTg3LVx0XHRnb3RvIGZyZWVfY2hpcF9jdHg7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo4ODpcdHJkZXYtXHUwMDNlYm5nX3Jlcy5kYXR0ciA9IHJkZXYtXHUwMDNlZGV2X2F0dHI7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy04OS1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy05Ni1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjk3OnN0YXRpYyB2b2lkIGJuZ19yZV9pbml0X2h3cm1faGRyKHN0cnVjdCBpbnB1dCAqaGRyLCB1MTYgb3BjZClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTk4LXtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xMDMtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoxMDQ6c3RhdGljIHZvaWQgYm5nX3JlX2ZpbGxfZndfbXNnKHN0cnVjdCBibmdlX2Z3X21zZyAqZndfbXNnLCB2b2lkICptc2csXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xMDUtXHRcdFx0ICAgICAgIGludCBtc2dfbGVuLCB2b2lkICpyZXNwLCBpbnQgcmVzcF9tYXhfbGVuLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTExNC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjExNTpzdGF0aWMgaW50IGJuZ19yZV9uZXRfcmluZ19mcmVlKHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTE2LVx0XHRcdFx0dTMyIGZ3X3JpbmdfaWQsIGludCB0eXBlKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTEyMy1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjEyNDpcdGJuZ19yZV9pbml0X2h3cm1faGRyKCh2b2lkICopXHUwMDI2cmVxLCBIV1JNX1JJTkdfRlJFRSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xMjUtXHRyZXEucmluZ190eXBlID0gdHlwZTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTEyNi1cdHJlcS5yaW5nX2lkID0gY3B1X3RvX2xlMzIoZndfcmluZ19pZCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoxMjc6XHRibmdfcmVfZmlsbF9md19tc2coXHUwMDI2ZndfbXNnLCAodm9pZCAqKVx1MDAyNnJlcSwgc2l6ZW9mKHJlcSksICh2b2lkICopXHUwMDI2cmVzcCxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTEyOC1cdFx0XHQgICAgc2l6ZW9mKHJlc3ApLCBCTkdFX0RGTFRfSFdSTV9DTURfVElNRU9VVCk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTM1LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MTM2OnN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2FsbG9jKHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MTM3Olx0XHRcdFx0IHN0cnVjdCBibmdfcmVfcmluZ19hdHRyICpyaW5nX2F0dHIsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xMzgtXHRcdFx0XHQgdTE2ICpmd19yaW5nX2lkKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTE0NS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjE0NjpcdGJuZ19yZV9pbml0X2h3cm1faGRyKCh2b2lkICopXHUwMDI2cmVxLCBIV1JNX1JJTkdfQUxMT0MpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTQ3LVx0cmVxLmVuYWJsZXMgPSAwO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTE1OS1cdHJlcS5pbnRfbW9kZSA9IHJpbmdfYXR0ci1cdTAwM2Vtb2RlO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MTYwOlx0Ym5nX3JlX2ZpbGxfZndfbXNnKFx1MDAyNmZ3X21zZywgKHZvaWQgKilcdTAwMjZyZXEsIHNpemVvZihyZXEpLCAodm9pZCAqKVx1MDAyNnJlc3AsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xNjEtXHRcdFx0ICAgc2l6ZW9mKHJlc3ApLCBCTkdFX0RGTFRfSFdSTV9DTURfVElNRU9VVCk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTY4LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MTY5OnN0YXRpYyBpbnQgYm5nX3JlX3N0YXRzX2N0eF9mcmVlKHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2KVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTcwLXtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xNzYtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoxNzc6XHRibmdfcmVfaW5pdF9od3JtX2hkcigodm9pZCAqKVx1MDAyNnJlcSwgSFdSTV9TVEFUX0NUWF9GUkVFKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTE3OC1cdHJlcS5zdGF0X2N0eF9pZCA9IGNwdV90b19sZTMyKHJkZXYtXHUwMDNlc3RhdHNfY3R4LmZ3X2lkKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjE3OTpcdGJuZ19yZV9maWxsX2Z3X21zZyhcdTAwMjZmd19tc2csICh2b2lkICopXHUwMDI2cmVxLCBzaXplb2YocmVxKSwgKHZvaWQgKilcdTAwMjZyZXNwLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTgwLVx0XHRcdCAgIHNpemVvZihyZXNwKSwgQk5HRV9ERkxUX0hXUk1fQ01EX1RJTUVPVVQpO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTE4OC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjE4OTpzdGF0aWMgaW50IGJuZ19yZV9zdGF0c19jdHhfYWxsb2Moc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xOTAte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTkxLVx0c3RydWN0IGJuZ2VfYXV4cl9kZXYgKmF1eF9kZXYgPSByZGV2LVx1MDAzZWF1eF9kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoxOTI6XHRzdHJ1Y3QgYm5nX3JlX3N0YXRzICpzdGF0cyA9IFx1MDAyNnJkZXYtXHUwMDNlc3RhdHNfY3R4O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTkzLVx0c3RydWN0IGh3cm1fc3RhdF9jdHhfYWxsb2Nfb3V0cHV0IHJlc3AgPSB7fTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xOTktXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyMDA6XHRibmdfcmVfaW5pdF9od3JtX2hkcigodm9pZCAqKVx1MDAyNnJlcSwgSFdSTV9TVEFUX0NUWF9BTExPQyk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yMDEtXHRyZXEudXBkYXRlX3BlcmlvZF9tcyA9IGNwdV90b19sZTMyKDEwMDApO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTIwNC1cdHJlcS5zdGF0X2N0eF9mbGFncyA9IFNUQVRfQ1RYX0FMTE9DX1JFUV9TVEFUX0NUWF9GTEFHU19ST0NFO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MjA1Olx0Ym5nX3JlX2ZpbGxfZndfbXNnKFx1MDAyNmZ3X21zZywgKHZvaWQgKilcdTAwMjZyZXEsIHNpemVvZihyZXEpLCAodm9pZCAqKVx1MDAyNnJlc3AsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yMDYtXHRcdFx0ICAgc2l6ZW9mKHJlc3ApLCBCTkdFX0RGTFRfSFdSTV9DTURfVElNRU9VVCk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjEyLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MjEzOnN0YXRpYyBpbnQgYm5nX3JlX3F1ZXJ5X2h3cm1fdmVyc2lvbihzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldilcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTIxNC17XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjE3LVx0c3RydWN0IGh3cm1fdmVyX2dldF9pbnB1dCB2ZXJfZ2V0X3JlcSA9IHt9O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MjE4Olx0c3RydWN0IGJuZ19yZV9jaGlwX2N0eCAqY2N0eDtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTIxOS1cdHN0cnVjdCBibmdlX2Z3X21zZyBmd19tc2cgPSB7fTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yMjEtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyMjI6XHRibmdfcmVfaW5pdF9od3JtX2hkcigodm9pZCAqKVx1MDAyNnZlcl9nZXRfcmVxLCBIV1JNX1ZFUl9HRVQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjIzLVx0dmVyX2dldF9yZXEuaHdybV9pbnRmX21haiA9IEhXUk1fVkVSU0lPTl9NQUpPUjtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yMjUtXHR2ZXJfZ2V0X3JlcS5od3JtX2ludGZfdXBkID0gSFdSTV9WRVJTSU9OX1VQREFURTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjIyNjpcdGJuZ19yZV9maWxsX2Z3X21zZyhcdTAwMjZmd19tc2csICh2b2lkICopXHUwMDI2dmVyX2dldF9yZXEsIHNpemVvZih2ZXJfZ2V0X3JlcSksXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yMjctXHRcdFx0ICAgICh2b2lkICopXHUwMDI2dmVyX2dldF9yZXNwLCBzaXplb2YodmVyX2dldF9yZXNwKSxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yNTAtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyNTE6c3RhdGljIHZvaWQgYm5nX3JlX2Rldl91bmluaXQoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yNTIte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjUzLVx0aW50IHJjO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MjU0Olx0Ym5nX3JlX2RlYnVnZnNfcmVtX3BkZXYocmRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yNTUtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yNTYtXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KEJOR19SRV9GTEFHX1JDRldfQ0hBTk5FTF9FTiwgXHUwMDI2cmRldi1cdTAwM2VmbGFncykpIHtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjI1NzpcdFx0cmMgPSBibmdfcmVfZGVpbml0X3JjZncoXHUwMDI2cmRldi1cdTAwM2VyY2Z3KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTI1OC1cdFx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTI2MC1cdFx0XHRcdCAgIFwmIzM0O0ZhaWxlZCB0byBkZWluaXRpYWxpemUgUkNGVzogJSN4XCYjMzQ7LCByYyk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyNjE6XHRcdGJuZ19yZV9zdGF0c19jdHhfZnJlZShyZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjI2MjpcdFx0Ym5nX3JlX2ZyZWVfc3RhdHNfY3R4X21lbShyZGV2LVx1MDAzZWJuZ19yZXMucGRldiwgXHUwMDI2cmRldi1cdTAwM2VzdGF0c19jdHgpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MjYzOlx0XHRibmdfcmVfZGlzYWJsZV9yY2Z3X2NoYW5uZWwoXHUwMDI2cmRldi1cdTAwM2VyY2Z3KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjI2NDpcdFx0Ym5nX3JlX25ldF9yaW5nX2ZyZWUocmRldiwgcmRldi1cdTAwM2VyY2Z3LmNyZXEucmluZ19pZCxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTI2NS1cdFx0XHQgICAgIFJJTkdfQUxMT0NfUkVRX1JJTkdfVFlQRV9OUSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyNjY6XHRcdGJuZ19yZV9mcmVlX3JjZndfY2hhbm5lbChcdTAwMjZyZGV2LVx1MDAzZXJjZncpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjY3LVx0fVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTI3MC1cdHJkZXYtXHUwMDNlbnFyID0gTlVMTDtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjI3MTpcdGJuZ19yZV9kZXN0cm95X2NoaXBfY3R4KHJkZXYpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjcyLVx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChCTkdfUkVfRkxBR19ORVRERVZfUkVHSVNURVJFRCwgXHUwMDI2cmRldi1cdTAwM2VmbGFncykpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjc1LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6Mjc2OnN0YXRpYyBpbnQgYm5nX3JlX2Rldl9pbml0KHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2KVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjc3LXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjI3ODpcdHN0cnVjdCBibmdfcmVfcmluZ19hdHRyIHJhdHRyID0ge307XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyNzk6XHRzdHJ1Y3QgYm5nX3JlX2NyZXFfY3R4ICpjcmVxO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjgwLVx0dTMyIGRiX29mZnQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjg1LVx0LyogUmVnaXN0ZXJlZCBhIG5ldyBSb0NFIGRldmljZSBpbnN0YW5jZSB0byBuZXRkZXYgKi9cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjI4NjpcdHJjID0gYm5nX3JlX3JlZ2lzdGVyX25ldGRldihyZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTI4Ny1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTMwNC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjMwNTpcdHJjID0gYm5nX3JlX3NldHVwX2NoaXBfY3R4KHJkZXYpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzA2LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzEwLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MzExOlx0cmMgPSBibmdfcmVfcXVlcnlfaHdybV92ZXJzaW9uKHJkZXYpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzEyLVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTMxNC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjMxNTpcdHJjID0gYm5nX3JlX2FsbG9jX2Z3X2NoYW5uZWwoXHUwMDI2cmRldi1cdTAwM2VibmdfcmVzLCBcdTAwMjZyZGV2LVx1MDAzZXJjZncpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzE2LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzQwLVx0cmF0dHIubHJpZCA9IHJkZXYtXHUwMDNlbnFyLVx1MDAzZW1zaXhfZW50cmllc1tCTkdfUkVfQ1JFUV9OUV9JRFhdLnJpbmdfaWR4O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MzQxOlx0cmMgPSBibmdfcmVfbmV0X3JpbmdfYWxsb2MocmRldiwgXHUwMDI2cmF0dHIsIFx1MDAyNmNyZXEtXHUwMDNlcmluZ19pZCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0zNDItXHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0zNDgtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzozNDk6XHRyYyA9IGJuZ19yZV9lbmFibGVfZndfY2hhbm5lbChcdTAwMjZyZGV2LVx1MDAzZXJjZncsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0zNTAtXHRcdFx0XHRcdHZpZCwgZGJfb2ZmdCk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzU2LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MzU3Olx0cmMgPSBibmdfcmVfZ2V0X2Rldl9hdHRyKFx1MDAyNnJkZXYtXHUwMDNlcmNmdyk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0zNTgtXHRpZiAocmMpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzYwLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MzYxOlx0Ym5nX3JlX2RlYnVnZnNfYWRkX3BkZXYocmRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzozNjI6XHRyYyA9IGJuZ19yZV9hbGxvY19zdGF0c19jdHhfbWVtKHJkZXYtXHUwMDNlYm5nX3Jlcy5wZGV2LCByZGV2LVx1MDAzZWNoaXBfY3R4LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzYzLVx0XHRcdFx0XHRcdTAwMjZyZGV2LVx1MDAzZXN0YXRzX2N0eCk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzY5LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MzcwOlx0cmMgPSBibmdfcmVfc3RhdHNfY3R4X2FsbG9jKHJkZXYpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzcxLVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzc2LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6Mzc3Olx0cmMgPSBibmdfcmVfaW5pdF9yY2Z3KFx1MDAyNnJkZXYtXHUwMDNlcmNmdywgXHUwMDI2cmRldi1cdTAwM2VzdGF0c19jdHgpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzc4LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzg2LWZyZWVfc2N0eDpcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjM4NzpcdGJuZ19yZV9zdGF0c19jdHhfZnJlZShyZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTM4OC1mcmVlX3N0YXRzX2N0eDpcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjM4OTpcdGJuZ19yZV9mcmVlX3N0YXRzX2N0eF9tZW0ocmRldi1cdTAwM2VibmdfcmVzLnBkZXYsIFx1MDAyNnJkZXYtXHUwMDNlc3RhdHNfY3R4KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTM5MC1kaXNhYmxlX3JjZnc6XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzozOTE6XHRibmdfcmVfZGlzYWJsZV9yY2Z3X2NoYW5uZWwoXHUwMDI2cmRldi1cdTAwM2VyY2Z3KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTM5Mi1mcmVlX3Jpbmc6XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzozOTM6XHRibmdfcmVfbmV0X3JpbmdfZnJlZShyZGV2LCByZGV2LVx1MDAzZXJjZncuY3JlcS5yaW5nX2lkLCB0eXBlKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTM5NC1mcmVlX3JjZnc6XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzk2LW5xX2FsbG9jX2ZhaWw6XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzozOTc6XHRibmdfcmVfZnJlZV9yY2Z3X2NoYW5uZWwoXHUwMDI2cmRldi1cdTAwM2VyY2Z3KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTM5OC1kZXN0cm95X2NoaXBfY3R4OlxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6Mzk5Olx0Ym5nX3JlX2Rlc3Ryb3lfY2hpcF9jdHgocmRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00MDAtbXNpeF9jdHhfZmFpbDpcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00MDYtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0MDc6c3RhdGljIGludCBibmdfcmVfYWRkX2RldmljZShzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYWRldilcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQwOC17XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDEwLVx0XHRjb250YWluZXJfb2YoYWRldiwgc3RydWN0IGJuZ2VfYXV4cl9wcml2LCBhdXhfZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjQxMTpcdHN0cnVjdCBibmdfcmVfZW5fZGV2X2luZm8gKmRldl9pbmZvO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NDEyOlx0c3RydWN0IGJuZ19yZV9kZXYgKnJkZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00MTMtXHRpbnQgcmM7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDE2LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NDE3Olx0cmRldiA9IGJuZ19yZV9kZXZfYWRkKGFkZXYsIGF1eHJfcHJpdi1cdTAwM2VhdXhyX2Rldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00MTgtXHRpZiAoIXJkZXYpIHtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00MjQtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0MjU6XHRyYyA9IGJuZ19yZV9kZXZfaW5pdChyZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQyNi1cdGlmIChyYylcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00MzctXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0Mzg6c3RhdGljIHZvaWQgYm5nX3JlX3JlbW92ZV9kZXZpY2Uoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00MzktXHRcdFx0XHQgc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmF1eF9kZXYpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00NDAte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NDQxOlx0Ym5nX3JlX2Rldl91bmluaXQocmRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00NDItXHRpYl9kZWFsbG9jX2RldmljZShcdTAwMjZyZGV2LVx1MDAzZWliZGV2KTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00NDUtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0NDY6c3RhdGljIGludCBibmdfcmVfcHJvYmUoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFkZXYsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00NDctXHRcdFx0Y29uc3Qgc3RydWN0IGF1eGlsaWFyeV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ1MC1cdFx0Y29udGFpbmVyX29mKGFkZXYsIHN0cnVjdCBibmdlX2F1eHJfcHJpdiwgYXV4X2Rldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0NTE6XHRzdHJ1Y3QgYm5nX3JlX2VuX2Rldl9pbmZvICplbl9pbmZvO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDUyLVx0aW50IHJjO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ2MS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjQ2MjpcdHJjID0gYm5nX3JlX2FkZF9kZXZpY2UoYWRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00NjMtXHRpZiAocmMpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDY4LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NDY5OnN0YXRpYyB2b2lkIGJuZ19yZV9yZW1vdmUoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFkZXYpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00NzAte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NDcxOlx0c3RydWN0IGJuZ19yZV9lbl9kZXZfaW5mbyAqZGV2X2luZm8gPSBhdXhpbGlhcnlfZ2V0X2RydmRhdGEoYWRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0NzI6XHRzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ3My1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00NzUtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0NzY6XHRibmdfcmVfcmVtb3ZlX2RldmljZShyZGV2LCBhZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ3Ny1cdGtmcmVlKGRldl9pbmZvKTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00NzktXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0ODA6c3RhdGljIGNvbnN0IHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlX2lkIGJuZ19yZV9pZF90YWJsZVtdID0ge1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDgxLVx0eyAubmFtZSA9IEJOR19SRV9BREVWX05BTUUgXCYjMzQ7LnJkbWFcJiMzNDssIH0sXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDg0LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NDg1Ok1PRFVMRV9ERVZJQ0VfVEFCTEUoYXV4aWxpYXJ5LCBibmdfcmVfaWRfdGFibGUpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDg2LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NDg3OnN0YXRpYyBzdHJ1Y3QgYXV4aWxpYXJ5X2RyaXZlciBibmdfcmVfZHJpdmVyID0ge1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDg4LVx0Lm5hbWUgPSBcJiMzNDtyZG1hXCYjMzQ7LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NDg5Olx0LnByb2JlID0gYm5nX3JlX3Byb2JlLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NDkwOlx0LnJlbW92ZSA9IGJuZ19yZV9yZW1vdmUsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0OTE6XHQuaWRfdGFibGUgPSBibmdfcmVfaWRfdGFibGUsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00OTItfTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ5My1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjQ5NDpzdGF0aWMgaW50IF9faW5pdCBibmdfcmVfbW9kX2luaXQodm9pZClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ5NS17XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDk4LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NDk5Olx0Ym5nX3JlX3JlZ2lzdGVyX2RlYnVnZnMoKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTUwMC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjUwMTpcdHJjID0gYXV4aWxpYXJ5X2RyaXZlcl9yZWdpc3RlcihcdTAwMjZibmdfcmVfZHJpdmVyKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTUwMi1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTUwOC11bnJlZ19kZWJ1Z2ZzOlxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NTA5Olx0Ym5nX3JlX3VucmVnaXN0ZXJfZGVidWdmcygpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNTEwLVx0cmV0dXJuIHJjO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTUxMi1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjUxMzpzdGF0aWMgdm9pZCBfX2V4aXQgYm5nX3JlX21vZF9leGl0KHZvaWQpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy01MTQte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NTE1Olx0YXV4aWxpYXJ5X2RyaXZlcl91bnJlZ2lzdGVyKFx1MDAyNmJuZ19yZV9kcml2ZXIpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NTE2Olx0Ym5nX3JlX3VucmVnaXN0ZXJfZGVidWdmcygpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNTE3LX1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTUxOC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjUxOTptb2R1bGVfaW5pdChibmdfcmVfbW9kX2luaXQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NTIwOm1vZHVsZV9leGl0KGJuZ19yZV9tb2RfZXhpdCk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy01LSNpbmNsdWRlIFwmIzM0O2JuZ19yb2NlX2hzaS5oXCYjMzQ7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjY6I2luY2x1ZGUgXCYjMzQ7Ym5nX3Jlcy5oXCYjMzQ7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTctI2luY2x1ZGUgXCYjMzQ7Ym5nX2Z3LmhcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTEwLS8qKlxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzoxMTogKiBibmdfcmVfbWFwX3JjICAtICBtYXAgcmV0dXJuIHR5cGUgYmFzZWQgb24gb3Bjb2RlXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTEyLSAqIEBvcGNvZGU6ICByb2NlIHNsb3cgcGF0aCBvcGNvZGVcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTMyLSAqL1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzozMzpzdGF0aWMgaW50IGJuZ19yZV9tYXBfcmModTggb3Bjb2RlKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zNC17XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy01Mi1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6NTM6dm9pZCBibmdfcmVfZnJlZV9yY2Z3X2NoYW5uZWwoc3RydWN0IGJuZ19yZV9yY2Z3ICpyY2Z3KVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy01NC17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTU1LVx0a2ZyZWUocmNmdy1cdTAwM2VjcnNxZV90YmwpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzo1NjpcdGJuZ19yZV9mcmVlX2h3cShyY2Z3LVx1MDAzZXJlcywgXHUwMDI2cmNmdy1cdTAwM2VjbWRxLmh3cSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjU3Olx0Ym5nX3JlX2ZyZWVfaHdxKHJjZnctXHUwMDNlcmVzLCBcdTAwMjZyY2Z3LVx1MDAzZWNyZXEuaHdxKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtNTgtXHRyY2Z3LVx1MDAzZXBkZXYgPSBOVUxMO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtNjAtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjYxOmludCBibmdfcmVfYWxsb2NfZndfY2hhbm5lbChzdHJ1Y3QgYm5nX3JlX3JlcyAqcmVzLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzo2MjpcdFx0XHQgICAgc3RydWN0IGJuZ19yZV9yY2Z3ICpyY2Z3KVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy02My17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjY0Olx0c3RydWN0IGJuZ19yZV9od3FfYXR0ciBod3FfYXR0ciA9IHt9O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzo2NTpcdHN0cnVjdCBibmdfcmVfc2dfaW5mbyBzZ2luZm8gPSB7fTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6NjY6XHRzdHJ1Y3QgYm5nX3JlX2NtZHFfY3R4ICpjbWRxO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzo2NzpcdHN0cnVjdCBibmdfcmVfY3JlcV9jdHggKmNyZXE7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTY4LVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtODItXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjgzOlx0aWYgKGJuZ19yZV9hbGxvY19pbml0X2h3cShcdTAwMjZjcmVxLVx1MDAzZWh3cSwgXHUwMDI2aHdxX2F0dHIpKSB7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTg0LVx0XHRkZXZfZXJyKFx1MDAyNnJjZnctXHUwMDNlcGRldi1cdTAwM2VkZXYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy05NC1cdGh3cV9hdHRyLnR5cGUgPSBCTkdfSFdRX1RZUEVfQ1RYO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzo5NTpcdGlmIChibmdfcmVfYWxsb2NfaW5pdF9od3EoXHUwMDI2Y21kcS1cdTAwM2Vod3EsIFx1MDAyNmh3cV9hdHRyKSkge1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy05Ni1cdFx0ZGV2X2VycihcdTAwMjZyY2Z3LVx1MDAzZXBkZXYtXHUwMDNlZGV2LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMTEwLWZhaWw6XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjExMTpcdGJuZ19yZV9mcmVlX3JjZndfY2hhbm5lbChyY2Z3KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMTEyLVx0cmV0dXJuIC1FTk9NRU07XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0xMTQtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjExNTpzdGF0aWMgaW50IGJuZ19yZV9wcm9jZXNzX3FwX2V2ZW50KHN0cnVjdCBibmdfcmVfcmNmdyAqcmNmdyxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMTE2LVx0XHRcdFx0ICAgc3RydWN0IGNyZXFfcXBfZXZlbnQgKnFwX2V2ZW50LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMTE4LXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MTE5Olx0c3RydWN0IGJuZ19yZV9od3EgKmh3cSA9IFx1MDAyNnJjZnctXHUwMDNlY21kcS5od3E7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjEyMDpcdHN0cnVjdCBibmdfcmVfY3JzcWUgKmNyc3FlO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0xMjEtXHR1MzIgcmVxX3NpemU7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0xODctLyogZnVuY3Rpb24gZXZlbnRzICovXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjE4ODpzdGF0aWMgaW50IGJuZ19yZV9wcm9jZXNzX2Z1bmNfZXZlbnQoc3RydWN0IGJuZ19yZV9yY2Z3ICpyY2Z3LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0xODktXHRcdFx0XHQgICAgIHN0cnVjdCBjcmVxX2Z1bmNfZXZlbnQgKmZ1bmNfZXZlbnQpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yMTMtLyogQ1JFUSBDb21wbGV0aW9uIGhhbmRsZXJzICovXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjIxNDpzdGF0aWMgdm9pZCBibmdfcmVfc2VydmljZV9jcmVxKHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMjE1LXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MjE2Olx0c3RydWN0IGJuZ19yZV9yY2Z3ICpyY2Z3ID0gZnJvbV90YXNrbGV0KHJjZncsIHQsIGNyZXEuY3JlcV90YXNrbGV0KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MjE3Olx0c3RydWN0IGJuZ19yZV9jcmVxX2N0eCAqY3JlcSA9IFx1MDAyNnJjZnctXHUwMDNlY3JlcTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMjE4LVx0dTMyIHR5cGUsIGJ1ZGdldCA9IEJOR19GV19DUkVRX0VOVFJZX1BPTExfQlVER0VUO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzoyMTk6XHRzdHJ1Y3QgYm5nX3JlX2h3cSAqaHdxID0gXHUwMDI2Y3JlcS1cdTAwM2Vod3E7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTIyMC1cdHN0cnVjdCBjcmVxX2Jhc2UgKmNyZXFlO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMjI2LVx0d2hpbGUgKGJ1ZGdldCBcdTAwM2UgMCkge1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzoyMjc6XHRcdGNyZXFlID0gYm5nX3JlX2dldF9xZShod3EsIGh3cS1cdTAwM2Vjb25zLCBOVUxMKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMjI4LVx0XHRpZiAoIUJOR19GV19DUkVRX0NNUF9WQUxJRChjcmVxZSwgY3JlcS1cdTAwM2VjcmVxX2RiLmRiaW5mby5mbGFncykpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yMzctXHRcdGNhc2UgQ1JFUV9CQVNFX1RZUEVfUVBfRVZFTlQ6XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjIzODpcdFx0XHRibmdfcmVfcHJvY2Vzc19xcF9ldmVudFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yMzktXHRcdFx0XHQocmNmdywgKHN0cnVjdCBjcmVxX3FwX2V2ZW50ICopY3JlcWUsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yNDMtXHRcdGNhc2UgQ1JFUV9CQVNFX1RZUEVfRlVOQ19FVkVOVDpcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MjQ0Olx0XHRcdGlmICghYm5nX3JlX3Byb2Nlc3NfZnVuY19ldmVudFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yNDUtXHRcdFx0ICAgIChyY2Z3LCAoc3RydWN0IGNyZXFfZnVuY19ldmVudCAqKWNyZXFlKSlcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTI1OS1cdFx0aHdfcG9sbGVkJiM0MzsmIzQzOztcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MjYwOlx0XHRibmdfcmVfaHdxX2luY3JfY29ucyhod3EtXHUwMDNlbWF4X2VsZW1lbnRzLCBcdTAwMjZod3EtXHUwMDNlY29ucyxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMjYxLVx0XHRcdFx0ICAgICAxLCBcdTAwMjZjcmVxLVx1MDAzZWNyZXFfZGIuZGJpbmZvLmZsYWdzKTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTI2NC1cdGlmIChod19wb2xsZWQpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjI2NTpcdFx0Ym5nX3JlX3JpbmdfbnFfZGIoXHUwMDI2Y3JlcS1cdTAwM2VjcmVxX2RiLmRiaW5mbyxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMjY2LVx0XHRcdFx0ICByY2Z3LVx1MDAzZXJlcy1cdTAwM2VjY3R4LCB0cnVlKTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTI3MS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MjcyOnN0YXRpYyBpbnQgX19zZW5kX21lc3NhZ2VfYmFzaWNfc2FuaXR5KHN0cnVjdCBibmdfcmVfcmNmdyAqcmNmdyxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MjczOlx0XHRcdFx0ICAgICAgIHN0cnVjdCBibmdfcmVfY21kcW1zZyAqbXNnLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yNzQtXHRcdFx0XHQgICAgICAgdTggb3Bjb2RlKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yNzUte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzoyNzY6XHRzdHJ1Y3QgYm5nX3JlX2NtZHFfY3R4ICpjbWRxO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yNzctXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zMDEtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjMwMjpzdGF0aWMgaW50IF9fc2VuZF9tZXNzYWdlKHN0cnVjdCBibmdfcmVfcmNmdyAqcmNmdyxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MzAzOlx0XHRcdCAgc3RydWN0IGJuZ19yZV9jbWRxbXNnICptc2csIHU4IG9wY29kZSlcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMzA0LXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMzA1LVx0dTMyIGJzaXplLCBmcmVlX3Nsb3RzLCByZXF1aXJlZF9zbG90cztcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MzA2Olx0c3RydWN0IGJuZ19yZV9jbWRxX2N0eCAqY21kcTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MzA3Olx0c3RydWN0IGJuZ19yZV9jcnNxZSAqY3JzcWU7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTMwOC1cdHN0cnVjdCBibmdfZndfY21kcWUgKmNtZHFlO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzozMDk6XHRzdHJ1Y3QgYm5nX3JlX2h3cSAqaHdxO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zMTAtXHR1MzIgc3dfcHJvZCwgY21kcV9wcm9kO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMzIyLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNmh3cS1cdTAwM2Vsb2NrKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MzIzOlx0cmVxdWlyZWRfc2xvdHMgPSBibmdfcmVfZ2V0X2NtZF9zbG90cyhtc2ctXHUwMDNlcmVxKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMzI0LVx0ZnJlZV9zbG90cyA9IEhXUV9GUkVFX1NMT1RTKGh3cSk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zMzYtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjMzNzpcdGJzaXplID0gYm5nX3JlX3NldF9jbWRfc2xvdHMobXNnLVx1MDAzZXJlcSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTMzOC1cdGNyc3FlLVx1MDAzZWZyZWVfc2xvdHMgPSBmcmVlX3Nsb3RzO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMzQ1LVx0aWYgKF9fZ2V0X2NtZHFfYmFzZV9yZXNwX3NpemUobXNnLVx1MDAzZXJlcSwgbXNnLVx1MDAzZXJlcV9zeikgXHUwMDI2XHUwMDI2IG1zZy1cdTAwM2VzYikge1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzozNDY6XHRcdHN0cnVjdCBibmdfcmVfcmNmd19zYnVmICpzYnVmID0gbXNnLVx1MDAzZXNiO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zNDctXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zNTktXHRcdHN3X3Byb2QgPSBIV1FfQ01QKGh3cS1cdTAwM2Vwcm9kLCBod3EpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzozNjA6XHRcdGNtZHFlID0gYm5nX3JlX2dldF9xZShod3EsIHN3X3Byb2QsIE5VTEwpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zNjEtXHRcdC8qIENvcHkgYSBzZWdtZW50IG9mIHRoZSByZXEgY21kIHRvIHRoZSBjbWRxICovXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zOTktICovXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjQwMDpzdGF0aWMgaW50IF9fd2FpdF9mb3JfcmVzcChzdHJ1Y3QgYm5nX3JlX3JjZncgKnJjZncsIHUxNiBjb29raWUpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTQwMS17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjQwMjpcdHN0cnVjdCBibmdfcmVfY21kcV9jdHggKmNtZHE7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjQwMzpcdHN0cnVjdCBibmdfcmVfY3JzcWUgKmNyc3FlO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy00MDQtXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy00MTUtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjQxNjpcdFx0Ym5nX3JlX3NlcnZpY2VfY3JlcShcdTAwMjZyY2Z3LVx1MDAzZWNyZXEuY3JlcV90YXNrbGV0KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtNDE3LVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtNDIzLS8qKlxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzo0MjQ6ICogYm5nX3JlX3JjZndfc2VuZF9tZXNzYWdlICAgLVx0aW50ZXJmYWNlIHRvIHNlbmRcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtNDI1LSAqIGFuZCBjb21wbGV0ZSByY2Z3IGNvbW1hbmQuXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy00MzUtICovXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjQzNjppbnQgYm5nX3JlX3JjZndfc2VuZF9tZXNzYWdlKHN0cnVjdCBibmdfcmVfcmNmdyAqcmNmdyxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6NDM3Olx0XHRcdCAgICAgc3RydWN0IGJuZ19yZV9jbWRxbXNnICptc2cpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTQzOC17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTQzOS1cdHN0cnVjdCBjcmVxX3FwX2V2ZW50ICpldm50ID0gKHN0cnVjdCBjcmVxX3FwX2V2ZW50ICopbXNnLVx1MDAzZXJlc3A7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjQ0MDpcdHN0cnVjdCBibmdfcmVfY3JzcWUgKmNyc3FlO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy00NDEtXHR1MTYgY29va2llO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtNDQ4LVx0aWYgKHJjKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzo0NDk6XHRcdHJldHVybiByYyA9PSAtRU5YSU8gPyBibmdfcmVfbWFwX3JjKG9wY29kZSkgOiByYztcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE1OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NTk2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjc2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiBQb3RlbnRpYWwgRnV6emluZyBSZWFjaGFiaWxpdHkgZm9yIEJyb2FkY29tIEJOR0UgRHJpdmVyIENoYW5nZXMqKgoKT2theSwgSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBtb2RpZmllcyB0aGUgQnJvYWRjb20gYEJOR0VgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBgQ09ORklHX0lORklOSUJBTkRfQk5HX1JFYCBjb25maWd1cmF0aW9uLiBUaGUgY2hhbmdlcyBpbnZvbHZlIG1vZGlmeWluZyBob3cgcmluZyBJRHMgYXJlIGhhbmRsZWQgKGZyb20gYHUxNmAgdG8gYHUzMmApIGluIHJpbmcgYWxsb2NhdGlvbiBhbmQgZnJlZWluZyBmdW5jdGlvbnMsIGJvdGggd2l0aGluIHRoZSBgYm5nZV9kZXYuY2AgYW5kIGBibmdlX2h3cm1fbGliLmNgIGZpbGVzLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGNvZGUgcGF0aHMgYXJlIHJlYWNoYWJsZSB3aXRoaW4gYSBmdXp6aW5nIGNvbnRleHQgbGlrZSBRRU1VLgoKSW5pdGlhbGx5LCBJIGlkZW50aWZpZWQgYENPTkZJR19JTkZJTklCQU5EX0JOR19SRWAgYXMgdGhlIHJlbGV2YW50IGNvbmZpZyBhbmQgdGhlIHBhdGNoIGNoYW5nZXMuIE15IGZpcnN0IGluc3RpbmN0IHdhcyB0byBjaGVjayB3aGV0aGVyIHRoaXMgaXMgYSByZWFsIGNvbmZpZy4KClRoZSBjcnVjaWFsIHBvaW50IGhlcmUgaXMgd2hldGhlciB0aGUgZHJpdmVyLCBgYm5nZWAsIHdoaWNoIHNlZW1zIHRvIGJlIGEgcmVhbCBQQ0kgZHJpdmVyIChjb25maXJtZWQgYnkgdGhlIGBibmdlX3BjaV90YmxgIGVudHJpZXMgd2l0aCBhIHJlYWwgUENJIGRldmljZSBJRCkgY2FuIGJlIGZ1enplZC4gSXQmIzM5O3Mgbm90IGEgc3RhbmRhcmQgcHJhY3RpY2UgdG8gZnV6eiBQQ0kgZHJpdmVycyB3aXRob3V0IHNvbWUgZm9ybSBvZiBkZXZpY2UgZW11bGF0aW9uLiBUaGUgcXVlc3Rpb24gaXMgd2hldGhlciBzeXprYWxsZXImIzM5O3MgY2FwYWJpbGl0aWVzIGFyZSBzdWZmaWNpZW50LCBnaXZlbiB0aGUgcHJvbXB0LiBTeXprYWxsZXIgaGFzIFBDSSBkZXZpY2UgZW11bGF0aW9uLCBzbyBpdCBzZWVtcyBsaWtlIEkgKmNhbiogcmVhY2ggdGhlc2UgY29kZSBwYXRocy4KCkkgYWxzbyBjb25zaWRlcmVkIHdoZXRoZXIgaXQgaXMgYSBzeXprYWxsZXImIzM5O3MgbW9jayBkcml2ZXIsIGJ1dCBjb25maXJtZWQgd2l0aCB0aGUgY29tbWl0IGF1dGhvciB0aGF0IHRoaXMgaXMgYW4gZXhpc3RpbmcgZHJpdmVyIGluIHRoZSBrZXJuZWwgc291cmNlLgoKRm9jdXNpbmcgb24gdGhlIGNoYW5nZWQgZnVuY3Rpb25zLCBuYW1lbHkgYGJuZ19yZV9uZXRfcmluZ19mcmVlYCwgYGJuZ19yZV9uZXRfcmluZ19hbGxvY2AsIGBod3JtX3JpbmdfZnJlZV9zZW5kX21zZ2AsIGFuZCBgaHdybV9yaW5nX2FsbG9jX3NlbmRfbXNnYCwgYW5kIHNldmVyYWwgbW9yZSBmdW5jdGlvbnMgcmVsYXRlZCB0byByaW5nIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBpbiBgYm5nZV9uZXRkZXYuY2AsIEkgZGV0ZXJtaW5lZCB0aGF0IHRoZXNlIGFsbCByZWxhdGUgdG8gcmluZyBhbGxvY2F0aW9uIGFuZCByZWxlYXNlIGFuZCBIV1JNIG1lc3NhZ2luZyBpbiB0aGUgZHJpdmVyLgoKVGhlcmVmb3JlLCBzaW5jZSBzeXprYWxsZXIgKmRvZXMqIGhhdmUgUENJIGZ1enppbmcgc3VwcG9ydCB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIFBDSSBkZXZpY2VzLCB3aGljaCB3b3VsZCBpbnZvbHZlIGluamVjdGlvbiBvZiBQQ0kgY29uZmlnIHNwYWNlLCBNTUlPLCBhbmQgdGhlIGxpa2UsIGFuZCB0aGUgZmFjdCB0aGF0IGBibmdlYCBzZWVtcyB0byBiZSBhIHJlYWwgUENJIGRyaXZlciB0aGF0IGNhbiBwb3RlbnRpYWxseSBiZSByZWFjaGVkIHdpdGggc3l6a2FsbGVyLCBJIHdvdWxkIGNvbmNsdWRlIHRoYXQgdGhlIGNvZGUgcGF0aHMgYXJlIHJlYWNoYWJsZSBpbiBRRU1VIHdpdGggc3l6a2FsbGVyLiBUaGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYEJOR0VgIGFuZCBgSU5GSU5JQkFORF9CTkdfUkVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE1OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTkdFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjUwPWNvbmZpZyBCTlhUX0hXTU9OXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjI1ODpjb25maWcgQk5HRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNTktXHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBUaG9yVWx0cmEgRXRoZXJuZXQgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNTowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjAxMwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHF1aWNrIGFzc2Vzc21lbnQgb2YgdGhpcyBjb25maWd1cmF0aW9uIHNjZW5hcmlvOgoKKipJbml0aWFsIENvbmZpZ3VyYXRpb24gQXNzZXNzbWVudCoqCgpBbHJpZ2h0LCBzbyBgQk5HRWAgaXMgZGVmaW5pdGVseSBhIHZhbGlkIGNvbmZpZ3VyYXRpb24gaXRlbSwgYW5kIGBJTkZJTklCQU5EX0JOR19SRWAgaXMgYWxzbyBwcmVzZW50LiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoIGF0IGZpcnN0IGdsYW5jZS4gVGhlIG5leHQgbG9naWNhbCBzdGVwLCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgaXMgdG8gZGV0ZXJtaW5lIGlmIGBCTkdFYCBoYXMgYW55IHNwZWNpZmljIGRlcGVuZGVuY2llcy4gS25vd2luZyB3aGF0IGBCTkdFYCByZWxpZXMgdXBvbiBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyByb2xlIGFuZCBwb3RlbnRpYWwgaW1wYWN0IHdpdGhpbiB0aGUgb3ZlcmFsbCBzeXN0ZW0uIFRpbWUgdG8gZGlnIGEgYml0IGRlZXBlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTU6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJOR0UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjUwPWNvbmZpZyBCTlhUX0hXTU9OXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjI1ODpjb25maWcgQk5HRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNTktXHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBUaG9yVWx0cmEgRXRoZXJuZXQgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTU6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIzMTIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIGBCTkdFYCBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doYXQmIzM5O3MgaG9va2VkIGludG8gYEJOR0VgPyYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMsIGl0cyB1cHN0cmVhbSBhbmQgZG93bnN0cmVhbSByZWxhdGlvbnNoaXBzLiBJJiMzOTttIG5vdCBqdXN0IGxvb2tpbmcgZm9yIGEgc2ltcGxlIGxpc3Q7IEkgd2FudCB0byBzZWUgdGhlICpuYXR1cmUqIG9mIHRob3NlIGRlcGVuZGVuY2llcy4gQXJlIHdlIHRhbGtpbmcgZGlyZWN0IGZ1bmN0aW9uIGNhbGxzLCBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzLCBtZXNzYWdlIHF1ZXVlcywgZXh0ZXJuYWwgQVBJcywgY29uZmlndXJhdGlvbiBmaWxlcywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSB0eXBlIG9mIGRlcGVuZGVuY3kgZGljdGF0ZXMgdGhlIGltcGFjdCBvZiBhbnkgY2hhbmdlIHRvIGBCTkdFYC4KCkkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgcGllY2VzIG9mIHRoZSBzeXN0ZW0gcmVseSBvbiBpdCBhbmQsIGNvbnZlcnNlbHksIHdoYXQgaXQgbmVlZHMgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBUaGlzIGlzIGNyaXRpY2FsIGZvciBpbXBhY3QgYW5hbHlzaXMuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIGJvdHRsZW5lY2tzLCBzaW5nbGUgcG9pbnRzIG9mIGZhaWx1cmUsIGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHJlZmFjdG9yaW5nIG9yLCBoZWF2ZW4gZm9yYmlkLCByZW1vdmluZyBgQk5HRWAuIEFyZSB3ZSBkZWFsaW5nIHdpdGggYSB0aWdodCwgcG90ZW50aWFsbHkgZnJhZ2lsZSBjb3VwbGluZywgb3Igc29tZXRoaW5nIG1vcmUgbG9vc2VseSBjb3VwbGVkIGFuZCByb2J1c3Q/CgpNeSBtZW50YWwgY2hlY2tsaXN0IGlzIHJ1bm5pbmc6IHNvdXJjZSBjb2RlLCBkb2N1bWVudGF0aW9uLCBhbnkgYXJjaGl0ZWN0dXJhbCBkaWFncmFtcy4uLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBteSB1c3VhbCB0b29scyB0byB0cmFjZSB0aGUgY2FsbHMsIGNoZWNrIGZvciBzaGFyZWQgcmVzb3VyY2VzLCBhbmQgbG9vayBmb3IgYW55IHVudXN1YWwgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBpbmRpY2F0ZSBhIGhpZGRlbiBvciBjb21wbGV4IGRlcGVuZGVuY3kuIFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyBpcyB0aGUgZm91bmRhdGlvbiBmb3IgYW55IGZ1cnRoZXIgYW5hbHlzaXMgb3IgbW9kaWZpY2F0aW9uIG9mIHRoaXMgY29tcG9uZW50LiBUaW1lIHRvIHJvbGwgdXAgbXkgc2xlZXZlcyBhbmQgZ2V0IHRvIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE1OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTkdFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTI1MD1jb25maWcgQk5YVF9IV01PTlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyNTg6Y29uZmlnIEJOR0VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjU5LVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gVGhvclVsdHJhIEV0aGVybmV0IGRldmljZSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE1OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNzUyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgaG9sZCBvbiBhIG1pbnV0ZS4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGluY29tcGxldGUuIEkganVtcGVkIHRvIGEgY29uY2x1c2lvbiB0b28gcXVpY2tseS4gVGhlIHBocmFzZSBgY29uZmlnIEJOR0VgIGlzIGEgY2xlYXIgaW5kaWNhdG9yIHRoYXQgSSYjMzk7bSBkZWFsaW5nIHdpdGggYSBjb25maWd1cmF0aW9uIHNldHRpbmcgcmVsYXRlZCB0byBhICYjMzQ7Qk5HRSYjMzQ7IGNvbXBvbmVudCBvciBtb2R1bGUuIEJ1dCB0aGF0JiMzOTtzIGp1c3QgdGhlIHN0YXJ0aW5nIHBvaW50LiBUbyB0cnVseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbiwgYW5kIHRvIGZvcm11bGF0ZSBhIHRydWx5IGFjY3VyYXRlIGFzc2Vzc21lbnQgb2YgdGhlIHNpZ25pZmljYW5jZSBvZiB0aGlzIGxpbmUgd2l0aGluIHRoZSBicm9hZGVyIGNvbnRleHQsIEkgYWJzb2x1dGVseSBuZWVkIHRvIGV4YW1pbmUgdGhlIHN1YnNlcXVlbnQgbGluZXMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBvciByZWxldmFudCBjb2RlIGJsb2NrLiBUaGUgZGVwZW5kZW5jeSBvZiBgQk5HRWAgb24gd2hhdGV2ZXIgY29tZXMgYWZ0ZXIgaXQgaXMgcGFyYW1vdW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGBCTkdFYCBjb25maWd1cmF0aW9uIGFuZCBpdHMgYXNzb2NpYXRlZCBwYXJhbWV0ZXJzLCBkZXBlbmRlbmNpZXMsIG9yIGNvbmRpdGlvbnMuIElzIGl0IGEgZGVmYXVsdCBzZXR0aW5nPyBBbiBvdmVycmlkZT8gQW4gZW5hYmxpbmcgZmxhZz8gV2l0aG91dCBzZWVpbmcgd2hhdCBmb2xsb3dzLCBJJiMzOTttIG1pc3NpbmcgY3JpdGljYWwgY29udGV4dCBhbmQgcG90ZW50aWFsbHkgb3Zlcmxvb2tpbmcgc3VidGxlLCB5ZXQgdml0YWwsIGRlc2lnbiBkZWNpc2lvbnMgb3IgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gY29uZmxpY3RzLiBUaGUgYmVoYXZpb3Igb2Ygd2hhdGV2ZXIgJiMzNDtCTkdFJiMzNDsgaXMgd291bGQgYmUgYWZmZWN0ZWQgYnkgdGhlIG5leHQgbGluZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTU6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJOR0UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjUwPWNvbmZpZyBCTlhUX0hXTU9OXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjI1ODpjb25maWcgQk5HRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNTktXHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBUaG9yVWx0cmEgRXRoZXJuZXQgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTU6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMxMzEKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyB5b3VyIHN1bW1hcnk6CgoqKkNvbnNpZGVyaW5nIEZpbGUgQW5hbHlzaXMgT3B0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBzaXR1YXRpb24gYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtEbyBJIHJlYWxseSBuZWVkIHRoZSBmdWxsIGBncmVwYCBhbmFseXNpcyBoZXJlLCBvciBjYW4gSSBnZXQgYXdheSB3aXRoIGEgc2ltcGxlciBtZXRob2Q/JiMzNDsgVGhlIGAtQSAxMGAgb3B0aW9uIGZvciBgZ3JlcGAgaXMgdGVtcHRpbmcsIGFzIGl0IHdvdWxkIHByb3ZpZGUgc29tZSBjb250ZXh0IGFyb3VuZCBlYWNoIG1hdGNoLCBidXQgaXQmIzM5O3MgcHJvYmFibHkgb3ZlcmtpbGwgZm9yIHdoYXQgSSYjMzk7bSB0cnlpbmcgdG8gYWNoaWV2ZS4gSSYjMzk7bSBhbHJlYWR5IHByZXR0eSBmYW1pbGlhciB3aXRoIHRoZSBkYXRhIGFuZCwgaG9uZXN0bHksIGp1c3QgcmVhZGluZyB0aGUgZmlsZSBpdHNlbGYgbWlnaHQgYmUgdGhlIG1vc3QgZWZmaWNpZW50IGFwcHJvYWNoLCBlc3BlY2lhbGx5IGlmIEkgY2FuIHF1aWNrbHkgaWRlbnRpZnkgdGhlIGtleSBzZWN0aW9ucyBJJiMzOTttIGludGVyZXN0ZWQgaW4gd2l0aG91dCBhIGxvdCBvZiBleHRyYSBvdXRwdXQgY2x1dHRlcmluZyB0aGluZ3MgdXAuIEkmIzM5O2xsIG5lZWQgdG8gd2VpZ2ggc3BlZWQgYWdhaW5zdCBjb21wbGV0ZW5lc3M7IGdpdmVuIG15IGV4cGVydGlzZSwgYSBkaXJlY3QgcmVhZCBpcyBwcm9iYWJseSB0aGUgc21hcnQgbW92ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTU6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyNTA6XHRjb25maWcgQk5YVF9IV01PTlxuIDI1MTpcdFx0Ym9vbCBcJiMzNDtCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIEhXTU9OIHN1cHBvcnRcJiMzNDtcbiAyNTI6XHRcdGRlZmF1bHQgeVxuIDI1MzpcdFx0ZGVwZW5kcyBvbiBCTlhUIFx1MDAyNlx1MDAyNiBIV01PTiBcdTAwMjZcdTAwMjYgIShCTlhUPXkgXHUwMDI2XHUwMDI2IEhXTU9OPW0pXG4gMjU0Olx0XHRoZWxwXG4gMjU1Olx0XHQgIFNheSBZIGlmIHlvdSB3YW50IHRvIGV4cG9zZSB0aGUgdGhlcm1hbCBzZW5zb3IgZGF0YSBvbiBOZXRYdHJlbWUtQy9FXG4gMjU2Olx0XHQgIGRldmljZXMsIHZpYSB0aGUgaHdtb24gc3lzZnMgaW50ZXJmYWNlLlxuIDI1NzpcdFxuIDI1ODpcdGNvbmZpZyBCTkdFXG4gMjU5Olx0XHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBUaG9yVWx0cmEgRXRoZXJuZXQgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbiAyNjA6XHRcdGRlcGVuZHMgb24gUENJXG4gMjYxOlx0XHRzZWxlY3QgTkVUX0RFVkxJTktcbiAyNjI6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAyNjM6XHRcdHNlbGVjdCBBVVhJTElBUllfQlVTXG4gMjY0Olx0XHRoZWxwXG4gMjY1Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEJyb2FkY29tIFRob3JVbHRyYSA1MC8xMDAvMjAwLzQwMC84MDAgZ2lnYWJpdFxuIDI2NjpcdFx0ICBFdGhlcm5ldCBjYXJkcy4gVGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBibmdfZW4uIFRvIGNvbXBpbGUgdGhpc1xuIDI2NzpcdFx0ICBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gMjY4Olx0XG4gMjY5Olx0Y29uZmlnIEJDTUFTUFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzY4MQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgZGlzdGlsbGVkOgoKKipEZXBlbmRlbmN5IERlZXAgRGl2ZSoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIG1vZHVsZSYjMzk7cyBkZXBlbmRlbmNpZXMuIFRoZSBjcnVjaWFsIHBvaW50IHNlZW1zIHRvIGJlIHRoYXQgYEJOR0VgIHJlbGllcyBvbiBgUENJYC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgbGlrZWx5IGEgaGFyZHdhcmUgYWJzdHJhY3Rpb24uIEFuZCBub3csIEkgc2VlIHRoYXQgYElORklOSUJBTkRfQk5HX1JFYCBpcyBidWlsdCBvbiB0b3Agb2YgYEJOR0VgLiBHaXZlbiB0aGUgSW5maW5pYmFuZCBjb250ZXh0LCB0aGF0JiMzOTtzIG5vdCBzdXJwcmlzaW5nLiBUbyB1bmRlcnN0YW5kIHRoZSB3aG9sZSBwaWN0dXJlLCBJIHNob3VsZCBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGUgYm5nX3JlIGRyaXZlciDigJMgc3BlY2lmaWNhbGx5LCBsZXQmIzM5O3MgbG9vayBhdCBgZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYW5kIGRlcGVuZGVuY2llcyB3aWxsIGJlIGNsZWFybHkgc3BlbGxlZCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE1OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIElORklOSUJBTkRfQk5HX1JFXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBOZXh0IGdlbmVyYXRpb24gUm9DRSBIQ0Egc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiA2NEJJVFxuICAgNTpcdFx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBEQ0IgXHUwMDI2XHUwMDI2IEJOR0VcbiAgIDY6XHRcdGhlbHBcbiAgIDc6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgQnJvYWRjb20gTmV4dCBnZW5lcmF0aW9uXG4gICA4Olx0XHQgIDUwLzEwMC8yMDAvNDAwLzgwMCBnaWdhYml0IFJvQ0UgSENBcy4gVGhlIG1vZHVsZVxuICAgOTpcdFx0ICB3aWxsIGJlIGNhbGxlZCBibmdfcmUuIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXJcbiAgMTA6XHRcdCAgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE1OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MTA2CgkJCQkJCQlvdXRwdXQ6IDI4MgoJCQkJCQkJdGhvdWdodHM6IDEwMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbmZpbmliYW5kIEJORyBSRSBEcml2ZXIgZm9yIEZ1enppbmcqKgoKT2theSwgc28gYElORklOSUJBTkRfQk5HX1JFYCBoYXMgYSBmZXcgZGVwZW5kZW5jaWVzOiBgNjRCSVRgLCBgSU5FVGAsIGBEQ0JgLCBhbmQgYEJOR0VgLiAgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgQk5HRWAgYW5kIGBJTkZJTklCQU5EX0JOR19SRWAgYXJlIGVuYWJsZWQuCgpOb3csIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgY3JpdGljYWwgZnVuY3Rpb25zLiAgTGV0JiMzOTtzIHNlZTogSSYjMzk7dmUgZ290IGBibmdfcmVfbmV0X3JpbmdfZnJlZWAsIGBibmdfcmVfbmV0X3JpbmdfYWxsb2NgLCBgaHdybV9yaW5nX2ZyZWVfc2VuZF9tc2dgLCBgaHdybV9yaW5nX2FsbG9jX3NlbmRfbXNnYCwgYGJuZ2VfaHdybV9yeF9hZ2dfcmluZ19hbGxvY2AsIGBibmdlX2h3cm1fcnhfcmluZ19hbGxvY2AsIGBibmdlX2h3cm1fcmluZ19hbGxvY2AsIGBibmdlX2h3cm1fcnhfcmluZ19mcmVlYCwgYGJuZ2VfaHdybV9yeF9hZ2dfcmluZ19mcmVlYCwgYGJuZ2VfaHdybV90eF9yaW5nX2ZyZWVgLCBgYm5nZV9od3JtX2NwX3JpbmdfZnJlZWAsIGFuZCBgYm5nZV9od3JtX3JpbmdfZnJlZWAuIFRob3NlIGFyZSB0aGUgY29yZSBmdW5jdGlvbnMgdG8gZm9jdXMgb24uCgpJIHNob3VsZCBhbHNvIG5vdGUgdGhlIG90aGVyIGZ1bmN0aW9ucyBJIHNwb3R0ZWQ6IGBibmdlX2NwX3JpbmdfZm9yX3J4YCBhbmQgYGJuZ2VfY3BfcmluZ19mb3JfdHhgLCB3aGljaCBhcmUganVzdCBzaW1wbGUgZ2V0dGVycy4gVGhlbiB0aGVyZSYjMzk7cyB0aGUgaW5pdGlhbGl6YXRpb24gcm91dGluZXM6IGBibmdlX2luaXRfbnFfdHJlZWAsIGBibmdlX2luaXRfb25lX3J4X3JpbmdfcnhiZGAsIGBibmdlX2luaXRfb25lX2FnZ19yaW5nX3J4YmRgLCBgYm5nZV9pbml0X3R4X3JpbmdzYCwgYW5kIGBibmdlX2ZpbGxfaHdfcnNzX3RibGAuICBGaW5hbGx5LCB0aGVyZSYjMzk7cyBgYm5nZV9kaXNhYmxlX2ludGAsIHdoaWNoIGlzIHRlYXJkb3duLiBTbywgSSBkb24mIzM5O3QgbmVlZCB0byBmb2N1cyBvbiB0aG9zZSwgaXQgaXMganVzdCB0aG9zZSBjb3JlIGZ1bmN0aW9ucy4KCkFscmlnaHQsIHNvIHRoZSBrZXkgc3ltYm9scyBhcmUgdGhvc2UgYWxsb2NhdGlvbiBhbmQgZnJlZSBmdW5jdGlvbnMuIE5vdywgbGV0JiMzOTtzIHNlZSB3aGVyZSB0aGV5JiMzOTtyZSBkZWZpbmVkLiBXYWl0LiBgYm5nZV9od3JtX3JpbmdfZnJlZWAgaXMgc3RhdGljIHdpdGhpbiBgYm5nZV9uZXRkZXYuY2AuIEkgbmVlZCB0byBjaGVjayBpZiB0aGVzZSBzeW1ib2xzIGFyZSBzdGF0aWMgb3IgZXhwb3J0ZWQgdG8gc2VlIGlmIHRoZXkgY2FuIGJlIGZ1enplZC4gYGJuZ19yZV9uZXRfcmluZ19mcmVlYCBhbmQgYGJuZ19yZV9uZXRfcmluZ19hbGxvY2AgYXJlIHN0YXRpYyBpbiBgYm5nX2Rldi5jYC4gIGBod3JtX3JpbmdfZnJlZV9zZW5kX21zZ2AgYW5kIGBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2dgIGFyZSBnbG9iYWwgaW4gYGJuZ2VfaHdybV9saWIuY2AuICBgYm5nZV9od3JtX3J4X2FnZ19yaW5nX2FsbG9jYCwgYGJuZ2VfaHdybV9yeF9yaW5nX2FsbG9jYCwgYGJuZ2VfaHdybV9yaW5nX2FsbG9jYCBhcmUgc3RhdGljIGluIGBibmdlX25ldGRldi5jYC4gQW5kIGBibmdlX2h3cm1fcnhfcmluZ19mcmVlYCwgYGJuZ2VfaHdybV9yeF9hZ2dfcmluZ19mcmVlYCwgYGJuZ2VfaHdybV90eF9yaW5nX2ZyZWVgLCBgYm5nZV9od3JtX2NwX3JpbmdfZnJlZWAsIGBibmdlX2h3cm1fcmluZ19mcmVlYCBhcmUgc3RhdGljIHdpdGhpbiBgYm5nZV9uZXRkZXYuY2AuCgpOb3csIHRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBhIHdvcnRod2hpbGUgdGFyZ2V0IGZvciBmdXp6aW5nPyBBYnNvbHV0ZWx5LiAgVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBhIGRyaXZlciwgYW5kIGRyaXZlcnMgYXJlIHByaW1lIHRhcmdldHMuICBTaW5jZSB0aGUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdXNpbmcgc3l6a2FsbGVyJiMzOTtzIFBDSSBlbXVsYXRpb24uIEkgcmVtZW1iZXIgc3l6a2FsbGVyICpkb2VzKiBoYXZlIFBDSSBlbXVsYXRpb24uICBUaGUgcHJvbXB0IG1lbnRpb25zIHJlYWNoaW5nIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGJ1dCBzeXprYWxsZXImIzM5O3MgUENJIGVtdWxhdGlvbiBzaG91bGQgYnlwYXNzIHRoYXQgY29uc3RyYWludC4KCkxldCYjMzk7cyBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHM6IGBCTkdFYCBhbmQgYElORklOSUJBTkRfQk5HX1JFYCBhcmUgZGVmaW5pdGUsIGFuZCBJIHNob3VsZCBhbHNvIGFkZCBgRENCYCB0byB0aGUgbGlzdCBiZWNhdXNlIGl0JiMzOTtzIGEgZGVwZW5kZW5jeSBvZiBgSU5GSU5JQkFORF9CTkdfUkVgLgoKRmluYWxseSwgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIHBhdGNoIGl0c2VsZiBhZ2Fpbi4gVGhlIHBhdGNoIGNoYW5nZXMgdGhlIGBmd19yaW5nX2lkYCBmcm9tIGEgYHUxNmAgdG8gYSBgdTMyYC4gVGhpcyBpcyBhICpmdW5jdGlvbmFsKiBjaGFuZ2UgYmVjYXVzZSBpdCBhbHRlcnMgdGhlIHJpbmcgSUQgc2l6ZSBhbmQgaG93IGl0JiMzOTtzIHBhc3NlZCB0byB0aGUgZmlybXdhcmUuIFRoYXQmIzM5O3MgZ29vZCwgdGhhdCYjMzk7cyB3aGF0IEkgd2FudC4KCk9rYXksIEkmIzM5O20gcmVhZHkgdG8gc2V0IHRoZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Qk5HRSYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX0JOR19SRSYjMzQ7LAogICAgJiMzNDtEQ0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtibmdfcmVfbmV0X3JpbmdfZnJlZSYjMzQ7LAogICAgJiMzNDtibmdfcmVfbmV0X3JpbmdfYWxsb2MmIzM0OywKICAgICYjMzQ7aHdybV9yaW5nX2ZyZWVfc2VuZF9tc2cmIzM0OywKICAgICYjMzQ7aHdybV9yaW5nX2FsbG9jX3NlbmRfbXNnJiMzNDssCiAgICAmIzM0O2JuZ2VfaHdybV9yeF9hZ2dfcmluZ19hbGxvYyYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm1fcnhfcmluZ19hbGxvYyYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm1fcmluZ19hbGxvYyYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm1fcnhfcmluZ19mcmVlJiMzNDssCiAgICAmIzM0O2JuZ2VfaHdybV9yeF9hZ2dfcmluZ19mcmVlJiMzNDssCiAgICAmIzM0O2JuZ2VfaHdybV90eF9yaW5nX2ZyZWUmIzM0OywKICAgICYjMzQ7Ym5nZV9od3JtX2NwX3JpbmdfZnJlZSYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm1fcmluZ19mcmVlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCcm9hZGNvbSBCTkdFIGFuZCBCTkdfUkUgZHJpdmVycyB0byBzdXBwb3J0IDMyLWJpdCBmaXJtd2FyZSByaW5nIElEcyBpbnN0ZWFkIG9mIDE2LWJpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgZHJpdmVyJiMzOTtzIGludGVyYWN0aW9uIHdpdGggdGhlIGhhcmR3YXJlL2Zpcm13YXJlIGR1cmluZyByaW5nIGFsbG9jYXRpb24gYW5kIGZyZWVpbmcuIFRoZSBkcml2ZXIgY2FuIGJlIHRlc3RlZCB2aWEgUENJIGVtdWxhdGlvbiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JOR0UmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9CTkdfUkUmIzM0OywKICAgICYjMzQ7RENCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Ym5nX3JlX25ldF9yaW5nX2ZyZWUmIzM0OywKICAgICYjMzQ7Ym5nX3JlX25ldF9yaW5nX2FsbG9jJiMzNDssCiAgICAmIzM0O2h3cm1fcmluZ19mcmVlX3NlbmRfbXNnJiMzNDssCiAgICAmIzM0O2h3cm1fcmluZ19hbGxvY19zZW5kX21zZyYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm1fcnhfYWdnX3JpbmdfYWxsb2MmIzM0OywKICAgICYjMzQ7Ym5nZV9od3JtX3J4X3JpbmdfYWxsb2MmIzM0OywKICAgICYjMzQ7Ym5nZV9od3JtX3JpbmdfYWxsb2MmIzM0OywKICAgICYjMzQ7Ym5nZV9od3JtX3J4X3JpbmdfZnJlZSYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm1fcnhfYWdnX3JpbmdfZnJlZSYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm1fdHhfcmluZ19mcmVlJiMzNDssCiAgICAmIzM0O2JuZ2VfaHdybV9jcF9yaW5nX2ZyZWUmIzM0OywKICAgICYjMzQ7Ym5nZV9od3JtX3JpbmdfZnJlZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQnJvYWRjb20gQk5HRSBhbmQgQk5HX1JFIGRyaXZlcnMgdG8gc3VwcG9ydCAzMi1iaXQgZmlybXdhcmUgcmluZyBJRHMgaW5zdGVhZCBvZiAxNi1iaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGRyaXZlciYjMzk7cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBoYXJkd2FyZS9maXJtd2FyZSBkdXJpbmcgcmluZyBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nLiBUaGUgZHJpdmVyIGNhbiBiZSB0ZXN0ZWQgdmlhIFBDSSBlbXVsYXRpb24gaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTU6MDA6MDYuMTI5NDgzMTQzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA4NjU2NjQ1OTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJOR0VcIixcbiAgICBcIklORklOSUJBTkRfQk5HX1JFXCIsXG4gICAgXCJEQ0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJibmdfcmVfbmV0X3JpbmdfZnJlZVwiLFxuICAgIFwiYm5nX3JlX25ldF9yaW5nX2FsbG9jXCIsXG4gICAgXCJod3JtX3JpbmdfZnJlZV9zZW5kX21zZ1wiLFxuICAgIFwiaHdybV9yaW5nX2FsbG9jX3NlbmRfbXNnXCIsXG4gICAgXCJibmdlX2h3cm1fcnhfYWdnX3JpbmdfYWxsb2NcIixcbiAgICBcImJuZ2VfaHdybV9yeF9yaW5nX2FsbG9jXCIsXG4gICAgXCJibmdlX2h3cm1fcmluZ19hbGxvY1wiLFxuICAgIFwiYm5nZV9od3JtX3J4X3JpbmdfZnJlZVwiLFxuICAgIFwiYm5nZV9od3JtX3J4X2FnZ19yaW5nX2ZyZWVcIixcbiAgICBcImJuZ2VfaHdybV90eF9yaW5nX2ZyZWVcIixcbiAgICBcImJuZ2VfaHdybV9jcF9yaW5nX2ZyZWVcIixcbiAgICBcImJuZ2VfaHdybV9yaW5nX2ZyZWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQnJvYWRjb20gQk5HRSBhbmQgQk5HX1JFIGRyaXZlcnMgdG8gc3VwcG9ydCAzMi1iaXQgZmlybXdhcmUgcmluZyBJRHMgaW5zdGVhZCBvZiAxNi1iaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGRyaXZlcidzIGludGVyYWN0aW9uIHdpdGggdGhlIGhhcmR3YXJlL2Zpcm13YXJlIGR1cmluZyByaW5nIGFsbG9jYXRpb24gYW5kIGZyZWVpbmcuIFRoZSBkcml2ZXIgY2FuIGJlIHRlc3RlZCB2aWEgUENJIGVtdWxhdGlvbiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE1OjAwOjA2LjEyOTQ5MjUzM1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA0OTM2NzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOTk2NmZhNjRmZmIyY2RkNDYwMzZiZDVkZDJmNmI5MDNiZDBhOWQ3MVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAzMCAxNTowMDowNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jXFxuaW5kZXggNzFhN2NhMjE5NmFkODguLjMxMWM4YmM5MzE2MDNhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jXFxuKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmNcXG5AQCAtMTEzLDcgKzExMyw3IEBAIHN0YXRpYyB2b2lkIGJuZ19yZV9maWxsX2Z3X21zZyhzdHJ1Y3QgYm5nZV9md19tc2cgKmZ3X21zZywgdm9pZCAqbXNnLFxcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGJuZ19yZV9uZXRfcmluZ19mcmVlKHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2LFxcbi1cXHRcXHRcXHRcXHR1MTYgZndfcmluZ19pZCwgaW50IHR5cGUpXFxuK1xcdFxcdFxcdFxcdHUzMiBmd19yaW5nX2lkLCBpbnQgdHlwZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgYm5nZV9hdXhyX2RldiAqYXV4X2RldiA9IHJkZXYtXFx1MDAzZWF1eF9kZXY7XFxuIFxcdHN0cnVjdCBod3JtX3JpbmdfZnJlZV9pbnB1dCByZXEgPSB7fTtcXG5AQCAtMTIzLDcgKzEyMyw3IEBAIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2ZyZWUoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYsXFxuIFxcbiBcXHRibmdfcmVfaW5pdF9od3JtX2hkcigodm9pZCAqKVxcdTAwMjZyZXEsIEhXUk1fUklOR19GUkVFKTtcXG4gXFx0cmVxLnJpbmdfdHlwZSA9IHR5cGU7XFxuLVxcdHJlcS5yaW5nX2lkID0gY3B1X3RvX2xlMTYoZndfcmluZ19pZCk7XFxuK1xcdHJlcS5yaW5nX2lkID0gY3B1X3RvX2xlMzIoZndfcmluZ19pZCk7XFxuIFxcdGJuZ19yZV9maWxsX2Z3X21zZyhcXHUwMDI2ZndfbXNnLCAodm9pZCAqKVxcdTAwMjZyZXEsIHNpemVvZihyZXEpLCAodm9pZCAqKVxcdTAwMjZyZXNwLFxcbiBcXHRcXHRcXHQgICAgc2l6ZW9mKHJlc3ApLCBCTkdFX0RGTFRfSFdSTV9DTURfVElNRU9VVCk7XFxuIFxcdHJjID0gYm5nZV9zZW5kX21zZyhhdXhfZGV2LCBcXHUwMDI2ZndfbXNnKTtcXG5AQCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2FsbG9jKHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2LFxcbiBcXHRcXHRcXHQgICBzaXplb2YocmVzcCksIEJOR0VfREZMVF9IV1JNX0NNRF9USU1FT1VUKTtcXG4gXFx0cmMgPSBibmdlX3NlbmRfbXNnKGF1eF9kZXYsIFxcdTAwMjZmd19tc2cpO1xcbiBcXHRpZiAoIXJjKVxcbi1cXHRcXHQqZndfcmluZ19pZCA9IGxlMTZfdG9fY3B1KHJlc3AucmluZ19pZCk7XFxuK1xcdFxcdCpmd19yaW5nX2lkID0gKHUxNilsZTMyX3RvX2NwdShyZXNwLnJpbmdfaWQpO1xcbiBcXG4gXFx0cmV0dXJuIHJjO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmhcXG5pbmRleCBmMjFjZmY2NTFmZDQ0YS4uNDQ3OWNjZDA3MWY1MzIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaFxcbkBAIC0zNiw2ICszNiw3IEBAIHN0cnVjdCBibmdlX3BmX2luZm8ge1xcbiB9O1xcbiBcXG4gI2RlZmluZSBJTlZBTElEX0hXX1JJTkdfSUQgICAgICAoKHUxNiktMSlcXG4rI2RlZmluZSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVRcXHQoVTMyX01BWClcXG4gXFxuIGVudW0ge1xcbiBcXHRCTkdFX0ZXX0NBUF9TSE9SVF9DTURcXHRcXHRcXHRcXHQ9IEJJVF9VTEwoMCksXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmNcXG5pbmRleCAxYzljZmVjMWI2MzNmYy4uNjUxYzVlNzgzNTE2Y2MgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuY1xcbkBAIC0xMjgzLDcgKzEyODMsNyBAQCBpbnQgYm5nZV9od3JtX3N0YXRfY3R4X2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4pXFxuIFxcbiBpbnQgaHdybV9yaW5nX2ZyZWVfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcXG4gXFx0XFx0XFx0ICAgIHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nLFxcbi1cXHRcXHRcXHQgICAgdTMyIHJpbmdfdHlwZSwgaW50IGNtcGxfcmluZ19pZClcXG4rXFx0XFx0XFx0ICAgIHUzMiByaW5nX3R5cGUsIHUzMiBjbXBsX3JpbmdfaWQpXFxuIHtcXG4gXFx0c3RydWN0IGh3cm1fcmluZ19mcmVlX2lucHV0ICpyZXE7XFxuIFxcdHN0cnVjdCBibmdlX2RldiAqYmQgPSBibi1cXHUwMDNlYmQ7XFxuQEAgLTEyOTUsNyArMTI5NSw3IEBAIGludCBod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxcbiBcXG4gXFx0cmVxLVxcdTAwM2VjbXBsX3JpbmcgPSBjcHVfdG9fbGUxNihjbXBsX3JpbmdfaWQpO1xcbiBcXHRyZXEtXFx1MDAzZXJpbmdfdHlwZSA9IHJpbmdfdHlwZTtcXG4tXFx0cmVxLVxcdTAwM2VyaW5nX2lkID0gY3B1X3RvX2xlMTYocmluZy1cXHUwMDNlZndfcmluZ19pZCk7XFxuK1xcdHJlcS1cXHUwMDNlcmluZ19pZCA9IGNwdV90b19sZTMyKHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQpO1xcbiBcXG4gXFx0Ym5nZV9od3JtX3JlcV9ob2xkKGJkLCByZXEpO1xcbiBcXHRyYyA9IGJuZ2VfaHdybV9yZXFfc2VuZChiZCwgcmVxKTtcXG5AQCAtMTMxNyw3ICsxMzE3LDcgQEAgaW50IGh3cm1fcmluZ19hbGxvY19zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxcbiBcXHRzdHJ1Y3QgaHdybV9yaW5nX2FsbG9jX291dHB1dCAqcmVzcDtcXG4gXFx0c3RydWN0IGh3cm1fcmluZ19hbGxvY19pbnB1dCAqcmVxO1xcbiBcXHRzdHJ1Y3QgYm5nZV9kZXYgKmJkID0gYm4tXFx1MDAzZWJkO1xcbi1cXHR1MTYgcmluZ19pZCwgZmxhZ3MgPSAwO1xcbitcXHR1MzIgcmluZ19pZCwgZmxhZ3MgPSAwO1xcbiBcXHRpbnQgcmM7XFxuIFxcbiBcXHRyYyA9IGJuZ2VfaHdybV9yZXFfaW5pdChiZCwgcmVxLCBIV1JNX1JJTkdfQUxMT0MpO1xcbkBAIC0xNDAxLDcgKzE0MDEsNyBAQCBpbnQgaHdybV9yaW5nX2FsbG9jX3NlbmRfbXNnKHN0cnVjdCBibmdlX25ldCAqYm4sXFxuIFxcbiBcXHRyZXNwID0gYm5nZV9od3JtX3JlcV9ob2xkKGJkLCByZXEpO1xcbiBcXHRyYyA9IGJuZ2VfaHdybV9yZXFfc2VuZChiZCwgcmVxKTtcXG4tXFx0cmluZ19pZCA9IGxlMTZfdG9fY3B1KHJlc3AtXFx1MDAzZXJpbmdfaWQpO1xcbitcXHRyaW5nX2lkID0gbGUzMl90b19jcHUocmVzcC1cXHUwMDNlcmluZ19pZCk7XFxuIFxcdGJuZ2VfaHdybV9yZXFfZHJvcChiZCwgcmVxKTtcXG4gXFxuIGV4aXQ6XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmhcXG5pbmRleCAzNTAxZGU3YTg5YjkxOS4uYmY0NTJlMzkwZDViZDEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuaFxcbkBAIC01MCw3ICs1MCw3IEBAIGludCBibmdlX2h3cm1fY2ZhX2wyX3NldF9yeF9tYXNrKHN0cnVjdCBibmdlX2RldiAqYmQsXFxuIHZvaWQgYm5nZV9od3JtX3N0YXRfY3R4X2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibik7XFxuIGludCBibmdlX2h3cm1fc3RhdF9jdHhfYWxsb2Moc3RydWN0IGJuZ2VfbmV0ICpibik7XFxuIGludCBod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyxcXG4tXFx0XFx0XFx0ICAgIHUzMiByaW5nX3R5cGUsIGludCBjbXBsX3JpbmdfaWQpO1xcbitcXHRcXHRcXHQgICAgdTMyIHJpbmdfdHlwZSwgdTMyIGNtcGxfcmluZ19pZCk7XFxuIGludCBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcXG4gXFx0XFx0XFx0ICAgICBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyxcXG4gXFx0XFx0XFx0ICAgICB1MzIgcmluZ190eXBlLCB1MzIgbWFwX2luZGV4KTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jXFxuaW5kZXggNzA3NjgxOTMwMDRjYjIuLjZmN2VmNTA2ZDRlMThjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuY1xcbkBAIC0xMzI3LDEyICsxMzI3LDEyIEBAIHN0YXRpYyBpbnQgYm5nZV9hbGxvY19jb3JlKHN0cnVjdCBibmdlX25ldCAqYm4pXFxuIFxcdHJldHVybiByYztcXG4gfVxcbiBcXG4tdTE2IGJuZ2VfY3BfcmluZ19mb3Jfcngoc3RydWN0IGJuZ2VfcnhfcmluZ19pbmZvICpyeHIpXFxuK3UzMiBibmdlX2NwX3JpbmdfZm9yX3J4KHN0cnVjdCBibmdlX3J4X3JpbmdfaW5mbyAqcnhyKVxcbiB7XFxuIFxcdHJldHVybiByeHItXFx1MDAzZXJ4X2Nwci1cXHUwMDNlcmluZ19zdHJ1Y3QuZndfcmluZ19pZDtcXG4gfVxcbiBcXG4tdTE2IGJuZ2VfY3BfcmluZ19mb3JfdHgoc3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIpXFxuK3UzMiBibmdlX2NwX3JpbmdfZm9yX3R4KHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyKVxcbiB7XFxuIFxcdHJldHVybiB0eHItXFx1MDAzZXR4X2Nwci1cXHUwMDNlcmluZ19zdHJ1Y3QuZndfcmluZ19pZDtcXG4gfVxcbkBAIC0xMzc1LDEyICsxMzc1LDEyIEBAIHN0YXRpYyB2b2lkIGJuZ2VfaW5pdF9ucV90cmVlKHN0cnVjdCBibmdlX25ldCAqYm4pXFxuIFxcdFxcdHN0cnVjdCBibmdlX25xX3JpbmdfaW5mbyAqbnFyID0gXFx1MDAyNmJuLVxcdTAwM2VibmFwaVtpXS1cXHUwMDNlbnFfcmluZztcXG4gXFx0XFx0c3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3QgKnJpbmcgPSBcXHUwMDI2bnFyLVxcdTAwM2VyaW5nX3N0cnVjdDtcXG4gXFxuLVxcdFxcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XFxuK1xcdFxcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XFxuIFxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBucXItXFx1MDAzZWNwX3JpbmdfY291bnQ7IGorKykge1xcbiBcXHRcXHRcXHRzdHJ1Y3QgYm5nZV9jcF9yaW5nX2luZm8gKmNwciA9IFxcdTAwMjZucXItXFx1MDAzZWNwX3JpbmdfYXJyW2pdO1xcbiBcXG4gXFx0XFx0XFx0cmluZyA9IFxcdTAwMjZjcHItXFx1MDAzZXJpbmdfc3RydWN0O1xcbi1cXHRcXHRcXHRyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xcbitcXHRcXHRcXHRyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4gfVxcbkBAIC0xNjM3LDcgKzE2MzcsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2luaXRfb25lX3J4X3JpbmdfcnhiZChzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxcbiBcXG4gXFx0cmluZyA9IFxcdTAwMjZyeHItXFx1MDAzZXJ4X3Jpbmdfc3RydWN0O1xcbiBcXHRibmdlX2luaXRfcnhiZF9wYWdlcyhyaW5nLCB0eXBlKTtcXG4tXFx0cmluZy1cXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcXG4rXFx0cmluZy1cXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgYm5nZV9pbml0X29uZV9hZ2dfcmluZ19yeGJkKHN0cnVjdCBibmdlX25ldCAqYm4sXFxuQEAgLTE2NDcsNyArMTY0Nyw3IEBAIHN0YXRpYyB2b2lkIGJuZ2VfaW5pdF9vbmVfYWdnX3JpbmdfcnhiZChzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxcbiBcXHR1MzIgdHlwZTtcXG4gXFxuIFxcdHJpbmcgPSBcXHUwMDI2cnhyLVxcdTAwM2VyeF9hZ2dfcmluZ19zdHJ1Y3Q7XFxuLVxcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XFxuK1xcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XFxuIFxcdGlmIChibmdlX2lzX2FnZ19yZXFkKGJuLVxcdTAwM2ViZCkpIHtcXG4gXFx0XFx0dHlwZSA9ICgodTMyKUJOR0VfUlhfUEFHRV9TSVpFIFxcdTAwM2NcXHUwMDNjIFJYX0JEX0xFTl9TSElGVCkgfFxcbiBcXHRcXHRcXHRSWF9CRF9UWVBFX1JYX0FHR19CRCB8IFJYX0JEX0ZMQUdTX1NPUDtcXG5AQCAtMTcwOCw3ICsxNzA4LDcgQEAgc3RhdGljIHZvaWQgYm5nZV9pbml0X3R4X3JpbmdzKHN0cnVjdCBibmdlX25ldCAqYm4pXFxuIFxcdFxcdHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyID0gXFx1MDAyNmJuLVxcdTAwM2V0eF9yaW5nW2ldO1xcbiBcXHRcXHRzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyA9IFxcdTAwMjZ0eHItXFx1MDAzZXR4X3Jpbmdfc3RydWN0O1xcbiBcXG4tXFx0XFx0cmluZy1cXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcXG4rXFx0XFx0cmluZy1cXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcXG4gXFxuIFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJuLVxcdTAwM2VuZXRkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1RYLFxcbiBcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZ0eHItXFx1MDAzZWJuYXBpLVxcdTAwM2VuYXBpKTtcXG5AQCAtMTg2Nyw3ICsxODY3LDcgQEAgc3RhdGljIGludCBibmdlX2h3cm1fcnhfYWdnX3JpbmdfYWxsb2Moc3RydWN0IGJuZ2VfbmV0ICpibixcXG4gXFx0XFx0ICAgIHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQpO1xcbiBcXHRibmdlX2RiX3dyaXRlKGJuLVxcdTAwM2ViZCwgXFx1MDAyNnJ4ci1cXHUwMDNlcnhfYWdnX2RiLCByeHItXFx1MDAzZXJ4X2FnZ19wcm9kKTtcXG4gXFx0Ym5nZV9kYl93cml0ZShibi1cXHUwMDNlYmQsIFxcdTAwMjZyeHItXFx1MDAzZXJ4X2RiLCByeHItXFx1MDAzZXJ4X3Byb2QpO1xcbi1cXHRibi1cXHUwMDNlZ3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSByaW5nLVxcdTAwM2Vmd19yaW5nX2lkO1xcbitcXHRibi1cXHUwMDNlZ3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSAodTE2KXJpbmctXFx1MDAzZWZ3X3JpbmdfaWQ7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbkBAIC0xODg2LDcgKzE4ODYsNyBAQCBzdGF0aWMgaW50IGJuZ2VfaHdybV9yeF9yaW5nX2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4sXFxuIFxcdFxcdHJldHVybiByYztcXG4gXFxuIFxcdGJuZ2Vfc2V0X2RiKGJuLCBcXHUwMDI2cnhyLVxcdTAwM2VyeF9kYiwgdHlwZSwgbWFwX2lkeCwgcmluZy1cXHUwMDNlZndfcmluZ19pZCk7XFxuLVxcdGJuLVxcdTAwM2VncnBfaW5mb1ttYXBfaWR4XS5yeF9md19yaW5nX2lkID0gcmluZy1cXHUwMDNlZndfcmluZ19pZDtcXG4rXFx0Ym4tXFx1MDAzZWdycF9pbmZvW21hcF9pZHhdLnJ4X2Z3X3JpbmdfaWQgPSAodTE2KXJpbmctXFx1MDAzZWZ3X3JpbmdfaWQ7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbkBAIC0xOTE2LDcgKzE5MTYsNyBAQCBzdGF0aWMgaW50IGJuZ2VfaHdybV9yaW5nX2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4pXFxuIFxcdFxcdGJuZ2Vfc2V0X2RiKGJuLCBcXHUwMDI2bnFyLVxcdTAwM2VucV9kYiwgdHlwZSwgbWFwX2lkeCwgcmluZy1cXHUwMDNlZndfcmluZ19pZCk7XFxuIFxcdFxcdGJuZ2VfZGJfbnEoYm4sIFxcdTAwMjZucXItXFx1MDAzZW5xX2RiLCBucXItXFx1MDAzZW5xX3Jhd19jb25zKTtcXG4gXFx0XFx0ZW5hYmxlX2lycSh2ZWN0b3IpO1xcbi1cXHRcXHRibi1cXHUwMDNlZ3JwX2luZm9baV0ubnFfZndfcmluZ19pZCA9IHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQ7XFxuK1xcdFxcdGJuLVxcdTAwM2VncnBfaW5mb1tpXS5ucV9md19yaW5nX2lkID0gKHUxNilyaW5nLVxcdTAwM2Vmd19yaW5nX2lkO1xcbiBcXG4gXFx0XFx0aWYgKCFpKSB7XFxuIFxcdFxcdFxcdHJjID0gYm5nZV9od3JtX3NldF9hc3luY19ldmVudF9jcihiZCwgcmluZy1cXHUwMDNlZndfcmluZ19pZCk7XFxuQEAgLTE5ODYsMTUgKzE5ODYsMTMgQEAgdm9pZCBibmdlX2ZpbGxfaHdfcnNzX3RibChzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV92bmljX2luZm8gKnZuaWMpXFxuIFxcdHRibF9zaXplID0gYm5nZV9nZXRfcnhmaF9pbmRpcl9zaXplKGJkKTtcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB0Ymxfc2l6ZTsgaSsrKSB7XFxuLVxcdFxcdHUxNiByaW5nX2lkLCBqO1xcbitcXHRcXHR1MzIgajtcXG4gXFxuIFxcdFxcdGogPSBiZC1cXHUwMDNlcnNzX2luZGlyX3RibFtpXTtcXG4gXFx0XFx0cnhyID0gXFx1MDAyNmJuLVxcdTAwM2VyeF9yaW5nW2pdO1xcbiBcXG4tXFx0XFx0cmluZ19pZCA9IHJ4ci1cXHUwMDNlcnhfcmluZ19zdHJ1Y3QuZndfcmluZ19pZDtcXG4tXFx0XFx0KnJpbmdfdGJsKysgPSBjcHVfdG9fbGUxNihyaW5nX2lkKTtcXG4tXFx0XFx0cmluZ19pZCA9IGJuZ2VfY3BfcmluZ19mb3JfcngocnhyKTtcXG4tXFx0XFx0KnJpbmdfdGJsKysgPSBjcHVfdG9fbGUxNihyaW5nX2lkKTtcXG4rXFx0XFx0KnJpbmdfdGJsKysgPSBjcHVfdG9fbGUxNihyeHItXFx1MDAzZXJ4X3Jpbmdfc3RydWN0LmZ3X3JpbmdfaWQpO1xcbitcXHRcXHQqcmluZ190YmwrKyA9IGNwdV90b19sZTE2KGJuZ2VfY3BfcmluZ19mb3JfcngocnhyKSk7XFxuIFxcdH1cXG4gfVxcbiBcXG5AQCAtMjI4NSw3ICsyMjgzLDcgQEAgc3RhdGljIHZvaWQgYm5nZV9kaXNhYmxlX2ludChzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxcbiBcXHRcXHRucXIgPSBcXHUwMDI2Ym5hcGktXFx1MDAzZW5xX3Jpbmc7XFxuIFxcdFxcdHJpbmcgPSBcXHUwMDI2bnFyLVxcdTAwM2VyaW5nX3N0cnVjdDtcXG4gXFxuLVxcdFxcdGlmIChyaW5nLVxcdTAwM2Vmd19yaW5nX2lkICE9IElOVkFMSURfSFdfUklOR19JRClcXG4rXFx0XFx0aWYgKHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgIT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKVxcbiBcXHRcXHRcXHRibmdlX2RiX25xKGJuLCBcXHUwMDI2bnFyLVxcdTAwM2VucV9kYiwgbnFyLVxcdTAwM2VucV9yYXdfY29ucyk7XFxuIFxcdH1cXG4gfVxcbkBAIC0yNDAxLDcgKzIzOTksNyBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXFxuIFxcdHUzMiBncnBfaWR4ID0gcnhyLVxcdTAwM2VibmFwaS1cXHUwMDNlaW5kZXg7XFxuIFxcdHUzMiBjbXBsX3JpbmdfaWQ7XFxuIFxcbi1cXHRpZiAocmluZy1cXHUwMDNlZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSUQpXFxuK1xcdGlmIChyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRF8zMkJJVClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0Y21wbF9yaW5nX2lkID0gYm5nZV9jcF9yaW5nX2Zvcl9yeChyeHIpO1xcbkBAIC0yNDA5LDcgKzI0MDcsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXFxuIFxcdFxcdFxcdFxcdFJJTkdfRlJFRV9SRVFfUklOR19UWVBFX1JYLFxcbiBcXHRcXHRcXHRcXHRjbG9zZV9wYXRoID8gY21wbF9yaW5nX2lkIDpcXG4gXFx0XFx0XFx0XFx0SU5WQUxJRF9IV19SSU5HX0lEKTtcXG4tXFx0cmluZy1cXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcXG4rXFx0cmluZy1cXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcXG4gXFx0Ym4tXFx1MDAzZWdycF9pbmZvW2dycF9pZHhdLnJ4X2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XFxuIH1cXG4gXFxuQEAgLTI0MjEsMTQgKzI0MTksMTQgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3J4X2FnZ19yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibixcXG4gXFx0dTMyIGdycF9pZHggPSByeHItXFx1MDAzZWJuYXBpLVxcdTAwM2VpbmRleDtcXG4gXFx0dTMyIGNtcGxfcmluZ19pZDtcXG4gXFxuLVxcdGlmIChyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRClcXG4rXFx0aWYgKHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHRjbXBsX3JpbmdfaWQgPSBibmdlX2NwX3JpbmdfZm9yX3J4KHJ4cik7XFxuIFxcdGh3cm1fcmluZ19mcmVlX3NlbmRfbXNnKGJuLCByaW5nLCBSSU5HX0ZSRUVfUkVRX1JJTkdfVFlQRV9SWF9BR0csXFxuIFxcdFxcdFxcdFxcdGNsb3NlX3BhdGggPyBjbXBsX3JpbmdfaWQgOlxcbiBcXHRcXHRcXHRcXHRJTlZBTElEX0hXX1JJTkdfSUQpO1xcbi1cXHRyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xcbitcXHRyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xcbiBcXHRibi1cXHUwMDNlZ3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XFxuIH1cXG4gXFxuQEAgLTI0MzksMTQgKzI0MzcsMTQgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3R4X3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxcbiBcXHRzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyA9IFxcdTAwMjZ0eHItXFx1MDAzZXR4X3Jpbmdfc3RydWN0O1xcbiBcXHR1MzIgY21wbF9yaW5nX2lkO1xcbiBcXG4tXFx0aWYgKHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEKVxcbitcXHRpZiAocmluZy1cXHUwMDNlZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuIFxcdGNtcGxfcmluZ19pZCA9IGNsb3NlX3BhdGggPyBibmdlX2NwX3JpbmdfZm9yX3R4KHR4cikgOlxcbiBcXHRcXHQgICAgICAgSU5WQUxJRF9IV19SSU5HX0lEO1xcbiBcXHRod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfVFgsXFxuIFxcdFxcdFxcdFxcdGNtcGxfcmluZ19pZCk7XFxuLVxcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XFxuK1xcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9jcF9yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibixcXG5AQCAtMjQ1NSwxMiArMjQ1MywxMiBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fY3BfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXFxuIFxcdHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nO1xcbiBcXG4gXFx0cmluZyA9IFxcdTAwMjZjcHItXFx1MDAzZXJpbmdfc3RydWN0O1xcbi1cXHRpZiAocmluZy1cXHUwMDNlZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSUQpXFxuK1xcdGlmIChyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRF8zMkJJVClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0aHdybV9yaW5nX2ZyZWVfc2VuZF9tc2coYm4sIHJpbmcsIFJJTkdfRlJFRV9SRVFfUklOR19UWVBFX0wyX0NNUEwsXFxuIFxcdFxcdFxcdFxcdElOVkFMSURfSFdfUklOR19JRCk7XFxuLVxcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XFxuK1xcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibiwgYm9vbCBjbG9zZV9wYXRoKVxcbkBAIC0yNDk2LDExICsyNDk0LDExIEBAIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibiwgYm9vbCBjbG9zZV9wYXRoKVxcbiBcXHRcXHRcXHRibmdlX2h3cm1fY3BfcmluZ19mcmVlKGJuLCBcXHUwMDI2bnFyLVxcdTAwM2VjcF9yaW5nX2FycltqXSk7XFxuIFxcbiBcXHRcXHRyaW5nID0gXFx1MDAyNm5xci1cXHUwMDNlcmluZ19zdHJ1Y3Q7XFxuLVxcdFxcdGlmIChyaW5nLVxcdTAwM2Vmd19yaW5nX2lkICE9IElOVkFMSURfSFdfUklOR19JRCkge1xcbitcXHRcXHRpZiAocmluZy1cXHUwMDNlZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpIHtcXG4gXFx0XFx0XFx0aHdybV9yaW5nX2ZyZWVfc2VuZF9tc2coYm4sIHJpbmcsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFJJTkdfRlJFRV9SRVFfUklOR19UWVBFX05RLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRJTlZBTElEX0hXX1JJTkdfSUQpO1xcbi1cXHRcXHRcXHRyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xcbitcXHRcXHRcXHRyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xcbiBcXHRcXHRcXHRibi1cXHUwMDNlZ3JwX2luZm9baV0ubnFfZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcXG4gXFx0XFx0fVxcbiBcXHR9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuaFxcbmluZGV4IGY0NjM2YjViMGNmM2YwLi5kMTc3OTE5YzJlMTE3MCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmhcXG5AQCAtNjMwLDggKzYzMCw4IEBAIHN0cnVjdCBibmdlX2wyX2ZpbHRlciB7XFxuIFxcdHJlZmNvdW50X3RcXHRcXHRyZWZjbnQ7XFxuIH07XFxuIFxcbi11MTYgYm5nZV9jcF9yaW5nX2Zvcl9yeChzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cik7XFxuLXUxNiBibmdlX2NwX3JpbmdfZm9yX3R4KHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyKTtcXG4rdTMyIGJuZ2VfY3BfcmluZ19mb3Jfcngoc3RydWN0IGJuZ2VfcnhfcmluZ19pbmZvICpyeHIpO1xcbit1MzIgYm5nZV9jcF9yaW5nX2Zvcl90eChzdHJ1Y3QgYm5nZV90eF9yaW5nX2luZm8gKnR4cik7XFxuIHZvaWQgYm5nZV9maWxsX2h3X3Jzc190Ymwoc3RydWN0IGJuZ2VfbmV0ICpibiwgc3RydWN0IGJuZ2Vfdm5pY19pbmZvICp2bmljKTtcXG4gaW50IGJuZ2VfYWxsb2NfcnhfZGF0YShzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cixcXG4gXFx0XFx0ICAgICAgIHUxNiBwcm9kLCBnZnBfdCBnZnApO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2Vfcm1lbS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX3JtZW0uaFxcbmluZGV4IDM0MWM3ZjgxZWQwOTJiLi5iYjBjNzlhMWVlNjBmNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2Vfcm1lbS5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX3JtZW0uaFxcbkBAIC0xODQsNyArMTg0LDcgQEAgc3RydWN0IGJuZ2VfY3R4X21lbV9pbmZvIHtcXG4gc3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3Qge1xcbiBcXHRzdHJ1Y3QgYm5nZV9yaW5nX21lbV9pbmZvXFx0cmluZ19tZW07XFxuIFxcbi1cXHR1MTZcXHRcXHRcXHRmd19yaW5nX2lkO1xcbitcXHR1MzJcXHRcXHRcXHRmd19yaW5nX2lkO1xcbiBcXHR1bmlvbiB7XFxuIFxcdFxcdHUxNlxcdFxcdGdycF9pZHg7XFxuIFxcdFxcdHUxNlxcdFxcdG1hcF9pZHg7IC8qIFVzZWQgYnkgTlFzICovXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYm5nZS9oc2kuaCBiL2luY2x1ZGUvbGludXgvYm5nZS9oc2kuaFxcbmluZGV4IDhlYTEzZDU0MDdlZWNkLi4xZjdiZDk2NDE1YTUyNyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2JuZ2UvaHNpLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2JuZ2UvaHNpLmhcXG5AQCAtODMxNyw4ICs4MzE3LDcgQEAgc3RydWN0IGh3cm1fcmluZ19hbGxvY19vdXRwdXQge1xcbiBcXHRfX2xlMTZcXHRyZXFfdHlwZTtcXG4gXFx0X19sZTE2XFx0c2VxX2lkO1xcbiBcXHRfX2xlMTZcXHRyZXNwX2xlbjtcXG4tXFx0X19sZTE2XFx0cmluZ19pZDtcXG4tXFx0X19sZTE2XFx0bG9naWNhbF9yaW5nX2lkO1xcbitcXHRfX2xlMzJcXHRyaW5nX2lkO1xcbiBcXHR1OFxcdHB1c2hfYnVmZmVyX2luZGV4O1xcbiBcXHQjZGVmaW5lIFJJTkdfQUxMT0NfUkVTUF9QVVNIX0JVRkZFUl9JTkRFWF9QSU5HX0JVRkZFUiAweDBVTFxcbiBcXHQjZGVmaW5lIFJJTkdfQUxMT0NfUkVTUF9QVVNIX0JVRkZFUl9JTkRFWF9QT05HX0JVRkZFUiAweDFVTFxcbkBAIC04MzQ1LDEwICs4MzQ0LDEwIEBAIHN0cnVjdCBod3JtX3JpbmdfZnJlZV9pbnB1dCB7XFxuIFxcdHU4XFx0ZmxhZ3M7XFxuIFxcdCNkZWZpbmUgUklOR19GUkVFX1JFUV9GTEFHU19WSVJUSU9fUklOR19WQUxJRCAweDFVTFxcbiBcXHQjZGVmaW5lIFJJTkdfRlJFRV9SRVFfRkxBR1NfTEFTVCAgICAgICAgICAgICBSSU5HX0ZSRUVfUkVRX0ZMQUdTX1ZJUlRJT19SSU5HX1ZBTElEXFxuLVxcdF9fbGUxNlxcdHJpbmdfaWQ7XFxuK1xcdF9fbGUxNlxcdHVudXNlZF8xO1xcbiBcXHRfX2xlMzJcXHRwcm9kX2lkeDtcXG4gXFx0X19sZTMyXFx0b3BhcXVlO1xcbi1cXHRfX2xlMzJcXHR1bnVzZWRfMTtcXG4rXFx0X19sZTMyXFx0cmluZ19pZDtcXG4gfTtcXG4gXFxuIC8qIGh3cm1fcmluZ19mcmVlX291dHB1dCAoc2l6ZToxMjhiLzE2QikgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTU6MDA6MDYuNjM1MzQ3NDAzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDgxNTA3NjM2ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQk5HRVwiLFxuICAgIFwiSU5GSU5JQkFORF9CTkdfUkVcIixcbiAgICBcIkRDQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJuZ19yZV9uZXRfcmluZ19mcmVlXCIsXG4gICAgXCJibmdfcmVfbmV0X3JpbmdfYWxsb2NcIixcbiAgICBcImh3cm1fcmluZ19mcmVlX3NlbmRfbXNnXCIsXG4gICAgXCJod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2dcIixcbiAgICBcImJuZ2VfaHdybV9yeF9hZ2dfcmluZ19hbGxvY1wiLFxuICAgIFwiYm5nZV9od3JtX3J4X3JpbmdfYWxsb2NcIixcbiAgICBcImJuZ2VfaHdybV9yaW5nX2FsbG9jXCIsXG4gICAgXCJibmdlX2h3cm1fcnhfcmluZ19mcmVlXCIsXG4gICAgXCJibmdlX2h3cm1fcnhfYWdnX3JpbmdfZnJlZVwiLFxuICAgIFwiYm5nZV9od3JtX3R4X3JpbmdfZnJlZVwiLFxuICAgIFwiYm5nZV9od3JtX2NwX3JpbmdfZnJlZVwiLFxuICAgIFwiYm5nZV9od3JtX3JpbmdfZnJlZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCcm9hZGNvbSBCTkdFIGFuZCBCTkdfUkUgZHJpdmVycyB0byBzdXBwb3J0IDMyLWJpdCBmaXJtd2FyZSByaW5nIElEcyBpbnN0ZWFkIG9mIDE2LWJpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgZHJpdmVyJ3MgaW50ZXJhY3Rpb24gd2l0aCB0aGUgaGFyZHdhcmUvZmlybXdhcmUgZHVyaW5nIHJpbmcgYWxsb2NhdGlvbiBhbmQgZnJlZWluZy4gVGhlIGRyaXZlciBjYW4gYmUgdGVzdGVkIHZpYSBQQ0kgZW11bGF0aW9uIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5OTY2ZmE2NGZmYjJjZGQ0NjAzNmJkNWRkMmY2YjkwM2JkMGE5ZDcxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTU6MDA6MDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jXG5pbmRleCA3MWE3Y2EyMTk2YWQ4OC4uMzExYzhiYzkzMTYwM2EgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuY1xuKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmNcbkBAIC0xMTMsNyArMTEzLDcgQEAgc3RhdGljIHZvaWQgYm5nX3JlX2ZpbGxfZndfbXNnKHN0cnVjdCBibmdlX2Z3X21zZyAqZndfbXNnLCB2b2lkICptc2csXG4gfVxuIFxuIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2ZyZWUoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYsXG4tXHRcdFx0XHR1MTYgZndfcmluZ19pZCwgaW50IHR5cGUpXG4rXHRcdFx0XHR1MzIgZndfcmluZ19pZCwgaW50IHR5cGUpXG4ge1xuIFx0c3RydWN0IGJuZ2VfYXV4cl9kZXYgKmF1eF9kZXYgPSByZGV2LVx1MDAzZWF1eF9kZXY7XG4gXHRzdHJ1Y3QgaHdybV9yaW5nX2ZyZWVfaW5wdXQgcmVxID0ge307XG5AQCAtMTIzLDcgKzEyMyw3IEBAIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2ZyZWUoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYsXG4gXG4gXHRibmdfcmVfaW5pdF9od3JtX2hkcigodm9pZCAqKVx1MDAyNnJlcSwgSFdSTV9SSU5HX0ZSRUUpO1xuIFx0cmVxLnJpbmdfdHlwZSA9IHR5cGU7XG4tXHRyZXEucmluZ19pZCA9IGNwdV90b19sZTE2KGZ3X3JpbmdfaWQpO1xuK1x0cmVxLnJpbmdfaWQgPSBjcHVfdG9fbGUzMihmd19yaW5nX2lkKTtcbiBcdGJuZ19yZV9maWxsX2Z3X21zZyhcdTAwMjZmd19tc2csICh2b2lkICopXHUwMDI2cmVxLCBzaXplb2YocmVxKSwgKHZvaWQgKilcdTAwMjZyZXNwLFxuIFx0XHRcdCAgICBzaXplb2YocmVzcCksIEJOR0VfREZMVF9IV1JNX0NNRF9USU1FT1VUKTtcbiBcdHJjID0gYm5nZV9zZW5kX21zZyhhdXhfZGV2LCBcdTAwMjZmd19tc2cpO1xuQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgaW50IGJuZ19yZV9uZXRfcmluZ19hbGxvYyhzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldixcbiBcdFx0XHQgICBzaXplb2YocmVzcCksIEJOR0VfREZMVF9IV1JNX0NNRF9USU1FT1VUKTtcbiBcdHJjID0gYm5nZV9zZW5kX21zZyhhdXhfZGV2LCBcdTAwMjZmd19tc2cpO1xuIFx0aWYgKCFyYylcbi1cdFx0KmZ3X3JpbmdfaWQgPSBsZTE2X3RvX2NwdShyZXNwLnJpbmdfaWQpO1xuK1x0XHQqZndfcmluZ19pZCA9ICh1MTYpbGUzMl90b19jcHUocmVzcC5yaW5nX2lkKTtcbiBcbiBcdHJldHVybiByYztcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaFxuaW5kZXggZjIxY2ZmNjUxZmQ0NGEuLjQ0NzljY2QwNzFmNTMyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oXG5AQCAtMzYsNiArMzYsNyBAQCBzdHJ1Y3QgYm5nZV9wZl9pbmZvIHtcbiB9O1xuIFxuICNkZWZpbmUgSU5WQUxJRF9IV19SSU5HX0lEICAgICAgKCh1MTYpLTEpXG4rI2RlZmluZSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVRcdChVMzJfTUFYKVxuIFxuIGVudW0ge1xuIFx0Qk5HRV9GV19DQVBfU0hPUlRfQ01EXHRcdFx0XHQ9IEJJVF9VTEwoMCksXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuY1xuaW5kZXggMWM5Y2ZlYzFiNjMzZmMuLjY1MWM1ZTc4MzUxNmNjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jXG5AQCAtMTI4Myw3ICsxMjgzLDcgQEAgaW50IGJuZ2VfaHdybV9zdGF0X2N0eF9hbGxvYyhzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxuIFxuIGludCBod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0XHRcdCAgICBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyxcbi1cdFx0XHQgICAgdTMyIHJpbmdfdHlwZSwgaW50IGNtcGxfcmluZ19pZClcbitcdFx0XHQgICAgdTMyIHJpbmdfdHlwZSwgdTMyIGNtcGxfcmluZ19pZClcbiB7XG4gXHRzdHJ1Y3QgaHdybV9yaW5nX2ZyZWVfaW5wdXQgKnJlcTtcbiBcdHN0cnVjdCBibmdlX2RldiAqYmQgPSBibi1cdTAwM2ViZDtcbkBAIC0xMjk1LDcgKzEyOTUsNyBAQCBpbnQgaHdybV9yaW5nX2ZyZWVfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcbiBcdHJlcS1cdTAwM2VjbXBsX3JpbmcgPSBjcHVfdG9fbGUxNihjbXBsX3JpbmdfaWQpO1xuIFx0cmVxLVx1MDAzZXJpbmdfdHlwZSA9IHJpbmdfdHlwZTtcbi1cdHJlcS1cdTAwM2VyaW5nX2lkID0gY3B1X3RvX2xlMTYocmluZy1cdTAwM2Vmd19yaW5nX2lkKTtcbitcdHJlcS1cdTAwM2VyaW5nX2lkID0gY3B1X3RvX2xlMzIocmluZy1cdTAwM2Vmd19yaW5nX2lkKTtcbiBcbiBcdGJuZ2VfaHdybV9yZXFfaG9sZChiZCwgcmVxKTtcbiBcdHJjID0gYm5nZV9od3JtX3JlcV9zZW5kKGJkLCByZXEpO1xuQEAgLTEzMTcsNyArMTMxNyw3IEBAIGludCBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcdHN0cnVjdCBod3JtX3JpbmdfYWxsb2Nfb3V0cHV0ICpyZXNwO1xuIFx0c3RydWN0IGh3cm1fcmluZ19hbGxvY19pbnB1dCAqcmVxO1xuIFx0c3RydWN0IGJuZ2VfZGV2ICpiZCA9IGJuLVx1MDAzZWJkO1xuLVx0dTE2IHJpbmdfaWQsIGZsYWdzID0gMDtcbitcdHUzMiByaW5nX2lkLCBmbGFncyA9IDA7XG4gXHRpbnQgcmM7XG4gXG4gXHRyYyA9IGJuZ2VfaHdybV9yZXFfaW5pdChiZCwgcmVxLCBIV1JNX1JJTkdfQUxMT0MpO1xuQEAgLTE0MDEsNyArMTQwMSw3IEBAIGludCBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcbiBcdHJlc3AgPSBibmdlX2h3cm1fcmVxX2hvbGQoYmQsIHJlcSk7XG4gXHRyYyA9IGJuZ2VfaHdybV9yZXFfc2VuZChiZCwgcmVxKTtcbi1cdHJpbmdfaWQgPSBsZTE2X3RvX2NwdShyZXNwLVx1MDAzZXJpbmdfaWQpO1xuK1x0cmluZ19pZCA9IGxlMzJfdG9fY3B1KHJlc3AtXHUwMDNlcmluZ19pZCk7XG4gXHRibmdlX2h3cm1fcmVxX2Ryb3AoYmQsIHJlcSk7XG4gXG4gZXhpdDpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5oXG5pbmRleCAzNTAxZGU3YTg5YjkxOS4uYmY0NTJlMzkwZDViZDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmhcbkBAIC01MCw3ICs1MCw3IEBAIGludCBibmdlX2h3cm1fY2ZhX2wyX3NldF9yeF9tYXNrKHN0cnVjdCBibmdlX2RldiAqYmQsXG4gdm9pZCBibmdlX2h3cm1fc3RhdF9jdHhfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuKTtcbiBpbnQgYm5nZV9od3JtX3N0YXRfY3R4X2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4pO1xuIGludCBod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyxcbi1cdFx0XHQgICAgdTMyIHJpbmdfdHlwZSwgaW50IGNtcGxfcmluZ19pZCk7XG4rXHRcdFx0ICAgIHUzMiByaW5nX3R5cGUsIHUzMiBjbXBsX3JpbmdfaWQpO1xuIGludCBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcdFx0XHQgICAgIHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nLFxuIFx0XHRcdCAgICAgdTMyIHJpbmdfdHlwZSwgdTMyIG1hcF9pbmRleCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jXG5pbmRleCA3MDc2ODE5MzAwNGNiMi4uNmY3ZWY1MDZkNGUxOGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuY1xuQEAgLTEzMjcsMTIgKzEzMjcsMTIgQEAgc3RhdGljIGludCBibmdlX2FsbG9jX2NvcmUoc3RydWN0IGJuZ2VfbmV0ICpibilcbiBcdHJldHVybiByYztcbiB9XG4gXG4tdTE2IGJuZ2VfY3BfcmluZ19mb3Jfcngoc3RydWN0IGJuZ2VfcnhfcmluZ19pbmZvICpyeHIpXG4rdTMyIGJuZ2VfY3BfcmluZ19mb3Jfcngoc3RydWN0IGJuZ2VfcnhfcmluZ19pbmZvICpyeHIpXG4ge1xuIFx0cmV0dXJuIHJ4ci1cdTAwM2VyeF9jcHItXHUwMDNlcmluZ19zdHJ1Y3QuZndfcmluZ19pZDtcbiB9XG4gXG4tdTE2IGJuZ2VfY3BfcmluZ19mb3JfdHgoc3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIpXG4rdTMyIGJuZ2VfY3BfcmluZ19mb3JfdHgoc3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIpXG4ge1xuIFx0cmV0dXJuIHR4ci1cdTAwM2V0eF9jcHItXHUwMDNlcmluZ19zdHJ1Y3QuZndfcmluZ19pZDtcbiB9XG5AQCAtMTM3NSwxMiArMTM3NSwxMiBAQCBzdGF0aWMgdm9pZCBibmdlX2luaXRfbnFfdHJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxuIFx0XHRzdHJ1Y3QgYm5nZV9ucV9yaW5nX2luZm8gKm5xciA9IFx1MDAyNmJuLVx1MDAzZWJuYXBpW2ldLVx1MDAzZW5xX3Jpbmc7XG4gXHRcdHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nID0gXHUwMDI2bnFyLVx1MDAzZXJpbmdfc3RydWN0O1xuIFxuLVx0XHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4rXHRcdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcbiBcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgbnFyLVx1MDAzZWNwX3JpbmdfY291bnQ7IGorKykge1xuIFx0XHRcdHN0cnVjdCBibmdlX2NwX3JpbmdfaW5mbyAqY3ByID0gXHUwMDI2bnFyLVx1MDAzZWNwX3JpbmdfYXJyW2pdO1xuIFxuIFx0XHRcdHJpbmcgPSBcdTAwMjZjcHItXHUwMDNlcmluZ19zdHJ1Y3Q7XG4tXHRcdFx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuK1x0XHRcdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcbiBcdFx0fVxuIFx0fVxuIH1cbkBAIC0xNjM3LDcgKzE2MzcsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2luaXRfb25lX3J4X3JpbmdfcnhiZChzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFxuIFx0cmluZyA9IFx1MDAyNnJ4ci1cdTAwM2VyeF9yaW5nX3N0cnVjdDtcbiBcdGJuZ2VfaW5pdF9yeGJkX3BhZ2VzKHJpbmcsIHR5cGUpO1xuLVx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuK1x0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBibmdlX2luaXRfb25lX2FnZ19yaW5nX3J4YmQoc3RydWN0IGJuZ2VfbmV0ICpibixcbkBAIC0xNjQ3LDcgKzE2NDcsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2luaXRfb25lX2FnZ19yaW5nX3J4YmQoc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcdHUzMiB0eXBlO1xuIFxuIFx0cmluZyA9IFx1MDAyNnJ4ci1cdTAwM2VyeF9hZ2dfcmluZ19zdHJ1Y3Q7XG4tXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4rXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gXHRpZiAoYm5nZV9pc19hZ2dfcmVxZChibi1cdTAwM2ViZCkpIHtcbiBcdFx0dHlwZSA9ICgodTMyKUJOR0VfUlhfUEFHRV9TSVpFIFx1MDAzY1x1MDAzYyBSWF9CRF9MRU5fU0hJRlQpIHxcbiBcdFx0XHRSWF9CRF9UWVBFX1JYX0FHR19CRCB8IFJYX0JEX0ZMQUdTX1NPUDtcbkBAIC0xNzA4LDcgKzE3MDgsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2luaXRfdHhfcmluZ3Moc3RydWN0IGJuZ2VfbmV0ICpibilcbiBcdFx0c3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIgPSBcdTAwMjZibi1cdTAwM2V0eF9yaW5nW2ldO1xuIFx0XHRzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyA9IFx1MDAyNnR4ci1cdTAwM2V0eF9yaW5nX3N0cnVjdDtcbiBcbi1cdFx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuK1x0XHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gXG4gXHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJuLVx1MDAzZW5ldGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXG4gXHRcdFx0XHQgICAgIFx1MDAyNnR4ci1cdTAwM2VibmFwaS1cdTAwM2VuYXBpKTtcbkBAIC0xODY3LDcgKzE4NjcsNyBAQCBzdGF0aWMgaW50IGJuZ2VfaHdybV9yeF9hZ2dfcmluZ19hbGxvYyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0XHQgICAgcmluZy1cdTAwM2Vmd19yaW5nX2lkKTtcbiBcdGJuZ2VfZGJfd3JpdGUoYm4tXHUwMDNlYmQsIFx1MDAyNnJ4ci1cdTAwM2VyeF9hZ2dfZGIsIHJ4ci1cdTAwM2VyeF9hZ2dfcHJvZCk7XG4gXHRibmdlX2RiX3dyaXRlKGJuLVx1MDAzZWJkLCBcdTAwMjZyeHItXHUwMDNlcnhfZGIsIHJ4ci1cdTAwM2VyeF9wcm9kKTtcbi1cdGJuLVx1MDAzZWdycF9pbmZvW2dycF9pZHhdLmFnZ19md19yaW5nX2lkID0gcmluZy1cdTAwM2Vmd19yaW5nX2lkO1xuK1x0Ym4tXHUwMDNlZ3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSAodTE2KXJpbmctXHUwMDNlZndfcmluZ19pZDtcbiBcbiBcdHJldHVybiAwO1xuIH1cbkBAIC0xODg2LDcgKzE4ODYsNyBAQCBzdGF0aWMgaW50IGJuZ2VfaHdybV9yeF9yaW5nX2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHRcdHJldHVybiByYztcbiBcbiBcdGJuZ2Vfc2V0X2RiKGJuLCBcdTAwMjZyeHItXHUwMDNlcnhfZGIsIHR5cGUsIG1hcF9pZHgsIHJpbmctXHUwMDNlZndfcmluZ19pZCk7XG4tXHRibi1cdTAwM2VncnBfaW5mb1ttYXBfaWR4XS5yeF9md19yaW5nX2lkID0gcmluZy1cdTAwM2Vmd19yaW5nX2lkO1xuK1x0Ym4tXHUwMDNlZ3JwX2luZm9bbWFwX2lkeF0ucnhfZndfcmluZ19pZCA9ICh1MTYpcmluZy1cdTAwM2Vmd19yaW5nX2lkO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTE5MTYsNyArMTkxNiw3IEBAIHN0YXRpYyBpbnQgYm5nZV9od3JtX3JpbmdfYWxsb2Moc3RydWN0IGJuZ2VfbmV0ICpibilcbiBcdFx0Ym5nZV9zZXRfZGIoYm4sIFx1MDAyNm5xci1cdTAwM2VucV9kYiwgdHlwZSwgbWFwX2lkeCwgcmluZy1cdTAwM2Vmd19yaW5nX2lkKTtcbiBcdFx0Ym5nZV9kYl9ucShibiwgXHUwMDI2bnFyLVx1MDAzZW5xX2RiLCBucXItXHUwMDNlbnFfcmF3X2NvbnMpO1xuIFx0XHRlbmFibGVfaXJxKHZlY3Rvcik7XG4tXHRcdGJuLVx1MDAzZWdycF9pbmZvW2ldLm5xX2Z3X3JpbmdfaWQgPSByaW5nLVx1MDAzZWZ3X3JpbmdfaWQ7XG4rXHRcdGJuLVx1MDAzZWdycF9pbmZvW2ldLm5xX2Z3X3JpbmdfaWQgPSAodTE2KXJpbmctXHUwMDNlZndfcmluZ19pZDtcbiBcbiBcdFx0aWYgKCFpKSB7XG4gXHRcdFx0cmMgPSBibmdlX2h3cm1fc2V0X2FzeW5jX2V2ZW50X2NyKGJkLCByaW5nLVx1MDAzZWZ3X3JpbmdfaWQpO1xuQEAgLTE5ODYsMTUgKzE5ODYsMTMgQEAgdm9pZCBibmdlX2ZpbGxfaHdfcnNzX3RibChzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV92bmljX2luZm8gKnZuaWMpXG4gXHR0Ymxfc2l6ZSA9IGJuZ2VfZ2V0X3J4ZmhfaW5kaXJfc2l6ZShiZCk7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB0Ymxfc2l6ZTsgaSsrKSB7XG4tXHRcdHUxNiByaW5nX2lkLCBqO1xuK1x0XHR1MzIgajtcbiBcbiBcdFx0aiA9IGJkLVx1MDAzZXJzc19pbmRpcl90YmxbaV07XG4gXHRcdHJ4ciA9IFx1MDAyNmJuLVx1MDAzZXJ4X3Jpbmdbal07XG4gXG4tXHRcdHJpbmdfaWQgPSByeHItXHUwMDNlcnhfcmluZ19zdHJ1Y3QuZndfcmluZ19pZDtcbi1cdFx0KnJpbmdfdGJsKysgPSBjcHVfdG9fbGUxNihyaW5nX2lkKTtcbi1cdFx0cmluZ19pZCA9IGJuZ2VfY3BfcmluZ19mb3JfcngocnhyKTtcbi1cdFx0KnJpbmdfdGJsKysgPSBjcHVfdG9fbGUxNihyaW5nX2lkKTtcbitcdFx0KnJpbmdfdGJsKysgPSBjcHVfdG9fbGUxNihyeHItXHUwMDNlcnhfcmluZ19zdHJ1Y3QuZndfcmluZ19pZCk7XG4rXHRcdCpyaW5nX3RibCsrID0gY3B1X3RvX2xlMTYoYm5nZV9jcF9yaW5nX2Zvcl9yeChyeHIpKTtcbiBcdH1cbiB9XG4gXG5AQCAtMjI4NSw3ICsyMjgzLDcgQEAgc3RhdGljIHZvaWQgYm5nZV9kaXNhYmxlX2ludChzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxuIFx0XHRucXIgPSBcdTAwMjZibmFwaS1cdTAwM2VucV9yaW5nO1xuIFx0XHRyaW5nID0gXHUwMDI2bnFyLVx1MDAzZXJpbmdfc3RydWN0O1xuIFxuLVx0XHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkICE9IElOVkFMSURfSFdfUklOR19JRClcbitcdFx0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpXG4gXHRcdFx0Ym5nZV9kYl9ucShibiwgXHUwMDI2bnFyLVx1MDAzZW5xX2RiLCBucXItXHUwMDNlbnFfcmF3X2NvbnMpO1xuIFx0fVxuIH1cbkBAIC0yNDAxLDcgKzIzOTksNyBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHR1MzIgZ3JwX2lkeCA9IHJ4ci1cdTAwM2VibmFwaS1cdTAwM2VpbmRleDtcbiBcdHUzMiBjbXBsX3JpbmdfaWQ7XG4gXG4tXHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRClcbitcdGlmIChyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRjbXBsX3JpbmdfaWQgPSBibmdlX2NwX3JpbmdfZm9yX3J4KHJ4cik7XG5AQCAtMjQwOSw3ICsyNDA3LDcgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3J4X3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0XHRcdFx0UklOR19GUkVFX1JFUV9SSU5HX1RZUEVfUlgsXG4gXHRcdFx0XHRjbG9zZV9wYXRoID8gY21wbF9yaW5nX2lkIDpcbiBcdFx0XHRcdElOVkFMSURfSFdfUklOR19JRCk7XG4tXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4rXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gXHRibi1cdTAwM2VncnBfaW5mb1tncnBfaWR4XS5yeF9md19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuIH1cbiBcbkBAIC0yNDIxLDE0ICsyNDE5LDE0IEBAIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9yeF9hZ2dfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHR1MzIgZ3JwX2lkeCA9IHJ4ci1cdTAwM2VibmFwaS1cdTAwM2VpbmRleDtcbiBcdHUzMiBjbXBsX3JpbmdfaWQ7XG4gXG4tXHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRClcbitcdGlmIChyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRjbXBsX3JpbmdfaWQgPSBibmdlX2NwX3JpbmdfZm9yX3J4KHJ4cik7XG4gXHRod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfUlhfQUdHLFxuIFx0XHRcdFx0Y2xvc2VfcGF0aCA/IGNtcGxfcmluZ19pZCA6XG4gXHRcdFx0XHRJTlZBTElEX0hXX1JJTkdfSUQpO1xuLVx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuK1x0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIFx0Ym4tXHUwMDNlZ3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4gfVxuIFxuQEAgLTI0MzksMTQgKzI0MzcsMTQgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3R4X3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0c3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3QgKnJpbmcgPSBcdTAwMjZ0eHItXHUwMDNldHhfcmluZ19zdHJ1Y3Q7XG4gXHR1MzIgY21wbF9yaW5nX2lkO1xuIFxuLVx0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSUQpXG4rXHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRF8zMkJJVClcbiBcdFx0cmV0dXJuO1xuIFxuIFx0Y21wbF9yaW5nX2lkID0gY2xvc2VfcGF0aCA/IGJuZ2VfY3BfcmluZ19mb3JfdHgodHhyKSA6XG4gXHRcdCAgICAgICBJTlZBTElEX0hXX1JJTkdfSUQ7XG4gXHRod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfVFgsXG4gXHRcdFx0XHRjbXBsX3JpbmdfaWQpO1xuLVx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuK1x0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBibmdlX2h3cm1fY3BfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXG5AQCAtMjQ1NSwxMiArMjQ1MywxMiBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fY3BfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHRzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZztcbiBcbiBcdHJpbmcgPSBcdTAwMjZjcHItXHUwMDNlcmluZ19zdHJ1Y3Q7XG4tXHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRClcbitcdGlmIChyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfTDJfQ01QTCxcbiBcdFx0XHRcdElOVkFMSURfSFdfUklOR19JRCk7XG4tXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4rXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibiwgYm9vbCBjbG9zZV9wYXRoKVxuQEAgLTI0OTYsMTEgKzI0OTQsMTEgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBib29sIGNsb3NlX3BhdGgpXG4gXHRcdFx0Ym5nZV9od3JtX2NwX3JpbmdfZnJlZShibiwgXHUwMDI2bnFyLVx1MDAzZWNwX3JpbmdfYXJyW2pdKTtcbiBcbiBcdFx0cmluZyA9IFx1MDAyNm5xci1cdTAwM2VyaW5nX3N0cnVjdDtcbi1cdFx0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSUQpIHtcbitcdFx0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpIHtcbiBcdFx0XHRod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZyxcbiBcdFx0XHRcdFx0XHRSSU5HX0ZSRUVfUkVRX1JJTkdfVFlQRV9OUSxcbiBcdFx0XHRcdFx0XHRJTlZBTElEX0hXX1JJTkdfSUQpO1xuLVx0XHRcdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcbitcdFx0XHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gXHRcdFx0Ym4tXHUwMDNlZ3JwX2luZm9baV0ubnFfZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcbiBcdFx0fVxuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuaFxuaW5kZXggZjQ2MzZiNWIwY2YzZjAuLmQxNzc5MTljMmUxMTcwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmhcbkBAIC02MzAsOCArNjMwLDggQEAgc3RydWN0IGJuZ2VfbDJfZmlsdGVyIHtcbiBcdHJlZmNvdW50X3RcdFx0cmVmY250O1xuIH07XG4gXG4tdTE2IGJuZ2VfY3BfcmluZ19mb3Jfcngoc3RydWN0IGJuZ2VfcnhfcmluZ19pbmZvICpyeHIpO1xuLXUxNiBibmdlX2NwX3JpbmdfZm9yX3R4KHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyKTtcbit1MzIgYm5nZV9jcF9yaW5nX2Zvcl9yeChzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cik7XG4rdTMyIGJuZ2VfY3BfcmluZ19mb3JfdHgoc3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIpO1xuIHZvaWQgYm5nZV9maWxsX2h3X3Jzc190Ymwoc3RydWN0IGJuZ2VfbmV0ICpibiwgc3RydWN0IGJuZ2Vfdm5pY19pbmZvICp2bmljKTtcbiBpbnQgYm5nZV9hbGxvY19yeF9kYXRhKHN0cnVjdCBibmdlX25ldCAqYm4sIHN0cnVjdCBibmdlX3J4X3JpbmdfaW5mbyAqcnhyLFxuIFx0XHQgICAgICAgdTE2IHByb2QsIGdmcF90IGdmcCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX3JtZW0uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9ybWVtLmhcbmluZGV4IDM0MWM3ZjgxZWQwOTJiLi5iYjBjNzlhMWVlNjBmNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9ybWVtLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9ybWVtLmhcbkBAIC0xODQsNyArMTg0LDcgQEAgc3RydWN0IGJuZ2VfY3R4X21lbV9pbmZvIHtcbiBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCB7XG4gXHRzdHJ1Y3QgYm5nZV9yaW5nX21lbV9pbmZvXHRyaW5nX21lbTtcbiBcbi1cdHUxNlx0XHRcdGZ3X3JpbmdfaWQ7XG4rXHR1MzJcdFx0XHRmd19yaW5nX2lkO1xuIFx0dW5pb24ge1xuIFx0XHR1MTZcdFx0Z3JwX2lkeDtcbiBcdFx0dTE2XHRcdG1hcF9pZHg7IC8qIFVzZWQgYnkgTlFzICovXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ibmdlL2hzaS5oIGIvaW5jbHVkZS9saW51eC9ibmdlL2hzaS5oXG5pbmRleCA4ZWExM2Q1NDA3ZWVjZC4uMWY3YmQ5NjQxNWE1MjcgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2JuZ2UvaHNpLmhcbisrKyBiL2luY2x1ZGUvbGludXgvYm5nZS9oc2kuaFxuQEAgLTgzMTcsOCArODMxNyw3IEBAIHN0cnVjdCBod3JtX3JpbmdfYWxsb2Nfb3V0cHV0IHtcbiBcdF9fbGUxNlx0cmVxX3R5cGU7XG4gXHRfX2xlMTZcdHNlcV9pZDtcbiBcdF9fbGUxNlx0cmVzcF9sZW47XG4tXHRfX2xlMTZcdHJpbmdfaWQ7XG4tXHRfX2xlMTZcdGxvZ2ljYWxfcmluZ19pZDtcbitcdF9fbGUzMlx0cmluZ19pZDtcbiBcdHU4XHRwdXNoX2J1ZmZlcl9pbmRleDtcbiBcdCNkZWZpbmUgUklOR19BTExPQ19SRVNQX1BVU0hfQlVGRkVSX0lOREVYX1BJTkdfQlVGRkVSIDB4MFVMXG4gXHQjZGVmaW5lIFJJTkdfQUxMT0NfUkVTUF9QVVNIX0JVRkZFUl9JTkRFWF9QT05HX0JVRkZFUiAweDFVTFxuQEAgLTgzNDUsMTAgKzgzNDQsMTAgQEAgc3RydWN0IGh3cm1fcmluZ19mcmVlX2lucHV0IHtcbiBcdHU4XHRmbGFncztcbiBcdCNkZWZpbmUgUklOR19GUkVFX1JFUV9GTEFHU19WSVJUSU9fUklOR19WQUxJRCAweDFVTFxuIFx0I2RlZmluZSBSSU5HX0ZSRUVfUkVRX0ZMQUdTX0xBU1QgICAgICAgICAgICAgUklOR19GUkVFX1JFUV9GTEFHU19WSVJUSU9fUklOR19WQUxJRFxuLVx0X19sZTE2XHRyaW5nX2lkO1xuK1x0X19sZTE2XHR1bnVzZWRfMTtcbiBcdF9fbGUzMlx0cHJvZF9pZHg7XG4gXHRfX2xlMzJcdG9wYXF1ZTtcbi1cdF9fbGUzMlx0dW51c2VkXzE7XG4rXHRfX2xlMzJcdHJpbmdfaWQ7XG4gfTtcbiBcbiAvKiBod3JtX3JpbmdfZnJlZV9vdXRwdXQgKHNpemU6MTI4Yi8xNkIpICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNTowMDowNi42MzUzNTEzMTNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjE1NzYwOTA3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCcm9hZGNvbSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCBzZWVtcyBsaWtlIHdlJ3JlIGV4cGFuZGluZyB0aGUgYGZ3X3JpbmdfaWRgIGZpZWxkIGZyb20gYSBgdTE2YCB0byBhIGB1MzJgIHdpdGhpbiB0aGUgQnJvYWRjb20gQk5HRSBkcml2ZXIuIFRoYXQncyBhIHNpZ25pZmljYW50IGNoYW5nZSwgcG90ZW50aWFsbHkgaW5kaWNhdGluZyB3ZSdyZSBkZWFsaW5nIHdpdGggYSBtdWNoIGxhcmdlciBudW1iZXIgb2YgcmluZ3MgYmVpbmcgYWxsb2NhdGVkLiBUaGUgdGFyZ2V0IGRpcmVjdG9yaWVzIGFyZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9gIGFuZCBgZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9gLCBzbyB0aGF0J3Mgd2hlcmUgdGhlIGNvcmUgbW9kaWZpY2F0aW9ucyBhcmUuIEl0J3MgdG91Y2hpbmcgdGhlIGBibmdlX3Jpbmdfc3RydWN0YCBzdHJ1Y3R1cmUgYW5kIHRoZSBpbnZhbGlkIElEIGRlZmluaXRpb25zLiBBbHNvLCBpdCdzIG1vZGlmeWluZyB0aGUgYGh3cm1fcmluZ19hbGxvY19vdXRwdXRgIGFuZCBgaHdybV9yaW5nX2ZyZWVfaW5wdXRgIHN0cnVjdHVyZXMsIHdoaWNoIGFyZSBjcml0aWNhbCBmb3IgdGhlIGhhcmR3YXJlIHJlc291cmNlIG1hbmFnZW1lbnQuXG5cbkJ1dCB3YWl0IGEgbWludXRlLi4uIGBibmdlYD8gVGhhdCBkb2Vzbid0IGltbWVkaWF0ZWx5IHJpbmcgYSBiZWxsLiBNeSBleHBlcmllbmNlIHdpdGggQnJvYWRjb20gbmV0d29yayBkcml2ZXJzIHVzdWFsbHkgaW52b2x2ZXMgYGJueHRgIGZvciBOZXRYdHJlbWUtQy9FLCBvciB0aGUgb2xkZXIgYGJueDJgIGFuZCBgYm54MnhgLiBgYm5nZWAgZmVlbHMgdW51c3VhbC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgaXMgYW4gYWN0dWFsIGRyaXZlci4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgc2VhcmNoIHRoZSBrZXJuZWwgdHJlZSB0byBjb25maXJtIHRoYXQgYGJuZ2VgIGlzLCBpbmRlZWQsIGEgbGVnaXRpbWF0ZSBCcm9hZGNvbSBkcml2ZXIuIFRoaXMgaXMgYSBjcnVjaWFsIGZpcnN0IHN0ZXA7IEkgZG9uJ3Qgd2FudCB0byB3YXN0ZSB0aW1lIGFuYWx5emluZyBzb21ldGhpbmcgdGhhdCBkb2Vzbid0IGV2ZW4gZXhpc3Qgb3IgaXMgbWlzbGFiZWxlZC4gTGV0J3Mgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwNzQsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNTowMDozOC43OTI5NjIzOTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzIxMTEwNTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYm5nZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA2MTIwIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9NYWtlZmlsZT0yMD1vYmotJChDT05GSUdfQkNNQVNQKSArPSBhc3AyL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL01ha2VmaWxlOjIxOm9iai0kKENPTkZJR19CTkdFKSArPSBibmdlL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9NYWtlZmlsZT0zPW9iai0kKENPTkZJR19CTkdFKSArPSBibmdfZW4ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvTWFrZWZpbGUtNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL01ha2VmaWxlOjU6Ym5nX2VuLXkgOj0gYm5nZV9jb3JlLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvTWFrZWZpbGU6NjpcXHQgICAgYm5nZV9kZXZsaW5rLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvTWFrZWZpbGU6NzpcXHQgICAgYm5nZV9od3JtLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvTWFrZWZpbGU6ODpcXHQgICAgYm5nZV9od3JtX2xpYi5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL01ha2VmaWxlOjk6XFx0ICAgIGJuZ2Vfcm1lbS5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL01ha2VmaWxlOjEwOlxcdCAgICBibmdlX3Jlc2MubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9NYWtlZmlsZToxMTpcXHQgICAgYm5nZV9uZXRkZXYubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9NYWtlZmlsZToxMjpcXHQgICAgYm5nZV9ldGh0b29sLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvTWFrZWZpbGU6MTM6XFx0ICAgIGJuZ2VfYXV4ci5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL01ha2VmaWxlOjE0OlxcdCAgICBibmdlX3R4cngubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9NYWtlZmlsZToxNTpcXHQgICAgYm5nZV9saW5rLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTEwLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjExOiNpbmNsdWRlIFxcdTAwM2NsaW51eC9ibmdlL2hzaS5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjEyOiNpbmNsdWRlIFxcXCJibmdlX3JtZW0uaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaDoxMzojaW5jbHVkZSBcXFwiYm5nZV9yZXNjLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MTQ6I2luY2x1ZGUgXFxcImJuZ2VfYXV4ci5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTE1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MjA6ZXh0ZXJuIGNoYXIgYm5nZV9kcml2ZXJfbmFtZVtdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oPTIyPWVudW0gYm9hcmRfaWR4IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjI2OnN0cnVjdCBibmdlX2F1eHJfcHJpdiB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjctXFx0c3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgYXV4X2RldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaDoyODpcXHRzdHJ1Y3QgYm5nZV9hdXhyX2RldiAqYXV4cl9kZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjktXFx0aW50IGlkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MzI6c3RydWN0IGJuZ2VfcGZfaW5mbyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMzMtXFx0dTE2XFx0ZndfZmlkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg9ODE9ZW51bSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC05Mi0jZGVmaW5lIEJOR0VfTUFYX1FVRVVFXFx0XFx0OFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjkzOnN0cnVjdCBibmdlX3F1ZXVlX2luZm8ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTk0LVxcdHU4ICAgICAgcXVldWVfaWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0xMDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MTAzOnN0cnVjdCBibmdlX2RldiB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMTA0LVxcdHN0cnVjdCBkZXZpY2VcXHQqZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMTQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjE0NTpcXHRzdHJ1Y3QgYm5nZV9wZl9pbmZvXFx0cGY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMTQ2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMTUzLVxcdC8qIEJhY2tpbmcgc3RvcmVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MTU0OlxcdHN0cnVjdCBibmdlX2N0eF9tZW1faW5mb1xcdCpjdHg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMTU1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMTU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjE1ODpcXHRzdHJ1Y3QgYm5nZV9od19yZXNjXFx0aHdfcmVzYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0xNTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0yMDQtXFx0dThcXHRcXHRcXHRtYXhfbGx0YztcXHQvKiBsb3NzbGVzcyBUQ3MgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaDoyMDU6XFx0c3RydWN0IGJuZ2VfcXVldWVfaW5mb1xcdHFfaW5mb1tCTkdFX01BWF9RVUVVRV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjA2LVxcdHU4XFx0XFx0XFx0dGNfdG9fcWlkeFtCTkdFX01BWF9RVUVVRV07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0yMTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MjExOlxcdHN0cnVjdCBibmdlX2lycVxcdFxcdCppcnFfdGJsO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTIxMi1cXHR1MTZcXHRcXHRcXHRpcnFzX2FjcXVpcmVkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTIxMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaDoyMTQ6XFx0c3RydWN0IGJuZ2VfYXV4cl9wcml2XFx0KmF1eF9wcml2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjIxNTpcXHRzdHJ1Y3QgYm5nZV9hdXhyX2RldlxcdCphdXhyX2RldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0yMTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MjE3OlxcdHN0cnVjdCBibmdlX2xpbmtfaW5mb1xcdGxpbmtfaW5mbztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0yMTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0yMjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MjIzOnN0YXRpYyBpbmxpbmUgYm9vbCBibmdlX2lzX3JvY2VfZW4oc3RydWN0IGJuZ2VfZGV2ICpiZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0yMjQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjI3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjIyODpzdGF0aWMgaW5saW5lIGJvb2wgYm5nZV9pc19hZ2dfcmVxZChzdHJ1Y3QgYm5nZV9kZXYgKmJkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTIyOS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjMwLVxcdGlmIChiZC1cXHUwMDNlbmV0ZGV2KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MjMxOlxcdFxcdHN0cnVjdCBibmdlX25ldCAqYm4gPSBuZXRkZXZfcHJpdihiZC1cXHUwMDNlbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0yMzItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0yNDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MjQzOnN0YXRpYyBpbmxpbmUgdm9pZCBibmdlX3dyaXRlcShzdHJ1Y3QgYm5nZV9kZXYgKmJkLCB1NjQgdmFsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTI0NC1cXHRcXHRcXHQgICAgICAgdm9pZCBfX2lvbWVtICphZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjU1LS8qIEZvciBUWCBhbmQgUlggcmluZyBkb29yYmVsbHMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaDoyNTY6c3RhdGljIGlubGluZSB2b2lkIGJuZ2VfZGJfd3JpdGUoc3RydWN0IGJuZ2VfZGV2ICpiZCwgc3RydWN0IGJuZ2VfZGJfaW5mbyAqZGIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjU3LVxcdFxcdFxcdFxcdCB1MzIgaWR4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTI1OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MjU5OlxcdGJuZ2Vfd3JpdGVxKGJkLCBkYi1cXHUwMDNlZGJfa2V5NjQgfCBEQl9SSU5HX0lEWChkYiwgaWR4KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0yNjAtXFx0XFx0ICAgIGRiLVxcdTAwM2Vkb29yYmVsbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0yNjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MjYzOmJvb2wgYm5nZV9hdXhfcmVnaXN0ZXJlZChzdHJ1Y3QgYm5nZV9kZXYgKmJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaDoyNjQ6dTE2IGJuZ2VfYXV4X2dldF9tc2l4KHN0cnVjdCBibmdlX2RldiAqYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTI2NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTYtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2F1eGlsaWFyeV9idXMuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjE3OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9ibmdlL2hzaS5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoxOTojaW5jbHVkZSBcXFwiYm5nZS5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MjA6I2luY2x1ZGUgXFxcImJuZ2VfaHdybS5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MjE6I2luY2x1ZGUgXFxcImJuZ2VfYXV4ci5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoyMzpzdGF0aWMgREVGSU5FX0lEQShibmdlX2F1eF9kZXZfaWRzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MjU6c3RhdGljIHZvaWQgYm5nZV9maWxsX21zaXhfdmVjcyhzdHJ1Y3QgYm5nZV9kZXYgKmJkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MjY6XFx0XFx0XFx0XFx0c3RydWN0IGJuZ2VfbXNpeF9pbmZvICppbmZvKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMjcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6Mjg6XFx0c3RydWN0IGJuZ2VfYXV4cl9kZXYgKmF1eHJfZGV2ID0gYmQtXFx1MDAzZWF1eHJfZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMjktXFx0aW50IG51bV9tc2l4LCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy00Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjQzOmludCBibmdlX3JlZ2lzdGVyX2RldihzdHJ1Y3QgYm5nZV9hdXhyX2RldiAqYXV4cl9kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy00NC1cXHRcXHQgICAgICB2b2lkICpoYW5kbGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy00NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzo0NjpcXHRzdHJ1Y3QgYm5nZV9kZXYgKmJkID0gcGNpX2dldF9kcnZkYXRhKGF1eHJfZGV2LVxcdTAwM2VwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjQ3OlxcdHN0cnVjdCBibmdlX2F1eHJfaW5mbyAqYXV4cl9pbmZvO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtNDgtXFx0aW50IHJjID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtNTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzo1NzpcXHRpZiAoIWJuZ2VfYXV4X2hhc19lbm91Z2hfcmVzb3VyY2VzKGJkKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtNTgtXFx0XFx0cmMgPSAtRU5PTUVNO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy02Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjY3OlxcdGJuZ2VfZmlsbF9tc2l4X3ZlY3MoYmQsIGJkLVxcdTAwM2VhdXhyX2Rldi1cXHUwMDNlbXNpeF9pbmZvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTY4LVxcdGF1eHJfZGV2LVxcdTAwM2VmbGFncyB8PSBCTkdFX0FSREVWX01TSVhfQUxMT0M7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTc0LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjc1OkVYUE9SVF9TWU1CT0woYm5nZV9yZWdpc3Rlcl9kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtNzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzo3Nzp2b2lkIGJuZ2VfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IGJuZ2VfYXV4cl9kZXYgKmF1eHJfZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtNzgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6Nzk6XFx0c3RydWN0IGJuZ2VfZGV2ICpiZCA9IHBjaV9nZXRfZHJ2ZGF0YShhdXhyX2Rldi1cXHUwMDNlcGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzo4MDpcXHRzdHJ1Y3QgYm5nZV9hdXhyX2luZm8gKmF1eHJfaW5mbztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTgxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy05MS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzo5MjpFWFBPUlRfU1lNQk9MKGJuZ2VfdW5yZWdpc3Rlcl9kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtOTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzo5NDppbnQgYm5nZV9zZW5kX21zZyhzdHJ1Y3QgYm5nZV9hdXhyX2RldiAqYXV4cl9kZXYsIHN0cnVjdCBibmdlX2Z3X21zZyAqZndfbXNnKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtOTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6OTY6XFx0c3RydWN0IGJuZ2VfZGV2ICpiZCA9IHBjaV9nZXRfZHJ2ZGF0YShhdXhyX2Rldi1cXHUwMDNlcGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy05Ny1cXHRzdHJ1Y3Qgb3V0cHV0ICpyZXNwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0xMDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoxMDI6XFx0cmMgPSBibmdlX2h3cm1fcmVxX2luaXQoYmQsIHJlcSwgMCAvKiBkb24ndCBjYXJlICovKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTEwMy1cXHRpZiAocmMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTEwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjEwNjpcXHRyYyA9IGJuZ2VfaHdybV9yZXFfcmVwbGFjZShiZCwgcmVxLCBmd19tc2ctXFx1MDAzZW1zZywgZndfbXNnLVxcdTAwM2Vtc2dfbGVuKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTEwNy1cXHRpZiAocmMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTEwOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjExMDpcXHRibmdlX2h3cm1fcmVxX3RpbWVvdXQoYmQsIHJlcSwgZndfbXNnLVxcdTAwM2V0aW1lb3V0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjExMTpcXHRyZXNwID0gYm5nZV9od3JtX3JlcV9ob2xkKGJkLCByZXEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MTEyOlxcdHJjID0gYm5nZV9od3JtX3JlcV9zZW5kKGJkLCByZXEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTEzLVxcdHJlc3BfbGVuID0gbGUxNl90b19jcHUocmVzcC1cXHUwMDNlcmVzcF9sZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0xMjAtZHJvcF9yZXE6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoxMjE6XFx0Ym5nZV9od3JtX3JlcV9kcm9wKGJkLCByZXEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTIyLVxcdHJldHVybiByYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTEyMy19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoxMjQ6RVhQT1JUX1NZTUJPTChibmdlX3NlbmRfbXNnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTEyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjEyNjp2b2lkIGJuZ2VfcmRtYV9hdXhfZGV2aWNlX3VuaW5pdChzdHJ1Y3QgYm5nZV9kZXYgKmJkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTI3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjEyODpcXHRzdHJ1Y3QgYm5nZV9hdXhyX3ByaXYgKmF1eF9wcml2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTI5LVxcdHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0xMzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoxNDA6c3RhdGljIHZvaWQgYm5nZV9hdXhfZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTQxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjE0MjpcXHRzdHJ1Y3QgYm5nZV9hdXhyX3ByaXYgKmF1eF9wcml2ID1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjE0MzpcXHRcXHRcXHRjb250YWluZXJfb2YoZGV2LCBzdHJ1Y3QgYm5nZV9hdXhyX3ByaXYsIGF1eF9kZXYuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjE0NDpcXHRzdHJ1Y3QgYm5nZV9kZXYgKmJkID0gcGNpX2dldF9kcnZkYXRhKGF1eF9wcml2LVxcdTAwM2VhdXhyX2Rldi1cXHUwMDNlcGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0xNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoxNDY6XFx0aWRhX2ZyZWUoXFx1MDAyNmJuZ2VfYXV4X2Rldl9pZHMsIGF1eF9wcml2LVxcdTAwM2VpZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0xNDctXFx0a2ZyZWUoYXV4X3ByaXYtXFx1MDAzZWF1eHJfZGV2LVxcdTAwM2VhdXhyX2luZm8pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0xNTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoxNTQ6dm9pZCBibmdlX3JkbWFfYXV4X2RldmljZV9kZWwoc3RydWN0IGJuZ2VfZGV2ICpiZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTE1NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTE2MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjE2MjpzdGF0aWMgdm9pZCBibmdlX3NldF9hdXhyX2Rldl9pbmZvKHN0cnVjdCBibmdlX2F1eHJfZGV2ICphdXhyX2RldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjE2MzpcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYm5nZV9kZXYgKmJkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MTgzOnZvaWQgYm5nZV9yZG1hX2F1eF9kZXZpY2VfYWRkKHN0cnVjdCBibmdlX2RldiAqYmQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0xODQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0yMDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoyMDM6dm9pZCBibmdlX3JkbWFfYXV4X2RldmljZV9pbml0KHN0cnVjdCBibmdlX2RldiAqYmQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0yMDQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMjA1LVxcdHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphdXhfZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MjA2OlxcdHN0cnVjdCBibmdlX2F1eHJfaW5mbyAqYXV4cl9pbmZvO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MjA3OlxcdHN0cnVjdCBibmdlX2F1eHJfcHJpdiAqYXV4X3ByaXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoyMDg6XFx0c3RydWN0IGJuZ2VfYXV4cl9kZXYgKmF1eHJfZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMjA5LVxcdGludCByYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTIxMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjIxMTpcXHRpZiAoIWJuZ2VfaXNfcm9jZV9lbihiZCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0yMTItXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0yMTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoyMTg6XFx0YXV4X3ByaXYtXFx1MDAzZWlkID0gaWRhX2FsbG9jKFxcdTAwMjZibmdlX2F1eF9kZXZfaWRzLCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTIxOS1cXHRpZiAoYXV4X3ByaXYtXFx1MDAzZWlkIFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0yMjgtXFx0YXV4X2Rldi1cXHUwMDNlZGV2LnBhcmVudCA9IFxcdTAwMjZiZC1cXHUwMDNlcGRldi1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MjI5OlxcdGF1eF9kZXYtXFx1MDAzZWRldi5yZWxlYXNlID0gYm5nZV9hdXhfZGV2X3JlbGVhc2U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0yMzAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTIzMi1cXHRpZiAocmMpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjIzMzpcXHRcXHRpZGFfZnJlZShcXHUwMDI2Ym5nZV9hdXhfZGV2X2lkcywgYXV4X3ByaXYtXFx1MDAzZWlkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTIzNC1cXHRcXHRrZnJlZShhdXhfcHJpdik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTI1MC1cXHRiZC1cXHUwMDNlYXV4cl9kZXYgPSBhdXhyX2RldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjI1MTpcXHRibmdlX3NldF9hdXhyX2Rldl9pbmZvKGF1eHJfZGV2LCBiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0yNTItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oPTE0PXN0cnVjdCBod3JtX2FzeW5jX2V2ZW50X2NtcGw7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaDoxNTpzdHJ1Y3QgYm5nZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oLTE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmg6MTc6c3RydWN0IGJuZ2VfbXNpeF9pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oLTE4LVxcdHUzMlxcdHZlY3RvcjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmgtMjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaDoyMzpzdHJ1Y3QgYm5nZV9md19tc2cge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmgtMjQtXFx0dm9pZFxcdCptc2c7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oLTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmg6MzE6c3RydWN0IGJuZ2VfYXV4cl9pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oLTMyLVxcdHZvaWRcXHRcXHQqaGFuZGxlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaD0zNj1lbnVtIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmgtNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaDo0NTpzdHJ1Y3QgYm5nZV9hdXhyX2RldiB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaC00Ni1cXHRzdHJ1Y3QgbmV0X2RldmljZVxcdCpuZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oLTQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmg6NTA6XFx0c3RydWN0IGJuZ2VfbXNpeF9pbmZvXFx0bXNpeF9pbmZvW0JOR0VfTUFYX1JPQ0VfTVNJWF07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaC01MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmgtNTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaDo1NDpcXHRzdHJ1Y3QgYm5nZV9hdXhyX2luZm9cXHQqYXV4cl9pbmZvO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmgtNTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oLTc0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmg6NzU6dm9pZCBibmdlX3JkbWFfYXV4X2RldmljZV91bmluaXQoc3RydWN0IGJuZ2VfZGV2ICpiZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oOjc2OnZvaWQgYm5nZV9yZG1hX2F1eF9kZXZpY2VfZGVsKHN0cnVjdCBibmdlX2RldiAqYmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaDo3Nzp2b2lkIGJuZ2VfcmRtYV9hdXhfZGV2aWNlX2FkZChzdHJ1Y3QgYm5nZV9kZXYgKmJkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmg6Nzg6dm9pZCBibmdlX3JkbWFfYXV4X2RldmljZV9pbml0KHN0cnVjdCBibmdlX2RldiAqYmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaDo3OTppbnQgYm5nZV9yZWdpc3Rlcl9kZXYoc3RydWN0IGJuZ2VfYXV4cl9kZXYgKmFkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaC04MC1cXHRcXHQgICAgICB2b2lkICpoYW5kbGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmg6ODE6dm9pZCBibmdlX3VucmVnaXN0ZXJfZGV2KHN0cnVjdCBibmdlX2F1eHJfZGV2ICphZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oOjgyOmludCBibmdlX3NlbmRfbXNnKHN0cnVjdCBibmdlX2F1eHJfZGV2ICphZGV2LCBzdHJ1Y3QgYm5nZV9md19tc2cgKmZ3X21zZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaC04My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjk6I2luY2x1ZGUgXFxcImJuZ2UuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjEwOiNpbmNsdWRlIFxcXCJibmdlX2RldmxpbmsuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjExOiNpbmNsdWRlIFxcXCJibmdlX2h3cm0uaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjEyOiNpbmNsdWRlIFxcXCJibmdlX2h3cm1fbGliLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoxMzojaW5jbHVkZSBcXFwiYm5nZV9saW5rLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM9MTY9TU9EVUxFX0RFU0NSSVBUSU9OKERSVl9TVU1NQVJZKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTg6Y2hhciBibmdlX2RyaXZlcl9uYW1lW10gPSBEUlZfTkFNRTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM9MjA9c3RhdGljIGNvbnN0IHN0cnVjdCB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MjY6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGJuZ2VfcGNpX3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjctXFx0eyBQQ0lfVkRFVklDRShCUk9BRENPTSwgMHgxNzgwKSwgLmRyaXZlcl9kYXRhID0gQkNNNTc3MDggfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzAtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjMxOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBibmdlX3BjaV90YmwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozMzpzdGF0aWMgdm9pZCBibmdlX3ByaW50X2RldmljZV9pbmZvKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBlbnVtIGJvYXJkX2lkeCBpZHgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6NDM6Ym9vbCBibmdlX2F1eF9yZWdpc3RlcmVkKHN0cnVjdCBibmdlX2RldiAqYmQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy00NC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzo0NTpcXHRzdHJ1Y3QgYm5nZV9hdXhyX2RldiAqYmFfZGV2ID0gYmQtXFx1MDAzZWF1eHJfZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtNDYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6NTM6c3RhdGljIHZvaWQgYm5nZV9udm1fY2ZnX3Zlcl9nZXQoc3RydWN0IGJuZ2VfZGV2ICpiZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTU0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtNTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzo1NzpcXHRpZiAoIWJuZ2VfaHdybV9udm1fZGV2X2luZm8oYmQsIFxcdTAwMjZudm1faW5mbykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy01OC1cXHRcXHRzbnByaW50ZihiZC1cXHUwMDNlbnZtX2NmZ192ZXIsIEZXX1ZFUl9TVFJfTEVOLCBcXFwiJWQuJWQuJWRcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy02Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjYzOnN0YXRpYyBpbnQgYm5nZV9mdW5jX3FjYXBzKHN0cnVjdCBibmdlX2RldiAqYmQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy02NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6Njc6XFx0cmMgPSBibmdlX2h3cm1fZnVuY19xY2FwcyhiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy02OC1cXHRpZiAocmMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6NzE6XFx0cmMgPSBibmdlX2h3cm1fcXVldWVfcXBvcnRjZmcoYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtNzItXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6ODA6c3RhdGljIGludCBibmdlX2Z1bmNfcXJjYXBzX3FjZmcoc3RydWN0IGJuZ2VfZGV2ICpiZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTgxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtODMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzo4NDpcXHRyYyA9IGJuZ2VfaHdybV9mdW5jX3Jlc2NfcWNhcHMoYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtODUtXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTg5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6OTA6XFx0cmMgPSBibmdlX2h3cm1fZnVuY19xY2ZnKGJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTkxLVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy05NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjk2OlxcdHJjID0gYm5nZV9od3JtX3ZuaWNfcWNhcHMoYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtOTctXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTEwNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjEwNTpzdGF0aWMgdm9pZCBibmdlX2Z3X3VucmVnaXN0ZXJfZGV2KHN0cnVjdCBibmdlX2RldiAqYmQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xMDYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTA3LVxcdC8qIGN0eCBtZW0gZnJlZSBhZnRlciB1bnJndHIgb25seSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTA4OlxcdGJuZ2VfaHdybV9mdW5jX2Rydl91bnJndHIoYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTA5OlxcdGJuZ2VfZnJlZV9jdHhfbWVtKGJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTExMC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoxMTI6c3RhdGljIHZvaWQgYm5nZV9zZXRfZGZsdF9yc3NfaGFzaF90eXBlKHN0cnVjdCBibmdlX2RldiAqYmQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xMTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoxMjI6c3RhdGljIGludCBibmdlX2Z3X3JlZ2lzdGVyX2RldihzdHJ1Y3QgYm5nZV9kZXYgKmJkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTIzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTI2LVxcdGJkLVxcdTAwM2Vmd19jYXAgPSAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTI3OlxcdHJjID0gYm5nZV9od3JtX3Zlcl9nZXQoYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTI4LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xMzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoxMzM6XFx0Ym5nZV9udm1fY2ZnX3Zlcl9nZXQoYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTM1OlxcdHJjID0gYm5nZV9od3JtX2Z1bmNfcmVzZXQoYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTM2LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xNDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoxNDE6XFx0Ym5nZV9od3JtX2Z3X3NldF90aW1lKGJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTE0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTE0My1cXHQvKiBHZXQgdGhlIHJlc291cmNlcyBhbmQgY29uZmlndXJhdGlvbiBmcm9tIGZpcm13YXJlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoxNDQ6XFx0cmMgPSBibmdlX2Z1bmNfcWNhcHMoYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTQ1LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoxNTA6XFx0cmMgPSBibmdlX2FsbG9jX2N0eF9tZW0oYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTUxLVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xNTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoxNTY6XFx0cmMgPSBibmdlX2h3cm1fZnVuY19kcnZfcmd0cihiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xNTctXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTE2MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjE2MjpcXHRyYyA9IGJuZ2VfZnVuY19xcmNhcHNfcWNmZyhiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xNjMtXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTE2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjE2ODpcXHRibmdlX3NldF9kZmx0X3Jzc19oYXNoX3R5cGUoYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTY5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xNzItZXJyX2Z1bmNfdW5yZ3RyOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTczOlxcdGJuZ2VfaHdybV9mdW5jX2Rydl91bnJndHIoYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTc0LWVycl9mcmVlX2N0eF9tZW06XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoxNzU6XFx0Ym5nZV9mcmVlX2N0eF9tZW0oYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTc2LVxcdHJldHVybiByYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTc5OnN0YXRpYyB2b2lkIGJuZ2VfcGNpX2Rpc2FibGUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xODAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoxODY6c3RhdGljIGludCBibmdlX3BjaV9lbmFibGUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xODcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yMDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoyMDM6XFx0cmMgPSBwY2lfcmVxdWVzdF9yZWdpb25zKHBkZXYsIGJuZ2VfZHJpdmVyX25hbWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjA0LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoyMjA6c3RhdGljIHZvaWQgYm5nZV91bm1hcF9iYXJzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjIxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjIyMjpcXHRzdHJ1Y3QgYm5nZV9kZXYgKmJkID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjIzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yMzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoyMzU6c3RhdGljIHZvaWQgYm5nZV9zZXRfbWF4X2Z1bmNfaXJxcyhzdHJ1Y3QgYm5nZV9kZXYgKmJkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjM2LVxcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBtYXhfaXJxcylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjQwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MjQxOnN0YXRpYyBpbnQgYm5nZV9nZXRfbWF4X2lycShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTI0Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTI0OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjI0OTpzdGF0aWMgaW50IGJuZ2VfbWFwX2RiX2JhcihzdHJ1Y3QgYm5nZV9kZXYgKmJkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjUwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjYwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MjYxOnN0YXRpYyBpbnQgYm5nZV9wcm9iZV9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yNjIte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjYzLVxcdHVuc2lnbmVkIGludCBtYXhfaXJxcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjI2NDpcXHRzdHJ1Y3QgYm5nZV9kZXYgKmJkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjY1LVxcdGludCByYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MjgwOlxcdHJjID0gYm5nZV9wY2lfZW5hYmxlKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjgxLVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjgzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6Mjg0OlxcdGJuZ2VfcHJpbnRfZGV2aWNlX2luZm8ocGRldiwgZW50LVxcdTAwM2Vkcml2ZXJfZGF0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoyODY6XFx0YmQgPSBibmdlX2RldmxpbmtfYWxsb2MocGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yODctXFx0aWYgKCFiZCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yOTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozMDA6XFx0cmMgPSBibmdlX2luaXRfaHdybV9yZXNvdXJjZXMoYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzAxLVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MzA0OlxcdHJjID0gYm5nZV9md19yZWdpc3Rlcl9kZXYoYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzA1LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zMDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozMTA6XFx0Ym5nZV9kZXZsaW5rX3JlZ2lzdGVyKGJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTMxMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjMxMjpcXHRtYXhfaXJxcyA9IGJuZ2VfZ2V0X21heF9pcnEocGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozMTM6XFx0Ym5nZV9zZXRfbWF4X2Z1bmNfaXJxcyhiZCwgbWF4X2lycXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MzE1OlxcdGJuZ2VfYXV4X2luaXRfZGZsdF9jb25maWcoYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MzE3OlxcdHJjID0gYm5nZV9uZXRfaW5pdF9kZmx0X2NvbmZpZyhiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zMTgtXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTMyMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjMyNDpcXHRyYyA9IGJuZ2VfbWFwX2RiX2JhcihiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zMjUtXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTMzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjMzNTpcXHRibmdlX3JkbWFfYXV4X2RldmljZV9pbml0KGJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTMzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjMzNzpcXHRyYyA9IGJuZ2VfYWxsb2NfaXJxcyhiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zMzgtXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjM0MzpcXHRyYyA9IGJuZ2VfbmV0ZGV2X2FsbG9jKGJkLCBtYXhfaXJxcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNDQtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozNDc6XFx0Ym5nZV9yZG1hX2F1eF9kZXZpY2VfYWRkKGJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM0OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzUzLWVycl9mcmVlX2lycTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjM1NDpcXHRibmdlX2ZyZWVfaXJxcyhiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNTYtZXJyX3VuaW5pdF9hdXhyOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MzU3OlxcdGJuZ2VfcmRtYV9hdXhfZGV2aWNlX3VuaW5pdChiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNTktZXJyX2NvbmZpZ191bmluaXQ6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozNjA6XFx0Ym5nZV9uZXRfdW5pbml0X2RmbHRfY29uZmlnKGJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM2MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM2Mi1lcnJfZndfcmVnOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MzYzOlxcdGJuZ2VfZGV2bGlua191bnJlZ2lzdGVyKGJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjM2NDpcXHRibmdlX2Z3X3VucmVnaXN0ZXJfZGV2KGJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM2NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM2Ni1lcnJfaHdybV9jbGVhbnVwOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MzY3OlxcdGJuZ2VfY2xlYW51cF9od3JtX3Jlc291cmNlcyhiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNjktZXJyX2Jhcl91bm1hcDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjM3MDpcXHRibmdlX3VubWFwX2JhcnMocGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNzItZXJyX2RldmxfZnJlZTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjM3MzpcXHRibmdlX2RldmxpbmtfZnJlZShiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNzUtZXJyX3BjaV9kaXNhYmxlOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6Mzc2OlxcdGJuZ2VfcGNpX2Rpc2FibGUocGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNzctXFx0cmV0dXJuIHJjO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozODA6c3RhdGljIHZvaWQgYm5nZV9yZW1vdmVfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzgxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjM4MjpcXHRzdHJ1Y3QgYm5nZV9kZXYgKmJkID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzgzLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNTowMDozOC44NjUwODY4MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1NTk1MjgzNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEcml2ZXIncyBQcmVzZW5jZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLCBgYm5nZWAuIEZpcnN0IHRob3VnaHQgaXMsIFwiV2hlcmUgZG9lcyB0aGlzIGV2ZW4gZml0PyBJcyBpdCBhIHN0YW5kYXJkIGRyaXZlciBpbiB0aGUgbWFpbmxpbmUga2VybmVsLCBwZXJoYXBzIGEgbW9jayBvciBhIHRlc3QgZHJpdmVyLCBvciBzb21ldGhpbmcgc3BlY2lmaWM/XCIgVGhlbiBJIHJlYWxpemUsIFwiSGFuZyBvbiwgYGJuZ2VgIGRvZXNuJ3QgaW1tZWRpYXRlbHkgcmluZyBhbnkgYmVsbHMgZnJvbSB1cHN0cmVhbSBMaW51eC5cIiBUaGF0IHRyaWdnZXJzIGEgdGhvdWdodDogXCJDb3VsZCB0aGlzIGJlIHNvbWV0aGluZyBhZGRlZCBieSBzeXotY2x1c3RlciBmb3IgZnV6emluZywgb3IgbWF5YmUgaXQncyBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgZGV2ZWxvcG1lbnQgYnJhbmNoP1wiXG5cbkFoLCBub3cgdGhlIGNvbmZ1c2lvbiBraWNrcyBpbi4gVGhlIHRleHQgbGlzdHMgKmRpZmZlcmVudCogcGF0aHMgdGhhdCBhcmUgY2hhbmdlZDogYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9kZXYuY2AgKmFuZCogYGRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jYCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jYC4gU29tZXRoaW5nIHNlZW1zIGluY29uc2lzdGVudCBhYm91dCB0aGlzLCBidXQuLi4gd2FpdCwgdGhlIHByb21wdCBzYXlzIHRoZSBjaGFuZ2VzICpoYXZlIGFscmVhZHkqIGJlZW4gY29tbWl0dGVkIHRvIHRoZSBIRUFELiBPa2F5LCBzbyB0aGF0IG1lYW5zIHRoaXMgZHJpdmVyICpkb2VzKiBleGlzdCBzb21ld2hlcmUgaW4gdGhlIHRyZWUuXG5cbk5vdywgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgaXMgaW5kZWVkIHJlYWNoYWJsZSB0aHJvdWdoIGNvbmZpZ3VyYXRpb24uIEZpcnN0LCBsZXQncyBzdGFydCB3aXRoIGBDT05GSUdfQk5HRWAuIFRoYXQgc2hvdWxkIGJlIGEgc3RhbmRhcmQgY29uZmlnIG9wdGlvbi4gTGV0J3Mgc2VlLi4uIFl1cCwgYW5kIHRoZSBidWlsZCBzeXN0ZW0gdXNlcyBpdDogYG9iai0kKENPTkZJR19CTkdFKSArPSBibmdlL2AuIE9rYXksIHNvIGBibmdlYCAqY2FuKiBiZSBidWlsdCBpZiBgQ09ORklHX0JOR0VgIGlzIGVuYWJsZWQuIE5vdywgbGV0J3MgY2hlY2sgdGhlIG90aGVyIG9uZSwgYENPTkZJR19JTkZJTklCQU5EX0JOR19SRWAuIFRoYXQncyB0aGUgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjUxMCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNTowMDo0NS40MjQ2MTgzOTVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1NzkxMjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJuZ19yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvaHcvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgOTkyIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvTWFrZWZpbGU9MTU9b2JqLSQoQ09ORklHX0lORklOSUJBTkRfQk5YVF9SRSlcXHQrPSBibnh0X3JlL1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9NYWtlZmlsZToxNjpvYmotJChDT05GSUdfSU5GSU5JQkFORF9CTkdfUkUpXFx0XFx0Kz0gYm5nX3JlL1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9NYWtlZmlsZS0xNy1vYmotJChDT05GSUdfSU5GSU5JQkFORF9FUkRNQSlcXHRcXHQrPSBlcmRtYS9cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvS2NvbmZpZz0yPWNvbmZpZyBJTkZJTklCQU5EX0JOR19SRVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9LY29uZmlnLTgtXFx0ICA1MC8xMDAvMjAwLzQwMC84MDAgZ2lnYWJpdCBSb0NFIEhDQXMuIFRoZSBtb2R1bGVcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL0tjb25maWc6OTpcXHQgIHdpbGwgYmUgY2FsbGVkIGJuZ19yZS4gVG8gY29tcGlsZSB0aGlzIGRyaXZlclxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvS2NvbmZpZy0xMC1cXHQgIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9NYWtlZmlsZT0yPWNjZmxhZ3MteSA6PSAtSSAkKHNyY3RyZWUpL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2VcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL01ha2VmaWxlLTMtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19JTkZJTklCQU5EX0JOR19SRSkgKz0gYm5nX3JlLm9cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL01ha2VmaWxlLTUtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9NYWtlZmlsZTo2OmJuZ19yZS15IDo9IGJuZ19kZXYubyBibmdfZncubyBcXFxcXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9NYWtlZmlsZTo3OlxcdCAgICBibmdfcmVzLm8gYm5nX3NwLm8gXFxcXFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvTWFrZWZpbGUtOC1cXHQgICAgYm5nX2RlYnVnZnMub1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jLTctXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jOjg6I2luY2x1ZGUgXFxcImJuZ19yZXMuaFxcXCJcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmMtOS0jaW5jbHVkZSBcXFwiYm5nX2Z3LmhcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmMtMTEtI2luY2x1ZGUgXFxcImJuZ2VfYXV4ci5oXFxcIlxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYzoxMjojaW5jbHVkZSBcXFwiYm5nX3JlLmhcXFwiXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jLTEzLSNpbmNsdWRlIFxcXCJibmdfZGVidWdmcy5oXFxcIlxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYy0xNC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmM6MTU6c3RhdGljIHN0cnVjdCBkZW50cnkgKmJuZ19yZV9kZWJ1Z2ZzX3Jvb3Q7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jLTE2LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYzoxNzp2b2lkIGJuZ19yZV9kZWJ1Z2ZzX2FkZF9wZGV2KHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2KVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYy0xOC17XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmMtMjEtXFx0cmRldi1cXHUwMDNlZGJnX3Jvb3QgPVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYzoyMjpcXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZGV2X25hbWUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiksIGJuZ19yZV9kZWJ1Z2ZzX3Jvb3QpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYy0yMy19XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jLTI0LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYzoyNTp2b2lkIGJuZ19yZV9kZWJ1Z2ZzX3JlbV9wZGV2KHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2KVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYy0yNi17XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmMtMzAtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jOjMxOnZvaWQgYm5nX3JlX3JlZ2lzdGVyX2RlYnVnZnModm9pZClcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmMtMzIte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYzozMzpcXHRibmdfcmVfZGVidWdmc19yb290ID0gZGVidWdmc19jcmVhdGVfZGlyKFxcXCJibmdfcmVcXFwiLCBOVUxMKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmMtMzQtfVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYy0zNS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmM6MzY6dm9pZCBibmdfcmVfdW5yZWdpc3Rlcl9kZWJ1Z2ZzKHZvaWQpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jLTM3LXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmM6Mzg6XFx0ZGVidWdmc19yZW1vdmUoYm5nX3JlX2RlYnVnZnNfcm9vdCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jLTM5LX1cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuaC02LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuaDo3OnZvaWQgYm5nX3JlX2RlYnVnZnNfYWRkX3BkZXYoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuaDo4OnZvaWQgYm5nX3JlX2RlYnVnZnNfcmVtX3BkZXYoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuaC05LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuaDoxMDp2b2lkIGJuZ19yZV9yZWdpc3Rlcl9kZWJ1Z2ZzKHZvaWQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuaDoxMTp2b2lkIGJuZ19yZV91bnJlZ2lzdGVyX2RlYnVnZnModm9pZCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5oLTEyLSNlbmRpZlxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtOS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoxMDojaW5jbHVkZSBcXFwiYm5nX3Jlcy5oXFxcIlxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTExLSNpbmNsdWRlIFxcXCJibmdfc3AuaFxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTE0LSNpbmNsdWRlIFxcXCJibmdlX2F1eHIuaFxcXCJcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoxNTojaW5jbHVkZSBcXFwiYm5nX3JlLmhcXFwiXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTYtI2luY2x1ZGUgXFxcImJuZ2VfaHdybS5oXFxcIlxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM9MjE9TU9EVUxFX0xJQ0VOU0UoXFxcIkR1YWwgQlNEL0dQTFxcXCIpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTIyLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjIzOnN0YXRpYyBzdHJ1Y3QgYm5nX3JlX2RldiAqYm5nX3JlX2Rldl9hZGQoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFkZXYsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjQtXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBibmdlX2F1eHJfZGV2ICphdXhfZGV2KVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTI1LXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyNjpcXHRzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yNy1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyODpcXHQvKiBBbGxvY2F0ZSBibmdfcmVfZGV2IGluc3RhbmNlICovXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6Mjk6XFx0cmRldiA9IGliX2FsbG9jX2RldmljZShibmdfcmVfZGV2LCBpYmRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzAtXFx0aWYgKCFyZGV2KSB7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MzE6XFx0XFx0cHJfZXJyKFxcXCIlczogYm5nX3JlX2RldiBhbGxvY2F0aW9uIGZhaWx1cmUhXFxcIiwgS0JVSUxEX01PRE5BTUUpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTMyLVxcdFxcdHJldHVybiBOVUxMO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDQtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NDU6c3RhdGljIGludCBibmdfcmVfcmVnaXN0ZXJfbmV0ZGV2KHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2KVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ2LXtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTUyLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjUzOnN0YXRpYyB2b2lkIGJuZ19yZV9kZXN0cm95X2NoaXBfY3R4KHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2KVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTU0LXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo1NTpcXHRzdHJ1Y3QgYm5nX3JlX2NoaXBfY3R4ICpjaGlwX2N0eDtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy01Ni1cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTYyLVxcdHJkZXYtXFx1MDAzZXJjZncucmVzID0gTlVMTDtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo2MzpcXHRyZGV2LVxcdTAwM2VibmdfcmVzLmNjdHggPSBOVUxMO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjY0OlxcdHJkZXYtXFx1MDAzZWJuZ19yZXMucGRldiA9IE5VTEw7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNjUtXFx0a2ZyZWUoY2hpcF9jdHgpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNjctXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6Njg6c3RhdGljIGludCBibmdfcmVfc2V0dXBfY2hpcF9jdHgoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNjkte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjcwOlxcdHN0cnVjdCBibmdfcmVfY2hpcF9jdHggKmNoaXBfY3R4O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTcxLVxcdHN0cnVjdCBibmdlX2F1eHJfZGV2ICphdXhfZGV2O1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNzQtXFx0YXV4X2RldiA9IHJkZXYtXFx1MDAzZWF1eF9kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NzU6XFx0cmRldi1cXHUwMDNlYm5nX3Jlcy5wZGV2ID0gYXV4X2Rldi1cXHUwMDNlcGRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo3NjpcXHRyZGV2LVxcdTAwM2VyY2Z3LnJlcyA9IFxcdTAwMjZyZGV2LVxcdTAwM2VibmdfcmVzO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTc3LVxcdGNoaXBfY3R4ID0ga3phbGxvY19vYmooKmNoaXBfY3R4KTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTgzLVxcdHJkZXYtXFx1MDAzZWNoaXBfY3R4ID0gY2hpcF9jdHg7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6ODQ6XFx0cmRldi1cXHUwMDNlYm5nX3Jlcy5jY3R4ID0gcmRldi1cXHUwMDNlY2hpcF9jdHg7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtODUtXFx0cmRldi1cXHUwMDNlZGV2X2F0dHIgPSBremFsbG9jX29iaigqcmRldi1cXHUwMDNlZGV2X2F0dHIpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtODctXFx0XFx0Z290byBmcmVlX2NoaXBfY3R4O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjg4OlxcdHJkZXYtXFx1MDAzZWJuZ19yZXMuZGF0dHIgPSByZGV2LVxcdTAwM2VkZXZfYXR0cjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy04OS1cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTk2LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjk3OnN0YXRpYyB2b2lkIGJuZ19yZV9pbml0X2h3cm1faGRyKHN0cnVjdCBpbnB1dCAqaGRyLCB1MTYgb3BjZClcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy05OC17XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xMDMtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MTA0OnN0YXRpYyB2b2lkIGJuZ19yZV9maWxsX2Z3X21zZyhzdHJ1Y3QgYm5nZV9md19tc2cgKmZ3X21zZywgdm9pZCAqbXNnLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTEwNS1cXHRcXHRcXHQgICAgICAgaW50IG1zZ19sZW4sIHZvaWQgKnJlc3AsIGludCByZXNwX21heF9sZW4sXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xMTQtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MTE1OnN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2ZyZWUoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTE2LVxcdFxcdFxcdFxcdHUzMiBmd19yaW5nX2lkLCBpbnQgdHlwZSlcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTEyMy1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoxMjQ6XFx0Ym5nX3JlX2luaXRfaHdybV9oZHIoKHZvaWQgKilcXHUwMDI2cmVxLCBIV1JNX1JJTkdfRlJFRSk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTI1LVxcdHJlcS5yaW5nX3R5cGUgPSB0eXBlO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTEyNi1cXHRyZXEucmluZ19pZCA9IGNwdV90b19sZTMyKGZ3X3JpbmdfaWQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjEyNzpcXHRibmdfcmVfZmlsbF9md19tc2coXFx1MDAyNmZ3X21zZywgKHZvaWQgKilcXHUwMDI2cmVxLCBzaXplb2YocmVxKSwgKHZvaWQgKilcXHUwMDI2cmVzcCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xMjgtXFx0XFx0XFx0ICAgIHNpemVvZihyZXNwKSwgQk5HRV9ERkxUX0hXUk1fQ01EX1RJTUVPVVQpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTM1LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjEzNjpzdGF0aWMgaW50IGJuZ19yZV9uZXRfcmluZ19hbGxvYyhzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoxMzc6XFx0XFx0XFx0XFx0IHN0cnVjdCBibmdfcmVfcmluZ19hdHRyICpyaW5nX2F0dHIsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTM4LVxcdFxcdFxcdFxcdCB1MTYgKmZ3X3JpbmdfaWQpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xNDUtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MTQ2OlxcdGJuZ19yZV9pbml0X2h3cm1faGRyKCh2b2lkICopXFx1MDAyNnJlcSwgSFdSTV9SSU5HX0FMTE9DKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xNDctXFx0cmVxLmVuYWJsZXMgPSAwO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTU5LVxcdHJlcS5pbnRfbW9kZSA9IHJpbmdfYXR0ci1cXHUwMDNlbW9kZTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoxNjA6XFx0Ym5nX3JlX2ZpbGxfZndfbXNnKFxcdTAwMjZmd19tc2csICh2b2lkICopXFx1MDAyNnJlcSwgc2l6ZW9mKHJlcSksICh2b2lkICopXFx1MDAyNnJlc3AsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTYxLVxcdFxcdFxcdCAgIHNpemVvZihyZXNwKSwgQk5HRV9ERkxUX0hXUk1fQ01EX1RJTUVPVVQpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTY4LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjE2OTpzdGF0aWMgaW50IGJuZ19yZV9zdGF0c19jdHhfZnJlZShzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldilcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xNzAte1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTc2LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjE3NzpcXHRibmdfcmVfaW5pdF9od3JtX2hkcigodm9pZCAqKVxcdTAwMjZyZXEsIEhXUk1fU1RBVF9DVFhfRlJFRSk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTc4LVxcdHJlcS5zdGF0X2N0eF9pZCA9IGNwdV90b19sZTMyKHJkZXYtXFx1MDAzZXN0YXRzX2N0eC5md19pZCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MTc5OlxcdGJuZ19yZV9maWxsX2Z3X21zZyhcXHUwMDI2ZndfbXNnLCAodm9pZCAqKVxcdTAwMjZyZXEsIHNpemVvZihyZXEpLCAodm9pZCAqKVxcdTAwMjZyZXNwLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTE4MC1cXHRcXHRcXHQgICBzaXplb2YocmVzcCksIEJOR0VfREZMVF9IV1JNX0NNRF9USU1FT1VUKTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTE4OC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoxODk6c3RhdGljIGludCBibmdfcmVfc3RhdHNfY3R4X2FsbG9jKHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2KVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTE5MC17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTkxLVxcdHN0cnVjdCBibmdlX2F1eHJfZGV2ICphdXhfZGV2ID0gcmRldi1cXHUwMDNlYXV4X2RldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoxOTI6XFx0c3RydWN0IGJuZ19yZV9zdGF0cyAqc3RhdHMgPSBcXHUwMDI2cmRldi1cXHUwMDNlc3RhdHNfY3R4O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTE5My1cXHRzdHJ1Y3QgaHdybV9zdGF0X2N0eF9hbGxvY19vdXRwdXQgcmVzcCA9IHt9O1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTk5LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjIwMDpcXHRibmdfcmVfaW5pdF9od3JtX2hkcigodm9pZCAqKVxcdTAwMjZyZXEsIEhXUk1fU1RBVF9DVFhfQUxMT0MpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTIwMS1cXHRyZXEudXBkYXRlX3BlcmlvZF9tcyA9IGNwdV90b19sZTMyKDEwMDApO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjA0LVxcdHJlcS5zdGF0X2N0eF9mbGFncyA9IFNUQVRfQ1RYX0FMTE9DX1JFUV9TVEFUX0NUWF9GTEFHU19ST0NFO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjIwNTpcXHRibmdfcmVfZmlsbF9md19tc2coXFx1MDAyNmZ3X21zZywgKHZvaWQgKilcXHUwMDI2cmVxLCBzaXplb2YocmVxKSwgKHZvaWQgKilcXHUwMDI2cmVzcCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yMDYtXFx0XFx0XFx0ICAgc2l6ZW9mKHJlc3ApLCBCTkdFX0RGTFRfSFdSTV9DTURfVElNRU9VVCk7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yMTItXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MjEzOnN0YXRpYyBpbnQgYm5nX3JlX3F1ZXJ5X2h3cm1fdmVyc2lvbihzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldilcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yMTQte1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjE3LVxcdHN0cnVjdCBod3JtX3Zlcl9nZXRfaW5wdXQgdmVyX2dldF9yZXEgPSB7fTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyMTg6XFx0c3RydWN0IGJuZ19yZV9jaGlwX2N0eCAqY2N0eDtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yMTktXFx0c3RydWN0IGJuZ2VfZndfbXNnIGZ3X21zZyA9IHt9O1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjIxLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjIyMjpcXHRibmdfcmVfaW5pdF9od3JtX2hkcigodm9pZCAqKVxcdTAwMjZ2ZXJfZ2V0X3JlcSwgSFdSTV9WRVJfR0VUKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yMjMtXFx0dmVyX2dldF9yZXEuaHdybV9pbnRmX21haiA9IEhXUk1fVkVSU0lPTl9NQUpPUjtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTIyNS1cXHR2ZXJfZ2V0X3JlcS5od3JtX2ludGZfdXBkID0gSFdSTV9WRVJTSU9OX1VQREFURTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyMjY6XFx0Ym5nX3JlX2ZpbGxfZndfbXNnKFxcdTAwMjZmd19tc2csICh2b2lkICopXFx1MDAyNnZlcl9nZXRfcmVxLCBzaXplb2YodmVyX2dldF9yZXEpLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTIyNy1cXHRcXHRcXHQgICAgKHZvaWQgKilcXHUwMDI2dmVyX2dldF9yZXNwLCBzaXplb2YodmVyX2dldF9yZXNwKSxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTI1MC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyNTE6c3RhdGljIHZvaWQgYm5nX3JlX2Rldl91bmluaXQoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjUyLXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yNTMtXFx0aW50IHJjO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjI1NDpcXHRibmdfcmVfZGVidWdmc19yZW1fcGRldihyZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yNTUtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjU2LVxcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoQk5HX1JFX0ZMQUdfUkNGV19DSEFOTkVMX0VOLCBcXHUwMDI2cmRldi1cXHUwMDNlZmxhZ3MpKSB7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MjU3OlxcdFxcdHJjID0gYm5nX3JlX2RlaW5pdF9yY2Z3KFxcdTAwMjZyZGV2LVxcdTAwM2VyY2Z3KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yNTgtXFx0XFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjYwLVxcdFxcdFxcdFxcdCAgIFxcXCJGYWlsZWQgdG8gZGVpbml0aWFsaXplIFJDRlc6ICUjeFxcXCIsIHJjKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyNjE6XFx0XFx0Ym5nX3JlX3N0YXRzX2N0eF9mcmVlKHJkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjI2MjpcXHRcXHRibmdfcmVfZnJlZV9zdGF0c19jdHhfbWVtKHJkZXYtXFx1MDAzZWJuZ19yZXMucGRldiwgXFx1MDAyNnJkZXYtXFx1MDAzZXN0YXRzX2N0eCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MjYzOlxcdFxcdGJuZ19yZV9kaXNhYmxlX3JjZndfY2hhbm5lbChcXHUwMDI2cmRldi1cXHUwMDNlcmNmdyk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MjY0OlxcdFxcdGJuZ19yZV9uZXRfcmluZ19mcmVlKHJkZXYsIHJkZXYtXFx1MDAzZXJjZncuY3JlcS5yaW5nX2lkLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTI2NS1cXHRcXHRcXHQgICAgIFJJTkdfQUxMT0NfUkVRX1JJTkdfVFlQRV9OUSk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MjY2OlxcdFxcdGJuZ19yZV9mcmVlX3JjZndfY2hhbm5lbChcXHUwMDI2cmRldi1cXHUwMDNlcmNmdyk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjY3LVxcdH1cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTI3MC1cXHRyZGV2LVxcdTAwM2VucXIgPSBOVUxMO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjI3MTpcXHRibmdfcmVfZGVzdHJveV9jaGlwX2N0eChyZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yNzItXFx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChCTkdfUkVfRkxBR19ORVRERVZfUkVHSVNURVJFRCwgXFx1MDAyNnJkZXYtXFx1MDAzZWZsYWdzKSlcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTI3NS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyNzY6c3RhdGljIGludCBibmdfcmVfZGV2X2luaXQoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjc3LXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyNzg6XFx0c3RydWN0IGJuZ19yZV9yaW5nX2F0dHIgcmF0dHIgPSB7fTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyNzk6XFx0c3RydWN0IGJuZ19yZV9jcmVxX2N0eCAqY3JlcTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yODAtXFx0dTMyIGRiX29mZnQ7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yODUtXFx0LyogUmVnaXN0ZXJlZCBhIG5ldyBSb0NFIGRldmljZSBpbnN0YW5jZSB0byBuZXRkZXYgKi9cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyODY6XFx0cmMgPSBibmdfcmVfcmVnaXN0ZXJfbmV0ZGV2KHJkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTI4Ny1cXHRpZiAocmMpIHtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTMwNC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzozMDU6XFx0cmMgPSBibmdfcmVfc2V0dXBfY2hpcF9jdHgocmRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzA2LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzEwLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjMxMTpcXHRyYyA9IGJuZ19yZV9xdWVyeV9od3JtX3ZlcnNpb24ocmRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzEyLVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTMxNC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzozMTU6XFx0cmMgPSBibmdfcmVfYWxsb2NfZndfY2hhbm5lbChcXHUwMDI2cmRldi1cXHUwMDNlYm5nX3JlcywgXFx1MDAyNnJkZXYtXFx1MDAzZXJjZncpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTMxNi1cXHRpZiAocmMpIHtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTM0MC1cXHRyYXR0ci5scmlkID0gcmRldi1cXHUwMDNlbnFyLVxcdTAwM2Vtc2l4X2VudHJpZXNbQk5HX1JFX0NSRVFfTlFfSURYXS5yaW5nX2lkeDtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzozNDE6XFx0cmMgPSBibmdfcmVfbmV0X3JpbmdfYWxsb2MocmRldiwgXFx1MDAyNnJhdHRyLCBcXHUwMDI2Y3JlcS1cXHUwMDNlcmluZ19pZCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzQyLVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzQ4LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjM0OTpcXHRyYyA9IGJuZ19yZV9lbmFibGVfZndfY2hhbm5lbChcXHUwMDI2cmRldi1cXHUwMDNlcmNmdyxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0zNTAtXFx0XFx0XFx0XFx0XFx0dmlkLCBkYl9vZmZ0KTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTM1Ni1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzozNTc6XFx0cmMgPSBibmdfcmVfZ2V0X2Rldl9hdHRyKFxcdTAwMjZyZGV2LVxcdTAwM2VyY2Z3KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0zNTgtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzYwLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjM2MTpcXHRibmdfcmVfZGVidWdmc19hZGRfcGRldihyZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzozNjI6XFx0cmMgPSBibmdfcmVfYWxsb2Nfc3RhdHNfY3R4X21lbShyZGV2LVxcdTAwM2VibmdfcmVzLnBkZXYsIHJkZXYtXFx1MDAzZWNoaXBfY3R4LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTM2My1cXHRcXHRcXHRcXHRcXHRcXHUwMDI2cmRldi1cXHUwMDNlc3RhdHNfY3R4KTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTM2OS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzozNzA6XFx0cmMgPSBibmdfcmVfc3RhdHNfY3R4X2FsbG9jKHJkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTM3MS1cXHRpZiAocmMpIHtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTM3Ni1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzozNzc6XFx0cmMgPSBibmdfcmVfaW5pdF9yY2Z3KFxcdTAwMjZyZGV2LVxcdTAwM2VyY2Z3LCBcXHUwMDI2cmRldi1cXHUwMDNlc3RhdHNfY3R4KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0zNzgtXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0zODYtZnJlZV9zY3R4OlxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjM4NzpcXHRibmdfcmVfc3RhdHNfY3R4X2ZyZWUocmRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzg4LWZyZWVfc3RhdHNfY3R4OlxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjM4OTpcXHRibmdfcmVfZnJlZV9zdGF0c19jdHhfbWVtKHJkZXYtXFx1MDAzZWJuZ19yZXMucGRldiwgXFx1MDAyNnJkZXYtXFx1MDAzZXN0YXRzX2N0eCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzkwLWRpc2FibGVfcmNmdzpcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzozOTE6XFx0Ym5nX3JlX2Rpc2FibGVfcmNmd19jaGFubmVsKFxcdTAwMjZyZGV2LVxcdTAwM2VyY2Z3KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0zOTItZnJlZV9yaW5nOlxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjM5MzpcXHRibmdfcmVfbmV0X3JpbmdfZnJlZShyZGV2LCByZGV2LVxcdTAwM2VyY2Z3LmNyZXEucmluZ19pZCwgdHlwZSk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzk0LWZyZWVfcmNmdzpcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTM5Ni1ucV9hbGxvY19mYWlsOlxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjM5NzpcXHRibmdfcmVfZnJlZV9yY2Z3X2NoYW5uZWwoXFx1MDAyNnJkZXYtXFx1MDAzZXJjZncpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTM5OC1kZXN0cm95X2NoaXBfY3R4OlxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjM5OTpcXHRibmdfcmVfZGVzdHJveV9jaGlwX2N0eChyZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00MDAtbXNpeF9jdHhfZmFpbDpcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQwNi1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0MDc6c3RhdGljIGludCBibmdfcmVfYWRkX2RldmljZShzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYWRldilcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00MDgte1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDEwLVxcdFxcdGNvbnRhaW5lcl9vZihhZGV2LCBzdHJ1Y3QgYm5nZV9hdXhyX3ByaXYsIGF1eF9kZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjQxMTpcXHRzdHJ1Y3QgYm5nX3JlX2VuX2Rldl9pbmZvICpkZXZfaW5mbztcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0MTI6XFx0c3RydWN0IGJuZ19yZV9kZXYgKnJkZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDEzLVxcdGludCByYztcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQxNi1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0MTc6XFx0cmRldiA9IGJuZ19yZV9kZXZfYWRkKGFkZXYsIGF1eHJfcHJpdi1cXHUwMDNlYXV4cl9kZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQxOC1cXHRpZiAoIXJkZXYpIHtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQyNC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0MjU6XFx0cmMgPSBibmdfcmVfZGV2X2luaXQocmRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDI2LVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQzNy1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0Mzg6c3RhdGljIHZvaWQgYm5nX3JlX3JlbW92ZV9kZXZpY2Uoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDM5LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYXV4X2RldilcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00NDAte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjQ0MTpcXHRibmdfcmVfZGV2X3VuaW5pdChyZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00NDItXFx0aWJfZGVhbGxvY19kZXZpY2UoXFx1MDAyNnJkZXYtXFx1MDAzZWliZGV2KTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ0NS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0NDY6c3RhdGljIGludCBibmdfcmVfcHJvYmUoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFkZXYsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDQ3LVxcdFxcdFxcdGNvbnN0IHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ1MC1cXHRcXHRjb250YWluZXJfb2YoYWRldiwgc3RydWN0IGJuZ2VfYXV4cl9wcml2LCBhdXhfZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0NTE6XFx0c3RydWN0IGJuZ19yZV9lbl9kZXZfaW5mbyAqZW5faW5mbztcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00NTItXFx0aW50IHJjO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDYxLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjQ2MjpcXHRyYyA9IGJuZ19yZV9hZGRfZGV2aWNlKGFkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ2My1cXHRpZiAocmMpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00NjgtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NDY5OnN0YXRpYyB2b2lkIGJuZ19yZV9yZW1vdmUoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFkZXYpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDcwLXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0NzE6XFx0c3RydWN0IGJuZ19yZV9lbl9kZXZfaW5mbyAqZGV2X2luZm8gPSBhdXhpbGlhcnlfZ2V0X2RydmRhdGEoYWRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NDcyOlxcdHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ3My1cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ3NS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0NzY6XFx0Ym5nX3JlX3JlbW92ZV9kZXZpY2UocmRldiwgYWRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDc3LVxcdGtmcmVlKGRldl9pbmZvKTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ3OS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0ODA6c3RhdGljIGNvbnN0IHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlX2lkIGJuZ19yZV9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ4MS1cXHR7IC5uYW1lID0gQk5HX1JFX0FERVZfTkFNRSBcXFwiLnJkbWFcXFwiLCB9LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDg0LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjQ4NTpNT0RVTEVfREVWSUNFX1RBQkxFKGF1eGlsaWFyeSwgYm5nX3JlX2lkX3RhYmxlKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00ODYtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NDg3OnN0YXRpYyBzdHJ1Y3QgYXV4aWxpYXJ5X2RyaXZlciBibmdfcmVfZHJpdmVyID0ge1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ4OC1cXHQubmFtZSA9IFxcXCJyZG1hXFxcIixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0ODk6XFx0LnByb2JlID0gYm5nX3JlX3Byb2JlLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjQ5MDpcXHQucmVtb3ZlID0gYm5nX3JlX3JlbW92ZSxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0OTE6XFx0LmlkX3RhYmxlID0gYm5nX3JlX2lkX3RhYmxlLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ5Mi19O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ5My1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0OTQ6c3RhdGljIGludCBfX2luaXQgYm5nX3JlX21vZF9pbml0KHZvaWQpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDk1LXtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ5OC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0OTk6XFx0Ym5nX3JlX3JlZ2lzdGVyX2RlYnVnZnMoKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy01MDAtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NTAxOlxcdHJjID0gYXV4aWxpYXJ5X2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2Ym5nX3JlX2RyaXZlcik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNTAyLVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNTA4LXVucmVnX2RlYnVnZnM6XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NTA5OlxcdGJuZ19yZV91bnJlZ2lzdGVyX2RlYnVnZnMoKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy01MTAtXFx0cmV0dXJuIHJjO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNTEyLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjUxMzpzdGF0aWMgdm9pZCBfX2V4aXQgYm5nX3JlX21vZF9leGl0KHZvaWQpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNTE0LXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo1MTU6XFx0YXV4aWxpYXJ5X2RyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZibmdfcmVfZHJpdmVyKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo1MTY6XFx0Ym5nX3JlX3VucmVnaXN0ZXJfZGVidWdmcygpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTUxNy19XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNTE4LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjUxOTptb2R1bGVfaW5pdChibmdfcmVfbW9kX2luaXQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjUyMDptb2R1bGVfZXhpdChibmdfcmVfbW9kX2V4aXQpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy01LSNpbmNsdWRlIFxcXCJibmdfcm9jZV9oc2kuaFxcXCJcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjY6I2luY2x1ZGUgXFxcImJuZ19yZXMuaFxcXCJcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTctI2luY2x1ZGUgXFxcImJuZ19mdy5oXFxcIlxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0xMC0vKipcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjExOiAqIGJuZ19yZV9tYXBfcmMgIC0gIG1hcCByZXR1cm4gdHlwZSBiYXNlZCBvbiBvcGNvZGVcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTEyLSAqIEBvcGNvZGU6ICByb2NlIHNsb3cgcGF0aCBvcGNvZGVcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMzItICovXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzozMzpzdGF0aWMgaW50IGJuZ19yZV9tYXBfcmModTggb3Bjb2RlKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMzQte1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy01Mi1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjUzOnZvaWQgYm5nX3JlX2ZyZWVfcmNmd19jaGFubmVsKHN0cnVjdCBibmdfcmVfcmNmdyAqcmNmdylcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTU0LXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTU1LVxcdGtmcmVlKHJjZnctXFx1MDAzZWNyc3FlX3RibCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzo1NjpcXHRibmdfcmVfZnJlZV9od3EocmNmdy1cXHUwMDNlcmVzLCBcXHUwMDI2cmNmdy1cXHUwMDNlY21kcS5od3EpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6NTc6XFx0Ym5nX3JlX2ZyZWVfaHdxKHJjZnctXFx1MDAzZXJlcywgXFx1MDAyNnJjZnctXFx1MDAzZWNyZXEuaHdxKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTU4LVxcdHJjZnctXFx1MDAzZXBkZXYgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy02MC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjYxOmludCBibmdfcmVfYWxsb2NfZndfY2hhbm5lbChzdHJ1Y3QgYm5nX3JlX3JlcyAqcmVzLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6NjI6XFx0XFx0XFx0ICAgIHN0cnVjdCBibmdfcmVfcmNmdyAqcmNmdylcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTYzLXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjY0OlxcdHN0cnVjdCBibmdfcmVfaHdxX2F0dHIgaHdxX2F0dHIgPSB7fTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjY1OlxcdHN0cnVjdCBibmdfcmVfc2dfaW5mbyBzZ2luZm8gPSB7fTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjY2OlxcdHN0cnVjdCBibmdfcmVfY21kcV9jdHggKmNtZHE7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzo2NzpcXHRzdHJ1Y3QgYm5nX3JlX2NyZXFfY3R4ICpjcmVxO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtNjgtXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTgyLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6ODM6XFx0aWYgKGJuZ19yZV9hbGxvY19pbml0X2h3cShcXHUwMDI2Y3JlcS1cXHUwMDNlaHdxLCBcXHUwMDI2aHdxX2F0dHIpKSB7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy04NC1cXHRcXHRkZXZfZXJyKFxcdTAwMjZyY2Z3LVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTk0LVxcdGh3cV9hdHRyLnR5cGUgPSBCTkdfSFdRX1RZUEVfQ1RYO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6OTU6XFx0aWYgKGJuZ19yZV9hbGxvY19pbml0X2h3cShcXHUwMDI2Y21kcS1cXHUwMDNlaHdxLCBcXHUwMDI2aHdxX2F0dHIpKSB7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy05Ni1cXHRcXHRkZXZfZXJyKFxcdTAwMjZyY2Z3LVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTExMC1mYWlsOlxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MTExOlxcdGJuZ19yZV9mcmVlX3JjZndfY2hhbm5lbChyY2Z3KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTExMi1cXHRyZXR1cm4gLUVOT01FTTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMTE0LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MTE1OnN0YXRpYyBpbnQgYm5nX3JlX3Byb2Nlc3NfcXBfZXZlbnQoc3RydWN0IGJuZ19yZV9yY2Z3ICpyY2Z3LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMTE2LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBjcmVxX3FwX2V2ZW50ICpxcF9ldmVudCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMTE4LXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjExOTpcXHRzdHJ1Y3QgYm5nX3JlX2h3cSAqaHdxID0gXFx1MDAyNnJjZnctXFx1MDAzZWNtZHEuaHdxO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MTIwOlxcdHN0cnVjdCBibmdfcmVfY3JzcWUgKmNyc3FlO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMTIxLVxcdHUzMiByZXFfc2l6ZTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMTg3LS8qIGZ1bmN0aW9uIGV2ZW50cyAqL1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MTg4OnN0YXRpYyBpbnQgYm5nX3JlX3Byb2Nlc3NfZnVuY19ldmVudChzdHJ1Y3QgYm5nX3JlX3JjZncgKnJjZncsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0xODktXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgY3JlcV9mdW5jX2V2ZW50ICpmdW5jX2V2ZW50KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yMTMtLyogQ1JFUSBDb21wbGV0aW9uIGhhbmRsZXJzICovXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzoyMTQ6c3RhdGljIHZvaWQgYm5nX3JlX3NlcnZpY2VfY3JlcShzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yMTUte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MjE2OlxcdHN0cnVjdCBibmdfcmVfcmNmdyAqcmNmdyA9IGZyb21fdGFza2xldChyY2Z3LCB0LCBjcmVxLmNyZXFfdGFza2xldCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzoyMTc6XFx0c3RydWN0IGJuZ19yZV9jcmVxX2N0eCAqY3JlcSA9IFxcdTAwMjZyY2Z3LVxcdTAwM2VjcmVxO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMjE4LVxcdHUzMiB0eXBlLCBidWRnZXQgPSBCTkdfRldfQ1JFUV9FTlRSWV9QT0xMX0JVREdFVDtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjIxOTpcXHRzdHJ1Y3QgYm5nX3JlX2h3cSAqaHdxID0gXFx1MDAyNmNyZXEtXFx1MDAzZWh3cTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTIyMC1cXHRzdHJ1Y3QgY3JlcV9iYXNlICpjcmVxZTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMjI2LVxcdHdoaWxlIChidWRnZXQgXFx1MDAzZSAwKSB7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzoyMjc6XFx0XFx0Y3JlcWUgPSBibmdfcmVfZ2V0X3FlKGh3cSwgaHdxLVxcdTAwM2Vjb25zLCBOVUxMKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTIyOC1cXHRcXHRpZiAoIUJOR19GV19DUkVRX0NNUF9WQUxJRChjcmVxZSwgY3JlcS1cXHUwMDNlY3JlcV9kYi5kYmluZm8uZmxhZ3MpKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yMzctXFx0XFx0Y2FzZSBDUkVRX0JBU0VfVFlQRV9RUF9FVkVOVDpcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjIzODpcXHRcXHRcXHRibmdfcmVfcHJvY2Vzc19xcF9ldmVudFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMjM5LVxcdFxcdFxcdFxcdChyY2Z3LCAoc3RydWN0IGNyZXFfcXBfZXZlbnQgKiljcmVxZSxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMjQzLVxcdFxcdGNhc2UgQ1JFUV9CQVNFX1RZUEVfRlVOQ19FVkVOVDpcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjI0NDpcXHRcXHRcXHRpZiAoIWJuZ19yZV9wcm9jZXNzX2Z1bmNfZXZlbnRcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTI0NS1cXHRcXHRcXHQgICAgKHJjZncsIChzdHJ1Y3QgY3JlcV9mdW5jX2V2ZW50ICopY3JlcWUpKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yNTktXFx0XFx0aHdfcG9sbGVkKys7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzoyNjA6XFx0XFx0Ym5nX3JlX2h3cV9pbmNyX2NvbnMoaHdxLVxcdTAwM2VtYXhfZWxlbWVudHMsIFxcdTAwMjZod3EtXFx1MDAzZWNvbnMsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yNjEtXFx0XFx0XFx0XFx0ICAgICAxLCBcXHUwMDI2Y3JlcS1cXHUwMDNlY3JlcV9kYi5kYmluZm8uZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yNjQtXFx0aWYgKGh3X3BvbGxlZClcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjI2NTpcXHRcXHRibmdfcmVfcmluZ19ucV9kYihcXHUwMDI2Y3JlcS1cXHUwMDNlY3JlcV9kYi5kYmluZm8sXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yNjYtXFx0XFx0XFx0XFx0ICByY2Z3LVxcdTAwM2VyZXMtXFx1MDAzZWNjdHgsIHRydWUpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yNzEtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzoyNzI6c3RhdGljIGludCBfX3NlbmRfbWVzc2FnZV9iYXNpY19zYW5pdHkoc3RydWN0IGJuZ19yZV9yY2Z3ICpyY2Z3LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MjczOlxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgYm5nX3JlX2NtZHFtc2cgKm1zZyxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTI3NC1cXHRcXHRcXHRcXHQgICAgICAgdTggb3Bjb2RlKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMjc1LXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjI3NjpcXHRzdHJ1Y3QgYm5nX3JlX2NtZHFfY3R4ICpjbWRxO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMjc3LVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zMDEtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzozMDI6c3RhdGljIGludCBfX3NlbmRfbWVzc2FnZShzdHJ1Y3QgYm5nX3JlX3JjZncgKnJjZncsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzozMDM6XFx0XFx0XFx0ICBzdHJ1Y3QgYm5nX3JlX2NtZHFtc2cgKm1zZywgdTggb3Bjb2RlKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMzA0LXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTMwNS1cXHR1MzIgYnNpemUsIGZyZWVfc2xvdHMsIHJlcXVpcmVkX3Nsb3RzO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MzA2OlxcdHN0cnVjdCBibmdfcmVfY21kcV9jdHggKmNtZHE7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzozMDc6XFx0c3RydWN0IGJuZ19yZV9jcnNxZSAqY3JzcWU7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zMDgtXFx0c3RydWN0IGJuZ19md19jbWRxZSAqY21kcWU7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzozMDk6XFx0c3RydWN0IGJuZ19yZV9od3EgKmh3cTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTMxMC1cXHR1MzIgc3dfcHJvZCwgY21kcV9wcm9kO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zMjItXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZod3EtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MzIzOlxcdHJlcXVpcmVkX3Nsb3RzID0gYm5nX3JlX2dldF9jbWRfc2xvdHMobXNnLVxcdTAwM2VyZXEpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMzI0LVxcdGZyZWVfc2xvdHMgPSBIV1FfRlJFRV9TTE9UUyhod3EpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zMzYtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzozMzc6XFx0YnNpemUgPSBibmdfcmVfc2V0X2NtZF9zbG90cyhtc2ctXFx1MDAzZXJlcSk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zMzgtXFx0Y3JzcWUtXFx1MDAzZWZyZWVfc2xvdHMgPSBmcmVlX3Nsb3RzO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zNDUtXFx0aWYgKF9fZ2V0X2NtZHFfYmFzZV9yZXNwX3NpemUobXNnLVxcdTAwM2VyZXEsIG1zZy1cXHUwMDNlcmVxX3N6KSBcXHUwMDI2XFx1MDAyNiBtc2ctXFx1MDAzZXNiKSB7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzozNDY6XFx0XFx0c3RydWN0IGJuZ19yZV9yY2Z3X3NidWYgKnNidWYgPSBtc2ctXFx1MDAzZXNiO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMzQ3LVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zNTktXFx0XFx0c3dfcHJvZCA9IEhXUV9DTVAoaHdxLVxcdTAwM2Vwcm9kLCBod3EpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MzYwOlxcdFxcdGNtZHFlID0gYm5nX3JlX2dldF9xZShod3EsIHN3X3Byb2QsIE5VTEwpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMzYxLVxcdFxcdC8qIENvcHkgYSBzZWdtZW50IG9mIHRoZSByZXEgY21kIHRvIHRoZSBjbWRxICovXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTM5OS0gKi9cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjQwMDpzdGF0aWMgaW50IF9fd2FpdF9mb3JfcmVzcChzdHJ1Y3QgYm5nX3JlX3JjZncgKnJjZncsIHUxNiBjb29raWUpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy00MDEte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6NDAyOlxcdHN0cnVjdCBibmdfcmVfY21kcV9jdHggKmNtZHE7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzo0MDM6XFx0c3RydWN0IGJuZ19yZV9jcnNxZSAqY3JzcWU7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy00MDQtXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTQxNS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjQxNjpcXHRcXHRibmdfcmVfc2VydmljZV9jcmVxKFxcdTAwMjZyY2Z3LVxcdTAwM2VjcmVxLmNyZXFfdGFza2xldCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy00MTctXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTQyMy0vKipcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjQyNDogKiBibmdfcmVfcmNmd19zZW5kX21lc3NhZ2UgICAtXFx0aW50ZXJmYWNlIHRvIHNlbmRcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTQyNS0gKiBhbmQgY29tcGxldGUgcmNmdyBjb21tYW5kLlxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy00MzUtICovXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzo0MzY6aW50IGJuZ19yZV9yY2Z3X3NlbmRfbWVzc2FnZShzdHJ1Y3QgYm5nX3JlX3JjZncgKnJjZncsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzo0Mzc6XFx0XFx0XFx0ICAgICBzdHJ1Y3QgYm5nX3JlX2NtZHFtc2cgKm1zZylcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTQzOC17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy00MzktXFx0c3RydWN0IGNyZXFfcXBfZXZlbnQgKmV2bnQgPSAoc3RydWN0IGNyZXFfcXBfZXZlbnQgKiltc2ctXFx1MDAzZXJlc3A7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzo0NDA6XFx0c3RydWN0IGJuZ19yZV9jcnNxZSAqY3JzcWU7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy00NDEtXFx0dTE2IGNvb2tpZTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtNDQ4LVxcdGlmIChyYylcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjQ0OTpcXHRcXHRyZXR1cm4gcmMgPT0gLUVOWElPID8gYm5nX3JlX21hcF9yYyhvcGNvZGUpIDogcmM7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE1OjAwOjQ1LjU2MDQxODcyMloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4MTMyMTQzMzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIFBvdGVudGlhbCBGdXp6aW5nIFJlYWNoYWJpbGl0eSBmb3IgQnJvYWRjb20gQk5HRSBEcml2ZXIgQ2hhbmdlcyoqXG5cbk9rYXksIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBtb2RpZmllcyB0aGUgQnJvYWRjb20gYEJOR0VgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBgQ09ORklHX0lORklOSUJBTkRfQk5HX1JFYCBjb25maWd1cmF0aW9uLiBUaGUgY2hhbmdlcyBpbnZvbHZlIG1vZGlmeWluZyBob3cgcmluZyBJRHMgYXJlIGhhbmRsZWQgKGZyb20gYHUxNmAgdG8gYHUzMmApIGluIHJpbmcgYWxsb2NhdGlvbiBhbmQgZnJlZWluZyBmdW5jdGlvbnMsIGJvdGggd2l0aGluIHRoZSBgYm5nZV9kZXYuY2AgYW5kIGBibmdlX2h3cm1fbGliLmNgIGZpbGVzLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGNvZGUgcGF0aHMgYXJlIHJlYWNoYWJsZSB3aXRoaW4gYSBmdXp6aW5nIGNvbnRleHQgbGlrZSBRRU1VLlxuXG5Jbml0aWFsbHksIEkgaWRlbnRpZmllZCBgQ09ORklHX0lORklOSUJBTkRfQk5HX1JFYCBhcyB0aGUgcmVsZXZhbnQgY29uZmlnIGFuZCB0aGUgcGF0Y2ggY2hhbmdlcy4gTXkgZmlyc3QgaW5zdGluY3Qgd2FzIHRvIGNoZWNrIHdoZXRoZXIgdGhpcyBpcyBhIHJlYWwgY29uZmlnLlxuXG5UaGUgY3J1Y2lhbCBwb2ludCBoZXJlIGlzIHdoZXRoZXIgdGhlIGRyaXZlciwgYGJuZ2VgLCB3aGljaCBzZWVtcyB0byBiZSBhIHJlYWwgUENJIGRyaXZlciAoY29uZmlybWVkIGJ5IHRoZSBgYm5nZV9wY2lfdGJsYCBlbnRyaWVzIHdpdGggYSByZWFsIFBDSSBkZXZpY2UgSUQpIGNhbiBiZSBmdXp6ZWQuIEl0J3Mgbm90IGEgc3RhbmRhcmQgcHJhY3RpY2UgdG8gZnV6eiBQQ0kgZHJpdmVycyB3aXRob3V0IHNvbWUgZm9ybSBvZiBkZXZpY2UgZW11bGF0aW9uLiBUaGUgcXVlc3Rpb24gaXMgd2hldGhlciBzeXprYWxsZXIncyBjYXBhYmlsaXRpZXMgYXJlIHN1ZmZpY2llbnQsIGdpdmVuIHRoZSBwcm9tcHQuIFN5emthbGxlciBoYXMgUENJIGRldmljZSBlbXVsYXRpb24sIHNvIGl0IHNlZW1zIGxpa2UgSSAqY2FuKiByZWFjaCB0aGVzZSBjb2RlIHBhdGhzLlxuXG5JIGFsc28gY29uc2lkZXJlZCB3aGV0aGVyIGl0IGlzIGEgc3l6a2FsbGVyJ3MgbW9jayBkcml2ZXIsIGJ1dCBjb25maXJtZWQgd2l0aCB0aGUgY29tbWl0IGF1dGhvciB0aGF0IHRoaXMgaXMgYW4gZXhpc3RpbmcgZHJpdmVyIGluIHRoZSBrZXJuZWwgc291cmNlLlxuXG5Gb2N1c2luZyBvbiB0aGUgY2hhbmdlZCBmdW5jdGlvbnMsIG5hbWVseSBgYm5nX3JlX25ldF9yaW5nX2ZyZWVgLCBgYm5nX3JlX25ldF9yaW5nX2FsbG9jYCwgYGh3cm1fcmluZ19mcmVlX3NlbmRfbXNnYCwgYW5kIGBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2dgLCBhbmQgc2V2ZXJhbCBtb3JlIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHJpbmcgYWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uIGluIGBibmdlX25ldGRldi5jYCwgSSBkZXRlcm1pbmVkIHRoYXQgdGhlc2UgYWxsIHJlbGF0ZSB0byByaW5nIGFsbG9jYXRpb24gYW5kIHJlbGVhc2UgYW5kIEhXUk0gbWVzc2FnaW5nIGluIHRoZSBkcml2ZXIuXG5cblRoZXJlZm9yZSwgc2luY2Ugc3l6a2FsbGVyICpkb2VzKiBoYXZlIFBDSSBmdXp6aW5nIHN1cHBvcnQgd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBQQ0kgZGV2aWNlcywgd2hpY2ggd291bGQgaW52b2x2ZSBpbmplY3Rpb24gb2YgUENJIGNvbmZpZyBzcGFjZSwgTU1JTywgYW5kIHRoZSBsaWtlLCBhbmQgdGhlIGZhY3QgdGhhdCBgYm5nZWAgc2VlbXMgdG8gYmUgYSByZWFsIFBDSSBkcml2ZXIgdGhhdCBjYW4gcG90ZW50aWFsbHkgYmUgcmVhY2hlZCB3aXRoIHN5emthbGxlciwgSSB3b3VsZCBjb25jbHVkZSB0aGF0IHRoZSBjb2RlIHBhdGhzIGFyZSByZWFjaGFibGUgaW4gUUVNVSB3aXRoIHN5emthbGxlci4gVGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGBCTkdFYCBhbmQgYElORklOSUJBTkRfQk5HX1JFYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg1OTYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzY2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE1OjAxOjEzLjY5MjU2NTc2MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Nzc4OTA4NTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJOR0VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjUwPWNvbmZpZyBCTlhUX0hXTU9OXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjI1ODpjb25maWcgQk5HRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjU5LVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBUaG9yVWx0cmEgRXRoZXJuZXQgZGV2aWNlIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE1OjAxOjE0LjI3MDQ2NTY5NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3MDU0NzkzNjc1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHF1aWNrIGFzc2Vzc21lbnQgb2YgdGhpcyBjb25maWd1cmF0aW9uIHNjZW5hcmlvOlxuXG4qKkluaXRpYWwgQ29uZmlndXJhdGlvbiBBc3Nlc3NtZW50KipcblxuQWxyaWdodCwgc28gYEJOR0VgIGlzIGRlZmluaXRlbHkgYSB2YWxpZCBjb25maWd1cmF0aW9uIGl0ZW0sIGFuZCBgSU5GSU5JQkFORF9CTkdfUkVgIGlzIGFsc28gcHJlc2VudC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCBhdCBmaXJzdCBnbGFuY2UuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCwgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIGlzIHRvIGRldGVybWluZSBpZiBgQk5HRWAgaGFzIGFueSBzcGVjaWZpYyBkZXBlbmRlbmNpZXMuIEtub3dpbmcgd2hhdCBgQk5HRWAgcmVsaWVzIHVwb24gaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgcm9sZSBhbmQgcG90ZW50aWFsIGltcGFjdCB3aXRoaW4gdGhlIG92ZXJhbGwgc3lzdGVtLiBUaW1lIHRvIGRpZyBhIGJpdCBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMDEzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTU6MDQ6MDQuODE4NDA4NjYzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTM3MjQ3NTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJOR0VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTI1MD1jb25maWcgQk5YVF9IV01PTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyNTg6Y29uZmlnIEJOR0VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI1OS1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gVGhvclVsdHJhIEV0aGVybmV0IGRldmljZSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNTowNDowNS4zMTIxNDM2MTVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA0NzcxODIwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBgQk5HRWAgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hhdCdzIGhvb2tlZCBpbnRvIGBCTkdFYD9cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzLCBpdHMgdXBzdHJlYW0gYW5kIGRvd25zdHJlYW0gcmVsYXRpb25zaGlwcy4gSSdtIG5vdCBqdXN0IGxvb2tpbmcgZm9yIGEgc2ltcGxlIGxpc3Q7IEkgd2FudCB0byBzZWUgdGhlICpuYXR1cmUqIG9mIHRob3NlIGRlcGVuZGVuY2llcy4gQXJlIHdlIHRhbGtpbmcgZGlyZWN0IGZ1bmN0aW9uIGNhbGxzLCBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzLCBtZXNzYWdlIHF1ZXVlcywgZXh0ZXJuYWwgQVBJcywgY29uZmlndXJhdGlvbiBmaWxlcywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSB0eXBlIG9mIGRlcGVuZGVuY3kgZGljdGF0ZXMgdGhlIGltcGFjdCBvZiBhbnkgY2hhbmdlIHRvIGBCTkdFYC5cblxuSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBwaWVjZXMgb2YgdGhlIHN5c3RlbSByZWx5IG9uIGl0IGFuZCwgY29udmVyc2VseSwgd2hhdCBpdCBuZWVkcyB0byBmdW5jdGlvbiBjb3JyZWN0bHkuIFRoaXMgaXMgY3JpdGljYWwgZm9yIGltcGFjdCBhbmFseXNpcy4gSSdtIHRoaW5raW5nIGFib3V0IHBvdGVudGlhbCBib3R0bGVuZWNrcywgc2luZ2xlIHBvaW50cyBvZiBmYWlsdXJlLCBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiByZWZhY3RvcmluZyBvciwgaGVhdmVuIGZvcmJpZCwgcmVtb3ZpbmcgYEJOR0VgLiBBcmUgd2UgZGVhbGluZyB3aXRoIGEgdGlnaHQsIHBvdGVudGlhbGx5IGZyYWdpbGUgY291cGxpbmcsIG9yIHNvbWV0aGluZyBtb3JlIGxvb3NlbHkgY291cGxlZCBhbmQgcm9idXN0P1xuXG5NeSBtZW50YWwgY2hlY2tsaXN0IGlzIHJ1bm5pbmc6IHNvdXJjZSBjb2RlLCBkb2N1bWVudGF0aW9uLCBhbnkgYXJjaGl0ZWN0dXJhbCBkaWFncmFtcy4uLiBJJ2xsIG5lZWQgdG8gdXNlIG15IHVzdWFsIHRvb2xzIHRvIHRyYWNlIHRoZSBjYWxscywgY2hlY2sgZm9yIHNoYXJlZCByZXNvdXJjZXMsIGFuZCBsb29rIGZvciBhbnkgdW51c3VhbCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGluZGljYXRlIGEgaGlkZGVuIG9yIGNvbXBsZXggZGVwZW5kZW5jeS4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIGlzIHRoZSBmb3VuZGF0aW9uIGZvciBhbnkgZnVydGhlciBhbmFseXNpcyBvciBtb2RpZmljYXRpb24gb2YgdGhpcyBjb21wb25lbnQuIFRpbWUgdG8gcm9sbCB1cCBteSBzbGVldmVzIGFuZCBnZXQgdG8gd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIzMTIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNTowNDoxMC4zNTk4NjU2OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwMjc1ODczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCTkdFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz0yNTA9Y29uZmlnIEJOWFRfSFdNT05cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjU4OmNvbmZpZyBCTkdFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNTktXFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIFRob3JVbHRyYSBFdGhlcm5ldCBkZXZpY2Ugc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTU6MDQ6MTAuNTQwMTUwODcyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NDQyNTU4NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuT2theSwgaG9sZCBvbiBhIG1pbnV0ZS4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGluY29tcGxldGUuIEkganVtcGVkIHRvIGEgY29uY2x1c2lvbiB0b28gcXVpY2tseS4gVGhlIHBocmFzZSBgY29uZmlnIEJOR0VgIGlzIGEgY2xlYXIgaW5kaWNhdG9yIHRoYXQgSSdtIGRlYWxpbmcgd2l0aCBhIGNvbmZpZ3VyYXRpb24gc2V0dGluZyByZWxhdGVkIHRvIGEgXCJCTkdFXCIgY29tcG9uZW50IG9yIG1vZHVsZS4gQnV0IHRoYXQncyBqdXN0IHRoZSBzdGFydGluZyBwb2ludC4gVG8gdHJ1bHkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb24sIGFuZCB0byBmb3JtdWxhdGUgYSB0cnVseSBhY2N1cmF0ZSBhc3Nlc3NtZW50IG9mIHRoZSBzaWduaWZpY2FuY2Ugb2YgdGhpcyBsaW5lIHdpdGhpbiB0aGUgYnJvYWRlciBjb250ZXh0LCBJIGFic29sdXRlbHkgbmVlZCB0byBleGFtaW5lIHRoZSBzdWJzZXF1ZW50IGxpbmVzIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgb3IgcmVsZXZhbnQgY29kZSBibG9jay4gVGhlIGRlcGVuZGVuY3kgb2YgYEJOR0VgIG9uIHdoYXRldmVyIGNvbWVzIGFmdGVyIGl0IGlzIHBhcmFtb3VudC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBgQk5HRWAgY29uZmlndXJhdGlvbiBhbmQgaXRzIGFzc29jaWF0ZWQgcGFyYW1ldGVycywgZGVwZW5kZW5jaWVzLCBvciBjb25kaXRpb25zLiBJcyBpdCBhIGRlZmF1bHQgc2V0dGluZz8gQW4gb3ZlcnJpZGU/IEFuIGVuYWJsaW5nIGZsYWc/IFdpdGhvdXQgc2VlaW5nIHdoYXQgZm9sbG93cywgSSdtIG1pc3NpbmcgY3JpdGljYWwgY29udGV4dCBhbmQgcG90ZW50aWFsbHkgb3Zlcmxvb2tpbmcgc3VidGxlLCB5ZXQgdml0YWwsIGRlc2lnbiBkZWNpc2lvbnMgb3IgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gY29uZmxpY3RzLiBUaGUgYmVoYXZpb3Igb2Ygd2hhdGV2ZXIgXCJCTkdFXCIgaXMgd291bGQgYmUgYWZmZWN0ZWQgYnkgdGhlIG5leHQgbGluZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI3NTIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNTowNDoxNC40ODQ0MTEyMjVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NzIwMjcwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQk5HRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjUwPWNvbmZpZyBCTlhUX0hXTU9OXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjI1ODpjb25maWcgQk5HRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjU5LVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBUaG9yVWx0cmEgRXRoZXJuZXQgZGV2aWNlIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE1OjA0OjE0LjY1MTY2MzY2OVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDgzOTU5NTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgeW91ciBzdW1tYXJ5OlxuXG4qKkNvbnNpZGVyaW5nIEZpbGUgQW5hbHlzaXMgT3B0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgc2l0dWF0aW9uIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIFwiRG8gSSByZWFsbHkgbmVlZCB0aGUgZnVsbCBgZ3JlcGAgYW5hbHlzaXMgaGVyZSwgb3IgY2FuIEkgZ2V0IGF3YXkgd2l0aCBhIHNpbXBsZXIgbWV0aG9kP1wiIFRoZSBgLUEgMTBgIG9wdGlvbiBmb3IgYGdyZXBgIGlzIHRlbXB0aW5nLCBhcyBpdCB3b3VsZCBwcm92aWRlIHNvbWUgY29udGV4dCBhcm91bmQgZWFjaCBtYXRjaCwgYnV0IGl0J3MgcHJvYmFibHkgb3ZlcmtpbGwgZm9yIHdoYXQgSSdtIHRyeWluZyB0byBhY2hpZXZlLiBJJ20gYWxyZWFkeSBwcmV0dHkgZmFtaWxpYXIgd2l0aCB0aGUgZGF0YSBhbmQsIGhvbmVzdGx5LCBqdXN0IHJlYWRpbmcgdGhlIGZpbGUgaXRzZWxmIG1pZ2h0IGJlIHRoZSBtb3N0IGVmZmljaWVudCBhcHByb2FjaCwgZXNwZWNpYWxseSBpZiBJIGNhbiBxdWlja2x5IGlkZW50aWZ5IHRoZSBrZXkgc2VjdGlvbnMgSSdtIGludGVyZXN0ZWQgaW4gd2l0aG91dCBhIGxvdCBvZiBleHRyYSBvdXRwdXQgY2x1dHRlcmluZyB0aGluZ3MgdXAuIEknbGwgbmVlZCB0byB3ZWlnaCBzcGVlZCBhZ2FpbnN0IGNvbXBsZXRlbmVzczsgZ2l2ZW4gbXkgZXhwZXJ0aXNlLCBhIGRpcmVjdCByZWFkIGlzIHByb2JhYmx5IHRoZSBzbWFydCBtb3ZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzEzMSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE1OjA0OjE4LjczNTYyNzU4OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzY1MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyNTA6XFx0Y29uZmlnIEJOWFRfSFdNT05cXG4gMjUxOlxcdFxcdGJvb2wgXFxcIkJyb2FkY29tIE5ldFh0cmVtZS1DL0UgSFdNT04gc3VwcG9ydFxcXCJcXG4gMjUyOlxcdFxcdGRlZmF1bHQgeVxcbiAyNTM6XFx0XFx0ZGVwZW5kcyBvbiBCTlhUIFxcdTAwMjZcXHUwMDI2IEhXTU9OIFxcdTAwMjZcXHUwMDI2ICEoQk5YVD15IFxcdTAwMjZcXHUwMDI2IEhXTU9OPW0pXFxuIDI1NDpcXHRcXHRoZWxwXFxuIDI1NTpcXHRcXHQgIFNheSBZIGlmIHlvdSB3YW50IHRvIGV4cG9zZSB0aGUgdGhlcm1hbCBzZW5zb3IgZGF0YSBvbiBOZXRYdHJlbWUtQy9FXFxuIDI1NjpcXHRcXHQgIGRldmljZXMsIHZpYSB0aGUgaHdtb24gc3lzZnMgaW50ZXJmYWNlLlxcbiAyNTc6XFx0XFxuIDI1ODpcXHRjb25maWcgQk5HRVxcbiAyNTk6XFx0XFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIFRob3JVbHRyYSBFdGhlcm5ldCBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4gMjYwOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDI2MTpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gMjYyOlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gMjYzOlxcdFxcdHNlbGVjdCBBVVhJTElBUllfQlVTXFxuIDI2NDpcXHRcXHRoZWxwXFxuIDI2NTpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEJyb2FkY29tIFRob3JVbHRyYSA1MC8xMDAvMjAwLzQwMC84MDAgZ2lnYWJpdFxcbiAyNjY6XFx0XFx0ICBFdGhlcm5ldCBjYXJkcy4gVGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBibmdfZW4uIFRvIGNvbXBpbGUgdGhpc1xcbiAyNjc6XFx0XFx0ICBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuIDI2ODpcXHRcXG4gMjY5OlxcdGNvbmZpZyBCQ01BU1BcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTU6MDQ6MTguNzM1ODExMDI4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MzExOTUwODczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBkaXN0aWxsZWQ6XG5cbioqRGVwZW5kZW5jeSBEZWVwIERpdmUqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIG1vZHVsZSdzIGRlcGVuZGVuY2llcy4gVGhlIGNydWNpYWwgcG9pbnQgc2VlbXMgdG8gYmUgdGhhdCBgQk5HRWAgcmVsaWVzIG9uIGBQQ0lgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCdzIGxpa2VseSBhIGhhcmR3YXJlIGFic3RyYWN0aW9uLiBBbmQgbm93LCBJIHNlZSB0aGF0IGBJTkZJTklCQU5EX0JOR19SRWAgaXMgYnVpbHQgb24gdG9wIG9mIGBCTkdFYC4gR2l2ZW4gdGhlIEluZmluaWJhbmQgY29udGV4dCwgdGhhdCdzIG5vdCBzdXJwcmlzaW5nLiBUbyB1bmRlcnN0YW5kIHRoZSB3aG9sZSBwaWN0dXJlLCBJIHNob3VsZCBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGUgYm5nX3JlIGRyaXZlciDigJMgc3BlY2lmaWNhbGx5LCBsZXQncyBsb29rIGF0IGBkcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGFuZCBkZXBlbmRlbmNpZXMgd2lsbCBiZSBjbGVhcmx5IHNwZWxsZWQgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzY4MSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTU6MDQ6NTguMDQ3NzY1NjkxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDU1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBJTkZJTklCQU5EX0JOR19SRVxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIE5leHQgZ2VuZXJhdGlvbiBSb0NFIEhDQSBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiA2NEJJVFxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IERDQiBcXHUwMDI2XFx1MDAyNiBCTkdFXFxuICAgNjpcXHRcXHRoZWxwXFxuICAgNzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEJyb2FkY29tIE5leHQgZ2VuZXJhdGlvblxcbiAgIDg6XFx0XFx0ICA1MC8xMDAvMjAwLzQwMC84MDAgZ2lnYWJpdCBSb0NFIEhDQXMuIFRoZSBtb2R1bGVcXG4gICA5OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgYm5nX3JlLiBUbyBjb21waWxlIHRoaXMgZHJpdmVyXFxuICAxMDpcXHRcXHQgIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNTowNDo1OC4wNDc4Nzk5NTFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTY0NjQyNjA0MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbmZpbmliYW5kIEJORyBSRSBEcml2ZXIgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBgSU5GSU5JQkFORF9CTkdfUkVgIGhhcyBhIGZldyBkZXBlbmRlbmNpZXM6IGA2NEJJVGAsIGBJTkVUYCwgYERDQmAsIGFuZCBgQk5HRWAuICBJIG5lZWQgdG8gbWFrZSBzdXJlIGBCTkdFYCBhbmQgYElORklOSUJBTkRfQk5HX1JFYCBhcmUgZW5hYmxlZC5cblxuTm93LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucy4gIExldCdzIHNlZTogSSd2ZSBnb3QgYGJuZ19yZV9uZXRfcmluZ19mcmVlYCwgYGJuZ19yZV9uZXRfcmluZ19hbGxvY2AsIGBod3JtX3JpbmdfZnJlZV9zZW5kX21zZ2AsIGBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2dgLCBgYm5nZV9od3JtX3J4X2FnZ19yaW5nX2FsbG9jYCwgYGJuZ2VfaHdybV9yeF9yaW5nX2FsbG9jYCwgYGJuZ2VfaHdybV9yaW5nX2FsbG9jYCwgYGJuZ2VfaHdybV9yeF9yaW5nX2ZyZWVgLCBgYm5nZV9od3JtX3J4X2FnZ19yaW5nX2ZyZWVgLCBgYm5nZV9od3JtX3R4X3JpbmdfZnJlZWAsIGBibmdlX2h3cm1fY3BfcmluZ19mcmVlYCwgYW5kIGBibmdlX2h3cm1fcmluZ19mcmVlYC4gVGhvc2UgYXJlIHRoZSBjb3JlIGZ1bmN0aW9ucyB0byBmb2N1cyBvbi5cblxuSSBzaG91bGQgYWxzbyBub3RlIHRoZSBvdGhlciBmdW5jdGlvbnMgSSBzcG90dGVkOiBgYm5nZV9jcF9yaW5nX2Zvcl9yeGAgYW5kIGBibmdlX2NwX3JpbmdfZm9yX3R4YCwgd2hpY2ggYXJlIGp1c3Qgc2ltcGxlIGdldHRlcnMuIFRoZW4gdGhlcmUncyB0aGUgaW5pdGlhbGl6YXRpb24gcm91dGluZXM6IGBibmdlX2luaXRfbnFfdHJlZWAsIGBibmdlX2luaXRfb25lX3J4X3JpbmdfcnhiZGAsIGBibmdlX2luaXRfb25lX2FnZ19yaW5nX3J4YmRgLCBgYm5nZV9pbml0X3R4X3JpbmdzYCwgYW5kIGBibmdlX2ZpbGxfaHdfcnNzX3RibGAuICBGaW5hbGx5LCB0aGVyZSdzIGBibmdlX2Rpc2FibGVfaW50YCwgd2hpY2ggaXMgdGVhcmRvd24uIFNvLCBJIGRvbid0IG5lZWQgdG8gZm9jdXMgb24gdGhvc2UsIGl0IGlzIGp1c3QgdGhvc2UgY29yZSBmdW5jdGlvbnMuXG5cbkFscmlnaHQsIHNvIHRoZSBrZXkgc3ltYm9scyBhcmUgdGhvc2UgYWxsb2NhdGlvbiBhbmQgZnJlZSBmdW5jdGlvbnMuIE5vdywgbGV0J3Mgc2VlIHdoZXJlIHRoZXkncmUgZGVmaW5lZC4gV2FpdC4gYGJuZ2VfaHdybV9yaW5nX2ZyZWVgIGlzIHN0YXRpYyB3aXRoaW4gYGJuZ2VfbmV0ZGV2LmNgLiBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlc2Ugc3ltYm9scyBhcmUgc3RhdGljIG9yIGV4cG9ydGVkIHRvIHNlZSBpZiB0aGV5IGNhbiBiZSBmdXp6ZWQuIGBibmdfcmVfbmV0X3JpbmdfZnJlZWAgYW5kIGBibmdfcmVfbmV0X3JpbmdfYWxsb2NgIGFyZSBzdGF0aWMgaW4gYGJuZ19kZXYuY2AuICBgaHdybV9yaW5nX2ZyZWVfc2VuZF9tc2dgIGFuZCBgaHdybV9yaW5nX2FsbG9jX3NlbmRfbXNnYCBhcmUgZ2xvYmFsIGluIGBibmdlX2h3cm1fbGliLmNgLiAgYGJuZ2VfaHdybV9yeF9hZ2dfcmluZ19hbGxvY2AsIGBibmdlX2h3cm1fcnhfcmluZ19hbGxvY2AsIGBibmdlX2h3cm1fcmluZ19hbGxvY2AgYXJlIHN0YXRpYyBpbiBgYm5nZV9uZXRkZXYuY2AuIEFuZCBgYm5nZV9od3JtX3J4X3JpbmdfZnJlZWAsIGBibmdlX2h3cm1fcnhfYWdnX3JpbmdfZnJlZWAsIGBibmdlX2h3cm1fdHhfcmluZ19mcmVlYCwgYGJuZ2VfaHdybV9jcF9yaW5nX2ZyZWVgLCBgYm5nZV9od3JtX3JpbmdfZnJlZWAgYXJlIHN0YXRpYyB3aXRoaW4gYGJuZ2VfbmV0ZGV2LmNgLlxuXG5Ob3csIHRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBhIHdvcnRod2hpbGUgdGFyZ2V0IGZvciBmdXp6aW5nPyBBYnNvbHV0ZWx5LiAgVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBhIGRyaXZlciwgYW5kIGRyaXZlcnMgYXJlIHByaW1lIHRhcmdldHMuICBTaW5jZSB0aGUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdXNpbmcgc3l6a2FsbGVyJ3MgUENJIGVtdWxhdGlvbi4gSSByZW1lbWJlciBzeXprYWxsZXIgKmRvZXMqIGhhdmUgUENJIGVtdWxhdGlvbi4gIFRoZSBwcm9tcHQgbWVudGlvbnMgcmVhY2hpbmcgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgYnV0IHN5emthbGxlcidzIFBDSSBlbXVsYXRpb24gc2hvdWxkIGJ5cGFzcyB0aGF0IGNvbnN0cmFpbnQuXG5cbkxldCdzIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50czogYEJOR0VgIGFuZCBgSU5GSU5JQkFORF9CTkdfUkVgIGFyZSBkZWZpbml0ZSwgYW5kIEkgc2hvdWxkIGFsc28gYWRkIGBEQ0JgIHRvIHRoZSBsaXN0IGJlY2F1c2UgaXQncyBhIGRlcGVuZGVuY3kgb2YgYElORklOSUJBTkRfQk5HX1JFYC5cblxuRmluYWxseSwgbGV0J3MgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmIGFnYWluLiBUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgYGZ3X3JpbmdfaWRgIGZyb20gYSBgdTE2YCB0byBhIGB1MzJgLiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSBiZWNhdXNlIGl0IGFsdGVycyB0aGUgcmluZyBJRCBzaXplIGFuZCBob3cgaXQncyBwYXNzZWQgdG8gdGhlIGZpcm13YXJlLiBUaGF0J3MgZ29vZCwgdGhhdCdzIHdoYXQgSSB3YW50LlxuXG5Pa2F5LCBJJ20gcmVhZHkgdG8gc2V0IHRoZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDEwNiwiT3V0cHV0VG9rZW5zIjoyODIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDAyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTU6MDU6MTQuNTEyMTQ0NDQ1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjczOTU1MDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTkdFXCIsXG4gICAgXCJJTkZJTklCQU5EX0JOR19SRVwiLFxuICAgIFwiRENCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYm5nX3JlX25ldF9yaW5nX2ZyZWVcIixcbiAgICBcImJuZ19yZV9uZXRfcmluZ19hbGxvY1wiLFxuICAgIFwiaHdybV9yaW5nX2ZyZWVfc2VuZF9tc2dcIixcbiAgICBcImh3cm1fcmluZ19hbGxvY19zZW5kX21zZ1wiLFxuICAgIFwiYm5nZV9od3JtX3J4X2FnZ19yaW5nX2FsbG9jXCIsXG4gICAgXCJibmdlX2h3cm1fcnhfcmluZ19hbGxvY1wiLFxuICAgIFwiYm5nZV9od3JtX3JpbmdfYWxsb2NcIixcbiAgICBcImJuZ2VfaHdybV9yeF9yaW5nX2ZyZWVcIixcbiAgICBcImJuZ2VfaHdybV9yeF9hZ2dfcmluZ19mcmVlXCIsXG4gICAgXCJibmdlX2h3cm1fdHhfcmluZ19mcmVlXCIsXG4gICAgXCJibmdlX2h3cm1fY3BfcmluZ19mcmVlXCIsXG4gICAgXCJibmdlX2h3cm1fcmluZ19mcmVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJyb2FkY29tIEJOR0UgYW5kIEJOR19SRSBkcml2ZXJzIHRvIHN1cHBvcnQgMzItYml0IGZpcm13YXJlIHJpbmcgSURzIGluc3RlYWQgb2YgMTYtYml0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHRoZSBkcml2ZXIncyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBoYXJkd2FyZS9maXJtd2FyZSBkdXJpbmcgcmluZyBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nLiBUaGUgZHJpdmVyIGNhbiBiZSB0ZXN0ZWQgdmlhIFBDSSBlbXVsYXRpb24gaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJOR0VcIixcbiAgICBcIklORklOSUJBTkRfQk5HX1JFXCIsXG4gICAgXCJEQ0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJibmdfcmVfbmV0X3JpbmdfZnJlZVwiLFxuICAgIFwiYm5nX3JlX25ldF9yaW5nX2FsbG9jXCIsXG4gICAgXCJod3JtX3JpbmdfZnJlZV9zZW5kX21zZ1wiLFxuICAgIFwiaHdybV9yaW5nX2FsbG9jX3NlbmRfbXNnXCIsXG4gICAgXCJibmdlX2h3cm1fcnhfYWdnX3JpbmdfYWxsb2NcIixcbiAgICBcImJuZ2VfaHdybV9yeF9yaW5nX2FsbG9jXCIsXG4gICAgXCJibmdlX2h3cm1fcmluZ19hbGxvY1wiLFxuICAgIFwiYm5nZV9od3JtX3J4X3JpbmdfZnJlZVwiLFxuICAgIFwiYm5nZV9od3JtX3J4X2FnZ19yaW5nX2ZyZWVcIixcbiAgICBcImJuZ2VfaHdybV90eF9yaW5nX2ZyZWVcIixcbiAgICBcImJuZ2VfaHdybV9jcF9yaW5nX2ZyZWVcIixcbiAgICBcImJuZ2VfaHdybV9yaW5nX2ZyZWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQnJvYWRjb20gQk5HRSBhbmQgQk5HX1JFIGRyaXZlcnMgdG8gc3VwcG9ydCAzMi1iaXQgZmlybXdhcmUgcmluZyBJRHMgaW5zdGVhZCBvZiAxNi1iaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGRyaXZlcidzIGludGVyYWN0aW9uIHdpdGggdGhlIGhhcmR3YXJlL2Zpcm13YXJlIGR1cmluZyByaW5nIGFsbG9jYXRpb24gYW5kIGZyZWVpbmcuIFRoZSBkcml2ZXIgY2FuIGJlIHRlc3RlZCB2aWEgUENJIGVtdWxhdGlvbiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow96mw7[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-30 14:50:26 +0000 UTC FinishedAt: 2026-06-30 15:05:16 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "1398b1014909618f65ff6bcebcb2ee5ccd44fdc0", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BNGE", "INFINIBAND_BNG_RE", "DCB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "1398b1014909618f65ff6bcebcb2ee5ccd44fdc0", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BNGE", "INFINIBAND_BNG_RE", "DCB" ], "series_id": "80ad49a1-1dfe-4948-bc82-d71d3ed5d633" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "bng_re_net_ring_free", "bng_re_net_ring_alloc", "hwrm_ring_free_send_msg", "hwrm_ring_alloc_send_msg", "bnge_hwrm_rx_agg_ring_alloc", "bnge_hwrm_rx_ring_alloc", "bnge_hwrm_ring_alloc", "bnge_hwrm_rx_ring_free", "bnge_hwrm_rx_agg_ring_free", "bnge_hwrm_tx_ring_free", "bnge_hwrm_cp_ring_free", "bnge_hwrm_ring_free" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE1OjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JOR0UmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9CTkdfUkUmIzM0OywKICAgICYjMzQ7RENCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Ym5nX3JlX25ldF9yaW5nX2ZyZWUmIzM0OywKICAgICYjMzQ7Ym5nX3JlX25ldF9yaW5nX2FsbG9jJiMzNDssCiAgICAmIzM0O2h3cm1fcmluZ19mcmVlX3NlbmRfbXNnJiMzNDssCiAgICAmIzM0O2h3cm1fcmluZ19hbGxvY19zZW5kX21zZyYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm1fcnhfYWdnX3JpbmdfYWxsb2MmIzM0OywKICAgICYjMzQ7Ym5nZV9od3JtX3J4X3JpbmdfYWxsb2MmIzM0OywKICAgICYjMzQ7Ym5nZV9od3JtX3JpbmdfYWxsb2MmIzM0OywKICAgICYjMzQ7Ym5nZV9od3JtX3J4X3JpbmdfZnJlZSYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm1fcnhfYWdnX3JpbmdfZnJlZSYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm1fdHhfcmluZ19mcmVlJiMzNDssCiAgICAmIzM0O2JuZ2VfaHdybV9jcF9yaW5nX2ZyZWUmIzM0OywKICAgICYjMzQ7Ym5nZV9od3JtX3JpbmdfZnJlZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQnJvYWRjb20gQk5HRSBhbmQgQk5HX1JFIGRyaXZlcnMgdG8gc3VwcG9ydCAzMi1iaXQgZmlybXdhcmUgcmluZyBJRHMgaW5zdGVhZCBvZiAxNi1iaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGRyaXZlciYjMzk7cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBoYXJkd2FyZS9maXJtd2FyZSBkdXJpbmcgcmluZyBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nLiBUaGUgZHJpdmVyIGNhbiBiZSB0ZXN0ZWQgdmlhIFBDSSBlbXVsYXRpb24gaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE1OjAwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOTk2NmZhNjRmZmIyY2RkNDYwMzZiZDVkZDJmNmI5MDNiZDBhOWQ3MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDE1OjAwOjA1IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmNcbmluZGV4IDcxYTdjYTIxOTZhZDg4Li4zMTFjOGJjOTMxNjAzYSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuY1xuQEAgLTExMyw3ICYjNDM7MTEzLDcgQEAgc3RhdGljIHZvaWQgYm5nX3JlX2ZpbGxfZndfbXNnKHN0cnVjdCBibmdlX2Z3X21zZyAqZndfbXNnLCB2b2lkICptc2csXG4gfVxuIFxuIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2ZyZWUoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYsXG4tXHRcdFx0XHR1MTYgZndfcmluZ19pZCwgaW50IHR5cGUpXG4mIzQzO1x0XHRcdFx0dTMyIGZ3X3JpbmdfaWQsIGludCB0eXBlKVxuIHtcbiBcdHN0cnVjdCBibmdlX2F1eHJfZGV2ICphdXhfZGV2ID0gcmRldi1cdTAwM2VhdXhfZGV2O1xuIFx0c3RydWN0IGh3cm1fcmluZ19mcmVlX2lucHV0IHJlcSA9IHt9O1xuQEAgLTEyMyw3ICYjNDM7MTIzLDcgQEAgc3RhdGljIGludCBibmdfcmVfbmV0X3JpbmdfZnJlZShzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldixcbiBcbiBcdGJuZ19yZV9pbml0X2h3cm1faGRyKCh2b2lkICopXHUwMDI2cmVxLCBIV1JNX1JJTkdfRlJFRSk7XG4gXHRyZXEucmluZ190eXBlID0gdHlwZTtcbi1cdHJlcS5yaW5nX2lkID0gY3B1X3RvX2xlMTYoZndfcmluZ19pZCk7XG4mIzQzO1x0cmVxLnJpbmdfaWQgPSBjcHVfdG9fbGUzMihmd19yaW5nX2lkKTtcbiBcdGJuZ19yZV9maWxsX2Z3X21zZyhcdTAwMjZmd19tc2csICh2b2lkICopXHUwMDI2cmVxLCBzaXplb2YocmVxKSwgKHZvaWQgKilcdTAwMjZyZXNwLFxuIFx0XHRcdCAgICBzaXplb2YocmVzcCksIEJOR0VfREZMVF9IV1JNX0NNRF9USU1FT1VUKTtcbiBcdHJjID0gYm5nZV9zZW5kX21zZyhhdXhfZGV2LCBcdTAwMjZmd19tc2cpO1xuQEAgLTE2MSw3ICYjNDM7MTYxLDcgQEAgc3RhdGljIGludCBibmdfcmVfbmV0X3JpbmdfYWxsb2Moc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYsXG4gXHRcdFx0ICAgc2l6ZW9mKHJlc3ApLCBCTkdFX0RGTFRfSFdSTV9DTURfVElNRU9VVCk7XG4gXHRyYyA9IGJuZ2Vfc2VuZF9tc2coYXV4X2RldiwgXHUwMDI2ZndfbXNnKTtcbiBcdGlmICghcmMpXG4tXHRcdCpmd19yaW5nX2lkID0gbGUxNl90b19jcHUocmVzcC5yaW5nX2lkKTtcbiYjNDM7XHRcdCpmd19yaW5nX2lkID0gKHUxNilsZTMyX3RvX2NwdShyZXNwLnJpbmdfaWQpO1xuIFxuIFx0cmV0dXJuIHJjO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oXG5pbmRleCBmMjFjZmY2NTFmZDQ0YS4uNDQ3OWNjZDA3MWY1MzIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmhcbkBAIC0zNiw2ICYjNDM7MzYsNyBAQCBzdHJ1Y3QgYm5nZV9wZl9pbmZvIHtcbiB9O1xuIFxuICNkZWZpbmUgSU5WQUxJRF9IV19SSU5HX0lEICAgICAgKCh1MTYpLTEpXG4mIzQzOyNkZWZpbmUgSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUXHQoVTMyX01BWClcbiBcbiBlbnVtIHtcbiBcdEJOR0VfRldfQ0FQX1NIT1JUX0NNRFx0XHRcdFx0PSBCSVRfVUxMKDApLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmNcbmluZGV4IDFjOWNmZWMxYjYzM2ZjLi42NTFjNWU3ODM1MTZjYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuY1xuQEAgLTEyODMsNyAmIzQzOzEyODMsNyBAQCBpbnQgYm5nZV9od3JtX3N0YXRfY3R4X2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4pXG4gXG4gaW50IGh3cm1fcmluZ19mcmVlX3NlbmRfbXNnKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHRcdFx0ICAgIHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nLFxuLVx0XHRcdCAgICB1MzIgcmluZ190eXBlLCBpbnQgY21wbF9yaW5nX2lkKVxuJiM0MztcdFx0XHQgICAgdTMyIHJpbmdfdHlwZSwgdTMyIGNtcGxfcmluZ19pZClcbiB7XG4gXHRzdHJ1Y3QgaHdybV9yaW5nX2ZyZWVfaW5wdXQgKnJlcTtcbiBcdHN0cnVjdCBibmdlX2RldiAqYmQgPSBibi1cdTAwM2ViZDtcbkBAIC0xMjk1LDcgJiM0MzsxMjk1LDcgQEAgaW50IGh3cm1fcmluZ19mcmVlX3NlbmRfbXNnKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXG4gXHRyZXEtXHUwMDNlY21wbF9yaW5nID0gY3B1X3RvX2xlMTYoY21wbF9yaW5nX2lkKTtcbiBcdHJlcS1cdTAwM2VyaW5nX3R5cGUgPSByaW5nX3R5cGU7XG4tXHRyZXEtXHUwMDNlcmluZ19pZCA9IGNwdV90b19sZTE2KHJpbmctXHUwMDNlZndfcmluZ19pZCk7XG4mIzQzO1x0cmVxLVx1MDAzZXJpbmdfaWQgPSBjcHVfdG9fbGUzMihyaW5nLVx1MDAzZWZ3X3JpbmdfaWQpO1xuIFxuIFx0Ym5nZV9od3JtX3JlcV9ob2xkKGJkLCByZXEpO1xuIFx0cmMgPSBibmdlX2h3cm1fcmVxX3NlbmQoYmQsIHJlcSk7XG5AQCAtMTMxNyw3ICYjNDM7MTMxNyw3IEBAIGludCBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcdHN0cnVjdCBod3JtX3JpbmdfYWxsb2Nfb3V0cHV0ICpyZXNwO1xuIFx0c3RydWN0IGh3cm1fcmluZ19hbGxvY19pbnB1dCAqcmVxO1xuIFx0c3RydWN0IGJuZ2VfZGV2ICpiZCA9IGJuLVx1MDAzZWJkO1xuLVx0dTE2IHJpbmdfaWQsIGZsYWdzID0gMDtcbiYjNDM7XHR1MzIgcmluZ19pZCwgZmxhZ3MgPSAwO1xuIFx0aW50IHJjO1xuIFxuIFx0cmMgPSBibmdlX2h3cm1fcmVxX2luaXQoYmQsIHJlcSwgSFdSTV9SSU5HX0FMTE9DKTtcbkBAIC0xNDAxLDcgJiM0MzsxNDAxLDcgQEAgaW50IGh3cm1fcmluZ19hbGxvY19zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFxuIFx0cmVzcCA9IGJuZ2VfaHdybV9yZXFfaG9sZChiZCwgcmVxKTtcbiBcdHJjID0gYm5nZV9od3JtX3JlcV9zZW5kKGJkLCByZXEpO1xuLVx0cmluZ19pZCA9IGxlMTZfdG9fY3B1KHJlc3AtXHUwMDNlcmluZ19pZCk7XG4mIzQzO1x0cmluZ19pZCA9IGxlMzJfdG9fY3B1KHJlc3AtXHUwMDNlcmluZ19pZCk7XG4gXHRibmdlX2h3cm1fcmVxX2Ryb3AoYmQsIHJlcSk7XG4gXG4gZXhpdDpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5oXG5pbmRleCAzNTAxZGU3YTg5YjkxOS4uYmY0NTJlMzkwZDViZDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmhcbkBAIC01MCw3ICYjNDM7NTAsNyBAQCBpbnQgYm5nZV9od3JtX2NmYV9sMl9zZXRfcnhfbWFzayhzdHJ1Y3QgYm5nZV9kZXYgKmJkLFxuIHZvaWQgYm5nZV9od3JtX3N0YXRfY3R4X2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibik7XG4gaW50IGJuZ2VfaHdybV9zdGF0X2N0eF9hbGxvYyhzdHJ1Y3QgYm5nZV9uZXQgKmJuKTtcbiBpbnQgaHdybV9yaW5nX2ZyZWVfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibiwgc3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3QgKnJpbmcsXG4tXHRcdFx0ICAgIHUzMiByaW5nX3R5cGUsIGludCBjbXBsX3JpbmdfaWQpO1xuJiM0MztcdFx0XHQgICAgdTMyIHJpbmdfdHlwZSwgdTMyIGNtcGxfcmluZ19pZCk7XG4gaW50IGh3cm1fcmluZ19hbGxvY19zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0XHRcdCAgICAgc3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3QgKnJpbmcsXG4gXHRcdFx0ICAgICB1MzIgcmluZ190eXBlLCB1MzIgbWFwX2luZGV4KTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmNcbmluZGV4IDcwNzY4MTkzMDA0Y2IyLi42ZjdlZjUwNmQ0ZTE4YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jXG5AQCAtMTMyNywxMiAmIzQzOzEzMjcsMTIgQEAgc3RhdGljIGludCBibmdlX2FsbG9jX2NvcmUoc3RydWN0IGJuZ2VfbmV0ICpibilcbiBcdHJldHVybiByYztcbiB9XG4gXG4tdTE2IGJuZ2VfY3BfcmluZ19mb3Jfcngoc3RydWN0IGJuZ2VfcnhfcmluZ19pbmZvICpyeHIpXG4mIzQzO3UzMiBibmdlX2NwX3JpbmdfZm9yX3J4KHN0cnVjdCBibmdlX3J4X3JpbmdfaW5mbyAqcnhyKVxuIHtcbiBcdHJldHVybiByeHItXHUwMDNlcnhfY3ByLVx1MDAzZXJpbmdfc3RydWN0LmZ3X3JpbmdfaWQ7XG4gfVxuIFxuLXUxNiBibmdlX2NwX3JpbmdfZm9yX3R4KHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyKVxuJiM0Mzt1MzIgYm5nZV9jcF9yaW5nX2Zvcl90eChzdHJ1Y3QgYm5nZV90eF9yaW5nX2luZm8gKnR4cilcbiB7XG4gXHRyZXR1cm4gdHhyLVx1MDAzZXR4X2Nwci1cdTAwM2VyaW5nX3N0cnVjdC5md19yaW5nX2lkO1xuIH1cbkBAIC0xMzc1LDEyICYjNDM7MTM3NSwxMiBAQCBzdGF0aWMgdm9pZCBibmdlX2luaXRfbnFfdHJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxuIFx0XHRzdHJ1Y3QgYm5nZV9ucV9yaW5nX2luZm8gKm5xciA9IFx1MDAyNmJuLVx1MDAzZWJuYXBpW2ldLVx1MDAzZW5xX3Jpbmc7XG4gXHRcdHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nID0gXHUwMDI2bnFyLVx1MDAzZXJpbmdfc3RydWN0O1xuIFxuLVx0XHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4mIzQzO1x0XHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gXHRcdGZvciAoaiA9IDA7IGogXHUwMDNjIG5xci1cdTAwM2VjcF9yaW5nX2NvdW50OyBqJiM0MzsmIzQzOykge1xuIFx0XHRcdHN0cnVjdCBibmdlX2NwX3JpbmdfaW5mbyAqY3ByID0gXHUwMDI2bnFyLVx1MDAzZWNwX3JpbmdfYXJyW2pdO1xuIFxuIFx0XHRcdHJpbmcgPSBcdTAwMjZjcHItXHUwMDNlcmluZ19zdHJ1Y3Q7XG4tXHRcdFx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuJiM0MztcdFx0XHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gXHRcdH1cbiBcdH1cbiB9XG5AQCAtMTYzNyw3ICYjNDM7MTYzNyw3IEBAIHN0YXRpYyB2b2lkIGJuZ2VfaW5pdF9vbmVfcnhfcmluZ19yeGJkKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXG4gXHRyaW5nID0gXHUwMDI2cnhyLVx1MDAzZXJ4X3Jpbmdfc3RydWN0O1xuIFx0Ym5nZV9pbml0X3J4YmRfcGFnZXMocmluZywgdHlwZSk7XG4tXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4mIzQzO1x0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBibmdlX2luaXRfb25lX2FnZ19yaW5nX3J4YmQoc3RydWN0IGJuZ2VfbmV0ICpibixcbkBAIC0xNjQ3LDcgJiM0MzsxNjQ3LDcgQEAgc3RhdGljIHZvaWQgYm5nZV9pbml0X29uZV9hZ2dfcmluZ19yeGJkKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHR1MzIgdHlwZTtcbiBcbiBcdHJpbmcgPSBcdTAwMjZyeHItXHUwMDNlcnhfYWdnX3Jpbmdfc3RydWN0O1xuLVx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuJiM0MztcdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcbiBcdGlmIChibmdlX2lzX2FnZ19yZXFkKGJuLVx1MDAzZWJkKSkge1xuIFx0XHR0eXBlID0gKCh1MzIpQk5HRV9SWF9QQUdFX1NJWkUgXHUwMDNjXHUwMDNjIFJYX0JEX0xFTl9TSElGVCkgfFxuIFx0XHRcdFJYX0JEX1RZUEVfUlhfQUdHX0JEIHwgUlhfQkRfRkxBR1NfU09QO1xuQEAgLTE3MDgsNyAmIzQzOzE3MDgsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2luaXRfdHhfcmluZ3Moc3RydWN0IGJuZ2VfbmV0ICpibilcbiBcdFx0c3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIgPSBcdTAwMjZibi1cdTAwM2V0eF9yaW5nW2ldO1xuIFx0XHRzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyA9IFx1MDAyNnR4ci1cdTAwM2V0eF9yaW5nX3N0cnVjdDtcbiBcbi1cdFx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuJiM0MztcdFx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIFxuIFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShibi1cdTAwM2VuZXRkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1RYLFxuIFx0XHRcdFx0ICAgICBcdTAwMjZ0eHItXHUwMDNlYm5hcGktXHUwMDNlbmFwaSk7XG5AQCAtMTg2Nyw3ICYjNDM7MTg2Nyw3IEBAIHN0YXRpYyBpbnQgYm5nZV9od3JtX3J4X2FnZ19yaW5nX2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHRcdCAgICByaW5nLVx1MDAzZWZ3X3JpbmdfaWQpO1xuIFx0Ym5nZV9kYl93cml0ZShibi1cdTAwM2ViZCwgXHUwMDI2cnhyLVx1MDAzZXJ4X2FnZ19kYiwgcnhyLVx1MDAzZXJ4X2FnZ19wcm9kKTtcbiBcdGJuZ2VfZGJfd3JpdGUoYm4tXHUwMDNlYmQsIFx1MDAyNnJ4ci1cdTAwM2VyeF9kYiwgcnhyLVx1MDAzZXJ4X3Byb2QpO1xuLVx0Ym4tXHUwMDNlZ3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSByaW5nLVx1MDAzZWZ3X3JpbmdfaWQ7XG4mIzQzO1x0Ym4tXHUwMDNlZ3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSAodTE2KXJpbmctXHUwMDNlZndfcmluZ19pZDtcbiBcbiBcdHJldHVybiAwO1xuIH1cbkBAIC0xODg2LDcgJiM0MzsxODg2LDcgQEAgc3RhdGljIGludCBibmdlX2h3cm1fcnhfcmluZ19hbGxvYyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0XHRyZXR1cm4gcmM7XG4gXG4gXHRibmdlX3NldF9kYihibiwgXHUwMDI2cnhyLVx1MDAzZXJ4X2RiLCB0eXBlLCBtYXBfaWR4LCByaW5nLVx1MDAzZWZ3X3JpbmdfaWQpO1xuLVx0Ym4tXHUwMDNlZ3JwX2luZm9bbWFwX2lkeF0ucnhfZndfcmluZ19pZCA9IHJpbmctXHUwMDNlZndfcmluZ19pZDtcbiYjNDM7XHRibi1cdTAwM2VncnBfaW5mb1ttYXBfaWR4XS5yeF9md19yaW5nX2lkID0gKHUxNilyaW5nLVx1MDAzZWZ3X3JpbmdfaWQ7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5AQCAtMTkxNiw3ICYjNDM7MTkxNiw3IEBAIHN0YXRpYyBpbnQgYm5nZV9od3JtX3JpbmdfYWxsb2Moc3RydWN0IGJuZ2VfbmV0ICpibilcbiBcdFx0Ym5nZV9zZXRfZGIoYm4sIFx1MDAyNm5xci1cdTAwM2VucV9kYiwgdHlwZSwgbWFwX2lkeCwgcmluZy1cdTAwM2Vmd19yaW5nX2lkKTtcbiBcdFx0Ym5nZV9kYl9ucShibiwgXHUwMDI2bnFyLVx1MDAzZW5xX2RiLCBucXItXHUwMDNlbnFfcmF3X2NvbnMpO1xuIFx0XHRlbmFibGVfaXJxKHZlY3Rvcik7XG4tXHRcdGJuLVx1MDAzZWdycF9pbmZvW2ldLm5xX2Z3X3JpbmdfaWQgPSByaW5nLVx1MDAzZWZ3X3JpbmdfaWQ7XG4mIzQzO1x0XHRibi1cdTAwM2VncnBfaW5mb1tpXS5ucV9md19yaW5nX2lkID0gKHUxNilyaW5nLVx1MDAzZWZ3X3JpbmdfaWQ7XG4gXG4gXHRcdGlmICghaSkge1xuIFx0XHRcdHJjID0gYm5nZV9od3JtX3NldF9hc3luY19ldmVudF9jcihiZCwgcmluZy1cdTAwM2Vmd19yaW5nX2lkKTtcbkBAIC0xOTg2LDE1ICYjNDM7MTk4NiwxMyBAQCB2b2lkIGJuZ2VfZmlsbF9od19yc3NfdGJsKHN0cnVjdCBibmdlX25ldCAqYm4sIHN0cnVjdCBibmdlX3ZuaWNfaW5mbyAqdm5pYylcbiBcdHRibF9zaXplID0gYm5nZV9nZXRfcnhmaF9pbmRpcl9zaXplKGJkKTtcbiBcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHRibF9zaXplOyBpJiM0MzsmIzQzOykge1xuLVx0XHR1MTYgcmluZ19pZCwgajtcbiYjNDM7XHRcdHUzMiBqO1xuIFxuIFx0XHRqID0gYmQtXHUwMDNlcnNzX2luZGlyX3RibFtpXTtcbiBcdFx0cnhyID0gXHUwMDI2Ym4tXHUwMDNlcnhfcmluZ1tqXTtcbiBcbi1cdFx0cmluZ19pZCA9IHJ4ci1cdTAwM2VyeF9yaW5nX3N0cnVjdC5md19yaW5nX2lkO1xuLVx0XHQqcmluZ190YmwmIzQzOyYjNDM7ID0gY3B1X3RvX2xlMTYocmluZ19pZCk7XG4tXHRcdHJpbmdfaWQgPSBibmdlX2NwX3JpbmdfZm9yX3J4KHJ4cik7XG4tXHRcdCpyaW5nX3RibCYjNDM7JiM0MzsgPSBjcHVfdG9fbGUxNihyaW5nX2lkKTtcbiYjNDM7XHRcdCpyaW5nX3RibCYjNDM7JiM0MzsgPSBjcHVfdG9fbGUxNihyeHItXHUwMDNlcnhfcmluZ19zdHJ1Y3QuZndfcmluZ19pZCk7XG4mIzQzO1x0XHQqcmluZ190YmwmIzQzOyYjNDM7ID0gY3B1X3RvX2xlMTYoYm5nZV9jcF9yaW5nX2Zvcl9yeChyeHIpKTtcbiBcdH1cbiB9XG4gXG5AQCAtMjI4NSw3ICYjNDM7MjI4Myw3IEBAIHN0YXRpYyB2b2lkIGJuZ2VfZGlzYWJsZV9pbnQoc3RydWN0IGJuZ2VfbmV0ICpibilcbiBcdFx0bnFyID0gXHUwMDI2Ym5hcGktXHUwMDNlbnFfcmluZztcbiBcdFx0cmluZyA9IFx1MDAyNm5xci1cdTAwM2VyaW5nX3N0cnVjdDtcbiBcbi1cdFx0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSUQpXG4mIzQzO1x0XHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkICE9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVClcbiBcdFx0XHRibmdlX2RiX25xKGJuLCBcdTAwMjZucXItXHUwMDNlbnFfZGIsIG5xci1cdTAwM2VucV9yYXdfY29ucyk7XG4gXHR9XG4gfVxuQEAgLTI0MDEsNyAmIzQzOzIzOTksNyBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHR1MzIgZ3JwX2lkeCA9IHJ4ci1cdTAwM2VibmFwaS1cdTAwM2VpbmRleDtcbiBcdHUzMiBjbXBsX3JpbmdfaWQ7XG4gXG4tXHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRClcbiYjNDM7XHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRF8zMkJJVClcbiBcdFx0cmV0dXJuO1xuIFxuIFx0Y21wbF9yaW5nX2lkID0gYm5nZV9jcF9yaW5nX2Zvcl9yeChyeHIpO1xuQEAgLTI0MDksNyAmIzQzOzI0MDcsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHRcdFx0XHRSSU5HX0ZSRUVfUkVRX1JJTkdfVFlQRV9SWCxcbiBcdFx0XHRcdGNsb3NlX3BhdGggPyBjbXBsX3JpbmdfaWQgOlxuIFx0XHRcdFx0SU5WQUxJRF9IV19SSU5HX0lEKTtcbi1cdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcbiYjNDM7XHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gXHRibi1cdTAwM2VncnBfaW5mb1tncnBfaWR4XS5yeF9md19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuIH1cbiBcbkBAIC0yNDIxLDE0ICYjNDM7MjQxOSwxNCBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfYWdnX3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0dTMyIGdycF9pZHggPSByeHItXHUwMDNlYm5hcGktXHUwMDNlaW5kZXg7XG4gXHR1MzIgY21wbF9yaW5nX2lkO1xuIFxuLVx0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSUQpXG4mIzQzO1x0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpXG4gXHRcdHJldHVybjtcbiBcbiBcdGNtcGxfcmluZ19pZCA9IGJuZ2VfY3BfcmluZ19mb3JfcngocnhyKTtcbiBcdGh3cm1fcmluZ19mcmVlX3NlbmRfbXNnKGJuLCByaW5nLCBSSU5HX0ZSRUVfUkVRX1JJTkdfVFlQRV9SWF9BR0csXG4gXHRcdFx0XHRjbG9zZV9wYXRoID8gY21wbF9yaW5nX2lkIDpcbiBcdFx0XHRcdElOVkFMSURfSFdfUklOR19JRCk7XG4tXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4mIzQzO1x0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIFx0Ym4tXHUwMDNlZ3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4gfVxuIFxuQEAgLTI0MzksMTQgJiM0MzsyNDM3LDE0IEBAIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV90eF9yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcdHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nID0gXHUwMDI2dHhyLVx1MDAzZXR4X3Jpbmdfc3RydWN0O1xuIFx0dTMyIGNtcGxfcmluZ19pZDtcbiBcbi1cdGlmIChyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEKVxuJiM0MztcdGlmIChyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRjbXBsX3JpbmdfaWQgPSBjbG9zZV9wYXRoID8gYm5nZV9jcF9yaW5nX2Zvcl90eCh0eHIpIDpcbiBcdFx0ICAgICAgIElOVkFMSURfSFdfUklOR19JRDtcbiBcdGh3cm1fcmluZ19mcmVlX3NlbmRfbXNnKGJuLCByaW5nLCBSSU5HX0ZSRUVfUkVRX1JJTkdfVFlQRV9UWCxcbiBcdFx0XHRcdGNtcGxfcmluZ19pZCk7XG4tXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4mIzQzO1x0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBibmdlX2h3cm1fY3BfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXG5AQCAtMjQ1NSwxMiAmIzQzOzI0NTMsMTIgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX2NwX3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0c3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3QgKnJpbmc7XG4gXG4gXHRyaW5nID0gXHUwMDI2Y3ByLVx1MDAzZXJpbmdfc3RydWN0O1xuLVx0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSUQpXG4mIzQzO1x0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpXG4gXHRcdHJldHVybjtcbiBcbiBcdGh3cm1fcmluZ19mcmVlX3NlbmRfbXNnKGJuLCByaW5nLCBSSU5HX0ZSRUVfUkVRX1JJTkdfVFlQRV9MMl9DTVBMLFxuIFx0XHRcdFx0SU5WQUxJRF9IV19SSU5HX0lEKTtcbi1cdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcbiYjNDM7XHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibiwgYm9vbCBjbG9zZV9wYXRoKVxuQEAgLTI0OTYsMTEgJiM0MzsyNDk0LDExIEBAIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibiwgYm9vbCBjbG9zZV9wYXRoKVxuIFx0XHRcdGJuZ2VfaHdybV9jcF9yaW5nX2ZyZWUoYm4sIFx1MDAyNm5xci1cdTAwM2VjcF9yaW5nX2FycltqXSk7XG4gXG4gXHRcdHJpbmcgPSBcdTAwMjZucXItXHUwMDNlcmluZ19zdHJ1Y3Q7XG4tXHRcdGlmIChyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgIT0gSU5WQUxJRF9IV19SSU5HX0lEKSB7XG4mIzQzO1x0XHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkICE9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVCkge1xuIFx0XHRcdGh3cm1fcmluZ19mcmVlX3NlbmRfbXNnKGJuLCByaW5nLFxuIFx0XHRcdFx0XHRcdFJJTkdfRlJFRV9SRVFfUklOR19UWVBFX05RLFxuIFx0XHRcdFx0XHRcdElOVkFMSURfSFdfUklOR19JRCk7XG4tXHRcdFx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuJiM0MztcdFx0XHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gXHRcdFx0Ym4tXHUwMDNlZ3JwX2luZm9baV0ubnFfZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcbiBcdFx0fVxuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuaFxuaW5kZXggZjQ2MzZiNWIwY2YzZjAuLmQxNzc5MTljMmUxMTcwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmhcbkBAIC02MzAsOCAmIzQzOzYzMCw4IEBAIHN0cnVjdCBibmdlX2wyX2ZpbHRlciB7XG4gXHRyZWZjb3VudF90XHRcdHJlZmNudDtcbiB9O1xuIFxuLXUxNiBibmdlX2NwX3JpbmdfZm9yX3J4KHN0cnVjdCBibmdlX3J4X3JpbmdfaW5mbyAqcnhyKTtcbi11MTYgYm5nZV9jcF9yaW5nX2Zvcl90eChzdHJ1Y3QgYm5nZV90eF9yaW5nX2luZm8gKnR4cik7XG4mIzQzO3UzMiBibmdlX2NwX3JpbmdfZm9yX3J4KHN0cnVjdCBibmdlX3J4X3JpbmdfaW5mbyAqcnhyKTtcbiYjNDM7dTMyIGJuZ2VfY3BfcmluZ19mb3JfdHgoc3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIpO1xuIHZvaWQgYm5nZV9maWxsX2h3X3Jzc190Ymwoc3RydWN0IGJuZ2VfbmV0ICpibiwgc3RydWN0IGJuZ2Vfdm5pY19pbmZvICp2bmljKTtcbiBpbnQgYm5nZV9hbGxvY19yeF9kYXRhKHN0cnVjdCBibmdlX25ldCAqYm4sIHN0cnVjdCBibmdlX3J4X3JpbmdfaW5mbyAqcnhyLFxuIFx0XHQgICAgICAgdTE2IHByb2QsIGdmcF90IGdmcCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX3JtZW0uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9ybWVtLmhcbmluZGV4IDM0MWM3ZjgxZWQwOTJiLi5iYjBjNzlhMWVlNjBmNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9ybWVtLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9ybWVtLmhcbkBAIC0xODQsNyAmIzQzOzE4NCw3IEBAIHN0cnVjdCBibmdlX2N0eF9tZW1faW5mbyB7XG4gc3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3Qge1xuIFx0c3RydWN0IGJuZ2VfcmluZ19tZW1faW5mb1x0cmluZ19tZW07XG4gXG4tXHR1MTZcdFx0XHRmd19yaW5nX2lkO1xuJiM0MztcdHUzMlx0XHRcdGZ3X3JpbmdfaWQ7XG4gXHR1bmlvbiB7XG4gXHRcdHUxNlx0XHRncnBfaWR4O1xuIFx0XHR1MTZcdFx0bWFwX2lkeDsgLyogVXNlZCBieSBOUXMgKi9cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2JuZ2UvaHNpLmggYi9pbmNsdWRlL2xpbnV4L2JuZ2UvaHNpLmhcbmluZGV4IDhlYTEzZDU0MDdlZWNkLi4xZjdiZDk2NDE1YTUyNyAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvYm5nZS9oc2kuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9ibmdlL2hzaS5oXG5AQCAtODMxNyw4ICYjNDM7ODMxNyw3IEBAIHN0cnVjdCBod3JtX3JpbmdfYWxsb2Nfb3V0cHV0IHtcbiBcdF9fbGUxNlx0cmVxX3R5cGU7XG4gXHRfX2xlMTZcdHNlcV9pZDtcbiBcdF9fbGUxNlx0cmVzcF9sZW47XG4tXHRfX2xlMTZcdHJpbmdfaWQ7XG4tXHRfX2xlMTZcdGxvZ2ljYWxfcmluZ19pZDtcbiYjNDM7XHRfX2xlMzJcdHJpbmdfaWQ7XG4gXHR1OFx0cHVzaF9idWZmZXJfaW5kZXg7XG4gXHQjZGVmaW5lIFJJTkdfQUxMT0NfUkVTUF9QVVNIX0JVRkZFUl9JTkRFWF9QSU5HX0JVRkZFUiAweDBVTFxuIFx0I2RlZmluZSBSSU5HX0FMTE9DX1JFU1BfUFVTSF9CVUZGRVJfSU5ERVhfUE9OR19CVUZGRVIgMHgxVUxcbkBAIC04MzQ1LDEwICYjNDM7ODM0NCwxMCBAQCBzdHJ1Y3QgaHdybV9yaW5nX2ZyZWVfaW5wdXQge1xuIFx0dThcdGZsYWdzO1xuIFx0I2RlZmluZSBSSU5HX0ZSRUVfUkVRX0ZMQUdTX1ZJUlRJT19SSU5HX1ZBTElEIDB4MVVMXG4gXHQjZGVmaW5lIFJJTkdfRlJFRV9SRVFfRkxBR1NfTEFTVCAgICAgICAgICAgICBSSU5HX0ZSRUVfUkVRX0ZMQUdTX1ZJUlRJT19SSU5HX1ZBTElEXG4tXHRfX2xlMTZcdHJpbmdfaWQ7XG4mIzQzO1x0X19sZTE2XHR1bnVzZWRfMTtcbiBcdF9fbGUzMlx0cHJvZF9pZHg7XG4gXHRfX2xlMzJcdG9wYXF1ZTtcbi1cdF9fbGUzMlx0dW51c2VkXzE7XG4mIzQzO1x0X19sZTMyXHRyaW5nX2lkO1xuIH07XG4gXG4gLyogaHdybV9yaW5nX2ZyZWVfb3V0cHV0IChzaXplOjEyOGIvMTZCKSAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE1OjAwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjVtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JOR0UmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9CTkdfUkUmIzM0OywKICAgICYjMzQ7RENCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Ym5nX3JlX25ldF9yaW5nX2ZyZWUmIzM0OywKICAgICYjMzQ7Ym5nX3JlX25ldF9yaW5nX2FsbG9jJiMzNDssCiAgICAmIzM0O2h3cm1fcmluZ19mcmVlX3NlbmRfbXNnJiMzNDssCiAgICAmIzM0O2h3cm1fcmluZ19hbGxvY19zZW5kX21zZyYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm1fcnhfYWdnX3JpbmdfYWxsb2MmIzM0OywKICAgICYjMzQ7Ym5nZV9od3JtX3J4X3JpbmdfYWxsb2MmIzM0OywKICAgICYjMzQ7Ym5nZV9od3JtX3JpbmdfYWxsb2MmIzM0OywKICAgICYjMzQ7Ym5nZV9od3JtX3J4X3JpbmdfZnJlZSYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm1fcnhfYWdnX3JpbmdfZnJlZSYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm1fdHhfcmluZ19mcmVlJiMzNDssCiAgICAmIzM0O2JuZ2VfaHdybV9jcF9yaW5nX2ZyZWUmIzM0OywKICAgICYjMzQ7Ym5nZV9od3JtX3JpbmdfZnJlZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQnJvYWRjb20gQk5HRSBhbmQgQk5HX1JFIGRyaXZlcnMgdG8gc3VwcG9ydCAzMi1iaXQgZmlybXdhcmUgcmluZyBJRHMgaW5zdGVhZCBvZiAxNi1iaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGRyaXZlciYjMzk7cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBoYXJkd2FyZS9maXJtd2FyZSBkdXJpbmcgcmluZyBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nLiBUaGUgZHJpdmVyIGNhbiBiZSB0ZXN0ZWQgdmlhIFBDSSBlbXVsYXRpb24gaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5OTY2ZmE2NGZmYjJjZGQ0NjAzNmJkNWRkMmY2YjkwM2JkMGE5ZDcxCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdW4gMzAgMTU6MDA6MDUgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jCmluZGV4IDcxYTdjYTIxOTZhZDg4Li4zMTFjOGJjOTMxNjAzYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMKQEAgLTExMyw3ICYjNDM7MTEzLDcgQEAgc3RhdGljIHZvaWQgYm5nX3JlX2ZpbGxfZndfbXNnKHN0cnVjdCBibmdlX2Z3X21zZyAqZndfbXNnLCB2b2lkICptc2csCiB9CiAKIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2ZyZWUoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYsCi0JCQkJdTE2IGZ3X3JpbmdfaWQsIGludCB0eXBlKQomIzQzOwkJCQl1MzIgZndfcmluZ19pZCwgaW50IHR5cGUpCiB7CiAJc3RydWN0IGJuZ2VfYXV4cl9kZXYgKmF1eF9kZXYgPSByZGV2LSZndDthdXhfZGV2OwogCXN0cnVjdCBod3JtX3JpbmdfZnJlZV9pbnB1dCByZXEgPSB7fTsKQEAgLTEyMyw3ICYjNDM7MTIzLDcgQEAgc3RhdGljIGludCBibmdfcmVfbmV0X3JpbmdfZnJlZShzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldiwKIAogCWJuZ19yZV9pbml0X2h3cm1faGRyKCh2b2lkICopJmFtcDtyZXEsIEhXUk1fUklOR19GUkVFKTsKIAlyZXEucmluZ190eXBlID0gdHlwZTsKLQlyZXEucmluZ19pZCA9IGNwdV90b19sZTE2KGZ3X3JpbmdfaWQpOwomIzQzOwlyZXEucmluZ19pZCA9IGNwdV90b19sZTMyKGZ3X3JpbmdfaWQpOwogCWJuZ19yZV9maWxsX2Z3X21zZygmYW1wO2Z3X21zZywgKHZvaWQgKikmYW1wO3JlcSwgc2l6ZW9mKHJlcSksICh2b2lkICopJmFtcDtyZXNwLAogCQkJICAgIHNpemVvZihyZXNwKSwgQk5HRV9ERkxUX0hXUk1fQ01EX1RJTUVPVVQpOwogCXJjID0gYm5nZV9zZW5kX21zZyhhdXhfZGV2LCAmYW1wO2Z3X21zZyk7CkBAIC0xNjEsNyAmIzQzOzE2MSw3IEBAIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2FsbG9jKHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2LAogCQkJICAgc2l6ZW9mKHJlc3ApLCBCTkdFX0RGTFRfSFdSTV9DTURfVElNRU9VVCk7CiAJcmMgPSBibmdlX3NlbmRfbXNnKGF1eF9kZXYsICZhbXA7ZndfbXNnKTsKIAlpZiAoIXJjKQotCQkqZndfcmluZ19pZCA9IGxlMTZfdG9fY3B1KHJlc3AucmluZ19pZCk7CiYjNDM7CQkqZndfcmluZ19pZCA9ICh1MTYpbGUzMl90b19jcHUocmVzcC5yaW5nX2lkKTsKIAogCXJldHVybiByYzsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgKaW5kZXggZjIxY2ZmNjUxZmQ0NGEuLjQ0NzljY2QwNzFmNTMyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaApAQCAtMzYsNiAmIzQzOzM2LDcgQEAgc3RydWN0IGJuZ2VfcGZfaW5mbyB7CiB9OwogCiAjZGVmaW5lIElOVkFMSURfSFdfUklOR19JRCAgICAgICgodTE2KS0xKQomIzQzOyNkZWZpbmUgSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUCShVMzJfTUFYKQogCiBlbnVtIHsKIAlCTkdFX0ZXX0NBUF9TSE9SVF9DTUQJCQkJPSBCSVRfVUxMKDApLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuYwppbmRleCAxYzljZmVjMWI2MzNmYy4uNjUxYzVlNzgzNTE2Y2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jCkBAIC0xMjgzLDcgJiM0MzsxMjgzLDcgQEAgaW50IGJuZ2VfaHdybV9zdGF0X2N0eF9hbGxvYyhzdHJ1Y3QgYm5nZV9uZXQgKmJuKQogCiBpbnQgaHdybV9yaW5nX2ZyZWVfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibiwKIAkJCSAgICBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZywKLQkJCSAgICB1MzIgcmluZ190eXBlLCBpbnQgY21wbF9yaW5nX2lkKQomIzQzOwkJCSAgICB1MzIgcmluZ190eXBlLCB1MzIgY21wbF9yaW5nX2lkKQogewogCXN0cnVjdCBod3JtX3JpbmdfZnJlZV9pbnB1dCAqcmVxOwogCXN0cnVjdCBibmdlX2RldiAqYmQgPSBibi0mZ3Q7YmQ7CkBAIC0xMjk1LDcgJiM0MzsxMjk1LDcgQEAgaW50IGh3cm1fcmluZ19mcmVlX3NlbmRfbXNnKHN0cnVjdCBibmdlX25ldCAqYm4sCiAKIAlyZXEtJmd0O2NtcGxfcmluZyA9IGNwdV90b19sZTE2KGNtcGxfcmluZ19pZCk7CiAJcmVxLSZndDtyaW5nX3R5cGUgPSByaW5nX3R5cGU7Ci0JcmVxLSZndDtyaW5nX2lkID0gY3B1X3RvX2xlMTYocmluZy0mZ3Q7ZndfcmluZ19pZCk7CiYjNDM7CXJlcS0mZ3Q7cmluZ19pZCA9IGNwdV90b19sZTMyKHJpbmctJmd0O2Z3X3JpbmdfaWQpOwogCiAJYm5nZV9od3JtX3JlcV9ob2xkKGJkLCByZXEpOwogCXJjID0gYm5nZV9od3JtX3JlcV9zZW5kKGJkLCByZXEpOwpAQCAtMTMxNyw3ICYjNDM7MTMxNyw3IEBAIGludCBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibiwKIAlzdHJ1Y3QgaHdybV9yaW5nX2FsbG9jX291dHB1dCAqcmVzcDsKIAlzdHJ1Y3QgaHdybV9yaW5nX2FsbG9jX2lucHV0ICpyZXE7CiAJc3RydWN0IGJuZ2VfZGV2ICpiZCA9IGJuLSZndDtiZDsKLQl1MTYgcmluZ19pZCwgZmxhZ3MgPSAwOwomIzQzOwl1MzIgcmluZ19pZCwgZmxhZ3MgPSAwOwogCWludCByYzsKIAogCXJjID0gYm5nZV9od3JtX3JlcV9pbml0KGJkLCByZXEsIEhXUk1fUklOR19BTExPQyk7CkBAIC0xNDAxLDcgJiM0MzsxNDAxLDcgQEAgaW50IGh3cm1fcmluZ19hbGxvY19zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLAogCiAJcmVzcCA9IGJuZ2VfaHdybV9yZXFfaG9sZChiZCwgcmVxKTsKIAlyYyA9IGJuZ2VfaHdybV9yZXFfc2VuZChiZCwgcmVxKTsKLQlyaW5nX2lkID0gbGUxNl90b19jcHUocmVzcC0mZ3Q7cmluZ19pZCk7CiYjNDM7CXJpbmdfaWQgPSBsZTMyX3RvX2NwdShyZXNwLSZndDtyaW5nX2lkKTsKIAlibmdlX2h3cm1fcmVxX2Ryb3AoYmQsIHJlcSk7CiAKIGV4aXQ6CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5oCmluZGV4IDM1MDFkZTdhODliOTE5Li5iZjQ1MmUzOTBkNWJkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmgKQEAgLTUwLDcgJiM0Mzs1MCw3IEBAIGludCBibmdlX2h3cm1fY2ZhX2wyX3NldF9yeF9tYXNrKHN0cnVjdCBibmdlX2RldiAqYmQsCiB2b2lkIGJuZ2VfaHdybV9zdGF0X2N0eF9mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4pOwogaW50IGJuZ2VfaHdybV9zdGF0X2N0eF9hbGxvYyhzdHJ1Y3QgYm5nZV9uZXQgKmJuKTsKIGludCBod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZywKLQkJCSAgICB1MzIgcmluZ190eXBlLCBpbnQgY21wbF9yaW5nX2lkKTsKJiM0MzsJCQkgICAgdTMyIHJpbmdfdHlwZSwgdTMyIGNtcGxfcmluZ19pZCk7CiBpbnQgaHdybV9yaW5nX2FsbG9jX3NlbmRfbXNnKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJCQkgICAgIHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nLAogCQkJICAgICB1MzIgcmluZ190eXBlLCB1MzIgbWFwX2luZGV4KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYwppbmRleCA3MDc2ODE5MzAwNGNiMi4uNmY3ZWY1MDZkNGUxOGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMKQEAgLTEzMjcsMTIgJiM0MzsxMzI3LDEyIEBAIHN0YXRpYyBpbnQgYm5nZV9hbGxvY19jb3JlKHN0cnVjdCBibmdlX25ldCAqYm4pCiAJcmV0dXJuIHJjOwogfQogCi11MTYgYm5nZV9jcF9yaW5nX2Zvcl9yeChzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cikKJiM0Mzt1MzIgYm5nZV9jcF9yaW5nX2Zvcl9yeChzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cikKIHsKIAlyZXR1cm4gcnhyLSZndDtyeF9jcHItJmd0O3Jpbmdfc3RydWN0LmZ3X3JpbmdfaWQ7CiB9CiAKLXUxNiBibmdlX2NwX3JpbmdfZm9yX3R4KHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyKQomIzQzO3UzMiBibmdlX2NwX3JpbmdfZm9yX3R4KHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyKQogewogCXJldHVybiB0eHItJmd0O3R4X2Nwci0mZ3Q7cmluZ19zdHJ1Y3QuZndfcmluZ19pZDsKIH0KQEAgLTEzNzUsMTIgJiM0MzsxMzc1LDEyIEBAIHN0YXRpYyB2b2lkIGJuZ2VfaW5pdF9ucV90cmVlKHN0cnVjdCBibmdlX25ldCAqYm4pCiAJCXN0cnVjdCBibmdlX25xX3JpbmdfaW5mbyAqbnFyID0gJmFtcDtibi0mZ3Q7Ym5hcGlbaV0tJmd0O25xX3Jpbmc7CiAJCXN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nID0gJmFtcDtucXItJmd0O3Jpbmdfc3RydWN0OwogCi0JCXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7CiYjNDM7CQlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUOwogCQlmb3IgKGogPSAwOyBqICZsdDsgbnFyLSZndDtjcF9yaW5nX2NvdW50OyBqJiM0MzsmIzQzOykgewogCQkJc3RydWN0IGJuZ2VfY3BfcmluZ19pbmZvICpjcHIgPSAmYW1wO25xci0mZ3Q7Y3BfcmluZ19hcnJbal07CiAKIAkJCXJpbmcgPSAmYW1wO2Nwci0mZ3Q7cmluZ19zdHJ1Y3Q7Ci0JCQlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEOwomIzQzOwkJCXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7CiAJCX0KIAl9CiB9CkBAIC0xNjM3LDcgJiM0MzsxNjM3LDcgQEAgc3RhdGljIHZvaWQgYm5nZV9pbml0X29uZV9yeF9yaW5nX3J4YmQoc3RydWN0IGJuZ2VfbmV0ICpibiwKIAogCXJpbmcgPSAmYW1wO3J4ci0mZ3Q7cnhfcmluZ19zdHJ1Y3Q7CiAJYm5nZV9pbml0X3J4YmRfcGFnZXMocmluZywgdHlwZSk7Ci0JcmluZy0mZ3Q7ZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDsKJiM0MzsJcmluZy0mZ3Q7ZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDsKIH0KIAogc3RhdGljIHZvaWQgYm5nZV9pbml0X29uZV9hZ2dfcmluZ19yeGJkKHN0cnVjdCBibmdlX25ldCAqYm4sCkBAIC0xNjQ3LDcgJiM0MzsxNjQ3LDcgQEAgc3RhdGljIHZvaWQgYm5nZV9pbml0X29uZV9hZ2dfcmluZ19yeGJkKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJdTMyIHR5cGU7CiAKIAlyaW5nID0gJmFtcDtyeHItJmd0O3J4X2FnZ19yaW5nX3N0cnVjdDsKLQlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEOwomIzQzOwlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUOwogCWlmIChibmdlX2lzX2FnZ19yZXFkKGJuLSZndDtiZCkpIHsKIAkJdHlwZSA9ICgodTMyKUJOR0VfUlhfUEFHRV9TSVpFICZsdDsmbHQ7IFJYX0JEX0xFTl9TSElGVCkgfAogCQkJUlhfQkRfVFlQRV9SWF9BR0dfQkQgfCBSWF9CRF9GTEFHU19TT1A7CkBAIC0xNzA4LDcgJiM0MzsxNzA4LDcgQEAgc3RhdGljIHZvaWQgYm5nZV9pbml0X3R4X3JpbmdzKHN0cnVjdCBibmdlX25ldCAqYm4pCiAJCXN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyID0gJmFtcDtibi0mZ3Q7dHhfcmluZ1tpXTsKIAkJc3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3QgKnJpbmcgPSAmYW1wO3R4ci0mZ3Q7dHhfcmluZ19zdHJ1Y3Q7CiAKLQkJcmluZy0mZ3Q7ZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDsKJiM0MzsJCXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7CiAKIAkJbmV0aWZfcXVldWVfc2V0X25hcGkoYm4tJmd0O25ldGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsCiAJCQkJICAgICAmYW1wO3R4ci0mZ3Q7Ym5hcGktJmd0O25hcGkpOwpAQCAtMTg2Nyw3ICYjNDM7MTg2Nyw3IEBAIHN0YXRpYyBpbnQgYm5nZV9od3JtX3J4X2FnZ19yaW5nX2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJCSAgICByaW5nLSZndDtmd19yaW5nX2lkKTsKIAlibmdlX2RiX3dyaXRlKGJuLSZndDtiZCwgJmFtcDtyeHItJmd0O3J4X2FnZ19kYiwgcnhyLSZndDtyeF9hZ2dfcHJvZCk7CiAJYm5nZV9kYl93cml0ZShibi0mZ3Q7YmQsICZhbXA7cnhyLSZndDtyeF9kYiwgcnhyLSZndDtyeF9wcm9kKTsKLQlibi0mZ3Q7Z3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSByaW5nLSZndDtmd19yaW5nX2lkOwomIzQzOwlibi0mZ3Q7Z3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSAodTE2KXJpbmctJmd0O2Z3X3JpbmdfaWQ7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE4ODYsNyAmIzQzOzE4ODYsNyBAQCBzdGF0aWMgaW50IGJuZ2VfaHdybV9yeF9yaW5nX2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJCXJldHVybiByYzsKIAogCWJuZ2Vfc2V0X2RiKGJuLCAmYW1wO3J4ci0mZ3Q7cnhfZGIsIHR5cGUsIG1hcF9pZHgsIHJpbmctJmd0O2Z3X3JpbmdfaWQpOwotCWJuLSZndDtncnBfaW5mb1ttYXBfaWR4XS5yeF9md19yaW5nX2lkID0gcmluZy0mZ3Q7ZndfcmluZ19pZDsKJiM0MzsJYm4tJmd0O2dycF9pbmZvW21hcF9pZHhdLnJ4X2Z3X3JpbmdfaWQgPSAodTE2KXJpbmctJmd0O2Z3X3JpbmdfaWQ7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE5MTYsNyAmIzQzOzE5MTYsNyBAQCBzdGF0aWMgaW50IGJuZ2VfaHdybV9yaW5nX2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4pCiAJCWJuZ2Vfc2V0X2RiKGJuLCAmYW1wO25xci0mZ3Q7bnFfZGIsIHR5cGUsIG1hcF9pZHgsIHJpbmctJmd0O2Z3X3JpbmdfaWQpOwogCQlibmdlX2RiX25xKGJuLCAmYW1wO25xci0mZ3Q7bnFfZGIsIG5xci0mZ3Q7bnFfcmF3X2NvbnMpOwogCQllbmFibGVfaXJxKHZlY3Rvcik7Ci0JCWJuLSZndDtncnBfaW5mb1tpXS5ucV9md19yaW5nX2lkID0gcmluZy0mZ3Q7ZndfcmluZ19pZDsKJiM0MzsJCWJuLSZndDtncnBfaW5mb1tpXS5ucV9md19yaW5nX2lkID0gKHUxNilyaW5nLSZndDtmd19yaW5nX2lkOwogCiAJCWlmICghaSkgewogCQkJcmMgPSBibmdlX2h3cm1fc2V0X2FzeW5jX2V2ZW50X2NyKGJkLCByaW5nLSZndDtmd19yaW5nX2lkKTsKQEAgLTE5ODYsMTUgJiM0MzsxOTg2LDEzIEBAIHZvaWQgYm5nZV9maWxsX2h3X3Jzc190Ymwoc3RydWN0IGJuZ2VfbmV0ICpibiwgc3RydWN0IGJuZ2Vfdm5pY19pbmZvICp2bmljKQogCXRibF9zaXplID0gYm5nZV9nZXRfcnhmaF9pbmRpcl9zaXplKGJkKTsKIAogCWZvciAoaSA9IDA7IGkgJmx0OyB0Ymxfc2l6ZTsgaSYjNDM7JiM0MzspIHsKLQkJdTE2IHJpbmdfaWQsIGo7CiYjNDM7CQl1MzIgajsKIAogCQlqID0gYmQtJmd0O3Jzc19pbmRpcl90YmxbaV07CiAJCXJ4ciA9ICZhbXA7Ym4tJmd0O3J4X3Jpbmdbal07CiAKLQkJcmluZ19pZCA9IHJ4ci0mZ3Q7cnhfcmluZ19zdHJ1Y3QuZndfcmluZ19pZDsKLQkJKnJpbmdfdGJsJiM0MzsmIzQzOyA9IGNwdV90b19sZTE2KHJpbmdfaWQpOwotCQlyaW5nX2lkID0gYm5nZV9jcF9yaW5nX2Zvcl9yeChyeHIpOwotCQkqcmluZ190YmwmIzQzOyYjNDM7ID0gY3B1X3RvX2xlMTYocmluZ19pZCk7CiYjNDM7CQkqcmluZ190YmwmIzQzOyYjNDM7ID0gY3B1X3RvX2xlMTYocnhyLSZndDtyeF9yaW5nX3N0cnVjdC5md19yaW5nX2lkKTsKJiM0MzsJCSpyaW5nX3RibCYjNDM7JiM0MzsgPSBjcHVfdG9fbGUxNihibmdlX2NwX3JpbmdfZm9yX3J4KHJ4cikpOwogCX0KIH0KIApAQCAtMjI4NSw3ICYjNDM7MjI4Myw3IEBAIHN0YXRpYyB2b2lkIGJuZ2VfZGlzYWJsZV9pbnQoc3RydWN0IGJuZ2VfbmV0ICpibikKIAkJbnFyID0gJmFtcDtibmFwaS0mZ3Q7bnFfcmluZzsKIAkJcmluZyA9ICZhbXA7bnFyLSZndDtyaW5nX3N0cnVjdDsKIAotCQlpZiAocmluZy0mZ3Q7ZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSUQpCiYjNDM7CQlpZiAocmluZy0mZ3Q7ZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpCiAJCQlibmdlX2RiX25xKGJuLCAmYW1wO25xci0mZ3Q7bnFfZGIsIG5xci0mZ3Q7bnFfcmF3X2NvbnMpOwogCX0KIH0KQEAgLTI0MDEsNyAmIzQzOzIzOTksNyBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJdTMyIGdycF9pZHggPSByeHItJmd0O2JuYXBpLSZndDtpbmRleDsKIAl1MzIgY21wbF9yaW5nX2lkOwogCi0JaWYgKHJpbmctJmd0O2Z3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEKQomIzQzOwlpZiAocmluZy0mZ3Q7ZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpCiAJCXJldHVybjsKIAogCWNtcGxfcmluZ19pZCA9IGJuZ2VfY3BfcmluZ19mb3JfcngocnhyKTsKQEAgLTI0MDksNyAmIzQzOzI0MDcsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJCQkJUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfUlgsCiAJCQkJY2xvc2VfcGF0aCA/IGNtcGxfcmluZ19pZCA6CiAJCQkJSU5WQUxJRF9IV19SSU5HX0lEKTsKLQlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEOwomIzQzOwlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUOwogCWJuLSZndDtncnBfaW5mb1tncnBfaWR4XS5yeF9md19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEOwogfQogCkBAIC0yNDIxLDE0ICYjNDM7MjQxOSwxNCBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfYWdnX3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLAogCXUzMiBncnBfaWR4ID0gcnhyLSZndDtibmFwaS0mZ3Q7aW5kZXg7CiAJdTMyIGNtcGxfcmluZ19pZDsKIAotCWlmIChyaW5nLSZndDtmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRCkKJiM0MzsJaWYgKHJpbmctJmd0O2Z3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKQogCQlyZXR1cm47CiAKIAljbXBsX3JpbmdfaWQgPSBibmdlX2NwX3JpbmdfZm9yX3J4KHJ4cik7CiAJaHdybV9yaW5nX2ZyZWVfc2VuZF9tc2coYm4sIHJpbmcsIFJJTkdfRlJFRV9SRVFfUklOR19UWVBFX1JYX0FHRywKIAkJCQljbG9zZV9wYXRoID8gY21wbF9yaW5nX2lkIDoKIAkJCQlJTlZBTElEX0hXX1JJTkdfSUQpOwotCXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7CiYjNDM7CXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7CiAJYm4tJmd0O2dycF9pbmZvW2dycF9pZHhdLmFnZ19md19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEOwogfQogCkBAIC0yNDM5LDE0ICYjNDM7MjQzNywxNCBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fdHhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJc3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3QgKnJpbmcgPSAmYW1wO3R4ci0mZ3Q7dHhfcmluZ19zdHJ1Y3Q7CiAJdTMyIGNtcGxfcmluZ19pZDsKIAotCWlmIChyaW5nLSZndDtmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRCkKJiM0MzsJaWYgKHJpbmctJmd0O2Z3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKQogCQlyZXR1cm47CiAKIAljbXBsX3JpbmdfaWQgPSBjbG9zZV9wYXRoID8gYm5nZV9jcF9yaW5nX2Zvcl90eCh0eHIpIDoKIAkJICAgICAgIElOVkFMSURfSFdfUklOR19JRDsKIAlod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfVFgsCiAJCQkJY21wbF9yaW5nX2lkKTsKLQlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEOwomIzQzOwlyaW5nLSZndDtmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUOwogfQogCiBzdGF0aWMgdm9pZCBibmdlX2h3cm1fY3BfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sCkBAIC0yNDU1LDEyICYjNDM7MjQ1MywxMiBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fY3BfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sCiAJc3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3QgKnJpbmc7CiAKIAlyaW5nID0gJmFtcDtjcHItJmd0O3Jpbmdfc3RydWN0OwotCWlmIChyaW5nLSZndDtmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRCkKJiM0MzsJaWYgKHJpbmctJmd0O2Z3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKQogCQlyZXR1cm47CiAKIAlod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfTDJfQ01QTCwKIAkJCQlJTlZBTElEX0hXX1JJTkdfSUQpOwotCXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7CiYjNDM7CXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7CiB9CiAKIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibiwgYm9vbCBjbG9zZV9wYXRoKQpAQCAtMjQ5NiwxMSAmIzQzOzI0OTQsMTEgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBib29sIGNsb3NlX3BhdGgpCiAJCQlibmdlX2h3cm1fY3BfcmluZ19mcmVlKGJuLCAmYW1wO25xci0mZ3Q7Y3BfcmluZ19hcnJbal0pOwogCiAJCXJpbmcgPSAmYW1wO25xci0mZ3Q7cmluZ19zdHJ1Y3Q7Ci0JCWlmIChyaW5nLSZndDtmd19yaW5nX2lkICE9IElOVkFMSURfSFdfUklOR19JRCkgewomIzQzOwkJaWYgKHJpbmctJmd0O2Z3X3JpbmdfaWQgIT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKSB7CiAJCQlod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywKIAkJCQkJCVJJTkdfRlJFRV9SRVFfUklOR19UWVBFX05RLAogCQkJCQkJSU5WQUxJRF9IV19SSU5HX0lEKTsKLQkJCXJpbmctJmd0O2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7CiYjNDM7CQkJcmluZy0mZ3Q7ZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDsKIAkJCWJuLSZndDtncnBfaW5mb1tpXS5ucV9md19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5oCmluZGV4IGY0NjM2YjViMGNmM2YwLi5kMTc3OTE5YzJlMTE3MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuaApAQCAtNjMwLDggJiM0Mzs2MzAsOCBAQCBzdHJ1Y3QgYm5nZV9sMl9maWx0ZXIgewogCXJlZmNvdW50X3QJCXJlZmNudDsKIH07CiAKLXUxNiBibmdlX2NwX3JpbmdfZm9yX3J4KHN0cnVjdCBibmdlX3J4X3JpbmdfaW5mbyAqcnhyKTsKLXUxNiBibmdlX2NwX3JpbmdfZm9yX3R4KHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyKTsKJiM0Mzt1MzIgYm5nZV9jcF9yaW5nX2Zvcl9yeChzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cik7CiYjNDM7dTMyIGJuZ2VfY3BfcmluZ19mb3JfdHgoc3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIpOwogdm9pZCBibmdlX2ZpbGxfaHdfcnNzX3RibChzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV92bmljX2luZm8gKnZuaWMpOwogaW50IGJuZ2VfYWxsb2NfcnhfZGF0YShzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4ciwKIAkJICAgICAgIHUxNiBwcm9kLCBnZnBfdCBnZnApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX3JtZW0uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9ybWVtLmgKaW5kZXggMzQxYzdmODFlZDA5MmIuLmJiMGM3OWExZWU2MGY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2Vfcm1lbS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9ybWVtLmgKQEAgLTE4NCw3ICYjNDM7MTg0LDcgQEAgc3RydWN0IGJuZ2VfY3R4X21lbV9pbmZvIHsKIHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0IHsKIAlzdHJ1Y3QgYm5nZV9yaW5nX21lbV9pbmZvCXJpbmdfbWVtOwogCi0JdTE2CQkJZndfcmluZ19pZDsKJiM0MzsJdTMyCQkJZndfcmluZ19pZDsKIAl1bmlvbiB7CiAJCXUxNgkJZ3JwX2lkeDsKIAkJdTE2CQltYXBfaWR4OyAvKiBVc2VkIGJ5IE5RcyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ibmdlL2hzaS5oIGIvaW5jbHVkZS9saW51eC9ibmdlL2hzaS5oCmluZGV4IDhlYTEzZDU0MDdlZWNkLi4xZjdiZDk2NDE1YTUyNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9ibmdlL2hzaS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvYm5nZS9oc2kuaApAQCAtODMxNyw4ICYjNDM7ODMxNyw3IEBAIHN0cnVjdCBod3JtX3JpbmdfYWxsb2Nfb3V0cHV0IHsKIAlfX2xlMTYJcmVxX3R5cGU7CiAJX19sZTE2CXNlcV9pZDsKIAlfX2xlMTYJcmVzcF9sZW47Ci0JX19sZTE2CXJpbmdfaWQ7Ci0JX19sZTE2CWxvZ2ljYWxfcmluZ19pZDsKJiM0MzsJX19sZTMyCXJpbmdfaWQ7CiAJdTgJcHVzaF9idWZmZXJfaW5kZXg7CiAJI2RlZmluZSBSSU5HX0FMTE9DX1JFU1BfUFVTSF9CVUZGRVJfSU5ERVhfUElOR19CVUZGRVIgMHgwVUwKIAkjZGVmaW5lIFJJTkdfQUxMT0NfUkVTUF9QVVNIX0JVRkZFUl9JTkRFWF9QT05HX0JVRkZFUiAweDFVTApAQCAtODM0NSwxMCAmIzQzOzgzNDQsMTAgQEAgc3RydWN0IGh3cm1fcmluZ19mcmVlX2lucHV0IHsKIAl1OAlmbGFnczsKIAkjZGVmaW5lIFJJTkdfRlJFRV9SRVFfRkxBR1NfVklSVElPX1JJTkdfVkFMSUQgMHgxVUwKIAkjZGVmaW5lIFJJTkdfRlJFRV9SRVFfRkxBR1NfTEFTVCAgICAgICAgICAgICBSSU5HX0ZSRUVfUkVRX0ZMQUdTX1ZJUlRJT19SSU5HX1ZBTElECi0JX19sZTE2CXJpbmdfaWQ7CiYjNDM7CV9fbGUxNgl1bnVzZWRfMTsKIAlfX2xlMzIJcHJvZF9pZHg7CiAJX19sZTMyCW9wYXF1ZTsKLQlfX2xlMzIJdW51c2VkXzE7CiYjNDM7CV9fbGUzMglyaW5nX2lkOwogfTsKIAogLyogaHdybV9yaW5nX2ZyZWVfb3V0cHV0IChzaXplOjEyOGIvMTZCKSAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MDc0CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEJyb2FkY29tIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaC4gSXQgc2VlbXMgbGlrZSB3ZSYjMzk7cmUgZXhwYW5kaW5nIHRoZSBgZndfcmluZ19pZGAgZmllbGQgZnJvbSBhIGB1MTZgIHRvIGEgYHUzMmAgd2l0aGluIHRoZSBCcm9hZGNvbSBCTkdFIGRyaXZlci4gVGhhdCYjMzk7cyBhIHNpZ25pZmljYW50IGNoYW5nZSwgcG90ZW50aWFsbHkgaW5kaWNhdGluZyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgbXVjaCBsYXJnZXIgbnVtYmVyIG9mIHJpbmdzIGJlaW5nIGFsbG9jYXRlZC4gVGhlIHRhcmdldCBkaXJlY3RvcmllcyBhcmUgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYCBhbmQgYGRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYCwgc28gdGhhdCYjMzk7cyB3aGVyZSB0aGUgY29yZSBtb2RpZmljYXRpb25zIGFyZS4gSXQmIzM5O3MgdG91Y2hpbmcgdGhlIGBibmdlX3Jpbmdfc3RydWN0YCBzdHJ1Y3R1cmUgYW5kIHRoZSBpbnZhbGlkIElEIGRlZmluaXRpb25zLiBBbHNvLCBpdCYjMzk7cyBtb2RpZnlpbmcgdGhlIGBod3JtX3JpbmdfYWxsb2Nfb3V0cHV0YCBhbmQgYGh3cm1fcmluZ19mcmVlX2lucHV0YCBzdHJ1Y3R1cmVzLCB3aGljaCBhcmUgY3JpdGljYWwgZm9yIHRoZSBoYXJkd2FyZSByZXNvdXJjZSBtYW5hZ2VtZW50LgoKQnV0IHdhaXQgYSBtaW51dGUuLi4gYGJuZ2VgPyBUaGF0IGRvZXNuJiMzOTt0IGltbWVkaWF0ZWx5IHJpbmcgYSBiZWxsLiBNeSBleHBlcmllbmNlIHdpdGggQnJvYWRjb20gbmV0d29yayBkcml2ZXJzIHVzdWFsbHkgaW52b2x2ZXMgYGJueHRgIGZvciBOZXRYdHJlbWUtQy9FLCBvciB0aGUgb2xkZXIgYGJueDJgIGFuZCBgYm54MnhgLiBgYm5nZWAgZmVlbHMgdW51c3VhbC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgaXMgYW4gYWN0dWFsIGRyaXZlci4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHNlYXJjaCB0aGUga2VybmVsIHRyZWUgdG8gY29uZmlybSB0aGF0IGBibmdlYCBpcywgaW5kZWVkLCBhIGxlZ2l0aW1hdGUgQnJvYWRjb20gZHJpdmVyLiBUaGlzIGlzIGEgY3J1Y2lhbCBmaXJzdCBzdGVwOyBJIGRvbiYjMzk7dCB3YW50IHRvIHdhc3RlIHRpbWUgYW5hbHl6aW5nIHNvbWV0aGluZyB0aGF0IGRvZXNuJiMzOTt0IGV2ZW4gZXhpc3Qgb3IgaXMgbWlzbGFiZWxlZC4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE1OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2JuZ2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDYxMjAgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL01ha2VmaWxlPTIwPW9iai0kKENPTkZJR19CQ01BU1ApICYjNDM7PSBhc3AyL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vTWFrZWZpbGU6MjE6b2JqLSQoQ09ORklHX0JOR0UpICYjNDM7PSBibmdlL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvTWFrZWZpbGU9Mz1vYmotJChDT05GSUdfQk5HRSkgJiM0Mzs9IGJuZ19lbi5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL01ha2VmaWxlLTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL01ha2VmaWxlOjU6Ym5nX2VuLXkgOj0gYm5nZV9jb3JlLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvTWFrZWZpbGU6NjpcdCAgICBibmdlX2RldmxpbmsubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9NYWtlZmlsZTo3Olx0ICAgIGJuZ2VfaHdybS5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL01ha2VmaWxlOjg6XHQgICAgYm5nZV9od3JtX2xpYi5vIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL01ha2VmaWxlOjk6XHQgICAgYm5nZV9ybWVtLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvTWFrZWZpbGU6MTA6XHQgICAgYm5nZV9yZXNjLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvTWFrZWZpbGU6MTE6XHQgICAgYm5nZV9uZXRkZXYubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9NYWtlZmlsZToxMjpcdCAgICBibmdlX2V0aHRvb2wubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9NYWtlZmlsZToxMzpcdCAgICBibmdlX2F1eHIubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9NYWtlZmlsZToxNDpcdCAgICBibmdlX3R4cngubyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9NYWtlZmlsZToxNTpcdCAgICBibmdlX2xpbmsub1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTEwLSNpbmNsdWRlIFx1MDAzY2xpbnV4L2V0aGVyZGV2aWNlLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjExOiNpbmNsdWRlIFx1MDAzY2xpbnV4L2JuZ2UvaHNpLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjEyOiNpbmNsdWRlIFwmIzM0O2JuZ2Vfcm1lbS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaDoxMzojaW5jbHVkZSBcJiMzNDtibmdlX3Jlc2MuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MTQ6I2luY2x1ZGUgXCYjMzQ7Ym5nZV9hdXhyLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTE1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTE5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MjA6ZXh0ZXJuIGNoYXIgYm5nZV9kcml2ZXJfbmFtZVtdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaD0yMj1lbnVtIGJvYXJkX2lkeCB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaDoyNjpzdHJ1Y3QgYm5nZV9hdXhyX3ByaXYge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjctXHRzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSBhdXhfZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6Mjg6XHRzdHJ1Y3QgYm5nZV9hdXhyX2RldiAqYXV4cl9kZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0yOS1cdGludCBpZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0zMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjMyOnN0cnVjdCBibmdlX3BmX2luZm8ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMzMtXHR1MTZcdGZ3X2ZpZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaD04MT1lbnVtIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC05Mi0jZGVmaW5lIEJOR0VfTUFYX1FVRVVFXHRcdDhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjkzOnN0cnVjdCBibmdlX3F1ZXVlX2luZm8ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtOTQtXHR1OCAgICAgIHF1ZXVlX2lkO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTEwMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjEwMzpzdHJ1Y3QgYm5nZV9kZXYge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMTA0LVx0c3RydWN0IGRldmljZVx0KmRldjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0xNDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaDoxNDU6XHRzdHJ1Y3QgYm5nZV9wZl9pbmZvXHRwZjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTE0Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0xNTMtXHQvKiBCYWNraW5nIHN0b3JlcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MTU0Olx0c3RydWN0IGJuZ2VfY3R4X21lbV9pbmZvXHQqY3R4O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMTU1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTE1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjE1ODpcdHN0cnVjdCBibmdlX2h3X3Jlc2NcdGh3X3Jlc2M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0xNTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjA0LVx0dThcdFx0XHRtYXhfbGx0YztcdC8qIGxvc3NsZXNzIFRDcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MjA1Olx0c3RydWN0IGJuZ2VfcXVldWVfaW5mb1x0cV9pbmZvW0JOR0VfTUFYX1FVRVVFXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTIwNi1cdHU4XHRcdFx0dGNfdG9fcWlkeFtCTkdFX01BWF9RVUVVRV07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MjExOlx0c3RydWN0IGJuZ2VfaXJxXHRcdCppcnFfdGJsO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjEyLVx0dTE2XHRcdFx0aXJxc19hY3F1aXJlZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTIxMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjIxNDpcdHN0cnVjdCBibmdlX2F1eHJfcHJpdlx0KmF1eF9wcml2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MjE1Olx0c3RydWN0IGJuZ2VfYXV4cl9kZXZcdCphdXhyX2RldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTIxNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjIxNzpcdHN0cnVjdCBibmdlX2xpbmtfaW5mb1x0bGlua19pbmZvO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjE4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTIyMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjIyMzpzdGF0aWMgaW5saW5lIGJvb2wgYm5nZV9pc19yb2NlX2VuKHN0cnVjdCBibmdlX2RldiAqYmQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0yMjQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTIyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjIyODpzdGF0aWMgaW5saW5lIGJvb2wgYm5nZV9pc19hZ2dfcmVxZChzdHJ1Y3QgYm5nZV9kZXYgKmJkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjI5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTIzMC1cdGlmIChiZC1cdTAwM2VuZXRkZXYpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjIzMTpcdFx0c3RydWN0IGJuZ2VfbmV0ICpibiA9IG5ldGRldl9wcml2KGJkLVx1MDAzZW5ldGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0yMzItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MjQzOnN0YXRpYyBpbmxpbmUgdm9pZCBibmdlX3dyaXRlcShzdHJ1Y3QgYm5nZV9kZXYgKmJkLCB1NjQgdmFsLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjQ0LVx0XHRcdCAgICAgICB2b2lkIF9faW9tZW0gKmFkZHIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjU1LS8qIEZvciBUWCBhbmQgUlggcmluZyBkb29yYmVsbHMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjI1NjpzdGF0aWMgaW5saW5lIHZvaWQgYm5nZV9kYl93cml0ZShzdHJ1Y3QgYm5nZV9kZXYgKmJkLCBzdHJ1Y3QgYm5nZV9kYl9pbmZvICpkYixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTI1Ny1cdFx0XHRcdCB1MzIgaWR4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjU4LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjI1OTpcdGJuZ2Vfd3JpdGVxKGJkLCBkYi1cdTAwM2VkYl9rZXk2NCB8IERCX1JJTkdfSURYKGRiLCBpZHgpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjYwLVx0XHQgICAgZGItXHUwMDNlZG9vcmJlbGwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTI2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjI2Mzpib29sIGJuZ2VfYXV4X3JlZ2lzdGVyZWQoc3RydWN0IGJuZ2VfZGV2ICpiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaDoyNjQ6dTE2IGJuZ2VfYXV4X2dldF9tc2l4KHN0cnVjdCBibmdlX2RldiAqYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjY1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTYtI2luY2x1ZGUgXHUwMDNjbGludXgvYXV4aWxpYXJ5X2J1cy5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjE3OiNpbmNsdWRlIFx1MDAzY2xpbnV4L2JuZ2UvaHNpLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjE5OiNpbmNsdWRlIFwmIzM0O2JuZ2UuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoyMDojaW5jbHVkZSBcJiMzNDtibmdlX2h3cm0uaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoyMTojaW5jbHVkZSBcJiMzNDtibmdlX2F1eHIuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0yMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MjM6c3RhdGljIERFRklORV9JREEoYm5nZV9hdXhfZGV2X2lkcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoyNTpzdGF0aWMgdm9pZCBibmdlX2ZpbGxfbXNpeF92ZWNzKHN0cnVjdCBibmdlX2RldiAqYmQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjI2Olx0XHRcdFx0c3RydWN0IGJuZ2VfbXNpeF9pbmZvICppbmZvKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0yNy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjI4Olx0c3RydWN0IGJuZ2VfYXV4cl9kZXYgKmF1eHJfZGV2ID0gYmQtXHUwMDNlYXV4cl9kZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTI5LVx0aW50IG51bV9tc2l4LCBpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtNDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjQzOmludCBibmdlX3JlZ2lzdGVyX2RldihzdHJ1Y3QgYm5nZV9hdXhyX2RldiAqYXV4cl9kZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTQ0LVx0XHQgICAgICB2b2lkICpoYW5kbGUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTQ1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6NDY6XHRzdHJ1Y3QgYm5nZV9kZXYgKmJkID0gcGNpX2dldF9kcnZkYXRhKGF1eHJfZGV2LVx1MDAzZXBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzo0NzpcdHN0cnVjdCBibmdlX2F1eHJfaW5mbyAqYXV4cl9pbmZvO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy00OC1cdGludCByYyA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy01Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6NTc6XHRpZiAoIWJuZ2VfYXV4X2hhc19lbm91Z2hfcmVzb3VyY2VzKGJkKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy01OC1cdFx0cmMgPSAtRU5PTUVNO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjY3Olx0Ym5nZV9maWxsX21zaXhfdmVjcyhiZCwgYmQtXHUwMDNlYXV4cl9kZXYtXHUwMDNlbXNpeF9pbmZvKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtNjgtXHRhdXhyX2Rldi1cdTAwM2VmbGFncyB8PSBCTkdFX0FSREVWX01TSVhfQUxMT0M7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy03NC19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjc1OkVYUE9SVF9TWU1CT0woYm5nZV9yZWdpc3Rlcl9kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy03Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6Nzc6dm9pZCBibmdlX3VucmVnaXN0ZXJfZGV2KHN0cnVjdCBibmdlX2F1eHJfZGV2ICphdXhyX2RldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtNzgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzo3OTpcdHN0cnVjdCBibmdlX2RldiAqYmQgPSBwY2lfZ2V0X2RydmRhdGEoYXV4cl9kZXYtXHUwMDNlcGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjgwOlx0c3RydWN0IGJuZ2VfYXV4cl9pbmZvICphdXhyX2luZm87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTgxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtOTEtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzo5MjpFWFBPUlRfU1lNQk9MKGJuZ2VfdW5yZWdpc3Rlcl9kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy05My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6OTQ6aW50IGJuZ2Vfc2VuZF9tc2coc3RydWN0IGJuZ2VfYXV4cl9kZXYgKmF1eHJfZGV2LCBzdHJ1Y3QgYm5nZV9md19tc2cgKmZ3X21zZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtOTUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzo5NjpcdHN0cnVjdCBibmdlX2RldiAqYmQgPSBwY2lfZ2V0X2RydmRhdGEoYXV4cl9kZXYtXHUwMDNlcGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTk3LVx0c3RydWN0IG91dHB1dCAqcmVzcDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTEwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MTAyOlx0cmMgPSBibmdlX2h3cm1fcmVxX2luaXQoYmQsIHJlcSwgMCAvKiBkb24mIzM5O3QgY2FyZSAqLyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTEwMy1cdGlmIChyYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTEwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MTA2Olx0cmMgPSBibmdlX2h3cm1fcmVxX3JlcGxhY2UoYmQsIHJlcSwgZndfbXNnLVx1MDAzZW1zZywgZndfbXNnLVx1MDAzZW1zZ19sZW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0xMDctXHRpZiAocmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0xMDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjExMDpcdGJuZ2VfaHdybV9yZXFfdGltZW91dChiZCwgcmVxLCBmd19tc2ctXHUwMDNldGltZW91dCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjExMTpcdHJlc3AgPSBibmdlX2h3cm1fcmVxX2hvbGQoYmQsIHJlcSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjExMjpcdHJjID0gYm5nZV9od3JtX3JlcV9zZW5kKGJkLCByZXEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0xMTMtXHRyZXNwX2xlbiA9IGxlMTZfdG9fY3B1KHJlc3AtXHUwMDNlcmVzcF9sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTIwLWRyb3BfcmVxOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoxMjE6XHRibmdlX2h3cm1fcmVxX2Ryb3AoYmQsIHJlcSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTEyMi1cdHJldHVybiByYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTIzLX1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MTI0OkVYUE9SVF9TWU1CT0woYm5nZV9zZW5kX21zZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTEyNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MTI2OnZvaWQgYm5nZV9yZG1hX2F1eF9kZXZpY2VfdW5pbml0KHN0cnVjdCBibmdlX2RldiAqYmQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTEyNy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjEyODpcdHN0cnVjdCBibmdlX2F1eHJfcHJpdiAqYXV4X3ByaXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTEyOS1cdHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTM5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoxNDA6c3RhdGljIHZvaWQgYm5nZV9hdXhfZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0xNDEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoxNDI6XHRzdHJ1Y3QgYm5nZV9hdXhyX3ByaXYgKmF1eF9wcml2ID1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MTQzOlx0XHRcdGNvbnRhaW5lcl9vZihkZXYsIHN0cnVjdCBibmdlX2F1eHJfcHJpdiwgYXV4X2Rldi5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoxNDQ6XHRzdHJ1Y3QgYm5nZV9kZXYgKmJkID0gcGNpX2dldF9kcnZkYXRhKGF1eF9wcml2LVx1MDAzZWF1eHJfZGV2LVx1MDAzZXBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0xNDUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjE0NjpcdGlkYV9mcmVlKFx1MDAyNmJuZ2VfYXV4X2Rldl9pZHMsIGF1eF9wcml2LVx1MDAzZWlkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTQ3LVx0a2ZyZWUoYXV4X3ByaXYtXHUwMDNlYXV4cl9kZXYtXHUwMDNlYXV4cl9pbmZvKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTE1My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MTU0OnZvaWQgYm5nZV9yZG1hX2F1eF9kZXZpY2VfZGVsKHN0cnVjdCBibmdlX2RldiAqYmQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTE1NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0xNjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjE2MjpzdGF0aWMgdm9pZCBibmdlX3NldF9hdXhyX2Rldl9pbmZvKHN0cnVjdCBibmdlX2F1eHJfZGV2ICphdXhyX2RldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MTYzOlx0XHRcdFx0ICAgc3RydWN0IGJuZ2VfZGV2ICpiZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTY0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTE4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MTgzOnZvaWQgYm5nZV9yZG1hX2F1eF9kZXZpY2VfYWRkKHN0cnVjdCBibmdlX2RldiAqYmQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTE4NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0yMDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjIwMzp2b2lkIGJuZ2VfcmRtYV9hdXhfZGV2aWNlX2luaXQoc3RydWN0IGJuZ2VfZGV2ICpiZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMjA0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMjA1LVx0c3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmF1eF9kZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjIwNjpcdHN0cnVjdCBibmdlX2F1eHJfaW5mbyAqYXV4cl9pbmZvO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoyMDc6XHRzdHJ1Y3QgYm5nZV9hdXhyX3ByaXYgKmF1eF9wcml2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoyMDg6XHRzdHJ1Y3QgYm5nZV9hdXhyX2RldiAqYXV4cl9kZXY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTIwOS1cdGludCByYztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMjEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoyMTE6XHRpZiAoIWJuZ2VfaXNfcm9jZV9lbihiZCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTIxMi1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMjE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoyMTg6XHRhdXhfcHJpdi1cdTAwM2VpZCA9IGlkYV9hbGxvYyhcdTAwMjZibmdlX2F1eF9kZXZfaWRzLCBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMjE5LVx0aWYgKGF1eF9wcml2LVx1MDAzZWlkIFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0yMjgtXHRhdXhfZGV2LVx1MDAzZWRldi5wYXJlbnQgPSBcdTAwMjZiZC1cdTAwM2VwZGV2LVx1MDAzZWRldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MjI5Olx0YXV4X2Rldi1cdTAwM2VkZXYucmVsZWFzZSA9IGJuZ2VfYXV4X2Rldl9yZWxlYXNlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0yMzAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0yMzItXHRpZiAocmMpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MjMzOlx0XHRpZGFfZnJlZShcdTAwMjZibmdlX2F1eF9kZXZfaWRzLCBhdXhfcHJpdi1cdTAwM2VpZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTIzNC1cdFx0a2ZyZWUoYXV4X3ByaXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMjUwLVx0YmQtXHUwMDNlYXV4cl9kZXYgPSBhdXhyX2RldjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MjUxOlx0Ym5nZV9zZXRfYXV4cl9kZXZfaW5mbyhhdXhyX2RldiwgYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0yNTItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaD0xND1zdHJ1Y3QgaHdybV9hc3luY19ldmVudF9jbXBsO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaDoxNTpzdHJ1Y3QgYm5nZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmgtMTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oOjE3OnN0cnVjdCBibmdlX21zaXhfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oLTE4LVx0dTMyXHR2ZWN0b3I7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaC0yMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmg6MjM6c3RydWN0IGJuZ2VfZndfbXNnIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmgtMjQtXHR2b2lkXHQqbXNnO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmgtMzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oOjMxOnN0cnVjdCBibmdlX2F1eHJfaW5mbyB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oLTMyLVx0dm9pZFx0XHQqaGFuZGxlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmg9MzY9ZW51bSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaC00NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmg6NDU6c3RydWN0IGJuZ2VfYXV4cl9kZXYge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaC00Ni1cdHN0cnVjdCBuZXRfZGV2aWNlXHQqbmV0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmgtNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oOjUwOlx0c3RydWN0IGJuZ2VfbXNpeF9pbmZvXHRtc2l4X2luZm9bQk5HRV9NQVhfUk9DRV9NU0lYXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmgtNTEtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaC01My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmg6NTQ6XHRzdHJ1Y3QgYm5nZV9hdXhyX2luZm9cdCphdXhyX2luZm87XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oLTU1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmgtNzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oOjc1OnZvaWQgYm5nZV9yZG1hX2F1eF9kZXZpY2VfdW5pbml0KHN0cnVjdCBibmdlX2RldiAqYmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oOjc2OnZvaWQgYm5nZV9yZG1hX2F1eF9kZXZpY2VfZGVsKHN0cnVjdCBibmdlX2RldiAqYmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oOjc3OnZvaWQgYm5nZV9yZG1hX2F1eF9kZXZpY2VfYWRkKHN0cnVjdCBibmdlX2RldiAqYmRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oOjc4OnZvaWQgYm5nZV9yZG1hX2F1eF9kZXZpY2VfaW5pdChzdHJ1Y3QgYm5nZV9kZXYgKmJkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaDo3OTppbnQgYm5nZV9yZWdpc3Rlcl9kZXYoc3RydWN0IGJuZ2VfYXV4cl9kZXYgKmFkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oLTgwLVx0XHQgICAgICB2b2lkICpoYW5kbGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaDo4MTp2b2lkIGJuZ2VfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IGJuZ2VfYXV4cl9kZXYgKmFkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaDo4MjppbnQgYm5nZV9zZW5kX21zZyhzdHJ1Y3QgYm5nZV9hdXhyX2RldiAqYWRldiwgc3RydWN0IGJuZ2VfZndfbXNnICpmd19tc2cpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaC04My1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjk6I2luY2x1ZGUgXCYjMzQ7Ym5nZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjEwOiNpbmNsdWRlIFwmIzM0O2JuZ2VfZGV2bGluay5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjExOiNpbmNsdWRlIFwmIzM0O2JuZ2VfaHdybS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjEyOiNpbmNsdWRlIFwmIzM0O2JuZ2VfaHdybV9saWIuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoxMzojaW5jbHVkZSBcJiMzNDtibmdlX2xpbmsuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jPTE2PU1PRFVMRV9ERVNDUklQVElPTihEUlZfU1VNTUFSWSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTE3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoxODpjaGFyIGJuZ2VfZHJpdmVyX25hbWVbXSA9IERSVl9OQU1FO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM9MjA9c3RhdGljIGNvbnN0IHN0cnVjdCB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MjY6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGJuZ2VfcGNpX3RibFtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yNy1cdHsgUENJX1ZERVZJQ0UoQlJPQURDT00sIDB4MTc4MCksIC5kcml2ZXJfZGF0YSA9IEJDTTU3NzA4IH0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zMC19O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozMTpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgYm5nZV9wY2lfdGJsKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjMzOnN0YXRpYyB2b2lkIGJuZ2VfcHJpbnRfZGV2aWNlX2luZm8oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGVudW0gYm9hcmRfaWR4IGlkeClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtNDItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjQzOmJvb2wgYm5nZV9hdXhfcmVnaXN0ZXJlZChzdHJ1Y3QgYm5nZV9kZXYgKmJkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy00NC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjQ1Olx0c3RydWN0IGJuZ2VfYXV4cl9kZXYgKmJhX2RldiA9IGJkLVx1MDAzZWF1eHJfZGV2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy00Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzo1MzpzdGF0aWMgdm9pZCBibmdlX252bV9jZmdfdmVyX2dldChzdHJ1Y3QgYm5nZV9kZXYgKmJkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy01NC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy01Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6NTc6XHRpZiAoIWJuZ2VfaHdybV9udm1fZGV2X2luZm8oYmQsIFx1MDAyNm52bV9pbmZvKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtNTgtXHRcdHNucHJpbnRmKGJkLVx1MDAzZW52bV9jZmdfdmVyLCBGV19WRVJfU1RSX0xFTiwgXCYjMzQ7JWQuJWQuJWRcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy02Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6NjM6c3RhdGljIGludCBibmdlX2Z1bmNfcWNhcHMoc3RydWN0IGJuZ2VfZGV2ICpiZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtNjQte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjY3Olx0cmMgPSBibmdlX2h3cm1fZnVuY19xY2FwcyhiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTY4LVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtNzAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjcxOlx0cmMgPSBibmdlX2h3cm1fcXVldWVfcXBvcnRjZmcoYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy03Mi1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtNzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjgwOnN0YXRpYyBpbnQgYm5nZV9mdW5jX3FyY2Fwc19xY2ZnKHN0cnVjdCBibmdlX2RldiAqYmQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTgxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTgzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzo4NDpcdHJjID0gYm5nZV9od3JtX2Z1bmNfcmVzY19xY2FwcyhiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTg1LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy04OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6OTA6XHRyYyA9IGJuZ2VfaHdybV9mdW5jX3FjZmcoYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy05MS1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtOTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjk2Olx0cmMgPSBibmdlX2h3cm1fdm5pY19xY2FwcyhiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTk3LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xMDQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjEwNTpzdGF0aWMgdm9pZCBibmdlX2Z3X3VucmVnaXN0ZXJfZGV2KHN0cnVjdCBibmdlX2RldiAqYmQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTEwNi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTEwNy1cdC8qIGN0eCBtZW0gZnJlZSBhZnRlciB1bnJndHIgb25seSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoxMDg6XHRibmdlX2h3cm1fZnVuY19kcnZfdW5yZ3RyKGJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTA5Olx0Ym5nZV9mcmVlX2N0eF9tZW0oYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xMTAtfVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjExMjpzdGF0aWMgdm9pZCBibmdlX3NldF9kZmx0X3Jzc19oYXNoX3R5cGUoc3RydWN0IGJuZ2VfZGV2ICpiZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTEzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTEyMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTIyOnN0YXRpYyBpbnQgYm5nZV9md19yZWdpc3Rlcl9kZXYoc3RydWN0IGJuZ2VfZGV2ICpiZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTIzLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTEyNi1cdGJkLVx1MDAzZWZ3X2NhcCA9IDA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjEyNzpcdHJjID0gYm5nZV9od3JtX3Zlcl9nZXQoYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xMjgtXHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTEzMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTMzOlx0Ym5nZV9udm1fY2ZnX3Zlcl9nZXQoYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xMzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjEzNTpcdHJjID0gYm5nZV9od3JtX2Z1bmNfcmVzZXQoYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xMzYtXHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTE0MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTQxOlx0Ym5nZV9od3JtX2Z3X3NldF90aW1lKGJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xNDMtXHQvKiBHZXQgdGhlIHJlc291cmNlcyBhbmQgY29uZmlndXJhdGlvbiBmcm9tIGZpcm13YXJlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjE0NDpcdHJjID0gYm5nZV9mdW5jX3FjYXBzKGJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTQ1LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xNDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjE1MDpcdHJjID0gYm5nZV9hbGxvY19jdHhfbWVtKGJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTUxLVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xNTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjE1NjpcdHJjID0gYm5nZV9od3JtX2Z1bmNfZHJ2X3JndHIoYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xNTctXHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTE2MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTYyOlx0cmMgPSBibmdlX2Z1bmNfcXJjYXBzX3FjZmcoYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xNjMtXHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTE2Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTY4Olx0Ym5nZV9zZXRfZGZsdF9yc3NfaGFzaF90eXBlKGJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTY5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTcyLWVycl9mdW5jX3Vucmd0cjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTczOlx0Ym5nZV9od3JtX2Z1bmNfZHJ2X3Vucmd0cihiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTE3NC1lcnJfZnJlZV9jdHhfbWVtOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoxNzU6XHRibmdlX2ZyZWVfY3R4X21lbShiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTE3Ni1cdHJldHVybiByYztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTE3OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTc5OnN0YXRpYyB2b2lkIGJuZ2VfcGNpX2Rpc2FibGUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTE4MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xODUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjE4NjpzdGF0aWMgaW50IGJuZ2VfcGNpX2VuYWJsZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTg3LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTIwMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MjAzOlx0cmMgPSBwY2lfcmVxdWVzdF9yZWdpb25zKHBkZXYsIGJuZ2VfZHJpdmVyX25hbWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yMDQtXHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTIxOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MjIwOnN0YXRpYyB2b2lkIGJuZ2VfdW5tYXBfYmFycyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjIxLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MjIyOlx0c3RydWN0IGJuZ2VfZGV2ICpiZCA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjIzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoyMzU6c3RhdGljIHZvaWQgYm5nZV9zZXRfbWF4X2Z1bmNfaXJxcyhzdHJ1Y3QgYm5nZV9kZXYgKmJkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yMzYtXHRcdFx0XHQgICB1bnNpZ25lZCBpbnQgbWF4X2lycXMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yNDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjI0MTpzdGF0aWMgaW50IGJuZ2VfZ2V0X21heF9pcnEoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTI0Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yNDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjI0OTpzdGF0aWMgaW50IGJuZ2VfbWFwX2RiX2JhcihzdHJ1Y3QgYm5nZV9kZXYgKmJkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yNTAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoyNjE6c3RhdGljIGludCBibmdlX3Byb2JlX29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmVudClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjYyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjYzLVx0dW5zaWduZWQgaW50IG1heF9pcnFzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoyNjQ6XHRzdHJ1Y3QgYm5nZV9kZXYgKmJkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yNjUtXHRpbnQgcmM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yNzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjI4MDpcdHJjID0gYm5nZV9wY2lfZW5hYmxlKHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yODEtXHRpZiAocmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjI4NDpcdGJuZ2VfcHJpbnRfZGV2aWNlX2luZm8ocGRldiwgZW50LVx1MDAzZWRyaXZlcl9kYXRhKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoyODY6XHRiZCA9IGJuZ2VfZGV2bGlua19hbGxvYyhwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjg3LVx0aWYgKCFiZCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjk5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozMDA6XHRyYyA9IGJuZ2VfaW5pdF9od3JtX3Jlc291cmNlcyhiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTMwMS1cdGlmIChyYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTMwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MzA0Olx0cmMgPSBibmdlX2Z3X3JlZ2lzdGVyX2RldihiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTMwNS1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzA5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozMTA6XHRibmdlX2RldmxpbmtfcmVnaXN0ZXIoYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zMTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjMxMjpcdG1heF9pcnFzID0gYm5nZV9nZXRfbWF4X2lycShwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MzEzOlx0Ym5nZV9zZXRfbWF4X2Z1bmNfaXJxcyhiZCwgbWF4X2lycXMpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zMTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjMxNTpcdGJuZ2VfYXV4X2luaXRfZGZsdF9jb25maWcoYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zMTYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjMxNzpcdHJjID0gYm5nZV9uZXRfaW5pdF9kZmx0X2NvbmZpZyhiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTMxOC1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzIzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozMjQ6XHRyYyA9IGJuZ2VfbWFwX2RiX2JhcihiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTMyNS1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozMzU6XHRibmdlX3JkbWFfYXV4X2RldmljZV9pbml0KGJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzM2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozMzc6XHRyYyA9IGJuZ2VfYWxsb2NfaXJxcyhiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTMzOC1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzQyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozNDM6XHRyYyA9IGJuZ2VfbmV0ZGV2X2FsbG9jKGJkLCBtYXhfaXJxcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM0NC1cdGlmIChyYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM0Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MzQ3Olx0Ym5nZV9yZG1hX2F1eF9kZXZpY2VfYWRkKGJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzQ4LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzUzLWVycl9mcmVlX2lycTpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MzU0Olx0Ym5nZV9mcmVlX2lycXMoYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM1Ni1lcnJfdW5pbml0X2F1eHI6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjM1NzpcdGJuZ2VfcmRtYV9hdXhfZGV2aWNlX3VuaW5pdChiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM1OC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzU5LWVycl9jb25maWdfdW5pbml0OlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozNjA6XHRibmdlX25ldF91bmluaXRfZGZsdF9jb25maWcoYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNjEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM2Mi1lcnJfZndfcmVnOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozNjM6XHRibmdlX2RldmxpbmtfdW5yZWdpc3RlcihiZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjM2NDpcdGJuZ2VfZndfdW5yZWdpc3Rlcl9kZXYoYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM2Ni1lcnJfaHdybV9jbGVhbnVwOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozNjc6XHRibmdlX2NsZWFudXBfaHdybV9yZXNvdXJjZXMoYmQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM2OS1lcnJfYmFyX3VubWFwOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozNzA6XHRibmdlX3VubWFwX2JhcnMocGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM3MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzcyLWVycl9kZXZsX2ZyZWU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjM3MzpcdGJuZ2VfZGV2bGlua19mcmVlKGJkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzc0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNzUtZXJyX3BjaV9kaXNhYmxlOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozNzY6XHRibmdlX3BjaV9kaXNhYmxlKHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNzctXHRyZXR1cm4gcmM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjM4MDpzdGF0aWMgdm9pZCBibmdlX3JlbW92ZV9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM4MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjM4MjpcdHN0cnVjdCBibmdlX2RldiAqYmQgPSBwY2lfZ2V0X2RydmRhdGEocGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM4My1cblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE1OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNTEwCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRHJpdmVyJiMzOTtzIFByZXNlbmNlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRyaXZlciwgYGJuZ2VgLiBGaXJzdCB0aG91Z2h0IGlzLCAmIzM0O1doZXJlIGRvZXMgdGhpcyBldmVuIGZpdD8gSXMgaXQgYSBzdGFuZGFyZCBkcml2ZXIgaW4gdGhlIG1haW5saW5lIGtlcm5lbCwgcGVyaGFwcyBhIG1vY2sgb3IgYSB0ZXN0IGRyaXZlciwgb3Igc29tZXRoaW5nIHNwZWNpZmljPyYjMzQ7IFRoZW4gSSByZWFsaXplLCAmIzM0O0hhbmcgb24sIGBibmdlYCBkb2VzbiYjMzk7dCBpbW1lZGlhdGVseSByaW5nIGFueSBiZWxscyBmcm9tIHVwc3RyZWFtIExpbnV4LiYjMzQ7IFRoYXQgdHJpZ2dlcnMgYSB0aG91Z2h0OiAmIzM0O0NvdWxkIHRoaXMgYmUgc29tZXRoaW5nIGFkZGVkIGJ5IHN5ei1jbHVzdGVyIGZvciBmdXp6aW5nLCBvciBtYXliZSBpdCYjMzk7cyBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgZGV2ZWxvcG1lbnQgYnJhbmNoPyYjMzQ7CgpBaCwgbm93IHRoZSBjb25mdXNpb24ga2lja3MgaW4uIFRoZSB0ZXh0IGxpc3RzICpkaWZmZXJlbnQqIHBhdGhzIHRoYXQgYXJlIGNoYW5nZWQ6IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfZGV2LmNgICphbmQqIGBkcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuY2AgYW5kIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuY2AuIFNvbWV0aGluZyBzZWVtcyBpbmNvbnNpc3RlbnQgYWJvdXQgdGhpcywgYnV0Li4uIHdhaXQsIHRoZSBwcm9tcHQgc2F5cyB0aGUgY2hhbmdlcyAqaGF2ZSBhbHJlYWR5KiBiZWVuIGNvbW1pdHRlZCB0byB0aGUgSEVBRC4gT2theSwgc28gdGhhdCBtZWFucyB0aGlzIGRyaXZlciAqZG9lcyogZXhpc3Qgc29tZXdoZXJlIGluIHRoZSB0cmVlLgoKTm93LCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhpcyBpcyBpbmRlZWQgcmVhY2hhYmxlIHRocm91Z2ggY29uZmlndXJhdGlvbi4gRmlyc3QsIGxldCYjMzk7cyBzdGFydCB3aXRoIGBDT05GSUdfQk5HRWAuIFRoYXQgc2hvdWxkIGJlIGEgc3RhbmRhcmQgY29uZmlnIG9wdGlvbi4gTGV0JiMzOTtzIHNlZS4uLiBZdXAsIGFuZCB0aGUgYnVpbGQgc3lzdGVtIHVzZXMgaXQ6IGBvYmotJChDT05GSUdfQk5HRSkgJiM0Mzs9IGJuZ2UvYC4gT2theSwgc28gYGJuZ2VgICpjYW4qIGJlIGJ1aWx0IGlmIGBDT05GSUdfQk5HRWAgaXMgZW5hYmxlZC4gTm93LCBsZXQmIzM5O3MgY2hlY2sgdGhlIG90aGVyIG9uZSwgYENPTkZJR19JTkZJTklCQU5EX0JOR19SRWAuIFRoYXQmIzM5O3MgdGhlIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtibmdfcmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL2luZmluaWJhbmQvaHcvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA5OTIgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9NYWtlZmlsZT0xNT1vYmotJChDT05GSUdfSU5GSU5JQkFORF9CTlhUX1JFKVx0JiM0Mzs9IGJueHRfcmUvXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvTWFrZWZpbGU6MTY6b2JqLSQoQ09ORklHX0lORklOSUJBTkRfQk5HX1JFKVx0XHQmIzQzOz0gYm5nX3JlL1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L01ha2VmaWxlLTE3LW9iai0kKENPTkZJR19JTkZJTklCQU5EX0VSRE1BKVx0XHQmIzQzOz0gZXJkbWEvXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9LY29uZmlnPTI9Y29uZmlnIElORklOSUJBTkRfQk5HX1JFXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9LY29uZmlnLTgtXHQgIDUwLzEwMC8yMDAvNDAwLzgwMCBnaWdhYml0IFJvQ0UgSENBcy4gVGhlIG1vZHVsZVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9LY29uZmlnOjk6XHQgIHdpbGwgYmUgY2FsbGVkIGJuZ19yZS4gVG8gY29tcGlsZSB0aGlzIGRyaXZlclxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9LY29uZmlnLTEwLVx0ICBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS5cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL01ha2VmaWxlPTI9Y2NmbGFncy15IDo9IC1JICQoc3JjdHJlZSkvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9NYWtlZmlsZS0zLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19JTkZJTklCQU5EX0JOR19SRSkgJiM0Mzs9IGJuZ19yZS5vXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL01ha2VmaWxlLTUtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL01ha2VmaWxlOjY6Ym5nX3JlLXkgOj0gYm5nX2Rldi5vIGJuZ19mdy5vIFxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL01ha2VmaWxlOjc6XHQgICAgYm5nX3Jlcy5vIGJuZ19zcC5vIFxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL01ha2VmaWxlLTgtXHQgICAgYm5nX2RlYnVnZnMub1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYy03LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jOjg6I2luY2x1ZGUgXCYjMzQ7Ym5nX3Jlcy5oXCYjMzQ7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmMtOS0jaW5jbHVkZSBcJiMzNDtibmdfZncuaFwmIzM0O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYy0xMS0jaW5jbHVkZSBcJiMzNDtibmdlX2F1eHIuaFwmIzM0O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jOjEyOiNpbmNsdWRlIFwmIzM0O2JuZ19yZS5oXCYjMzQ7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmMtMTMtI2luY2x1ZGUgXCYjMzQ7Ym5nX2RlYnVnZnMuaFwmIzM0O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jLTE0LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jOjE1OnN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpibmdfcmVfZGVidWdmc19yb290O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jLTE2LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jOjE3OnZvaWQgYm5nX3JlX2RlYnVnZnNfYWRkX3BkZXYoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmMtMTgte1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYy0yMS1cdHJkZXYtXHUwMDNlZGJnX3Jvb3QgPVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jOjIyOlx0XHRkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZGV2X25hbWUoXHUwMDI2cGRldi1cdTAwM2VkZXYpLCBibmdfcmVfZGVidWdmc19yb290KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYy0yMy19XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmMtMjQtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmM6MjU6dm9pZCBibmdfcmVfZGVidWdmc19yZW1fcGRldihzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldilcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYy0yNi17XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jLTMwLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jOjMxOnZvaWQgYm5nX3JlX3JlZ2lzdGVyX2RlYnVnZnModm9pZClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYy0zMi17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmM6MzM6XHRibmdfcmVfZGVidWdmc19yb290ID0gZGVidWdmc19jcmVhdGVfZGlyKFwmIzM0O2JuZ19yZVwmIzM0OywgTlVMTCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmMtMzQtfVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jLTM1LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jOjM2OnZvaWQgYm5nX3JlX3VucmVnaXN0ZXJfZGVidWdmcyh2b2lkKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jLTM3LXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYzozODpcdGRlYnVnZnNfcmVtb3ZlKGJuZ19yZV9kZWJ1Z2ZzX3Jvb3QpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jLTM5LX1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmgtNi1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuaDo3OnZvaWQgYm5nX3JlX2RlYnVnZnNfYWRkX3BkZXYoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5oOjg6dm9pZCBibmdfcmVfZGVidWdmc19yZW1fcGRldihzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmgtOS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuaDoxMDp2b2lkIGJuZ19yZV9yZWdpc3Rlcl9kZWJ1Z2ZzKHZvaWQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5oOjExOnZvaWQgYm5nX3JlX3VucmVnaXN0ZXJfZGVidWdmcyh2b2lkKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuaC0xMi0jZW5kaWZcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy05LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MTA6I2luY2x1ZGUgXCYjMzQ7Ym5nX3Jlcy5oXCYjMzQ7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xMS0jaW5jbHVkZSBcJiMzNDtibmdfc3AuaFwmIzM0O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTE0LSNpbmNsdWRlIFwmIzM0O2JuZ2VfYXV4ci5oXCYjMzQ7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoxNTojaW5jbHVkZSBcJiMzNDtibmdfcmUuaFwmIzM0O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTYtI2luY2x1ZGUgXCYjMzQ7Ym5nZV9od3JtLmhcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYz0yMT1NT0RVTEVfTElDRU5TRShcJiMzNDtEdWFsIEJTRC9HUExcJiMzNDspO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjItXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyMzpzdGF0aWMgc3RydWN0IGJuZ19yZV9kZXYgKmJuZ19yZV9kZXZfYWRkKHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjQtXHRcdFx0XHRcdCBzdHJ1Y3QgYm5nZV9hdXhyX2RldiAqYXV4X2RldilcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTI1LXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjI2Olx0c3RydWN0IGJuZ19yZV9kZXYgKnJkZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yNy1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjI4Olx0LyogQWxsb2NhdGUgYm5nX3JlX2RldiBpbnN0YW5jZSAqL1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6Mjk6XHRyZGV2ID0gaWJfYWxsb2NfZGV2aWNlKGJuZ19yZV9kZXYsIGliZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTMwLVx0aWYgKCFyZGV2KSB7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzozMTpcdFx0cHJfZXJyKFwmIzM0OyVzOiBibmdfcmVfZGV2IGFsbG9jYXRpb24gZmFpbHVyZSFcJiMzNDssIEtCVUlMRF9NT0ROQU1FKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTMyLVx0XHRyZXR1cm4gTlVMTDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00NC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjQ1OnN0YXRpYyBpbnQgYm5nX3JlX3JlZ2lzdGVyX25ldGRldihzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldilcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ2LXtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy01Mi1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjUzOnN0YXRpYyB2b2lkIGJuZ19yZV9kZXN0cm95X2NoaXBfY3R4KHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2KVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNTQte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NTU6XHRzdHJ1Y3QgYm5nX3JlX2NoaXBfY3R4ICpjaGlwX2N0eDtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTU2LVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTYyLVx0cmRldi1cdTAwM2VyY2Z3LnJlcyA9IE5VTEw7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo2MzpcdHJkZXYtXHUwMDNlYm5nX3Jlcy5jY3R4ID0gTlVMTDtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjY0Olx0cmRldi1cdTAwM2VibmdfcmVzLnBkZXYgPSBOVUxMO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNjUtXHRrZnJlZShjaGlwX2N0eCk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNjctXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo2ODpzdGF0aWMgaW50IGJuZ19yZV9zZXR1cF9jaGlwX2N0eChzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldilcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTY5LXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjcwOlx0c3RydWN0IGJuZ19yZV9jaGlwX2N0eCAqY2hpcF9jdHg7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy03MS1cdHN0cnVjdCBibmdlX2F1eHJfZGV2ICphdXhfZGV2O1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTc0LVx0YXV4X2RldiA9IHJkZXYtXHUwMDNlYXV4X2RldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjc1Olx0cmRldi1cdTAwM2VibmdfcmVzLnBkZXYgPSBhdXhfZGV2LVx1MDAzZXBkZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo3NjpcdHJkZXYtXHUwMDNlcmNmdy5yZXMgPSBcdTAwMjZyZGV2LVx1MDAzZWJuZ19yZXM7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy03Ny1cdGNoaXBfY3R4ID0ga3phbGxvY19vYmooKmNoaXBfY3R4KTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy04My1cdHJkZXYtXHUwMDNlY2hpcF9jdHggPSBjaGlwX2N0eDtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjg0Olx0cmRldi1cdTAwM2VibmdfcmVzLmNjdHggPSByZGV2LVx1MDAzZWNoaXBfY3R4O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtODUtXHRyZGV2LVx1MDAzZWRldl9hdHRyID0ga3phbGxvY19vYmooKnJkZXYtXHUwMDNlZGV2X2F0dHIpO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTg3LVx0XHRnb3RvIGZyZWVfY2hpcF9jdHg7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo4ODpcdHJkZXYtXHUwMDNlYm5nX3Jlcy5kYXR0ciA9IHJkZXYtXHUwMDNlZGV2X2F0dHI7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy04OS1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy05Ni1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjk3OnN0YXRpYyB2b2lkIGJuZ19yZV9pbml0X2h3cm1faGRyKHN0cnVjdCBpbnB1dCAqaGRyLCB1MTYgb3BjZClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTk4LXtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xMDMtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoxMDQ6c3RhdGljIHZvaWQgYm5nX3JlX2ZpbGxfZndfbXNnKHN0cnVjdCBibmdlX2Z3X21zZyAqZndfbXNnLCB2b2lkICptc2csXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xMDUtXHRcdFx0ICAgICAgIGludCBtc2dfbGVuLCB2b2lkICpyZXNwLCBpbnQgcmVzcF9tYXhfbGVuLFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTExNC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjExNTpzdGF0aWMgaW50IGJuZ19yZV9uZXRfcmluZ19mcmVlKHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTE2LVx0XHRcdFx0dTMyIGZ3X3JpbmdfaWQsIGludCB0eXBlKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTEyMy1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjEyNDpcdGJuZ19yZV9pbml0X2h3cm1faGRyKCh2b2lkICopXHUwMDI2cmVxLCBIV1JNX1JJTkdfRlJFRSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xMjUtXHRyZXEucmluZ190eXBlID0gdHlwZTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTEyNi1cdHJlcS5yaW5nX2lkID0gY3B1X3RvX2xlMzIoZndfcmluZ19pZCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoxMjc6XHRibmdfcmVfZmlsbF9md19tc2coXHUwMDI2ZndfbXNnLCAodm9pZCAqKVx1MDAyNnJlcSwgc2l6ZW9mKHJlcSksICh2b2lkICopXHUwMDI2cmVzcCxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTEyOC1cdFx0XHQgICAgc2l6ZW9mKHJlc3ApLCBCTkdFX0RGTFRfSFdSTV9DTURfVElNRU9VVCk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTM1LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MTM2OnN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2FsbG9jKHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MTM3Olx0XHRcdFx0IHN0cnVjdCBibmdfcmVfcmluZ19hdHRyICpyaW5nX2F0dHIsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xMzgtXHRcdFx0XHQgdTE2ICpmd19yaW5nX2lkKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTE0NS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjE0NjpcdGJuZ19yZV9pbml0X2h3cm1faGRyKCh2b2lkICopXHUwMDI2cmVxLCBIV1JNX1JJTkdfQUxMT0MpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTQ3LVx0cmVxLmVuYWJsZXMgPSAwO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTE1OS1cdHJlcS5pbnRfbW9kZSA9IHJpbmdfYXR0ci1cdTAwM2Vtb2RlO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MTYwOlx0Ym5nX3JlX2ZpbGxfZndfbXNnKFx1MDAyNmZ3X21zZywgKHZvaWQgKilcdTAwMjZyZXEsIHNpemVvZihyZXEpLCAodm9pZCAqKVx1MDAyNnJlc3AsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xNjEtXHRcdFx0ICAgc2l6ZW9mKHJlc3ApLCBCTkdFX0RGTFRfSFdSTV9DTURfVElNRU9VVCk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTY4LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MTY5OnN0YXRpYyBpbnQgYm5nX3JlX3N0YXRzX2N0eF9mcmVlKHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2KVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTcwLXtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xNzYtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoxNzc6XHRibmdfcmVfaW5pdF9od3JtX2hkcigodm9pZCAqKVx1MDAyNnJlcSwgSFdSTV9TVEFUX0NUWF9GUkVFKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTE3OC1cdHJlcS5zdGF0X2N0eF9pZCA9IGNwdV90b19sZTMyKHJkZXYtXHUwMDNlc3RhdHNfY3R4LmZ3X2lkKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjE3OTpcdGJuZ19yZV9maWxsX2Z3X21zZyhcdTAwMjZmd19tc2csICh2b2lkICopXHUwMDI2cmVxLCBzaXplb2YocmVxKSwgKHZvaWQgKilcdTAwMjZyZXNwLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTgwLVx0XHRcdCAgIHNpemVvZihyZXNwKSwgQk5HRV9ERkxUX0hXUk1fQ01EX1RJTUVPVVQpO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTE4OC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjE4OTpzdGF0aWMgaW50IGJuZ19yZV9zdGF0c19jdHhfYWxsb2Moc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xOTAte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTkxLVx0c3RydWN0IGJuZ2VfYXV4cl9kZXYgKmF1eF9kZXYgPSByZGV2LVx1MDAzZWF1eF9kZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoxOTI6XHRzdHJ1Y3QgYm5nX3JlX3N0YXRzICpzdGF0cyA9IFx1MDAyNnJkZXYtXHUwMDNlc3RhdHNfY3R4O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTkzLVx0c3RydWN0IGh3cm1fc3RhdF9jdHhfYWxsb2Nfb3V0cHV0IHJlc3AgPSB7fTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xOTktXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyMDA6XHRibmdfcmVfaW5pdF9od3JtX2hkcigodm9pZCAqKVx1MDAyNnJlcSwgSFdSTV9TVEFUX0NUWF9BTExPQyk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yMDEtXHRyZXEudXBkYXRlX3BlcmlvZF9tcyA9IGNwdV90b19sZTMyKDEwMDApO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTIwNC1cdHJlcS5zdGF0X2N0eF9mbGFncyA9IFNUQVRfQ1RYX0FMTE9DX1JFUV9TVEFUX0NUWF9GTEFHU19ST0NFO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MjA1Olx0Ym5nX3JlX2ZpbGxfZndfbXNnKFx1MDAyNmZ3X21zZywgKHZvaWQgKilcdTAwMjZyZXEsIHNpemVvZihyZXEpLCAodm9pZCAqKVx1MDAyNnJlc3AsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yMDYtXHRcdFx0ICAgc2l6ZW9mKHJlc3ApLCBCTkdFX0RGTFRfSFdSTV9DTURfVElNRU9VVCk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjEyLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MjEzOnN0YXRpYyBpbnQgYm5nX3JlX3F1ZXJ5X2h3cm1fdmVyc2lvbihzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldilcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTIxNC17XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjE3LVx0c3RydWN0IGh3cm1fdmVyX2dldF9pbnB1dCB2ZXJfZ2V0X3JlcSA9IHt9O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MjE4Olx0c3RydWN0IGJuZ19yZV9jaGlwX2N0eCAqY2N0eDtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTIxOS1cdHN0cnVjdCBibmdlX2Z3X21zZyBmd19tc2cgPSB7fTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yMjEtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyMjI6XHRibmdfcmVfaW5pdF9od3JtX2hkcigodm9pZCAqKVx1MDAyNnZlcl9nZXRfcmVxLCBIV1JNX1ZFUl9HRVQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjIzLVx0dmVyX2dldF9yZXEuaHdybV9pbnRmX21haiA9IEhXUk1fVkVSU0lPTl9NQUpPUjtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yMjUtXHR2ZXJfZ2V0X3JlcS5od3JtX2ludGZfdXBkID0gSFdSTV9WRVJTSU9OX1VQREFURTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjIyNjpcdGJuZ19yZV9maWxsX2Z3X21zZyhcdTAwMjZmd19tc2csICh2b2lkICopXHUwMDI2dmVyX2dldF9yZXEsIHNpemVvZih2ZXJfZ2V0X3JlcSksXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yMjctXHRcdFx0ICAgICh2b2lkICopXHUwMDI2dmVyX2dldF9yZXNwLCBzaXplb2YodmVyX2dldF9yZXNwKSxcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yNTAtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyNTE6c3RhdGljIHZvaWQgYm5nX3JlX2Rldl91bmluaXQoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yNTIte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjUzLVx0aW50IHJjO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MjU0Olx0Ym5nX3JlX2RlYnVnZnNfcmVtX3BkZXYocmRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yNTUtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yNTYtXHRpZiAodGVzdF9hbmRfY2xlYXJfYml0KEJOR19SRV9GTEFHX1JDRldfQ0hBTk5FTF9FTiwgXHUwMDI2cmRldi1cdTAwM2VmbGFncykpIHtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjI1NzpcdFx0cmMgPSBibmdfcmVfZGVpbml0X3JjZncoXHUwMDI2cmRldi1cdTAwM2VyY2Z3KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTI1OC1cdFx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTI2MC1cdFx0XHRcdCAgIFwmIzM0O0ZhaWxlZCB0byBkZWluaXRpYWxpemUgUkNGVzogJSN4XCYjMzQ7LCByYyk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyNjE6XHRcdGJuZ19yZV9zdGF0c19jdHhfZnJlZShyZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjI2MjpcdFx0Ym5nX3JlX2ZyZWVfc3RhdHNfY3R4X21lbShyZGV2LVx1MDAzZWJuZ19yZXMucGRldiwgXHUwMDI2cmRldi1cdTAwM2VzdGF0c19jdHgpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MjYzOlx0XHRibmdfcmVfZGlzYWJsZV9yY2Z3X2NoYW5uZWwoXHUwMDI2cmRldi1cdTAwM2VyY2Z3KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjI2NDpcdFx0Ym5nX3JlX25ldF9yaW5nX2ZyZWUocmRldiwgcmRldi1cdTAwM2VyY2Z3LmNyZXEucmluZ19pZCxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTI2NS1cdFx0XHQgICAgIFJJTkdfQUxMT0NfUkVRX1JJTkdfVFlQRV9OUSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyNjY6XHRcdGJuZ19yZV9mcmVlX3JjZndfY2hhbm5lbChcdTAwMjZyZGV2LVx1MDAzZXJjZncpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjY3LVx0fVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTI3MC1cdHJkZXYtXHUwMDNlbnFyID0gTlVMTDtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjI3MTpcdGJuZ19yZV9kZXN0cm95X2NoaXBfY3R4KHJkZXYpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjcyLVx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChCTkdfUkVfRkxBR19ORVRERVZfUkVHSVNURVJFRCwgXHUwMDI2cmRldi1cdTAwM2VmbGFncykpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjc1LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6Mjc2OnN0YXRpYyBpbnQgYm5nX3JlX2Rldl9pbml0KHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2KVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjc3LXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjI3ODpcdHN0cnVjdCBibmdfcmVfcmluZ19hdHRyIHJhdHRyID0ge307XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyNzk6XHRzdHJ1Y3QgYm5nX3JlX2NyZXFfY3R4ICpjcmVxO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjgwLVx0dTMyIGRiX29mZnQ7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjg1LVx0LyogUmVnaXN0ZXJlZCBhIG5ldyBSb0NFIGRldmljZSBpbnN0YW5jZSB0byBuZXRkZXYgKi9cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjI4NjpcdHJjID0gYm5nX3JlX3JlZ2lzdGVyX25ldGRldihyZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTI4Ny1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTMwNC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjMwNTpcdHJjID0gYm5nX3JlX3NldHVwX2NoaXBfY3R4KHJkZXYpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzA2LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzEwLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MzExOlx0cmMgPSBibmdfcmVfcXVlcnlfaHdybV92ZXJzaW9uKHJkZXYpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzEyLVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTMxNC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjMxNTpcdHJjID0gYm5nX3JlX2FsbG9jX2Z3X2NoYW5uZWwoXHUwMDI2cmRldi1cdTAwM2VibmdfcmVzLCBcdTAwMjZyZGV2LVx1MDAzZXJjZncpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzE2LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzQwLVx0cmF0dHIubHJpZCA9IHJkZXYtXHUwMDNlbnFyLVx1MDAzZW1zaXhfZW50cmllc1tCTkdfUkVfQ1JFUV9OUV9JRFhdLnJpbmdfaWR4O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MzQxOlx0cmMgPSBibmdfcmVfbmV0X3JpbmdfYWxsb2MocmRldiwgXHUwMDI2cmF0dHIsIFx1MDAyNmNyZXEtXHUwMDNlcmluZ19pZCk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0zNDItXHRpZiAocmMpIHtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0zNDgtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzozNDk6XHRyYyA9IGJuZ19yZV9lbmFibGVfZndfY2hhbm5lbChcdTAwMjZyZGV2LVx1MDAzZXJjZncsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0zNTAtXHRcdFx0XHRcdHZpZCwgZGJfb2ZmdCk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzU2LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MzU3Olx0cmMgPSBibmdfcmVfZ2V0X2Rldl9hdHRyKFx1MDAyNnJkZXYtXHUwMDNlcmNmdyk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0zNTgtXHRpZiAocmMpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzYwLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MzYxOlx0Ym5nX3JlX2RlYnVnZnNfYWRkX3BkZXYocmRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzozNjI6XHRyYyA9IGJuZ19yZV9hbGxvY19zdGF0c19jdHhfbWVtKHJkZXYtXHUwMDNlYm5nX3Jlcy5wZGV2LCByZGV2LVx1MDAzZWNoaXBfY3R4LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzYzLVx0XHRcdFx0XHRcdTAwMjZyZGV2LVx1MDAzZXN0YXRzX2N0eCk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzY5LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MzcwOlx0cmMgPSBibmdfcmVfc3RhdHNfY3R4X2FsbG9jKHJkZXYpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzcxLVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzc2LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6Mzc3Olx0cmMgPSBibmdfcmVfaW5pdF9yY2Z3KFx1MDAyNnJkZXYtXHUwMDNlcmNmdywgXHUwMDI2cmRldi1cdTAwM2VzdGF0c19jdHgpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzc4LVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzg2LWZyZWVfc2N0eDpcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjM4NzpcdGJuZ19yZV9zdGF0c19jdHhfZnJlZShyZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTM4OC1mcmVlX3N0YXRzX2N0eDpcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjM4OTpcdGJuZ19yZV9mcmVlX3N0YXRzX2N0eF9tZW0ocmRldi1cdTAwM2VibmdfcmVzLnBkZXYsIFx1MDAyNnJkZXYtXHUwMDNlc3RhdHNfY3R4KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTM5MC1kaXNhYmxlX3JjZnc6XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzozOTE6XHRibmdfcmVfZGlzYWJsZV9yY2Z3X2NoYW5uZWwoXHUwMDI2cmRldi1cdTAwM2VyY2Z3KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTM5Mi1mcmVlX3Jpbmc6XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzozOTM6XHRibmdfcmVfbmV0X3JpbmdfZnJlZShyZGV2LCByZGV2LVx1MDAzZXJjZncuY3JlcS5yaW5nX2lkLCB0eXBlKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTM5NC1mcmVlX3JjZnc6XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzk2LW5xX2FsbG9jX2ZhaWw6XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzozOTc6XHRibmdfcmVfZnJlZV9yY2Z3X2NoYW5uZWwoXHUwMDI2cmRldi1cdTAwM2VyY2Z3KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTM5OC1kZXN0cm95X2NoaXBfY3R4OlxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6Mzk5Olx0Ym5nX3JlX2Rlc3Ryb3lfY2hpcF9jdHgocmRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00MDAtbXNpeF9jdHhfZmFpbDpcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00MDYtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0MDc6c3RhdGljIGludCBibmdfcmVfYWRkX2RldmljZShzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYWRldilcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQwOC17XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDEwLVx0XHRjb250YWluZXJfb2YoYWRldiwgc3RydWN0IGJuZ2VfYXV4cl9wcml2LCBhdXhfZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjQxMTpcdHN0cnVjdCBibmdfcmVfZW5fZGV2X2luZm8gKmRldl9pbmZvO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NDEyOlx0c3RydWN0IGJuZ19yZV9kZXYgKnJkZXY7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00MTMtXHRpbnQgcmM7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDE2LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NDE3Olx0cmRldiA9IGJuZ19yZV9kZXZfYWRkKGFkZXYsIGF1eHJfcHJpdi1cdTAwM2VhdXhyX2Rldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00MTgtXHRpZiAoIXJkZXYpIHtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00MjQtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0MjU6XHRyYyA9IGJuZ19yZV9kZXZfaW5pdChyZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQyNi1cdGlmIChyYylcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00MzctXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0Mzg6c3RhdGljIHZvaWQgYm5nX3JlX3JlbW92ZV9kZXZpY2Uoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00MzktXHRcdFx0XHQgc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmF1eF9kZXYpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00NDAte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NDQxOlx0Ym5nX3JlX2Rldl91bmluaXQocmRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00NDItXHRpYl9kZWFsbG9jX2RldmljZShcdTAwMjZyZGV2LVx1MDAzZWliZGV2KTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00NDUtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0NDY6c3RhdGljIGludCBibmdfcmVfcHJvYmUoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFkZXYsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00NDctXHRcdFx0Y29uc3Qgc3RydWN0IGF1eGlsaWFyeV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ1MC1cdFx0Y29udGFpbmVyX29mKGFkZXYsIHN0cnVjdCBibmdlX2F1eHJfcHJpdiwgYXV4X2Rldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0NTE6XHRzdHJ1Y3QgYm5nX3JlX2VuX2Rldl9pbmZvICplbl9pbmZvO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDUyLVx0aW50IHJjO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ2MS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjQ2MjpcdHJjID0gYm5nX3JlX2FkZF9kZXZpY2UoYWRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00NjMtXHRpZiAocmMpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDY4LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NDY5OnN0YXRpYyB2b2lkIGJuZ19yZV9yZW1vdmUoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFkZXYpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00NzAte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NDcxOlx0c3RydWN0IGJuZ19yZV9lbl9kZXZfaW5mbyAqZGV2X2luZm8gPSBhdXhpbGlhcnlfZ2V0X2RydmRhdGEoYWRldik7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0NzI6XHRzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldjtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ3My1cbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00NzUtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0NzY6XHRibmdfcmVfcmVtb3ZlX2RldmljZShyZGV2LCBhZGV2KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ3Ny1cdGtmcmVlKGRldl9pbmZvKTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00NzktXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0ODA6c3RhdGljIGNvbnN0IHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlX2lkIGJuZ19yZV9pZF90YWJsZVtdID0ge1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDgxLVx0eyAubmFtZSA9IEJOR19SRV9BREVWX05BTUUgXCYjMzQ7LnJkbWFcJiMzNDssIH0sXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDg0LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NDg1Ok1PRFVMRV9ERVZJQ0VfVEFCTEUoYXV4aWxpYXJ5LCBibmdfcmVfaWRfdGFibGUpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDg2LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NDg3OnN0YXRpYyBzdHJ1Y3QgYXV4aWxpYXJ5X2RyaXZlciBibmdfcmVfZHJpdmVyID0ge1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDg4LVx0Lm5hbWUgPSBcJiMzNDtyZG1hXCYjMzQ7LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NDg5Olx0LnByb2JlID0gYm5nX3JlX3Byb2JlLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NDkwOlx0LnJlbW92ZSA9IGJuZ19yZV9yZW1vdmUsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0OTE6XHQuaWRfdGFibGUgPSBibmdfcmVfaWRfdGFibGUsXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00OTItfTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ5My1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjQ5NDpzdGF0aWMgaW50IF9faW5pdCBibmdfcmVfbW9kX2luaXQodm9pZClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ5NS17XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDk4LVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NDk5Olx0Ym5nX3JlX3JlZ2lzdGVyX2RlYnVnZnMoKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTUwMC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjUwMTpcdHJjID0gYXV4aWxpYXJ5X2RyaXZlcl9yZWdpc3RlcihcdTAwMjZibmdfcmVfZHJpdmVyKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTUwMi1cdGlmIChyYykge1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTUwOC11bnJlZ19kZWJ1Z2ZzOlxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NTA5Olx0Ym5nX3JlX3VucmVnaXN0ZXJfZGVidWdmcygpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNTEwLVx0cmV0dXJuIHJjO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTUxMi1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjUxMzpzdGF0aWMgdm9pZCBfX2V4aXQgYm5nX3JlX21vZF9leGl0KHZvaWQpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy01MTQte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NTE1Olx0YXV4aWxpYXJ5X2RyaXZlcl91bnJlZ2lzdGVyKFx1MDAyNmJuZ19yZV9kcml2ZXIpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NTE2Olx0Ym5nX3JlX3VucmVnaXN0ZXJfZGVidWdmcygpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNTE3LX1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTUxOC1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjUxOTptb2R1bGVfaW5pdChibmdfcmVfbW9kX2luaXQpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NTIwOm1vZHVsZV9leGl0KGJuZ19yZV9tb2RfZXhpdCk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy01LSNpbmNsdWRlIFwmIzM0O2JuZ19yb2NlX2hzaS5oXCYjMzQ7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjY6I2luY2x1ZGUgXCYjMzQ7Ym5nX3Jlcy5oXCYjMzQ7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTctI2luY2x1ZGUgXCYjMzQ7Ym5nX2Z3LmhcJiMzNDtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTEwLS8qKlxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzoxMTogKiBibmdfcmVfbWFwX3JjICAtICBtYXAgcmV0dXJuIHR5cGUgYmFzZWQgb24gb3Bjb2RlXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTEyLSAqIEBvcGNvZGU6ICByb2NlIHNsb3cgcGF0aCBvcGNvZGVcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTMyLSAqL1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzozMzpzdGF0aWMgaW50IGJuZ19yZV9tYXBfcmModTggb3Bjb2RlKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zNC17XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy01Mi1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6NTM6dm9pZCBibmdfcmVfZnJlZV9yY2Z3X2NoYW5uZWwoc3RydWN0IGJuZ19yZV9yY2Z3ICpyY2Z3KVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy01NC17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTU1LVx0a2ZyZWUocmNmdy1cdTAwM2VjcnNxZV90YmwpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzo1NjpcdGJuZ19yZV9mcmVlX2h3cShyY2Z3LVx1MDAzZXJlcywgXHUwMDI2cmNmdy1cdTAwM2VjbWRxLmh3cSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjU3Olx0Ym5nX3JlX2ZyZWVfaHdxKHJjZnctXHUwMDNlcmVzLCBcdTAwMjZyY2Z3LVx1MDAzZWNyZXEuaHdxKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtNTgtXHRyY2Z3LVx1MDAzZXBkZXYgPSBOVUxMO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtNjAtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjYxOmludCBibmdfcmVfYWxsb2NfZndfY2hhbm5lbChzdHJ1Y3QgYm5nX3JlX3JlcyAqcmVzLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzo2MjpcdFx0XHQgICAgc3RydWN0IGJuZ19yZV9yY2Z3ICpyY2Z3KVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy02My17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjY0Olx0c3RydWN0IGJuZ19yZV9od3FfYXR0ciBod3FfYXR0ciA9IHt9O1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzo2NTpcdHN0cnVjdCBibmdfcmVfc2dfaW5mbyBzZ2luZm8gPSB7fTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6NjY6XHRzdHJ1Y3QgYm5nX3JlX2NtZHFfY3R4ICpjbWRxO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzo2NzpcdHN0cnVjdCBibmdfcmVfY3JlcV9jdHggKmNyZXE7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTY4LVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtODItXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjgzOlx0aWYgKGJuZ19yZV9hbGxvY19pbml0X2h3cShcdTAwMjZjcmVxLVx1MDAzZWh3cSwgXHUwMDI2aHdxX2F0dHIpKSB7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTg0LVx0XHRkZXZfZXJyKFx1MDAyNnJjZnctXHUwMDNlcGRldi1cdTAwM2VkZXYsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy05NC1cdGh3cV9hdHRyLnR5cGUgPSBCTkdfSFdRX1RZUEVfQ1RYO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzo5NTpcdGlmIChibmdfcmVfYWxsb2NfaW5pdF9od3EoXHUwMDI2Y21kcS1cdTAwM2Vod3EsIFx1MDAyNmh3cV9hdHRyKSkge1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy05Ni1cdFx0ZGV2X2VycihcdTAwMjZyY2Z3LVx1MDAzZXBkZXYtXHUwMDNlZGV2LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMTEwLWZhaWw6XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjExMTpcdGJuZ19yZV9mcmVlX3JjZndfY2hhbm5lbChyY2Z3KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMTEyLVx0cmV0dXJuIC1FTk9NRU07XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0xMTQtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjExNTpzdGF0aWMgaW50IGJuZ19yZV9wcm9jZXNzX3FwX2V2ZW50KHN0cnVjdCBibmdfcmVfcmNmdyAqcmNmdyxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMTE2LVx0XHRcdFx0ICAgc3RydWN0IGNyZXFfcXBfZXZlbnQgKnFwX2V2ZW50LFxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMTE4LXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MTE5Olx0c3RydWN0IGJuZ19yZV9od3EgKmh3cSA9IFx1MDAyNnJjZnctXHUwMDNlY21kcS5od3E7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjEyMDpcdHN0cnVjdCBibmdfcmVfY3JzcWUgKmNyc3FlO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0xMjEtXHR1MzIgcmVxX3NpemU7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0xODctLyogZnVuY3Rpb24gZXZlbnRzICovXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjE4ODpzdGF0aWMgaW50IGJuZ19yZV9wcm9jZXNzX2Z1bmNfZXZlbnQoc3RydWN0IGJuZ19yZV9yY2Z3ICpyY2Z3LFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0xODktXHRcdFx0XHQgICAgIHN0cnVjdCBjcmVxX2Z1bmNfZXZlbnQgKmZ1bmNfZXZlbnQpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yMTMtLyogQ1JFUSBDb21wbGV0aW9uIGhhbmRsZXJzICovXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjIxNDpzdGF0aWMgdm9pZCBibmdfcmVfc2VydmljZV9jcmVxKHN0cnVjdCB0YXNrbGV0X3N0cnVjdCAqdClcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMjE1LXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MjE2Olx0c3RydWN0IGJuZ19yZV9yY2Z3ICpyY2Z3ID0gZnJvbV90YXNrbGV0KHJjZncsIHQsIGNyZXEuY3JlcV90YXNrbGV0KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MjE3Olx0c3RydWN0IGJuZ19yZV9jcmVxX2N0eCAqY3JlcSA9IFx1MDAyNnJjZnctXHUwMDNlY3JlcTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMjE4LVx0dTMyIHR5cGUsIGJ1ZGdldCA9IEJOR19GV19DUkVRX0VOVFJZX1BPTExfQlVER0VUO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzoyMTk6XHRzdHJ1Y3QgYm5nX3JlX2h3cSAqaHdxID0gXHUwMDI2Y3JlcS1cdTAwM2Vod3E7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTIyMC1cdHN0cnVjdCBjcmVxX2Jhc2UgKmNyZXFlO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMjI2LVx0d2hpbGUgKGJ1ZGdldCBcdTAwM2UgMCkge1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzoyMjc6XHRcdGNyZXFlID0gYm5nX3JlX2dldF9xZShod3EsIGh3cS1cdTAwM2Vjb25zLCBOVUxMKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMjI4LVx0XHRpZiAoIUJOR19GV19DUkVRX0NNUF9WQUxJRChjcmVxZSwgY3JlcS1cdTAwM2VjcmVxX2RiLmRiaW5mby5mbGFncykpXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yMzctXHRcdGNhc2UgQ1JFUV9CQVNFX1RZUEVfUVBfRVZFTlQ6XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjIzODpcdFx0XHRibmdfcmVfcHJvY2Vzc19xcF9ldmVudFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yMzktXHRcdFx0XHQocmNmdywgKHN0cnVjdCBjcmVxX3FwX2V2ZW50ICopY3JlcWUsXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yNDMtXHRcdGNhc2UgQ1JFUV9CQVNFX1RZUEVfRlVOQ19FVkVOVDpcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MjQ0Olx0XHRcdGlmICghYm5nX3JlX3Byb2Nlc3NfZnVuY19ldmVudFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yNDUtXHRcdFx0ICAgIChyY2Z3LCAoc3RydWN0IGNyZXFfZnVuY19ldmVudCAqKWNyZXFlKSlcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTI1OS1cdFx0aHdfcG9sbGVkJiM0MzsmIzQzOztcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MjYwOlx0XHRibmdfcmVfaHdxX2luY3JfY29ucyhod3EtXHUwMDNlbWF4X2VsZW1lbnRzLCBcdTAwMjZod3EtXHUwMDNlY29ucyxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMjYxLVx0XHRcdFx0ICAgICAxLCBcdTAwMjZjcmVxLVx1MDAzZWNyZXFfZGIuZGJpbmZvLmZsYWdzKTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTI2NC1cdGlmIChod19wb2xsZWQpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjI2NTpcdFx0Ym5nX3JlX3JpbmdfbnFfZGIoXHUwMDI2Y3JlcS1cdTAwM2VjcmVxX2RiLmRiaW5mbyxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMjY2LVx0XHRcdFx0ICByY2Z3LVx1MDAzZXJlcy1cdTAwM2VjY3R4LCB0cnVlKTtcbi0tXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTI3MS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MjcyOnN0YXRpYyBpbnQgX19zZW5kX21lc3NhZ2VfYmFzaWNfc2FuaXR5KHN0cnVjdCBibmdfcmVfcmNmdyAqcmNmdyxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MjczOlx0XHRcdFx0ICAgICAgIHN0cnVjdCBibmdfcmVfY21kcW1zZyAqbXNnLFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yNzQtXHRcdFx0XHQgICAgICAgdTggb3Bjb2RlKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yNzUte1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzoyNzY6XHRzdHJ1Y3QgYm5nX3JlX2NtZHFfY3R4ICpjbWRxO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yNzctXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zMDEtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjMwMjpzdGF0aWMgaW50IF9fc2VuZF9tZXNzYWdlKHN0cnVjdCBibmdfcmVfcmNmdyAqcmNmdyxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MzAzOlx0XHRcdCAgc3RydWN0IGJuZ19yZV9jbWRxbXNnICptc2csIHU4IG9wY29kZSlcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMzA0LXtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMzA1LVx0dTMyIGJzaXplLCBmcmVlX3Nsb3RzLCByZXF1aXJlZF9zbG90cztcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MzA2Olx0c3RydWN0IGJuZ19yZV9jbWRxX2N0eCAqY21kcTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MzA3Olx0c3RydWN0IGJuZ19yZV9jcnNxZSAqY3JzcWU7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTMwOC1cdHN0cnVjdCBibmdfZndfY21kcWUgKmNtZHFlO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzozMDk6XHRzdHJ1Y3QgYm5nX3JlX2h3cSAqaHdxO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zMTAtXHR1MzIgc3dfcHJvZCwgY21kcV9wcm9kO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMzIyLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNmh3cS1cdTAwM2Vsb2NrKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MzIzOlx0cmVxdWlyZWRfc2xvdHMgPSBibmdfcmVfZ2V0X2NtZF9zbG90cyhtc2ctXHUwMDNlcmVxKTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMzI0LVx0ZnJlZV9zbG90cyA9IEhXUV9GUkVFX1NMT1RTKGh3cSk7XG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zMzYtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjMzNzpcdGJzaXplID0gYm5nX3JlX3NldF9jbWRfc2xvdHMobXNnLVx1MDAzZXJlcSk7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTMzOC1cdGNyc3FlLVx1MDAzZWZyZWVfc2xvdHMgPSBmcmVlX3Nsb3RzO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMzQ1LVx0aWYgKF9fZ2V0X2NtZHFfYmFzZV9yZXNwX3NpemUobXNnLVx1MDAzZXJlcSwgbXNnLVx1MDAzZXJlcV9zeikgXHUwMDI2XHUwMDI2IG1zZy1cdTAwM2VzYikge1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzozNDY6XHRcdHN0cnVjdCBibmdfcmVfcmNmd19zYnVmICpzYnVmID0gbXNnLVx1MDAzZXNiO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zNDctXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zNTktXHRcdHN3X3Byb2QgPSBIV1FfQ01QKGh3cS1cdTAwM2Vwcm9kLCBod3EpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzozNjA6XHRcdGNtZHFlID0gYm5nX3JlX2dldF9xZShod3EsIHN3X3Byb2QsIE5VTEwpO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zNjEtXHRcdC8qIENvcHkgYSBzZWdtZW50IG9mIHRoZSByZXEgY21kIHRvIHRoZSBjbWRxICovXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zOTktICovXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjQwMDpzdGF0aWMgaW50IF9fd2FpdF9mb3JfcmVzcChzdHJ1Y3QgYm5nX3JlX3JjZncgKnJjZncsIHUxNiBjb29raWUpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTQwMS17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjQwMjpcdHN0cnVjdCBibmdfcmVfY21kcV9jdHggKmNtZHE7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjQwMzpcdHN0cnVjdCBibmdfcmVfY3JzcWUgKmNyc3FlO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy00MDQtXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy00MTUtXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjQxNjpcdFx0Ym5nX3JlX3NlcnZpY2VfY3JlcShcdTAwMjZyY2Z3LVx1MDAzZWNyZXEuY3JlcV90YXNrbGV0KTtcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtNDE3LVxuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtNDIzLS8qKlxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzo0MjQ6ICogYm5nX3JlX3JjZndfc2VuZF9tZXNzYWdlICAgLVx0aW50ZXJmYWNlIHRvIHNlbmRcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtNDI1LSAqIGFuZCBjb21wbGV0ZSByY2Z3IGNvbW1hbmQuXG4tLVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy00MzUtICovXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjQzNjppbnQgYm5nX3JlX3JjZndfc2VuZF9tZXNzYWdlKHN0cnVjdCBibmdfcmVfcmNmdyAqcmNmdyxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6NDM3Olx0XHRcdCAgICAgc3RydWN0IGJuZ19yZV9jbWRxbXNnICptc2cpXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTQzOC17XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTQzOS1cdHN0cnVjdCBjcmVxX3FwX2V2ZW50ICpldm50ID0gKHN0cnVjdCBjcmVxX3FwX2V2ZW50ICopbXNnLVx1MDAzZXJlc3A7XG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjQ0MDpcdHN0cnVjdCBibmdfcmVfY3JzcWUgKmNyc3FlO1xuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy00NDEtXHR1MTYgY29va2llO1xuLS1cbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtNDQ4LVx0aWYgKHJjKVxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzo0NDk6XHRcdHJldHVybiByYyA9PSAtRU5YSU8gPyBibmdfcmVfbWFwX3JjKG9wY29kZSkgOiByYztcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE1OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NTk2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjc2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiBQb3RlbnRpYWwgRnV6emluZyBSZWFjaGFiaWxpdHkgZm9yIEJyb2FkY29tIEJOR0UgRHJpdmVyIENoYW5nZXMqKgoKT2theSwgSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBtb2RpZmllcyB0aGUgQnJvYWRjb20gYEJOR0VgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBgQ09ORklHX0lORklOSUJBTkRfQk5HX1JFYCBjb25maWd1cmF0aW9uLiBUaGUgY2hhbmdlcyBpbnZvbHZlIG1vZGlmeWluZyBob3cgcmluZyBJRHMgYXJlIGhhbmRsZWQgKGZyb20gYHUxNmAgdG8gYHUzMmApIGluIHJpbmcgYWxsb2NhdGlvbiBhbmQgZnJlZWluZyBmdW5jdGlvbnMsIGJvdGggd2l0aGluIHRoZSBgYm5nZV9kZXYuY2AgYW5kIGBibmdlX2h3cm1fbGliLmNgIGZpbGVzLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGNvZGUgcGF0aHMgYXJlIHJlYWNoYWJsZSB3aXRoaW4gYSBmdXp6aW5nIGNvbnRleHQgbGlrZSBRRU1VLgoKSW5pdGlhbGx5LCBJIGlkZW50aWZpZWQgYENPTkZJR19JTkZJTklCQU5EX0JOR19SRWAgYXMgdGhlIHJlbGV2YW50IGNvbmZpZyBhbmQgdGhlIHBhdGNoIGNoYW5nZXMuIE15IGZpcnN0IGluc3RpbmN0IHdhcyB0byBjaGVjayB3aGV0aGVyIHRoaXMgaXMgYSByZWFsIGNvbmZpZy4KClRoZSBjcnVjaWFsIHBvaW50IGhlcmUgaXMgd2hldGhlciB0aGUgZHJpdmVyLCBgYm5nZWAsIHdoaWNoIHNlZW1zIHRvIGJlIGEgcmVhbCBQQ0kgZHJpdmVyIChjb25maXJtZWQgYnkgdGhlIGBibmdlX3BjaV90YmxgIGVudHJpZXMgd2l0aCBhIHJlYWwgUENJIGRldmljZSBJRCkgY2FuIGJlIGZ1enplZC4gSXQmIzM5O3Mgbm90IGEgc3RhbmRhcmQgcHJhY3RpY2UgdG8gZnV6eiBQQ0kgZHJpdmVycyB3aXRob3V0IHNvbWUgZm9ybSBvZiBkZXZpY2UgZW11bGF0aW9uLiBUaGUgcXVlc3Rpb24gaXMgd2hldGhlciBzeXprYWxsZXImIzM5O3MgY2FwYWJpbGl0aWVzIGFyZSBzdWZmaWNpZW50LCBnaXZlbiB0aGUgcHJvbXB0LiBTeXprYWxsZXIgaGFzIFBDSSBkZXZpY2UgZW11bGF0aW9uLCBzbyBpdCBzZWVtcyBsaWtlIEkgKmNhbiogcmVhY2ggdGhlc2UgY29kZSBwYXRocy4KCkkgYWxzbyBjb25zaWRlcmVkIHdoZXRoZXIgaXQgaXMgYSBzeXprYWxsZXImIzM5O3MgbW9jayBkcml2ZXIsIGJ1dCBjb25maXJtZWQgd2l0aCB0aGUgY29tbWl0IGF1dGhvciB0aGF0IHRoaXMgaXMgYW4gZXhpc3RpbmcgZHJpdmVyIGluIHRoZSBrZXJuZWwgc291cmNlLgoKRm9jdXNpbmcgb24gdGhlIGNoYW5nZWQgZnVuY3Rpb25zLCBuYW1lbHkgYGJuZ19yZV9uZXRfcmluZ19mcmVlYCwgYGJuZ19yZV9uZXRfcmluZ19hbGxvY2AsIGBod3JtX3JpbmdfZnJlZV9zZW5kX21zZ2AsIGFuZCBgaHdybV9yaW5nX2FsbG9jX3NlbmRfbXNnYCwgYW5kIHNldmVyYWwgbW9yZSBmdW5jdGlvbnMgcmVsYXRlZCB0byByaW5nIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBpbiBgYm5nZV9uZXRkZXYuY2AsIEkgZGV0ZXJtaW5lZCB0aGF0IHRoZXNlIGFsbCByZWxhdGUgdG8gcmluZyBhbGxvY2F0aW9uIGFuZCByZWxlYXNlIGFuZCBIV1JNIG1lc3NhZ2luZyBpbiB0aGUgZHJpdmVyLgoKVGhlcmVmb3JlLCBzaW5jZSBzeXprYWxsZXIgKmRvZXMqIGhhdmUgUENJIGZ1enppbmcgc3VwcG9ydCB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIFBDSSBkZXZpY2VzLCB3aGljaCB3b3VsZCBpbnZvbHZlIGluamVjdGlvbiBvZiBQQ0kgY29uZmlnIHNwYWNlLCBNTUlPLCBhbmQgdGhlIGxpa2UsIGFuZCB0aGUgZmFjdCB0aGF0IGBibmdlYCBzZWVtcyB0byBiZSBhIHJlYWwgUENJIGRyaXZlciB0aGF0IGNhbiBwb3RlbnRpYWxseSBiZSByZWFjaGVkIHdpdGggc3l6a2FsbGVyLCBJIHdvdWxkIGNvbmNsdWRlIHRoYXQgdGhlIGNvZGUgcGF0aHMgYXJlIHJlYWNoYWJsZSBpbiBRRU1VIHdpdGggc3l6a2FsbGVyLiBUaGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgYEJOR0VgIGFuZCBgSU5GSU5JQkFORF9CTkdfUkVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE1OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTkdFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjUwPWNvbmZpZyBCTlhUX0hXTU9OXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjI1ODpjb25maWcgQk5HRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNTktXHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBUaG9yVWx0cmEgRXRoZXJuZXQgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNTowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjAxMwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHF1aWNrIGFzc2Vzc21lbnQgb2YgdGhpcyBjb25maWd1cmF0aW9uIHNjZW5hcmlvOgoKKipJbml0aWFsIENvbmZpZ3VyYXRpb24gQXNzZXNzbWVudCoqCgpBbHJpZ2h0LCBzbyBgQk5HRWAgaXMgZGVmaW5pdGVseSBhIHZhbGlkIGNvbmZpZ3VyYXRpb24gaXRlbSwgYW5kIGBJTkZJTklCQU5EX0JOR19SRWAgaXMgYWxzbyBwcmVzZW50LiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoIGF0IGZpcnN0IGdsYW5jZS4gVGhlIG5leHQgbG9naWNhbCBzdGVwLCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgaXMgdG8gZGV0ZXJtaW5lIGlmIGBCTkdFYCBoYXMgYW55IHNwZWNpZmljIGRlcGVuZGVuY2llcy4gS25vd2luZyB3aGF0IGBCTkdFYCByZWxpZXMgdXBvbiBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyByb2xlIGFuZCBwb3RlbnRpYWwgaW1wYWN0IHdpdGhpbiB0aGUgb3ZlcmFsbCBzeXN0ZW0uIFRpbWUgdG8gZGlnIGEgYml0IGRlZXBlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTU6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJOR0UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjUwPWNvbmZpZyBCTlhUX0hXTU9OXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjI1ODpjb25maWcgQk5HRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNTktXHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBUaG9yVWx0cmEgRXRoZXJuZXQgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTU6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIzMTIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIGBCTkdFYCBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doYXQmIzM5O3MgaG9va2VkIGludG8gYEJOR0VgPyYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMsIGl0cyB1cHN0cmVhbSBhbmQgZG93bnN0cmVhbSByZWxhdGlvbnNoaXBzLiBJJiMzOTttIG5vdCBqdXN0IGxvb2tpbmcgZm9yIGEgc2ltcGxlIGxpc3Q7IEkgd2FudCB0byBzZWUgdGhlICpuYXR1cmUqIG9mIHRob3NlIGRlcGVuZGVuY2llcy4gQXJlIHdlIHRhbGtpbmcgZGlyZWN0IGZ1bmN0aW9uIGNhbGxzLCBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzLCBtZXNzYWdlIHF1ZXVlcywgZXh0ZXJuYWwgQVBJcywgY29uZmlndXJhdGlvbiBmaWxlcywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSB0eXBlIG9mIGRlcGVuZGVuY3kgZGljdGF0ZXMgdGhlIGltcGFjdCBvZiBhbnkgY2hhbmdlIHRvIGBCTkdFYC4KCkkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgcGllY2VzIG9mIHRoZSBzeXN0ZW0gcmVseSBvbiBpdCBhbmQsIGNvbnZlcnNlbHksIHdoYXQgaXQgbmVlZHMgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBUaGlzIGlzIGNyaXRpY2FsIGZvciBpbXBhY3QgYW5hbHlzaXMuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgcG90ZW50aWFsIGJvdHRsZW5lY2tzLCBzaW5nbGUgcG9pbnRzIG9mIGZhaWx1cmUsIGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHJlZmFjdG9yaW5nIG9yLCBoZWF2ZW4gZm9yYmlkLCByZW1vdmluZyBgQk5HRWAuIEFyZSB3ZSBkZWFsaW5nIHdpdGggYSB0aWdodCwgcG90ZW50aWFsbHkgZnJhZ2lsZSBjb3VwbGluZywgb3Igc29tZXRoaW5nIG1vcmUgbG9vc2VseSBjb3VwbGVkIGFuZCByb2J1c3Q/CgpNeSBtZW50YWwgY2hlY2tsaXN0IGlzIHJ1bm5pbmc6IHNvdXJjZSBjb2RlLCBkb2N1bWVudGF0aW9uLCBhbnkgYXJjaGl0ZWN0dXJhbCBkaWFncmFtcy4uLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBteSB1c3VhbCB0b29scyB0byB0cmFjZSB0aGUgY2FsbHMsIGNoZWNrIGZvciBzaGFyZWQgcmVzb3VyY2VzLCBhbmQgbG9vayBmb3IgYW55IHVudXN1YWwgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBpbmRpY2F0ZSBhIGhpZGRlbiBvciBjb21wbGV4IGRlcGVuZGVuY3kuIFVuZGVyc3RhbmRpbmcgdGhlIGRlcGVuZGVuY2llcyBpcyB0aGUgZm91bmRhdGlvbiBmb3IgYW55IGZ1cnRoZXIgYW5hbHlzaXMgb3IgbW9kaWZpY2F0aW9uIG9mIHRoaXMgY29tcG9uZW50LiBUaW1lIHRvIHJvbGwgdXAgbXkgc2xlZXZlcyBhbmQgZ2V0IHRvIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE1OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCTkdFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTI1MD1jb25maWcgQk5YVF9IV01PTlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyNTg6Y29uZmlnIEJOR0VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjU5LVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gVGhvclVsdHJhIEV0aGVybmV0IGRldmljZSBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE1OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyNzUyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgaG9sZCBvbiBhIG1pbnV0ZS4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGluY29tcGxldGUuIEkganVtcGVkIHRvIGEgY29uY2x1c2lvbiB0b28gcXVpY2tseS4gVGhlIHBocmFzZSBgY29uZmlnIEJOR0VgIGlzIGEgY2xlYXIgaW5kaWNhdG9yIHRoYXQgSSYjMzk7bSBkZWFsaW5nIHdpdGggYSBjb25maWd1cmF0aW9uIHNldHRpbmcgcmVsYXRlZCB0byBhICYjMzQ7Qk5HRSYjMzQ7IGNvbXBvbmVudCBvciBtb2R1bGUuIEJ1dCB0aGF0JiMzOTtzIGp1c3QgdGhlIHN0YXJ0aW5nIHBvaW50LiBUbyB0cnVseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbiwgYW5kIHRvIGZvcm11bGF0ZSBhIHRydWx5IGFjY3VyYXRlIGFzc2Vzc21lbnQgb2YgdGhlIHNpZ25pZmljYW5jZSBvZiB0aGlzIGxpbmUgd2l0aGluIHRoZSBicm9hZGVyIGNvbnRleHQsIEkgYWJzb2x1dGVseSBuZWVkIHRvIGV4YW1pbmUgdGhlIHN1YnNlcXVlbnQgbGluZXMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSBvciByZWxldmFudCBjb2RlIGJsb2NrLiBUaGUgZGVwZW5kZW5jeSBvZiBgQk5HRWAgb24gd2hhdGV2ZXIgY29tZXMgYWZ0ZXIgaXQgaXMgcGFyYW1vdW50LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGBCTkdFYCBjb25maWd1cmF0aW9uIGFuZCBpdHMgYXNzb2NpYXRlZCBwYXJhbWV0ZXJzLCBkZXBlbmRlbmNpZXMsIG9yIGNvbmRpdGlvbnMuIElzIGl0IGEgZGVmYXVsdCBzZXR0aW5nPyBBbiBvdmVycmlkZT8gQW4gZW5hYmxpbmcgZmxhZz8gV2l0aG91dCBzZWVpbmcgd2hhdCBmb2xsb3dzLCBJJiMzOTttIG1pc3NpbmcgY3JpdGljYWwgY29udGV4dCBhbmQgcG90ZW50aWFsbHkgb3Zlcmxvb2tpbmcgc3VidGxlLCB5ZXQgdml0YWwsIGRlc2lnbiBkZWNpc2lvbnMgb3IgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gY29uZmxpY3RzLiBUaGUgYmVoYXZpb3Igb2Ygd2hhdGV2ZXIgJiMzNDtCTkdFJiMzNDsgaXMgd291bGQgYmUgYWZmZWN0ZWQgYnkgdGhlIG5leHQgbGluZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTU6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJOR0UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjUwPWNvbmZpZyBCTlhUX0hXTU9OXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjI1ODpjb25maWcgQk5HRVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNTktXHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBUaG9yVWx0cmEgRXRoZXJuZXQgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTU6MDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMxMzEKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyB5b3VyIHN1bW1hcnk6CgoqKkNvbnNpZGVyaW5nIEZpbGUgQW5hbHlzaXMgT3B0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBzaXR1YXRpb24gYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtEbyBJIHJlYWxseSBuZWVkIHRoZSBmdWxsIGBncmVwYCBhbmFseXNpcyBoZXJlLCBvciBjYW4gSSBnZXQgYXdheSB3aXRoIGEgc2ltcGxlciBtZXRob2Q/JiMzNDsgVGhlIGAtQSAxMGAgb3B0aW9uIGZvciBgZ3JlcGAgaXMgdGVtcHRpbmcsIGFzIGl0IHdvdWxkIHByb3ZpZGUgc29tZSBjb250ZXh0IGFyb3VuZCBlYWNoIG1hdGNoLCBidXQgaXQmIzM5O3MgcHJvYmFibHkgb3ZlcmtpbGwgZm9yIHdoYXQgSSYjMzk7bSB0cnlpbmcgdG8gYWNoaWV2ZS4gSSYjMzk7bSBhbHJlYWR5IHByZXR0eSBmYW1pbGlhciB3aXRoIHRoZSBkYXRhIGFuZCwgaG9uZXN0bHksIGp1c3QgcmVhZGluZyB0aGUgZmlsZSBpdHNlbGYgbWlnaHQgYmUgdGhlIG1vc3QgZWZmaWNpZW50IGFwcHJvYWNoLCBlc3BlY2lhbGx5IGlmIEkgY2FuIHF1aWNrbHkgaWRlbnRpZnkgdGhlIGtleSBzZWN0aW9ucyBJJiMzOTttIGludGVyZXN0ZWQgaW4gd2l0aG91dCBhIGxvdCBvZiBleHRyYSBvdXRwdXQgY2x1dHRlcmluZyB0aGluZ3MgdXAuIEkmIzM5O2xsIG5lZWQgdG8gd2VpZ2ggc3BlZWQgYWdhaW5zdCBjb21wbGV0ZW5lc3M7IGdpdmVuIG15IGV4cGVydGlzZSwgYSBkaXJlY3QgcmVhZCBpcyBwcm9iYWJseSB0aGUgc21hcnQgbW92ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTU6MDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyNTA6XHRjb25maWcgQk5YVF9IV01PTlxuIDI1MTpcdFx0Ym9vbCBcJiMzNDtCcm9hZGNvbSBOZXRYdHJlbWUtQy9FIEhXTU9OIHN1cHBvcnRcJiMzNDtcbiAyNTI6XHRcdGRlZmF1bHQgeVxuIDI1MzpcdFx0ZGVwZW5kcyBvbiBCTlhUIFx1MDAyNlx1MDAyNiBIV01PTiBcdTAwMjZcdTAwMjYgIShCTlhUPXkgXHUwMDI2XHUwMDI2IEhXTU9OPW0pXG4gMjU0Olx0XHRoZWxwXG4gMjU1Olx0XHQgIFNheSBZIGlmIHlvdSB3YW50IHRvIGV4cG9zZSB0aGUgdGhlcm1hbCBzZW5zb3IgZGF0YSBvbiBOZXRYdHJlbWUtQy9FXG4gMjU2Olx0XHQgIGRldmljZXMsIHZpYSB0aGUgaHdtb24gc3lzZnMgaW50ZXJmYWNlLlxuIDI1NzpcdFxuIDI1ODpcdGNvbmZpZyBCTkdFXG4gMjU5Olx0XHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBUaG9yVWx0cmEgRXRoZXJuZXQgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbiAyNjA6XHRcdGRlcGVuZHMgb24gUENJXG4gMjYxOlx0XHRzZWxlY3QgTkVUX0RFVkxJTktcbiAyNjI6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiAyNjM6XHRcdHNlbGVjdCBBVVhJTElBUllfQlVTXG4gMjY0Olx0XHRoZWxwXG4gMjY1Olx0XHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEJyb2FkY29tIFRob3JVbHRyYSA1MC8xMDAvMjAwLzQwMC84MDAgZ2lnYWJpdFxuIDI2NjpcdFx0ICBFdGhlcm5ldCBjYXJkcy4gVGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBibmdfZW4uIFRvIGNvbXBpbGUgdGhpc1xuIDI2NzpcdFx0ICBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4gMjY4Olx0XG4gMjY5Olx0Y29uZmlnIEJDTUFTUFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNTowNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzY4MQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgZGlzdGlsbGVkOgoKKipEZXBlbmRlbmN5IERlZXAgRGl2ZSoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIG1vZHVsZSYjMzk7cyBkZXBlbmRlbmNpZXMuIFRoZSBjcnVjaWFsIHBvaW50IHNlZW1zIHRvIGJlIHRoYXQgYEJOR0VgIHJlbGllcyBvbiBgUENJYC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgbGlrZWx5IGEgaGFyZHdhcmUgYWJzdHJhY3Rpb24uIEFuZCBub3csIEkgc2VlIHRoYXQgYElORklOSUJBTkRfQk5HX1JFYCBpcyBidWlsdCBvbiB0b3Agb2YgYEJOR0VgLiBHaXZlbiB0aGUgSW5maW5pYmFuZCBjb250ZXh0LCB0aGF0JiMzOTtzIG5vdCBzdXJwcmlzaW5nLiBUbyB1bmRlcnN0YW5kIHRoZSB3aG9sZSBwaWN0dXJlLCBJIHNob3VsZCBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGUgYm5nX3JlIGRyaXZlciDigJMgc3BlY2lmaWNhbGx5LCBsZXQmIzM5O3MgbG9vayBhdCBgZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9LY29uZmlnYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYW5kIGRlcGVuZGVuY2llcyB3aWxsIGJlIGNsZWFybHkgc3BlbGxlZCBvdXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE1OjA0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIElORklOSUJBTkRfQk5HX1JFXG4gICAzOlx0XHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBOZXh0IGdlbmVyYXRpb24gUm9DRSBIQ0Egc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiA2NEJJVFxuICAgNTpcdFx0ZGVwZW5kcyBvbiBJTkVUIFx1MDAyNlx1MDAyNiBEQ0IgXHUwMDI2XHUwMDI2IEJOR0VcbiAgIDY6XHRcdGhlbHBcbiAgIDc6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgQnJvYWRjb20gTmV4dCBnZW5lcmF0aW9uXG4gICA4Olx0XHQgIDUwLzEwMC8yMDAvNDAwLzgwMCBnaWdhYml0IFJvQ0UgSENBcy4gVGhlIG1vZHVsZVxuICAgOTpcdFx0ICB3aWxsIGJlIGNhbGxlZCBibmdfcmUuIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXJcbiAgMTA6XHRcdCAgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE1OjA0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MTA2CgkJCQkJCQlvdXRwdXQ6IDI4MgoJCQkJCQkJdGhvdWdodHM6IDEwMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJbmZpbmliYW5kIEJORyBSRSBEcml2ZXIgZm9yIEZ1enppbmcqKgoKT2theSwgc28gYElORklOSUJBTkRfQk5HX1JFYCBoYXMgYSBmZXcgZGVwZW5kZW5jaWVzOiBgNjRCSVRgLCBgSU5FVGAsIGBEQ0JgLCBhbmQgYEJOR0VgLiAgSSBuZWVkIHRvIG1ha2Ugc3VyZSBgQk5HRWAgYW5kIGBJTkZJTklCQU5EX0JOR19SRWAgYXJlIGVuYWJsZWQuCgpOb3csIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgY3JpdGljYWwgZnVuY3Rpb25zLiAgTGV0JiMzOTtzIHNlZTogSSYjMzk7dmUgZ290IGBibmdfcmVfbmV0X3JpbmdfZnJlZWAsIGBibmdfcmVfbmV0X3JpbmdfYWxsb2NgLCBgaHdybV9yaW5nX2ZyZWVfc2VuZF9tc2dgLCBgaHdybV9yaW5nX2FsbG9jX3NlbmRfbXNnYCwgYGJuZ2VfaHdybV9yeF9hZ2dfcmluZ19hbGxvY2AsIGBibmdlX2h3cm1fcnhfcmluZ19hbGxvY2AsIGBibmdlX2h3cm1fcmluZ19hbGxvY2AsIGBibmdlX2h3cm1fcnhfcmluZ19mcmVlYCwgYGJuZ2VfaHdybV9yeF9hZ2dfcmluZ19mcmVlYCwgYGJuZ2VfaHdybV90eF9yaW5nX2ZyZWVgLCBgYm5nZV9od3JtX2NwX3JpbmdfZnJlZWAsIGFuZCBgYm5nZV9od3JtX3JpbmdfZnJlZWAuIFRob3NlIGFyZSB0aGUgY29yZSBmdW5jdGlvbnMgdG8gZm9jdXMgb24uCgpJIHNob3VsZCBhbHNvIG5vdGUgdGhlIG90aGVyIGZ1bmN0aW9ucyBJIHNwb3R0ZWQ6IGBibmdlX2NwX3JpbmdfZm9yX3J4YCBhbmQgYGJuZ2VfY3BfcmluZ19mb3JfdHhgLCB3aGljaCBhcmUganVzdCBzaW1wbGUgZ2V0dGVycy4gVGhlbiB0aGVyZSYjMzk7cyB0aGUgaW5pdGlhbGl6YXRpb24gcm91dGluZXM6IGBibmdlX2luaXRfbnFfdHJlZWAsIGBibmdlX2luaXRfb25lX3J4X3JpbmdfcnhiZGAsIGBibmdlX2luaXRfb25lX2FnZ19yaW5nX3J4YmRgLCBgYm5nZV9pbml0X3R4X3JpbmdzYCwgYW5kIGBibmdlX2ZpbGxfaHdfcnNzX3RibGAuICBGaW5hbGx5LCB0aGVyZSYjMzk7cyBgYm5nZV9kaXNhYmxlX2ludGAsIHdoaWNoIGlzIHRlYXJkb3duLiBTbywgSSBkb24mIzM5O3QgbmVlZCB0byBmb2N1cyBvbiB0aG9zZSwgaXQgaXMganVzdCB0aG9zZSBjb3JlIGZ1bmN0aW9ucy4KCkFscmlnaHQsIHNvIHRoZSBrZXkgc3ltYm9scyBhcmUgdGhvc2UgYWxsb2NhdGlvbiBhbmQgZnJlZSBmdW5jdGlvbnMuIE5vdywgbGV0JiMzOTtzIHNlZSB3aGVyZSB0aGV5JiMzOTtyZSBkZWZpbmVkLiBXYWl0LiBgYm5nZV9od3JtX3JpbmdfZnJlZWAgaXMgc3RhdGljIHdpdGhpbiBgYm5nZV9uZXRkZXYuY2AuIEkgbmVlZCB0byBjaGVjayBpZiB0aGVzZSBzeW1ib2xzIGFyZSBzdGF0aWMgb3IgZXhwb3J0ZWQgdG8gc2VlIGlmIHRoZXkgY2FuIGJlIGZ1enplZC4gYGJuZ19yZV9uZXRfcmluZ19mcmVlYCBhbmQgYGJuZ19yZV9uZXRfcmluZ19hbGxvY2AgYXJlIHN0YXRpYyBpbiBgYm5nX2Rldi5jYC4gIGBod3JtX3JpbmdfZnJlZV9zZW5kX21zZ2AgYW5kIGBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2dgIGFyZSBnbG9iYWwgaW4gYGJuZ2VfaHdybV9saWIuY2AuICBgYm5nZV9od3JtX3J4X2FnZ19yaW5nX2FsbG9jYCwgYGJuZ2VfaHdybV9yeF9yaW5nX2FsbG9jYCwgYGJuZ2VfaHdybV9yaW5nX2FsbG9jYCBhcmUgc3RhdGljIGluIGBibmdlX25ldGRldi5jYC4gQW5kIGBibmdlX2h3cm1fcnhfcmluZ19mcmVlYCwgYGJuZ2VfaHdybV9yeF9hZ2dfcmluZ19mcmVlYCwgYGJuZ2VfaHdybV90eF9yaW5nX2ZyZWVgLCBgYm5nZV9od3JtX2NwX3JpbmdfZnJlZWAsIGBibmdlX2h3cm1fcmluZ19mcmVlYCBhcmUgc3RhdGljIHdpdGhpbiBgYm5nZV9uZXRkZXYuY2AuCgpOb3csIHRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBhIHdvcnRod2hpbGUgdGFyZ2V0IGZvciBmdXp6aW5nPyBBYnNvbHV0ZWx5LiAgVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBhIGRyaXZlciwgYW5kIGRyaXZlcnMgYXJlIHByaW1lIHRhcmdldHMuICBTaW5jZSB0aGUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdXNpbmcgc3l6a2FsbGVyJiMzOTtzIFBDSSBlbXVsYXRpb24uIEkgcmVtZW1iZXIgc3l6a2FsbGVyICpkb2VzKiBoYXZlIFBDSSBlbXVsYXRpb24uICBUaGUgcHJvbXB0IG1lbnRpb25zIHJlYWNoaW5nIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGJ1dCBzeXprYWxsZXImIzM5O3MgUENJIGVtdWxhdGlvbiBzaG91bGQgYnlwYXNzIHRoYXQgY29uc3RyYWludC4KCkxldCYjMzk7cyBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHM6IGBCTkdFYCBhbmQgYElORklOSUJBTkRfQk5HX1JFYCBhcmUgZGVmaW5pdGUsIGFuZCBJIHNob3VsZCBhbHNvIGFkZCBgRENCYCB0byB0aGUgbGlzdCBiZWNhdXNlIGl0JiMzOTtzIGEgZGVwZW5kZW5jeSBvZiBgSU5GSU5JQkFORF9CTkdfUkVgLgoKRmluYWxseSwgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIHBhdGNoIGl0c2VsZiBhZ2Fpbi4gVGhlIHBhdGNoIGNoYW5nZXMgdGhlIGBmd19yaW5nX2lkYCBmcm9tIGEgYHUxNmAgdG8gYSBgdTMyYC4gVGhpcyBpcyBhICpmdW5jdGlvbmFsKiBjaGFuZ2UgYmVjYXVzZSBpdCBhbHRlcnMgdGhlIHJpbmcgSUQgc2l6ZSBhbmQgaG93IGl0JiMzOTtzIHBhc3NlZCB0byB0aGUgZmlybXdhcmUuIFRoYXQmIzM5O3MgZ29vZCwgdGhhdCYjMzk7cyB3aGF0IEkgd2FudC4KCk9rYXksIEkmIzM5O20gcmVhZHkgdG8gc2V0IHRoZSByZXN1bHRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxNTowNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Qk5HRSYjMzQ7LAogICAgJiMzNDtJTkZJTklCQU5EX0JOR19SRSYjMzQ7LAogICAgJiMzNDtEQ0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtibmdfcmVfbmV0X3JpbmdfZnJlZSYjMzQ7LAogICAgJiMzNDtibmdfcmVfbmV0X3JpbmdfYWxsb2MmIzM0OywKICAgICYjMzQ7aHdybV9yaW5nX2ZyZWVfc2VuZF9tc2cmIzM0OywKICAgICYjMzQ7aHdybV9yaW5nX2FsbG9jX3NlbmRfbXNnJiMzNDssCiAgICAmIzM0O2JuZ2VfaHdybV9yeF9hZ2dfcmluZ19hbGxvYyYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm1fcnhfcmluZ19hbGxvYyYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm1fcmluZ19hbGxvYyYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm1fcnhfcmluZ19mcmVlJiMzNDssCiAgICAmIzM0O2JuZ2VfaHdybV9yeF9hZ2dfcmluZ19mcmVlJiMzNDssCiAgICAmIzM0O2JuZ2VfaHdybV90eF9yaW5nX2ZyZWUmIzM0OywKICAgICYjMzQ7Ym5nZV9od3JtX2NwX3JpbmdfZnJlZSYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm1fcmluZ19mcmVlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCcm9hZGNvbSBCTkdFIGFuZCBCTkdfUkUgZHJpdmVycyB0byBzdXBwb3J0IDMyLWJpdCBmaXJtd2FyZSByaW5nIElEcyBpbnN0ZWFkIG9mIDE2LWJpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgZHJpdmVyJiMzOTtzIGludGVyYWN0aW9uIHdpdGggdGhlIGhhcmR3YXJlL2Zpcm13YXJlIGR1cmluZyByaW5nIGFsbG9jYXRpb24gYW5kIGZyZWVpbmcuIFRoZSBkcml2ZXIgY2FuIGJlIHRlc3RlZCB2aWEgUENJIGVtdWxhdGlvbiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JOR0UmIzM0OywKICAgICYjMzQ7SU5GSU5JQkFORF9CTkdfUkUmIzM0OywKICAgICYjMzQ7RENCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Ym5nX3JlX25ldF9yaW5nX2ZyZWUmIzM0OywKICAgICYjMzQ7Ym5nX3JlX25ldF9yaW5nX2FsbG9jJiMzNDssCiAgICAmIzM0O2h3cm1fcmluZ19mcmVlX3NlbmRfbXNnJiMzNDssCiAgICAmIzM0O2h3cm1fcmluZ19hbGxvY19zZW5kX21zZyYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm1fcnhfYWdnX3JpbmdfYWxsb2MmIzM0OywKICAgICYjMzQ7Ym5nZV9od3JtX3J4X3JpbmdfYWxsb2MmIzM0OywKICAgICYjMzQ7Ym5nZV9od3JtX3JpbmdfYWxsb2MmIzM0OywKICAgICYjMzQ7Ym5nZV9od3JtX3J4X3JpbmdfZnJlZSYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm1fcnhfYWdnX3JpbmdfZnJlZSYjMzQ7LAogICAgJiMzNDtibmdlX2h3cm1fdHhfcmluZ19mcmVlJiMzNDssCiAgICAmIzM0O2JuZ2VfaHdybV9jcF9yaW5nX2ZyZWUmIzM0OywKICAgICYjMzQ7Ym5nZV9od3JtX3JpbmdfZnJlZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgQnJvYWRjb20gQk5HRSBhbmQgQk5HX1JFIGRyaXZlcnMgdG8gc3VwcG9ydCAzMi1iaXQgZmlybXdhcmUgcmluZyBJRHMgaW5zdGVhZCBvZiAxNi1iaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGRyaXZlciYjMzk7cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBoYXJkd2FyZS9maXJtd2FyZSBkdXJpbmcgcmluZyBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nLiBUaGUgZHJpdmVyIGNhbiBiZSB0ZXN0ZWQgdmlhIFBDSSBlbXVsYXRpb24gaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTU6MDA6MDYuMTI5NDgzMTQzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA4NjU2NjQ1OTQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJOR0VcIixcbiAgICBcIklORklOSUJBTkRfQk5HX1JFXCIsXG4gICAgXCJEQ0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJibmdfcmVfbmV0X3JpbmdfZnJlZVwiLFxuICAgIFwiYm5nX3JlX25ldF9yaW5nX2FsbG9jXCIsXG4gICAgXCJod3JtX3JpbmdfZnJlZV9zZW5kX21zZ1wiLFxuICAgIFwiaHdybV9yaW5nX2FsbG9jX3NlbmRfbXNnXCIsXG4gICAgXCJibmdlX2h3cm1fcnhfYWdnX3JpbmdfYWxsb2NcIixcbiAgICBcImJuZ2VfaHdybV9yeF9yaW5nX2FsbG9jXCIsXG4gICAgXCJibmdlX2h3cm1fcmluZ19hbGxvY1wiLFxuICAgIFwiYm5nZV9od3JtX3J4X3JpbmdfZnJlZVwiLFxuICAgIFwiYm5nZV9od3JtX3J4X2FnZ19yaW5nX2ZyZWVcIixcbiAgICBcImJuZ2VfaHdybV90eF9yaW5nX2ZyZWVcIixcbiAgICBcImJuZ2VfaHdybV9jcF9yaW5nX2ZyZWVcIixcbiAgICBcImJuZ2VfaHdybV9yaW5nX2ZyZWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQnJvYWRjb20gQk5HRSBhbmQgQk5HX1JFIGRyaXZlcnMgdG8gc3VwcG9ydCAzMi1iaXQgZmlybXdhcmUgcmluZyBJRHMgaW5zdGVhZCBvZiAxNi1iaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGRyaXZlcidzIGludGVyYWN0aW9uIHdpdGggdGhlIGhhcmR3YXJlL2Zpcm13YXJlIGR1cmluZyByaW5nIGFsbG9jYXRpb24gYW5kIGZyZWVpbmcuIFRoZSBkcml2ZXIgY2FuIGJlIHRlc3RlZCB2aWEgUENJIGVtdWxhdGlvbiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE1OjAwOjA2LjEyOTQ5MjUzM1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA0OTM2NzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOTk2NmZhNjRmZmIyY2RkNDYwMzZiZDVkZDJmNmI5MDNiZDBhOWQ3MVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIEp1biAzMCAxNTowMDowNSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jXFxuaW5kZXggNzFhN2NhMjE5NmFkODguLjMxMWM4YmM5MzE2MDNhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jXFxuKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmNcXG5AQCAtMTEzLDcgKzExMyw3IEBAIHN0YXRpYyB2b2lkIGJuZ19yZV9maWxsX2Z3X21zZyhzdHJ1Y3QgYm5nZV9md19tc2cgKmZ3X21zZywgdm9pZCAqbXNnLFxcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGJuZ19yZV9uZXRfcmluZ19mcmVlKHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2LFxcbi1cXHRcXHRcXHRcXHR1MTYgZndfcmluZ19pZCwgaW50IHR5cGUpXFxuK1xcdFxcdFxcdFxcdHUzMiBmd19yaW5nX2lkLCBpbnQgdHlwZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgYm5nZV9hdXhyX2RldiAqYXV4X2RldiA9IHJkZXYtXFx1MDAzZWF1eF9kZXY7XFxuIFxcdHN0cnVjdCBod3JtX3JpbmdfZnJlZV9pbnB1dCByZXEgPSB7fTtcXG5AQCAtMTIzLDcgKzEyMyw3IEBAIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2ZyZWUoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYsXFxuIFxcbiBcXHRibmdfcmVfaW5pdF9od3JtX2hkcigodm9pZCAqKVxcdTAwMjZyZXEsIEhXUk1fUklOR19GUkVFKTtcXG4gXFx0cmVxLnJpbmdfdHlwZSA9IHR5cGU7XFxuLVxcdHJlcS5yaW5nX2lkID0gY3B1X3RvX2xlMTYoZndfcmluZ19pZCk7XFxuK1xcdHJlcS5yaW5nX2lkID0gY3B1X3RvX2xlMzIoZndfcmluZ19pZCk7XFxuIFxcdGJuZ19yZV9maWxsX2Z3X21zZyhcXHUwMDI2ZndfbXNnLCAodm9pZCAqKVxcdTAwMjZyZXEsIHNpemVvZihyZXEpLCAodm9pZCAqKVxcdTAwMjZyZXNwLFxcbiBcXHRcXHRcXHQgICAgc2l6ZW9mKHJlc3ApLCBCTkdFX0RGTFRfSFdSTV9DTURfVElNRU9VVCk7XFxuIFxcdHJjID0gYm5nZV9zZW5kX21zZyhhdXhfZGV2LCBcXHUwMDI2ZndfbXNnKTtcXG5AQCAtMTYxLDcgKzE2MSw3IEBAIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2FsbG9jKHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2LFxcbiBcXHRcXHRcXHQgICBzaXplb2YocmVzcCksIEJOR0VfREZMVF9IV1JNX0NNRF9USU1FT1VUKTtcXG4gXFx0cmMgPSBibmdlX3NlbmRfbXNnKGF1eF9kZXYsIFxcdTAwMjZmd19tc2cpO1xcbiBcXHRpZiAoIXJjKVxcbi1cXHRcXHQqZndfcmluZ19pZCA9IGxlMTZfdG9fY3B1KHJlc3AucmluZ19pZCk7XFxuK1xcdFxcdCpmd19yaW5nX2lkID0gKHUxNilsZTMyX3RvX2NwdShyZXNwLnJpbmdfaWQpO1xcbiBcXG4gXFx0cmV0dXJuIHJjO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmhcXG5pbmRleCBmMjFjZmY2NTFmZDQ0YS4uNDQ3OWNjZDA3MWY1MzIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaFxcbkBAIC0zNiw2ICszNiw3IEBAIHN0cnVjdCBibmdlX3BmX2luZm8ge1xcbiB9O1xcbiBcXG4gI2RlZmluZSBJTlZBTElEX0hXX1JJTkdfSUQgICAgICAoKHUxNiktMSlcXG4rI2RlZmluZSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVRcXHQoVTMyX01BWClcXG4gXFxuIGVudW0ge1xcbiBcXHRCTkdFX0ZXX0NBUF9TSE9SVF9DTURcXHRcXHRcXHRcXHQ9IEJJVF9VTEwoMCksXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmNcXG5pbmRleCAxYzljZmVjMWI2MzNmYy4uNjUxYzVlNzgzNTE2Y2MgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuY1xcbkBAIC0xMjgzLDcgKzEyODMsNyBAQCBpbnQgYm5nZV9od3JtX3N0YXRfY3R4X2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4pXFxuIFxcbiBpbnQgaHdybV9yaW5nX2ZyZWVfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcXG4gXFx0XFx0XFx0ICAgIHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nLFxcbi1cXHRcXHRcXHQgICAgdTMyIHJpbmdfdHlwZSwgaW50IGNtcGxfcmluZ19pZClcXG4rXFx0XFx0XFx0ICAgIHUzMiByaW5nX3R5cGUsIHUzMiBjbXBsX3JpbmdfaWQpXFxuIHtcXG4gXFx0c3RydWN0IGh3cm1fcmluZ19mcmVlX2lucHV0ICpyZXE7XFxuIFxcdHN0cnVjdCBibmdlX2RldiAqYmQgPSBibi1cXHUwMDNlYmQ7XFxuQEAgLTEyOTUsNyArMTI5NSw3IEBAIGludCBod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxcbiBcXG4gXFx0cmVxLVxcdTAwM2VjbXBsX3JpbmcgPSBjcHVfdG9fbGUxNihjbXBsX3JpbmdfaWQpO1xcbiBcXHRyZXEtXFx1MDAzZXJpbmdfdHlwZSA9IHJpbmdfdHlwZTtcXG4tXFx0cmVxLVxcdTAwM2VyaW5nX2lkID0gY3B1X3RvX2xlMTYocmluZy1cXHUwMDNlZndfcmluZ19pZCk7XFxuK1xcdHJlcS1cXHUwMDNlcmluZ19pZCA9IGNwdV90b19sZTMyKHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQpO1xcbiBcXG4gXFx0Ym5nZV9od3JtX3JlcV9ob2xkKGJkLCByZXEpO1xcbiBcXHRyYyA9IGJuZ2VfaHdybV9yZXFfc2VuZChiZCwgcmVxKTtcXG5AQCAtMTMxNyw3ICsxMzE3LDcgQEAgaW50IGh3cm1fcmluZ19hbGxvY19zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxcbiBcXHRzdHJ1Y3QgaHdybV9yaW5nX2FsbG9jX291dHB1dCAqcmVzcDtcXG4gXFx0c3RydWN0IGh3cm1fcmluZ19hbGxvY19pbnB1dCAqcmVxO1xcbiBcXHRzdHJ1Y3QgYm5nZV9kZXYgKmJkID0gYm4tXFx1MDAzZWJkO1xcbi1cXHR1MTYgcmluZ19pZCwgZmxhZ3MgPSAwO1xcbitcXHR1MzIgcmluZ19pZCwgZmxhZ3MgPSAwO1xcbiBcXHRpbnQgcmM7XFxuIFxcbiBcXHRyYyA9IGJuZ2VfaHdybV9yZXFfaW5pdChiZCwgcmVxLCBIV1JNX1JJTkdfQUxMT0MpO1xcbkBAIC0xNDAxLDcgKzE0MDEsNyBAQCBpbnQgaHdybV9yaW5nX2FsbG9jX3NlbmRfbXNnKHN0cnVjdCBibmdlX25ldCAqYm4sXFxuIFxcbiBcXHRyZXNwID0gYm5nZV9od3JtX3JlcV9ob2xkKGJkLCByZXEpO1xcbiBcXHRyYyA9IGJuZ2VfaHdybV9yZXFfc2VuZChiZCwgcmVxKTtcXG4tXFx0cmluZ19pZCA9IGxlMTZfdG9fY3B1KHJlc3AtXFx1MDAzZXJpbmdfaWQpO1xcbitcXHRyaW5nX2lkID0gbGUzMl90b19jcHUocmVzcC1cXHUwMDNlcmluZ19pZCk7XFxuIFxcdGJuZ2VfaHdybV9yZXFfZHJvcChiZCwgcmVxKTtcXG4gXFxuIGV4aXQ6XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmhcXG5pbmRleCAzNTAxZGU3YTg5YjkxOS4uYmY0NTJlMzkwZDViZDEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuaFxcbkBAIC01MCw3ICs1MCw3IEBAIGludCBibmdlX2h3cm1fY2ZhX2wyX3NldF9yeF9tYXNrKHN0cnVjdCBibmdlX2RldiAqYmQsXFxuIHZvaWQgYm5nZV9od3JtX3N0YXRfY3R4X2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibik7XFxuIGludCBibmdlX2h3cm1fc3RhdF9jdHhfYWxsb2Moc3RydWN0IGJuZ2VfbmV0ICpibik7XFxuIGludCBod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyxcXG4tXFx0XFx0XFx0ICAgIHUzMiByaW5nX3R5cGUsIGludCBjbXBsX3JpbmdfaWQpO1xcbitcXHRcXHRcXHQgICAgdTMyIHJpbmdfdHlwZSwgdTMyIGNtcGxfcmluZ19pZCk7XFxuIGludCBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcXG4gXFx0XFx0XFx0ICAgICBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyxcXG4gXFx0XFx0XFx0ICAgICB1MzIgcmluZ190eXBlLCB1MzIgbWFwX2luZGV4KTtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jXFxuaW5kZXggNzA3NjgxOTMwMDRjYjIuLjZmN2VmNTA2ZDRlMThjIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuY1xcbkBAIC0xMzI3LDEyICsxMzI3LDEyIEBAIHN0YXRpYyBpbnQgYm5nZV9hbGxvY19jb3JlKHN0cnVjdCBibmdlX25ldCAqYm4pXFxuIFxcdHJldHVybiByYztcXG4gfVxcbiBcXG4tdTE2IGJuZ2VfY3BfcmluZ19mb3Jfcngoc3RydWN0IGJuZ2VfcnhfcmluZ19pbmZvICpyeHIpXFxuK3UzMiBibmdlX2NwX3JpbmdfZm9yX3J4KHN0cnVjdCBibmdlX3J4X3JpbmdfaW5mbyAqcnhyKVxcbiB7XFxuIFxcdHJldHVybiByeHItXFx1MDAzZXJ4X2Nwci1cXHUwMDNlcmluZ19zdHJ1Y3QuZndfcmluZ19pZDtcXG4gfVxcbiBcXG4tdTE2IGJuZ2VfY3BfcmluZ19mb3JfdHgoc3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIpXFxuK3UzMiBibmdlX2NwX3JpbmdfZm9yX3R4KHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyKVxcbiB7XFxuIFxcdHJldHVybiB0eHItXFx1MDAzZXR4X2Nwci1cXHUwMDNlcmluZ19zdHJ1Y3QuZndfcmluZ19pZDtcXG4gfVxcbkBAIC0xMzc1LDEyICsxMzc1LDEyIEBAIHN0YXRpYyB2b2lkIGJuZ2VfaW5pdF9ucV90cmVlKHN0cnVjdCBibmdlX25ldCAqYm4pXFxuIFxcdFxcdHN0cnVjdCBibmdlX25xX3JpbmdfaW5mbyAqbnFyID0gXFx1MDAyNmJuLVxcdTAwM2VibmFwaVtpXS1cXHUwMDNlbnFfcmluZztcXG4gXFx0XFx0c3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3QgKnJpbmcgPSBcXHUwMDI2bnFyLVxcdTAwM2VyaW5nX3N0cnVjdDtcXG4gXFxuLVxcdFxcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XFxuK1xcdFxcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XFxuIFxcdFxcdGZvciAoaiA9IDA7IGogXFx1MDAzYyBucXItXFx1MDAzZWNwX3JpbmdfY291bnQ7IGorKykge1xcbiBcXHRcXHRcXHRzdHJ1Y3QgYm5nZV9jcF9yaW5nX2luZm8gKmNwciA9IFxcdTAwMjZucXItXFx1MDAzZWNwX3JpbmdfYXJyW2pdO1xcbiBcXG4gXFx0XFx0XFx0cmluZyA9IFxcdTAwMjZjcHItXFx1MDAzZXJpbmdfc3RydWN0O1xcbi1cXHRcXHRcXHRyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xcbitcXHRcXHRcXHRyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4gfVxcbkBAIC0xNjM3LDcgKzE2MzcsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2luaXRfb25lX3J4X3JpbmdfcnhiZChzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxcbiBcXG4gXFx0cmluZyA9IFxcdTAwMjZyeHItXFx1MDAzZXJ4X3Jpbmdfc3RydWN0O1xcbiBcXHRibmdlX2luaXRfcnhiZF9wYWdlcyhyaW5nLCB0eXBlKTtcXG4tXFx0cmluZy1cXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcXG4rXFx0cmluZy1cXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgYm5nZV9pbml0X29uZV9hZ2dfcmluZ19yeGJkKHN0cnVjdCBibmdlX25ldCAqYm4sXFxuQEAgLTE2NDcsNyArMTY0Nyw3IEBAIHN0YXRpYyB2b2lkIGJuZ2VfaW5pdF9vbmVfYWdnX3JpbmdfcnhiZChzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxcbiBcXHR1MzIgdHlwZTtcXG4gXFxuIFxcdHJpbmcgPSBcXHUwMDI2cnhyLVxcdTAwM2VyeF9hZ2dfcmluZ19zdHJ1Y3Q7XFxuLVxcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XFxuK1xcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XFxuIFxcdGlmIChibmdlX2lzX2FnZ19yZXFkKGJuLVxcdTAwM2ViZCkpIHtcXG4gXFx0XFx0dHlwZSA9ICgodTMyKUJOR0VfUlhfUEFHRV9TSVpFIFxcdTAwM2NcXHUwMDNjIFJYX0JEX0xFTl9TSElGVCkgfFxcbiBcXHRcXHRcXHRSWF9CRF9UWVBFX1JYX0FHR19CRCB8IFJYX0JEX0ZMQUdTX1NPUDtcXG5AQCAtMTcwOCw3ICsxNzA4LDcgQEAgc3RhdGljIHZvaWQgYm5nZV9pbml0X3R4X3JpbmdzKHN0cnVjdCBibmdlX25ldCAqYm4pXFxuIFxcdFxcdHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyID0gXFx1MDAyNmJuLVxcdTAwM2V0eF9yaW5nW2ldO1xcbiBcXHRcXHRzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyA9IFxcdTAwMjZ0eHItXFx1MDAzZXR4X3Jpbmdfc3RydWN0O1xcbiBcXG4tXFx0XFx0cmluZy1cXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcXG4rXFx0XFx0cmluZy1cXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcXG4gXFxuIFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJuLVxcdTAwM2VuZXRkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1RYLFxcbiBcXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZ0eHItXFx1MDAzZWJuYXBpLVxcdTAwM2VuYXBpKTtcXG5AQCAtMTg2Nyw3ICsxODY3LDcgQEAgc3RhdGljIGludCBibmdlX2h3cm1fcnhfYWdnX3JpbmdfYWxsb2Moc3RydWN0IGJuZ2VfbmV0ICpibixcXG4gXFx0XFx0ICAgIHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQpO1xcbiBcXHRibmdlX2RiX3dyaXRlKGJuLVxcdTAwM2ViZCwgXFx1MDAyNnJ4ci1cXHUwMDNlcnhfYWdnX2RiLCByeHItXFx1MDAzZXJ4X2FnZ19wcm9kKTtcXG4gXFx0Ym5nZV9kYl93cml0ZShibi1cXHUwMDNlYmQsIFxcdTAwMjZyeHItXFx1MDAzZXJ4X2RiLCByeHItXFx1MDAzZXJ4X3Byb2QpO1xcbi1cXHRibi1cXHUwMDNlZ3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSByaW5nLVxcdTAwM2Vmd19yaW5nX2lkO1xcbitcXHRibi1cXHUwMDNlZ3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSAodTE2KXJpbmctXFx1MDAzZWZ3X3JpbmdfaWQ7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbkBAIC0xODg2LDcgKzE4ODYsNyBAQCBzdGF0aWMgaW50IGJuZ2VfaHdybV9yeF9yaW5nX2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4sXFxuIFxcdFxcdHJldHVybiByYztcXG4gXFxuIFxcdGJuZ2Vfc2V0X2RiKGJuLCBcXHUwMDI2cnhyLVxcdTAwM2VyeF9kYiwgdHlwZSwgbWFwX2lkeCwgcmluZy1cXHUwMDNlZndfcmluZ19pZCk7XFxuLVxcdGJuLVxcdTAwM2VncnBfaW5mb1ttYXBfaWR4XS5yeF9md19yaW5nX2lkID0gcmluZy1cXHUwMDNlZndfcmluZ19pZDtcXG4rXFx0Ym4tXFx1MDAzZWdycF9pbmZvW21hcF9pZHhdLnJ4X2Z3X3JpbmdfaWQgPSAodTE2KXJpbmctXFx1MDAzZWZ3X3JpbmdfaWQ7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG4gfVxcbkBAIC0xOTE2LDcgKzE5MTYsNyBAQCBzdGF0aWMgaW50IGJuZ2VfaHdybV9yaW5nX2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4pXFxuIFxcdFxcdGJuZ2Vfc2V0X2RiKGJuLCBcXHUwMDI2bnFyLVxcdTAwM2VucV9kYiwgdHlwZSwgbWFwX2lkeCwgcmluZy1cXHUwMDNlZndfcmluZ19pZCk7XFxuIFxcdFxcdGJuZ2VfZGJfbnEoYm4sIFxcdTAwMjZucXItXFx1MDAzZW5xX2RiLCBucXItXFx1MDAzZW5xX3Jhd19jb25zKTtcXG4gXFx0XFx0ZW5hYmxlX2lycSh2ZWN0b3IpO1xcbi1cXHRcXHRibi1cXHUwMDNlZ3JwX2luZm9baV0ubnFfZndfcmluZ19pZCA9IHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQ7XFxuK1xcdFxcdGJuLVxcdTAwM2VncnBfaW5mb1tpXS5ucV9md19yaW5nX2lkID0gKHUxNilyaW5nLVxcdTAwM2Vmd19yaW5nX2lkO1xcbiBcXG4gXFx0XFx0aWYgKCFpKSB7XFxuIFxcdFxcdFxcdHJjID0gYm5nZV9od3JtX3NldF9hc3luY19ldmVudF9jcihiZCwgcmluZy1cXHUwMDNlZndfcmluZ19pZCk7XFxuQEAgLTE5ODYsMTUgKzE5ODYsMTMgQEAgdm9pZCBibmdlX2ZpbGxfaHdfcnNzX3RibChzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV92bmljX2luZm8gKnZuaWMpXFxuIFxcdHRibF9zaXplID0gYm5nZV9nZXRfcnhmaF9pbmRpcl9zaXplKGJkKTtcXG4gXFxuIFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyB0Ymxfc2l6ZTsgaSsrKSB7XFxuLVxcdFxcdHUxNiByaW5nX2lkLCBqO1xcbitcXHRcXHR1MzIgajtcXG4gXFxuIFxcdFxcdGogPSBiZC1cXHUwMDNlcnNzX2luZGlyX3RibFtpXTtcXG4gXFx0XFx0cnhyID0gXFx1MDAyNmJuLVxcdTAwM2VyeF9yaW5nW2pdO1xcbiBcXG4tXFx0XFx0cmluZ19pZCA9IHJ4ci1cXHUwMDNlcnhfcmluZ19zdHJ1Y3QuZndfcmluZ19pZDtcXG4tXFx0XFx0KnJpbmdfdGJsKysgPSBjcHVfdG9fbGUxNihyaW5nX2lkKTtcXG4tXFx0XFx0cmluZ19pZCA9IGJuZ2VfY3BfcmluZ19mb3JfcngocnhyKTtcXG4tXFx0XFx0KnJpbmdfdGJsKysgPSBjcHVfdG9fbGUxNihyaW5nX2lkKTtcXG4rXFx0XFx0KnJpbmdfdGJsKysgPSBjcHVfdG9fbGUxNihyeHItXFx1MDAzZXJ4X3Jpbmdfc3RydWN0LmZ3X3JpbmdfaWQpO1xcbitcXHRcXHQqcmluZ190YmwrKyA9IGNwdV90b19sZTE2KGJuZ2VfY3BfcmluZ19mb3JfcngocnhyKSk7XFxuIFxcdH1cXG4gfVxcbiBcXG5AQCAtMjI4NSw3ICsyMjgzLDcgQEAgc3RhdGljIHZvaWQgYm5nZV9kaXNhYmxlX2ludChzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxcbiBcXHRcXHRucXIgPSBcXHUwMDI2Ym5hcGktXFx1MDAzZW5xX3Jpbmc7XFxuIFxcdFxcdHJpbmcgPSBcXHUwMDI2bnFyLVxcdTAwM2VyaW5nX3N0cnVjdDtcXG4gXFxuLVxcdFxcdGlmIChyaW5nLVxcdTAwM2Vmd19yaW5nX2lkICE9IElOVkFMSURfSFdfUklOR19JRClcXG4rXFx0XFx0aWYgKHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgIT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKVxcbiBcXHRcXHRcXHRibmdlX2RiX25xKGJuLCBcXHUwMDI2bnFyLVxcdTAwM2VucV9kYiwgbnFyLVxcdTAwM2VucV9yYXdfY29ucyk7XFxuIFxcdH1cXG4gfVxcbkBAIC0yNDAxLDcgKzIzOTksNyBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXFxuIFxcdHUzMiBncnBfaWR4ID0gcnhyLVxcdTAwM2VibmFwaS1cXHUwMDNlaW5kZXg7XFxuIFxcdHUzMiBjbXBsX3JpbmdfaWQ7XFxuIFxcbi1cXHRpZiAocmluZy1cXHUwMDNlZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSUQpXFxuK1xcdGlmIChyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRF8zMkJJVClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0Y21wbF9yaW5nX2lkID0gYm5nZV9jcF9yaW5nX2Zvcl9yeChyeHIpO1xcbkBAIC0yNDA5LDcgKzI0MDcsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXFxuIFxcdFxcdFxcdFxcdFJJTkdfRlJFRV9SRVFfUklOR19UWVBFX1JYLFxcbiBcXHRcXHRcXHRcXHRjbG9zZV9wYXRoID8gY21wbF9yaW5nX2lkIDpcXG4gXFx0XFx0XFx0XFx0SU5WQUxJRF9IV19SSU5HX0lEKTtcXG4tXFx0cmluZy1cXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcXG4rXFx0cmluZy1cXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcXG4gXFx0Ym4tXFx1MDAzZWdycF9pbmZvW2dycF9pZHhdLnJ4X2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XFxuIH1cXG4gXFxuQEAgLTI0MjEsMTQgKzI0MTksMTQgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3J4X2FnZ19yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibixcXG4gXFx0dTMyIGdycF9pZHggPSByeHItXFx1MDAzZWJuYXBpLVxcdTAwM2VpbmRleDtcXG4gXFx0dTMyIGNtcGxfcmluZ19pZDtcXG4gXFxuLVxcdGlmIChyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRClcXG4rXFx0aWYgKHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKVxcbiBcXHRcXHRyZXR1cm47XFxuIFxcbiBcXHRjbXBsX3JpbmdfaWQgPSBibmdlX2NwX3JpbmdfZm9yX3J4KHJ4cik7XFxuIFxcdGh3cm1fcmluZ19mcmVlX3NlbmRfbXNnKGJuLCByaW5nLCBSSU5HX0ZSRUVfUkVRX1JJTkdfVFlQRV9SWF9BR0csXFxuIFxcdFxcdFxcdFxcdGNsb3NlX3BhdGggPyBjbXBsX3JpbmdfaWQgOlxcbiBcXHRcXHRcXHRcXHRJTlZBTElEX0hXX1JJTkdfSUQpO1xcbi1cXHRyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xcbitcXHRyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xcbiBcXHRibi1cXHUwMDNlZ3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XFxuIH1cXG4gXFxuQEAgLTI0MzksMTQgKzI0MzcsMTQgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3R4X3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxcbiBcXHRzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyA9IFxcdTAwMjZ0eHItXFx1MDAzZXR4X3Jpbmdfc3RydWN0O1xcbiBcXHR1MzIgY21wbF9yaW5nX2lkO1xcbiBcXG4tXFx0aWYgKHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEKVxcbitcXHRpZiAocmluZy1cXHUwMDNlZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuIFxcdGNtcGxfcmluZ19pZCA9IGNsb3NlX3BhdGggPyBibmdlX2NwX3JpbmdfZm9yX3R4KHR4cikgOlxcbiBcXHRcXHQgICAgICAgSU5WQUxJRF9IV19SSU5HX0lEO1xcbiBcXHRod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfVFgsXFxuIFxcdFxcdFxcdFxcdGNtcGxfcmluZ19pZCk7XFxuLVxcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XFxuK1xcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9jcF9yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibixcXG5AQCAtMjQ1NSwxMiArMjQ1MywxMiBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fY3BfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXFxuIFxcdHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nO1xcbiBcXG4gXFx0cmluZyA9IFxcdTAwMjZjcHItXFx1MDAzZXJpbmdfc3RydWN0O1xcbi1cXHRpZiAocmluZy1cXHUwMDNlZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSUQpXFxuK1xcdGlmIChyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRF8zMkJJVClcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0aHdybV9yaW5nX2ZyZWVfc2VuZF9tc2coYm4sIHJpbmcsIFJJTkdfRlJFRV9SRVFfUklOR19UWVBFX0wyX0NNUEwsXFxuIFxcdFxcdFxcdFxcdElOVkFMSURfSFdfUklOR19JRCk7XFxuLVxcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XFxuK1xcdHJpbmctXFx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XFxuIH1cXG4gXFxuIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibiwgYm9vbCBjbG9zZV9wYXRoKVxcbkBAIC0yNDk2LDExICsyNDk0LDExIEBAIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibiwgYm9vbCBjbG9zZV9wYXRoKVxcbiBcXHRcXHRcXHRibmdlX2h3cm1fY3BfcmluZ19mcmVlKGJuLCBcXHUwMDI2bnFyLVxcdTAwM2VjcF9yaW5nX2FycltqXSk7XFxuIFxcbiBcXHRcXHRyaW5nID0gXFx1MDAyNm5xci1cXHUwMDNlcmluZ19zdHJ1Y3Q7XFxuLVxcdFxcdGlmIChyaW5nLVxcdTAwM2Vmd19yaW5nX2lkICE9IElOVkFMSURfSFdfUklOR19JRCkge1xcbitcXHRcXHRpZiAocmluZy1cXHUwMDNlZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpIHtcXG4gXFx0XFx0XFx0aHdybV9yaW5nX2ZyZWVfc2VuZF9tc2coYm4sIHJpbmcsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFJJTkdfRlJFRV9SRVFfUklOR19UWVBFX05RLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRJTlZBTElEX0hXX1JJTkdfSUQpO1xcbi1cXHRcXHRcXHRyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xcbitcXHRcXHRcXHRyaW5nLVxcdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xcbiBcXHRcXHRcXHRibi1cXHUwMDNlZ3JwX2luZm9baV0ubnFfZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcXG4gXFx0XFx0fVxcbiBcXHR9XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuaFxcbmluZGV4IGY0NjM2YjViMGNmM2YwLi5kMTc3OTE5YzJlMTE3MCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmhcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmhcXG5AQCAtNjMwLDggKzYzMCw4IEBAIHN0cnVjdCBibmdlX2wyX2ZpbHRlciB7XFxuIFxcdHJlZmNvdW50X3RcXHRcXHRyZWZjbnQ7XFxuIH07XFxuIFxcbi11MTYgYm5nZV9jcF9yaW5nX2Zvcl9yeChzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cik7XFxuLXUxNiBibmdlX2NwX3JpbmdfZm9yX3R4KHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyKTtcXG4rdTMyIGJuZ2VfY3BfcmluZ19mb3Jfcngoc3RydWN0IGJuZ2VfcnhfcmluZ19pbmZvICpyeHIpO1xcbit1MzIgYm5nZV9jcF9yaW5nX2Zvcl90eChzdHJ1Y3QgYm5nZV90eF9yaW5nX2luZm8gKnR4cik7XFxuIHZvaWQgYm5nZV9maWxsX2h3X3Jzc190Ymwoc3RydWN0IGJuZ2VfbmV0ICpibiwgc3RydWN0IGJuZ2Vfdm5pY19pbmZvICp2bmljKTtcXG4gaW50IGJuZ2VfYWxsb2NfcnhfZGF0YShzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cixcXG4gXFx0XFx0ICAgICAgIHUxNiBwcm9kLCBnZnBfdCBnZnApO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2Vfcm1lbS5oIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX3JtZW0uaFxcbmluZGV4IDM0MWM3ZjgxZWQwOTJiLi5iYjBjNzlhMWVlNjBmNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2Vfcm1lbS5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX3JtZW0uaFxcbkBAIC0xODQsNyArMTg0LDcgQEAgc3RydWN0IGJuZ2VfY3R4X21lbV9pbmZvIHtcXG4gc3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3Qge1xcbiBcXHRzdHJ1Y3QgYm5nZV9yaW5nX21lbV9pbmZvXFx0cmluZ19tZW07XFxuIFxcbi1cXHR1MTZcXHRcXHRcXHRmd19yaW5nX2lkO1xcbitcXHR1MzJcXHRcXHRcXHRmd19yaW5nX2lkO1xcbiBcXHR1bmlvbiB7XFxuIFxcdFxcdHUxNlxcdFxcdGdycF9pZHg7XFxuIFxcdFxcdHUxNlxcdFxcdG1hcF9pZHg7IC8qIFVzZWQgYnkgTlFzICovXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYm5nZS9oc2kuaCBiL2luY2x1ZGUvbGludXgvYm5nZS9oc2kuaFxcbmluZGV4IDhlYTEzZDU0MDdlZWNkLi4xZjdiZDk2NDE1YTUyNyAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2JuZ2UvaHNpLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2JuZ2UvaHNpLmhcXG5AQCAtODMxNyw4ICs4MzE3LDcgQEAgc3RydWN0IGh3cm1fcmluZ19hbGxvY19vdXRwdXQge1xcbiBcXHRfX2xlMTZcXHRyZXFfdHlwZTtcXG4gXFx0X19sZTE2XFx0c2VxX2lkO1xcbiBcXHRfX2xlMTZcXHRyZXNwX2xlbjtcXG4tXFx0X19sZTE2XFx0cmluZ19pZDtcXG4tXFx0X19sZTE2XFx0bG9naWNhbF9yaW5nX2lkO1xcbitcXHRfX2xlMzJcXHRyaW5nX2lkO1xcbiBcXHR1OFxcdHB1c2hfYnVmZmVyX2luZGV4O1xcbiBcXHQjZGVmaW5lIFJJTkdfQUxMT0NfUkVTUF9QVVNIX0JVRkZFUl9JTkRFWF9QSU5HX0JVRkZFUiAweDBVTFxcbiBcXHQjZGVmaW5lIFJJTkdfQUxMT0NfUkVTUF9QVVNIX0JVRkZFUl9JTkRFWF9QT05HX0JVRkZFUiAweDFVTFxcbkBAIC04MzQ1LDEwICs4MzQ0LDEwIEBAIHN0cnVjdCBod3JtX3JpbmdfZnJlZV9pbnB1dCB7XFxuIFxcdHU4XFx0ZmxhZ3M7XFxuIFxcdCNkZWZpbmUgUklOR19GUkVFX1JFUV9GTEFHU19WSVJUSU9fUklOR19WQUxJRCAweDFVTFxcbiBcXHQjZGVmaW5lIFJJTkdfRlJFRV9SRVFfRkxBR1NfTEFTVCAgICAgICAgICAgICBSSU5HX0ZSRUVfUkVRX0ZMQUdTX1ZJUlRJT19SSU5HX1ZBTElEXFxuLVxcdF9fbGUxNlxcdHJpbmdfaWQ7XFxuK1xcdF9fbGUxNlxcdHVudXNlZF8xO1xcbiBcXHRfX2xlMzJcXHRwcm9kX2lkeDtcXG4gXFx0X19sZTMyXFx0b3BhcXVlO1xcbi1cXHRfX2xlMzJcXHR1bnVzZWRfMTtcXG4rXFx0X19sZTMyXFx0cmluZ19pZDtcXG4gfTtcXG4gXFxuIC8qIGh3cm1fcmluZ19mcmVlX291dHB1dCAoc2l6ZToxMjhiLzE2QikgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTU6MDA6MDYuNjM1MzQ3NDAzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDgxNTA3NjM2ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQk5HRVwiLFxuICAgIFwiSU5GSU5JQkFORF9CTkdfUkVcIixcbiAgICBcIkRDQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJuZ19yZV9uZXRfcmluZ19mcmVlXCIsXG4gICAgXCJibmdfcmVfbmV0X3JpbmdfYWxsb2NcIixcbiAgICBcImh3cm1fcmluZ19mcmVlX3NlbmRfbXNnXCIsXG4gICAgXCJod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2dcIixcbiAgICBcImJuZ2VfaHdybV9yeF9hZ2dfcmluZ19hbGxvY1wiLFxuICAgIFwiYm5nZV9od3JtX3J4X3JpbmdfYWxsb2NcIixcbiAgICBcImJuZ2VfaHdybV9yaW5nX2FsbG9jXCIsXG4gICAgXCJibmdlX2h3cm1fcnhfcmluZ19mcmVlXCIsXG4gICAgXCJibmdlX2h3cm1fcnhfYWdnX3JpbmdfZnJlZVwiLFxuICAgIFwiYm5nZV9od3JtX3R4X3JpbmdfZnJlZVwiLFxuICAgIFwiYm5nZV9od3JtX2NwX3JpbmdfZnJlZVwiLFxuICAgIFwiYm5nZV9od3JtX3JpbmdfZnJlZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBCcm9hZGNvbSBCTkdFIGFuZCBCTkdfUkUgZHJpdmVycyB0byBzdXBwb3J0IDMyLWJpdCBmaXJtd2FyZSByaW5nIElEcyBpbnN0ZWFkIG9mIDE2LWJpdC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgZHJpdmVyJ3MgaW50ZXJhY3Rpb24gd2l0aCB0aGUgaGFyZHdhcmUvZmlybXdhcmUgZHVyaW5nIHJpbmcgYWxsb2NhdGlvbiBhbmQgZnJlZWluZy4gVGhlIGRyaXZlciBjYW4gYmUgdGVzdGVkIHZpYSBQQ0kgZW11bGF0aW9uIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5OTY2ZmE2NGZmYjJjZGQ0NjAzNmJkNWRkMmY2YjkwM2JkMGE5ZDcxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTU6MDA6MDUgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jXG5pbmRleCA3MWE3Y2EyMTk2YWQ4OC4uMzExYzhiYzkzMTYwM2EgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuY1xuKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmNcbkBAIC0xMTMsNyArMTEzLDcgQEAgc3RhdGljIHZvaWQgYm5nX3JlX2ZpbGxfZndfbXNnKHN0cnVjdCBibmdlX2Z3X21zZyAqZndfbXNnLCB2b2lkICptc2csXG4gfVxuIFxuIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2ZyZWUoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYsXG4tXHRcdFx0XHR1MTYgZndfcmluZ19pZCwgaW50IHR5cGUpXG4rXHRcdFx0XHR1MzIgZndfcmluZ19pZCwgaW50IHR5cGUpXG4ge1xuIFx0c3RydWN0IGJuZ2VfYXV4cl9kZXYgKmF1eF9kZXYgPSByZGV2LVx1MDAzZWF1eF9kZXY7XG4gXHRzdHJ1Y3QgaHdybV9yaW5nX2ZyZWVfaW5wdXQgcmVxID0ge307XG5AQCAtMTIzLDcgKzEyMyw3IEBAIHN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2ZyZWUoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYsXG4gXG4gXHRibmdfcmVfaW5pdF9od3JtX2hkcigodm9pZCAqKVx1MDAyNnJlcSwgSFdSTV9SSU5HX0ZSRUUpO1xuIFx0cmVxLnJpbmdfdHlwZSA9IHR5cGU7XG4tXHRyZXEucmluZ19pZCA9IGNwdV90b19sZTE2KGZ3X3JpbmdfaWQpO1xuK1x0cmVxLnJpbmdfaWQgPSBjcHVfdG9fbGUzMihmd19yaW5nX2lkKTtcbiBcdGJuZ19yZV9maWxsX2Z3X21zZyhcdTAwMjZmd19tc2csICh2b2lkICopXHUwMDI2cmVxLCBzaXplb2YocmVxKSwgKHZvaWQgKilcdTAwMjZyZXNwLFxuIFx0XHRcdCAgICBzaXplb2YocmVzcCksIEJOR0VfREZMVF9IV1JNX0NNRF9USU1FT1VUKTtcbiBcdHJjID0gYm5nZV9zZW5kX21zZyhhdXhfZGV2LCBcdTAwMjZmd19tc2cpO1xuQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgaW50IGJuZ19yZV9uZXRfcmluZ19hbGxvYyhzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldixcbiBcdFx0XHQgICBzaXplb2YocmVzcCksIEJOR0VfREZMVF9IV1JNX0NNRF9USU1FT1VUKTtcbiBcdHJjID0gYm5nZV9zZW5kX21zZyhhdXhfZGV2LCBcdTAwMjZmd19tc2cpO1xuIFx0aWYgKCFyYylcbi1cdFx0KmZ3X3JpbmdfaWQgPSBsZTE2X3RvX2NwdShyZXNwLnJpbmdfaWQpO1xuK1x0XHQqZndfcmluZ19pZCA9ICh1MTYpbGUzMl90b19jcHUocmVzcC5yaW5nX2lkKTtcbiBcbiBcdHJldHVybiByYztcbiB9XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaFxuaW5kZXggZjIxY2ZmNjUxZmQ0NGEuLjQ0NzljY2QwNzFmNTMyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oXG5AQCAtMzYsNiArMzYsNyBAQCBzdHJ1Y3QgYm5nZV9wZl9pbmZvIHtcbiB9O1xuIFxuICNkZWZpbmUgSU5WQUxJRF9IV19SSU5HX0lEICAgICAgKCh1MTYpLTEpXG4rI2RlZmluZSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVRcdChVMzJfTUFYKVxuIFxuIGVudW0ge1xuIFx0Qk5HRV9GV19DQVBfU0hPUlRfQ01EXHRcdFx0XHQ9IEJJVF9VTEwoMCksXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuY1xuaW5kZXggMWM5Y2ZlYzFiNjMzZmMuLjY1MWM1ZTc4MzUxNmNjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jXG5AQCAtMTI4Myw3ICsxMjgzLDcgQEAgaW50IGJuZ2VfaHdybV9zdGF0X2N0eF9hbGxvYyhzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxuIFxuIGludCBod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0XHRcdCAgICBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyxcbi1cdFx0XHQgICAgdTMyIHJpbmdfdHlwZSwgaW50IGNtcGxfcmluZ19pZClcbitcdFx0XHQgICAgdTMyIHJpbmdfdHlwZSwgdTMyIGNtcGxfcmluZ19pZClcbiB7XG4gXHRzdHJ1Y3QgaHdybV9yaW5nX2ZyZWVfaW5wdXQgKnJlcTtcbiBcdHN0cnVjdCBibmdlX2RldiAqYmQgPSBibi1cdTAwM2ViZDtcbkBAIC0xMjk1LDcgKzEyOTUsNyBAQCBpbnQgaHdybV9yaW5nX2ZyZWVfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcbiBcdHJlcS1cdTAwM2VjbXBsX3JpbmcgPSBjcHVfdG9fbGUxNihjbXBsX3JpbmdfaWQpO1xuIFx0cmVxLVx1MDAzZXJpbmdfdHlwZSA9IHJpbmdfdHlwZTtcbi1cdHJlcS1cdTAwM2VyaW5nX2lkID0gY3B1X3RvX2xlMTYocmluZy1cdTAwM2Vmd19yaW5nX2lkKTtcbitcdHJlcS1cdTAwM2VyaW5nX2lkID0gY3B1X3RvX2xlMzIocmluZy1cdTAwM2Vmd19yaW5nX2lkKTtcbiBcbiBcdGJuZ2VfaHdybV9yZXFfaG9sZChiZCwgcmVxKTtcbiBcdHJjID0gYm5nZV9od3JtX3JlcV9zZW5kKGJkLCByZXEpO1xuQEAgLTEzMTcsNyArMTMxNyw3IEBAIGludCBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcdHN0cnVjdCBod3JtX3JpbmdfYWxsb2Nfb3V0cHV0ICpyZXNwO1xuIFx0c3RydWN0IGh3cm1fcmluZ19hbGxvY19pbnB1dCAqcmVxO1xuIFx0c3RydWN0IGJuZ2VfZGV2ICpiZCA9IGJuLVx1MDAzZWJkO1xuLVx0dTE2IHJpbmdfaWQsIGZsYWdzID0gMDtcbitcdHUzMiByaW5nX2lkLCBmbGFncyA9IDA7XG4gXHRpbnQgcmM7XG4gXG4gXHRyYyA9IGJuZ2VfaHdybV9yZXFfaW5pdChiZCwgcmVxLCBIV1JNX1JJTkdfQUxMT0MpO1xuQEAgLTE0MDEsNyArMTQwMSw3IEBAIGludCBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcbiBcdHJlc3AgPSBibmdlX2h3cm1fcmVxX2hvbGQoYmQsIHJlcSk7XG4gXHRyYyA9IGJuZ2VfaHdybV9yZXFfc2VuZChiZCwgcmVxKTtcbi1cdHJpbmdfaWQgPSBsZTE2X3RvX2NwdShyZXNwLVx1MDAzZXJpbmdfaWQpO1xuK1x0cmluZ19pZCA9IGxlMzJfdG9fY3B1KHJlc3AtXHUwMDNlcmluZ19pZCk7XG4gXHRibmdlX2h3cm1fcmVxX2Ryb3AoYmQsIHJlcSk7XG4gXG4gZXhpdDpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5oXG5pbmRleCAzNTAxZGU3YTg5YjkxOS4uYmY0NTJlMzkwZDViZDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfaHdybV9saWIuaFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2h3cm1fbGliLmhcbkBAIC01MCw3ICs1MCw3IEBAIGludCBibmdlX2h3cm1fY2ZhX2wyX3NldF9yeF9tYXNrKHN0cnVjdCBibmdlX2RldiAqYmQsXG4gdm9pZCBibmdlX2h3cm1fc3RhdF9jdHhfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuKTtcbiBpbnQgYm5nZV9od3JtX3N0YXRfY3R4X2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4pO1xuIGludCBod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyxcbi1cdFx0XHQgICAgdTMyIHJpbmdfdHlwZSwgaW50IGNtcGxfcmluZ19pZCk7XG4rXHRcdFx0ICAgIHUzMiByaW5nX3R5cGUsIHUzMiBjbXBsX3JpbmdfaWQpO1xuIGludCBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2coc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcdFx0XHQgICAgIHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nLFxuIFx0XHRcdCAgICAgdTMyIHJpbmdfdHlwZSwgdTMyIG1hcF9pbmRleCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jXG5pbmRleCA3MDc2ODE5MzAwNGNiMi4uNmY3ZWY1MDZkNGUxOGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuY1xuQEAgLTEzMjcsMTIgKzEzMjcsMTIgQEAgc3RhdGljIGludCBibmdlX2FsbG9jX2NvcmUoc3RydWN0IGJuZ2VfbmV0ICpibilcbiBcdHJldHVybiByYztcbiB9XG4gXG4tdTE2IGJuZ2VfY3BfcmluZ19mb3Jfcngoc3RydWN0IGJuZ2VfcnhfcmluZ19pbmZvICpyeHIpXG4rdTMyIGJuZ2VfY3BfcmluZ19mb3Jfcngoc3RydWN0IGJuZ2VfcnhfcmluZ19pbmZvICpyeHIpXG4ge1xuIFx0cmV0dXJuIHJ4ci1cdTAwM2VyeF9jcHItXHUwMDNlcmluZ19zdHJ1Y3QuZndfcmluZ19pZDtcbiB9XG4gXG4tdTE2IGJuZ2VfY3BfcmluZ19mb3JfdHgoc3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIpXG4rdTMyIGJuZ2VfY3BfcmluZ19mb3JfdHgoc3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIpXG4ge1xuIFx0cmV0dXJuIHR4ci1cdTAwM2V0eF9jcHItXHUwMDNlcmluZ19zdHJ1Y3QuZndfcmluZ19pZDtcbiB9XG5AQCAtMTM3NSwxMiArMTM3NSwxMiBAQCBzdGF0aWMgdm9pZCBibmdlX2luaXRfbnFfdHJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxuIFx0XHRzdHJ1Y3QgYm5nZV9ucV9yaW5nX2luZm8gKm5xciA9IFx1MDAyNmJuLVx1MDAzZWJuYXBpW2ldLVx1MDAzZW5xX3Jpbmc7XG4gXHRcdHN0cnVjdCBibmdlX3Jpbmdfc3RydWN0ICpyaW5nID0gXHUwMDI2bnFyLVx1MDAzZXJpbmdfc3RydWN0O1xuIFxuLVx0XHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4rXHRcdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcbiBcdFx0Zm9yIChqID0gMDsgaiBcdTAwM2MgbnFyLVx1MDAzZWNwX3JpbmdfY291bnQ7IGorKykge1xuIFx0XHRcdHN0cnVjdCBibmdlX2NwX3JpbmdfaW5mbyAqY3ByID0gXHUwMDI2bnFyLVx1MDAzZWNwX3JpbmdfYXJyW2pdO1xuIFxuIFx0XHRcdHJpbmcgPSBcdTAwMjZjcHItXHUwMDNlcmluZ19zdHJ1Y3Q7XG4tXHRcdFx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuK1x0XHRcdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRF8zMkJJVDtcbiBcdFx0fVxuIFx0fVxuIH1cbkBAIC0xNjM3LDcgKzE2MzcsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2luaXRfb25lX3J4X3JpbmdfcnhiZChzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFxuIFx0cmluZyA9IFx1MDAyNnJ4ci1cdTAwM2VyeF9yaW5nX3N0cnVjdDtcbiBcdGJuZ2VfaW5pdF9yeGJkX3BhZ2VzKHJpbmcsIHR5cGUpO1xuLVx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuK1x0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBibmdlX2luaXRfb25lX2FnZ19yaW5nX3J4YmQoc3RydWN0IGJuZ2VfbmV0ICpibixcbkBAIC0xNjQ3LDcgKzE2NDcsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2luaXRfb25lX2FnZ19yaW5nX3J4YmQoc3RydWN0IGJuZ2VfbmV0ICpibixcbiBcdHUzMiB0eXBlO1xuIFxuIFx0cmluZyA9IFx1MDAyNnJ4ci1cdTAwM2VyeF9hZ2dfcmluZ19zdHJ1Y3Q7XG4tXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4rXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gXHRpZiAoYm5nZV9pc19hZ2dfcmVxZChibi1cdTAwM2ViZCkpIHtcbiBcdFx0dHlwZSA9ICgodTMyKUJOR0VfUlhfUEFHRV9TSVpFIFx1MDAzY1x1MDAzYyBSWF9CRF9MRU5fU0hJRlQpIHxcbiBcdFx0XHRSWF9CRF9UWVBFX1JYX0FHR19CRCB8IFJYX0JEX0ZMQUdTX1NPUDtcbkBAIC0xNzA4LDcgKzE3MDgsNyBAQCBzdGF0aWMgdm9pZCBibmdlX2luaXRfdHhfcmluZ3Moc3RydWN0IGJuZ2VfbmV0ICpibilcbiBcdFx0c3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIgPSBcdTAwMjZibi1cdTAwM2V0eF9yaW5nW2ldO1xuIFx0XHRzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZyA9IFx1MDAyNnR4ci1cdTAwM2V0eF9yaW5nX3N0cnVjdDtcbiBcbi1cdFx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuK1x0XHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gXG4gXHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJuLVx1MDAzZW5ldGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXG4gXHRcdFx0XHQgICAgIFx1MDAyNnR4ci1cdTAwM2VibmFwaS1cdTAwM2VuYXBpKTtcbkBAIC0xODY3LDcgKzE4NjcsNyBAQCBzdGF0aWMgaW50IGJuZ2VfaHdybV9yeF9hZ2dfcmluZ19hbGxvYyhzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0XHQgICAgcmluZy1cdTAwM2Vmd19yaW5nX2lkKTtcbiBcdGJuZ2VfZGJfd3JpdGUoYm4tXHUwMDNlYmQsIFx1MDAyNnJ4ci1cdTAwM2VyeF9hZ2dfZGIsIHJ4ci1cdTAwM2VyeF9hZ2dfcHJvZCk7XG4gXHRibmdlX2RiX3dyaXRlKGJuLVx1MDAzZWJkLCBcdTAwMjZyeHItXHUwMDNlcnhfZGIsIHJ4ci1cdTAwM2VyeF9wcm9kKTtcbi1cdGJuLVx1MDAzZWdycF9pbmZvW2dycF9pZHhdLmFnZ19md19yaW5nX2lkID0gcmluZy1cdTAwM2Vmd19yaW5nX2lkO1xuK1x0Ym4tXHUwMDNlZ3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSAodTE2KXJpbmctXHUwMDNlZndfcmluZ19pZDtcbiBcbiBcdHJldHVybiAwO1xuIH1cbkBAIC0xODg2LDcgKzE4ODYsNyBAQCBzdGF0aWMgaW50IGJuZ2VfaHdybV9yeF9yaW5nX2FsbG9jKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHRcdHJldHVybiByYztcbiBcbiBcdGJuZ2Vfc2V0X2RiKGJuLCBcdTAwMjZyeHItXHUwMDNlcnhfZGIsIHR5cGUsIG1hcF9pZHgsIHJpbmctXHUwMDNlZndfcmluZ19pZCk7XG4tXHRibi1cdTAwM2VncnBfaW5mb1ttYXBfaWR4XS5yeF9md19yaW5nX2lkID0gcmluZy1cdTAwM2Vmd19yaW5nX2lkO1xuK1x0Ym4tXHUwMDNlZ3JwX2luZm9bbWFwX2lkeF0ucnhfZndfcmluZ19pZCA9ICh1MTYpcmluZy1cdTAwM2Vmd19yaW5nX2lkO1xuIFxuIFx0cmV0dXJuIDA7XG4gfVxuQEAgLTE5MTYsNyArMTkxNiw3IEBAIHN0YXRpYyBpbnQgYm5nZV9od3JtX3JpbmdfYWxsb2Moc3RydWN0IGJuZ2VfbmV0ICpibilcbiBcdFx0Ym5nZV9zZXRfZGIoYm4sIFx1MDAyNm5xci1cdTAwM2VucV9kYiwgdHlwZSwgbWFwX2lkeCwgcmluZy1cdTAwM2Vmd19yaW5nX2lkKTtcbiBcdFx0Ym5nZV9kYl9ucShibiwgXHUwMDI2bnFyLVx1MDAzZW5xX2RiLCBucXItXHUwMDNlbnFfcmF3X2NvbnMpO1xuIFx0XHRlbmFibGVfaXJxKHZlY3Rvcik7XG4tXHRcdGJuLVx1MDAzZWdycF9pbmZvW2ldLm5xX2Z3X3JpbmdfaWQgPSByaW5nLVx1MDAzZWZ3X3JpbmdfaWQ7XG4rXHRcdGJuLVx1MDAzZWdycF9pbmZvW2ldLm5xX2Z3X3JpbmdfaWQgPSAodTE2KXJpbmctXHUwMDNlZndfcmluZ19pZDtcbiBcbiBcdFx0aWYgKCFpKSB7XG4gXHRcdFx0cmMgPSBibmdlX2h3cm1fc2V0X2FzeW5jX2V2ZW50X2NyKGJkLCByaW5nLVx1MDAzZWZ3X3JpbmdfaWQpO1xuQEAgLTE5ODYsMTUgKzE5ODYsMTMgQEAgdm9pZCBibmdlX2ZpbGxfaHdfcnNzX3RibChzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBzdHJ1Y3QgYm5nZV92bmljX2luZm8gKnZuaWMpXG4gXHR0Ymxfc2l6ZSA9IGJuZ2VfZ2V0X3J4ZmhfaW5kaXJfc2l6ZShiZCk7XG4gXG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyB0Ymxfc2l6ZTsgaSsrKSB7XG4tXHRcdHUxNiByaW5nX2lkLCBqO1xuK1x0XHR1MzIgajtcbiBcbiBcdFx0aiA9IGJkLVx1MDAzZXJzc19pbmRpcl90YmxbaV07XG4gXHRcdHJ4ciA9IFx1MDAyNmJuLVx1MDAzZXJ4X3Jpbmdbal07XG4gXG4tXHRcdHJpbmdfaWQgPSByeHItXHUwMDNlcnhfcmluZ19zdHJ1Y3QuZndfcmluZ19pZDtcbi1cdFx0KnJpbmdfdGJsKysgPSBjcHVfdG9fbGUxNihyaW5nX2lkKTtcbi1cdFx0cmluZ19pZCA9IGJuZ2VfY3BfcmluZ19mb3JfcngocnhyKTtcbi1cdFx0KnJpbmdfdGJsKysgPSBjcHVfdG9fbGUxNihyaW5nX2lkKTtcbitcdFx0KnJpbmdfdGJsKysgPSBjcHVfdG9fbGUxNihyeHItXHUwMDNlcnhfcmluZ19zdHJ1Y3QuZndfcmluZ19pZCk7XG4rXHRcdCpyaW5nX3RibCsrID0gY3B1X3RvX2xlMTYoYm5nZV9jcF9yaW5nX2Zvcl9yeChyeHIpKTtcbiBcdH1cbiB9XG4gXG5AQCAtMjI4NSw3ICsyMjgzLDcgQEAgc3RhdGljIHZvaWQgYm5nZV9kaXNhYmxlX2ludChzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxuIFx0XHRucXIgPSBcdTAwMjZibmFwaS1cdTAwM2VucV9yaW5nO1xuIFx0XHRyaW5nID0gXHUwMDI2bnFyLVx1MDAzZXJpbmdfc3RydWN0O1xuIFxuLVx0XHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkICE9IElOVkFMSURfSFdfUklOR19JRClcbitcdFx0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpXG4gXHRcdFx0Ym5nZV9kYl9ucShibiwgXHUwMDI2bnFyLVx1MDAzZW5xX2RiLCBucXItXHUwMDNlbnFfcmF3X2NvbnMpO1xuIFx0fVxuIH1cbkBAIC0yNDAxLDcgKzIzOTksNyBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fcnhfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHR1MzIgZ3JwX2lkeCA9IHJ4ci1cdTAwM2VibmFwaS1cdTAwM2VpbmRleDtcbiBcdHUzMiBjbXBsX3JpbmdfaWQ7XG4gXG4tXHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRClcbitcdGlmIChyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRjbXBsX3JpbmdfaWQgPSBibmdlX2NwX3JpbmdfZm9yX3J4KHJ4cik7XG5AQCAtMjQwOSw3ICsyNDA3LDcgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3J4X3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0XHRcdFx0UklOR19GUkVFX1JFUV9SSU5HX1RZUEVfUlgsXG4gXHRcdFx0XHRjbG9zZV9wYXRoID8gY21wbF9yaW5nX2lkIDpcbiBcdFx0XHRcdElOVkFMSURfSFdfUklOR19JRCk7XG4tXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4rXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gXHRibi1cdTAwM2VncnBfaW5mb1tncnBfaWR4XS5yeF9md19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuIH1cbiBcbkBAIC0yNDIxLDE0ICsyNDE5LDE0IEBAIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9yeF9hZ2dfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHR1MzIgZ3JwX2lkeCA9IHJ4ci1cdTAwM2VibmFwaS1cdTAwM2VpbmRleDtcbiBcdHUzMiBjbXBsX3JpbmdfaWQ7XG4gXG4tXHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRClcbitcdGlmIChyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRjbXBsX3JpbmdfaWQgPSBibmdlX2NwX3JpbmdfZm9yX3J4KHJ4cik7XG4gXHRod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfUlhfQUdHLFxuIFx0XHRcdFx0Y2xvc2VfcGF0aCA/IGNtcGxfcmluZ19pZCA6XG4gXHRcdFx0XHRJTlZBTElEX0hXX1JJTkdfSUQpO1xuLVx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuK1x0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIFx0Ym4tXHUwMDNlZ3JwX2luZm9bZ3JwX2lkeF0uYWdnX2Z3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4gfVxuIFxuQEAgLTI0MzksMTQgKzI0MzcsMTQgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3R4X3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLFxuIFx0c3RydWN0IGJuZ2VfcmluZ19zdHJ1Y3QgKnJpbmcgPSBcdTAwMjZ0eHItXHUwMDNldHhfcmluZ19zdHJ1Y3Q7XG4gXHR1MzIgY21wbF9yaW5nX2lkO1xuIFxuLVx0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCA9PSBJTlZBTElEX0hXX1JJTkdfSUQpXG4rXHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRF8zMkJJVClcbiBcdFx0cmV0dXJuO1xuIFxuIFx0Y21wbF9yaW5nX2lkID0gY2xvc2VfcGF0aCA/IGJuZ2VfY3BfcmluZ19mb3JfdHgodHhyKSA6XG4gXHRcdCAgICAgICBJTlZBTElEX0hXX1JJTkdfSUQ7XG4gXHRod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfVFgsXG4gXHRcdFx0XHRjbXBsX3JpbmdfaWQpO1xuLVx0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEO1xuK1x0cmluZy1cdTAwM2Vmd19yaW5nX2lkID0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBibmdlX2h3cm1fY3BfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXG5AQCAtMjQ1NSwxMiArMjQ1MywxMiBAQCBzdGF0aWMgdm9pZCBibmdlX2h3cm1fY3BfcmluZ19mcmVlKHN0cnVjdCBibmdlX25ldCAqYm4sXG4gXHRzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCAqcmluZztcbiBcbiBcdHJpbmcgPSBcdTAwMjZjcHItXHUwMDNlcmluZ19zdHJ1Y3Q7XG4tXHRpZiAocmluZy1cdTAwM2Vmd19yaW5nX2lkID09IElOVkFMSURfSFdfUklOR19JRClcbitcdGlmIChyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPT0gSU5WQUxJRF9IV19SSU5HX0lEXzMyQklUKVxuIFx0XHRyZXR1cm47XG4gXG4gXHRod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZywgUklOR19GUkVFX1JFUV9SSU5HX1RZUEVfTDJfQ01QTCxcbiBcdFx0XHRcdElOVkFMSURfSFdfUklOR19JRCk7XG4tXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSUQ7XG4rXHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGJuZ2VfaHdybV9yaW5nX2ZyZWUoc3RydWN0IGJuZ2VfbmV0ICpibiwgYm9vbCBjbG9zZV9wYXRoKVxuQEAgLTI0OTYsMTEgKzI0OTQsMTEgQEAgc3RhdGljIHZvaWQgYm5nZV9od3JtX3JpbmdfZnJlZShzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBib29sIGNsb3NlX3BhdGgpXG4gXHRcdFx0Ym5nZV9od3JtX2NwX3JpbmdfZnJlZShibiwgXHUwMDI2bnFyLVx1MDAzZWNwX3JpbmdfYXJyW2pdKTtcbiBcbiBcdFx0cmluZyA9IFx1MDAyNm5xci1cdTAwM2VyaW5nX3N0cnVjdDtcbi1cdFx0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSUQpIHtcbitcdFx0aWYgKHJpbmctXHUwMDNlZndfcmluZ19pZCAhPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQpIHtcbiBcdFx0XHRod3JtX3JpbmdfZnJlZV9zZW5kX21zZyhibiwgcmluZyxcbiBcdFx0XHRcdFx0XHRSSU5HX0ZSRUVfUkVRX1JJTkdfVFlQRV9OUSxcbiBcdFx0XHRcdFx0XHRJTlZBTElEX0hXX1JJTkdfSUQpO1xuLVx0XHRcdHJpbmctXHUwMDNlZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcbitcdFx0XHRyaW5nLVx1MDAzZWZ3X3JpbmdfaWQgPSBJTlZBTElEX0hXX1JJTkdfSURfMzJCSVQ7XG4gXHRcdFx0Ym4tXHUwMDNlZ3JwX2luZm9baV0ubnFfZndfcmluZ19pZCA9IElOVkFMSURfSFdfUklOR19JRDtcbiBcdFx0fVxuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuaFxuaW5kZXggZjQ2MzZiNWIwY2YzZjAuLmQxNzc5MTljMmUxMTcwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5oXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmhcbkBAIC02MzAsOCArNjMwLDggQEAgc3RydWN0IGJuZ2VfbDJfZmlsdGVyIHtcbiBcdHJlZmNvdW50X3RcdFx0cmVmY250O1xuIH07XG4gXG4tdTE2IGJuZ2VfY3BfcmluZ19mb3Jfcngoc3RydWN0IGJuZ2VfcnhfcmluZ19pbmZvICpyeHIpO1xuLXUxNiBibmdlX2NwX3JpbmdfZm9yX3R4KHN0cnVjdCBibmdlX3R4X3JpbmdfaW5mbyAqdHhyKTtcbit1MzIgYm5nZV9jcF9yaW5nX2Zvcl9yeChzdHJ1Y3QgYm5nZV9yeF9yaW5nX2luZm8gKnJ4cik7XG4rdTMyIGJuZ2VfY3BfcmluZ19mb3JfdHgoc3RydWN0IGJuZ2VfdHhfcmluZ19pbmZvICp0eHIpO1xuIHZvaWQgYm5nZV9maWxsX2h3X3Jzc190Ymwoc3RydWN0IGJuZ2VfbmV0ICpibiwgc3RydWN0IGJuZ2Vfdm5pY19pbmZvICp2bmljKTtcbiBpbnQgYm5nZV9hbGxvY19yeF9kYXRhKHN0cnVjdCBibmdlX25ldCAqYm4sIHN0cnVjdCBibmdlX3J4X3JpbmdfaW5mbyAqcnhyLFxuIFx0XHQgICAgICAgdTE2IHByb2QsIGdmcF90IGdmcCk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX3JtZW0uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9ybWVtLmhcbmluZGV4IDM0MWM3ZjgxZWQwOTJiLi5iYjBjNzlhMWVlNjBmNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9ybWVtLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9ybWVtLmhcbkBAIC0xODQsNyArMTg0LDcgQEAgc3RydWN0IGJuZ2VfY3R4X21lbV9pbmZvIHtcbiBzdHJ1Y3QgYm5nZV9yaW5nX3N0cnVjdCB7XG4gXHRzdHJ1Y3QgYm5nZV9yaW5nX21lbV9pbmZvXHRyaW5nX21lbTtcbiBcbi1cdHUxNlx0XHRcdGZ3X3JpbmdfaWQ7XG4rXHR1MzJcdFx0XHRmd19yaW5nX2lkO1xuIFx0dW5pb24ge1xuIFx0XHR1MTZcdFx0Z3JwX2lkeDtcbiBcdFx0dTE2XHRcdG1hcF9pZHg7IC8qIFVzZWQgYnkgTlFzICovXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ibmdlL2hzaS5oIGIvaW5jbHVkZS9saW51eC9ibmdlL2hzaS5oXG5pbmRleCA4ZWExM2Q1NDA3ZWVjZC4uMWY3YmQ5NjQxNWE1MjcgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2JuZ2UvaHNpLmhcbisrKyBiL2luY2x1ZGUvbGludXgvYm5nZS9oc2kuaFxuQEAgLTgzMTcsOCArODMxNyw3IEBAIHN0cnVjdCBod3JtX3JpbmdfYWxsb2Nfb3V0cHV0IHtcbiBcdF9fbGUxNlx0cmVxX3R5cGU7XG4gXHRfX2xlMTZcdHNlcV9pZDtcbiBcdF9fbGUxNlx0cmVzcF9sZW47XG4tXHRfX2xlMTZcdHJpbmdfaWQ7XG4tXHRfX2xlMTZcdGxvZ2ljYWxfcmluZ19pZDtcbitcdF9fbGUzMlx0cmluZ19pZDtcbiBcdHU4XHRwdXNoX2J1ZmZlcl9pbmRleDtcbiBcdCNkZWZpbmUgUklOR19BTExPQ19SRVNQX1BVU0hfQlVGRkVSX0lOREVYX1BJTkdfQlVGRkVSIDB4MFVMXG4gXHQjZGVmaW5lIFJJTkdfQUxMT0NfUkVTUF9QVVNIX0JVRkZFUl9JTkRFWF9QT05HX0JVRkZFUiAweDFVTFxuQEAgLTgzNDUsMTAgKzgzNDQsMTAgQEAgc3RydWN0IGh3cm1fcmluZ19mcmVlX2lucHV0IHtcbiBcdHU4XHRmbGFncztcbiBcdCNkZWZpbmUgUklOR19GUkVFX1JFUV9GTEFHU19WSVJUSU9fUklOR19WQUxJRCAweDFVTFxuIFx0I2RlZmluZSBSSU5HX0ZSRUVfUkVRX0ZMQUdTX0xBU1QgICAgICAgICAgICAgUklOR19GUkVFX1JFUV9GTEFHU19WSVJUSU9fUklOR19WQUxJRFxuLVx0X19sZTE2XHRyaW5nX2lkO1xuK1x0X19sZTE2XHR1bnVzZWRfMTtcbiBcdF9fbGUzMlx0cHJvZF9pZHg7XG4gXHRfX2xlMzJcdG9wYXF1ZTtcbi1cdF9fbGUzMlx0dW51c2VkXzE7XG4rXHRfX2xlMzJcdHJpbmdfaWQ7XG4gfTtcbiBcbiAvKiBod3JtX3JpbmdfZnJlZV9vdXRwdXQgKHNpemU6MTI4Yi8xNkIpICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNTowMDowNi42MzUzNTEzMTNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjE1NzYwOTA3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBCcm9hZGNvbSBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCBzZWVtcyBsaWtlIHdlJ3JlIGV4cGFuZGluZyB0aGUgYGZ3X3JpbmdfaWRgIGZpZWxkIGZyb20gYSBgdTE2YCB0byBhIGB1MzJgIHdpdGhpbiB0aGUgQnJvYWRjb20gQk5HRSBkcml2ZXIuIFRoYXQncyBhIHNpZ25pZmljYW50IGNoYW5nZSwgcG90ZW50aWFsbHkgaW5kaWNhdGluZyB3ZSdyZSBkZWFsaW5nIHdpdGggYSBtdWNoIGxhcmdlciBudW1iZXIgb2YgcmluZ3MgYmVpbmcgYWxsb2NhdGVkLiBUaGUgdGFyZ2V0IGRpcmVjdG9yaWVzIGFyZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9gIGFuZCBgZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9gLCBzbyB0aGF0J3Mgd2hlcmUgdGhlIGNvcmUgbW9kaWZpY2F0aW9ucyBhcmUuIEl0J3MgdG91Y2hpbmcgdGhlIGBibmdlX3Jpbmdfc3RydWN0YCBzdHJ1Y3R1cmUgYW5kIHRoZSBpbnZhbGlkIElEIGRlZmluaXRpb25zLiBBbHNvLCBpdCdzIG1vZGlmeWluZyB0aGUgYGh3cm1fcmluZ19hbGxvY19vdXRwdXRgIGFuZCBgaHdybV9yaW5nX2ZyZWVfaW5wdXRgIHN0cnVjdHVyZXMsIHdoaWNoIGFyZSBjcml0aWNhbCBmb3IgdGhlIGhhcmR3YXJlIHJlc291cmNlIG1hbmFnZW1lbnQuXG5cbkJ1dCB3YWl0IGEgbWludXRlLi4uIGBibmdlYD8gVGhhdCBkb2Vzbid0IGltbWVkaWF0ZWx5IHJpbmcgYSBiZWxsLiBNeSBleHBlcmllbmNlIHdpdGggQnJvYWRjb20gbmV0d29yayBkcml2ZXJzIHVzdWFsbHkgaW52b2x2ZXMgYGJueHRgIGZvciBOZXRYdHJlbWUtQy9FLCBvciB0aGUgb2xkZXIgYGJueDJgIGFuZCBgYm54MnhgLiBgYm5nZWAgZmVlbHMgdW51c3VhbC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgaXMgYW4gYWN0dWFsIGRyaXZlci4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgc2VhcmNoIHRoZSBrZXJuZWwgdHJlZSB0byBjb25maXJtIHRoYXQgYGJuZ2VgIGlzLCBpbmRlZWQsIGEgbGVnaXRpbWF0ZSBCcm9hZGNvbSBkcml2ZXIuIFRoaXMgaXMgYSBjcnVjaWFsIGZpcnN0IHN0ZXA7IEkgZG9uJ3Qgd2FudCB0byB3YXN0ZSB0aW1lIGFuYWx5emluZyBzb21ldGhpbmcgdGhhdCBkb2Vzbid0IGV2ZW4gZXhpc3Qgb3IgaXMgbWlzbGFiZWxlZC4gTGV0J3Mgc2VlLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgwNzQsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNTowMDozOC43OTI5NjIzOTdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzIxMTEwNTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYm5nZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA2MTIwIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9NYWtlZmlsZT0yMD1vYmotJChDT05GSUdfQkNNQVNQKSArPSBhc3AyL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL01ha2VmaWxlOjIxOm9iai0kKENPTkZJR19CTkdFKSArPSBibmdlL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9NYWtlZmlsZT0zPW9iai0kKENPTkZJR19CTkdFKSArPSBibmdfZW4ub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvTWFrZWZpbGUtNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL01ha2VmaWxlOjU6Ym5nX2VuLXkgOj0gYm5nZV9jb3JlLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvTWFrZWZpbGU6NjpcXHQgICAgYm5nZV9kZXZsaW5rLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvTWFrZWZpbGU6NzpcXHQgICAgYm5nZV9od3JtLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvTWFrZWZpbGU6ODpcXHQgICAgYm5nZV9od3JtX2xpYi5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL01ha2VmaWxlOjk6XFx0ICAgIGJuZ2Vfcm1lbS5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL01ha2VmaWxlOjEwOlxcdCAgICBibmdlX3Jlc2MubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9NYWtlZmlsZToxMTpcXHQgICAgYm5nZV9uZXRkZXYubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9NYWtlZmlsZToxMjpcXHQgICAgYm5nZV9ldGh0b29sLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvTWFrZWZpbGU6MTM6XFx0ICAgIGJuZ2VfYXV4ci5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL01ha2VmaWxlOjE0OlxcdCAgICBibmdlX3R4cngubyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9NYWtlZmlsZToxNTpcXHQgICAgYm5nZV9saW5rLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTEwLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjExOiNpbmNsdWRlIFxcdTAwM2NsaW51eC9ibmdlL2hzaS5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjEyOiNpbmNsdWRlIFxcXCJibmdlX3JtZW0uaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaDoxMzojaW5jbHVkZSBcXFwiYm5nZV9yZXNjLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MTQ6I2luY2x1ZGUgXFxcImJuZ2VfYXV4ci5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTE1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MjA6ZXh0ZXJuIGNoYXIgYm5nZV9kcml2ZXJfbmFtZVtdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTIxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oPTIyPWVudW0gYm9hcmRfaWR4IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjI2OnN0cnVjdCBibmdlX2F1eHJfcHJpdiB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjctXFx0c3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgYXV4X2RldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaDoyODpcXHRzdHJ1Y3QgYm5nZV9hdXhyX2RldiAqYXV4cl9kZXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjktXFx0aW50IGlkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MzI6c3RydWN0IGJuZ2VfcGZfaW5mbyB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMzMtXFx0dTE2XFx0ZndfZmlkO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg9ODE9ZW51bSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC05Mi0jZGVmaW5lIEJOR0VfTUFYX1FVRVVFXFx0XFx0OFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjkzOnN0cnVjdCBibmdlX3F1ZXVlX2luZm8ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTk0LVxcdHU4ICAgICAgcXVldWVfaWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0xMDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MTAzOnN0cnVjdCBibmdlX2RldiB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMTA0LVxcdHN0cnVjdCBkZXZpY2VcXHQqZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMTQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjE0NTpcXHRzdHJ1Y3QgYm5nZV9wZl9pbmZvXFx0cGY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMTQ2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMTUzLVxcdC8qIEJhY2tpbmcgc3RvcmVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MTU0OlxcdHN0cnVjdCBibmdlX2N0eF9tZW1faW5mb1xcdCpjdHg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMTU1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMTU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjE1ODpcXHRzdHJ1Y3QgYm5nZV9od19yZXNjXFx0aHdfcmVzYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0xNTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0yMDQtXFx0dThcXHRcXHRcXHRtYXhfbGx0YztcXHQvKiBsb3NzbGVzcyBUQ3MgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaDoyMDU6XFx0c3RydWN0IGJuZ2VfcXVldWVfaW5mb1xcdHFfaW5mb1tCTkdFX01BWF9RVUVVRV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjA2LVxcdHU4XFx0XFx0XFx0dGNfdG9fcWlkeFtCTkdFX01BWF9RVUVVRV07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0yMTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MjExOlxcdHN0cnVjdCBibmdlX2lycVxcdFxcdCppcnFfdGJsO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTIxMi1cXHR1MTZcXHRcXHRcXHRpcnFzX2FjcXVpcmVkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTIxMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaDoyMTQ6XFx0c3RydWN0IGJuZ2VfYXV4cl9wcml2XFx0KmF1eF9wcml2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjIxNTpcXHRzdHJ1Y3QgYm5nZV9hdXhyX2RldlxcdCphdXhyX2RldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0yMTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MjE3OlxcdHN0cnVjdCBibmdlX2xpbmtfaW5mb1xcdGxpbmtfaW5mbztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0yMTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0yMjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MjIzOnN0YXRpYyBpbmxpbmUgYm9vbCBibmdlX2lzX3JvY2VfZW4oc3RydWN0IGJuZ2VfZGV2ICpiZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0yMjQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjI3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oOjIyODpzdGF0aWMgaW5saW5lIGJvb2wgYm5nZV9pc19hZ2dfcmVxZChzdHJ1Y3QgYm5nZV9kZXYgKmJkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTIyOS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjMwLVxcdGlmIChiZC1cXHUwMDNlbmV0ZGV2KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MjMxOlxcdFxcdHN0cnVjdCBibmdlX25ldCAqYm4gPSBuZXRkZXZfcHJpdihiZC1cXHUwMDNlbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0yMzItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0yNDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MjQzOnN0YXRpYyBpbmxpbmUgdm9pZCBibmdlX3dyaXRlcShzdHJ1Y3QgYm5nZV9kZXYgKmJkLCB1NjQgdmFsLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTI0NC1cXHRcXHRcXHQgICAgICAgdm9pZCBfX2lvbWVtICphZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjU1LS8qIEZvciBUWCBhbmQgUlggcmluZyBkb29yYmVsbHMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaDoyNTY6c3RhdGljIGlubGluZSB2b2lkIGJuZ2VfZGJfd3JpdGUoc3RydWN0IGJuZ2VfZGV2ICpiZCwgc3RydWN0IGJuZ2VfZGJfaW5mbyAqZGIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmgtMjU3LVxcdFxcdFxcdFxcdCB1MzIgaWR4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTI1OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MjU5OlxcdGJuZ2Vfd3JpdGVxKGJkLCBkYi1cXHUwMDNlZGJfa2V5NjQgfCBEQl9SSU5HX0lEWChkYiwgaWR4KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0yNjAtXFx0XFx0ICAgIGRiLVxcdTAwM2Vkb29yYmVsbCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaC0yNjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlLmg6MjYzOmJvb2wgYm5nZV9hdXhfcmVnaXN0ZXJlZChzdHJ1Y3QgYm5nZV9kZXYgKmJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2UuaDoyNjQ6dTE2IGJuZ2VfYXV4X2dldF9tc2l4KHN0cnVjdCBibmdlX2RldiAqYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZS5oLTI2NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTYtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2F1eGlsaWFyeV9idXMuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjE3OiNpbmNsdWRlIFxcdTAwM2NsaW51eC9ibmdlL2hzaS5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoxOTojaW5jbHVkZSBcXFwiYm5nZS5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MjA6I2luY2x1ZGUgXFxcImJuZ2VfaHdybS5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MjE6I2luY2x1ZGUgXFxcImJuZ2VfYXV4ci5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoyMzpzdGF0aWMgREVGSU5FX0lEQShibmdlX2F1eF9kZXZfaWRzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTI0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MjU6c3RhdGljIHZvaWQgYm5nZV9maWxsX21zaXhfdmVjcyhzdHJ1Y3QgYm5nZV9kZXYgKmJkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MjY6XFx0XFx0XFx0XFx0c3RydWN0IGJuZ2VfbXNpeF9pbmZvICppbmZvKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMjcte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6Mjg6XFx0c3RydWN0IGJuZ2VfYXV4cl9kZXYgKmF1eHJfZGV2ID0gYmQtXFx1MDAzZWF1eHJfZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMjktXFx0aW50IG51bV9tc2l4LCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy00Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjQzOmludCBibmdlX3JlZ2lzdGVyX2RldihzdHJ1Y3QgYm5nZV9hdXhyX2RldiAqYXV4cl9kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy00NC1cXHRcXHQgICAgICB2b2lkICpoYW5kbGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy00NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzo0NjpcXHRzdHJ1Y3QgYm5nZV9kZXYgKmJkID0gcGNpX2dldF9kcnZkYXRhKGF1eHJfZGV2LVxcdTAwM2VwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjQ3OlxcdHN0cnVjdCBibmdlX2F1eHJfaW5mbyAqYXV4cl9pbmZvO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtNDgtXFx0aW50IHJjID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtNTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzo1NzpcXHRpZiAoIWJuZ2VfYXV4X2hhc19lbm91Z2hfcmVzb3VyY2VzKGJkKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtNTgtXFx0XFx0cmMgPSAtRU5PTUVNO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy02Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjY3OlxcdGJuZ2VfZmlsbF9tc2l4X3ZlY3MoYmQsIGJkLVxcdTAwM2VhdXhyX2Rldi1cXHUwMDNlbXNpeF9pbmZvKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTY4LVxcdGF1eHJfZGV2LVxcdTAwM2VmbGFncyB8PSBCTkdFX0FSREVWX01TSVhfQUxMT0M7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTc0LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjc1OkVYUE9SVF9TWU1CT0woYm5nZV9yZWdpc3Rlcl9kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtNzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzo3Nzp2b2lkIGJuZ2VfdW5yZWdpc3Rlcl9kZXYoc3RydWN0IGJuZ2VfYXV4cl9kZXYgKmF1eHJfZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtNzgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6Nzk6XFx0c3RydWN0IGJuZ2VfZGV2ICpiZCA9IHBjaV9nZXRfZHJ2ZGF0YShhdXhyX2Rldi1cXHUwMDNlcGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzo4MDpcXHRzdHJ1Y3QgYm5nZV9hdXhyX2luZm8gKmF1eHJfaW5mbztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTgxLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy05MS19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzo5MjpFWFBPUlRfU1lNQk9MKGJuZ2VfdW5yZWdpc3Rlcl9kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtOTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzo5NDppbnQgYm5nZV9zZW5kX21zZyhzdHJ1Y3QgYm5nZV9hdXhyX2RldiAqYXV4cl9kZXYsIHN0cnVjdCBibmdlX2Z3X21zZyAqZndfbXNnKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtOTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6OTY6XFx0c3RydWN0IGJuZ2VfZGV2ICpiZCA9IHBjaV9nZXRfZHJ2ZGF0YShhdXhyX2Rldi1cXHUwMDNlcGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy05Ny1cXHRzdHJ1Y3Qgb3V0cHV0ICpyZXNwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0xMDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoxMDI6XFx0cmMgPSBibmdlX2h3cm1fcmVxX2luaXQoYmQsIHJlcSwgMCAvKiBkb24ndCBjYXJlICovKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTEwMy1cXHRpZiAocmMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTEwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjEwNjpcXHRyYyA9IGJuZ2VfaHdybV9yZXFfcmVwbGFjZShiZCwgcmVxLCBmd19tc2ctXFx1MDAzZW1zZywgZndfbXNnLVxcdTAwM2Vtc2dfbGVuKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTEwNy1cXHRpZiAocmMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTEwOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjExMDpcXHRibmdlX2h3cm1fcmVxX3RpbWVvdXQoYmQsIHJlcSwgZndfbXNnLVxcdTAwM2V0aW1lb3V0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjExMTpcXHRyZXNwID0gYm5nZV9od3JtX3JlcV9ob2xkKGJkLCByZXEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MTEyOlxcdHJjID0gYm5nZV9od3JtX3JlcV9zZW5kKGJkLCByZXEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTEzLVxcdHJlc3BfbGVuID0gbGUxNl90b19jcHUocmVzcC1cXHUwMDNlcmVzcF9sZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0xMjAtZHJvcF9yZXE6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoxMjE6XFx0Ym5nZV9od3JtX3JlcV9kcm9wKGJkLCByZXEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTIyLVxcdHJldHVybiByYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTEyMy19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoxMjQ6RVhQT1JUX1NZTUJPTChibmdlX3NlbmRfbXNnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTEyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjEyNjp2b2lkIGJuZ2VfcmRtYV9hdXhfZGV2aWNlX3VuaW5pdChzdHJ1Y3QgYm5nZV9kZXYgKmJkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTI3LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjEyODpcXHRzdHJ1Y3QgYm5nZV9hdXhyX3ByaXYgKmF1eF9wcml2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTI5LVxcdHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0xMzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoxNDA6c3RhdGljIHZvaWQgYm5nZV9hdXhfZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTQxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjE0MjpcXHRzdHJ1Y3QgYm5nZV9hdXhyX3ByaXYgKmF1eF9wcml2ID1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjE0MzpcXHRcXHRcXHRjb250YWluZXJfb2YoZGV2LCBzdHJ1Y3QgYm5nZV9hdXhyX3ByaXYsIGF1eF9kZXYuZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjE0NDpcXHRzdHJ1Y3QgYm5nZV9kZXYgKmJkID0gcGNpX2dldF9kcnZkYXRhKGF1eF9wcml2LVxcdTAwM2VhdXhyX2Rldi1cXHUwMDNlcGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0xNDUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoxNDY6XFx0aWRhX2ZyZWUoXFx1MDAyNmJuZ2VfYXV4X2Rldl9pZHMsIGF1eF9wcml2LVxcdTAwM2VpZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0xNDctXFx0a2ZyZWUoYXV4X3ByaXYtXFx1MDAzZWF1eHJfZGV2LVxcdTAwM2VhdXhyX2luZm8pO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0xNTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoxNTQ6dm9pZCBibmdlX3JkbWFfYXV4X2RldmljZV9kZWwoc3RydWN0IGJuZ2VfZGV2ICpiZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTE1NS17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTE2MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjE2MjpzdGF0aWMgdm9pZCBibmdlX3NldF9hdXhyX2Rldl9pbmZvKHN0cnVjdCBibmdlX2F1eHJfZGV2ICphdXhyX2RldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjE2MzpcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgYm5nZV9kZXYgKmJkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTY0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMTgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MTgzOnZvaWQgYm5nZV9yZG1hX2F1eF9kZXZpY2VfYWRkKHN0cnVjdCBibmdlX2RldiAqYmQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0xODQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0yMDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoyMDM6dm9pZCBibmdlX3JkbWFfYXV4X2RldmljZV9pbml0KHN0cnVjdCBibmdlX2RldiAqYmQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0yMDQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMjA1LVxcdHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlICphdXhfZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MjA2OlxcdHN0cnVjdCBibmdlX2F1eHJfaW5mbyAqYXV4cl9pbmZvO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MjA3OlxcdHN0cnVjdCBibmdlX2F1eHJfcHJpdiAqYXV4X3ByaXY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoyMDg6XFx0c3RydWN0IGJuZ2VfYXV4cl9kZXYgKmF1eHJfZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmMtMjA5LVxcdGludCByYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTIxMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjIxMTpcXHRpZiAoIWJuZ2VfaXNfcm9jZV9lbihiZCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0yMTItXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0yMTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYzoyMTg6XFx0YXV4X3ByaXYtXFx1MDAzZWlkID0gaWRhX2FsbG9jKFxcdTAwMjZibmdlX2F1eF9kZXZfaWRzLCBHRlBfS0VSTkVMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTIxOS1cXHRpZiAoYXV4X3ByaXYtXFx1MDAzZWlkIFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0yMjgtXFx0YXV4X2Rldi1cXHUwMDNlZGV2LnBhcmVudCA9IFxcdTAwMjZiZC1cXHUwMDNlcGRldi1cXHUwMDNlZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmM6MjI5OlxcdGF1eF9kZXYtXFx1MDAzZWRldi5yZWxlYXNlID0gYm5nZV9hdXhfZGV2X3JlbGVhc2U7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0yMzAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTIzMi1cXHRpZiAocmMpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjIzMzpcXHRcXHRpZGFfZnJlZShcXHUwMDI2Ym5nZV9hdXhfZGV2X2lkcywgYXV4X3ByaXYtXFx1MDAzZWlkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTIzNC1cXHRcXHRrZnJlZShhdXhfcHJpdik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jLTI1MC1cXHRiZC1cXHUwMDNlYXV4cl9kZXYgPSBhdXhyX2RldjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5jOjI1MTpcXHRibmdlX3NldF9hdXhyX2Rldl9pbmZvKGF1eHJfZGV2LCBiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuYy0yNTItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oPTE0PXN0cnVjdCBod3JtX2FzeW5jX2V2ZW50X2NtcGw7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaDoxNTpzdHJ1Y3QgYm5nZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oLTE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmg6MTc6c3RydWN0IGJuZ2VfbXNpeF9pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oLTE4LVxcdHUzMlxcdHZlY3RvcjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmgtMjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaDoyMzpzdHJ1Y3QgYm5nZV9md19tc2cge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmgtMjQtXFx0dm9pZFxcdCptc2c7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oLTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmg6MzE6c3RydWN0IGJuZ2VfYXV4cl9pbmZvIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oLTMyLVxcdHZvaWRcXHRcXHQqaGFuZGxlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaD0zNj1lbnVtIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmgtNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaDo0NTpzdHJ1Y3QgYm5nZV9hdXhyX2RldiB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaC00Ni1cXHRzdHJ1Y3QgbmV0X2RldmljZVxcdCpuZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oLTQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmg6NTA6XFx0c3RydWN0IGJuZ2VfbXNpeF9pbmZvXFx0bXNpeF9pbmZvW0JOR0VfTUFYX1JPQ0VfTVNJWF07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaC01MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmgtNTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaDo1NDpcXHRzdHJ1Y3QgYm5nZV9hdXhyX2luZm9cXHQqYXV4cl9pbmZvO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmgtNTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oLTc0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmg6NzU6dm9pZCBibmdlX3JkbWFfYXV4X2RldmljZV91bmluaXQoc3RydWN0IGJuZ2VfZGV2ICpiZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oOjc2OnZvaWQgYm5nZV9yZG1hX2F1eF9kZXZpY2VfZGVsKHN0cnVjdCBibmdlX2RldiAqYmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaDo3Nzp2b2lkIGJuZ2VfcmRtYV9hdXhfZGV2aWNlX2FkZChzdHJ1Y3QgYm5nZV9kZXYgKmJkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmg6Nzg6dm9pZCBibmdlX3JkbWFfYXV4X2RldmljZV9pbml0KHN0cnVjdCBibmdlX2RldiAqYmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaDo3OTppbnQgYm5nZV9yZWdpc3Rlcl9kZXYoc3RydWN0IGJuZ2VfYXV4cl9kZXYgKmFkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaC04MC1cXHRcXHQgICAgICB2b2lkICpoYW5kbGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9hdXhyLmg6ODE6dm9pZCBibmdlX3VucmVnaXN0ZXJfZGV2KHN0cnVjdCBibmdlX2F1eHJfZGV2ICphZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfYXV4ci5oOjgyOmludCBibmdlX3NlbmRfbXNnKHN0cnVjdCBibmdlX2F1eHJfZGV2ICphZGV2LCBzdHJ1Y3QgYm5nZV9md19tc2cgKmZ3X21zZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2F1eHIuaC04My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjk6I2luY2x1ZGUgXFxcImJuZ2UuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjEwOiNpbmNsdWRlIFxcXCJibmdlX2RldmxpbmsuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjExOiNpbmNsdWRlIFxcXCJibmdlX2h3cm0uaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjEyOiNpbmNsdWRlIFxcXCJibmdlX2h3cm1fbGliLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoxMzojaW5jbHVkZSBcXFwiYm5nZV9saW5rLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM9MTY9TU9EVUxFX0RFU0NSSVBUSU9OKERSVl9TVU1NQVJZKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTE3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTg6Y2hhciBibmdlX2RyaXZlcl9uYW1lW10gPSBEUlZfTkFNRTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTE5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM9MjA9c3RhdGljIGNvbnN0IHN0cnVjdCB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MjY6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGJuZ2VfcGNpX3RibFtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjctXFx0eyBQQ0lfVkRFVklDRShCUk9BRENPTSwgMHgxNzgwKSwgLmRyaXZlcl9kYXRhID0gQkNNNTc3MDggfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzAtfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjMxOk1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBibmdlX3BjaV90YmwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozMzpzdGF0aWMgdm9pZCBibmdlX3ByaW50X2RldmljZV9pbmZvKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBlbnVtIGJvYXJkX2lkeCBpZHgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTQyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6NDM6Ym9vbCBibmdlX2F1eF9yZWdpc3RlcmVkKHN0cnVjdCBibmdlX2RldiAqYmQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy00NC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzo0NTpcXHRzdHJ1Y3QgYm5nZV9hdXhyX2RldiAqYmFfZGV2ID0gYmQtXFx1MDAzZWF1eHJfZGV2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtNDYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6NTM6c3RhdGljIHZvaWQgYm5nZV9udm1fY2ZnX3Zlcl9nZXQoc3RydWN0IGJuZ2VfZGV2ICpiZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTU0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtNTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzo1NzpcXHRpZiAoIWJuZ2VfaHdybV9udm1fZGV2X2luZm8oYmQsIFxcdTAwMjZudm1faW5mbykpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy01OC1cXHRcXHRzbnByaW50ZihiZC1cXHUwMDNlbnZtX2NmZ192ZXIsIEZXX1ZFUl9TVFJfTEVOLCBcXFwiJWQuJWQuJWRcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy02Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjYzOnN0YXRpYyBpbnQgYm5nZV9mdW5jX3FjYXBzKHN0cnVjdCBibmdlX2RldiAqYmQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy02NC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTY2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6Njc6XFx0cmMgPSBibmdlX2h3cm1fZnVuY19xY2FwcyhiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy02OC1cXHRpZiAocmMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTcwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6NzE6XFx0cmMgPSBibmdlX2h3cm1fcXVldWVfcXBvcnRjZmcoYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtNzItXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6ODA6c3RhdGljIGludCBibmdlX2Z1bmNfcXJjYXBzX3FjZmcoc3RydWN0IGJuZ2VfZGV2ICpiZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTgxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtODMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzo4NDpcXHRyYyA9IGJuZ2VfaHdybV9mdW5jX3Jlc2NfcWNhcHMoYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtODUtXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTg5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6OTA6XFx0cmMgPSBibmdlX2h3cm1fZnVuY19xY2ZnKGJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTkxLVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy05NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjk2OlxcdHJjID0gYm5nZV9od3JtX3ZuaWNfcWNhcHMoYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtOTctXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTEwNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjEwNTpzdGF0aWMgdm9pZCBibmdlX2Z3X3VucmVnaXN0ZXJfZGV2KHN0cnVjdCBibmdlX2RldiAqYmQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xMDYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTA3LVxcdC8qIGN0eCBtZW0gZnJlZSBhZnRlciB1bnJndHIgb25seSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTA4OlxcdGJuZ2VfaHdybV9mdW5jX2Rydl91bnJndHIoYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTA5OlxcdGJuZ2VfZnJlZV9jdHhfbWVtKGJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTExMC19XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoxMTI6c3RhdGljIHZvaWQgYm5nZV9zZXRfZGZsdF9yc3NfaGFzaF90eXBlKHN0cnVjdCBibmdlX2RldiAqYmQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xMTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xMjEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoxMjI6c3RhdGljIGludCBibmdlX2Z3X3JlZ2lzdGVyX2RldihzdHJ1Y3QgYm5nZV9kZXYgKmJkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTIzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTI2LVxcdGJkLVxcdTAwM2Vmd19jYXAgPSAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTI3OlxcdHJjID0gYm5nZV9od3JtX3Zlcl9nZXQoYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTI4LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xMzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoxMzM6XFx0Ym5nZV9udm1fY2ZnX3Zlcl9nZXQoYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTM1OlxcdHJjID0gYm5nZV9od3JtX2Z1bmNfcmVzZXQoYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTM2LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xNDAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoxNDE6XFx0Ym5nZV9od3JtX2Z3X3NldF90aW1lKGJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTE0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTE0My1cXHQvKiBHZXQgdGhlIHJlc291cmNlcyBhbmQgY29uZmlndXJhdGlvbiBmcm9tIGZpcm13YXJlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoxNDQ6XFx0cmMgPSBibmdlX2Z1bmNfcWNhcHMoYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTQ1LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoxNTA6XFx0cmMgPSBibmdlX2FsbG9jX2N0eF9tZW0oYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTUxLVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xNTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoxNTY6XFx0cmMgPSBibmdlX2h3cm1fZnVuY19kcnZfcmd0cihiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xNTctXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTE2MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjE2MjpcXHRyYyA9IGJuZ2VfZnVuY19xcmNhcHNfcWNmZyhiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xNjMtXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTE2Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjE2ODpcXHRibmdlX3NldF9kZmx0X3Jzc19oYXNoX3R5cGUoYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTY5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xNzItZXJyX2Z1bmNfdW5yZ3RyOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTczOlxcdGJuZ2VfaHdybV9mdW5jX2Rydl91bnJndHIoYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTc0LWVycl9mcmVlX2N0eF9tZW06XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoxNzU6XFx0Ym5nZV9mcmVlX2N0eF9tZW0oYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTc2LVxcdHJldHVybiByYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMTc4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MTc5OnN0YXRpYyB2b2lkIGJuZ2VfcGNpX2Rpc2FibGUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xODAte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoxODY6c3RhdGljIGludCBibmdlX3BjaV9lbmFibGUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0xODcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yMDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoyMDM6XFx0cmMgPSBwY2lfcmVxdWVzdF9yZWdpb25zKHBkZXYsIGJuZ2VfZHJpdmVyX25hbWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjA0LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoyMjA6c3RhdGljIHZvaWQgYm5nZV91bm1hcF9iYXJzKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjIxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjIyMjpcXHRzdHJ1Y3QgYm5nZV9kZXYgKmJkID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjIzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yMzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoyMzU6c3RhdGljIHZvaWQgYm5nZV9zZXRfbWF4X2Z1bmNfaXJxcyhzdHJ1Y3QgYm5nZV9kZXYgKmJkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjM2LVxcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBtYXhfaXJxcylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjQwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MjQxOnN0YXRpYyBpbnQgYm5nZV9nZXRfbWF4X2lycShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTI0Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTI0OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjI0OTpzdGF0aWMgaW50IGJuZ2VfbWFwX2RiX2JhcihzdHJ1Y3QgYm5nZV9kZXYgKmJkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjUwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjYwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MjYxOnN0YXRpYyBpbnQgYm5nZV9wcm9iZV9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yNjIte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjYzLVxcdHVuc2lnbmVkIGludCBtYXhfaXJxcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjI2NDpcXHRzdHJ1Y3QgYm5nZV9kZXYgKmJkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjY1LVxcdGludCByYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjc5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MjgwOlxcdHJjID0gYm5nZV9wY2lfZW5hYmxlKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjgxLVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMjgzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6Mjg0OlxcdGJuZ2VfcHJpbnRfZGV2aWNlX2luZm8ocGRldiwgZW50LVxcdTAwM2Vkcml2ZXJfZGF0YSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yODUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzoyODY6XFx0YmQgPSBibmdlX2RldmxpbmtfYWxsb2MocGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yODctXFx0aWYgKCFiZCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0yOTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozMDA6XFx0cmMgPSBibmdlX2luaXRfaHdybV9yZXNvdXJjZXMoYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzAxLVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MzA0OlxcdHJjID0gYm5nZV9md19yZWdpc3Rlcl9kZXYoYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzA1LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zMDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozMTA6XFx0Ym5nZV9kZXZsaW5rX3JlZ2lzdGVyKGJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTMxMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjMxMjpcXHRtYXhfaXJxcyA9IGJuZ2VfZ2V0X21heF9pcnEocGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozMTM6XFx0Ym5nZV9zZXRfbWF4X2Z1bmNfaXJxcyhiZCwgbWF4X2lycXMpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzE0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MzE1OlxcdGJuZ2VfYXV4X2luaXRfZGZsdF9jb25maWcoYmQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzE2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MzE3OlxcdHJjID0gYm5nZV9uZXRfaW5pdF9kZmx0X2NvbmZpZyhiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zMTgtXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTMyMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjMyNDpcXHRyYyA9IGJuZ2VfbWFwX2RiX2JhcihiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zMjUtXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTMzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjMzNTpcXHRibmdlX3JkbWFfYXV4X2RldmljZV9pbml0KGJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTMzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjMzNzpcXHRyYyA9IGJuZ2VfYWxsb2NfaXJxcyhiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zMzgtXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjM0MzpcXHRyYyA9IGJuZ2VfbmV0ZGV2X2FsbG9jKGJkLCBtYXhfaXJxcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNDQtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNDYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozNDc6XFx0Ym5nZV9yZG1hX2F1eF9kZXZpY2VfYWRkKGJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM0OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzUzLWVycl9mcmVlX2lycTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjM1NDpcXHRibmdlX2ZyZWVfaXJxcyhiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNTYtZXJyX3VuaW5pdF9hdXhyOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MzU3OlxcdGJuZ2VfcmRtYV9hdXhfZGV2aWNlX3VuaW5pdChiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNTktZXJyX2NvbmZpZ191bmluaXQ6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozNjA6XFx0Ym5nZV9uZXRfdW5pbml0X2RmbHRfY29uZmlnKGJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM2MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM2Mi1lcnJfZndfcmVnOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MzYzOlxcdGJuZ2VfZGV2bGlua191bnJlZ2lzdGVyKGJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjM2NDpcXHRibmdlX2Z3X3VucmVnaXN0ZXJfZGV2KGJkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM2NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jLTM2Ni1lcnJfaHdybV9jbGVhbnVwOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6MzY3OlxcdGJuZ2VfY2xlYW51cF9od3JtX3Jlc291cmNlcyhiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNjktZXJyX2Jhcl91bm1hcDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjM3MDpcXHRibmdlX3VubWFwX2JhcnMocGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNzItZXJyX2RldmxfZnJlZTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjM3MzpcXHRibmdlX2RldmxpbmtfZnJlZShiZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNzQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNzUtZXJyX3BjaV9kaXNhYmxlOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmM6Mzc2OlxcdGJuZ2VfcGNpX2Rpc2FibGUocGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNzctXFx0cmV0dXJuIHJjO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYy0zNzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX2NvcmUuYzozODA6c3RhdGljIHZvaWQgYm5nZV9yZW1vdmVfb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzgxLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfY29yZS5jOjM4MjpcXHRzdHJ1Y3QgYm5nZV9kZXYgKmJkID0gcGNpX2dldF9kcnZkYXRhKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9jb3JlLmMtMzgzLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNTowMDozOC44NjUwODY4MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1NTk1MjgzNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEcml2ZXIncyBQcmVzZW5jZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZHJpdmVyLCBgYm5nZWAuIEZpcnN0IHRob3VnaHQgaXMsIFwiV2hlcmUgZG9lcyB0aGlzIGV2ZW4gZml0PyBJcyBpdCBhIHN0YW5kYXJkIGRyaXZlciBpbiB0aGUgbWFpbmxpbmUga2VybmVsLCBwZXJoYXBzIGEgbW9jayBvciBhIHRlc3QgZHJpdmVyLCBvciBzb21ldGhpbmcgc3BlY2lmaWM/XCIgVGhlbiBJIHJlYWxpemUsIFwiSGFuZyBvbiwgYGJuZ2VgIGRvZXNuJ3QgaW1tZWRpYXRlbHkgcmluZyBhbnkgYmVsbHMgZnJvbSB1cHN0cmVhbSBMaW51eC5cIiBUaGF0IHRyaWdnZXJzIGEgdGhvdWdodDogXCJDb3VsZCB0aGlzIGJlIHNvbWV0aGluZyBhZGRlZCBieSBzeXotY2x1c3RlciBmb3IgZnV6emluZywgb3IgbWF5YmUgaXQncyBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgZGV2ZWxvcG1lbnQgYnJhbmNoP1wiXG5cbkFoLCBub3cgdGhlIGNvbmZ1c2lvbiBraWNrcyBpbi4gVGhlIHRleHQgbGlzdHMgKmRpZmZlcmVudCogcGF0aHMgdGhhdCBhcmUgY2hhbmdlZDogYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9kZXYuY2AgKmFuZCogYGRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jYCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9od3JtX2xpYi5jYC4gU29tZXRoaW5nIHNlZW1zIGluY29uc2lzdGVudCBhYm91dCB0aGlzLCBidXQuLi4gd2FpdCwgdGhlIHByb21wdCBzYXlzIHRoZSBjaGFuZ2VzICpoYXZlIGFscmVhZHkqIGJlZW4gY29tbWl0dGVkIHRvIHRoZSBIRUFELiBPa2F5LCBzbyB0aGF0IG1lYW5zIHRoaXMgZHJpdmVyICpkb2VzKiBleGlzdCBzb21ld2hlcmUgaW4gdGhlIHRyZWUuXG5cbk5vdywgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoaXMgaXMgaW5kZWVkIHJlYWNoYWJsZSB0aHJvdWdoIGNvbmZpZ3VyYXRpb24uIEZpcnN0LCBsZXQncyBzdGFydCB3aXRoIGBDT05GSUdfQk5HRWAuIFRoYXQgc2hvdWxkIGJlIGEgc3RhbmRhcmQgY29uZmlnIG9wdGlvbi4gTGV0J3Mgc2VlLi4uIFl1cCwgYW5kIHRoZSBidWlsZCBzeXN0ZW0gdXNlcyBpdDogYG9iai0kKENPTkZJR19CTkdFKSArPSBibmdlL2AuIE9rYXksIHNvIGBibmdlYCAqY2FuKiBiZSBidWlsdCBpZiBgQ09ORklHX0JOR0VgIGlzIGVuYWJsZWQuIE5vdywgbGV0J3MgY2hlY2sgdGhlIG90aGVyIG9uZSwgYENPTkZJR19JTkZJTklCQU5EX0JOR19SRWAuIFRoYXQncyB0aGUgbmV4dCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjUxMCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIzOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNTowMDo0NS40MjQ2MTgzOTVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1NzkxMjQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJuZ19yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvaHcvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgOTkyIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvTWFrZWZpbGU9MTU9b2JqLSQoQ09ORklHX0lORklOSUJBTkRfQk5YVF9SRSlcXHQrPSBibnh0X3JlL1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9NYWtlZmlsZToxNjpvYmotJChDT05GSUdfSU5GSU5JQkFORF9CTkdfUkUpXFx0XFx0Kz0gYm5nX3JlL1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9NYWtlZmlsZS0xNy1vYmotJChDT05GSUdfSU5GSU5JQkFORF9FUkRNQSlcXHRcXHQrPSBlcmRtYS9cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvS2NvbmZpZz0yPWNvbmZpZyBJTkZJTklCQU5EX0JOR19SRVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9LY29uZmlnLTgtXFx0ICA1MC8xMDAvMjAwLzQwMC84MDAgZ2lnYWJpdCBSb0NFIEhDQXMuIFRoZSBtb2R1bGVcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL0tjb25maWc6OTpcXHQgIHdpbGwgYmUgY2FsbGVkIGJuZ19yZS4gVG8gY29tcGlsZSB0aGlzIGRyaXZlclxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvS2NvbmZpZy0xMC1cXHQgIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9NYWtlZmlsZT0yPWNjZmxhZ3MteSA6PSAtSSAkKHNyY3RyZWUpL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2VcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL01ha2VmaWxlLTMtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19JTkZJTklCQU5EX0JOR19SRSkgKz0gYm5nX3JlLm9cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL01ha2VmaWxlLTUtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9NYWtlZmlsZTo2OmJuZ19yZS15IDo9IGJuZ19kZXYubyBibmdfZncubyBcXFxcXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9NYWtlZmlsZTo3OlxcdCAgICBibmdfcmVzLm8gYm5nX3NwLm8gXFxcXFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvTWFrZWZpbGUtOC1cXHQgICAgYm5nX2RlYnVnZnMub1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jLTctXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jOjg6I2luY2x1ZGUgXFxcImJuZ19yZXMuaFxcXCJcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmMtOS0jaW5jbHVkZSBcXFwiYm5nX2Z3LmhcXFwiXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmMtMTEtI2luY2x1ZGUgXFxcImJuZ2VfYXV4ci5oXFxcIlxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYzoxMjojaW5jbHVkZSBcXFwiYm5nX3JlLmhcXFwiXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jLTEzLSNpbmNsdWRlIFxcXCJibmdfZGVidWdmcy5oXFxcIlxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYy0xNC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmM6MTU6c3RhdGljIHN0cnVjdCBkZW50cnkgKmJuZ19yZV9kZWJ1Z2ZzX3Jvb3Q7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jLTE2LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYzoxNzp2b2lkIGJuZ19yZV9kZWJ1Z2ZzX2FkZF9wZGV2KHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2KVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYy0xOC17XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmMtMjEtXFx0cmRldi1cXHUwMDNlZGJnX3Jvb3QgPVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYzoyMjpcXHRcXHRkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZGV2X25hbWUoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiksIGJuZ19yZV9kZWJ1Z2ZzX3Jvb3QpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYy0yMy19XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jLTI0LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYzoyNTp2b2lkIGJuZ19yZV9kZWJ1Z2ZzX3JlbV9wZGV2KHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2KVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYy0yNi17XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmMtMzAtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jOjMxOnZvaWQgYm5nX3JlX3JlZ2lzdGVyX2RlYnVnZnModm9pZClcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmMtMzIte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYzozMzpcXHRibmdfcmVfZGVidWdmc19yb290ID0gZGVidWdmc19jcmVhdGVfZGlyKFxcXCJibmdfcmVcXFwiLCBOVUxMKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmMtMzQtfVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuYy0zNS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmM6MzY6dm9pZCBibmdfcmVfdW5yZWdpc3Rlcl9kZWJ1Z2ZzKHZvaWQpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jLTM3LXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZWJ1Z2ZzLmM6Mzg6XFx0ZGVidWdmc19yZW1vdmUoYm5nX3JlX2RlYnVnZnNfcm9vdCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5jLTM5LX1cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuaC02LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuaDo3OnZvaWQgYm5nX3JlX2RlYnVnZnNfYWRkX3BkZXYoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuaDo4OnZvaWQgYm5nX3JlX2RlYnVnZnNfcmVtX3BkZXYoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuaC05LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuaDoxMDp2b2lkIGJuZ19yZV9yZWdpc3Rlcl9kZWJ1Z2ZzKHZvaWQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2RlYnVnZnMuaDoxMTp2b2lkIGJuZ19yZV91bnJlZ2lzdGVyX2RlYnVnZnModm9pZCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGVidWdmcy5oLTEyLSNlbmRpZlxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtOS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoxMDojaW5jbHVkZSBcXFwiYm5nX3Jlcy5oXFxcIlxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTExLSNpbmNsdWRlIFxcXCJibmdfc3AuaFxcXCJcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTE0LSNpbmNsdWRlIFxcXCJibmdlX2F1eHIuaFxcXCJcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoxNTojaW5jbHVkZSBcXFwiYm5nX3JlLmhcXFwiXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTYtI2luY2x1ZGUgXFxcImJuZ2VfaHdybS5oXFxcIlxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM9MjE9TU9EVUxFX0xJQ0VOU0UoXFxcIkR1YWwgQlNEL0dQTFxcXCIpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTIyLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjIzOnN0YXRpYyBzdHJ1Y3QgYm5nX3JlX2RldiAqYm5nX3JlX2Rldl9hZGQoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFkZXYsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjQtXFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBibmdlX2F1eHJfZGV2ICphdXhfZGV2KVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTI1LXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyNjpcXHRzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yNy1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyODpcXHQvKiBBbGxvY2F0ZSBibmdfcmVfZGV2IGluc3RhbmNlICovXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6Mjk6XFx0cmRldiA9IGliX2FsbG9jX2RldmljZShibmdfcmVfZGV2LCBpYmRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzAtXFx0aWYgKCFyZGV2KSB7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MzE6XFx0XFx0cHJfZXJyKFxcXCIlczogYm5nX3JlX2RldiBhbGxvY2F0aW9uIGZhaWx1cmUhXFxcIiwgS0JVSUxEX01PRE5BTUUpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTMyLVxcdFxcdHJldHVybiBOVUxMO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDQtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NDU6c3RhdGljIGludCBibmdfcmVfcmVnaXN0ZXJfbmV0ZGV2KHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2KVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ2LXtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTUyLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjUzOnN0YXRpYyB2b2lkIGJuZ19yZV9kZXN0cm95X2NoaXBfY3R4KHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2KVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTU0LXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo1NTpcXHRzdHJ1Y3QgYm5nX3JlX2NoaXBfY3R4ICpjaGlwX2N0eDtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy01Ni1cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTYyLVxcdHJkZXYtXFx1MDAzZXJjZncucmVzID0gTlVMTDtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo2MzpcXHRyZGV2LVxcdTAwM2VibmdfcmVzLmNjdHggPSBOVUxMO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjY0OlxcdHJkZXYtXFx1MDAzZWJuZ19yZXMucGRldiA9IE5VTEw7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNjUtXFx0a2ZyZWUoY2hpcF9jdHgpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNjctXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6Njg6c3RhdGljIGludCBibmdfcmVfc2V0dXBfY2hpcF9jdHgoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNjkte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjcwOlxcdHN0cnVjdCBibmdfcmVfY2hpcF9jdHggKmNoaXBfY3R4O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTcxLVxcdHN0cnVjdCBibmdlX2F1eHJfZGV2ICphdXhfZGV2O1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNzQtXFx0YXV4X2RldiA9IHJkZXYtXFx1MDAzZWF1eF9kZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NzU6XFx0cmRldi1cXHUwMDNlYm5nX3Jlcy5wZGV2ID0gYXV4X2Rldi1cXHUwMDNlcGRldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo3NjpcXHRyZGV2LVxcdTAwM2VyY2Z3LnJlcyA9IFxcdTAwMjZyZGV2LVxcdTAwM2VibmdfcmVzO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTc3LVxcdGNoaXBfY3R4ID0ga3phbGxvY19vYmooKmNoaXBfY3R4KTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTgzLVxcdHJkZXYtXFx1MDAzZWNoaXBfY3R4ID0gY2hpcF9jdHg7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6ODQ6XFx0cmRldi1cXHUwMDNlYm5nX3Jlcy5jY3R4ID0gcmRldi1cXHUwMDNlY2hpcF9jdHg7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtODUtXFx0cmRldi1cXHUwMDNlZGV2X2F0dHIgPSBremFsbG9jX29iaigqcmRldi1cXHUwMDNlZGV2X2F0dHIpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtODctXFx0XFx0Z290byBmcmVlX2NoaXBfY3R4O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjg4OlxcdHJkZXYtXFx1MDAzZWJuZ19yZXMuZGF0dHIgPSByZGV2LVxcdTAwM2VkZXZfYXR0cjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy04OS1cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTk2LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjk3OnN0YXRpYyB2b2lkIGJuZ19yZV9pbml0X2h3cm1faGRyKHN0cnVjdCBpbnB1dCAqaGRyLCB1MTYgb3BjZClcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy05OC17XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xMDMtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MTA0OnN0YXRpYyB2b2lkIGJuZ19yZV9maWxsX2Z3X21zZyhzdHJ1Y3QgYm5nZV9md19tc2cgKmZ3X21zZywgdm9pZCAqbXNnLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTEwNS1cXHRcXHRcXHQgICAgICAgaW50IG1zZ19sZW4sIHZvaWQgKnJlc3AsIGludCByZXNwX21heF9sZW4sXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xMTQtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MTE1OnN0YXRpYyBpbnQgYm5nX3JlX25ldF9yaW5nX2ZyZWUoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTE2LVxcdFxcdFxcdFxcdHUzMiBmd19yaW5nX2lkLCBpbnQgdHlwZSlcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTEyMy1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoxMjQ6XFx0Ym5nX3JlX2luaXRfaHdybV9oZHIoKHZvaWQgKilcXHUwMDI2cmVxLCBIV1JNX1JJTkdfRlJFRSk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTI1LVxcdHJlcS5yaW5nX3R5cGUgPSB0eXBlO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTEyNi1cXHRyZXEucmluZ19pZCA9IGNwdV90b19sZTMyKGZ3X3JpbmdfaWQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjEyNzpcXHRibmdfcmVfZmlsbF9md19tc2coXFx1MDAyNmZ3X21zZywgKHZvaWQgKilcXHUwMDI2cmVxLCBzaXplb2YocmVxKSwgKHZvaWQgKilcXHUwMDI2cmVzcCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xMjgtXFx0XFx0XFx0ICAgIHNpemVvZihyZXNwKSwgQk5HRV9ERkxUX0hXUk1fQ01EX1RJTUVPVVQpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTM1LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjEzNjpzdGF0aWMgaW50IGJuZ19yZV9uZXRfcmluZ19hbGxvYyhzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoxMzc6XFx0XFx0XFx0XFx0IHN0cnVjdCBibmdfcmVfcmluZ19hdHRyICpyaW5nX2F0dHIsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTM4LVxcdFxcdFxcdFxcdCB1MTYgKmZ3X3JpbmdfaWQpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xNDUtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MTQ2OlxcdGJuZ19yZV9pbml0X2h3cm1faGRyKCh2b2lkICopXFx1MDAyNnJlcSwgSFdSTV9SSU5HX0FMTE9DKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xNDctXFx0cmVxLmVuYWJsZXMgPSAwO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTU5LVxcdHJlcS5pbnRfbW9kZSA9IHJpbmdfYXR0ci1cXHUwMDNlbW9kZTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoxNjA6XFx0Ym5nX3JlX2ZpbGxfZndfbXNnKFxcdTAwMjZmd19tc2csICh2b2lkICopXFx1MDAyNnJlcSwgc2l6ZW9mKHJlcSksICh2b2lkICopXFx1MDAyNnJlc3AsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTYxLVxcdFxcdFxcdCAgIHNpemVvZihyZXNwKSwgQk5HRV9ERkxUX0hXUk1fQ01EX1RJTUVPVVQpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTY4LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjE2OTpzdGF0aWMgaW50IGJuZ19yZV9zdGF0c19jdHhfZnJlZShzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldilcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0xNzAte1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTc2LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjE3NzpcXHRibmdfcmVfaW5pdF9od3JtX2hkcigodm9pZCAqKVxcdTAwMjZyZXEsIEhXUk1fU1RBVF9DVFhfRlJFRSk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTc4LVxcdHJlcS5zdGF0X2N0eF9pZCA9IGNwdV90b19sZTMyKHJkZXYtXFx1MDAzZXN0YXRzX2N0eC5md19pZCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MTc5OlxcdGJuZ19yZV9maWxsX2Z3X21zZyhcXHUwMDI2ZndfbXNnLCAodm9pZCAqKVxcdTAwMjZyZXEsIHNpemVvZihyZXEpLCAodm9pZCAqKVxcdTAwMjZyZXNwLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTE4MC1cXHRcXHRcXHQgICBzaXplb2YocmVzcCksIEJOR0VfREZMVF9IV1JNX0NNRF9USU1FT1VUKTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTE4OC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoxODk6c3RhdGljIGludCBibmdfcmVfc3RhdHNfY3R4X2FsbG9jKHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2KVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTE5MC17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTkxLVxcdHN0cnVjdCBibmdlX2F1eHJfZGV2ICphdXhfZGV2ID0gcmRldi1cXHUwMDNlYXV4X2RldjtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoxOTI6XFx0c3RydWN0IGJuZ19yZV9zdGF0cyAqc3RhdHMgPSBcXHUwMDI2cmRldi1cXHUwMDNlc3RhdHNfY3R4O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTE5My1cXHRzdHJ1Y3QgaHdybV9zdGF0X2N0eF9hbGxvY19vdXRwdXQgcmVzcCA9IHt9O1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMTk5LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjIwMDpcXHRibmdfcmVfaW5pdF9od3JtX2hkcigodm9pZCAqKVxcdTAwMjZyZXEsIEhXUk1fU1RBVF9DVFhfQUxMT0MpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTIwMS1cXHRyZXEudXBkYXRlX3BlcmlvZF9tcyA9IGNwdV90b19sZTMyKDEwMDApO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjA0LVxcdHJlcS5zdGF0X2N0eF9mbGFncyA9IFNUQVRfQ1RYX0FMTE9DX1JFUV9TVEFUX0NUWF9GTEFHU19ST0NFO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjIwNTpcXHRibmdfcmVfZmlsbF9md19tc2coXFx1MDAyNmZ3X21zZywgKHZvaWQgKilcXHUwMDI2cmVxLCBzaXplb2YocmVxKSwgKHZvaWQgKilcXHUwMDI2cmVzcCxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yMDYtXFx0XFx0XFx0ICAgc2l6ZW9mKHJlc3ApLCBCTkdFX0RGTFRfSFdSTV9DTURfVElNRU9VVCk7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yMTItXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MjEzOnN0YXRpYyBpbnQgYm5nX3JlX3F1ZXJ5X2h3cm1fdmVyc2lvbihzdHJ1Y3QgYm5nX3JlX2RldiAqcmRldilcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yMTQte1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjE3LVxcdHN0cnVjdCBod3JtX3Zlcl9nZXRfaW5wdXQgdmVyX2dldF9yZXEgPSB7fTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyMTg6XFx0c3RydWN0IGJuZ19yZV9jaGlwX2N0eCAqY2N0eDtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yMTktXFx0c3RydWN0IGJuZ2VfZndfbXNnIGZ3X21zZyA9IHt9O1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjIxLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjIyMjpcXHRibmdfcmVfaW5pdF9od3JtX2hkcigodm9pZCAqKVxcdTAwMjZ2ZXJfZ2V0X3JlcSwgSFdSTV9WRVJfR0VUKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yMjMtXFx0dmVyX2dldF9yZXEuaHdybV9pbnRmX21haiA9IEhXUk1fVkVSU0lPTl9NQUpPUjtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTIyNS1cXHR2ZXJfZ2V0X3JlcS5od3JtX2ludGZfdXBkID0gSFdSTV9WRVJTSU9OX1VQREFURTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyMjY6XFx0Ym5nX3JlX2ZpbGxfZndfbXNnKFxcdTAwMjZmd19tc2csICh2b2lkICopXFx1MDAyNnZlcl9nZXRfcmVxLCBzaXplb2YodmVyX2dldF9yZXEpLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTIyNy1cXHRcXHRcXHQgICAgKHZvaWQgKilcXHUwMDI2dmVyX2dldF9yZXNwLCBzaXplb2YodmVyX2dldF9yZXNwKSxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTI1MC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyNTE6c3RhdGljIHZvaWQgYm5nX3JlX2Rldl91bmluaXQoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjUyLXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yNTMtXFx0aW50IHJjO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjI1NDpcXHRibmdfcmVfZGVidWdmc19yZW1fcGRldihyZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yNTUtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjU2LVxcdGlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoQk5HX1JFX0ZMQUdfUkNGV19DSEFOTkVMX0VOLCBcXHUwMDI2cmRldi1cXHUwMDNlZmxhZ3MpKSB7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MjU3OlxcdFxcdHJjID0gYm5nX3JlX2RlaW5pdF9yY2Z3KFxcdTAwMjZyZGV2LVxcdTAwM2VyY2Z3KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yNTgtXFx0XFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjYwLVxcdFxcdFxcdFxcdCAgIFxcXCJGYWlsZWQgdG8gZGVpbml0aWFsaXplIFJDRlc6ICUjeFxcXCIsIHJjKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyNjE6XFx0XFx0Ym5nX3JlX3N0YXRzX2N0eF9mcmVlKHJkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjI2MjpcXHRcXHRibmdfcmVfZnJlZV9zdGF0c19jdHhfbWVtKHJkZXYtXFx1MDAzZWJuZ19yZXMucGRldiwgXFx1MDAyNnJkZXYtXFx1MDAzZXN0YXRzX2N0eCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MjYzOlxcdFxcdGJuZ19yZV9kaXNhYmxlX3JjZndfY2hhbm5lbChcXHUwMDI2cmRldi1cXHUwMDNlcmNmdyk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MjY0OlxcdFxcdGJuZ19yZV9uZXRfcmluZ19mcmVlKHJkZXYsIHJkZXYtXFx1MDAzZXJjZncuY3JlcS5yaW5nX2lkLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTI2NS1cXHRcXHRcXHQgICAgIFJJTkdfQUxMT0NfUkVRX1JJTkdfVFlQRV9OUSk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6MjY2OlxcdFxcdGJuZ19yZV9mcmVlX3JjZndfY2hhbm5lbChcXHUwMDI2cmRldi1cXHUwMDNlcmNmdyk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjY3LVxcdH1cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTI3MC1cXHRyZGV2LVxcdTAwM2VucXIgPSBOVUxMO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjI3MTpcXHRibmdfcmVfZGVzdHJveV9jaGlwX2N0eChyZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yNzItXFx0aWYgKHRlc3RfYW5kX2NsZWFyX2JpdChCTkdfUkVfRkxBR19ORVRERVZfUkVHSVNURVJFRCwgXFx1MDAyNnJkZXYtXFx1MDAzZWZsYWdzKSlcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTI3NS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyNzY6c3RhdGljIGludCBibmdfcmVfZGV2X2luaXQoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMjc3LXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyNzg6XFx0c3RydWN0IGJuZ19yZV9yaW5nX2F0dHIgcmF0dHIgPSB7fTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyNzk6XFx0c3RydWN0IGJuZ19yZV9jcmVxX2N0eCAqY3JlcTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yODAtXFx0dTMyIGRiX29mZnQ7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0yODUtXFx0LyogUmVnaXN0ZXJlZCBhIG5ldyBSb0NFIGRldmljZSBpbnN0YW5jZSB0byBuZXRkZXYgKi9cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzoyODY6XFx0cmMgPSBibmdfcmVfcmVnaXN0ZXJfbmV0ZGV2KHJkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTI4Ny1cXHRpZiAocmMpIHtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTMwNC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzozMDU6XFx0cmMgPSBibmdfcmVfc2V0dXBfY2hpcF9jdHgocmRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzA2LVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzEwLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjMxMTpcXHRyYyA9IGJuZ19yZV9xdWVyeV9od3JtX3ZlcnNpb24ocmRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzEyLVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTMxNC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzozMTU6XFx0cmMgPSBibmdfcmVfYWxsb2NfZndfY2hhbm5lbChcXHUwMDI2cmRldi1cXHUwMDNlYm5nX3JlcywgXFx1MDAyNnJkZXYtXFx1MDAzZXJjZncpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTMxNi1cXHRpZiAocmMpIHtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTM0MC1cXHRyYXR0ci5scmlkID0gcmRldi1cXHUwMDNlbnFyLVxcdTAwM2Vtc2l4X2VudHJpZXNbQk5HX1JFX0NSRVFfTlFfSURYXS5yaW5nX2lkeDtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzozNDE6XFx0cmMgPSBibmdfcmVfbmV0X3JpbmdfYWxsb2MocmRldiwgXFx1MDAyNnJhdHRyLCBcXHUwMDI2Y3JlcS1cXHUwMDNlcmluZ19pZCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzQyLVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzQ4LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjM0OTpcXHRyYyA9IGJuZ19yZV9lbmFibGVfZndfY2hhbm5lbChcXHUwMDI2cmRldi1cXHUwMDNlcmNmdyxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0zNTAtXFx0XFx0XFx0XFx0XFx0dmlkLCBkYl9vZmZ0KTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTM1Ni1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzozNTc6XFx0cmMgPSBibmdfcmVfZ2V0X2Rldl9hdHRyKFxcdTAwMjZyZGV2LVxcdTAwM2VyY2Z3KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0zNTgtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzYwLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjM2MTpcXHRibmdfcmVfZGVidWdmc19hZGRfcGRldihyZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzozNjI6XFx0cmMgPSBibmdfcmVfYWxsb2Nfc3RhdHNfY3R4X21lbShyZGV2LVxcdTAwM2VibmdfcmVzLnBkZXYsIHJkZXYtXFx1MDAzZWNoaXBfY3R4LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTM2My1cXHRcXHRcXHRcXHRcXHRcXHUwMDI2cmRldi1cXHUwMDNlc3RhdHNfY3R4KTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTM2OS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzozNzA6XFx0cmMgPSBibmdfcmVfc3RhdHNfY3R4X2FsbG9jKHJkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTM3MS1cXHRpZiAocmMpIHtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTM3Ni1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzozNzc6XFx0cmMgPSBibmdfcmVfaW5pdF9yY2Z3KFxcdTAwMjZyZGV2LVxcdTAwM2VyY2Z3LCBcXHUwMDI2cmRldi1cXHUwMDNlc3RhdHNfY3R4KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0zNzgtXFx0aWYgKHJjKSB7XFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0zODYtZnJlZV9zY3R4OlxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjM4NzpcXHRibmdfcmVfc3RhdHNfY3R4X2ZyZWUocmRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzg4LWZyZWVfc3RhdHNfY3R4OlxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjM4OTpcXHRibmdfcmVfZnJlZV9zdGF0c19jdHhfbWVtKHJkZXYtXFx1MDAzZWJuZ19yZXMucGRldiwgXFx1MDAyNnJkZXYtXFx1MDAzZXN0YXRzX2N0eCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzkwLWRpc2FibGVfcmNmdzpcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzozOTE6XFx0Ym5nX3JlX2Rpc2FibGVfcmNmd19jaGFubmVsKFxcdTAwMjZyZGV2LVxcdTAwM2VyY2Z3KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy0zOTItZnJlZV9yaW5nOlxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjM5MzpcXHRibmdfcmVfbmV0X3JpbmdfZnJlZShyZGV2LCByZGV2LVxcdTAwM2VyY2Z3LmNyZXEucmluZ19pZCwgdHlwZSk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtMzk0LWZyZWVfcmNmdzpcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTM5Ni1ucV9hbGxvY19mYWlsOlxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjM5NzpcXHRibmdfcmVfZnJlZV9yY2Z3X2NoYW5uZWwoXFx1MDAyNnJkZXYtXFx1MDAzZXJjZncpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTM5OC1kZXN0cm95X2NoaXBfY3R4OlxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjM5OTpcXHRibmdfcmVfZGVzdHJveV9jaGlwX2N0eChyZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00MDAtbXNpeF9jdHhfZmFpbDpcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQwNi1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0MDc6c3RhdGljIGludCBibmdfcmVfYWRkX2RldmljZShzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYWRldilcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00MDgte1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDEwLVxcdFxcdGNvbnRhaW5lcl9vZihhZGV2LCBzdHJ1Y3QgYm5nZV9hdXhyX3ByaXYsIGF1eF9kZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjQxMTpcXHRzdHJ1Y3QgYm5nX3JlX2VuX2Rldl9pbmZvICpkZXZfaW5mbztcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0MTI6XFx0c3RydWN0IGJuZ19yZV9kZXYgKnJkZXY7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDEzLVxcdGludCByYztcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQxNi1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0MTc6XFx0cmRldiA9IGJuZ19yZV9kZXZfYWRkKGFkZXYsIGF1eHJfcHJpdi1cXHUwMDNlYXV4cl9kZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQxOC1cXHRpZiAoIXJkZXYpIHtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQyNC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0MjU6XFx0cmMgPSBibmdfcmVfZGV2X2luaXQocmRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDI2LVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQzNy1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0Mzg6c3RhdGljIHZvaWQgYm5nX3JlX3JlbW92ZV9kZXZpY2Uoc3RydWN0IGJuZ19yZV9kZXYgKnJkZXYsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDM5LVxcdFxcdFxcdFxcdCBzdHJ1Y3QgYXV4aWxpYXJ5X2RldmljZSAqYXV4X2RldilcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00NDAte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjQ0MTpcXHRibmdfcmVfZGV2X3VuaW5pdChyZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00NDItXFx0aWJfZGVhbGxvY19kZXZpY2UoXFx1MDAyNnJkZXYtXFx1MDAzZWliZGV2KTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ0NS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0NDY6c3RhdGljIGludCBibmdfcmVfcHJvYmUoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFkZXYsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDQ3LVxcdFxcdFxcdGNvbnN0IHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ1MC1cXHRcXHRjb250YWluZXJfb2YoYWRldiwgc3RydWN0IGJuZ2VfYXV4cl9wcml2LCBhdXhfZGV2KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0NTE6XFx0c3RydWN0IGJuZ19yZV9lbl9kZXZfaW5mbyAqZW5faW5mbztcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00NTItXFx0aW50IHJjO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDYxLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjQ2MjpcXHRyYyA9IGJuZ19yZV9hZGRfZGV2aWNlKGFkZXYpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ2My1cXHRpZiAocmMpXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00NjgtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NDY5OnN0YXRpYyB2b2lkIGJuZ19yZV9yZW1vdmUoc3RydWN0IGF1eGlsaWFyeV9kZXZpY2UgKmFkZXYpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDcwLXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0NzE6XFx0c3RydWN0IGJuZ19yZV9lbl9kZXZfaW5mbyAqZGV2X2luZm8gPSBhdXhpbGlhcnlfZ2V0X2RydmRhdGEoYWRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NDcyOlxcdHN0cnVjdCBibmdfcmVfZGV2ICpyZGV2O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ3My1cXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ3NS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0NzY6XFx0Ym5nX3JlX3JlbW92ZV9kZXZpY2UocmRldiwgYWRldik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDc3LVxcdGtmcmVlKGRldl9pbmZvKTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ3OS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0ODA6c3RhdGljIGNvbnN0IHN0cnVjdCBhdXhpbGlhcnlfZGV2aWNlX2lkIGJuZ19yZV9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ4MS1cXHR7IC5uYW1lID0gQk5HX1JFX0FERVZfTkFNRSBcXFwiLnJkbWFcXFwiLCB9LFxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDg0LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjQ4NTpNT0RVTEVfREVWSUNFX1RBQkxFKGF1eGlsaWFyeSwgYm5nX3JlX2lkX3RhYmxlKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy00ODYtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NDg3OnN0YXRpYyBzdHJ1Y3QgYXV4aWxpYXJ5X2RyaXZlciBibmdfcmVfZHJpdmVyID0ge1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ4OC1cXHQubmFtZSA9IFxcXCJyZG1hXFxcIixcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0ODk6XFx0LnByb2JlID0gYm5nX3JlX3Byb2JlLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjQ5MDpcXHQucmVtb3ZlID0gYm5nX3JlX3JlbW92ZSxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0OTE6XFx0LmlkX3RhYmxlID0gYm5nX3JlX2lkX3RhYmxlLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ5Mi19O1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ5My1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0OTQ6c3RhdGljIGludCBfX2luaXQgYm5nX3JlX21vZF9pbml0KHZvaWQpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNDk1LXtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTQ5OC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo0OTk6XFx0Ym5nX3JlX3JlZ2lzdGVyX2RlYnVnZnMoKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy01MDAtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NTAxOlxcdHJjID0gYXV4aWxpYXJ5X2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2Ym5nX3JlX2RyaXZlcik7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNTAyLVxcdGlmIChyYykge1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNTA4LXVucmVnX2RlYnVnZnM6XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmM6NTA5OlxcdGJuZ19yZV91bnJlZ2lzdGVyX2RlYnVnZnMoKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYy01MTAtXFx0cmV0dXJuIHJjO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNTEyLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjUxMzpzdGF0aWMgdm9pZCBfX2V4aXQgYm5nX3JlX21vZF9leGl0KHZvaWQpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNTE0LXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo1MTU6XFx0YXV4aWxpYXJ5X2RyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZibmdfcmVfZHJpdmVyKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19kZXYuYzo1MTY6XFx0Ym5nX3JlX3VucmVnaXN0ZXJfZGVidWdmcygpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jLTUxNy19XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZGV2LmMtNTE4LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjUxOTptb2R1bGVfaW5pdChibmdfcmVfbW9kX2luaXQpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Rldi5jOjUyMDptb2R1bGVfZXhpdChibmdfcmVfbW9kX2V4aXQpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy01LSNpbmNsdWRlIFxcXCJibmdfcm9jZV9oc2kuaFxcXCJcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjY6I2luY2x1ZGUgXFxcImJuZ19yZXMuaFxcXCJcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTctI2luY2x1ZGUgXFxcImJuZ19mdy5oXFxcIlxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0xMC0vKipcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjExOiAqIGJuZ19yZV9tYXBfcmMgIC0gIG1hcCByZXR1cm4gdHlwZSBiYXNlZCBvbiBvcGNvZGVcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTEyLSAqIEBvcGNvZGU6ICByb2NlIHNsb3cgcGF0aCBvcGNvZGVcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMzItICovXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzozMzpzdGF0aWMgaW50IGJuZ19yZV9tYXBfcmModTggb3Bjb2RlKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMzQte1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy01Mi1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjUzOnZvaWQgYm5nX3JlX2ZyZWVfcmNmd19jaGFubmVsKHN0cnVjdCBibmdfcmVfcmNmdyAqcmNmdylcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTU0LXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTU1LVxcdGtmcmVlKHJjZnctXFx1MDAzZWNyc3FlX3RibCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzo1NjpcXHRibmdfcmVfZnJlZV9od3EocmNmdy1cXHUwMDNlcmVzLCBcXHUwMDI2cmNmdy1cXHUwMDNlY21kcS5od3EpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6NTc6XFx0Ym5nX3JlX2ZyZWVfaHdxKHJjZnctXFx1MDAzZXJlcywgXFx1MDAyNnJjZnctXFx1MDAzZWNyZXEuaHdxKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTU4LVxcdHJjZnctXFx1MDAzZXBkZXYgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy02MC1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjYxOmludCBibmdfcmVfYWxsb2NfZndfY2hhbm5lbChzdHJ1Y3QgYm5nX3JlX3JlcyAqcmVzLFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6NjI6XFx0XFx0XFx0ICAgIHN0cnVjdCBibmdfcmVfcmNmdyAqcmNmdylcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTYzLXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjY0OlxcdHN0cnVjdCBibmdfcmVfaHdxX2F0dHIgaHdxX2F0dHIgPSB7fTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjY1OlxcdHN0cnVjdCBibmdfcmVfc2dfaW5mbyBzZ2luZm8gPSB7fTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjY2OlxcdHN0cnVjdCBibmdfcmVfY21kcV9jdHggKmNtZHE7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzo2NzpcXHRzdHJ1Y3QgYm5nX3JlX2NyZXFfY3R4ICpjcmVxO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtNjgtXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTgyLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6ODM6XFx0aWYgKGJuZ19yZV9hbGxvY19pbml0X2h3cShcXHUwMDI2Y3JlcS1cXHUwMDNlaHdxLCBcXHUwMDI2aHdxX2F0dHIpKSB7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy04NC1cXHRcXHRkZXZfZXJyKFxcdTAwMjZyY2Z3LVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTk0LVxcdGh3cV9hdHRyLnR5cGUgPSBCTkdfSFdRX1RZUEVfQ1RYO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6OTU6XFx0aWYgKGJuZ19yZV9hbGxvY19pbml0X2h3cShcXHUwMDI2Y21kcS1cXHUwMDNlaHdxLCBcXHUwMDI2aHdxX2F0dHIpKSB7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy05Ni1cXHRcXHRkZXZfZXJyKFxcdTAwMjZyY2Z3LVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYsXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTExMC1mYWlsOlxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MTExOlxcdGJuZ19yZV9mcmVlX3JjZndfY2hhbm5lbChyY2Z3KTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTExMi1cXHRyZXR1cm4gLUVOT01FTTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMTE0LVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MTE1OnN0YXRpYyBpbnQgYm5nX3JlX3Byb2Nlc3NfcXBfZXZlbnQoc3RydWN0IGJuZ19yZV9yY2Z3ICpyY2Z3LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMTE2LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBjcmVxX3FwX2V2ZW50ICpxcF9ldmVudCxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMTE4LXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjExOTpcXHRzdHJ1Y3QgYm5nX3JlX2h3cSAqaHdxID0gXFx1MDAyNnJjZnctXFx1MDAzZWNtZHEuaHdxO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MTIwOlxcdHN0cnVjdCBibmdfcmVfY3JzcWUgKmNyc3FlO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMTIxLVxcdHUzMiByZXFfc2l6ZTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMTg3LS8qIGZ1bmN0aW9uIGV2ZW50cyAqL1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MTg4OnN0YXRpYyBpbnQgYm5nX3JlX3Byb2Nlc3NfZnVuY19ldmVudChzdHJ1Y3QgYm5nX3JlX3JjZncgKnJjZncsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0xODktXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgY3JlcV9mdW5jX2V2ZW50ICpmdW5jX2V2ZW50KVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yMTMtLyogQ1JFUSBDb21wbGV0aW9uIGhhbmRsZXJzICovXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzoyMTQ6c3RhdGljIHZvaWQgYm5nX3JlX3NlcnZpY2VfY3JlcShzdHJ1Y3QgdGFza2xldF9zdHJ1Y3QgKnQpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yMTUte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MjE2OlxcdHN0cnVjdCBibmdfcmVfcmNmdyAqcmNmdyA9IGZyb21fdGFza2xldChyY2Z3LCB0LCBjcmVxLmNyZXFfdGFza2xldCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzoyMTc6XFx0c3RydWN0IGJuZ19yZV9jcmVxX2N0eCAqY3JlcSA9IFxcdTAwMjZyY2Z3LVxcdTAwM2VjcmVxO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMjE4LVxcdHUzMiB0eXBlLCBidWRnZXQgPSBCTkdfRldfQ1JFUV9FTlRSWV9QT0xMX0JVREdFVDtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjIxOTpcXHRzdHJ1Y3QgYm5nX3JlX2h3cSAqaHdxID0gXFx1MDAyNmNyZXEtXFx1MDAzZWh3cTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTIyMC1cXHRzdHJ1Y3QgY3JlcV9iYXNlICpjcmVxZTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMjI2LVxcdHdoaWxlIChidWRnZXQgXFx1MDAzZSAwKSB7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzoyMjc6XFx0XFx0Y3JlcWUgPSBibmdfcmVfZ2V0X3FlKGh3cSwgaHdxLVxcdTAwM2Vjb25zLCBOVUxMKTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTIyOC1cXHRcXHRpZiAoIUJOR19GV19DUkVRX0NNUF9WQUxJRChjcmVxZSwgY3JlcS1cXHUwMDNlY3JlcV9kYi5kYmluZm8uZmxhZ3MpKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yMzctXFx0XFx0Y2FzZSBDUkVRX0JBU0VfVFlQRV9RUF9FVkVOVDpcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjIzODpcXHRcXHRcXHRibmdfcmVfcHJvY2Vzc19xcF9ldmVudFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMjM5LVxcdFxcdFxcdFxcdChyY2Z3LCAoc3RydWN0IGNyZXFfcXBfZXZlbnQgKiljcmVxZSxcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMjQzLVxcdFxcdGNhc2UgQ1JFUV9CQVNFX1RZUEVfRlVOQ19FVkVOVDpcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjI0NDpcXHRcXHRcXHRpZiAoIWJuZ19yZV9wcm9jZXNzX2Z1bmNfZXZlbnRcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTI0NS1cXHRcXHRcXHQgICAgKHJjZncsIChzdHJ1Y3QgY3JlcV9mdW5jX2V2ZW50ICopY3JlcWUpKVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yNTktXFx0XFx0aHdfcG9sbGVkKys7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzoyNjA6XFx0XFx0Ym5nX3JlX2h3cV9pbmNyX2NvbnMoaHdxLVxcdTAwM2VtYXhfZWxlbWVudHMsIFxcdTAwMjZod3EtXFx1MDAzZWNvbnMsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yNjEtXFx0XFx0XFx0XFx0ICAgICAxLCBcXHUwMDI2Y3JlcS1cXHUwMDNlY3JlcV9kYi5kYmluZm8uZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yNjQtXFx0aWYgKGh3X3BvbGxlZClcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjI2NTpcXHRcXHRibmdfcmVfcmluZ19ucV9kYihcXHUwMDI2Y3JlcS1cXHUwMDNlY3JlcV9kYi5kYmluZm8sXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yNjYtXFx0XFx0XFx0XFx0ICByY2Z3LVxcdTAwM2VyZXMtXFx1MDAzZWNjdHgsIHRydWUpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0yNzEtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzoyNzI6c3RhdGljIGludCBfX3NlbmRfbWVzc2FnZV9iYXNpY19zYW5pdHkoc3RydWN0IGJuZ19yZV9yY2Z3ICpyY2Z3LFxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MjczOlxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgYm5nX3JlX2NtZHFtc2cgKm1zZyxcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTI3NC1cXHRcXHRcXHRcXHQgICAgICAgdTggb3Bjb2RlKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMjc1LXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjI3NjpcXHRzdHJ1Y3QgYm5nX3JlX2NtZHFfY3R4ICpjbWRxO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMjc3LVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zMDEtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzozMDI6c3RhdGljIGludCBfX3NlbmRfbWVzc2FnZShzdHJ1Y3QgYm5nX3JlX3JjZncgKnJjZncsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzozMDM6XFx0XFx0XFx0ICBzdHJ1Y3QgYm5nX3JlX2NtZHFtc2cgKm1zZywgdTggb3Bjb2RlKVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMzA0LXtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTMwNS1cXHR1MzIgYnNpemUsIGZyZWVfc2xvdHMsIHJlcXVpcmVkX3Nsb3RzO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MzA2OlxcdHN0cnVjdCBibmdfcmVfY21kcV9jdHggKmNtZHE7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzozMDc6XFx0c3RydWN0IGJuZ19yZV9jcnNxZSAqY3JzcWU7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zMDgtXFx0c3RydWN0IGJuZ19md19jbWRxZSAqY21kcWU7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzozMDk6XFx0c3RydWN0IGJuZ19yZV9od3EgKmh3cTtcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTMxMC1cXHR1MzIgc3dfcHJvZCwgY21kcV9wcm9kO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zMjItXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZod3EtXFx1MDAzZWxvY2spO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MzIzOlxcdHJlcXVpcmVkX3Nsb3RzID0gYm5nX3JlX2dldF9jbWRfc2xvdHMobXNnLVxcdTAwM2VyZXEpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMzI0LVxcdGZyZWVfc2xvdHMgPSBIV1FfRlJFRV9TTE9UUyhod3EpO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zMzYtXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzozMzc6XFx0YnNpemUgPSBibmdfcmVfc2V0X2NtZF9zbG90cyhtc2ctXFx1MDAzZXJlcSk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zMzgtXFx0Y3JzcWUtXFx1MDAzZWZyZWVfc2xvdHMgPSBmcmVlX3Nsb3RzO1xcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zNDUtXFx0aWYgKF9fZ2V0X2NtZHFfYmFzZV9yZXNwX3NpemUobXNnLVxcdTAwM2VyZXEsIG1zZy1cXHUwMDNlcmVxX3N6KSBcXHUwMDI2XFx1MDAyNiBtc2ctXFx1MDAzZXNiKSB7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzozNDY6XFx0XFx0c3RydWN0IGJuZ19yZV9yY2Z3X3NidWYgKnNidWYgPSBtc2ctXFx1MDAzZXNiO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMzQ3LVxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy0zNTktXFx0XFx0c3dfcHJvZCA9IEhXUV9DTVAoaHdxLVxcdTAwM2Vwcm9kLCBod3EpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6MzYwOlxcdFxcdGNtZHFlID0gYm5nX3JlX2dldF9xZShod3EsIHN3X3Byb2QsIE5VTEwpO1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtMzYxLVxcdFxcdC8qIENvcHkgYSBzZWdtZW50IG9mIHRoZSByZXEgY21kIHRvIHRoZSBjbWRxICovXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTM5OS0gKi9cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjQwMDpzdGF0aWMgaW50IF9fd2FpdF9mb3JfcmVzcChzdHJ1Y3QgYm5nX3JlX3JjZncgKnJjZncsIHUxNiBjb29raWUpXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy00MDEte1xcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmM6NDAyOlxcdHN0cnVjdCBibmdfcmVfY21kcV9jdHggKmNtZHE7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzo0MDM6XFx0c3RydWN0IGJuZ19yZV9jcnNxZSAqY3JzcWU7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy00MDQtXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTQxNS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjQxNjpcXHRcXHRibmdfcmVfc2VydmljZV9jcmVxKFxcdTAwMjZyY2Z3LVxcdTAwM2VjcmVxLmNyZXFfdGFza2xldCk7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy00MTctXFxuLS1cXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTQyMy0vKipcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjQyNDogKiBibmdfcmVfcmNmd19zZW5kX21lc3NhZ2UgICAtXFx0aW50ZXJmYWNlIHRvIHNlbmRcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTQyNS0gKiBhbmQgY29tcGxldGUgcmNmdyBjb21tYW5kLlxcbi0tXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy00MzUtICovXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzo0MzY6aW50IGJuZ19yZV9yY2Z3X3NlbmRfbWVzc2FnZShzdHJ1Y3QgYm5nX3JlX3JjZncgKnJjZncsXFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzo0Mzc6XFx0XFx0XFx0ICAgICBzdHJ1Y3QgYm5nX3JlX2NtZHFtc2cgKm1zZylcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jLTQzOC17XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy00MzktXFx0c3RydWN0IGNyZXFfcXBfZXZlbnQgKmV2bnQgPSAoc3RydWN0IGNyZXFfcXBfZXZlbnQgKiltc2ctXFx1MDAzZXJlc3A7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYzo0NDA6XFx0c3RydWN0IGJuZ19yZV9jcnNxZSAqY3JzcWU7XFxuZHJpdmVycy9pbmZpbmliYW5kL2h3L2JuZ19yZS9ibmdfZncuYy00NDEtXFx0dTE2IGNvb2tpZTtcXG4tLVxcbmRyaXZlcnMvaW5maW5pYmFuZC9ody9ibmdfcmUvYm5nX2Z3LmMtNDQ4LVxcdGlmIChyYylcXG5kcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL2JuZ19mdy5jOjQ0OTpcXHRcXHRyZXR1cm4gcmMgPT0gLUVOWElPID8gYm5nX3JlX21hcF9yYyhvcGNvZGUpIDogcmM7XFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE1OjAwOjQ1LjU2MDQxODcyMloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4MTMyMTQzMzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIFBvdGVudGlhbCBGdXp6aW5nIFJlYWNoYWJpbGl0eSBmb3IgQnJvYWRjb20gQk5HRSBEcml2ZXIgQ2hhbmdlcyoqXG5cbk9rYXksIEknbSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCBtb2RpZmllcyB0aGUgQnJvYWRjb20gYEJOR0VgIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBgQ09ORklHX0lORklOSUJBTkRfQk5HX1JFYCBjb25maWd1cmF0aW9uLiBUaGUgY2hhbmdlcyBpbnZvbHZlIG1vZGlmeWluZyBob3cgcmluZyBJRHMgYXJlIGhhbmRsZWQgKGZyb20gYHUxNmAgdG8gYHUzMmApIGluIHJpbmcgYWxsb2NhdGlvbiBhbmQgZnJlZWluZyBmdW5jdGlvbnMsIGJvdGggd2l0aGluIHRoZSBgYm5nZV9kZXYuY2AgYW5kIGBibmdlX2h3cm1fbGliLmNgIGZpbGVzLiBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGNvZGUgcGF0aHMgYXJlIHJlYWNoYWJsZSB3aXRoaW4gYSBmdXp6aW5nIGNvbnRleHQgbGlrZSBRRU1VLlxuXG5Jbml0aWFsbHksIEkgaWRlbnRpZmllZCBgQ09ORklHX0lORklOSUJBTkRfQk5HX1JFYCBhcyB0aGUgcmVsZXZhbnQgY29uZmlnIGFuZCB0aGUgcGF0Y2ggY2hhbmdlcy4gTXkgZmlyc3QgaW5zdGluY3Qgd2FzIHRvIGNoZWNrIHdoZXRoZXIgdGhpcyBpcyBhIHJlYWwgY29uZmlnLlxuXG5UaGUgY3J1Y2lhbCBwb2ludCBoZXJlIGlzIHdoZXRoZXIgdGhlIGRyaXZlciwgYGJuZ2VgLCB3aGljaCBzZWVtcyB0byBiZSBhIHJlYWwgUENJIGRyaXZlciAoY29uZmlybWVkIGJ5IHRoZSBgYm5nZV9wY2lfdGJsYCBlbnRyaWVzIHdpdGggYSByZWFsIFBDSSBkZXZpY2UgSUQpIGNhbiBiZSBmdXp6ZWQuIEl0J3Mgbm90IGEgc3RhbmRhcmQgcHJhY3RpY2UgdG8gZnV6eiBQQ0kgZHJpdmVycyB3aXRob3V0IHNvbWUgZm9ybSBvZiBkZXZpY2UgZW11bGF0aW9uLiBUaGUgcXVlc3Rpb24gaXMgd2hldGhlciBzeXprYWxsZXIncyBjYXBhYmlsaXRpZXMgYXJlIHN1ZmZpY2llbnQsIGdpdmVuIHRoZSBwcm9tcHQuIFN5emthbGxlciBoYXMgUENJIGRldmljZSBlbXVsYXRpb24sIHNvIGl0IHNlZW1zIGxpa2UgSSAqY2FuKiByZWFjaCB0aGVzZSBjb2RlIHBhdGhzLlxuXG5JIGFsc28gY29uc2lkZXJlZCB3aGV0aGVyIGl0IGlzIGEgc3l6a2FsbGVyJ3MgbW9jayBkcml2ZXIsIGJ1dCBjb25maXJtZWQgd2l0aCB0aGUgY29tbWl0IGF1dGhvciB0aGF0IHRoaXMgaXMgYW4gZXhpc3RpbmcgZHJpdmVyIGluIHRoZSBrZXJuZWwgc291cmNlLlxuXG5Gb2N1c2luZyBvbiB0aGUgY2hhbmdlZCBmdW5jdGlvbnMsIG5hbWVseSBgYm5nX3JlX25ldF9yaW5nX2ZyZWVgLCBgYm5nX3JlX25ldF9yaW5nX2FsbG9jYCwgYGh3cm1fcmluZ19mcmVlX3NlbmRfbXNnYCwgYW5kIGBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2dgLCBhbmQgc2V2ZXJhbCBtb3JlIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHJpbmcgYWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uIGluIGBibmdlX25ldGRldi5jYCwgSSBkZXRlcm1pbmVkIHRoYXQgdGhlc2UgYWxsIHJlbGF0ZSB0byByaW5nIGFsbG9jYXRpb24gYW5kIHJlbGVhc2UgYW5kIEhXUk0gbWVzc2FnaW5nIGluIHRoZSBkcml2ZXIuXG5cblRoZXJlZm9yZSwgc2luY2Ugc3l6a2FsbGVyICpkb2VzKiBoYXZlIFBDSSBmdXp6aW5nIHN1cHBvcnQgd2l0aCBzb2Z0d2FyZS1lbXVsYXRlZCBQQ0kgZGV2aWNlcywgd2hpY2ggd291bGQgaW52b2x2ZSBpbmplY3Rpb24gb2YgUENJIGNvbmZpZyBzcGFjZSwgTU1JTywgYW5kIHRoZSBsaWtlLCBhbmQgdGhlIGZhY3QgdGhhdCBgYm5nZWAgc2VlbXMgdG8gYmUgYSByZWFsIFBDSSBkcml2ZXIgdGhhdCBjYW4gcG90ZW50aWFsbHkgYmUgcmVhY2hlZCB3aXRoIHN5emthbGxlciwgSSB3b3VsZCBjb25jbHVkZSB0aGF0IHRoZSBjb2RlIHBhdGhzIGFyZSByZWFjaGFibGUgaW4gUUVNVSB3aXRoIHN5emthbGxlci4gVGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGBCTkdFYCBhbmQgYElORklOSUJBTkRfQk5HX1JFYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg1OTYsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNzY2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE1OjAxOjEzLjY5MjU2NTc2MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Nzc4OTA4NTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJOR0VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjUwPWNvbmZpZyBCTlhUX0hXTU9OXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjI1ODpjb25maWcgQk5HRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjU5LVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBUaG9yVWx0cmEgRXRoZXJuZXQgZGV2aWNlIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE1OjAxOjE0LjI3MDQ2NTY5NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3MDU0NzkzNjc1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHF1aWNrIGFzc2Vzc21lbnQgb2YgdGhpcyBjb25maWd1cmF0aW9uIHNjZW5hcmlvOlxuXG4qKkluaXRpYWwgQ29uZmlndXJhdGlvbiBBc3Nlc3NtZW50KipcblxuQWxyaWdodCwgc28gYEJOR0VgIGlzIGRlZmluaXRlbHkgYSB2YWxpZCBjb25maWd1cmF0aW9uIGl0ZW0sIGFuZCBgSU5GSU5JQkFORF9CTkdfUkVgIGlzIGFsc28gcHJlc2VudC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaCBhdCBmaXJzdCBnbGFuY2UuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCwgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIGlzIHRvIGRldGVybWluZSBpZiBgQk5HRWAgaGFzIGFueSBzcGVjaWZpYyBkZXBlbmRlbmNpZXMuIEtub3dpbmcgd2hhdCBgQk5HRWAgcmVsaWVzIHVwb24gaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBpdHMgcm9sZSBhbmQgcG90ZW50aWFsIGltcGFjdCB3aXRoaW4gdGhlIG92ZXJhbGwgc3lzdGVtLiBUaW1lIHRvIGRpZyBhIGJpdCBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyMDEzLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTU6MDQ6MDQuODE4NDA4NjYzWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTM3MjQ3NTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJOR0VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnPTI1MD1jb25maWcgQk5YVF9IV01PTlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZzoyNTg6Y29uZmlnIEJOR0VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI1OS1cXHR0cmlzdGF0ZSBcXFwiQnJvYWRjb20gVGhvclVsdHJhIEV0aGVybmV0IGRldmljZSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNTowNDowNS4zMTIxNDM2MTVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA0NzcxODIwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBgQk5HRWAgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hhdCdzIGhvb2tlZCBpbnRvIGBCTkdFYD9cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzLCBpdHMgdXBzdHJlYW0gYW5kIGRvd25zdHJlYW0gcmVsYXRpb25zaGlwcy4gSSdtIG5vdCBqdXN0IGxvb2tpbmcgZm9yIGEgc2ltcGxlIGxpc3Q7IEkgd2FudCB0byBzZWUgdGhlICpuYXR1cmUqIG9mIHRob3NlIGRlcGVuZGVuY2llcy4gQXJlIHdlIHRhbGtpbmcgZGlyZWN0IGZ1bmN0aW9uIGNhbGxzLCBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzLCBtZXNzYWdlIHF1ZXVlcywgZXh0ZXJuYWwgQVBJcywgY29uZmlndXJhdGlvbiBmaWxlcywgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSB0eXBlIG9mIGRlcGVuZGVuY3kgZGljdGF0ZXMgdGhlIGltcGFjdCBvZiBhbnkgY2hhbmdlIHRvIGBCTkdFYC5cblxuSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBwaWVjZXMgb2YgdGhlIHN5c3RlbSByZWx5IG9uIGl0IGFuZCwgY29udmVyc2VseSwgd2hhdCBpdCBuZWVkcyB0byBmdW5jdGlvbiBjb3JyZWN0bHkuIFRoaXMgaXMgY3JpdGljYWwgZm9yIGltcGFjdCBhbmFseXNpcy4gSSdtIHRoaW5raW5nIGFib3V0IHBvdGVudGlhbCBib3R0bGVuZWNrcywgc2luZ2xlIHBvaW50cyBvZiBmYWlsdXJlLCBhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiByZWZhY3RvcmluZyBvciwgaGVhdmVuIGZvcmJpZCwgcmVtb3ZpbmcgYEJOR0VgLiBBcmUgd2UgZGVhbGluZyB3aXRoIGEgdGlnaHQsIHBvdGVudGlhbGx5IGZyYWdpbGUgY291cGxpbmcsIG9yIHNvbWV0aGluZyBtb3JlIGxvb3NlbHkgY291cGxlZCBhbmQgcm9idXN0P1xuXG5NeSBtZW50YWwgY2hlY2tsaXN0IGlzIHJ1bm5pbmc6IHNvdXJjZSBjb2RlLCBkb2N1bWVudGF0aW9uLCBhbnkgYXJjaGl0ZWN0dXJhbCBkaWFncmFtcy4uLiBJJ2xsIG5lZWQgdG8gdXNlIG15IHVzdWFsIHRvb2xzIHRvIHRyYWNlIHRoZSBjYWxscywgY2hlY2sgZm9yIHNoYXJlZCByZXNvdXJjZXMsIGFuZCBsb29rIGZvciBhbnkgdW51c3VhbCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGluZGljYXRlIGEgaGlkZGVuIG9yIGNvbXBsZXggZGVwZW5kZW5jeS4gVW5kZXJzdGFuZGluZyB0aGUgZGVwZW5kZW5jaWVzIGlzIHRoZSBmb3VuZGF0aW9uIGZvciBhbnkgZnVydGhlciBhbmFseXNpcyBvciBtb2RpZmljYXRpb24gb2YgdGhpcyBjb21wb25lbnQuIFRpbWUgdG8gcm9sbCB1cCBteSBzbGVldmVzIGFuZCBnZXQgdG8gd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6NDIzMTIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNTowNDoxMC4zNTk4NjU2OVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwMjc1ODczLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCTkdFXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZz0yNTA9Y29uZmlnIEJOWFRfSFdNT05cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc6MjU4OmNvbmZpZyBCTkdFXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZy0yNTktXFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIFRob3JVbHRyYSBFdGhlcm5ldCBkZXZpY2Ugc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTU6MDQ6MTAuNTQwMTUwODcyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NDQyNTU4NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuT2theSwgaG9sZCBvbiBhIG1pbnV0ZS4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGluY29tcGxldGUuIEkganVtcGVkIHRvIGEgY29uY2x1c2lvbiB0b28gcXVpY2tseS4gVGhlIHBocmFzZSBgY29uZmlnIEJOR0VgIGlzIGEgY2xlYXIgaW5kaWNhdG9yIHRoYXQgSSdtIGRlYWxpbmcgd2l0aCBhIGNvbmZpZ3VyYXRpb24gc2V0dGluZyByZWxhdGVkIHRvIGEgXCJCTkdFXCIgY29tcG9uZW50IG9yIG1vZHVsZS4gQnV0IHRoYXQncyBqdXN0IHRoZSBzdGFydGluZyBwb2ludC4gVG8gdHJ1bHkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb24sIGFuZCB0byBmb3JtdWxhdGUgYSB0cnVseSBhY2N1cmF0ZSBhc3Nlc3NtZW50IG9mIHRoZSBzaWduaWZpY2FuY2Ugb2YgdGhpcyBsaW5lIHdpdGhpbiB0aGUgYnJvYWRlciBjb250ZXh0LCBJIGFic29sdXRlbHkgbmVlZCB0byBleGFtaW5lIHRoZSBzdWJzZXF1ZW50IGxpbmVzIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgb3IgcmVsZXZhbnQgY29kZSBibG9jay4gVGhlIGRlcGVuZGVuY3kgb2YgYEJOR0VgIG9uIHdoYXRldmVyIGNvbWVzIGFmdGVyIGl0IGlzIHBhcmFtb3VudC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBgQk5HRWAgY29uZmlndXJhdGlvbiBhbmQgaXRzIGFzc29jaWF0ZWQgcGFyYW1ldGVycywgZGVwZW5kZW5jaWVzLCBvciBjb25kaXRpb25zLiBJcyBpdCBhIGRlZmF1bHQgc2V0dGluZz8gQW4gb3ZlcnJpZGU/IEFuIGVuYWJsaW5nIGZsYWc/IFdpdGhvdXQgc2VlaW5nIHdoYXQgZm9sbG93cywgSSdtIG1pc3NpbmcgY3JpdGljYWwgY29udGV4dCBhbmQgcG90ZW50aWFsbHkgb3Zlcmxvb2tpbmcgc3VidGxlLCB5ZXQgdml0YWwsIGRlc2lnbiBkZWNpc2lvbnMgb3IgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gY29uZmxpY3RzLiBUaGUgYmVoYXZpb3Igb2Ygd2hhdGV2ZXIgXCJCTkdFXCIgaXMgd291bGQgYmUgYWZmZWN0ZWQgYnkgdGhlIG5leHQgbGluZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI3NTIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNTowNDoxNC40ODQ0MTEyMjVaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NzIwMjcwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgQk5HRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWc9MjUwPWNvbmZpZyBCTlhUX0hXTU9OXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnLTI1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9LY29uZmlnOjI1ODpjb25maWcgQk5HRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL0tjb25maWctMjU5LVxcdHRyaXN0YXRlIFxcXCJCcm9hZGNvbSBUaG9yVWx0cmEgRXRoZXJuZXQgZGV2aWNlIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE1OjA0OjE0LjY1MTY2MzY2OVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDgzOTU5NTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgeW91ciBzdW1tYXJ5OlxuXG4qKkNvbnNpZGVyaW5nIEZpbGUgQW5hbHlzaXMgT3B0aW9ucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgc2l0dWF0aW9uIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMsIFwiRG8gSSByZWFsbHkgbmVlZCB0aGUgZnVsbCBgZ3JlcGAgYW5hbHlzaXMgaGVyZSwgb3IgY2FuIEkgZ2V0IGF3YXkgd2l0aCBhIHNpbXBsZXIgbWV0aG9kP1wiIFRoZSBgLUEgMTBgIG9wdGlvbiBmb3IgYGdyZXBgIGlzIHRlbXB0aW5nLCBhcyBpdCB3b3VsZCBwcm92aWRlIHNvbWUgY29udGV4dCBhcm91bmQgZWFjaCBtYXRjaCwgYnV0IGl0J3MgcHJvYmFibHkgb3ZlcmtpbGwgZm9yIHdoYXQgSSdtIHRyeWluZyB0byBhY2hpZXZlLiBJJ20gYWxyZWFkeSBwcmV0dHkgZmFtaWxpYXIgd2l0aCB0aGUgZGF0YSBhbmQsIGhvbmVzdGx5LCBqdXN0IHJlYWRpbmcgdGhlIGZpbGUgaXRzZWxmIG1pZ2h0IGJlIHRoZSBtb3N0IGVmZmljaWVudCBhcHByb2FjaCwgZXNwZWNpYWxseSBpZiBJIGNhbiBxdWlja2x5IGlkZW50aWZ5IHRoZSBrZXkgc2VjdGlvbnMgSSdtIGludGVyZXN0ZWQgaW4gd2l0aG91dCBhIGxvdCBvZiBleHRyYSBvdXRwdXQgY2x1dHRlcmluZyB0aGluZ3MgdXAuIEknbGwgbmVlZCB0byB3ZWlnaCBzcGVlZCBhZ2FpbnN0IGNvbXBsZXRlbmVzczsgZ2l2ZW4gbXkgZXhwZXJ0aXNlLCBhIGRpcmVjdCByZWFkIGlzIHByb2JhYmx5IHRoZSBzbWFydCBtb3ZlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzEzMSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE1OjA0OjE4LjczNTYyNzU4OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzY1MDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyNTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyNTA6XFx0Y29uZmlnIEJOWFRfSFdNT05cXG4gMjUxOlxcdFxcdGJvb2wgXFxcIkJyb2FkY29tIE5ldFh0cmVtZS1DL0UgSFdNT04gc3VwcG9ydFxcXCJcXG4gMjUyOlxcdFxcdGRlZmF1bHQgeVxcbiAyNTM6XFx0XFx0ZGVwZW5kcyBvbiBCTlhUIFxcdTAwMjZcXHUwMDI2IEhXTU9OIFxcdTAwMjZcXHUwMDI2ICEoQk5YVD15IFxcdTAwMjZcXHUwMDI2IEhXTU9OPW0pXFxuIDI1NDpcXHRcXHRoZWxwXFxuIDI1NTpcXHRcXHQgIFNheSBZIGlmIHlvdSB3YW50IHRvIGV4cG9zZSB0aGUgdGhlcm1hbCBzZW5zb3IgZGF0YSBvbiBOZXRYdHJlbWUtQy9FXFxuIDI1NjpcXHRcXHQgIGRldmljZXMsIHZpYSB0aGUgaHdtb24gc3lzZnMgaW50ZXJmYWNlLlxcbiAyNTc6XFx0XFxuIDI1ODpcXHRjb25maWcgQk5HRVxcbiAyNTk6XFx0XFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIFRob3JVbHRyYSBFdGhlcm5ldCBkZXZpY2Ugc3VwcG9ydFxcXCJcXG4gMjYwOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDI2MTpcXHRcXHRzZWxlY3QgTkVUX0RFVkxJTktcXG4gMjYyOlxcdFxcdHNlbGVjdCBQQUdFX1BPT0xcXG4gMjYzOlxcdFxcdHNlbGVjdCBBVVhJTElBUllfQlVTXFxuIDI2NDpcXHRcXHRoZWxwXFxuIDI2NTpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEJyb2FkY29tIFRob3JVbHRyYSA1MC8xMDAvMjAwLzQwMC84MDAgZ2lnYWJpdFxcbiAyNjY6XFx0XFx0ICBFdGhlcm5ldCBjYXJkcy4gVGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBibmdfZW4uIFRvIGNvbXBpbGUgdGhpc1xcbiAyNjc6XFx0XFx0ICBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuXFxuIDI2ODpcXHRcXG4gMjY5OlxcdGNvbmZpZyBCQ01BU1BcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTU6MDQ6MTguNzM1ODExMDI4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MzExOTUwODczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBkaXN0aWxsZWQ6XG5cbioqRGVwZW5kZW5jeSBEZWVwIERpdmUqKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIG1vZHVsZSdzIGRlcGVuZGVuY2llcy4gVGhlIGNydWNpYWwgcG9pbnQgc2VlbXMgdG8gYmUgdGhhdCBgQk5HRWAgcmVsaWVzIG9uIGBQQ0lgLiBUaGF0IG1ha2VzIHNlbnNlOyBpdCdzIGxpa2VseSBhIGhhcmR3YXJlIGFic3RyYWN0aW9uLiBBbmQgbm93LCBJIHNlZSB0aGF0IGBJTkZJTklCQU5EX0JOR19SRWAgaXMgYnVpbHQgb24gdG9wIG9mIGBCTkdFYC4gR2l2ZW4gdGhlIEluZmluaWJhbmQgY29udGV4dCwgdGhhdCdzIG5vdCBzdXJwcmlzaW5nLiBUbyB1bmRlcnN0YW5kIHRoZSB3aG9sZSBwaWN0dXJlLCBJIHNob3VsZCBjaGVjayB0aGUgS2NvbmZpZyBmaWxlIGZvciB0aGUgYm5nX3JlIGRyaXZlciDigJMgc3BlY2lmaWNhbGx5LCBsZXQncyBsb29rIGF0IGBkcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgdGhlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGFuZCBkZXBlbmRlbmNpZXMgd2lsbCBiZSBjbGVhcmx5IHNwZWxsZWQgb3V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzY4MSwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTU6MDQ6NTguMDQ3NzY1NjkxWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDU1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL2luZmluaWJhbmQvaHcvYm5nX3JlL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBJTkZJTklCQU5EX0JOR19SRVxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIE5leHQgZ2VuZXJhdGlvbiBSb0NFIEhDQSBzdXBwb3J0XFxcIlxcbiAgIDQ6XFx0XFx0ZGVwZW5kcyBvbiA2NEJJVFxcbiAgIDU6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUIFxcdTAwMjZcXHUwMDI2IERDQiBcXHUwMDI2XFx1MDAyNiBCTkdFXFxuICAgNjpcXHRcXHRoZWxwXFxuICAgNzpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIEJyb2FkY29tIE5leHQgZ2VuZXJhdGlvblxcbiAgIDg6XFx0XFx0ICA1MC8xMDAvMjAwLzQwMC84MDAgZ2lnYWJpdCBSb0NFIEhDQXMuIFRoZSBtb2R1bGVcXG4gICA5OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgYm5nX3JlLiBUbyBjb21waWxlIHRoaXMgZHJpdmVyXFxuICAxMDpcXHRcXHQgIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxNTowNDo1OC4wNDc4Nzk5NTFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTY0NjQyNjA0MTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBJbmZpbmliYW5kIEJORyBSRSBEcml2ZXIgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBgSU5GSU5JQkFORF9CTkdfUkVgIGhhcyBhIGZldyBkZXBlbmRlbmNpZXM6IGA2NEJJVGAsIGBJTkVUYCwgYERDQmAsIGFuZCBgQk5HRWAuICBJIG5lZWQgdG8gbWFrZSBzdXJlIGBCTkdFYCBhbmQgYElORklOSUJBTkRfQk5HX1JFYCBhcmUgZW5hYmxlZC5cblxuTm93LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGNyaXRpY2FsIGZ1bmN0aW9ucy4gIExldCdzIHNlZTogSSd2ZSBnb3QgYGJuZ19yZV9uZXRfcmluZ19mcmVlYCwgYGJuZ19yZV9uZXRfcmluZ19hbGxvY2AsIGBod3JtX3JpbmdfZnJlZV9zZW5kX21zZ2AsIGBod3JtX3JpbmdfYWxsb2Nfc2VuZF9tc2dgLCBgYm5nZV9od3JtX3J4X2FnZ19yaW5nX2FsbG9jYCwgYGJuZ2VfaHdybV9yeF9yaW5nX2FsbG9jYCwgYGJuZ2VfaHdybV9yaW5nX2FsbG9jYCwgYGJuZ2VfaHdybV9yeF9yaW5nX2ZyZWVgLCBgYm5nZV9od3JtX3J4X2FnZ19yaW5nX2ZyZWVgLCBgYm5nZV9od3JtX3R4X3JpbmdfZnJlZWAsIGBibmdlX2h3cm1fY3BfcmluZ19mcmVlYCwgYW5kIGBibmdlX2h3cm1fcmluZ19mcmVlYC4gVGhvc2UgYXJlIHRoZSBjb3JlIGZ1bmN0aW9ucyB0byBmb2N1cyBvbi5cblxuSSBzaG91bGQgYWxzbyBub3RlIHRoZSBvdGhlciBmdW5jdGlvbnMgSSBzcG90dGVkOiBgYm5nZV9jcF9yaW5nX2Zvcl9yeGAgYW5kIGBibmdlX2NwX3JpbmdfZm9yX3R4YCwgd2hpY2ggYXJlIGp1c3Qgc2ltcGxlIGdldHRlcnMuIFRoZW4gdGhlcmUncyB0aGUgaW5pdGlhbGl6YXRpb24gcm91dGluZXM6IGBibmdlX2luaXRfbnFfdHJlZWAsIGBibmdlX2luaXRfb25lX3J4X3JpbmdfcnhiZGAsIGBibmdlX2luaXRfb25lX2FnZ19yaW5nX3J4YmRgLCBgYm5nZV9pbml0X3R4X3JpbmdzYCwgYW5kIGBibmdlX2ZpbGxfaHdfcnNzX3RibGAuICBGaW5hbGx5LCB0aGVyZSdzIGBibmdlX2Rpc2FibGVfaW50YCwgd2hpY2ggaXMgdGVhcmRvd24uIFNvLCBJIGRvbid0IG5lZWQgdG8gZm9jdXMgb24gdGhvc2UsIGl0IGlzIGp1c3QgdGhvc2UgY29yZSBmdW5jdGlvbnMuXG5cbkFscmlnaHQsIHNvIHRoZSBrZXkgc3ltYm9scyBhcmUgdGhvc2UgYWxsb2NhdGlvbiBhbmQgZnJlZSBmdW5jdGlvbnMuIE5vdywgbGV0J3Mgc2VlIHdoZXJlIHRoZXkncmUgZGVmaW5lZC4gV2FpdC4gYGJuZ2VfaHdybV9yaW5nX2ZyZWVgIGlzIHN0YXRpYyB3aXRoaW4gYGJuZ2VfbmV0ZGV2LmNgLiBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlc2Ugc3ltYm9scyBhcmUgc3RhdGljIG9yIGV4cG9ydGVkIHRvIHNlZSBpZiB0aGV5IGNhbiBiZSBmdXp6ZWQuIGBibmdfcmVfbmV0X3JpbmdfZnJlZWAgYW5kIGBibmdfcmVfbmV0X3JpbmdfYWxsb2NgIGFyZSBzdGF0aWMgaW4gYGJuZ19kZXYuY2AuICBgaHdybV9yaW5nX2ZyZWVfc2VuZF9tc2dgIGFuZCBgaHdybV9yaW5nX2FsbG9jX3NlbmRfbXNnYCBhcmUgZ2xvYmFsIGluIGBibmdlX2h3cm1fbGliLmNgLiAgYGJuZ2VfaHdybV9yeF9hZ2dfcmluZ19hbGxvY2AsIGBibmdlX2h3cm1fcnhfcmluZ19hbGxvY2AsIGBibmdlX2h3cm1fcmluZ19hbGxvY2AgYXJlIHN0YXRpYyBpbiBgYm5nZV9uZXRkZXYuY2AuIEFuZCBgYm5nZV9od3JtX3J4X3JpbmdfZnJlZWAsIGBibmdlX2h3cm1fcnhfYWdnX3JpbmdfZnJlZWAsIGBibmdlX2h3cm1fdHhfcmluZ19mcmVlYCwgYGJuZ2VfaHdybV9jcF9yaW5nX2ZyZWVgLCBgYm5nZV9od3JtX3JpbmdfZnJlZWAgYXJlIHN0YXRpYyB3aXRoaW4gYGJuZ2VfbmV0ZGV2LmNgLlxuXG5Ob3csIHRoZSBxdWVzdGlvbiBpcywgaXMgdGhpcyBhIHdvcnRod2hpbGUgdGFyZ2V0IGZvciBmdXp6aW5nPyBBYnNvbHV0ZWx5LiAgVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHdpdGhpbiBhIGRyaXZlciwgYW5kIGRyaXZlcnMgYXJlIHByaW1lIHRhcmdldHMuICBTaW5jZSB0aGUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdXNpbmcgc3l6a2FsbGVyJ3MgUENJIGVtdWxhdGlvbi4gSSByZW1lbWJlciBzeXprYWxsZXIgKmRvZXMqIGhhdmUgUENJIGVtdWxhdGlvbi4gIFRoZSBwcm9tcHQgbWVudGlvbnMgcmVhY2hpbmcgY29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgYnV0IHN5emthbGxlcidzIFBDSSBlbXVsYXRpb24gc2hvdWxkIGJ5cGFzcyB0aGF0IGNvbnN0cmFpbnQuXG5cbkxldCdzIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50czogYEJOR0VgIGFuZCBgSU5GSU5JQkFORF9CTkdfUkVgIGFyZSBkZWZpbml0ZSwgYW5kIEkgc2hvdWxkIGFsc28gYWRkIGBEQ0JgIHRvIHRoZSBsaXN0IGJlY2F1c2UgaXQncyBhIGRlcGVuZGVuY3kgb2YgYElORklOSUJBTkRfQk5HX1JFYC5cblxuRmluYWxseSwgbGV0J3MgbG9vayBhdCB0aGUgcGF0Y2ggaXRzZWxmIGFnYWluLiBUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgYGZ3X3JpbmdfaWRgIGZyb20gYSBgdTE2YCB0byBhIGB1MzJgLiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSBiZWNhdXNlIGl0IGFsdGVycyB0aGUgcmluZyBJRCBzaXplIGFuZCBob3cgaXQncyBwYXNzZWQgdG8gdGhlIGZpcm13YXJlLiBUaGF0J3MgZ29vZCwgdGhhdCdzIHdoYXQgSSB3YW50LlxuXG5Pa2F5LCBJJ20gcmVhZHkgdG8gc2V0IHRoZSByZXN1bHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDEwNiwiT3V0cHV0VG9rZW5zIjoyODIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDAyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTU6MDU6MTQuNTEyMTQ0NDQ1WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjczOTU1MDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTkdFXCIsXG4gICAgXCJJTkZJTklCQU5EX0JOR19SRVwiLFxuICAgIFwiRENCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYm5nX3JlX25ldF9yaW5nX2ZyZWVcIixcbiAgICBcImJuZ19yZV9uZXRfcmluZ19hbGxvY1wiLFxuICAgIFwiaHdybV9yaW5nX2ZyZWVfc2VuZF9tc2dcIixcbiAgICBcImh3cm1fcmluZ19hbGxvY19zZW5kX21zZ1wiLFxuICAgIFwiYm5nZV9od3JtX3J4X2FnZ19yaW5nX2FsbG9jXCIsXG4gICAgXCJibmdlX2h3cm1fcnhfcmluZ19hbGxvY1wiLFxuICAgIFwiYm5nZV9od3JtX3JpbmdfYWxsb2NcIixcbiAgICBcImJuZ2VfaHdybV9yeF9yaW5nX2ZyZWVcIixcbiAgICBcImJuZ2VfaHdybV9yeF9hZ2dfcmluZ19mcmVlXCIsXG4gICAgXCJibmdlX2h3cm1fdHhfcmluZ19mcmVlXCIsXG4gICAgXCJibmdlX2h3cm1fY3BfcmluZ19mcmVlXCIsXG4gICAgXCJibmdlX2h3cm1fcmluZ19mcmVlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEJyb2FkY29tIEJOR0UgYW5kIEJOR19SRSBkcml2ZXJzIHRvIHN1cHBvcnQgMzItYml0IGZpcm13YXJlIHJpbmcgSURzIGluc3RlYWQgb2YgMTYtYml0LiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHRoZSBkcml2ZXIncyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBoYXJkd2FyZS9maXJtd2FyZSBkdXJpbmcgcmluZyBhbGxvY2F0aW9uIGFuZCBmcmVlaW5nLiBUaGUgZHJpdmVyIGNhbiBiZSB0ZXN0ZWQgdmlhIFBDSSBlbXVsYXRpb24gaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJOR0VcIixcbiAgICBcIklORklOSUJBTkRfQk5HX1JFXCIsXG4gICAgXCJEQ0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJibmdfcmVfbmV0X3JpbmdfZnJlZVwiLFxuICAgIFwiYm5nX3JlX25ldF9yaW5nX2FsbG9jXCIsXG4gICAgXCJod3JtX3JpbmdfZnJlZV9zZW5kX21zZ1wiLFxuICAgIFwiaHdybV9yaW5nX2FsbG9jX3NlbmRfbXNnXCIsXG4gICAgXCJibmdlX2h3cm1fcnhfYWdnX3JpbmdfYWxsb2NcIixcbiAgICBcImJuZ2VfaHdybV9yeF9yaW5nX2FsbG9jXCIsXG4gICAgXCJibmdlX2h3cm1fcmluZ19hbGxvY1wiLFxuICAgIFwiYm5nZV9od3JtX3J4X3JpbmdfZnJlZVwiLFxuICAgIFwiYm5nZV9od3JtX3J4X2FnZ19yaW5nX2ZyZWVcIixcbiAgICBcImJuZ2VfaHdybV90eF9yaW5nX2ZyZWVcIixcbiAgICBcImJuZ2VfaHdybV9jcF9yaW5nX2ZyZWVcIixcbiAgICBcImJuZ2VfaHdybV9yaW5nX2ZyZWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgQnJvYWRjb20gQk5HRSBhbmQgQk5HX1JFIGRyaXZlcnMgdG8gc3VwcG9ydCAzMi1iaXQgZmlybXdhcmUgcmluZyBJRHMgaW5zdGVhZCBvZiAxNi1iaXQuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGRyaXZlcidzIGludGVyYWN0aW9uIHdpdGggdGhlIGhhcmR3YXJlL2Zpcm13YXJlIGR1cmluZyByaW5nIGFsbG9jYXRpb24gYW5kIGZyZWVpbmcuIFRoZSBkcml2ZXIgY2FuIGJlIHRlc3RlZCB2aWEgUENJIGVtdWxhdGlvbiBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow96mw7[1] Phase: Succeeded StartedAt: 2026-06-30 15:05:26 +0000 UTC FinishedAt: 2026-06-30 15:05:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow96mw7[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-30 15:05:26 +0000 UTC FinishedAt: 2026-06-30 15:05:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflow96mw7[2] Phase: Succeeded StartedAt: 2026-06-30 15:05:26 +0000 UTC FinishedAt: 2026-06-30 16:11:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-30 15:05:26 +0000 UTC FinishedAt: 2026-06-30 16:11:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-30 15:05:26 +0000 UTC FinishedAt: 2026-06-30 15:06:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-30 15:05:26 +0000 UTC FinishedAt: 2026-06-30 15:05:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow96mw7/series-workflow96mw7-convert-artifact-1550204232/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-30 15:06:01 +0000 UTC FinishedAt: 2026-06-30 15:35:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-30 15:06:01 +0000 UTC FinishedAt: 2026-06-30 15:35:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*f57a416f-7ab8-4f07-b68f-4a141a12dc94,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow96mw7/series-workflow96mw7-convert-artifact-1550204232/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "40b6865a-e5d1-4f97-a636-0cd8eaf7b29c", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow96mw7/series-workflow96mw7-build-action-2974034366/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-30 15:06:01 +0000 UTC FinishedAt: 2026-06-30 15:35:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*f57a416f-7ab8-4f07-b68f-4a141a12dc94,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow96mw7/series-workflow96mw7-convert-artifact-1550204232/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "40b6865a-e5d1-4f97-a636-0cd8eaf7b29c", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow96mw7/series-workflow96mw7-build-action-2974034366/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-30 15:35:17 +0000 UTC FinishedAt: 2026-06-30 15:35:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-30 15:35:17 +0000 UTC FinishedAt: 2026-06-30 15:35:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-30 15:35:17 +0000 UTC FinishedAt: 2026-06-30 15:35:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-30 15:35:17 +0000 UTC FinishedAt: 2026-06-30 15:35:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow96mw7/series-workflow96mw7-convert-artifact-4194736431/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-30 15:35:27 +0000 UTC FinishedAt: 2026-06-30 15:37:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-30 15:35:27 +0000 UTC FinishedAt: 2026-06-30 15:37:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*40b6865a-e5d1-4f97-a636-0cd8eaf7b29c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow96mw7/series-workflow96mw7-build-action-2974034366/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-30 15:37:29 +0000 UTC FinishedAt: 2026-06-30 15:37:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-30 15:37:29 +0000 UTC FinishedAt: 2026-06-30 15:37:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-30 15:37:29 +0000 UTC FinishedAt: 2026-06-30 16:08:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-30 15:37:29 +0000 UTC FinishedAt: 2026-06-30 16:08:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*f57a416f-7ab8-4f07-b68f-4a141a12dc94,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow96mw7/series-workflow96mw7-convert-artifact-4194736431/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "8a1c6360-4dc0-4cf4-b4e2-a80e50f4e9c3", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow96mw7/series-workflow96mw7-build-action-337011907/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-30 15:37:29 +0000 UTC FinishedAt: 2026-06-30 16:08:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*f57a416f-7ab8-4f07-b68f-4a141a12dc94,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow96mw7/series-workflow96mw7-convert-artifact-4194736431/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "8a1c6360-4dc0-4cf4-b4e2-a80e50f4e9c3", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow96mw7/series-workflow96mw7-build-action-337011907/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-30 16:08:16 +0000 UTC FinishedAt: 2026-06-30 16:08:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-30 16:08:16 +0000 UTC FinishedAt: 2026-06-30 16:08:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-30 16:08:16 +0000 UTC FinishedAt: 2026-06-30 16:10:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-30 16:08:16 +0000 UTC FinishedAt: 2026-06-30 16:10:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8a1c6360-4dc0-4cf4-b4e2-a80e50f4e9c3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow96mw7/series-workflow96mw7-build-action-337011907/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-30 16:10:21 +0000 UTC FinishedAt: 2026-06-30 16:11:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-30 16:10:21 +0000 UTC FinishedAt: 2026-06-30 16:11:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*40b6865a-e5d1-4f97-a636-0cd8eaf7b29c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8a1c6360-4dc0-4cf4-b4e2-a80e50f4e9c3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow96mw7/series-workflow96mw7-build-action-2974034366/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow96mw7/series-workflow96mw7-build-action-337011907/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-30 16:10:21 +0000 UTC FinishedAt: 2026-06-30 16:10:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-30 16:10:21 +0000 UTC FinishedAt: 2026-06-30 16:10:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow96mw7/series-workflow96mw7-convert-artifact-886790376/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-30 16:10:21 +0000 UTC FinishedAt: 2026-06-30 16:10:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-30 16:10:21 +0000 UTC FinishedAt: 2026-06-30 16:10:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-30 16:10:22 +0000 UTC FinishedAt: 2026-06-30 16:10:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-30 16:10:34 +0000 UTC FinishedAt: 2026-06-30 16:11:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflow96mw7[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["bng_re_net_ring_free","bng_re_net_ring_alloc","hwrm_ring_free_send_msg","hwrm_ring_alloc_send_msg","bnge_hwrm_rx_agg_ring_alloc","bnge_hwrm_rx_ring_alloc","bnge_hwrm_ring_alloc","bnge_hwrm_rx_ring_free","bnge_hwrm_rx_agg_ring_free","bnge_hwrm_tx_ring_free","bnge_hwrm_cp_ring_free","bnge_hwrm_ring_free"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1398b1014909618f65ff6bcebcb2ee5ccd44fdc0","config_name":"upstream-apparmor-kasan.config","enable_configs":["BNGE","INFINIBAND_BNG_RE","DCB"],"series_id":"80ad49a1-1dfe-4948-bc82-d71d3ed5d633","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-30 16:10:34 +0000 UTC FinishedAt: 2026-06-30 16:11:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*40b6865a-e5d1-4f97-a636-0cd8eaf7b29c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8a1c6360-4dc0-4cf4-b4e2-a80e50f4e9c3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow96mw7/series-workflow96mw7-build-action-2974034366/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow96mw7/series-workflow96mw7-build-action-337011907/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow96mw7/series-workflow96mw7-convert-artifact-886790376/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}