Name: series-workflowtxnbb Phase: Succeeded StartedAt: 2026-08-03 05:00:29 +0000 UTC FinishedAt: 2026-08-03 09:08:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtxnbb[0] Phase: Succeeded StartedAt: 2026-08-03 05:00:29 +0000 UTC FinishedAt: 2026-08-03 05:24:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtxnbb[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 05:00:29 +0000 UTC FinishedAt: 2026-08-03 05:24:18 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "86c3125c75d79ee7fb4d045bb9ada4c5b067eacc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "CFG80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "86c3125c75d79ee7fb4d045bb9ada4c5b067eacc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "CFG80211" ], "series_id": "fa322a84-429f-40ea-8266-33179ed648fb" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_link_unreserve_chanctx", "__ieee80211_link_release_channel", "ieee80211_link_use_reserved_context", "ieee80211_channel_switch" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAzIDA1OjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHgmIzM0OywKICAgICYjMzQ7X19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHQmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG1hYzgwMjExIGNoYW5uZWwgY29udGV4dCByZXNlcnZhdGlvbiBhbmQgdW5yZXNlcnZhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIHRoZSByZXBsYWNlbWVudCBvZiBjaGFubmVsIGNvbnRleHRzLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgY2ZnODAyMTEgY2hhbm5lbCBzd2l0Y2ggb3BlcmF0aW9ucyBhbmQgaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNToyMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGY0OTk3ODAzZmY0YjcwNWFkNWVhZmYwMGE3NzE3MGMxNWMzZTgxMDNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDA1OjIzOjE4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9jaGFuLmMgYi9uZXQvbWFjODAyMTEvY2hhbi5jXG5pbmRleCA1MTUyYjg0YTMzNTc3Li5kMzc4OWNmOGQ0MTc5IDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL2NoYW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL2NoYW4uY1xuQEAgLTIzMSw2ICYjNDM7MjMxLDEzIEBAIGludCBpZWVlODAyMTFfY2hhbmN0eF9yZWZjb3VudChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdHJldHVybiBudW07XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbFxuJiM0MztpZWVlODAyMTFfY2hhbmN0eF9oYXNfcmVwbGFjZV9wYXJ0bmVyKHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4KVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIGN0eC1cdTAwM2VyZXBsYWNlX3N0YXRlID09IElFRUU4MDIxMV9DSEFOQ1RYX1dJTExfQkVfUkVQTEFDRUQgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICAgIGN0eC1cdTAwM2VyZXBsYWNlX2N0eDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IGllZWU4MDIxMV9udW1fY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgaW50IHJhZGlvX2lkeClcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHggKmN0eDtcbkBAIC0xNDAzLDYgJiM0MzsxNDEwLDcgQEAgdm9pZCBpZWVlODAyMTFfbGlua191bnJlc2VydmVfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IGxpbmstXHUwMDNlc2RhdGE7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHggKmN0eCA9IGxpbmstXHUwMDNlcmVzZXJ2ZWRfY2hhbmN0eDtcbiYjNDM7XHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHggKm9sZF9jdHggPSBOVUxMO1xuIFxuIFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkoc2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlaHcud2lwaHkpO1xuIFxuQEAgLTE0MTYsNiAmIzQzOzE0MjQsNyBAQCB2b2lkIGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxuIFx0XHRcdGlmIChXQVJOX09OKCFjdHgtXHUwMDNlcmVwbGFjZV9jdHgpKVxuIFx0XHRcdFx0cmV0dXJuO1xuIFxuJiM0MztcdFx0XHRvbGRfY3R4ID0gY3R4LVx1MDAzZXJlcGxhY2VfY3R4O1xuIFx0XHRcdFdBUk5fT04oY3R4LVx1MDAzZXJlcGxhY2VfY3R4LVx1MDAzZXJlcGxhY2Vfc3RhdGUgIT1cbiBcdFx0XHQgICAgICAgIElFRUU4MDIxMV9DSEFOQ1RYX1dJTExfQkVfUkVQTEFDRUQpO1xuIFx0XHRcdFdBUk5fT04oY3R4LVx1MDAzZXJlcGxhY2VfY3R4LVx1MDAzZXJlcGxhY2VfY3R4ICE9IGN0eCk7XG5AQCAtMTQyNiw2ICYjNDM7MTQzNSwxMSBAQCB2b2lkIGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxuIFxuIFx0XHRcdGxpc3RfZGVsX3JjdShcdTAwMjZjdHgtXHUwMDNlbGlzdCk7XG4gXHRcdFx0a2ZyZWVfcmN1KGN0eCwgcmN1X2hlYWQpO1xuJiM0MztcbiYjNDM7XHRcdFx0aWYgKGllZWU4MDIxMV9jaGFuY3R4X3JlZmNvdW50KHNkYXRhLVx1MDAzZWxvY2FsLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgICAgb2xkX2N0eCkgPT0gMClcbiYjNDM7XHRcdFx0XHRpZWVlODAyMTFfZnJlZV9jaGFuY3R4KHNkYXRhLVx1MDAzZWxvY2FsLCBvbGRfY3R4LFxuJiM0MztcdFx0XHRcdFx0XHQgICAgICAgZmFsc2UpO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdGllZWU4MDIxMV9mcmVlX2NoYW5jdHgoc2RhdGEtXHUwMDNlbG9jYWwsIGN0eCwgZmFsc2UpO1xuIFx0XHR9XG5AQCAtMTcwNSw3ICYjNDM7MTcxOSw4IEBAIGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9yZWFzc2lnbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcbiBcbiBcdGllZWU4MDIxMV9jaGVja19mYXN0X3htaXRfaWZhY2Uoc2RhdGEpO1xuIFxuLVx0aWYgKGllZWU4MDIxMV9jaGFuY3R4X3JlZmNvdW50KGxvY2FsLCBvbGRfY3R4KSA9PSAwKVxuJiM0MztcdGlmIChpZWVlODAyMTFfY2hhbmN0eF9yZWZjb3VudChsb2NhbCwgb2xkX2N0eCkgPT0gMCBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgIWllZWU4MDIxMV9jaGFuY3R4X2hhc19yZXBsYWNlX3BhcnRuZXIob2xkX2N0eCkpXG4gXHRcdGllZWU4MDIxMV9mcmVlX2NoYW5jdHgobG9jYWwsIG9sZF9jdHgsIGZhbHNlKTtcbiBcbiBcdGllZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmKGxvY2FsLCBuZXdfY3R4KTtcbkBAIC0yMTc0LDcgJiM0MzsyMTg5LDggQEAgdm9pZCBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbiBcdH1cbiBcbiBcdGllZWU4MDIxMV9hc3NpZ25fbGlua19jaGFuY3R4KGxpbmssIE5VTEwsIGZhbHNlKTtcbi1cdGlmIChpZWVlODAyMTFfY2hhbmN0eF9yZWZjb3VudChsb2NhbCwgY3R4KSA9PSAwKVxuJiM0MztcdGlmIChpZWVlODAyMTFfY2hhbmN0eF9yZWZjb3VudChsb2NhbCwgY3R4KSA9PSAwIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAhaWVlZTgwMjExX2NoYW5jdHhfaGFzX3JlcGxhY2VfcGFydG5lcihjdHgpKVxuIFx0XHRpZWVlODAyMTFfZnJlZV9jaGFuY3R4KGxvY2FsLCBjdHgsIHNraXBfaWRsZV9yZWNhbGMpO1xuIFxuIFx0bGluay1cdTAwM2VyYWRhcl9yZXF1aXJlZCA9IGZhbHNlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA1OjIzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4JiMzNDssCiAgICAmIzM0O19faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9jaGFubmVsX3N3aXRjaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBtYWM4MDIxMSBjaGFubmVsIGNvbnRleHQgcmVzZXJ2YXRpb24gYW5kIHVucmVzZXJ2YXRpb24gbG9naWMsIHNwZWNpZmljYWxseSBoYW5kbGluZyB0aGUgcmVwbGFjZW1lbnQgb2YgY2hhbm5lbCBjb250ZXh0cy4gVGhpcyBpcyByZWFjaGFibGUgdmlhIGNmZzgwMjExIGNoYW5uZWwgc3dpdGNoIG9wZXJhdGlvbnMgYW5kIGlzIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmNDk5NzgwM2ZmNGI3MDVhZDVlYWZmMDBhNzcxNzBjMTVjM2U4MTAzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMyAwNToyMzoxOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9jaGFuLmMgYi9uZXQvbWFjODAyMTEvY2hhbi5jCmluZGV4IDUxNTJiODRhMzM1NzcuLmQzNzg5Y2Y4ZDQxNzkgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS9jaGFuLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL2NoYW4uYwpAQCAtMjMxLDYgJiM0MzsyMzEsMTMgQEAgaW50IGllZWU4MDIxMV9jaGFuY3R4X3JlZmNvdW50KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLAogCXJldHVybiBudW07CiB9CiAKJiM0MztzdGF0aWMgYm9vbAomIzQzO2llZWU4MDIxMV9jaGFuY3R4X2hhc19yZXBsYWNlX3BhcnRuZXIoc3RydWN0IGllZWU4MDIxMV9jaGFuY3R4ICpjdHgpCiYjNDM7ewomIzQzOwlyZXR1cm4gY3R4LSZndDtyZXBsYWNlX3N0YXRlID09IElFRUU4MDIxMV9DSEFOQ1RYX1dJTExfQkVfUkVQTEFDRUQgJmFtcDsmYW1wOwomIzQzOwkgICAgICAgY3R4LSZndDtyZXBsYWNlX2N0eDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGllZWU4MDIxMV9udW1fY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgaW50IHJhZGlvX2lkeCkKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHggKmN0eDsKQEAgLTE0MDMsNiAmIzQzOzE0MTAsNyBAQCB2b2lkIGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKQogewogCXN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gbGluay0mZ3Q7c2RhdGE7CiAJc3RydWN0IGllZWU4MDIxMV9jaGFuY3R4ICpjdHggPSBsaW5rLSZndDtyZXNlcnZlZF9jaGFuY3R4OwomIzQzOwlzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHggKm9sZF9jdHggPSBOVUxMOwogCiAJbG9ja2RlcF9hc3NlcnRfd2lwaHkoc2RhdGEtJmd0O2xvY2FsLSZndDtody53aXBoeSk7CiAKQEAgLTE0MTYsNiAmIzQzOzE0MjQsNyBAQCB2b2lkIGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKQogCQkJaWYgKFdBUk5fT04oIWN0eC0mZ3Q7cmVwbGFjZV9jdHgpKQogCQkJCXJldHVybjsKIAomIzQzOwkJCW9sZF9jdHggPSBjdHgtJmd0O3JlcGxhY2VfY3R4OwogCQkJV0FSTl9PTihjdHgtJmd0O3JlcGxhY2VfY3R4LSZndDtyZXBsYWNlX3N0YXRlICE9CiAJCQkgICAgICAgIElFRUU4MDIxMV9DSEFOQ1RYX1dJTExfQkVfUkVQTEFDRUQpOwogCQkJV0FSTl9PTihjdHgtJmd0O3JlcGxhY2VfY3R4LSZndDtyZXBsYWNlX2N0eCAhPSBjdHgpOwpAQCAtMTQyNiw2ICYjNDM7MTQzNSwxMSBAQCB2b2lkIGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKQogCiAJCQlsaXN0X2RlbF9yY3UoJmFtcDtjdHgtJmd0O2xpc3QpOwogCQkJa2ZyZWVfcmN1KGN0eCwgcmN1X2hlYWQpOwomIzQzOwomIzQzOwkJCWlmIChpZWVlODAyMTFfY2hhbmN0eF9yZWZjb3VudChzZGF0YS0mZ3Q7bG9jYWwsCiYjNDM7CQkJCQkJICAgICAgIG9sZF9jdHgpID09IDApCiYjNDM7CQkJCWllZWU4MDIxMV9mcmVlX2NoYW5jdHgoc2RhdGEtJmd0O2xvY2FsLCBvbGRfY3R4LAomIzQzOwkJCQkJCSAgICAgICBmYWxzZSk7CiAJCX0gZWxzZSB7CiAJCQlpZWVlODAyMTFfZnJlZV9jaGFuY3R4KHNkYXRhLSZndDtsb2NhbCwgY3R4LCBmYWxzZSk7CiAJCX0KQEAgLTE3MDUsNyAmIzQzOzE3MTksOCBAQCBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfcmVhc3NpZ24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspCiAKIAlpZWVlODAyMTFfY2hlY2tfZmFzdF94bWl0X2lmYWNlKHNkYXRhKTsKIAotCWlmIChpZWVlODAyMTFfY2hhbmN0eF9yZWZjb3VudChsb2NhbCwgb2xkX2N0eCkgPT0gMCkKJiM0MzsJaWYgKGllZWU4MDIxMV9jaGFuY3R4X3JlZmNvdW50KGxvY2FsLCBvbGRfY3R4KSA9PSAwICZhbXA7JmFtcDsKJiM0MzsJICAgICFpZWVlODAyMTFfY2hhbmN0eF9oYXNfcmVwbGFjZV9wYXJ0bmVyKG9sZF9jdHgpKQogCQlpZWVlODAyMTFfZnJlZV9jaGFuY3R4KGxvY2FsLCBvbGRfY3R4LCBmYWxzZSk7CiAKIAlpZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZihsb2NhbCwgbmV3X2N0eCk7CkBAIC0yMTc0LDcgJiM0MzsyMTg5LDggQEAgdm9pZCBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaywKIAl9CiAKIAlpZWVlODAyMTFfYXNzaWduX2xpbmtfY2hhbmN0eChsaW5rLCBOVUxMLCBmYWxzZSk7Ci0JaWYgKGllZWU4MDIxMV9jaGFuY3R4X3JlZmNvdW50KGxvY2FsLCBjdHgpID09IDApCiYjNDM7CWlmIChpZWVlODAyMTFfY2hhbmN0eF9yZWZjb3VudChsb2NhbCwgY3R4KSA9PSAwICZhbXA7JmFtcDsKJiM0MzsJICAgICFpZWVlODAyMTFfY2hhbmN0eF9oYXNfcmVwbGFjZV9wYXJ0bmVyKGN0eCkpCiAJCWllZWU4MDIxMV9mcmVlX2NoYW5jdHgobG9jYWwsIGN0eCwgc2tpcF9pZGxlX3JlY2FsYyk7CiAKIAlsaW5rLSZndDtyYWRhcl9yZXF1aXJlZCA9IGZhbHNlOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDE3CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgbWFjODAyMTEgQ2hhbm5lbCBDb250ZXh0IFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9tYWM4MDIxMS9jaGFuLmNgLCB3aGljaCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGEgY29yZSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gbWFjODAyMTEsIG5vdCBqdXN0IHNvbWUgcGVyaXBoZXJhbCBtb2R1bGUuIFRoZSBhZGRpdGlvbiBvZiBgaWVlZTgwMjExX2NoYW5jdHhfaGFzX3JlcGxhY2VfcGFydG5lcmAgYXMgYSBoZWxwZXIgaXMgaW50ZXJlc3Rpbmc7IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGZhY3RvcnMgaW50byB0aGUgY2hhbm5lbCBjb250ZXh0IG1hbmFnZW1lbnQuCgpUaGUgcmVhbCBtZWF0IG9mIHRoaXMgc2VlbXMgdG8gYmUgdGhlIG1vZGlmaWNhdGlvbnMgdG8gYGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4YCwgYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9yZWFzc2lnbmAsIGFuZCBgX19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWxgLiBUaGV5JiMzOTtyZSBlaXRoZXIgdXNpbmcgdGhlIG5ldyBoZWxwZXIgb3IgZGlyZWN0bHkgY2hlY2tpbmcgdGhlIGBpZWVlODAyMTFfY2hhbmN0eF9yZWZjb3VudGAgYW5kIGZyZWVpbmcgYG9sZF9jdHhgIGlmIGl0JiMzOTtzIHplcm8uIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgY2hhbmdlcyB0byBob3cgY2hhbm5lbCBjb250ZXh0cyBhcmUgcmVzZXJ2ZWQsIHJlYXNzaWduZWQsIGFuZCB1bHRpbWF0ZWx5IHJlbGVhc2VkLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGltcGxpY2F0aW9ucyBmb3IgY29uY3VycmVudCBjaGFubmVsIGFjY2VzcyBhbmQgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4KCk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gbWFjODAyMTEuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGNvbXBpbGVkLCBpZiB0aGV5IGFyZSBleHBvcnRlZCwgb3IgaWYgdGhleSBhcmUgc3RhdGljLiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIHNlYXJjaCBmb3IgYGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4YCwgYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9yZWFzc2lnbmAgYW5kIGBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbGAgd2l0aGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDU6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQzgwMjExJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI6Y29uZmlnIE1BQzgwMjExXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xOT1pZiBNQUM4MDIxMSAhPSBuXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyLVx0Ym9vbFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDpjb25maWcgTUFDODAyMTFfUkNfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2Vcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjQxOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz00OD1lbmRjaG9pY2Vcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTUxLVx0c3RyaW5nXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NTc9Y29tbWVudCBcJiMzNDtTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBtYWM4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNjktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3MDpjb25maWcgTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXHRib29sIFwmIzM0O0VuYWJsZSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTc4LVxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVx0Ym9vbCBcJiMzNDtFbmFibGUgTEVEIHRyaWdnZXJzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctODctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL0tjb25maWctODktXHRib29sIFwmIzM0O0V4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk2LVxubmV0L21hYzgwMjExL0tjb25maWc6OTc6Y29uZmlnIE1BQzgwMjExX01FU1NBR0VfVFJBQ0lOR1xubmV0L21hYzgwMjExL0tjb25maWctOTgtXHRib29sIFwmIzM0O1RyYWNlIGFsbCBtYWM4MDIxMSBkZWJ1ZyBtZXNzYWdlc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwOS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cdGJvb2wgXCYjMzQ7U2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cdGJvb2wgXCYjMzQ7RG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjEzMjpjb25maWcgTUFDODAyMTFfVkVSQk9TRV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTMzLVx0Ym9vbCBcJiMzNDtWZXJib3NlIGRlYnVnZ2luZyBvdXRwdXRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2Mzpjb25maWcgTUFDODAyMTFfSFRfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBIVCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzQtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTc2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5Nzpjb25maWcgTUFDODAyMTFfUFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBwb3dlcnNhdmUgbW9kZSBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMDgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjEwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxubmV0L21hYzgwMjExL0tjb25maWc6MjM1OmNvbmZpZyBNQUM4MDIxMV9NSFdNUF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjM2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggSFdNUCByb3V0aW5nIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0Ny1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjYwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxubmV0L21hYzgwMjExL0tjb25maWc6MjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwb3dlcnNhdmUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjgwLVxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXHRib29sIFwmIzM0O1ZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXHRib29sIFwmIzM0O0V4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjMwODpjb25maWcgTUFDODAyMTFfU1RBX0hBU0hfTUFYX1NJWkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cdGludCBcJiMzNDtTdGF0aW9uIGhhc2ggdGFibGUgbWF4aW11bSBzaXplXCYjMzQ7IGlmIE1BQzgwMjExX0RFQlVHX01FTlVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODI4CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byB0aGUgODAyLjExIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgdGhpcyB3aG9sZSB0aGluZyBpcyBvYnZpb3VzbHkgdGhlIGBNQUM4MDIxMWAgY29uZmlndXJhdGlvbiBpdGVtIOKAkyB0aGF0JiMzOTtzIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLCBhbmQgaXQmIzM5O3MgYSB0cmlzdGF0ZSwgc28gaXQgZGljdGF0ZXMgdGhlIGVudGlyZSBmcmFtZXdvcmsuICBJIG5lZWQgdG8gZHJpbGwgZG93biBhbmQgc2VlIGlmIHRob3NlIGNyaXRpY2FsIGZ1bmN0aW9ucywgYGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4YCBhbmQgYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9yZWFzc2lnbmAsIGFyZSBhY3R1YWxseSAqZXhwb3J0ZWQqLiBUaGF04oCZcyB0aGUga2V5LiAgSWYgdGhleSYjMzk7cmUgbm90IGV4cG9ydGVkLCB0aGVuIGl0IG1ha2VzIHRoaW5ncyBkaWZmaWN1bHQgYmVjYXVzZSB0aGlzIGltcGxpZXMgdGhhdCB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgbGlua2luZyBsYXllciBvciBwZXJoYXBzIEkgYW0gbG9va2luZyBpbiB0aGUgd3JvbmcgcGxhY2UuIFRob3NlIGZ1bmN0aW9ucyBhcmUgY3J1Y2lhbCBmb3IgYW55IHNvcnQgb2YgZHluYW1pYyBjaGFubmVsIGFzc2lnbm1lbnQgb3IgcmVzb3VyY2UgbWFuYWdlbWVudCB3aXRoaW4gdGhlIDgwMi4xMSBzdGFjay4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlaXIgYXZhaWxhYmlsaXR5IHJpZ2h0IGF3YXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDU6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jZmcuYz00NzAwPV9faWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTQ3ODItXHRpZiAoZXJyKSB7XG5uZXQvbWFjODAyMTEvY2ZnLmM6NDc4MzpcdFx0aWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHgobGlua19kYXRhKTtcbm5ldC9tYWM4MDIxMS9jZmcuYy00Nzg0LVx0XHRnb3RvIG91dDtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDc5Mi1cdGlmIChlcnIpIHtcbm5ldC9tYWM4MDIxMS9jZmcuYzo0NzkzOlx0XHRpZWVlODAyMTFfbGlua191bnJlc2VydmVfY2hhbmN0eChsaW5rX2RhdGEpO1xubmV0L21hYzgwMjExL2NmZy5jLTQ3OTQtXHRcdGdvdG8gb3V0O1xuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM9MTM5OT12b2lkIGllZWU4MDIxMV9saW5rX2NvcHlfY2hhbmN0eF90b192bGFucyhzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTE0MDgtXG5uZXQvbWFjODAyMTEvY2hhbi5jOjE0MDk6dm9pZCBpZWVlODAyMTFfbGlua191bnJlc2VydmVfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTQxMC17XG4tLVxubmV0L21hYzgwMjExL2NoYW4uYz0xODk4PXN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjEyMS1cdFx0XHRcdFx0ICBlcnIpO1xubmV0L21hYzgwMjExL2NoYW4uYzoyMTIyOlx0XHRcdFx0aWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHgobGluayk7XG5uZXQvbWFjODAyMTEvY2hhbi5jLTIxMjMtXHRcdFx0XHRjZmc4MDIxMV9zdG9wX2lmYWNlKGxvY2FsLVx1MDAzZWh3LndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjE1NS1cdFx0Zm9yX2VhY2hfY2hhbmN0eF91c2VyX3Jlc2VydmVkKGxvY2FsLCBjdHgsIFx1MDAyNml0ZXIpIHtcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjE1NjpcdFx0XHRpZWVlODAyMTFfbGlua191bnJlc2VydmVfY2hhbmN0eChpdGVyLmxpbmspO1xubmV0L21hYzgwMjExL2NoYW4uYy0yMTU3LVx0XHRcdGllZWU4MDIxMV9saW5rX2NoYW5jdHhfcmVzZXJ2YXRpb25fY29tcGxldGUoaXRlci5saW5rKTtcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTIxNjQ9dm9pZCBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIxODctXG5uZXQvbWFjODAyMTEvY2hhbi5jOjIxODg6XHRcdGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4KGxpbmspO1xubmV0L21hYzgwMjExL2NoYW4uYy0yMTg5LVx0fVxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTI4MzI9aWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHQoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjgzMzp2b2lkIGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKTtcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI4MzQtXG4tLVxubmV0L21hYzgwMjExL21sbWUuYz0zMDk1PWllZWU4MDIxMV9zdGFfYWJvcnRfY2hhbnN3aXRjaChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTMxMDUtXHRpZiAocmN1X2FjY2Vzc19wb2ludGVyKGxpbmstXHUwMDNlY29uZi1cdTAwM2VjaGFuY3R4X2NvbmYpKVxubmV0L21hYzgwMjExL21sbWUuYzozMTA2Olx0XHRpZWVlODAyMTFfbGlua191bnJlc2VydmVfY2hhbmN0eChsaW5rKTtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMzEwNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjM5CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludGVybmFsIG1hYzgwMjExIEZ1bmN0aW9uIENhbGwgQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlc2UgaW50ZXJuYWwgZnVuY3Rpb25zIHdpdGhpbiBgbWFjODAyMTFgLiBUaW1lIHRvIHRyYWNlIHRoZWlyIGNhbGwgc2l0ZXMuIFRoZSBmaXJzdCBvbmUgSSBzZWUsIGBfX2llZWU4MDIxMV9jaGFubmVsX3N3aXRjaGAsIHRoYXQmIzM5O3MgaW4gYGNmZy5jYC4gTWFrZXMgc2Vuc2UsIGNoYW5uZWwgY29uZmlndXJhdGlvbi4gVGhlbiwgdGhlcmUmIzM5O3MgYGllZWU4MDIxMV9zdGFfYWJvcnRfY2hhbnN3aXRjaGAgaW4gYG1sbWUuY2AsIGluZGljYXRpbmcgc29tZSBzb3J0IG9mIG1hbmFnZW1lbnQgZnJhbWUgaW50ZXJhY3Rpb24sIHBvc3NpYmx5IGFib3J0aW5nIHRoZSBjaGFubmVsIHN3aXRjaC4gYGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaGAgaXMgbmV4dDsgaXQmIzM5O3Mgd2l0aGluIGBjaGFuLmNgLCBzdWdnZXN0aW5nIGEgdmlydHVhbCBpbnRlcmZhY2UmIzM5O3MgdXNlIG9mIGEgcmVzZXJ2ZWQgY2hhbm5lbCBzd2l0Y2guIEZpbmFsbHksIGBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbGAsIGFsc28gaW4gYGNoYW4uY2Ag4oCTIGEgbGluayByZWxlYXNpbmcgdGhlIGNoYW5uZWwsIHByb2JhYmx5IGFmdGVyIHRoZSBzd2l0Y2guIE5vdywgbGV0JiMzOTtzIGRyaWxsIGRvd24gYW5kIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgX19pZWVlODAyMTFfY2hhbm5lbF9zd2l0Y2hgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA1OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19faWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2ZnLmM9NDY5OT1zdGF0aWMgaW50XG5uZXQvbWFjODAyMTEvY2ZnLmM6NDcwMDpfX2llZWU4MDIxMV9jaGFubmVsX3N3aXRjaChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L21hYzgwMjExL2NmZy5jLTQ3MDEtXHRcdFx0ICAgc3RydWN0IGNmZzgwMjExX2NzYV9zZXR0aW5ncyAqcGFyYW1zKVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz00ODE5PWludCBpZWVlODAyMTFfY2hhbm5lbF9zd2l0Y2goc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDgyNi1cbm5ldC9tYWM4MDIxMS9jZmcuYzo0ODI3Olx0cmV0dXJuIF9faWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoKHdpcGh5LCBkZXYsIHBhcmFtcyk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNDgyOC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDU6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzg4NwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDEzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDaGFubmVsIFN3aXRjaCBBbmFseXNpcyoqCgpPa2F5LCBzbyBgaWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoYCBpcyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBjZmc4MDIxMSB1c2VzIGZvciBjaGFubmVsIHN3aXRjaGluZy4gVGhhdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHBpZWNlLCBhbmQgSSYjMzk7bSBjb25maWRlbnQgaXQmIzM5O3Mgd29ya2luZyBhcyBleHBlY3RlZCBiYXNlZCBvbiB3aGF0IEkga25vdy4gV2UgYWxyZWFkeSBoYXZlIGBNQUM4MDIxMWAgY29uZmlndXJlZCwgd2hpY2ggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gYmUgc3VyZSB0aG91Z2gsIGFyZSB0aGVyZSBhbnkgb3RoZXIgcmVxdWlyZWQgY29uZmlncz8gTGV0JiMzOTtzIHRha2UgYW5vdGhlciBsb29rIGF0IHRoZSBgbmV0L21hYzgwMjExL0tjb25maWdgIGZpbGUuIEkmIzM5O20gcmVjYWxsaW5nIHRoYXQgYE1BQzgwMjExYCBkZXBlbmRzIG9uIGBDRkc4MDIxMWAsIHNvIHRoYXQgY2hlY2tzIG91dC4gSSYjMzk7bSBzYXRpc2ZpZWQgbm93LCBhbmQgd2lsbCBhZGQgYE1BQzgwMjExYCB0byB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QuIE5vdywgbGV0JiMzOTtzIHR1cm4gb3VyIGF0dGVudGlvbiB0byBgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX3JlYXNzaWduYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDU6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX3JlYXNzaWduJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2hhbi5jPTE2NTQ9c3RhdGljIGludFxubmV0L21hYzgwMjExL2NoYW4uYzoxNjU1OmllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9yZWFzc2lnbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTY1Ni17XG4tLVxubmV0L21hYzgwMjExL2NoYW4uYz0xODk4PXN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjExMy1cdFx0XHRpZiAoaWVlZTgwMjExX2xpbmtfZ2V0X2NoYW5jdHgobGluaykpXG5uZXQvbWFjODAyMTEvY2hhbi5jOjIxMTQ6XHRcdFx0XHRlcnIgPSBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfcmVhc3NpZ24obGluayk7XG5uZXQvbWFjODAyMTEvY2hhbi5jLTIxMTUtXHRcdFx0ZWxzZVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM9MjM3MT1pbnQgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHQoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXG4tLVxubmV0L21hYzgwMjExL2NoYW4uYy0yMzk3LVx0XHRpZiAob2xkX2N0eClcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjM5ODpcdFx0XHRyZXR1cm4gaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX3JlYXNzaWduKGxpbmspO1xubmV0L21hYzgwMjExL2NoYW4uYy0yMzk5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjY1CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCBjb2RlIHNuaXBwZXQsIGRlbGl2ZXJlZCBhcyBpZiBpdCYjMzk7cyBteSBvd24gdGhvdWdodCBwcm9jZXNzOgoKKipUaGlua2luZyBUaHJvdWdoIExpbmsgVXNhZ2UgYW5kIENvbnRleHQgUmVhc3NpZ25tZW50IGluIElFRUUgODAyLjExKioKClJpZ2h0LCBzbyBgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHRgIGlzIHRoZSBmdW5jdGlvbiB0aGF0JiMzOTtzIGJlaW5nIGNhbGxlZCwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgcmVzb3VyY2UgYWxsb2NhdGlvbiBhbmQgY29uY3VycmVuY3kgaXNzdWVzIGluIHRoZSBjb250ZXh0IG9mIGFuIDgwMi4xMSBsaW5rLiBUaGUgbmFtZSBpdHNlbGYgc3VnZ2VzdHMgYSBmdW5jdGlvbiB0byBtYW5hZ2UgaG93IGEgcmVzZXJ2ZWQgY29udGV4dCBpcyBiZWluZyB1dGlsaXplZC4gVGhpcyBjb250ZXh0IGlzIGxpa2VseSB1c2VkIHRvIGhvbGQgc29tZSBzdGF0ZSBpbmZvcm1hdGlvbi4gSSBiZXQgaXQmIzM5O3Mgc29tZXRoaW5nIGltcG9ydGFudCwgb3RoZXJ3aXNlLCB3aHkgcmVzZXJ2ZSBpdD8KClRoZW4sIHRoZSAqdmVyeSBuZXh0KiB0aGluZyB0aGlzIGZ1bmN0aW9uIGRvZXMgaXMgY2FsbCBgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX3JlYXNzaWduYC4gIEFoLCB0aGF0JiMzOTtzIHdoYXQgSSBuZWVkZWQgdG8ga25vdy4gVGhpcyBpbmRpY2F0ZXMgdGhhdCB1c2luZyB0aGUgcmVzZXJ2ZWQgY29udGV4dCBtYXkgbGVhZCB0byB0aGUgcmVhc3NpZ25tZW50IG9mIGl0LiBUaGlzIHRlbGxzIG1lIHRoYXQgdGhlIHJlc2VydmVkIGNvbnRleHQgaXNuJiMzOTt0IGp1c3QgKnVzZWQqLCBpdCBjYW4gYmUgKnJlYXNzaWduZWQqIGR1cmluZyBpdHMgdXNhZ2UuIFRoaXMgdGVsbHMgbWUgdGhhdCB0aGlzIHBhcnRpY3VsYXIgY29kZSBpcyBkZXNpZ25lZCB3aXRoIGEgY2FyZWZ1bCBjb25zaWRlcmF0aW9uIG9mIHJlc291cmNlIG1hbmFnZW1lbnQgYW5kIGNvbmN1cnJlbmN5LiBUaGUgcmVhc3NpZ25tZW50IHByb2JhYmx5IGhhcyBzb21ldGhpbmcgdG8gZG8gd2l0aCB0aHJlYWQgc3luY2hyb25pemF0aW9uLCBhbmQgaXQmIzM5O3MgbWFraW5nIG1lIHdvbmRlcjogSG93IGlzIHRoaXMgcmVhc3NpZ25tZW50IGhhbmRsZWQ/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIHJlYXNzaWdubWVudD8gSXMgaXQgYXRvbWljPyBXaGF0IGhhcHBlbnMgaWYgdGhlcmUmIzM5O3MgYSByYWNlIGNvbmRpdGlvbj8gVGhpcyBtYWtlcyBtZSB3YW50IHRvIGRpZyBkZWVwZXIgaW50byBgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX3JlYXNzaWduYCB0byBzZWUgd2hhdCBtZWNoYW5pc21zIGFyZSBiZWluZyB1c2VkIGZvciB0aHJlYWQgc2FmZXR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmUtYXNzaWdubWVudCBwcm9jZXNzIHNvIEkga25vdyBpZiBpdCBhZmZlY3RzIG90aGVyIHBhcnRzIG9mIHRoZSBsaW5rIHVzYWdlIGluIGFuIHVuZXhlcGVjdGVkIHdheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDU6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jZmcuYz00NDYzPXN0YXRpYyBpbnQgX19pZWVlODAyMTFfY3NhX2ZpbmFsaXplKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rX2RhdGEpXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTQ0ODgtXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDQ4OTpcdFx0cmV0dXJuIGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0KGxpbmtfZGF0YSk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNDQ5MC1cdH1cbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTIyOTE9aW50IF9pZWVlODAyMTFfbGlua191c2VfY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIzNzAtXG5uZXQvbWFjODAyMTEvY2hhbi5jOjIzNzE6aW50IGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxubmV0L21hYzgwMjExL2NoYW4uYy0yMzcyLXtcbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0yODMxPWludCBfX211c3RfY2hlY2tcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjI4MzI6aWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHQoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjgzMy12b2lkIGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKTtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTI4NzY9c3RhdGljIHZvaWQgaWVlZTgwMjExX2NzYV9zd2l0Y2hfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjk1MC1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6Mjk1MTpcdFx0cmV0ID0gaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHQobGluayk7XG5uZXQvbWFjODAyMTEvbWxtZS5jLTI5NTItXHRcdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDU6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTY4MAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDE4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDU0EgQnVnIEZpeCBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHJlbGF0ZWQgdG8gQ2hhbm5lbCBTd2l0Y2ggQW5ub3VuY2VtZW50cywgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgYF9faWVlZTgwMjExX2NzYV9maW5hbGl6ZWAgYW5kIGBpZWVlODAyMTFfY3NhX3N3aXRjaF93b3JrYCBmdW5jdGlvbnMsIHdoaWNoIGFyZSB0aGUgZW50cnkgcG9pbnRzIGhlcmUuIEkga25vdyB0aGVzZSBsaXZlIHdpdGhpbiB0aGUgY2ZnODAyMTEvbWFjODAyMTEgcmVhbG0sIHNvIHRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgZm9jdXMuIFRoZSBkZXNjcmlwdGlvbiBtZW50aW9ucyBhIGJ1ZyBpbiB0aGUgY2hhbm5lbCBjb250ZXh0IHJlc2VydmF0aW9uL3VucmVzZXJ2YXRpb24gbG9naWMuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGFyZWEgZm9yIHJhY2UgY29uZGl0aW9ucyBhbmQgc3VidGxlIGVycm9ycywgYW5kIGNlcnRhaW5seSBzb21ldGhpbmcgdGhhdCB3YXJyYW50cyB0aG9yb3VnaCBmdXp6aW5nLgoKTXkgcHJpbWFyeSB0YXJnZXRzIGZvciBpbnZlc3RpZ2F0aW9uIGFyZSB0aGUga2V5IHN5bWJvbHM6IGBpZWVlODAyMTFfbGlua191bnJlc2VydmVfY2hhbmN0eGAsIGBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbGAsIGBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfY29udGV4dGAsIGFuZCBgaWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdC4gSSYjMzk7bGwgd2FudCB0byBjaGVjayBpZiBgX19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWxgIGlzIGV4cG9ydGVkIG9yIHN0YXRpYy4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIGZ1bmN0aW9uIGlzIHVzZWQgYW5kIGNhbGxlZC4gRXhwb3J0ZWQgZ2VuZXJhbGx5IG1lYW5zIGl0JiMzOTtzIGF2YWlsYWJsZSB0byBvdGhlciBtb2R1bGVzLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8gY29uc2lkZXIuIEkmIzM5O2xsIHRoZW4gbG9vayBhdCB0aGUgb3RoZXIgZnVuY3Rpb25zIHRvIGNvbmZpcm0gaG93IHRob3NlIHN5bWJvbHMgYXJlIHVzZWQsIHRvIGlkZW50aWZ5IHBvdGVudGlhbCByb290IGNhdXNlLCBhbmQgd2hlcmUgdGhlIGZ1enppbmcgY2FtcGFpZ24gbmVlZHMgdG8gYmUgdGFyZ2V0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA1OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2hhbi5jPTE4OTg9c3RhdGljIGludCBpZWVlODAyMTFfdmlmX3VzZV9yZXNlcnZlZF9zd2l0Y2goc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXG4tLVxubmV0L21hYzgwMjExL2NoYW4uYy0yMTYzLVxubmV0L21hYzgwMjExL2NoYW4uYzoyMTY0OnZvaWQgX19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIxNjUtXHRcdFx0XHQgICAgICBib29sIHNraXBfaWRsZV9yZWNhbGMpXG4tLVxubmV0L21hYzgwMjExL2NoYW4uYz0yMjkxPWludCBfaWVlZTgwMjExX2xpbmtfdXNlX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXG4tLVxubmV0L21hYzgwMjExL2NoYW4uYy0yMzMyLVx0aWYgKCFsb2NhbC1cdTAwM2Vpbl9yZWNvbmZpZylcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjMzMzpcdFx0X19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwobGluaywgZmFsc2UpO1xubmV0L21hYzgwMjExL2NoYW4uYy0yMzM0LVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM9MjQ5OD12b2lkIGllZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTI1MDctXHRpZiAocmN1X2FjY2Vzc19wb2ludGVyKGxpbmstXHUwMDNlY29uZi1cdTAwM2VjaGFuY3R4X2NvbmYpKVxubmV0L21hYzgwMjExL2NoYW4uYzoyNTA4Olx0XHRfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbChsaW5rLCBmYWxzZSk7XG5uZXQvbWFjODAyMTEvY2hhbi5jLTI1MDktfVxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTI4MzY9aWVlZTgwMjExX2xpbmtfY2hhbmdlX2NoYW5yZXEoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjgzOC1cdFx0XHQgICAgICB1NjQgKmNoYW5nZWQpO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjgzOTp2b2lkIF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjg0MC1cdFx0XHRcdCAgICAgIGJvb2wgc2tpcF9pZGxlX3JlY2FsYyk7XG4tLVxubmV0L21hYzgwMjExL2xpbmsuYz00NjU9c3RhdGljIGludCBfaWVlZTgwMjExX3NldF9hY3RpdmVfbGlua3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2xpbmsuYy01MTItXG5uZXQvbWFjODAyMTEvbGluay5jOjUxMzpcdFx0X19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwobGluaywgdHJ1ZSk7XG5uZXQvbWFjODAyMTEvbGluay5jLTUxNC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDU6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEwMDEKCQkJCQkJCW91dHB1dDogMTYzCgkJCQkJCQl0aG91Z2h0czogMjMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIElFRUUgODAyLjExIENoYW5uZWwgTWFuYWdlbWVudCBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9uczogYF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsYCwgYGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4YCwgYW5kIGBpZWVlODAyMTFfY2hhbm5lbF9zd2l0Y2hgLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IG5vbmUgb2YgdGhlbSBhcmUgZGVjbGFyZWQgYXMgYHN0YXRpY2AsIHdoaWNoIGlzIHJlbGV2YW50IHRvIGhvdyBJJiMzOTtsbCBiZSBhcHByb2FjaGluZyB0aGlzLgoKR2l2ZW4gdGhhdCwgSSYjMzk7bGwgZGVmaW5pdGVseSBpbmNsdWRlIHRoZW0gYXMga2V5IGBGb2N1c1N5bWJvbHNgLiBMZXQmIzM5O3MgYWRkIHRoZW0sIGFsb25nIHdpdGggYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0YCwgZm9yIGEgbW9yZSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSByZWxldmFudCBpbnRlcmFjdGlvbnM6CgoqICAgYGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4YAoqICAgYF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsYAoqICAgYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0YAoqICAgYGllZWU4MDIxMV9jaGFubmVsX3N3aXRjaGAKCk5leHQsIHRoZSBjb25maWd1cmF0aW9ucy4gSSBzZWUgYE1BQzgwMjExYCBpcyBmbGFnZ2VkLiBJJiMzOTtsbCBtYWtlIHN1cmUgaXQmIzM5O3MgY29ycmVjdC4gQSBxdWljayBjaGVjayBvZiB0aGUgZGVwZW5kZW5jeSB0cmVlLCBhbmQgaXQgbG9va3MgbGlrZSBgTUFDODAyMTFgIGRlcGVuZHMgb24gYENGRzgwMjExYCwgc28gSSYjMzk7bGwgYmUgZXhwbGljaXQgYW5kIGluY2x1ZGUgYm90aCwgYWx0aG91Z2ggYE1BQzgwMjExYCBpcyB0aGUgY29yZSBvbmUuIFRoaXMga2VlcHMgdGhpbmdzIHJvYnVzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDU6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHgmIzM0OywKICAgICYjMzQ7X19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHQmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG1hYzgwMjExIGNoYW5uZWwgY29udGV4dCByZXNlcnZhdGlvbiBhbmQgdW5yZXNlcnZhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIHRoZSByZXBsYWNlbWVudCBvZiBjaGFubmVsIGNvbnRleHRzLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgY2ZnODAyMTEgY2hhbm5lbCBzd2l0Y2ggb3BlcmF0aW9ucyBhbmQgaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfbGlua191bnJlc2VydmVfY2hhbmN0eCYjMzQ7LAogICAgJiMzNDtfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfY29udGV4dCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfY2hhbm5lbF9zd2l0Y2gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gbWFjODAyMTEgY2hhbm5lbCBjb250ZXh0IHJlc2VydmF0aW9uIGFuZCB1bnJlc2VydmF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgdGhlIHJlcGxhY2VtZW50IG9mIGNoYW5uZWwgY29udGV4dHMuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBjZmc4MDIxMSBjaGFubmVsIHN3aXRjaCBvcGVyYXRpb25zIGFuZCBpcyBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDU6MjM6MTkuNTYyODkwMDg3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc2MTI3Nzk4ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHhcIixcbiAgICBcIl9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsXCIsXG4gICAgXCJpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfY29udGV4dFwiLFxuICAgIFwiaWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gbWFjODAyMTEgY2hhbm5lbCBjb250ZXh0IHJlc2VydmF0aW9uIGFuZCB1bnJlc2VydmF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgdGhlIHJlcGxhY2VtZW50IG9mIGNoYW5uZWwgY29udGV4dHMuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBjZmc4MDIxMSBjaGFubmVsIHN3aXRjaCBvcGVyYXRpb25zIGFuZCBpcyBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNToyMzoxOS41NjI4OTYyNTdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NjcxMzQ5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGY0OTk3ODAzZmY0YjcwNWFkNWVhZmYwMGE3NzE3MGMxNWMzZTgxMDNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMyAwNToyMzoxOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvY2hhbi5jIGIvbmV0L21hYzgwMjExL2NoYW4uY1xcbmluZGV4IDUxNTJiODRhMzM1NzcuLmQzNzg5Y2Y4ZDQxNzkgMTAwNjQ0XFxuLS0tIGEvbmV0L21hYzgwMjExL2NoYW4uY1xcbisrKyBiL25ldC9tYWM4MDIxMS9jaGFuLmNcXG5AQCAtMjMxLDYgKzIzMSwxMyBAQCBpbnQgaWVlZTgwMjExX2NoYW5jdHhfcmVmY291bnQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuIFxcdHJldHVybiBudW07XFxuIH1cXG4gXFxuK3N0YXRpYyBib29sXFxuK2llZWU4MDIxMV9jaGFuY3R4X2hhc19yZXBsYWNlX3BhcnRuZXIoc3RydWN0IGllZWU4MDIxMV9jaGFuY3R4ICpjdHgpXFxuK3tcXG4rXFx0cmV0dXJuIGN0eC1cXHUwMDNlcmVwbGFjZV9zdGF0ZSA9PSBJRUVFODAyMTFfQ0hBTkNUWF9XSUxMX0JFX1JFUExBQ0VEIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAgICBjdHgtXFx1MDAzZXJlcGxhY2VfY3R4O1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IGllZWU4MDIxMV9udW1fY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgaW50IHJhZGlvX2lkeClcXG4ge1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHggKmN0eDtcXG5AQCAtMTQwMyw2ICsxNDEwLDcgQEAgdm9pZCBpZWVlODAyMTFfbGlua191bnJlc2VydmVfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcXG4ge1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IGxpbmstXFx1MDAzZXNkYXRhO1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHggKmN0eCA9IGxpbmstXFx1MDAzZXJlc2VydmVkX2NoYW5jdHg7XFxuK1xcdHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqb2xkX2N0eCA9IE5VTEw7XFxuIFxcbiBcXHRsb2NrZGVwX2Fzc2VydF93aXBoeShzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZWh3LndpcGh5KTtcXG4gXFxuQEAgLTE0MTYsNiArMTQyNCw3IEBAIHZvaWQgaWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXFxuIFxcdFxcdFxcdGlmIChXQVJOX09OKCFjdHgtXFx1MDAzZXJlcGxhY2VfY3R4KSlcXG4gXFx0XFx0XFx0XFx0cmV0dXJuO1xcbiBcXG4rXFx0XFx0XFx0b2xkX2N0eCA9IGN0eC1cXHUwMDNlcmVwbGFjZV9jdHg7XFxuIFxcdFxcdFxcdFdBUk5fT04oY3R4LVxcdTAwM2VyZXBsYWNlX2N0eC1cXHUwMDNlcmVwbGFjZV9zdGF0ZSAhPVxcbiBcXHRcXHRcXHQgICAgICAgIElFRUU4MDIxMV9DSEFOQ1RYX1dJTExfQkVfUkVQTEFDRUQpO1xcbiBcXHRcXHRcXHRXQVJOX09OKGN0eC1cXHUwMDNlcmVwbGFjZV9jdHgtXFx1MDAzZXJlcGxhY2VfY3R4ICE9IGN0eCk7XFxuQEAgLTE0MjYsNiArMTQzNSwxMSBAQCB2b2lkIGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxcbiBcXG4gXFx0XFx0XFx0bGlzdF9kZWxfcmN1KFxcdTAwMjZjdHgtXFx1MDAzZWxpc3QpO1xcbiBcXHRcXHRcXHRrZnJlZV9yY3UoY3R4LCByY3VfaGVhZCk7XFxuK1xcbitcXHRcXHRcXHRpZiAoaWVlZTgwMjExX2NoYW5jdHhfcmVmY291bnQoc2RhdGEtXFx1MDAzZWxvY2FsLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgb2xkX2N0eCkgPT0gMClcXG4rXFx0XFx0XFx0XFx0aWVlZTgwMjExX2ZyZWVfY2hhbmN0eChzZGF0YS1cXHUwMDNlbG9jYWwsIG9sZF9jdHgsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBmYWxzZSk7XFxuIFxcdFxcdH0gZWxzZSB7XFxuIFxcdFxcdFxcdGllZWU4MDIxMV9mcmVlX2NoYW5jdHgoc2RhdGEtXFx1MDAzZWxvY2FsLCBjdHgsIGZhbHNlKTtcXG4gXFx0XFx0fVxcbkBAIC0xNzA1LDcgKzE3MTksOCBAQCBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfcmVhc3NpZ24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXFxuIFxcbiBcXHRpZWVlODAyMTFfY2hlY2tfZmFzdF94bWl0X2lmYWNlKHNkYXRhKTtcXG4gXFxuLVxcdGlmIChpZWVlODAyMTFfY2hhbmN0eF9yZWZjb3VudChsb2NhbCwgb2xkX2N0eCkgPT0gMClcXG4rXFx0aWYgKGllZWU4MDIxMV9jaGFuY3R4X3JlZmNvdW50KGxvY2FsLCBvbGRfY3R4KSA9PSAwIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAhaWVlZTgwMjExX2NoYW5jdHhfaGFzX3JlcGxhY2VfcGFydG5lcihvbGRfY3R4KSlcXG4gXFx0XFx0aWVlZTgwMjExX2ZyZWVfY2hhbmN0eChsb2NhbCwgb2xkX2N0eCwgZmFsc2UpO1xcbiBcXG4gXFx0aWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYobG9jYWwsIG5ld19jdHgpO1xcbkBAIC0yMTc0LDcgKzIxODksOCBAQCB2b2lkIF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbiBcXHR9XFxuIFxcbiBcXHRpZWVlODAyMTFfYXNzaWduX2xpbmtfY2hhbmN0eChsaW5rLCBOVUxMLCBmYWxzZSk7XFxuLVxcdGlmIChpZWVlODAyMTFfY2hhbmN0eF9yZWZjb3VudChsb2NhbCwgY3R4KSA9PSAwKVxcbitcXHRpZiAoaWVlZTgwMjExX2NoYW5jdHhfcmVmY291bnQobG9jYWwsIGN0eCkgPT0gMCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgIWllZWU4MDIxMV9jaGFuY3R4X2hhc19yZXBsYWNlX3BhcnRuZXIoY3R4KSlcXG4gXFx0XFx0aWVlZTgwMjExX2ZyZWVfY2hhbmN0eChsb2NhbCwgY3R4LCBza2lwX2lkbGVfcmVjYWxjKTtcXG4gXFxuIFxcdGxpbmstXFx1MDAzZXJhZGFyX3JlcXVpcmVkID0gZmFsc2U7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA1OjIzOjIwLjAxMDc4MjU5OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ3MTY0ODc4NTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJDRkc4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4XCIsXG4gICAgXCJfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbFwiLFxuICAgIFwiaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHRcIixcbiAgICBcImllZWU4MDIxMV9jaGFubmVsX3N3aXRjaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG1hYzgwMjExIGNoYW5uZWwgY29udGV4dCByZXNlcnZhdGlvbiBhbmQgdW5yZXNlcnZhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIHRoZSByZXBsYWNlbWVudCBvZiBjaGFubmVsIGNvbnRleHRzLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgY2ZnODAyMTEgY2hhbm5lbCBzd2l0Y2ggb3BlcmF0aW9ucyBhbmQgaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjQ5OTc4MDNmZjRiNzA1YWQ1ZWFmZjAwYTc3MTcwYzE1YzNlODEwM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMDU6MjM6MTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvY2hhbi5jIGIvbmV0L21hYzgwMjExL2NoYW4uY1xuaW5kZXggNTE1MmI4NGEzMzU3Ny4uZDM3ODljZjhkNDE3OSAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9jaGFuLmNcbisrKyBiL25ldC9tYWM4MDIxMS9jaGFuLmNcbkBAIC0yMzEsNiArMjMxLDEzIEBAIGludCBpZWVlODAyMTFfY2hhbmN0eF9yZWZjb3VudChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdHJldHVybiBudW07XG4gfVxuIFxuK3N0YXRpYyBib29sXG4raWVlZTgwMjExX2NoYW5jdHhfaGFzX3JlcGxhY2VfcGFydG5lcihzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHggKmN0eClcbit7XG4rXHRyZXR1cm4gY3R4LVx1MDAzZXJlcGxhY2Vfc3RhdGUgPT0gSUVFRTgwMjExX0NIQU5DVFhfV0lMTF9CRV9SRVBMQUNFRCBcdTAwMjZcdTAwMjZcbitcdCAgICAgICBjdHgtXHUwMDNlcmVwbGFjZV9jdHg7XG4rfVxuK1xuIHN0YXRpYyBpbnQgaWVlZTgwMjExX251bV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLCBpbnQgcmFkaW9faWR4KVxuIHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4O1xuQEAgLTE0MDMsNiArMTQxMCw3IEBAIHZvaWQgaWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBsaW5rLVx1MDAzZXNkYXRhO1xuIFx0c3RydWN0IGllZWU4MDIxMV9jaGFuY3R4ICpjdHggPSBsaW5rLVx1MDAzZXJlc2VydmVkX2NoYW5jdHg7XG4rXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHggKm9sZF9jdHggPSBOVUxMO1xuIFxuIFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkoc2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlaHcud2lwaHkpO1xuIFxuQEAgLTE0MTYsNiArMTQyNCw3IEBAIHZvaWQgaWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXG4gXHRcdFx0aWYgKFdBUk5fT04oIWN0eC1cdTAwM2VyZXBsYWNlX2N0eCkpXG4gXHRcdFx0XHRyZXR1cm47XG4gXG4rXHRcdFx0b2xkX2N0eCA9IGN0eC1cdTAwM2VyZXBsYWNlX2N0eDtcbiBcdFx0XHRXQVJOX09OKGN0eC1cdTAwM2VyZXBsYWNlX2N0eC1cdTAwM2VyZXBsYWNlX3N0YXRlICE9XG4gXHRcdFx0ICAgICAgICBJRUVFODAyMTFfQ0hBTkNUWF9XSUxMX0JFX1JFUExBQ0VEKTtcbiBcdFx0XHRXQVJOX09OKGN0eC1cdTAwM2VyZXBsYWNlX2N0eC1cdTAwM2VyZXBsYWNlX2N0eCAhPSBjdHgpO1xuQEAgLTE0MjYsNiArMTQzNSwxMSBAQCB2b2lkIGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxuIFxuIFx0XHRcdGxpc3RfZGVsX3JjdShcdTAwMjZjdHgtXHUwMDNlbGlzdCk7XG4gXHRcdFx0a2ZyZWVfcmN1KGN0eCwgcmN1X2hlYWQpO1xuK1xuK1x0XHRcdGlmIChpZWVlODAyMTFfY2hhbmN0eF9yZWZjb3VudChzZGF0YS1cdTAwM2Vsb2NhbCxcbitcdFx0XHRcdFx0XHQgICAgICAgb2xkX2N0eCkgPT0gMClcbitcdFx0XHRcdGllZWU4MDIxMV9mcmVlX2NoYW5jdHgoc2RhdGEtXHUwMDNlbG9jYWwsIG9sZF9jdHgsXG4rXHRcdFx0XHRcdFx0ICAgICAgIGZhbHNlKTtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRpZWVlODAyMTFfZnJlZV9jaGFuY3R4KHNkYXRhLVx1MDAzZWxvY2FsLCBjdHgsIGZhbHNlKTtcbiBcdFx0fVxuQEAgLTE3MDUsNyArMTcxOSw4IEBAIGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9yZWFzc2lnbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcbiBcbiBcdGllZWU4MDIxMV9jaGVja19mYXN0X3htaXRfaWZhY2Uoc2RhdGEpO1xuIFxuLVx0aWYgKGllZWU4MDIxMV9jaGFuY3R4X3JlZmNvdW50KGxvY2FsLCBvbGRfY3R4KSA9PSAwKVxuK1x0aWYgKGllZWU4MDIxMV9jaGFuY3R4X3JlZmNvdW50KGxvY2FsLCBvbGRfY3R4KSA9PSAwIFx1MDAyNlx1MDAyNlxuK1x0ICAgICFpZWVlODAyMTFfY2hhbmN0eF9oYXNfcmVwbGFjZV9wYXJ0bmVyKG9sZF9jdHgpKVxuIFx0XHRpZWVlODAyMTFfZnJlZV9jaGFuY3R4KGxvY2FsLCBvbGRfY3R4LCBmYWxzZSk7XG4gXG4gXHRpZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZihsb2NhbCwgbmV3X2N0eCk7XG5AQCAtMjE3NCw3ICsyMTg5LDggQEAgdm9pZCBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbiBcdH1cbiBcbiBcdGllZWU4MDIxMV9hc3NpZ25fbGlua19jaGFuY3R4KGxpbmssIE5VTEwsIGZhbHNlKTtcbi1cdGlmIChpZWVlODAyMTFfY2hhbmN0eF9yZWZjb3VudChsb2NhbCwgY3R4KSA9PSAwKVxuK1x0aWYgKGllZWU4MDIxMV9jaGFuY3R4X3JlZmNvdW50KGxvY2FsLCBjdHgpID09IDAgXHUwMDI2XHUwMDI2XG4rXHQgICAgIWllZWU4MDIxMV9jaGFuY3R4X2hhc19yZXBsYWNlX3BhcnRuZXIoY3R4KSlcbiBcdFx0aWVlZTgwMjExX2ZyZWVfY2hhbmN0eChsb2NhbCwgY3R4LCBza2lwX2lkbGVfcmVjYWxjKTtcbiBcbiBcdGxpbmstXHUwMDNlcmFkYXJfcmVxdWlyZWQgPSBmYWxzZTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA1OjIzOjIwLjAxMDc4NDgwOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczOTE5Njc3OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBtYWM4MDIxMSBDaGFubmVsIENvbnRleHQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBuZXQvbWFjODAyMTEvY2hhbi5jYCwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyBhIGNvcmUgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIG1hYzgwMjExLCBub3QganVzdCBzb21lIHBlcmlwaGVyYWwgbW9kdWxlLiBUaGUgYWRkaXRpb24gb2YgYGllZWU4MDIxMV9jaGFuY3R4X2hhc19yZXBsYWNlX3BhcnRuZXJgIGFzIGEgaGVscGVyIGlzIGludGVyZXN0aW5nOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBmYWN0b3JzIGludG8gdGhlIGNoYW5uZWwgY29udGV4dCBtYW5hZ2VtZW50LlxuXG5UaGUgcmVhbCBtZWF0IG9mIHRoaXMgc2VlbXMgdG8gYmUgdGhlIG1vZGlmaWNhdGlvbnMgdG8gYGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4YCwgYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9yZWFzc2lnbmAsIGFuZCBgX19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWxgLiBUaGV5J3JlIGVpdGhlciB1c2luZyB0aGUgbmV3IGhlbHBlciBvciBkaXJlY3RseSBjaGVja2luZyB0aGUgYGllZWU4MDIxMV9jaGFuY3R4X3JlZmNvdW50YCBhbmQgZnJlZWluZyBgb2xkX2N0eGAgaWYgaXQncyB6ZXJvLiBUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIGNoYW5nZXMgdG8gaG93IGNoYW5uZWwgY29udGV4dHMgYXJlIHJlc2VydmVkLCByZWFzc2lnbmVkLCBhbmQgdWx0aW1hdGVseSByZWxlYXNlZC4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBpbXBsaWNhdGlvbnMgZm9yIGNvbmN1cnJlbnQgY2hhbm5lbCBhY2Nlc3MgYW5kIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMuXG5cbk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gbWFjODAyMTEuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGNvbXBpbGVkLCBpZiB0aGV5IGFyZSBleHBvcnRlZCwgb3IgaWYgdGhleSBhcmUgc3RhdGljLiBTcGVjaWZpY2FsbHksIEknbGwgc2VhcmNoIGZvciBgaWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHhgLCBgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX3JlYXNzaWduYCBhbmQgYF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsYCB3aXRoaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAxNywiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA1OjIzOjI3LjQwMjc1NDkzMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTU2NjA0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUFDODAyMTFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cXHRib29sXFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXFxubmV0L21hYzgwMjExL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiIGlmIEVYUEVSVFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00MC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQyLVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXFxubmV0L21hYzgwMjExL0tjb25maWctNDktXFxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cXHRzdHJpbmdcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXFxcIlNvbWUgd2lyZWxlc3MgZHJpdmVycyByZXF1aXJlIGEgcmF0ZSBjb250cm9sIGFsZ29yaXRobVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTU5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBtYWM4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNjktXFxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03MS1cXHRib29sIFxcXCJFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3OTpjb25maWcgTUFDODAyMTFfTEVEU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVxcdGJvb2wgXFxcIkVuYWJsZSBMRUQgdHJpZ2dlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04Ny1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVxcdGJvb2wgXFxcIkV4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk2LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05OC1cXHRib29sIFxcXCJUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXFxubmV0L21hYzgwMjExL0tjb25maWc6MTEwOm1lbnVjb25maWcgTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cXHRib29sIFxcXCJTZWxlY3QgbWFjODAyMTEgZGVidWdnaW5nIGZlYXR1cmVzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTE1LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXFx0Ym9vbCBcXFwiRG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE0Mzpjb25maWcgTUFDODAyMTFfTUxNRV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cXHRib29sIFxcXCJWZXJib3NlIG1hbmFnZWQgTUxNRSBvdXRwdXRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTMtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXFx0Ym9vbCBcXFwiVmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTY0LVxcdGJvb2wgXFxcIlZlcmJvc2UgSFQgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE3NTpjb25maWcgTUFDODAyMTFfT0NCX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTc2LVxcdGJvb2wgXFxcIlZlcmJvc2UgT0NCIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4NS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXFx0Ym9vbCBcXFwiVmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTk4LVxcdGJvb2wgXFxcIlZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIwOTpjb25maWcgTUFDODAyMTFfTVBMX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjEwLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwZWVyIGxpbmsgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjIxLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzYtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MjQ4OmNvbmZpZyBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHN5bmNocm9uaXphdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI3MS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyODE6Y29uZmlnIE1BQzgwMjExX1RETFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXFx0Ym9vbCBcXFwiVmVyYm9zZSBURExTIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXFxubmV0L21hYzgwMjExL0tjb25maWctMjk0LVxcdGJvb2wgXFxcIkV4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXFxubmV0L21hYzgwMjExL0tjb25maWctMzA5LVxcdGludCBcXFwiU3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVxcXCIgaWYgTUFDODAyMTFfREVCVUdfTUVOVVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNToyMzoyNy40NTIzMjg1NjhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTc2MTQ1MjMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSA4MDIuMTEgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHNvIHRoZSBjb3JlIG9mIHRoaXMgd2hvbGUgdGhpbmcgaXMgb2J2aW91c2x5IHRoZSBgTUFDODAyMTFgIGNvbmZpZ3VyYXRpb24gaXRlbSDigJMgdGhhdCdzIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLCBhbmQgaXQncyBhIHRyaXN0YXRlLCBzbyBpdCBkaWN0YXRlcyB0aGUgZW50aXJlIGZyYW1ld29yay4gIEkgbmVlZCB0byBkcmlsbCBkb3duIGFuZCBzZWUgaWYgdGhvc2UgY3JpdGljYWwgZnVuY3Rpb25zLCBgaWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHhgIGFuZCBgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX3JlYXNzaWduYCwgYXJlIGFjdHVhbGx5ICpleHBvcnRlZCouIFRoYXTigJlzIHRoZSBrZXkuICBJZiB0aGV5J3JlIG5vdCBleHBvcnRlZCwgdGhlbiBpdCBtYWtlcyB0aGluZ3MgZGlmZmljdWx0IGJlY2F1c2UgdGhpcyBpbXBsaWVzIHRoYXQgdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGxpbmtpbmcgbGF5ZXIgb3IgcGVyaGFwcyBJIGFtIGxvb2tpbmcgaW4gdGhlIHdyb25nIHBsYWNlLiBUaG9zZSBmdW5jdGlvbnMgYXJlIGNydWNpYWwgZm9yIGFueSBzb3J0IG9mIGR5bmFtaWMgY2hhbm5lbCBhc3NpZ25tZW50IG9yIHJlc291cmNlIG1hbmFnZW1lbnQgd2l0aGluIHRoZSA4MDIuMTEgc3RhY2suIEkgbmVlZCB0byBjb25maXJtIHRoZWlyIGF2YWlsYWJpbGl0eSByaWdodCBhd2F5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODI4LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDU6MjM6MzEuNDI4NDgxNjMxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MDIxODM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2NmZy5jPTQ3MDA9X19pZWVlODAyMTFfY2hhbm5lbF9zd2l0Y2goc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy00NzgyLVxcdGlmIChlcnIpIHtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDc4MzpcXHRcXHRpZWVlODAyMTFfbGlua191bnJlc2VydmVfY2hhbmN0eChsaW5rX2RhdGEpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy00Nzg0LVxcdFxcdGdvdG8gb3V0O1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTQ3OTItXFx0aWYgKGVycikge1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo0NzkzOlxcdFxcdGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4KGxpbmtfZGF0YSk7XFxubmV0L21hYzgwMjExL2NmZy5jLTQ3OTQtXFx0XFx0Z290byBvdXQ7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTEzOTk9dm9pZCBpZWVlODAyMTFfbGlua19jb3B5X2NoYW5jdHhfdG9fdmxhbnMoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTE0MDgtXFxubmV0L21hYzgwMjExL2NoYW4uYzoxNDA5OnZvaWQgaWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXFxubmV0L21hYzgwMjExL2NoYW4uYy0xNDEwLXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM9MTg5OD1zdGF0aWMgaW50IGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjEyMS1cXHRcXHRcXHRcXHRcXHQgIGVycik7XFxubmV0L21hYzgwMjExL2NoYW4uYzoyMTIyOlxcdFxcdFxcdFxcdGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4KGxpbmspO1xcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjEyMy1cXHRcXHRcXHRcXHRjZmc4MDIxMV9zdG9wX2lmYWNlKGxvY2FsLVxcdTAwM2Vody53aXBoeSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjE1NS1cXHRcXHRmb3JfZWFjaF9jaGFuY3R4X3VzZXJfcmVzZXJ2ZWQobG9jYWwsIGN0eCwgXFx1MDAyNml0ZXIpIHtcXG5uZXQvbWFjODAyMTEvY2hhbi5jOjIxNTY6XFx0XFx0XFx0aWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHgoaXRlci5saW5rKTtcXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIxNTctXFx0XFx0XFx0aWVlZTgwMjExX2xpbmtfY2hhbmN0eF9yZXNlcnZhdGlvbl9jb21wbGV0ZShpdGVyLmxpbmspO1xcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYz0yMTY0PXZvaWQgX19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIxODctXFxubmV0L21hYzgwMjExL2NoYW4uYzoyMTg4OlxcdFxcdGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4KGxpbmspO1xcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjE4OS1cXHR9XFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0yODMyPWllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKTtcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyODMzOnZvaWQgaWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspO1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI4MzQtXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTMwOTU9aWVlZTgwMjExX3N0YV9hYm9ydF9jaGFuc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0zMTA1LVxcdGlmIChyY3VfYWNjZXNzX3BvaW50ZXIobGluay1cXHUwMDNlY29uZi1cXHUwMDNlY2hhbmN0eF9jb25mKSlcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjMxMDY6XFx0XFx0aWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHgobGluayk7XFxubmV0L21hYzgwMjExL21sbWUuYy0zMTA3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNToyMzozMS40NzM1MTE1MDlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDEyNDY0ODI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludGVybmFsIG1hYzgwMjExIEZ1bmN0aW9uIENhbGwgQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoZXNlIGludGVybmFsIGZ1bmN0aW9ucyB3aXRoaW4gYG1hYzgwMjExYC4gVGltZSB0byB0cmFjZSB0aGVpciBjYWxsIHNpdGVzLiBUaGUgZmlyc3Qgb25lIEkgc2VlLCBgX19pZWVlODAyMTFfY2hhbm5lbF9zd2l0Y2hgLCB0aGF0J3MgaW4gYGNmZy5jYC4gTWFrZXMgc2Vuc2UsIGNoYW5uZWwgY29uZmlndXJhdGlvbi4gVGhlbiwgdGhlcmUncyBgaWVlZTgwMjExX3N0YV9hYm9ydF9jaGFuc3dpdGNoYCBpbiBgbWxtZS5jYCwgaW5kaWNhdGluZyBzb21lIHNvcnQgb2YgbWFuYWdlbWVudCBmcmFtZSBpbnRlcmFjdGlvbiwgcG9zc2libHkgYWJvcnRpbmcgdGhlIGNoYW5uZWwgc3dpdGNoLiBgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoYCBpcyBuZXh0OyBpdCdzIHdpdGhpbiBgY2hhbi5jYCwgc3VnZ2VzdGluZyBhIHZpcnR1YWwgaW50ZXJmYWNlJ3MgdXNlIG9mIGEgcmVzZXJ2ZWQgY2hhbm5lbCBzd2l0Y2guIEZpbmFsbHksIGBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbGAsIGFsc28gaW4gYGNoYW4uY2Ag4oCTIGEgbGluayByZWxlYXNpbmcgdGhlIGNoYW5uZWwsIHByb2JhYmx5IGFmdGVyIHRoZSBzd2l0Y2guIE5vdywgbGV0J3MgZHJpbGwgZG93biBhbmQgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBfX2llZWU4MDIxMV9jaGFubmVsX3N3aXRjaGAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyMzksIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDU6MjM6MzUuODg1OTc5MTY1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NzgwMTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9faWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2NmZy5jPTQ2OTk9c3RhdGljIGludFxcbm5ldC9tYWM4MDIxMS9jZmcuYzo0NzAwOl9faWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L21hYzgwMjExL2NmZy5jLTQ3MDEtXFx0XFx0XFx0ICAgc3RydWN0IGNmZzgwMjExX2NzYV9zZXR0aW5ncyAqcGFyYW1zKVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTQ4MTk9aW50IGllZWU4MDIxMV9jaGFubmVsX3N3aXRjaChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTQ4MjYtXFxubmV0L21hYzgwMjExL2NmZy5jOjQ4Mjc6XFx0cmV0dXJuIF9faWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoKHdpcGh5LCBkZXYsIHBhcmFtcyk7XFxubmV0L21hYzgwMjExL2NmZy5jLTQ4MjgtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNToyMzozNS45MzA3NjUwNDJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzc2MzM4ODQwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDaGFubmVsIFN3aXRjaCBBbmFseXNpcyoqXG5cbk9rYXksIHNvIGBpZWVlODAyMTFfY2hhbm5lbF9zd2l0Y2hgIGlzIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGNmZzgwMjExIHVzZXMgZm9yIGNoYW5uZWwgc3dpdGNoaW5nLiBUaGF0J3MgYSBmdW5kYW1lbnRhbCBwaWVjZSwgYW5kIEknbSBjb25maWRlbnQgaXQncyB3b3JraW5nIGFzIGV4cGVjdGVkIGJhc2VkIG9uIHdoYXQgSSBrbm93LiBXZSBhbHJlYWR5IGhhdmUgYE1BQzgwMjExYCBjb25maWd1cmVkLCB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBiZSBzdXJlIHRob3VnaCwgYXJlIHRoZXJlIGFueSBvdGhlciByZXF1aXJlZCBjb25maWdzPyBMZXQncyB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGUgYG5ldC9tYWM4MDIxMS9LY29uZmlnYCBmaWxlLiBJJ20gcmVjYWxsaW5nIHRoYXQgYE1BQzgwMjExYCBkZXBlbmRzIG9uIGBDRkc4MDIxMWAsIHNvIHRoYXQgY2hlY2tzIG91dC4gSSdtIHNhdGlzZmllZCBub3csIGFuZCB3aWxsIGFkZCBgTUFDODAyMTFgIHRvIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC4gTm93LCBsZXQncyB0dXJuIG91ciBhdHRlbnRpb24gdG8gYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9yZWFzc2lnbmAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4ODcsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDU6MjM6NDkuNjk0MTU2NzRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MjYzOTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9yZWFzc2lnblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jaGFuLmM9MTY1ND1zdGF0aWMgaW50XFxubmV0L21hYzgwMjExL2NoYW4uYzoxNjU1OmllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9yZWFzc2lnbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcXG5uZXQvbWFjODAyMTEvY2hhbi5jLTE2NTYte1xcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYz0xODk4PXN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy0yMTEzLVxcdFxcdFxcdGlmIChpZWVlODAyMTFfbGlua19nZXRfY2hhbmN0eChsaW5rKSlcXG5uZXQvbWFjODAyMTEvY2hhbi5jOjIxMTQ6XFx0XFx0XFx0XFx0ZXJyID0gaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX3JlYXNzaWduKGxpbmspO1xcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjExNS1cXHRcXHRcXHRlbHNlXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTIzNzE9aW50IGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy0yMzk3LVxcdFxcdGlmIChvbGRfY3R4KVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjM5ODpcXHRcXHRcXHRyZXR1cm4gaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX3JlYXNzaWduKGxpbmspO1xcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjM5OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDU6MjM6NDkuNzQxNDI3MjA3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNjQxMTQ0MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IGNvZGUgc25pcHBldCwgZGVsaXZlcmVkIGFzIGlmIGl0J3MgbXkgb3duIHRob3VnaHQgcHJvY2VzczpcblxuKipUaGlua2luZyBUaHJvdWdoIExpbmsgVXNhZ2UgYW5kIENvbnRleHQgUmVhc3NpZ25tZW50IGluIElFRUUgODAyLjExKipcblxuUmlnaHQsIHNvIGBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfY29udGV4dGAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQncyBiZWluZyBjYWxsZWQsIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IHJlc291cmNlIGFsbG9jYXRpb24gYW5kIGNvbmN1cnJlbmN5IGlzc3VlcyBpbiB0aGUgY29udGV4dCBvZiBhbiA4MDIuMTEgbGluay4gVGhlIG5hbWUgaXRzZWxmIHN1Z2dlc3RzIGEgZnVuY3Rpb24gdG8gbWFuYWdlIGhvdyBhIHJlc2VydmVkIGNvbnRleHQgaXMgYmVpbmcgdXRpbGl6ZWQuIFRoaXMgY29udGV4dCBpcyBsaWtlbHkgdXNlZCB0byBob2xkIHNvbWUgc3RhdGUgaW5mb3JtYXRpb24uIEkgYmV0IGl0J3Mgc29tZXRoaW5nIGltcG9ydGFudCwgb3RoZXJ3aXNlLCB3aHkgcmVzZXJ2ZSBpdD9cblxuVGhlbiwgdGhlICp2ZXJ5IG5leHQqIHRoaW5nIHRoaXMgZnVuY3Rpb24gZG9lcyBpcyBjYWxsIGBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfcmVhc3NpZ25gLiAgQWgsIHRoYXQncyB3aGF0IEkgbmVlZGVkIHRvIGtub3cuIFRoaXMgaW5kaWNhdGVzIHRoYXQgdXNpbmcgdGhlIHJlc2VydmVkIGNvbnRleHQgbWF5IGxlYWQgdG8gdGhlIHJlYXNzaWdubWVudCBvZiBpdC4gVGhpcyB0ZWxscyBtZSB0aGF0IHRoZSByZXNlcnZlZCBjb250ZXh0IGlzbid0IGp1c3QgKnVzZWQqLCBpdCBjYW4gYmUgKnJlYXNzaWduZWQqIGR1cmluZyBpdHMgdXNhZ2UuIFRoaXMgdGVsbHMgbWUgdGhhdCB0aGlzIHBhcnRpY3VsYXIgY29kZSBpcyBkZXNpZ25lZCB3aXRoIGEgY2FyZWZ1bCBjb25zaWRlcmF0aW9uIG9mIHJlc291cmNlIG1hbmFnZW1lbnQgYW5kIGNvbmN1cnJlbmN5LiBUaGUgcmVhc3NpZ25tZW50IHByb2JhYmx5IGhhcyBzb21ldGhpbmcgdG8gZG8gd2l0aCB0aHJlYWQgc3luY2hyb25pemF0aW9uLCBhbmQgaXQncyBtYWtpbmcgbWUgd29uZGVyOiBIb3cgaXMgdGhpcyByZWFzc2lnbm1lbnQgaGFuZGxlZD8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgcmVhc3NpZ25tZW50PyBJcyBpdCBhdG9taWM/IFdoYXQgaGFwcGVucyBpZiB0aGVyZSdzIGEgcmFjZSBjb25kaXRpb24/IFRoaXMgbWFrZXMgbWUgd2FudCB0byBkaWcgZGVlcGVyIGludG8gYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9yZWFzc2lnbmAgdG8gc2VlIHdoYXQgbWVjaGFuaXNtcyBhcmUgYmVpbmcgdXNlZCBmb3IgdGhyZWFkIHNhZmV0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlLWFzc2lnbm1lbnQgcHJvY2VzcyBzbyBJIGtub3cgaWYgaXQgYWZmZWN0cyBvdGhlciBwYXJ0cyBvZiB0aGUgbGluayB1c2FnZSBpbiBhbiB1bmV4ZXBlY3RlZCB3YXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2NjUsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNToyMzo1My45MDU1NDQ5NzlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNDM3NjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2NmZy5jPTQ0NjM9c3RhdGljIGludCBfX2llZWU4MDIxMV9jc2FfZmluYWxpemUoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmtfZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy00NDg4LVxcbm5ldC9tYWM4MDIxMS9jZmcuYzo0NDg5OlxcdFxcdHJldHVybiBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfY29udGV4dChsaW5rX2RhdGEpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy00NDkwLVxcdH1cXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM9MjI5MT1pbnQgX2llZWU4MDIxMV9saW5rX3VzZV9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy0yMzcwLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjM3MTppbnQgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHQoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXFxubmV0L21hYzgwMjExL2NoYW4uYy0yMzcyLXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTI4MzE9aW50IF9fbXVzdF9jaGVja1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjI4MzI6aWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHQoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspO1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI4MzMtdm9pZCBpZWVlODAyMTFfbGlua191bnJlc2VydmVfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayk7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTI4NzY9c3RhdGljIHZvaWQgaWVlZTgwMjExX2NzYV9zd2l0Y2hfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0yOTUwLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6Mjk1MTpcXHRcXHRyZXQgPSBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfY29udGV4dChsaW5rKTtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI5NTItXFx0XFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNToyMzo1My45NDg5OTEyNzZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ1ODk2NTI2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDU0EgQnVnIEZpeCBJbnZlc3RpZ2F0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCByZWxhdGVkIHRvIENoYW5uZWwgU3dpdGNoIEFubm91bmNlbWVudHMsIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIGBfX2llZWU4MDIxMV9jc2FfZmluYWxpemVgIGFuZCBgaWVlZTgwMjExX2NzYV9zd2l0Y2hfd29ya2AgZnVuY3Rpb25zLCB3aGljaCBhcmUgdGhlIGVudHJ5IHBvaW50cyBoZXJlLiBJIGtub3cgdGhlc2UgbGl2ZSB3aXRoaW4gdGhlIGNmZzgwMjExL21hYzgwMjExIHJlYWxtLCBzbyB0aGF0J3Mgd2hlcmUgSSdsbCBmb2N1cy4gVGhlIGRlc2NyaXB0aW9uIG1lbnRpb25zIGEgYnVnIGluIHRoZSBjaGFubmVsIGNvbnRleHQgcmVzZXJ2YXRpb24vdW5yZXNlcnZhdGlvbiBsb2dpYy4gVGhhdCdzIGEgY2xhc3NpYyBhcmVhIGZvciByYWNlIGNvbmRpdGlvbnMgYW5kIHN1YnRsZSBlcnJvcnMsIGFuZCBjZXJ0YWlubHkgc29tZXRoaW5nIHRoYXQgd2FycmFudHMgdGhvcm91Z2ggZnV6emluZy5cblxuTXkgcHJpbWFyeSB0YXJnZXRzIGZvciBpbnZlc3RpZ2F0aW9uIGFyZSB0aGUga2V5IHN5bWJvbHM6IGBpZWVlODAyMTFfbGlua191bnJlc2VydmVfY2hhbmN0eGAsIGBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbGAsIGBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfY29udGV4dGAsIGFuZCBgaWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdC4gSSdsbCB3YW50IHRvIGNoZWNrIGlmIGBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbGAgaXMgZXhwb3J0ZWQgb3Igc3RhdGljLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgZnVuY3Rpb24gaXMgdXNlZCBhbmQgY2FsbGVkLiBFeHBvcnRlZCBnZW5lcmFsbHkgbWVhbnMgaXQncyBhdmFpbGFibGUgdG8gb3RoZXIgbW9kdWxlcywgd2hpY2ggaXMgaW1wb3J0YW50IHRvIGNvbnNpZGVyLiBJJ2xsIHRoZW4gbG9vayBhdCB0aGUgb3RoZXIgZnVuY3Rpb25zIHRvIGNvbmZpcm0gaG93IHRob3NlIHN5bWJvbHMgYXJlIHVzZWQsIHRvIGlkZW50aWZ5IHBvdGVudGlhbCByb290IGNhdXNlLCBhbmQgd2hlcmUgdGhlIGZ1enppbmcgY2FtcGFpZ24gbmVlZHMgdG8gYmUgdGFyZ2V0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2ODAsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDU6MjQ6MDAuNDA3OTU4MzY1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTYyOTc5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jaGFuLmM9MTg5OD1zdGF0aWMgaW50IGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjE2My1cXG5uZXQvbWFjODAyMTEvY2hhbi5jOjIxNjQ6dm9pZCBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIxNjUtXFx0XFx0XFx0XFx0ICAgICAgYm9vbCBza2lwX2lkbGVfcmVjYWxjKVxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYz0yMjkxPWludCBfaWVlZTgwMjExX2xpbmtfdXNlX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIzMzItXFx0aWYgKCFsb2NhbC1cXHUwMDNlaW5fcmVjb25maWcpXFxubmV0L21hYzgwMjExL2NoYW4uYzoyMzMzOlxcdFxcdF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsKGxpbmssIGZhbHNlKTtcXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIzMzQtXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTI0OTg9dm9pZCBpZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTI1MDctXFx0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihsaW5rLVxcdTAwM2Vjb25mLVxcdTAwM2VjaGFuY3R4X2NvbmYpKVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjUwODpcXHRcXHRfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbChsaW5rLCBmYWxzZSk7XFxubmV0L21hYzgwMjExL2NoYW4uYy0yNTA5LX1cXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTI4MzY9aWVlZTgwMjExX2xpbmtfY2hhbmdlX2NoYW5yZXEoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yODM4LVxcdFxcdFxcdCAgICAgIHU2NCAqY2hhbmdlZCk7XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjgzOTp2b2lkIF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI4NDAtXFx0XFx0XFx0XFx0ICAgICAgYm9vbCBza2lwX2lkbGVfcmVjYWxjKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9saW5rLmM9NDY1PXN0YXRpYyBpbnQgX2llZWU4MDIxMV9zZXRfYWN0aXZlX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL2xpbmsuYy01MTItXFxubmV0L21hYzgwMjExL2xpbmsuYzo1MTM6XFx0XFx0X19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwobGluaywgdHJ1ZSk7XFxubmV0L21hYzgwMjExL2xpbmsuYy01MTQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA1OjI0OjAwLjQ1MzU5Mzc1M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjU4OTE5NTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIElFRUUgODAyLjExIENoYW5uZWwgTWFuYWdlbWVudCBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnM6IGBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbGAsIGBpZWVlODAyMTFfbGlua191bnJlc2VydmVfY2hhbmN0eGAsIGFuZCBgaWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoYC4gSXQncyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IG5vbmUgb2YgdGhlbSBhcmUgZGVjbGFyZWQgYXMgYHN0YXRpY2AsIHdoaWNoIGlzIHJlbGV2YW50IHRvIGhvdyBJJ2xsIGJlIGFwcHJvYWNoaW5nIHRoaXMuXG5cbkdpdmVuIHRoYXQsIEknbGwgZGVmaW5pdGVseSBpbmNsdWRlIHRoZW0gYXMga2V5IGBGb2N1c1N5bWJvbHNgLiBMZXQncyBhZGQgdGhlbSwgYWxvbmcgd2l0aCBgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHRgLCBmb3IgYSBtb3JlIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIHJlbGV2YW50IGludGVyYWN0aW9uczpcblxuKiAgIGBpZWVlODAyMTFfbGlua191bnJlc2VydmVfY2hhbmN0eGBcbiogICBgX19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWxgXG4qICAgYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0YFxuKiAgIGBpZWVlODAyMTFfY2hhbm5lbF9zd2l0Y2hgXG5cbk5leHQsIHRoZSBjb25maWd1cmF0aW9ucy4gSSBzZWUgYE1BQzgwMjExYCBpcyBmbGFnZ2VkLiBJJ2xsIG1ha2Ugc3VyZSBpdCdzIGNvcnJlY3QuIEEgcXVpY2sgY2hlY2sgb2YgdGhlIGRlcGVuZGVuY3kgdHJlZSwgYW5kIGl0IGxvb2tzIGxpa2UgYE1BQzgwMjExYCBkZXBlbmRzIG9uIGBDRkc4MDIxMWAsIHNvIEknbGwgYmUgZXhwbGljaXQgYW5kIGluY2x1ZGUgYm90aCwgYWx0aG91Z2ggYE1BQzgwMjExYCBpcyB0aGUgY29yZSBvbmUuIFRoaXMga2VlcHMgdGhpbmdzIHJvYnVzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwMDEsIk91dHB1dFRva2VucyI6MTYzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA1OjI0OjA2LjcxMjUxNjQyNVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MzE0MDc0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHhcIixcbiAgICBcIl9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsXCIsXG4gICAgXCJpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfY29udGV4dFwiLFxuICAgIFwiaWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gbWFjODAyMTEgY2hhbm5lbCBjb250ZXh0IHJlc2VydmF0aW9uIGFuZCB1bnJlc2VydmF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgdGhlIHJlcGxhY2VtZW50IG9mIGNoYW5uZWwgY29udGV4dHMuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBjZmc4MDIxMSBjaGFubmVsIHN3aXRjaCBvcGVyYXRpb25zIGFuZCBpcyBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJDRkc4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4XCIsXG4gICAgXCJfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbFwiLFxuICAgIFwiaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHRcIixcbiAgICBcImllZWU4MDIxMV9jaGFubmVsX3N3aXRjaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG1hYzgwMjExIGNoYW5uZWwgY29udGV4dCByZXNlcnZhdGlvbiBhbmQgdW5yZXNlcnZhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIHRoZSByZXBsYWNlbWVudCBvZiBjaGFubmVsIGNvbnRleHRzLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgY2ZnODAyMTEgY2hhbm5lbCBzd2l0Y2ggb3BlcmF0aW9ucyBhbmQgaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowtxnbb[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 05:00:30 +0000 UTC FinishedAt: 2026-08-03 05:24:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "86c3125c75d79ee7fb4d045bb9ada4c5b067eacc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "CFG80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "86c3125c75d79ee7fb4d045bb9ada4c5b067eacc", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "CFG80211" ], "series_id": "fa322a84-429f-40ea-8266-33179ed648fb" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_link_unreserve_chanctx", "__ieee80211_link_release_channel", "ieee80211_link_use_reserved_context", "ieee80211_channel_switch" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAzIDA1OjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHgmIzM0OywKICAgICYjMzQ7X19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHQmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG1hYzgwMjExIGNoYW5uZWwgY29udGV4dCByZXNlcnZhdGlvbiBhbmQgdW5yZXNlcnZhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIHRoZSByZXBsYWNlbWVudCBvZiBjaGFubmVsIGNvbnRleHRzLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgY2ZnODAyMTEgY2hhbm5lbCBzd2l0Y2ggb3BlcmF0aW9ucyBhbmQgaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNToyMzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGY0OTk3ODAzZmY0YjcwNWFkNWVhZmYwMGE3NzE3MGMxNWMzZTgxMDNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDA1OjIzOjE4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9jaGFuLmMgYi9uZXQvbWFjODAyMTEvY2hhbi5jXG5pbmRleCA1MTUyYjg0YTMzNTc3Li5kMzc4OWNmOGQ0MTc5IDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL2NoYW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL2NoYW4uY1xuQEAgLTIzMSw2ICYjNDM7MjMxLDEzIEBAIGludCBpZWVlODAyMTFfY2hhbmN0eF9yZWZjb3VudChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdHJldHVybiBudW07XG4gfVxuIFxuJiM0MztzdGF0aWMgYm9vbFxuJiM0MztpZWVlODAyMTFfY2hhbmN0eF9oYXNfcmVwbGFjZV9wYXJ0bmVyKHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4KVxuJiM0Mzt7XG4mIzQzO1x0cmV0dXJuIGN0eC1cdTAwM2VyZXBsYWNlX3N0YXRlID09IElFRUU4MDIxMV9DSEFOQ1RYX1dJTExfQkVfUkVQTEFDRUQgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICAgIGN0eC1cdTAwM2VyZXBsYWNlX2N0eDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW50IGllZWU4MDIxMV9udW1fY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgaW50IHJhZGlvX2lkeClcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHggKmN0eDtcbkBAIC0xNDAzLDYgJiM0MzsxNDEwLDcgQEAgdm9pZCBpZWVlODAyMTFfbGlua191bnJlc2VydmVfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IGxpbmstXHUwMDNlc2RhdGE7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHggKmN0eCA9IGxpbmstXHUwMDNlcmVzZXJ2ZWRfY2hhbmN0eDtcbiYjNDM7XHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHggKm9sZF9jdHggPSBOVUxMO1xuIFxuIFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkoc2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlaHcud2lwaHkpO1xuIFxuQEAgLTE0MTYsNiAmIzQzOzE0MjQsNyBAQCB2b2lkIGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxuIFx0XHRcdGlmIChXQVJOX09OKCFjdHgtXHUwMDNlcmVwbGFjZV9jdHgpKVxuIFx0XHRcdFx0cmV0dXJuO1xuIFxuJiM0MztcdFx0XHRvbGRfY3R4ID0gY3R4LVx1MDAzZXJlcGxhY2VfY3R4O1xuIFx0XHRcdFdBUk5fT04oY3R4LVx1MDAzZXJlcGxhY2VfY3R4LVx1MDAzZXJlcGxhY2Vfc3RhdGUgIT1cbiBcdFx0XHQgICAgICAgIElFRUU4MDIxMV9DSEFOQ1RYX1dJTExfQkVfUkVQTEFDRUQpO1xuIFx0XHRcdFdBUk5fT04oY3R4LVx1MDAzZXJlcGxhY2VfY3R4LVx1MDAzZXJlcGxhY2VfY3R4ICE9IGN0eCk7XG5AQCAtMTQyNiw2ICYjNDM7MTQzNSwxMSBAQCB2b2lkIGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxuIFxuIFx0XHRcdGxpc3RfZGVsX3JjdShcdTAwMjZjdHgtXHUwMDNlbGlzdCk7XG4gXHRcdFx0a2ZyZWVfcmN1KGN0eCwgcmN1X2hlYWQpO1xuJiM0MztcbiYjNDM7XHRcdFx0aWYgKGllZWU4MDIxMV9jaGFuY3R4X3JlZmNvdW50KHNkYXRhLVx1MDAzZWxvY2FsLFxuJiM0MztcdFx0XHRcdFx0XHQgICAgICAgb2xkX2N0eCkgPT0gMClcbiYjNDM7XHRcdFx0XHRpZWVlODAyMTFfZnJlZV9jaGFuY3R4KHNkYXRhLVx1MDAzZWxvY2FsLCBvbGRfY3R4LFxuJiM0MztcdFx0XHRcdFx0XHQgICAgICAgZmFsc2UpO1xuIFx0XHR9IGVsc2Uge1xuIFx0XHRcdGllZWU4MDIxMV9mcmVlX2NoYW5jdHgoc2RhdGEtXHUwMDNlbG9jYWwsIGN0eCwgZmFsc2UpO1xuIFx0XHR9XG5AQCAtMTcwNSw3ICYjNDM7MTcxOSw4IEBAIGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9yZWFzc2lnbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcbiBcbiBcdGllZWU4MDIxMV9jaGVja19mYXN0X3htaXRfaWZhY2Uoc2RhdGEpO1xuIFxuLVx0aWYgKGllZWU4MDIxMV9jaGFuY3R4X3JlZmNvdW50KGxvY2FsLCBvbGRfY3R4KSA9PSAwKVxuJiM0MztcdGlmIChpZWVlODAyMTFfY2hhbmN0eF9yZWZjb3VudChsb2NhbCwgb2xkX2N0eCkgPT0gMCBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgIWllZWU4MDIxMV9jaGFuY3R4X2hhc19yZXBsYWNlX3BhcnRuZXIob2xkX2N0eCkpXG4gXHRcdGllZWU4MDIxMV9mcmVlX2NoYW5jdHgobG9jYWwsIG9sZF9jdHgsIGZhbHNlKTtcbiBcbiBcdGllZWU4MDIxMV9yZWNhbGNfY2hhbmN0eF9taW5fZGVmKGxvY2FsLCBuZXdfY3R4KTtcbkBAIC0yMTc0LDcgJiM0MzsyMTg5LDggQEAgdm9pZCBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbiBcdH1cbiBcbiBcdGllZWU4MDIxMV9hc3NpZ25fbGlua19jaGFuY3R4KGxpbmssIE5VTEwsIGZhbHNlKTtcbi1cdGlmIChpZWVlODAyMTFfY2hhbmN0eF9yZWZjb3VudChsb2NhbCwgY3R4KSA9PSAwKVxuJiM0MztcdGlmIChpZWVlODAyMTFfY2hhbmN0eF9yZWZjb3VudChsb2NhbCwgY3R4KSA9PSAwIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICAhaWVlZTgwMjExX2NoYW5jdHhfaGFzX3JlcGxhY2VfcGFydG5lcihjdHgpKVxuIFx0XHRpZWVlODAyMTFfZnJlZV9jaGFuY3R4KGxvY2FsLCBjdHgsIHNraXBfaWRsZV9yZWNhbGMpO1xuIFxuIFx0bGluay1cdTAwM2VyYWRhcl9yZXF1aXJlZCA9IGZhbHNlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA1OjIzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtDRkc4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4JiMzNDssCiAgICAmIzM0O19faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9jaGFubmVsX3N3aXRjaCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBtYWM4MDIxMSBjaGFubmVsIGNvbnRleHQgcmVzZXJ2YXRpb24gYW5kIHVucmVzZXJ2YXRpb24gbG9naWMsIHNwZWNpZmljYWxseSBoYW5kbGluZyB0aGUgcmVwbGFjZW1lbnQgb2YgY2hhbm5lbCBjb250ZXh0cy4gVGhpcyBpcyByZWFjaGFibGUgdmlhIGNmZzgwMjExIGNoYW5uZWwgc3dpdGNoIG9wZXJhdGlvbnMgYW5kIGlzIGZ1bmN0aW9uYWwgY29yZSBrZXJuZWwgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmNDk5NzgwM2ZmNGI3MDVhZDVlYWZmMDBhNzcxNzBjMTVjM2U4MTAzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMyAwNToyMzoxOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9jaGFuLmMgYi9uZXQvbWFjODAyMTEvY2hhbi5jCmluZGV4IDUxNTJiODRhMzM1NzcuLmQzNzg5Y2Y4ZDQxNzkgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS9jaGFuLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL2NoYW4uYwpAQCAtMjMxLDYgJiM0MzsyMzEsMTMgQEAgaW50IGllZWU4MDIxMV9jaGFuY3R4X3JlZmNvdW50KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLAogCXJldHVybiBudW07CiB9CiAKJiM0MztzdGF0aWMgYm9vbAomIzQzO2llZWU4MDIxMV9jaGFuY3R4X2hhc19yZXBsYWNlX3BhcnRuZXIoc3RydWN0IGllZWU4MDIxMV9jaGFuY3R4ICpjdHgpCiYjNDM7ewomIzQzOwlyZXR1cm4gY3R4LSZndDtyZXBsYWNlX3N0YXRlID09IElFRUU4MDIxMV9DSEFOQ1RYX1dJTExfQkVfUkVQTEFDRUQgJmFtcDsmYW1wOwomIzQzOwkgICAgICAgY3R4LSZndDtyZXBsYWNlX2N0eDsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGllZWU4MDIxMV9udW1fY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgaW50IHJhZGlvX2lkeCkKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHggKmN0eDsKQEAgLTE0MDMsNiAmIzQzOzE0MTAsNyBAQCB2b2lkIGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKQogewogCXN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gbGluay0mZ3Q7c2RhdGE7CiAJc3RydWN0IGllZWU4MDIxMV9jaGFuY3R4ICpjdHggPSBsaW5rLSZndDtyZXNlcnZlZF9jaGFuY3R4OwomIzQzOwlzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHggKm9sZF9jdHggPSBOVUxMOwogCiAJbG9ja2RlcF9hc3NlcnRfd2lwaHkoc2RhdGEtJmd0O2xvY2FsLSZndDtody53aXBoeSk7CiAKQEAgLTE0MTYsNiAmIzQzOzE0MjQsNyBAQCB2b2lkIGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKQogCQkJaWYgKFdBUk5fT04oIWN0eC0mZ3Q7cmVwbGFjZV9jdHgpKQogCQkJCXJldHVybjsKIAomIzQzOwkJCW9sZF9jdHggPSBjdHgtJmd0O3JlcGxhY2VfY3R4OwogCQkJV0FSTl9PTihjdHgtJmd0O3JlcGxhY2VfY3R4LSZndDtyZXBsYWNlX3N0YXRlICE9CiAJCQkgICAgICAgIElFRUU4MDIxMV9DSEFOQ1RYX1dJTExfQkVfUkVQTEFDRUQpOwogCQkJV0FSTl9PTihjdHgtJmd0O3JlcGxhY2VfY3R4LSZndDtyZXBsYWNlX2N0eCAhPSBjdHgpOwpAQCAtMTQyNiw2ICYjNDM7MTQzNSwxMSBAQCB2b2lkIGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKQogCiAJCQlsaXN0X2RlbF9yY3UoJmFtcDtjdHgtJmd0O2xpc3QpOwogCQkJa2ZyZWVfcmN1KGN0eCwgcmN1X2hlYWQpOwomIzQzOwomIzQzOwkJCWlmIChpZWVlODAyMTFfY2hhbmN0eF9yZWZjb3VudChzZGF0YS0mZ3Q7bG9jYWwsCiYjNDM7CQkJCQkJICAgICAgIG9sZF9jdHgpID09IDApCiYjNDM7CQkJCWllZWU4MDIxMV9mcmVlX2NoYW5jdHgoc2RhdGEtJmd0O2xvY2FsLCBvbGRfY3R4LAomIzQzOwkJCQkJCSAgICAgICBmYWxzZSk7CiAJCX0gZWxzZSB7CiAJCQlpZWVlODAyMTFfZnJlZV9jaGFuY3R4KHNkYXRhLSZndDtsb2NhbCwgY3R4LCBmYWxzZSk7CiAJCX0KQEAgLTE3MDUsNyAmIzQzOzE3MTksOCBAQCBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfcmVhc3NpZ24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspCiAKIAlpZWVlODAyMTFfY2hlY2tfZmFzdF94bWl0X2lmYWNlKHNkYXRhKTsKIAotCWlmIChpZWVlODAyMTFfY2hhbmN0eF9yZWZjb3VudChsb2NhbCwgb2xkX2N0eCkgPT0gMCkKJiM0MzsJaWYgKGllZWU4MDIxMV9jaGFuY3R4X3JlZmNvdW50KGxvY2FsLCBvbGRfY3R4KSA9PSAwICZhbXA7JmFtcDsKJiM0MzsJICAgICFpZWVlODAyMTFfY2hhbmN0eF9oYXNfcmVwbGFjZV9wYXJ0bmVyKG9sZF9jdHgpKQogCQlpZWVlODAyMTFfZnJlZV9jaGFuY3R4KGxvY2FsLCBvbGRfY3R4LCBmYWxzZSk7CiAKIAlpZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZihsb2NhbCwgbmV3X2N0eCk7CkBAIC0yMTc0LDcgJiM0MzsyMTg5LDggQEAgdm9pZCBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaywKIAl9CiAKIAlpZWVlODAyMTFfYXNzaWduX2xpbmtfY2hhbmN0eChsaW5rLCBOVUxMLCBmYWxzZSk7Ci0JaWYgKGllZWU4MDIxMV9jaGFuY3R4X3JlZmNvdW50KGxvY2FsLCBjdHgpID09IDApCiYjNDM7CWlmIChpZWVlODAyMTFfY2hhbmN0eF9yZWZjb3VudChsb2NhbCwgY3R4KSA9PSAwICZhbXA7JmFtcDsKJiM0MzsJICAgICFpZWVlODAyMTFfY2hhbmN0eF9oYXNfcmVwbGFjZV9wYXJ0bmVyKGN0eCkpCiAJCWllZWU4MDIxMV9mcmVlX2NoYW5jdHgobG9jYWwsIGN0eCwgc2tpcF9pZGxlX3JlY2FsYyk7CiAKIAlsaW5rLSZndDtyYWRhcl9yZXF1aXJlZCA9IGZhbHNlOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDE3CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgbWFjODAyMTEgQ2hhbm5lbCBDb250ZXh0IFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYG5ldC9tYWM4MDIxMS9jaGFuLmNgLCB3aGljaCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGEgY29yZSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gbWFjODAyMTEsIG5vdCBqdXN0IHNvbWUgcGVyaXBoZXJhbCBtb2R1bGUuIFRoZSBhZGRpdGlvbiBvZiBgaWVlZTgwMjExX2NoYW5jdHhfaGFzX3JlcGxhY2VfcGFydG5lcmAgYXMgYSBoZWxwZXIgaXMgaW50ZXJlc3Rpbmc7IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGZhY3RvcnMgaW50byB0aGUgY2hhbm5lbCBjb250ZXh0IG1hbmFnZW1lbnQuCgpUaGUgcmVhbCBtZWF0IG9mIHRoaXMgc2VlbXMgdG8gYmUgdGhlIG1vZGlmaWNhdGlvbnMgdG8gYGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4YCwgYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9yZWFzc2lnbmAsIGFuZCBgX19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWxgLiBUaGV5JiMzOTtyZSBlaXRoZXIgdXNpbmcgdGhlIG5ldyBoZWxwZXIgb3IgZGlyZWN0bHkgY2hlY2tpbmcgdGhlIGBpZWVlODAyMTFfY2hhbmN0eF9yZWZjb3VudGAgYW5kIGZyZWVpbmcgYG9sZF9jdHhgIGlmIGl0JiMzOTtzIHplcm8uIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgY2hhbmdlcyB0byBob3cgY2hhbm5lbCBjb250ZXh0cyBhcmUgcmVzZXJ2ZWQsIHJlYXNzaWduZWQsIGFuZCB1bHRpbWF0ZWx5IHJlbGVhc2VkLiBJIG5lZWQgdG8gZGlnIGludG8gdGhlIGltcGxpY2F0aW9ucyBmb3IgY29uY3VycmVudCBjaGFubmVsIGFjY2VzcyBhbmQgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4KCk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gbWFjODAyMTEuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGNvbXBpbGVkLCBpZiB0aGV5IGFyZSBleHBvcnRlZCwgb3IgaWYgdGhleSBhcmUgc3RhdGljLiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIHNlYXJjaCBmb3IgYGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4YCwgYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9yZWFzc2lnbmAgYW5kIGBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbGAgd2l0aGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDU6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQzgwMjExJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI6Y29uZmlnIE1BQzgwMjExXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xOT1pZiBNQUM4MDIxMSAhPSBuXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyLVx0Ym9vbFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDpjb25maWcgTUFDODAyMTFfUkNfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2Vcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjQxOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz00OD1lbmRjaG9pY2Vcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTUxLVx0c3RyaW5nXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NTc9Y29tbWVudCBcJiMzNDtTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBtYWM4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNjktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3MDpjb25maWcgTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXHRib29sIFwmIzM0O0VuYWJsZSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTc4LVxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVx0Ym9vbCBcJiMzNDtFbmFibGUgTEVEIHRyaWdnZXJzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctODctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL0tjb25maWctODktXHRib29sIFwmIzM0O0V4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk2LVxubmV0L21hYzgwMjExL0tjb25maWc6OTc6Y29uZmlnIE1BQzgwMjExX01FU1NBR0VfVFJBQ0lOR1xubmV0L21hYzgwMjExL0tjb25maWctOTgtXHRib29sIFwmIzM0O1RyYWNlIGFsbCBtYWM4MDIxMSBkZWJ1ZyBtZXNzYWdlc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwOS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cdGJvb2wgXCYjMzQ7U2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cdGJvb2wgXCYjMzQ7RG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjEzMjpjb25maWcgTUFDODAyMTFfVkVSQk9TRV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTMzLVx0Ym9vbCBcJiMzNDtWZXJib3NlIGRlYnVnZ2luZyBvdXRwdXRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2Mzpjb25maWcgTUFDODAyMTFfSFRfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBIVCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzQtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTc2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5Nzpjb25maWcgTUFDODAyMTFfUFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBwb3dlcnNhdmUgbW9kZSBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMDgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjEwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxubmV0L21hYzgwMjExL0tjb25maWc6MjM1OmNvbmZpZyBNQUM4MDIxMV9NSFdNUF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjM2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggSFdNUCByb3V0aW5nIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0Ny1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjYwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxubmV0L21hYzgwMjExL0tjb25maWc6MjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwb3dlcnNhdmUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjgwLVxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXHRib29sIFwmIzM0O1ZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXHRib29sIFwmIzM0O0V4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjMwODpjb25maWcgTUFDODAyMTFfU1RBX0hBU0hfTUFYX1NJWkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cdGludCBcJiMzNDtTdGF0aW9uIGhhc2ggdGFibGUgbWF4aW11bSBzaXplXCYjMzQ7IGlmIE1BQzgwMjExX0RFQlVHX01FTlVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODI4CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogNjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipEaXZpbmcgaW50byB0aGUgODAyLjExIENvbmZpZ3VyYXRpb24qKgoKQWxyaWdodCwgc28gdGhlIGNvcmUgb2YgdGhpcyB3aG9sZSB0aGluZyBpcyBvYnZpb3VzbHkgdGhlIGBNQUM4MDIxMWAgY29uZmlndXJhdGlvbiBpdGVtIOKAkyB0aGF0JiMzOTtzIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLCBhbmQgaXQmIzM5O3MgYSB0cmlzdGF0ZSwgc28gaXQgZGljdGF0ZXMgdGhlIGVudGlyZSBmcmFtZXdvcmsuICBJIG5lZWQgdG8gZHJpbGwgZG93biBhbmQgc2VlIGlmIHRob3NlIGNyaXRpY2FsIGZ1bmN0aW9ucywgYGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4YCBhbmQgYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9yZWFzc2lnbmAsIGFyZSBhY3R1YWxseSAqZXhwb3J0ZWQqLiBUaGF04oCZcyB0aGUga2V5LiAgSWYgdGhleSYjMzk7cmUgbm90IGV4cG9ydGVkLCB0aGVuIGl0IG1ha2VzIHRoaW5ncyBkaWZmaWN1bHQgYmVjYXVzZSB0aGlzIGltcGxpZXMgdGhhdCB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB0aGUgbGlua2luZyBsYXllciBvciBwZXJoYXBzIEkgYW0gbG9va2luZyBpbiB0aGUgd3JvbmcgcGxhY2UuIFRob3NlIGZ1bmN0aW9ucyBhcmUgY3J1Y2lhbCBmb3IgYW55IHNvcnQgb2YgZHluYW1pYyBjaGFubmVsIGFzc2lnbm1lbnQgb3IgcmVzb3VyY2UgbWFuYWdlbWVudCB3aXRoaW4gdGhlIDgwMi4xMSBzdGFjay4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlaXIgYXZhaWxhYmlsaXR5IHJpZ2h0IGF3YXkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDU6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jZmcuYz00NzAwPV9faWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTQ3ODItXHRpZiAoZXJyKSB7XG5uZXQvbWFjODAyMTEvY2ZnLmM6NDc4MzpcdFx0aWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHgobGlua19kYXRhKTtcbm5ldC9tYWM4MDIxMS9jZmcuYy00Nzg0LVx0XHRnb3RvIG91dDtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDc5Mi1cdGlmIChlcnIpIHtcbm5ldC9tYWM4MDIxMS9jZmcuYzo0NzkzOlx0XHRpZWVlODAyMTFfbGlua191bnJlc2VydmVfY2hhbmN0eChsaW5rX2RhdGEpO1xubmV0L21hYzgwMjExL2NmZy5jLTQ3OTQtXHRcdGdvdG8gb3V0O1xuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM9MTM5OT12b2lkIGllZWU4MDIxMV9saW5rX2NvcHlfY2hhbmN0eF90b192bGFucyhzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTE0MDgtXG5uZXQvbWFjODAyMTEvY2hhbi5jOjE0MDk6dm9pZCBpZWVlODAyMTFfbGlua191bnJlc2VydmVfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTQxMC17XG4tLVxubmV0L21hYzgwMjExL2NoYW4uYz0xODk4PXN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjEyMS1cdFx0XHRcdFx0ICBlcnIpO1xubmV0L21hYzgwMjExL2NoYW4uYzoyMTIyOlx0XHRcdFx0aWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHgobGluayk7XG5uZXQvbWFjODAyMTEvY2hhbi5jLTIxMjMtXHRcdFx0XHRjZmc4MDIxMV9zdG9wX2lmYWNlKGxvY2FsLVx1MDAzZWh3LndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjE1NS1cdFx0Zm9yX2VhY2hfY2hhbmN0eF91c2VyX3Jlc2VydmVkKGxvY2FsLCBjdHgsIFx1MDAyNml0ZXIpIHtcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjE1NjpcdFx0XHRpZWVlODAyMTFfbGlua191bnJlc2VydmVfY2hhbmN0eChpdGVyLmxpbmspO1xubmV0L21hYzgwMjExL2NoYW4uYy0yMTU3LVx0XHRcdGllZWU4MDIxMV9saW5rX2NoYW5jdHhfcmVzZXJ2YXRpb25fY29tcGxldGUoaXRlci5saW5rKTtcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTIxNjQ9dm9pZCBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIxODctXG5uZXQvbWFjODAyMTEvY2hhbi5jOjIxODg6XHRcdGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4KGxpbmspO1xubmV0L21hYzgwMjExL2NoYW4uYy0yMTg5LVx0fVxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTI4MzI9aWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHQoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjgzMzp2b2lkIGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKTtcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI4MzQtXG4tLVxubmV0L21hYzgwMjExL21sbWUuYz0zMDk1PWllZWU4MDIxMV9zdGFfYWJvcnRfY2hhbnN3aXRjaChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTMxMDUtXHRpZiAocmN1X2FjY2Vzc19wb2ludGVyKGxpbmstXHUwMDNlY29uZi1cdTAwM2VjaGFuY3R4X2NvbmYpKVxubmV0L21hYzgwMjExL21sbWUuYzozMTA2Olx0XHRpZWVlODAyMTFfbGlua191bnJlc2VydmVfY2hhbmN0eChsaW5rKTtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMzEwNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjM5CgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMTM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludGVybmFsIG1hYzgwMjExIEZ1bmN0aW9uIENhbGwgQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlc2UgaW50ZXJuYWwgZnVuY3Rpb25zIHdpdGhpbiBgbWFjODAyMTFgLiBUaW1lIHRvIHRyYWNlIHRoZWlyIGNhbGwgc2l0ZXMuIFRoZSBmaXJzdCBvbmUgSSBzZWUsIGBfX2llZWU4MDIxMV9jaGFubmVsX3N3aXRjaGAsIHRoYXQmIzM5O3MgaW4gYGNmZy5jYC4gTWFrZXMgc2Vuc2UsIGNoYW5uZWwgY29uZmlndXJhdGlvbi4gVGhlbiwgdGhlcmUmIzM5O3MgYGllZWU4MDIxMV9zdGFfYWJvcnRfY2hhbnN3aXRjaGAgaW4gYG1sbWUuY2AsIGluZGljYXRpbmcgc29tZSBzb3J0IG9mIG1hbmFnZW1lbnQgZnJhbWUgaW50ZXJhY3Rpb24sIHBvc3NpYmx5IGFib3J0aW5nIHRoZSBjaGFubmVsIHN3aXRjaC4gYGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaGAgaXMgbmV4dDsgaXQmIzM5O3Mgd2l0aGluIGBjaGFuLmNgLCBzdWdnZXN0aW5nIGEgdmlydHVhbCBpbnRlcmZhY2UmIzM5O3MgdXNlIG9mIGEgcmVzZXJ2ZWQgY2hhbm5lbCBzd2l0Y2guIEZpbmFsbHksIGBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbGAsIGFsc28gaW4gYGNoYW4uY2Ag4oCTIGEgbGluayByZWxlYXNpbmcgdGhlIGNoYW5uZWwsIHByb2JhYmx5IGFmdGVyIHRoZSBzd2l0Y2guIE5vdywgbGV0JiMzOTtzIGRyaWxsIGRvd24gYW5kIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgX19pZWVlODAyMTFfY2hhbm5lbF9zd2l0Y2hgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA1OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19faWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2ZnLmM9NDY5OT1zdGF0aWMgaW50XG5uZXQvbWFjODAyMTEvY2ZnLmM6NDcwMDpfX2llZWU4MDIxMV9jaGFubmVsX3N3aXRjaChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L21hYzgwMjExL2NmZy5jLTQ3MDEtXHRcdFx0ICAgc3RydWN0IGNmZzgwMjExX2NzYV9zZXR0aW5ncyAqcGFyYW1zKVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz00ODE5PWludCBpZWVlODAyMTFfY2hhbm5lbF9zd2l0Y2goc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDgyNi1cbm5ldC9tYWM4MDIxMS9jZmcuYzo0ODI3Olx0cmV0dXJuIF9faWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoKHdpcGh5LCBkZXYsIHBhcmFtcyk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNDgyOC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDU6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzg4NwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDEzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDaGFubmVsIFN3aXRjaCBBbmFseXNpcyoqCgpPa2F5LCBzbyBgaWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoYCBpcyB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBjZmc4MDIxMSB1c2VzIGZvciBjaGFubmVsIHN3aXRjaGluZy4gVGhhdCYjMzk7cyBhIGZ1bmRhbWVudGFsIHBpZWNlLCBhbmQgSSYjMzk7bSBjb25maWRlbnQgaXQmIzM5O3Mgd29ya2luZyBhcyBleHBlY3RlZCBiYXNlZCBvbiB3aGF0IEkga25vdy4gV2UgYWxyZWFkeSBoYXZlIGBNQUM4MDIxMWAgY29uZmlndXJlZCwgd2hpY2ggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIG5lZWQgdG8gYmUgc3VyZSB0aG91Z2gsIGFyZSB0aGVyZSBhbnkgb3RoZXIgcmVxdWlyZWQgY29uZmlncz8gTGV0JiMzOTtzIHRha2UgYW5vdGhlciBsb29rIGF0IHRoZSBgbmV0L21hYzgwMjExL0tjb25maWdgIGZpbGUuIEkmIzM5O20gcmVjYWxsaW5nIHRoYXQgYE1BQzgwMjExYCBkZXBlbmRzIG9uIGBDRkc4MDIxMWAsIHNvIHRoYXQgY2hlY2tzIG91dC4gSSYjMzk7bSBzYXRpc2ZpZWQgbm93LCBhbmQgd2lsbCBhZGQgYE1BQzgwMjExYCB0byB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QuIE5vdywgbGV0JiMzOTtzIHR1cm4gb3VyIGF0dGVudGlvbiB0byBgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX3JlYXNzaWduYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDU6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX3JlYXNzaWduJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2hhbi5jPTE2NTQ9c3RhdGljIGludFxubmV0L21hYzgwMjExL2NoYW4uYzoxNjU1OmllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9yZWFzc2lnbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMTY1Ni17XG4tLVxubmV0L21hYzgwMjExL2NoYW4uYz0xODk4PXN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjExMy1cdFx0XHRpZiAoaWVlZTgwMjExX2xpbmtfZ2V0X2NoYW5jdHgobGluaykpXG5uZXQvbWFjODAyMTEvY2hhbi5jOjIxMTQ6XHRcdFx0XHRlcnIgPSBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfcmVhc3NpZ24obGluayk7XG5uZXQvbWFjODAyMTEvY2hhbi5jLTIxMTUtXHRcdFx0ZWxzZVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM9MjM3MT1pbnQgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHQoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXG4tLVxubmV0L21hYzgwMjExL2NoYW4uYy0yMzk3LVx0XHRpZiAob2xkX2N0eClcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjM5ODpcdFx0XHRyZXR1cm4gaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX3JlYXNzaWduKGxpbmspO1xubmV0L21hYzgwMjExL2NoYW4uYy0yMzk5LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjY1CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCBjb2RlIHNuaXBwZXQsIGRlbGl2ZXJlZCBhcyBpZiBpdCYjMzk7cyBteSBvd24gdGhvdWdodCBwcm9jZXNzOgoKKipUaGlua2luZyBUaHJvdWdoIExpbmsgVXNhZ2UgYW5kIENvbnRleHQgUmVhc3NpZ25tZW50IGluIElFRUUgODAyLjExKioKClJpZ2h0LCBzbyBgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHRgIGlzIHRoZSBmdW5jdGlvbiB0aGF0JiMzOTtzIGJlaW5nIGNhbGxlZCwgd2hpY2ggaW1tZWRpYXRlbHkgbWFrZXMgbWUgdGhpbmsgYWJvdXQgcmVzb3VyY2UgYWxsb2NhdGlvbiBhbmQgY29uY3VycmVuY3kgaXNzdWVzIGluIHRoZSBjb250ZXh0IG9mIGFuIDgwMi4xMSBsaW5rLiBUaGUgbmFtZSBpdHNlbGYgc3VnZ2VzdHMgYSBmdW5jdGlvbiB0byBtYW5hZ2UgaG93IGEgcmVzZXJ2ZWQgY29udGV4dCBpcyBiZWluZyB1dGlsaXplZC4gVGhpcyBjb250ZXh0IGlzIGxpa2VseSB1c2VkIHRvIGhvbGQgc29tZSBzdGF0ZSBpbmZvcm1hdGlvbi4gSSBiZXQgaXQmIzM5O3Mgc29tZXRoaW5nIGltcG9ydGFudCwgb3RoZXJ3aXNlLCB3aHkgcmVzZXJ2ZSBpdD8KClRoZW4sIHRoZSAqdmVyeSBuZXh0KiB0aGluZyB0aGlzIGZ1bmN0aW9uIGRvZXMgaXMgY2FsbCBgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX3JlYXNzaWduYC4gIEFoLCB0aGF0JiMzOTtzIHdoYXQgSSBuZWVkZWQgdG8ga25vdy4gVGhpcyBpbmRpY2F0ZXMgdGhhdCB1c2luZyB0aGUgcmVzZXJ2ZWQgY29udGV4dCBtYXkgbGVhZCB0byB0aGUgcmVhc3NpZ25tZW50IG9mIGl0LiBUaGlzIHRlbGxzIG1lIHRoYXQgdGhlIHJlc2VydmVkIGNvbnRleHQgaXNuJiMzOTt0IGp1c3QgKnVzZWQqLCBpdCBjYW4gYmUgKnJlYXNzaWduZWQqIGR1cmluZyBpdHMgdXNhZ2UuIFRoaXMgdGVsbHMgbWUgdGhhdCB0aGlzIHBhcnRpY3VsYXIgY29kZSBpcyBkZXNpZ25lZCB3aXRoIGEgY2FyZWZ1bCBjb25zaWRlcmF0aW9uIG9mIHJlc291cmNlIG1hbmFnZW1lbnQgYW5kIGNvbmN1cnJlbmN5LiBUaGUgcmVhc3NpZ25tZW50IHByb2JhYmx5IGhhcyBzb21ldGhpbmcgdG8gZG8gd2l0aCB0aHJlYWQgc3luY2hyb25pemF0aW9uLCBhbmQgaXQmIzM5O3MgbWFraW5nIG1lIHdvbmRlcjogSG93IGlzIHRoaXMgcmVhc3NpZ25tZW50IGhhbmRsZWQ/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIHJlYXNzaWdubWVudD8gSXMgaXQgYXRvbWljPyBXaGF0IGhhcHBlbnMgaWYgdGhlcmUmIzM5O3MgYSByYWNlIGNvbmRpdGlvbj8gVGhpcyBtYWtlcyBtZSB3YW50IHRvIGRpZyBkZWVwZXIgaW50byBgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX3JlYXNzaWduYCB0byBzZWUgd2hhdCBtZWNoYW5pc21zIGFyZSBiZWluZyB1c2VkIGZvciB0aHJlYWQgc2FmZXR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmUtYXNzaWdubWVudCBwcm9jZXNzIHNvIEkga25vdyBpZiBpdCBhZmZlY3RzIG90aGVyIHBhcnRzIG9mIHRoZSBsaW5rIHVzYWdlIGluIGFuIHVuZXhlcGVjdGVkIHdheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDU6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jZmcuYz00NDYzPXN0YXRpYyBpbnQgX19pZWVlODAyMTFfY3NhX2ZpbmFsaXplKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rX2RhdGEpXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTQ0ODgtXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDQ4OTpcdFx0cmV0dXJuIGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0KGxpbmtfZGF0YSk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNDQ5MC1cdH1cbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jPTIyOTE9aW50IF9pZWVlODAyMTFfbGlua191c2VfY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIzNzAtXG5uZXQvbWFjODAyMTEvY2hhbi5jOjIzNzE6aW50IGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxubmV0L21hYzgwMjExL2NoYW4uYy0yMzcyLXtcbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0yODMxPWludCBfX211c3RfY2hlY2tcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjI4MzI6aWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHQoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjgzMy12b2lkIGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKTtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTI4NzY9c3RhdGljIHZvaWQgaWVlZTgwMjExX2NzYV9zd2l0Y2hfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjk1MC1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6Mjk1MTpcdFx0cmV0ID0gaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHQobGluayk7XG5uZXQvbWFjODAyMTEvbWxtZS5jLTI5NTItXHRcdGlmIChyZXQpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDU6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTY4MAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDE4NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipDU0EgQnVnIEZpeCBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIHJlbGF0ZWQgdG8gQ2hhbm5lbCBTd2l0Y2ggQW5ub3VuY2VtZW50cywgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgYF9faWVlZTgwMjExX2NzYV9maW5hbGl6ZWAgYW5kIGBpZWVlODAyMTFfY3NhX3N3aXRjaF93b3JrYCBmdW5jdGlvbnMsIHdoaWNoIGFyZSB0aGUgZW50cnkgcG9pbnRzIGhlcmUuIEkga25vdyB0aGVzZSBsaXZlIHdpdGhpbiB0aGUgY2ZnODAyMTEvbWFjODAyMTEgcmVhbG0sIHNvIHRoYXQmIzM5O3Mgd2hlcmUgSSYjMzk7bGwgZm9jdXMuIFRoZSBkZXNjcmlwdGlvbiBtZW50aW9ucyBhIGJ1ZyBpbiB0aGUgY2hhbm5lbCBjb250ZXh0IHJlc2VydmF0aW9uL3VucmVzZXJ2YXRpb24gbG9naWMuIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGFyZWEgZm9yIHJhY2UgY29uZGl0aW9ucyBhbmQgc3VidGxlIGVycm9ycywgYW5kIGNlcnRhaW5seSBzb21ldGhpbmcgdGhhdCB3YXJyYW50cyB0aG9yb3VnaCBmdXp6aW5nLgoKTXkgcHJpbWFyeSB0YXJnZXRzIGZvciBpbnZlc3RpZ2F0aW9uIGFyZSB0aGUga2V5IHN5bWJvbHM6IGBpZWVlODAyMTFfbGlua191bnJlc2VydmVfY2hhbmN0eGAsIGBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbGAsIGBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfY29udGV4dGAsIGFuZCBgaWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdC4gSSYjMzk7bGwgd2FudCB0byBjaGVjayBpZiBgX19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWxgIGlzIGV4cG9ydGVkIG9yIHN0YXRpYy4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlIGZ1bmN0aW9uIGlzIHVzZWQgYW5kIGNhbGxlZC4gRXhwb3J0ZWQgZ2VuZXJhbGx5IG1lYW5zIGl0JiMzOTtzIGF2YWlsYWJsZSB0byBvdGhlciBtb2R1bGVzLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8gY29uc2lkZXIuIEkmIzM5O2xsIHRoZW4gbG9vayBhdCB0aGUgb3RoZXIgZnVuY3Rpb25zIHRvIGNvbmZpcm0gaG93IHRob3NlIHN5bWJvbHMgYXJlIHVzZWQsIHRvIGlkZW50aWZ5IHBvdGVudGlhbCByb290IGNhdXNlLCBhbmQgd2hlcmUgdGhlIGZ1enppbmcgY2FtcGFpZ24gbmVlZHMgdG8gYmUgdGFyZ2V0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA1OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2hhbi5jPTE4OTg9c3RhdGljIGludCBpZWVlODAyMTFfdmlmX3VzZV9yZXNlcnZlZF9zd2l0Y2goc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXG4tLVxubmV0L21hYzgwMjExL2NoYW4uYy0yMTYzLVxubmV0L21hYzgwMjExL2NoYW4uYzoyMTY0OnZvaWQgX19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIxNjUtXHRcdFx0XHQgICAgICBib29sIHNraXBfaWRsZV9yZWNhbGMpXG4tLVxubmV0L21hYzgwMjExL2NoYW4uYz0yMjkxPWludCBfaWVlZTgwMjExX2xpbmtfdXNlX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXG4tLVxubmV0L21hYzgwMjExL2NoYW4uYy0yMzMyLVx0aWYgKCFsb2NhbC1cdTAwM2Vpbl9yZWNvbmZpZylcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjMzMzpcdFx0X19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwobGluaywgZmFsc2UpO1xubmV0L21hYzgwMjExL2NoYW4uYy0yMzM0LVxuLS1cbm5ldC9tYWM4MDIxMS9jaGFuLmM9MjQ5OD12b2lkIGllZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcbi0tXG5uZXQvbWFjODAyMTEvY2hhbi5jLTI1MDctXHRpZiAocmN1X2FjY2Vzc19wb2ludGVyKGxpbmstXHUwMDNlY29uZi1cdTAwM2VjaGFuY3R4X2NvbmYpKVxubmV0L21hYzgwMjExL2NoYW4uYzoyNTA4Olx0XHRfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbChsaW5rLCBmYWxzZSk7XG5uZXQvbWFjODAyMTEvY2hhbi5jLTI1MDktfVxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTI4MzY9aWVlZTgwMjExX2xpbmtfY2hhbmdlX2NoYW5yZXEoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjgzOC1cdFx0XHQgICAgICB1NjQgKmNoYW5nZWQpO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjgzOTp2b2lkIF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjg0MC1cdFx0XHRcdCAgICAgIGJvb2wgc2tpcF9pZGxlX3JlY2FsYyk7XG4tLVxubmV0L21hYzgwMjExL2xpbmsuYz00NjU9c3RhdGljIGludCBfaWVlZTgwMjExX3NldF9hY3RpdmVfbGlua3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2xpbmsuYy01MTItXG5uZXQvbWFjODAyMTEvbGluay5jOjUxMzpcdFx0X19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwobGluaywgdHJ1ZSk7XG5uZXQvbWFjODAyMTEvbGluay5jLTUxNC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDU6MjQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEwMDEKCQkJCQkJCW91dHB1dDogMTYzCgkJCQkJCQl0aG91Z2h0czogMjMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIElFRUUgODAyLjExIENoYW5uZWwgTWFuYWdlbWVudCBGdW5jdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGZ1bmN0aW9uczogYF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsYCwgYGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4YCwgYW5kIGBpZWVlODAyMTFfY2hhbm5lbF9zd2l0Y2hgLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IG5vbmUgb2YgdGhlbSBhcmUgZGVjbGFyZWQgYXMgYHN0YXRpY2AsIHdoaWNoIGlzIHJlbGV2YW50IHRvIGhvdyBJJiMzOTtsbCBiZSBhcHByb2FjaGluZyB0aGlzLgoKR2l2ZW4gdGhhdCwgSSYjMzk7bGwgZGVmaW5pdGVseSBpbmNsdWRlIHRoZW0gYXMga2V5IGBGb2N1c1N5bWJvbHNgLiBMZXQmIzM5O3MgYWRkIHRoZW0sIGFsb25nIHdpdGggYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0YCwgZm9yIGEgbW9yZSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSByZWxldmFudCBpbnRlcmFjdGlvbnM6CgoqICAgYGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4YAoqICAgYF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsYAoqICAgYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0YAoqICAgYGllZWU4MDIxMV9jaGFubmVsX3N3aXRjaGAKCk5leHQsIHRoZSBjb25maWd1cmF0aW9ucy4gSSBzZWUgYE1BQzgwMjExYCBpcyBmbGFnZ2VkLiBJJiMzOTtsbCBtYWtlIHN1cmUgaXQmIzM5O3MgY29ycmVjdC4gQSBxdWljayBjaGVjayBvZiB0aGUgZGVwZW5kZW5jeSB0cmVlLCBhbmQgaXQgbG9va3MgbGlrZSBgTUFDODAyMTFgIGRlcGVuZHMgb24gYENGRzgwMjExYCwgc28gSSYjMzk7bGwgYmUgZXhwbGljaXQgYW5kIGluY2x1ZGUgYm90aCwgYWx0aG91Z2ggYE1BQzgwMjExYCBpcyB0aGUgY29yZSBvbmUuIFRoaXMga2VlcHMgdGhpbmdzIHJvYnVzdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDU6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O0NGRzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHgmIzM0OywKICAgICYjMzQ7X19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHQmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG1hYzgwMjExIGNoYW5uZWwgY29udGV4dCByZXNlcnZhdGlvbiBhbmQgdW5yZXNlcnZhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIHRoZSByZXBsYWNlbWVudCBvZiBjaGFubmVsIGNvbnRleHRzLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgY2ZnODAyMTEgY2hhbm5lbCBzd2l0Y2ggb3BlcmF0aW9ucyBhbmQgaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfbGlua191bnJlc2VydmVfY2hhbmN0eCYjMzQ7LAogICAgJiMzNDtfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfY29udGV4dCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfY2hhbm5lbF9zd2l0Y2gmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gbWFjODAyMTEgY2hhbm5lbCBjb250ZXh0IHJlc2VydmF0aW9uIGFuZCB1bnJlc2VydmF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgdGhlIHJlcGxhY2VtZW50IG9mIGNoYW5uZWwgY29udGV4dHMuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBjZmc4MDIxMSBjaGFubmVsIHN3aXRjaCBvcGVyYXRpb25zIGFuZCBpcyBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDU6MjM6MTkuNTYyODkwMDg3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc2MTI3Nzk4ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHhcIixcbiAgICBcIl9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsXCIsXG4gICAgXCJpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfY29udGV4dFwiLFxuICAgIFwiaWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gbWFjODAyMTEgY2hhbm5lbCBjb250ZXh0IHJlc2VydmF0aW9uIGFuZCB1bnJlc2VydmF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgdGhlIHJlcGxhY2VtZW50IG9mIGNoYW5uZWwgY29udGV4dHMuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBjZmc4MDIxMSBjaGFubmVsIHN3aXRjaCBvcGVyYXRpb25zIGFuZCBpcyBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNToyMzoxOS41NjI4OTYyNTdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NjcxMzQ5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGY0OTk3ODAzZmY0YjcwNWFkNWVhZmYwMGE3NzE3MGMxNWMzZTgxMDNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMyAwNToyMzoxOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvY2hhbi5jIGIvbmV0L21hYzgwMjExL2NoYW4uY1xcbmluZGV4IDUxNTJiODRhMzM1NzcuLmQzNzg5Y2Y4ZDQxNzkgMTAwNjQ0XFxuLS0tIGEvbmV0L21hYzgwMjExL2NoYW4uY1xcbisrKyBiL25ldC9tYWM4MDIxMS9jaGFuLmNcXG5AQCAtMjMxLDYgKzIzMSwxMyBAQCBpbnQgaWVlZTgwMjExX2NoYW5jdHhfcmVmY291bnQoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuIFxcdHJldHVybiBudW07XFxuIH1cXG4gXFxuK3N0YXRpYyBib29sXFxuK2llZWU4MDIxMV9jaGFuY3R4X2hhc19yZXBsYWNlX3BhcnRuZXIoc3RydWN0IGllZWU4MDIxMV9jaGFuY3R4ICpjdHgpXFxuK3tcXG4rXFx0cmV0dXJuIGN0eC1cXHUwMDNlcmVwbGFjZV9zdGF0ZSA9PSBJRUVFODAyMTFfQ0hBTkNUWF9XSUxMX0JFX1JFUExBQ0VEIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAgICBjdHgtXFx1MDAzZXJlcGxhY2VfY3R4O1xcbit9XFxuK1xcbiBzdGF0aWMgaW50IGllZWU4MDIxMV9udW1fY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgaW50IHJhZGlvX2lkeClcXG4ge1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHggKmN0eDtcXG5AQCAtMTQwMyw2ICsxNDEwLDcgQEAgdm9pZCBpZWVlODAyMTFfbGlua191bnJlc2VydmVfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcXG4ge1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IGxpbmstXFx1MDAzZXNkYXRhO1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHggKmN0eCA9IGxpbmstXFx1MDAzZXJlc2VydmVkX2NoYW5jdHg7XFxuK1xcdHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqb2xkX2N0eCA9IE5VTEw7XFxuIFxcbiBcXHRsb2NrZGVwX2Fzc2VydF93aXBoeShzZGF0YS1cXHUwMDNlbG9jYWwtXFx1MDAzZWh3LndpcGh5KTtcXG4gXFxuQEAgLTE0MTYsNiArMTQyNCw3IEBAIHZvaWQgaWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXFxuIFxcdFxcdFxcdGlmIChXQVJOX09OKCFjdHgtXFx1MDAzZXJlcGxhY2VfY3R4KSlcXG4gXFx0XFx0XFx0XFx0cmV0dXJuO1xcbiBcXG4rXFx0XFx0XFx0b2xkX2N0eCA9IGN0eC1cXHUwMDNlcmVwbGFjZV9jdHg7XFxuIFxcdFxcdFxcdFdBUk5fT04oY3R4LVxcdTAwM2VyZXBsYWNlX2N0eC1cXHUwMDNlcmVwbGFjZV9zdGF0ZSAhPVxcbiBcXHRcXHRcXHQgICAgICAgIElFRUU4MDIxMV9DSEFOQ1RYX1dJTExfQkVfUkVQTEFDRUQpO1xcbiBcXHRcXHRcXHRXQVJOX09OKGN0eC1cXHUwMDNlcmVwbGFjZV9jdHgtXFx1MDAzZXJlcGxhY2VfY3R4ICE9IGN0eCk7XFxuQEAgLTE0MjYsNiArMTQzNSwxMSBAQCB2b2lkIGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxcbiBcXG4gXFx0XFx0XFx0bGlzdF9kZWxfcmN1KFxcdTAwMjZjdHgtXFx1MDAzZWxpc3QpO1xcbiBcXHRcXHRcXHRrZnJlZV9yY3UoY3R4LCByY3VfaGVhZCk7XFxuK1xcbitcXHRcXHRcXHRpZiAoaWVlZTgwMjExX2NoYW5jdHhfcmVmY291bnQoc2RhdGEtXFx1MDAzZWxvY2FsLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgb2xkX2N0eCkgPT0gMClcXG4rXFx0XFx0XFx0XFx0aWVlZTgwMjExX2ZyZWVfY2hhbmN0eChzZGF0YS1cXHUwMDNlbG9jYWwsIG9sZF9jdHgsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBmYWxzZSk7XFxuIFxcdFxcdH0gZWxzZSB7XFxuIFxcdFxcdFxcdGllZWU4MDIxMV9mcmVlX2NoYW5jdHgoc2RhdGEtXFx1MDAzZWxvY2FsLCBjdHgsIGZhbHNlKTtcXG4gXFx0XFx0fVxcbkBAIC0xNzA1LDcgKzE3MTksOCBAQCBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfcmVhc3NpZ24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXFxuIFxcbiBcXHRpZWVlODAyMTFfY2hlY2tfZmFzdF94bWl0X2lmYWNlKHNkYXRhKTtcXG4gXFxuLVxcdGlmIChpZWVlODAyMTFfY2hhbmN0eF9yZWZjb3VudChsb2NhbCwgb2xkX2N0eCkgPT0gMClcXG4rXFx0aWYgKGllZWU4MDIxMV9jaGFuY3R4X3JlZmNvdW50KGxvY2FsLCBvbGRfY3R4KSA9PSAwIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICAhaWVlZTgwMjExX2NoYW5jdHhfaGFzX3JlcGxhY2VfcGFydG5lcihvbGRfY3R4KSlcXG4gXFx0XFx0aWVlZTgwMjExX2ZyZWVfY2hhbmN0eChsb2NhbCwgb2xkX2N0eCwgZmFsc2UpO1xcbiBcXG4gXFx0aWVlZTgwMjExX3JlY2FsY19jaGFuY3R4X21pbl9kZWYobG9jYWwsIG5ld19jdHgpO1xcbkBAIC0yMTc0LDcgKzIxODksOCBAQCB2b2lkIF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbiBcXHR9XFxuIFxcbiBcXHRpZWVlODAyMTFfYXNzaWduX2xpbmtfY2hhbmN0eChsaW5rLCBOVUxMLCBmYWxzZSk7XFxuLVxcdGlmIChpZWVlODAyMTFfY2hhbmN0eF9yZWZjb3VudChsb2NhbCwgY3R4KSA9PSAwKVxcbitcXHRpZiAoaWVlZTgwMjExX2NoYW5jdHhfcmVmY291bnQobG9jYWwsIGN0eCkgPT0gMCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgIWllZWU4MDIxMV9jaGFuY3R4X2hhc19yZXBsYWNlX3BhcnRuZXIoY3R4KSlcXG4gXFx0XFx0aWVlZTgwMjExX2ZyZWVfY2hhbmN0eChsb2NhbCwgY3R4LCBza2lwX2lkbGVfcmVjYWxjKTtcXG4gXFxuIFxcdGxpbmstXFx1MDAzZXJhZGFyX3JlcXVpcmVkID0gZmFsc2U7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA1OjIzOjIwLjAxMDc4MjU5OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ3MTY0ODc4NTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJDRkc4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4XCIsXG4gICAgXCJfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbFwiLFxuICAgIFwiaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHRcIixcbiAgICBcImllZWU4MDIxMV9jaGFubmVsX3N3aXRjaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG1hYzgwMjExIGNoYW5uZWwgY29udGV4dCByZXNlcnZhdGlvbiBhbmQgdW5yZXNlcnZhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIHRoZSByZXBsYWNlbWVudCBvZiBjaGFubmVsIGNvbnRleHRzLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgY2ZnODAyMTEgY2hhbm5lbCBzd2l0Y2ggb3BlcmF0aW9ucyBhbmQgaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjQ5OTc4MDNmZjRiNzA1YWQ1ZWFmZjAwYTc3MTcwYzE1YzNlODEwM1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMDU6MjM6MTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvY2hhbi5jIGIvbmV0L21hYzgwMjExL2NoYW4uY1xuaW5kZXggNTE1MmI4NGEzMzU3Ny4uZDM3ODljZjhkNDE3OSAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9jaGFuLmNcbisrKyBiL25ldC9tYWM4MDIxMS9jaGFuLmNcbkBAIC0yMzEsNiArMjMxLDEzIEBAIGludCBpZWVlODAyMTFfY2hhbmN0eF9yZWZjb3VudChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdHJldHVybiBudW07XG4gfVxuIFxuK3N0YXRpYyBib29sXG4raWVlZTgwMjExX2NoYW5jdHhfaGFzX3JlcGxhY2VfcGFydG5lcihzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHggKmN0eClcbit7XG4rXHRyZXR1cm4gY3R4LVx1MDAzZXJlcGxhY2Vfc3RhdGUgPT0gSUVFRTgwMjExX0NIQU5DVFhfV0lMTF9CRV9SRVBMQUNFRCBcdTAwMjZcdTAwMjZcbitcdCAgICAgICBjdHgtXHUwMDNlcmVwbGFjZV9jdHg7XG4rfVxuK1xuIHN0YXRpYyBpbnQgaWVlZTgwMjExX251bV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLCBpbnQgcmFkaW9faWR4KVxuIHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfY2hhbmN0eCAqY3R4O1xuQEAgLTE0MDMsNiArMTQxMCw3IEBAIHZvaWQgaWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBsaW5rLVx1MDAzZXNkYXRhO1xuIFx0c3RydWN0IGllZWU4MDIxMV9jaGFuY3R4ICpjdHggPSBsaW5rLVx1MDAzZXJlc2VydmVkX2NoYW5jdHg7XG4rXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5jdHggKm9sZF9jdHggPSBOVUxMO1xuIFxuIFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkoc2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlaHcud2lwaHkpO1xuIFxuQEAgLTE0MTYsNiArMTQyNCw3IEBAIHZvaWQgaWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXG4gXHRcdFx0aWYgKFdBUk5fT04oIWN0eC1cdTAwM2VyZXBsYWNlX2N0eCkpXG4gXHRcdFx0XHRyZXR1cm47XG4gXG4rXHRcdFx0b2xkX2N0eCA9IGN0eC1cdTAwM2VyZXBsYWNlX2N0eDtcbiBcdFx0XHRXQVJOX09OKGN0eC1cdTAwM2VyZXBsYWNlX2N0eC1cdTAwM2VyZXBsYWNlX3N0YXRlICE9XG4gXHRcdFx0ICAgICAgICBJRUVFODAyMTFfQ0hBTkNUWF9XSUxMX0JFX1JFUExBQ0VEKTtcbiBcdFx0XHRXQVJOX09OKGN0eC1cdTAwM2VyZXBsYWNlX2N0eC1cdTAwM2VyZXBsYWNlX2N0eCAhPSBjdHgpO1xuQEAgLTE0MjYsNiArMTQzNSwxMSBAQCB2b2lkIGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxuIFxuIFx0XHRcdGxpc3RfZGVsX3JjdShcdTAwMjZjdHgtXHUwMDNlbGlzdCk7XG4gXHRcdFx0a2ZyZWVfcmN1KGN0eCwgcmN1X2hlYWQpO1xuK1xuK1x0XHRcdGlmIChpZWVlODAyMTFfY2hhbmN0eF9yZWZjb3VudChzZGF0YS1cdTAwM2Vsb2NhbCxcbitcdFx0XHRcdFx0XHQgICAgICAgb2xkX2N0eCkgPT0gMClcbitcdFx0XHRcdGllZWU4MDIxMV9mcmVlX2NoYW5jdHgoc2RhdGEtXHUwMDNlbG9jYWwsIG9sZF9jdHgsXG4rXHRcdFx0XHRcdFx0ICAgICAgIGZhbHNlKTtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRpZWVlODAyMTFfZnJlZV9jaGFuY3R4KHNkYXRhLVx1MDAzZWxvY2FsLCBjdHgsIGZhbHNlKTtcbiBcdFx0fVxuQEAgLTE3MDUsNyArMTcxOSw4IEBAIGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9yZWFzc2lnbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcbiBcbiBcdGllZWU4MDIxMV9jaGVja19mYXN0X3htaXRfaWZhY2Uoc2RhdGEpO1xuIFxuLVx0aWYgKGllZWU4MDIxMV9jaGFuY3R4X3JlZmNvdW50KGxvY2FsLCBvbGRfY3R4KSA9PSAwKVxuK1x0aWYgKGllZWU4MDIxMV9jaGFuY3R4X3JlZmNvdW50KGxvY2FsLCBvbGRfY3R4KSA9PSAwIFx1MDAyNlx1MDAyNlxuK1x0ICAgICFpZWVlODAyMTFfY2hhbmN0eF9oYXNfcmVwbGFjZV9wYXJ0bmVyKG9sZF9jdHgpKVxuIFx0XHRpZWVlODAyMTFfZnJlZV9jaGFuY3R4KGxvY2FsLCBvbGRfY3R4LCBmYWxzZSk7XG4gXG4gXHRpZWVlODAyMTFfcmVjYWxjX2NoYW5jdHhfbWluX2RlZihsb2NhbCwgbmV3X2N0eCk7XG5AQCAtMjE3NCw3ICsyMTg5LDggQEAgdm9pZCBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbiBcdH1cbiBcbiBcdGllZWU4MDIxMV9hc3NpZ25fbGlua19jaGFuY3R4KGxpbmssIE5VTEwsIGZhbHNlKTtcbi1cdGlmIChpZWVlODAyMTFfY2hhbmN0eF9yZWZjb3VudChsb2NhbCwgY3R4KSA9PSAwKVxuK1x0aWYgKGllZWU4MDIxMV9jaGFuY3R4X3JlZmNvdW50KGxvY2FsLCBjdHgpID09IDAgXHUwMDI2XHUwMDI2XG4rXHQgICAgIWllZWU4MDIxMV9jaGFuY3R4X2hhc19yZXBsYWNlX3BhcnRuZXIoY3R4KSlcbiBcdFx0aWVlZTgwMjExX2ZyZWVfY2hhbmN0eChsb2NhbCwgY3R4LCBza2lwX2lkbGVfcmVjYWxjKTtcbiBcbiBcdGxpbmstXHUwMDNlcmFkYXJfcmVxdWlyZWQgPSBmYWxzZTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA1OjIzOjIwLjAxMDc4NDgwOVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjczOTE5Njc3OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBtYWM4MDIxMSBDaGFubmVsIENvbnRleHQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBuZXQvbWFjODAyMTEvY2hhbi5jYCwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpcyBhIGNvcmUgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIG1hYzgwMjExLCBub3QganVzdCBzb21lIHBlcmlwaGVyYWwgbW9kdWxlLiBUaGUgYWRkaXRpb24gb2YgYGllZWU4MDIxMV9jaGFuY3R4X2hhc19yZXBsYWNlX3BhcnRuZXJgIGFzIGEgaGVscGVyIGlzIGludGVyZXN0aW5nOyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBmYWN0b3JzIGludG8gdGhlIGNoYW5uZWwgY29udGV4dCBtYW5hZ2VtZW50LlxuXG5UaGUgcmVhbCBtZWF0IG9mIHRoaXMgc2VlbXMgdG8gYmUgdGhlIG1vZGlmaWNhdGlvbnMgdG8gYGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4YCwgYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9yZWFzc2lnbmAsIGFuZCBgX19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWxgLiBUaGV5J3JlIGVpdGhlciB1c2luZyB0aGUgbmV3IGhlbHBlciBvciBkaXJlY3RseSBjaGVja2luZyB0aGUgYGllZWU4MDIxMV9jaGFuY3R4X3JlZmNvdW50YCBhbmQgZnJlZWluZyBgb2xkX2N0eGAgaWYgaXQncyB6ZXJvLiBUaGlzIHN0cm9uZ2x5IHN1Z2dlc3RzIGNoYW5nZXMgdG8gaG93IGNoYW5uZWwgY29udGV4dHMgYXJlIHJlc2VydmVkLCByZWFzc2lnbmVkLCBhbmQgdWx0aW1hdGVseSByZWxlYXNlZC4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBpbXBsaWNhdGlvbnMgZm9yIGNvbmN1cnJlbnQgY2hhbm5lbCBhY2Nlc3MgYW5kIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMuXG5cbk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gbWFjODAyMTEuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBmdW5jdGlvbnMgYXJlIGNvbXBpbGVkLCBpZiB0aGV5IGFyZSBleHBvcnRlZCwgb3IgaWYgdGhleSBhcmUgc3RhdGljLiBTcGVjaWZpY2FsbHksIEknbGwgc2VhcmNoIGZvciBgaWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHhgLCBgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX3JlYXNzaWduYCBhbmQgYF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsYCB3aXRoaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHN5c3RlbS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAxNywiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA1OjIzOjI3LjQwMjc1NDkzMVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTU2NjA0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUFDODAyMTFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cXHRib29sXFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXFxubmV0L21hYzgwMjExL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiIGlmIEVYUEVSVFxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00MC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQyLVxcdGJvb2wgXFxcIk1pbnN0cmVsXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXFxubmV0L21hYzgwMjExL0tjb25maWctNDktXFxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cXHRzdHJpbmdcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXFxcIlNvbWUgd2lyZWxlc3MgZHJpdmVycyByZXF1aXJlIGEgcmF0ZSBjb250cm9sIGFsZ29yaXRobVxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTU5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBtYWM4MDIxMVxcXCIgaWYgIUtVTklUX0FMTF9URVNUU1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNjktXFxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03MS1cXHRib29sIFxcXCJFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3OTpjb25maWcgTUFDODAyMTFfTEVEU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVxcdGJvb2wgXFxcIkVuYWJsZSBMRUQgdHJpZ2dlcnNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04Ny1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVxcdGJvb2wgXFxcIkV4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk2LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05OC1cXHRib29sIFxcXCJUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXFxubmV0L21hYzgwMjExL0tjb25maWc6MTEwOm1lbnVjb25maWcgTUFDODAyMTFfREVCVUdfTUVOVVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cXHRib29sIFxcXCJTZWxlY3QgbWFjODAyMTEgZGVidWdnaW5nIGZlYXR1cmVzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTE1LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXFx0Ym9vbCBcXFwiRG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE0Mzpjb25maWcgTUFDODAyMTFfTUxNRV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cXHRib29sIFxcXCJWZXJib3NlIG1hbmFnZWQgTUxNRSBvdXRwdXRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTMtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXFx0Ym9vbCBcXFwiVmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTY0LVxcdGJvb2wgXFxcIlZlcmJvc2UgSFQgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE3NTpjb25maWcgTUFDODAyMTFfT0NCX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTc2LVxcdGJvb2wgXFxcIlZlcmJvc2UgT0NCIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4NS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXFx0Ym9vbCBcXFwiVmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5Ni1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTk4LVxcdGJvb2wgXFxcIlZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIwOTpjb25maWcgTUFDODAyMTFfTVBMX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjEwLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwZWVyIGxpbmsgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjIxLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzYtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXFxubmV0L21hYzgwMjExL0tjb25maWc6MjQ4OmNvbmZpZyBNQUM4MDIxMV9NRVNIX1NZTkNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHN5bmNocm9uaXphdGlvbiBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNTgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI3MS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyODE6Y29uZmlnIE1BQzgwMjExX1RETFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXFx0Ym9vbCBcXFwiVmVyYm9zZSBURExTIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI5Mi1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXFxubmV0L21hYzgwMjExL0tjb25maWctMjk0LVxcdGJvb2wgXFxcIkV4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXFxubmV0L21hYzgwMjExL0tjb25maWctMzA5LVxcdGludCBcXFwiU3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVxcXCIgaWYgTUFDODAyMTFfREVCVUdfTUVOVVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNToyMzoyNy40NTIzMjg1NjhaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTc2MTQ1MjMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSA4MDIuMTEgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHNvIHRoZSBjb3JlIG9mIHRoaXMgd2hvbGUgdGhpbmcgaXMgb2J2aW91c2x5IHRoZSBgTUFDODAyMTFgIGNvbmZpZ3VyYXRpb24gaXRlbSDigJMgdGhhdCdzIHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLCBhbmQgaXQncyBhIHRyaXN0YXRlLCBzbyBpdCBkaWN0YXRlcyB0aGUgZW50aXJlIGZyYW1ld29yay4gIEkgbmVlZCB0byBkcmlsbCBkb3duIGFuZCBzZWUgaWYgdGhvc2UgY3JpdGljYWwgZnVuY3Rpb25zLCBgaWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHhgIGFuZCBgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX3JlYXNzaWduYCwgYXJlIGFjdHVhbGx5ICpleHBvcnRlZCouIFRoYXTigJlzIHRoZSBrZXkuICBJZiB0aGV5J3JlIG5vdCBleHBvcnRlZCwgdGhlbiBpdCBtYWtlcyB0aGluZ3MgZGlmZmljdWx0IGJlY2F1c2UgdGhpcyBpbXBsaWVzIHRoYXQgdGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggdGhlIGxpbmtpbmcgbGF5ZXIgb3IgcGVyaGFwcyBJIGFtIGxvb2tpbmcgaW4gdGhlIHdyb25nIHBsYWNlLiBUaG9zZSBmdW5jdGlvbnMgYXJlIGNydWNpYWwgZm9yIGFueSBzb3J0IG9mIGR5bmFtaWMgY2hhbm5lbCBhc3NpZ25tZW50IG9yIHJlc291cmNlIG1hbmFnZW1lbnQgd2l0aGluIHRoZSA4MDIuMTEgc3RhY2suIEkgbmVlZCB0byBjb25maXJtIHRoZWlyIGF2YWlsYWJpbGl0eSByaWdodCBhd2F5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODI4LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDU6MjM6MzEuNDI4NDgxNjMxWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MDIxODM3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2NmZy5jPTQ3MDA9X19pZWVlODAyMTFfY2hhbm5lbF9zd2l0Y2goc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy00NzgyLVxcdGlmIChlcnIpIHtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDc4MzpcXHRcXHRpZWVlODAyMTFfbGlua191bnJlc2VydmVfY2hhbmN0eChsaW5rX2RhdGEpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy00Nzg0LVxcdFxcdGdvdG8gb3V0O1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTQ3OTItXFx0aWYgKGVycikge1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo0NzkzOlxcdFxcdGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4KGxpbmtfZGF0YSk7XFxubmV0L21hYzgwMjExL2NmZy5jLTQ3OTQtXFx0XFx0Z290byBvdXQ7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTEzOTk9dm9pZCBpZWVlODAyMTFfbGlua19jb3B5X2NoYW5jdHhfdG9fdmxhbnMoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTE0MDgtXFxubmV0L21hYzgwMjExL2NoYW4uYzoxNDA5OnZvaWQgaWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXFxubmV0L21hYzgwMjExL2NoYW4uYy0xNDEwLXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM9MTg5OD1zdGF0aWMgaW50IGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjEyMS1cXHRcXHRcXHRcXHRcXHQgIGVycik7XFxubmV0L21hYzgwMjExL2NoYW4uYzoyMTIyOlxcdFxcdFxcdFxcdGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4KGxpbmspO1xcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjEyMy1cXHRcXHRcXHRcXHRjZmc4MDIxMV9zdG9wX2lmYWNlKGxvY2FsLVxcdTAwM2Vody53aXBoeSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjE1NS1cXHRcXHRmb3JfZWFjaF9jaGFuY3R4X3VzZXJfcmVzZXJ2ZWQobG9jYWwsIGN0eCwgXFx1MDAyNml0ZXIpIHtcXG5uZXQvbWFjODAyMTEvY2hhbi5jOjIxNTY6XFx0XFx0XFx0aWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHgoaXRlci5saW5rKTtcXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIxNTctXFx0XFx0XFx0aWVlZTgwMjExX2xpbmtfY2hhbmN0eF9yZXNlcnZhdGlvbl9jb21wbGV0ZShpdGVyLmxpbmspO1xcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYz0yMTY0PXZvaWQgX19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIxODctXFxubmV0L21hYzgwMjExL2NoYW4uYzoyMTg4OlxcdFxcdGllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4KGxpbmspO1xcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjE4OS1cXHR9XFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0yODMyPWllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKTtcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyODMzOnZvaWQgaWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHgoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspO1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI4MzQtXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTMwOTU9aWVlZTgwMjExX3N0YV9hYm9ydF9jaGFuc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0zMTA1LVxcdGlmIChyY3VfYWNjZXNzX3BvaW50ZXIobGluay1cXHUwMDNlY29uZi1cXHUwMDNlY2hhbmN0eF9jb25mKSlcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjMxMDY6XFx0XFx0aWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHgobGluayk7XFxubmV0L21hYzgwMjExL21sbWUuYy0zMTA3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNToyMzozMS40NzM1MTE1MDlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDEyNDY0ODI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludGVybmFsIG1hYzgwMjExIEZ1bmN0aW9uIENhbGwgQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoZXNlIGludGVybmFsIGZ1bmN0aW9ucyB3aXRoaW4gYG1hYzgwMjExYC4gVGltZSB0byB0cmFjZSB0aGVpciBjYWxsIHNpdGVzLiBUaGUgZmlyc3Qgb25lIEkgc2VlLCBgX19pZWVlODAyMTFfY2hhbm5lbF9zd2l0Y2hgLCB0aGF0J3MgaW4gYGNmZy5jYC4gTWFrZXMgc2Vuc2UsIGNoYW5uZWwgY29uZmlndXJhdGlvbi4gVGhlbiwgdGhlcmUncyBgaWVlZTgwMjExX3N0YV9hYm9ydF9jaGFuc3dpdGNoYCBpbiBgbWxtZS5jYCwgaW5kaWNhdGluZyBzb21lIHNvcnQgb2YgbWFuYWdlbWVudCBmcmFtZSBpbnRlcmFjdGlvbiwgcG9zc2libHkgYWJvcnRpbmcgdGhlIGNoYW5uZWwgc3dpdGNoLiBgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoYCBpcyBuZXh0OyBpdCdzIHdpdGhpbiBgY2hhbi5jYCwgc3VnZ2VzdGluZyBhIHZpcnR1YWwgaW50ZXJmYWNlJ3MgdXNlIG9mIGEgcmVzZXJ2ZWQgY2hhbm5lbCBzd2l0Y2guIEZpbmFsbHksIGBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbGAsIGFsc28gaW4gYGNoYW4uY2Ag4oCTIGEgbGluayByZWxlYXNpbmcgdGhlIGNoYW5uZWwsIHByb2JhYmx5IGFmdGVyIHRoZSBzd2l0Y2guIE5vdywgbGV0J3MgZHJpbGwgZG93biBhbmQgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBfX2llZWU4MDIxMV9jaGFubmVsX3N3aXRjaGAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcyMzksIk91dHB1dFRva2VucyI6NDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDU6MjM6MzUuODg1OTc5MTY1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NzgwMTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9faWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2NmZy5jPTQ2OTk9c3RhdGljIGludFxcbm5ldC9tYWM4MDIxMS9jZmcuYzo0NzAwOl9faWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxubmV0L21hYzgwMjExL2NmZy5jLTQ3MDEtXFx0XFx0XFx0ICAgc3RydWN0IGNmZzgwMjExX2NzYV9zZXR0aW5ncyAqcGFyYW1zKVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTQ4MTk9aW50IGllZWU4MDIxMV9jaGFubmVsX3N3aXRjaChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTQ4MjYtXFxubmV0L21hYzgwMjExL2NmZy5jOjQ4Mjc6XFx0cmV0dXJuIF9faWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoKHdpcGh5LCBkZXYsIHBhcmFtcyk7XFxubmV0L21hYzgwMjExL2NmZy5jLTQ4MjgtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNToyMzozNS45MzA3NjUwNDJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzc2MzM4ODQwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDaGFubmVsIFN3aXRjaCBBbmFseXNpcyoqXG5cbk9rYXksIHNvIGBpZWVlODAyMTFfY2hhbm5lbF9zd2l0Y2hgIGlzIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGNmZzgwMjExIHVzZXMgZm9yIGNoYW5uZWwgc3dpdGNoaW5nLiBUaGF0J3MgYSBmdW5kYW1lbnRhbCBwaWVjZSwgYW5kIEknbSBjb25maWRlbnQgaXQncyB3b3JraW5nIGFzIGV4cGVjdGVkIGJhc2VkIG9uIHdoYXQgSSBrbm93LiBXZSBhbHJlYWR5IGhhdmUgYE1BQzgwMjExYCBjb25maWd1cmVkLCB3aGljaCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBiZSBzdXJlIHRob3VnaCwgYXJlIHRoZXJlIGFueSBvdGhlciByZXF1aXJlZCBjb25maWdzPyBMZXQncyB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGUgYG5ldC9tYWM4MDIxMS9LY29uZmlnYCBmaWxlLiBJJ20gcmVjYWxsaW5nIHRoYXQgYE1BQzgwMjExYCBkZXBlbmRzIG9uIGBDRkc4MDIxMWAsIHNvIHRoYXQgY2hlY2tzIG91dC4gSSdtIHNhdGlzZmllZCBub3csIGFuZCB3aWxsIGFkZCBgTUFDODAyMTFgIHRvIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC4gTm93LCBsZXQncyB0dXJuIG91ciBhdHRlbnRpb24gdG8gYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9yZWFzc2lnbmAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc4ODcsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDU6MjM6NDkuNjk0MTU2NzRaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3MjYzOTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9yZWFzc2lnblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jaGFuLmM9MTY1ND1zdGF0aWMgaW50XFxubmV0L21hYzgwMjExL2NoYW4uYzoxNjU1OmllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9yZWFzc2lnbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaylcXG5uZXQvbWFjODAyMTEvY2hhbi5jLTE2NTYte1xcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYz0xODk4PXN0YXRpYyBpbnQgaWVlZTgwMjExX3ZpZl91c2VfcmVzZXJ2ZWRfc3dpdGNoKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy0yMTEzLVxcdFxcdFxcdGlmIChpZWVlODAyMTFfbGlua19nZXRfY2hhbmN0eChsaW5rKSlcXG5uZXQvbWFjODAyMTEvY2hhbi5jOjIxMTQ6XFx0XFx0XFx0XFx0ZXJyID0gaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX3JlYXNzaWduKGxpbmspO1xcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjExNS1cXHRcXHRcXHRlbHNlXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTIzNzE9aW50IGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0KHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rKVxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy0yMzk3LVxcdFxcdGlmIChvbGRfY3R4KVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjM5ODpcXHRcXHRcXHRyZXR1cm4gaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX3JlYXNzaWduKGxpbmspO1xcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjM5OS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDU6MjM6NDkuNzQxNDI3MjA3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxNjQxMTQ0MjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IGNvZGUgc25pcHBldCwgZGVsaXZlcmVkIGFzIGlmIGl0J3MgbXkgb3duIHRob3VnaHQgcHJvY2VzczpcblxuKipUaGlua2luZyBUaHJvdWdoIExpbmsgVXNhZ2UgYW5kIENvbnRleHQgUmVhc3NpZ25tZW50IGluIElFRUUgODAyLjExKipcblxuUmlnaHQsIHNvIGBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfY29udGV4dGAgaXMgdGhlIGZ1bmN0aW9uIHRoYXQncyBiZWluZyBjYWxsZWQsIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIGFib3V0IHJlc291cmNlIGFsbG9jYXRpb24gYW5kIGNvbmN1cnJlbmN5IGlzc3VlcyBpbiB0aGUgY29udGV4dCBvZiBhbiA4MDIuMTEgbGluay4gVGhlIG5hbWUgaXRzZWxmIHN1Z2dlc3RzIGEgZnVuY3Rpb24gdG8gbWFuYWdlIGhvdyBhIHJlc2VydmVkIGNvbnRleHQgaXMgYmVpbmcgdXRpbGl6ZWQuIFRoaXMgY29udGV4dCBpcyBsaWtlbHkgdXNlZCB0byBob2xkIHNvbWUgc3RhdGUgaW5mb3JtYXRpb24uIEkgYmV0IGl0J3Mgc29tZXRoaW5nIGltcG9ydGFudCwgb3RoZXJ3aXNlLCB3aHkgcmVzZXJ2ZSBpdD9cblxuVGhlbiwgdGhlICp2ZXJ5IG5leHQqIHRoaW5nIHRoaXMgZnVuY3Rpb24gZG9lcyBpcyBjYWxsIGBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfcmVhc3NpZ25gLiAgQWgsIHRoYXQncyB3aGF0IEkgbmVlZGVkIHRvIGtub3cuIFRoaXMgaW5kaWNhdGVzIHRoYXQgdXNpbmcgdGhlIHJlc2VydmVkIGNvbnRleHQgbWF5IGxlYWQgdG8gdGhlIHJlYXNzaWdubWVudCBvZiBpdC4gVGhpcyB0ZWxscyBtZSB0aGF0IHRoZSByZXNlcnZlZCBjb250ZXh0IGlzbid0IGp1c3QgKnVzZWQqLCBpdCBjYW4gYmUgKnJlYXNzaWduZWQqIGR1cmluZyBpdHMgdXNhZ2UuIFRoaXMgdGVsbHMgbWUgdGhhdCB0aGlzIHBhcnRpY3VsYXIgY29kZSBpcyBkZXNpZ25lZCB3aXRoIGEgY2FyZWZ1bCBjb25zaWRlcmF0aW9uIG9mIHJlc291cmNlIG1hbmFnZW1lbnQgYW5kIGNvbmN1cnJlbmN5LiBUaGUgcmVhc3NpZ25tZW50IHByb2JhYmx5IGhhcyBzb21ldGhpbmcgdG8gZG8gd2l0aCB0aHJlYWQgc3luY2hyb25pemF0aW9uLCBhbmQgaXQncyBtYWtpbmcgbWUgd29uZGVyOiBIb3cgaXMgdGhpcyByZWFzc2lnbm1lbnQgaGFuZGxlZD8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgcmVhc3NpZ25tZW50PyBJcyBpdCBhdG9taWM/IFdoYXQgaGFwcGVucyBpZiB0aGVyZSdzIGEgcmFjZSBjb25kaXRpb24/IFRoaXMgbWFrZXMgbWUgd2FudCB0byBkaWcgZGVlcGVyIGludG8gYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9yZWFzc2lnbmAgdG8gc2VlIHdoYXQgbWVjaGFuaXNtcyBhcmUgYmVpbmcgdXNlZCBmb3IgdGhyZWFkIHNhZmV0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlLWFzc2lnbm1lbnQgcHJvY2VzcyBzbyBJIGtub3cgaWYgaXQgYWZmZWN0cyBvdGhlciBwYXJ0cyBvZiB0aGUgbGluayB1c2FnZSBpbiBhbiB1bmV4ZXBlY3RlZCB3YXkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2NjUsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNToyMzo1My45MDU1NDQ5NzlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNDM3NjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2NmZy5jPTQ0NjM9c3RhdGljIGludCBfX2llZWU4MDIxMV9jc2FfZmluYWxpemUoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmtfZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy00NDg4LVxcbm5ldC9tYWM4MDIxMS9jZmcuYzo0NDg5OlxcdFxcdHJldHVybiBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfY29udGV4dChsaW5rX2RhdGEpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy00NDkwLVxcdH1cXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM9MjI5MT1pbnQgX2llZWU4MDIxMV9saW5rX3VzZV9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYy0yMzcwLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjM3MTppbnQgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHQoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXFxubmV0L21hYzgwMjExL2NoYW4uYy0yMzcyLXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTI4MzE9aW50IF9fbXVzdF9jaGVja1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjI4MzI6aWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHQoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspO1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI4MzMtdm9pZCBpZWVlODAyMTFfbGlua191bnJlc2VydmVfY2hhbmN0eChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayk7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTI4NzY9c3RhdGljIHZvaWQgaWVlZTgwMjExX2NzYV9zd2l0Y2hfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0yOTUwLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6Mjk1MTpcXHRcXHRyZXQgPSBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfY29udGV4dChsaW5rKTtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI5NTItXFx0XFx0aWYgKHJldCkge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNToyMzo1My45NDg5OTEyNzZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ1ODk2NTI2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDU0EgQnVnIEZpeCBJbnZlc3RpZ2F0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCByZWxhdGVkIHRvIENoYW5uZWwgU3dpdGNoIEFubm91bmNlbWVudHMsIHNwZWNpZmljYWxseSBhcm91bmQgdGhlIGBfX2llZWU4MDIxMV9jc2FfZmluYWxpemVgIGFuZCBgaWVlZTgwMjExX2NzYV9zd2l0Y2hfd29ya2AgZnVuY3Rpb25zLCB3aGljaCBhcmUgdGhlIGVudHJ5IHBvaW50cyBoZXJlLiBJIGtub3cgdGhlc2UgbGl2ZSB3aXRoaW4gdGhlIGNmZzgwMjExL21hYzgwMjExIHJlYWxtLCBzbyB0aGF0J3Mgd2hlcmUgSSdsbCBmb2N1cy4gVGhlIGRlc2NyaXB0aW9uIG1lbnRpb25zIGEgYnVnIGluIHRoZSBjaGFubmVsIGNvbnRleHQgcmVzZXJ2YXRpb24vdW5yZXNlcnZhdGlvbiBsb2dpYy4gVGhhdCdzIGEgY2xhc3NpYyBhcmVhIGZvciByYWNlIGNvbmRpdGlvbnMgYW5kIHN1YnRsZSBlcnJvcnMsIGFuZCBjZXJ0YWlubHkgc29tZXRoaW5nIHRoYXQgd2FycmFudHMgdGhvcm91Z2ggZnV6emluZy5cblxuTXkgcHJpbWFyeSB0YXJnZXRzIGZvciBpbnZlc3RpZ2F0aW9uIGFyZSB0aGUga2V5IHN5bWJvbHM6IGBpZWVlODAyMTFfbGlua191bnJlc2VydmVfY2hhbmN0eGAsIGBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbGAsIGBpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfY29udGV4dGAsIGFuZCBgaWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdC4gSSdsbCB3YW50IHRvIGNoZWNrIGlmIGBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbGAgaXMgZXhwb3J0ZWQgb3Igc3RhdGljLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgZnVuY3Rpb24gaXMgdXNlZCBhbmQgY2FsbGVkLiBFeHBvcnRlZCBnZW5lcmFsbHkgbWVhbnMgaXQncyBhdmFpbGFibGUgdG8gb3RoZXIgbW9kdWxlcywgd2hpY2ggaXMgaW1wb3J0YW50IHRvIGNvbnNpZGVyLiBJJ2xsIHRoZW4gbG9vayBhdCB0aGUgb3RoZXIgZnVuY3Rpb25zIHRvIGNvbmZpcm0gaG93IHRob3NlIHN5bWJvbHMgYXJlIHVzZWQsIHRvIGlkZW50aWZ5IHBvdGVudGlhbCByb290IGNhdXNlLCBhbmQgd2hlcmUgdGhlIGZ1enppbmcgY2FtcGFpZ24gbmVlZHMgdG8gYmUgdGFyZ2V0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk2ODAsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDU6MjQ6MDAuNDA3OTU4MzY1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTYyOTc5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jaGFuLmM9MTg5OD1zdGF0aWMgaW50IGllZWU4MDIxMV92aWZfdXNlX3Jlc2VydmVkX3N3aXRjaChzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcXG4tLVxcbm5ldC9tYWM4MDIxMS9jaGFuLmMtMjE2My1cXG5uZXQvbWFjODAyMTEvY2hhbi5jOjIxNjQ6dm9pZCBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIxNjUtXFx0XFx0XFx0XFx0ICAgICAgYm9vbCBza2lwX2lkbGVfcmVjYWxjKVxcbi0tXFxubmV0L21hYzgwMjExL2NoYW4uYz0yMjkxPWludCBfaWVlZTgwMjExX2xpbmtfdXNlX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIzMzItXFx0aWYgKCFsb2NhbC1cXHUwMDNlaW5fcmVjb25maWcpXFxubmV0L21hYzgwMjExL2NoYW4uYzoyMzMzOlxcdFxcdF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsKGxpbmssIGZhbHNlKTtcXG5uZXQvbWFjODAyMTEvY2hhbi5jLTIzMzQtXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jPTI0OTg9dm9pZCBpZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmspXFxuLS1cXG5uZXQvbWFjODAyMTEvY2hhbi5jLTI1MDctXFx0aWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihsaW5rLVxcdTAwM2Vjb25mLVxcdTAwM2VjaGFuY3R4X2NvbmYpKVxcbm5ldC9tYWM4MDIxMS9jaGFuLmM6MjUwODpcXHRcXHRfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbChsaW5rLCBmYWxzZSk7XFxubmV0L21hYzgwMjExL2NoYW4uYy0yNTA5LX1cXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTI4MzY9aWVlZTgwMjExX2xpbmtfY2hhbmdlX2NoYW5yZXEoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yODM4LVxcdFxcdFxcdCAgICAgIHU2NCAqY2hhbmdlZCk7XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjgzOTp2b2lkIF9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTI4NDAtXFx0XFx0XFx0XFx0ICAgICAgYm9vbCBza2lwX2lkbGVfcmVjYWxjKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9saW5rLmM9NDY1PXN0YXRpYyBpbnQgX2llZWU4MDIxMV9zZXRfYWN0aXZlX2xpbmtzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL2xpbmsuYy01MTItXFxubmV0L21hYzgwMjExL2xpbmsuYzo1MTM6XFx0XFx0X19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWwobGluaywgdHJ1ZSk7XFxubmV0L21hYzgwMjExL2xpbmsuYy01MTQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA1OjI0OjAwLjQ1MzU5Mzc1M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjU4OTE5NTQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIElFRUUgODAyLjExIENoYW5uZWwgTWFuYWdlbWVudCBGdW5jdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGVzZSBmdW5jdGlvbnM6IGBfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbGAsIGBpZWVlODAyMTFfbGlua191bnJlc2VydmVfY2hhbmN0eGAsIGFuZCBgaWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoYC4gSXQncyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0IG5vbmUgb2YgdGhlbSBhcmUgZGVjbGFyZWQgYXMgYHN0YXRpY2AsIHdoaWNoIGlzIHJlbGV2YW50IHRvIGhvdyBJJ2xsIGJlIGFwcHJvYWNoaW5nIHRoaXMuXG5cbkdpdmVuIHRoYXQsIEknbGwgZGVmaW5pdGVseSBpbmNsdWRlIHRoZW0gYXMga2V5IGBGb2N1c1N5bWJvbHNgLiBMZXQncyBhZGQgdGhlbSwgYWxvbmcgd2l0aCBgaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHRgLCBmb3IgYSBtb3JlIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIHJlbGV2YW50IGludGVyYWN0aW9uczpcblxuKiAgIGBpZWVlODAyMTFfbGlua191bnJlc2VydmVfY2hhbmN0eGBcbiogICBgX19pZWVlODAyMTFfbGlua19yZWxlYXNlX2NoYW5uZWxgXG4qICAgYGllZWU4MDIxMV9saW5rX3VzZV9yZXNlcnZlZF9jb250ZXh0YFxuKiAgIGBpZWVlODAyMTFfY2hhbm5lbF9zd2l0Y2hgXG5cbk5leHQsIHRoZSBjb25maWd1cmF0aW9ucy4gSSBzZWUgYE1BQzgwMjExYCBpcyBmbGFnZ2VkLiBJJ2xsIG1ha2Ugc3VyZSBpdCdzIGNvcnJlY3QuIEEgcXVpY2sgY2hlY2sgb2YgdGhlIGRlcGVuZGVuY3kgdHJlZSwgYW5kIGl0IGxvb2tzIGxpa2UgYE1BQzgwMjExYCBkZXBlbmRzIG9uIGBDRkc4MDIxMWAsIHNvIEknbGwgYmUgZXhwbGljaXQgYW5kIGluY2x1ZGUgYm90aCwgYWx0aG91Z2ggYE1BQzgwMjExYCBpcyB0aGUgY29yZSBvbmUuIFRoaXMga2VlcHMgdGhpbmdzIHJvYnVzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwMDEsIk91dHB1dFRva2VucyI6MTYzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA1OjI0OjA2LjcxMjUxNjQyNVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MzE0MDc0MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIkNGRzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX2xpbmtfdW5yZXNlcnZlX2NoYW5jdHhcIixcbiAgICBcIl9faWVlZTgwMjExX2xpbmtfcmVsZWFzZV9jaGFubmVsXCIsXG4gICAgXCJpZWVlODAyMTFfbGlua191c2VfcmVzZXJ2ZWRfY29udGV4dFwiLFxuICAgIFwiaWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gbWFjODAyMTEgY2hhbm5lbCBjb250ZXh0IHJlc2VydmF0aW9uIGFuZCB1bnJlc2VydmF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgdGhlIHJlcGxhY2VtZW50IG9mIGNoYW5uZWwgY29udGV4dHMuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBjZmc4MDIxMSBjaGFubmVsIHN3aXRjaCBvcGVyYXRpb25zIGFuZCBpcyBmdW5jdGlvbmFsIGNvcmUga2VybmVsIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJDRkc4MDIxMVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9saW5rX3VucmVzZXJ2ZV9jaGFuY3R4XCIsXG4gICAgXCJfX2llZWU4MDIxMV9saW5rX3JlbGVhc2VfY2hhbm5lbFwiLFxuICAgIFwiaWVlZTgwMjExX2xpbmtfdXNlX3Jlc2VydmVkX2NvbnRleHRcIixcbiAgICBcImllZWU4MDIxMV9jaGFubmVsX3N3aXRjaFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIG1hYzgwMjExIGNoYW5uZWwgY29udGV4dCByZXNlcnZhdGlvbiBhbmQgdW5yZXNlcnZhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIHRoZSByZXBsYWNlbWVudCBvZiBjaGFubmVsIGNvbnRleHRzLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgY2ZnODAyMTEgY2hhbm5lbCBzd2l0Y2ggb3BlcmF0aW9ucyBhbmQgaXMgZnVuY3Rpb25hbCBjb3JlIGtlcm5lbCBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowtxnbb[1] Phase: Succeeded StartedAt: 2026-08-03 05:24:18 +0000 UTC FinishedAt: 2026-08-03 05:24:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtxnbb[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-03 05:24:18 +0000 UTC FinishedAt: 2026-08-03 05:24:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtxnbb[2] Phase: Succeeded StartedAt: 2026-08-03 05:24:18 +0000 UTC FinishedAt: 2026-08-03 09:08:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-03 05:24:18 +0000 UTC FinishedAt: 2026-08-03 09:08:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-03 05:24:18 +0000 UTC FinishedAt: 2026-08-03 05:24:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-03 05:24:18 +0000 UTC FinishedAt: 2026-08-03 05:24:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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-workflowtxnbb/series-workflowtxnbb-convert-artifact-3123446502/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-03 05:24:28 +0000 UTC FinishedAt: 2026-08-03 05:44:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-03 05:24:28 +0000 UTC FinishedAt: 2026-08-03 05:44:27 +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:*0953d7f2-5adf-4b0f-8e6d-27b335991237,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-workflowtxnbb/series-workflowtxnbb-convert-artifact-3123446502/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": "358dc3bc-dd48-4d22-806d-8bda72a74fa7", "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-workflowtxnbb/series-workflowtxnbb-build-action-2452398716/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-03 05:24:28 +0000 UTC FinishedAt: 2026-08-03 05:44: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:*0953d7f2-5adf-4b0f-8e6d-27b335991237,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-workflowtxnbb/series-workflowtxnbb-convert-artifact-3123446502/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": "358dc3bc-dd48-4d22-806d-8bda72a74fa7", "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-workflowtxnbb/series-workflowtxnbb-build-action-2452398716/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-03 05:44:27 +0000 UTC FinishedAt: 2026-08-03 05:44:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-03 05:44:27 +0000 UTC FinishedAt: 2026-08-03 05:44:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-03 05:44:27 +0000 UTC FinishedAt: 2026-08-03 05:44:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-03 05:44:27 +0000 UTC FinishedAt: 2026-08-03 05:44:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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-workflowtxnbb/series-workflowtxnbb-convert-artifact-2323629113/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-03 05:44:37 +0000 UTC FinishedAt: 2026-08-03 05:46:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-03 05:44:37 +0000 UTC FinishedAt: 2026-08-03 05:46:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*358dc3bc-dd48-4d22-806d-8bda72a74fa7,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-workflowtxnbb/series-workflowtxnbb-build-action-2452398716/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-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-03 05:46:44 +0000 UTC FinishedAt: 2026-08-03 05:46:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-03 05:46:44 +0000 UTC FinishedAt: 2026-08-03 05:46:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-03 05:46:44 +0000 UTC FinishedAt: 2026-08-03 06:04:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-03 05:46:44 +0000 UTC FinishedAt: 2026-08-03 06:04:43 +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:*0953d7f2-5adf-4b0f-8e6d-27b335991237,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-workflowtxnbb/series-workflowtxnbb-convert-artifact-2323629113/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": "37f9dc64-4ca6-45e6-9f54-bbedd19d2cd4", "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-workflowtxnbb/series-workflowtxnbb-build-action-1329306901/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-03 05:46:44 +0000 UTC FinishedAt: 2026-08-03 06:04:33 +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:*0953d7f2-5adf-4b0f-8e6d-27b335991237,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-workflowtxnbb/series-workflowtxnbb-convert-artifact-2323629113/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": "37f9dc64-4ca6-45e6-9f54-bbedd19d2cd4", "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-workflowtxnbb/series-workflowtxnbb-build-action-1329306901/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-03 06:04:43 +0000 UTC FinishedAt: 2026-08-03 06:04:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-03 06:04:43 +0000 UTC FinishedAt: 2026-08-03 06:04:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-03 06:04:43 +0000 UTC FinishedAt: 2026-08-03 06:06:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-03 06:04:43 +0000 UTC FinishedAt: 2026-08-03 06:06:37 +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:*37f9dc64-4ca6-45e6-9f54-bbedd19d2cd4,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-workflowtxnbb/series-workflowtxnbb-build-action-1329306901/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-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-03 06:06:47 +0000 UTC FinishedAt: 2026-08-03 09:08:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-03 06:06:47 +0000 UTC FinishedAt: 2026-08-03 09:08:09 +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":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"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:*358dc3bc-dd48-4d22-806d-8bda72a74fa7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*37f9dc64-4ca6-45e6-9f54-bbedd19d2cd4,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-workflowtxnbb/series-workflowtxnbb-build-action-2452398716/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-workflowtxnbb/series-workflowtxnbb-build-action-1329306901/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-03 06:06:47 +0000 UTC FinishedAt: 2026-08-03 06:06:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-03 06:06:47 +0000 UTC FinishedAt: 2026-08-03 06:06:53 +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":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"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-workflowtxnbb/series-workflowtxnbb-convert-artifact-492683438/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-03 06:06:47 +0000 UTC FinishedAt: 2026-08-03 06:06:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-03 06:06:47 +0000 UTC FinishedAt: 2026-08-03 06:06:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-03 06:06:47 +0000 UTC FinishedAt: 2026-08-03 06:06:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-03 06:06:57 +0000 UTC FinishedAt: 2026-08-03 09:08:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowtxnbb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_link_unreserve_chanctx","__ieee80211_link_release_channel","ieee80211_link_use_reserved_context","ieee80211_channel_switch"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"86c3125c75d79ee7fb4d045bb9ada4c5b067eacc","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","CFG80211"],"series_id":"fa322a84-429f-40ea-8266-33179ed648fb","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-03 06:06:57 +0000 UTC FinishedAt: 2026-08-03 09:08:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*358dc3bc-dd48-4d22-806d-8bda72a74fa7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*37f9dc64-4ca6-45e6-9f54-bbedd19d2cd4,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-workflowtxnbb/series-workflowtxnbb-build-action-2452398716/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-workflowtxnbb/series-workflowtxnbb-build-action-1329306901/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-workflowtxnbb/series-workflowtxnbb-convert-artifact-492683438/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,}