Name: series-workflowgrbnf Phase: Succeeded StartedAt: 2026-08-14 03:21:37 +0000 UTC FinishedAt: 2026-08-14 07:22:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrbnf[0] Phase: Succeeded StartedAt: 2026-08-14 03:21:37 +0000 UTC FinishedAt: 2026-08-14 03:41:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrbnf[0].run-triage Phase: Succeeded StartedAt: 2026-08-14 03:21:37 +0000 UTC FinishedAt: 2026-08-14 03:41:39 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3aa1dcaa4f6f5ae08936491e08bd456f331f2d40", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "GTP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3aa1dcaa4f6f5ae08936491e08bd456f331f2d40", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "GTP" ], "series_id": "79cb6566-2ed6-4610-83c8-1264cdf9d08d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "gtp_genl_new_pdp", "gtp_genl_del_pdp", "gtp_dellink" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE0IDAzOjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0dUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2d0cF9nZW5sX25ld19wZHAmIzM0OywKICAgICYjMzQ7Z3RwX2dlbmxfZGVsX3BkcCYjMzQ7LAogICAgJiMzNDtndHBfZGVsbGluayYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbXV0ZXggKGBndHBfcGRwX2xvY2tgKSB0byBwcm90ZWN0IHRoZSBQRFAgY29udGV4dCBsaXN0cyBpbiB0aGUgR1RQIGRyaXZlci4gSXQgYWRkcyBsb2NraW5nIGFyb3VuZCBQRFAgY29udGV4dCBhZGRpdGlvbiwgZGVsZXRpb24sIGFuZCBsb29rdXAsIGFuZCB1cGRhdGVzIHRoZSBSQ1UgbGlzdCB0cmF2ZXJzYWwgbWFjcm9zIHRvIGluY2x1ZGUgYGxvY2tkZXBfaXNfaGVsZChcdTAwMjZndHBfcGRwX2xvY2spYC4gVGhlc2UgY2hhbmdlcyBhcmUgYWltZWQgYXQgZml4aW5nIGNvbmN1cnJlbmN5IGlzc3Vlcywgc3VjaCBhcyByYWNlIGNvbmRpdGlvbnMsIGxpc3QgY29ycnVwdGlvbnMsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFN1Y2ggaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBzdGFuZGFyZCB0b29scyBsaWtlIEtBU0FOLCBLQ1NBTiwgYW5kIExPQ0tERVAuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1vZGlmeSBtZW1vcnkgaW5pdGlhbGl6YXRpb24sIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IG11dGV4IHRvIHByb3RlY3QgR1RQIFBEUCBjb250ZXh0IG9wZXJhdGlvbnMsIG1vZGlmeWluZyB0aGUgbmV0bGluayBoYW5kbGVycyBmb3IgY3JlYXRpbmcgYW5kIGRlbGV0aW5nIFBEUCBjb250ZXh0cywgYXMgd2VsbCBhcyB0aGUgbmV0X2RldmljZSBkZWxsaW5rIGhhbmRsZXIuIFRoZXNlIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIGludm9sdmUgZnVuY3Rpb25hbCBjb25jdXJyZW5jeSBjaGFuZ2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAzOjQwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYzgwOGRlMzIzZmI4YWFlN2VkNzQ2MjgwY2VmNzM1M2U5OTU3ODgzYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDAzOjQwOjUyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2d0cC5jIGIvZHJpdmVycy9uZXQvZ3RwLmNcbmluZGV4IDlhMTJjYzUzZGEwMDIuLmVhODNhNmI2YWExYTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ndHAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZ3RwLmNcbkBAIC0xMiw2ICYjNDM7MTIsNyBAQFxuICNkZWZpbmUgcHJfZm10KGZtdCkgS0JVSUxEX01PRE5BTUUgXCYjMzQ7OiBcJiMzNDsgZm10XG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbXV0ZXguaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NrYnVmZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdWRwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yY3VsaXN0LmhcdTAwM2VcbkBAIC0xMDgsNiAmIzQzOzEwOSw3IEBAIHN0cnVjdCBndHBfbmV0IHtcbiB9O1xuIFxuIHN0YXRpYyB1MzIgZ3RwX2hfaW5pdHZhbDtcbiYjNDM7c3RhdGljIERFRklORV9NVVRFWChndHBfcGRwX2xvY2spO1xuIFxuIHN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgZ3RwX2dlbmxfZmFtaWx5O1xuIFxuQEAgLTE1MSw3ICYjNDM7MTUzLDggQEAgc3RhdGljIHN0cnVjdCBwZHBfY3R4ICpndHAwX3BkcF9maW5kKHN0cnVjdCBndHBfZGV2ICpndHAsIHU2NCB0aWQsIHUxNiBmYW1pbHkpXG4gXG4gXHRoZWFkID0gXHUwMDI2Z3RwLVx1MDAzZXRpZF9oYXNoW2d0cDBfaGFzaGZuKHRpZCkgJSBndHAtXHUwMDNlaGFzaF9zaXplXTtcbiBcbi1cdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwZHAsIGhlYWQsIGhsaXN0X3RpZCkge1xuJiM0MztcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwZHAsIGhlYWQsIGhsaXN0X3RpZCxcbiYjNDM7XHRcdFx0XHQgbG9ja2RlcF9pc19oZWxkKFx1MDAyNmd0cF9wZHBfbG9jaykpIHtcbiBcdFx0aWYgKHBkcC1cdTAwM2VhZiA9PSBmYW1pbHkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBwZHAtXHUwMDNlZ3RwX3ZlcnNpb24gPT0gR1RQX1YwIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgcGRwLVx1MDAzZXUudjAudGlkID09IHRpZClcbkBAIC0xNjgsNyAmIzQzOzE3MSw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGRwX2N0eCAqZ3RwMV9wZHBfZmluZChzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCB1MzIgdGlkLCB1MTYgZmFtaWx5KVxuIFxuIFx0aGVhZCA9IFx1MDAyNmd0cC1cdTAwM2V0aWRfaGFzaFtndHAxdV9oYXNoZm4odGlkKSAlIGd0cC1cdTAwM2VoYXNoX3NpemVdO1xuIFxuLVx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfdGlkKSB7XG4mIzQzO1x0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfdGlkLFxuJiM0MztcdFx0XHRcdCBsb2NrZGVwX2lzX2hlbGQoXHUwMDI2Z3RwX3BkcF9sb2NrKSkge1xuIFx0XHRpZiAocGRwLVx1MDAzZWFmID09IGZhbWlseSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIHBkcC1cdTAwM2VndHBfdmVyc2lvbiA9PSBHVFBfVjEgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBwZHAtXHUwMDNldS52MS5pX3RlaSA9PSB0aWQpXG5AQCAtMTg1LDcgJiM0MzsxODksOCBAQCBzdGF0aWMgc3RydWN0IHBkcF9jdHggKmlwdjRfcGRwX2ZpbmQoc3RydWN0IGd0cF9kZXYgKmd0cCwgX19iZTMyIG1zX2FkZHIpXG4gXG4gXHRoZWFkID0gXHUwMDI2Z3RwLVx1MDAzZWFkZHJfaGFzaFtpcHY0X2hhc2hmbihtc19hZGRyKSAlIGd0cC1cdTAwM2VoYXNoX3NpemVdO1xuIFxuLVx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfYWRkcikge1xuJiM0MztcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwZHAsIGhlYWQsIGhsaXN0X2FkZHIsXG4mIzQzO1x0XHRcdFx0IGxvY2tkZXBfaXNfaGVsZChcdTAwMjZndHBfcGRwX2xvY2spKSB7XG4gXHRcdGlmIChwZHAtXHUwMDNlYWYgPT0gQUZfSU5FVCBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIHBkcC1cdTAwM2Vtcy5hZGRyLnNfYWRkciA9PSBtc19hZGRyKVxuIFx0XHRcdHJldHVybiBwZHA7XG5AQCAtMjIwLDcgJiM0MzsyMjUsOCBAQCBzdGF0aWMgc3RydWN0IHBkcF9jdHggKmlwdjZfcGRwX2ZpbmQoc3RydWN0IGd0cF9kZXYgKmd0cCxcbiBcbiBcdGhlYWQgPSBcdTAwMjZndHAtXHUwMDNlYWRkcl9oYXNoW2lwdjZfaGFzaGZuKG1zX2FkZHIpICUgZ3RwLVx1MDAzZWhhc2hfc2l6ZV07XG4gXG4tXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF9hZGRyKSB7XG4mIzQzO1x0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfYWRkcixcbiYjNDM7XHRcdFx0XHQgbG9ja2RlcF9pc19oZWxkKFx1MDAyNmd0cF9wZHBfbG9jaykpIHtcbiBcdFx0aWYgKHBkcC1cdTAwM2VhZiA9PSBBRl9JTkVUNiBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGlwdjZfcGRwX2FkZHJfZXF1YWwoXHUwMDI2cGRwLVx1MDAzZW1zLmFkZHI2LCBtc19hZGRyKSlcbiBcdFx0XHRyZXR1cm4gcGRwO1xuQEAgLTE1NTUsOSAmIzQzOzE1NjEsMTEgQEAgc3RhdGljIHZvaWQgZ3RwX2RlbGxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZClcbiBcdHN0cnVjdCBwZHBfY3R4ICpwY3R4O1xuIFx0aW50IGk7XG4gXG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZndHBfcGRwX2xvY2spO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZ3RwLVx1MDAzZWhhc2hfc2l6ZTsgaSYjNDM7JiM0MzspXG4gXHRcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocGN0eCwgbmV4dCwgXHUwMDI2Z3RwLVx1MDAzZXRpZF9oYXNoW2ldLCBobGlzdF90aWQpXG4gXHRcdFx0cGRwX2NvbnRleHRfZGVsZXRlKHBjdHgpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZndHBfcGRwX2xvY2spO1xuIFxuIFx0bGlzdF9kZWwoXHUwMDI2Z3RwLVx1MDAzZWxpc3QpO1xuIFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2VfcXVldWUoZGV2LCBoZWFkKTtcbkBAIC0yMDUzLDcgJiM0MzsyMDYxLDkgQEAgc3RhdGljIGludCBndHBfZ2VubF9uZXdfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXHRcdGdvdG8gb3V0X3VubG9jaztcbiBcdH1cbiBcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmd0cF9wZHBfbG9jayk7XG4gXHRwY3R4ID0gZ3RwX3BkcF9hZGQoZ3RwLCBzaywgaW5mbyk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmd0cF9wZHBfbG9jayk7XG4gXHRpZiAoSVNfRVJSKHBjdHgpKSB7XG4gXHRcdGVyciA9IFBUUl9FUlIocGN0eCk7XG4gXHR9IGVsc2Uge1xuQEAgLTIxMzQsOSAmIzQzOzIxNDQsMTIgQEAgc3RhdGljIGludCBndHBfZ2VubF9kZWxfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXHRpZiAoIWluZm8tXHUwMDNlYXR0cnNbR1RQQV9WRVJTSU9OXSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRyY3VfcmVhZF9sb2NrKCk7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZndHBfcGRwX2xvY2spO1xuIFxuJiM0MztcdC8qIGd0cF9maW5kX2RldigpIHVzZXMgZGV2X2dldF9ieV9pbmRleF9yY3UoKS4gKi9cbiYjNDM7XHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRwY3R4ID0gZ3RwX2ZpbmRfcGRwKHNvY2tfbmV0KHNrYi1cdTAwM2VzayksIGluZm8tXHUwMDNlYXR0cnMpO1xuJiM0MztcdHJjdV9yZWFkX3VubG9jaygpO1xuIFx0aWYgKElTX0VSUihwY3R4KSkge1xuIFx0XHRlcnIgPSBQVFJfRVJSKHBjdHgpO1xuIFx0XHRnb3RvIG91dF91bmxvY2s7XG5AQCAtMjE1Myw3ICYjNDM7MjE2Niw3IEBAIHN0YXRpYyBpbnQgZ3RwX2dlbmxfZGVsX3BkcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIFx0cGRwX2NvbnRleHRfZGVsZXRlKHBjdHgpO1xuIFxuIG91dF91bmxvY2s6XG4tXHRyY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2Z3RwX3BkcF9sb2NrKTtcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAzOjQwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtHVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtndHBfZ2VubF9uZXdfcGRwJiMzNDssCiAgICAmIzM0O2d0cF9nZW5sX2RlbF9wZHAmIzM0OywKICAgICYjMzQ7Z3RwX2RlbGxpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBtdXRleCB0byBwcm90ZWN0IEdUUCBQRFAgY29udGV4dCBvcGVyYXRpb25zLCBtb2RpZnlpbmcgdGhlIG5ldGxpbmsgaGFuZGxlcnMgZm9yIGNyZWF0aW5nIGFuZCBkZWxldGluZyBQRFAgY29udGV4dHMsIGFzIHdlbGwgYXMgdGhlIG5ldF9kZXZpY2UgZGVsbGluayBoYW5kbGVyLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBpbnZvbHZlIGZ1bmN0aW9uYWwgY29uY3VycmVuY3kgY2hhbmdlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM4MDhkZTMyM2ZiOGFhZTdlZDc0NjI4MGNlZjczNTNlOTk1Nzg4M2IKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyAxNCAwMzo0MDo1MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2d0cC5jIGIvZHJpdmVycy9uZXQvZ3RwLmMKaW5kZXggOWExMmNjNTNkYTAwMi4uZWE4M2E2YjZhYTFhNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZ3RwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZ3RwLmMKQEAgLTEyLDYgJiM0MzsxMiw3IEBACiAjZGVmaW5lIHByX2ZtdChmbXQpIEtCVUlMRF9NT0ROQU1FICYjMzQ7OiAmIzM0OyBmbXQKIAogI2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9tdXRleC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3NrYnVmZi5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3VkcC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3JjdWxpc3QuaCZndDsKQEAgLTEwOCw2ICYjNDM7MTA5LDcgQEAgc3RydWN0IGd0cF9uZXQgewogfTsKIAogc3RhdGljIHUzMiBndHBfaF9pbml0dmFsOwomIzQzO3N0YXRpYyBERUZJTkVfTVVURVgoZ3RwX3BkcF9sb2NrKTsKIAogc3RhdGljIHN0cnVjdCBnZW5sX2ZhbWlseSBndHBfZ2VubF9mYW1pbHk7CiAKQEAgLTE1MSw3ICYjNDM7MTUzLDggQEAgc3RhdGljIHN0cnVjdCBwZHBfY3R4ICpndHAwX3BkcF9maW5kKHN0cnVjdCBndHBfZGV2ICpndHAsIHU2NCB0aWQsIHUxNiBmYW1pbHkpCiAKIAloZWFkID0gJmFtcDtndHAtJmd0O3RpZF9oYXNoW2d0cDBfaGFzaGZuKHRpZCkgJSBndHAtJmd0O2hhc2hfc2l6ZV07CiAKLQlobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF90aWQpIHsKJiM0MzsJaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfdGlkLAomIzQzOwkJCQkgbG9ja2RlcF9pc19oZWxkKCZhbXA7Z3RwX3BkcF9sb2NrKSkgewogCQlpZiAocGRwLSZndDthZiA9PSBmYW1pbHkgJmFtcDsmYW1wOwogCQkgICAgcGRwLSZndDtndHBfdmVyc2lvbiA9PSBHVFBfVjAgJmFtcDsmYW1wOwogCQkgICAgcGRwLSZndDt1LnYwLnRpZCA9PSB0aWQpCkBAIC0xNjgsNyAmIzQzOzE3MSw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGRwX2N0eCAqZ3RwMV9wZHBfZmluZChzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCB1MzIgdGlkLCB1MTYgZmFtaWx5KQogCiAJaGVhZCA9ICZhbXA7Z3RwLSZndDt0aWRfaGFzaFtndHAxdV9oYXNoZm4odGlkKSAlIGd0cC0mZ3Q7aGFzaF9zaXplXTsKIAotCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwZHAsIGhlYWQsIGhsaXN0X3RpZCkgewomIzQzOwlobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF90aWQsCiYjNDM7CQkJCSBsb2NrZGVwX2lzX2hlbGQoJmFtcDtndHBfcGRwX2xvY2spKSB7CiAJCWlmIChwZHAtJmd0O2FmID09IGZhbWlseSAmYW1wOyZhbXA7CiAJCSAgICBwZHAtJmd0O2d0cF92ZXJzaW9uID09IEdUUF9WMSAmYW1wOyZhbXA7CiAJCSAgICBwZHAtJmd0O3UudjEuaV90ZWkgPT0gdGlkKQpAQCAtMTg1LDcgJiM0MzsxODksOCBAQCBzdGF0aWMgc3RydWN0IHBkcF9jdHggKmlwdjRfcGRwX2ZpbmQoc3RydWN0IGd0cF9kZXYgKmd0cCwgX19iZTMyIG1zX2FkZHIpCiAKIAloZWFkID0gJmFtcDtndHAtJmd0O2FkZHJfaGFzaFtpcHY0X2hhc2hmbihtc19hZGRyKSAlIGd0cC0mZ3Q7aGFzaF9zaXplXTsKIAotCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwZHAsIGhlYWQsIGhsaXN0X2FkZHIpIHsKJiM0MzsJaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfYWRkciwKJiM0MzsJCQkJIGxvY2tkZXBfaXNfaGVsZCgmYW1wO2d0cF9wZHBfbG9jaykpIHsKIAkJaWYgKHBkcC0mZ3Q7YWYgPT0gQUZfSU5FVCAmYW1wOyZhbXA7CiAJCSAgICBwZHAtJmd0O21zLmFkZHIuc19hZGRyID09IG1zX2FkZHIpCiAJCQlyZXR1cm4gcGRwOwpAQCAtMjIwLDcgJiM0MzsyMjUsOCBAQCBzdGF0aWMgc3RydWN0IHBkcF9jdHggKmlwdjZfcGRwX2ZpbmQoc3RydWN0IGd0cF9kZXYgKmd0cCwKIAogCWhlYWQgPSAmYW1wO2d0cC0mZ3Q7YWRkcl9oYXNoW2lwdjZfaGFzaGZuKG1zX2FkZHIpICUgZ3RwLSZndDtoYXNoX3NpemVdOwogCi0JaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfYWRkcikgewomIzQzOwlobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF9hZGRyLAomIzQzOwkJCQkgbG9ja2RlcF9pc19oZWxkKCZhbXA7Z3RwX3BkcF9sb2NrKSkgewogCQlpZiAocGRwLSZndDthZiA9PSBBRl9JTkVUNiAmYW1wOyZhbXA7CiAJCSAgICBpcHY2X3BkcF9hZGRyX2VxdWFsKCZhbXA7cGRwLSZndDttcy5hZGRyNiwgbXNfYWRkcikpCiAJCQlyZXR1cm4gcGRwOwpAQCAtMTU1NSw5ICYjNDM7MTU2MSwxMSBAQCBzdGF0aWMgdm9pZCBndHBfZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQogCXN0cnVjdCBwZHBfY3R4ICpwY3R4OwogCWludCBpOwogCiYjNDM7CW11dGV4X2xvY2soJmFtcDtndHBfcGRwX2xvY2spOwogCWZvciAoaSA9IDA7IGkgJmx0OyBndHAtJmd0O2hhc2hfc2l6ZTsgaSYjNDM7JiM0MzspCiAJCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocGN0eCwgbmV4dCwgJmFtcDtndHAtJmd0O3RpZF9oYXNoW2ldLCBobGlzdF90aWQpCiAJCQlwZHBfY29udGV4dF9kZWxldGUocGN0eCk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2d0cF9wZHBfbG9jayk7CiAKIAlsaXN0X2RlbCgmYW1wO2d0cC0mZ3Q7bGlzdCk7CiAJdW5yZWdpc3Rlcl9uZXRkZXZpY2VfcXVldWUoZGV2LCBoZWFkKTsKQEAgLTIwNTMsNyAmIzQzOzIwNjEsOSBAQCBzdGF0aWMgaW50IGd0cF9nZW5sX25ld19wZHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbykKIAkJZ290byBvdXRfdW5sb2NrOwogCX0KIAomIzQzOwltdXRleF9sb2NrKCZhbXA7Z3RwX3BkcF9sb2NrKTsKIAlwY3R4ID0gZ3RwX3BkcF9hZGQoZ3RwLCBzaywgaW5mbyk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2d0cF9wZHBfbG9jayk7CiAJaWYgKElTX0VSUihwY3R4KSkgewogCQllcnIgPSBQVFJfRVJSKHBjdHgpOwogCX0gZWxzZSB7CkBAIC0yMTM0LDkgJiM0MzsyMTQ0LDEyIEBAIHN0YXRpYyBpbnQgZ3RwX2dlbmxfZGVsX3BkcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKQogCWlmICghaW5mby0mZ3Q7YXR0cnNbR1RQQV9WRVJTSU9OXSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlyY3VfcmVhZF9sb2NrKCk7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtndHBfcGRwX2xvY2spOwogCiYjNDM7CS8qIGd0cF9maW5kX2RldigpIHVzZXMgZGV2X2dldF9ieV9pbmRleF9yY3UoKS4gKi8KJiM0MzsJcmN1X3JlYWRfbG9jaygpOwogCXBjdHggPSBndHBfZmluZF9wZHAoc29ja19uZXQoc2tiLSZndDtzayksIGluZm8tJmd0O2F0dHJzKTsKJiM0MzsJcmN1X3JlYWRfdW5sb2NrKCk7CiAJaWYgKElTX0VSUihwY3R4KSkgewogCQllcnIgPSBQVFJfRVJSKHBjdHgpOwogCQlnb3RvIG91dF91bmxvY2s7CkBAIC0yMTUzLDcgJiM0MzsyMTY2LDcgQEAgc3RhdGljIGludCBndHBfZ2VubF9kZWxfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pCiAJcGRwX2NvbnRleHRfZGVsZXRlKHBjdHgpOwogCiBvdXRfdW5sb2NrOgotCXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtndHBfcGRwX2xvY2spOwogCXJldHVybiBlcnI7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDM6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQzMwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDIxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEdUUCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9ndHAuY2AuIEl0JiMzOTtzIGludHJvZHVjaW5nIGEgbmV3IG11dGV4LCBgZ3RwX3BkcF9sb2NrYCwgYW5kIHVzaW5nIGl0IHRvIHByb3RlY3QgYSBmZXcga2V5IGZ1bmN0aW9uczogYGd0cF9wZHBfYWRkYCwgYGd0cF9maW5kX3BkcGAsIGFuZCBgcGRwX2NvbnRleHRfZGVsZXRlYCwgYWxvbmcgd2l0aCByZWxhdGVkIG9wZXJhdGlvbnMuIEl0IGFsc28gc2VlbXMgdGhleSYjMzk7dmUgbW9kaWZpZWQgc29tZSBgaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1YCBjYWxscyB0byBpbmNsdWRlIGEgYGxvY2tkZXBfaXNfaGVsZCgmYW1wO2d0cF9wZHBfbG9jaylgIGNoZWNrLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCBpZiB0aGlzIGlzIGV2ZW4gZnV6emFibGUsIGFuZCBpZiBpdCYjMzk7cyB3b3J0aCB0aGUgdGltZSB0byBldmVuIHRyeS4KCkZpcnN0IHN0ZXA6IHdoZXJlIGNhbiB0aGlzIGNvZGUgYmUgcmVhY2hlZD8gSXQmIzM5O3MgdGhlIEdUUCBkcml2ZXIsIHdoaWNoLCBhcyBJIHJlY2FsbCwgaGFuZGxlcyB0aGUgR1BSUyBUdW5uZWxpbmcgUHJvdG9jb2wuIFRoYXQgcmluZ3MgYSBiZWxsLi4uIEkgYmVsaWV2ZSBpdCYjMzk7cyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgKHNwZWNpZmljYWxseSBnZW5sLCByaWdodD8pLiAgTGV0JiMzOTtzIHNlZTogYGd0cF9nZW5sX25ld19wZHBgLCBgZ3RwX2dlbmxfZGVsX3BkcGAuLi4geWVhaCwgdGhvc2Ugd291bGQgZG8gaXQuIEFuZCwgSSB0aGluayBgZ3RwX2RlbGxpbmtgIGlzIGNhbGxlZCB3aGVuIHlvdSBkZWxldGUgdGhlIG5ldGxpbmsgaW50ZXJmYWNlLCBzbyB0aGF0IG1pZ2h0IGFsc28gYmUgcmVsZXZhbnQuCgpOZXh0IEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZm9yIEdUUCB0byBtYWtlIHN1cmUgaXQmIzM5O3MgZW5hYmxlZCBhbmQgbm90IGhpZGRlbiBiZWhpbmQgc29tZSBvYnNjdXJlIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBUaGF0JiMzOTtsbCBiZSBpbXBvcnRhbnQgZm9yIG1ha2luZyBzdXJlIHdlIGNhbiBldmVuIHJlYWNoIGl0IHdpdGggZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgR1RQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTI2MD1jb25maWcgQkFSRVVEUFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctMjcxLVxuZHJpdmVycy9uZXQvS2NvbmZpZzoyNzI6Y29uZmlnIEdUUFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNzMtXHR0cmlzdGF0ZSBcJiMzNDtHUFJTIFR1bm5lbGluZyBQcm90b2NvbCBkYXRhcGF0aCAoR1RQLVUpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDM6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA5MAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgR1RQIEtjb25maWcgRW50cnkqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1Nob3cgbWUgdGhlIGZ1bGwgS2NvbmZpZyBlbnRyeSBmb3IgR1RQLiYjMzQ7IEkgd2FudCB0aGUgY29tcGxldGUgcGljdHVyZSBoZXJlLCBubyBzaG9ydGN1dHMuIEkmIzM5O20gbm90IGp1c3QgbG9va2luZyBmb3IgYSBxdWljayBzbmlwcGV0OyBJIG5lZWQgdGhlIGVudGlyZSBjb250ZXh0IHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgZGVmYXVsdCBzZXR0aW5ncyByZWxhdGVkIHRvIHRoZSBHVFAgcHJvdG9jb2wuIEkmIzM5O20gYW50aWNpcGF0aW5nIHBvdGVudGlhbCBudWFuY2VzIGFuZCBpbnRlcmRlcGVuZGVuY2llcyB3aXRoIG90aGVyIGZlYXR1cmVzLCBzbyBJIG5lZWQgdGhlIGZ1bGwgZGV0YWlscyB0byBwcm9wZXJseSBhc3Nlc3MgdGhlIGltcGxpY2F0aW9ucyBvZiBhbnkgY29uZmlndXJhdGlvbiBjaGFuZ2VzLiBMZXQmIzM5O3MgZ2V0IHRoZSB3aG9sZSB0aGluZyBpbiBmcm9udCBvZiBtZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI3MDpcdFx0ICB3aWxsIGJlIGNhbGxlZCBiYXJldWRwLlxuIDI3MTpcdFxuIDI3MjpcdGNvbmZpZyBHVFBcbiAyNzM6XHRcdHRyaXN0YXRlIFwmIzM0O0dQUlMgVHVubmVsaW5nIFByb3RvY29sIGRhdGFwYXRoIChHVFAtVSlcJiMzNDtcbiAyNzQ6XHRcdGRlcGVuZHMgb24gSU5FVFxuIDI3NTpcdFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4gMjc2Olx0XHRoZWxwXG4gMjc3Olx0XHQgIFRoaXMgYWxsb3dzIG9uZSB0byBjcmVhdGUgZ3RwIHZpcnR1YWwgaW50ZXJmYWNlcyB0aGF0IHByb3ZpZGVcbiAyNzg6XHRcdCAgdGhlIEdQUlMgVHVubmVsaW5nIFByb3RvY29sIGRhdGFwYXRoIChHVFAtVSkuIFRoaXMgdHVubmVsaW5nIHByb3RvY29sXG4gMjc5Olx0XHQgIGlzIHVzZWQgdG8gcHJldmVudCBzdWJzY3JpYmVycyBmcm9tIGFjY2Vzc2luZyBtb2JpbGUgY2FycmllciBjb3JlXG4gMjgwOlx0XHQgIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1cmUuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIGEgdXNlcnNwYWNlIHNvZnR3YXJlIHRoYXRcbiAyODE6XHRcdCAgaW1wbGVtZW50cyB0aGUgc2lnbmFsaW5nIHByb3RvY29sIChHVFAtQykgdG8gdXBkYXRlIGl0cyBQRFAgY29udGV4dFxuIDI4MjpcdFx0ICBiYXNlLCBzdWNoIGFzIE9wZW5HR1NOIFx1MDAzY2h0dHA6Ly9naXQub3Ntb2NvbS5vcmcvb3Blbmdnc24vKS4gVGhpc1xuIDI4MzpcdFx0ICB0dW5uZWxpbmcgcHJvdG9jb2wgaXMgaW1wbGVtZW50ZWQgYWNjb3JkaW5nIHRvIHRoZSBHU00gVFMgMDkuNjAgYW5kXG4gMjg0Olx0XHQgIDNHUFAgVFMgMjkuMDYwIHN0YW5kYXJkcy5cbiAyODU6XHRcbiAyODY6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlcnMgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAyODc6XHRcdCAgd2lsbCBiZSBjYWxsZWQgZ3RwLlxuIDI4ODpcdFxuIDI4OTpcdGNvbmZpZyBQRkNQXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDM6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYxNwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIEdUUCBDb25maWd1cmF0aW9uIFBhdGNoKioKCk9rYXksIHNvIHRoZSBjb25maWcgaGVyZSBpcyBjZW50ZXJlZCBhcm91bmQgYEdUUGAgYW5kIHJlbGllcyBvbiBgSU5FVGAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSB0aGUgcGF0Y2ggaXMgdG91Y2hpbmcgYGd0cF9nZW5sX25ld19wZHBgLCBgZ3RwX2dlbmxfZGVsX3BkcGAsIGFuZCBgZ3RwX2RlbGxpbmtgLiBUaG9zZSBhcmUgdGhlIGVudHJ5IHBvaW50cyDigJMgdGhlIGZ1bmN0aW9ucyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIGEgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlLiBGcm9tIGEgcXVpY2sgZ2xhbmNlLCB0aGUgY2hhbmdlcyBhcHBlYXIgZnVuY3Rpb25hbCwgcHJpbWFyaWx5IGZvY3VzZWQgb24gYWRkaW5nIGEgbXV0ZXggdG8gcHJvdGVjdCBQRFAgY29udGV4dCBvcGVyYXRpb25zLiBUaGF0JiMzOTtzIGEgZ29vZCBtb3ZlLCBnZW5lcmFsbHksIGJ1dCBpdCBhbHNvIHRlbGxzIG1lIHdlJiMzOTt2ZSBnb3QgYSBjb25jdXJyZW5jeSBjb25jZXJuIGFuZCB3ZSAqYWJzb2x1dGVseSogbmVlZCB0byBmdXp6IHRoaXMgY29kZS4gVGhlIGZvY3VzIHN5bWJvbHMgYXJlIGNsZWFybHk6IGBndHBfZ2VubF9uZXdfcGRwYCwgYGd0cF9nZW5sX2RlbF9wZHBgLCBhbmQgYGd0cF9kZWxsaW5rYC4gSSBuZWVkIHRvIHB1dCB0aG9zZSBvbiBteSBsaXN0IHRvIGhhbW1lciB3aXRoIGZ1enppbmcuIExldCBtZSBzZWUgaWYgSSBjYW4gZmluZCBvdGhlciBmdW5jdGlvbnMgbmVhcmJ5IHRoYXQgbWlnaHQgYWxzbyBiZW5lZml0IGZyb20gc2NydXRpbnkuLi4gSSBzaG91bGQgc2VlIGlmIHRoZXJlIGFyZSBvdGhlciBmdW5jdGlvbnMgaW52b2x2ZWQgd2l0aCBHVFAgY29udGV4dCBtYW5hZ2VtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAzOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2d0cF9nZW5sX25ld19wZHAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ndHAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ndHAuYz0yMDEyPXN0YXRpYyBpbnQgZ3RwX3R1bm5lbF9ub3RpZnkoc3RydWN0IHBkcF9jdHggKnBjdHgsIHU4IGNtZCwgZ2ZwX3QgYWxsb2NhdGlvbik7XG5kcml2ZXJzL25ldC9ndHAuYy0yMDEzLVxuZHJpdmVycy9uZXQvZ3RwLmM6MjAxNDpzdGF0aWMgaW50IGd0cF9nZW5sX25ld19wZHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbmRyaXZlcnMvbmV0L2d0cC5jLTIwMTUte1xuLS1cbmRyaXZlcnMvbmV0L2d0cC5jPTI0NDY9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBndHBfZ2VubF9vcHNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ndHAuYy0yNDQ5LVx0XHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXG5kcml2ZXJzL25ldC9ndHAuYzoyNDUwOlx0XHQuZG9pdCA9IGd0cF9nZW5sX25ld19wZHAsXG5kcml2ZXJzL25ldC9ndHAuYy0yNDUxLVx0XHQuZmxhZ3MgPSBHRU5MX0FETUlOX1BFUk0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDM6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI4OQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQ2hlY2tpbmcgYGd0cF9kZWxsaW5rYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgZ3RwX2RlbGxpbmtgIGlzIGJlaGF2aW5nIGFzIGV4cGVjdGVkLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgZmlyc3QgdGhpbmcgSSYjMzk7bSBjaGVja2luZyBpc24mIzM5O3QgdGhlIGNvZGUgaXRzZWxmIGJ1dCB0aGUgKmNvbnRleHQqIG9mIGl0cyBleGVjdXRpb24uIEFtIEkgZGVhbGluZyB3aXRoIGEgc3BlY2lmaWMgc2NlbmFyaW8/IEFyZSB0aGVyZSByZWNlbnQgY2hhbmdlcyB0aGF0IG1pZ2h0IGhhdmUgdHJpZ2dlcmVkIGFuIGlzc3VlPyBXaGF0JiMzOTtzIHRoZSBlbnZpcm9ubWVudCBpdCYjMzk7cyBydW5uaW5nIGluPyBUaGlzIGtpbmQgb2YgaW5pdGlhbCBhc3Nlc3NtZW50IHNhdmVzIG1lIGEgbG90IG9mIHRpbWUgaW4gdGhlIGxvbmcgcnVuLiBOb3csIGlzIGBndHBfZGVsbGlua2AgZmFpbGluZz8gUHJvZHVjaW5nIHVuZXhwZWN0ZWQgcmVzdWx0cz8gT3IgaXMgdGhlcmUgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIGRlbGlua2luZyBwcm9jZXNzIHRoYXQgSSBoYXZlIG1pc3NlZD8KCk15IG5leHQgdGhvdWdodCBwcm9jZXNzIHdvdWxkIGRlcGVuZCBvbiB0aGUgbmF0dXJlIG9mIHRoZSBpc3N1ZSwgYnV0IEkmIzM5O2QgbGlrZWx5IGZvbGxvdyB0aGVzZSBzdGVwczogSSYjMzk7bGwgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIGxvZ3MsIGxvb2tpbmcgZm9yIGFueSBzcGVjaWZpYyBlcnJvciBtZXNzYWdlcyBvciB1bnVzdWFsIHBhdHRlcm5zLiBUaGVuLCBJJiMzOTtkIHJldmlldyB0aGUgaW5wdXQgZGF0YSB0byBjb25maXJtIGl0JiMzOTtzIGluIHRoZSBleHBlY3RlZCBmb3JtYXQuIEkgbWlnaHQgaW5zdHJ1bWVudCB0aGUgZnVuY3Rpb24gd2l0aCBzb21lIGFkZGl0aW9uYWwgbG9nZ2luZyB0byBwaW5wb2ludCB3aGVyZSB0aGUgcHJvYmxlbSBvcmlnaW5hdGVzLiBJcyBpdCBhIGRhdGEgdmFsaWRhdGlvbiBwcm9ibGVtLCBhIGJ1ZyBpbiB0aGUgbGlua2luZyBhbGdvcml0aG0sIG9yIGEgcHJvYmxlbSB3aXRoIHRoZSBpbmZyYXN0cnVjdHVyZT8KCklmIHRob3NlIGNoZWNrcyBkb24mIzM5O3QgaW1tZWRpYXRlbHkgcmV2ZWFsIHRoZSBjdWxwcml0LCBJJiMzOTtsbCBzdGFydCBjb25zaWRlcmluZyB0aGUgZGVwZW5kZW5jaWVzIG9mIGBndHBfZGVsbGlua2AuIEFyZSB0aGVyZSBleHRlcm5hbCBBUElzIGl0IHJlbGllcyBvbj8gRGF0YWJhc2VzPyBIYXMgYW55dGhpbmcgY2hhbmdlZCB0aGVyZSByZWNlbnRseT8gVmVyc2lvbiBtaXNtYXRjaGVzIGFyZSBhbHdheXMgYSBwb3NzaWJpbGl0eS4gUGVyaGFwcyB0aGVyZSYjMzk7cyBhbiBpc3N1ZSB3aXRoIHJlc291cmNlIGFsbG9jYXRpb24sIHRocmVhZCBjb250ZW50aW9uLCBvciBhIHN1YnRsZSByYWNlIGNvbmRpdGlvbi4gVGltZSB0byBkZWJ1ZyBhbmQgdGVzdC4gQW5kIGxhc3RseSwgSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0byB3cml0ZSB1cCBzb21lIGRvY3VtZW50YXRpb24gYWJvdXQgbXkgZmluZGluZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAzOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2d0cF9kZWxsaW5rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZ3RwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZ3RwLmM9MTQ3NT1zdGF0aWMgaW50IGd0cF9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZ3RwLmMtMTU1Ni1cbmRyaXZlcnMvbmV0L2d0cC5jOjE1NTc6c3RhdGljIHZvaWQgZ3RwX2RlbGxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZClcbmRyaXZlcnMvbmV0L2d0cC5jLTE1NTgte1xuLS1cbmRyaXZlcnMvbmV0L2d0cC5jPTE2MTg9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIGd0cF9saW5rX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuLS1cbmRyaXZlcnMvbmV0L2d0cC5jLTE2MjUtXHQubmV3bGlua1x0PSBndHBfbmV3bGluayxcbmRyaXZlcnMvbmV0L2d0cC5jOjE2MjY6XHQuZGVsbGlua1x0PSBndHBfZGVsbGluayxcbmRyaXZlcnMvbmV0L2d0cC5jLTE2MjctXHQuZ2V0X3NpemVcdD0gZ3RwX2dldF9zaXplLFxuLS1cbmRyaXZlcnMvbmV0L2d0cC5jPTI0OTc9c3RhdGljIHZvaWQgX19uZXRfZXhpdCBndHBfbmV0X2V4aXRfcnRubChzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxuZHJpdmVycy9uZXQvZ3RwLmMtMjUwMy1cdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShndHAsIGd0cF9uZXh0LCBcdTAwMjZnbi1cdTAwM2VndHBfZGV2X2xpc3QsIGxpc3QpXG5kcml2ZXJzL25ldC9ndHAuYzoyNTA0Olx0XHRndHBfZGVsbGluayhndHAtXHUwMDNlZGV2LCBkZXZfdG9fa2lsbCk7XG5kcml2ZXJzL25ldC9ndHAuYy0yNTA1LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDM6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA1OQoJCQkJCQkJb3V0cHV0OiAxMTYKCQkJCQkJCXRob3VnaHRzOiAzNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgR1RQIFBEUCBDb250ZXh0IFByb3RlY3Rpb24gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRpbmcgYSBtdXRleCwgYGd0cF9wZHBfbG9ja2AsIHRvIHNhZmVndWFyZCBvcGVyYXRpb25zIG9uIFBEUCBjb250ZXh0cyB3aXRoaW4gdGhlIEdUUCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBpcyBhIHNvbGlkIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQmIzM5O3MgdXNlci1zcGFjZSByZWFjaGFibGUgdmlhIG5ldGxpbmssIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIGl0IGFzIHNvbWV0aGluZyB0byBwYXkgYXR0ZW50aW9uIHRvLiBUaGUgcmVsZXZhbnQgY29uZmlnIGlzIGBHVFBgLCB3aGljaCBtYWtlcyBzZW5zZS4KCkJlZm9yZSBJIGdvIGZ1cnRoZXIsIGxldCBtZSBkb3VibGUtY2hlY2sgc29tZXRoaW5nIHRoYXQmIzM5O3MgYWx3YXlzIGdvb2QgcHJhY3RpY2U6IEkgbmVlZCB0byBlbnN1cmUgYElORVRgIGlzbiYjMzk7dCBpbmFkdmVydGVudGx5IGRpc2FibGVkLiBUaG91Z2ggYElORVRgIGlzIHVzdWFsbHkgZW5hYmxlZCBieSBkZWZhdWx0LCBpdCYjMzk7cyBhbHdheXMgYSBnb29kIGhhYml0IHRvIHZlcmlmeSB0aGF0IGl0IHJlbWFpbnMgZW5hYmxlZC4gQWxyaWdodCwgYEdUUGAgYWxvbmUgaXMgc3VmZmljaWVudDsgYElORVRgIGlzIGEgYmFzZSBjb25maWcsIHNvIHdlJiMzOTtyZSBnb29kIHRoZXJlLgoKTm93LCBsZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gdG91Y2hlZC4gSXQgbG9va3MgbGlrZSBgZ3RwMF9wZHBfZmluZGAsIGBndHAxX3BkcF9maW5kYCwgYGlwdjRfcGRwX2ZpbmRgLCBhbmQgYGlwdjZfcGRwX2ZpbmRgIGFyZSBiZWluZyBtb2RpZmllZCB0byBpbmNsdWRlIGBsb2NrZGVwX2lzX2hlbGQoJmFtcDtndHBfcGRwX2xvY2spYC4gVGhlc2UgYXJlIHN0YXRpYyBmdW5jdGlvbnMsIHNvIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCB0aGV5IG1pZ2h0IGJlIGlubGluZWQsIGltcGFjdGluZyBob3cgdGhlIGxvY2sgaXMgcGVyY2VpdmVkLiBUaGUgbWFpbiBlbnRyeSBwb2ludHMsIHRob3VnaCwgYXBwZWFyIHRvIGJlIGBndHBfZGVsbGlua2AsIGBndHBfZ2VubF9uZXdfcGRwYCwgYW5kIGBndHBfZ2VubF9kZWxfcGRwYC4KCkdpdmVuIGFsbCB0aGlzLCBoZXJlJiMzOTtzIHdoYXQgSSYjMzk7bGwgZG86IEkmIzM5O20gZ29pbmcgdG8gZmxhZyB0aGlzIGFzICYjMzQ7V29ydGhGdXp6aW5nJiMzNDsgYmVjYXVzZSBvZiB0aGUgdXNlci1zcGFjZSBpbnRlcmFjdGlvbiBhbmQgdGhlIGNvbmN1cnJlbmN5LXJlbGF0ZWQgbW9kaWZpY2F0aW9ucy4gTXkgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OyB3aWxsIGRlZmluaXRlbHkgaW5jbHVkZSBgZ3RwX2dlbmxfbmV3X3BkcGAsIGBndHBfZ2VubF9kZWxfcGRwYCwgYW5kIGBndHBfZGVsbGlua2AuIEFuZCBteSAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OyB3aWxsIGJlIGBHVFBgLiBUaGUgJiMzNDtSZWFzb25pbmcmIzM0OyB3aWxsIGJlOiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IG11dGV4IHRvIHByb3RlY3QgR1RQIFBEUCBjb250ZXh0IG9wZXJhdGlvbnMsIG1vZGlmeWluZyB0aGUgbmV0bGluayBoYW5kbGVycyBmb3IgY3JlYXRpbmcgYW5kIGRlbGV0aW5nIFBEUCBjb250ZXh0cywgYXMgd2VsbCBhcyB0aGUgbmV0X2RldmljZSBkZWxsaW5rIGhhbmRsZXIuIFRoZXNlIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIGludm9sdmUgZnVuY3Rpb25hbCBjb25jdXJyZW5jeSBjaGFuZ2VzLiYjMzQ7IFRoYXQgc2hvdWxkIGNvdmVyIG15IGJhc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7R1RQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Z3RwX2dlbmxfbmV3X3BkcCYjMzQ7LAogICAgJiMzNDtndHBfZ2VubF9kZWxfcGRwJiMzNDssCiAgICAmIzM0O2d0cF9kZWxsaW5rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbXV0ZXggdG8gcHJvdGVjdCBHVFAgUERQIGNvbnRleHQgb3BlcmF0aW9ucywgbW9kaWZ5aW5nIHRoZSBuZXRsaW5rIGhhbmRsZXJzIGZvciBjcmVhdGluZyBhbmQgZGVsZXRpbmcgUERQIGNvbnRleHRzLCBhcyB3ZWxsIGFzIHRoZSBuZXRfZGV2aWNlIGRlbGxpbmsgaGFuZGxlci4gVGhlc2UgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgaW52b2x2ZSBmdW5jdGlvbmFsIGNvbmN1cnJlbmN5IGNoYW5nZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0dUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2d0cF9nZW5sX25ld19wZHAmIzM0OywKICAgICYjMzQ7Z3RwX2dlbmxfZGVsX3BkcCYjMzQ7LAogICAgJiMzNDtndHBfZGVsbGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IG11dGV4IHRvIHByb3RlY3QgR1RQIFBEUCBjb250ZXh0IG9wZXJhdGlvbnMsIG1vZGlmeWluZyB0aGUgbmV0bGluayBoYW5kbGVycyBmb3IgY3JlYXRpbmcgYW5kIGRlbGV0aW5nIFBEUCBjb250ZXh0cywgYXMgd2VsbCBhcyB0aGUgbmV0X2RldmljZSBkZWxsaW5rIGhhbmRsZXIuIFRoZXNlIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIGludm9sdmUgZnVuY3Rpb25hbCBjb25jdXJyZW5jeSBjaGFuZ2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzo0MTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAzOjQxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbXV0ZXggKGBndHBfcGRwX2xvY2tgKSB0byBwcm90ZWN0IHRoZSBQRFAgY29udGV4dCBsaXN0cyBpbiB0aGUgR1RQIGRyaXZlci4gSXQgYWRkcyBsb2NraW5nIGFyb3VuZCBQRFAgY29udGV4dCBhZGRpdGlvbiwgZGVsZXRpb24sIGFuZCBsb29rdXAsIGFuZCB1cGRhdGVzIHRoZSBSQ1UgbGlzdCB0cmF2ZXJzYWwgbWFjcm9zIHRvIGluY2x1ZGUgYGxvY2tkZXBfaXNfaGVsZChcdTAwMjZndHBfcGRwX2xvY2spYC4gVGhlc2UgY2hhbmdlcyBhcmUgYWltZWQgYXQgZml4aW5nIGNvbmN1cnJlbmN5IGlzc3Vlcywgc3VjaCBhcyByYWNlIGNvbmRpdGlvbnMsIGxpc3QgY29ycnVwdGlvbnMsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFN1Y2ggaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBzdGFuZGFyZCB0b29scyBsaWtlIEtBU0FOLCBLQ1NBTiwgYW5kIExPQ0tERVAuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1vZGlmeSBtZW1vcnkgaW5pdGlhbGl6YXRpb24sIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjODA4ZGUzMjNmYjhhYWU3ZWQ3NDYyODBjZWY3MzUzZTk5NTc4ODNiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMTQgMDM6NDA6NTIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ndHAuYyBiL2RyaXZlcnMvbmV0L2d0cC5jCmluZGV4IDlhMTJjYzUzZGEwMDIuLmVhODNhNmI2YWExYTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2d0cC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2d0cC5jCkBAIC0xMiw2ICYjNDM7MTIsNyBAQAogI2RlZmluZSBwcl9mbXQoZm10KSBLQlVJTERfTU9ETkFNRSAmIzM0OzogJiMzNDsgZm10CiAKICNpbmNsdWRlICZsdDtsaW51eC9tb2R1bGUuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvbXV0ZXguaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9za2J1ZmYuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC91ZHAuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9yY3VsaXN0LmgmZ3Q7CkBAIC0xMDgsNiAmIzQzOzEwOSw3IEBAIHN0cnVjdCBndHBfbmV0IHsKIH07CiAKIHN0YXRpYyB1MzIgZ3RwX2hfaW5pdHZhbDsKJiM0MztzdGF0aWMgREVGSU5FX01VVEVYKGd0cF9wZHBfbG9jayk7CiAKIHN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgZ3RwX2dlbmxfZmFtaWx5OwogCkBAIC0xNTEsNyAmIzQzOzE1Myw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGRwX2N0eCAqZ3RwMF9wZHBfZmluZChzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCB1NjQgdGlkLCB1MTYgZmFtaWx5KQogCiAJaGVhZCA9ICZhbXA7Z3RwLSZndDt0aWRfaGFzaFtndHAwX2hhc2hmbih0aWQpICUgZ3RwLSZndDtoYXNoX3NpemVdOwogCi0JaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfdGlkKSB7CiYjNDM7CWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwZHAsIGhlYWQsIGhsaXN0X3RpZCwKJiM0MzsJCQkJIGxvY2tkZXBfaXNfaGVsZCgmYW1wO2d0cF9wZHBfbG9jaykpIHsKIAkJaWYgKHBkcC0mZ3Q7YWYgPT0gZmFtaWx5ICZhbXA7JmFtcDsKIAkJICAgIHBkcC0mZ3Q7Z3RwX3ZlcnNpb24gPT0gR1RQX1YwICZhbXA7JmFtcDsKIAkJICAgIHBkcC0mZ3Q7dS52MC50aWQgPT0gdGlkKQpAQCAtMTY4LDcgJiM0MzsxNzEsOCBAQCBzdGF0aWMgc3RydWN0IHBkcF9jdHggKmd0cDFfcGRwX2ZpbmQoc3RydWN0IGd0cF9kZXYgKmd0cCwgdTMyIHRpZCwgdTE2IGZhbWlseSkKIAogCWhlYWQgPSAmYW1wO2d0cC0mZ3Q7dGlkX2hhc2hbZ3RwMXVfaGFzaGZuKHRpZCkgJSBndHAtJmd0O2hhc2hfc2l6ZV07CiAKLQlobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF90aWQpIHsKJiM0MzsJaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfdGlkLAomIzQzOwkJCQkgbG9ja2RlcF9pc19oZWxkKCZhbXA7Z3RwX3BkcF9sb2NrKSkgewogCQlpZiAocGRwLSZndDthZiA9PSBmYW1pbHkgJmFtcDsmYW1wOwogCQkgICAgcGRwLSZndDtndHBfdmVyc2lvbiA9PSBHVFBfVjEgJmFtcDsmYW1wOwogCQkgICAgcGRwLSZndDt1LnYxLmlfdGVpID09IHRpZCkKQEAgLTE4NSw3ICYjNDM7MTg5LDggQEAgc3RhdGljIHN0cnVjdCBwZHBfY3R4ICppcHY0X3BkcF9maW5kKHN0cnVjdCBndHBfZGV2ICpndHAsIF9fYmUzMiBtc19hZGRyKQogCiAJaGVhZCA9ICZhbXA7Z3RwLSZndDthZGRyX2hhc2hbaXB2NF9oYXNoZm4obXNfYWRkcikgJSBndHAtJmd0O2hhc2hfc2l6ZV07CiAKLQlobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF9hZGRyKSB7CiYjNDM7CWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwZHAsIGhlYWQsIGhsaXN0X2FkZHIsCiYjNDM7CQkJCSBsb2NrZGVwX2lzX2hlbGQoJmFtcDtndHBfcGRwX2xvY2spKSB7CiAJCWlmIChwZHAtJmd0O2FmID09IEFGX0lORVQgJmFtcDsmYW1wOwogCQkgICAgcGRwLSZndDttcy5hZGRyLnNfYWRkciA9PSBtc19hZGRyKQogCQkJcmV0dXJuIHBkcDsKQEAgLTIyMCw3ICYjNDM7MjI1LDggQEAgc3RhdGljIHN0cnVjdCBwZHBfY3R4ICppcHY2X3BkcF9maW5kKHN0cnVjdCBndHBfZGV2ICpndHAsCiAKIAloZWFkID0gJmFtcDtndHAtJmd0O2FkZHJfaGFzaFtpcHY2X2hhc2hmbihtc19hZGRyKSAlIGd0cC0mZ3Q7aGFzaF9zaXplXTsKIAotCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwZHAsIGhlYWQsIGhsaXN0X2FkZHIpIHsKJiM0MzsJaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfYWRkciwKJiM0MzsJCQkJIGxvY2tkZXBfaXNfaGVsZCgmYW1wO2d0cF9wZHBfbG9jaykpIHsKIAkJaWYgKHBkcC0mZ3Q7YWYgPT0gQUZfSU5FVDYgJmFtcDsmYW1wOwogCQkgICAgaXB2Nl9wZHBfYWRkcl9lcXVhbCgmYW1wO3BkcC0mZ3Q7bXMuYWRkcjYsIG1zX2FkZHIpKQogCQkJcmV0dXJuIHBkcDsKQEAgLTE1NTUsOSAmIzQzOzE1NjEsMTEgQEAgc3RhdGljIHZvaWQgZ3RwX2RlbGxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKIAlzdHJ1Y3QgcGRwX2N0eCAqcGN0eDsKIAlpbnQgaTsKIAomIzQzOwltdXRleF9sb2NrKCZhbXA7Z3RwX3BkcF9sb2NrKTsKIAlmb3IgKGkgPSAwOyBpICZsdDsgZ3RwLSZndDtoYXNoX3NpemU7IGkmIzQzOyYjNDM7KQogCQlobGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBjdHgsIG5leHQsICZhbXA7Z3RwLSZndDt0aWRfaGFzaFtpXSwgaGxpc3RfdGlkKQogCQkJcGRwX2NvbnRleHRfZGVsZXRlKHBjdHgpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtndHBfcGRwX2xvY2spOwogCiAJbGlzdF9kZWwoJmFtcDtndHAtJmd0O2xpc3QpOwogCXVucmVnaXN0ZXJfbmV0ZGV2aWNlX3F1ZXVlKGRldiwgaGVhZCk7CkBAIC0yMDUzLDcgJiM0MzsyMDYxLDkgQEAgc3RhdGljIGludCBndHBfZ2VubF9uZXdfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pCiAJCWdvdG8gb3V0X3VubG9jazsKIAl9CiAKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2d0cF9wZHBfbG9jayk7CiAJcGN0eCA9IGd0cF9wZHBfYWRkKGd0cCwgc2ssIGluZm8pOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtndHBfcGRwX2xvY2spOwogCWlmIChJU19FUlIocGN0eCkpIHsKIAkJZXJyID0gUFRSX0VSUihwY3R4KTsKIAl9IGVsc2UgewpAQCAtMjEzNCw5ICYjNDM7MjE0NCwxMiBAQCBzdGF0aWMgaW50IGd0cF9nZW5sX2RlbF9wZHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbykKIAlpZiAoIWluZm8tJmd0O2F0dHJzW0dUUEFfVkVSU0lPTl0pCiAJCXJldHVybiAtRUlOVkFMOwogCi0JcmN1X3JlYWRfbG9jaygpOwomIzQzOwltdXRleF9sb2NrKCZhbXA7Z3RwX3BkcF9sb2NrKTsKIAomIzQzOwkvKiBndHBfZmluZF9kZXYoKSB1c2VzIGRldl9nZXRfYnlfaW5kZXhfcmN1KCkuICovCiYjNDM7CXJjdV9yZWFkX2xvY2soKTsKIAlwY3R4ID0gZ3RwX2ZpbmRfcGRwKHNvY2tfbmV0KHNrYi0mZ3Q7c2spLCBpbmZvLSZndDthdHRycyk7CiYjNDM7CXJjdV9yZWFkX3VubG9jaygpOwogCWlmIChJU19FUlIocGN0eCkpIHsKIAkJZXJyID0gUFRSX0VSUihwY3R4KTsKIAkJZ290byBvdXRfdW5sb2NrOwpAQCAtMjE1Myw3ICYjNDM7MjE2Niw3IEBAIHN0YXRpYyBpbnQgZ3RwX2dlbmxfZGVsX3BkcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKQogCXBkcF9jb250ZXh0X2RlbGV0ZShwY3R4KTsKIAogb3V0X3VubG9jazoKLQlyY3VfcmVhZF91bmxvY2soKTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7Z3RwX3BkcF9sb2NrKTsKIAlyZXR1cm4gZXJyOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDMwCgkJCQkJCQlvdXRwdXQ6IDE3NAoJCQkJCQkJdGhvdWdodHM6IDQyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBHVFAgUERQIENvbnRleHQgTG9ja2luZyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHN0cmFpZ2h0Zm9yd2FyZC4gSXQmIzM5O3MgYWxsIGFib3V0IGNvbmN1cnJlbmN5IGFuZCBsb2NraW5nIHdpdGhpbiB0aGUgR1RQIGRyaXZlciwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgdGhlIFBEUCBjb250ZXh0IGxpc3RzIGluIGBkcml2ZXJzL25ldC9ndHAuY2AuIFRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhlIGBndHBfcGRwX2xvY2tgIG11dGV4IGlzIHRoZSBrZXkgaGVyZS4gVGhlIHByaW1hcnkgZnVuY3Rpb24gb2YgdGhpcyBtdXRleCBpcyB0byBwcm90ZWN0IHRoZSBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzIGZyb20gcmFjZSBjb25kaXRpb25zLiBUaGUgcmVsZXZhbnQgZnVuY3Rpb25zLCBsaWtlIGBndHAwX3BkcF9maW5kYCwgYGd0cDFfcGRwX2ZpbmRgLCBgaXB2NF9wZHBfZmluZGAsIGFuZCBgaXB2Nl9wZHBfZmluZGAsIG5vdyBwYXNzIGBsb2NrZGVwX2lzX2hlbGQoJmFtcDtndHBfcGRwX2xvY2spYCB0byBgaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1YC4gVGhpcyBpcyBjcnVjaWFsIGZvciB2ZXJpZnlpbmcgdGhhdCB0aGUgZXhwZWN0ZWQgbG9jayBpcyBoZWxkIGJlZm9yZSB0aGUgUkNVIHRyYXZlcnNhbCwgcHJldmVudGluZyBwb3RlbnRpYWwgaXNzdWVzLgoKSSBzZWUgdGhleSYjMzk7dmUgYWRkZWQgbXV0ZXggbG9ja2luZyBhbmQgdW5sb2NraW5nIGFyb3VuZCB0aGUgY3JpdGljYWwgc2VjdGlvbnMgd2l0aGluIGBndHBfZGVsbGlua2AsIGBndHBfZ2VubF9uZXdfcGRwYCwgYW5kIGBndHBfZ2VubF9kZWxfcGRwYC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlOyBgZ3RwX2RlbGxpbmtgIG5lZWRzIHRvIGxvY2sgd2hpbGUgZGVsZXRpbmcgY29udGV4dHMsIGBndHBfZ2VubF9uZXdfcGRwYCBuZWVkcyB0aGUgbG9jayB3aGVuIGFkZGluZyBuZXcgb25lcywgYW5kIGBndHBfZ2VubF9kZWxfcGRwYCBuZWVkcyBpdCB0byBwcm90ZWN0IHRoZSBmaW5kIGFuZCBkZWxldGUgb3BlcmF0aW9ucy4gSXQmIzM5O3MgYSBjbGVhbiwgc3RhbmRhcmQgcGF0dGVybiBmb3IgZW5zdXJpbmcgZGF0YSBpbnRlZ3JpdHkgZHVyaW5nIGNvbmN1cnJlbnQgYWNjZXNzLgoKVGhlcmUmIzM5O3Mgbm90aGluZyBoZXJlIHRoYXQgbG9va3MgbGlrZSBpdCYjMzk7cyBpbnRyb2R1Y2luZyBuZXcgc3RydWN0dXJlcyBleHBvc2VkIHRvIHVzZXIgc3BhY2UsIG5vciBpcyBhbnkgaW5pdGlhbGl6YXRpb24gbG9naWMgbW9kaWZpZWQgaW4gYSB3YXkgdGhhdCBjb3VsZCBsZWFkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGV4cG9zdXJlLiBUaGlzIHBhdGNoIGlzIHB1cmVseSBmb2N1c2VkIG9uIGxvY2tpbmcuIEZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLCBpdCBhZGRyZXNzZXMgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW9zLCBvciBsaXN0IGNvcnJ1cHRpb24sIHdoaWNoIGFyZSB0aGUgc29ydHMgb2YgaXNzdWVzIHRoYXQgS0FTQU4vTE9DS0RFUCBhcmUgZGVzaWduZWQgdG8gY2F0Y2guIEtNU0FOLCB3aGljaCBmb2N1c2VzIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBpc24mIzM5O3QgcmVsZXZhbnQgaW4gdGhpcyBjb250ZXh0LgoKR2l2ZW4gdGhhdCwgSSYjMzk7bSBjb25maWRlbnQgaW4gc2V0dGluZyBgTmVlZHNLTVNBTmAgdG8gYGZhbHNlYCBoZXJlLiBUaGlzIGNoYW5nZSBpcyBlbnRpcmVseSByZWxhdGVkIHRvIGNvbmN1cnJlbmN5IGNvbnRyb2wgYW5kIGRhdGEgaW50ZWdyaXR5LCBub3QgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkgcHJvYmxlbXMuIEl0JiMzOTtzIGEgc3RhbmRhcmQgbG9ja2luZyBmaXgsIGFuZCB0aGUgZXhpc3Rpbmcga2VybmVsIHRvb2xzIGZvciBkZXRlY3RpbmcgY29uY3VycmVuY3kgaXNzdWVzIHdpbGwgYmUgdGhlIG1vc3QgYXBwcm9wcmlhdGUgdG9vbHMgZm9yIGZpbmRpbmcgYW55IHJlZ3Jlc3Npb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IG11dGV4IChgZ3RwX3BkcF9sb2NrYCkgdG8gcHJvdGVjdCB0aGUgUERQIGNvbnRleHQgbGlzdHMgaW4gdGhlIEdUUCBkcml2ZXIuIEl0IGFkZHMgbG9ja2luZyBhcm91bmQgUERQIGNvbnRleHQgYWRkaXRpb24sIGRlbGV0aW9uLCBhbmQgbG9va3VwLCBhbmQgdXBkYXRlcyB0aGUgUkNVIGxpc3QgdHJhdmVyc2FsIG1hY3JvcyB0byBpbmNsdWRlIGBsb2NrZGVwX2lzX2hlbGQoXHUwMDI2Z3RwX3BkcF9sb2NrKWAuIFRoZXNlIGNoYW5nZXMgYXJlIGFpbWVkIGF0IGZpeGluZyBjb25jdXJyZW5jeSBpc3N1ZXMsIHN1Y2ggYXMgcmFjZSBjb25kaXRpb25zLCBsaXN0IGNvcnJ1cHRpb25zLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzLiBTdWNoIGlzc3VlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgc3RhbmRhcmQgdG9vbHMgbGlrZSBLQVNBTiwgS0NTQU4sIGFuZCBMT0NLREVQLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtb2RpZnkgbWVtb3J5IGluaXRpYWxpemF0aW9uLCBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbXV0ZXggKGBndHBfcGRwX2xvY2tgKSB0byBwcm90ZWN0IHRoZSBQRFAgY29udGV4dCBsaXN0cyBpbiB0aGUgR1RQIGRyaXZlci4gSXQgYWRkcyBsb2NraW5nIGFyb3VuZCBQRFAgY29udGV4dCBhZGRpdGlvbiwgZGVsZXRpb24sIGFuZCBsb29rdXAsIGFuZCB1cGRhdGVzIHRoZSBSQ1UgbGlzdCB0cmF2ZXJzYWwgbWFjcm9zIHRvIGluY2x1ZGUgYGxvY2tkZXBfaXNfaGVsZChcdTAwMjZndHBfcGRwX2xvY2spYC4gVGhlc2UgY2hhbmdlcyBhcmUgYWltZWQgYXQgZml4aW5nIGNvbmN1cnJlbmN5IGlzc3Vlcywgc3VjaCBhcyByYWNlIGNvbmRpdGlvbnMsIGxpc3QgY29ycnVwdGlvbnMsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFN1Y2ggaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBzdGFuZGFyZCB0b29scyBsaWtlIEtBU0FOLCBLQ1NBTiwgYW5kIExPQ0tERVAuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1vZGlmeSBtZW1vcnkgaW5pdGlhbGl6YXRpb24sIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwMzo0MDo1My40NTYzMDAwNzNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDQ2MDY0NTMzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJHVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJndHBfZ2VubF9uZXdfcGRwXCIsXG4gICAgXCJndHBfZ2VubF9kZWxfcGRwXCIsXG4gICAgXCJndHBfZGVsbGlua1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBtdXRleCAoYGd0cF9wZHBfbG9ja2ApIHRvIHByb3RlY3QgdGhlIFBEUCBjb250ZXh0IGxpc3RzIGluIHRoZSBHVFAgZHJpdmVyLiBJdCBhZGRzIGxvY2tpbmcgYXJvdW5kIFBEUCBjb250ZXh0IGFkZGl0aW9uLCBkZWxldGlvbiwgYW5kIGxvb2t1cCwgYW5kIHVwZGF0ZXMgdGhlIFJDVSBsaXN0IHRyYXZlcnNhbCBtYWNyb3MgdG8gaW5jbHVkZSBgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZndHBfcGRwX2xvY2spYC4gVGhlc2UgY2hhbmdlcyBhcmUgYWltZWQgYXQgZml4aW5nIGNvbmN1cnJlbmN5IGlzc3Vlcywgc3VjaCBhcyByYWNlIGNvbmRpdGlvbnMsIGxpc3QgY29ycnVwdGlvbnMsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFN1Y2ggaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBzdGFuZGFyZCB0b29scyBsaWtlIEtBU0FOLCBLQ1NBTiwgYW5kIExPQ0tERVAuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1vZGlmeSBtZW1vcnkgaW5pdGlhbGl6YXRpb24sIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbXV0ZXggdG8gcHJvdGVjdCBHVFAgUERQIGNvbnRleHQgb3BlcmF0aW9ucywgbW9kaWZ5aW5nIHRoZSBuZXRsaW5rIGhhbmRsZXJzIGZvciBjcmVhdGluZyBhbmQgZGVsZXRpbmcgUERQIGNvbnRleHRzLCBhcyB3ZWxsIGFzIHRoZSBuZXRfZGV2aWNlIGRlbGxpbmsgaGFuZGxlci4gVGhlc2UgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgaW52b2x2ZSBmdW5jdGlvbmFsIGNvbmN1cnJlbmN5IGNoYW5nZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjQwOjUzLjQ1NjMwOTA0M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ3ODI3NzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzgwOGRlMzIzZmI4YWFlN2VkNzQ2MjgwY2VmNzM1M2U5OTU3ODgzYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEF1ZyAxNCAwMzo0MDo1MiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ndHAuYyBiL2RyaXZlcnMvbmV0L2d0cC5jXFxuaW5kZXggOWExMmNjNTNkYTAwMi4uZWE4M2E2YjZhYTFhNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ndHAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2d0cC5jXFxuQEAgLTEyLDYgKzEyLDcgQEBcXG4gI2RlZmluZSBwcl9mbXQoZm10KSBLQlVJTERfTU9ETkFNRSBcXFwiOiBcXFwiIGZtdFxcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbXV0ZXguaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NrYnVmZi5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvdWRwLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9yY3VsaXN0LmhcXHUwMDNlXFxuQEAgLTEwOCw2ICsxMDksNyBAQCBzdHJ1Y3QgZ3RwX25ldCB7XFxuIH07XFxuIFxcbiBzdGF0aWMgdTMyIGd0cF9oX2luaXR2YWw7XFxuK3N0YXRpYyBERUZJTkVfTVVURVgoZ3RwX3BkcF9sb2NrKTtcXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgZ3RwX2dlbmxfZmFtaWx5O1xcbiBcXG5AQCAtMTUxLDcgKzE1Myw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGRwX2N0eCAqZ3RwMF9wZHBfZmluZChzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCB1NjQgdGlkLCB1MTYgZmFtaWx5KVxcbiBcXG4gXFx0aGVhZCA9IFxcdTAwMjZndHAtXFx1MDAzZXRpZF9oYXNoW2d0cDBfaGFzaGZuKHRpZCkgJSBndHAtXFx1MDAzZWhhc2hfc2l6ZV07XFxuIFxcbi1cXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF90aWQpIHtcXG4rXFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfdGlkLFxcbitcXHRcXHRcXHRcXHQgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZndHBfcGRwX2xvY2spKSB7XFxuIFxcdFxcdGlmIChwZHAtXFx1MDAzZWFmID09IGZhbWlseSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgcGRwLVxcdTAwM2VndHBfdmVyc2lvbiA9PSBHVFBfVjAgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0ICAgIHBkcC1cXHUwMDNldS52MC50aWQgPT0gdGlkKVxcbkBAIC0xNjgsNyArMTcxLDggQEAgc3RhdGljIHN0cnVjdCBwZHBfY3R4ICpndHAxX3BkcF9maW5kKHN0cnVjdCBndHBfZGV2ICpndHAsIHUzMiB0aWQsIHUxNiBmYW1pbHkpXFxuIFxcbiBcXHRoZWFkID0gXFx1MDAyNmd0cC1cXHUwMDNldGlkX2hhc2hbZ3RwMXVfaGFzaGZuKHRpZCkgJSBndHAtXFx1MDAzZWhhc2hfc2l6ZV07XFxuIFxcbi1cXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF90aWQpIHtcXG4rXFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfdGlkLFxcbitcXHRcXHRcXHRcXHQgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZndHBfcGRwX2xvY2spKSB7XFxuIFxcdFxcdGlmIChwZHAtXFx1MDAzZWFmID09IGZhbWlseSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgcGRwLVxcdTAwM2VndHBfdmVyc2lvbiA9PSBHVFBfVjEgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0ICAgIHBkcC1cXHUwMDNldS52MS5pX3RlaSA9PSB0aWQpXFxuQEAgLTE4NSw3ICsxODksOCBAQCBzdGF0aWMgc3RydWN0IHBkcF9jdHggKmlwdjRfcGRwX2ZpbmQoc3RydWN0IGd0cF9kZXYgKmd0cCwgX19iZTMyIG1zX2FkZHIpXFxuIFxcbiBcXHRoZWFkID0gXFx1MDAyNmd0cC1cXHUwMDNlYWRkcl9oYXNoW2lwdjRfaGFzaGZuKG1zX2FkZHIpICUgZ3RwLVxcdTAwM2VoYXNoX3NpemVdO1xcbiBcXG4tXFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfYWRkcikge1xcbitcXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF9hZGRyLFxcbitcXHRcXHRcXHRcXHQgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZndHBfcGRwX2xvY2spKSB7XFxuIFxcdFxcdGlmIChwZHAtXFx1MDAzZWFmID09IEFGX0lORVQgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0ICAgIHBkcC1cXHUwMDNlbXMuYWRkci5zX2FkZHIgPT0gbXNfYWRkcilcXG4gXFx0XFx0XFx0cmV0dXJuIHBkcDtcXG5AQCAtMjIwLDcgKzIyNSw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGRwX2N0eCAqaXB2Nl9wZHBfZmluZChzdHJ1Y3QgZ3RwX2RldiAqZ3RwLFxcbiBcXG4gXFx0aGVhZCA9IFxcdTAwMjZndHAtXFx1MDAzZWFkZHJfaGFzaFtpcHY2X2hhc2hmbihtc19hZGRyKSAlIGd0cC1cXHUwMDNlaGFzaF9zaXplXTtcXG4gXFxuLVxcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwZHAsIGhlYWQsIGhsaXN0X2FkZHIpIHtcXG4rXFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfYWRkcixcXG4rXFx0XFx0XFx0XFx0IGxvY2tkZXBfaXNfaGVsZChcXHUwMDI2Z3RwX3BkcF9sb2NrKSkge1xcbiBcXHRcXHRpZiAocGRwLVxcdTAwM2VhZiA9PSBBRl9JTkVUNiBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgaXB2Nl9wZHBfYWRkcl9lcXVhbChcXHUwMDI2cGRwLVxcdTAwM2Vtcy5hZGRyNiwgbXNfYWRkcikpXFxuIFxcdFxcdFxcdHJldHVybiBwZHA7XFxuQEAgLTE1NTUsOSArMTU2MSwxMSBAQCBzdGF0aWMgdm9pZCBndHBfZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxcbiBcXHRzdHJ1Y3QgcGRwX2N0eCAqcGN0eDtcXG4gXFx0aW50IGk7XFxuIFxcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZndHBfcGRwX2xvY2spO1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZ3RwLVxcdTAwM2VoYXNoX3NpemU7IGkrKylcXG4gXFx0XFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwY3R4LCBuZXh0LCBcXHUwMDI2Z3RwLVxcdTAwM2V0aWRfaGFzaFtpXSwgaGxpc3RfdGlkKVxcbiBcXHRcXHRcXHRwZHBfY29udGV4dF9kZWxldGUocGN0eCk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2Z3RwX3BkcF9sb2NrKTtcXG4gXFxuIFxcdGxpc3RfZGVsKFxcdTAwMjZndHAtXFx1MDAzZWxpc3QpO1xcbiBcXHR1bnJlZ2lzdGVyX25ldGRldmljZV9xdWV1ZShkZXYsIGhlYWQpO1xcbkBAIC0yMDUzLDcgKzIwNjEsOSBAQCBzdGF0aWMgaW50IGd0cF9nZW5sX25ld19wZHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4gXFx0XFx0Z290byBvdXRfdW5sb2NrO1xcbiBcXHR9XFxuIFxcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZndHBfcGRwX2xvY2spO1xcbiBcXHRwY3R4ID0gZ3RwX3BkcF9hZGQoZ3RwLCBzaywgaW5mbyk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2Z3RwX3BkcF9sb2NrKTtcXG4gXFx0aWYgKElTX0VSUihwY3R4KSkge1xcbiBcXHRcXHRlcnIgPSBQVFJfRVJSKHBjdHgpO1xcbiBcXHR9IGVsc2Uge1xcbkBAIC0yMTM0LDkgKzIxNDQsMTIgQEAgc3RhdGljIGludCBndHBfZ2VubF9kZWxfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuIFxcdGlmICghaW5mby1cXHUwMDNlYXR0cnNbR1RQQV9WRVJTSU9OXSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbi1cXHRyY3VfcmVhZF9sb2NrKCk7XFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmd0cF9wZHBfbG9jayk7XFxuIFxcbitcXHQvKiBndHBfZmluZF9kZXYoKSB1c2VzIGRldl9nZXRfYnlfaW5kZXhfcmN1KCkuICovXFxuK1xcdHJjdV9yZWFkX2xvY2soKTtcXG4gXFx0cGN0eCA9IGd0cF9maW5kX3BkcChzb2NrX25ldChza2ItXFx1MDAzZXNrKSwgaW5mby1cXHUwMDNlYXR0cnMpO1xcbitcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gXFx0aWYgKElTX0VSUihwY3R4KSkge1xcbiBcXHRcXHRlcnIgPSBQVFJfRVJSKHBjdHgpO1xcbiBcXHRcXHRnb3RvIG91dF91bmxvY2s7XFxuQEAgLTIxNTMsNyArMjE2Niw3IEBAIHN0YXRpYyBpbnQgZ3RwX2dlbmxfZGVsX3BkcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbiBcXHRwZHBfY29udGV4dF9kZWxldGUocGN0eCk7XFxuIFxcbiBvdXRfdW5sb2NrOlxcbi1cXHRyY3VfcmVhZF91bmxvY2soKTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZndHBfcGRwX2xvY2spO1xcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwMzo0MDo1NC4wMDQ5MTU3NTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyNTE5NDk0Nzg3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJHVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJndHBfZ2VubF9uZXdfcGRwXCIsXG4gICAgXCJndHBfZ2VubF9kZWxfcGRwXCIsXG4gICAgXCJndHBfZGVsbGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbXV0ZXggdG8gcHJvdGVjdCBHVFAgUERQIGNvbnRleHQgb3BlcmF0aW9ucywgbW9kaWZ5aW5nIHRoZSBuZXRsaW5rIGhhbmRsZXJzIGZvciBjcmVhdGluZyBhbmQgZGVsZXRpbmcgUERQIGNvbnRleHRzLCBhcyB3ZWxsIGFzIHRoZSBuZXRfZGV2aWNlIGRlbGxpbmsgaGFuZGxlci4gVGhlc2UgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgaW52b2x2ZSBmdW5jdGlvbmFsIGNvbmN1cnJlbmN5IGNoYW5nZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGM4MDhkZTMyM2ZiOGFhZTdlZDc0NjI4MGNlZjczNTNlOTk1Nzg4M2JcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAwMzo0MDo1MiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2d0cC5jIGIvZHJpdmVycy9uZXQvZ3RwLmNcbmluZGV4IDlhMTJjYzUzZGEwMDIuLmVhODNhNmI2YWExYTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ndHAuY1xuKysrIGIvZHJpdmVycy9uZXQvZ3RwLmNcbkBAIC0xMiw2ICsxMiw3IEBAXG4gI2RlZmluZSBwcl9mbXQoZm10KSBLQlVJTERfTU9ETkFNRSBcIjogXCIgZm10XG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9tdXRleC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2tidWZmLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91ZHAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JjdWxpc3QuaFx1MDAzZVxuQEAgLTEwOCw2ICsxMDksNyBAQCBzdHJ1Y3QgZ3RwX25ldCB7XG4gfTtcbiBcbiBzdGF0aWMgdTMyIGd0cF9oX2luaXR2YWw7XG4rc3RhdGljIERFRklORV9NVVRFWChndHBfcGRwX2xvY2spO1xuIFxuIHN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgZ3RwX2dlbmxfZmFtaWx5O1xuIFxuQEAgLTE1MSw3ICsxNTMsOCBAQCBzdGF0aWMgc3RydWN0IHBkcF9jdHggKmd0cDBfcGRwX2ZpbmQoc3RydWN0IGd0cF9kZXYgKmd0cCwgdTY0IHRpZCwgdTE2IGZhbWlseSlcbiBcbiBcdGhlYWQgPSBcdTAwMjZndHAtXHUwMDNldGlkX2hhc2hbZ3RwMF9oYXNoZm4odGlkKSAlIGd0cC1cdTAwM2VoYXNoX3NpemVdO1xuIFxuLVx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfdGlkKSB7XG4rXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF90aWQsXG4rXHRcdFx0XHQgbG9ja2RlcF9pc19oZWxkKFx1MDAyNmd0cF9wZHBfbG9jaykpIHtcbiBcdFx0aWYgKHBkcC1cdTAwM2VhZiA9PSBmYW1pbHkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBwZHAtXHUwMDNlZ3RwX3ZlcnNpb24gPT0gR1RQX1YwIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgcGRwLVx1MDAzZXUudjAudGlkID09IHRpZClcbkBAIC0xNjgsNyArMTcxLDggQEAgc3RhdGljIHN0cnVjdCBwZHBfY3R4ICpndHAxX3BkcF9maW5kKHN0cnVjdCBndHBfZGV2ICpndHAsIHUzMiB0aWQsIHUxNiBmYW1pbHkpXG4gXG4gXHRoZWFkID0gXHUwMDI2Z3RwLVx1MDAzZXRpZF9oYXNoW2d0cDF1X2hhc2hmbih0aWQpICUgZ3RwLVx1MDAzZWhhc2hfc2l6ZV07XG4gXG4tXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF90aWQpIHtcbitcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwZHAsIGhlYWQsIGhsaXN0X3RpZCxcbitcdFx0XHRcdCBsb2NrZGVwX2lzX2hlbGQoXHUwMDI2Z3RwX3BkcF9sb2NrKSkge1xuIFx0XHRpZiAocGRwLVx1MDAzZWFmID09IGZhbWlseSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIHBkcC1cdTAwM2VndHBfdmVyc2lvbiA9PSBHVFBfVjEgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBwZHAtXHUwMDNldS52MS5pX3RlaSA9PSB0aWQpXG5AQCAtMTg1LDcgKzE4OSw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGRwX2N0eCAqaXB2NF9wZHBfZmluZChzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCBfX2JlMzIgbXNfYWRkcilcbiBcbiBcdGhlYWQgPSBcdTAwMjZndHAtXHUwMDNlYWRkcl9oYXNoW2lwdjRfaGFzaGZuKG1zX2FkZHIpICUgZ3RwLVx1MDAzZWhhc2hfc2l6ZV07XG4gXG4tXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF9hZGRyKSB7XG4rXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF9hZGRyLFxuK1x0XHRcdFx0IGxvY2tkZXBfaXNfaGVsZChcdTAwMjZndHBfcGRwX2xvY2spKSB7XG4gXHRcdGlmIChwZHAtXHUwMDNlYWYgPT0gQUZfSU5FVCBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIHBkcC1cdTAwM2Vtcy5hZGRyLnNfYWRkciA9PSBtc19hZGRyKVxuIFx0XHRcdHJldHVybiBwZHA7XG5AQCAtMjIwLDcgKzIyNSw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGRwX2N0eCAqaXB2Nl9wZHBfZmluZChzdHJ1Y3QgZ3RwX2RldiAqZ3RwLFxuIFxuIFx0aGVhZCA9IFx1MDAyNmd0cC1cdTAwM2VhZGRyX2hhc2hbaXB2Nl9oYXNoZm4obXNfYWRkcikgJSBndHAtXHUwMDNlaGFzaF9zaXplXTtcbiBcbi1cdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwZHAsIGhlYWQsIGhsaXN0X2FkZHIpIHtcbitcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwZHAsIGhlYWQsIGhsaXN0X2FkZHIsXG4rXHRcdFx0XHQgbG9ja2RlcF9pc19oZWxkKFx1MDAyNmd0cF9wZHBfbG9jaykpIHtcbiBcdFx0aWYgKHBkcC1cdTAwM2VhZiA9PSBBRl9JTkVUNiBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGlwdjZfcGRwX2FkZHJfZXF1YWwoXHUwMDI2cGRwLVx1MDAzZW1zLmFkZHI2LCBtc19hZGRyKSlcbiBcdFx0XHRyZXR1cm4gcGRwO1xuQEAgLTE1NTUsOSArMTU2MSwxMSBAQCBzdGF0aWMgdm9pZCBndHBfZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxuIFx0c3RydWN0IHBkcF9jdHggKnBjdHg7XG4gXHRpbnQgaTtcbiBcbitcdG11dGV4X2xvY2soXHUwMDI2Z3RwX3BkcF9sb2NrKTtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGd0cC1cdTAwM2VoYXNoX3NpemU7IGkrKylcbiBcdFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwY3R4LCBuZXh0LCBcdTAwMjZndHAtXHUwMDNldGlkX2hhc2hbaV0sIGhsaXN0X3RpZClcbiBcdFx0XHRwZHBfY29udGV4dF9kZWxldGUocGN0eCk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2Z3RwX3BkcF9sb2NrKTtcbiBcbiBcdGxpc3RfZGVsKFx1MDAyNmd0cC1cdTAwM2VsaXN0KTtcbiBcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX3F1ZXVlKGRldiwgaGVhZCk7XG5AQCAtMjA1Myw3ICsyMDYxLDkgQEAgc3RhdGljIGludCBndHBfZ2VubF9uZXdfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXHRcdGdvdG8gb3V0X3VubG9jaztcbiBcdH1cbiBcbitcdG11dGV4X2xvY2soXHUwMDI2Z3RwX3BkcF9sb2NrKTtcbiBcdHBjdHggPSBndHBfcGRwX2FkZChndHAsIHNrLCBpbmZvKTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZndHBfcGRwX2xvY2spO1xuIFx0aWYgKElTX0VSUihwY3R4KSkge1xuIFx0XHRlcnIgPSBQVFJfRVJSKHBjdHgpO1xuIFx0fSBlbHNlIHtcbkBAIC0yMTM0LDkgKzIxNDQsMTIgQEAgc3RhdGljIGludCBndHBfZ2VubF9kZWxfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXHRpZiAoIWluZm8tXHUwMDNlYXR0cnNbR1RQQV9WRVJTSU9OXSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRyY3VfcmVhZF9sb2NrKCk7XG4rXHRtdXRleF9sb2NrKFx1MDAyNmd0cF9wZHBfbG9jayk7XG4gXG4rXHQvKiBndHBfZmluZF9kZXYoKSB1c2VzIGRldl9nZXRfYnlfaW5kZXhfcmN1KCkuICovXG4rXHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRwY3R4ID0gZ3RwX2ZpbmRfcGRwKHNvY2tfbmV0KHNrYi1cdTAwM2VzayksIGluZm8tXHUwMDNlYXR0cnMpO1xuK1x0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXHRpZiAoSVNfRVJSKHBjdHgpKSB7XG4gXHRcdGVyciA9IFBUUl9FUlIocGN0eCk7XG4gXHRcdGdvdG8gb3V0X3VubG9jaztcbkBAIC0yMTUzLDcgKzIxNjYsNyBAQCBzdGF0aWMgaW50IGd0cF9nZW5sX2RlbF9wZHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiBcdHBkcF9jb250ZXh0X2RlbGV0ZShwY3R4KTtcbiBcbiBvdXRfdW5sb2NrOlxuLVx0cmN1X3JlYWRfdW5sb2NrKCk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2Z3RwX3BkcF9sb2NrKTtcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6NDA6NTQuMDA0OTE3ODc3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg4ODMyNDEyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEdUUCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvZ3RwLmNgLiBJdCdzIGludHJvZHVjaW5nIGEgbmV3IG11dGV4LCBgZ3RwX3BkcF9sb2NrYCwgYW5kIHVzaW5nIGl0IHRvIHByb3RlY3QgYSBmZXcga2V5IGZ1bmN0aW9uczogYGd0cF9wZHBfYWRkYCwgYGd0cF9maW5kX3BkcGAsIGFuZCBgcGRwX2NvbnRleHRfZGVsZXRlYCwgYWxvbmcgd2l0aCByZWxhdGVkIG9wZXJhdGlvbnMuIEl0IGFsc28gc2VlbXMgdGhleSd2ZSBtb2RpZmllZCBzb21lIGBobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3VgIGNhbGxzIHRvIGluY2x1ZGUgYSBgbG9ja2RlcF9pc19oZWxkKFx1MDAyNmd0cF9wZHBfbG9jaylgIGNoZWNrLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCBpZiB0aGlzIGlzIGV2ZW4gZnV6emFibGUsIGFuZCBpZiBpdCdzIHdvcnRoIHRoZSB0aW1lIHRvIGV2ZW4gdHJ5LlxuXG5GaXJzdCBzdGVwOiB3aGVyZSBjYW4gdGhpcyBjb2RlIGJlIHJlYWNoZWQ/IEl0J3MgdGhlIEdUUCBkcml2ZXIsIHdoaWNoLCBhcyBJIHJlY2FsbCwgaGFuZGxlcyB0aGUgR1BSUyBUdW5uZWxpbmcgUHJvdG9jb2wuIFRoYXQgcmluZ3MgYSBiZWxsLi4uIEkgYmVsaWV2ZSBpdCdzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAoc3BlY2lmaWNhbGx5IGdlbmwsIHJpZ2h0PykuICBMZXQncyBzZWU6IGBndHBfZ2VubF9uZXdfcGRwYCwgYGd0cF9nZW5sX2RlbF9wZHBgLi4uIHllYWgsIHRob3NlIHdvdWxkIGRvIGl0LiBBbmQsIEkgdGhpbmsgYGd0cF9kZWxsaW5rYCBpcyBjYWxsZWQgd2hlbiB5b3UgZGVsZXRlIHRoZSBuZXRsaW5rIGludGVyZmFjZSwgc28gdGhhdCBtaWdodCBhbHNvIGJlIHJlbGV2YW50LlxuXG5OZXh0IEknbGwgcXVpY2tseSBjaGVjayB0aGUgS2NvbmZpZyBmb3IgR1RQIHRvIG1ha2Ugc3VyZSBpdCdzIGVuYWJsZWQgYW5kIG5vdCBoaWRkZW4gYmVoaW5kIHNvbWUgb2JzY3VyZSBjb25maWd1cmF0aW9uIG9wdGlvbi4gVGhhdCdsbCBiZSBpbXBvcnRhbnQgZm9yIG1ha2luZyBzdXJlIHdlIGNhbiBldmVuIHJlYWNoIGl0IHdpdGggZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQzMywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjQwOjU4Ljg5MzI0Mzg1OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NzMxOTM3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgR1RQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0yNjA9Y29uZmlnIEJBUkVVRFBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMjcxLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjcyOmNvbmZpZyBHVFBcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI3My1cXHR0cmlzdGF0ZSBcXFwiR1BSUyBUdW5uZWxpbmcgUHJvdG9jb2wgZGF0YXBhdGggKEdUUC1VKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6NDA6NTguOTgwNTY3NzA3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI4MDUyNzc0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBHVFAgS2NvbmZpZyBFbnRyeSoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIlNob3cgbWUgdGhlIGZ1bGwgS2NvbmZpZyBlbnRyeSBmb3IgR1RQLlwiIEkgd2FudCB0aGUgY29tcGxldGUgcGljdHVyZSBoZXJlLCBubyBzaG9ydGN1dHMuIEknbSBub3QganVzdCBsb29raW5nIGZvciBhIHF1aWNrIHNuaXBwZXQ7IEkgbmVlZCB0aGUgZW50aXJlIGNvbnRleHQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBkZWZhdWx0IHNldHRpbmdzIHJlbGF0ZWQgdG8gdGhlIEdUUCBwcm90b2NvbC4gSSdtIGFudGljaXBhdGluZyBwb3RlbnRpYWwgbnVhbmNlcyBhbmQgaW50ZXJkZXBlbmRlbmNpZXMgd2l0aCBvdGhlciBmZWF0dXJlcywgc28gSSBuZWVkIHRoZSBmdWxsIGRldGFpbHMgdG8gcHJvcGVybHkgYXNzZXNzIHRoZSBpbXBsaWNhdGlvbnMgb2YgYW55IGNvbmZpZ3VyYXRpb24gY2hhbmdlcy4gTGV0J3MgZ2V0IHRoZSB3aG9sZSB0aGluZyBpbiBmcm9udCBvZiBtZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA5MCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjQxOjAyLjI2MTA5ODQxOFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI3MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI3MDpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIGJhcmV1ZHAuXFxuIDI3MTpcXHRcXG4gMjcyOlxcdGNvbmZpZyBHVFBcXG4gMjczOlxcdFxcdHRyaXN0YXRlIFxcXCJHUFJTIFR1bm5lbGluZyBQcm90b2NvbCBkYXRhcGF0aCAoR1RQLVUpXFxcIlxcbiAyNzQ6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuIDI3NTpcXHRcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4gMjc2OlxcdFxcdGhlbHBcXG4gMjc3OlxcdFxcdCAgVGhpcyBhbGxvd3Mgb25lIHRvIGNyZWF0ZSBndHAgdmlydHVhbCBpbnRlcmZhY2VzIHRoYXQgcHJvdmlkZVxcbiAyNzg6XFx0XFx0ICB0aGUgR1BSUyBUdW5uZWxpbmcgUHJvdG9jb2wgZGF0YXBhdGggKEdUUC1VKS4gVGhpcyB0dW5uZWxpbmcgcHJvdG9jb2xcXG4gMjc5OlxcdFxcdCAgaXMgdXNlZCB0byBwcmV2ZW50IHN1YnNjcmliZXJzIGZyb20gYWNjZXNzaW5nIG1vYmlsZSBjYXJyaWVyIGNvcmVcXG4gMjgwOlxcdFxcdCAgbmV0d29yayBpbmZyYXN0cnVjdHVyZS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgYSB1c2Vyc3BhY2Ugc29mdHdhcmUgdGhhdFxcbiAyODE6XFx0XFx0ICBpbXBsZW1lbnRzIHRoZSBzaWduYWxpbmcgcHJvdG9jb2wgKEdUUC1DKSB0byB1cGRhdGUgaXRzIFBEUCBjb250ZXh0XFxuIDI4MjpcXHRcXHQgIGJhc2UsIHN1Y2ggYXMgT3BlbkdHU04gXFx1MDAzY2h0dHA6Ly9naXQub3Ntb2NvbS5vcmcvb3Blbmdnc24vKS4gVGhpc1xcbiAyODM6XFx0XFx0ICB0dW5uZWxpbmcgcHJvdG9jb2wgaXMgaW1wbGVtZW50ZWQgYWNjb3JkaW5nIHRvIHRoZSBHU00gVFMgMDkuNjAgYW5kXFxuIDI4NDpcXHRcXHQgIDNHUFAgVFMgMjkuMDYwIHN0YW5kYXJkcy5cXG4gMjg1OlxcdFxcbiAyODY6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVycyBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAyODc6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBndHAuXFxuIDI4ODpcXHRcXG4gMjg5OlxcdGNvbmZpZyBQRkNQXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjQxOjAyLjI2MTI0NjQ4OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NzkyNzQxOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBHVFAgQ29uZmlndXJhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBjb25maWcgaGVyZSBpcyBjZW50ZXJlZCBhcm91bmQgYEdUUGAgYW5kIHJlbGllcyBvbiBgSU5FVGAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSB0aGUgcGF0Y2ggaXMgdG91Y2hpbmcgYGd0cF9nZW5sX25ld19wZHBgLCBgZ3RwX2dlbmxfZGVsX3BkcGAsIGFuZCBgZ3RwX2RlbGxpbmtgLiBUaG9zZSBhcmUgdGhlIGVudHJ5IHBvaW50cyDigJMgdGhlIGZ1bmN0aW9ucyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIGEgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlLiBGcm9tIGEgcXVpY2sgZ2xhbmNlLCB0aGUgY2hhbmdlcyBhcHBlYXIgZnVuY3Rpb25hbCwgcHJpbWFyaWx5IGZvY3VzZWQgb24gYWRkaW5nIGEgbXV0ZXggdG8gcHJvdGVjdCBQRFAgY29udGV4dCBvcGVyYXRpb25zLiBUaGF0J3MgYSBnb29kIG1vdmUsIGdlbmVyYWxseSwgYnV0IGl0IGFsc28gdGVsbHMgbWUgd2UndmUgZ290IGEgY29uY3VycmVuY3kgY29uY2VybiBhbmQgd2UgKmFic29sdXRlbHkqIG5lZWQgdG8gZnV6eiB0aGlzIGNvZGUuIFRoZSBmb2N1cyBzeW1ib2xzIGFyZSBjbGVhcmx5OiBgZ3RwX2dlbmxfbmV3X3BkcGAsIGBndHBfZ2VubF9kZWxfcGRwYCwgYW5kIGBndHBfZGVsbGlua2AuIEkgbmVlZCB0byBwdXQgdGhvc2Ugb24gbXkgbGlzdCB0byBoYW1tZXIgd2l0aCBmdXp6aW5nLiBMZXQgbWUgc2VlIGlmIEkgY2FuIGZpbmQgb3RoZXIgZnVuY3Rpb25zIG5lYXJieSB0aGF0IG1pZ2h0IGFsc28gYmVuZWZpdCBmcm9tIHNjcnV0aW55Li4uIEkgc2hvdWxkIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIgZnVuY3Rpb25zIGludm9sdmVkIHdpdGggR1RQIGNvbnRleHQgbWFuYWdlbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYxNywiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjQxOjA2Ljk0MDUyNTI4OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjAyNDA5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJndHBfZ2VubF9uZXdfcGRwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2d0cC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2d0cC5jPTIwMTI9c3RhdGljIGludCBndHBfdHVubmVsX25vdGlmeShzdHJ1Y3QgcGRwX2N0eCAqcGN0eCwgdTggY21kLCBnZnBfdCBhbGxvY2F0aW9uKTtcXG5kcml2ZXJzL25ldC9ndHAuYy0yMDEzLVxcbmRyaXZlcnMvbmV0L2d0cC5jOjIwMTQ6c3RhdGljIGludCBndHBfZ2VubF9uZXdfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuZHJpdmVycy9uZXQvZ3RwLmMtMjAxNS17XFxuLS1cXG5kcml2ZXJzL25ldC9ndHAuYz0yNDQ2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgZ3RwX2dlbmxfb3BzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ndHAuYy0yNDQ5LVxcdFxcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcXG5kcml2ZXJzL25ldC9ndHAuYzoyNDUwOlxcdFxcdC5kb2l0ID0gZ3RwX2dlbmxfbmV3X3BkcCxcXG5kcml2ZXJzL25ldC9ndHAuYy0yNDUxLVxcdFxcdC5mbGFncyA9IEdFTkxfQURNSU5fUEVSTSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6NDE6MDcuMDA2NTU3OTE2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg4OTc3Mjk2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipDaGVja2luZyBgZ3RwX2RlbGxpbmtgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgZ3RwX2RlbGxpbmtgIGlzIGJlaGF2aW5nIGFzIGV4cGVjdGVkLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgZmlyc3QgdGhpbmcgSSdtIGNoZWNraW5nIGlzbid0IHRoZSBjb2RlIGl0c2VsZiBidXQgdGhlICpjb250ZXh0KiBvZiBpdHMgZXhlY3V0aW9uLiBBbSBJIGRlYWxpbmcgd2l0aCBhIHNwZWNpZmljIHNjZW5hcmlvPyBBcmUgdGhlcmUgcmVjZW50IGNoYW5nZXMgdGhhdCBtaWdodCBoYXZlIHRyaWdnZXJlZCBhbiBpc3N1ZT8gV2hhdCdzIHRoZSBlbnZpcm9ubWVudCBpdCdzIHJ1bm5pbmcgaW4/IFRoaXMga2luZCBvZiBpbml0aWFsIGFzc2Vzc21lbnQgc2F2ZXMgbWUgYSBsb3Qgb2YgdGltZSBpbiB0aGUgbG9uZyBydW4uIE5vdywgaXMgYGd0cF9kZWxsaW5rYCBmYWlsaW5nPyBQcm9kdWNpbmcgdW5leHBlY3RlZCByZXN1bHRzPyBPciBpcyB0aGVyZSBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgZGVsaW5raW5nIHByb2Nlc3MgdGhhdCBJIGhhdmUgbWlzc2VkP1xuXG5NeSBuZXh0IHRob3VnaHQgcHJvY2VzcyB3b3VsZCBkZXBlbmQgb24gdGhlIG5hdHVyZSBvZiB0aGUgaXNzdWUsIGJ1dCBJJ2QgbGlrZWx5IGZvbGxvdyB0aGVzZSBzdGVwczogSSdsbCBzdGFydCBieSBjaGVja2luZyB0aGUgbG9ncywgbG9va2luZyBmb3IgYW55IHNwZWNpZmljIGVycm9yIG1lc3NhZ2VzIG9yIHVudXN1YWwgcGF0dGVybnMuIFRoZW4sIEknZCByZXZpZXcgdGhlIGlucHV0IGRhdGEgdG8gY29uZmlybSBpdCdzIGluIHRoZSBleHBlY3RlZCBmb3JtYXQuIEkgbWlnaHQgaW5zdHJ1bWVudCB0aGUgZnVuY3Rpb24gd2l0aCBzb21lIGFkZGl0aW9uYWwgbG9nZ2luZyB0byBwaW5wb2ludCB3aGVyZSB0aGUgcHJvYmxlbSBvcmlnaW5hdGVzLiBJcyBpdCBhIGRhdGEgdmFsaWRhdGlvbiBwcm9ibGVtLCBhIGJ1ZyBpbiB0aGUgbGlua2luZyBhbGdvcml0aG0sIG9yIGEgcHJvYmxlbSB3aXRoIHRoZSBpbmZyYXN0cnVjdHVyZT9cblxuSWYgdGhvc2UgY2hlY2tzIGRvbid0IGltbWVkaWF0ZWx5IHJldmVhbCB0aGUgY3VscHJpdCwgSSdsbCBzdGFydCBjb25zaWRlcmluZyB0aGUgZGVwZW5kZW5jaWVzIG9mIGBndHBfZGVsbGlua2AuIEFyZSB0aGVyZSBleHRlcm5hbCBBUElzIGl0IHJlbGllcyBvbj8gRGF0YWJhc2VzPyBIYXMgYW55dGhpbmcgY2hhbmdlZCB0aGVyZSByZWNlbnRseT8gVmVyc2lvbiBtaXNtYXRjaGVzIGFyZSBhbHdheXMgYSBwb3NzaWJpbGl0eS4gUGVyaGFwcyB0aGVyZSdzIGFuIGlzc3VlIHdpdGggcmVzb3VyY2UgYWxsb2NhdGlvbiwgdGhyZWFkIGNvbnRlbnRpb24sIG9yIGEgc3VidGxlIHJhY2UgY29uZGl0aW9uLiBUaW1lIHRvIGRlYnVnIGFuZCB0ZXN0LiBBbmQgbGFzdGx5LCBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gd3JpdGUgdXAgc29tZSBkb2N1bWVudGF0aW9uIGFib3V0IG15IGZpbmRpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Mjg5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6NDE6MTAuODk2MzMzNTk5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzE3MjUyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJndHBfZGVsbGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ndHAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ndHAuYz0xNDc1PXN0YXRpYyBpbnQgZ3RwX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2d0cC5jLTE1NTYtXFxuZHJpdmVycy9uZXQvZ3RwLmM6MTU1NzpzdGF0aWMgdm9pZCBndHBfZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxcbmRyaXZlcnMvbmV0L2d0cC5jLTE1NTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZ3RwLmM9MTYxOD1zdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgZ3RwX2xpbmtfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ndHAuYy0xNjI1LVxcdC5uZXdsaW5rXFx0PSBndHBfbmV3bGluayxcXG5kcml2ZXJzL25ldC9ndHAuYzoxNjI2OlxcdC5kZWxsaW5rXFx0PSBndHBfZGVsbGluayxcXG5kcml2ZXJzL25ldC9ndHAuYy0xNjI3LVxcdC5nZXRfc2l6ZVxcdD0gZ3RwX2dldF9zaXplLFxcbi0tXFxuZHJpdmVycy9uZXQvZ3RwLmM9MjQ5Nz1zdGF0aWMgdm9pZCBfX25ldF9leGl0IGd0cF9uZXRfZXhpdF9ydG5sKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2d0cC5jLTI1MDMtXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGd0cCwgZ3RwX25leHQsIFxcdTAwMjZnbi1cXHUwMDNlZ3RwX2Rldl9saXN0LCBsaXN0KVxcbmRyaXZlcnMvbmV0L2d0cC5jOjI1MDQ6XFx0XFx0Z3RwX2RlbGxpbmsoZ3RwLVxcdTAwM2VkZXYsIGRldl90b19raWxsKTtcXG5kcml2ZXJzL25ldC9ndHAuYy0yNTA1LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6NDE6MTAuOTc5NTEwOTI2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgwODc0Mjg4NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgR1RQIFBEUCBDb250ZXh0IFByb3RlY3Rpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZGluZyBhIG11dGV4LCBgZ3RwX3BkcF9sb2NrYCwgdG8gc2FmZWd1YXJkIG9wZXJhdGlvbnMgb24gUERQIGNvbnRleHRzIHdpdGhpbiB0aGUgR1RQIGltcGxlbWVudGF0aW9uLiBUaGlzIGlzIGEgc29saWQgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCdzIHVzZXItc3BhY2UgcmVhY2hhYmxlIHZpYSBuZXRsaW5rLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBzb21ldGhpbmcgdG8gcGF5IGF0dGVudGlvbiB0by4gVGhlIHJlbGV2YW50IGNvbmZpZyBpcyBgR1RQYCwgd2hpY2ggbWFrZXMgc2Vuc2UuXG5cbkJlZm9yZSBJIGdvIGZ1cnRoZXIsIGxldCBtZSBkb3VibGUtY2hlY2sgc29tZXRoaW5nIHRoYXQncyBhbHdheXMgZ29vZCBwcmFjdGljZTogSSBuZWVkIHRvIGVuc3VyZSBgSU5FVGAgaXNuJ3QgaW5hZHZlcnRlbnRseSBkaXNhYmxlZC4gVGhvdWdoIGBJTkVUYCBpcyB1c3VhbGx5IGVuYWJsZWQgYnkgZGVmYXVsdCwgaXQncyBhbHdheXMgYSBnb29kIGhhYml0IHRvIHZlcmlmeSB0aGF0IGl0IHJlbWFpbnMgZW5hYmxlZC4gQWxyaWdodCwgYEdUUGAgYWxvbmUgaXMgc3VmZmljaWVudDsgYElORVRgIGlzIGEgYmFzZSBjb25maWcsIHNvIHdlJ3JlIGdvb2QgdGhlcmUuXG5cbk5vdywgbGV0J3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gdG91Y2hlZC4gSXQgbG9va3MgbGlrZSBgZ3RwMF9wZHBfZmluZGAsIGBndHAxX3BkcF9maW5kYCwgYGlwdjRfcGRwX2ZpbmRgLCBhbmQgYGlwdjZfcGRwX2ZpbmRgIGFyZSBiZWluZyBtb2RpZmllZCB0byBpbmNsdWRlIGBsb2NrZGVwX2lzX2hlbGQoXHUwMDI2Z3RwX3BkcF9sb2NrKWAuIFRoZXNlIGFyZSBzdGF0aWMgZnVuY3Rpb25zLCBzbyBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCB0aGV5IG1pZ2h0IGJlIGlubGluZWQsIGltcGFjdGluZyBob3cgdGhlIGxvY2sgaXMgcGVyY2VpdmVkLiBUaGUgbWFpbiBlbnRyeSBwb2ludHMsIHRob3VnaCwgYXBwZWFyIHRvIGJlIGBndHBfZGVsbGlua2AsIGBndHBfZ2VubF9uZXdfcGRwYCwgYW5kIGBndHBfZ2VubF9kZWxfcGRwYC5cblxuR2l2ZW4gYWxsIHRoaXMsIGhlcmUncyB3aGF0IEknbGwgZG86IEknbSBnb2luZyB0byBmbGFnIHRoaXMgYXMgXCJXb3J0aEZ1enppbmdcIiBiZWNhdXNlIG9mIHRoZSB1c2VyLXNwYWNlIGludGVyYWN0aW9uIGFuZCB0aGUgY29uY3VycmVuY3ktcmVsYXRlZCBtb2RpZmljYXRpb25zLiBNeSBcIkZvY3VzU3ltYm9sc1wiIHdpbGwgZGVmaW5pdGVseSBpbmNsdWRlIGBndHBfZ2VubF9uZXdfcGRwYCwgYGd0cF9nZW5sX2RlbF9wZHBgLCBhbmQgYGd0cF9kZWxsaW5rYC4gQW5kIG15IFwiRW5hYmxlQ29uZmlnc1wiIHdpbGwgYmUgYEdUUGAuIFRoZSBcIlJlYXNvbmluZ1wiIHdpbGwgYmU6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbXV0ZXggdG8gcHJvdGVjdCBHVFAgUERQIGNvbnRleHQgb3BlcmF0aW9ucywgbW9kaWZ5aW5nIHRoZSBuZXRsaW5rIGhhbmRsZXJzIGZvciBjcmVhdGluZyBhbmQgZGVsZXRpbmcgUERQIGNvbnRleHRzLCBhcyB3ZWxsIGFzIHRoZSBuZXRfZGV2aWNlIGRlbGxpbmsgaGFuZGxlci4gVGhlc2UgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgaW52b2x2ZSBmdW5jdGlvbmFsIGNvbmN1cnJlbmN5IGNoYW5nZXMuXCIgVGhhdCBzaG91bGQgY292ZXIgbXkgYmFzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNTksIk91dHB1dFRva2VucyI6MTE2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjQxOjE5LjA2Njk0MzU3M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMjkxMjc2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiR1RQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZ3RwX2dlbmxfbmV3X3BkcFwiLFxuICAgIFwiZ3RwX2dlbmxfZGVsX3BkcFwiLFxuICAgIFwiZ3RwX2RlbGxpbmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IG11dGV4IHRvIHByb3RlY3QgR1RQIFBEUCBjb250ZXh0IG9wZXJhdGlvbnMsIG1vZGlmeWluZyB0aGUgbmV0bGluayBoYW5kbGVycyBmb3IgY3JlYXRpbmcgYW5kIGRlbGV0aW5nIFBEUCBjb250ZXh0cywgYXMgd2VsbCBhcyB0aGUgbmV0X2RldmljZSBkZWxsaW5rIGhhbmRsZXIuIFRoZXNlIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIGludm9sdmUgZnVuY3Rpb25hbCBjb25jdXJyZW5jeSBjaGFuZ2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkdUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImd0cF9nZW5sX25ld19wZHBcIixcbiAgICBcImd0cF9nZW5sX2RlbF9wZHBcIixcbiAgICBcImd0cF9kZWxsaW5rXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBtdXRleCB0byBwcm90ZWN0IEdUUCBQRFAgY29udGV4dCBvcGVyYXRpb25zLCBtb2RpZnlpbmcgdGhlIG5ldGxpbmsgaGFuZGxlcnMgZm9yIGNyZWF0aW5nIGFuZCBkZWxldGluZyBQRFAgY29udGV4dHMsIGFzIHdlbGwgYXMgdGhlIG5ldF9kZXZpY2UgZGVsbGluayBoYW5kbGVyLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBpbnZvbHZlIGZ1bmN0aW9uYWwgY29uY3VycmVuY3kgY2hhbmdlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6NDE6MTkuMTk5ODY4MDI5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NzE3MDYyODA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6NDE6MTkuMjAwNDQyMzY5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjg3MTY0ODE5ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbXV0ZXggKGBndHBfcGRwX2xvY2tgKSB0byBwcm90ZWN0IHRoZSBQRFAgY29udGV4dCBsaXN0cyBpbiB0aGUgR1RQIGRyaXZlci4gSXQgYWRkcyBsb2NraW5nIGFyb3VuZCBQRFAgY29udGV4dCBhZGRpdGlvbiwgZGVsZXRpb24sIGFuZCBsb29rdXAsIGFuZCB1cGRhdGVzIHRoZSBSQ1UgbGlzdCB0cmF2ZXJzYWwgbWFjcm9zIHRvIGluY2x1ZGUgYGxvY2tkZXBfaXNfaGVsZChcXHUwMDI2Z3RwX3BkcF9sb2NrKWAuIFRoZXNlIGNoYW5nZXMgYXJlIGFpbWVkIGF0IGZpeGluZyBjb25jdXJyZW5jeSBpc3N1ZXMsIHN1Y2ggYXMgcmFjZSBjb25kaXRpb25zLCBsaXN0IGNvcnJ1cHRpb25zLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzLiBTdWNoIGlzc3VlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgc3RhbmRhcmQgdG9vbHMgbGlrZSBLQVNBTiwgS0NTQU4sIGFuZCBMT0NLREVQLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtb2RpZnkgbWVtb3J5IGluaXRpYWxpemF0aW9uLCBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjODA4ZGUzMjNmYjhhYWU3ZWQ3NDYyODBjZWY3MzUzZTk5NTc4ODNiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMTQgMDM6NDA6NTIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ndHAuYyBiL2RyaXZlcnMvbmV0L2d0cC5jXG5pbmRleCA5YTEyY2M1M2RhMDAyLi5lYTgzYTZiNmFhMWE3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZ3RwLmNcbisrKyBiL2RyaXZlcnMvbmV0L2d0cC5jXG5AQCAtMTIsNiArMTIsNyBAQFxuICNkZWZpbmUgcHJfZm10KGZtdCkgS0JVSUxEX01PRE5BTUUgXCI6IFwiIGZtdFxuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbXV0ZXguaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NrYnVmZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdWRwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yY3VsaXN0LmhcdTAwM2VcbkBAIC0xMDgsNiArMTA5LDcgQEAgc3RydWN0IGd0cF9uZXQge1xuIH07XG4gXG4gc3RhdGljIHUzMiBndHBfaF9pbml0dmFsO1xuK3N0YXRpYyBERUZJTkVfTVVURVgoZ3RwX3BkcF9sb2NrKTtcbiBcbiBzdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGd0cF9nZW5sX2ZhbWlseTtcbiBcbkBAIC0xNTEsNyArMTUzLDggQEAgc3RhdGljIHN0cnVjdCBwZHBfY3R4ICpndHAwX3BkcF9maW5kKHN0cnVjdCBndHBfZGV2ICpndHAsIHU2NCB0aWQsIHUxNiBmYW1pbHkpXG4gXG4gXHRoZWFkID0gXHUwMDI2Z3RwLVx1MDAzZXRpZF9oYXNoW2d0cDBfaGFzaGZuKHRpZCkgJSBndHAtXHUwMDNlaGFzaF9zaXplXTtcbiBcbi1cdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwZHAsIGhlYWQsIGhsaXN0X3RpZCkge1xuK1x0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfdGlkLFxuK1x0XHRcdFx0IGxvY2tkZXBfaXNfaGVsZChcdTAwMjZndHBfcGRwX2xvY2spKSB7XG4gXHRcdGlmIChwZHAtXHUwMDNlYWYgPT0gZmFtaWx5IFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgcGRwLVx1MDAzZWd0cF92ZXJzaW9uID09IEdUUF9WMCBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIHBkcC1cdTAwM2V1LnYwLnRpZCA9PSB0aWQpXG5AQCAtMTY4LDcgKzE3MSw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGRwX2N0eCAqZ3RwMV9wZHBfZmluZChzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCB1MzIgdGlkLCB1MTYgZmFtaWx5KVxuIFxuIFx0aGVhZCA9IFx1MDAyNmd0cC1cdTAwM2V0aWRfaGFzaFtndHAxdV9oYXNoZm4odGlkKSAlIGd0cC1cdTAwM2VoYXNoX3NpemVdO1xuIFxuLVx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfdGlkKSB7XG4rXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF90aWQsXG4rXHRcdFx0XHQgbG9ja2RlcF9pc19oZWxkKFx1MDAyNmd0cF9wZHBfbG9jaykpIHtcbiBcdFx0aWYgKHBkcC1cdTAwM2VhZiA9PSBmYW1pbHkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBwZHAtXHUwMDNlZ3RwX3ZlcnNpb24gPT0gR1RQX1YxIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgcGRwLVx1MDAzZXUudjEuaV90ZWkgPT0gdGlkKVxuQEAgLTE4NSw3ICsxODksOCBAQCBzdGF0aWMgc3RydWN0IHBkcF9jdHggKmlwdjRfcGRwX2ZpbmQoc3RydWN0IGd0cF9kZXYgKmd0cCwgX19iZTMyIG1zX2FkZHIpXG4gXG4gXHRoZWFkID0gXHUwMDI2Z3RwLVx1MDAzZWFkZHJfaGFzaFtpcHY0X2hhc2hmbihtc19hZGRyKSAlIGd0cC1cdTAwM2VoYXNoX3NpemVdO1xuIFxuLVx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfYWRkcikge1xuK1x0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfYWRkcixcbitcdFx0XHRcdCBsb2NrZGVwX2lzX2hlbGQoXHUwMDI2Z3RwX3BkcF9sb2NrKSkge1xuIFx0XHRpZiAocGRwLVx1MDAzZWFmID09IEFGX0lORVQgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBwZHAtXHUwMDNlbXMuYWRkci5zX2FkZHIgPT0gbXNfYWRkcilcbiBcdFx0XHRyZXR1cm4gcGRwO1xuQEAgLTIyMCw3ICsyMjUsOCBAQCBzdGF0aWMgc3RydWN0IHBkcF9jdHggKmlwdjZfcGRwX2ZpbmQoc3RydWN0IGd0cF9kZXYgKmd0cCxcbiBcbiBcdGhlYWQgPSBcdTAwMjZndHAtXHUwMDNlYWRkcl9oYXNoW2lwdjZfaGFzaGZuKG1zX2FkZHIpICUgZ3RwLVx1MDAzZWhhc2hfc2l6ZV07XG4gXG4tXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF9hZGRyKSB7XG4rXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF9hZGRyLFxuK1x0XHRcdFx0IGxvY2tkZXBfaXNfaGVsZChcdTAwMjZndHBfcGRwX2xvY2spKSB7XG4gXHRcdGlmIChwZHAtXHUwMDNlYWYgPT0gQUZfSU5FVDYgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBpcHY2X3BkcF9hZGRyX2VxdWFsKFx1MDAyNnBkcC1cdTAwM2Vtcy5hZGRyNiwgbXNfYWRkcikpXG4gXHRcdFx0cmV0dXJuIHBkcDtcbkBAIC0xNTU1LDkgKzE1NjEsMTEgQEAgc3RhdGljIHZvaWQgZ3RwX2RlbGxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZClcbiBcdHN0cnVjdCBwZHBfY3R4ICpwY3R4O1xuIFx0aW50IGk7XG4gXG4rXHRtdXRleF9sb2NrKFx1MDAyNmd0cF9wZHBfbG9jayk7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBndHAtXHUwMDNlaGFzaF9zaXplOyBpKyspXG4gXHRcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocGN0eCwgbmV4dCwgXHUwMDI2Z3RwLVx1MDAzZXRpZF9oYXNoW2ldLCBobGlzdF90aWQpXG4gXHRcdFx0cGRwX2NvbnRleHRfZGVsZXRlKHBjdHgpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmd0cF9wZHBfbG9jayk7XG4gXG4gXHRsaXN0X2RlbChcdTAwMjZndHAtXHUwMDNlbGlzdCk7XG4gXHR1bnJlZ2lzdGVyX25ldGRldmljZV9xdWV1ZShkZXYsIGhlYWQpO1xuQEAgLTIwNTMsNyArMjA2MSw5IEBAIHN0YXRpYyBpbnQgZ3RwX2dlbmxfbmV3X3BkcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXHR9XG4gXG4rXHRtdXRleF9sb2NrKFx1MDAyNmd0cF9wZHBfbG9jayk7XG4gXHRwY3R4ID0gZ3RwX3BkcF9hZGQoZ3RwLCBzaywgaW5mbyk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2Z3RwX3BkcF9sb2NrKTtcbiBcdGlmIChJU19FUlIocGN0eCkpIHtcbiBcdFx0ZXJyID0gUFRSX0VSUihwY3R4KTtcbiBcdH0gZWxzZSB7XG5AQCAtMjEzNCw5ICsyMTQ0LDEyIEBAIHN0YXRpYyBpbnQgZ3RwX2dlbmxfZGVsX3BkcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIFx0aWYgKCFpbmZvLVx1MDAzZWF0dHJzW0dUUEFfVkVSU0lPTl0pXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuLVx0cmN1X3JlYWRfbG9jaygpO1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZndHBfcGRwX2xvY2spO1xuIFxuK1x0LyogZ3RwX2ZpbmRfZGV2KCkgdXNlcyBkZXZfZ2V0X2J5X2luZGV4X3JjdSgpLiAqL1xuK1x0cmN1X3JlYWRfbG9jaygpO1xuIFx0cGN0eCA9IGd0cF9maW5kX3BkcChzb2NrX25ldChza2ItXHUwMDNlc2spLCBpbmZvLVx1MDAzZWF0dHJzKTtcbitcdHJjdV9yZWFkX3VubG9jaygpO1xuIFx0aWYgKElTX0VSUihwY3R4KSkge1xuIFx0XHRlcnIgPSBQVFJfRVJSKHBjdHgpO1xuIFx0XHRnb3RvIG91dF91bmxvY2s7XG5AQCAtMjE1Myw3ICsyMTY2LDcgQEAgc3RhdGljIGludCBndHBfZ2VubF9kZWxfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXHRwZHBfY29udGV4dF9kZWxldGUocGN0eCk7XG4gXG4gb3V0X3VubG9jazpcbi1cdHJjdV9yZWFkX3VubG9jaygpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmd0cF9wZHBfbG9jayk7XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjQxOjE5LjIwMDQ0NDM2OVoiLCJTZXEiOjE1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NzE2NDI3MTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEdUUCBQRFAgQ29udGV4dCBMb2NraW5nIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBzdHJhaWdodGZvcndhcmQuIEl0J3MgYWxsIGFib3V0IGNvbmN1cnJlbmN5IGFuZCBsb2NraW5nIHdpdGhpbiB0aGUgR1RQIGRyaXZlciwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgdGhlIFBEUCBjb250ZXh0IGxpc3RzIGluIGBkcml2ZXJzL25ldC9ndHAuY2AuIFRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhlIGBndHBfcGRwX2xvY2tgIG11dGV4IGlzIHRoZSBrZXkgaGVyZS4gVGhlIHByaW1hcnkgZnVuY3Rpb24gb2YgdGhpcyBtdXRleCBpcyB0byBwcm90ZWN0IHRoZSBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzIGZyb20gcmFjZSBjb25kaXRpb25zLiBUaGUgcmVsZXZhbnQgZnVuY3Rpb25zLCBsaWtlIGBndHAwX3BkcF9maW5kYCwgYGd0cDFfcGRwX2ZpbmRgLCBgaXB2NF9wZHBfZmluZGAsIGFuZCBgaXB2Nl9wZHBfZmluZGAsIG5vdyBwYXNzIGBsb2NrZGVwX2lzX2hlbGQoXHUwMDI2Z3RwX3BkcF9sb2NrKWAgdG8gYGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdWAuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdmVyaWZ5aW5nIHRoYXQgdGhlIGV4cGVjdGVkIGxvY2sgaXMgaGVsZCBiZWZvcmUgdGhlIFJDVSB0cmF2ZXJzYWwsIHByZXZlbnRpbmcgcG90ZW50aWFsIGlzc3Vlcy5cblxuSSBzZWUgdGhleSd2ZSBhZGRlZCBtdXRleCBsb2NraW5nIGFuZCB1bmxvY2tpbmcgYXJvdW5kIHRoZSBjcml0aWNhbCBzZWN0aW9ucyB3aXRoaW4gYGd0cF9kZWxsaW5rYCwgYGd0cF9nZW5sX25ld19wZHBgLCBhbmQgYGd0cF9nZW5sX2RlbF9wZHBgLiBUaGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IGBndHBfZGVsbGlua2AgbmVlZHMgdG8gbG9jayB3aGlsZSBkZWxldGluZyBjb250ZXh0cywgYGd0cF9nZW5sX25ld19wZHBgIG5lZWRzIHRoZSBsb2NrIHdoZW4gYWRkaW5nIG5ldyBvbmVzLCBhbmQgYGd0cF9nZW5sX2RlbF9wZHBgIG5lZWRzIGl0IHRvIHByb3RlY3QgdGhlIGZpbmQgYW5kIGRlbGV0ZSBvcGVyYXRpb25zLiBJdCdzIGEgY2xlYW4sIHN0YW5kYXJkIHBhdHRlcm4gZm9yIGVuc3VyaW5nIGRhdGEgaW50ZWdyaXR5IGR1cmluZyBjb25jdXJyZW50IGFjY2Vzcy5cblxuVGhlcmUncyBub3RoaW5nIGhlcmUgdGhhdCBsb29rcyBsaWtlIGl0J3MgaW50cm9kdWNpbmcgbmV3IHN0cnVjdHVyZXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLCBub3IgaXMgYW55IGluaXRpYWxpemF0aW9uIGxvZ2ljIG1vZGlmaWVkIGluIGEgd2F5IHRoYXQgY291bGQgbGVhZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSBleHBvc3VyZS4gVGhpcyBwYXRjaCBpcyBwdXJlbHkgZm9jdXNlZCBvbiBsb2NraW5nLiBGcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgaXQgYWRkcmVzc2VzIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMsIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvcywgb3IgbGlzdCBjb3JydXB0aW9uLCB3aGljaCBhcmUgdGhlIHNvcnRzIG9mIGlzc3VlcyB0aGF0IEtBU0FOL0xPQ0tERVAgYXJlIGRlc2lnbmVkIHRvIGNhdGNoLiBLTVNBTiwgd2hpY2ggZm9jdXNlcyBvbiB1bmluaXRpYWxpemVkIG1lbW9yeSwgaXNuJ3QgcmVsZXZhbnQgaW4gdGhpcyBjb250ZXh0LlxuXG5HaXZlbiB0aGF0LCBJJ20gY29uZmlkZW50IGluIHNldHRpbmcgYE5lZWRzS01TQU5gIHRvIGBmYWxzZWAgaGVyZS4gVGhpcyBjaGFuZ2UgaXMgZW50aXJlbHkgcmVsYXRlZCB0byBjb25jdXJyZW5jeSBjb250cm9sIGFuZCBkYXRhIGludGVncml0eSwgbm90IHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHByb2JsZW1zLiBJdCdzIGEgc3RhbmRhcmQgbG9ja2luZyBmaXgsIGFuZCB0aGUgZXhpc3Rpbmcga2VybmVsIHRvb2xzIGZvciBkZXRlY3RpbmcgY29uY3VycmVuY3kgaXNzdWVzIHdpbGwgYmUgdGhlIG1vc3QgYXBwcm9wcmlhdGUgdG9vbHMgZm9yIGZpbmRpbmcgYW55IHJlZ3Jlc3Npb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDMwLCJPdXRwdXRUb2tlbnMiOjE3NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjQxOjI3LjkxNjg3NjMzN1oiLCJTZXEiOjE2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBtdXRleCAoYGd0cF9wZHBfbG9ja2ApIHRvIHByb3RlY3QgdGhlIFBEUCBjb250ZXh0IGxpc3RzIGluIHRoZSBHVFAgZHJpdmVyLiBJdCBhZGRzIGxvY2tpbmcgYXJvdW5kIFBEUCBjb250ZXh0IGFkZGl0aW9uLCBkZWxldGlvbiwgYW5kIGxvb2t1cCwgYW5kIHVwZGF0ZXMgdGhlIFJDVSBsaXN0IHRyYXZlcnNhbCBtYWNyb3MgdG8gaW5jbHVkZSBgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZndHBfcGRwX2xvY2spYC4gVGhlc2UgY2hhbmdlcyBhcmUgYWltZWQgYXQgZml4aW5nIGNvbmN1cnJlbmN5IGlzc3Vlcywgc3VjaCBhcyByYWNlIGNvbmRpdGlvbnMsIGxpc3QgY29ycnVwdGlvbnMsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFN1Y2ggaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBzdGFuZGFyZCB0b29scyBsaWtlIEtBU0FOLCBLQ1NBTiwgYW5kIExPQ0tERVAuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1vZGlmeSBtZW1vcnkgaW5pdGlhbGl6YXRpb24sIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbXV0ZXggKGBndHBfcGRwX2xvY2tgKSB0byBwcm90ZWN0IHRoZSBQRFAgY29udGV4dCBsaXN0cyBpbiB0aGUgR1RQIGRyaXZlci4gSXQgYWRkcyBsb2NraW5nIGFyb3VuZCBQRFAgY29udGV4dCBhZGRpdGlvbiwgZGVsZXRpb24sIGFuZCBsb29rdXAsIGFuZCB1cGRhdGVzIHRoZSBSQ1UgbGlzdCB0cmF2ZXJzYWwgbWFjcm9zIHRvIGluY2x1ZGUgYGxvY2tkZXBfaXNfaGVsZChcXHUwMDI2Z3RwX3BkcF9sb2NrKWAuIFRoZXNlIGNoYW5nZXMgYXJlIGFpbWVkIGF0IGZpeGluZyBjb25jdXJyZW5jeSBpc3N1ZXMsIHN1Y2ggYXMgcmFjZSBjb25kaXRpb25zLCBsaXN0IGNvcnJ1cHRpb25zLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzLiBTdWNoIGlzc3VlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgc3RhbmRhcmQgdG9vbHMgbGlrZSBLQVNBTiwgS0NTQU4sIGFuZCBMT0NLREVQLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtb2RpZnkgbWVtb3J5IGluaXRpYWxpemF0aW9uLCBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowgrbnf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-14 03:21:37 +0000 UTC FinishedAt: 2026-08-14 03:41:29 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3aa1dcaa4f6f5ae08936491e08bd456f331f2d40", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "GTP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3aa1dcaa4f6f5ae08936491e08bd456f331f2d40", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "GTP" ], "series_id": "79cb6566-2ed6-4610-83c8-1264cdf9d08d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "gtp_genl_new_pdp", "gtp_genl_del_pdp", "gtp_dellink" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE0IDAzOjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0dUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2d0cF9nZW5sX25ld19wZHAmIzM0OywKICAgICYjMzQ7Z3RwX2dlbmxfZGVsX3BkcCYjMzQ7LAogICAgJiMzNDtndHBfZGVsbGluayYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbXV0ZXggKGBndHBfcGRwX2xvY2tgKSB0byBwcm90ZWN0IHRoZSBQRFAgY29udGV4dCBsaXN0cyBpbiB0aGUgR1RQIGRyaXZlci4gSXQgYWRkcyBsb2NraW5nIGFyb3VuZCBQRFAgY29udGV4dCBhZGRpdGlvbiwgZGVsZXRpb24sIGFuZCBsb29rdXAsIGFuZCB1cGRhdGVzIHRoZSBSQ1UgbGlzdCB0cmF2ZXJzYWwgbWFjcm9zIHRvIGluY2x1ZGUgYGxvY2tkZXBfaXNfaGVsZChcdTAwMjZndHBfcGRwX2xvY2spYC4gVGhlc2UgY2hhbmdlcyBhcmUgYWltZWQgYXQgZml4aW5nIGNvbmN1cnJlbmN5IGlzc3Vlcywgc3VjaCBhcyByYWNlIGNvbmRpdGlvbnMsIGxpc3QgY29ycnVwdGlvbnMsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFN1Y2ggaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBzdGFuZGFyZCB0b29scyBsaWtlIEtBU0FOLCBLQ1NBTiwgYW5kIExPQ0tERVAuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1vZGlmeSBtZW1vcnkgaW5pdGlhbGl6YXRpb24sIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IG11dGV4IHRvIHByb3RlY3QgR1RQIFBEUCBjb250ZXh0IG9wZXJhdGlvbnMsIG1vZGlmeWluZyB0aGUgbmV0bGluayBoYW5kbGVycyBmb3IgY3JlYXRpbmcgYW5kIGRlbGV0aW5nIFBEUCBjb250ZXh0cywgYXMgd2VsbCBhcyB0aGUgbmV0X2RldmljZSBkZWxsaW5rIGhhbmRsZXIuIFRoZXNlIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIGludm9sdmUgZnVuY3Rpb25hbCBjb25jdXJyZW5jeSBjaGFuZ2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAzOjQwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYzgwOGRlMzIzZmI4YWFlN2VkNzQ2MjgwY2VmNzM1M2U5OTU3ODgzYlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDAzOjQwOjUyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2d0cC5jIGIvZHJpdmVycy9uZXQvZ3RwLmNcbmluZGV4IDlhMTJjYzUzZGEwMDIuLmVhODNhNmI2YWExYTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ndHAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZ3RwLmNcbkBAIC0xMiw2ICYjNDM7MTIsNyBAQFxuICNkZWZpbmUgcHJfZm10KGZtdCkgS0JVSUxEX01PRE5BTUUgXCYjMzQ7OiBcJiMzNDsgZm10XG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbXV0ZXguaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NrYnVmZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdWRwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yY3VsaXN0LmhcdTAwM2VcbkBAIC0xMDgsNiAmIzQzOzEwOSw3IEBAIHN0cnVjdCBndHBfbmV0IHtcbiB9O1xuIFxuIHN0YXRpYyB1MzIgZ3RwX2hfaW5pdHZhbDtcbiYjNDM7c3RhdGljIERFRklORV9NVVRFWChndHBfcGRwX2xvY2spO1xuIFxuIHN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgZ3RwX2dlbmxfZmFtaWx5O1xuIFxuQEAgLTE1MSw3ICYjNDM7MTUzLDggQEAgc3RhdGljIHN0cnVjdCBwZHBfY3R4ICpndHAwX3BkcF9maW5kKHN0cnVjdCBndHBfZGV2ICpndHAsIHU2NCB0aWQsIHUxNiBmYW1pbHkpXG4gXG4gXHRoZWFkID0gXHUwMDI2Z3RwLVx1MDAzZXRpZF9oYXNoW2d0cDBfaGFzaGZuKHRpZCkgJSBndHAtXHUwMDNlaGFzaF9zaXplXTtcbiBcbi1cdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwZHAsIGhlYWQsIGhsaXN0X3RpZCkge1xuJiM0MztcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwZHAsIGhlYWQsIGhsaXN0X3RpZCxcbiYjNDM7XHRcdFx0XHQgbG9ja2RlcF9pc19oZWxkKFx1MDAyNmd0cF9wZHBfbG9jaykpIHtcbiBcdFx0aWYgKHBkcC1cdTAwM2VhZiA9PSBmYW1pbHkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBwZHAtXHUwMDNlZ3RwX3ZlcnNpb24gPT0gR1RQX1YwIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgcGRwLVx1MDAzZXUudjAudGlkID09IHRpZClcbkBAIC0xNjgsNyAmIzQzOzE3MSw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGRwX2N0eCAqZ3RwMV9wZHBfZmluZChzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCB1MzIgdGlkLCB1MTYgZmFtaWx5KVxuIFxuIFx0aGVhZCA9IFx1MDAyNmd0cC1cdTAwM2V0aWRfaGFzaFtndHAxdV9oYXNoZm4odGlkKSAlIGd0cC1cdTAwM2VoYXNoX3NpemVdO1xuIFxuLVx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfdGlkKSB7XG4mIzQzO1x0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfdGlkLFxuJiM0MztcdFx0XHRcdCBsb2NrZGVwX2lzX2hlbGQoXHUwMDI2Z3RwX3BkcF9sb2NrKSkge1xuIFx0XHRpZiAocGRwLVx1MDAzZWFmID09IGZhbWlseSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIHBkcC1cdTAwM2VndHBfdmVyc2lvbiA9PSBHVFBfVjEgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBwZHAtXHUwMDNldS52MS5pX3RlaSA9PSB0aWQpXG5AQCAtMTg1LDcgJiM0MzsxODksOCBAQCBzdGF0aWMgc3RydWN0IHBkcF9jdHggKmlwdjRfcGRwX2ZpbmQoc3RydWN0IGd0cF9kZXYgKmd0cCwgX19iZTMyIG1zX2FkZHIpXG4gXG4gXHRoZWFkID0gXHUwMDI2Z3RwLVx1MDAzZWFkZHJfaGFzaFtpcHY0X2hhc2hmbihtc19hZGRyKSAlIGd0cC1cdTAwM2VoYXNoX3NpemVdO1xuIFxuLVx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfYWRkcikge1xuJiM0MztcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwZHAsIGhlYWQsIGhsaXN0X2FkZHIsXG4mIzQzO1x0XHRcdFx0IGxvY2tkZXBfaXNfaGVsZChcdTAwMjZndHBfcGRwX2xvY2spKSB7XG4gXHRcdGlmIChwZHAtXHUwMDNlYWYgPT0gQUZfSU5FVCBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIHBkcC1cdTAwM2Vtcy5hZGRyLnNfYWRkciA9PSBtc19hZGRyKVxuIFx0XHRcdHJldHVybiBwZHA7XG5AQCAtMjIwLDcgJiM0MzsyMjUsOCBAQCBzdGF0aWMgc3RydWN0IHBkcF9jdHggKmlwdjZfcGRwX2ZpbmQoc3RydWN0IGd0cF9kZXYgKmd0cCxcbiBcbiBcdGhlYWQgPSBcdTAwMjZndHAtXHUwMDNlYWRkcl9oYXNoW2lwdjZfaGFzaGZuKG1zX2FkZHIpICUgZ3RwLVx1MDAzZWhhc2hfc2l6ZV07XG4gXG4tXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF9hZGRyKSB7XG4mIzQzO1x0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfYWRkcixcbiYjNDM7XHRcdFx0XHQgbG9ja2RlcF9pc19oZWxkKFx1MDAyNmd0cF9wZHBfbG9jaykpIHtcbiBcdFx0aWYgKHBkcC1cdTAwM2VhZiA9PSBBRl9JTkVUNiBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGlwdjZfcGRwX2FkZHJfZXF1YWwoXHUwMDI2cGRwLVx1MDAzZW1zLmFkZHI2LCBtc19hZGRyKSlcbiBcdFx0XHRyZXR1cm4gcGRwO1xuQEAgLTE1NTUsOSAmIzQzOzE1NjEsMTEgQEAgc3RhdGljIHZvaWQgZ3RwX2RlbGxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZClcbiBcdHN0cnVjdCBwZHBfY3R4ICpwY3R4O1xuIFx0aW50IGk7XG4gXG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZndHBfcGRwX2xvY2spO1xuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZ3RwLVx1MDAzZWhhc2hfc2l6ZTsgaSYjNDM7JiM0MzspXG4gXHRcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocGN0eCwgbmV4dCwgXHUwMDI2Z3RwLVx1MDAzZXRpZF9oYXNoW2ldLCBobGlzdF90aWQpXG4gXHRcdFx0cGRwX2NvbnRleHRfZGVsZXRlKHBjdHgpO1xuJiM0MztcdG11dGV4X3VubG9jayhcdTAwMjZndHBfcGRwX2xvY2spO1xuIFxuIFx0bGlzdF9kZWwoXHUwMDI2Z3RwLVx1MDAzZWxpc3QpO1xuIFx0dW5yZWdpc3Rlcl9uZXRkZXZpY2VfcXVldWUoZGV2LCBoZWFkKTtcbkBAIC0yMDUzLDcgJiM0MzsyMDYxLDkgQEAgc3RhdGljIGludCBndHBfZ2VubF9uZXdfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXHRcdGdvdG8gb3V0X3VubG9jaztcbiBcdH1cbiBcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNmd0cF9wZHBfbG9jayk7XG4gXHRwY3R4ID0gZ3RwX3BkcF9hZGQoZ3RwLCBzaywgaW5mbyk7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmd0cF9wZHBfbG9jayk7XG4gXHRpZiAoSVNfRVJSKHBjdHgpKSB7XG4gXHRcdGVyciA9IFBUUl9FUlIocGN0eCk7XG4gXHR9IGVsc2Uge1xuQEAgLTIxMzQsOSAmIzQzOzIxNDQsMTIgQEAgc3RhdGljIGludCBndHBfZ2VubF9kZWxfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXHRpZiAoIWluZm8tXHUwMDNlYXR0cnNbR1RQQV9WRVJTSU9OXSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRyY3VfcmVhZF9sb2NrKCk7XG4mIzQzO1x0bXV0ZXhfbG9jayhcdTAwMjZndHBfcGRwX2xvY2spO1xuIFxuJiM0MztcdC8qIGd0cF9maW5kX2RldigpIHVzZXMgZGV2X2dldF9ieV9pbmRleF9yY3UoKS4gKi9cbiYjNDM7XHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRwY3R4ID0gZ3RwX2ZpbmRfcGRwKHNvY2tfbmV0KHNrYi1cdTAwM2VzayksIGluZm8tXHUwMDNlYXR0cnMpO1xuJiM0MztcdHJjdV9yZWFkX3VubG9jaygpO1xuIFx0aWYgKElTX0VSUihwY3R4KSkge1xuIFx0XHRlcnIgPSBQVFJfRVJSKHBjdHgpO1xuIFx0XHRnb3RvIG91dF91bmxvY2s7XG5AQCAtMjE1Myw3ICYjNDM7MjE2Niw3IEBAIHN0YXRpYyBpbnQgZ3RwX2dlbmxfZGVsX3BkcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIFx0cGRwX2NvbnRleHRfZGVsZXRlKHBjdHgpO1xuIFxuIG91dF91bmxvY2s6XG4tXHRyY3VfcmVhZF91bmxvY2soKTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2Z3RwX3BkcF9sb2NrKTtcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAzOjQwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtHVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtndHBfZ2VubF9uZXdfcGRwJiMzNDssCiAgICAmIzM0O2d0cF9nZW5sX2RlbF9wZHAmIzM0OywKICAgICYjMzQ7Z3RwX2RlbGxpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBtdXRleCB0byBwcm90ZWN0IEdUUCBQRFAgY29udGV4dCBvcGVyYXRpb25zLCBtb2RpZnlpbmcgdGhlIG5ldGxpbmsgaGFuZGxlcnMgZm9yIGNyZWF0aW5nIGFuZCBkZWxldGluZyBQRFAgY29udGV4dHMsIGFzIHdlbGwgYXMgdGhlIG5ldF9kZXZpY2UgZGVsbGluayBoYW5kbGVyLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBpbnZvbHZlIGZ1bmN0aW9uYWwgY29uY3VycmVuY3kgY2hhbmdlcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGM4MDhkZTMyM2ZiOGFhZTdlZDc0NjI4MGNlZjczNTNlOTk1Nzg4M2IKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyAxNCAwMzo0MDo1MiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2d0cC5jIGIvZHJpdmVycy9uZXQvZ3RwLmMKaW5kZXggOWExMmNjNTNkYTAwMi4uZWE4M2E2YjZhYTFhNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZ3RwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZ3RwLmMKQEAgLTEyLDYgJiM0MzsxMiw3IEBACiAjZGVmaW5lIHByX2ZtdChmbXQpIEtCVUlMRF9NT0ROQU1FICYjMzQ7OiAmIzM0OyBmbXQKIAogI2luY2x1ZGUgJmx0O2xpbnV4L21vZHVsZS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9tdXRleC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3NrYnVmZi5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3VkcC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3JjdWxpc3QuaCZndDsKQEAgLTEwOCw2ICYjNDM7MTA5LDcgQEAgc3RydWN0IGd0cF9uZXQgewogfTsKIAogc3RhdGljIHUzMiBndHBfaF9pbml0dmFsOwomIzQzO3N0YXRpYyBERUZJTkVfTVVURVgoZ3RwX3BkcF9sb2NrKTsKIAogc3RhdGljIHN0cnVjdCBnZW5sX2ZhbWlseSBndHBfZ2VubF9mYW1pbHk7CiAKQEAgLTE1MSw3ICYjNDM7MTUzLDggQEAgc3RhdGljIHN0cnVjdCBwZHBfY3R4ICpndHAwX3BkcF9maW5kKHN0cnVjdCBndHBfZGV2ICpndHAsIHU2NCB0aWQsIHUxNiBmYW1pbHkpCiAKIAloZWFkID0gJmFtcDtndHAtJmd0O3RpZF9oYXNoW2d0cDBfaGFzaGZuKHRpZCkgJSBndHAtJmd0O2hhc2hfc2l6ZV07CiAKLQlobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF90aWQpIHsKJiM0MzsJaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfdGlkLAomIzQzOwkJCQkgbG9ja2RlcF9pc19oZWxkKCZhbXA7Z3RwX3BkcF9sb2NrKSkgewogCQlpZiAocGRwLSZndDthZiA9PSBmYW1pbHkgJmFtcDsmYW1wOwogCQkgICAgcGRwLSZndDtndHBfdmVyc2lvbiA9PSBHVFBfVjAgJmFtcDsmYW1wOwogCQkgICAgcGRwLSZndDt1LnYwLnRpZCA9PSB0aWQpCkBAIC0xNjgsNyAmIzQzOzE3MSw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGRwX2N0eCAqZ3RwMV9wZHBfZmluZChzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCB1MzIgdGlkLCB1MTYgZmFtaWx5KQogCiAJaGVhZCA9ICZhbXA7Z3RwLSZndDt0aWRfaGFzaFtndHAxdV9oYXNoZm4odGlkKSAlIGd0cC0mZ3Q7aGFzaF9zaXplXTsKIAotCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwZHAsIGhlYWQsIGhsaXN0X3RpZCkgewomIzQzOwlobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF90aWQsCiYjNDM7CQkJCSBsb2NrZGVwX2lzX2hlbGQoJmFtcDtndHBfcGRwX2xvY2spKSB7CiAJCWlmIChwZHAtJmd0O2FmID09IGZhbWlseSAmYW1wOyZhbXA7CiAJCSAgICBwZHAtJmd0O2d0cF92ZXJzaW9uID09IEdUUF9WMSAmYW1wOyZhbXA7CiAJCSAgICBwZHAtJmd0O3UudjEuaV90ZWkgPT0gdGlkKQpAQCAtMTg1LDcgJiM0MzsxODksOCBAQCBzdGF0aWMgc3RydWN0IHBkcF9jdHggKmlwdjRfcGRwX2ZpbmQoc3RydWN0IGd0cF9kZXYgKmd0cCwgX19iZTMyIG1zX2FkZHIpCiAKIAloZWFkID0gJmFtcDtndHAtJmd0O2FkZHJfaGFzaFtpcHY0X2hhc2hmbihtc19hZGRyKSAlIGd0cC0mZ3Q7aGFzaF9zaXplXTsKIAotCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwZHAsIGhlYWQsIGhsaXN0X2FkZHIpIHsKJiM0MzsJaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfYWRkciwKJiM0MzsJCQkJIGxvY2tkZXBfaXNfaGVsZCgmYW1wO2d0cF9wZHBfbG9jaykpIHsKIAkJaWYgKHBkcC0mZ3Q7YWYgPT0gQUZfSU5FVCAmYW1wOyZhbXA7CiAJCSAgICBwZHAtJmd0O21zLmFkZHIuc19hZGRyID09IG1zX2FkZHIpCiAJCQlyZXR1cm4gcGRwOwpAQCAtMjIwLDcgJiM0MzsyMjUsOCBAQCBzdGF0aWMgc3RydWN0IHBkcF9jdHggKmlwdjZfcGRwX2ZpbmQoc3RydWN0IGd0cF9kZXYgKmd0cCwKIAogCWhlYWQgPSAmYW1wO2d0cC0mZ3Q7YWRkcl9oYXNoW2lwdjZfaGFzaGZuKG1zX2FkZHIpICUgZ3RwLSZndDtoYXNoX3NpemVdOwogCi0JaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfYWRkcikgewomIzQzOwlobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF9hZGRyLAomIzQzOwkJCQkgbG9ja2RlcF9pc19oZWxkKCZhbXA7Z3RwX3BkcF9sb2NrKSkgewogCQlpZiAocGRwLSZndDthZiA9PSBBRl9JTkVUNiAmYW1wOyZhbXA7CiAJCSAgICBpcHY2X3BkcF9hZGRyX2VxdWFsKCZhbXA7cGRwLSZndDttcy5hZGRyNiwgbXNfYWRkcikpCiAJCQlyZXR1cm4gcGRwOwpAQCAtMTU1NSw5ICYjNDM7MTU2MSwxMSBAQCBzdGF0aWMgdm9pZCBndHBfZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKQogCXN0cnVjdCBwZHBfY3R4ICpwY3R4OwogCWludCBpOwogCiYjNDM7CW11dGV4X2xvY2soJmFtcDtndHBfcGRwX2xvY2spOwogCWZvciAoaSA9IDA7IGkgJmx0OyBndHAtJmd0O2hhc2hfc2l6ZTsgaSYjNDM7JiM0MzspCiAJCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocGN0eCwgbmV4dCwgJmFtcDtndHAtJmd0O3RpZF9oYXNoW2ldLCBobGlzdF90aWQpCiAJCQlwZHBfY29udGV4dF9kZWxldGUocGN0eCk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2d0cF9wZHBfbG9jayk7CiAKIAlsaXN0X2RlbCgmYW1wO2d0cC0mZ3Q7bGlzdCk7CiAJdW5yZWdpc3Rlcl9uZXRkZXZpY2VfcXVldWUoZGV2LCBoZWFkKTsKQEAgLTIwNTMsNyAmIzQzOzIwNjEsOSBAQCBzdGF0aWMgaW50IGd0cF9nZW5sX25ld19wZHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbykKIAkJZ290byBvdXRfdW5sb2NrOwogCX0KIAomIzQzOwltdXRleF9sb2NrKCZhbXA7Z3RwX3BkcF9sb2NrKTsKIAlwY3R4ID0gZ3RwX3BkcF9hZGQoZ3RwLCBzaywgaW5mbyk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO2d0cF9wZHBfbG9jayk7CiAJaWYgKElTX0VSUihwY3R4KSkgewogCQllcnIgPSBQVFJfRVJSKHBjdHgpOwogCX0gZWxzZSB7CkBAIC0yMTM0LDkgJiM0MzsyMTQ0LDEyIEBAIHN0YXRpYyBpbnQgZ3RwX2dlbmxfZGVsX3BkcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKQogCWlmICghaW5mby0mZ3Q7YXR0cnNbR1RQQV9WRVJTSU9OXSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlyY3VfcmVhZF9sb2NrKCk7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtndHBfcGRwX2xvY2spOwogCiYjNDM7CS8qIGd0cF9maW5kX2RldigpIHVzZXMgZGV2X2dldF9ieV9pbmRleF9yY3UoKS4gKi8KJiM0MzsJcmN1X3JlYWRfbG9jaygpOwogCXBjdHggPSBndHBfZmluZF9wZHAoc29ja19uZXQoc2tiLSZndDtzayksIGluZm8tJmd0O2F0dHJzKTsKJiM0MzsJcmN1X3JlYWRfdW5sb2NrKCk7CiAJaWYgKElTX0VSUihwY3R4KSkgewogCQllcnIgPSBQVFJfRVJSKHBjdHgpOwogCQlnb3RvIG91dF91bmxvY2s7CkBAIC0yMTUzLDcgJiM0MzsyMTY2LDcgQEAgc3RhdGljIGludCBndHBfZ2VubF9kZWxfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pCiAJcGRwX2NvbnRleHRfZGVsZXRlKHBjdHgpOwogCiBvdXRfdW5sb2NrOgotCXJjdV9yZWFkX3VubG9jaygpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtndHBfcGRwX2xvY2spOwogCXJldHVybiBlcnI7CiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDM6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQzMwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDIxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEdUUCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBkcml2ZXJzL25ldC9ndHAuY2AuIEl0JiMzOTtzIGludHJvZHVjaW5nIGEgbmV3IG11dGV4LCBgZ3RwX3BkcF9sb2NrYCwgYW5kIHVzaW5nIGl0IHRvIHByb3RlY3QgYSBmZXcga2V5IGZ1bmN0aW9uczogYGd0cF9wZHBfYWRkYCwgYGd0cF9maW5kX3BkcGAsIGFuZCBgcGRwX2NvbnRleHRfZGVsZXRlYCwgYWxvbmcgd2l0aCByZWxhdGVkIG9wZXJhdGlvbnMuIEl0IGFsc28gc2VlbXMgdGhleSYjMzk7dmUgbW9kaWZpZWQgc29tZSBgaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1YCBjYWxscyB0byBpbmNsdWRlIGEgYGxvY2tkZXBfaXNfaGVsZCgmYW1wO2d0cF9wZHBfbG9jaylgIGNoZWNrLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCBpZiB0aGlzIGlzIGV2ZW4gZnV6emFibGUsIGFuZCBpZiBpdCYjMzk7cyB3b3J0aCB0aGUgdGltZSB0byBldmVuIHRyeS4KCkZpcnN0IHN0ZXA6IHdoZXJlIGNhbiB0aGlzIGNvZGUgYmUgcmVhY2hlZD8gSXQmIzM5O3MgdGhlIEdUUCBkcml2ZXIsIHdoaWNoLCBhcyBJIHJlY2FsbCwgaGFuZGxlcyB0aGUgR1BSUyBUdW5uZWxpbmcgUHJvdG9jb2wuIFRoYXQgcmluZ3MgYSBiZWxsLi4uIEkgYmVsaWV2ZSBpdCYjMzk7cyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIG5ldGxpbmsgKHNwZWNpZmljYWxseSBnZW5sLCByaWdodD8pLiAgTGV0JiMzOTtzIHNlZTogYGd0cF9nZW5sX25ld19wZHBgLCBgZ3RwX2dlbmxfZGVsX3BkcGAuLi4geWVhaCwgdGhvc2Ugd291bGQgZG8gaXQuIEFuZCwgSSB0aGluayBgZ3RwX2RlbGxpbmtgIGlzIGNhbGxlZCB3aGVuIHlvdSBkZWxldGUgdGhlIG5ldGxpbmsgaW50ZXJmYWNlLCBzbyB0aGF0IG1pZ2h0IGFsc28gYmUgcmVsZXZhbnQuCgpOZXh0IEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgZm9yIEdUUCB0byBtYWtlIHN1cmUgaXQmIzM5O3MgZW5hYmxlZCBhbmQgbm90IGhpZGRlbiBiZWhpbmQgc29tZSBvYnNjdXJlIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBUaGF0JiMzOTtsbCBiZSBpbXBvcnRhbnQgZm9yIG1ha2luZyBzdXJlIHdlIGNhbiBldmVuIHJlYWNoIGl0IHdpdGggZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgR1RQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTI2MD1jb25maWcgQkFSRVVEUFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctMjcxLVxuZHJpdmVycy9uZXQvS2NvbmZpZzoyNzI6Y29uZmlnIEdUUFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yNzMtXHR0cmlzdGF0ZSBcJiMzNDtHUFJTIFR1bm5lbGluZyBQcm90b2NvbCBkYXRhcGF0aCAoR1RQLVUpXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDM6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA5MAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgR1RQIEtjb25maWcgRW50cnkqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1Nob3cgbWUgdGhlIGZ1bGwgS2NvbmZpZyBlbnRyeSBmb3IgR1RQLiYjMzQ7IEkgd2FudCB0aGUgY29tcGxldGUgcGljdHVyZSBoZXJlLCBubyBzaG9ydGN1dHMuIEkmIzM5O20gbm90IGp1c3QgbG9va2luZyBmb3IgYSBxdWljayBzbmlwcGV0OyBJIG5lZWQgdGhlIGVudGlyZSBjb250ZXh0IHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgZGVwZW5kZW5jaWVzLCBhbmQgZGVmYXVsdCBzZXR0aW5ncyByZWxhdGVkIHRvIHRoZSBHVFAgcHJvdG9jb2wuIEkmIzM5O20gYW50aWNpcGF0aW5nIHBvdGVudGlhbCBudWFuY2VzIGFuZCBpbnRlcmRlcGVuZGVuY2llcyB3aXRoIG90aGVyIGZlYXR1cmVzLCBzbyBJIG5lZWQgdGhlIGZ1bGwgZGV0YWlscyB0byBwcm9wZXJseSBhc3Nlc3MgdGhlIGltcGxpY2F0aW9ucyBvZiBhbnkgY29uZmlndXJhdGlvbiBjaGFuZ2VzLiBMZXQmIzM5O3MgZ2V0IHRoZSB3aG9sZSB0aGluZyBpbiBmcm9udCBvZiBtZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI3MDpcdFx0ICB3aWxsIGJlIGNhbGxlZCBiYXJldWRwLlxuIDI3MTpcdFxuIDI3MjpcdGNvbmZpZyBHVFBcbiAyNzM6XHRcdHRyaXN0YXRlIFwmIzM0O0dQUlMgVHVubmVsaW5nIFByb3RvY29sIGRhdGFwYXRoIChHVFAtVSlcJiMzNDtcbiAyNzQ6XHRcdGRlcGVuZHMgb24gSU5FVFxuIDI3NTpcdFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4gMjc2Olx0XHRoZWxwXG4gMjc3Olx0XHQgIFRoaXMgYWxsb3dzIG9uZSB0byBjcmVhdGUgZ3RwIHZpcnR1YWwgaW50ZXJmYWNlcyB0aGF0IHByb3ZpZGVcbiAyNzg6XHRcdCAgdGhlIEdQUlMgVHVubmVsaW5nIFByb3RvY29sIGRhdGFwYXRoIChHVFAtVSkuIFRoaXMgdHVubmVsaW5nIHByb3RvY29sXG4gMjc5Olx0XHQgIGlzIHVzZWQgdG8gcHJldmVudCBzdWJzY3JpYmVycyBmcm9tIGFjY2Vzc2luZyBtb2JpbGUgY2FycmllciBjb3JlXG4gMjgwOlx0XHQgIG5ldHdvcmsgaW5mcmFzdHJ1Y3R1cmUuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIGEgdXNlcnNwYWNlIHNvZnR3YXJlIHRoYXRcbiAyODE6XHRcdCAgaW1wbGVtZW50cyB0aGUgc2lnbmFsaW5nIHByb3RvY29sIChHVFAtQykgdG8gdXBkYXRlIGl0cyBQRFAgY29udGV4dFxuIDI4MjpcdFx0ICBiYXNlLCBzdWNoIGFzIE9wZW5HR1NOIFx1MDAzY2h0dHA6Ly9naXQub3Ntb2NvbS5vcmcvb3Blbmdnc24vKS4gVGhpc1xuIDI4MzpcdFx0ICB0dW5uZWxpbmcgcHJvdG9jb2wgaXMgaW1wbGVtZW50ZWQgYWNjb3JkaW5nIHRvIHRoZSBHU00gVFMgMDkuNjAgYW5kXG4gMjg0Olx0XHQgIDNHUFAgVFMgMjkuMDYwIHN0YW5kYXJkcy5cbiAyODU6XHRcbiAyODY6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlcnMgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAyODc6XHRcdCAgd2lsbCBiZSBjYWxsZWQgZ3RwLlxuIDI4ODpcdFxuIDI4OTpcdGNvbmZpZyBQRkNQXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDM6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDYxNwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIEdUUCBDb25maWd1cmF0aW9uIFBhdGNoKioKCk9rYXksIHNvIHRoZSBjb25maWcgaGVyZSBpcyBjZW50ZXJlZCBhcm91bmQgYEdUUGAgYW5kIHJlbGllcyBvbiBgSU5FVGAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSB0aGUgcGF0Y2ggaXMgdG91Y2hpbmcgYGd0cF9nZW5sX25ld19wZHBgLCBgZ3RwX2dlbmxfZGVsX3BkcGAsIGFuZCBgZ3RwX2RlbGxpbmtgLiBUaG9zZSBhcmUgdGhlIGVudHJ5IHBvaW50cyDigJMgdGhlIGZ1bmN0aW9ucyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIGEgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlLiBGcm9tIGEgcXVpY2sgZ2xhbmNlLCB0aGUgY2hhbmdlcyBhcHBlYXIgZnVuY3Rpb25hbCwgcHJpbWFyaWx5IGZvY3VzZWQgb24gYWRkaW5nIGEgbXV0ZXggdG8gcHJvdGVjdCBQRFAgY29udGV4dCBvcGVyYXRpb25zLiBUaGF0JiMzOTtzIGEgZ29vZCBtb3ZlLCBnZW5lcmFsbHksIGJ1dCBpdCBhbHNvIHRlbGxzIG1lIHdlJiMzOTt2ZSBnb3QgYSBjb25jdXJyZW5jeSBjb25jZXJuIGFuZCB3ZSAqYWJzb2x1dGVseSogbmVlZCB0byBmdXp6IHRoaXMgY29kZS4gVGhlIGZvY3VzIHN5bWJvbHMgYXJlIGNsZWFybHk6IGBndHBfZ2VubF9uZXdfcGRwYCwgYGd0cF9nZW5sX2RlbF9wZHBgLCBhbmQgYGd0cF9kZWxsaW5rYC4gSSBuZWVkIHRvIHB1dCB0aG9zZSBvbiBteSBsaXN0IHRvIGhhbW1lciB3aXRoIGZ1enppbmcuIExldCBtZSBzZWUgaWYgSSBjYW4gZmluZCBvdGhlciBmdW5jdGlvbnMgbmVhcmJ5IHRoYXQgbWlnaHQgYWxzbyBiZW5lZml0IGZyb20gc2NydXRpbnkuLi4gSSBzaG91bGQgc2VlIGlmIHRoZXJlIGFyZSBvdGhlciBmdW5jdGlvbnMgaW52b2x2ZWQgd2l0aCBHVFAgY29udGV4dCBtYW5hZ2VtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAzOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2d0cF9nZW5sX25ld19wZHAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ndHAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ndHAuYz0yMDEyPXN0YXRpYyBpbnQgZ3RwX3R1bm5lbF9ub3RpZnkoc3RydWN0IHBkcF9jdHggKnBjdHgsIHU4IGNtZCwgZ2ZwX3QgYWxsb2NhdGlvbik7XG5kcml2ZXJzL25ldC9ndHAuYy0yMDEzLVxuZHJpdmVycy9uZXQvZ3RwLmM6MjAxNDpzdGF0aWMgaW50IGd0cF9nZW5sX25ld19wZHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbmRyaXZlcnMvbmV0L2d0cC5jLTIwMTUte1xuLS1cbmRyaXZlcnMvbmV0L2d0cC5jPTI0NDY9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBndHBfZ2VubF9vcHNbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC9ndHAuYy0yNDQ5LVx0XHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXG5kcml2ZXJzL25ldC9ndHAuYzoyNDUwOlx0XHQuZG9pdCA9IGd0cF9nZW5sX25ld19wZHAsXG5kcml2ZXJzL25ldC9ndHAuYy0yNDUxLVx0XHQuZmxhZ3MgPSBHRU5MX0FETUlOX1BFUk0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDM6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTI4OQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqQ2hlY2tpbmcgYGd0cF9kZWxsaW5rYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgZ3RwX2RlbGxpbmtgIGlzIGJlaGF2aW5nIGFzIGV4cGVjdGVkLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgZmlyc3QgdGhpbmcgSSYjMzk7bSBjaGVja2luZyBpc24mIzM5O3QgdGhlIGNvZGUgaXRzZWxmIGJ1dCB0aGUgKmNvbnRleHQqIG9mIGl0cyBleGVjdXRpb24uIEFtIEkgZGVhbGluZyB3aXRoIGEgc3BlY2lmaWMgc2NlbmFyaW8/IEFyZSB0aGVyZSByZWNlbnQgY2hhbmdlcyB0aGF0IG1pZ2h0IGhhdmUgdHJpZ2dlcmVkIGFuIGlzc3VlPyBXaGF0JiMzOTtzIHRoZSBlbnZpcm9ubWVudCBpdCYjMzk7cyBydW5uaW5nIGluPyBUaGlzIGtpbmQgb2YgaW5pdGlhbCBhc3Nlc3NtZW50IHNhdmVzIG1lIGEgbG90IG9mIHRpbWUgaW4gdGhlIGxvbmcgcnVuLiBOb3csIGlzIGBndHBfZGVsbGlua2AgZmFpbGluZz8gUHJvZHVjaW5nIHVuZXhwZWN0ZWQgcmVzdWx0cz8gT3IgaXMgdGhlcmUgc29tZXRoaW5nIHJlbGF0ZWQgdG8gdGhlIGRlbGlua2luZyBwcm9jZXNzIHRoYXQgSSBoYXZlIG1pc3NlZD8KCk15IG5leHQgdGhvdWdodCBwcm9jZXNzIHdvdWxkIGRlcGVuZCBvbiB0aGUgbmF0dXJlIG9mIHRoZSBpc3N1ZSwgYnV0IEkmIzM5O2QgbGlrZWx5IGZvbGxvdyB0aGVzZSBzdGVwczogSSYjMzk7bGwgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIGxvZ3MsIGxvb2tpbmcgZm9yIGFueSBzcGVjaWZpYyBlcnJvciBtZXNzYWdlcyBvciB1bnVzdWFsIHBhdHRlcm5zLiBUaGVuLCBJJiMzOTtkIHJldmlldyB0aGUgaW5wdXQgZGF0YSB0byBjb25maXJtIGl0JiMzOTtzIGluIHRoZSBleHBlY3RlZCBmb3JtYXQuIEkgbWlnaHQgaW5zdHJ1bWVudCB0aGUgZnVuY3Rpb24gd2l0aCBzb21lIGFkZGl0aW9uYWwgbG9nZ2luZyB0byBwaW5wb2ludCB3aGVyZSB0aGUgcHJvYmxlbSBvcmlnaW5hdGVzLiBJcyBpdCBhIGRhdGEgdmFsaWRhdGlvbiBwcm9ibGVtLCBhIGJ1ZyBpbiB0aGUgbGlua2luZyBhbGdvcml0aG0sIG9yIGEgcHJvYmxlbSB3aXRoIHRoZSBpbmZyYXN0cnVjdHVyZT8KCklmIHRob3NlIGNoZWNrcyBkb24mIzM5O3QgaW1tZWRpYXRlbHkgcmV2ZWFsIHRoZSBjdWxwcml0LCBJJiMzOTtsbCBzdGFydCBjb25zaWRlcmluZyB0aGUgZGVwZW5kZW5jaWVzIG9mIGBndHBfZGVsbGlua2AuIEFyZSB0aGVyZSBleHRlcm5hbCBBUElzIGl0IHJlbGllcyBvbj8gRGF0YWJhc2VzPyBIYXMgYW55dGhpbmcgY2hhbmdlZCB0aGVyZSByZWNlbnRseT8gVmVyc2lvbiBtaXNtYXRjaGVzIGFyZSBhbHdheXMgYSBwb3NzaWJpbGl0eS4gUGVyaGFwcyB0aGVyZSYjMzk7cyBhbiBpc3N1ZSB3aXRoIHJlc291cmNlIGFsbG9jYXRpb24sIHRocmVhZCBjb250ZW50aW9uLCBvciBhIHN1YnRsZSByYWNlIGNvbmRpdGlvbi4gVGltZSB0byBkZWJ1ZyBhbmQgdGVzdC4gQW5kIGxhc3RseSwgSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0byB3cml0ZSB1cCBzb21lIGRvY3VtZW50YXRpb24gYWJvdXQgbXkgZmluZGluZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAzOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2d0cF9kZWxsaW5rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZ3RwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZ3RwLmM9MTQ3NT1zdGF0aWMgaW50IGd0cF9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvZ3RwLmMtMTU1Ni1cbmRyaXZlcnMvbmV0L2d0cC5jOjE1NTc6c3RhdGljIHZvaWQgZ3RwX2RlbGxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZClcbmRyaXZlcnMvbmV0L2d0cC5jLTE1NTgte1xuLS1cbmRyaXZlcnMvbmV0L2d0cC5jPTE2MTg9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIGd0cF9saW5rX29wcyBfX3JlYWRfbW9zdGx5ID0ge1xuLS1cbmRyaXZlcnMvbmV0L2d0cC5jLTE2MjUtXHQubmV3bGlua1x0PSBndHBfbmV3bGluayxcbmRyaXZlcnMvbmV0L2d0cC5jOjE2MjY6XHQuZGVsbGlua1x0PSBndHBfZGVsbGluayxcbmRyaXZlcnMvbmV0L2d0cC5jLTE2MjctXHQuZ2V0X3NpemVcdD0gZ3RwX2dldF9zaXplLFxuLS1cbmRyaXZlcnMvbmV0L2d0cC5jPTI0OTc9c3RhdGljIHZvaWQgX19uZXRfZXhpdCBndHBfbmV0X2V4aXRfcnRubChzdHJ1Y3QgbmV0ICpuZXQsXG4tLVxuZHJpdmVycy9uZXQvZ3RwLmMtMjUwMy1cdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShndHAsIGd0cF9uZXh0LCBcdTAwMjZnbi1cdTAwM2VndHBfZGV2X2xpc3QsIGxpc3QpXG5kcml2ZXJzL25ldC9ndHAuYzoyNTA0Olx0XHRndHBfZGVsbGluayhndHAtXHUwMDNlZGV2LCBkZXZfdG9fa2lsbCk7XG5kcml2ZXJzL25ldC9ndHAuYy0yNTA1LX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMDM6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjA1OQoJCQkJCQkJb3V0cHV0OiAxMTYKCQkJCQkJCXRob3VnaHRzOiAzNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgR1RQIFBEUCBDb250ZXh0IFByb3RlY3Rpb24gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhZGRpbmcgYSBtdXRleCwgYGd0cF9wZHBfbG9ja2AsIHRvIHNhZmVndWFyZCBvcGVyYXRpb25zIG9uIFBEUCBjb250ZXh0cyB3aXRoaW4gdGhlIEdUUCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBpcyBhIHNvbGlkIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQmIzM5O3MgdXNlci1zcGFjZSByZWFjaGFibGUgdmlhIG5ldGxpbmssIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIGl0IGFzIHNvbWV0aGluZyB0byBwYXkgYXR0ZW50aW9uIHRvLiBUaGUgcmVsZXZhbnQgY29uZmlnIGlzIGBHVFBgLCB3aGljaCBtYWtlcyBzZW5zZS4KCkJlZm9yZSBJIGdvIGZ1cnRoZXIsIGxldCBtZSBkb3VibGUtY2hlY2sgc29tZXRoaW5nIHRoYXQmIzM5O3MgYWx3YXlzIGdvb2QgcHJhY3RpY2U6IEkgbmVlZCB0byBlbnN1cmUgYElORVRgIGlzbiYjMzk7dCBpbmFkdmVydGVudGx5IGRpc2FibGVkLiBUaG91Z2ggYElORVRgIGlzIHVzdWFsbHkgZW5hYmxlZCBieSBkZWZhdWx0LCBpdCYjMzk7cyBhbHdheXMgYSBnb29kIGhhYml0IHRvIHZlcmlmeSB0aGF0IGl0IHJlbWFpbnMgZW5hYmxlZC4gQWxyaWdodCwgYEdUUGAgYWxvbmUgaXMgc3VmZmljaWVudDsgYElORVRgIGlzIGEgYmFzZSBjb25maWcsIHNvIHdlJiMzOTtyZSBnb29kIHRoZXJlLgoKTm93LCBsZXQmIzM5O3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gdG91Y2hlZC4gSXQgbG9va3MgbGlrZSBgZ3RwMF9wZHBfZmluZGAsIGBndHAxX3BkcF9maW5kYCwgYGlwdjRfcGRwX2ZpbmRgLCBhbmQgYGlwdjZfcGRwX2ZpbmRgIGFyZSBiZWluZyBtb2RpZmllZCB0byBpbmNsdWRlIGBsb2NrZGVwX2lzX2hlbGQoJmFtcDtndHBfcGRwX2xvY2spYC4gVGhlc2UgYXJlIHN0YXRpYyBmdW5jdGlvbnMsIHNvIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCB0aGV5IG1pZ2h0IGJlIGlubGluZWQsIGltcGFjdGluZyBob3cgdGhlIGxvY2sgaXMgcGVyY2VpdmVkLiBUaGUgbWFpbiBlbnRyeSBwb2ludHMsIHRob3VnaCwgYXBwZWFyIHRvIGJlIGBndHBfZGVsbGlua2AsIGBndHBfZ2VubF9uZXdfcGRwYCwgYW5kIGBndHBfZ2VubF9kZWxfcGRwYC4KCkdpdmVuIGFsbCB0aGlzLCBoZXJlJiMzOTtzIHdoYXQgSSYjMzk7bGwgZG86IEkmIzM5O20gZ29pbmcgdG8gZmxhZyB0aGlzIGFzICYjMzQ7V29ydGhGdXp6aW5nJiMzNDsgYmVjYXVzZSBvZiB0aGUgdXNlci1zcGFjZSBpbnRlcmFjdGlvbiBhbmQgdGhlIGNvbmN1cnJlbmN5LXJlbGF0ZWQgbW9kaWZpY2F0aW9ucy4gTXkgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OyB3aWxsIGRlZmluaXRlbHkgaW5jbHVkZSBgZ3RwX2dlbmxfbmV3X3BkcGAsIGBndHBfZ2VubF9kZWxfcGRwYCwgYW5kIGBndHBfZGVsbGlua2AuIEFuZCBteSAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OyB3aWxsIGJlIGBHVFBgLiBUaGUgJiMzNDtSZWFzb25pbmcmIzM0OyB3aWxsIGJlOiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IG11dGV4IHRvIHByb3RlY3QgR1RQIFBEUCBjb250ZXh0IG9wZXJhdGlvbnMsIG1vZGlmeWluZyB0aGUgbmV0bGluayBoYW5kbGVycyBmb3IgY3JlYXRpbmcgYW5kIGRlbGV0aW5nIFBEUCBjb250ZXh0cywgYXMgd2VsbCBhcyB0aGUgbmV0X2RldmljZSBkZWxsaW5rIGhhbmRsZXIuIFRoZXNlIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIGludm9sdmUgZnVuY3Rpb25hbCBjb25jdXJyZW5jeSBjaGFuZ2VzLiYjMzQ7IFRoYXQgc2hvdWxkIGNvdmVyIG15IGJhc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7R1RQJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Z3RwX2dlbmxfbmV3X3BkcCYjMzQ7LAogICAgJiMzNDtndHBfZ2VubF9kZWxfcGRwJiMzNDssCiAgICAmIzM0O2d0cF9kZWxsaW5rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbXV0ZXggdG8gcHJvdGVjdCBHVFAgUERQIGNvbnRleHQgb3BlcmF0aW9ucywgbW9kaWZ5aW5nIHRoZSBuZXRsaW5rIGhhbmRsZXJzIGZvciBjcmVhdGluZyBhbmQgZGVsZXRpbmcgUERQIGNvbnRleHRzLCBhcyB3ZWxsIGFzIHRoZSBuZXRfZGV2aWNlIGRlbGxpbmsgaGFuZGxlci4gVGhlc2UgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgaW52b2x2ZSBmdW5jdGlvbmFsIGNvbmN1cnJlbmN5IGNoYW5nZXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0dUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2d0cF9nZW5sX25ld19wZHAmIzM0OywKICAgICYjMzQ7Z3RwX2dlbmxfZGVsX3BkcCYjMzQ7LAogICAgJiMzNDtndHBfZGVsbGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IG11dGV4IHRvIHByb3RlY3QgR1RQIFBEUCBjb250ZXh0IG9wZXJhdGlvbnMsIG1vZGlmeWluZyB0aGUgbmV0bGluayBoYW5kbGVycyBmb3IgY3JlYXRpbmcgYW5kIGRlbGV0aW5nIFBEUCBjb250ZXh0cywgYXMgd2VsbCBhcyB0aGUgbmV0X2RldmljZSBkZWxsaW5rIGhhbmRsZXIuIFRoZXNlIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIGludm9sdmUgZnVuY3Rpb25hbCBjb25jdXJyZW5jeSBjaGFuZ2VzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzo0MTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDAzOjQxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbXV0ZXggKGBndHBfcGRwX2xvY2tgKSB0byBwcm90ZWN0IHRoZSBQRFAgY29udGV4dCBsaXN0cyBpbiB0aGUgR1RQIGRyaXZlci4gSXQgYWRkcyBsb2NraW5nIGFyb3VuZCBQRFAgY29udGV4dCBhZGRpdGlvbiwgZGVsZXRpb24sIGFuZCBsb29rdXAsIGFuZCB1cGRhdGVzIHRoZSBSQ1UgbGlzdCB0cmF2ZXJzYWwgbWFjcm9zIHRvIGluY2x1ZGUgYGxvY2tkZXBfaXNfaGVsZChcdTAwMjZndHBfcGRwX2xvY2spYC4gVGhlc2UgY2hhbmdlcyBhcmUgYWltZWQgYXQgZml4aW5nIGNvbmN1cnJlbmN5IGlzc3Vlcywgc3VjaCBhcyByYWNlIGNvbmRpdGlvbnMsIGxpc3QgY29ycnVwdGlvbnMsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFN1Y2ggaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBzdGFuZGFyZCB0b29scyBsaWtlIEtBU0FOLCBLQ1NBTiwgYW5kIExPQ0tERVAuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1vZGlmeSBtZW1vcnkgaW5pdGlhbGl6YXRpb24sIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBjODA4ZGUzMjNmYjhhYWU3ZWQ3NDYyODBjZWY3MzUzZTk5NTc4ODNiCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIEZyaSBBdWcgMTQgMDM6NDA6NTIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ndHAuYyBiL2RyaXZlcnMvbmV0L2d0cC5jCmluZGV4IDlhMTJjYzUzZGEwMDIuLmVhODNhNmI2YWExYTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2d0cC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2d0cC5jCkBAIC0xMiw2ICYjNDM7MTIsNyBAQAogI2RlZmluZSBwcl9mbXQoZm10KSBLQlVJTERfTU9ETkFNRSAmIzM0OzogJiMzNDsgZm10CiAKICNpbmNsdWRlICZsdDtsaW51eC9tb2R1bGUuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvbXV0ZXguaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9za2J1ZmYuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC91ZHAuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9yY3VsaXN0LmgmZ3Q7CkBAIC0xMDgsNiAmIzQzOzEwOSw3IEBAIHN0cnVjdCBndHBfbmV0IHsKIH07CiAKIHN0YXRpYyB1MzIgZ3RwX2hfaW5pdHZhbDsKJiM0MztzdGF0aWMgREVGSU5FX01VVEVYKGd0cF9wZHBfbG9jayk7CiAKIHN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgZ3RwX2dlbmxfZmFtaWx5OwogCkBAIC0xNTEsNyAmIzQzOzE1Myw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGRwX2N0eCAqZ3RwMF9wZHBfZmluZChzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCB1NjQgdGlkLCB1MTYgZmFtaWx5KQogCiAJaGVhZCA9ICZhbXA7Z3RwLSZndDt0aWRfaGFzaFtndHAwX2hhc2hmbih0aWQpICUgZ3RwLSZndDtoYXNoX3NpemVdOwogCi0JaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfdGlkKSB7CiYjNDM7CWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwZHAsIGhlYWQsIGhsaXN0X3RpZCwKJiM0MzsJCQkJIGxvY2tkZXBfaXNfaGVsZCgmYW1wO2d0cF9wZHBfbG9jaykpIHsKIAkJaWYgKHBkcC0mZ3Q7YWYgPT0gZmFtaWx5ICZhbXA7JmFtcDsKIAkJICAgIHBkcC0mZ3Q7Z3RwX3ZlcnNpb24gPT0gR1RQX1YwICZhbXA7JmFtcDsKIAkJICAgIHBkcC0mZ3Q7dS52MC50aWQgPT0gdGlkKQpAQCAtMTY4LDcgJiM0MzsxNzEsOCBAQCBzdGF0aWMgc3RydWN0IHBkcF9jdHggKmd0cDFfcGRwX2ZpbmQoc3RydWN0IGd0cF9kZXYgKmd0cCwgdTMyIHRpZCwgdTE2IGZhbWlseSkKIAogCWhlYWQgPSAmYW1wO2d0cC0mZ3Q7dGlkX2hhc2hbZ3RwMXVfaGFzaGZuKHRpZCkgJSBndHAtJmd0O2hhc2hfc2l6ZV07CiAKLQlobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF90aWQpIHsKJiM0MzsJaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfdGlkLAomIzQzOwkJCQkgbG9ja2RlcF9pc19oZWxkKCZhbXA7Z3RwX3BkcF9sb2NrKSkgewogCQlpZiAocGRwLSZndDthZiA9PSBmYW1pbHkgJmFtcDsmYW1wOwogCQkgICAgcGRwLSZndDtndHBfdmVyc2lvbiA9PSBHVFBfVjEgJmFtcDsmYW1wOwogCQkgICAgcGRwLSZndDt1LnYxLmlfdGVpID09IHRpZCkKQEAgLTE4NSw3ICYjNDM7MTg5LDggQEAgc3RhdGljIHN0cnVjdCBwZHBfY3R4ICppcHY0X3BkcF9maW5kKHN0cnVjdCBndHBfZGV2ICpndHAsIF9fYmUzMiBtc19hZGRyKQogCiAJaGVhZCA9ICZhbXA7Z3RwLSZndDthZGRyX2hhc2hbaXB2NF9oYXNoZm4obXNfYWRkcikgJSBndHAtJmd0O2hhc2hfc2l6ZV07CiAKLQlobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF9hZGRyKSB7CiYjNDM7CWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwZHAsIGhlYWQsIGhsaXN0X2FkZHIsCiYjNDM7CQkJCSBsb2NrZGVwX2lzX2hlbGQoJmFtcDtndHBfcGRwX2xvY2spKSB7CiAJCWlmIChwZHAtJmd0O2FmID09IEFGX0lORVQgJmFtcDsmYW1wOwogCQkgICAgcGRwLSZndDttcy5hZGRyLnNfYWRkciA9PSBtc19hZGRyKQogCQkJcmV0dXJuIHBkcDsKQEAgLTIyMCw3ICYjNDM7MjI1LDggQEAgc3RhdGljIHN0cnVjdCBwZHBfY3R4ICppcHY2X3BkcF9maW5kKHN0cnVjdCBndHBfZGV2ICpndHAsCiAKIAloZWFkID0gJmFtcDtndHAtJmd0O2FkZHJfaGFzaFtpcHY2X2hhc2hmbihtc19hZGRyKSAlIGd0cC0mZ3Q7aGFzaF9zaXplXTsKIAotCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwZHAsIGhlYWQsIGhsaXN0X2FkZHIpIHsKJiM0MzsJaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfYWRkciwKJiM0MzsJCQkJIGxvY2tkZXBfaXNfaGVsZCgmYW1wO2d0cF9wZHBfbG9jaykpIHsKIAkJaWYgKHBkcC0mZ3Q7YWYgPT0gQUZfSU5FVDYgJmFtcDsmYW1wOwogCQkgICAgaXB2Nl9wZHBfYWRkcl9lcXVhbCgmYW1wO3BkcC0mZ3Q7bXMuYWRkcjYsIG1zX2FkZHIpKQogCQkJcmV0dXJuIHBkcDsKQEAgLTE1NTUsOSAmIzQzOzE1NjEsMTEgQEAgc3RhdGljIHZvaWQgZ3RwX2RlbGxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZCkKIAlzdHJ1Y3QgcGRwX2N0eCAqcGN0eDsKIAlpbnQgaTsKIAomIzQzOwltdXRleF9sb2NrKCZhbXA7Z3RwX3BkcF9sb2NrKTsKIAlmb3IgKGkgPSAwOyBpICZsdDsgZ3RwLSZndDtoYXNoX3NpemU7IGkmIzQzOyYjNDM7KQogCQlobGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHBjdHgsIG5leHQsICZhbXA7Z3RwLSZndDt0aWRfaGFzaFtpXSwgaGxpc3RfdGlkKQogCQkJcGRwX2NvbnRleHRfZGVsZXRlKHBjdHgpOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtndHBfcGRwX2xvY2spOwogCiAJbGlzdF9kZWwoJmFtcDtndHAtJmd0O2xpc3QpOwogCXVucmVnaXN0ZXJfbmV0ZGV2aWNlX3F1ZXVlKGRldiwgaGVhZCk7CkBAIC0yMDUzLDcgJiM0MzsyMDYxLDkgQEAgc3RhdGljIGludCBndHBfZ2VubF9uZXdfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pCiAJCWdvdG8gb3V0X3VubG9jazsKIAl9CiAKJiM0MzsJbXV0ZXhfbG9jaygmYW1wO2d0cF9wZHBfbG9jayk7CiAJcGN0eCA9IGd0cF9wZHBfYWRkKGd0cCwgc2ssIGluZm8pOwomIzQzOwltdXRleF91bmxvY2soJmFtcDtndHBfcGRwX2xvY2spOwogCWlmIChJU19FUlIocGN0eCkpIHsKIAkJZXJyID0gUFRSX0VSUihwY3R4KTsKIAl9IGVsc2UgewpAQCAtMjEzNCw5ICYjNDM7MjE0NCwxMiBAQCBzdGF0aWMgaW50IGd0cF9nZW5sX2RlbF9wZHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbykKIAlpZiAoIWluZm8tJmd0O2F0dHJzW0dUUEFfVkVSU0lPTl0pCiAJCXJldHVybiAtRUlOVkFMOwogCi0JcmN1X3JlYWRfbG9jaygpOwomIzQzOwltdXRleF9sb2NrKCZhbXA7Z3RwX3BkcF9sb2NrKTsKIAomIzQzOwkvKiBndHBfZmluZF9kZXYoKSB1c2VzIGRldl9nZXRfYnlfaW5kZXhfcmN1KCkuICovCiYjNDM7CXJjdV9yZWFkX2xvY2soKTsKIAlwY3R4ID0gZ3RwX2ZpbmRfcGRwKHNvY2tfbmV0KHNrYi0mZ3Q7c2spLCBpbmZvLSZndDthdHRycyk7CiYjNDM7CXJjdV9yZWFkX3VubG9jaygpOwogCWlmIChJU19FUlIocGN0eCkpIHsKIAkJZXJyID0gUFRSX0VSUihwY3R4KTsKIAkJZ290byBvdXRfdW5sb2NrOwpAQCAtMjE1Myw3ICYjNDM7MjE2Niw3IEBAIHN0YXRpYyBpbnQgZ3RwX2dlbmxfZGVsX3BkcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKQogCXBkcF9jb250ZXh0X2RlbGV0ZShwY3R4KTsKIAogb3V0X3VubG9jazoKLQlyY3VfcmVhZF91bmxvY2soKTsKJiM0MzsJbXV0ZXhfdW5sb2NrKCZhbXA7Z3RwX3BkcF9sb2NrKTsKIAlyZXR1cm4gZXJyOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDMwCgkJCQkJCQlvdXRwdXQ6IDE3NAoJCQkJCQkJdGhvdWdodHM6IDQyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBHVFAgUERQIENvbnRleHQgTG9ja2luZyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHN0cmFpZ2h0Zm9yd2FyZC4gSXQmIzM5O3MgYWxsIGFib3V0IGNvbmN1cnJlbmN5IGFuZCBsb2NraW5nIHdpdGhpbiB0aGUgR1RQIGRyaXZlciwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgdGhlIFBEUCBjb250ZXh0IGxpc3RzIGluIGBkcml2ZXJzL25ldC9ndHAuY2AuIFRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhlIGBndHBfcGRwX2xvY2tgIG11dGV4IGlzIHRoZSBrZXkgaGVyZS4gVGhlIHByaW1hcnkgZnVuY3Rpb24gb2YgdGhpcyBtdXRleCBpcyB0byBwcm90ZWN0IHRoZSBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzIGZyb20gcmFjZSBjb25kaXRpb25zLiBUaGUgcmVsZXZhbnQgZnVuY3Rpb25zLCBsaWtlIGBndHAwX3BkcF9maW5kYCwgYGd0cDFfcGRwX2ZpbmRgLCBgaXB2NF9wZHBfZmluZGAsIGFuZCBgaXB2Nl9wZHBfZmluZGAsIG5vdyBwYXNzIGBsb2NrZGVwX2lzX2hlbGQoJmFtcDtndHBfcGRwX2xvY2spYCB0byBgaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1YC4gVGhpcyBpcyBjcnVjaWFsIGZvciB2ZXJpZnlpbmcgdGhhdCB0aGUgZXhwZWN0ZWQgbG9jayBpcyBoZWxkIGJlZm9yZSB0aGUgUkNVIHRyYXZlcnNhbCwgcHJldmVudGluZyBwb3RlbnRpYWwgaXNzdWVzLgoKSSBzZWUgdGhleSYjMzk7dmUgYWRkZWQgbXV0ZXggbG9ja2luZyBhbmQgdW5sb2NraW5nIGFyb3VuZCB0aGUgY3JpdGljYWwgc2VjdGlvbnMgd2l0aGluIGBndHBfZGVsbGlua2AsIGBndHBfZ2VubF9uZXdfcGRwYCwgYW5kIGBndHBfZ2VubF9kZWxfcGRwYC4gVGhhdCBtYWtlcyBwZXJmZWN0IHNlbnNlOyBgZ3RwX2RlbGxpbmtgIG5lZWRzIHRvIGxvY2sgd2hpbGUgZGVsZXRpbmcgY29udGV4dHMsIGBndHBfZ2VubF9uZXdfcGRwYCBuZWVkcyB0aGUgbG9jayB3aGVuIGFkZGluZyBuZXcgb25lcywgYW5kIGBndHBfZ2VubF9kZWxfcGRwYCBuZWVkcyBpdCB0byBwcm90ZWN0IHRoZSBmaW5kIGFuZCBkZWxldGUgb3BlcmF0aW9ucy4gSXQmIzM5O3MgYSBjbGVhbiwgc3RhbmRhcmQgcGF0dGVybiBmb3IgZW5zdXJpbmcgZGF0YSBpbnRlZ3JpdHkgZHVyaW5nIGNvbmN1cnJlbnQgYWNjZXNzLgoKVGhlcmUmIzM5O3Mgbm90aGluZyBoZXJlIHRoYXQgbG9va3MgbGlrZSBpdCYjMzk7cyBpbnRyb2R1Y2luZyBuZXcgc3RydWN0dXJlcyBleHBvc2VkIHRvIHVzZXIgc3BhY2UsIG5vciBpcyBhbnkgaW5pdGlhbGl6YXRpb24gbG9naWMgbW9kaWZpZWQgaW4gYSB3YXkgdGhhdCBjb3VsZCBsZWFkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGV4cG9zdXJlLiBUaGlzIHBhdGNoIGlzIHB1cmVseSBmb2N1c2VkIG9uIGxvY2tpbmcuIEZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLCBpdCBhZGRyZXNzZXMgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW9zLCBvciBsaXN0IGNvcnJ1cHRpb24sIHdoaWNoIGFyZSB0aGUgc29ydHMgb2YgaXNzdWVzIHRoYXQgS0FTQU4vTE9DS0RFUCBhcmUgZGVzaWduZWQgdG8gY2F0Y2guIEtNU0FOLCB3aGljaCBmb2N1c2VzIG9uIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBpc24mIzM5O3QgcmVsZXZhbnQgaW4gdGhpcyBjb250ZXh0LgoKR2l2ZW4gdGhhdCwgSSYjMzk7bSBjb25maWRlbnQgaW4gc2V0dGluZyBgTmVlZHNLTVNBTmAgdG8gYGZhbHNlYCBoZXJlLiBUaGlzIGNoYW5nZSBpcyBlbnRpcmVseSByZWxhdGVkIHRvIGNvbmN1cnJlbmN5IGNvbnRyb2wgYW5kIGRhdGEgaW50ZWdyaXR5LCBub3QgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkgcHJvYmxlbXMuIEl0JiMzOTtzIGEgc3RhbmRhcmQgbG9ja2luZyBmaXgsIGFuZCB0aGUgZXhpc3Rpbmcga2VybmVsIHRvb2xzIGZvciBkZXRlY3RpbmcgY29uY3VycmVuY3kgaXNzdWVzIHdpbGwgYmUgdGhlIG1vc3QgYXBwcm9wcmlhdGUgdG9vbHMgZm9yIGZpbmRpbmcgYW55IHJlZ3Jlc3Npb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAwMzo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IG11dGV4IChgZ3RwX3BkcF9sb2NrYCkgdG8gcHJvdGVjdCB0aGUgUERQIGNvbnRleHQgbGlzdHMgaW4gdGhlIEdUUCBkcml2ZXIuIEl0IGFkZHMgbG9ja2luZyBhcm91bmQgUERQIGNvbnRleHQgYWRkaXRpb24sIGRlbGV0aW9uLCBhbmQgbG9va3VwLCBhbmQgdXBkYXRlcyB0aGUgUkNVIGxpc3QgdHJhdmVyc2FsIG1hY3JvcyB0byBpbmNsdWRlIGBsb2NrZGVwX2lzX2hlbGQoXHUwMDI2Z3RwX3BkcF9sb2NrKWAuIFRoZXNlIGNoYW5nZXMgYXJlIGFpbWVkIGF0IGZpeGluZyBjb25jdXJyZW5jeSBpc3N1ZXMsIHN1Y2ggYXMgcmFjZSBjb25kaXRpb25zLCBsaXN0IGNvcnJ1cHRpb25zLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzLiBTdWNoIGlzc3VlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgc3RhbmRhcmQgdG9vbHMgbGlrZSBLQVNBTiwgS0NTQU4sIGFuZCBMT0NLREVQLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtb2RpZnkgbWVtb3J5IGluaXRpYWxpemF0aW9uLCBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbXV0ZXggKGBndHBfcGRwX2xvY2tgKSB0byBwcm90ZWN0IHRoZSBQRFAgY29udGV4dCBsaXN0cyBpbiB0aGUgR1RQIGRyaXZlci4gSXQgYWRkcyBsb2NraW5nIGFyb3VuZCBQRFAgY29udGV4dCBhZGRpdGlvbiwgZGVsZXRpb24sIGFuZCBsb29rdXAsIGFuZCB1cGRhdGVzIHRoZSBSQ1UgbGlzdCB0cmF2ZXJzYWwgbWFjcm9zIHRvIGluY2x1ZGUgYGxvY2tkZXBfaXNfaGVsZChcdTAwMjZndHBfcGRwX2xvY2spYC4gVGhlc2UgY2hhbmdlcyBhcmUgYWltZWQgYXQgZml4aW5nIGNvbmN1cnJlbmN5IGlzc3Vlcywgc3VjaCBhcyByYWNlIGNvbmRpdGlvbnMsIGxpc3QgY29ycnVwdGlvbnMsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFN1Y2ggaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBzdGFuZGFyZCB0b29scyBsaWtlIEtBU0FOLCBLQ1NBTiwgYW5kIExPQ0tERVAuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1vZGlmeSBtZW1vcnkgaW5pdGlhbGl6YXRpb24sIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwMzo0MDo1My40NTYzMDAwNzNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDQ2MDY0NTMzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJHVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJndHBfZ2VubF9uZXdfcGRwXCIsXG4gICAgXCJndHBfZ2VubF9kZWxfcGRwXCIsXG4gICAgXCJndHBfZGVsbGlua1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBtdXRleCAoYGd0cF9wZHBfbG9ja2ApIHRvIHByb3RlY3QgdGhlIFBEUCBjb250ZXh0IGxpc3RzIGluIHRoZSBHVFAgZHJpdmVyLiBJdCBhZGRzIGxvY2tpbmcgYXJvdW5kIFBEUCBjb250ZXh0IGFkZGl0aW9uLCBkZWxldGlvbiwgYW5kIGxvb2t1cCwgYW5kIHVwZGF0ZXMgdGhlIFJDVSBsaXN0IHRyYXZlcnNhbCBtYWNyb3MgdG8gaW5jbHVkZSBgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZndHBfcGRwX2xvY2spYC4gVGhlc2UgY2hhbmdlcyBhcmUgYWltZWQgYXQgZml4aW5nIGNvbmN1cnJlbmN5IGlzc3Vlcywgc3VjaCBhcyByYWNlIGNvbmRpdGlvbnMsIGxpc3QgY29ycnVwdGlvbnMsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFN1Y2ggaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBzdGFuZGFyZCB0b29scyBsaWtlIEtBU0FOLCBLQ1NBTiwgYW5kIExPQ0tERVAuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1vZGlmeSBtZW1vcnkgaW5pdGlhbGl6YXRpb24sIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbXV0ZXggdG8gcHJvdGVjdCBHVFAgUERQIGNvbnRleHQgb3BlcmF0aW9ucywgbW9kaWZ5aW5nIHRoZSBuZXRsaW5rIGhhbmRsZXJzIGZvciBjcmVhdGluZyBhbmQgZGVsZXRpbmcgUERQIGNvbnRleHRzLCBhcyB3ZWxsIGFzIHRoZSBuZXRfZGV2aWNlIGRlbGxpbmsgaGFuZGxlci4gVGhlc2UgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgaW52b2x2ZSBmdW5jdGlvbmFsIGNvbmN1cnJlbmN5IGNoYW5nZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjQwOjUzLjQ1NjMwOTA0M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ3ODI3NzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgYzgwOGRlMzIzZmI4YWFlN2VkNzQ2MjgwY2VmNzM1M2U5OTU3ODgzYlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEF1ZyAxNCAwMzo0MDo1MiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ndHAuYyBiL2RyaXZlcnMvbmV0L2d0cC5jXFxuaW5kZXggOWExMmNjNTNkYTAwMi4uZWE4M2E2YjZhYTFhNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ndHAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2d0cC5jXFxuQEAgLTEyLDYgKzEyLDcgQEBcXG4gI2RlZmluZSBwcl9mbXQoZm10KSBLQlVJTERfTU9ETkFNRSBcXFwiOiBcXFwiIGZtdFxcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbXV0ZXguaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NrYnVmZi5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvdWRwLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9yY3VsaXN0LmhcXHUwMDNlXFxuQEAgLTEwOCw2ICsxMDksNyBAQCBzdHJ1Y3QgZ3RwX25ldCB7XFxuIH07XFxuIFxcbiBzdGF0aWMgdTMyIGd0cF9oX2luaXR2YWw7XFxuK3N0YXRpYyBERUZJTkVfTVVURVgoZ3RwX3BkcF9sb2NrKTtcXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgZ3RwX2dlbmxfZmFtaWx5O1xcbiBcXG5AQCAtMTUxLDcgKzE1Myw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGRwX2N0eCAqZ3RwMF9wZHBfZmluZChzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCB1NjQgdGlkLCB1MTYgZmFtaWx5KVxcbiBcXG4gXFx0aGVhZCA9IFxcdTAwMjZndHAtXFx1MDAzZXRpZF9oYXNoW2d0cDBfaGFzaGZuKHRpZCkgJSBndHAtXFx1MDAzZWhhc2hfc2l6ZV07XFxuIFxcbi1cXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF90aWQpIHtcXG4rXFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfdGlkLFxcbitcXHRcXHRcXHRcXHQgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZndHBfcGRwX2xvY2spKSB7XFxuIFxcdFxcdGlmIChwZHAtXFx1MDAzZWFmID09IGZhbWlseSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgcGRwLVxcdTAwM2VndHBfdmVyc2lvbiA9PSBHVFBfVjAgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0ICAgIHBkcC1cXHUwMDNldS52MC50aWQgPT0gdGlkKVxcbkBAIC0xNjgsNyArMTcxLDggQEAgc3RhdGljIHN0cnVjdCBwZHBfY3R4ICpndHAxX3BkcF9maW5kKHN0cnVjdCBndHBfZGV2ICpndHAsIHUzMiB0aWQsIHUxNiBmYW1pbHkpXFxuIFxcbiBcXHRoZWFkID0gXFx1MDAyNmd0cC1cXHUwMDNldGlkX2hhc2hbZ3RwMXVfaGFzaGZuKHRpZCkgJSBndHAtXFx1MDAzZWhhc2hfc2l6ZV07XFxuIFxcbi1cXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF90aWQpIHtcXG4rXFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfdGlkLFxcbitcXHRcXHRcXHRcXHQgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZndHBfcGRwX2xvY2spKSB7XFxuIFxcdFxcdGlmIChwZHAtXFx1MDAzZWFmID09IGZhbWlseSBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgcGRwLVxcdTAwM2VndHBfdmVyc2lvbiA9PSBHVFBfVjEgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0ICAgIHBkcC1cXHUwMDNldS52MS5pX3RlaSA9PSB0aWQpXFxuQEAgLTE4NSw3ICsxODksOCBAQCBzdGF0aWMgc3RydWN0IHBkcF9jdHggKmlwdjRfcGRwX2ZpbmQoc3RydWN0IGd0cF9kZXYgKmd0cCwgX19iZTMyIG1zX2FkZHIpXFxuIFxcbiBcXHRoZWFkID0gXFx1MDAyNmd0cC1cXHUwMDNlYWRkcl9oYXNoW2lwdjRfaGFzaGZuKG1zX2FkZHIpICUgZ3RwLVxcdTAwM2VoYXNoX3NpemVdO1xcbiBcXG4tXFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfYWRkcikge1xcbitcXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF9hZGRyLFxcbitcXHRcXHRcXHRcXHQgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZndHBfcGRwX2xvY2spKSB7XFxuIFxcdFxcdGlmIChwZHAtXFx1MDAzZWFmID09IEFGX0lORVQgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0ICAgIHBkcC1cXHUwMDNlbXMuYWRkci5zX2FkZHIgPT0gbXNfYWRkcilcXG4gXFx0XFx0XFx0cmV0dXJuIHBkcDtcXG5AQCAtMjIwLDcgKzIyNSw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGRwX2N0eCAqaXB2Nl9wZHBfZmluZChzdHJ1Y3QgZ3RwX2RldiAqZ3RwLFxcbiBcXG4gXFx0aGVhZCA9IFxcdTAwMjZndHAtXFx1MDAzZWFkZHJfaGFzaFtpcHY2X2hhc2hmbihtc19hZGRyKSAlIGd0cC1cXHUwMDNlaGFzaF9zaXplXTtcXG4gXFxuLVxcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwZHAsIGhlYWQsIGhsaXN0X2FkZHIpIHtcXG4rXFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfYWRkcixcXG4rXFx0XFx0XFx0XFx0IGxvY2tkZXBfaXNfaGVsZChcXHUwMDI2Z3RwX3BkcF9sb2NrKSkge1xcbiBcXHRcXHRpZiAocGRwLVxcdTAwM2VhZiA9PSBBRl9JTkVUNiBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgaXB2Nl9wZHBfYWRkcl9lcXVhbChcXHUwMDI2cGRwLVxcdTAwM2Vtcy5hZGRyNiwgbXNfYWRkcikpXFxuIFxcdFxcdFxcdHJldHVybiBwZHA7XFxuQEAgLTE1NTUsOSArMTU2MSwxMSBAQCBzdGF0aWMgdm9pZCBndHBfZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxcbiBcXHRzdHJ1Y3QgcGRwX2N0eCAqcGN0eDtcXG4gXFx0aW50IGk7XFxuIFxcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZndHBfcGRwX2xvY2spO1xcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZ3RwLVxcdTAwM2VoYXNoX3NpemU7IGkrKylcXG4gXFx0XFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwY3R4LCBuZXh0LCBcXHUwMDI2Z3RwLVxcdTAwM2V0aWRfaGFzaFtpXSwgaGxpc3RfdGlkKVxcbiBcXHRcXHRcXHRwZHBfY29udGV4dF9kZWxldGUocGN0eCk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2Z3RwX3BkcF9sb2NrKTtcXG4gXFxuIFxcdGxpc3RfZGVsKFxcdTAwMjZndHAtXFx1MDAzZWxpc3QpO1xcbiBcXHR1bnJlZ2lzdGVyX25ldGRldmljZV9xdWV1ZShkZXYsIGhlYWQpO1xcbkBAIC0yMDUzLDcgKzIwNjEsOSBAQCBzdGF0aWMgaW50IGd0cF9nZW5sX25ld19wZHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4gXFx0XFx0Z290byBvdXRfdW5sb2NrO1xcbiBcXHR9XFxuIFxcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZndHBfcGRwX2xvY2spO1xcbiBcXHRwY3R4ID0gZ3RwX3BkcF9hZGQoZ3RwLCBzaywgaW5mbyk7XFxuK1xcdG11dGV4X3VubG9jayhcXHUwMDI2Z3RwX3BkcF9sb2NrKTtcXG4gXFx0aWYgKElTX0VSUihwY3R4KSkge1xcbiBcXHRcXHRlcnIgPSBQVFJfRVJSKHBjdHgpO1xcbiBcXHR9IGVsc2Uge1xcbkBAIC0yMTM0LDkgKzIxNDQsMTIgQEAgc3RhdGljIGludCBndHBfZ2VubF9kZWxfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuIFxcdGlmICghaW5mby1cXHUwMDNlYXR0cnNbR1RQQV9WRVJTSU9OXSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbi1cXHRyY3VfcmVhZF9sb2NrKCk7XFxuK1xcdG11dGV4X2xvY2soXFx1MDAyNmd0cF9wZHBfbG9jayk7XFxuIFxcbitcXHQvKiBndHBfZmluZF9kZXYoKSB1c2VzIGRldl9nZXRfYnlfaW5kZXhfcmN1KCkuICovXFxuK1xcdHJjdV9yZWFkX2xvY2soKTtcXG4gXFx0cGN0eCA9IGd0cF9maW5kX3BkcChzb2NrX25ldChza2ItXFx1MDAzZXNrKSwgaW5mby1cXHUwMDNlYXR0cnMpO1xcbitcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gXFx0aWYgKElTX0VSUihwY3R4KSkge1xcbiBcXHRcXHRlcnIgPSBQVFJfRVJSKHBjdHgpO1xcbiBcXHRcXHRnb3RvIG91dF91bmxvY2s7XFxuQEAgLTIxNTMsNyArMjE2Niw3IEBAIHN0YXRpYyBpbnQgZ3RwX2dlbmxfZGVsX3BkcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbiBcXHRwZHBfY29udGV4dF9kZWxldGUocGN0eCk7XFxuIFxcbiBvdXRfdW5sb2NrOlxcbi1cXHRyY3VfcmVhZF91bmxvY2soKTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZndHBfcGRwX2xvY2spO1xcbiBcXHRyZXR1cm4gZXJyO1xcbiB9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQwMzo0MDo1NC4wMDQ5MTU3NTdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyNTE5NDk0Nzg3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJHVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJndHBfZ2VubF9uZXdfcGRwXCIsXG4gICAgXCJndHBfZ2VubF9kZWxfcGRwXCIsXG4gICAgXCJndHBfZGVsbGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbXV0ZXggdG8gcHJvdGVjdCBHVFAgUERQIGNvbnRleHQgb3BlcmF0aW9ucywgbW9kaWZ5aW5nIHRoZSBuZXRsaW5rIGhhbmRsZXJzIGZvciBjcmVhdGluZyBhbmQgZGVsZXRpbmcgUERQIGNvbnRleHRzLCBhcyB3ZWxsIGFzIHRoZSBuZXRfZGV2aWNlIGRlbGxpbmsgaGFuZGxlci4gVGhlc2UgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgaW52b2x2ZSBmdW5jdGlvbmFsIGNvbmN1cnJlbmN5IGNoYW5nZXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGM4MDhkZTMyM2ZiOGFhZTdlZDc0NjI4MGNlZjczNTNlOTk1Nzg4M2JcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAwMzo0MDo1MiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2d0cC5jIGIvZHJpdmVycy9uZXQvZ3RwLmNcbmluZGV4IDlhMTJjYzUzZGEwMDIuLmVhODNhNmI2YWExYTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ndHAuY1xuKysrIGIvZHJpdmVycy9uZXQvZ3RwLmNcbkBAIC0xMiw2ICsxMiw3IEBAXG4gI2RlZmluZSBwcl9mbXQoZm10KSBLQlVJTERfTU9ETkFNRSBcIjogXCIgZm10XG4gXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9tdXRleC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2tidWZmLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC91ZHAuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3JjdWxpc3QuaFx1MDAzZVxuQEAgLTEwOCw2ICsxMDksNyBAQCBzdHJ1Y3QgZ3RwX25ldCB7XG4gfTtcbiBcbiBzdGF0aWMgdTMyIGd0cF9oX2luaXR2YWw7XG4rc3RhdGljIERFRklORV9NVVRFWChndHBfcGRwX2xvY2spO1xuIFxuIHN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgZ3RwX2dlbmxfZmFtaWx5O1xuIFxuQEAgLTE1MSw3ICsxNTMsOCBAQCBzdGF0aWMgc3RydWN0IHBkcF9jdHggKmd0cDBfcGRwX2ZpbmQoc3RydWN0IGd0cF9kZXYgKmd0cCwgdTY0IHRpZCwgdTE2IGZhbWlseSlcbiBcbiBcdGhlYWQgPSBcdTAwMjZndHAtXHUwMDNldGlkX2hhc2hbZ3RwMF9oYXNoZm4odGlkKSAlIGd0cC1cdTAwM2VoYXNoX3NpemVdO1xuIFxuLVx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfdGlkKSB7XG4rXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF90aWQsXG4rXHRcdFx0XHQgbG9ja2RlcF9pc19oZWxkKFx1MDAyNmd0cF9wZHBfbG9jaykpIHtcbiBcdFx0aWYgKHBkcC1cdTAwM2VhZiA9PSBmYW1pbHkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBwZHAtXHUwMDNlZ3RwX3ZlcnNpb24gPT0gR1RQX1YwIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgcGRwLVx1MDAzZXUudjAudGlkID09IHRpZClcbkBAIC0xNjgsNyArMTcxLDggQEAgc3RhdGljIHN0cnVjdCBwZHBfY3R4ICpndHAxX3BkcF9maW5kKHN0cnVjdCBndHBfZGV2ICpndHAsIHUzMiB0aWQsIHUxNiBmYW1pbHkpXG4gXG4gXHRoZWFkID0gXHUwMDI2Z3RwLVx1MDAzZXRpZF9oYXNoW2d0cDF1X2hhc2hmbih0aWQpICUgZ3RwLVx1MDAzZWhhc2hfc2l6ZV07XG4gXG4tXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF90aWQpIHtcbitcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwZHAsIGhlYWQsIGhsaXN0X3RpZCxcbitcdFx0XHRcdCBsb2NrZGVwX2lzX2hlbGQoXHUwMDI2Z3RwX3BkcF9sb2NrKSkge1xuIFx0XHRpZiAocGRwLVx1MDAzZWFmID09IGZhbWlseSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIHBkcC1cdTAwM2VndHBfdmVyc2lvbiA9PSBHVFBfVjEgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBwZHAtXHUwMDNldS52MS5pX3RlaSA9PSB0aWQpXG5AQCAtMTg1LDcgKzE4OSw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGRwX2N0eCAqaXB2NF9wZHBfZmluZChzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCBfX2JlMzIgbXNfYWRkcilcbiBcbiBcdGhlYWQgPSBcdTAwMjZndHAtXHUwMDNlYWRkcl9oYXNoW2lwdjRfaGFzaGZuKG1zX2FkZHIpICUgZ3RwLVx1MDAzZWhhc2hfc2l6ZV07XG4gXG4tXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF9hZGRyKSB7XG4rXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF9hZGRyLFxuK1x0XHRcdFx0IGxvY2tkZXBfaXNfaGVsZChcdTAwMjZndHBfcGRwX2xvY2spKSB7XG4gXHRcdGlmIChwZHAtXHUwMDNlYWYgPT0gQUZfSU5FVCBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIHBkcC1cdTAwM2Vtcy5hZGRyLnNfYWRkciA9PSBtc19hZGRyKVxuIFx0XHRcdHJldHVybiBwZHA7XG5AQCAtMjIwLDcgKzIyNSw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGRwX2N0eCAqaXB2Nl9wZHBfZmluZChzdHJ1Y3QgZ3RwX2RldiAqZ3RwLFxuIFxuIFx0aGVhZCA9IFx1MDAyNmd0cC1cdTAwM2VhZGRyX2hhc2hbaXB2Nl9oYXNoZm4obXNfYWRkcikgJSBndHAtXHUwMDNlaGFzaF9zaXplXTtcbiBcbi1cdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwZHAsIGhlYWQsIGhsaXN0X2FkZHIpIHtcbitcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwZHAsIGhlYWQsIGhsaXN0X2FkZHIsXG4rXHRcdFx0XHQgbG9ja2RlcF9pc19oZWxkKFx1MDAyNmd0cF9wZHBfbG9jaykpIHtcbiBcdFx0aWYgKHBkcC1cdTAwM2VhZiA9PSBBRl9JTkVUNiBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIGlwdjZfcGRwX2FkZHJfZXF1YWwoXHUwMDI2cGRwLVx1MDAzZW1zLmFkZHI2LCBtc19hZGRyKSlcbiBcdFx0XHRyZXR1cm4gcGRwO1xuQEAgLTE1NTUsOSArMTU2MSwxMSBAQCBzdGF0aWMgdm9pZCBndHBfZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxuIFx0c3RydWN0IHBkcF9jdHggKnBjdHg7XG4gXHRpbnQgaTtcbiBcbitcdG11dGV4X2xvY2soXHUwMDI2Z3RwX3BkcF9sb2NrKTtcbiBcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGd0cC1cdTAwM2VoYXNoX3NpemU7IGkrKylcbiBcdFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwY3R4LCBuZXh0LCBcdTAwMjZndHAtXHUwMDNldGlkX2hhc2hbaV0sIGhsaXN0X3RpZClcbiBcdFx0XHRwZHBfY29udGV4dF9kZWxldGUocGN0eCk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2Z3RwX3BkcF9sb2NrKTtcbiBcbiBcdGxpc3RfZGVsKFx1MDAyNmd0cC1cdTAwM2VsaXN0KTtcbiBcdHVucmVnaXN0ZXJfbmV0ZGV2aWNlX3F1ZXVlKGRldiwgaGVhZCk7XG5AQCAtMjA1Myw3ICsyMDYxLDkgQEAgc3RhdGljIGludCBndHBfZ2VubF9uZXdfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXHRcdGdvdG8gb3V0X3VubG9jaztcbiBcdH1cbiBcbitcdG11dGV4X2xvY2soXHUwMDI2Z3RwX3BkcF9sb2NrKTtcbiBcdHBjdHggPSBndHBfcGRwX2FkZChndHAsIHNrLCBpbmZvKTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZndHBfcGRwX2xvY2spO1xuIFx0aWYgKElTX0VSUihwY3R4KSkge1xuIFx0XHRlcnIgPSBQVFJfRVJSKHBjdHgpO1xuIFx0fSBlbHNlIHtcbkBAIC0yMTM0LDkgKzIxNDQsMTIgQEAgc3RhdGljIGludCBndHBfZ2VubF9kZWxfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXHRpZiAoIWluZm8tXHUwMDNlYXR0cnNbR1RQQV9WRVJTSU9OXSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRyY3VfcmVhZF9sb2NrKCk7XG4rXHRtdXRleF9sb2NrKFx1MDAyNmd0cF9wZHBfbG9jayk7XG4gXG4rXHQvKiBndHBfZmluZF9kZXYoKSB1c2VzIGRldl9nZXRfYnlfaW5kZXhfcmN1KCkuICovXG4rXHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRwY3R4ID0gZ3RwX2ZpbmRfcGRwKHNvY2tfbmV0KHNrYi1cdTAwM2VzayksIGluZm8tXHUwMDNlYXR0cnMpO1xuK1x0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXHRpZiAoSVNfRVJSKHBjdHgpKSB7XG4gXHRcdGVyciA9IFBUUl9FUlIocGN0eCk7XG4gXHRcdGdvdG8gb3V0X3VubG9jaztcbkBAIC0yMTUzLDcgKzIxNjYsNyBAQCBzdGF0aWMgaW50IGd0cF9nZW5sX2RlbF9wZHAoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiBcdHBkcF9jb250ZXh0X2RlbGV0ZShwY3R4KTtcbiBcbiBvdXRfdW5sb2NrOlxuLVx0cmN1X3JlYWRfdW5sb2NrKCk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2Z3RwX3BkcF9sb2NrKTtcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6NDA6NTQuMDA0OTE3ODc3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDg4ODMyNDEyNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEdUUCBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvZ3RwLmNgLiBJdCdzIGludHJvZHVjaW5nIGEgbmV3IG11dGV4LCBgZ3RwX3BkcF9sb2NrYCwgYW5kIHVzaW5nIGl0IHRvIHByb3RlY3QgYSBmZXcga2V5IGZ1bmN0aW9uczogYGd0cF9wZHBfYWRkYCwgYGd0cF9maW5kX3BkcGAsIGFuZCBgcGRwX2NvbnRleHRfZGVsZXRlYCwgYWxvbmcgd2l0aCByZWxhdGVkIG9wZXJhdGlvbnMuIEl0IGFsc28gc2VlbXMgdGhleSd2ZSBtb2RpZmllZCBzb21lIGBobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3VgIGNhbGxzIHRvIGluY2x1ZGUgYSBgbG9ja2RlcF9pc19oZWxkKFx1MDAyNmd0cF9wZHBfbG9jaylgIGNoZWNrLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCBpZiB0aGlzIGlzIGV2ZW4gZnV6emFibGUsIGFuZCBpZiBpdCdzIHdvcnRoIHRoZSB0aW1lIHRvIGV2ZW4gdHJ5LlxuXG5GaXJzdCBzdGVwOiB3aGVyZSBjYW4gdGhpcyBjb2RlIGJlIHJlYWNoZWQ/IEl0J3MgdGhlIEdUUCBkcml2ZXIsIHdoaWNoLCBhcyBJIHJlY2FsbCwgaGFuZGxlcyB0aGUgR1BSUyBUdW5uZWxpbmcgUHJvdG9jb2wuIFRoYXQgcmluZ3MgYSBiZWxsLi4uIEkgYmVsaWV2ZSBpdCdzIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgbmV0bGluayAoc3BlY2lmaWNhbGx5IGdlbmwsIHJpZ2h0PykuICBMZXQncyBzZWU6IGBndHBfZ2VubF9uZXdfcGRwYCwgYGd0cF9nZW5sX2RlbF9wZHBgLi4uIHllYWgsIHRob3NlIHdvdWxkIGRvIGl0LiBBbmQsIEkgdGhpbmsgYGd0cF9kZWxsaW5rYCBpcyBjYWxsZWQgd2hlbiB5b3UgZGVsZXRlIHRoZSBuZXRsaW5rIGludGVyZmFjZSwgc28gdGhhdCBtaWdodCBhbHNvIGJlIHJlbGV2YW50LlxuXG5OZXh0IEknbGwgcXVpY2tseSBjaGVjayB0aGUgS2NvbmZpZyBmb3IgR1RQIHRvIG1ha2Ugc3VyZSBpdCdzIGVuYWJsZWQgYW5kIG5vdCBoaWRkZW4gYmVoaW5kIHNvbWUgb2JzY3VyZSBjb25maWd1cmF0aW9uIG9wdGlvbi4gVGhhdCdsbCBiZSBpbXBvcnRhbnQgZm9yIG1ha2luZyBzdXJlIHdlIGNhbiBldmVuIHJlYWNoIGl0IHdpdGggZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzQzMywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjQwOjU4Ljg5MzI0Mzg1OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NzMxOTM3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgR1RQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0yNjA9Y29uZmlnIEJBUkVVRFBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMjcxLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MjcyOmNvbmZpZyBHVFBcXG5kcml2ZXJzL25ldC9LY29uZmlnLTI3My1cXHR0cmlzdGF0ZSBcXFwiR1BSUyBUdW5uZWxpbmcgUHJvdG9jb2wgZGF0YXBhdGggKEdUUC1VKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6NDA6NTguOTgwNTY3NzA3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI4MDUyNzc0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBHVFAgS2NvbmZpZyBFbnRyeSoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIlNob3cgbWUgdGhlIGZ1bGwgS2NvbmZpZyBlbnRyeSBmb3IgR1RQLlwiIEkgd2FudCB0aGUgY29tcGxldGUgcGljdHVyZSBoZXJlLCBubyBzaG9ydGN1dHMuIEknbSBub3QganVzdCBsb29raW5nIGZvciBhIHF1aWNrIHNuaXBwZXQ7IEkgbmVlZCB0aGUgZW50aXJlIGNvbnRleHQgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBkZWZhdWx0IHNldHRpbmdzIHJlbGF0ZWQgdG8gdGhlIEdUUCBwcm90b2NvbC4gSSdtIGFudGljaXBhdGluZyBwb3RlbnRpYWwgbnVhbmNlcyBhbmQgaW50ZXJkZXBlbmRlbmNpZXMgd2l0aCBvdGhlciBmZWF0dXJlcywgc28gSSBuZWVkIHRoZSBmdWxsIGRldGFpbHMgdG8gcHJvcGVybHkgYXNzZXNzIHRoZSBpbXBsaWNhdGlvbnMgb2YgYW55IGNvbmZpZ3VyYXRpb24gY2hhbmdlcy4gTGV0J3MgZ2V0IHRoZSB3aG9sZSB0aGluZyBpbiBmcm9udCBvZiBtZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA5MCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjQxOjAyLjI2MTA5ODQxOFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI3MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI3MDpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIGJhcmV1ZHAuXFxuIDI3MTpcXHRcXG4gMjcyOlxcdGNvbmZpZyBHVFBcXG4gMjczOlxcdFxcdHRyaXN0YXRlIFxcXCJHUFJTIFR1bm5lbGluZyBQcm90b2NvbCBkYXRhcGF0aCAoR1RQLVUpXFxcIlxcbiAyNzQ6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuIDI3NTpcXHRcXHRzZWxlY3QgTkVUX1VEUF9UVU5ORUxcXG4gMjc2OlxcdFxcdGhlbHBcXG4gMjc3OlxcdFxcdCAgVGhpcyBhbGxvd3Mgb25lIHRvIGNyZWF0ZSBndHAgdmlydHVhbCBpbnRlcmZhY2VzIHRoYXQgcHJvdmlkZVxcbiAyNzg6XFx0XFx0ICB0aGUgR1BSUyBUdW5uZWxpbmcgUHJvdG9jb2wgZGF0YXBhdGggKEdUUC1VKS4gVGhpcyB0dW5uZWxpbmcgcHJvdG9jb2xcXG4gMjc5OlxcdFxcdCAgaXMgdXNlZCB0byBwcmV2ZW50IHN1YnNjcmliZXJzIGZyb20gYWNjZXNzaW5nIG1vYmlsZSBjYXJyaWVyIGNvcmVcXG4gMjgwOlxcdFxcdCAgbmV0d29yayBpbmZyYXN0cnVjdHVyZS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgYSB1c2Vyc3BhY2Ugc29mdHdhcmUgdGhhdFxcbiAyODE6XFx0XFx0ICBpbXBsZW1lbnRzIHRoZSBzaWduYWxpbmcgcHJvdG9jb2wgKEdUUC1DKSB0byB1cGRhdGUgaXRzIFBEUCBjb250ZXh0XFxuIDI4MjpcXHRcXHQgIGJhc2UsIHN1Y2ggYXMgT3BlbkdHU04gXFx1MDAzY2h0dHA6Ly9naXQub3Ntb2NvbS5vcmcvb3Blbmdnc24vKS4gVGhpc1xcbiAyODM6XFx0XFx0ICB0dW5uZWxpbmcgcHJvdG9jb2wgaXMgaW1wbGVtZW50ZWQgYWNjb3JkaW5nIHRvIHRoZSBHU00gVFMgMDkuNjAgYW5kXFxuIDI4NDpcXHRcXHQgIDNHUFAgVFMgMjkuMDYwIHN0YW5kYXJkcy5cXG4gMjg1OlxcdFxcbiAyODY6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVycyBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAyODc6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBndHAuXFxuIDI4ODpcXHRcXG4gMjg5OlxcdGNvbmZpZyBQRkNQXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjQxOjAyLjI2MTI0NjQ4OFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2NzkyNzQxOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBHVFAgQ29uZmlndXJhdGlvbiBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBjb25maWcgaGVyZSBpcyBjZW50ZXJlZCBhcm91bmQgYEdUUGAgYW5kIHJlbGllcyBvbiBgSU5FVGAuIFJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSB0aGUgcGF0Y2ggaXMgdG91Y2hpbmcgYGd0cF9nZW5sX25ld19wZHBgLCBgZ3RwX2dlbmxfZGVsX3BkcGAsIGFuZCBgZ3RwX2RlbGxpbmtgLiBUaG9zZSBhcmUgdGhlIGVudHJ5IHBvaW50cyDigJMgdGhlIGZ1bmN0aW9ucyByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIGEgcG90ZW50aWFsIGF0dGFjayBzdXJmYWNlLiBGcm9tIGEgcXVpY2sgZ2xhbmNlLCB0aGUgY2hhbmdlcyBhcHBlYXIgZnVuY3Rpb25hbCwgcHJpbWFyaWx5IGZvY3VzZWQgb24gYWRkaW5nIGEgbXV0ZXggdG8gcHJvdGVjdCBQRFAgY29udGV4dCBvcGVyYXRpb25zLiBUaGF0J3MgYSBnb29kIG1vdmUsIGdlbmVyYWxseSwgYnV0IGl0IGFsc28gdGVsbHMgbWUgd2UndmUgZ290IGEgY29uY3VycmVuY3kgY29uY2VybiBhbmQgd2UgKmFic29sdXRlbHkqIG5lZWQgdG8gZnV6eiB0aGlzIGNvZGUuIFRoZSBmb2N1cyBzeW1ib2xzIGFyZSBjbGVhcmx5OiBgZ3RwX2dlbmxfbmV3X3BkcGAsIGBndHBfZ2VubF9kZWxfcGRwYCwgYW5kIGBndHBfZGVsbGlua2AuIEkgbmVlZCB0byBwdXQgdGhvc2Ugb24gbXkgbGlzdCB0byBoYW1tZXIgd2l0aCBmdXp6aW5nLiBMZXQgbWUgc2VlIGlmIEkgY2FuIGZpbmQgb3RoZXIgZnVuY3Rpb25zIG5lYXJieSB0aGF0IG1pZ2h0IGFsc28gYmVuZWZpdCBmcm9tIHNjcnV0aW55Li4uIEkgc2hvdWxkIHNlZSBpZiB0aGVyZSBhcmUgb3RoZXIgZnVuY3Rpb25zIGludm9sdmVkIHdpdGggR1RQIGNvbnRleHQgbWFuYWdlbWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDYxNywiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjQxOjA2Ljk0MDUyNTI4OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjAyNDA5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJndHBfZ2VubF9uZXdfcGRwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2d0cC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2d0cC5jPTIwMTI9c3RhdGljIGludCBndHBfdHVubmVsX25vdGlmeShzdHJ1Y3QgcGRwX2N0eCAqcGN0eCwgdTggY21kLCBnZnBfdCBhbGxvY2F0aW9uKTtcXG5kcml2ZXJzL25ldC9ndHAuYy0yMDEzLVxcbmRyaXZlcnMvbmV0L2d0cC5jOjIwMTQ6c3RhdGljIGludCBndHBfZ2VubF9uZXdfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuZHJpdmVycy9uZXQvZ3RwLmMtMjAxNS17XFxuLS1cXG5kcml2ZXJzL25ldC9ndHAuYz0yNDQ2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgZ3RwX2dlbmxfb3BzW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ndHAuYy0yNDQ5LVxcdFxcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcXG5kcml2ZXJzL25ldC9ndHAuYzoyNDUwOlxcdFxcdC5kb2l0ID0gZ3RwX2dlbmxfbmV3X3BkcCxcXG5kcml2ZXJzL25ldC9ndHAuYy0yNDUxLVxcdFxcdC5mbGFncyA9IEdFTkxfQURNSU5fUEVSTSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6NDE6MDcuMDA2NTU3OTE2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg4OTc3Mjk2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipDaGVja2luZyBgZ3RwX2RlbGxpbmtgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbi4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBgZ3RwX2RlbGxpbmtgIGlzIGJlaGF2aW5nIGFzIGV4cGVjdGVkLiBHaXZlbiBteSBleHBlcmllbmNlLCB0aGUgZmlyc3QgdGhpbmcgSSdtIGNoZWNraW5nIGlzbid0IHRoZSBjb2RlIGl0c2VsZiBidXQgdGhlICpjb250ZXh0KiBvZiBpdHMgZXhlY3V0aW9uLiBBbSBJIGRlYWxpbmcgd2l0aCBhIHNwZWNpZmljIHNjZW5hcmlvPyBBcmUgdGhlcmUgcmVjZW50IGNoYW5nZXMgdGhhdCBtaWdodCBoYXZlIHRyaWdnZXJlZCBhbiBpc3N1ZT8gV2hhdCdzIHRoZSBlbnZpcm9ubWVudCBpdCdzIHJ1bm5pbmcgaW4/IFRoaXMga2luZCBvZiBpbml0aWFsIGFzc2Vzc21lbnQgc2F2ZXMgbWUgYSBsb3Qgb2YgdGltZSBpbiB0aGUgbG9uZyBydW4uIE5vdywgaXMgYGd0cF9kZWxsaW5rYCBmYWlsaW5nPyBQcm9kdWNpbmcgdW5leHBlY3RlZCByZXN1bHRzPyBPciBpcyB0aGVyZSBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgZGVsaW5raW5nIHByb2Nlc3MgdGhhdCBJIGhhdmUgbWlzc2VkP1xuXG5NeSBuZXh0IHRob3VnaHQgcHJvY2VzcyB3b3VsZCBkZXBlbmQgb24gdGhlIG5hdHVyZSBvZiB0aGUgaXNzdWUsIGJ1dCBJJ2QgbGlrZWx5IGZvbGxvdyB0aGVzZSBzdGVwczogSSdsbCBzdGFydCBieSBjaGVja2luZyB0aGUgbG9ncywgbG9va2luZyBmb3IgYW55IHNwZWNpZmljIGVycm9yIG1lc3NhZ2VzIG9yIHVudXN1YWwgcGF0dGVybnMuIFRoZW4sIEknZCByZXZpZXcgdGhlIGlucHV0IGRhdGEgdG8gY29uZmlybSBpdCdzIGluIHRoZSBleHBlY3RlZCBmb3JtYXQuIEkgbWlnaHQgaW5zdHJ1bWVudCB0aGUgZnVuY3Rpb24gd2l0aCBzb21lIGFkZGl0aW9uYWwgbG9nZ2luZyB0byBwaW5wb2ludCB3aGVyZSB0aGUgcHJvYmxlbSBvcmlnaW5hdGVzLiBJcyBpdCBhIGRhdGEgdmFsaWRhdGlvbiBwcm9ibGVtLCBhIGJ1ZyBpbiB0aGUgbGlua2luZyBhbGdvcml0aG0sIG9yIGEgcHJvYmxlbSB3aXRoIHRoZSBpbmZyYXN0cnVjdHVyZT9cblxuSWYgdGhvc2UgY2hlY2tzIGRvbid0IGltbWVkaWF0ZWx5IHJldmVhbCB0aGUgY3VscHJpdCwgSSdsbCBzdGFydCBjb25zaWRlcmluZyB0aGUgZGVwZW5kZW5jaWVzIG9mIGBndHBfZGVsbGlua2AuIEFyZSB0aGVyZSBleHRlcm5hbCBBUElzIGl0IHJlbGllcyBvbj8gRGF0YWJhc2VzPyBIYXMgYW55dGhpbmcgY2hhbmdlZCB0aGVyZSByZWNlbnRseT8gVmVyc2lvbiBtaXNtYXRjaGVzIGFyZSBhbHdheXMgYSBwb3NzaWJpbGl0eS4gUGVyaGFwcyB0aGVyZSdzIGFuIGlzc3VlIHdpdGggcmVzb3VyY2UgYWxsb2NhdGlvbiwgdGhyZWFkIGNvbnRlbnRpb24sIG9yIGEgc3VidGxlIHJhY2UgY29uZGl0aW9uLiBUaW1lIHRvIGRlYnVnIGFuZCB0ZXN0LiBBbmQgbGFzdGx5LCBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gd3JpdGUgdXAgc29tZSBkb2N1bWVudGF0aW9uIGFib3V0IG15IGZpbmRpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1Mjg5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6NDE6MTAuODk2MzMzNTk5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzE3MjUyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJndHBfZGVsbGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ndHAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ndHAuYz0xNDc1PXN0YXRpYyBpbnQgZ3RwX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2d0cC5jLTE1NTYtXFxuZHJpdmVycy9uZXQvZ3RwLmM6MTU1NzpzdGF0aWMgdm9pZCBndHBfZGVsbGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbGlzdF9oZWFkICpoZWFkKVxcbmRyaXZlcnMvbmV0L2d0cC5jLTE1NTgte1xcbi0tXFxuZHJpdmVycy9uZXQvZ3RwLmM9MTYxOD1zdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgZ3RwX2xpbmtfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ndHAuYy0xNjI1LVxcdC5uZXdsaW5rXFx0PSBndHBfbmV3bGluayxcXG5kcml2ZXJzL25ldC9ndHAuYzoxNjI2OlxcdC5kZWxsaW5rXFx0PSBndHBfZGVsbGluayxcXG5kcml2ZXJzL25ldC9ndHAuYy0xNjI3LVxcdC5nZXRfc2l6ZVxcdD0gZ3RwX2dldF9zaXplLFxcbi0tXFxuZHJpdmVycy9uZXQvZ3RwLmM9MjQ5Nz1zdGF0aWMgdm9pZCBfX25ldF9leGl0IGd0cF9uZXRfZXhpdF9ydG5sKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2d0cC5jLTI1MDMtXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGd0cCwgZ3RwX25leHQsIFxcdTAwMjZnbi1cXHUwMDNlZ3RwX2Rldl9saXN0LCBsaXN0KVxcbmRyaXZlcnMvbmV0L2d0cC5jOjI1MDQ6XFx0XFx0Z3RwX2RlbGxpbmsoZ3RwLVxcdTAwM2VkZXYsIGRldl90b19raWxsKTtcXG5kcml2ZXJzL25ldC9ndHAuYy0yNTA1LX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6NDE6MTAuOTc5NTEwOTI2WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgwODc0Mjg4NTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgR1RQIFBEUCBDb250ZXh0IFByb3RlY3Rpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZGluZyBhIG11dGV4LCBgZ3RwX3BkcF9sb2NrYCwgdG8gc2FmZWd1YXJkIG9wZXJhdGlvbnMgb24gUERQIGNvbnRleHRzIHdpdGhpbiB0aGUgR1RQIGltcGxlbWVudGF0aW9uLiBUaGlzIGlzIGEgc29saWQgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCdzIHVzZXItc3BhY2UgcmVhY2hhYmxlIHZpYSBuZXRsaW5rLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBpdCBhcyBzb21ldGhpbmcgdG8gcGF5IGF0dGVudGlvbiB0by4gVGhlIHJlbGV2YW50IGNvbmZpZyBpcyBgR1RQYCwgd2hpY2ggbWFrZXMgc2Vuc2UuXG5cbkJlZm9yZSBJIGdvIGZ1cnRoZXIsIGxldCBtZSBkb3VibGUtY2hlY2sgc29tZXRoaW5nIHRoYXQncyBhbHdheXMgZ29vZCBwcmFjdGljZTogSSBuZWVkIHRvIGVuc3VyZSBgSU5FVGAgaXNuJ3QgaW5hZHZlcnRlbnRseSBkaXNhYmxlZC4gVGhvdWdoIGBJTkVUYCBpcyB1c3VhbGx5IGVuYWJsZWQgYnkgZGVmYXVsdCwgaXQncyBhbHdheXMgYSBnb29kIGhhYml0IHRvIHZlcmlmeSB0aGF0IGl0IHJlbWFpbnMgZW5hYmxlZC4gQWxyaWdodCwgYEdUUGAgYWxvbmUgaXMgc3VmZmljaWVudDsgYElORVRgIGlzIGEgYmFzZSBjb25maWcsIHNvIHdlJ3JlIGdvb2QgdGhlcmUuXG5cbk5vdywgbGV0J3MgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gdG91Y2hlZC4gSXQgbG9va3MgbGlrZSBgZ3RwMF9wZHBfZmluZGAsIGBndHAxX3BkcF9maW5kYCwgYGlwdjRfcGRwX2ZpbmRgLCBhbmQgYGlwdjZfcGRwX2ZpbmRgIGFyZSBiZWluZyBtb2RpZmllZCB0byBpbmNsdWRlIGBsb2NrZGVwX2lzX2hlbGQoXHUwMDI2Z3RwX3BkcF9sb2NrKWAuIFRoZXNlIGFyZSBzdGF0aWMgZnVuY3Rpb25zLCBzbyBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCB0aGV5IG1pZ2h0IGJlIGlubGluZWQsIGltcGFjdGluZyBob3cgdGhlIGxvY2sgaXMgcGVyY2VpdmVkLiBUaGUgbWFpbiBlbnRyeSBwb2ludHMsIHRob3VnaCwgYXBwZWFyIHRvIGJlIGBndHBfZGVsbGlua2AsIGBndHBfZ2VubF9uZXdfcGRwYCwgYW5kIGBndHBfZ2VubF9kZWxfcGRwYC5cblxuR2l2ZW4gYWxsIHRoaXMsIGhlcmUncyB3aGF0IEknbGwgZG86IEknbSBnb2luZyB0byBmbGFnIHRoaXMgYXMgXCJXb3J0aEZ1enppbmdcIiBiZWNhdXNlIG9mIHRoZSB1c2VyLXNwYWNlIGludGVyYWN0aW9uIGFuZCB0aGUgY29uY3VycmVuY3ktcmVsYXRlZCBtb2RpZmljYXRpb25zLiBNeSBcIkZvY3VzU3ltYm9sc1wiIHdpbGwgZGVmaW5pdGVseSBpbmNsdWRlIGBndHBfZ2VubF9uZXdfcGRwYCwgYGd0cF9nZW5sX2RlbF9wZHBgLCBhbmQgYGd0cF9kZWxsaW5rYC4gQW5kIG15IFwiRW5hYmxlQ29uZmlnc1wiIHdpbGwgYmUgYEdUUGAuIFRoZSBcIlJlYXNvbmluZ1wiIHdpbGwgYmU6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbXV0ZXggdG8gcHJvdGVjdCBHVFAgUERQIGNvbnRleHQgb3BlcmF0aW9ucywgbW9kaWZ5aW5nIHRoZSBuZXRsaW5rIGhhbmRsZXJzIGZvciBjcmVhdGluZyBhbmQgZGVsZXRpbmcgUERQIGNvbnRleHRzLCBhcyB3ZWxsIGFzIHRoZSBuZXRfZGV2aWNlIGRlbGxpbmsgaGFuZGxlci4gVGhlc2UgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSBhbmQgaW52b2x2ZSBmdW5jdGlvbmFsIGNvbmN1cnJlbmN5IGNoYW5nZXMuXCIgVGhhdCBzaG91bGQgY292ZXIgbXkgYmFzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwNTksIk91dHB1dFRva2VucyI6MTE2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjQxOjE5LjA2Njk0MzU3M1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMjkxMjc2NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiR1RQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZ3RwX2dlbmxfbmV3X3BkcFwiLFxuICAgIFwiZ3RwX2dlbmxfZGVsX3BkcFwiLFxuICAgIFwiZ3RwX2RlbGxpbmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IG11dGV4IHRvIHByb3RlY3QgR1RQIFBEUCBjb250ZXh0IG9wZXJhdGlvbnMsIG1vZGlmeWluZyB0aGUgbmV0bGluayBoYW5kbGVycyBmb3IgY3JlYXRpbmcgYW5kIGRlbGV0aW5nIFBEUCBjb250ZXh0cywgYXMgd2VsbCBhcyB0aGUgbmV0X2RldmljZSBkZWxsaW5rIGhhbmRsZXIuIFRoZXNlIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgYW5kIGludm9sdmUgZnVuY3Rpb25hbCBjb25jdXJyZW5jeSBjaGFuZ2VzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkdUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImd0cF9nZW5sX25ld19wZHBcIixcbiAgICBcImd0cF9nZW5sX2RlbF9wZHBcIixcbiAgICBcImd0cF9kZWxsaW5rXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBtdXRleCB0byBwcm90ZWN0IEdUUCBQRFAgY29udGV4dCBvcGVyYXRpb25zLCBtb2RpZnlpbmcgdGhlIG5ldGxpbmsgaGFuZGxlcnMgZm9yIGNyZWF0aW5nIGFuZCBkZWxldGluZyBQRFAgY29udGV4dHMsIGFzIHdlbGwgYXMgdGhlIG5ldF9kZXZpY2UgZGVsbGluayBoYW5kbGVyLiBUaGVzZSBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIGFuZCBpbnZvbHZlIGZ1bmN0aW9uYWwgY29uY3VycmVuY3kgY2hhbmdlcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6NDE6MTkuMTk5ODY4MDI5WiIsIlNlcSI6MTMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NzE3MDYyODA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMDM6NDE6MTkuMjAwNDQyMzY5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjg3MTY0ODE5ODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbXV0ZXggKGBndHBfcGRwX2xvY2tgKSB0byBwcm90ZWN0IHRoZSBQRFAgY29udGV4dCBsaXN0cyBpbiB0aGUgR1RQIGRyaXZlci4gSXQgYWRkcyBsb2NraW5nIGFyb3VuZCBQRFAgY29udGV4dCBhZGRpdGlvbiwgZGVsZXRpb24sIGFuZCBsb29rdXAsIGFuZCB1cGRhdGVzIHRoZSBSQ1UgbGlzdCB0cmF2ZXJzYWwgbWFjcm9zIHRvIGluY2x1ZGUgYGxvY2tkZXBfaXNfaGVsZChcXHUwMDI2Z3RwX3BkcF9sb2NrKWAuIFRoZXNlIGNoYW5nZXMgYXJlIGFpbWVkIGF0IGZpeGluZyBjb25jdXJyZW5jeSBpc3N1ZXMsIHN1Y2ggYXMgcmFjZSBjb25kaXRpb25zLCBsaXN0IGNvcnJ1cHRpb25zLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzLiBTdWNoIGlzc3VlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgc3RhbmRhcmQgdG9vbHMgbGlrZSBLQVNBTiwgS0NTQU4sIGFuZCBMT0NLREVQLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtb2RpZnkgbWVtb3J5IGluaXRpYWxpemF0aW9uLCBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjODA4ZGUzMjNmYjhhYWU3ZWQ3NDYyODBjZWY3MzUzZTk5NTc4ODNiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMTQgMDM6NDA6NTIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ndHAuYyBiL2RyaXZlcnMvbmV0L2d0cC5jXG5pbmRleCA5YTEyY2M1M2RhMDAyLi5lYTgzYTZiNmFhMWE3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZ3RwLmNcbisrKyBiL2RyaXZlcnMvbmV0L2d0cC5jXG5AQCAtMTIsNiArMTIsNyBAQFxuICNkZWZpbmUgcHJfZm10KGZtdCkgS0JVSUxEX01PRE5BTUUgXCI6IFwiIGZtdFxuIFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbXV0ZXguaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NrYnVmZi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvdWRwLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yY3VsaXN0LmhcdTAwM2VcbkBAIC0xMDgsNiArMTA5LDcgQEAgc3RydWN0IGd0cF9uZXQge1xuIH07XG4gXG4gc3RhdGljIHUzMiBndHBfaF9pbml0dmFsO1xuK3N0YXRpYyBERUZJTkVfTVVURVgoZ3RwX3BkcF9sb2NrKTtcbiBcbiBzdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5IGd0cF9nZW5sX2ZhbWlseTtcbiBcbkBAIC0xNTEsNyArMTUzLDggQEAgc3RhdGljIHN0cnVjdCBwZHBfY3R4ICpndHAwX3BkcF9maW5kKHN0cnVjdCBndHBfZGV2ICpndHAsIHU2NCB0aWQsIHUxNiBmYW1pbHkpXG4gXG4gXHRoZWFkID0gXHUwMDI2Z3RwLVx1MDAzZXRpZF9oYXNoW2d0cDBfaGFzaGZuKHRpZCkgJSBndHAtXHUwMDNlaGFzaF9zaXplXTtcbiBcbi1cdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdShwZHAsIGhlYWQsIGhsaXN0X3RpZCkge1xuK1x0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfdGlkLFxuK1x0XHRcdFx0IGxvY2tkZXBfaXNfaGVsZChcdTAwMjZndHBfcGRwX2xvY2spKSB7XG4gXHRcdGlmIChwZHAtXHUwMDNlYWYgPT0gZmFtaWx5IFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgcGRwLVx1MDAzZWd0cF92ZXJzaW9uID09IEdUUF9WMCBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgIHBkcC1cdTAwM2V1LnYwLnRpZCA9PSB0aWQpXG5AQCAtMTY4LDcgKzE3MSw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGRwX2N0eCAqZ3RwMV9wZHBfZmluZChzdHJ1Y3QgZ3RwX2RldiAqZ3RwLCB1MzIgdGlkLCB1MTYgZmFtaWx5KVxuIFxuIFx0aGVhZCA9IFx1MDAyNmd0cC1cdTAwM2V0aWRfaGFzaFtndHAxdV9oYXNoZm4odGlkKSAlIGd0cC1cdTAwM2VoYXNoX3NpemVdO1xuIFxuLVx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfdGlkKSB7XG4rXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF90aWQsXG4rXHRcdFx0XHQgbG9ja2RlcF9pc19oZWxkKFx1MDAyNmd0cF9wZHBfbG9jaykpIHtcbiBcdFx0aWYgKHBkcC1cdTAwM2VhZiA9PSBmYW1pbHkgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBwZHAtXHUwMDNlZ3RwX3ZlcnNpb24gPT0gR1RQX1YxIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgcGRwLVx1MDAzZXUudjEuaV90ZWkgPT0gdGlkKVxuQEAgLTE4NSw3ICsxODksOCBAQCBzdGF0aWMgc3RydWN0IHBkcF9jdHggKmlwdjRfcGRwX2ZpbmQoc3RydWN0IGd0cF9kZXYgKmd0cCwgX19iZTMyIG1zX2FkZHIpXG4gXG4gXHRoZWFkID0gXHUwMDI2Z3RwLVx1MDAzZWFkZHJfaGFzaFtpcHY0X2hhc2hmbihtc19hZGRyKSAlIGd0cC1cdTAwM2VoYXNoX3NpemVdO1xuIFxuLVx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfYWRkcikge1xuK1x0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHBkcCwgaGVhZCwgaGxpc3RfYWRkcixcbitcdFx0XHRcdCBsb2NrZGVwX2lzX2hlbGQoXHUwMDI2Z3RwX3BkcF9sb2NrKSkge1xuIFx0XHRpZiAocGRwLVx1MDAzZWFmID09IEFGX0lORVQgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBwZHAtXHUwMDNlbXMuYWRkci5zX2FkZHIgPT0gbXNfYWRkcilcbiBcdFx0XHRyZXR1cm4gcGRwO1xuQEAgLTIyMCw3ICsyMjUsOCBAQCBzdGF0aWMgc3RydWN0IHBkcF9jdHggKmlwdjZfcGRwX2ZpbmQoc3RydWN0IGd0cF9kZXYgKmd0cCxcbiBcbiBcdGhlYWQgPSBcdTAwMjZndHAtXHUwMDNlYWRkcl9oYXNoW2lwdjZfaGFzaGZuKG1zX2FkZHIpICUgZ3RwLVx1MDAzZWhhc2hfc2l6ZV07XG4gXG4tXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF9hZGRyKSB7XG4rXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocGRwLCBoZWFkLCBobGlzdF9hZGRyLFxuK1x0XHRcdFx0IGxvY2tkZXBfaXNfaGVsZChcdTAwMjZndHBfcGRwX2xvY2spKSB7XG4gXHRcdGlmIChwZHAtXHUwMDNlYWYgPT0gQUZfSU5FVDYgXHUwMDI2XHUwMDI2XG4gXHRcdCAgICBpcHY2X3BkcF9hZGRyX2VxdWFsKFx1MDAyNnBkcC1cdTAwM2Vtcy5hZGRyNiwgbXNfYWRkcikpXG4gXHRcdFx0cmV0dXJuIHBkcDtcbkBAIC0xNTU1LDkgKzE1NjEsMTEgQEAgc3RhdGljIHZvaWQgZ3RwX2RlbGxpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGxpc3RfaGVhZCAqaGVhZClcbiBcdHN0cnVjdCBwZHBfY3R4ICpwY3R4O1xuIFx0aW50IGk7XG4gXG4rXHRtdXRleF9sb2NrKFx1MDAyNmd0cF9wZHBfbG9jayk7XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBndHAtXHUwMDNlaGFzaF9zaXplOyBpKyspXG4gXHRcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocGN0eCwgbmV4dCwgXHUwMDI2Z3RwLVx1MDAzZXRpZF9oYXNoW2ldLCBobGlzdF90aWQpXG4gXHRcdFx0cGRwX2NvbnRleHRfZGVsZXRlKHBjdHgpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmd0cF9wZHBfbG9jayk7XG4gXG4gXHRsaXN0X2RlbChcdTAwMjZndHAtXHUwMDNlbGlzdCk7XG4gXHR1bnJlZ2lzdGVyX25ldGRldmljZV9xdWV1ZShkZXYsIGhlYWQpO1xuQEAgLTIwNTMsNyArMjA2MSw5IEBAIHN0YXRpYyBpbnQgZ3RwX2dlbmxfbmV3X3BkcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXHR9XG4gXG4rXHRtdXRleF9sb2NrKFx1MDAyNmd0cF9wZHBfbG9jayk7XG4gXHRwY3R4ID0gZ3RwX3BkcF9hZGQoZ3RwLCBzaywgaW5mbyk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2Z3RwX3BkcF9sb2NrKTtcbiBcdGlmIChJU19FUlIocGN0eCkpIHtcbiBcdFx0ZXJyID0gUFRSX0VSUihwY3R4KTtcbiBcdH0gZWxzZSB7XG5AQCAtMjEzNCw5ICsyMTQ0LDEyIEBAIHN0YXRpYyBpbnQgZ3RwX2dlbmxfZGVsX3BkcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIFx0aWYgKCFpbmZvLVx1MDAzZWF0dHJzW0dUUEFfVkVSU0lPTl0pXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuLVx0cmN1X3JlYWRfbG9jaygpO1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZndHBfcGRwX2xvY2spO1xuIFxuK1x0LyogZ3RwX2ZpbmRfZGV2KCkgdXNlcyBkZXZfZ2V0X2J5X2luZGV4X3JjdSgpLiAqL1xuK1x0cmN1X3JlYWRfbG9jaygpO1xuIFx0cGN0eCA9IGd0cF9maW5kX3BkcChzb2NrX25ldChza2ItXHUwMDNlc2spLCBpbmZvLVx1MDAzZWF0dHJzKTtcbitcdHJjdV9yZWFkX3VubG9jaygpO1xuIFx0aWYgKElTX0VSUihwY3R4KSkge1xuIFx0XHRlcnIgPSBQVFJfRVJSKHBjdHgpO1xuIFx0XHRnb3RvIG91dF91bmxvY2s7XG5AQCAtMjE1Myw3ICsyMTY2LDcgQEAgc3RhdGljIGludCBndHBfZ2VubF9kZWxfcGRwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXHRwZHBfY29udGV4dF9kZWxldGUocGN0eCk7XG4gXG4gb3V0X3VubG9jazpcbi1cdHJjdV9yZWFkX3VubG9jaygpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNmd0cF9wZHBfbG9jayk7XG4gXHRyZXR1cm4gZXJyO1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjQxOjE5LjIwMDQ0NDM2OVoiLCJTZXEiOjE1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NzE2NDI3MTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEdUUCBQRFAgQ29udGV4dCBMb2NraW5nIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBzdHJhaWdodGZvcndhcmQuIEl0J3MgYWxsIGFib3V0IGNvbmN1cnJlbmN5IGFuZCBsb2NraW5nIHdpdGhpbiB0aGUgR1RQIGRyaXZlciwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgdGhlIFBEUCBjb250ZXh0IGxpc3RzIGluIGBkcml2ZXJzL25ldC9ndHAuY2AuIFRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhlIGBndHBfcGRwX2xvY2tgIG11dGV4IGlzIHRoZSBrZXkgaGVyZS4gVGhlIHByaW1hcnkgZnVuY3Rpb24gb2YgdGhpcyBtdXRleCBpcyB0byBwcm90ZWN0IHRoZSBzaGFyZWQgZGF0YSBzdHJ1Y3R1cmVzIGZyb20gcmFjZSBjb25kaXRpb25zLiBUaGUgcmVsZXZhbnQgZnVuY3Rpb25zLCBsaWtlIGBndHAwX3BkcF9maW5kYCwgYGd0cDFfcGRwX2ZpbmRgLCBgaXB2NF9wZHBfZmluZGAsIGFuZCBgaXB2Nl9wZHBfZmluZGAsIG5vdyBwYXNzIGBsb2NrZGVwX2lzX2hlbGQoXHUwMDI2Z3RwX3BkcF9sb2NrKWAgdG8gYGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdWAuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgdmVyaWZ5aW5nIHRoYXQgdGhlIGV4cGVjdGVkIGxvY2sgaXMgaGVsZCBiZWZvcmUgdGhlIFJDVSB0cmF2ZXJzYWwsIHByZXZlbnRpbmcgcG90ZW50aWFsIGlzc3Vlcy5cblxuSSBzZWUgdGhleSd2ZSBhZGRlZCBtdXRleCBsb2NraW5nIGFuZCB1bmxvY2tpbmcgYXJvdW5kIHRoZSBjcml0aWNhbCBzZWN0aW9ucyB3aXRoaW4gYGd0cF9kZWxsaW5rYCwgYGd0cF9nZW5sX25ld19wZHBgLCBhbmQgYGd0cF9nZW5sX2RlbF9wZHBgLiBUaGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IGBndHBfZGVsbGlua2AgbmVlZHMgdG8gbG9jayB3aGlsZSBkZWxldGluZyBjb250ZXh0cywgYGd0cF9nZW5sX25ld19wZHBgIG5lZWRzIHRoZSBsb2NrIHdoZW4gYWRkaW5nIG5ldyBvbmVzLCBhbmQgYGd0cF9nZW5sX2RlbF9wZHBgIG5lZWRzIGl0IHRvIHByb3RlY3QgdGhlIGZpbmQgYW5kIGRlbGV0ZSBvcGVyYXRpb25zLiBJdCdzIGEgY2xlYW4sIHN0YW5kYXJkIHBhdHRlcm4gZm9yIGVuc3VyaW5nIGRhdGEgaW50ZWdyaXR5IGR1cmluZyBjb25jdXJyZW50IGFjY2Vzcy5cblxuVGhlcmUncyBub3RoaW5nIGhlcmUgdGhhdCBsb29rcyBsaWtlIGl0J3MgaW50cm9kdWNpbmcgbmV3IHN0cnVjdHVyZXMgZXhwb3NlZCB0byB1c2VyIHNwYWNlLCBub3IgaXMgYW55IGluaXRpYWxpemF0aW9uIGxvZ2ljIG1vZGlmaWVkIGluIGEgd2F5IHRoYXQgY291bGQgbGVhZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeSBleHBvc3VyZS4gVGhpcyBwYXRjaCBpcyBwdXJlbHkgZm9jdXNlZCBvbiBsb2NraW5nLiBGcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZSwgaXQgYWRkcmVzc2VzIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMsIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvcywgb3IgbGlzdCBjb3JydXB0aW9uLCB3aGljaCBhcmUgdGhlIHNvcnRzIG9mIGlzc3VlcyB0aGF0IEtBU0FOL0xPQ0tERVAgYXJlIGRlc2lnbmVkIHRvIGNhdGNoLiBLTVNBTiwgd2hpY2ggZm9jdXNlcyBvbiB1bmluaXRpYWxpemVkIG1lbW9yeSwgaXNuJ3QgcmVsZXZhbnQgaW4gdGhpcyBjb250ZXh0LlxuXG5HaXZlbiB0aGF0LCBJJ20gY29uZmlkZW50IGluIHNldHRpbmcgYE5lZWRzS01TQU5gIHRvIGBmYWxzZWAgaGVyZS4gVGhpcyBjaGFuZ2UgaXMgZW50aXJlbHkgcmVsYXRlZCB0byBjb25jdXJyZW5jeSBjb250cm9sIGFuZCBkYXRhIGludGVncml0eSwgbm90IHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHByb2JsZW1zLiBJdCdzIGEgc3RhbmRhcmQgbG9ja2luZyBmaXgsIGFuZCB0aGUgZXhpc3Rpbmcga2VybmVsIHRvb2xzIGZvciBkZXRlY3RpbmcgY29uY3VycmVuY3kgaXNzdWVzIHdpbGwgYmUgdGhlIG1vc3QgYXBwcm9wcmlhdGUgdG9vbHMgZm9yIGZpbmRpbmcgYW55IHJlZ3Jlc3Npb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDMwLCJPdXRwdXRUb2tlbnMiOjE3NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDAzOjQxOjI3LjkxNjg3NjMzN1oiLCJTZXEiOjE2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBtdXRleCAoYGd0cF9wZHBfbG9ja2ApIHRvIHByb3RlY3QgdGhlIFBEUCBjb250ZXh0IGxpc3RzIGluIHRoZSBHVFAgZHJpdmVyLiBJdCBhZGRzIGxvY2tpbmcgYXJvdW5kIFBEUCBjb250ZXh0IGFkZGl0aW9uLCBkZWxldGlvbiwgYW5kIGxvb2t1cCwgYW5kIHVwZGF0ZXMgdGhlIFJDVSBsaXN0IHRyYXZlcnNhbCBtYWNyb3MgdG8gaW5jbHVkZSBgbG9ja2RlcF9pc19oZWxkKFxcdTAwMjZndHBfcGRwX2xvY2spYC4gVGhlc2UgY2hhbmdlcyBhcmUgYWltZWQgYXQgZml4aW5nIGNvbmN1cnJlbmN5IGlzc3Vlcywgc3VjaCBhcyByYWNlIGNvbmRpdGlvbnMsIGxpc3QgY29ycnVwdGlvbnMsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MuIFN1Y2ggaXNzdWVzIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBzdGFuZGFyZCB0b29scyBsaWtlIEtBU0FOLCBLQ1NBTiwgYW5kIExPQ0tERVAuIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1vZGlmeSBtZW1vcnkgaW5pdGlhbGl6YXRpb24sIG9yIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIGNvbnRyb2wgZmxvdy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgbXV0ZXggKGBndHBfcGRwX2xvY2tgKSB0byBwcm90ZWN0IHRoZSBQRFAgY29udGV4dCBsaXN0cyBpbiB0aGUgR1RQIGRyaXZlci4gSXQgYWRkcyBsb2NraW5nIGFyb3VuZCBQRFAgY29udGV4dCBhZGRpdGlvbiwgZGVsZXRpb24sIGFuZCBsb29rdXAsIGFuZCB1cGRhdGVzIHRoZSBSQ1UgbGlzdCB0cmF2ZXJzYWwgbWFjcm9zIHRvIGluY2x1ZGUgYGxvY2tkZXBfaXNfaGVsZChcXHUwMDI2Z3RwX3BkcF9sb2NrKWAuIFRoZXNlIGNoYW5nZXMgYXJlIGFpbWVkIGF0IGZpeGluZyBjb25jdXJyZW5jeSBpc3N1ZXMsIHN1Y2ggYXMgcmFjZSBjb25kaXRpb25zLCBsaXN0IGNvcnJ1cHRpb25zLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzLiBTdWNoIGlzc3VlcyBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgc3RhbmRhcmQgdG9vbHMgbGlrZSBLQVNBTiwgS0NTQU4sIGFuZCBMT0NLREVQLiBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtb2RpZnkgbWVtb3J5IGluaXRpYWxpemF0aW9uLCBvciBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciBjb250cm9sIGZsb3cuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowgrbnf[1] Phase: Succeeded StartedAt: 2026-08-14 03:41:39 +0000 UTC FinishedAt: 2026-08-14 03:41:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrbnf[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-14 03:41:39 +0000 UTC FinishedAt: 2026-08-14 03:41:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrbnf[2] Phase: Succeeded StartedAt: 2026-08-14 03:41:39 +0000 UTC FinishedAt: 2026-08-14 07:22:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-14 03:41:39 +0000 UTC FinishedAt: 2026-08-14 07:22:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-14 03:41:39 +0000 UTC FinishedAt: 2026-08-14 03:41:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-14 03:41:39 +0000 UTC FinishedAt: 2026-08-14 03:41:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowgrbnf/series-workflowgrbnf-convert-artifact-2752292793/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-14 03:41:49 +0000 UTC FinishedAt: 2026-08-14 03:58:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-14 03:41:49 +0000 UTC FinishedAt: 2026-08-14 03:58:19 +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:*6e238b0f-c3fd-4c03-89f4-b2277934b2a5,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-workflowgrbnf/series-workflowgrbnf-convert-artifact-2752292793/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": "18dcafb1-75fc-46dd-a872-1b4c08704398", "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-workflowgrbnf/series-workflowgrbnf-build-action-38868183/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-14 03:41:49 +0000 UTC FinishedAt: 2026-08-14 03:58:09 +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:*6e238b0f-c3fd-4c03-89f4-b2277934b2a5,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-workflowgrbnf/series-workflowgrbnf-convert-artifact-2752292793/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": "18dcafb1-75fc-46dd-a872-1b4c08704398", "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-workflowgrbnf/series-workflowgrbnf-build-action-38868183/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-14 03:58:19 +0000 UTC FinishedAt: 2026-08-14 03:58:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-14 03:58:19 +0000 UTC FinishedAt: 2026-08-14 03:58:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-14 03:58:19 +0000 UTC FinishedAt: 2026-08-14 03:58:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-14 03:58:19 +0000 UTC FinishedAt: 2026-08-14 03:58:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowgrbnf/series-workflowgrbnf-convert-artifact-2071588236/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-14 03:58:29 +0000 UTC FinishedAt: 2026-08-14 04:00:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-14 03:58:29 +0000 UTC FinishedAt: 2026-08-14 04:00:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*18dcafb1-75fc-46dd-a872-1b4c08704398,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-workflowgrbnf/series-workflowgrbnf-build-action-38868183/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-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-14 04:00:33 +0000 UTC FinishedAt: 2026-08-14 04:00:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-14 04:00:33 +0000 UTC FinishedAt: 2026-08-14 04:00:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-14 04:00:33 +0000 UTC FinishedAt: 2026-08-14 04:17:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-14 04:00:33 +0000 UTC FinishedAt: 2026-08-14 04:17:05 +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:*6e238b0f-c3fd-4c03-89f4-b2277934b2a5,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-workflowgrbnf/series-workflowgrbnf-convert-artifact-2071588236/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": "0926be66-4847-46f0-bb6f-5a156d5c33d6", "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-workflowgrbnf/series-workflowgrbnf-build-action-3513012648/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-14 04:00:33 +0000 UTC FinishedAt: 2026-08-14 04:16:55 +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:*6e238b0f-c3fd-4c03-89f4-b2277934b2a5,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-workflowgrbnf/series-workflowgrbnf-convert-artifact-2071588236/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": "0926be66-4847-46f0-bb6f-5a156d5c33d6", "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-workflowgrbnf/series-workflowgrbnf-build-action-3513012648/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-14 04:17:05 +0000 UTC FinishedAt: 2026-08-14 04:17:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-14 04:17:05 +0000 UTC FinishedAt: 2026-08-14 04:17:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-14 04:17:05 +0000 UTC FinishedAt: 2026-08-14 04:19:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-14 04:17:05 +0000 UTC FinishedAt: 2026-08-14 04:18:59 +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:*0926be66-4847-46f0-bb6f-5a156d5c33d6,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-workflowgrbnf/series-workflowgrbnf-build-action-3513012648/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-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-14 04:19:09 +0000 UTC FinishedAt: 2026-08-14 07:22:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-14 04:19:09 +0000 UTC FinishedAt: 2026-08-14 07:22:25 +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":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"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:*18dcafb1-75fc-46dd-a872-1b4c08704398,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0926be66-4847-46f0-bb6f-5a156d5c33d6,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-workflowgrbnf/series-workflowgrbnf-build-action-38868183/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-workflowgrbnf/series-workflowgrbnf-build-action-3513012648/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-14 04:19:09 +0000 UTC FinishedAt: 2026-08-14 04:19:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-14 04:19:09 +0000 UTC FinishedAt: 2026-08-14 04:19:13 +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":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"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-workflowgrbnf/series-workflowgrbnf-convert-artifact-447117557/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-14 04:19:09 +0000 UTC FinishedAt: 2026-08-14 04:19:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-14 04:19:09 +0000 UTC FinishedAt: 2026-08-14 04:19:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-14 04:19:09 +0000 UTC FinishedAt: 2026-08-14 04:19:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-14 04:19:19 +0000 UTC FinishedAt: 2026-08-14 07:22:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgrbnf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["gtp_genl_new_pdp","gtp_genl_del_pdp","gtp_dellink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["GTP"],"series_id":"79cb6566-2ed6-4610-83c8-1264cdf9d08d","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-14 04:19:19 +0000 UTC FinishedAt: 2026-08-14 07:22:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*18dcafb1-75fc-46dd-a872-1b4c08704398,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0926be66-4847-46f0-bb6f-5a156d5c33d6,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-workflowgrbnf/series-workflowgrbnf-build-action-38868183/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-workflowgrbnf/series-workflowgrbnf-build-action-3513012648/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-workflowgrbnf/series-workflowgrbnf-convert-artifact-447117557/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,}