Name: series-workflowrrvcm Phase: Succeeded StartedAt: 2026-07-14 15:10:40 +0000 UTC FinishedAt: 2026-07-14 20:08:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrrvcm[0] Phase: Succeeded StartedAt: 2026-07-14 15:10:40 +0000 UTC FinishedAt: 2026-07-14 15:37:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrrvcm[0].run-triage Phase: Succeeded StartedAt: 2026-07-14 15:10:40 +0000 UTC FinishedAt: 2026-07-14 15:37:50 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3b029c035b34bbc693405ddf759f0e9b920c27f1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3b029c035b34bbc693405ddf759f0e9b920c27f1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "MAC80211_HWSIM" ], "series_id": "dfe21819-9c0c-470a-97e2-017a21a7a458" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_assoc_config_link", "ieee80211_assoc_success", "ieee80211_process_ml_reconf_resp" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE0IDE1OjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9hc3NvY19zdWNjZXNzJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9wcm9jZXNzX21sX3JlY29uZl9yZXNwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwYXJzaW5nIGxvZ2ljIG9mIE11bHRpLUxpbmsgKE1MKSBlbGVtZW50cyBpbiA4MDIuMTEgYXNzb2NpYXRpb24gcmVzcG9uc2VzIHdpdGhpbiB0aGUgbWFjODAyMTEgc3Vic3lzdGVtLiBJdCBjaGFuZ2VzIGhvdyB0aGUgQlNTIHBhcmFtZXRlciBjaGFuZ2UgY291bnQgaXMgZXh0cmFjdGVkIGFuZCBoYW5kbGVzIG1pc3Npbmcgb3IgbWFsZm9ybWVkIGVsZW1lbnRzLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb3JlIGxvZ2ljIGZvciBXaS1GaSA3ICg4MDIuMTFiZSkgTXVsdGktTGluayBPcGVyYXRpb24gKE1MTykgYW5kIGNhbiBiZSB0ZXN0ZWQgdmlhIG1hYzgwMjExX2h3c2ltLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDE1OjM2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjc1NWU2ZTQ4MzRiNzFjODU4MTcwM2Q3NjY0MjA2N2NjY2ExZWMzYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDE1OjM2OjIxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9tbG1lLmMgYi9uZXQvbWFjODAyMTEvbWxtZS5jXG5pbmRleCA5ZTkyMzM3YmI2ZjllNS4uZjExNzJhOTUwMjg0ZjAgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvbWxtZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvbWxtZS5jXG5AQCAtNTg3MSw4ICYjNDM7NTg3MSw2IEBAIHN0YXRpYyBib29sIGllZWU4MDIxMV9hc3NvY19jb25maWdfbGluayhzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbiBcdGNvbnN0IHN0cnVjdCBjZmc4MDIxMV9ic3NfaWVzICpic3NfaWVzID0gTlVMTDtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kO1xuIFx0c3RydWN0IGllZWU4MDJfMTFfZWxlbXMgKmVsZW1zO1xuLVx0Y29uc3QgX19sZTE2IHByb2ZfYnNzX3BhcmFtX2NoX3ByZXNlbnQgPVxuLVx0XHRjcHVfdG9fbGUxNihJRUVFODAyMTFfTUxFX1NUQV9DT05UUk9MX0JTU19QQVJBTV9DSEFOR0VfQ05UX1BSRVNFTlQpO1xuIFx0dTE2IGNhcGFiX2luZm87XG4gXHRib29sIHJldDtcbiBcbkBAIC01ODg4LDIwICYjNDM7NTg4NiwxMyBAQCBzdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmsoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXG4gXHRcdCAqIHN1Y2Nlc3NmdWwsIHNvIHNldCB0aGUgc3RhdHVzIGRpcmVjdGx5IHRvIHN1Y2Nlc3NcbiBcdFx0ICovXG4gXHRcdGFzc29jX2RhdGEtXHUwMDNlbGlua1tsaW5rX2lkXS5zdGF0dXMgPSBXTEFOX1NUQVRVU19TVUNDRVNTO1xuLVx0XHRpZiAoZWxlbXMtXHUwMDNlbWxfYmFzaWMpIHtcbi1cdFx0XHRpbnQgYnNzX3BhcmFtX2NoX2NudCA9XG4tXHRcdFx0XHRpZWVlODAyMTFfbWxlX2dldF9ic3NfcGFyYW1fY2hfY250KChjb25zdCB2b2lkICopZWxlbXMtXHUwMDNlbWxfYmFzaWMpO1xuLVxuLVx0XHRcdGlmIChic3NfcGFyYW1fY2hfY250IFx1MDAzYyAwKSB7XG4tXHRcdFx0XHRyZXQgPSBmYWxzZTtcbi1cdFx0XHRcdGdvdG8gb3V0O1xuLVx0XHRcdH1cbi1cdFx0XHRic3NfY29uZi1cdTAwM2Vic3NfcGFyYW1fY2hfY250ID0gYnNzX3BhcmFtX2NoX2NudDtcbi1cdFx0XHRic3NfY29uZi1cdTAwM2Vic3NfcGFyYW1fY2hfY250X2xpbmtfaWQgPSBsaW5rX2lkO1xuLVx0XHR9XG4tXHR9IGVsc2UgaWYgKGVsZW1zLVx1MDAzZXBhcnNlX2Vycm9yIFx1MDAyNiBJRUVFODAyMTFfUEFSU0VfRVJSX0RVUF9ORVNUX01MX0JBU0lDIHx8XG4tXHRcdCAgICFlbGVtcy1cdTAwM2Vwcm9mIHx8XG4tXHRcdCAgICEoZWxlbXMtXHUwMDNlcHJvZi1cdTAwM2Vjb250cm9sIFx1MDAyNiBwcm9mX2Jzc19wYXJhbV9jaF9wcmVzZW50KSkge1xuJiM0MztcdH0gZWxzZSBpZiAoZWxlbXMtXHUwMDNlcGFyc2VfZXJyb3IgXHUwMDI2IElFRUU4MDIxMV9QQVJTRV9FUlJfRFVQX05FU1RfTUxfQkFTSUMpIHtcbiYjNDM7XHRcdHNkYXRhX2luZm8oc2RhdGEsXG4mIzQzO1x0XHRcdCAgIFwmIzM0O2Fzc29jaWF0aW9uIHJlc3BvbnNlIGhhZCBuZXN0ZWQgbXVsdGktbGluayBlbGVtZW50XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldCA9IGZhbHNlO1xuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1x0fSBlbHNlIGlmICghZWxlbXMtXHUwMDNlcHJvZikge1xuJiM0MztcdFx0bGlua19pbmZvKGxpbmssIFwmIzM0O2xpbmsgbWlzc2luZyBmcm9tIGFzc29jaWF0aW9uIHJlc3BvbnNlXFxuXCYjMzQ7KTtcbiBcdFx0cmV0ID0gZmFsc2U7XG4gXHRcdGdvdG8gb3V0O1xuIFx0fSBlbHNlIHtcbkBAIC01OTE1LDEwICYjNDM7NTkwNiw2IEBAIHN0YXRpYyBib29sIGllZWU4MDIxMV9hc3NvY19jb25maWdfbGluayhzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbiBcdFx0ICovXG4gXHRcdGNhcGFiX2luZm8gPSBnZXRfdW5hbGlnbmVkX2xlMTYocHRyKTtcbiBcdFx0YXNzb2NfZGF0YS1cdTAwM2VsaW5rW2xpbmtfaWRdLnN0YXR1cyA9IGdldF91bmFsaWduZWRfbGUxNihwdHIgJiM0MzsgMik7XG4tXHRcdGJzc19wYXJhbV9jaF9jbnQgPVxuLVx0XHRcdGllZWU4MDIxMV9tbGVfYmFzaWNfc3RhX3Byb2ZfYnNzX3BhcmFtX2NoX2NudChlbGVtcy1cdTAwM2Vwcm9mKTtcbi1cdFx0YnNzX2NvbmYtXHUwMDNlYnNzX3BhcmFtX2NoX2NudCA9IGJzc19wYXJhbV9jaF9jbnQ7XG4tXHRcdGJzc19jb25mLVx1MDAzZWJzc19wYXJhbV9jaF9jbnRfbGlua19pZCA9IGxpbmtfaWQ7XG4gXG4gXHRcdGlmIChhc3NvY19kYXRhLVx1MDAzZWxpbmtbbGlua19pZF0uc3RhdHVzICE9IFdMQU5fU1RBVFVTX1NVQ0NFU1MpIHtcbiBcdFx0XHRsaW5rX2luZm8obGluaywgXCYjMzQ7YXNzb2NpYXRpb24gcmVzcG9uc2Ugc3RhdHVzIGNvZGU9JXVcXG5cJiMzNDssXG5AQCAtNTkyNiw2ICYjNDM7NTkxMywzMiBAQCBzdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmsoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXG4gXHRcdFx0cmV0ID0gdHJ1ZTtcbiBcdFx0XHRnb3RvIG91dDtcbiBcdFx0fVxuJiM0MztcbiYjNDM7XHRcdGlmICghKGVsZW1zLVx1MDAzZXByb2YtXHUwMDNlY29udHJvbCBcdTAwMjZcbiYjNDM7XHRcdCAgICAgIGNwdV90b19sZTE2KElFRUU4MDIxMV9NTEVfU1RBX0NPTlRST0xfQlNTX1BBUkFNX0NIQU5HRV9DTlRfUFJFU0VOVCkpKSB7XG4mIzQzO1x0XHRcdGxpbmtfaW5mbyhsaW5rLFxuJiM0MztcdFx0XHRcdCAgXCYjMzQ7cGVyLVNUQSBwcm9maWxlIG1pc3NpbmcgQlNTIHBhcmFtZXRlciBjaGFuZ2UgY291bnRcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRyZXQgPSBmYWxzZTtcbiYjNDM7XHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRic3NfcGFyYW1fY2hfY250ID1cbiYjNDM7XHRcdFx0aWVlZTgwMjExX21sZV9iYXNpY19zdGFfcHJvZl9ic3NfcGFyYW1fY2hfY250KGVsZW1zLVx1MDAzZXByb2YpO1xuJiM0MztcdFx0YnNzX2NvbmYtXHUwMDNlYnNzX3BhcmFtX2NoX2NudCA9IGJzc19wYXJhbV9jaF9jbnQ7XG4mIzQzO1x0XHRic3NfY29uZi1cdTAwM2Vic3NfcGFyYW1fY2hfY250X2xpbmtfaWQgPSBsaW5rX2lkO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKGxpbmtfaWQgPT0gYXNzb2NfZGF0YS1cdTAwM2Vhc3NvY19saW5rX2lkIFx1MDAyNlx1MDAyNiBlbGVtcy1cdTAwM2VtbF9iYXNpYykge1xuJiM0MztcdFx0aW50IGJzc19wYXJhbV9jaF9jbnQgPVxuJiM0MztcdFx0XHRpZWVlODAyMTFfbWxlX2dldF9ic3NfcGFyYW1fY2hfY250KChjb25zdCB2b2lkICopZWxlbXMtXHUwMDNlbWxfYmFzaWMpO1xuJiM0MztcbiYjNDM7XHRcdGlmIChic3NfcGFyYW1fY2hfY250IFx1MDAzYyAwKSB7XG4mIzQzO1x0XHRcdHNkYXRhX2luZm8oc2RhdGEsXG4mIzQzO1x0XHRcdFx0ICAgXCYjMzQ7Tm8gQlNTIHBhcmFtZXRlciBjaGFuZ2UgY291bnQgaW4gYXNzb2MgcmVzcG9uc2VcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRyZXQgPSBmYWxzZTtcbiYjNDM7XHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRic3NfY29uZi1cdTAwM2Vic3NfcGFyYW1fY2hfY250ID0gYnNzX3BhcmFtX2NoX2NudDtcbiYjNDM7XHRcdGJzc19jb25mLVx1MDAzZWJzc19wYXJhbV9jaF9jbnRfbGlua19pZCA9IGxpbmtfaWQ7XG4gXHR9XG4gXG4gXHRpZiAoIWlzX3MxZyBcdTAwMjZcdTAwMjYgIWVsZW1zLVx1MDAzZXN1cHBfcmF0ZXMpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxNTozNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9hc3NvY19jb25maWdfbGluayYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfYXNzb2Nfc3VjY2VzcyYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfcHJvY2Vzc19tbF9yZWNvbmZfcmVzcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFyc2luZyBsb2dpYyBvZiBNdWx0aS1MaW5rIChNTCkgZWxlbWVudHMgaW4gODAyLjExIGFzc29jaWF0aW9uIHJlc3BvbnNlcyB3aXRoaW4gdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gSXQgY2hhbmdlcyBob3cgdGhlIEJTUyBwYXJhbWV0ZXIgY2hhbmdlIGNvdW50IGlzIGV4dHJhY3RlZCBhbmQgaGFuZGxlcyBtaXNzaW5nIG9yIG1hbGZvcm1lZCBlbGVtZW50cy4gVGhpcyBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY29yZSBsb2dpYyBmb3IgV2ktRmkgNyAoODAyLjExYmUpIE11bHRpLUxpbmsgT3BlcmF0aW9uIChNTE8pIGFuZCBjYW4gYmUgdGVzdGVkIHZpYSBtYWM4MDIxMV9od3NpbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjc1NWU2ZTQ4MzRiNzFjODU4MTcwM2Q3NjY0MjA2N2NjY2ExZWMzYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDE0IDE1OjM2OjIxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL21sbWUuYyBiL25ldC9tYWM4MDIxMS9tbG1lLmMKaW5kZXggOWU5MjMzN2JiNmY5ZTUuLmYxMTcyYTk1MDI4NGYwIDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvbWxtZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9tbG1lLmMKQEAgLTU4NzEsOCAmIzQzOzU4NzEsNiBAQCBzdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmsoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssCiAJY29uc3Qgc3RydWN0IGNmZzgwMjExX2Jzc19pZXMgKmJzc19pZXMgPSBOVUxMOwogCXN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kOwogCXN0cnVjdCBpZWVlODAyXzExX2VsZW1zICplbGVtczsKLQljb25zdCBfX2xlMTYgcHJvZl9ic3NfcGFyYW1fY2hfcHJlc2VudCA9Ci0JCWNwdV90b19sZTE2KElFRUU4MDIxMV9NTEVfU1RBX0NPTlRST0xfQlNTX1BBUkFNX0NIQU5HRV9DTlRfUFJFU0VOVCk7CiAJdTE2IGNhcGFiX2luZm87CiAJYm9vbCByZXQ7CiAKQEAgLTU4ODgsMjAgJiM0Mzs1ODg2LDEzIEBAIHN0YXRpYyBib29sIGllZWU4MDIxMV9hc3NvY19jb25maWdfbGluayhzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaywKIAkJICogc3VjY2Vzc2Z1bCwgc28gc2V0IHRoZSBzdGF0dXMgZGlyZWN0bHkgdG8gc3VjY2VzcwogCQkgKi8KIAkJYXNzb2NfZGF0YS0mZ3Q7bGlua1tsaW5rX2lkXS5zdGF0dXMgPSBXTEFOX1NUQVRVU19TVUNDRVNTOwotCQlpZiAoZWxlbXMtJmd0O21sX2Jhc2ljKSB7Ci0JCQlpbnQgYnNzX3BhcmFtX2NoX2NudCA9Ci0JCQkJaWVlZTgwMjExX21sZV9nZXRfYnNzX3BhcmFtX2NoX2NudCgoY29uc3Qgdm9pZCAqKWVsZW1zLSZndDttbF9iYXNpYyk7Ci0KLQkJCWlmIChic3NfcGFyYW1fY2hfY250ICZsdDsgMCkgewotCQkJCXJldCA9IGZhbHNlOwotCQkJCWdvdG8gb3V0OwotCQkJfQotCQkJYnNzX2NvbmYtJmd0O2Jzc19wYXJhbV9jaF9jbnQgPSBic3NfcGFyYW1fY2hfY250OwotCQkJYnNzX2NvbmYtJmd0O2Jzc19wYXJhbV9jaF9jbnRfbGlua19pZCA9IGxpbmtfaWQ7Ci0JCX0KLQl9IGVsc2UgaWYgKGVsZW1zLSZndDtwYXJzZV9lcnJvciAmYW1wOyBJRUVFODAyMTFfUEFSU0VfRVJSX0RVUF9ORVNUX01MX0JBU0lDIHx8Ci0JCSAgICFlbGVtcy0mZ3Q7cHJvZiB8fAotCQkgICAhKGVsZW1zLSZndDtwcm9mLSZndDtjb250cm9sICZhbXA7IHByb2ZfYnNzX3BhcmFtX2NoX3ByZXNlbnQpKSB7CiYjNDM7CX0gZWxzZSBpZiAoZWxlbXMtJmd0O3BhcnNlX2Vycm9yICZhbXA7IElFRUU4MDIxMV9QQVJTRV9FUlJfRFVQX05FU1RfTUxfQkFTSUMpIHsKJiM0MzsJCXNkYXRhX2luZm8oc2RhdGEsCiYjNDM7CQkJICAgJiMzNDthc3NvY2lhdGlvbiByZXNwb25zZSBoYWQgbmVzdGVkIG11bHRpLWxpbmsgZWxlbWVudFxuJiMzNDspOwomIzQzOwkJcmV0ID0gZmFsc2U7CiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJfSBlbHNlIGlmICghZWxlbXMtJmd0O3Byb2YpIHsKJiM0MzsJCWxpbmtfaW5mbyhsaW5rLCAmIzM0O2xpbmsgbWlzc2luZyBmcm9tIGFzc29jaWF0aW9uIHJlc3BvbnNlXG4mIzM0Oyk7CiAJCXJldCA9IGZhbHNlOwogCQlnb3RvIG91dDsKIAl9IGVsc2UgewpAQCAtNTkxNSwxMCAmIzQzOzU5MDYsNiBAQCBzdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmsoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssCiAJCSAqLwogCQljYXBhYl9pbmZvID0gZ2V0X3VuYWxpZ25lZF9sZTE2KHB0cik7CiAJCWFzc29jX2RhdGEtJmd0O2xpbmtbbGlua19pZF0uc3RhdHVzID0gZ2V0X3VuYWxpZ25lZF9sZTE2KHB0ciAmIzQzOyAyKTsKLQkJYnNzX3BhcmFtX2NoX2NudCA9Ci0JCQlpZWVlODAyMTFfbWxlX2Jhc2ljX3N0YV9wcm9mX2Jzc19wYXJhbV9jaF9jbnQoZWxlbXMtJmd0O3Byb2YpOwotCQlic3NfY29uZi0mZ3Q7YnNzX3BhcmFtX2NoX2NudCA9IGJzc19wYXJhbV9jaF9jbnQ7Ci0JCWJzc19jb25mLSZndDtic3NfcGFyYW1fY2hfY250X2xpbmtfaWQgPSBsaW5rX2lkOwogCiAJCWlmIChhc3NvY19kYXRhLSZndDtsaW5rW2xpbmtfaWRdLnN0YXR1cyAhPSBXTEFOX1NUQVRVU19TVUNDRVNTKSB7CiAJCQlsaW5rX2luZm8obGluaywgJiMzNDthc3NvY2lhdGlvbiByZXNwb25zZSBzdGF0dXMgY29kZT0ldVxuJiMzNDssCkBAIC01OTI2LDYgJiM0Mzs1OTEzLDMyIEBAIHN0YXRpYyBib29sIGllZWU4MDIxMV9hc3NvY19jb25maWdfbGluayhzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaywKIAkJCXJldCA9IHRydWU7CiAJCQlnb3RvIG91dDsKIAkJfQomIzQzOwomIzQzOwkJaWYgKCEoZWxlbXMtJmd0O3Byb2YtJmd0O2NvbnRyb2wgJmFtcDsKJiM0MzsJCSAgICAgIGNwdV90b19sZTE2KElFRUU4MDIxMV9NTEVfU1RBX0NPTlRST0xfQlNTX1BBUkFNX0NIQU5HRV9DTlRfUFJFU0VOVCkpKSB7CiYjNDM7CQkJbGlua19pbmZvKGxpbmssCiYjNDM7CQkJCSAgJiMzNDtwZXItU1RBIHByb2ZpbGUgbWlzc2luZyBCU1MgcGFyYW1ldGVyIGNoYW5nZSBjb3VudFxuJiMzNDspOwomIzQzOwkJCXJldCA9IGZhbHNlOwomIzQzOwkJCWdvdG8gb3V0OwomIzQzOwkJfQomIzQzOwkJYnNzX3BhcmFtX2NoX2NudCA9CiYjNDM7CQkJaWVlZTgwMjExX21sZV9iYXNpY19zdGFfcHJvZl9ic3NfcGFyYW1fY2hfY250KGVsZW1zLSZndDtwcm9mKTsKJiM0MzsJCWJzc19jb25mLSZndDtic3NfcGFyYW1fY2hfY250ID0gYnNzX3BhcmFtX2NoX2NudDsKJiM0MzsJCWJzc19jb25mLSZndDtic3NfcGFyYW1fY2hfY250X2xpbmtfaWQgPSBsaW5rX2lkOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChsaW5rX2lkID09IGFzc29jX2RhdGEtJmd0O2Fzc29jX2xpbmtfaWQgJmFtcDsmYW1wOyBlbGVtcy0mZ3Q7bWxfYmFzaWMpIHsKJiM0MzsJCWludCBic3NfcGFyYW1fY2hfY250ID0KJiM0MzsJCQlpZWVlODAyMTFfbWxlX2dldF9ic3NfcGFyYW1fY2hfY250KChjb25zdCB2b2lkICopZWxlbXMtJmd0O21sX2Jhc2ljKTsKJiM0MzsKJiM0MzsJCWlmIChic3NfcGFyYW1fY2hfY250ICZsdDsgMCkgewomIzQzOwkJCXNkYXRhX2luZm8oc2RhdGEsCiYjNDM7CQkJCSAgICYjMzQ7Tm8gQlNTIHBhcmFtZXRlciBjaGFuZ2UgY291bnQgaW4gYXNzb2MgcmVzcG9uc2VcbiYjMzQ7KTsKJiM0MzsJCQlyZXQgPSBmYWxzZTsKJiM0MzsJCQlnb3RvIG91dDsKJiM0MzsJCX0KJiM0MzsJCWJzc19jb25mLSZndDtic3NfcGFyYW1fY2hfY250ID0gYnNzX3BhcmFtX2NoX2NudDsKJiM0MzsJCWJzc19jb25mLSZndDtic3NfcGFyYW1fY2hfY250X2xpbmtfaWQgPSBsaW5rX2lkOwogCX0KIAogCWlmICghaXNfczFnICZhbXA7JmFtcDsgIWVsZW1zLSZndDtzdXBwX3JhdGVzKSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDE1OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMjYKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgbmV0L21hYzgwMjExL21sbWUuY2AgUGF0Y2gqKgoKT2theSwgc28gSSBoYXZlIGEgcGF0Y2ggdGhhdCYjMzk7cyB0b3VjaGluZyBgbmV0L21hYzgwMjExL21sbWUuY2AuIFJpZ2h0IGF3YXksIHRoYXQgZmxhZ3MgaXQgYXMgc29tZXRoaW5nIHByZXR0eSBjb3JlIHdpdGhpbiB0aGUgbWFjODAyMTEgc3Vic3lzdGVtLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIGJlIG1vZGlmeWluZyB0aGUgYGllZWU4MDIxMV9hc3NvY19jb25maWdfbGlua2AgZnVuY3Rpb24sIHdoaWNoIGRlYWxzIHdpdGggaG93IGBic3NfcGFyYW1fY2hfY250YCBpcyBoYW5kbGVkIGR1cmluZyBhc3NvY2lhdGlvbiByZXNwb25zZXMuIFRoYXQgc291bmRzIGxpa2UgYSBmYWlybHkgbG93LWxldmVsIG5ldHdvcmtpbmcgZGV0YWlsLCByZWxhdGVkIHRvIGNoYW5uZWwgY29uZmlndXJhdGlvbiwgd2hpY2ggaXMgcHJldHR5IGltcG9ydGFudCBmb3IgYSBzb2xpZCBjb25uZWN0aW9uLgoKR2l2ZW4gdGhhdCB0aGlzIGlzIGZ1bmN0aW9uYWwgY29kZSwgbXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgdW5kZXJzdGFuZGluZyB0aGUgY29udGV4dCBhbmQgaW1wYWN0LiBJIG5lZWQgdG8gZGlnIGludG8gYGllZWU4MDIxMV9hc3NvY19jb25maWdfbGlua2AgYW5kIHNlZSB3aGVyZSBpdCYjMzk7cyBjYWxsZWQgYW5kLCBtb3JlIGltcG9ydGFudGx5LCB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSByZWxldmFudCB0byBpdHMgb3BlcmF0aW9uLiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gZGl2ZSBpbnRvIHRoZSBjYWxsIHNpdGVzIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLgoKU2luY2UgdGhpcyBpcyBtYWM4MDIxMSwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNvbmZpcm0gdGhhdCBgQ09ORklHX01BQzgwMjExYCBpcyBlbmFibGVkLCB3aGljaCBzaG91bGQgYmUgdGhlIGNhc2UuIE5vdywgdG8gbWFrZSB0aGlzIGVhc2llciBJJiMzOTtsbCB1c2UgYGdyZXBwZXJgIHRvIHF1aWNrbHkgbG9jYXRlIGFsbCBpbnN0YW5jZXMgb2YgYGllZWU4MDIxMV9hc3NvY19jb25maWdfbGlua2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBxdWljayBvdmVydmlldyBvZiBob3cgdGhpcyBmdW5jdGlvbiBmaXRzIGludG8gdGhlIG92ZXJhbGwgbWFjODAyMTEgYXJjaGl0ZWN0dXJlLCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgSSBuZWVkIHRvIGNvbnNpZGVyIHdoZW4gZXZhbHVhdGluZyB0aGlzIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDE1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9hc3NvY19jb25maWdfbGluayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvbWxtZS5jPTU3ODE9c3RhdGljIHZvaWQgaWVlZTgwMjExX2VwY3NfdGVhcmRvd24oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy01ODQ1LVxubmV0L21hYzgwMjExL21sbWUuYzo1ODQ2OnN0YXRpYyBib29sIGllZWU4MDIxMV9hc3NvY19jb25maWdfbGluayhzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNTg0Ny1cdFx0XHRcdFx0c3RydWN0IGxpbmtfc3RhX2luZm8gKmxpbmtfc3RhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9NjkzNz1zdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2Nfc3VjY2VzcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcwNzItXG5uZXQvbWFjODAyMTEvbWxtZS5jOjcwNzM6XHRcdGlmICghaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rKGxpbmssIGxpbmtfc3RhLFxubmV0L21hYzgwMjExL21sbWUuYy03MDc0LVx0XHRcdFx0XHRcdCBhc3NvY19kYXRhLVx1MDAzZWxpbmtbbGlua19pZF0uYnNzLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTA4ODE9aWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy0xMTA1NS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTEwNTY6XHRcdGlmICghaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rKGxpbmssIGxpbmtfc3RhLFxubmV0L21hYzgwMjExL21sbWUuYy0xMTA1Ny1cdFx0XHRcdFx0XHQgYWRkX2xpbmtzX2RhdGEtXHUwMDNlbGlua1tsaW5rX2lkXS5ic3MsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTU6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAyNwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDE3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE11bHRpLUxpbmsgT3BlcmF0aW9uIChNTE8pIEFzc29jaWF0aW9uIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0aGUgc3lzdGVtIGhhbmRsZXMgdGhlIGFzc29jaWF0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIE11bHRpLUxpbmsgT3BlcmF0aW9uIChNTE8pLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGNvbnRleHQgb2YgODAyLjExYmUsIG9yIFdpLUZpIDcuIEl0IHNlZW1zIHRoZSBgaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rYCBmdW5jdGlvbiBpcyBjcnVjaWFsIGhlcmUsIGFzIGl0JiMzOTtzIHRyaWdnZXJlZCBmcm9tIGJvdGggYGllZWU4MDIxMV9hc3NvY19zdWNjZXNzYCBhbmQgYGllZWU4MDIxMV9wcm9jZXNzX21sX3JlY29uZl9yZXNwYC4gVGhhdCBtYWtlcyBpdCBhIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIHBpZWNlLCB3aGljaCBpcyBnb29kLiBXZSBrbm93IHRoaXMgaGFuZGxlcyBNTE8uCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZXNlIGZ1bmN0aW9uczogYGllZWU4MDIxMV9hc3NvY19jb25maWdfbGlua2AsIGBpZWVlODAyMTFfYXNzb2Nfc3VjY2Vzc2AsIGFuZCBgaWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3BgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IGFuZCBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIGhvdyBpdCBhbGwgaW50ZWdyYXRlcyB3aXRoIHRoZSBgTUFDODAyMTFgIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlcy4KCk5vdywgSSYjMzk7bSBnb2luZyB0byBkaWcgZGVlcGVyIHRvIHNlZSBpZiBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIGZsYWdzLCBvciBwYXJhbWV0ZXJzIGFyZSB0aWVkIHRvIE1MTyBvciA4MDIuMTFiZS4gVGhhdCYjMzk7cyB0aGUga2V5OiB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgZ2VuZXJhbCBhc3NvY2lhdGlvbiBmcmFtZXdvcmsgaXMgKnNwZWNpYWxpemVkKiBmb3IgdGhlc2UgbmV3ZXIgZmVhdHVyZXMuIFRoaXMgbmVlZHMgdG8gYmUgY2hlY2tlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxNTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI6Y29uZmlnIE1BQzgwMjExXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xOT1pZiBNQUM4MDIxMSAhPSBuXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyLVx0Ym9vbFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDpjb25maWcgTUFDODAyMTFfUkNfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2Vcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjQxOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz00OD1lbmRjaG9pY2Vcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTUxLVx0c3RyaW5nXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NTc9Y29tbWVudCBcJiMzNDtTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBtYWM4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNjktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3MDpjb25maWcgTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXHRib29sIFwmIzM0O0VuYWJsZSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTc4LVxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVx0Ym9vbCBcJiMzNDtFbmFibGUgTEVEIHRyaWdnZXJzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctODctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL0tjb25maWctODktXHRib29sIFwmIzM0O0V4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk2LVxubmV0L21hYzgwMjExL0tjb25maWc6OTc6Y29uZmlnIE1BQzgwMjExX01FU1NBR0VfVFJBQ0lOR1xubmV0L21hYzgwMjExL0tjb25maWctOTgtXHRib29sIFwmIzM0O1RyYWNlIGFsbCBtYWM4MDIxMSBkZWJ1ZyBtZXNzYWdlc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwOS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cdGJvb2wgXCYjMzQ7U2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cdGJvb2wgXCYjMzQ7RG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjEzMjpjb25maWcgTUFDODAyMTFfVkVSQk9TRV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTMzLVx0Ym9vbCBcJiMzNDtWZXJib3NlIGRlYnVnZ2luZyBvdXRwdXRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2Mzpjb25maWcgTUFDODAyMTFfSFRfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBIVCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzQtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTc2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5Nzpjb25maWcgTUFDODAyMTFfUFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBwb3dlcnNhdmUgbW9kZSBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMDgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjEwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxubmV0L21hYzgwMjExL0tjb25maWc6MjM1OmNvbmZpZyBNQUM4MDIxMV9NSFdNUF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjM2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggSFdNUCByb3V0aW5nIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0Ny1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjYwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxubmV0L21hYzgwMjExL0tjb25maWc6MjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwb3dlcnNhdmUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjgwLVxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXHRib29sIFwmIzM0O1ZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXHRib29sIFwmIzM0O0V4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjMwODpjb25maWcgTUFDODAyMTFfU1RBX0hBU0hfTUFYX1NJWkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cdGludCBcJiMzNDtTdGF0aW9uIGhhc2ggdGFibGUgbWF4aW11bSBzaXplXCYjMzQ7IGlmIE1BQzgwMjExX0RFQlVHX01FTlVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxNTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzY1CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqSW5pdGlhbCBDb25maWd1cmF0aW9uIENoZWNrKioKCkFscmlnaHQsIHNvIHRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIC0gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBzdGFuZGFyZCBgTUFDODAyMTFgIGFuZCBhbHNvIHVzaW5nIHRoZSBgTUFDODAyMTFfSFdTSU1gIGNvbmZpZ3VyYXRpb24sIHdoaWNoIGlzIHRoZSBzZXR1cCBJJiMzOTtkIHR5cGljYWxseSBleHBlY3QgZm9yIHRlc3RpbmcuIE5vIHN1cnByaXNlcyB0aGVyZS4gQnV0IEkgbmVlZCB0byBkaXZlIGRlZXBlci4KCk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gbWFrZSBzdXJlIHdlIGFyZSBub3QgbWlzc2luZyBhbnkgb3RoZXIgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zLiBXZSBjYW4mIzM5O3QgYXNzdW1lIHRoYXQgb25seSB0aG9zZSB0d28gY292ZXIgdGhlIHdob2xlIGxhbmRzY2FwZS4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgcmVsYXRlIHRvIDgwMi4xMWJlIGZlYXR1cmVzIG9yIE11bHRpLUxpbmsgT3BlcmF0aW9uIChNTE8pLiBUaGUgY29uZmlndXJhdGlvbiBzcGFjZSBhcm91bmQgdGhvc2UgYXJlIHByZXR0eSBzcGVjaWZpYywgc28gYSBzZWFyY2ggaXMgcmVxdWlyZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UmIzM5O3JlIG5vdCBvdmVybG9va2luZyBhbnl0aGluZyByZWxldmFudCB0byA4MDIuMTFiZSBvciB0aGUgTUxPIHN1cHBvcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTU6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnLipNTE8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9wYXJpc2MvS2NvbmZpZz0yNDk9Y29uZmlnIFBBUklTQ19IVUdFX0tFUk5FTFxuLS1cbmFyY2gvcGFyaXNjL0tjb25maWctMjUxLVxuYXJjaC9wYXJpc2MvS2NvbmZpZzoyNTI6Y29uZmlnIE1MT05HQ0FMTFNcbmFyY2gvcGFyaXNjL0tjb25maWctMjUzLVx0Ym9vbCBcJiMzNDtFbmFibGUgdGhlIC1tbG9uZy1jYWxscyBjb21waWxlciBvcHRpb24gZm9yIGJpZyBrZXJuZWxzXCYjMzQ7IGlmICFQQVJJU0NfSFVHRV9LRVJORUxcbi0tXG5kcml2ZXJzL2NyeXB0by9hbWxvZ2ljL0tjb25maWc6MTpjb25maWcgQ1JZUFRPX0RFVl9BTUxPR0lDX0dYTFxuZHJpdmVycy9jcnlwdG8vYW1sb2dpYy9LY29uZmlnLTItXHR0cmlzdGF0ZSBcJiMzNDtTdXBwb3J0IGZvciBhbWxvZ2ljIGNyeXB0b2dyYXBoaWMgb2ZmbG9hZGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9jcnlwdG8vYW1sb2dpYy9LY29uZmlnLTE3LVxuZHJpdmVycy9jcnlwdG8vYW1sb2dpYy9LY29uZmlnOjE4OmNvbmZpZyBDUllQVE9fREVWX0FNTE9HSUNfR1hMX0RFQlVHXG5kcml2ZXJzL2NyeXB0by9hbWxvZ2ljL0tjb25maWctMTktXHRib29sIFwmIzM0O0VuYWJsZSBhbWxvZ2ljIHN0YXRzXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmM9NjgwMD1zdGF0aWMgdm9pZCBtdnBwMl9hY3BpX3N0YXJ0KHN0cnVjdCBtdnBwMl9wb3J0ICpwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTY4MTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYzo2ODEzOlx0bXZwcDJfbWFjX3ByZXBhcmUoXHUwMDI2cG9ydC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgTUxPX0FOX0lOQkFORCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTY4MTQtXHRcdFx0ICBwb3J0LVx1MDAzZXBoeV9pbnRlcmZhY2UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmM6NjgxNTpcdG12cHAyX21hY19jb25maWcoXHUwMDI2cG9ydC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgTUxPX0FOX0lOQkFORCwgXHUwMDI2c3RhdGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmMtNjgxNi1cdHBjcy1cdTAwM2VvcHMtXHUwMDNlcGNzX2NvbmZpZyhwY3MsIFBIWUxJTktfUENTX05FR19JTkJBTkRfRU5BQkxFRCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy02ODE4LVx0XHRcdCAgICAgZmFsc2UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmM6NjgxOTpcdG12cHAyX21hY19maW5pc2goXHUwMDI2cG9ydC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgTUxPX0FOX0lOQkFORCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTY4MjAtXHRcdFx0IHBvcnQtXHUwMDNlcGh5X2ludGVyZmFjZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9waHlsaW5rLmM9NDY9c3RhdGljIHZvaWQgbGFuOTY2eF9waHlsaW5rX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcGh5bGluay5jLTU4LVx0cG9ydF9jb25maWctXHUwMDNlcGF1c2UgPSAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9waHlsaW5rLmM6NTk6XHRwb3J0X2NvbmZpZy1cdTAwM2VwYXVzZSB8PSB0eF9wYXVzZSA/IE1MT19QQVVTRV9UWCA6IDA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3BoeWxpbmsuYzo2MDpcdHBvcnRfY29uZmlnLVx1MDAzZXBhdXNlIHw9IHJ4X3BhdXNlID8gTUxPX1BBVVNFX1JYIDogMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcGh5bGluay5jLTYxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcG9ydC5jPTE0ND1zdGF0aWMgdm9pZCBsYW45NjZ4X3BvcnRfbGlua191cChzdHJ1Y3QgbGFuOTY2eF9wb3J0ICpwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcG9ydC5jLTIzMy1cdFx0U1lTX01BQ19GQ19DRkdfUEFVU0VfVkFMX0NGR19TRVQoMHhmZmZmKSB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3BvcnQuYzoyMzQ6XHRcdFNZU19NQUNfRkNfQ0ZHX1JYX0ZDX0VOQV9TRVQoY29uZmlnLVx1MDAzZXBhdXNlIFx1MDAyNiBNTE9fUEFVU0VfUlggPyAxIDogMCkgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9wb3J0LmM6MjM1Olx0XHRTWVNfTUFDX0ZDX0NGR19UWF9GQ19FTkFfU0VUKGNvbmZpZy1cdTAwM2VwYXVzZSBcdTAwMjYgTUxPX1BBVVNFX1RYID8gMSA6IDApLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9wb3J0LmMtMjM2LVx0XHRTWVNfTUFDX0ZDX0NGR19GQ19MSU5LX1NQRUVEIHxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTg1ND1zdGF0aWMgdm9pZCBwaHlsaW5rX2FwcGx5X21hbnVhbF9mbG93KHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTg2Mi1cdC8qIE1hbnVhbCBjb25maWd1cmF0aW9uIG9mIHBhdXNlIG1vZGVzICovXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjg2MzpcdGlmICghKHBsLVx1MDAzZWxpbmtfY29uZmlnLnBhdXNlIFx1MDAyNiBNTE9fUEFVU0VfQU4pKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04NjQtXHRcdHN0YXRlLVx1MDAzZXBhdXNlID0gcGwtXHUwMDNlbGlua19jb25maWcucGF1c2U7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMjM5PXN0YXRpYyB2b2lkIHBoeWxpbmtfbWFqb3JfY29uZmlnKHN0cnVjdCBwaHlsaW5rICpwbCwgYm9vbCByZXN0YXJ0LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTMyMC1cdGVyciA9IHBoeWxpbmtfcGNzX2NvbmZpZyhwbC1cdTAwM2VwY3MsIHBsLVx1MDAzZXBjc19uZWdfbW9kZSwgc3RhdGUsXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEzMjE6XHRcdFx0XHQgISEocGwtXHUwMDNlbGlua19jb25maWcucGF1c2UgXHUwMDI2IE1MT19QQVVTRV9BTikpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMzIyLVx0aWYgKGVyciBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTM3NT1zdGF0aWMgaW50IHBoeWxpbmtfY2hhbmdlX2luYmFuZF9hZHZlcnQoc3RydWN0IHBoeWxpbmsgKnBsKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTM5Ni1cdHJldCA9IHBoeWxpbmtfcGNzX2NvbmZpZyhwbC1cdTAwM2VwY3MsIHBsLVx1MDAzZXBjc19uZWdfbW9kZSwgXHUwMDI2cGwtXHUwMDNlbGlua19jb25maWcsXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEzOTc6XHRcdFx0XHQgISEocGwtXHUwMDNlbGlua19jb25maWcucGF1c2UgXHUwMDI2IE1MT19QQVVTRV9BTikpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMzk4LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE4NDg9c3RydWN0IHBoeWxpbmsgKnBoeWxpbmtfY3JlYXRlKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg5OC1cdHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSA9IGlmYWNlO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODk5Olx0cGwtXHUwMDNlbGlua19jb25maWcucGF1c2UgPSBNTE9fUEFVU0VfQU47XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MDAtXHRwbC1cdTAwM2VsaW5rX2NvbmZpZy5zcGVlZCA9IFNQRUVEX1VOS05PV047XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTc1PXZvaWQgcGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzktXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxODA6XHRwYXVzZS1cdTAwM2VhdXRvbmVnID0gISEocGwtXHUwMDNlbGlua19jb25maWcucGF1c2UgXHUwMDI2IE1MT19QQVVTRV9BTik7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxODE6XHRwYXVzZS1cdTAwM2VyeF9wYXVzZSA9ICEhKHBsLVx1MDAzZWxpbmtfY29uZmlnLnBhdXNlIFx1MDAyNiBNTE9fUEFVU0VfUlgpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTgyOlx0cGF1c2UtXHUwMDNldHhfcGF1c2UgPSAhIShwbC1cdTAwM2VsaW5rX2NvbmZpZy5wYXVzZSBcdTAwMjYgTUxPX1BBVVNFX1RYKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE4My19XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTkxPWludCBwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0oc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzIzNS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzIzNjpcdG1hbnVhbF9jaGFuZ2VkID0gKGNvbmZpZy1cdTAwM2VwYXVzZSBeIHBhdXNlX3N0YXRlKSBcdTAwMjYgTUxPX1BBVVNFX0FOIHx8XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyMzctXHRcdFx0ICghKHBhdXNlX3N0YXRlIFx1MDAyNiBNTE9fUEFVU0VfQU4pIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjM4Olx0XHRcdCAgIChjb25maWctXHUwMDNlcGF1c2UgXiBwYXVzZV9zdGF0ZSkgXHUwMDI2IE1MT19QQVVTRV9UWFJYX01BU0spO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMjM5LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzcwMz1zdGF0aWMgaW50IHBoeWxpbmtfc2ZwX2NvbmZpZ19waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzcxNy1cdGNvbmZpZy5kdXBsZXggPSBEVVBMRVhfVU5LTk9XTjtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzcxODpcdGNvbmZpZy5wYXVzZSA9IE1MT19QQVVTRV9BTjtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzcxOS1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM3NTQ9c3RhdGljIGludCBwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbChzdHJ1Y3QgcGh5bGluayAqcGwpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNzgyLVx0Y29uZmlnLmR1cGxleCA9IERVUExFWF9VTktOT1dOO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNzgzOlx0Y29uZmlnLnBhdXNlID0gTUxPX1BBVVNFX0FOO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNzg0LVxuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvdm1kLmM9NTgxPXN0YXRpYyBpbnQgdm1kX2dldF9waHlzX29mZnNldHMoc3RydWN0IHZtZF9kZXYgKnZtZCwgYm9vbCBuYXRpdmVfaGludCxcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3ZtZC5jLTU5MS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvdm1kLmM6NTkyOlx0XHRyZXQgPSBwY2lfcmVhZF9jb25maWdfZHdvcmQoZGV2LCBQQ0lfUkVHX1ZNTE9DSywgXHUwMDI2dm1sb2NrKTtcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvdm1kLmMtNTkzLVx0XHRpZiAocmV0IHx8IFBDSV9QT1NTSUJMRV9FUlJPUih2bWxvY2spKVxuLS1cbmRyaXZlcnMvcGluY3RybC9tZXNvbi9LY29uZmlnPTYzPWNvbmZpZyBQSU5DVFJMX01FU09OX1M0XG4tLVxuZHJpdmVycy9waW5jdHJsL21lc29uL0tjb25maWctNjgtXG5kcml2ZXJzL3BpbmN0cmwvbWVzb24vS2NvbmZpZzo2OTpjb25maWcgUElOQ1RSTF9BTUxPR0lDX0E0XG5kcml2ZXJzL3BpbmN0cmwvbWVzb24vS2NvbmZpZy03MC1cdGJvb2wgXCYjMzQ7QU1MT0dJQyBwaW5jb250cm9sXCYjMzQ7XG4tLVxuZHJpdmVycy9waW5jdHJsL21lc29uL0tjb25maWctNzktXG5kcml2ZXJzL3BpbmN0cmwvbWVzb24vS2NvbmZpZzo4MDpjb25maWcgUElOQ1RSTF9BTUxPR0lDX0MzXG5kcml2ZXJzL3BpbmN0cmwvbWVzb24vS2NvbmZpZy04MS1cdHRyaXN0YXRlIFwmIzM0O0FtbG9naWMgQzMgU29DIHBpbmN0cmwgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9waW5jdHJsL21lc29uL0tjb25maWctODUtXG5kcml2ZXJzL3BpbmN0cmwvbWVzb24vS2NvbmZpZzo4Njpjb25maWcgUElOQ1RSTF9BTUxPR0lDX1Q3XG5kcml2ZXJzL3BpbmN0cmwvbWVzb24vS2NvbmZpZy04Ny1cdHRyaXN0YXRlIFwmIzM0O0FtbG9naWMgVDcgU29DIHBpbmN0cmwgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9ydGMvS2NvbmZpZz0yMTI3PWNvbmZpZyBSVENfRFJWX1NTRDIwMkRcbi0tXG5kcml2ZXJzL3J0Yy9LY29uZmlnLTIxMzctXG5kcml2ZXJzL3J0Yy9LY29uZmlnOjIxMzg6Y29uZmlnIFJUQ19EUlZfQU1MT0dJQ19BNFxuZHJpdmVycy9ydGMvS2NvbmZpZy0yMTM5LVx0dHJpc3RhdGUgXCYjMzQ7QW1sb2dpYyBSVENcJiMzNDtcbi0tXG5kcml2ZXJzL3MzOTAvY2hhci9LY29uZmlnPTk5PWNvbmZpZyBTMzkwX1RBUEVcbi0tXG5kcml2ZXJzL3MzOTAvY2hhci9LY29uZmlnLTEwOC1cbmRyaXZlcnMvczM5MC9jaGFyL0tjb25maWc6MTA5OmNvbmZpZyBWTUxPR1JEUlxuZHJpdmVycy9zMzkwL2NoYXIvS2NvbmZpZy0xMTAtXHRkZWZfdHJpc3RhdGUgbVxuLS1cbmRyaXZlcnMvc3BpL0tjb25maWc9ODY9Y29uZmlnIFNQSV9BTFRFUkFfREZMXG4tLVxuZHJpdmVycy9zcGkvS2NvbmZpZy05NC1cbmRyaXZlcnMvc3BpL0tjb25maWc6OTU6Y29uZmlnIFNQSV9BTUxPR0lDX1NQSUZDX0ExXG5kcml2ZXJzL3NwaS9LY29uZmlnLTk2LVx0dHJpc3RhdGUgXCYjMzQ7QW1sb2dpYyBBMSBTUElGQyBjb250cm9sbGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9zcGkvS2NvbmZpZy0xMDEtXG5kcml2ZXJzL3NwaS9LY29uZmlnOjEwMjpjb25maWcgU1BJX0FNTE9HSUNfU1BJRkNfQTRcbmRyaXZlcnMvc3BpL0tjb25maWctMTAzLVx0dHJpc3RhdGUgXCYjMzQ7QW1sb2dpYyBBNCBTUEkgRmxhc2ggY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvc3BpL0tjb25maWctMTExLVxuZHJpdmVycy9zcGkvS2NvbmZpZzoxMTI6Y29uZmlnIFNQSV9BTUxPR0lDX1NQSVNHXG5kcml2ZXJzL3NwaS9LY29uZmlnLTExMy1cdHRyaXN0YXRlIFwmIzM0O0FtbG9naWMgU1BJU0cgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvdGhlcm1hbC9LY29uZmlnPTQzMz1lbmRtZW51XG5kcml2ZXJzL3RoZXJtYWwvS2NvbmZpZy00MzQtXG5kcml2ZXJzL3RoZXJtYWwvS2NvbmZpZzo0MzU6Y29uZmlnIEFNTE9HSUNfVEhFUk1BTFxuZHJpdmVycy90aGVybWFsL0tjb25maWctNDM2LVx0dHJpc3RhdGUgXCYjMzQ7QW1sb2dpYyBUaGVybWFsIFN1cHBvcnRcJiMzNDtcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaD0xNj1lbnVtIHtcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC01MS1cdCAqIHRoZSByZXN1bHRzIG9mIGF1dG9uZWdvdGF0aW9uIChpZiBNTE9fUEFVU0VfQU4gaXMgc2V0KSBvciB1c2VyXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo1MjpcdCAqIGNvbmZpZ3VyYXRpb24gKGlmIE1MT19QQVVTRV9BTiBpcyBub3Qgc2V0KS5cbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTUzLVx0ICpcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTEzMzMtICpcdHNldHVwIGxpbmtzIGR1ZSB0byBBUCBNTEQgcmVtb3ZpbmcgdGhlIGNvcnJlc3BvbmRpbmcgYWZmaWxpYXRlZCBBUHMgd2l0aFxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaDoxMzM0OiAqXHRNdWx0aS1MaW5rIHJlY29uZmlndXJhdGlvbi4gJU5MODAyMTFfQVRUUl9NTE9fTElOS1MgaXMgdXNlZCB0byBwcm92aWRlXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTEzMzUtICpcdGluZm9ybWF0aW9uIGFib3V0IHRoZSByZW1vdmVkIFNUQSBNTEQgc2V0dXAgbGlua3MuXG4tLVxubmV0L2RzYS9wb3J0LmM9MTg0Mj1zdGF0aWMgdm9pZCBkc2Ffc2hhcmVkX3BvcnRfbGlua19kb3duKHN0cnVjdCBkc2FfcG9ydCAqZHApXG4tLVxubmV0L2RzYS9wb3J0LmMtMTg0Ni1cdGlmIChkcy1cdTAwM2VwaHlsaW5rX21hY19vcHMgXHUwMDI2XHUwMDI2IGRzLVx1MDAzZXBoeWxpbmtfbWFjX29wcy1cdTAwM2VtYWNfbGlua19kb3duKVxubmV0L2RzYS9wb3J0LmM6MTg0NzpcdFx0ZHMtXHUwMDNlcGh5bGlua19tYWNfb3BzLVx1MDAzZW1hY19saW5rX2Rvd24oXHUwMDI2ZHAtXHUwMDNlcGxfY29uZmlnLCBNTE9fQU5fRklYRUQsXG5uZXQvZHNhL3BvcnQuYy0xODQ4LVx0XHRcdFx0XHRcdCAgIFBIWV9JTlRFUkZBQ0VfTU9ERV9OQSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTU6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1NzMKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTUxPIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gTXVsdGktTGluayBPcGVyYXRpb24gKE1MTykgd2l0aGluIHRoZSBMaW51eCB3aXJlbGVzcyBzdGFjay4gUmlnaHQgbm93LCBJJiMzOTttIHRoaW5raW5nLCAmIzM0O05vIHNwZWNpZmljIE1MTyBjb25maWd1cmF0aW9uIGlzIGp1bXBpbmcgb3V0IGF0IG1lOyBpdCBzZWVtcyB0byBiZSBoYW5kbGVkIGFzIGFuIGludGVncmFsIHBhcnQgb2YgbWFjODAyMTEuJiMzNDsgSSBzaG91bGQgZG91YmxlLWNoZWNrIHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGVyZSBpc24mIzM5O3Qgc29tZSBoaWRkZW4gc2V0dGluZyBvciBzdWJ0bGUga25vYiBzb21ld2hlcmUgZWxzZSBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlcyB0aGF0IEkmIzM5O20gbWlzc2luZy4KCkdvb2QsIEkgY29uZmlybWVkIHRoYXQgYE1BQzgwMjExYCBhbmQgcG90ZW50aWFsbHkgYE1BQzgwMjExX0hXU0lNYCBhcmUgbGlrZWx5IHN1ZmZpY2llbnQgZm9yIGluaXRpYWwgZW5hYmxpbmcuIE5vdywgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGFzc29jaWF0aW9uIHByb2Nlc3MgaW50ZXJhY3RzIHdpdGggTUxPLCBJJiMzOTttIGdvaW5nIHRvIGRlbHZlIGludG8gdGhlIGBpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmtgIGZ1bmN0aW9uIGxvY2F0ZWQgaW4gYG5ldC9tYWM4MDIxMS9tbG1lLmNgLiBJJiMzOTttIGhvcGluZyB0byBzcG90IHNvbWUgcmVsYXRlZCBmdW5jdGlvbiBjYWxscyBvciBwYXJhbWV0ZXJzLiBIb3BlZnVsbHkgdGhlcmUgYXJlIHNvbWUgY2x1ZXMgaW4gdGhlIGxpbmsgY29uZmlndXJhdGlvbi4gRnJvbSB0aGVyZSwgSSBjYW4gZGV0ZXJtaW5lIHRoZSByb2xlIE1MTyBwbGF5cyBpbiB0aGlzIGNydWNpYWwgc3RlcCBvZiB0aGUgY29ubmVjdGlvbiBwcm9jZWR1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDE1OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9hc3NvY19jb25maWdfbGluayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvbWxtZS5jPTU3ODE9c3RhdGljIHZvaWQgaWVlZTgwMjExX2VwY3NfdGVhcmRvd24oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy01ODQ1LVxubmV0L21hYzgwMjExL21sbWUuYzo1ODQ2OnN0YXRpYyBib29sIGllZWU4MDIxMV9hc3NvY19jb25maWdfbGluayhzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNTg0Ny1cdFx0XHRcdFx0c3RydWN0IGxpbmtfc3RhX2luZm8gKmxpbmtfc3RhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9NjkzNz1zdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2Nfc3VjY2VzcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcwNzItXG5uZXQvbWFjODAyMTEvbWxtZS5jOjcwNzM6XHRcdGlmICghaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rKGxpbmssIGxpbmtfc3RhLFxubmV0L21hYzgwMjExL21sbWUuYy03MDc0LVx0XHRcdFx0XHRcdCBhc3NvY19kYXRhLVx1MDAzZWxpbmtbbGlua19pZF0uYnNzLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTA4ODE9aWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy0xMTA1NS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTEwNTY6XHRcdGlmICghaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rKGxpbmssIGxpbmtfc3RhLFxubmV0L21hYzgwMjExL21sbWUuYy0xMTA1Ny1cdFx0XHRcdFx0XHQgYWRkX2xpbmtzX2RhdGEtXHUwMDNlbGlua1tsaW5rX2lkXS5ic3MsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDE1OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNDIxCgkJCQkJCQlvdXRwdXQ6IDE5OAoJCQkJCQkJdGhvdWdodHM6IDgxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbiBhbmQgQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7dmUgaWRlbnRpZmllZCBgaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rYCBhcyBhIGtleSBmdW5jdGlvbiB0byBmb2N1cyBvbiBmb3IgZnV6emluZy4gSSYjMzk7bSBhbHNvIHB1dHRpbmcgYGllZWU4MDIxMV9hc3NvY19zdWNjZXNzYCBhbmQgYGllZWU4MDIxMV9wcm9jZXNzX21sX3JlY29uZl9yZXNwYCBvbiB0aGUgcmFkYXIsIGdpdmVuIHRoZWlyIHBvdGVudGlhbCBpbnRlcmFjdGlvbi4gVGhlIHByaW1hcnkgY29uZmlncyBJJiMzOTttIGludGVyZXN0ZWQgaW4gYXJlIGBNQUM4MDIxMWAgYW5kIGBNQUM4MDIxMV9IV1NJTWAuIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBNQUM4MDIxMV9IV1NJTWAgaXMsIGFzIGV4cGVjdGVkLCB0aGUgc2ltdWxhdGVkIHJhZGlvIGVudmlyb25tZW50IGZvciBtYWM4MDIxMSwgbWFraW5nIGl0IHBlcmZlY3QgZm9yIHRoaXMga2luZCBvZiB0ZXN0aW5nLgoKTm93LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBwYXRjaC4gSXQgc2VlbXMgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBsaWVzIGluIGVycm9yIGhhbmRsaW5nIHdpdGhpbiB0aGUgYXNzb2NpYXRpb24gcmVzcG9uc2UgcHJvY2Vzc2luZywgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gTXVsdGktTGluayAoTUwpIGVsZW1lbnRzLiBUaGUgb3JpZ2luYWwgY29kZSYjMzk7cyBsb2dpYyBpcyBiZWluZyB0aWdodGVuZWQgdXA7IGluIHBhcnRpY3VsYXIsIHRoZXJlJiMzOTtzIGEgbW9yZSBncmFudWxhciBjaGVjayBmb3IgdGhlIGBic3NfcGFyYW1fY2hfY250YCBmaWVsZCwgYWxvbmcgd2l0aCBzZXZlcmFsIGBsaW5rX2luZm9gIGFuZCBgc2RhdGFfaW5mb2AgbWVzc2FnZXMuIFRoZSBrZXkgY2hhbmdlIGlzIHRoYXQgaXQgbm93IHZlcmlmaWVzIHRoZSBwcmVzZW5jZSBvZiAgYElFRUU4MDIxMV9NTEVfU1RBX0NPTlRST0xfQlNTX1BBUkFNX0NIQU5HRV9DTlRfUFJFU0VOVGAgdXNpbmcgYGNwdV90b19sZTE2YCBhbmQgZXh0cmFjdHMgdGhlIGNvdW50IGRpZmZlcmVudGx5LCBkZXBlbmRpbmcgb24gd2hldGhlciBpdCYjMzk7cyBwcmVzZW50IGluIGEgcGVyLVNUQSBwcm9maWxlIG9yIHRoZSBiYXNpYyBNTCBlbGVtZW50LiBUaGlzIGNvdWxkIGRlZmluaXRlbHkgaW50cm9kdWNlIGludGVyZXN0aW5nIGVkZ2UgY2FzZXMgYW5kIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIFRoZSBjb2RlIGFsc28gYXBwZWFycyB0byBwYXJzZSBhbmQgaGFuZGxlIGBic3NfcGFyYW1fY2hfY250YCBmcm9tIGRpZmZlcmVudCBsb2NhdGlvbnMgZGVwZW5kaW5nIG9uIHdoZXRoZXIgaXQmIzM5O3MgaW4gdGhlIHBlci1TVEEgcHJvZmlsZSBvciB0aGUgbWFpbiBNTCBlbGVtZW50LiBUaGlzIGNvdWxkIGFsc28gYmUgYSBwbGFjZSB0byBpbnRyb2R1Y2UgZnV6emluZyBpbnB1dHMuCgpHaXZlbiB0aGVzZSBjaGFuZ2VzLCBlc3BlY2lhbGx5IHRoZSBhZGRlZCBjaGVja3MgYW5kIHBhcnNpbmcgb2YgTUwgZWxlbWVudHMsIHRoaXMgbG9va3MgbGlrZSBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gSSB3aWxsIGNhbGwgYHNldC1yZXN1bHRzYCBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDE1OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9hc3NvY19jb25maWdfbGluayYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfYXNzb2Nfc3VjY2VzcyYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfcHJvY2Vzc19tbF9yZWNvbmZfcmVzcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFyc2luZyBsb2dpYyBvZiBNdWx0aS1MaW5rIChNTCkgZWxlbWVudHMgaW4gODAyLjExIGFzc29jaWF0aW9uIHJlc3BvbnNlcyB3aXRoaW4gdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gSXQgY2hhbmdlcyBob3cgdGhlIEJTUyBwYXJhbWV0ZXIgY2hhbmdlIGNvdW50IGlzIGV4dHJhY3RlZCBhbmQgaGFuZGxlcyBtaXNzaW5nIG9yIG1hbGZvcm1lZCBlbGVtZW50cy4gVGhpcyBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY29yZSBsb2dpYyBmb3IgV2ktRmkgNyAoODAyLjExYmUpIE11bHRpLUxpbmsgT3BlcmF0aW9uIChNTE8pIGFuZCBjYW4gYmUgdGVzdGVkIHZpYSBtYWM4MDIxMV9od3NpbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmsmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX2Fzc29jX3N1Y2Nlc3MmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3AmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhcnNpbmcgbG9naWMgb2YgTXVsdGktTGluayAoTUwpIGVsZW1lbnRzIGluIDgwMi4xMSBhc3NvY2lhdGlvbiByZXNwb25zZXMgd2l0aGluIHRoZSBtYWM4MDIxMSBzdWJzeXN0ZW0uIEl0IGNoYW5nZXMgaG93IHRoZSBCU1MgcGFyYW1ldGVyIGNoYW5nZSBjb3VudCBpcyBleHRyYWN0ZWQgYW5kIGhhbmRsZXMgbWlzc2luZyBvciBtYWxmb3JtZWQgZWxlbWVudHMuIFRoaXMgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvcmUgbG9naWMgZm9yIFdpLUZpIDcgKDgwMi4xMWJlKSBNdWx0aS1MaW5rIE9wZXJhdGlvbiAoTUxPKSBhbmQgY2FuIGJlIHRlc3RlZCB2aWEgbWFjODAyMTFfaHdzaW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNTozNjoyMi45MDMwMzE5NTNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjYxOTk4NTkyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmtcIixcbiAgICBcImllZWU4MDIxMV9hc3NvY19zdWNjZXNzXCIsXG4gICAgXCJpZWVlODAyMTFfcHJvY2Vzc19tbF9yZWNvbmZfcmVzcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwYXJzaW5nIGxvZ2ljIG9mIE11bHRpLUxpbmsgKE1MKSBlbGVtZW50cyBpbiA4MDIuMTEgYXNzb2NpYXRpb24gcmVzcG9uc2VzIHdpdGhpbiB0aGUgbWFjODAyMTEgc3Vic3lzdGVtLiBJdCBjaGFuZ2VzIGhvdyB0aGUgQlNTIHBhcmFtZXRlciBjaGFuZ2UgY291bnQgaXMgZXh0cmFjdGVkIGFuZCBoYW5kbGVzIG1pc3Npbmcgb3IgbWFsZm9ybWVkIGVsZW1lbnRzLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb3JlIGxvZ2ljIGZvciBXaS1GaSA3ICg4MDIuMTFiZSkgTXVsdGktTGluayBPcGVyYXRpb24gKE1MTykgYW5kIGNhbiBiZSB0ZXN0ZWQgdmlhIG1hYzgwMjExX2h3c2ltLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNTozNjoyMi45MDMwMzg4MjNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxMzA3NzM1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGI3NTVlNmU0ODM0YjcxYzg1ODE3MDNkNzY2NDIwNjdjY2NhMWVjM2FcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMTU6MzY6MjEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL21sbWUuYyBiL25ldC9tYWM4MDIxMS9tbG1lLmNcXG5pbmRleCA5ZTkyMzM3YmI2ZjllNS4uZjExNzJhOTUwMjg0ZjAgMTAwNjQ0XFxuLS0tIGEvbmV0L21hYzgwMjExL21sbWUuY1xcbisrKyBiL25ldC9tYWM4MDIxMS9tbG1lLmNcXG5AQCAtNTg3MSw4ICs1ODcxLDYgQEAgc3RhdGljIGJvb2wgaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbiBcXHRjb25zdCBzdHJ1Y3QgY2ZnODAyMTFfYnNzX2llcyAqYnNzX2llcyA9IE5VTEw7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kO1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMl8xMV9lbGVtcyAqZWxlbXM7XFxuLVxcdGNvbnN0IF9fbGUxNiBwcm9mX2Jzc19wYXJhbV9jaF9wcmVzZW50ID1cXG4tXFx0XFx0Y3B1X3RvX2xlMTYoSUVFRTgwMjExX01MRV9TVEFfQ09OVFJPTF9CU1NfUEFSQU1fQ0hBTkdFX0NOVF9QUkVTRU5UKTtcXG4gXFx0dTE2IGNhcGFiX2luZm87XFxuIFxcdGJvb2wgcmV0O1xcbiBcXG5AQCAtNTg4OCwyMCArNTg4NiwxMyBAQCBzdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmsoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXFxuIFxcdFxcdCAqIHN1Y2Nlc3NmdWwsIHNvIHNldCB0aGUgc3RhdHVzIGRpcmVjdGx5IHRvIHN1Y2Nlc3NcXG4gXFx0XFx0ICovXFxuIFxcdFxcdGFzc29jX2RhdGEtXFx1MDAzZWxpbmtbbGlua19pZF0uc3RhdHVzID0gV0xBTl9TVEFUVVNfU1VDQ0VTUztcXG4tXFx0XFx0aWYgKGVsZW1zLVxcdTAwM2VtbF9iYXNpYykge1xcbi1cXHRcXHRcXHRpbnQgYnNzX3BhcmFtX2NoX2NudCA9XFxuLVxcdFxcdFxcdFxcdGllZWU4MDIxMV9tbGVfZ2V0X2Jzc19wYXJhbV9jaF9jbnQoKGNvbnN0IHZvaWQgKillbGVtcy1cXHUwMDNlbWxfYmFzaWMpO1xcbi1cXG4tXFx0XFx0XFx0aWYgKGJzc19wYXJhbV9jaF9jbnQgXFx1MDAzYyAwKSB7XFxuLVxcdFxcdFxcdFxcdHJldCA9IGZhbHNlO1xcbi1cXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4tXFx0XFx0XFx0fVxcbi1cXHRcXHRcXHRic3NfY29uZi1cXHUwMDNlYnNzX3BhcmFtX2NoX2NudCA9IGJzc19wYXJhbV9jaF9jbnQ7XFxuLVxcdFxcdFxcdGJzc19jb25mLVxcdTAwM2Vic3NfcGFyYW1fY2hfY250X2xpbmtfaWQgPSBsaW5rX2lkO1xcbi1cXHRcXHR9XFxuLVxcdH0gZWxzZSBpZiAoZWxlbXMtXFx1MDAzZXBhcnNlX2Vycm9yIFxcdTAwMjYgSUVFRTgwMjExX1BBUlNFX0VSUl9EVVBfTkVTVF9NTF9CQVNJQyB8fFxcbi1cXHRcXHQgICAhZWxlbXMtXFx1MDAzZXByb2YgfHxcXG4tXFx0XFx0ICAgIShlbGVtcy1cXHUwMDNlcHJvZi1cXHUwMDNlY29udHJvbCBcXHUwMDI2IHByb2ZfYnNzX3BhcmFtX2NoX3ByZXNlbnQpKSB7XFxuK1xcdH0gZWxzZSBpZiAoZWxlbXMtXFx1MDAzZXBhcnNlX2Vycm9yIFxcdTAwMjYgSUVFRTgwMjExX1BBUlNFX0VSUl9EVVBfTkVTVF9NTF9CQVNJQykge1xcbitcXHRcXHRzZGF0YV9pbmZvKHNkYXRhLFxcbitcXHRcXHRcXHQgICBcXFwiYXNzb2NpYXRpb24gcmVzcG9uc2UgaGFkIG5lc3RlZCBtdWx0aS1saW5rIGVsZW1lbnRcXFxcblxcXCIpO1xcbitcXHRcXHRyZXQgPSBmYWxzZTtcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcdH0gZWxzZSBpZiAoIWVsZW1zLVxcdTAwM2Vwcm9mKSB7XFxuK1xcdFxcdGxpbmtfaW5mbyhsaW5rLCBcXFwibGluayBtaXNzaW5nIGZyb20gYXNzb2NpYXRpb24gcmVzcG9uc2VcXFxcblxcXCIpO1xcbiBcXHRcXHRyZXQgPSBmYWxzZTtcXG4gXFx0XFx0Z290byBvdXQ7XFxuIFxcdH0gZWxzZSB7XFxuQEAgLTU5MTUsMTAgKzU5MDYsNiBAQCBzdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmsoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRjYXBhYl9pbmZvID0gZ2V0X3VuYWxpZ25lZF9sZTE2KHB0cik7XFxuIFxcdFxcdGFzc29jX2RhdGEtXFx1MDAzZWxpbmtbbGlua19pZF0uc3RhdHVzID0gZ2V0X3VuYWxpZ25lZF9sZTE2KHB0ciArIDIpO1xcbi1cXHRcXHRic3NfcGFyYW1fY2hfY250ID1cXG4tXFx0XFx0XFx0aWVlZTgwMjExX21sZV9iYXNpY19zdGFfcHJvZl9ic3NfcGFyYW1fY2hfY250KGVsZW1zLVxcdTAwM2Vwcm9mKTtcXG4tXFx0XFx0YnNzX2NvbmYtXFx1MDAzZWJzc19wYXJhbV9jaF9jbnQgPSBic3NfcGFyYW1fY2hfY250O1xcbi1cXHRcXHRic3NfY29uZi1cXHUwMDNlYnNzX3BhcmFtX2NoX2NudF9saW5rX2lkID0gbGlua19pZDtcXG4gXFxuIFxcdFxcdGlmIChhc3NvY19kYXRhLVxcdTAwM2VsaW5rW2xpbmtfaWRdLnN0YXR1cyAhPSBXTEFOX1NUQVRVU19TVUNDRVNTKSB7XFxuIFxcdFxcdFxcdGxpbmtfaW5mbyhsaW5rLCBcXFwiYXNzb2NpYXRpb24gcmVzcG9uc2Ugc3RhdHVzIGNvZGU9JXVcXFxcblxcXCIsXFxuQEAgLTU5MjYsNiArNTkxMywzMiBAQCBzdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmsoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXFxuIFxcdFxcdFxcdHJldCA9IHRydWU7XFxuIFxcdFxcdFxcdGdvdG8gb3V0O1xcbiBcXHRcXHR9XFxuK1xcbitcXHRcXHRpZiAoIShlbGVtcy1cXHUwMDNlcHJvZi1cXHUwMDNlY29udHJvbCBcXHUwMDI2XFxuK1xcdFxcdCAgICAgIGNwdV90b19sZTE2KElFRUU4MDIxMV9NTEVfU1RBX0NPTlRST0xfQlNTX1BBUkFNX0NIQU5HRV9DTlRfUFJFU0VOVCkpKSB7XFxuK1xcdFxcdFxcdGxpbmtfaW5mbyhsaW5rLFxcbitcXHRcXHRcXHRcXHQgIFxcXCJwZXItU1RBIHByb2ZpbGUgbWlzc2luZyBCU1MgcGFyYW1ldGVyIGNoYW5nZSBjb3VudFxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdHJldCA9IGZhbHNlO1xcbitcXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0fVxcbitcXHRcXHRic3NfcGFyYW1fY2hfY250ID1cXG4rXFx0XFx0XFx0aWVlZTgwMjExX21sZV9iYXNpY19zdGFfcHJvZl9ic3NfcGFyYW1fY2hfY250KGVsZW1zLVxcdTAwM2Vwcm9mKTtcXG4rXFx0XFx0YnNzX2NvbmYtXFx1MDAzZWJzc19wYXJhbV9jaF9jbnQgPSBic3NfcGFyYW1fY2hfY250O1xcbitcXHRcXHRic3NfY29uZi1cXHUwMDNlYnNzX3BhcmFtX2NoX2NudF9saW5rX2lkID0gbGlua19pZDtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKGxpbmtfaWQgPT0gYXNzb2NfZGF0YS1cXHUwMDNlYXNzb2NfbGlua19pZCBcXHUwMDI2XFx1MDAyNiBlbGVtcy1cXHUwMDNlbWxfYmFzaWMpIHtcXG4rXFx0XFx0aW50IGJzc19wYXJhbV9jaF9jbnQgPVxcbitcXHRcXHRcXHRpZWVlODAyMTFfbWxlX2dldF9ic3NfcGFyYW1fY2hfY250KChjb25zdCB2b2lkICopZWxlbXMtXFx1MDAzZW1sX2Jhc2ljKTtcXG4rXFxuK1xcdFxcdGlmIChic3NfcGFyYW1fY2hfY250IFxcdTAwM2MgMCkge1xcbitcXHRcXHRcXHRzZGF0YV9pbmZvKHNkYXRhLFxcbitcXHRcXHRcXHRcXHQgICBcXFwiTm8gQlNTIHBhcmFtZXRlciBjaGFuZ2UgY291bnQgaW4gYXNzb2MgcmVzcG9uc2VcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRyZXQgPSBmYWxzZTtcXG4rXFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdH1cXG4rXFx0XFx0YnNzX2NvbmYtXFx1MDAzZWJzc19wYXJhbV9jaF9jbnQgPSBic3NfcGFyYW1fY2hfY250O1xcbitcXHRcXHRic3NfY29uZi1cXHUwMDNlYnNzX3BhcmFtX2NoX2NudF9saW5rX2lkID0gbGlua19pZDtcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKCFpc19zMWcgXFx1MDAyNlxcdTAwMjYgIWVsZW1zLVxcdTAwM2VzdXBwX3JhdGVzKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDE1OjM2OjIzLjYxNzExNTYxNFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzU5MDU4OTE3MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rXCIsXG4gICAgXCJpZWVlODAyMTFfYXNzb2Nfc3VjY2Vzc1wiLFxuICAgIFwiaWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3BcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFyc2luZyBsb2dpYyBvZiBNdWx0aS1MaW5rIChNTCkgZWxlbWVudHMgaW4gODAyLjExIGFzc29jaWF0aW9uIHJlc3BvbnNlcyB3aXRoaW4gdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gSXQgY2hhbmdlcyBob3cgdGhlIEJTUyBwYXJhbWV0ZXIgY2hhbmdlIGNvdW50IGlzIGV4dHJhY3RlZCBhbmQgaGFuZGxlcyBtaXNzaW5nIG9yIG1hbGZvcm1lZCBlbGVtZW50cy4gVGhpcyBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY29yZSBsb2dpYyBmb3IgV2ktRmkgNyAoODAyLjExYmUpIE11bHRpLUxpbmsgT3BlcmF0aW9uIChNTE8pIGFuZCBjYW4gYmUgdGVzdGVkIHZpYSBtYWM4MDIxMV9od3NpbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiNzU1ZTZlNDgzNGI3MWM4NTgxNzAzZDc2NjQyMDY3Y2NjYTFlYzNhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMTU6MzY6MjEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvbWxtZS5jIGIvbmV0L21hYzgwMjExL21sbWUuY1xuaW5kZXggOWU5MjMzN2JiNmY5ZTUuLmYxMTcyYTk1MDI4NGYwIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL21sbWUuY1xuKysrIGIvbmV0L21hYzgwMjExL21sbWUuY1xuQEAgLTU4NzEsOCArNTg3MSw2IEBAIHN0YXRpYyBib29sIGllZWU4MDIxMV9hc3NvY19jb25maWdfbGluayhzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbiBcdGNvbnN0IHN0cnVjdCBjZmc4MDIxMV9ic3NfaWVzICpic3NfaWVzID0gTlVMTDtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kO1xuIFx0c3RydWN0IGllZWU4MDJfMTFfZWxlbXMgKmVsZW1zO1xuLVx0Y29uc3QgX19sZTE2IHByb2ZfYnNzX3BhcmFtX2NoX3ByZXNlbnQgPVxuLVx0XHRjcHVfdG9fbGUxNihJRUVFODAyMTFfTUxFX1NUQV9DT05UUk9MX0JTU19QQVJBTV9DSEFOR0VfQ05UX1BSRVNFTlQpO1xuIFx0dTE2IGNhcGFiX2luZm87XG4gXHRib29sIHJldDtcbiBcbkBAIC01ODg4LDIwICs1ODg2LDEzIEBAIHN0YXRpYyBib29sIGllZWU4MDIxMV9hc3NvY19jb25maWdfbGluayhzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbiBcdFx0ICogc3VjY2Vzc2Z1bCwgc28gc2V0IHRoZSBzdGF0dXMgZGlyZWN0bHkgdG8gc3VjY2Vzc1xuIFx0XHQgKi9cbiBcdFx0YXNzb2NfZGF0YS1cdTAwM2VsaW5rW2xpbmtfaWRdLnN0YXR1cyA9IFdMQU5fU1RBVFVTX1NVQ0NFU1M7XG4tXHRcdGlmIChlbGVtcy1cdTAwM2VtbF9iYXNpYykge1xuLVx0XHRcdGludCBic3NfcGFyYW1fY2hfY250ID1cbi1cdFx0XHRcdGllZWU4MDIxMV9tbGVfZ2V0X2Jzc19wYXJhbV9jaF9jbnQoKGNvbnN0IHZvaWQgKillbGVtcy1cdTAwM2VtbF9iYXNpYyk7XG4tXG4tXHRcdFx0aWYgKGJzc19wYXJhbV9jaF9jbnQgXHUwMDNjIDApIHtcbi1cdFx0XHRcdHJldCA9IGZhbHNlO1xuLVx0XHRcdFx0Z290byBvdXQ7XG4tXHRcdFx0fVxuLVx0XHRcdGJzc19jb25mLVx1MDAzZWJzc19wYXJhbV9jaF9jbnQgPSBic3NfcGFyYW1fY2hfY250O1xuLVx0XHRcdGJzc19jb25mLVx1MDAzZWJzc19wYXJhbV9jaF9jbnRfbGlua19pZCA9IGxpbmtfaWQ7XG4tXHRcdH1cbi1cdH0gZWxzZSBpZiAoZWxlbXMtXHUwMDNlcGFyc2VfZXJyb3IgXHUwMDI2IElFRUU4MDIxMV9QQVJTRV9FUlJfRFVQX05FU1RfTUxfQkFTSUMgfHxcbi1cdFx0ICAgIWVsZW1zLVx1MDAzZXByb2YgfHxcbi1cdFx0ICAgIShlbGVtcy1cdTAwM2Vwcm9mLVx1MDAzZWNvbnRyb2wgXHUwMDI2IHByb2ZfYnNzX3BhcmFtX2NoX3ByZXNlbnQpKSB7XG4rXHR9IGVsc2UgaWYgKGVsZW1zLVx1MDAzZXBhcnNlX2Vycm9yIFx1MDAyNiBJRUVFODAyMTFfUEFSU0VfRVJSX0RVUF9ORVNUX01MX0JBU0lDKSB7XG4rXHRcdHNkYXRhX2luZm8oc2RhdGEsXG4rXHRcdFx0ICAgXCJhc3NvY2lhdGlvbiByZXNwb25zZSBoYWQgbmVzdGVkIG11bHRpLWxpbmsgZWxlbWVudFxcblwiKTtcbitcdFx0cmV0ID0gZmFsc2U7XG4rXHRcdGdvdG8gb3V0O1xuK1x0fSBlbHNlIGlmICghZWxlbXMtXHUwMDNlcHJvZikge1xuK1x0XHRsaW5rX2luZm8obGluaywgXCJsaW5rIG1pc3NpbmcgZnJvbSBhc3NvY2lhdGlvbiByZXNwb25zZVxcblwiKTtcbiBcdFx0cmV0ID0gZmFsc2U7XG4gXHRcdGdvdG8gb3V0O1xuIFx0fSBlbHNlIHtcbkBAIC01OTE1LDEwICs1OTA2LDYgQEAgc3RhdGljIGJvb2wgaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxuIFx0XHQgKi9cbiBcdFx0Y2FwYWJfaW5mbyA9IGdldF91bmFsaWduZWRfbGUxNihwdHIpO1xuIFx0XHRhc3NvY19kYXRhLVx1MDAzZWxpbmtbbGlua19pZF0uc3RhdHVzID0gZ2V0X3VuYWxpZ25lZF9sZTE2KHB0ciArIDIpO1xuLVx0XHRic3NfcGFyYW1fY2hfY250ID1cbi1cdFx0XHRpZWVlODAyMTFfbWxlX2Jhc2ljX3N0YV9wcm9mX2Jzc19wYXJhbV9jaF9jbnQoZWxlbXMtXHUwMDNlcHJvZik7XG4tXHRcdGJzc19jb25mLVx1MDAzZWJzc19wYXJhbV9jaF9jbnQgPSBic3NfcGFyYW1fY2hfY250O1xuLVx0XHRic3NfY29uZi1cdTAwM2Vic3NfcGFyYW1fY2hfY250X2xpbmtfaWQgPSBsaW5rX2lkO1xuIFxuIFx0XHRpZiAoYXNzb2NfZGF0YS1cdTAwM2VsaW5rW2xpbmtfaWRdLnN0YXR1cyAhPSBXTEFOX1NUQVRVU19TVUNDRVNTKSB7XG4gXHRcdFx0bGlua19pbmZvKGxpbmssIFwiYXNzb2NpYXRpb24gcmVzcG9uc2Ugc3RhdHVzIGNvZGU9JXVcXG5cIixcbkBAIC01OTI2LDYgKzU5MTMsMzIgQEAgc3RhdGljIGJvb2wgaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxuIFx0XHRcdHJldCA9IHRydWU7XG4gXHRcdFx0Z290byBvdXQ7XG4gXHRcdH1cbitcbitcdFx0aWYgKCEoZWxlbXMtXHUwMDNlcHJvZi1cdTAwM2Vjb250cm9sIFx1MDAyNlxuK1x0XHQgICAgICBjcHVfdG9fbGUxNihJRUVFODAyMTFfTUxFX1NUQV9DT05UUk9MX0JTU19QQVJBTV9DSEFOR0VfQ05UX1BSRVNFTlQpKSkge1xuK1x0XHRcdGxpbmtfaW5mbyhsaW5rLFxuK1x0XHRcdFx0ICBcInBlci1TVEEgcHJvZmlsZSBtaXNzaW5nIEJTUyBwYXJhbWV0ZXIgY2hhbmdlIGNvdW50XFxuXCIpO1xuK1x0XHRcdHJldCA9IGZhbHNlO1xuK1x0XHRcdGdvdG8gb3V0O1xuK1x0XHR9XG4rXHRcdGJzc19wYXJhbV9jaF9jbnQgPVxuK1x0XHRcdGllZWU4MDIxMV9tbGVfYmFzaWNfc3RhX3Byb2ZfYnNzX3BhcmFtX2NoX2NudChlbGVtcy1cdTAwM2Vwcm9mKTtcbitcdFx0YnNzX2NvbmYtXHUwMDNlYnNzX3BhcmFtX2NoX2NudCA9IGJzc19wYXJhbV9jaF9jbnQ7XG4rXHRcdGJzc19jb25mLVx1MDAzZWJzc19wYXJhbV9jaF9jbnRfbGlua19pZCA9IGxpbmtfaWQ7XG4rXHR9XG4rXG4rXHRpZiAobGlua19pZCA9PSBhc3NvY19kYXRhLVx1MDAzZWFzc29jX2xpbmtfaWQgXHUwMDI2XHUwMDI2IGVsZW1zLVx1MDAzZW1sX2Jhc2ljKSB7XG4rXHRcdGludCBic3NfcGFyYW1fY2hfY250ID1cbitcdFx0XHRpZWVlODAyMTFfbWxlX2dldF9ic3NfcGFyYW1fY2hfY250KChjb25zdCB2b2lkICopZWxlbXMtXHUwMDNlbWxfYmFzaWMpO1xuK1xuK1x0XHRpZiAoYnNzX3BhcmFtX2NoX2NudCBcdTAwM2MgMCkge1xuK1x0XHRcdHNkYXRhX2luZm8oc2RhdGEsXG4rXHRcdFx0XHQgICBcIk5vIEJTUyBwYXJhbWV0ZXIgY2hhbmdlIGNvdW50IGluIGFzc29jIHJlc3BvbnNlXFxuXCIpO1xuK1x0XHRcdHJldCA9IGZhbHNlO1xuK1x0XHRcdGdvdG8gb3V0O1xuK1x0XHR9XG4rXHRcdGJzc19jb25mLVx1MDAzZWJzc19wYXJhbV9jaF9jbnQgPSBic3NfcGFyYW1fY2hfY250O1xuK1x0XHRic3NfY29uZi1cdTAwM2Vic3NfcGFyYW1fY2hfY250X2xpbmtfaWQgPSBsaW5rX2lkO1xuIFx0fVxuIFxuIFx0aWYgKCFpc19zMWcgXHUwMDI2XHUwMDI2ICFlbGVtcy1cdTAwM2VzdXBwX3JhdGVzKSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNTozNjoyMy42MTcxMTc0MzRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODY4NTEwNjYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYG5ldC9tYWM4MDIxMS9tbG1lLmNgIFBhdGNoKipcblxuT2theSwgc28gSSBoYXZlIGEgcGF0Y2ggdGhhdCdzIHRvdWNoaW5nIGBuZXQvbWFjODAyMTEvbWxtZS5jYC4gUmlnaHQgYXdheSwgdGhhdCBmbGFncyBpdCBhcyBzb21ldGhpbmcgcHJldHR5IGNvcmUgd2l0aGluIHRoZSBtYWM4MDIxMSBzdWJzeXN0ZW0uIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgdG8gYmUgbW9kaWZ5aW5nIHRoZSBgaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rYCBmdW5jdGlvbiwgd2hpY2ggZGVhbHMgd2l0aCBob3cgYGJzc19wYXJhbV9jaF9jbnRgIGlzIGhhbmRsZWQgZHVyaW5nIGFzc29jaWF0aW9uIHJlc3BvbnNlcy4gVGhhdCBzb3VuZHMgbGlrZSBhIGZhaXJseSBsb3ctbGV2ZWwgbmV0d29ya2luZyBkZXRhaWwsIHJlbGF0ZWQgdG8gY2hhbm5lbCBjb25maWd1cmF0aW9uLCB3aGljaCBpcyBwcmV0dHkgaW1wb3J0YW50IGZvciBhIHNvbGlkIGNvbm5lY3Rpb24uXG5cbkdpdmVuIHRoYXQgdGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUsIG15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgYW5kIGltcGFjdC4gSSBuZWVkIHRvIGRpZyBpbnRvIGBpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmtgIGFuZCBzZWUgd2hlcmUgaXQncyBjYWxsZWQgYW5kLCBtb3JlIGltcG9ydGFudGx5LCB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSByZWxldmFudCB0byBpdHMgb3BlcmF0aW9uLiBJJ20gZ29pbmcgdG8gaGF2ZSB0byBkaXZlIGludG8gdGhlIGNhbGwgc2l0ZXMgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUuXG5cblNpbmNlIHRoaXMgaXMgbWFjODAyMTEsIEknbSBnb2luZyB0byBxdWlja2x5IGNvbmZpcm0gdGhhdCBgQ09ORklHX01BQzgwMjExYCBpcyBlbmFibGVkLCB3aGljaCBzaG91bGQgYmUgdGhlIGNhc2UuIE5vdywgdG8gbWFrZSB0aGlzIGVhc2llciBJJ2xsIHVzZSBgZ3JlcHBlcmAgdG8gcXVpY2tseSBsb2NhdGUgYWxsIGluc3RhbmNlcyBvZiBgaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHF1aWNrIG92ZXJ2aWV3IG9mIGhvdyB0aGlzIGZ1bmN0aW9uIGZpdHMgaW50byB0aGUgb3ZlcmFsbCBtYWM4MDIxMSBhcmNoaXRlY3R1cmUsIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gY29uc2lkZXIgd2hlbiBldmFsdWF0aW5nIHRoaXMgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMjYsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNTozNjoyOC40ODU2MzA3MjVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM2Mjk5OTE1MDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9tbG1lLmM9NTc4MT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfZXBjc190ZWFyZG93bihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNTg0NS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjU4NDY6c3RhdGljIGJvb2wgaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNTg0Ny1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgbGlua19zdGFfaW5mbyAqbGlua19zdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTY5Mzc9c3RhdGljIGJvb2wgaWVlZTgwMjExX2Fzc29jX3N1Y2Nlc3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcwNzItXFxubmV0L21hYzgwMjExL21sbWUuYzo3MDczOlxcdFxcdGlmICghaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rKGxpbmssIGxpbmtfc3RhLFxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzA3NC1cXHRcXHRcXHRcXHRcXHRcXHQgYXNzb2NfZGF0YS1cXHUwMDNlbGlua1tsaW5rX2lkXS5ic3MsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTEwODgxPWllZWU4MDIxMV9wcm9jZXNzX21sX3JlY29uZl9yZXNwKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0xMTA1NS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjExMDU2OlxcdFxcdGlmICghaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rKGxpbmssIGxpbmtfc3RhLFxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTEwNTctXFx0XFx0XFx0XFx0XFx0XFx0IGFkZF9saW5rc19kYXRhLVxcdTAwM2VsaW5rW2xpbmtfaWRdLmJzcyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTU6MzY6NDIuMTE1NjI4NDUxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI2OTk3NTU5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE11bHRpLUxpbmsgT3BlcmF0aW9uIChNTE8pIEFzc29jaWF0aW9uIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhlIHN5c3RlbSBoYW5kbGVzIHRoZSBhc3NvY2lhdGlvbiBjb25maWd1cmF0aW9uIGZvciBNdWx0aS1MaW5rIE9wZXJhdGlvbiAoTUxPKSwgc3BlY2lmaWNhbGx5IGluIHRoZSBjb250ZXh0IG9mIDgwMi4xMWJlLCBvciBXaS1GaSA3LiBJdCBzZWVtcyB0aGUgYGllZWU4MDIxMV9hc3NvY19jb25maWdfbGlua2AgZnVuY3Rpb24gaXMgY3J1Y2lhbCBoZXJlLCBhcyBpdCdzIHRyaWdnZXJlZCBmcm9tIGJvdGggYGllZWU4MDIxMV9hc3NvY19zdWNjZXNzYCBhbmQgYGllZWU4MDIxMV9wcm9jZXNzX21sX3JlY29uZl9yZXNwYC4gVGhhdCBtYWtlcyBpdCBhIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIHBpZWNlLCB3aGljaCBpcyBnb29kLiBXZSBrbm93IHRoaXMgaGFuZGxlcyBNTE8uXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlc2UgZnVuY3Rpb25zOiBgaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rYCwgYGllZWU4MDIxMV9hc3NvY19zdWNjZXNzYCwgYW5kIGBpZWVlODAyMTFfcHJvY2Vzc19tbF9yZWNvbmZfcmVzcGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgYW5kIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgaG93IGl0IGFsbCBpbnRlZ3JhdGVzIHdpdGggdGhlIGBNQUM4MDIxMWAgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmVzLlxuXG5Ob3csIEknbSBnb2luZyB0byBkaWcgZGVlcGVyIHRvIHNlZSBpZiBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIGZsYWdzLCBvciBwYXJhbWV0ZXJzIGFyZSB0aWVkIHRvIE1MTyBvciA4MDIuMTFiZS4gVGhhdCdzIHRoZSBrZXk6IHVuZGVyc3RhbmRpbmcgaG93IHRoZSBnZW5lcmFsIGFzc29jaWF0aW9uIGZyYW1ld29yayBpcyAqc3BlY2lhbGl6ZWQqIGZvciB0aGVzZSBuZXdlciBmZWF0dXJlcy4gVGhpcyBuZWVkcyB0byBiZSBjaGVja2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDI3LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDE1OjM2OjQ2LjM4NTYwNjE1OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODcyMzQ4MjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxMVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI6Y29uZmlnIE1BQzgwMjExXFxubmV0L21hYzgwMjExL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xOT1pZiBNQUM4MDIxMSAhPSBuXFxubmV0L21hYzgwMjExL0tjb25maWctMjAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjE6Y29uZmlnIE1BQzgwMjExX0hBU19SQ1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyLVxcdGJvb2xcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMy1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDpjb25maWcgTUFDODAyMTFfUkNfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCIgaWYgRVhQRVJUXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2VcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjQxOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXFxubmV0L21hYzgwMjExL0tjb25maWctNDItXFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz00OD1lbmRjaG9pY2VcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo1MDpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTUxLVxcdHN0cmluZ1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9NTc9Y29tbWVudCBcXFwiU29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNTktXFxubmV0L21hYzgwMjExL0tjb25maWc6NjA6Y29uZmlnIE1BQzgwMjExX0tVTklUX1RFU1RcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIG1hYzgwMjExXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3MDpjb25maWcgTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVxcdGJvb2wgXFxcIkVuYWJsZSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTc4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXFxubmV0L21hYzgwMjExL0tjb25maWctODAtXFx0Ym9vbCBcXFwiRW5hYmxlIExFRCB0cmlnZ2Vyc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjg4OmNvbmZpZyBNQUM4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL0tjb25maWctODktXFx0Ym9vbCBcXFwiRXhwb3J0IG1hYzgwMjExIGludGVybmFscyBpbiBEZWJ1Z0ZTXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6OTc6Y29uZmlnIE1BQzgwMjExX01FU1NBR0VfVFJBQ0lOR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVxcdGJvb2wgXFxcIlRyYWNlIGFsbCBtYWM4MDIxMSBkZWJ1ZyBtZXNzYWdlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwOS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWctMTExLVxcdGJvb2wgXFxcIlNlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTE2OmNvbmZpZyBNQUM4MDIxMV9OT0lOTElORVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cXHRib29sIFxcXCJEbyBub3QgaW5saW5lIFRYL1JYIGhhbmRsZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTMxLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjEzMjpjb25maWcgTUFDODAyMTFfVkVSQk9TRV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cXHRib29sIFxcXCJWZXJib3NlIGRlYnVnZ2luZyBvdXRwdXRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTQ0LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNTQ6Y29uZmlnIE1BQzgwMjExX1NUQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cXHRib29sIFxcXCJWZXJib3NlIHN0YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTYyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2Mzpjb25maWcgTUFDODAyMTFfSFRfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBIVCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzQtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzYtXFx0Ym9vbCBcXFwiVmVyYm9zZSBPQ0IgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE4Njpjb25maWcgTUFDODAyMTFfSUJTU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cXHRib29sIFxcXCJWZXJib3NlIElCU1MgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTk2LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5Nzpjb25maWcgTUFDODAyMTFfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXFx0Ym9vbCBcXFwiVmVyYm9zZSBwb3dlcnNhdmUgbW9kZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMDgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMTAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjIyOmNvbmZpZyBNQUM4MDIxMV9NUEFUSF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMy1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGF0aCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzQtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjM1OmNvbmZpZyBNQUM4MDIxMV9NSFdNUF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggSFdNUCByb3V0aW5nIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0Ny1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0OS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNTk6Y29uZmlnIE1BQzgwMjExX01FU0hfQ1NBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjYwLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBjaGFubmVsIHN3aXRjaCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjktXFxubmV0L21hYzgwMjExL0tjb25maWc6MjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIX1BTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjcxLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwb3dlcnNhdmUgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjgwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4Mi1cXHRib29sIFxcXCJWZXJib3NlIFRETFMgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI5Mzpjb25maWcgTUFDODAyMTFfREVCVUdfQ09VTlRFUlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXFx0Ym9vbCBcXFwiRXh0cmEgc3RhdGlzdGljcyBmb3IgVFgvUlggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMzA3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjMwODpjb25maWcgTUFDODAyMTFfU1RBX0hBU0hfTUFYX1NJWkVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXFx0aW50IFxcXCJTdGF0aW9uIGhhc2ggdGFibGUgbWF4aW11bSBzaXplXFxcIiBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDE1OjM2OjQ5LjI1Nzk2MTE0NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MDI2MzI2NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkluaXRpYWwgQ29uZmlndXJhdGlvbiBDaGVjayoqXG5cbkFscmlnaHQsIHNvIHRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIC0gd2UncmUgZGVhbGluZyB3aXRoIHN0YW5kYXJkIGBNQUM4MDIxMWAgYW5kIGFsc28gdXNpbmcgdGhlIGBNQUM4MDIxMV9IV1NJTWAgY29uZmlndXJhdGlvbiwgd2hpY2ggaXMgdGhlIHNldHVwIEknZCB0eXBpY2FsbHkgZXhwZWN0IGZvciB0ZXN0aW5nLiBObyBzdXJwcmlzZXMgdGhlcmUuIEJ1dCBJIG5lZWQgdG8gZGl2ZSBkZWVwZXIuXG5cbk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gbWFrZSBzdXJlIHdlIGFyZSBub3QgbWlzc2luZyBhbnkgb3RoZXIgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zLiBXZSBjYW4ndCBhc3N1bWUgdGhhdCBvbmx5IHRob3NlIHR3byBjb3ZlciB0aGUgd2hvbGUgbGFuZHNjYXBlLiBMZXQncyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0aGF0IHJlbGF0ZSB0byA4MDIuMTFiZSBmZWF0dXJlcyBvciBNdWx0aS1MaW5rIE9wZXJhdGlvbiAoTUxPKS4gVGhlIGNvbmZpZ3VyYXRpb24gc3BhY2UgYXJvdW5kIHRob3NlIGFyZSBwcmV0dHkgc3BlY2lmaWMsIHNvIGEgc2VhcmNoIGlzIHJlcXVpcmVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHdlJ3JlIG5vdCBvdmVybG9va2luZyBhbnl0aGluZyByZWxldmFudCB0byA4MDIuMTFiZSBvciB0aGUgTUxPIHN1cHBvcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3NjUsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNTozNjo1Mi43NjA1OTY2MDJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMwMDc1OTA1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcuKk1MT1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3BhcmlzYy9LY29uZmlnPTI0OT1jb25maWcgUEFSSVNDX0hVR0VfS0VSTkVMXFxuLS1cXG5hcmNoL3BhcmlzYy9LY29uZmlnLTI1MS1cXG5hcmNoL3BhcmlzYy9LY29uZmlnOjI1Mjpjb25maWcgTUxPTkdDQUxMU1xcbmFyY2gvcGFyaXNjL0tjb25maWctMjUzLVxcdGJvb2wgXFxcIkVuYWJsZSB0aGUgLW1sb25nLWNhbGxzIGNvbXBpbGVyIG9wdGlvbiBmb3IgYmlnIGtlcm5lbHNcXFwiIGlmICFQQVJJU0NfSFVHRV9LRVJORUxcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2FtbG9naWMvS2NvbmZpZzoxOmNvbmZpZyBDUllQVE9fREVWX0FNTE9HSUNfR1hMXFxuZHJpdmVycy9jcnlwdG8vYW1sb2dpYy9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIlN1cHBvcnQgZm9yIGFtbG9naWMgY3J5cHRvZ3JhcGhpYyBvZmZsb2FkZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9hbWxvZ2ljL0tjb25maWctMTctXFxuZHJpdmVycy9jcnlwdG8vYW1sb2dpYy9LY29uZmlnOjE4OmNvbmZpZyBDUllQVE9fREVWX0FNTE9HSUNfR1hMX0RFQlVHXFxuZHJpdmVycy9jcnlwdG8vYW1sb2dpYy9LY29uZmlnLTE5LVxcdGJvb2wgXFxcIkVuYWJsZSBhbWxvZ2ljIHN0YXRzXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmM9NjgwMD1zdGF0aWMgdm9pZCBtdnBwMl9hY3BpX3N0YXJ0KHN0cnVjdCBtdnBwMl9wb3J0ICpwb3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmMtNjgxMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYzo2ODEzOlxcdG12cHAyX21hY19wcmVwYXJlKFxcdTAwMjZwb3J0LVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgTUxPX0FOX0lOQkFORCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy02ODE0LVxcdFxcdFxcdCAgcG9ydC1cXHUwMDNlcGh5X2ludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmM6NjgxNTpcXHRtdnBwMl9tYWNfY29uZmlnKFxcdTAwMjZwb3J0LVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgTUxPX0FOX0lOQkFORCwgXFx1MDAyNnN0YXRlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy02ODE2LVxcdHBjcy1cXHUwMDNlb3BzLVxcdTAwM2VwY3NfY29uZmlnKHBjcywgUEhZTElOS19QQ1NfTkVHX0lOQkFORF9FTkFCTEVELFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmMtNjgxOC1cXHRcXHRcXHQgICAgIGZhbHNlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYzo2ODE5OlxcdG12cHAyX21hY19maW5pc2goXFx1MDAyNnBvcnQtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBNTE9fQU5fSU5CQU5ELFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTY4MjAtXFx0XFx0XFx0IHBvcnQtXFx1MDAzZXBoeV9pbnRlcmZhY2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9waHlsaW5rLmM9NDY9c3RhdGljIHZvaWQgbGFuOTY2eF9waHlsaW5rX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9waHlsaW5rLmMtNTgtXFx0cG9ydF9jb25maWctXFx1MDAzZXBhdXNlID0gMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3BoeWxpbmsuYzo1OTpcXHRwb3J0X2NvbmZpZy1cXHUwMDNlcGF1c2UgfD0gdHhfcGF1c2UgPyBNTE9fUEFVU0VfVFggOiAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcGh5bGluay5jOjYwOlxcdHBvcnRfY29uZmlnLVxcdTAwM2VwYXVzZSB8PSByeF9wYXVzZSA/IE1MT19QQVVTRV9SWCA6IDA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9waHlsaW5rLmMtNjEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3BvcnQuYz0xNDQ9c3RhdGljIHZvaWQgbGFuOTY2eF9wb3J0X2xpbmtfdXAoc3RydWN0IGxhbjk2NnhfcG9ydCAqcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcG9ydC5jLTIzMy1cXHRcXHRTWVNfTUFDX0ZDX0NGR19QQVVTRV9WQUxfQ0ZHX1NFVCgweGZmZmYpIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3BvcnQuYzoyMzQ6XFx0XFx0U1lTX01BQ19GQ19DRkdfUlhfRkNfRU5BX1NFVChjb25maWctXFx1MDAzZXBhdXNlIFxcdTAwMjYgTUxPX1BBVVNFX1JYID8gMSA6IDApIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3BvcnQuYzoyMzU6XFx0XFx0U1lTX01BQ19GQ19DRkdfVFhfRkNfRU5BX1NFVChjb25maWctXFx1MDAzZXBhdXNlIFxcdTAwMjYgTUxPX1BBVVNFX1RYID8gMSA6IDApLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcG9ydC5jLTIzNi1cXHRcXHRTWVNfTUFDX0ZDX0NGR19GQ19MSU5LX1NQRUVEIHxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9ODU0PXN0YXRpYyB2b2lkIHBoeWxpbmtfYXBwbHlfbWFudWFsX2Zsb3coc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04NjItXFx0LyogTWFudWFsIGNvbmZpZ3VyYXRpb24gb2YgcGF1c2UgbW9kZXMgKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjg2MzpcXHRpZiAoIShwbC1cXHUwMDNlbGlua19jb25maWcucGF1c2UgXFx1MDAyNiBNTE9fUEFVU0VfQU4pKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODY0LVxcdFxcdHN0YXRlLVxcdTAwM2VwYXVzZSA9IHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5wYXVzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTIzOT1zdGF0aWMgdm9pZCBwaHlsaW5rX21ham9yX2NvbmZpZyhzdHJ1Y3QgcGh5bGluayAqcGwsIGJvb2wgcmVzdGFydCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTMyMC1cXHRlcnIgPSBwaHlsaW5rX3Bjc19jb25maWcocGwtXFx1MDAzZXBjcywgcGwtXFx1MDAzZXBjc19uZWdfbW9kZSwgc3RhdGUsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMzIxOlxcdFxcdFxcdFxcdCAhIShwbC1cXHUwMDNlbGlua19jb25maWcucGF1c2UgXFx1MDAyNiBNTE9fUEFVU0VfQU4pKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEzMjItXFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTM3NT1zdGF0aWMgaW50IHBoeWxpbmtfY2hhbmdlX2luYmFuZF9hZHZlcnQoc3RydWN0IHBoeWxpbmsgKnBsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMzk2LVxcdHJldCA9IHBoeWxpbmtfcGNzX2NvbmZpZyhwbC1cXHUwMDNlcGNzLCBwbC1cXHUwMDNlcGNzX25lZ19tb2RlLCBcXHUwMDI2cGwtXFx1MDAzZWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTM5NzpcXHRcXHRcXHRcXHQgISEocGwtXFx1MDAzZWxpbmtfY29uZmlnLnBhdXNlIFxcdTAwMjYgTUxPX1BBVVNFX0FOKSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMzk4LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xODQ4PXN0cnVjdCBwaHlsaW5rICpwaHlsaW5rX2NyZWF0ZShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg5OC1cXHRwbC1cXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlID0gaWZhY2U7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODk5OlxcdHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5wYXVzZSA9IE1MT19QQVVTRV9BTjtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MDAtXFx0cGwtXFx1MDAzZWxpbmtfY29uZmlnLnNwZWVkID0gU1BFRURfVU5LTk9XTjtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzE3NT12b2lkIHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbShzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzktXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTgwOlxcdHBhdXNlLVxcdTAwM2VhdXRvbmVnID0gISEocGwtXFx1MDAzZWxpbmtfY29uZmlnLnBhdXNlIFxcdTAwMjYgTUxPX1BBVVNFX0FOKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxODE6XFx0cGF1c2UtXFx1MDAzZXJ4X3BhdXNlID0gISEocGwtXFx1MDAzZWxpbmtfY29uZmlnLnBhdXNlIFxcdTAwMjYgTUxPX1BBVVNFX1JYKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxODI6XFx0cGF1c2UtXFx1MDAzZXR4X3BhdXNlID0gISEocGwtXFx1MDAzZWxpbmtfY29uZmlnLnBhdXNlIFxcdTAwMjYgTUxPX1BBVVNFX1RYKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxODMtfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTkxPWludCBwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0oc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMjM1LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzIzNjpcXHRtYW51YWxfY2hhbmdlZCA9IChjb25maWctXFx1MDAzZXBhdXNlIF4gcGF1c2Vfc3RhdGUpIFxcdTAwMjYgTUxPX1BBVVNFX0FOIHx8XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMjM3LVxcdFxcdFxcdCAoIShwYXVzZV9zdGF0ZSBcXHUwMDI2IE1MT19QQVVTRV9BTikgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMyMzg6XFx0XFx0XFx0ICAgKGNvbmZpZy1cXHUwMDNlcGF1c2UgXiBwYXVzZV9zdGF0ZSkgXFx1MDAyNiBNTE9fUEFVU0VfVFhSWF9NQVNLKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyMzktXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM3MDM9c3RhdGljIGludCBwaHlsaW5rX3NmcF9jb25maWdfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzcxNy1cXHRjb25maWcuZHVwbGV4ID0gRFVQTEVYX1VOS05PV047XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNzE4OlxcdGNvbmZpZy5wYXVzZSA9IE1MT19QQVVTRV9BTjtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM3MTktXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM3NTQ9c3RhdGljIGludCBwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbChzdHJ1Y3QgcGh5bGluayAqcGwpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM3ODItXFx0Y29uZmlnLmR1cGxleCA9IERVUExFWF9VTktOT1dOO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mzc4MzpcXHRjb25maWcucGF1c2UgPSBNTE9fUEFVU0VfQU47XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNzg0LVxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci92bWQuYz01ODE9c3RhdGljIGludCB2bWRfZ2V0X3BoeXNfb2Zmc2V0cyhzdHJ1Y3Qgdm1kX2RldiAqdm1kLCBib29sIG5hdGl2ZV9oaW50LFxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci92bWQuYy01OTEtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci92bWQuYzo1OTI6XFx0XFx0cmV0ID0gcGNpX3JlYWRfY29uZmlnX2R3b3JkKGRldiwgUENJX1JFR19WTUxPQ0ssIFxcdTAwMjZ2bWxvY2spO1xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvdm1kLmMtNTkzLVxcdFxcdGlmIChyZXQgfHwgUENJX1BPU1NJQkxFX0VSUk9SKHZtbG9jaykpXFxuLS1cXG5kcml2ZXJzL3BpbmN0cmwvbWVzb24vS2NvbmZpZz02Mz1jb25maWcgUElOQ1RSTF9NRVNPTl9TNFxcbi0tXFxuZHJpdmVycy9waW5jdHJsL21lc29uL0tjb25maWctNjgtXFxuZHJpdmVycy9waW5jdHJsL21lc29uL0tjb25maWc6Njk6Y29uZmlnIFBJTkNUUkxfQU1MT0dJQ19BNFxcbmRyaXZlcnMvcGluY3RybC9tZXNvbi9LY29uZmlnLTcwLVxcdGJvb2wgXFxcIkFNTE9HSUMgcGluY29udHJvbFxcXCJcXG4tLVxcbmRyaXZlcnMvcGluY3RybC9tZXNvbi9LY29uZmlnLTc5LVxcbmRyaXZlcnMvcGluY3RybC9tZXNvbi9LY29uZmlnOjgwOmNvbmZpZyBQSU5DVFJMX0FNTE9HSUNfQzNcXG5kcml2ZXJzL3BpbmN0cmwvbWVzb24vS2NvbmZpZy04MS1cXHR0cmlzdGF0ZSBcXFwiQW1sb2dpYyBDMyBTb0MgcGluY3RybCBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3BpbmN0cmwvbWVzb24vS2NvbmZpZy04NS1cXG5kcml2ZXJzL3BpbmN0cmwvbWVzb24vS2NvbmZpZzo4Njpjb25maWcgUElOQ1RSTF9BTUxPR0lDX1Q3XFxuZHJpdmVycy9waW5jdHJsL21lc29uL0tjb25maWctODctXFx0dHJpc3RhdGUgXFxcIkFtbG9naWMgVDcgU29DIHBpbmN0cmwgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9ydGMvS2NvbmZpZz0yMTI3PWNvbmZpZyBSVENfRFJWX1NTRDIwMkRcXG4tLVxcbmRyaXZlcnMvcnRjL0tjb25maWctMjEzNy1cXG5kcml2ZXJzL3J0Yy9LY29uZmlnOjIxMzg6Y29uZmlnIFJUQ19EUlZfQU1MT0dJQ19BNFxcbmRyaXZlcnMvcnRjL0tjb25maWctMjEzOS1cXHR0cmlzdGF0ZSBcXFwiQW1sb2dpYyBSVENcXFwiXFxuLS1cXG5kcml2ZXJzL3MzOTAvY2hhci9LY29uZmlnPTk5PWNvbmZpZyBTMzkwX1RBUEVcXG4tLVxcbmRyaXZlcnMvczM5MC9jaGFyL0tjb25maWctMTA4LVxcbmRyaXZlcnMvczM5MC9jaGFyL0tjb25maWc6MTA5OmNvbmZpZyBWTUxPR1JEUlxcbmRyaXZlcnMvczM5MC9jaGFyL0tjb25maWctMTEwLVxcdGRlZl90cmlzdGF0ZSBtXFxuLS1cXG5kcml2ZXJzL3NwaS9LY29uZmlnPTg2PWNvbmZpZyBTUElfQUxURVJBX0RGTFxcbi0tXFxuZHJpdmVycy9zcGkvS2NvbmZpZy05NC1cXG5kcml2ZXJzL3NwaS9LY29uZmlnOjk1OmNvbmZpZyBTUElfQU1MT0dJQ19TUElGQ19BMVxcbmRyaXZlcnMvc3BpL0tjb25maWctOTYtXFx0dHJpc3RhdGUgXFxcIkFtbG9naWMgQTEgU1BJRkMgY29udHJvbGxlclxcXCJcXG4tLVxcbmRyaXZlcnMvc3BpL0tjb25maWctMTAxLVxcbmRyaXZlcnMvc3BpL0tjb25maWc6MTAyOmNvbmZpZyBTUElfQU1MT0dJQ19TUElGQ19BNFxcbmRyaXZlcnMvc3BpL0tjb25maWctMTAzLVxcdHRyaXN0YXRlIFxcXCJBbWxvZ2ljIEE0IFNQSSBGbGFzaCBjb250cm9sbGVyXFxcIlxcbi0tXFxuZHJpdmVycy9zcGkvS2NvbmZpZy0xMTEtXFxuZHJpdmVycy9zcGkvS2NvbmZpZzoxMTI6Y29uZmlnIFNQSV9BTUxPR0lDX1NQSVNHXFxuZHJpdmVycy9zcGkvS2NvbmZpZy0xMTMtXFx0dHJpc3RhdGUgXFxcIkFtbG9naWMgU1BJU0cgY29udHJvbGxlclxcXCJcXG4tLVxcbmRyaXZlcnMvdGhlcm1hbC9LY29uZmlnPTQzMz1lbmRtZW51XFxuZHJpdmVycy90aGVybWFsL0tjb25maWctNDM0LVxcbmRyaXZlcnMvdGhlcm1hbC9LY29uZmlnOjQzNTpjb25maWcgQU1MT0dJQ19USEVSTUFMXFxuZHJpdmVycy90aGVybWFsL0tjb25maWctNDM2LVxcdHRyaXN0YXRlIFxcXCJBbWxvZ2ljIFRoZXJtYWwgU3VwcG9ydFxcXCJcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTE2PWVudW0ge1xcbi0tXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNTEtXFx0ICogdGhlIHJlc3VsdHMgb2YgYXV0b25lZ290YXRpb24gKGlmIE1MT19QQVVTRV9BTiBpcyBzZXQpIG9yIHVzZXJcXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo1MjpcXHQgKiBjb25maWd1cmF0aW9uIChpZiBNTE9fUEFVU0VfQU4gaXMgbm90IHNldCkuXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNTMtXFx0ICpcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmgtMTMzMy0gKlxcdHNldHVwIGxpbmtzIGR1ZSB0byBBUCBNTEQgcmVtb3ZpbmcgdGhlIGNvcnJlc3BvbmRpbmcgYWZmaWxpYXRlZCBBUHMgd2l0aFxcbmluY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmg6MTMzNDogKlxcdE11bHRpLUxpbmsgcmVjb25maWd1cmF0aW9uLiAlTkw4MDIxMV9BVFRSX01MT19MSU5LUyBpcyB1c2VkIHRvIHByb3ZpZGVcXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTEzMzUtICpcXHRpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVtb3ZlZCBTVEEgTUxEIHNldHVwIGxpbmtzLlxcbi0tXFxubmV0L2RzYS9wb3J0LmM9MTg0Mj1zdGF0aWMgdm9pZCBkc2Ffc2hhcmVkX3BvcnRfbGlua19kb3duKHN0cnVjdCBkc2FfcG9ydCAqZHApXFxuLS1cXG5uZXQvZHNhL3BvcnQuYy0xODQ2LVxcdGlmIChkcy1cXHUwMDNlcGh5bGlua19tYWNfb3BzIFxcdTAwMjZcXHUwMDI2IGRzLVxcdTAwM2VwaHlsaW5rX21hY19vcHMtXFx1MDAzZW1hY19saW5rX2Rvd24pXFxubmV0L2RzYS9wb3J0LmM6MTg0NzpcXHRcXHRkcy1cXHUwMDNlcGh5bGlua19tYWNfb3BzLVxcdTAwM2VtYWNfbGlua19kb3duKFxcdTAwMjZkcC1cXHUwMDNlcGxfY29uZmlnLCBNTE9fQU5fRklYRUQsXFxubmV0L2RzYS9wb3J0LmMtMTg0OC1cXHRcXHRcXHRcXHRcXHRcXHQgICBQSFlfSU5URVJGQUNFX01PREVfTkEpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNTozNjo1Ni4wNjEzNjA3NTJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODU5MzcxNDgyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNTE8gQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gTXVsdGktTGluayBPcGVyYXRpb24gKE1MTykgd2l0aGluIHRoZSBMaW51eCB3aXJlbGVzcyBzdGFjay4gUmlnaHQgbm93LCBJJ20gdGhpbmtpbmcsIFwiTm8gc3BlY2lmaWMgTUxPIGNvbmZpZ3VyYXRpb24gaXMganVtcGluZyBvdXQgYXQgbWU7IGl0IHNlZW1zIHRvIGJlIGhhbmRsZWQgYXMgYW4gaW50ZWdyYWwgcGFydCBvZiBtYWM4MDIxMS5cIiBJIHNob3VsZCBkb3VibGUtY2hlY2sgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHRoZXJlIGlzbid0IHNvbWUgaGlkZGVuIHNldHRpbmcgb3Igc3VidGxlIGtub2Igc29tZXdoZXJlIGVsc2UgaW4gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgdGhhdCBJJ20gbWlzc2luZy5cblxuR29vZCwgSSBjb25maXJtZWQgdGhhdCBgTUFDODAyMTFgIGFuZCBwb3RlbnRpYWxseSBgTUFDODAyMTFfSFdTSU1gIGFyZSBsaWtlbHkgc3VmZmljaWVudCBmb3IgaW5pdGlhbCBlbmFibGluZy4gTm93LCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYXNzb2NpYXRpb24gcHJvY2VzcyBpbnRlcmFjdHMgd2l0aCBNTE8sIEknbSBnb2luZyB0byBkZWx2ZSBpbnRvIHRoZSBgaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rYCBmdW5jdGlvbiBsb2NhdGVkIGluIGBuZXQvbWFjODAyMTEvbWxtZS5jYC4gSSdtIGhvcGluZyB0byBzcG90IHNvbWUgcmVsYXRlZCBmdW5jdGlvbiBjYWxscyBvciBwYXJhbWV0ZXJzLiBIb3BlZnVsbHkgdGhlcmUgYXJlIHNvbWUgY2x1ZXMgaW4gdGhlIGxpbmsgY29uZmlndXJhdGlvbi4gRnJvbSB0aGVyZSwgSSBjYW4gZGV0ZXJtaW5lIHRoZSByb2xlIE1MTyBwbGF5cyBpbiB0aGlzIGNydWNpYWwgc3RlcCBvZiB0aGUgY29ubmVjdGlvbiBwcm9jZWR1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTczLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDE1OjM3OjI0LjY1NTA3ODIxN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzExODkyOTE3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL21sbWUuYz01NzgxPXN0YXRpYyB2b2lkIGllZWU4MDIxMV9lcGNzX3RlYXJkb3duKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy01ODQ1LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NTg0NjpzdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmsoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXFxubmV0L21hYzgwMjExL21sbWUuYy01ODQ3LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBsaW5rX3N0YV9pbmZvICpsaW5rX3N0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9NjkzNz1zdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2Nfc3VjY2VzcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzA3Mi1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjcwNzM6XFx0XFx0aWYgKCFpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmsobGluaywgbGlua19zdGEsXFxubmV0L21hYzgwMjExL21sbWUuYy03MDc0LVxcdFxcdFxcdFxcdFxcdFxcdCBhc3NvY19kYXRhLVxcdTAwM2VsaW5rW2xpbmtfaWRdLmJzcyxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTA4ODE9aWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExMDU1LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTEwNTY6XFx0XFx0aWYgKCFpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmsobGluaywgbGlua19zdGEsXFxubmV0L21hYzgwMjExL21sbWUuYy0xMTA1Ny1cXHRcXHRcXHRcXHRcXHRcXHQgYWRkX2xpbmtzX2RhdGEtXFx1MDAzZWxpbmtbbGlua19pZF0uYnNzLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNTozNzoyNy43NzQwNDE3NzlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE1NzA1ODAxOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24gYW5kIEFuYWx5c2lzKipcblxuT2theSwgc28gSSd2ZSBpZGVudGlmaWVkIGBpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmtgIGFzIGEga2V5IGZ1bmN0aW9uIHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nLiBJJ20gYWxzbyBwdXR0aW5nIGBpZWVlODAyMTFfYXNzb2Nfc3VjY2Vzc2AgYW5kIGBpZWVlODAyMTFfcHJvY2Vzc19tbF9yZWNvbmZfcmVzcGAgb24gdGhlIHJhZGFyLCBnaXZlbiB0aGVpciBwb3RlbnRpYWwgaW50ZXJhY3Rpb24uIFRoZSBwcmltYXJ5IGNvbmZpZ3MgSSdtIGludGVyZXN0ZWQgaW4gYXJlIGBNQUM4MDIxMWAgYW5kIGBNQUM4MDIxMV9IV1NJTWAuIEkndmUgY29uZmlybWVkIHRoYXQgYE1BQzgwMjExX0hXU0lNYCBpcywgYXMgZXhwZWN0ZWQsIHRoZSBzaW11bGF0ZWQgcmFkaW8gZW52aXJvbm1lbnQgZm9yIG1hYzgwMjExLCBtYWtpbmcgaXQgcGVyZmVjdCBmb3IgdGhpcyBraW5kIG9mIHRlc3RpbmcuXG5cbk5vdywgbGV0J3MgZGl2ZSBpbnRvIHRoZSBwYXRjaC4gSXQgc2VlbXMgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBsaWVzIGluIGVycm9yIGhhbmRsaW5nIHdpdGhpbiB0aGUgYXNzb2NpYXRpb24gcmVzcG9uc2UgcHJvY2Vzc2luZywgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gTXVsdGktTGluayAoTUwpIGVsZW1lbnRzLiBUaGUgb3JpZ2luYWwgY29kZSdzIGxvZ2ljIGlzIGJlaW5nIHRpZ2h0ZW5lZCB1cDsgaW4gcGFydGljdWxhciwgdGhlcmUncyBhIG1vcmUgZ3JhbnVsYXIgY2hlY2sgZm9yIHRoZSBgYnNzX3BhcmFtX2NoX2NudGAgZmllbGQsIGFsb25nIHdpdGggc2V2ZXJhbCBgbGlua19pbmZvYCBhbmQgYHNkYXRhX2luZm9gIG1lc3NhZ2VzLiBUaGUga2V5IGNoYW5nZSBpcyB0aGF0IGl0IG5vdyB2ZXJpZmllcyB0aGUgcHJlc2VuY2Ugb2YgIGBJRUVFODAyMTFfTUxFX1NUQV9DT05UUk9MX0JTU19QQVJBTV9DSEFOR0VfQ05UX1BSRVNFTlRgIHVzaW5nIGBjcHVfdG9fbGUxNmAgYW5kIGV4dHJhY3RzIHRoZSBjb3VudCBkaWZmZXJlbnRseSwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgaXQncyBwcmVzZW50IGluIGEgcGVyLVNUQSBwcm9maWxlIG9yIHRoZSBiYXNpYyBNTCBlbGVtZW50LiBUaGlzIGNvdWxkIGRlZmluaXRlbHkgaW50cm9kdWNlIGludGVyZXN0aW5nIGVkZ2UgY2FzZXMgYW5kIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIFRoZSBjb2RlIGFsc28gYXBwZWFycyB0byBwYXJzZSBhbmQgaGFuZGxlIGBic3NfcGFyYW1fY2hfY250YCBmcm9tIGRpZmZlcmVudCBsb2NhdGlvbnMgZGVwZW5kaW5nIG9uIHdoZXRoZXIgaXQncyBpbiB0aGUgcGVyLVNUQSBwcm9maWxlIG9yIHRoZSBtYWluIE1MIGVsZW1lbnQuIFRoaXMgY291bGQgYWxzbyBiZSBhIHBsYWNlIHRvIGludHJvZHVjZSBmdXp6aW5nIGlucHV0cy5cblxuR2l2ZW4gdGhlc2UgY2hhbmdlcywgZXNwZWNpYWxseSB0aGUgYWRkZWQgY2hlY2tzIGFuZCBwYXJzaW5nIG9mIE1MIGVsZW1lbnRzLCB0aGlzIGxvb2tzIGxpa2UgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIEkgd2lsbCBjYWxsIGBzZXQtcmVzdWx0c2Agbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQyMSwiT3V0cHV0VG9rZW5zIjoxOTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTU6Mzc6MzkuMzQ0NjI2NTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzgzNzU5NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9hc3NvY19jb25maWdfbGlua1wiLFxuICAgIFwiaWVlZTgwMjExX2Fzc29jX3N1Y2Nlc3NcIixcbiAgICBcImllZWU4MDIxMV9wcm9jZXNzX21sX3JlY29uZl9yZXNwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhcnNpbmcgbG9naWMgb2YgTXVsdGktTGluayAoTUwpIGVsZW1lbnRzIGluIDgwMi4xMSBhc3NvY2lhdGlvbiByZXNwb25zZXMgd2l0aGluIHRoZSBtYWM4MDIxMSBzdWJzeXN0ZW0uIEl0IGNoYW5nZXMgaG93IHRoZSBCU1MgcGFyYW1ldGVyIGNoYW5nZSBjb3VudCBpcyBleHRyYWN0ZWQgYW5kIGhhbmRsZXMgbWlzc2luZyBvciBtYWxmb3JtZWQgZWxlbWVudHMuIFRoaXMgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvcmUgbG9naWMgZm9yIFdpLUZpIDcgKDgwMi4xMWJlKSBNdWx0aS1MaW5rIE9wZXJhdGlvbiAoTUxPKSBhbmQgY2FuIGJlIHRlc3RlZCB2aWEgbWFjODAyMTFfaHdzaW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rXCIsXG4gICAgXCJpZWVlODAyMTFfYXNzb2Nfc3VjY2Vzc1wiLFxuICAgIFwiaWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3BcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFyc2luZyBsb2dpYyBvZiBNdWx0aS1MaW5rIChNTCkgZWxlbWVudHMgaW4gODAyLjExIGFzc29jaWF0aW9uIHJlc3BvbnNlcyB3aXRoaW4gdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gSXQgY2hhbmdlcyBob3cgdGhlIEJTUyBwYXJhbWV0ZXIgY2hhbmdlIGNvdW50IGlzIGV4dHJhY3RlZCBhbmQgaGFuZGxlcyBtaXNzaW5nIG9yIG1hbGZvcm1lZCBlbGVtZW50cy4gVGhpcyBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY29yZSBsb2dpYyBmb3IgV2ktRmkgNyAoODAyLjExYmUpIE11bHRpLUxpbmsgT3BlcmF0aW9uIChNTE8pIGFuZCBjYW4gYmUgdGVzdGVkIHZpYSBtYWM4MDIxMV9od3NpbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowrrvcm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-14 15:10:40 +0000 UTC FinishedAt: 2026-07-14 15:37:40 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3b029c035b34bbc693405ddf759f0e9b920c27f1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "3b029c035b34bbc693405ddf759f0e9b920c27f1", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211", "MAC80211_HWSIM" ], "series_id": "dfe21819-9c0c-470a-97e2-017a21a7a458" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ieee80211_assoc_config_link", "ieee80211_assoc_success", "ieee80211_process_ml_reconf_resp" ], "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+CgkJCTx0ZD4yMDI2LzA3LzE0IDE1OjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9hc3NvY19zdWNjZXNzJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9wcm9jZXNzX21sX3JlY29uZl9yZXNwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwYXJzaW5nIGxvZ2ljIG9mIE11bHRpLUxpbmsgKE1MKSBlbGVtZW50cyBpbiA4MDIuMTEgYXNzb2NpYXRpb24gcmVzcG9uc2VzIHdpdGhpbiB0aGUgbWFjODAyMTEgc3Vic3lzdGVtLiBJdCBjaGFuZ2VzIGhvdyB0aGUgQlNTIHBhcmFtZXRlciBjaGFuZ2UgY291bnQgaXMgZXh0cmFjdGVkIGFuZCBoYW5kbGVzIG1pc3Npbmcgb3IgbWFsZm9ybWVkIGVsZW1lbnRzLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb3JlIGxvZ2ljIGZvciBXaS1GaSA3ICg4MDIuMTFiZSkgTXVsdGktTGluayBPcGVyYXRpb24gKE1MTykgYW5kIGNhbiBiZSB0ZXN0ZWQgdmlhIG1hYzgwMjExX2h3c2ltLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDE1OjM2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjc1NWU2ZTQ4MzRiNzFjODU4MTcwM2Q3NjY0MjA2N2NjY2ExZWMzYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVsIDE0IDE1OjM2OjIxIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9tbG1lLmMgYi9uZXQvbWFjODAyMTEvbWxtZS5jXG5pbmRleCA5ZTkyMzM3YmI2ZjllNS4uZjExNzJhOTUwMjg0ZjAgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvbWxtZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvbWxtZS5jXG5AQCAtNTg3MSw4ICYjNDM7NTg3MSw2IEBAIHN0YXRpYyBib29sIGllZWU4MDIxMV9hc3NvY19jb25maWdfbGluayhzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbiBcdGNvbnN0IHN0cnVjdCBjZmc4MDIxMV9ic3NfaWVzICpic3NfaWVzID0gTlVMTDtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kO1xuIFx0c3RydWN0IGllZWU4MDJfMTFfZWxlbXMgKmVsZW1zO1xuLVx0Y29uc3QgX19sZTE2IHByb2ZfYnNzX3BhcmFtX2NoX3ByZXNlbnQgPVxuLVx0XHRjcHVfdG9fbGUxNihJRUVFODAyMTFfTUxFX1NUQV9DT05UUk9MX0JTU19QQVJBTV9DSEFOR0VfQ05UX1BSRVNFTlQpO1xuIFx0dTE2IGNhcGFiX2luZm87XG4gXHRib29sIHJldDtcbiBcbkBAIC01ODg4LDIwICYjNDM7NTg4NiwxMyBAQCBzdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmsoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXG4gXHRcdCAqIHN1Y2Nlc3NmdWwsIHNvIHNldCB0aGUgc3RhdHVzIGRpcmVjdGx5IHRvIHN1Y2Nlc3NcbiBcdFx0ICovXG4gXHRcdGFzc29jX2RhdGEtXHUwMDNlbGlua1tsaW5rX2lkXS5zdGF0dXMgPSBXTEFOX1NUQVRVU19TVUNDRVNTO1xuLVx0XHRpZiAoZWxlbXMtXHUwMDNlbWxfYmFzaWMpIHtcbi1cdFx0XHRpbnQgYnNzX3BhcmFtX2NoX2NudCA9XG4tXHRcdFx0XHRpZWVlODAyMTFfbWxlX2dldF9ic3NfcGFyYW1fY2hfY250KChjb25zdCB2b2lkICopZWxlbXMtXHUwMDNlbWxfYmFzaWMpO1xuLVxuLVx0XHRcdGlmIChic3NfcGFyYW1fY2hfY250IFx1MDAzYyAwKSB7XG4tXHRcdFx0XHRyZXQgPSBmYWxzZTtcbi1cdFx0XHRcdGdvdG8gb3V0O1xuLVx0XHRcdH1cbi1cdFx0XHRic3NfY29uZi1cdTAwM2Vic3NfcGFyYW1fY2hfY250ID0gYnNzX3BhcmFtX2NoX2NudDtcbi1cdFx0XHRic3NfY29uZi1cdTAwM2Vic3NfcGFyYW1fY2hfY250X2xpbmtfaWQgPSBsaW5rX2lkO1xuLVx0XHR9XG4tXHR9IGVsc2UgaWYgKGVsZW1zLVx1MDAzZXBhcnNlX2Vycm9yIFx1MDAyNiBJRUVFODAyMTFfUEFSU0VfRVJSX0RVUF9ORVNUX01MX0JBU0lDIHx8XG4tXHRcdCAgICFlbGVtcy1cdTAwM2Vwcm9mIHx8XG4tXHRcdCAgICEoZWxlbXMtXHUwMDNlcHJvZi1cdTAwM2Vjb250cm9sIFx1MDAyNiBwcm9mX2Jzc19wYXJhbV9jaF9wcmVzZW50KSkge1xuJiM0MztcdH0gZWxzZSBpZiAoZWxlbXMtXHUwMDNlcGFyc2VfZXJyb3IgXHUwMDI2IElFRUU4MDIxMV9QQVJTRV9FUlJfRFVQX05FU1RfTUxfQkFTSUMpIHtcbiYjNDM7XHRcdHNkYXRhX2luZm8oc2RhdGEsXG4mIzQzO1x0XHRcdCAgIFwmIzM0O2Fzc29jaWF0aW9uIHJlc3BvbnNlIGhhZCBuZXN0ZWQgbXVsdGktbGluayBlbGVtZW50XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldCA9IGZhbHNlO1xuJiM0MztcdFx0Z290byBvdXQ7XG4mIzQzO1x0fSBlbHNlIGlmICghZWxlbXMtXHUwMDNlcHJvZikge1xuJiM0MztcdFx0bGlua19pbmZvKGxpbmssIFwmIzM0O2xpbmsgbWlzc2luZyBmcm9tIGFzc29jaWF0aW9uIHJlc3BvbnNlXFxuXCYjMzQ7KTtcbiBcdFx0cmV0ID0gZmFsc2U7XG4gXHRcdGdvdG8gb3V0O1xuIFx0fSBlbHNlIHtcbkBAIC01OTE1LDEwICYjNDM7NTkwNiw2IEBAIHN0YXRpYyBib29sIGllZWU4MDIxMV9hc3NvY19jb25maWdfbGluayhzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbiBcdFx0ICovXG4gXHRcdGNhcGFiX2luZm8gPSBnZXRfdW5hbGlnbmVkX2xlMTYocHRyKTtcbiBcdFx0YXNzb2NfZGF0YS1cdTAwM2VsaW5rW2xpbmtfaWRdLnN0YXR1cyA9IGdldF91bmFsaWduZWRfbGUxNihwdHIgJiM0MzsgMik7XG4tXHRcdGJzc19wYXJhbV9jaF9jbnQgPVxuLVx0XHRcdGllZWU4MDIxMV9tbGVfYmFzaWNfc3RhX3Byb2ZfYnNzX3BhcmFtX2NoX2NudChlbGVtcy1cdTAwM2Vwcm9mKTtcbi1cdFx0YnNzX2NvbmYtXHUwMDNlYnNzX3BhcmFtX2NoX2NudCA9IGJzc19wYXJhbV9jaF9jbnQ7XG4tXHRcdGJzc19jb25mLVx1MDAzZWJzc19wYXJhbV9jaF9jbnRfbGlua19pZCA9IGxpbmtfaWQ7XG4gXG4gXHRcdGlmIChhc3NvY19kYXRhLVx1MDAzZWxpbmtbbGlua19pZF0uc3RhdHVzICE9IFdMQU5fU1RBVFVTX1NVQ0NFU1MpIHtcbiBcdFx0XHRsaW5rX2luZm8obGluaywgXCYjMzQ7YXNzb2NpYXRpb24gcmVzcG9uc2Ugc3RhdHVzIGNvZGU9JXVcXG5cJiMzNDssXG5AQCAtNTkyNiw2ICYjNDM7NTkxMywzMiBAQCBzdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmsoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXG4gXHRcdFx0cmV0ID0gdHJ1ZTtcbiBcdFx0XHRnb3RvIG91dDtcbiBcdFx0fVxuJiM0MztcbiYjNDM7XHRcdGlmICghKGVsZW1zLVx1MDAzZXByb2YtXHUwMDNlY29udHJvbCBcdTAwMjZcbiYjNDM7XHRcdCAgICAgIGNwdV90b19sZTE2KElFRUU4MDIxMV9NTEVfU1RBX0NPTlRST0xfQlNTX1BBUkFNX0NIQU5HRV9DTlRfUFJFU0VOVCkpKSB7XG4mIzQzO1x0XHRcdGxpbmtfaW5mbyhsaW5rLFxuJiM0MztcdFx0XHRcdCAgXCYjMzQ7cGVyLVNUQSBwcm9maWxlIG1pc3NpbmcgQlNTIHBhcmFtZXRlciBjaGFuZ2UgY291bnRcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRyZXQgPSBmYWxzZTtcbiYjNDM7XHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRic3NfcGFyYW1fY2hfY250ID1cbiYjNDM7XHRcdFx0aWVlZTgwMjExX21sZV9iYXNpY19zdGFfcHJvZl9ic3NfcGFyYW1fY2hfY250KGVsZW1zLVx1MDAzZXByb2YpO1xuJiM0MztcdFx0YnNzX2NvbmYtXHUwMDNlYnNzX3BhcmFtX2NoX2NudCA9IGJzc19wYXJhbV9jaF9jbnQ7XG4mIzQzO1x0XHRic3NfY29uZi1cdTAwM2Vic3NfcGFyYW1fY2hfY250X2xpbmtfaWQgPSBsaW5rX2lkO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKGxpbmtfaWQgPT0gYXNzb2NfZGF0YS1cdTAwM2Vhc3NvY19saW5rX2lkIFx1MDAyNlx1MDAyNiBlbGVtcy1cdTAwM2VtbF9iYXNpYykge1xuJiM0MztcdFx0aW50IGJzc19wYXJhbV9jaF9jbnQgPVxuJiM0MztcdFx0XHRpZWVlODAyMTFfbWxlX2dldF9ic3NfcGFyYW1fY2hfY250KChjb25zdCB2b2lkICopZWxlbXMtXHUwMDNlbWxfYmFzaWMpO1xuJiM0MztcbiYjNDM7XHRcdGlmIChic3NfcGFyYW1fY2hfY250IFx1MDAzYyAwKSB7XG4mIzQzO1x0XHRcdHNkYXRhX2luZm8oc2RhdGEsXG4mIzQzO1x0XHRcdFx0ICAgXCYjMzQ7Tm8gQlNTIHBhcmFtZXRlciBjaGFuZ2UgY291bnQgaW4gYXNzb2MgcmVzcG9uc2VcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRyZXQgPSBmYWxzZTtcbiYjNDM7XHRcdFx0Z290byBvdXQ7XG4mIzQzO1x0XHR9XG4mIzQzO1x0XHRic3NfY29uZi1cdTAwM2Vic3NfcGFyYW1fY2hfY250ID0gYnNzX3BhcmFtX2NoX2NudDtcbiYjNDM7XHRcdGJzc19jb25mLVx1MDAzZWJzc19wYXJhbV9jaF9jbnRfbGlua19pZCA9IGxpbmtfaWQ7XG4gXHR9XG4gXG4gXHRpZiAoIWlzX3MxZyBcdTAwMjZcdTAwMjYgIWVsZW1zLVx1MDAzZXN1cHBfcmF0ZXMpIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxNTozNjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9hc3NvY19jb25maWdfbGluayYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfYXNzb2Nfc3VjY2VzcyYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfcHJvY2Vzc19tbF9yZWNvbmZfcmVzcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFyc2luZyBsb2dpYyBvZiBNdWx0aS1MaW5rIChNTCkgZWxlbWVudHMgaW4gODAyLjExIGFzc29jaWF0aW9uIHJlc3BvbnNlcyB3aXRoaW4gdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gSXQgY2hhbmdlcyBob3cgdGhlIEJTUyBwYXJhbWV0ZXIgY2hhbmdlIGNvdW50IGlzIGV4dHJhY3RlZCBhbmQgaGFuZGxlcyBtaXNzaW5nIG9yIG1hbGZvcm1lZCBlbGVtZW50cy4gVGhpcyBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY29yZSBsb2dpYyBmb3IgV2ktRmkgNyAoODAyLjExYmUpIE11bHRpLUxpbmsgT3BlcmF0aW9uIChNTE8pIGFuZCBjYW4gYmUgdGVzdGVkIHZpYSBtYWM4MDIxMV9od3NpbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgYjc1NWU2ZTQ4MzRiNzFjODU4MTcwM2Q3NjY0MjA2N2NjY2ExZWMzYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUdWUgSnVsIDE0IDE1OjM2OjIxIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL21sbWUuYyBiL25ldC9tYWM4MDIxMS9tbG1lLmMKaW5kZXggOWU5MjMzN2JiNmY5ZTUuLmYxMTcyYTk1MDI4NGYwIDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvbWxtZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9tbG1lLmMKQEAgLTU4NzEsOCAmIzQzOzU4NzEsNiBAQCBzdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmsoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssCiAJY29uc3Qgc3RydWN0IGNmZzgwMjExX2Jzc19pZXMgKmJzc19pZXMgPSBOVUxMOwogCXN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kOwogCXN0cnVjdCBpZWVlODAyXzExX2VsZW1zICplbGVtczsKLQljb25zdCBfX2xlMTYgcHJvZl9ic3NfcGFyYW1fY2hfcHJlc2VudCA9Ci0JCWNwdV90b19sZTE2KElFRUU4MDIxMV9NTEVfU1RBX0NPTlRST0xfQlNTX1BBUkFNX0NIQU5HRV9DTlRfUFJFU0VOVCk7CiAJdTE2IGNhcGFiX2luZm87CiAJYm9vbCByZXQ7CiAKQEAgLTU4ODgsMjAgJiM0Mzs1ODg2LDEzIEBAIHN0YXRpYyBib29sIGllZWU4MDIxMV9hc3NvY19jb25maWdfbGluayhzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaywKIAkJICogc3VjY2Vzc2Z1bCwgc28gc2V0IHRoZSBzdGF0dXMgZGlyZWN0bHkgdG8gc3VjY2VzcwogCQkgKi8KIAkJYXNzb2NfZGF0YS0mZ3Q7bGlua1tsaW5rX2lkXS5zdGF0dXMgPSBXTEFOX1NUQVRVU19TVUNDRVNTOwotCQlpZiAoZWxlbXMtJmd0O21sX2Jhc2ljKSB7Ci0JCQlpbnQgYnNzX3BhcmFtX2NoX2NudCA9Ci0JCQkJaWVlZTgwMjExX21sZV9nZXRfYnNzX3BhcmFtX2NoX2NudCgoY29uc3Qgdm9pZCAqKWVsZW1zLSZndDttbF9iYXNpYyk7Ci0KLQkJCWlmIChic3NfcGFyYW1fY2hfY250ICZsdDsgMCkgewotCQkJCXJldCA9IGZhbHNlOwotCQkJCWdvdG8gb3V0OwotCQkJfQotCQkJYnNzX2NvbmYtJmd0O2Jzc19wYXJhbV9jaF9jbnQgPSBic3NfcGFyYW1fY2hfY250OwotCQkJYnNzX2NvbmYtJmd0O2Jzc19wYXJhbV9jaF9jbnRfbGlua19pZCA9IGxpbmtfaWQ7Ci0JCX0KLQl9IGVsc2UgaWYgKGVsZW1zLSZndDtwYXJzZV9lcnJvciAmYW1wOyBJRUVFODAyMTFfUEFSU0VfRVJSX0RVUF9ORVNUX01MX0JBU0lDIHx8Ci0JCSAgICFlbGVtcy0mZ3Q7cHJvZiB8fAotCQkgICAhKGVsZW1zLSZndDtwcm9mLSZndDtjb250cm9sICZhbXA7IHByb2ZfYnNzX3BhcmFtX2NoX3ByZXNlbnQpKSB7CiYjNDM7CX0gZWxzZSBpZiAoZWxlbXMtJmd0O3BhcnNlX2Vycm9yICZhbXA7IElFRUU4MDIxMV9QQVJTRV9FUlJfRFVQX05FU1RfTUxfQkFTSUMpIHsKJiM0MzsJCXNkYXRhX2luZm8oc2RhdGEsCiYjNDM7CQkJICAgJiMzNDthc3NvY2lhdGlvbiByZXNwb25zZSBoYWQgbmVzdGVkIG11bHRpLWxpbmsgZWxlbWVudFxuJiMzNDspOwomIzQzOwkJcmV0ID0gZmFsc2U7CiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJfSBlbHNlIGlmICghZWxlbXMtJmd0O3Byb2YpIHsKJiM0MzsJCWxpbmtfaW5mbyhsaW5rLCAmIzM0O2xpbmsgbWlzc2luZyBmcm9tIGFzc29jaWF0aW9uIHJlc3BvbnNlXG4mIzM0Oyk7CiAJCXJldCA9IGZhbHNlOwogCQlnb3RvIG91dDsKIAl9IGVsc2UgewpAQCAtNTkxNSwxMCAmIzQzOzU5MDYsNiBAQCBzdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmsoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssCiAJCSAqLwogCQljYXBhYl9pbmZvID0gZ2V0X3VuYWxpZ25lZF9sZTE2KHB0cik7CiAJCWFzc29jX2RhdGEtJmd0O2xpbmtbbGlua19pZF0uc3RhdHVzID0gZ2V0X3VuYWxpZ25lZF9sZTE2KHB0ciAmIzQzOyAyKTsKLQkJYnNzX3BhcmFtX2NoX2NudCA9Ci0JCQlpZWVlODAyMTFfbWxlX2Jhc2ljX3N0YV9wcm9mX2Jzc19wYXJhbV9jaF9jbnQoZWxlbXMtJmd0O3Byb2YpOwotCQlic3NfY29uZi0mZ3Q7YnNzX3BhcmFtX2NoX2NudCA9IGJzc19wYXJhbV9jaF9jbnQ7Ci0JCWJzc19jb25mLSZndDtic3NfcGFyYW1fY2hfY250X2xpbmtfaWQgPSBsaW5rX2lkOwogCiAJCWlmIChhc3NvY19kYXRhLSZndDtsaW5rW2xpbmtfaWRdLnN0YXR1cyAhPSBXTEFOX1NUQVRVU19TVUNDRVNTKSB7CiAJCQlsaW5rX2luZm8obGluaywgJiMzNDthc3NvY2lhdGlvbiByZXNwb25zZSBzdGF0dXMgY29kZT0ldVxuJiMzNDssCkBAIC01OTI2LDYgJiM0Mzs1OTEzLDMyIEBAIHN0YXRpYyBib29sIGllZWU4MDIxMV9hc3NvY19jb25maWdfbGluayhzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaywKIAkJCXJldCA9IHRydWU7CiAJCQlnb3RvIG91dDsKIAkJfQomIzQzOwomIzQzOwkJaWYgKCEoZWxlbXMtJmd0O3Byb2YtJmd0O2NvbnRyb2wgJmFtcDsKJiM0MzsJCSAgICAgIGNwdV90b19sZTE2KElFRUU4MDIxMV9NTEVfU1RBX0NPTlRST0xfQlNTX1BBUkFNX0NIQU5HRV9DTlRfUFJFU0VOVCkpKSB7CiYjNDM7CQkJbGlua19pbmZvKGxpbmssCiYjNDM7CQkJCSAgJiMzNDtwZXItU1RBIHByb2ZpbGUgbWlzc2luZyBCU1MgcGFyYW1ldGVyIGNoYW5nZSBjb3VudFxuJiMzNDspOwomIzQzOwkJCXJldCA9IGZhbHNlOwomIzQzOwkJCWdvdG8gb3V0OwomIzQzOwkJfQomIzQzOwkJYnNzX3BhcmFtX2NoX2NudCA9CiYjNDM7CQkJaWVlZTgwMjExX21sZV9iYXNpY19zdGFfcHJvZl9ic3NfcGFyYW1fY2hfY250KGVsZW1zLSZndDtwcm9mKTsKJiM0MzsJCWJzc19jb25mLSZndDtic3NfcGFyYW1fY2hfY250ID0gYnNzX3BhcmFtX2NoX2NudDsKJiM0MzsJCWJzc19jb25mLSZndDtic3NfcGFyYW1fY2hfY250X2xpbmtfaWQgPSBsaW5rX2lkOwomIzQzOwl9CiYjNDM7CiYjNDM7CWlmIChsaW5rX2lkID09IGFzc29jX2RhdGEtJmd0O2Fzc29jX2xpbmtfaWQgJmFtcDsmYW1wOyBlbGVtcy0mZ3Q7bWxfYmFzaWMpIHsKJiM0MzsJCWludCBic3NfcGFyYW1fY2hfY250ID0KJiM0MzsJCQlpZWVlODAyMTFfbWxlX2dldF9ic3NfcGFyYW1fY2hfY250KChjb25zdCB2b2lkICopZWxlbXMtJmd0O21sX2Jhc2ljKTsKJiM0MzsKJiM0MzsJCWlmIChic3NfcGFyYW1fY2hfY250ICZsdDsgMCkgewomIzQzOwkJCXNkYXRhX2luZm8oc2RhdGEsCiYjNDM7CQkJCSAgICYjMzQ7Tm8gQlNTIHBhcmFtZXRlciBjaGFuZ2UgY291bnQgaW4gYXNzb2MgcmVzcG9uc2VcbiYjMzQ7KTsKJiM0MzsJCQlyZXQgPSBmYWxzZTsKJiM0MzsJCQlnb3RvIG91dDsKJiM0MzsJCX0KJiM0MzsJCWJzc19jb25mLSZndDtic3NfcGFyYW1fY2hfY250ID0gYnNzX3BhcmFtX2NoX2NudDsKJiM0MzsJCWJzc19jb25mLSZndDtic3NfcGFyYW1fY2hfY250X2xpbmtfaWQgPSBsaW5rX2lkOwogCX0KIAogCWlmICghaXNfczFnICZhbXA7JmFtcDsgIWVsZW1zLSZndDtzdXBwX3JhdGVzKSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDE1OjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMjYKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgbmV0L21hYzgwMjExL21sbWUuY2AgUGF0Y2gqKgoKT2theSwgc28gSSBoYXZlIGEgcGF0Y2ggdGhhdCYjMzk7cyB0b3VjaGluZyBgbmV0L21hYzgwMjExL21sbWUuY2AuIFJpZ2h0IGF3YXksIHRoYXQgZmxhZ3MgaXQgYXMgc29tZXRoaW5nIHByZXR0eSBjb3JlIHdpdGhpbiB0aGUgbWFjODAyMTEgc3Vic3lzdGVtLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIGJlIG1vZGlmeWluZyB0aGUgYGllZWU4MDIxMV9hc3NvY19jb25maWdfbGlua2AgZnVuY3Rpb24sIHdoaWNoIGRlYWxzIHdpdGggaG93IGBic3NfcGFyYW1fY2hfY250YCBpcyBoYW5kbGVkIGR1cmluZyBhc3NvY2lhdGlvbiByZXNwb25zZXMuIFRoYXQgc291bmRzIGxpa2UgYSBmYWlybHkgbG93LWxldmVsIG5ldHdvcmtpbmcgZGV0YWlsLCByZWxhdGVkIHRvIGNoYW5uZWwgY29uZmlndXJhdGlvbiwgd2hpY2ggaXMgcHJldHR5IGltcG9ydGFudCBmb3IgYSBzb2xpZCBjb25uZWN0aW9uLgoKR2l2ZW4gdGhhdCB0aGlzIGlzIGZ1bmN0aW9uYWwgY29kZSwgbXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgdW5kZXJzdGFuZGluZyB0aGUgY29udGV4dCBhbmQgaW1wYWN0LiBJIG5lZWQgdG8gZGlnIGludG8gYGllZWU4MDIxMV9hc3NvY19jb25maWdfbGlua2AgYW5kIHNlZSB3aGVyZSBpdCYjMzk7cyBjYWxsZWQgYW5kLCBtb3JlIGltcG9ydGFudGx5LCB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSByZWxldmFudCB0byBpdHMgb3BlcmF0aW9uLiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gZGl2ZSBpbnRvIHRoZSBjYWxsIHNpdGVzIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLgoKU2luY2UgdGhpcyBpcyBtYWM4MDIxMSwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNvbmZpcm0gdGhhdCBgQ09ORklHX01BQzgwMjExYCBpcyBlbmFibGVkLCB3aGljaCBzaG91bGQgYmUgdGhlIGNhc2UuIE5vdywgdG8gbWFrZSB0aGlzIGVhc2llciBJJiMzOTtsbCB1c2UgYGdyZXBwZXJgIHRvIHF1aWNrbHkgbG9jYXRlIGFsbCBpbnN0YW5jZXMgb2YgYGllZWU4MDIxMV9hc3NvY19jb25maWdfbGlua2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgYSBxdWljayBvdmVydmlldyBvZiBob3cgdGhpcyBmdW5jdGlvbiBmaXRzIGludG8gdGhlIG92ZXJhbGwgbWFjODAyMTEgYXJjaGl0ZWN0dXJlLCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgSSBuZWVkIHRvIGNvbnNpZGVyIHdoZW4gZXZhbHVhdGluZyB0aGlzIHBhdGNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDE1OjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9hc3NvY19jb25maWdfbGluayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvbWxtZS5jPTU3ODE9c3RhdGljIHZvaWQgaWVlZTgwMjExX2VwY3NfdGVhcmRvd24oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy01ODQ1LVxubmV0L21hYzgwMjExL21sbWUuYzo1ODQ2OnN0YXRpYyBib29sIGllZWU4MDIxMV9hc3NvY19jb25maWdfbGluayhzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNTg0Ny1cdFx0XHRcdFx0c3RydWN0IGxpbmtfc3RhX2luZm8gKmxpbmtfc3RhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9NjkzNz1zdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2Nfc3VjY2VzcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcwNzItXG5uZXQvbWFjODAyMTEvbWxtZS5jOjcwNzM6XHRcdGlmICghaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rKGxpbmssIGxpbmtfc3RhLFxubmV0L21hYzgwMjExL21sbWUuYy03MDc0LVx0XHRcdFx0XHRcdCBhc3NvY19kYXRhLVx1MDAzZWxpbmtbbGlua19pZF0uYnNzLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTA4ODE9aWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy0xMTA1NS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTEwNTY6XHRcdGlmICghaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rKGxpbmssIGxpbmtfc3RhLFxubmV0L21hYzgwMjExL21sbWUuYy0xMTA1Ny1cdFx0XHRcdFx0XHQgYWRkX2xpbmtzX2RhdGEtXHUwMDNlbGlua1tsaW5rX2lkXS5ic3MsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTU6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDAyNwoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDE3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE11bHRpLUxpbmsgT3BlcmF0aW9uIChNTE8pIEFzc29jaWF0aW9uIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGhvdyB0aGUgc3lzdGVtIGhhbmRsZXMgdGhlIGFzc29jaWF0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIE11bHRpLUxpbmsgT3BlcmF0aW9uIChNTE8pLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGNvbnRleHQgb2YgODAyLjExYmUsIG9yIFdpLUZpIDcuIEl0IHNlZW1zIHRoZSBgaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rYCBmdW5jdGlvbiBpcyBjcnVjaWFsIGhlcmUsIGFzIGl0JiMzOTtzIHRyaWdnZXJlZCBmcm9tIGJvdGggYGllZWU4MDIxMV9hc3NvY19zdWNjZXNzYCBhbmQgYGllZWU4MDIxMV9wcm9jZXNzX21sX3JlY29uZl9yZXNwYC4gVGhhdCBtYWtlcyBpdCBhIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIHBpZWNlLCB3aGljaCBpcyBnb29kLiBXZSBrbm93IHRoaXMgaGFuZGxlcyBNTE8uCgpNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZXNlIGZ1bmN0aW9uczogYGllZWU4MDIxMV9hc3NvY19jb25maWdfbGlua2AsIGBpZWVlODAyMTFfYXNzb2Nfc3VjY2Vzc2AsIGFuZCBgaWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3BgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93IGFuZCBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNoZWNrIGhvdyBpdCBhbGwgaW50ZWdyYXRlcyB3aXRoIHRoZSBgTUFDODAyMTFgIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlcy4KCk5vdywgSSYjMzk7bSBnb2luZyB0byBkaWcgZGVlcGVyIHRvIHNlZSBpZiBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIGZsYWdzLCBvciBwYXJhbWV0ZXJzIGFyZSB0aWVkIHRvIE1MTyBvciA4MDIuMTFiZS4gVGhhdCYjMzk7cyB0aGUga2V5OiB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgZ2VuZXJhbCBhc3NvY2lhdGlvbiBmcmFtZXdvcmsgaXMgKnNwZWNpYWxpemVkKiBmb3IgdGhlc2UgbmV3ZXIgZmVhdHVyZXMuIFRoaXMgbmVlZHMgdG8gYmUgY2hlY2tlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxNTozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTEmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnOjE6Y29uZmlnIE1BQzgwMjExX0hXU0lNXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cdHRyaXN0YXRlIFwmIzM0O1NpbXVsYXRlZCByYWRpbyB0ZXN0aW5nIHRvb2wgZm9yIG1hYzgwMjExXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI6Y29uZmlnIE1BQzgwMjExXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xOT1pZiBNQUM4MDIxMSAhPSBuXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIxOmNvbmZpZyBNQUM4MDIxMV9IQVNfUkNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyLVx0Ym9vbFxubmV0L21hYzgwMjExL0tjb25maWctMjMtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDpjb25maWcgTUFDODAyMTFfUkNfTUlOU1RSRUxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtNaW5zdHJlbFwmIzM0OyBpZiBFWFBFUlRcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2Vcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjQxOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00Mi1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZz00OD1lbmRjaG9pY2Vcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQ5LVxubmV0L21hYzgwMjExL0tjb25maWc6NTA6Y29uZmlnIE1BQzgwMjExX1JDX0RFRkFVTFRcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTUxLVx0c3RyaW5nXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NTc9Y29tbWVudCBcJiMzNDtTb21lIHdpcmVsZXNzIGRyaXZlcnMgcmVxdWlyZSBhIHJhdGUgY29udHJvbCBhbGdvcml0aG1cJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjYwOmNvbmZpZyBNQUM4MDIxMV9LVU5JVF9URVNUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBtYWM4MDIxMVwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNjktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3MDpjb25maWcgTUFDODAyMTFfTUVTSFxubmV0L21hYzgwMjExL0tjb25maWctNzEtXHRib29sIFwmIzM0O0VuYWJsZSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTc4LVxubmV0L21hYzgwMjExL0tjb25maWc6Nzk6Y29uZmlnIE1BQzgwMjExX0xFRFNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTgwLVx0Ym9vbCBcJiMzNDtFbmFibGUgTEVEIHRyaWdnZXJzXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctODctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo4ODpjb25maWcgTUFDODAyMTFfREVCVUdGU1xubmV0L21hYzgwMjExL0tjb25maWctODktXHRib29sIFwmIzM0O0V4cG9ydCBtYWM4MDIxMSBpbnRlcm5hbHMgaW4gRGVidWdGU1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk2LVxubmV0L21hYzgwMjExL0tjb25maWc6OTc6Y29uZmlnIE1BQzgwMjExX01FU1NBR0VfVFJBQ0lOR1xubmV0L21hYzgwMjExL0tjb25maWctOTgtXHRib29sIFwmIzM0O1RyYWNlIGFsbCBtYWM4MDIxMSBkZWJ1ZyBtZXNzYWdlc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwOS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExMDptZW51Y29uZmlnIE1BQzgwMjExX0RFQlVHX01FTlVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExMS1cdGJvb2wgXCYjMzQ7U2VsZWN0IG1hYzgwMjExIGRlYnVnZ2luZyBmZWF0dXJlc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjExNjpjb25maWcgTUFDODAyMTFfTk9JTkxJTkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cdGJvb2wgXCYjMzQ7RG8gbm90IGlubGluZSBUWC9SWCBoYW5kbGVyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjEzMjpjb25maWcgTUFDODAyMTFfVkVSQk9TRV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTMzLVx0Ym9vbCBcJiMzNDtWZXJib3NlIGRlYnVnZ2luZyBvdXRwdXRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNDM6Y29uZmlnIE1BQzgwMjExX01MTUVfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE0NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtYW5hZ2VkIE1MTUUgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTUzLVxubmV0L21hYzgwMjExL0tjb25maWc6MTU0OmNvbmZpZyBNQUM4MDIxMV9TVEFfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBzdGF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2Mi1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2Mzpjb25maWcgTUFDODAyMTFfSFRfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE2NC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBIVCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzQtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNzU6Y29uZmlnIE1BQzgwMjExX09DQl9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMTc2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIE9DQiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxODY6Y29uZmlnIE1BQzgwMjExX0lCU1NfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBJQlNTIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5Nzpjb25maWcgTUFDODAyMTFfUFNfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE5OC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBwb3dlcnNhdmUgbW9kZSBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMDgtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMDk6Y29uZmlnIE1BQzgwMjExX01QTF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjEwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcGVlciBsaW5rIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIyMjpjb25maWcgTUFDODAyMTFfTVBBVEhfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBhdGggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjM0LVxubmV0L21hYzgwMjExL0tjb25maWc6MjM1OmNvbmZpZyBNQUM4MDIxMV9NSFdNUF9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjM2LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggSFdNUCByb3V0aW5nIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0Ny1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI0ODpjb25maWcgTUFDODAyMTFfTUVTSF9TWU5DX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDktXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBzeW5jaHJvbml6YXRpb24gZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjU4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjU5OmNvbmZpZyBNQUM4MDIxMV9NRVNIX0NTQV9ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjYwLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggY2hhbm5lbCBzd2l0Y2ggZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjY5LVxubmV0L21hYzgwMjExL0tjb25maWc6MjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNzEtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwb3dlcnNhdmUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjgwLVxubmV0L21hYzgwMjExL0tjb25maWc6MjgxOmNvbmZpZyBNQUM4MDIxMV9URExTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yODItXHRib29sIFwmIzM0O1ZlcmJvc2UgVERMUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOTM6Y29uZmlnIE1BQzgwMjExX0RFQlVHX0NPVU5URVJTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXHRib29sIFwmIzM0O0V4dHJhIHN0YXRpc3RpY3MgZm9yIFRYL1JYIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwNy1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjMwODpjb25maWcgTUFDODAyMTFfU1RBX0hBU0hfTUFYX1NJWkVcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTMwOS1cdGludCBcJiMzNDtTdGF0aW9uIGhhc2ggdGFibGUgbWF4aW11bSBzaXplXCYjMzQ7IGlmIE1BQzgwMjExX0RFQlVHX01FTlVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNCAxNTozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzY1CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZzoKCioqSW5pdGlhbCBDb25maWd1cmF0aW9uIENoZWNrKioKCkFscmlnaHQsIHNvIHRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIC0gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBzdGFuZGFyZCBgTUFDODAyMTFgIGFuZCBhbHNvIHVzaW5nIHRoZSBgTUFDODAyMTFfSFdTSU1gIGNvbmZpZ3VyYXRpb24sIHdoaWNoIGlzIHRoZSBzZXR1cCBJJiMzOTtkIHR5cGljYWxseSBleHBlY3QgZm9yIHRlc3RpbmcuIE5vIHN1cnByaXNlcyB0aGVyZS4gQnV0IEkgbmVlZCB0byBkaXZlIGRlZXBlci4KCk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gbWFrZSBzdXJlIHdlIGFyZSBub3QgbWlzc2luZyBhbnkgb3RoZXIgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zLiBXZSBjYW4mIzM5O3QgYXNzdW1lIHRoYXQgb25seSB0aG9zZSB0d28gY292ZXIgdGhlIHdob2xlIGxhbmRzY2FwZS4gTGV0JiMzOTtzIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgcmVsYXRlIHRvIDgwMi4xMWJlIGZlYXR1cmVzIG9yIE11bHRpLUxpbmsgT3BlcmF0aW9uIChNTE8pLiBUaGUgY29uZmlndXJhdGlvbiBzcGFjZSBhcm91bmQgdGhvc2UgYXJlIHByZXR0eSBzcGVjaWZpYywgc28gYSBzZWFyY2ggaXMgcmVxdWlyZWQuIEkgbmVlZCB0byBtYWtlIHN1cmUgd2UmIzM5O3JlIG5vdCBvdmVybG9va2luZyBhbnl0aGluZyByZWxldmFudCB0byA4MDIuMTFiZSBvciB0aGUgTUxPIHN1cHBvcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTU6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnLipNTE8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9wYXJpc2MvS2NvbmZpZz0yNDk9Y29uZmlnIFBBUklTQ19IVUdFX0tFUk5FTFxuLS1cbmFyY2gvcGFyaXNjL0tjb25maWctMjUxLVxuYXJjaC9wYXJpc2MvS2NvbmZpZzoyNTI6Y29uZmlnIE1MT05HQ0FMTFNcbmFyY2gvcGFyaXNjL0tjb25maWctMjUzLVx0Ym9vbCBcJiMzNDtFbmFibGUgdGhlIC1tbG9uZy1jYWxscyBjb21waWxlciBvcHRpb24gZm9yIGJpZyBrZXJuZWxzXCYjMzQ7IGlmICFQQVJJU0NfSFVHRV9LRVJORUxcbi0tXG5kcml2ZXJzL2NyeXB0by9hbWxvZ2ljL0tjb25maWc6MTpjb25maWcgQ1JZUFRPX0RFVl9BTUxPR0lDX0dYTFxuZHJpdmVycy9jcnlwdG8vYW1sb2dpYy9LY29uZmlnLTItXHR0cmlzdGF0ZSBcJiMzNDtTdXBwb3J0IGZvciBhbWxvZ2ljIGNyeXB0b2dyYXBoaWMgb2ZmbG9hZGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9jcnlwdG8vYW1sb2dpYy9LY29uZmlnLTE3LVxuZHJpdmVycy9jcnlwdG8vYW1sb2dpYy9LY29uZmlnOjE4OmNvbmZpZyBDUllQVE9fREVWX0FNTE9HSUNfR1hMX0RFQlVHXG5kcml2ZXJzL2NyeXB0by9hbWxvZ2ljL0tjb25maWctMTktXHRib29sIFwmIzM0O0VuYWJsZSBhbWxvZ2ljIHN0YXRzXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmM9NjgwMD1zdGF0aWMgdm9pZCBtdnBwMl9hY3BpX3N0YXJ0KHN0cnVjdCBtdnBwMl9wb3J0ICpwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTY4MTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYzo2ODEzOlx0bXZwcDJfbWFjX3ByZXBhcmUoXHUwMDI2cG9ydC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgTUxPX0FOX0lOQkFORCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTY4MTQtXHRcdFx0ICBwb3J0LVx1MDAzZXBoeV9pbnRlcmZhY2UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmM6NjgxNTpcdG12cHAyX21hY19jb25maWcoXHUwMDI2cG9ydC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgTUxPX0FOX0lOQkFORCwgXHUwMDI2c3RhdGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmMtNjgxNi1cdHBjcy1cdTAwM2VvcHMtXHUwMDNlcGNzX2NvbmZpZyhwY3MsIFBIWUxJTktfUENTX05FR19JTkJBTkRfRU5BQkxFRCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy02ODE4LVx0XHRcdCAgICAgZmFsc2UpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmM6NjgxOTpcdG12cHAyX21hY19maW5pc2goXHUwMDI2cG9ydC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgTUxPX0FOX0lOQkFORCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTY4MjAtXHRcdFx0IHBvcnQtXHUwMDNlcGh5X2ludGVyZmFjZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9waHlsaW5rLmM9NDY9c3RhdGljIHZvaWQgbGFuOTY2eF9waHlsaW5rX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcGh5bGluay5jLTU4LVx0cG9ydF9jb25maWctXHUwMDNlcGF1c2UgPSAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9waHlsaW5rLmM6NTk6XHRwb3J0X2NvbmZpZy1cdTAwM2VwYXVzZSB8PSB0eF9wYXVzZSA/IE1MT19QQVVTRV9UWCA6IDA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3BoeWxpbmsuYzo2MDpcdHBvcnRfY29uZmlnLVx1MDAzZXBhdXNlIHw9IHJ4X3BhdXNlID8gTUxPX1BBVVNFX1JYIDogMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcGh5bGluay5jLTYxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcG9ydC5jPTE0ND1zdGF0aWMgdm9pZCBsYW45NjZ4X3BvcnRfbGlua191cChzdHJ1Y3QgbGFuOTY2eF9wb3J0ICpwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcG9ydC5jLTIzMy1cdFx0U1lTX01BQ19GQ19DRkdfUEFVU0VfVkFMX0NGR19TRVQoMHhmZmZmKSB8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3BvcnQuYzoyMzQ6XHRcdFNZU19NQUNfRkNfQ0ZHX1JYX0ZDX0VOQV9TRVQoY29uZmlnLVx1MDAzZXBhdXNlIFx1MDAyNiBNTE9fUEFVU0VfUlggPyAxIDogMCkgfFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9wb3J0LmM6MjM1Olx0XHRTWVNfTUFDX0ZDX0NGR19UWF9GQ19FTkFfU0VUKGNvbmZpZy1cdTAwM2VwYXVzZSBcdTAwMjYgTUxPX1BBVVNFX1RYID8gMSA6IDApLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9wb3J0LmMtMjM2LVx0XHRTWVNfTUFDX0ZDX0NGR19GQ19MSU5LX1NQRUVEIHxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTg1ND1zdGF0aWMgdm9pZCBwaHlsaW5rX2FwcGx5X21hbnVhbF9mbG93KHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTg2Mi1cdC8qIE1hbnVhbCBjb25maWd1cmF0aW9uIG9mIHBhdXNlIG1vZGVzICovXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjg2MzpcdGlmICghKHBsLVx1MDAzZWxpbmtfY29uZmlnLnBhdXNlIFx1MDAyNiBNTE9fUEFVU0VfQU4pKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04NjQtXHRcdHN0YXRlLVx1MDAzZXBhdXNlID0gcGwtXHUwMDNlbGlua19jb25maWcucGF1c2U7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMjM5PXN0YXRpYyB2b2lkIHBoeWxpbmtfbWFqb3JfY29uZmlnKHN0cnVjdCBwaHlsaW5rICpwbCwgYm9vbCByZXN0YXJ0LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTMyMC1cdGVyciA9IHBoeWxpbmtfcGNzX2NvbmZpZyhwbC1cdTAwM2VwY3MsIHBsLVx1MDAzZXBjc19uZWdfbW9kZSwgc3RhdGUsXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEzMjE6XHRcdFx0XHQgISEocGwtXHUwMDNlbGlua19jb25maWcucGF1c2UgXHUwMDI2IE1MT19QQVVTRV9BTikpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMzIyLVx0aWYgKGVyciBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTM3NT1zdGF0aWMgaW50IHBoeWxpbmtfY2hhbmdlX2luYmFuZF9hZHZlcnQoc3RydWN0IHBoeWxpbmsgKnBsKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTM5Ni1cdHJldCA9IHBoeWxpbmtfcGNzX2NvbmZpZyhwbC1cdTAwM2VwY3MsIHBsLVx1MDAzZXBjc19uZWdfbW9kZSwgXHUwMDI2cGwtXHUwMDNlbGlua19jb25maWcsXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjEzOTc6XHRcdFx0XHQgISEocGwtXHUwMDNlbGlua19jb25maWcucGF1c2UgXHUwMDI2IE1MT19QQVVTRV9BTikpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMzk4LVx0aWYgKHJldCBcdTAwM2MgMClcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE4NDg9c3RydWN0IHBoeWxpbmsgKnBoeWxpbmtfY3JlYXRlKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg5OC1cdHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSA9IGlmYWNlO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODk5Olx0cGwtXHUwMDNlbGlua19jb25maWcucGF1c2UgPSBNTE9fUEFVU0VfQU47XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MDAtXHRwbC1cdTAwM2VsaW5rX2NvbmZpZy5zcGVlZCA9IFNQRUVEX1VOS05PV047XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTc1PXZvaWQgcGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzktXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxODA6XHRwYXVzZS1cdTAwM2VhdXRvbmVnID0gISEocGwtXHUwMDNlbGlua19jb25maWcucGF1c2UgXHUwMDI2IE1MT19QQVVTRV9BTik7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxODE6XHRwYXVzZS1cdTAwM2VyeF9wYXVzZSA9ICEhKHBsLVx1MDAzZWxpbmtfY29uZmlnLnBhdXNlIFx1MDAyNiBNTE9fUEFVU0VfUlgpO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTgyOlx0cGF1c2UtXHUwMDNldHhfcGF1c2UgPSAhIShwbC1cdTAwM2VsaW5rX2NvbmZpZy5wYXVzZSBcdTAwMjYgTUxPX1BBVVNFX1RYKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE4My19XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTkxPWludCBwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0oc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzIzNS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzIzNjpcdG1hbnVhbF9jaGFuZ2VkID0gKGNvbmZpZy1cdTAwM2VwYXVzZSBeIHBhdXNlX3N0YXRlKSBcdTAwMjYgTUxPX1BBVVNFX0FOIHx8XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyMzctXHRcdFx0ICghKHBhdXNlX3N0YXRlIFx1MDAyNiBNTE9fUEFVU0VfQU4pIFx1MDAyNlx1MDAyNlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMjM4Olx0XHRcdCAgIChjb25maWctXHUwMDNlcGF1c2UgXiBwYXVzZV9zdGF0ZSkgXHUwMDI2IE1MT19QQVVTRV9UWFJYX01BU0spO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMjM5LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzcwMz1zdGF0aWMgaW50IHBoeWxpbmtfc2ZwX2NvbmZpZ19waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzcxNy1cdGNvbmZpZy5kdXBsZXggPSBEVVBMRVhfVU5LTk9XTjtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzcxODpcdGNvbmZpZy5wYXVzZSA9IE1MT19QQVVTRV9BTjtcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzcxOS1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM3NTQ9c3RhdGljIGludCBwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbChzdHJ1Y3QgcGh5bGluayAqcGwpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNzgyLVx0Y29uZmlnLmR1cGxleCA9IERVUExFWF9VTktOT1dOO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNzgzOlx0Y29uZmlnLnBhdXNlID0gTUxPX1BBVVNFX0FOO1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNzg0LVxuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvdm1kLmM9NTgxPXN0YXRpYyBpbnQgdm1kX2dldF9waHlzX29mZnNldHMoc3RydWN0IHZtZF9kZXYgKnZtZCwgYm9vbCBuYXRpdmVfaGludCxcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3ZtZC5jLTU5MS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvdm1kLmM6NTkyOlx0XHRyZXQgPSBwY2lfcmVhZF9jb25maWdfZHdvcmQoZGV2LCBQQ0lfUkVHX1ZNTE9DSywgXHUwMDI2dm1sb2NrKTtcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvdm1kLmMtNTkzLVx0XHRpZiAocmV0IHx8IFBDSV9QT1NTSUJMRV9FUlJPUih2bWxvY2spKVxuLS1cbmRyaXZlcnMvcGluY3RybC9tZXNvbi9LY29uZmlnPTYzPWNvbmZpZyBQSU5DVFJMX01FU09OX1M0XG4tLVxuZHJpdmVycy9waW5jdHJsL21lc29uL0tjb25maWctNjgtXG5kcml2ZXJzL3BpbmN0cmwvbWVzb24vS2NvbmZpZzo2OTpjb25maWcgUElOQ1RSTF9BTUxPR0lDX0E0XG5kcml2ZXJzL3BpbmN0cmwvbWVzb24vS2NvbmZpZy03MC1cdGJvb2wgXCYjMzQ7QU1MT0dJQyBwaW5jb250cm9sXCYjMzQ7XG4tLVxuZHJpdmVycy9waW5jdHJsL21lc29uL0tjb25maWctNzktXG5kcml2ZXJzL3BpbmN0cmwvbWVzb24vS2NvbmZpZzo4MDpjb25maWcgUElOQ1RSTF9BTUxPR0lDX0MzXG5kcml2ZXJzL3BpbmN0cmwvbWVzb24vS2NvbmZpZy04MS1cdHRyaXN0YXRlIFwmIzM0O0FtbG9naWMgQzMgU29DIHBpbmN0cmwgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9waW5jdHJsL21lc29uL0tjb25maWctODUtXG5kcml2ZXJzL3BpbmN0cmwvbWVzb24vS2NvbmZpZzo4Njpjb25maWcgUElOQ1RSTF9BTUxPR0lDX1Q3XG5kcml2ZXJzL3BpbmN0cmwvbWVzb24vS2NvbmZpZy04Ny1cdHRyaXN0YXRlIFwmIzM0O0FtbG9naWMgVDcgU29DIHBpbmN0cmwgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9ydGMvS2NvbmZpZz0yMTI3PWNvbmZpZyBSVENfRFJWX1NTRDIwMkRcbi0tXG5kcml2ZXJzL3J0Yy9LY29uZmlnLTIxMzctXG5kcml2ZXJzL3J0Yy9LY29uZmlnOjIxMzg6Y29uZmlnIFJUQ19EUlZfQU1MT0dJQ19BNFxuZHJpdmVycy9ydGMvS2NvbmZpZy0yMTM5LVx0dHJpc3RhdGUgXCYjMzQ7QW1sb2dpYyBSVENcJiMzNDtcbi0tXG5kcml2ZXJzL3MzOTAvY2hhci9LY29uZmlnPTk5PWNvbmZpZyBTMzkwX1RBUEVcbi0tXG5kcml2ZXJzL3MzOTAvY2hhci9LY29uZmlnLTEwOC1cbmRyaXZlcnMvczM5MC9jaGFyL0tjb25maWc6MTA5OmNvbmZpZyBWTUxPR1JEUlxuZHJpdmVycy9zMzkwL2NoYXIvS2NvbmZpZy0xMTAtXHRkZWZfdHJpc3RhdGUgbVxuLS1cbmRyaXZlcnMvc3BpL0tjb25maWc9ODY9Y29uZmlnIFNQSV9BTFRFUkFfREZMXG4tLVxuZHJpdmVycy9zcGkvS2NvbmZpZy05NC1cbmRyaXZlcnMvc3BpL0tjb25maWc6OTU6Y29uZmlnIFNQSV9BTUxPR0lDX1NQSUZDX0ExXG5kcml2ZXJzL3NwaS9LY29uZmlnLTk2LVx0dHJpc3RhdGUgXCYjMzQ7QW1sb2dpYyBBMSBTUElGQyBjb250cm9sbGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9zcGkvS2NvbmZpZy0xMDEtXG5kcml2ZXJzL3NwaS9LY29uZmlnOjEwMjpjb25maWcgU1BJX0FNTE9HSUNfU1BJRkNfQTRcbmRyaXZlcnMvc3BpL0tjb25maWctMTAzLVx0dHJpc3RhdGUgXCYjMzQ7QW1sb2dpYyBBNCBTUEkgRmxhc2ggY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvc3BpL0tjb25maWctMTExLVxuZHJpdmVycy9zcGkvS2NvbmZpZzoxMTI6Y29uZmlnIFNQSV9BTUxPR0lDX1NQSVNHXG5kcml2ZXJzL3NwaS9LY29uZmlnLTExMy1cdHRyaXN0YXRlIFwmIzM0O0FtbG9naWMgU1BJU0cgY29udHJvbGxlclwmIzM0O1xuLS1cbmRyaXZlcnMvdGhlcm1hbC9LY29uZmlnPTQzMz1lbmRtZW51XG5kcml2ZXJzL3RoZXJtYWwvS2NvbmZpZy00MzQtXG5kcml2ZXJzL3RoZXJtYWwvS2NvbmZpZzo0MzU6Y29uZmlnIEFNTE9HSUNfVEhFUk1BTFxuZHJpdmVycy90aGVybWFsL0tjb25maWctNDM2LVx0dHJpc3RhdGUgXCYjMzQ7QW1sb2dpYyBUaGVybWFsIFN1cHBvcnRcJiMzNDtcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaD0xNj1lbnVtIHtcbi0tXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaC01MS1cdCAqIHRoZSByZXN1bHRzIG9mIGF1dG9uZWdvdGF0aW9uIChpZiBNTE9fUEFVU0VfQU4gaXMgc2V0KSBvciB1c2VyXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo1MjpcdCAqIGNvbmZpZ3VyYXRpb24gKGlmIE1MT19QQVVTRV9BTiBpcyBub3Qgc2V0KS5cbmluY2x1ZGUvbGludXgvcGh5bGluay5oLTUzLVx0ICpcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTEzMzMtICpcdHNldHVwIGxpbmtzIGR1ZSB0byBBUCBNTEQgcmVtb3ZpbmcgdGhlIGNvcnJlc3BvbmRpbmcgYWZmaWxpYXRlZCBBUHMgd2l0aFxuaW5jbHVkZS91YXBpL2xpbnV4L25sODAyMTEuaDoxMzM0OiAqXHRNdWx0aS1MaW5rIHJlY29uZmlndXJhdGlvbi4gJU5MODAyMTFfQVRUUl9NTE9fTElOS1MgaXMgdXNlZCB0byBwcm92aWRlXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTEzMzUtICpcdGluZm9ybWF0aW9uIGFib3V0IHRoZSByZW1vdmVkIFNUQSBNTEQgc2V0dXAgbGlua3MuXG4tLVxubmV0L2RzYS9wb3J0LmM9MTg0Mj1zdGF0aWMgdm9pZCBkc2Ffc2hhcmVkX3BvcnRfbGlua19kb3duKHN0cnVjdCBkc2FfcG9ydCAqZHApXG4tLVxubmV0L2RzYS9wb3J0LmMtMTg0Ni1cdGlmIChkcy1cdTAwM2VwaHlsaW5rX21hY19vcHMgXHUwMDI2XHUwMDI2IGRzLVx1MDAzZXBoeWxpbmtfbWFjX29wcy1cdTAwM2VtYWNfbGlua19kb3duKVxubmV0L2RzYS9wb3J0LmM6MTg0NzpcdFx0ZHMtXHUwMDNlcGh5bGlua19tYWNfb3BzLVx1MDAzZW1hY19saW5rX2Rvd24oXHUwMDI2ZHAtXHUwMDNlcGxfY29uZmlnLCBNTE9fQU5fRklYRUQsXG5uZXQvZHNhL3BvcnQuYy0xODQ4LVx0XHRcdFx0XHRcdCAgIFBIWV9JTlRFUkZBQ0VfTU9ERV9OQSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTQgMTU6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA1NzMKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTUxPIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKioKCk9rYXksIHNvIEkmIzM5O20gZm9jdXNpbmcgb24gTXVsdGktTGluayBPcGVyYXRpb24gKE1MTykgd2l0aGluIHRoZSBMaW51eCB3aXJlbGVzcyBzdGFjay4gUmlnaHQgbm93LCBJJiMzOTttIHRoaW5raW5nLCAmIzM0O05vIHNwZWNpZmljIE1MTyBjb25maWd1cmF0aW9uIGlzIGp1bXBpbmcgb3V0IGF0IG1lOyBpdCBzZWVtcyB0byBiZSBoYW5kbGVkIGFzIGFuIGludGVncmFsIHBhcnQgb2YgbWFjODAyMTEuJiMzNDsgSSBzaG91bGQgZG91YmxlLWNoZWNrIHRvIGJlIGFic29sdXRlbHkgc3VyZSB0aGVyZSBpc24mIzM5O3Qgc29tZSBoaWRkZW4gc2V0dGluZyBvciBzdWJ0bGUga25vYiBzb21ld2hlcmUgZWxzZSBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlcyB0aGF0IEkmIzM5O20gbWlzc2luZy4KCkdvb2QsIEkgY29uZmlybWVkIHRoYXQgYE1BQzgwMjExYCBhbmQgcG90ZW50aWFsbHkgYE1BQzgwMjExX0hXU0lNYCBhcmUgbGlrZWx5IHN1ZmZpY2llbnQgZm9yIGluaXRpYWwgZW5hYmxpbmcuIE5vdywgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGFzc29jaWF0aW9uIHByb2Nlc3MgaW50ZXJhY3RzIHdpdGggTUxPLCBJJiMzOTttIGdvaW5nIHRvIGRlbHZlIGludG8gdGhlIGBpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmtgIGZ1bmN0aW9uIGxvY2F0ZWQgaW4gYG5ldC9tYWM4MDIxMS9tbG1lLmNgLiBJJiMzOTttIGhvcGluZyB0byBzcG90IHNvbWUgcmVsYXRlZCBmdW5jdGlvbiBjYWxscyBvciBwYXJhbWV0ZXJzLiBIb3BlZnVsbHkgdGhlcmUgYXJlIHNvbWUgY2x1ZXMgaW4gdGhlIGxpbmsgY29uZmlndXJhdGlvbi4gRnJvbSB0aGVyZSwgSSBjYW4gZGV0ZXJtaW5lIHRoZSByb2xlIE1MTyBwbGF5cyBpbiB0aGlzIGNydWNpYWwgc3RlcCBvZiB0aGUgY29ubmVjdGlvbiBwcm9jZWR1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDE1OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9hc3NvY19jb25maWdfbGluayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvbWxtZS5jPTU3ODE9c3RhdGljIHZvaWQgaWVlZTgwMjExX2VwY3NfdGVhcmRvd24oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy01ODQ1LVxubmV0L21hYzgwMjExL21sbWUuYzo1ODQ2OnN0YXRpYyBib29sIGllZWU4MDIxMV9hc3NvY19jb25maWdfbGluayhzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNTg0Ny1cdFx0XHRcdFx0c3RydWN0IGxpbmtfc3RhX2luZm8gKmxpbmtfc3RhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9NjkzNz1zdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2Nfc3VjY2VzcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcwNzItXG5uZXQvbWFjODAyMTEvbWxtZS5jOjcwNzM6XHRcdGlmICghaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rKGxpbmssIGxpbmtfc3RhLFxubmV0L21hYzgwMjExL21sbWUuYy03MDc0LVx0XHRcdFx0XHRcdCBhc3NvY19kYXRhLVx1MDAzZWxpbmtbbGlua19pZF0uYnNzLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTA4ODE9aWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy0xMTA1NS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTEwNTY6XHRcdGlmICghaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rKGxpbmssIGxpbmtfc3RhLFxubmV0L21hYzgwMjExL21sbWUuYy0xMTA1Ny1cdFx0XHRcdFx0XHQgYWRkX2xpbmtzX2RhdGEtXHUwMDNlbGlua1tsaW5rX2lkXS5ic3MsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDE1OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNDIxCgkJCQkJCQlvdXRwdXQ6IDE5OAoJCQkJCQkJdGhvdWdodHM6IDgxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbiBhbmQgQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7dmUgaWRlbnRpZmllZCBgaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rYCBhcyBhIGtleSBmdW5jdGlvbiB0byBmb2N1cyBvbiBmb3IgZnV6emluZy4gSSYjMzk7bSBhbHNvIHB1dHRpbmcgYGllZWU4MDIxMV9hc3NvY19zdWNjZXNzYCBhbmQgYGllZWU4MDIxMV9wcm9jZXNzX21sX3JlY29uZl9yZXNwYCBvbiB0aGUgcmFkYXIsIGdpdmVuIHRoZWlyIHBvdGVudGlhbCBpbnRlcmFjdGlvbi4gVGhlIHByaW1hcnkgY29uZmlncyBJJiMzOTttIGludGVyZXN0ZWQgaW4gYXJlIGBNQUM4MDIxMWAgYW5kIGBNQUM4MDIxMV9IV1NJTWAuIEkmIzM5O3ZlIGNvbmZpcm1lZCB0aGF0IGBNQUM4MDIxMV9IV1NJTWAgaXMsIGFzIGV4cGVjdGVkLCB0aGUgc2ltdWxhdGVkIHJhZGlvIGVudmlyb25tZW50IGZvciBtYWM4MDIxMSwgbWFraW5nIGl0IHBlcmZlY3QgZm9yIHRoaXMga2luZCBvZiB0ZXN0aW5nLgoKTm93LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBwYXRjaC4gSXQgc2VlbXMgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBsaWVzIGluIGVycm9yIGhhbmRsaW5nIHdpdGhpbiB0aGUgYXNzb2NpYXRpb24gcmVzcG9uc2UgcHJvY2Vzc2luZywgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gTXVsdGktTGluayAoTUwpIGVsZW1lbnRzLiBUaGUgb3JpZ2luYWwgY29kZSYjMzk7cyBsb2dpYyBpcyBiZWluZyB0aWdodGVuZWQgdXA7IGluIHBhcnRpY3VsYXIsIHRoZXJlJiMzOTtzIGEgbW9yZSBncmFudWxhciBjaGVjayBmb3IgdGhlIGBic3NfcGFyYW1fY2hfY250YCBmaWVsZCwgYWxvbmcgd2l0aCBzZXZlcmFsIGBsaW5rX2luZm9gIGFuZCBgc2RhdGFfaW5mb2AgbWVzc2FnZXMuIFRoZSBrZXkgY2hhbmdlIGlzIHRoYXQgaXQgbm93IHZlcmlmaWVzIHRoZSBwcmVzZW5jZSBvZiAgYElFRUU4MDIxMV9NTEVfU1RBX0NPTlRST0xfQlNTX1BBUkFNX0NIQU5HRV9DTlRfUFJFU0VOVGAgdXNpbmcgYGNwdV90b19sZTE2YCBhbmQgZXh0cmFjdHMgdGhlIGNvdW50IGRpZmZlcmVudGx5LCBkZXBlbmRpbmcgb24gd2hldGhlciBpdCYjMzk7cyBwcmVzZW50IGluIGEgcGVyLVNUQSBwcm9maWxlIG9yIHRoZSBiYXNpYyBNTCBlbGVtZW50LiBUaGlzIGNvdWxkIGRlZmluaXRlbHkgaW50cm9kdWNlIGludGVyZXN0aW5nIGVkZ2UgY2FzZXMgYW5kIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIFRoZSBjb2RlIGFsc28gYXBwZWFycyB0byBwYXJzZSBhbmQgaGFuZGxlIGBic3NfcGFyYW1fY2hfY250YCBmcm9tIGRpZmZlcmVudCBsb2NhdGlvbnMgZGVwZW5kaW5nIG9uIHdoZXRoZXIgaXQmIzM5O3MgaW4gdGhlIHBlci1TVEEgcHJvZmlsZSBvciB0aGUgbWFpbiBNTCBlbGVtZW50LiBUaGlzIGNvdWxkIGFsc28gYmUgYSBwbGFjZSB0byBpbnRyb2R1Y2UgZnV6emluZyBpbnB1dHMuCgpHaXZlbiB0aGVzZSBjaGFuZ2VzLCBlc3BlY2lhbGx5IHRoZSBhZGRlZCBjaGVja3MgYW5kIHBhcnNpbmcgb2YgTUwgZWxlbWVudHMsIHRoaXMgbG9va3MgbGlrZSBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZy4gSSB3aWxsIGNhbGwgYHNldC1yZXN1bHRzYCBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE0IDE1OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2llZWU4MDIxMV9hc3NvY19jb25maWdfbGluayYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfYXNzb2Nfc3VjY2VzcyYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfcHJvY2Vzc19tbF9yZWNvbmZfcmVzcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFyc2luZyBsb2dpYyBvZiBNdWx0aS1MaW5rIChNTCkgZWxlbWVudHMgaW4gODAyLjExIGFzc29jaWF0aW9uIHJlc3BvbnNlcyB3aXRoaW4gdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gSXQgY2hhbmdlcyBob3cgdGhlIEJTUyBwYXJhbWV0ZXIgY2hhbmdlIGNvdW50IGlzIGV4dHJhY3RlZCBhbmQgaGFuZGxlcyBtaXNzaW5nIG9yIG1hbGZvcm1lZCBlbGVtZW50cy4gVGhpcyBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY29yZSBsb2dpYyBmb3IgV2ktRmkgNyAoODAyLjExYmUpIE11bHRpLUxpbmsgT3BlcmF0aW9uIChNTE8pIGFuZCBjYW4gYmUgdGVzdGVkIHZpYSBtYWM4MDIxMV9od3NpbS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmsmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX2Fzc29jX3N1Y2Nlc3MmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3AmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhcnNpbmcgbG9naWMgb2YgTXVsdGktTGluayAoTUwpIGVsZW1lbnRzIGluIDgwMi4xMSBhc3NvY2lhdGlvbiByZXNwb25zZXMgd2l0aGluIHRoZSBtYWM4MDIxMSBzdWJzeXN0ZW0uIEl0IGNoYW5nZXMgaG93IHRoZSBCU1MgcGFyYW1ldGVyIGNoYW5nZSBjb3VudCBpcyBleHRyYWN0ZWQgYW5kIGhhbmRsZXMgbWlzc2luZyBvciBtYWxmb3JtZWQgZWxlbWVudHMuIFRoaXMgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvcmUgbG9naWMgZm9yIFdpLUZpIDcgKDgwMi4xMWJlKSBNdWx0aS1MaW5rIE9wZXJhdGlvbiAoTUxPKSBhbmQgY2FuIGJlIHRlc3RlZCB2aWEgbWFjODAyMTFfaHdzaW0uJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNTozNjoyMi45MDMwMzE5NTNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NjYxOTk4NTkyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmtcIixcbiAgICBcImllZWU4MDIxMV9hc3NvY19zdWNjZXNzXCIsXG4gICAgXCJpZWVlODAyMTFfcHJvY2Vzc19tbF9yZWNvbmZfcmVzcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBwYXJzaW5nIGxvZ2ljIG9mIE11bHRpLUxpbmsgKE1MKSBlbGVtZW50cyBpbiA4MDIuMTEgYXNzb2NpYXRpb24gcmVzcG9uc2VzIHdpdGhpbiB0aGUgbWFjODAyMTEgc3Vic3lzdGVtLiBJdCBjaGFuZ2VzIGhvdyB0aGUgQlNTIHBhcmFtZXRlciBjaGFuZ2UgY291bnQgaXMgZXh0cmFjdGVkIGFuZCBoYW5kbGVzIG1pc3Npbmcgb3IgbWFsZm9ybWVkIGVsZW1lbnRzLiBUaGlzIGlzIHJlYWNoYWJsZSBhbmQgZnVuY3Rpb25hbCBjb3JlIGxvZ2ljIGZvciBXaS1GaSA3ICg4MDIuMTFiZSkgTXVsdGktTGluayBPcGVyYXRpb24gKE1MTykgYW5kIGNhbiBiZSB0ZXN0ZWQgdmlhIG1hYzgwMjExX2h3c2ltLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNTozNjoyMi45MDMwMzg4MjNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxMzA3NzM1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGI3NTVlNmU0ODM0YjcxYzg1ODE3MDNkNzY2NDIwNjdjY2NhMWVjM2FcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMTU6MzY6MjEgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL21sbWUuYyBiL25ldC9tYWM4MDIxMS9tbG1lLmNcXG5pbmRleCA5ZTkyMzM3YmI2ZjllNS4uZjExNzJhOTUwMjg0ZjAgMTAwNjQ0XFxuLS0tIGEvbmV0L21hYzgwMjExL21sbWUuY1xcbisrKyBiL25ldC9tYWM4MDIxMS9tbG1lLmNcXG5AQCAtNTg3MSw4ICs1ODcxLDYgQEAgc3RhdGljIGJvb2wgaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbiBcXHRjb25zdCBzdHJ1Y3QgY2ZnODAyMTFfYnNzX2llcyAqYnNzX2llcyA9IE5VTEw7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kO1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMl8xMV9lbGVtcyAqZWxlbXM7XFxuLVxcdGNvbnN0IF9fbGUxNiBwcm9mX2Jzc19wYXJhbV9jaF9wcmVzZW50ID1cXG4tXFx0XFx0Y3B1X3RvX2xlMTYoSUVFRTgwMjExX01MRV9TVEFfQ09OVFJPTF9CU1NfUEFSQU1fQ0hBTkdFX0NOVF9QUkVTRU5UKTtcXG4gXFx0dTE2IGNhcGFiX2luZm87XFxuIFxcdGJvb2wgcmV0O1xcbiBcXG5AQCAtNTg4OCwyMCArNTg4NiwxMyBAQCBzdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmsoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXFxuIFxcdFxcdCAqIHN1Y2Nlc3NmdWwsIHNvIHNldCB0aGUgc3RhdHVzIGRpcmVjdGx5IHRvIHN1Y2Nlc3NcXG4gXFx0XFx0ICovXFxuIFxcdFxcdGFzc29jX2RhdGEtXFx1MDAzZWxpbmtbbGlua19pZF0uc3RhdHVzID0gV0xBTl9TVEFUVVNfU1VDQ0VTUztcXG4tXFx0XFx0aWYgKGVsZW1zLVxcdTAwM2VtbF9iYXNpYykge1xcbi1cXHRcXHRcXHRpbnQgYnNzX3BhcmFtX2NoX2NudCA9XFxuLVxcdFxcdFxcdFxcdGllZWU4MDIxMV9tbGVfZ2V0X2Jzc19wYXJhbV9jaF9jbnQoKGNvbnN0IHZvaWQgKillbGVtcy1cXHUwMDNlbWxfYmFzaWMpO1xcbi1cXG4tXFx0XFx0XFx0aWYgKGJzc19wYXJhbV9jaF9jbnQgXFx1MDAzYyAwKSB7XFxuLVxcdFxcdFxcdFxcdHJldCA9IGZhbHNlO1xcbi1cXHRcXHRcXHRcXHRnb3RvIG91dDtcXG4tXFx0XFx0XFx0fVxcbi1cXHRcXHRcXHRic3NfY29uZi1cXHUwMDNlYnNzX3BhcmFtX2NoX2NudCA9IGJzc19wYXJhbV9jaF9jbnQ7XFxuLVxcdFxcdFxcdGJzc19jb25mLVxcdTAwM2Vic3NfcGFyYW1fY2hfY250X2xpbmtfaWQgPSBsaW5rX2lkO1xcbi1cXHRcXHR9XFxuLVxcdH0gZWxzZSBpZiAoZWxlbXMtXFx1MDAzZXBhcnNlX2Vycm9yIFxcdTAwMjYgSUVFRTgwMjExX1BBUlNFX0VSUl9EVVBfTkVTVF9NTF9CQVNJQyB8fFxcbi1cXHRcXHQgICAhZWxlbXMtXFx1MDAzZXByb2YgfHxcXG4tXFx0XFx0ICAgIShlbGVtcy1cXHUwMDNlcHJvZi1cXHUwMDNlY29udHJvbCBcXHUwMDI2IHByb2ZfYnNzX3BhcmFtX2NoX3ByZXNlbnQpKSB7XFxuK1xcdH0gZWxzZSBpZiAoZWxlbXMtXFx1MDAzZXBhcnNlX2Vycm9yIFxcdTAwMjYgSUVFRTgwMjExX1BBUlNFX0VSUl9EVVBfTkVTVF9NTF9CQVNJQykge1xcbitcXHRcXHRzZGF0YV9pbmZvKHNkYXRhLFxcbitcXHRcXHRcXHQgICBcXFwiYXNzb2NpYXRpb24gcmVzcG9uc2UgaGFkIG5lc3RlZCBtdWx0aS1saW5rIGVsZW1lbnRcXFxcblxcXCIpO1xcbitcXHRcXHRyZXQgPSBmYWxzZTtcXG4rXFx0XFx0Z290byBvdXQ7XFxuK1xcdH0gZWxzZSBpZiAoIWVsZW1zLVxcdTAwM2Vwcm9mKSB7XFxuK1xcdFxcdGxpbmtfaW5mbyhsaW5rLCBcXFwibGluayBtaXNzaW5nIGZyb20gYXNzb2NpYXRpb24gcmVzcG9uc2VcXFxcblxcXCIpO1xcbiBcXHRcXHRyZXQgPSBmYWxzZTtcXG4gXFx0XFx0Z290byBvdXQ7XFxuIFxcdH0gZWxzZSB7XFxuQEAgLTU5MTUsMTAgKzU5MDYsNiBAQCBzdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmsoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRjYXBhYl9pbmZvID0gZ2V0X3VuYWxpZ25lZF9sZTE2KHB0cik7XFxuIFxcdFxcdGFzc29jX2RhdGEtXFx1MDAzZWxpbmtbbGlua19pZF0uc3RhdHVzID0gZ2V0X3VuYWxpZ25lZF9sZTE2KHB0ciArIDIpO1xcbi1cXHRcXHRic3NfcGFyYW1fY2hfY250ID1cXG4tXFx0XFx0XFx0aWVlZTgwMjExX21sZV9iYXNpY19zdGFfcHJvZl9ic3NfcGFyYW1fY2hfY250KGVsZW1zLVxcdTAwM2Vwcm9mKTtcXG4tXFx0XFx0YnNzX2NvbmYtXFx1MDAzZWJzc19wYXJhbV9jaF9jbnQgPSBic3NfcGFyYW1fY2hfY250O1xcbi1cXHRcXHRic3NfY29uZi1cXHUwMDNlYnNzX3BhcmFtX2NoX2NudF9saW5rX2lkID0gbGlua19pZDtcXG4gXFxuIFxcdFxcdGlmIChhc3NvY19kYXRhLVxcdTAwM2VsaW5rW2xpbmtfaWRdLnN0YXR1cyAhPSBXTEFOX1NUQVRVU19TVUNDRVNTKSB7XFxuIFxcdFxcdFxcdGxpbmtfaW5mbyhsaW5rLCBcXFwiYXNzb2NpYXRpb24gcmVzcG9uc2Ugc3RhdHVzIGNvZGU9JXVcXFxcblxcXCIsXFxuQEAgLTU5MjYsNiArNTkxMywzMiBAQCBzdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmsoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXFxuIFxcdFxcdFxcdHJldCA9IHRydWU7XFxuIFxcdFxcdFxcdGdvdG8gb3V0O1xcbiBcXHRcXHR9XFxuK1xcbitcXHRcXHRpZiAoIShlbGVtcy1cXHUwMDNlcHJvZi1cXHUwMDNlY29udHJvbCBcXHUwMDI2XFxuK1xcdFxcdCAgICAgIGNwdV90b19sZTE2KElFRUU4MDIxMV9NTEVfU1RBX0NPTlRST0xfQlNTX1BBUkFNX0NIQU5HRV9DTlRfUFJFU0VOVCkpKSB7XFxuK1xcdFxcdFxcdGxpbmtfaW5mbyhsaW5rLFxcbitcXHRcXHRcXHRcXHQgIFxcXCJwZXItU1RBIHByb2ZpbGUgbWlzc2luZyBCU1MgcGFyYW1ldGVyIGNoYW5nZSBjb3VudFxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdHJldCA9IGZhbHNlO1xcbitcXHRcXHRcXHRnb3RvIG91dDtcXG4rXFx0XFx0fVxcbitcXHRcXHRic3NfcGFyYW1fY2hfY250ID1cXG4rXFx0XFx0XFx0aWVlZTgwMjExX21sZV9iYXNpY19zdGFfcHJvZl9ic3NfcGFyYW1fY2hfY250KGVsZW1zLVxcdTAwM2Vwcm9mKTtcXG4rXFx0XFx0YnNzX2NvbmYtXFx1MDAzZWJzc19wYXJhbV9jaF9jbnQgPSBic3NfcGFyYW1fY2hfY250O1xcbitcXHRcXHRic3NfY29uZi1cXHUwMDNlYnNzX3BhcmFtX2NoX2NudF9saW5rX2lkID0gbGlua19pZDtcXG4rXFx0fVxcbitcXG4rXFx0aWYgKGxpbmtfaWQgPT0gYXNzb2NfZGF0YS1cXHUwMDNlYXNzb2NfbGlua19pZCBcXHUwMDI2XFx1MDAyNiBlbGVtcy1cXHUwMDNlbWxfYmFzaWMpIHtcXG4rXFx0XFx0aW50IGJzc19wYXJhbV9jaF9jbnQgPVxcbitcXHRcXHRcXHRpZWVlODAyMTFfbWxlX2dldF9ic3NfcGFyYW1fY2hfY250KChjb25zdCB2b2lkICopZWxlbXMtXFx1MDAzZW1sX2Jhc2ljKTtcXG4rXFxuK1xcdFxcdGlmIChic3NfcGFyYW1fY2hfY250IFxcdTAwM2MgMCkge1xcbitcXHRcXHRcXHRzZGF0YV9pbmZvKHNkYXRhLFxcbitcXHRcXHRcXHRcXHQgICBcXFwiTm8gQlNTIHBhcmFtZXRlciBjaGFuZ2UgY291bnQgaW4gYXNzb2MgcmVzcG9uc2VcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRyZXQgPSBmYWxzZTtcXG4rXFx0XFx0XFx0Z290byBvdXQ7XFxuK1xcdFxcdH1cXG4rXFx0XFx0YnNzX2NvbmYtXFx1MDAzZWJzc19wYXJhbV9jaF9jbnQgPSBic3NfcGFyYW1fY2hfY250O1xcbitcXHRcXHRic3NfY29uZi1cXHUwMDNlYnNzX3BhcmFtX2NoX2NudF9saW5rX2lkID0gbGlua19pZDtcXG4gXFx0fVxcbiBcXG4gXFx0aWYgKCFpc19zMWcgXFx1MDAyNlxcdTAwMjYgIWVsZW1zLVxcdTAwM2VzdXBwX3JhdGVzKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDE1OjM2OjIzLjYxNzExNTYxNFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzU5MDU4OTE3MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rXCIsXG4gICAgXCJpZWVlODAyMTFfYXNzb2Nfc3VjY2Vzc1wiLFxuICAgIFwiaWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3BcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFyc2luZyBsb2dpYyBvZiBNdWx0aS1MaW5rIChNTCkgZWxlbWVudHMgaW4gODAyLjExIGFzc29jaWF0aW9uIHJlc3BvbnNlcyB3aXRoaW4gdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gSXQgY2hhbmdlcyBob3cgdGhlIEJTUyBwYXJhbWV0ZXIgY2hhbmdlIGNvdW50IGlzIGV4dHJhY3RlZCBhbmQgaGFuZGxlcyBtaXNzaW5nIG9yIG1hbGZvcm1lZCBlbGVtZW50cy4gVGhpcyBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY29yZSBsb2dpYyBmb3IgV2ktRmkgNyAoODAyLjExYmUpIE11bHRpLUxpbmsgT3BlcmF0aW9uIChNTE8pIGFuZCBjYW4gYmUgdGVzdGVkIHZpYSBtYWM4MDIxMV9od3NpbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBiNzU1ZTZlNDgzNGI3MWM4NTgxNzAzZDc2NjQyMDY3Y2NjYTFlYzNhXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMTQgMTU6MzY6MjEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvbWxtZS5jIGIvbmV0L21hYzgwMjExL21sbWUuY1xuaW5kZXggOWU5MjMzN2JiNmY5ZTUuLmYxMTcyYTk1MDI4NGYwIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL21sbWUuY1xuKysrIGIvbmV0L21hYzgwMjExL21sbWUuY1xuQEAgLTU4NzEsOCArNTg3MSw2IEBAIHN0YXRpYyBib29sIGllZWU4MDIxMV9hc3NvY19jb25maWdfbGluayhzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbiBcdGNvbnN0IHN0cnVjdCBjZmc4MDIxMV9ic3NfaWVzICpic3NfaWVzID0gTlVMTDtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3VwcG9ydGVkX2JhbmQgKnNiYW5kO1xuIFx0c3RydWN0IGllZWU4MDJfMTFfZWxlbXMgKmVsZW1zO1xuLVx0Y29uc3QgX19sZTE2IHByb2ZfYnNzX3BhcmFtX2NoX3ByZXNlbnQgPVxuLVx0XHRjcHVfdG9fbGUxNihJRUVFODAyMTFfTUxFX1NUQV9DT05UUk9MX0JTU19QQVJBTV9DSEFOR0VfQ05UX1BSRVNFTlQpO1xuIFx0dTE2IGNhcGFiX2luZm87XG4gXHRib29sIHJldDtcbiBcbkBAIC01ODg4LDIwICs1ODg2LDEzIEBAIHN0YXRpYyBib29sIGllZWU4MDIxMV9hc3NvY19jb25maWdfbGluayhzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbiBcdFx0ICogc3VjY2Vzc2Z1bCwgc28gc2V0IHRoZSBzdGF0dXMgZGlyZWN0bHkgdG8gc3VjY2Vzc1xuIFx0XHQgKi9cbiBcdFx0YXNzb2NfZGF0YS1cdTAwM2VsaW5rW2xpbmtfaWRdLnN0YXR1cyA9IFdMQU5fU1RBVFVTX1NVQ0NFU1M7XG4tXHRcdGlmIChlbGVtcy1cdTAwM2VtbF9iYXNpYykge1xuLVx0XHRcdGludCBic3NfcGFyYW1fY2hfY250ID1cbi1cdFx0XHRcdGllZWU4MDIxMV9tbGVfZ2V0X2Jzc19wYXJhbV9jaF9jbnQoKGNvbnN0IHZvaWQgKillbGVtcy1cdTAwM2VtbF9iYXNpYyk7XG4tXG4tXHRcdFx0aWYgKGJzc19wYXJhbV9jaF9jbnQgXHUwMDNjIDApIHtcbi1cdFx0XHRcdHJldCA9IGZhbHNlO1xuLVx0XHRcdFx0Z290byBvdXQ7XG4tXHRcdFx0fVxuLVx0XHRcdGJzc19jb25mLVx1MDAzZWJzc19wYXJhbV9jaF9jbnQgPSBic3NfcGFyYW1fY2hfY250O1xuLVx0XHRcdGJzc19jb25mLVx1MDAzZWJzc19wYXJhbV9jaF9jbnRfbGlua19pZCA9IGxpbmtfaWQ7XG4tXHRcdH1cbi1cdH0gZWxzZSBpZiAoZWxlbXMtXHUwMDNlcGFyc2VfZXJyb3IgXHUwMDI2IElFRUU4MDIxMV9QQVJTRV9FUlJfRFVQX05FU1RfTUxfQkFTSUMgfHxcbi1cdFx0ICAgIWVsZW1zLVx1MDAzZXByb2YgfHxcbi1cdFx0ICAgIShlbGVtcy1cdTAwM2Vwcm9mLVx1MDAzZWNvbnRyb2wgXHUwMDI2IHByb2ZfYnNzX3BhcmFtX2NoX3ByZXNlbnQpKSB7XG4rXHR9IGVsc2UgaWYgKGVsZW1zLVx1MDAzZXBhcnNlX2Vycm9yIFx1MDAyNiBJRUVFODAyMTFfUEFSU0VfRVJSX0RVUF9ORVNUX01MX0JBU0lDKSB7XG4rXHRcdHNkYXRhX2luZm8oc2RhdGEsXG4rXHRcdFx0ICAgXCJhc3NvY2lhdGlvbiByZXNwb25zZSBoYWQgbmVzdGVkIG11bHRpLWxpbmsgZWxlbWVudFxcblwiKTtcbitcdFx0cmV0ID0gZmFsc2U7XG4rXHRcdGdvdG8gb3V0O1xuK1x0fSBlbHNlIGlmICghZWxlbXMtXHUwMDNlcHJvZikge1xuK1x0XHRsaW5rX2luZm8obGluaywgXCJsaW5rIG1pc3NpbmcgZnJvbSBhc3NvY2lhdGlvbiByZXNwb25zZVxcblwiKTtcbiBcdFx0cmV0ID0gZmFsc2U7XG4gXHRcdGdvdG8gb3V0O1xuIFx0fSBlbHNlIHtcbkBAIC01OTE1LDEwICs1OTA2LDYgQEAgc3RhdGljIGJvb2wgaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxuIFx0XHQgKi9cbiBcdFx0Y2FwYWJfaW5mbyA9IGdldF91bmFsaWduZWRfbGUxNihwdHIpO1xuIFx0XHRhc3NvY19kYXRhLVx1MDAzZWxpbmtbbGlua19pZF0uc3RhdHVzID0gZ2V0X3VuYWxpZ25lZF9sZTE2KHB0ciArIDIpO1xuLVx0XHRic3NfcGFyYW1fY2hfY250ID1cbi1cdFx0XHRpZWVlODAyMTFfbWxlX2Jhc2ljX3N0YV9wcm9mX2Jzc19wYXJhbV9jaF9jbnQoZWxlbXMtXHUwMDNlcHJvZik7XG4tXHRcdGJzc19jb25mLVx1MDAzZWJzc19wYXJhbV9jaF9jbnQgPSBic3NfcGFyYW1fY2hfY250O1xuLVx0XHRic3NfY29uZi1cdTAwM2Vic3NfcGFyYW1fY2hfY250X2xpbmtfaWQgPSBsaW5rX2lkO1xuIFxuIFx0XHRpZiAoYXNzb2NfZGF0YS1cdTAwM2VsaW5rW2xpbmtfaWRdLnN0YXR1cyAhPSBXTEFOX1NUQVRVU19TVUNDRVNTKSB7XG4gXHRcdFx0bGlua19pbmZvKGxpbmssIFwiYXNzb2NpYXRpb24gcmVzcG9uc2Ugc3RhdHVzIGNvZGU9JXVcXG5cIixcbkBAIC01OTI2LDYgKzU5MTMsMzIgQEAgc3RhdGljIGJvb2wgaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxuIFx0XHRcdHJldCA9IHRydWU7XG4gXHRcdFx0Z290byBvdXQ7XG4gXHRcdH1cbitcbitcdFx0aWYgKCEoZWxlbXMtXHUwMDNlcHJvZi1cdTAwM2Vjb250cm9sIFx1MDAyNlxuK1x0XHQgICAgICBjcHVfdG9fbGUxNihJRUVFODAyMTFfTUxFX1NUQV9DT05UUk9MX0JTU19QQVJBTV9DSEFOR0VfQ05UX1BSRVNFTlQpKSkge1xuK1x0XHRcdGxpbmtfaW5mbyhsaW5rLFxuK1x0XHRcdFx0ICBcInBlci1TVEEgcHJvZmlsZSBtaXNzaW5nIEJTUyBwYXJhbWV0ZXIgY2hhbmdlIGNvdW50XFxuXCIpO1xuK1x0XHRcdHJldCA9IGZhbHNlO1xuK1x0XHRcdGdvdG8gb3V0O1xuK1x0XHR9XG4rXHRcdGJzc19wYXJhbV9jaF9jbnQgPVxuK1x0XHRcdGllZWU4MDIxMV9tbGVfYmFzaWNfc3RhX3Byb2ZfYnNzX3BhcmFtX2NoX2NudChlbGVtcy1cdTAwM2Vwcm9mKTtcbitcdFx0YnNzX2NvbmYtXHUwMDNlYnNzX3BhcmFtX2NoX2NudCA9IGJzc19wYXJhbV9jaF9jbnQ7XG4rXHRcdGJzc19jb25mLVx1MDAzZWJzc19wYXJhbV9jaF9jbnRfbGlua19pZCA9IGxpbmtfaWQ7XG4rXHR9XG4rXG4rXHRpZiAobGlua19pZCA9PSBhc3NvY19kYXRhLVx1MDAzZWFzc29jX2xpbmtfaWQgXHUwMDI2XHUwMDI2IGVsZW1zLVx1MDAzZW1sX2Jhc2ljKSB7XG4rXHRcdGludCBic3NfcGFyYW1fY2hfY250ID1cbitcdFx0XHRpZWVlODAyMTFfbWxlX2dldF9ic3NfcGFyYW1fY2hfY250KChjb25zdCB2b2lkICopZWxlbXMtXHUwMDNlbWxfYmFzaWMpO1xuK1xuK1x0XHRpZiAoYnNzX3BhcmFtX2NoX2NudCBcdTAwM2MgMCkge1xuK1x0XHRcdHNkYXRhX2luZm8oc2RhdGEsXG4rXHRcdFx0XHQgICBcIk5vIEJTUyBwYXJhbWV0ZXIgY2hhbmdlIGNvdW50IGluIGFzc29jIHJlc3BvbnNlXFxuXCIpO1xuK1x0XHRcdHJldCA9IGZhbHNlO1xuK1x0XHRcdGdvdG8gb3V0O1xuK1x0XHR9XG4rXHRcdGJzc19jb25mLVx1MDAzZWJzc19wYXJhbV9jaF9jbnQgPSBic3NfcGFyYW1fY2hfY250O1xuK1x0XHRic3NfY29uZi1cdTAwM2Vic3NfcGFyYW1fY2hfY250X2xpbmtfaWQgPSBsaW5rX2lkO1xuIFx0fVxuIFxuIFx0aWYgKCFpc19zMWcgXHUwMDI2XHUwMDI2ICFlbGVtcy1cdTAwM2VzdXBwX3JhdGVzKSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNTozNjoyMy42MTcxMTc0MzRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODY4NTEwNjYxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYG5ldC9tYWM4MDIxMS9tbG1lLmNgIFBhdGNoKipcblxuT2theSwgc28gSSBoYXZlIGEgcGF0Y2ggdGhhdCdzIHRvdWNoaW5nIGBuZXQvbWFjODAyMTEvbWxtZS5jYC4gUmlnaHQgYXdheSwgdGhhdCBmbGFncyBpdCBhcyBzb21ldGhpbmcgcHJldHR5IGNvcmUgd2l0aGluIHRoZSBtYWM4MDIxMSBzdWJzeXN0ZW0uIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgdG8gYmUgbW9kaWZ5aW5nIHRoZSBgaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rYCBmdW5jdGlvbiwgd2hpY2ggZGVhbHMgd2l0aCBob3cgYGJzc19wYXJhbV9jaF9jbnRgIGlzIGhhbmRsZWQgZHVyaW5nIGFzc29jaWF0aW9uIHJlc3BvbnNlcy4gVGhhdCBzb3VuZHMgbGlrZSBhIGZhaXJseSBsb3ctbGV2ZWwgbmV0d29ya2luZyBkZXRhaWwsIHJlbGF0ZWQgdG8gY2hhbm5lbCBjb25maWd1cmF0aW9uLCB3aGljaCBpcyBwcmV0dHkgaW1wb3J0YW50IGZvciBhIHNvbGlkIGNvbm5lY3Rpb24uXG5cbkdpdmVuIHRoYXQgdGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUsIG15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgYW5kIGltcGFjdC4gSSBuZWVkIHRvIGRpZyBpbnRvIGBpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmtgIGFuZCBzZWUgd2hlcmUgaXQncyBjYWxsZWQgYW5kLCBtb3JlIGltcG9ydGFudGx5LCB3aGF0IGNvbmZpZ3VyYXRpb25zIGFyZSByZWxldmFudCB0byBpdHMgb3BlcmF0aW9uLiBJJ20gZ29pbmcgdG8gaGF2ZSB0byBkaXZlIGludG8gdGhlIGNhbGwgc2l0ZXMgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUuXG5cblNpbmNlIHRoaXMgaXMgbWFjODAyMTEsIEknbSBnb2luZyB0byBxdWlja2x5IGNvbmZpcm0gdGhhdCBgQ09ORklHX01BQzgwMjExYCBpcyBlbmFibGVkLCB3aGljaCBzaG91bGQgYmUgdGhlIGNhc2UuIE5vdywgdG8gbWFrZSB0aGlzIGVhc2llciBJJ2xsIHVzZSBgZ3JlcHBlcmAgdG8gcXVpY2tseSBsb2NhdGUgYWxsIGluc3RhbmNlcyBvZiBgaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHF1aWNrIG92ZXJ2aWV3IG9mIGhvdyB0aGlzIGZ1bmN0aW9uIGZpdHMgaW50byB0aGUgb3ZlcmFsbCBtYWM4MDIxMSBhcmNoaXRlY3R1cmUsIGFuZCB3aGF0IGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gY29uc2lkZXIgd2hlbiBldmFsdWF0aW5nIHRoaXMgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwMjYsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNTozNjoyOC40ODU2MzA3MjVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM2Mjk5OTE1MDYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9tbG1lLmM9NTc4MT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfZXBjc190ZWFyZG93bihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNTg0NS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjU4NDY6c3RhdGljIGJvb2wgaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNTg0Ny1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgbGlua19zdGFfaW5mbyAqbGlua19zdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTY5Mzc9c3RhdGljIGJvb2wgaWVlZTgwMjExX2Fzc29jX3N1Y2Nlc3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcwNzItXFxubmV0L21hYzgwMjExL21sbWUuYzo3MDczOlxcdFxcdGlmICghaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rKGxpbmssIGxpbmtfc3RhLFxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzA3NC1cXHRcXHRcXHRcXHRcXHRcXHQgYXNzb2NfZGF0YS1cXHUwMDNlbGlua1tsaW5rX2lkXS5ic3MsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTEwODgxPWllZWU4MDIxMV9wcm9jZXNzX21sX3JlY29uZl9yZXNwKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0xMTA1NS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjExMDU2OlxcdFxcdGlmICghaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rKGxpbmssIGxpbmtfc3RhLFxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTEwNTctXFx0XFx0XFx0XFx0XFx0XFx0IGFkZF9saW5rc19kYXRhLVxcdTAwM2VsaW5rW2xpbmtfaWRdLmJzcyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTU6MzY6NDIuMTE1NjI4NDUxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI2OTk3NTU5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE11bHRpLUxpbmsgT3BlcmF0aW9uIChNTE8pIEFzc29jaWF0aW9uIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhlIHN5c3RlbSBoYW5kbGVzIHRoZSBhc3NvY2lhdGlvbiBjb25maWd1cmF0aW9uIGZvciBNdWx0aS1MaW5rIE9wZXJhdGlvbiAoTUxPKSwgc3BlY2lmaWNhbGx5IGluIHRoZSBjb250ZXh0IG9mIDgwMi4xMWJlLCBvciBXaS1GaSA3LiBJdCBzZWVtcyB0aGUgYGllZWU4MDIxMV9hc3NvY19jb25maWdfbGlua2AgZnVuY3Rpb24gaXMgY3J1Y2lhbCBoZXJlLCBhcyBpdCdzIHRyaWdnZXJlZCBmcm9tIGJvdGggYGllZWU4MDIxMV9hc3NvY19zdWNjZXNzYCBhbmQgYGllZWU4MDIxMV9wcm9jZXNzX21sX3JlY29uZl9yZXNwYC4gVGhhdCBtYWtlcyBpdCBhIGRlZmluaXRlbHkgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIHBpZWNlLCB3aGljaCBpcyBnb29kLiBXZSBrbm93IHRoaXMgaGFuZGxlcyBNTE8uXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIHplcm8gaW4gb24gdGhlc2UgZnVuY3Rpb25zOiBgaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rYCwgYGllZWU4MDIxMV9hc3NvY19zdWNjZXNzYCwgYW5kIGBpZWVlODAyMTFfcHJvY2Vzc19tbF9yZWNvbmZfcmVzcGAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250cm9sIGZsb3cgYW5kIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gY2hlY2sgaG93IGl0IGFsbCBpbnRlZ3JhdGVzIHdpdGggdGhlIGBNQUM4MDIxMWAgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmVzLlxuXG5Ob3csIEknbSBnb2luZyB0byBkaWcgZGVlcGVyIHRvIHNlZSBpZiBhbnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMsIGZsYWdzLCBvciBwYXJhbWV0ZXJzIGFyZSB0aWVkIHRvIE1MTyBvciA4MDIuMTFiZS4gVGhhdCdzIHRoZSBrZXk6IHVuZGVyc3RhbmRpbmcgaG93IHRoZSBnZW5lcmFsIGFzc29jaWF0aW9uIGZyYW1ld29yayBpcyAqc3BlY2lhbGl6ZWQqIGZvciB0aGVzZSBuZXdlciBmZWF0dXJlcy4gVGhpcyBuZWVkcyB0byBiZSBjaGVja2VkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDI3LCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDE1OjM2OjQ2LjM4NTYwNjE1OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyODcyMzQ4MjQ1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxMVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI6Y29uZmlnIE1BQzgwMjExXFxubmV0L21hYzgwMjExL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xOT1pZiBNQUM4MDIxMSAhPSBuXFxubmV0L21hYzgwMjExL0tjb25maWctMjAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjE6Y29uZmlnIE1BQzgwMjExX0hBU19SQ1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyLVxcdGJvb2xcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMy1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDpjb25maWcgTUFDODAyMTFfUkNfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCIgaWYgRVhQRVJUXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2VcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjQxOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXFxubmV0L21hYzgwMjExL0tjb25maWctNDItXFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz00OD1lbmRjaG9pY2VcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo1MDpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTUxLVxcdHN0cmluZ1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9NTc9Y29tbWVudCBcXFwiU29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNTktXFxubmV0L21hYzgwMjExL0tjb25maWc6NjA6Y29uZmlnIE1BQzgwMjExX0tVTklUX1RFU1RcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIG1hYzgwMjExXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3MDpjb25maWcgTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVxcdGJvb2wgXFxcIkVuYWJsZSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTc4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXFxubmV0L21hYzgwMjExL0tjb25maWctODAtXFx0Ym9vbCBcXFwiRW5hYmxlIExFRCB0cmlnZ2Vyc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjg4OmNvbmZpZyBNQUM4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL0tjb25maWctODktXFx0Ym9vbCBcXFwiRXhwb3J0IG1hYzgwMjExIGludGVybmFscyBpbiBEZWJ1Z0ZTXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6OTc6Y29uZmlnIE1BQzgwMjExX01FU1NBR0VfVFJBQ0lOR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVxcdGJvb2wgXFxcIlRyYWNlIGFsbCBtYWM4MDIxMSBkZWJ1ZyBtZXNzYWdlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwOS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWctMTExLVxcdGJvb2wgXFxcIlNlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTE2OmNvbmZpZyBNQUM4MDIxMV9OT0lOTElORVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cXHRib29sIFxcXCJEbyBub3QgaW5saW5lIFRYL1JYIGhhbmRsZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTMxLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjEzMjpjb25maWcgTUFDODAyMTFfVkVSQk9TRV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cXHRib29sIFxcXCJWZXJib3NlIGRlYnVnZ2luZyBvdXRwdXRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTQ0LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNTQ6Y29uZmlnIE1BQzgwMjExX1NUQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cXHRib29sIFxcXCJWZXJib3NlIHN0YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTYyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2Mzpjb25maWcgTUFDODAyMTFfSFRfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBIVCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzQtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzYtXFx0Ym9vbCBcXFwiVmVyYm9zZSBPQ0IgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE4Njpjb25maWcgTUFDODAyMTFfSUJTU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cXHRib29sIFxcXCJWZXJib3NlIElCU1MgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTk2LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5Nzpjb25maWcgTUFDODAyMTFfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXFx0Ym9vbCBcXFwiVmVyYm9zZSBwb3dlcnNhdmUgbW9kZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMDgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMTAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjIyOmNvbmZpZyBNQUM4MDIxMV9NUEFUSF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMy1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGF0aCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzQtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjM1OmNvbmZpZyBNQUM4MDIxMV9NSFdNUF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggSFdNUCByb3V0aW5nIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0Ny1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0OS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNTk6Y29uZmlnIE1BQzgwMjExX01FU0hfQ1NBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjYwLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBjaGFubmVsIHN3aXRjaCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjktXFxubmV0L21hYzgwMjExL0tjb25maWc6MjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIX1BTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjcxLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwb3dlcnNhdmUgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjgwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4Mi1cXHRib29sIFxcXCJWZXJib3NlIFRETFMgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI5Mzpjb25maWcgTUFDODAyMTFfREVCVUdfQ09VTlRFUlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXFx0Ym9vbCBcXFwiRXh0cmEgc3RhdGlzdGljcyBmb3IgVFgvUlggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMzA3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjMwODpjb25maWcgTUFDODAyMTFfU1RBX0hBU0hfTUFYX1NJWkVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXFx0aW50IFxcXCJTdGF0aW9uIGhhc2ggdGFibGUgbWF4aW11bSBzaXplXFxcIiBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDE1OjM2OjQ5LjI1Nzk2MTE0NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MDI2MzI2NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkluaXRpYWwgQ29uZmlndXJhdGlvbiBDaGVjayoqXG5cbkFscmlnaHQsIHNvIHRoZSBjb3JlIG9mIHRoaXMgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIC0gd2UncmUgZGVhbGluZyB3aXRoIHN0YW5kYXJkIGBNQUM4MDIxMWAgYW5kIGFsc28gdXNpbmcgdGhlIGBNQUM4MDIxMV9IV1NJTWAgY29uZmlndXJhdGlvbiwgd2hpY2ggaXMgdGhlIHNldHVwIEknZCB0eXBpY2FsbHkgZXhwZWN0IGZvciB0ZXN0aW5nLiBObyBzdXJwcmlzZXMgdGhlcmUuIEJ1dCBJIG5lZWQgdG8gZGl2ZSBkZWVwZXIuXG5cbk15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gbWFrZSBzdXJlIHdlIGFyZSBub3QgbWlzc2luZyBhbnkgb3RoZXIgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb25zLiBXZSBjYW4ndCBhc3N1bWUgdGhhdCBvbmx5IHRob3NlIHR3byBjb3ZlciB0aGUgd2hvbGUgbGFuZHNjYXBlLiBMZXQncyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyB0aGF0IHJlbGF0ZSB0byA4MDIuMTFiZSBmZWF0dXJlcyBvciBNdWx0aS1MaW5rIE9wZXJhdGlvbiAoTUxPKS4gVGhlIGNvbmZpZ3VyYXRpb24gc3BhY2UgYXJvdW5kIHRob3NlIGFyZSBwcmV0dHkgc3BlY2lmaWMsIHNvIGEgc2VhcmNoIGlzIHJlcXVpcmVkLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHdlJ3JlIG5vdCBvdmVybG9va2luZyBhbnl0aGluZyByZWxldmFudCB0byA4MDIuMTFiZSBvciB0aGUgTUxPIHN1cHBvcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3NjUsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNTozNjo1Mi43NjA1OTY2MDJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMwMDc1OTA1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcuKk1MT1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL3BhcmlzYy9LY29uZmlnPTI0OT1jb25maWcgUEFSSVNDX0hVR0VfS0VSTkVMXFxuLS1cXG5hcmNoL3BhcmlzYy9LY29uZmlnLTI1MS1cXG5hcmNoL3BhcmlzYy9LY29uZmlnOjI1Mjpjb25maWcgTUxPTkdDQUxMU1xcbmFyY2gvcGFyaXNjL0tjb25maWctMjUzLVxcdGJvb2wgXFxcIkVuYWJsZSB0aGUgLW1sb25nLWNhbGxzIGNvbXBpbGVyIG9wdGlvbiBmb3IgYmlnIGtlcm5lbHNcXFwiIGlmICFQQVJJU0NfSFVHRV9LRVJORUxcXG4tLVxcbmRyaXZlcnMvY3J5cHRvL2FtbG9naWMvS2NvbmZpZzoxOmNvbmZpZyBDUllQVE9fREVWX0FNTE9HSUNfR1hMXFxuZHJpdmVycy9jcnlwdG8vYW1sb2dpYy9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIlN1cHBvcnQgZm9yIGFtbG9naWMgY3J5cHRvZ3JhcGhpYyBvZmZsb2FkZXJcXFwiXFxuLS1cXG5kcml2ZXJzL2NyeXB0by9hbWxvZ2ljL0tjb25maWctMTctXFxuZHJpdmVycy9jcnlwdG8vYW1sb2dpYy9LY29uZmlnOjE4OmNvbmZpZyBDUllQVE9fREVWX0FNTE9HSUNfR1hMX0RFQlVHXFxuZHJpdmVycy9jcnlwdG8vYW1sb2dpYy9LY29uZmlnLTE5LVxcdGJvb2wgXFxcIkVuYWJsZSBhbWxvZ2ljIHN0YXRzXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmM9NjgwMD1zdGF0aWMgdm9pZCBtdnBwMl9hY3BpX3N0YXJ0KHN0cnVjdCBtdnBwMl9wb3J0ICpwb3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmMtNjgxMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYzo2ODEzOlxcdG12cHAyX21hY19wcmVwYXJlKFxcdTAwMjZwb3J0LVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgTUxPX0FOX0lOQkFORCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy02ODE0LVxcdFxcdFxcdCAgcG9ydC1cXHUwMDNlcGh5X2ludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmM6NjgxNTpcXHRtdnBwMl9tYWNfY29uZmlnKFxcdTAwMjZwb3J0LVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgTUxPX0FOX0lOQkFORCwgXFx1MDAyNnN0YXRlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy02ODE2LVxcdHBjcy1cXHUwMDNlb3BzLVxcdTAwM2VwY3NfY29uZmlnKHBjcywgUEhZTElOS19QQ1NfTkVHX0lOQkFORF9FTkFCTEVELFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmMtNjgxOC1cXHRcXHRcXHQgICAgIGZhbHNlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYzo2ODE5OlxcdG12cHAyX21hY19maW5pc2goXFx1MDAyNnBvcnQtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBNTE9fQU5fSU5CQU5ELFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTY4MjAtXFx0XFx0XFx0IHBvcnQtXFx1MDAzZXBoeV9pbnRlcmZhY2UpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9waHlsaW5rLmM9NDY9c3RhdGljIHZvaWQgbGFuOTY2eF9waHlsaW5rX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9waHlsaW5rLmMtNTgtXFx0cG9ydF9jb25maWctXFx1MDAzZXBhdXNlID0gMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3BoeWxpbmsuYzo1OTpcXHRwb3J0X2NvbmZpZy1cXHUwMDNlcGF1c2UgfD0gdHhfcGF1c2UgPyBNTE9fUEFVU0VfVFggOiAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcGh5bGluay5jOjYwOlxcdHBvcnRfY29uZmlnLVxcdTAwM2VwYXVzZSB8PSByeF9wYXVzZSA/IE1MT19QQVVTRV9SWCA6IDA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9waHlsaW5rLmMtNjEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3BvcnQuYz0xNDQ9c3RhdGljIHZvaWQgbGFuOTY2eF9wb3J0X2xpbmtfdXAoc3RydWN0IGxhbjk2NnhfcG9ydCAqcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcG9ydC5jLTIzMy1cXHRcXHRTWVNfTUFDX0ZDX0NGR19QQVVTRV9WQUxfQ0ZHX1NFVCgweGZmZmYpIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3BvcnQuYzoyMzQ6XFx0XFx0U1lTX01BQ19GQ19DRkdfUlhfRkNfRU5BX1NFVChjb25maWctXFx1MDAzZXBhdXNlIFxcdTAwMjYgTUxPX1BBVVNFX1JYID8gMSA6IDApIHxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X3BvcnQuYzoyMzU6XFx0XFx0U1lTX01BQ19GQ19DRkdfVFhfRkNfRU5BX1NFVChjb25maWctXFx1MDAzZXBhdXNlIFxcdTAwMjYgTUxPX1BBVVNFX1RYID8gMSA6IDApLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfcG9ydC5jLTIzNi1cXHRcXHRTWVNfTUFDX0ZDX0NGR19GQ19MSU5LX1NQRUVEIHxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9ODU0PXN0YXRpYyB2b2lkIHBoeWxpbmtfYXBwbHlfbWFudWFsX2Zsb3coc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy04NjItXFx0LyogTWFudWFsIGNvbmZpZ3VyYXRpb24gb2YgcGF1c2UgbW9kZXMgKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjg2MzpcXHRpZiAoIShwbC1cXHUwMDNlbGlua19jb25maWcucGF1c2UgXFx1MDAyNiBNTE9fUEFVU0VfQU4pKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtODY0LVxcdFxcdHN0YXRlLVxcdTAwM2VwYXVzZSA9IHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5wYXVzZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTIzOT1zdGF0aWMgdm9pZCBwaHlsaW5rX21ham9yX2NvbmZpZyhzdHJ1Y3QgcGh5bGluayAqcGwsIGJvb2wgcmVzdGFydCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTMyMC1cXHRlcnIgPSBwaHlsaW5rX3Bjc19jb25maWcocGwtXFx1MDAzZXBjcywgcGwtXFx1MDAzZXBjc19uZWdfbW9kZSwgc3RhdGUsXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMzIxOlxcdFxcdFxcdFxcdCAhIShwbC1cXHUwMDNlbGlua19jb25maWcucGF1c2UgXFx1MDAyNiBNTE9fUEFVU0VfQU4pKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEzMjItXFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTM3NT1zdGF0aWMgaW50IHBoeWxpbmtfY2hhbmdlX2luYmFuZF9hZHZlcnQoc3RydWN0IHBoeWxpbmsgKnBsKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMzk2LVxcdHJldCA9IHBoeWxpbmtfcGNzX2NvbmZpZyhwbC1cXHUwMDNlcGNzLCBwbC1cXHUwMDNlcGNzX25lZ19tb2RlLCBcXHUwMDI2cGwtXFx1MDAzZWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTM5NzpcXHRcXHRcXHRcXHQgISEocGwtXFx1MDAzZWxpbmtfY29uZmlnLnBhdXNlIFxcdTAwMjYgTUxPX1BBVVNFX0FOKSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMzk4LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xODQ4PXN0cnVjdCBwaHlsaW5rICpwaHlsaW5rX2NyZWF0ZShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg5OC1cXHRwbC1cXHUwMDNlbGlua19jb25maWcuaW50ZXJmYWNlID0gaWZhY2U7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODk5OlxcdHBsLVxcdTAwM2VsaW5rX2NvbmZpZy5wYXVzZSA9IE1MT19QQVVTRV9BTjtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MDAtXFx0cGwtXFx1MDAzZWxpbmtfY29uZmlnLnNwZWVkID0gU1BFRURfVU5LTk9XTjtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzE3NT12b2lkIHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbShzdHJ1Y3QgcGh5bGluayAqcGwsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzktXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTgwOlxcdHBhdXNlLVxcdTAwM2VhdXRvbmVnID0gISEocGwtXFx1MDAzZWxpbmtfY29uZmlnLnBhdXNlIFxcdTAwMjYgTUxPX1BBVVNFX0FOKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxODE6XFx0cGF1c2UtXFx1MDAzZXJ4X3BhdXNlID0gISEocGwtXFx1MDAzZWxpbmtfY29uZmlnLnBhdXNlIFxcdTAwMjYgTUxPX1BBVVNFX1JYKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMxODI6XFx0cGF1c2UtXFx1MDAzZXR4X3BhdXNlID0gISEocGwtXFx1MDAzZWxpbmtfY29uZmlnLnBhdXNlIFxcdTAwMjYgTUxPX1BBVVNFX1RYKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxODMtfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTkxPWludCBwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0oc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMjM1LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzIzNjpcXHRtYW51YWxfY2hhbmdlZCA9IChjb25maWctXFx1MDAzZXBhdXNlIF4gcGF1c2Vfc3RhdGUpIFxcdTAwMjYgTUxPX1BBVVNFX0FOIHx8XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMjM3LVxcdFxcdFxcdCAoIShwYXVzZV9zdGF0ZSBcXHUwMDI2IE1MT19QQVVTRV9BTikgXFx1MDAyNlxcdTAwMjZcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMyMzg6XFx0XFx0XFx0ICAgKGNvbmZpZy1cXHUwMDNlcGF1c2UgXiBwYXVzZV9zdGF0ZSkgXFx1MDAyNiBNTE9fUEFVU0VfVFhSWF9NQVNLKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMyMzktXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM3MDM9c3RhdGljIGludCBwaHlsaW5rX3NmcF9jb25maWdfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzcxNy1cXHRjb25maWcuZHVwbGV4ID0gRFVQTEVYX1VOS05PV047XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNzE4OlxcdGNvbmZpZy5wYXVzZSA9IE1MT19QQVVTRV9BTjtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM3MTktXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM3NTQ9c3RhdGljIGludCBwaHlsaW5rX3NmcF9jb25maWdfb3B0aWNhbChzdHJ1Y3QgcGh5bGluayAqcGwpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM3ODItXFx0Y29uZmlnLmR1cGxleCA9IERVUExFWF9VTktOT1dOO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6Mzc4MzpcXHRjb25maWcucGF1c2UgPSBNTE9fUEFVU0VfQU47XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNzg0LVxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci92bWQuYz01ODE9c3RhdGljIGludCB2bWRfZ2V0X3BoeXNfb2Zmc2V0cyhzdHJ1Y3Qgdm1kX2RldiAqdm1kLCBib29sIG5hdGl2ZV9oaW50LFxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci92bWQuYy01OTEtXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci92bWQuYzo1OTI6XFx0XFx0cmV0ID0gcGNpX3JlYWRfY29uZmlnX2R3b3JkKGRldiwgUENJX1JFR19WTUxPQ0ssIFxcdTAwMjZ2bWxvY2spO1xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvdm1kLmMtNTkzLVxcdFxcdGlmIChyZXQgfHwgUENJX1BPU1NJQkxFX0VSUk9SKHZtbG9jaykpXFxuLS1cXG5kcml2ZXJzL3BpbmN0cmwvbWVzb24vS2NvbmZpZz02Mz1jb25maWcgUElOQ1RSTF9NRVNPTl9TNFxcbi0tXFxuZHJpdmVycy9waW5jdHJsL21lc29uL0tjb25maWctNjgtXFxuZHJpdmVycy9waW5jdHJsL21lc29uL0tjb25maWc6Njk6Y29uZmlnIFBJTkNUUkxfQU1MT0dJQ19BNFxcbmRyaXZlcnMvcGluY3RybC9tZXNvbi9LY29uZmlnLTcwLVxcdGJvb2wgXFxcIkFNTE9HSUMgcGluY29udHJvbFxcXCJcXG4tLVxcbmRyaXZlcnMvcGluY3RybC9tZXNvbi9LY29uZmlnLTc5LVxcbmRyaXZlcnMvcGluY3RybC9tZXNvbi9LY29uZmlnOjgwOmNvbmZpZyBQSU5DVFJMX0FNTE9HSUNfQzNcXG5kcml2ZXJzL3BpbmN0cmwvbWVzb24vS2NvbmZpZy04MS1cXHR0cmlzdGF0ZSBcXFwiQW1sb2dpYyBDMyBTb0MgcGluY3RybCBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3BpbmN0cmwvbWVzb24vS2NvbmZpZy04NS1cXG5kcml2ZXJzL3BpbmN0cmwvbWVzb24vS2NvbmZpZzo4Njpjb25maWcgUElOQ1RSTF9BTUxPR0lDX1Q3XFxuZHJpdmVycy9waW5jdHJsL21lc29uL0tjb25maWctODctXFx0dHJpc3RhdGUgXFxcIkFtbG9naWMgVDcgU29DIHBpbmN0cmwgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9ydGMvS2NvbmZpZz0yMTI3PWNvbmZpZyBSVENfRFJWX1NTRDIwMkRcXG4tLVxcbmRyaXZlcnMvcnRjL0tjb25maWctMjEzNy1cXG5kcml2ZXJzL3J0Yy9LY29uZmlnOjIxMzg6Y29uZmlnIFJUQ19EUlZfQU1MT0dJQ19BNFxcbmRyaXZlcnMvcnRjL0tjb25maWctMjEzOS1cXHR0cmlzdGF0ZSBcXFwiQW1sb2dpYyBSVENcXFwiXFxuLS1cXG5kcml2ZXJzL3MzOTAvY2hhci9LY29uZmlnPTk5PWNvbmZpZyBTMzkwX1RBUEVcXG4tLVxcbmRyaXZlcnMvczM5MC9jaGFyL0tjb25maWctMTA4LVxcbmRyaXZlcnMvczM5MC9jaGFyL0tjb25maWc6MTA5OmNvbmZpZyBWTUxPR1JEUlxcbmRyaXZlcnMvczM5MC9jaGFyL0tjb25maWctMTEwLVxcdGRlZl90cmlzdGF0ZSBtXFxuLS1cXG5kcml2ZXJzL3NwaS9LY29uZmlnPTg2PWNvbmZpZyBTUElfQUxURVJBX0RGTFxcbi0tXFxuZHJpdmVycy9zcGkvS2NvbmZpZy05NC1cXG5kcml2ZXJzL3NwaS9LY29uZmlnOjk1OmNvbmZpZyBTUElfQU1MT0dJQ19TUElGQ19BMVxcbmRyaXZlcnMvc3BpL0tjb25maWctOTYtXFx0dHJpc3RhdGUgXFxcIkFtbG9naWMgQTEgU1BJRkMgY29udHJvbGxlclxcXCJcXG4tLVxcbmRyaXZlcnMvc3BpL0tjb25maWctMTAxLVxcbmRyaXZlcnMvc3BpL0tjb25maWc6MTAyOmNvbmZpZyBTUElfQU1MT0dJQ19TUElGQ19BNFxcbmRyaXZlcnMvc3BpL0tjb25maWctMTAzLVxcdHRyaXN0YXRlIFxcXCJBbWxvZ2ljIEE0IFNQSSBGbGFzaCBjb250cm9sbGVyXFxcIlxcbi0tXFxuZHJpdmVycy9zcGkvS2NvbmZpZy0xMTEtXFxuZHJpdmVycy9zcGkvS2NvbmZpZzoxMTI6Y29uZmlnIFNQSV9BTUxPR0lDX1NQSVNHXFxuZHJpdmVycy9zcGkvS2NvbmZpZy0xMTMtXFx0dHJpc3RhdGUgXFxcIkFtbG9naWMgU1BJU0cgY29udHJvbGxlclxcXCJcXG4tLVxcbmRyaXZlcnMvdGhlcm1hbC9LY29uZmlnPTQzMz1lbmRtZW51XFxuZHJpdmVycy90aGVybWFsL0tjb25maWctNDM0LVxcbmRyaXZlcnMvdGhlcm1hbC9LY29uZmlnOjQzNTpjb25maWcgQU1MT0dJQ19USEVSTUFMXFxuZHJpdmVycy90aGVybWFsL0tjb25maWctNDM2LVxcdHRyaXN0YXRlIFxcXCJBbWxvZ2ljIFRoZXJtYWwgU3VwcG9ydFxcXCJcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5bGluay5oPTE2PWVudW0ge1xcbi0tXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNTEtXFx0ICogdGhlIHJlc3VsdHMgb2YgYXV0b25lZ290YXRpb24gKGlmIE1MT19QQVVTRV9BTiBpcyBzZXQpIG9yIHVzZXJcXG5pbmNsdWRlL2xpbnV4L3BoeWxpbmsuaDo1MjpcXHQgKiBjb25maWd1cmF0aW9uIChpZiBNTE9fUEFVU0VfQU4gaXMgbm90IHNldCkuXFxuaW5jbHVkZS9saW51eC9waHlsaW5rLmgtNTMtXFx0ICpcXG4tLVxcbmluY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmgtMTMzMy0gKlxcdHNldHVwIGxpbmtzIGR1ZSB0byBBUCBNTEQgcmVtb3ZpbmcgdGhlIGNvcnJlc3BvbmRpbmcgYWZmaWxpYXRlZCBBUHMgd2l0aFxcbmluY2x1ZGUvdWFwaS9saW51eC9ubDgwMjExLmg6MTMzNDogKlxcdE11bHRpLUxpbmsgcmVjb25maWd1cmF0aW9uLiAlTkw4MDIxMV9BVFRSX01MT19MSU5LUyBpcyB1c2VkIHRvIHByb3ZpZGVcXG5pbmNsdWRlL3VhcGkvbGludXgvbmw4MDIxMS5oLTEzMzUtICpcXHRpbmZvcm1hdGlvbiBhYm91dCB0aGUgcmVtb3ZlZCBTVEEgTUxEIHNldHVwIGxpbmtzLlxcbi0tXFxubmV0L2RzYS9wb3J0LmM9MTg0Mj1zdGF0aWMgdm9pZCBkc2Ffc2hhcmVkX3BvcnRfbGlua19kb3duKHN0cnVjdCBkc2FfcG9ydCAqZHApXFxuLS1cXG5uZXQvZHNhL3BvcnQuYy0xODQ2LVxcdGlmIChkcy1cXHUwMDNlcGh5bGlua19tYWNfb3BzIFxcdTAwMjZcXHUwMDI2IGRzLVxcdTAwM2VwaHlsaW5rX21hY19vcHMtXFx1MDAzZW1hY19saW5rX2Rvd24pXFxubmV0L2RzYS9wb3J0LmM6MTg0NzpcXHRcXHRkcy1cXHUwMDNlcGh5bGlua19tYWNfb3BzLVxcdTAwM2VtYWNfbGlua19kb3duKFxcdTAwMjZkcC1cXHUwMDNlcGxfY29uZmlnLCBNTE9fQU5fRklYRUQsXFxubmV0L2RzYS9wb3J0LmMtMTg0OC1cXHRcXHRcXHRcXHRcXHRcXHQgICBQSFlfSU5URVJGQUNFX01PREVfTkEpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNTozNjo1Ni4wNjEzNjA3NTJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODU5MzcxNDgyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNTE8gQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gTXVsdGktTGluayBPcGVyYXRpb24gKE1MTykgd2l0aGluIHRoZSBMaW51eCB3aXJlbGVzcyBzdGFjay4gUmlnaHQgbm93LCBJJ20gdGhpbmtpbmcsIFwiTm8gc3BlY2lmaWMgTUxPIGNvbmZpZ3VyYXRpb24gaXMganVtcGluZyBvdXQgYXQgbWU7IGl0IHNlZW1zIHRvIGJlIGhhbmRsZWQgYXMgYW4gaW50ZWdyYWwgcGFydCBvZiBtYWM4MDIxMS5cIiBJIHNob3VsZCBkb3VibGUtY2hlY2sgdG8gYmUgYWJzb2x1dGVseSBzdXJlIHRoZXJlIGlzbid0IHNvbWUgaGlkZGVuIHNldHRpbmcgb3Igc3VidGxlIGtub2Igc29tZXdoZXJlIGVsc2UgaW4gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgdGhhdCBJJ20gbWlzc2luZy5cblxuR29vZCwgSSBjb25maXJtZWQgdGhhdCBgTUFDODAyMTFgIGFuZCBwb3RlbnRpYWxseSBgTUFDODAyMTFfSFdTSU1gIGFyZSBsaWtlbHkgc3VmZmljaWVudCBmb3IgaW5pdGlhbCBlbmFibGluZy4gTm93LCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYXNzb2NpYXRpb24gcHJvY2VzcyBpbnRlcmFjdHMgd2l0aCBNTE8sIEknbSBnb2luZyB0byBkZWx2ZSBpbnRvIHRoZSBgaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rYCBmdW5jdGlvbiBsb2NhdGVkIGluIGBuZXQvbWFjODAyMTEvbWxtZS5jYC4gSSdtIGhvcGluZyB0byBzcG90IHNvbWUgcmVsYXRlZCBmdW5jdGlvbiBjYWxscyBvciBwYXJhbWV0ZXJzLiBIb3BlZnVsbHkgdGhlcmUgYXJlIHNvbWUgY2x1ZXMgaW4gdGhlIGxpbmsgY29uZmlndXJhdGlvbi4gRnJvbSB0aGVyZSwgSSBjYW4gZGV0ZXJtaW5lIHRoZSByb2xlIE1MTyBwbGF5cyBpbiB0aGlzIGNydWNpYWwgc3RlcCBvZiB0aGUgY29ubmVjdGlvbiBwcm9jZWR1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNTczLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE0VDE1OjM3OjI0LjY1NTA3ODIxN1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzExODkyOTE3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL21sbWUuYz01NzgxPXN0YXRpYyB2b2lkIGllZWU4MDIxMV9lcGNzX3RlYXJkb3duKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy01ODQ1LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NTg0NjpzdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmsoc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXFxubmV0L21hYzgwMjExL21sbWUuYy01ODQ3LVxcdFxcdFxcdFxcdFxcdHN0cnVjdCBsaW5rX3N0YV9pbmZvICpsaW5rX3N0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9NjkzNz1zdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2Nfc3VjY2VzcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzA3Mi1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjcwNzM6XFx0XFx0aWYgKCFpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmsobGluaywgbGlua19zdGEsXFxubmV0L21hYzgwMjExL21sbWUuYy03MDc0LVxcdFxcdFxcdFxcdFxcdFxcdCBhc3NvY19kYXRhLVxcdTAwM2VsaW5rW2xpbmtfaWRdLmJzcyxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTA4ODE9aWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExMDU1LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTEwNTY6XFx0XFx0aWYgKCFpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmsobGluaywgbGlua19zdGEsXFxubmV0L21hYzgwMjExL21sbWUuYy0xMTA1Ny1cXHRcXHRcXHRcXHRcXHRcXHQgYWRkX2xpbmtzX2RhdGEtXFx1MDAzZWxpbmtbbGlua19pZF0uYnNzLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xNFQxNTozNzoyNy43NzQwNDE3NzlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE1NzA1ODAxOTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24gYW5kIEFuYWx5c2lzKipcblxuT2theSwgc28gSSd2ZSBpZGVudGlmaWVkIGBpZWVlODAyMTFfYXNzb2NfY29uZmlnX2xpbmtgIGFzIGEga2V5IGZ1bmN0aW9uIHRvIGZvY3VzIG9uIGZvciBmdXp6aW5nLiBJJ20gYWxzbyBwdXR0aW5nIGBpZWVlODAyMTFfYXNzb2Nfc3VjY2Vzc2AgYW5kIGBpZWVlODAyMTFfcHJvY2Vzc19tbF9yZWNvbmZfcmVzcGAgb24gdGhlIHJhZGFyLCBnaXZlbiB0aGVpciBwb3RlbnRpYWwgaW50ZXJhY3Rpb24uIFRoZSBwcmltYXJ5IGNvbmZpZ3MgSSdtIGludGVyZXN0ZWQgaW4gYXJlIGBNQUM4MDIxMWAgYW5kIGBNQUM4MDIxMV9IV1NJTWAuIEkndmUgY29uZmlybWVkIHRoYXQgYE1BQzgwMjExX0hXU0lNYCBpcywgYXMgZXhwZWN0ZWQsIHRoZSBzaW11bGF0ZWQgcmFkaW8gZW52aXJvbm1lbnQgZm9yIG1hYzgwMjExLCBtYWtpbmcgaXQgcGVyZmVjdCBmb3IgdGhpcyBraW5kIG9mIHRlc3RpbmcuXG5cbk5vdywgbGV0J3MgZGl2ZSBpbnRvIHRoZSBwYXRjaC4gSXQgc2VlbXMgdGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBsaWVzIGluIGVycm9yIGhhbmRsaW5nIHdpdGhpbiB0aGUgYXNzb2NpYXRpb24gcmVzcG9uc2UgcHJvY2Vzc2luZywgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gTXVsdGktTGluayAoTUwpIGVsZW1lbnRzLiBUaGUgb3JpZ2luYWwgY29kZSdzIGxvZ2ljIGlzIGJlaW5nIHRpZ2h0ZW5lZCB1cDsgaW4gcGFydGljdWxhciwgdGhlcmUncyBhIG1vcmUgZ3JhbnVsYXIgY2hlY2sgZm9yIHRoZSBgYnNzX3BhcmFtX2NoX2NudGAgZmllbGQsIGFsb25nIHdpdGggc2V2ZXJhbCBgbGlua19pbmZvYCBhbmQgYHNkYXRhX2luZm9gIG1lc3NhZ2VzLiBUaGUga2V5IGNoYW5nZSBpcyB0aGF0IGl0IG5vdyB2ZXJpZmllcyB0aGUgcHJlc2VuY2Ugb2YgIGBJRUVFODAyMTFfTUxFX1NUQV9DT05UUk9MX0JTU19QQVJBTV9DSEFOR0VfQ05UX1BSRVNFTlRgIHVzaW5nIGBjcHVfdG9fbGUxNmAgYW5kIGV4dHJhY3RzIHRoZSBjb3VudCBkaWZmZXJlbnRseSwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgaXQncyBwcmVzZW50IGluIGEgcGVyLVNUQSBwcm9maWxlIG9yIHRoZSBiYXNpYyBNTCBlbGVtZW50LiBUaGlzIGNvdWxkIGRlZmluaXRlbHkgaW50cm9kdWNlIGludGVyZXN0aW5nIGVkZ2UgY2FzZXMgYW5kIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuIFRoZSBjb2RlIGFsc28gYXBwZWFycyB0byBwYXJzZSBhbmQgaGFuZGxlIGBic3NfcGFyYW1fY2hfY250YCBmcm9tIGRpZmZlcmVudCBsb2NhdGlvbnMgZGVwZW5kaW5nIG9uIHdoZXRoZXIgaXQncyBpbiB0aGUgcGVyLVNUQSBwcm9maWxlIG9yIHRoZSBtYWluIE1MIGVsZW1lbnQuIFRoaXMgY291bGQgYWxzbyBiZSBhIHBsYWNlIHRvIGludHJvZHVjZSBmdXp6aW5nIGlucHV0cy5cblxuR2l2ZW4gdGhlc2UgY2hhbmdlcywgZXNwZWNpYWxseSB0aGUgYWRkZWQgY2hlY2tzIGFuZCBwYXJzaW5nIG9mIE1MIGVsZW1lbnRzLCB0aGlzIGxvb2tzIGxpa2UgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIEkgd2lsbCBjYWxsIGBzZXQtcmVzdWx0c2Agbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQyMSwiT3V0cHV0VG9rZW5zIjoxOTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTRUMTU6Mzc6MzkuMzQ0NjI2NTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzgzNzU5NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMV9IV1NJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImllZWU4MDIxMV9hc3NvY19jb25maWdfbGlua1wiLFxuICAgIFwiaWVlZTgwMjExX2Fzc29jX3N1Y2Nlc3NcIixcbiAgICBcImllZWU4MDIxMV9wcm9jZXNzX21sX3JlY29uZl9yZXNwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHBhcnNpbmcgbG9naWMgb2YgTXVsdGktTGluayAoTUwpIGVsZW1lbnRzIGluIDgwMi4xMSBhc3NvY2lhdGlvbiByZXNwb25zZXMgd2l0aGluIHRoZSBtYWM4MDIxMSBzdWJzeXN0ZW0uIEl0IGNoYW5nZXMgaG93IHRoZSBCU1MgcGFyYW1ldGVyIGNoYW5nZSBjb3VudCBpcyBleHRyYWN0ZWQgYW5kIGhhbmRsZXMgbWlzc2luZyBvciBtYWxmb3JtZWQgZWxlbWVudHMuIFRoaXMgaXMgcmVhY2hhYmxlIGFuZCBmdW5jdGlvbmFsIGNvcmUgbG9naWMgZm9yIFdpLUZpIDcgKDgwMi4xMWJlKSBNdWx0aS1MaW5rIE9wZXJhdGlvbiAoTUxPKSBhbmQgY2FuIGJlIHRlc3RlZCB2aWEgbWFjODAyMTFfaHdzaW0uXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaWVlZTgwMjExX2Fzc29jX2NvbmZpZ19saW5rXCIsXG4gICAgXCJpZWVlODAyMTFfYXNzb2Nfc3VjY2Vzc1wiLFxuICAgIFwiaWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3BcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgcGFyc2luZyBsb2dpYyBvZiBNdWx0aS1MaW5rIChNTCkgZWxlbWVudHMgaW4gODAyLjExIGFzc29jaWF0aW9uIHJlc3BvbnNlcyB3aXRoaW4gdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gSXQgY2hhbmdlcyBob3cgdGhlIEJTUyBwYXJhbWV0ZXIgY2hhbmdlIGNvdW50IGlzIGV4dHJhY3RlZCBhbmQgaGFuZGxlcyBtaXNzaW5nIG9yIG1hbGZvcm1lZCBlbGVtZW50cy4gVGhpcyBpcyByZWFjaGFibGUgYW5kIGZ1bmN0aW9uYWwgY29yZSBsb2dpYyBmb3IgV2ktRmkgNyAoODAyLjExYmUpIE11bHRpLUxpbmsgT3BlcmF0aW9uIChNTE8pIGFuZCBjYW4gYmUgdGVzdGVkIHZpYSBtYWM4MDIxMV9od3NpbS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowrrvcm[1] Phase: Succeeded StartedAt: 2026-07-14 15:37:50 +0000 UTC FinishedAt: 2026-07-14 15:37:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrrvcm[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-14 15:37:50 +0000 UTC FinishedAt: 2026-07-14 15:37:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrrvcm[2] Phase: Succeeded StartedAt: 2026-07-14 15:37:50 +0000 UTC FinishedAt: 2026-07-14 20:08:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-14 15:37:50 +0000 UTC FinishedAt: 2026-07-14 20:08:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-14 15:37:50 +0000 UTC FinishedAt: 2026-07-14 15:38:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-14 15:37:50 +0000 UTC FinishedAt: 2026-07-14 15:38:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowrrvcm/series-workflowrrvcm-convert-artifact-3220585896/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-14 15:38:24 +0000 UTC FinishedAt: 2026-07-14 16:12:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-14 15:38:24 +0000 UTC FinishedAt: 2026-07-14 16:12:10 +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:*1b1ffc0f-f3d2-49ea-991a-4ed45a638360,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-workflowrrvcm/series-workflowrrvcm-convert-artifact-3220585896/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": "050a497e-69e4-4f84-b09e-8cd79813887f", "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-workflowrrvcm/series-workflowrrvcm-build-action-752268318/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-14 15:38:24 +0000 UTC FinishedAt: 2026-07-14 16:12:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*1b1ffc0f-f3d2-49ea-991a-4ed45a638360,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-workflowrrvcm/series-workflowrrvcm-convert-artifact-3220585896/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": "050a497e-69e4-4f84-b09e-8cd79813887f", "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-workflowrrvcm/series-workflowrrvcm-build-action-752268318/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-14 16:12:10 +0000 UTC FinishedAt: 2026-07-14 16:12:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-14 16:12:10 +0000 UTC FinishedAt: 2026-07-14 16:12:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-14 16:12:10 +0000 UTC FinishedAt: 2026-07-14 16:12:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-14 16:12:10 +0000 UTC FinishedAt: 2026-07-14 16:12:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowrrvcm/series-workflowrrvcm-convert-artifact-127300751/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-14 16:12:20 +0000 UTC FinishedAt: 2026-07-14 16:14:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-14 16:12:20 +0000 UTC FinishedAt: 2026-07-14 16:14:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*050a497e-69e4-4f84-b09e-8cd79813887f,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-workflowrrvcm/series-workflowrrvcm-build-action-752268318/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-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-14 16:14:22 +0000 UTC FinishedAt: 2026-07-14 16:14:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-14 16:14:22 +0000 UTC FinishedAt: 2026-07-14 16:14:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-14 16:14:22 +0000 UTC FinishedAt: 2026-07-14 17:03:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-14 16:14:22 +0000 UTC FinishedAt: 2026-07-14 17:03:07 +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:*1b1ffc0f-f3d2-49ea-991a-4ed45a638360,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-workflowrrvcm/series-workflowrrvcm-convert-artifact-127300751/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": "16bfe1b5-57ab-48a7-b33f-93e436307dd7", "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-workflowrrvcm/series-workflowrrvcm-build-action-2609862051/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-14 16:14:22 +0000 UTC FinishedAt: 2026-07-14 17:02:57 +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:*1b1ffc0f-f3d2-49ea-991a-4ed45a638360,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-workflowrrvcm/series-workflowrrvcm-convert-artifact-127300751/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": "16bfe1b5-57ab-48a7-b33f-93e436307dd7", "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-workflowrrvcm/series-workflowrrvcm-build-action-2609862051/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-14 17:03:07 +0000 UTC FinishedAt: 2026-07-14 17:03:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-14 17:03:07 +0000 UTC FinishedAt: 2026-07-14 17:03:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-14 17:03:07 +0000 UTC FinishedAt: 2026-07-14 17:05:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-14 17:03:07 +0000 UTC FinishedAt: 2026-07-14 17:05:17 +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:*16bfe1b5-57ab-48a7-b33f-93e436307dd7,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-workflowrrvcm/series-workflowrrvcm-build-action-2609862051/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-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-14 17:05:27 +0000 UTC FinishedAt: 2026-07-14 20:08:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-14 17:05:27 +0000 UTC FinishedAt: 2026-07-14 20:08:06 +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_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"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:*050a497e-69e4-4f84-b09e-8cd79813887f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*16bfe1b5-57ab-48a7-b33f-93e436307dd7,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-workflowrrvcm/series-workflowrrvcm-build-action-752268318/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-workflowrrvcm/series-workflowrrvcm-build-action-2609862051/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-14 17:05:27 +0000 UTC FinishedAt: 2026-07-14 17:05:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-14 17:05:27 +0000 UTC FinishedAt: 2026-07-14 17:05:31 +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_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"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-workflowrrvcm/series-workflowrrvcm-convert-artifact-2820301128/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-14 17:05:27 +0000 UTC FinishedAt: 2026-07-14 17:05:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-14 17:05:27 +0000 UTC FinishedAt: 2026-07-14 17:05:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-14 17:05:27 +0000 UTC FinishedAt: 2026-07-14 17:05:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-14 17:05:37 +0000 UTC FinishedAt: 2026-07-14 20:08:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrrvcm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ieee80211_assoc_config_link","ieee80211_assoc_success","ieee80211_process_ml_reconf_resp"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3b029c035b34bbc693405ddf759f0e9b920c27f1","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211","MAC80211_HWSIM"],"series_id":"dfe21819-9c0c-470a-97e2-017a21a7a458","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-14 17:05:37 +0000 UTC FinishedAt: 2026-07-14 20:07:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*050a497e-69e4-4f84-b09e-8cd79813887f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*16bfe1b5-57ab-48a7-b33f-93e436307dd7,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-workflowrrvcm/series-workflowrrvcm-build-action-752268318/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-workflowrrvcm/series-workflowrrvcm-build-action-2609862051/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-workflowrrvcm/series-workflowrrvcm-convert-artifact-2820301128/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,}