Name: series-workflownwnpr Phase: Succeeded StartedAt: 2026-08-01 19:20:57 +0000 UTC FinishedAt: 2026-08-01 23:08:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflownwnpr[0] Phase: Succeeded StartedAt: 2026-08-01 19:20:57 +0000 UTC FinishedAt: 2026-08-01 19:24:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflownwnpr[0].run-triage Phase: Succeeded StartedAt: 2026-08-01 19:20:57 +0000 UTC FinishedAt: 2026-08-01 19:24:20 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "4a0bd262df757b25fc4e2a53c947317c119ced4e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "4a0bd262df757b25fc4e2a53c947317c119ced4e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "ac533106-053e-4e3b-8b9f-a1a9879d941a" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nl80211_remain_on_channel", "nl80211_tx_mgmt", "nl80211_probe_peer", "nl80211_tx_control_port", "cfg80211_mlme_mgmt_tx", "ieee80211_remain_on_channel", "ieee80211_mgmt_tx", "ieee80211_probe_peer", "ieee80211_tx_control_port", "ieee80211_attach_ack_skb", "ieee80211_start_roc_work" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbCYjMzQ7LAogICAgJiMzNDtubDgwMjExX3R4X21nbXQmIzM0OywKICAgICYjMzQ7bmw4MDIxMV9wcm9iZV9wZWVyJiMzNDssCiAgICAmIzM0O25sODAyMTFfdHhfY29udHJvbF9wb3J0JiMzNDssCiAgICAmIzM0O2NmZzgwMjExX21sbWVfbWdtdF90eCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWwmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX21nbXRfdHgmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3Byb2JlX3BlZXImIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfYXR0YWNoX2Fja19za2ImIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3N0YXJ0X3JvY193b3JrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgaG93IGNvb2tpZXMgYXJlIGdlbmVyYXRlZCBhbmQgcGFzc2VkIGZvciBzZXZlcmFsIG5sODAyMTEgY29tbWFuZHMgKHJlbWFpbl9vbl9jaGFubmVsLCB0eF9tZ210LCBwcm9iZV9wZWVyLCB0eF9jb250cm9sX3BvcnQpLiBJdCBtb2RpZmllcyB0aGUgY29yZSBjZmc4MDIxMSBhbmQgbWFjODAyMTEgbG9naWMgdG8gZ2VuZXJhdGUgY29va2llcyBpbiBubDgwMjExIGFuZCBwYXNzIHRoZW0gYnkgdmFsdWUgdG8gZHJpdmVycywgaW5zdGVhZCBvZiBoYXZpbmcgZHJpdmVycyBnZW5lcmF0ZSB0aGVtIGFuZCBwYXNzIHRoZW0gYmFjayB2aWEgcG9pbnRlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSB3aXJlbGVzcyBzdGFjayBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxOToyMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGRiNjQ3ZjQwM2Q5OWE0MzY5MDQzZGYzYzA1ZWVhNWRkZjg0MDgwNWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDE5OjIyOjM2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuY1xuaW5kZXggZWNkZTkxMTU5YjU0Ni4uMzQwMjVkNjRkNjE1OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jXG5AQCAtMzAzNCwyMCAmIzQzOzMwMzQsMTQgQEAgc3RhdGljIGludCBhdGg2a2xfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdCAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbiBcdFx0XHRcdCAgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sXG4tXHRcdFx0XHQgICAgdTY0ICpjb29raWUsIGNvbnN0IHU4ICpyeF9hZGRyKVxuJiM0MztcdFx0XHRcdCAgICB1NjQgY29va2llLCBjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmID0gYXRoNmtsX3ZpZl9mcm9tX3dkZXYod2Rldik7XG4gXHRzdHJ1Y3QgYXRoNmtsICphciA9IGF0aDZrbF9wcml2KHZpZi1cdTAwM2VuZGV2KTtcbi1cdHUzMiBpZDtcbiBcbiBcdC8qIFRPRE86IGlmIGFscmVhZHkgcGVuZGluZyBvciBvbmdvaW5nIHJlbWFpbi1vbi1jaGFubmVsLFxuIFx0ICogcmV0dXJuIC1FQlVTWSAqL1xuLVx0aWQgPSAmIzQzOyYjNDM7dmlmLVx1MDAzZWxhc3Rfcm9jX2lkO1xuLVx0aWYgKGlkID09IDApIHtcbi1cdFx0LyogRG8gbm90IHVzZSAwIGFzIHRoZSBjb29raWUgdmFsdWUgKi9cbi1cdFx0aWQgPSAmIzQzOyYjNDM7dmlmLVx1MDAzZWxhc3Rfcm9jX2lkO1xuLVx0fVxuLVx0KmNvb2tpZSA9IGlkO1xuJiM0MztcdHZpZi1cdTAwM2VsYXN0X3JvY19pZCA9IGNvb2tpZTtcbiBcbiBcdHJldHVybiBhdGg2a2xfd21pX3JlbWFpbl9vbl9jaG5sX2NtZChhci1cdTAwM2V3bWksIHZpZi1cdTAwM2Vmd192aWZfaWR4LFxuIFx0XHRcdFx0XHQgICAgIGNoYW4tXHUwMDNlY2VudGVyX2ZyZXEsIGR1cmF0aW9uKTtcbkBAIC0zMTA2LDYgJiM0MzszMTAwLDcgQEAgc3RhdGljIGludCBhdGg2a2xfc2VuZF9nb19wcm9iZV9yZXNwKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsXG4gXG4gc3RhdGljIGJvb2wgYXRoNmtsX21nbXRfcG93ZXJzYXZlX2FwKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsXG4gXHRcdFx0XHQgICAgIHUzMiBpZCxcbiYjNDM7XHRcdFx0XHQgICAgIHU2NCBjb29raWUsXG4gXHRcdFx0XHQgICAgIHUzMiBmcmVxLFxuIFx0XHRcdFx0ICAgICB1MzIgd2FpdCxcbiBcdFx0XHRcdCAgICAgY29uc3QgdTggKmJ1ZixcbkBAIC0zMTM4LDYgJiM0MzszMTMzLDcgQEAgc3RhdGljIGJvb2wgYXRoNmtsX21nbXRfcG93ZXJzYXZlX2FwKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsXG4gXG4gXHRcdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bWdtdF9idWYtXHUwMDNlbGlzdCk7XG4gXHRcdFx0bWdtdF9idWYtXHUwMDNlaWQgPSBpZDtcbiYjNDM7XHRcdFx0bWdtdF9idWYtXHUwMDNlY29va2llID0gY29va2llO1xuIFx0XHRcdG1nbXRfYnVmLVx1MDAzZWZyZXEgPSBmcmVxO1xuIFx0XHRcdG1nbXRfYnVmLVx1MDAzZXdhaXQgPSB3YWl0O1xuIFx0XHRcdG1nbXRfYnVmLVx1MDAzZWxlbiA9IGxlbjtcbkBAIC0zMTkwLDcgJiM0MzszMTg2LDcgQEAgc3RhdGljIGJvb2wgYXRoNmtsX2lzX3AycF9nb19zc2lkKGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pXG4gfVxuIFxuIHN0YXRpYyBpbnQgYXRoNmtsX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0XHQgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0ICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcbiB7XG4gXHRzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmID0gYXRoNmtsX3ZpZl9mcm9tX3dkZXYod2Rldik7XG4gXHRzdHJ1Y3QgYXRoNmtsICphciA9IGF0aDZrbF9wcml2KHZpZi1cdTAwM2VuZGV2KTtcbkBAIC0zMjIyLDcgJiM0MzszMjE4LDYgQEAgc3RhdGljIGludCBhdGg2a2xfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHQgKiBTZW5kIFByb2JlIFJlc3BvbnNlIGZyYW1lIGluIEdPIG1vZGUgdXNpbmcgYSBzZXBhcmF0ZSBXTUlcbiBcdFx0ICogY29tbWFuZCB0byBhbGxvdyB0aGUgdGFyZ2V0IHRvIGZpbGwgaW4gdGhlIGdlbmVyaWMgSUVzLlxuIFx0XHQgKi9cbi1cdFx0KmNvb2tpZSA9IDA7IC8qIFRYIHN0YXR1cyBub3Qgc3VwcG9ydGVkICovXG4gXHRcdHJldHVybiBhdGg2a2xfc2VuZF9nb19wcm9iZV9yZXNwKHZpZiwgYnVmLCBsZW4sIGZyZXEpO1xuIFx0fVxuIFxuQEAgLTMyMzUsMTYgJiM0MzszMjMwLDE1IEBAIHN0YXRpYyBpbnQgYXRoNmtsX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0aWQgPSB2aWYtXHUwMDNlc2VuZF9hY3Rpb25faWQmIzQzOyYjNDM7O1xuIFx0fVxuIFxuLVx0KmNvb2tpZSA9IGlkO1xuLVxuIFx0LyogQVAgbW9kZSBQb3dlciBzYXZpbmcgcHJvY2Vzc2luZyAqL1xuIFx0aWYgKHZpZi1cdTAwM2Vud190eXBlID09IEFQX05FVFdPUkspIHtcbi1cdFx0cXVldWVkID0gYXRoNmtsX21nbXRfcG93ZXJzYXZlX2FwKHZpZiwgaWQsIGZyZXEsIHdhaXQsIGJ1ZiwgbGVuLFxuLVx0XHRcdFx0XHRcdCAgXHUwMDI2bW9yZV9kYXRhLCBub19jY2spO1xuJiM0MztcdFx0cXVldWVkID0gYXRoNmtsX21nbXRfcG93ZXJzYXZlX2FwKHZpZiwgaWQsIGNvb2tpZSwgZnJlcSwgd2FpdCxcbiYjNDM7XHRcdFx0XHRcdFx0ICBidWYsIGxlbiwgXHUwMDI2bW9yZV9kYXRhLCBub19jY2spO1xuIFx0XHRpZiAocXVldWVkKVxuIFx0XHRcdHJldHVybiAwO1xuIFx0fVxuIFxuJiM0MztcdGFyLVx1MDAzZXdtaS1cdTAwM2VsYXN0X21nbXRfdHhfY29va2llID0gY29va2llO1xuIFx0cmV0dXJuIGF0aDZrbF93bWlfc2VuZF9tZ210X2NtZChhci1cdTAwM2V3bWksIHZpZi1cdTAwM2Vmd192aWZfaWR4LCBpZCwgZnJlcSxcbiBcdFx0XHRcdFx0d2FpdCwgYnVmLCBsZW4sIG5vX2Njayk7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmhcbmluZGV4IDc3ZTA1MjMzNmViNWIuLmEwYjIzNmVlZWFiNTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmhcbkBAIC00MDQsNiAmIzQzOzQwNCw3IEBAIHN0cnVjdCBhdGg2a2xfbWdtdF9idWZmIHtcbiBcdHUzMiBmcmVxO1xuIFx0dTMyIHdhaXQ7XG4gXHR1MzIgaWQ7XG4mIzQzO1x0dTY0IGNvb2tpZTtcbiBcdGJvb2wgbm9fY2NrO1xuIFx0c2l6ZV90IGxlbjtcbiBcdHU4IGJ1ZltdO1xuQEAgLTYzMSw4ICYjNDM7NjMyLDggQEAgc3RydWN0IGF0aDZrbF92aWYge1xuIFx0c3RydWN0IGNmZzgwMjExX3NjYW5fcmVxdWVzdCAqc2Nhbl9yZXE7XG4gXHRlbnVtIHNtZV9zdGF0ZSBzbWVfc3RhdGU7XG4gXHRpbnQgcmVjb25uZWN0X2ZsYWc7XG4tXHR1MzIgbGFzdF9yb2NfaWQ7XG4tXHR1MzIgbGFzdF9jYW5jZWxfcm9jX2lkO1xuJiM0MztcdHU2NCBsYXN0X3JvY19pZDtcbiYjNDM7XHR1NjQgbGFzdF9jYW5jZWxfcm9jX2lkO1xuIFx0dTMyIHNlbmRfYWN0aW9uX2lkO1xuIFx0Ym9vbCBwcm9iZV9yZXFfcmVwb3J0O1xuIFx0dTE2IGFzc29jX2Jzc19iZWFjb25faW50O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmNcbmluZGV4IDhhZmM2NTg5ZmM1MWUuLjljMDIzZDdjZTMwNTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmNcbkBAIC04OTgsNiAmIzQzOzg5OCw3IEBAIHZvaWQgYXRoNmtsX3BzcG9sbF9ldmVudChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCBhaWQpXG4gXHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmNvbm4tXHUwMDNlcHNxX2xvY2spO1xuIFxuIFx0XHRjb25uLVx1MDAzZXN0YV9mbGFncyB8PSBTVEFfUFNfUE9MTEVEO1xuJiM0MztcdFx0YXItXHUwMDNld21pLVx1MDAzZWxhc3RfbWdtdF90eF9jb29raWUgPSBtZ210X2J1Zi1cdTAwM2Vjb29raWU7XG4gXHRcdGF0aDZrbF93bWlfc2VuZF9tZ210X2NtZChhci1cdTAwM2V3bWksIHZpZi1cdTAwM2Vmd192aWZfaWR4LFxuIFx0XHRcdFx0XHQgbWdtdF9idWYtXHUwMDNlaWQsIG1nbXRfYnVmLVx1MDAzZWZyZXEsXG4gXHRcdFx0XHRcdCBtZ210X2J1Zi1cdTAwM2V3YWl0LCBtZ210X2J1Zi1cdTAwM2VidWYsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY1xuaW5kZXggZDgxODI1NDEzOTA2MS4uNjA5ZDQ1OGNhNmM1NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY1xuQEAgLTE0NjksNiAmIzQzOzE0NjksNyBAQCB2b2lkIGF0aDZrbF9yeChzdHJ1Y3QgaHRjX3RhcmdldCAqdGFyZ2V0LCBzdHJ1Y3QgaHRjX3BhY2tldCAqcGFja2V0KVxuIFx0XHRcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZjb25uLVx1MDAzZXBzcV9sb2NrKTtcbiBcdFx0XHRcdFx0aWR4ID0gdmlmLVx1MDAzZWZ3X3ZpZl9pZHg7XG4gXG4mIzQzO1x0XHRcdFx0XHRhci1cdTAwM2V3bWktXHUwMDNlbGFzdF9tZ210X3R4X2Nvb2tpZSA9IG1nbXQtXHUwMDNlY29va2llO1xuIFx0XHRcdFx0XHRhdGg2a2xfd21pX3NlbmRfbWdtdF9jbWQoYXItXHUwMDNld21pLFxuIFx0XHRcdFx0XHRcdFx0XHQgaWR4LFxuIFx0XHRcdFx0XHRcdFx0XHQgbWdtdC1cdTAwM2VpZCxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuY1xuaW5kZXggNmMyOWYwYmNlYzlmNS4uMjE0MGZkZGJhOGJhZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmNcbkBAIC01OTYsNyAmIzQzOzU5Niw3IEBAIHN0YXRpYyBpbnQgYXRoNmtsX3dtaV90eF9zdGF0dXNfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sXG4gXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV01JLCBcJiMzNDt0eF9zdGF0dXM6IGlkPSV4IGFja19zdGF0dXM9JXVcXG5cJiMzNDssXG4gXHRcdCAgIGlkLCBldi1cdTAwM2VhY2tfc3RhdHVzKTtcbiBcdGlmICh3bWktXHUwMDNlbGFzdF9tZ210X3R4X2ZyYW1lKSB7XG4tXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKFx1MDAyNnZpZi1cdTAwM2V3ZGV2LCBpZCxcbiYjNDM7XHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKFx1MDAyNnZpZi1cdTAwM2V3ZGV2LCB3bWktXHUwMDNlbGFzdF9tZ210X3R4X2Nvb2tpZSxcbiBcdFx0XHRcdFx0d21pLVx1MDAzZWxhc3RfbWdtdF90eF9mcmFtZSxcbiBcdFx0XHRcdFx0d21pLVx1MDAzZWxhc3RfbWdtdF90eF9mcmFtZV9sZW4sXG4gXHRcdFx0XHRcdCEhZXYtXHUwMDNlYWNrX3N0YXR1cywgR0ZQX0FUT01JQyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmhcbmluZGV4IDhmYmVjZTNmZGFkOWYuLjg5Y2UyYWJiYjFjZGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oXG5AQCAtMTI1LDYgJiM0MzsxMjUsNyBAQCBzdHJ1Y3Qgd21pIHtcbiBcbiBcdHU4ICpsYXN0X21nbXRfdHhfZnJhbWU7XG4gXHRzaXplX3QgbGFzdF9tZ210X3R4X2ZyYW1lX2xlbjtcbiYjNDM7XHR1NjQgbGFzdF9tZ210X3R4X2Nvb2tpZTtcbiBcdHU4IHNhdmVkX3B3cl9tb2RlO1xuIH07XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmNcbmluZGV4IDVmMmJkOWEzMWZhZjYuLjlhYzMzZDgyN2Y4MDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9jZmc4MDIxMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9jZmc4MDIxMS5jXG5AQCAtMTQzMiw3ICYjNDM7MTQzMiw3IEBAIHN0YXRpYyBpbnQgd2lsX2NmZzgwMjExX3NldF93aXBoeV9wYXJhbXMoc3RydWN0IHdpcGh5ICp3aXBoeSwgaW50IHJhZGlvX2lkeCxcbiBcbiBpbnQgd2lsX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXG4tXHRcdFx0IHU2NCAqY29va2llKVxuJiM0MztcdFx0XHQgdTY0IGNvb2tpZSlcbiB7XG4gXHRjb25zdCB1OCAqYnVmID0gcGFyYW1zLVx1MDAzZWJ1ZjtcbiBcdHNpemVfdCBsZW4gPSBwYXJhbXMtXHUwMDNlbGVuO1xuQEAgLTE0ODgsOCAmIzQzOzE0ODgsNyBAQCBpbnQgd2lsX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdCAqL1xuIFx0dHhfc3RhdHVzID0gKHJjID09IDApO1xuIFx0cmMgPSAocmMgPT0gLUVBR0FJTikgPyAwIDogcmM7XG4tXHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBjb29raWUgPyAqY29va2llIDogMCwgYnVmLCBsZW4sXG4tXHRcdFx0XHR0eF9zdGF0dXMsIEdGUF9LRVJORUwpO1xuJiM0MztcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHR4X3N0YXR1cywgR0ZQX0tFUk5FTCk7XG4gXG4gXHRyZXR1cm4gcmM7XG4gfVxuQEAgLTE3MzUsNyAmIzQzOzE3MzQsNyBAQCBzdGF0aWMgaW50IHdpbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0IHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHQgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuIFx0XHRcdFx0IHVuc2lnbmVkIGludCBkdXJhdGlvbixcbi1cdFx0XHRcdCB1NjQgKmNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpXG4mIzQzO1x0XHRcdFx0IHU2NCBjb29raWUsIGNvbnN0IHU4ICpyeF9hZGRyKVxuIHtcbiBcdHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCA9IHdpcGh5X3RvX3dpbCh3aXBoeSk7XG4gXHRpbnQgcmM7XG5AQCAtMjM4MSw3ICYjNDM7MjM4MCw3IEBAIHZvaWQgd2lsX3Byb2JlX2NsaWVudF9mbHVzaChzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZilcbiBcbiBzdGF0aWMgaW50IHdpbF9jZmc4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0XHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLVx0XHRcdFx0ICAgY29uc3QgdTggKnBlZXIsIHU2NCAqY29va2llKVxuJiM0MztcdFx0XHRcdCAgIGNvbnN0IHU4ICpwZWVyLCB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCA9IHdpcGh5X3RvX3dpbCh3aXBoeSk7XG4gXHRzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZiA9IG5kZXZfdG9fdmlmKGRldik7XG5AQCAtMjM5OSwxMyAmIzQzOzIzOTgsMTIgQEAgc3RhdGljIGludCB3aWxfY2ZnODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdHJlcS1cdTAwM2VjaWQgPSBjaWQ7XG4tXHRyZXEtXHUwMDNlY29va2llID0gY2lkO1xuJiM0MztcdHJlcS1cdTAwM2Vjb29raWUgPSBjb29raWU7XG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNnZpZi1cdTAwM2Vwcm9iZV9jbGllbnRfbXV0ZXgpO1xuIFx0bGlzdF9hZGRfdGFpbChcdTAwMjZyZXEtXHUwMDNlbGlzdCwgXHUwMDI2dmlmLVx1MDAzZXByb2JlX2NsaWVudF9wZW5kaW5nKTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZ2aWYtXHUwMDNlcHJvYmVfY2xpZW50X211dGV4KTtcbiBcbi1cdCpjb29raWUgPSByZXEtXHUwMDNlY29va2llO1xuIFx0cXVldWVfd29yayh3aWwtXHUwMDNld3Ffc2VydmljZSwgXHUwMDI2dmlmLVx1MDAzZXByb2JlX2NsaWVudF93b3JrZXIpO1xuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2RlYnVnZnMuY1xuaW5kZXggYjhjYjczNmE3MTg1Mi4uZTA2ZTQ1MzIzMjcyYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2RlYnVnZnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvZGVidWdmcy5jXG5AQCAtOTg1LDcgJiM0Mzs5ODUsNyBAQCBzdGF0aWMgc3NpemVfdCB3aWxfd3JpdGVfZmlsZV90eG1nbXQoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICpidWYsXG4gXHRwYXJhbXMuYnVmID0gZnJhbWU7XG4gXHRwYXJhbXMubGVuID0gbGVuO1xuIFxuLVx0cmMgPSB3aWxfY2ZnODAyMTFfbWdtdF90eCh3aXBoeSwgd2RldiwgXHUwMDI2cGFyYW1zLCBOVUxMKTtcbiYjNDM7XHRyYyA9IHdpbF9jZmc4MDIxMV9tZ210X3R4KHdpcGh5LCB3ZGV2LCBcdTAwMjZwYXJhbXMsIDApO1xuIFxuIFx0a2ZyZWUoZnJhbWUpO1xuIFx0d2lsX2luZm8od2lsLCBcJiMzNDstXHUwMDNlICVkXFxuXCYjMzQ7LCByYyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvcDJwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9wMnAuY1xuaW5kZXggZjIwY2FmMWEzOTA1Yi4uYWNkOGEyZTM1MTAzMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3AycC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9wMnAuY1xuQEAgLTEyNCw3ICYjNDM7MTI0LDcgQEAgaW50IHdpbF9wMnBfc2VhcmNoKHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmLFxuIFxuIGludCB3aWxfcDJwX2xpc3RlbihzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwsIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdCAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuLVx0XHQgICB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdCAgIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IHdpbDYyMTBfdmlmICp2aWYgPSB3ZGV2X3RvX3ZpZih3aWwsIHdkZXYpO1xuIFx0c3RydWN0IHdpbF9wMnBfaW5mbyAqcDJwID0gXHUwMDI2dmlmLVx1MDAzZXAycDtcbkBAIC0xNDQsNyAmIzQzOzE0NCw3IEBAIGludCB3aWxfcDJwX2xpc3RlbihzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwsIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHR9XG4gXG4gXHRtZW1jcHkoXHUwMDI2cDJwLVx1MDAzZWxpc3Rlbl9jaGFuLCBjaGFuLCBzaXplb2YoKmNoYW4pKTtcbi1cdCpjb29raWUgPSAmIzQzOyYjNDM7cDJwLVx1MDAzZWNvb2tpZTtcbiYjNDM7XHRwMnAtXHUwMDNlY29va2llID0gY29va2llO1xuIFx0cDJwLVx1MDAzZWxpc3Rlbl9kdXJhdGlvbiA9IGR1cmF0aW9uO1xuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZ3aWwtXHUwMDNldmlmX211dGV4KTtcbkBAIC0xNjYsNyAmIzQzOzE2Niw3IEBAIGludCB3aWxfcDJwX2xpc3RlbihzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwsIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRpZiAodmlmLVx1MDAzZW1pZCA9PSAwKVxuIFx0XHR3aWwtXHUwMDNlcmFkaW9fd2RldiA9IHdkZXY7XG4gXG4tXHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sIGR1cmF0aW9uLFxuJiM0MztcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLCBkdXJhdGlvbixcbiBcdFx0XHRcdCAgR0ZQX0tFUk5FTCk7XG4gXG4gb3V0OlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dpbDYyMTAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dpbDYyMTAuaFxuaW5kZXggMzFlMTA3YzgxZTJkNC4uZjhlNjBiZTYzMWNhNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dpbDYyMTAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd2lsNjIxMC5oXG5AQCAtMTMwMSw3ICYjNDM7MTMwMSw3IEBAIGludCB3aWxfcDJwX3NlYXJjaChzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZixcbiBcdFx0ICAgc3RydWN0IGNmZzgwMjExX3NjYW5fcmVxdWVzdCAqcmVxdWVzdCk7XG4gaW50IHdpbF9wMnBfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0ICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXG4tXHRcdCAgIHU2NCAqY29va2llKTtcbiYjNDM7XHRcdCAgIHU2NCBjb29raWUpO1xuIHU4IHdpbF9wMnBfc3RvcF9kaXNjb3Zlcnkoc3RydWN0IHdpbDYyMTBfdmlmICp2aWYpO1xuIGludCB3aWxfcDJwX2NhbmNlbF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfdmlmICp2aWYsIHU2NCBjb29raWUpO1xuIHZvaWQgd2lsX3AycF9saXN0ZW5fZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xuQEAgLTEzMTcsNyAmIzQzOzEzMTcsNyBAQCBpbnQgd21pX3N0b3BfZGlzY292ZXJ5KHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmKTtcbiBcbiBpbnQgd2lsX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXG4tXHRcdFx0IHU2NCAqY29va2llKTtcbiYjNDM7XHRcdFx0IHU2NCBjb29raWUpO1xuIHZvaWQgd2lsX2NmZzgwMjExX2FwX3JlY292ZXJ5KHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCk7XG4gaW50IHdpbF9jZmc4MDIxMV9pZmFjZV9jb21iaW5hdGlvbnNfZnJvbV9mdyhcbiBcdHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXG5pbmRleCA2YjJjMzRlM2E3OTZjLi44NzJjNDg4MDZkMDkxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXG5AQCAtNTU1NCw3ICYjNDM7NTU1NCw3IEBAIGJyY21mX2NmZzgwMjExX3VwZGF0ZV9tZ210X2ZyYW1lX3JlZ2lzdHJhdGlvbnMoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcbiBpbnRcbiBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tXHRcdCAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXG4mIzQzO1x0XHQgICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyA9IHdpcGh5X3RvX2NmZyh3aXBoeSk7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4gPSBwYXJhbXMtXHUwMDNlY2hhbjtcbkBAIC01NTczLDggJiM0Mzs1NTczLDYgQEAgYnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFxuIFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtFbnRlclxcblwmIzM0Oyk7XG4gXG4tXHQqY29va2llID0gMDtcbi1cbiBcdG1nbXQgPSAoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICopYnVmO1xuIFxuIFx0aWYgKCFpZWVlODAyMTFfaXNfbWdtdChtZ210LVx1MDAzZWZyYW1lX2NvbnRyb2wpKSB7XG5AQCAtNTYwNSw3ICYjNDM7NTYwMyw3IEBAIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdFx0ICAgIEJSQ01GX1ZORFJfSUVfUFJCUlNQX0ZMQUcsXG4gXHRcdFx0XHRcdCAgICBcdTAwMjZidWZbaWVfb2Zmc2V0XSxcbiBcdFx0XHRcdFx0ICAgIGllX2xlbik7XG4tXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsICpjb29raWUsIGJ1ZiwgbGVuLCB0cnVlLFxuJiM0MztcdFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgdHJ1ZSxcbiBcdFx0XHRcdFx0R0ZQX0tFUk5FTCk7XG4gXHR9IGVsc2UgaWYgKGllZWU4MDIxMV9pc19hY3Rpb24obWdtdC1cdTAwM2VmcmFtZV9jb250cm9sKSkge1xuIFx0XHRpZiAobGVuIFx1MDAzZSBCUkNNRl9GSUxfQUNUSU9OX0ZSQU1FX1NJWkUgJiM0MzsgRE9UMTFfTUdNVF9IRFJfTEVOKSB7XG5AQCAtNTYyMSw3ICYjNDM7NTYxOSw3IEBAIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0fVxuIFx0XHRhY3Rpb25fZnJhbWUgPSBcdTAwMjZhZl9wYXJhbXMtXHUwMDNlYWN0aW9uX2ZyYW1lO1xuIFx0XHQvKiBBZGQgdGhlIHBhY2tldCBJZCAqL1xuLVx0XHRhY3Rpb25fZnJhbWUtXHUwMDNlcGFja2V0X2lkID0gY3B1X3RvX2xlMzIoKmNvb2tpZSk7XG4mIzQzO1x0XHRhY3Rpb25fZnJhbWUtXHUwMDNlcGFja2V0X2lkID0gY3B1X3RvX2xlMzIoY29va2llKTtcbiBcdFx0LyogQWRkIEJTU0lEICovXG4gXHRcdG1lbWNweShcdTAwMjZhY3Rpb25fZnJhbWUtXHUwMDNlZGFbMF0sIFx1MDAyNm1nbXQtXHUwMDNlZGFbMF0sIEVUSF9BTEVOKTtcbiBcdFx0bWVtY3B5KFx1MDAyNmFmX3BhcmFtcy1cdTAwM2Vic3NpZFswXSwgXHUwMDI2bWdtdC1cdTAwM2Vic3NpZFswXSwgRVRIX0FMRU4pO1xuQEAgLTU2NDksMTIgJiM0Mzs1NjQ3LDEyIEBAIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0ICAgICAgIGxlMTZfdG9fY3B1KGFjdGlvbl9mcmFtZS1cdTAwM2VsZW4pKTtcbiBcbiBcdFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtBY3Rpb24gZnJhbWUsIGNvb2tpZT0lbGxkLCBsZW49JWQsIGNoYW5uZWw9JWRcXG5cJiMzNDssXG4tXHRcdFx0ICAqY29va2llLCBsZTE2X3RvX2NwdShhY3Rpb25fZnJhbWUtXHUwMDNlbGVuKSxcbiYjNDM7XHRcdFx0ICBjb29raWUsIGxlMTZfdG9fY3B1KGFjdGlvbl9mcmFtZS1cdTAwM2VsZW4pLFxuIFx0XHRcdCAgbGUzMl90b19jcHUoYWZfcGFyYW1zLVx1MDAzZWNoYW5uZWwpKTtcbiBcbiBcdFx0YWNrID0gYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKHZpZi1cdTAwM2VpZnAsIGFmX3BhcmFtcyk7XG4gXG4tXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsICpjb29raWUsIGJ1ZiwgbGVuLCBhY2ssXG4mIzQzO1x0XHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBjb29raWUsIGJ1ZiwgbGVuLCBhY2ssXG4gXHRcdFx0XHRcdEdGUF9LRVJORUwpO1xuIGZyZWU6XG4gXHRcdGtmcmVlKGFmX3BhcmFtcyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaFxuaW5kZXggNmNlYjMwMTQyOTA1NC4uNjNlNTM0NTIzZjUxOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaFxuQEAgLTQ5Nyw2ICYjNDM7NDk3LDYgQEAgdm9pZCBicmNtZl9jZmc4MDIxMV9mcmVlX3ZpZihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XG4gXG4gaW50IGJyY21mX3NldF93c2VjKHN0cnVjdCBicmNtZl9pZiAqaWZwLCBjb25zdCB1OCAqa2V5LCB1MTYga2V5X2xlbiwgdTE2IGZsYWdzKTtcbiBpbnQgYnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLVx0XHRcdCAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSk7XG4mIzQzO1x0XHRcdCAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKTtcbiBcbiAjZW5kaWYgLyogQlJDTUZNQUNfQ0ZHODAyMTFfSCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcbmluZGV4IDg3Mzc1NGJlNTE3NGIuLjU0NWViOWFhZTk2NjAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcbkBAIC0xMDAsNyAmIzQzOzEwMCw3IEBAIHN0YXRpYyBpbnQgYnJjbWZfY3l3X2FjdGl2YXRlX2V2ZW50cyhzdHJ1Y3QgYnJjbWZfaWYgKmlmcClcbiBcbiBzdGF0aWNcbiBpbnQgYnJjbWZfY3l3X21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxuJiM0MztcdFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyA9IHdpcGh5X3RvX2NmZyh3aXBoeSk7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4gPSBwYXJhbXMtXHUwMDNlY2hhbjtcbkBAIC0xMjMsNyAmIzQzOzEyMyw2IEBAIGludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0aWYgKCFpZWVlODAyMTFfaXNfYXV0aChtZ210LVx1MDAzZWZyYW1lX2NvbnRyb2wpKVxuIFx0XHRyZXR1cm4gYnJjbWZfY2ZnODAyMTFfbWdtdF90eCh3aXBoeSwgd2RldiwgcGFyYW1zLCBjb29raWUpO1xuIFxuLVx0KmNvb2tpZSA9IDA7XG4gXHR2aWYgPSBjb250YWluZXJfb2Yod2Rldiwgc3RydWN0IGJyY21mX2NmZzgwMjExX3ZpZiwgd2Rldik7XG4gXG4gXHRyZWluaXRfY29tcGxldGlvbihcdTAwMjZ2aWYtXHUwMDNlbWdtdF90eCk7XG5AQCAtMTU1LDcgJiM0MzsxNTQsNyBAQCBpbnQgYnJjbWZfY3l3X21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcbiBcdG1lbWNweShcdTAwMjZtZl9wYXJhbXMtXHUwMDNlZGFbMF0sIFx1MDAyNm1nbXQtXHUwMDNlZGFbMF0sIEVUSF9BTEVOKTtcbiBcdG1lbWNweShcdTAwMjZtZl9wYXJhbXMtXHUwMDNlYnNzaWRbMF0sIFx1MDAyNm1nbXQtXHUwMDNlYnNzaWRbMF0sIEVUSF9BTEVOKTtcbi1cdG1mX3BhcmFtcy1cdTAwM2VwYWNrZXRfaWQgPSBjcHVfdG9fbGUzMigqY29va2llKTtcbiYjNDM7XHRtZl9wYXJhbXMtXHUwMDNlcGFja2V0X2lkID0gY3B1X3RvX2xlMzIoY29va2llKTtcbiBcdG1lbWNweShtZl9wYXJhbXMtXHUwMDNlZGF0YSwgXHUwMDI2YnVmW0RPVDExX01HTVRfSERSX0xFTl0sXG4gXHQgICAgICAgbGUxNl90b19jcHUobWZfcGFyYW1zLVx1MDAzZWxlbikpO1xuIFxuQEAgLTE4Nyw4ICYjNDM7MTg2LDcgQEAgaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHR9XG4gXG4gdHhfc3RhdHVzOlxuLVx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIGFjayxcbi1cdFx0XHRcdEdGUF9LRVJORUwpO1xuJiM0MztcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIGFjaywgR0ZQX0tFUk5FTCk7XG4gZnJlZTpcbiBcdGtmcmVlKG1mX3BhcmFtcyk7XG4gXHRyZXR1cm4gZXJyO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuY1xuaW5kZXggYzdkN2IzNWFiMTI1My4uMzJhMDE1ZDZiNzY5OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXG5AQCAtOTc5LDEwICYjNDM7OTc5LDggQEAgYnJjbWZfcDJwX2Rpc2NvdmVyX2xpc3RlbihzdHJ1Y3QgYnJjbWZfcDJwX2luZm8gKnAycCwgdTE2IGNoYW5uZWwsIHUzMiBkdXJhdGlvbilcbiBcdHAycC1cdTAwM2VjZmctXHUwMDNlZDExaW5mLmVuY2Noc3BlYyhcdTAwMjZjaCk7XG4gXHRlcnIgPSBicmNtZl9wMnBfc2V0X2Rpc2NvdmVyX3N0YXRlKHZpZi1cdTAwM2VpZnAsIFdMX1AyUF9ESVNDX1NUX0xJU1RFTixcbiBcdFx0XHRcdFx0ICAgY2guY2hzcGVjLCAodTE2KWR1cmF0aW9uKTtcbi1cdGlmICghZXJyKSB7XG4mIzQzO1x0aWYgKCFlcnIpXG4gXHRcdHNldF9iaXQoQlJDTUZfUDJQX1NUQVRVU19ESVNDT1ZFUl9MSVNURU4sIFx1MDAyNnAycC1cdTAwM2VzdGF0dXMpO1xuLVx0XHRwMnAtXHUwMDNlcmVtYWluX29uX2NoYW5uZWxfY29va2llJiM0MzsmIzQzOztcbi1cdH1cbiBleGl0OlxuIFx0cmV0dXJuIGVycjtcbiB9XG5AQCAtMTAwMCw3ICYjNDM7OTk4LDcgQEAgYnJjbWZfcDJwX2Rpc2NvdmVyX2xpc3RlbihzdHJ1Y3QgYnJjbWZfcDJwX2luZm8gKnAycCwgdTE2IGNoYW5uZWwsIHUzMiBkdXJhdGlvbilcbiAgKi9cbiBpbnQgYnJjbWZfcDJwX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW5uZWwsXG4tXHRcdFx0XHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLFxuJiM0MztcdFx0XHRcdHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSxcbiBcdFx0XHRcdGNvbnN0IHU4ICpyeF9hZGRyKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcgPSB3aXBoeV90b19jZmcod2lwaHkpO1xuQEAgLTEwMjAsOCAmIzQzOzEwMTgsOCBAQCBpbnQgYnJjbWZfcDJwX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdGdvdG8gZXhpdDtcbiBcbiBcdG1lbWNweShcdTAwMjZwMnAtXHUwMDNlcmVtYWluX29uX2NoYW5uZWwsIGNoYW5uZWwsIHNpemVvZigqY2hhbm5lbCkpO1xuLVx0KmNvb2tpZSA9IHAycC1cdTAwM2VyZW1haW5fb25fY2hhbm5lbF9jb29raWU7XG4tXHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW5uZWwsIGR1cmF0aW9uLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRwMnAtXHUwMDNlcmVtYWluX29uX2NoYW5uZWxfY29va2llID0gY29va2llO1xuJiM0MztcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFubmVsLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7XG4gXG4gZXhpdDpcbiBcdHJldHVybiBlcnI7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oXG5pbmRleCA5ZjNmMDFhZGUyYjc3Li43MDc4MDA5NDkxNzA3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmhcbkBAIC0xNTcsNyAmIzQzOzE1Nyw3IEBAIGludCBicmNtZl9wMnBfc2Nhbl9wcmVwKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0c3RydWN0IGJyY21mX2NmZzgwMjExX3ZpZiAqdmlmKTtcbiBpbnQgYnJjbWZfcDJwX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW5uZWwsXG4tXHRcdFx0XHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLFxuJiM0MztcdFx0XHRcdHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSxcbiBcdFx0XHRcdGNvbnN0IHU4ICpyeF9hZGRyKTtcbiBpbnQgYnJjbWZfcDJwX25vdGlmeV9saXN0ZW5fY29tcGxldGUoc3RydWN0IGJyY21mX2lmICppZnAsXG4gXHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBicmNtZl9ldmVudF9tc2cgKmUsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY1xuaW5kZXggOGVjMmQyMmE4YzMzYS4uN2ExYmEzMmYxZmIzNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY1xuQEAgLTE5Niw3ICYjNDM7MTk2LDcgQEAgbXdpZmlleF9mb3JtX21nbXRfZnJhbWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbilcbiAgKi9cbiBzdGF0aWMgaW50XG4gbXdpZmlleF9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tXHRcdFx0IHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0IHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxuIHtcbiBcdGNvbnN0IHU4ICpidWYgPSBwYXJhbXMtXHUwMDNlYnVmO1xuIFx0c2l6ZV90IGxlbiA9IHBhcmFtcy1cdTAwM2VsZW47XG5AQCAtMjU5LDE0ICYjNDM7MjU5LDEzIEBAIG13aWZpZXhfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0dHhfaW5mby1cdTAwM2Vwa3RfbGVuID0gcGt0X2xlbjtcbiBcbiBcdG13aWZpZXhfZm9ybV9tZ210X2ZyYW1lKHNrYiwgYnVmLCBsZW4pO1xuLVx0KmNvb2tpZSA9IGdldF9yYW5kb21fdTMyKCkgfCAxO1xuIFxuIFx0aWYgKGllZWU4MDIxMV9pc19hY3Rpb24obWdtdC1cdTAwM2VmcmFtZV9jb250cm9sKSlcbiBcdFx0c2tiID0gbXdpZmlleF9jbG9uZV9za2JfZm9yX3R4X3N0YXR1cyhwcml2LFxuIFx0XHRcdFx0XHRcdCAgICAgIHNrYixcbi1cdFx0XHRcdE1XSUZJRVhfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgY29va2llKTtcbiYjNDM7XHRcdFx0XHRNV0lGSUVYX0JVRl9GTEFHX0FDVElPTl9UWF9TVEFUVVMsIFx1MDAyNmNvb2tpZSk7XG4gXHRlbHNlXG4tXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsICpjb29raWUsIGJ1ZiwgbGVuLCB0cnVlLFxuJiM0MztcdFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgdHJ1ZSxcbiBcdFx0XHRcdFx0R0ZQX0FUT01JQyk7XG4gXG4gXHRtd2lmaWV4X3F1ZXVlX3R4X3BrdChwcml2LCBza2IpO1xuQEAgLTMwNCwxMyAmIzQzOzMwMywxMyBAQCBzdGF0aWMgaW50XG4gbXdpZmlleF9jZmc4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0XHRcdCAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXG4mIzQzO1x0XHRcdFx0ICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLFxuIFx0XHRcdFx0ICAgY29uc3QgdTggKnJ4X2FkZHIpXG4ge1xuIFx0c3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiA9IG13aWZpZXhfbmV0ZGV2X2dldF9wcml2KHdkZXYtXHUwMDNlbmV0ZGV2KTtcbiBcdGludCByZXQ7XG4gXG4tXHRpZiAoIWNoYW4gfHwgIWNvb2tpZSkge1xuJiM0MztcdGlmICghY2hhbikge1xuIFx0XHRtd2lmaWV4X2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIEVSUk9SLCBcJiMzNDtJbnZhbGlkIHBhcmFtZXRlciBmb3IgUk9DXFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG5AQCAtMzI2LDE1ICYjNDM7MzI1LDE0IEBAIG13aWZpZXhfY2ZnODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdFx0IGR1cmF0aW9uKTtcbiBcbiBcdGlmICghcmV0KSB7XG4tXHRcdCpjb29raWUgPSBnZXRfcmFuZG9tX3UzMigpIHwgMTtcbi1cdFx0cHJpdi1cdTAwM2Vyb2NfY2ZnLmNvb2tpZSA9ICpjb29raWU7XG4mIzQzO1x0XHRwcml2LVx1MDAzZXJvY19jZmcuY29va2llID0gY29va2llO1xuIFx0XHRwcml2LVx1MDAzZXJvY19jZmcuY2hhbiA9ICpjaGFuO1xuIFxuLVx0XHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sXG4mIzQzO1x0XHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsIGNvb2tpZSwgY2hhbixcbiBcdFx0XHRcdFx0ICBkdXJhdGlvbiwgR0ZQX0FUT01JQyk7XG4gXG4gXHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgSU5GTyxcbi1cdFx0XHQgICAgXCYjMzQ7aW5mbzogUk9DLCBjb29raWUgPSAweCVsbHhcXG5cJiMzNDssICpjb29raWUpO1xuJiM0MztcdFx0XHQgICAgXCYjMzQ7aW5mbzogUk9DLCBjb29raWUgPSAweCVsbHhcXG5cJiMzNDssIGNvb2tpZSk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gcmV0O1xuQEAgLTQ1NjAsNyAmIzQzOzQ1NTgsNyBAQCBtd2lmaWV4X2NmZzgwMjExX2Rpc2Fzc29jaWF0ZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIHN0YXRpYyBpbnRcbiBtd2lmaWV4X2NmZzgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHQgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKnBlZXIsXG4tXHRcdFx0ICAgIHU2NCAqY29va2llKVxuJiM0MztcdFx0XHQgICAgdTY0IGNvb2tpZSlcbiB7XG4gXHQvKiBob3N0YXBkIGxvb2tzIGZvciBOTDgwMjExX0NNRF9QUk9CRV9DTElFTlQgc3VwcG9ydDsgb3RoZXJ3aXNlLFxuIFx0ICogaXQgcmVxdWlyZXMgbW9uaXRvci1tb2RlIHN1cHBvcnQgKHdoaWNoIG13aWZpZXggZG9lc24mIzM5O3Qgc3VwcG9ydCkuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuY1xuaW5kZXggNjY1NGZjZTRkZWQ4NC4uYmIyNzQ4YTE5MzI5NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9jZmc4MDIxMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuY1xuQEAgLTExMDAsMjQgJiM0MzsxMTAwLDE5IEBAIHN0YXRpYyB2b2lkIHdpbGNfd2ZpX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQoc3RydWN0IHdpbGNfdmlmICp2aWYsIHU2NCBjb29raWUpXG4gc3RhdGljIGludCByZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdCAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0XHQgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXG4mIzQzO1x0XHRcdCAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLFxuIFx0XHRcdCAgICAgY29uc3QgdTggKnJ4X2FkZHIpXG4ge1xuIFx0aW50IHJldCA9IDA7XG4gXHRzdHJ1Y3Qgd2lsY192aWYgKnZpZiA9IG5ldGRldl9wcml2KHdkZXYtXHUwMDNlbmV0ZGV2KTtcbiBcdHN0cnVjdCB3aWxjX3ByaXYgKnByaXYgPSBcdTAwMjZ2aWYtXHUwMDNlcHJpdjtcbi1cdHU2NCBpZDtcbiBcbiBcdGlmICh3ZGV2LVx1MDAzZWlmdHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCkge1xuIFx0XHRuZXRkZXZfZGJnKHZpZi1cdTAwM2VuZGV2LCBcJiMzNDtSZXF1aXJlZCB3aGlsZSBpbiBBUCBtb2RlXFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbi1cdGlkID0gJiM0MzsmIzQzO3ByaXYtXHUwMDNlaW5jX3JvY19jb29raWU7XG4tXHRpZiAoaWQgPT0gMClcbi1cdFx0aWQgPSAmIzQzOyYjNDM7cHJpdi1cdTAwM2VpbmNfcm9jX2Nvb2tpZTtcbi1cbi1cdHJldCA9IHdpbGNfcmVtYWluX29uX2NoYW5uZWwodmlmLCBpZCwgY2hhbi1cdTAwM2Vod192YWx1ZSxcbiYjNDM7XHRyZXQgPSB3aWxjX3JlbWFpbl9vbl9jaGFubmVsKHZpZiwgY29va2llLCBjaGFuLVx1MDAzZWh3X3ZhbHVlLFxuIFx0XHRcdFx0ICAgICB3aWxjX3dmaV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG5AQCAtMTEyNSwxMiAmIzQzOzExMjAsMTEgQEAgc3RhdGljIGludCByZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0dmlmLVx1MDAzZXdpbGMtXHUwMDNlb3BfY2ggPSBjaGFuLVx1MDAzZWh3X3ZhbHVlO1xuIFxuIFx0cHJpdi1cdTAwM2VyZW1haW5fb25fY2hfcGFyYW1zLmxpc3Rlbl9jaCA9IGNoYW47XG4tXHRwcml2LVx1MDAzZXJlbWFpbl9vbl9jaF9wYXJhbXMubGlzdGVuX2Nvb2tpZSA9IGlkO1xuLVx0KmNvb2tpZSA9IGlkO1xuJiM0MztcdHByaXYtXHUwMDNlcmVtYWluX29uX2NoX3BhcmFtcy5saXN0ZW5fY29va2llID0gY29va2llO1xuIFx0cHJpdi1cdTAwM2VwMnBfbGlzdGVuX3N0YXRlID0gdHJ1ZTtcbiBcdHByaXYtXHUwMDNlcmVtYWluX29uX2NoX3BhcmFtcy5saXN0ZW5fZHVyYXRpb24gPSBkdXJhdGlvbjtcbiBcbi1cdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgKmNvb2tpZSwgY2hhbiwgZHVyYXRpb24sIEdGUF9LRVJORUwpO1xuJiM0MztcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7XG4gXHRtb2RfdGltZXIoXHUwMDI2dmlmLVx1MDAzZWhpZl9kcnYtXHUwMDNlcmVtYWluX29uX2NoX3RpbWVyLFxuIFx0XHQgIGppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyhkdXJhdGlvbiAmIzQzOyAxMDAwKSk7XG4gXG5AQCAtMTE1Myw3ICYjNDM7MTE0Nyw3IEBAIHN0YXRpYyBpbnQgY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gc3RhdGljIGludCBtZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdCAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdCAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLFxuLVx0XHQgICB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdCAgIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuID0gcGFyYW1zLVx1MDAzZWNoYW47XG4gXHR1bnNpZ25lZCBpbnQgd2FpdCA9IHBhcmFtcy1cdTAwM2V3YWl0O1xuQEAgLTExNzAsOCAmIzQzOzExNjQsNyBAQCBzdGF0aWMgaW50IG1nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdGNvbnN0IHU4ICp2ZW5kb3JfaWU7XG4gXHRpbnQgcmV0ID0gMDtcbiBcbi1cdCpjb29raWUgPSBnZXRfcmFuZG9tX3UzMigpO1xuLVx0cHJpdi1cdTAwM2V0eF9jb29raWUgPSAqY29va2llO1xuJiM0MztcdHByaXYtXHUwMDNldHhfY29va2llID0gY29va2llO1xuIFx0bWdtdCA9IChjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilidWY7XG4gXG4gXHRpZiAoIWllZWU4MDIxMV9pc19tZ210KG1nbXQtXHUwMDNlZnJhbWVfY29udHJvbCkpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmNcbmluZGV4IDRmOWUyMGY3MjgxMTQuLmM4MjBmMDhkMjgzNTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXG5AQCAtMTUwLDcgJiM0MzsxNTAsNyBAQCBueHB3aWZpX2Zvcm1fbWdtdF9mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKVxuIC8qIGNmZzgwMjExIG9wZXJhdGlvbiBoYW5kbGVyIHRvIHRyYW5zbWl0IGEgbWFuYWdlbWVudCBmcmFtZS4gKi9cbiBzdGF0aWMgaW50XG4gbnhwd2lmaV9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tXHRcdFx0IHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0IHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxuIHtcbiBcdGNvbnN0IHU4ICpidWYgPSBwYXJhbXMtXHUwMDNlYnVmO1xuIFx0c2l6ZV90IGxlbiA9IHBhcmFtcy1cdTAwM2VsZW47XG5AQCAtMjEyLDE0ICYjNDM7MjEyLDEzIEBAIG54cHdpZmlfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0dHhfaW5mby1cdTAwM2Vwa3RfbGVuID0gcGt0X2xlbjtcbiBcbiBcdG54cHdpZmlfZm9ybV9tZ210X2ZyYW1lKHNrYiwgYnVmLCBsZW4pO1xuLVx0KmNvb2tpZSA9IG54cHdpZmlfcm9jX2Nvb2tpZShwcml2LVx1MDAzZWFkYXB0ZXIpO1xuIFxuIFx0aWYgKGllZWU4MDIxMV9pc19hY3Rpb24obWdtdC1cdTAwM2VmcmFtZV9jb250cm9sKSlcbiBcdFx0c2tiID0gbnhwd2lmaV9jbG9uZV9za2JfZm9yX3R4X3N0YXR1cyhwcml2LFxuIFx0XHRcdFx0XHRcdCAgICAgIHNrYixcbi1cdFx0XHRcdE5YUFdJRklfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgY29va2llKTtcbiYjNDM7XHRcdFx0XHROWFBXSUZJX0JVRl9GTEFHX0FDVElPTl9UWF9TVEFUVVMsIFx1MDAyNmNvb2tpZSk7XG4gXHRlbHNlXG4tXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsICpjb29raWUsIGJ1ZiwgbGVuLCB0cnVlLFxuJiM0MztcdFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgdHJ1ZSxcbiBcdFx0XHRcdFx0R0ZQX0FUT01JQyk7XG4gXG4gXHRueHB3aWZpX3F1ZXVlX3R4X3BrdChwcml2LCBza2IpO1xuQEAgLTI1NCwxNCAmIzQzOzI1MywxNCBAQCBzdGF0aWMgaW50XG4gbnhwd2lmaV9jZmc4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0XHRcdCAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXG4mIzQzO1x0XHRcdFx0ICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLFxuIFx0XHRcdFx0ICAgY29uc3QgdTggKnJ4X2FkZHIpXG4ge1xuIFx0c3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdiA9IG54cHdpZmlfbmV0ZGV2X2dldF9wcml2KHdkZXYtXHUwMDNlbmV0ZGV2KTtcbiBcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG4gXHRpbnQgcmV0O1xuIFxuLVx0aWYgKCFjaGFuIHx8ICFjb29raWUpIHtcbiYjNDM7XHRpZiAoIWNoYW4pIHtcbiBcdFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsIFwmIzM0O0ludmFsaWQgcGFyYW1ldGVyIGZvciBST0NcXG5cJiMzNDspO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbkBAIC0yNzcsMTUgJiM0MzsyNzYsMTQgQEAgbnhwd2lmaV9jZmc4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0XHQgZHVyYXRpb24pO1xuIFxuIFx0aWYgKCFyZXQpIHtcbi1cdFx0KmNvb2tpZSA9IG54cHdpZmlfcm9jX2Nvb2tpZShhZGFwdGVyKTtcbi1cdFx0cHJpdi1cdTAwM2Vyb2NfY2ZnLmNvb2tpZSA9ICpjb29raWU7XG4mIzQzO1x0XHRwcml2LVx1MDAzZXJvY19jZmcuY29va2llID0gY29va2llO1xuIFx0XHRwcml2LVx1MDAzZXJvY19jZmcuY2hhbiA9ICpjaGFuO1xuIFxuLVx0XHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sXG4mIzQzO1x0XHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsIGNvb2tpZSwgY2hhbixcbiBcdFx0XHRcdFx0ICBkdXJhdGlvbiwgR0ZQX0FUT01JQyk7XG4gXG4gXHRcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIElORk8sXG4tXHRcdFx0ICAgIFwmIzM0O2luZm86IFJPQywgY29va2llID0gMHglbGx4XFxuXCYjMzQ7LCAqY29va2llKTtcbiYjNDM7XHRcdFx0ICAgIFwmIzM0O2luZm86IFJPQywgY29va2llID0gMHglbGx4XFxuXCYjMzQ7LCBjb29raWUpO1xuIFx0fVxuIFxuIFx0cmV0dXJuIHJldDtcbkBAIC0zNjE4LDcgJiM0MzszNjE2LDcgQEAgbnhwd2lmaV9jZmc4MDIxMV9kaXNhc3NvY2lhdGUoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBzdGF0aWMgaW50XG4gbnhwd2lmaV9jZmc4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0ICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKnBlZXIsXG4tXHRcdFx0ICAgICAgdTY0ICpjb29raWUpXG4mIzQzO1x0XHRcdCAgICAgIHU2NCBjb29raWUpXG4ge1xuIFx0LypcbiBcdCAqIGhvc3RhcGQgbG9va3MgZm9yIE5MODAyMTFfQ01EX1BST0JFX0NMSUVOVCBzdXBwb3J0OyBvdGhlcndpc2UsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2NmZzgwMjExLmNcbmluZGV4IDllNDRjODVkMjA1MWMuLjQ1ZTJiN2FlOTYzMzMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9jZmc4MDIxMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9jZmc4MDIxMS5jXG5AQCAtNDQ2LDcgJiM0Mzs0NDYsNyBAQCBxdG5mX3VwZGF0ZV9tZ210X2ZyYW1lX3JlZ2lzdHJhdGlvbnMoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcbiBzdGF0aWMgaW50XG4gcXRuZl9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tXHQgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcbiYjNDM7XHQgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBxdG5mX3ZpZiAqdmlmID0gcXRuZl9uZXRkZXZfZ2V0X3ByaXYod2Rldi1cdTAwM2VuZXRkZXYpO1xuIFx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210X2ZyYW1lID0gKHZvaWQgKilwYXJhbXMtXHUwMDNlYnVmO1xuQEAgLTQ1NCw4ICYjNDM7NDU0LDYgQEAgcXRuZl9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHR1MTYgZmxhZ3MgPSAwO1xuIFx0dTE2IGZyZXE7XG4gXG4tXHQqY29va2llID0gc2hvcnRfY29va2llO1xuLVxuIFx0aWYgKHBhcmFtcy1cdTAwM2VvZmZjaGFuKVxuIFx0XHRmbGFncyB8PSBRTElOS19GUkFNRV9UWF9GTEFHX09GRkNIQU47XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvaW9jdGxfY2ZnODAyMTEuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL2lvY3RsX2NmZzgwMjExLmNcbmluZGV4IDZhOTdhZmQ4OWRjNzguLmI1OGRkYTEyOWZmNjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9pb2N0bF9jZmc4MDIxMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9pb2N0bF9jZmc4MDIxMS5jXG5AQCAtMjUzMCw3ICYjNDM7MjUzMCw3IEBAIHN0YXRpYyBpbnQgX2NmZzgwMjExX3J0d19tZ210X3R4KHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdTggdHhfY2gsIGNvbnN0IHU4ICpiXG4gXG4gc3RhdGljIGludCBjZmc4MDIxMV9ydHdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0c3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXG4tXHRcdFx0XHR1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0XHR1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gd2Rldl90b19uZGV2KHdkZXYpO1xuIFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuID0gcGFyYW1zLVx1MDAzZWNoYW47XG5AQCAtMjU1MiwxMSAmIzQzOzI1NTIsOCBAQCBzdGF0aWMgaW50IGNmZzgwMjExX3J0d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXG4gXHRwYWRhcHRlciA9IHJ0d19uZXRkZXZfcHJpdihuZGV2KTtcbiBcbi1cdC8qIGNvb2tpZSBnZW5lcmF0aW9uICovXG4tXHQqY29va2llID0gKHVuc2lnbmVkIGxvbmcpYnVmO1xuLVxuIFx0LyogaW5kaWNhdGUgYWNrIGJlZm9yZSBpc3N1ZSBmcmFtZSB0byBhdm9pZCByYWNpbmcgd2l0aCByc3AgZnJhbWUgKi9cbi1cdHJ0d19jZmc4MDIxMV9tZ210X3R4X3N0YXR1cyhwYWRhcHRlciwgKmNvb2tpZSwgYnVmLCBsZW4sIGFjaywgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0cnR3X2NmZzgwMjExX21nbXRfdHhfc3RhdHVzKHBhZGFwdGVyLCBjb29raWUsIGJ1ZiwgbGVuLCBhY2ssIEdGUF9LRVJORUwpO1xuIFxuIFx0aWYgKCFydHdfYWN0aW9uX2ZyYW1lX3BhcnNlKGJ1ZiwgbGVuLCBcdTAwMjZjYXRlZ29yeSwgXHUwMDI2YWN0aW9uKSlcbiBcdFx0Z290byBleGl0O1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2NmZzgwMjExLmggYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oXG5pbmRleCBkY2JiMGU1NWMzMmVjLi45N2MxNmQ0ZmYxMjcxIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxuQEAgLTUxMDgsNyAmIzQzOzUxMDgsOCBAQCBzdHJ1Y3QgbWdtdF9mcmFtZV9yZWdzIHtcbiAgKiBAdGRsc19vcGVyOiBQZXJmb3JtIGEgaGlnaC1sZXZlbCBURExTIG9wZXJhdGlvbiAoZS5nLiBURExTIGxpbmsgc2V0dXApLlxuICAqXG4gICogQHByb2JlX3BlZXI6IHByb2JlIGEgY29ubmVjdGVkIHBlZXIgKEFQOiBTVEEgTUFDIHJlcXVpcmVkOyBTVEE6IG5vIE1BQyksXG4tICpcdG11c3QgcmV0dXJuIGEgY29va2llIHRoYXQgaXMgbGF0ZXIgcGFzc2VkIHRvIGNmZzgwMjExX3Byb2JlX3N0YXR1cygpLlxuJiM0MzsgKlx0bXVzdCB1c2UgdGhlIEBjb29raWUgYXMgcHJvdmlkZWQgd2hpY2ggaXMgbGF0ZXIgcGFzc2VkIHRvXG4mIzQzOyAqXHRjZmc4MDIxMV9wcm9iZV9zdGF0dXMoKS5cbiAgKlxuICAqIEBzZXRfbm9hY2tfbWFwOiBTZXQgdGhlIE5vQWNrIE1hcCBmb3IgdGhlIFRJRHMuXG4gICpcbkBAIC01MjE5LDcgJiM0Mzs1MjIwLDggQEAgc3RydWN0IG1nbXRfZnJhbWVfcmVncyB7XG4gICogICAgIHVzZXIgc3BhY2VcbiAgKlxuICAqIEB0eF9jb250cm9sX3BvcnQ6IFRYIGEgY29udHJvbCBwb3J0IGZyYW1lIChFQVBvTCkuICBUaGUgbm9lbmNyeXB0IHBhcmFtZXRlclxuLSAqXHR0ZWxscyB0aGUgZHJpdmVyIHRoYXQgdGhlIGZyYW1lIHNob3VsZCBub3QgYmUgZW5jcnlwdGVkLlxuJiM0MzsgKlx0dGVsbHMgdGhlIGRyaXZlciB0aGF0IHRoZSBmcmFtZSBzaG91bGQgbm90IGJlIGVuY3J5cHRlZC4gQSBAY29va2llXG4mIzQzOyAqXHR2YWx1ZSBvZiAwIG1lYW5zIHRoZSBjYWxsZXIgZG9lcyBub3Qgd2FudCBUWCBzdGF0dXMgcmVwb3J0aW5nLlxuICAqXG4gICogQGdldF9mdG1fcmVzcG9uZGVyX3N0YXRzOiBSZXRyaWV2ZSBGVE0gcmVzcG9uZGVyIHN0YXRpc3RpY3MsIGlmIGF2YWlsYWJsZS5cbiAgKlx0U3RhdGlzdGljcyBzaG91bGQgYmUgY3VtdWxhdGl2ZSwgY3VycmVudGx5IG5vIHdheSB0byByZXNldCBpcyBwcm92aWRlZC5cbkBAIC01NDU2LDE0ICYjNDM7NTQ1OCwxNCBAQCBzdHJ1Y3QgY2ZnODAyMTFfb3BzIHtcbiBcdFx0XHRcdCAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuIFx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sXG4tXHRcdFx0XHQgICAgIHU2NCAqY29va2llLCBjb25zdCB1OCAqcnhfYWRkcik7XG4mIzQzO1x0XHRcdFx0ICAgICB1NjQgY29va2llLCBjb25zdCB1OCAqcnhfYWRkcik7XG4gXHRpbnRcdCgqY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0XHQgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdFx0ICAgIHU2NCBjb29raWUpO1xuIFxuIFx0aW50XHQoKm1nbXRfdHgpKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0ICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXG4tXHRcdFx0ICAgdTY0ICpjb29raWUpO1xuJiM0MztcdFx0XHQgICB1NjQgY29va2llKTtcbiBcdGludFx0KCptZ210X3R4X2NhbmNlbF93YWl0KShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICAgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHQgICAgICAgdTY0IGNvb2tpZSk7XG5AQCAtNTUxMCw3ICYjNDM7NTUxMiw3IEBAIHN0cnVjdCBjZmc4MDIxMV9vcHMge1xuIFx0XHRcdCAgICAgY29uc3QgdTggKnBlZXIsIGVudW0gbmw4MDIxMV90ZGxzX29wZXJhdGlvbiBvcGVyKTtcbiBcbiBcdGludFx0KCpwcm9iZV9wZWVyKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLVx0XHRcdCAgICAgIGNvbnN0IHU4ICpwZWVyLCB1NjQgKmNvb2tpZSk7XG4mIzQzO1x0XHRcdCAgICAgIGNvbnN0IHU4ICpwZWVyLCB1NjQgY29va2llKTtcbiBcbiBcdGludFx0KCpzZXRfbm9hY2tfbWFwKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuQEAgLTU2MDgsNyAmIzQzOzU2MTAsNyBAQCBzdHJ1Y3QgY2ZnODAyMTFfb3BzIHtcbiBcdFx0XHRcdCAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sXG4gXHRcdFx0XHQgICBjb25zdCB1OCAqZGVzdCwgY29uc3QgX19iZTE2IHByb3RvLFxuIFx0XHRcdFx0ICAgY29uc3QgYm9vbCBub2VuY3J5cHQsIGludCBsaW5rX2lkLFxuLVx0XHRcdFx0ICAgdTY0ICpjb29raWUpO1xuJiM0MztcdFx0XHRcdCAgIHU2NCBjb29raWUpO1xuIFxuIFx0aW50XHQoKmdldF9mdG1fcmVzcG9uZGVyX3N0YXRzKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvY2ZnLmMgYi9uZXQvbWFjODAyMTEvY2ZnLmNcbmluZGV4IDBhOTI0N2JlMjZhZmEuLjBjMmM3YWZkNTljNGEgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvY2ZnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9jZmcuY1xuQEAgLTQ4MzEsMTkgJiM0Mzs0ODMxLDYgQEAgaW50IGllZWU4MDIxMV9jaGFubmVsX3N3aXRjaChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0cmV0dXJuIF9faWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoKHdpcGh5LCBkZXYsIHBhcmFtcyk7XG4gfVxuIFxuLXU2NCBpZWVlODAyMTFfbWdtdF90eF9jb29raWUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXG4te1xuLVx0bG9ja2RlcF9hc3NlcnRfd2lwaHkobG9jYWwtXHUwMDNlaHcud2lwaHkpO1xuLVxuLVx0bG9jYWwtXHUwMDNlcm9jX2Nvb2tpZV9jb3VudGVyJiM0MzsmIzQzOztcbi1cbi1cdC8qIHdvdywgeW91IHdyYXBwZWQgNjQgYml0cyAuLi4gbW9yZSBsaWtlbHkgYSBidWcgKi9cbi1cdGlmIChXQVJOX09OKGxvY2FsLVx1MDAzZXJvY19jb29raWVfY291bnRlciA9PSAwKSlcbi1cdFx0bG9jYWwtXHUwMDNlcm9jX2Nvb2tpZV9jb3VudGVyJiM0MzsmIzQzOztcbi1cbi1cdHJldHVybiBsb2NhbC1cdTAwM2Vyb2NfY29va2llX2NvdW50ZXI7XG4tfVxuLVxuIGludCBpZWVlODAyMTFfYXR0YWNoX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICAgICB1NjQgKmNvb2tpZSwgZ2ZwX3QgZ2ZwKVxuIHtcbkBAIC00ODY4LDcgJiM0Mzs0ODU1LDYgQEAgaW50IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdElFRUU4MDIxMV9TS0JfQ0Ioc2tiKS1cdTAwM2VzdGF0dXNfZGF0YV9pZHIgPSAxO1xuIFx0SUVFRTgwMjExX1NLQl9DQihza2IpLVx1MDAzZXN0YXR1c19kYXRhID0gaWQ7XG4gXG4tXHQqY29va2llID0gaWVlZTgwMjExX21nbXRfdHhfY29va2llKGxvY2FsKTtcbiBcdElFRUU4MDIxMV9TS0JfQ0IoYWNrX3NrYiktXHUwMDNlYWNrLmNvb2tpZSA9ICpjb29raWU7XG4gXG4gXHRyZXR1cm4gMDtcbkBAIC00OTU0LDcgJiM0Mzs0OTQwLDcgQEAgc3RhdGljIGludCBpZWVlODAyMTFfc2V0X3Jla2V5X2RhdGEoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiB9XG4gXG4gc3RhdGljIGludCBpZWVlODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLVx0XHRcdFx0Y29uc3QgdTggKnBlZXIsIHU2NCAqY29va2llKVxuJiM0MztcdFx0XHRcdGNvbnN0IHU4ICpwZWVyLCB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcbiBcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5AQCAtNTA2MSw3ICYjNDM7NTA0Nyw3IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGlmIChxb3MpXG4gXHRcdG51bGxmdW5jLVx1MDAzZXFvc19jdHJsID0gY3B1X3RvX2xlMTYoNyk7XG4gXG4tXHRyZXQgPSBpZWVlODAyMTFfYXR0YWNoX2Fja19za2IobG9jYWwsIHNrYiwgY29va2llLCBHRlBfQVRPTUlDKTtcbiYjNDM7XHRyZXQgPSBpZWVlODAyMTFfYXR0YWNoX2Fja19za2IobG9jYWwsIHNrYiwgXHUwMDI2Y29va2llLCBHRlBfQVRPTUlDKTtcbiBcdGlmIChyZXQpIHtcbiBcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiByZXQ7XG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmggYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxuaW5kZXggYTFlZjg4ZmU4NDZkZC4uNTc2MWU5NjIxNDkxNCAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxuQEAgLTE3MTAsOCAmIzQzOzE3MTAsNiBAQCBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsIHtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgcm9jX2xpc3Q7XG4gXHRzdHJ1Y3Qgd2lwaHlfd29yayBod19yb2Nfc3RhcnQsIGh3X3JvY19kb25lO1xuIFx0dW5zaWduZWQgbG9uZyBod19yb2Nfc3RhcnRfdGltZTtcbi1cdHU2NCByb2NfY29va2llX2NvdW50ZXI7XG4tXG4gXHRzdHJ1Y3QgaWRyIGFja19zdGF0dXNfZnJhbWVzO1xuIFx0c3BpbmxvY2tfdCBhY2tfc3RhdHVzX2xvY2s7XG4gXG5AQCAtMTk5MSw3ICYjNDM7MTk4OSw2IEBAIHU2NCBpZWVlODAyMTFfcmVzZXRfZXJwX2luZm8oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpO1xuIFxuIHZvaWQgaWVlZTgwMjExX2hhbmRsZV9xdWV1ZWRfZnJhbWVzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKTtcbiBcbi11NjQgaWVlZTgwMjExX21nbXRfdHhfY29va2llKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKTtcbiBpbnQgaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAgICAgdTY0ICpjb29raWUsIGdmcF90IGdmcCk7XG4gXG5AQCAtMjE1MywxMiAmIzQzOzIxNTAsMTIgQEAgdm9pZCBpZWVlODAyMTFfcm9jX3B1cmdlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuIFx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XG4gaW50IGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuLVx0XHRcdFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcbiYjNDM7XHRcdFx0XHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXG4gXHRcdFx0XHRjb25zdCB1OCAqcnhfYWRkcik7XG4gaW50IGllZWU4MDIxMV9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdCAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LCB1NjQgY29va2llKTtcbiBpbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKTtcbiYjNDM7XHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKTtcbiBpbnQgaWVlZTgwMjExX21nbXRfdHhfY2FuY2VsX3dhaXQoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdCAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgdTY0IGNvb2tpZSk7XG4gXG5AQCAtMjIzNyw3ICYjNDM7MjIzNCw3IEBAIHZvaWQgX19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdFx0ICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdFx0ICB1MzIgaW5mb19mbGFncyxcbiBcdFx0XHRcdCAgdTMyIGN0cmxfZmxhZ3MsXG4tXHRcdFx0XHQgIHU2NCAqY29va2llKTtcbiYjNDM7XHRcdFx0XHQgIHU2NCBjb29raWUpO1xuIHN0cnVjdCBza19idWZmICpcbiBpZWVlODAyMTFfYnVpbGRfZGF0YV90ZW1wbGF0ZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mb19mbGFncyk7XG5AQCAtMjI1MSw3ICYjNDM7MjI0OCw3IEBAIHZvaWQgaWVlZTgwMjExX2NsZWFyX2Zhc3RfeG1pdChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSk7XG4gaW50IGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHQgICAgICBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLFxuIFx0XHRcdCAgICAgIGNvbnN0IHU4ICpkZXN0LCBfX2JlMTYgcHJvdG8sIGJvb2wgdW5lbmNyeXB0ZWQsXG4tXHRcdFx0ICAgICAgaW50IGxpbmtfaWQsIHU2NCAqY29va2llKTtcbiYjNDM7XHRcdFx0ICAgICAgaW50IGxpbmtfaWQsIHU2NCBjb29raWUpO1xuIGludCBpZWVlODAyMTFfcHJvYmVfbWVzaF9saW5rKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0ICAgICAgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbik7XG4gdm9pZCBfX2llZWU4MDIxMV94bWl0X2Zhc3Qoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL29mZmNoYW5uZWwuYyBiL25ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmNcbmluZGV4IDJiY2ViNzM3MTdjNjYuLjdhY2VmODBkNWYxZmIgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jXG5AQCAtNjAyLDE0ICYjNDM7NjAyLDEyIEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuIFxuIFx0LypcbiBcdCAqIGNvb2tpZSBpcyBlaXRoZXIgdGhlIHJvYyBjb29raWUgKGZvciBub3JtYWwgcm9jKVxuLVx0ICogb3IgdGhlIFNLQiAoZm9yIG1nbXQgVFgpXG4mIzQzO1x0ICogb3IgdGhlIG1nbXRfdHggY29va2llOyBib3RoIGFyZSBwcmUtYXNzaWduZWQgYnkgY2ZnODAyMTFcbiBcdCAqL1xuLVx0aWYgKCF0eHNrYikge1xuLVx0XHRyb2MtXHUwMDNlY29va2llID0gaWVlZTgwMjExX21nbXRfdHhfY29va2llKGxvY2FsKTtcbi1cdFx0KmNvb2tpZSA9IHJvYy1cdTAwM2Vjb29raWU7XG4tXHR9IGVsc2Uge1xuJiM0MztcdGlmICghdHhza2IpXG4mIzQzO1x0XHRyb2MtXHUwMDNlY29va2llID0gKmNvb2tpZTtcbiYjNDM7XHRlbHNlXG4gXHRcdHJvYy1cdTAwM2VtZ210X3R4X2Nvb2tpZSA9ICpjb29raWU7XG4tXHR9XG4gXG4gXHRyZXEgPSB3aXBoeV9kZXJlZmVyZW5jZShsb2NhbC1cdTAwM2Vody53aXBoeSwgbG9jYWwtXHUwMDNlc2Nhbl9yZXEpO1xuIFxuQEAgLTcwNCw3ICYjNDM7NzAyLDcgQEAgc3RhdGljIGludCBpZWVlODAyMTFfc3RhcnRfcm9jX3dvcmsoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4gXG4gaW50IGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuLVx0XHRcdFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcbiYjNDM7XHRcdFx0XHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXG4gXHRcdFx0XHRjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTtcbkBAIC03MTMsNyAmIzQzOzcxMSw3IEBAIGludCBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGxvY2FsLVx1MDAzZWh3LndpcGh5KTtcbiBcbiBcdHJldHVybiBpZWVlODAyMTFfc3RhcnRfcm9jX3dvcmsobG9jYWwsIHNkYXRhLCBjaGFuLFxuLVx0XHRcdFx0XHRkdXJhdGlvbiwgY29va2llLCBOVUxMLFxuJiM0MztcdFx0XHRcdFx0ZHVyYXRpb24sIFx1MDAyNmNvb2tpZSwgTlVMTCxcbiBcdFx0XHRcdFx0SUVFRTgwMjExX1JPQ19UWVBFX05PUk1BTCk7XG4gfVxuIFxuQEAgLTgxMCw3ICYjNDM7ODA4LDcgQEAgaW50IGllZWU4MDIxMV9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiB9XG4gXG4gaW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tXHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX1dERVZfVE9fU1VCX0lGKHdkZXYpO1xuIFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbkBAIC0xMDE2LDE4ICYjNDM7MTAxNCwxMSBAQCBpbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0LyogbWFrZSBhIGNvcHkgdG8gcHJlc2VydmUgdGhlIGZyYW1lIGNvbnRlbnRzXG4gXHRcdCAqIGluIGNhc2Ugb2YgZW5jcnlwdGlvbi5cbiBcdFx0ICovXG4tXHRcdHJldCA9IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihsb2NhbCwgc2tiLCBjb29raWUsIEdGUF9LRVJORUwpO1xuJiM0MztcdFx0cmV0ID0gaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKGxvY2FsLCBza2IsIFx1MDAyNmNvb2tpZSwgR0ZQX0tFUk5FTCk7XG4gXHRcdGlmIChyZXQpIHtcbiBcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXHRcdH1cbi1cdH0gZWxzZSB7XG4tXHRcdC8qIEFzc2lnbiBhIGR1bW15IG5vbi16ZXJvIGNvb2tpZSwgaXQmIzM5O3Mgbm90IHNlbnQgdG9cbi1cdFx0ICogdXNlcnNwYWNlIGluIHRoaXMgY2FzZSBidXQgd2UgcmVseSBvbiBpdHMgdmFsdWVcbi1cdFx0ICogaW50ZXJuYWxseSBpbiB0aGUgbmVlZF9vZmZjaGFuIGNhc2UgdG8gZGlzdGluZ3Vpc2hcbi1cdFx0ICogbWdtdC10eCBmcm9tIHJlbWFpbi1vbi1jaGFubmVsLlxuLVx0XHQgKi9cbi1cdFx0KmNvb2tpZSA9IDB4ZmZmZmZmZmY7XG4gXHR9XG4gXG4gXHRpZiAoIW5lZWRfb2ZmY2hhbikge1xuQEAgLTEwNDQsNyAmIzQzOzEwMzUsNyBAQCBpbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcbiBcdC8qIFRoaXMgd2lsbCBoYW5kbGUgYWxsIGtpbmRzIG9mIGNvYWxlc2NpbmcgYW5kIGltbWVkaWF0ZSBUWCAqL1xuIFx0cmV0ID0gaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKGxvY2FsLCBzZGF0YSwgcGFyYW1zLVx1MDAzZWNoYW4sXG4tXHRcdFx0XHQgICAgICAgcGFyYW1zLVx1MDAzZXdhaXQsIGNvb2tpZSwgc2tiLFxuJiM0MztcdFx0XHRcdCAgICAgICBwYXJhbXMtXHUwMDNld2FpdCwgXHUwMDI2Y29va2llLCBza2IsXG4gXHRcdFx0XHQgICAgICAgSUVFRTgwMjExX1JPQ19UWVBFX01HTVRfVFgpO1xuIFx0aWYgKHJldClcbiBcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3RkbHMuYyBiL25ldC9tYWM4MDIxMS90ZGxzLmNcbmluZGV4IGZmZDU3NWE4ZDE4OGYuLmRjMmY2NjJmZTRjNDYgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvdGRscy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvdGRscy5jXG5AQCAtMTEyMSw3ICYjNDM7MTEyMSw3IEBAIGllZWU4MDIxMV90ZGxzX3ByZXBfbWdtdF9wYWNrZXQoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdC8qIGRpc2FibGUgYm90dG9tIGhhbHZlcyB3aGVuIGVudGVyaW5nIHRoZSBUeCBwYXRoICovXG4gXHRsb2NhbF9iaF9kaXNhYmxlKCk7XG4gXHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgZGV2LCBmbGFncyxcbi1cdFx0XHRcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLCBOVUxMKTtcbiYjNDM7XHRcdFx0XHQgICAgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LX1VOU1BFQywgMCk7XG4gXHRsb2NhbF9iaF9lbmFibGUoKTtcbiBcbiBcdHJldHVybiByZXQ7XG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3R4LmMgYi9uZXQvbWFjODAyMTEvdHguY1xuaW5kZXggMGNmNWY2ZWM3NWU2Ny4uNDU0YTg3MmIyNTlhMyAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS90eC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvdHguY1xuQEAgLTI1ODMsNyAmIzQzOzI1ODMsNyBAQCBpbnQgaWVlZTgwMjExX2xvb2t1cF9yYV9zdGEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gc3RhdGljIHUxNiBpZWVlODAyMTFfc3RvcmVfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdFx0XHRcdCAgIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHQgICB1MzIgKmluZm9fZmxhZ3MsXG4tXHRcdFx0XHQgICB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0XHQgICB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBza19idWZmICphY2tfc2tiO1xuIFx0dTE2IGluZm9faWQgPSAwO1xuQEAgLTI2MDUsMTAgJiM0MzsyNjA1LDggQEAgc3RhdGljIHUxNiBpZWVlODAyMTFfc3RvcmVfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdFx0aWYgKGlkIFx1MDAzZT0gMCkge1xuIFx0XHRcdGluZm9faWQgPSBpZDtcbiBcdFx0XHQqaW5mb19mbGFncyB8PSBJRUVFODAyMTFfVFhfQ1RMX1JFUV9UWF9TVEFUVVM7XG4tXHRcdFx0aWYgKGNvb2tpZSkge1xuLVx0XHRcdFx0KmNvb2tpZSA9IGllZWU4MDIxMV9tZ210X3R4X2Nvb2tpZShsb2NhbCk7XG4tXHRcdFx0XHRJRUVFODAyMTFfU0tCX0NCKGFja19za2IpLVx1MDAzZWFjay5jb29raWUgPSAqY29va2llO1xuLVx0XHRcdH1cbiYjNDM7XHRcdFx0aWYgKGNvb2tpZSlcbiYjNDM7XHRcdFx0XHRJRUVFODAyMTFfU0tCX0NCKGFja19za2IpLVx1MDAzZWFjay5jb29raWUgPSBjb29raWU7XG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0a2ZyZWVfc2tiKGFja19za2IpO1xuIFx0XHR9XG5AQCAtMjY1Myw3ICYjNDM7MjY1MSw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9yZW1vdmVfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgdTE2IGluZm9faWQpXG4gc3RhdGljIHN0cnVjdCBza19idWZmICppZWVlODAyMTFfYnVpbGRfaGRyKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIFx0XHRcdFx0XHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mb19mbGFncyxcbiBcdFx0XHRcdFx0ICAgc3RydWN0IHN0YV9pbmZvICpzdGEsIHUzMiBjdHJsX2ZsYWdzLFxuLVx0XHRcdFx0XHQgICB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0XHRcdCAgIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbiBcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbztcbkBAIC00Mzc0LDcgJiM0Mzs0MzcyLDcgQEAgdm9pZCBfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHQgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0XHQgIHUzMiBpbmZvX2ZsYWdzLFxuIFx0XHRcdFx0ICB1MzIgY3RybF9mbGFncyxcbi1cdFx0XHRcdCAgdTY0ICpjb29raWUpXG4mIzQzO1x0XHRcdFx0ICB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcbiBcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5AQCAtNDU2OSw3ICYjNDM7NDU2Nyw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbG9fbXVsdGljYXN0X3R4X29uZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcdFx0cmV0dXJuO1xuIFxuIFx0Y3RybF9mbGFncyB8PSB1MzJfZW5jb2RlX2JpdHMobGlua19pZCwgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTkspO1xuLVx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChvdXQsIHNkYXRhLVx1MDAzZWRldiwgMCwgY3RybF9mbGFncywgTlVMTCk7XG4mIzQzO1x0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChvdXQsIHNkYXRhLVx1MDAzZWRldiwgMCwgY3RybF9mbGFncywgMCk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbG9fbXVsdGljYXN0X3R4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5AQCAtNDU4NCw4ICYjNDM7NDU4Miw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbG9fbXVsdGljYXN0X3R4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdGN0cmxfZmxhZ3MgfD0gdTMyX2VuY29kZV9iaXRzKF9fZmZzKGxpbmtzKSxcbiBcdFx0XHRcdFx0ICAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTkspO1xuIFxuLVx0XHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgc2RhdGEtXHUwMDNlZGV2LCAwLCBjdHJsX2ZsYWdzLFxuLVx0XHRcdFx0XHQgICAgIE5VTEwpO1xuJiM0MztcdFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIHNkYXRhLVx1MDAzZWRldiwgMCwgY3RybF9mbGFncywgMCk7XG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbkBAIC00NjI3LDcgJiM0Mzs0NjI0LDcgQEAgbmV0ZGV2X3R4X3QgaWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0d2hpbGUgKChza2IgPSBfX3NrYl9kZXF1ZXVlKFx1MDAyNnF1ZXVlKSkpXG4gXHRcdFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIGRldiwgMCxcbiBcdFx0XHRcdFx0XHQgICAgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LX1VOU1BFQyxcbi1cdFx0XHRcdFx0XHQgICAgIE5VTEwpO1xuJiM0MztcdFx0XHRcdFx0XHQgICAgIDApO1xuIFx0fSBlbHNlIGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAoKHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgICFpZWVlODAyMTFfaHdfY2hlY2soXHUwMDI2c2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlaHcsIE1MT19NQ0FTVF9NVUxUSV9MSU5LX1RYKSkgfHxcbkBAIC00NjM4LDcgJiM0Mzs0NjM1LDcgQEAgbmV0ZGV2X3R4X3QgaWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBub3JtYWw6XG4gXHRcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIDAsXG4gXHRcdFx0XHRcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLFxuLVx0XHRcdFx0XHQgICAgIE5VTEwpO1xuJiM0MztcdFx0XHRcdFx0ICAgICAwKTtcbiBcdH1cbiBcbiBcdHJldHVybiBORVRERVZfVFhfT0s7XG5AQCAtNDczNyw3ICYjNDM7NDczNCw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV84MDIzX3htaXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXHRcdFx0LyogZmFsbCBiYWNrIHRvIG5vbi1vZmZsb2FkIHNsb3cgcGF0aCAqL1xuIFx0XHRcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIDAsXG4gXHRcdFx0XHRcdFx0ICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsXG4tXHRcdFx0XHRcdFx0ICAgICBOVUxMKTtcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICAwKTtcbiBcdFx0XHRyZXR1cm47XG4gXHRcdH1cbiBcbkBAIC00NzczLDcgJiM0Mzs0NzcwLDcgQEAgc3RhdGljIHZvaWQgaWVlZTgwMjExXzgwMjNfeG1pdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcbiBcdGlmICh1bmxpa2VseShza19yZXF1ZXN0c193aWZpX3N0YXR1cyhza2ItXHUwMDNlc2spKSkge1xuIFx0XHRpbmZvLVx1MDAzZXN0YXR1c19kYXRhID0gaWVlZTgwMjExX3N0b3JlX2Fja19za2IobG9jYWwsIHNrYixcbi1cdFx0XHRcdFx0XHRcdCAgICBcdTAwMjZpbmZvLVx1MDAzZWZsYWdzLCBOVUxMKTtcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgXHUwMDI2aW5mby1cdTAwM2VmbGFncywgMCk7XG4gXHRcdGlmIChpbmZvLVx1MDAzZXN0YXR1c19kYXRhKVxuIFx0XHRcdGluZm8tXHUwMDNlc3RhdHVzX2RhdGFfaWRyID0gMTtcbiBcdH1cbkBAIC00OTE2LDcgJiM0Mzs0OTEzLDcgQEAgaWVlZTgwMjExX2J1aWxkX2RhdGFfdGVtcGxhdGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXHR9XG4gXG4gXHRza2IgPSBpZWVlODAyMTFfYnVpbGRfaGRyKHNkYXRhLCBza2IsIGluZm9fZmxhZ3MsIHN0YSxcbi1cdFx0XHRcdCAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLCBOVUxMKTtcbiYjNDM7XHRcdFx0XHQgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LX1VOU1BFQywgMCk7XG4gXHRpZiAoSVNfRVJSKHNrYikpXG4gXHRcdGdvdG8gb3V0O1xuIFxuQEAgLTY1MzEsNyAmIzQzOzY1MjgsNyBAQCB2b2lkIGllZWU4MDIxMV90eF9za2JfdGlkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIGludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0ICAgICAgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbixcbiBcdFx0XHQgICAgICBjb25zdCB1OCAqZGVzdCwgX19iZTE2IHByb3RvLCBib29sIHVuZW5jcnlwdGVkLFxuLVx0XHRcdCAgICAgIGludCBsaW5rX2lkLCB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0ICAgICAgaW50IGxpbmtfaWQsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xuIFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbkBAIC02NjY2LDcgJiM0Mzs2NjYzLDcgQEAgaW50IGllZWU4MDIxMV9wcm9iZV9tZXNoX2xpbmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGxvY2FsX2JoX2Rpc2FibGUoKTtcbiBcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBza2ItXHUwMDNlZGV2LCAwLFxuIFx0XHRcdFx0ICAgICBJRUVFODAyMTFfVFhfQ1RSTF9TS0lQX01QQVRIX0xPT0tVUCxcbi1cdFx0XHRcdCAgICAgTlVMTCk7XG4mIzQzO1x0XHRcdFx0ICAgICAwKTtcbiBcdGxvY2FsX2JoX2VuYWJsZSgpO1xuIFxuIFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL2NvcmUuaCBiL25ldC93aXJlbGVzcy9jb3JlLmhcbmluZGV4IDE1ZDlmN2ViNThiNGQuLmI0NjEwZjY2ODVkY2IgMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3MvY29yZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3MvY29yZS5oXG5AQCAtNDAyLDcgJiM0Mzs0MDIsNyBAQCB2b2lkIGNmZzgwMjExX21sbWVfcHVyZ2VfcmVnaXN0cmF0aW9ucyhzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2KTtcbiBpbnQgY2ZnODAyMTFfbWxtZV9tZ210X3R4KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdFx0XHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0ICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcyxcbi1cdFx0XHQgIHU2NCAqY29va2llKTtcbiYjNDM7XHRcdFx0ICB1NjQgY29va2llKTtcbiB2b2lkIGNmZzgwMjExX29wZXJfYW5kX2h0X2NhcGEoc3RydWN0IGllZWU4MDIxMV9odF9jYXAgKmh0X2NhcGEsXG4gXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaHRfY2FwICpodF9jYXBhX21hc2spO1xuIHZvaWQgY2ZnODAyMTFfb3Blcl9hbmRfdmh0X2NhcGEoc3RydWN0IGllZWU4MDIxMV92aHRfY2FwICp2aHRfY2FwYSxcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3MvbWxtZS5jIGIvbmV0L3dpcmVsZXNzL21sbWUuY1xuaW5kZXggNzgyNGI3YWMyNzcwZi4uYTBkMWNkZTI2ZjBjOSAxMDA2NDRcbi0tLSBhL25ldC93aXJlbGVzcy9tbG1lLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC93aXJlbGVzcy9tbG1lLmNcbkBAIC04OTQsNyAmIzQzOzg5NCw3IEBAIHN0YXRpYyBib29sIGNmZzgwMjExX2FsbG93ZWRfcmFuZG9tX2FkZHJlc3Moc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcbiBpbnQgY2ZnODAyMTFfbWxtZV9tZ210X3R4KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdFx0XHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tXHRcdFx0ICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXG4mIzQzO1x0XHRcdCAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xuIFx0dTE2IHN0eXBlO1xuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9ubDgwMjExLmMgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG5pbmRleCA4YWRiZWY1ZjA0NDI1Li5hYzg5NWUwMmNkNDExIDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xuQEAgLTE0NjQyLDggJiM0MzsxNDY0Miw5IEBAIHN0YXRpYyBpbnQgbmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRnb3RvIGZyZWVfbXNnO1xuIFx0fVxuIFxuJiM0MztcdGNvb2tpZSA9IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7XG4gXHRlcnIgPSByZGV2X3JlbWFpbl9vbl9jaGFubmVsKHJkZXYsIHdkZXYsIGNoYW5kZWYuY2hhbixcbi1cdFx0XHRcdCAgICAgZHVyYXRpb24sIFx1MDAyNmNvb2tpZSwgcnhfYWRkcik7XG4mIzQzO1x0XHRcdFx0ICAgICBkdXJhdGlvbiwgY29va2llLCByeF9hZGRyKTtcbiBcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZnJlZV9tc2c7XG5AQCAtMTQ4ODMsNyAmIzQzOzE0ODg0LDggQEAgc3RhdGljIGludCBubDgwMjExX3R4X21nbXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiBcdH1cbiBcbiBcdHBhcmFtcy5jaGFuID0gY2hhbmRlZi5jaGFuO1xuLVx0ZXJyID0gY2ZnODAyMTFfbWxtZV9tZ210X3R4KHJkZXYsIHdkZXYsIFx1MDAyNnBhcmFtcywgXHUwMDI2Y29va2llKTtcbiYjNDM7XHRjb29raWUgPSBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpO1xuJiM0MztcdGVyciA9IGNmZzgwMjExX21sbWVfbWdtdF90eChyZGV2LCB3ZGV2LCBcdTAwMjZwYXJhbXMsIGNvb2tpZSk7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGZyZWVfbXNnO1xuIFxuQEAgLTE2MzcxLDcgJiM0MzsxNjM3Myw4IEBAIHN0YXRpYyBpbnQgbmw4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXHRcdGdvdG8gZnJlZV9tc2c7XG4gXHR9XG4gXG4tXHRlcnIgPSByZGV2X3Byb2JlX3BlZXIocmRldiwgZGV2LCBhZGRyLCBcdTAwMjZjb29raWUpO1xuJiM0MztcdGNvb2tpZSA9IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7XG4mIzQzO1x0ZXJyID0gcmRldl9wcm9iZV9wZWVyKHJkZXYsIGRldiwgYWRkciwgY29va2llKTtcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZnJlZV9tc2c7XG4gXG5AQCAtMTg1ODYsMTAgJiM0MzsxODU4OSwxMSBAQCBzdGF0aWMgaW50IG5sODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXG4gXHRsaW5rX2lkID0gbmw4MDIxMV9saW5rX2lkX29yX2ludmFsaWQoaW5mby1cdTAwM2VhdHRycyk7XG4gXG4mIzQzO1x0Y29va2llID0gZG9udF93YWl0X2Zvcl9hY2sgPyAwIDogY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcbiBcdGVyciA9IHJkZXZfdHhfY29udHJvbF9wb3J0KHJkZXYsIGRldiwgYnVmLCBsZW4sXG4gXHRcdFx0XHQgICBkZXN0LCBjcHVfdG9fYmUxNihwcm90byksIG5vZW5jcnlwdCwgbGlua19pZCxcbi1cdFx0XHRcdCAgIGRvbnRfd2FpdF9mb3JfYWNrID8gTlVMTCA6IFx1MDAyNmNvb2tpZSk7XG4tXHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgIWRvbnRfd2FpdF9mb3JfYWNrKVxuJiM0MztcdFx0XHRcdCAgIGNvb2tpZSk7XG4mIzQzO1x0aWYgKCFlcnIgXHUwMDI2XHUwMDI2IGNvb2tpZSlcbiBcdFx0bmxfc2V0X2V4dGFja19jb29raWVfdTY0KGluZm8tXHUwMDNlZXh0YWNrLCBjb29raWUpO1xuIFx0cmV0dXJuIGVycjtcbiB9XG5AQCAtMjIwNDIsNiAmIzQzOzIyMDQ2LDEwIEBAIHN0YXRpYyB2b2lkIG5sODAyMTFfZnJhbWVfdHhfc3RhdHVzKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqbXNnO1xuIFx0dm9pZCAqaGRyO1xuIFxuJiM0MztcdC8qIHVzZXJzcGFjZSBub3QgaW50ZXJlc3RlZCBpbiB6ZXJvLWNvb2tpZSBzdGF0dXMgKi9cbiYjNDM7XHRpZiAoIXN0YXR1cy1cdTAwM2Vjb29raWUpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0aWYgKGNvbW1hbmQgPT0gTkw4MDIxMV9DTURfRlJBTUVfVFhfU1RBVFVTKVxuIFx0XHR0cmFjZV9jZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBzdGF0dXMtXHUwMDNlY29va2llLFxuIFx0XHRcdFx0XHQgICAgICBzdGF0dXMtXHUwMDNlYWNrKTtcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3MvcmRldi1vcHMuaCBiL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oXG5pbmRleCA2YzNiYWQ4YjJkNmY2Li40Njg0OWZlOGQwYjM5IDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL3JkZXYtb3BzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oXG5AQCAtNzM2LDE0ICYjNDM7NzM2LDE0IEBAIHN0YXRpYyBpbmxpbmUgaW50XG4gcmRldl9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4gXHRcdCAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuLVx0XHQgICAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpXG4mIzQzO1x0XHQgICAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLCBjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRpbnQgcmV0O1xuIFx0dHJhY2VfcmRldl9yZW1haW5fb25fY2hhbm5lbChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCB3ZGV2LCBjaGFuLCBkdXJhdGlvbixcbiBcdFx0XHRcdCAgICAgcnhfYWRkcik7XG4gXHRyZXQgPSByZGV2LVx1MDAzZW9wcy1cdTAwM2VyZW1haW5fb25fY2hhbm5lbChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCB3ZGV2LCBjaGFuLFxuIFx0XHRcdFx0XHQgICBkdXJhdGlvbiwgY29va2llLCByeF9hZGRyKTtcbi1cdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgcmV0LCAqY29va2llKTtcbiYjNDM7XHR0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHJldCwgY29va2llKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTc2MSwxMiAmIzQzOzc2MSwxMiBAQCByZGV2X2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4gc3RhdGljIGlubGluZSBpbnQgcmRldl9tZ210X3R4KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdFx0XHQgICAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHQgICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXG4tXHRcdFx0ICAgICAgIHU2NCAqY29va2llKVxuJiM0MztcdFx0XHQgICAgICAgdTY0IGNvb2tpZSlcbiB7XG4gXHRpbnQgcmV0O1xuIFx0dHJhY2VfcmRldl9tZ210X3R4KFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHdkZXYsIHBhcmFtcyk7XG4gXHRyZXQgPSByZGV2LVx1MDAzZW9wcy1cdTAwM2VtZ210X3R4KFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHdkZXYsIHBhcmFtcywgY29va2llKTtcbi1cdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgcmV0LCAqY29va2llKTtcbiYjNDM7XHR0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHJldCwgY29va2llKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTc3NSw3ICYjNDM7Nzc1LDcgQEAgc3RhdGljIGlubGluZSBpbnQgcmRldl90eF9jb250cm9sX3BvcnQoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuIFx0XHRcdFx0ICAgICAgIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbixcbiBcdFx0XHRcdCAgICAgICBjb25zdCB1OCAqZGVzdCwgX19iZTE2IHByb3RvLFxuIFx0XHRcdFx0ICAgICAgIGNvbnN0IGJvb2wgbm9lbmNyeXB0LCBpbnQgbGluayxcbi1cdFx0XHRcdCAgICAgICB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0XHQgICAgICAgdTY0IGNvb2tpZSlcbiB7XG4gXHRpbnQgcmV0O1xuIFx0dHJhY2VfcmRldl90eF9jb250cm9sX3BvcnQoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgZGV2LCBidWYsIGxlbixcbkBAIC03ODMsNyAmIzQzOzc4Myw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJkZXZfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdHJldCA9IHJkZXYtXHUwMDNlb3BzLVx1MDAzZXR4X2NvbnRyb2xfcG9ydChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCBkZXYsIGJ1ZiwgbGVuLFxuIFx0XHRcdFx0XHQgZGVzdCwgcHJvdG8sIG5vZW5jcnlwdCwgbGluaywgY29va2llKTtcbiBcdGlmIChjb29raWUpXG4tXHRcdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgcmV0LCAqY29va2llKTtcbiYjNDM7XHRcdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgcmV0LCBjb29raWUpO1xuIFx0ZWxzZVxuIFx0XHR0cmFjZV9yZGV2X3JldHVybl9pbnQoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgcmV0KTtcbiBcdHJldHVybiByZXQ7XG5AQCAtOTUwLDEyICYjNDM7OTUwLDEyIEBAIHN0YXRpYyBpbmxpbmUgaW50IHJkZXZfdGRsc19vcGVyKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcbiBzdGF0aWMgaW5saW5lIGludCByZGV2X3Byb2JlX3BlZXIoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuIFx0XHRcdFx0ICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqcGVlcixcbi1cdFx0XHRcdCAgdTY0ICpjb29raWUpXG4mIzQzO1x0XHRcdFx0ICB1NjQgY29va2llKVxuIHtcbiBcdGludCByZXQ7XG4gXHR0cmFjZV9yZGV2X3Byb2JlX3BlZXIoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgZGV2LCBwZWVyKTtcbiBcdHJldCA9IHJkZXYtXHUwMDNlb3BzLVx1MDAzZXByb2JlX3BlZXIoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgZGV2LCBwZWVyLCBjb29raWUpO1xuLVx0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCByZXQsICpjb29raWUpO1xuJiM0MztcdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgcmV0LCBjb29raWUpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTk6MjI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbCYjMzQ7LAogICAgJiMzNDtubDgwMjExX3R4X21nbXQmIzM0OywKICAgICYjMzQ7bmw4MDIxMV9wcm9iZV9wZWVyJiMzNDssCiAgICAmIzM0O25sODAyMTFfdHhfY29udHJvbF9wb3J0JiMzNDssCiAgICAmIzM0O2NmZzgwMjExX21sbWVfbWdtdF90eCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWwmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX21nbXRfdHgmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3Byb2JlX3BlZXImIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfYXR0YWNoX2Fja19za2ImIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3N0YXJ0X3JvY193b3JrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgaG93IGNvb2tpZXMgYXJlIGdlbmVyYXRlZCBhbmQgcGFzc2VkIGZvciBzZXZlcmFsIG5sODAyMTEgY29tbWFuZHMgKHJlbWFpbl9vbl9jaGFubmVsLCB0eF9tZ210LCBwcm9iZV9wZWVyLCB0eF9jb250cm9sX3BvcnQpLiBJdCBtb2RpZmllcyB0aGUgY29yZSBjZmc4MDIxMSBhbmQgbWFjODAyMTEgbG9naWMgdG8gZ2VuZXJhdGUgY29va2llcyBpbiBubDgwMjExIGFuZCBwYXNzIHRoZW0gYnkgdmFsdWUgdG8gZHJpdmVycywgaW5zdGVhZCBvZiBoYXZpbmcgZHJpdmVycyBnZW5lcmF0ZSB0aGVtIGFuZCBwYXNzIHRoZW0gYmFjayB2aWEgcG9pbnRlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSB3aXJlbGVzcyBzdGFjayBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGRiNjQ3ZjQwM2Q5OWE0MzY5MDQzZGYzYzA1ZWVhNWRkZjg0MDgwNWQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAxIDE5OjIyOjM2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jCmluZGV4IGVjZGU5MTE1OWI1NDYuLjM0MDI1ZDY0ZDYxNTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMKQEAgLTMwMzQsMjAgJiM0MzszMDM0LDE0IEBAIHN0YXRpYyBpbnQgYXRoNmtsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJCQkJICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCQkJICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiwKIAkJCQkgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLAotCQkJCSAgICB1NjQgKmNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpCiYjNDM7CQkJCSAgICB1NjQgY29va2llLCBjb25zdCB1OCAqcnhfYWRkcikKIHsKIAlzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmID0gYXRoNmtsX3ZpZl9mcm9tX3dkZXYod2Rldik7CiAJc3RydWN0IGF0aDZrbCAqYXIgPSBhdGg2a2xfcHJpdih2aWYtJmd0O25kZXYpOwotCXUzMiBpZDsKIAogCS8qIFRPRE86IGlmIGFscmVhZHkgcGVuZGluZyBvciBvbmdvaW5nIHJlbWFpbi1vbi1jaGFubmVsLAogCSAqIHJldHVybiAtRUJVU1kgKi8KLQlpZCA9ICYjNDM7JiM0Mzt2aWYtJmd0O2xhc3Rfcm9jX2lkOwotCWlmIChpZCA9PSAwKSB7Ci0JCS8qIERvIG5vdCB1c2UgMCBhcyB0aGUgY29va2llIHZhbHVlICovCi0JCWlkID0gJiM0MzsmIzQzO3ZpZi0mZ3Q7bGFzdF9yb2NfaWQ7Ci0JfQotCSpjb29raWUgPSBpZDsKJiM0MzsJdmlmLSZndDtsYXN0X3JvY19pZCA9IGNvb2tpZTsKIAogCXJldHVybiBhdGg2a2xfd21pX3JlbWFpbl9vbl9jaG5sX2NtZChhci0mZ3Q7d21pLCB2aWYtJmd0O2Z3X3ZpZl9pZHgsCiAJCQkJCSAgICAgY2hhbi0mZ3Q7Y2VudGVyX2ZyZXEsIGR1cmF0aW9uKTsKQEAgLTMxMDYsNiAmIzQzOzMxMDAsNyBAQCBzdGF0aWMgaW50IGF0aDZrbF9zZW5kX2dvX3Byb2JlX3Jlc3Aoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwKIAogc3RhdGljIGJvb2wgYXRoNmtsX21nbXRfcG93ZXJzYXZlX2FwKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsCiAJCQkJICAgICB1MzIgaWQsCiYjNDM7CQkJCSAgICAgdTY0IGNvb2tpZSwKIAkJCQkgICAgIHUzMiBmcmVxLAogCQkJCSAgICAgdTMyIHdhaXQsCiAJCQkJICAgICBjb25zdCB1OCAqYnVmLApAQCAtMzEzOCw2ICYjNDM7MzEzMyw3IEBAIHN0YXRpYyBib29sIGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLAogCiAJCQlJTklUX0xJU1RfSEVBRCgmYW1wO21nbXRfYnVmLSZndDtsaXN0KTsKIAkJCW1nbXRfYnVmLSZndDtpZCA9IGlkOwomIzQzOwkJCW1nbXRfYnVmLSZndDtjb29raWUgPSBjb29raWU7CiAJCQltZ210X2J1Zi0mZ3Q7ZnJlcSA9IGZyZXE7CiAJCQltZ210X2J1Zi0mZ3Q7d2FpdCA9IHdhaXQ7CiAJCQltZ210X2J1Zi0mZ3Q7bGVuID0gbGVuOwpAQCAtMzE5MCw3ICYjNDM7MzE4Niw3IEBAIHN0YXRpYyBib29sIGF0aDZrbF9pc19wMnBfZ29fc3NpZChjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKQogfQogCiBzdGF0aWMgaW50IGF0aDZrbF9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCi0JCQkgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSkKJiM0MzsJCQkgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKQogewogCXN0cnVjdCBhdGg2a2xfdmlmICp2aWYgPSBhdGg2a2xfdmlmX2Zyb21fd2Rldih3ZGV2KTsKIAlzdHJ1Y3QgYXRoNmtsICphciA9IGF0aDZrbF9wcml2KHZpZi0mZ3Q7bmRldik7CkBAIC0zMjIyLDcgJiM0MzszMjE4LDYgQEAgc3RhdGljIGludCBhdGg2a2xfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkgKiBTZW5kIFByb2JlIFJlc3BvbnNlIGZyYW1lIGluIEdPIG1vZGUgdXNpbmcgYSBzZXBhcmF0ZSBXTUkKIAkJICogY29tbWFuZCB0byBhbGxvdyB0aGUgdGFyZ2V0IHRvIGZpbGwgaW4gdGhlIGdlbmVyaWMgSUVzLgogCQkgKi8KLQkJKmNvb2tpZSA9IDA7IC8qIFRYIHN0YXR1cyBub3Qgc3VwcG9ydGVkICovCiAJCXJldHVybiBhdGg2a2xfc2VuZF9nb19wcm9iZV9yZXNwKHZpZiwgYnVmLCBsZW4sIGZyZXEpOwogCX0KIApAQCAtMzIzNSwxNiAmIzQzOzMyMzAsMTUgQEAgc3RhdGljIGludCBhdGg2a2xfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQlpZCA9IHZpZi0mZ3Q7c2VuZF9hY3Rpb25faWQmIzQzOyYjNDM7OwogCX0KIAotCSpjb29raWUgPSBpZDsKLQogCS8qIEFQIG1vZGUgUG93ZXIgc2F2aW5nIHByb2Nlc3NpbmcgKi8KIAlpZiAodmlmLSZndDtud190eXBlID09IEFQX05FVFdPUkspIHsKLQkJcXVldWVkID0gYXRoNmtsX21nbXRfcG93ZXJzYXZlX2FwKHZpZiwgaWQsIGZyZXEsIHdhaXQsIGJ1ZiwgbGVuLAotCQkJCQkJICAmYW1wO21vcmVfZGF0YSwgbm9fY2NrKTsKJiM0MzsJCXF1ZXVlZCA9IGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcCh2aWYsIGlkLCBjb29raWUsIGZyZXEsIHdhaXQsCiYjNDM7CQkJCQkJICBidWYsIGxlbiwgJmFtcDttb3JlX2RhdGEsIG5vX2Njayk7CiAJCWlmIChxdWV1ZWQpCiAJCQlyZXR1cm4gMDsKIAl9CiAKJiM0MzsJYXItJmd0O3dtaS0mZ3Q7bGFzdF9tZ210X3R4X2Nvb2tpZSA9IGNvb2tpZTsKIAlyZXR1cm4gYXRoNmtsX3dtaV9zZW5kX21nbXRfY21kKGFyLSZndDt3bWksIHZpZi0mZ3Q7ZndfdmlmX2lkeCwgaWQsIGZyZXEsCiAJCQkJCXdhaXQsIGJ1ZiwgbGVuLCBub19jY2spOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaAppbmRleCA3N2UwNTIzMzZlYjViLi5hMGIyMzZlZWVhYjU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaApAQCAtNDA0LDYgJiM0Mzs0MDQsNyBAQCBzdHJ1Y3QgYXRoNmtsX21nbXRfYnVmZiB7CiAJdTMyIGZyZXE7CiAJdTMyIHdhaXQ7CiAJdTMyIGlkOwomIzQzOwl1NjQgY29va2llOwogCWJvb2wgbm9fY2NrOwogCXNpemVfdCBsZW47CiAJdTggYnVmW107CkBAIC02MzEsOCAmIzQzOzYzMiw4IEBAIHN0cnVjdCBhdGg2a2xfdmlmIHsKIAlzdHJ1Y3QgY2ZnODAyMTFfc2Nhbl9yZXF1ZXN0ICpzY2FuX3JlcTsKIAllbnVtIHNtZV9zdGF0ZSBzbWVfc3RhdGU7CiAJaW50IHJlY29ubmVjdF9mbGFnOwotCXUzMiBsYXN0X3JvY19pZDsKLQl1MzIgbGFzdF9jYW5jZWxfcm9jX2lkOwomIzQzOwl1NjQgbGFzdF9yb2NfaWQ7CiYjNDM7CXU2NCBsYXN0X2NhbmNlbF9yb2NfaWQ7CiAJdTMyIHNlbmRfYWN0aW9uX2lkOwogCWJvb2wgcHJvYmVfcmVxX3JlcG9ydDsKIAl1MTYgYXNzb2NfYnNzX2JlYWNvbl9pbnQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jCmluZGV4IDhhZmM2NTg5ZmM1MWUuLjljMDIzZDdjZTMwNTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jCkBAIC04OTgsNiAmIzQzOzg5OCw3IEBAIHZvaWQgYXRoNmtsX3BzcG9sbF9ldmVudChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCBhaWQpCiAJCXNwaW5fdW5sb2NrX2JoKCZhbXA7Y29ubi0mZ3Q7cHNxX2xvY2spOwogCiAJCWNvbm4tJmd0O3N0YV9mbGFncyB8PSBTVEFfUFNfUE9MTEVEOwomIzQzOwkJYXItJmd0O3dtaS0mZ3Q7bGFzdF9tZ210X3R4X2Nvb2tpZSA9IG1nbXRfYnVmLSZndDtjb29raWU7CiAJCWF0aDZrbF93bWlfc2VuZF9tZ210X2NtZChhci0mZ3Q7d21pLCB2aWYtJmd0O2Z3X3ZpZl9pZHgsCiAJCQkJCSBtZ210X2J1Zi0mZ3Q7aWQsIG1nbXRfYnVmLSZndDtmcmVxLAogCQkJCQkgbWdtdF9idWYtJmd0O3dhaXQsIG1nbXRfYnVmLSZndDtidWYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jCmluZGV4IGQ4MTgyNTQxMzkwNjEuLjYwOWQ0NThjYTZjNTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jCkBAIC0xNDY5LDYgJiM0MzsxNDY5LDcgQEAgdm9pZCBhdGg2a2xfcngoc3RydWN0IGh0Y190YXJnZXQgKnRhcmdldCwgc3RydWN0IGh0Y19wYWNrZXQgKnBhY2tldCkKIAkJCQkJc3Bpbl91bmxvY2tfYmgoJmFtcDtjb25uLSZndDtwc3FfbG9jayk7CiAJCQkJCWlkeCA9IHZpZi0mZ3Q7ZndfdmlmX2lkeDsKIAomIzQzOwkJCQkJYXItJmd0O3dtaS0mZ3Q7bGFzdF9tZ210X3R4X2Nvb2tpZSA9IG1nbXQtJmd0O2Nvb2tpZTsKIAkJCQkJYXRoNmtsX3dtaV9zZW5kX21nbXRfY21kKGFyLSZndDt3bWksCiAJCQkJCQkJCSBpZHgsCiAJCQkJCQkJCSBtZ210LSZndDtpZCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jCmluZGV4IDZjMjlmMGJjZWM5ZjUuLjIxNDBmZGRiYThiYWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYwpAQCAtNTk2LDcgJiM0Mzs1OTYsNyBAQCBzdGF0aWMgaW50IGF0aDZrbF93bWlfdHhfc3RhdHVzX2V2ZW50X3J4KHN0cnVjdCB3bWkgKndtaSwgdTggKmRhdGFwLCBpbnQgbGVuLAogCWF0aDZrbF9kYmcoQVRINktMX0RCR19XTUksICYjMzQ7dHhfc3RhdHVzOiBpZD0leCBhY2tfc3RhdHVzPSV1XG4mIzM0OywKIAkJICAgaWQsIGV2LSZndDthY2tfc3RhdHVzKTsKIAlpZiAod21pLSZndDtsYXN0X21nbXRfdHhfZnJhbWUpIHsKLQkJY2ZnODAyMTFfbWdtdF90eF9zdGF0dXMoJmFtcDt2aWYtJmd0O3dkZXYsIGlkLAomIzQzOwkJY2ZnODAyMTFfbWdtdF90eF9zdGF0dXMoJmFtcDt2aWYtJmd0O3dkZXYsIHdtaS0mZ3Q7bGFzdF9tZ210X3R4X2Nvb2tpZSwKIAkJCQkJd21pLSZndDtsYXN0X21nbXRfdHhfZnJhbWUsCiAJCQkJCXdtaS0mZ3Q7bGFzdF9tZ210X3R4X2ZyYW1lX2xlbiwKIAkJCQkJISFldi0mZ3Q7YWNrX3N0YXR1cywgR0ZQX0FUT01JQyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaAppbmRleCA4ZmJlY2UzZmRhZDlmLi44OWNlMmFiYmIxY2RjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmgKQEAgLTEyNSw2ICYjNDM7MTI1LDcgQEAgc3RydWN0IHdtaSB7CiAKIAl1OCAqbGFzdF9tZ210X3R4X2ZyYW1lOwogCXNpemVfdCBsYXN0X21nbXRfdHhfZnJhbWVfbGVuOwomIzQzOwl1NjQgbGFzdF9tZ210X3R4X2Nvb2tpZTsKIAl1OCBzYXZlZF9wd3JfbW9kZTsKIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9jZmc4MDIxMS5jCmluZGV4IDVmMmJkOWEzMWZhZjYuLjlhYzMzZDgyN2Y4MDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuYwpAQCAtMTQzMiw3ICYjNDM7MTQzMiw3IEBAIHN0YXRpYyBpbnQgd2lsX2NmZzgwMjExX3NldF93aXBoeV9wYXJhbXMoc3RydWN0IHdpcGh5ICp3aXBoeSwgaW50IHJhZGlvX2lkeCwKIAogaW50IHdpbF9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCQkgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsCi0JCQkgdTY0ICpjb29raWUpCiYjNDM7CQkJIHU2NCBjb29raWUpCiB7CiAJY29uc3QgdTggKmJ1ZiA9IHBhcmFtcy0mZ3Q7YnVmOwogCXNpemVfdCBsZW4gPSBwYXJhbXMtJmd0O2xlbjsKQEAgLTE0ODgsOCAmIzQzOzE0ODgsNyBAQCBpbnQgd2lsX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkgKi8KIAl0eF9zdGF0dXMgPSAocmMgPT0gMCk7CiAJcmMgPSAocmMgPT0gLUVBR0FJTikgPyAwIDogcmM7Ci0JY2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llID8gKmNvb2tpZSA6IDAsIGJ1ZiwgbGVuLAotCQkJCXR4X3N0YXR1cywgR0ZQX0tFUk5FTCk7CiYjNDM7CWNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHR4X3N0YXR1cywgR0ZQX0tFUk5FTCk7CiAKIAlyZXR1cm4gcmM7CiB9CkBAIC0xNzM1LDcgJiM0MzsxNzM0LDcgQEAgc3RhdGljIGludCB3aWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAkJCQkgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJCQkgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLAogCQkJCSB1bnNpZ25lZCBpbnQgZHVyYXRpb24sCi0JCQkJIHU2NCAqY29va2llLCBjb25zdCB1OCAqcnhfYWRkcikKJiM0MzsJCQkJIHU2NCBjb29raWUsIGNvbnN0IHU4ICpyeF9hZGRyKQogewogCXN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCA9IHdpcGh5X3RvX3dpbCh3aXBoeSk7CiAJaW50IHJjOwpAQCAtMjM4MSw3ICYjNDM7MjM4MCw3IEBAIHZvaWQgd2lsX3Byb2JlX2NsaWVudF9mbHVzaChzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZikKIAogc3RhdGljIGludCB3aWxfY2ZnODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCQkJCSAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCi0JCQkJICAgY29uc3QgdTggKnBlZXIsIHU2NCAqY29va2llKQomIzQzOwkJCQkgICBjb25zdCB1OCAqcGVlciwgdTY0IGNvb2tpZSkKIHsKIAlzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwgPSB3aXBoeV90b193aWwod2lwaHkpOwogCXN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmID0gbmRldl90b192aWYoZGV2KTsKQEAgLTIzOTksMTMgJiM0MzsyMzk4LDEyIEBAIHN0YXRpYyBpbnQgd2lsX2NmZzgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAkJcmV0dXJuIC1FTk9NRU07CiAKIAlyZXEtJmd0O2NpZCA9IGNpZDsKLQlyZXEtJmd0O2Nvb2tpZSA9IGNpZDsKJiM0MzsJcmVxLSZndDtjb29raWUgPSBjb29raWU7CiAKIAltdXRleF9sb2NrKCZhbXA7dmlmLSZndDtwcm9iZV9jbGllbnRfbXV0ZXgpOwogCWxpc3RfYWRkX3RhaWwoJmFtcDtyZXEtJmd0O2xpc3QsICZhbXA7dmlmLSZndDtwcm9iZV9jbGllbnRfcGVuZGluZyk7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7dmlmLSZndDtwcm9iZV9jbGllbnRfbXV0ZXgpOwogCi0JKmNvb2tpZSA9IHJlcS0mZ3Q7Y29va2llOwogCXF1ZXVlX3dvcmsod2lsLSZndDt3cV9zZXJ2aWNlLCAmYW1wO3ZpZi0mZ3Q7cHJvYmVfY2xpZW50X3dvcmtlcik7CiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9kZWJ1Z2ZzLmMKaW5kZXggYjhjYjczNmE3MTg1Mi4uZTA2ZTQ1MzIzMjcyYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvZGVidWdmcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2RlYnVnZnMuYwpAQCAtOTg1LDcgJiM0Mzs5ODUsNyBAQCBzdGF0aWMgc3NpemVfdCB3aWxfd3JpdGVfZmlsZV90eG1nbXQoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICpidWYsCiAJcGFyYW1zLmJ1ZiA9IGZyYW1lOwogCXBhcmFtcy5sZW4gPSBsZW47CiAKLQlyYyA9IHdpbF9jZmc4MDIxMV9tZ210X3R4KHdpcGh5LCB3ZGV2LCAmYW1wO3BhcmFtcywgTlVMTCk7CiYjNDM7CXJjID0gd2lsX2NmZzgwMjExX21nbXRfdHgod2lwaHksIHdkZXYsICZhbXA7cGFyYW1zLCAwKTsKIAogCWtmcmVlKGZyYW1lKTsKIAl3aWxfaW5mbyh3aWwsICYjMzQ7LSZndDsgJWRcbiYjMzQ7LCByYyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9wMnAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3AycC5jCmluZGV4IGYyMGNhZjFhMzkwNWIuLmFjZDhhMmUzNTEwMzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3AycC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3AycC5jCkBAIC0xMjQsNyAmIzQzOzEyNCw3IEBAIGludCB3aWxfcDJwX3NlYXJjaChzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZiwKIAogaW50IHdpbF9wMnBfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sCi0JCSAgIHU2NCAqY29va2llKQomIzQzOwkJICAgdTY0IGNvb2tpZSkKIHsKIAlzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZiA9IHdkZXZfdG9fdmlmKHdpbCwgd2Rldik7CiAJc3RydWN0IHdpbF9wMnBfaW5mbyAqcDJwID0gJmFtcDt2aWYtJmd0O3AycDsKQEAgLTE0NCw3ICYjNDM7MTQ0LDcgQEAgaW50IHdpbF9wMnBfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAl9CiAKIAltZW1jcHkoJmFtcDtwMnAtJmd0O2xpc3Rlbl9jaGFuLCBjaGFuLCBzaXplb2YoKmNoYW4pKTsKLQkqY29va2llID0gJiM0MzsmIzQzO3AycC0mZ3Q7Y29va2llOwomIzQzOwlwMnAtJmd0O2Nvb2tpZSA9IGNvb2tpZTsKIAlwMnAtJmd0O2xpc3Rlbl9kdXJhdGlvbiA9IGR1cmF0aW9uOwogCiAJbXV0ZXhfbG9jaygmYW1wO3dpbC0mZ3Q7dmlmX211dGV4KTsKQEAgLTE2Niw3ICYjNDM7MTY2LDcgQEAgaW50IHdpbF9wMnBfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAlpZiAodmlmLSZndDttaWQgPT0gMCkKIAkJd2lsLSZndDtyYWRpb193ZGV2ID0gd2RldjsKIAotCWNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgKmNvb2tpZSwgY2hhbiwgZHVyYXRpb24sCiYjNDM7CWNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLCBkdXJhdGlvbiwKIAkJCQkgIEdGUF9LRVJORUwpOwogCiBvdXQ6CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93aWw2MjEwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93aWw2MjEwLmgKaW5kZXggMzFlMTA3YzgxZTJkNC4uZjhlNjBiZTYzMWNhNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd2lsNjIxMC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dpbDYyMTAuaApAQCAtMTMwMSw3ICYjNDM7MTMwMSw3IEBAIGludCB3aWxfcDJwX3NlYXJjaChzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZiwKIAkJICAgc3RydWN0IGNmZzgwMjExX3NjYW5fcmVxdWVzdCAqcmVxdWVzdCk7CiBpbnQgd2lsX3AycF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiwKLQkJICAgdTY0ICpjb29raWUpOwomIzQzOwkJICAgdTY0IGNvb2tpZSk7CiB1OCB3aWxfcDJwX3N0b3BfZGlzY292ZXJ5KHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmKTsKIGludCB3aWxfcDJwX2NhbmNlbF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfdmlmICp2aWYsIHU2NCBjb29raWUpOwogdm9pZCB3aWxfcDJwX2xpc3Rlbl9leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CkBAIC0xMzE3LDcgJiM0MzsxMzE3LDcgQEAgaW50IHdtaV9zdG9wX2Rpc2NvdmVyeShzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZik7CiAKIGludCB3aWxfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLAotCQkJIHU2NCAqY29va2llKTsKJiM0MzsJCQkgdTY0IGNvb2tpZSk7CiB2b2lkIHdpbF9jZmc4MDIxMV9hcF9yZWNvdmVyeShzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwpOwogaW50IHdpbF9jZmc4MDIxMV9pZmFjZV9jb21iaW5hdGlvbnNfZnJvbV9mdygKIAlzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jCmluZGV4IDZiMmMzNGUzYTc5NmMuLjg3MmM0ODgwNmQwOTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jCkBAIC01NTU0LDcgJiM0Mzs1NTU0LDcgQEAgYnJjbWZfY2ZnODAyMTFfdXBkYXRlX21nbXRfZnJhbWVfcmVnaXN0cmF0aW9ucyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCiBpbnQKIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKLQkJICAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSkKJiM0MzsJCSAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSkKIHsKIAlzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnID0gd2lwaHlfdG9fY2ZnKHdpcGh5KTsKIAlzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4gPSBwYXJhbXMtJmd0O2NoYW47CkBAIC01NTczLDggJiM0Mzs1NTczLDYgQEAgYnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCiAJYnJjbWZfZGJnKFRSQUNFLCAmIzM0O0VudGVyXG4mIzM0Oyk7CiAKLQkqY29va2llID0gMDsKLQogCW1nbXQgPSAoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICopYnVmOwogCiAJaWYgKCFpZWVlODAyMTFfaXNfbWdtdChtZ210LSZndDtmcmFtZV9jb250cm9sKSkgewpAQCAtNTYwNSw3ICYjNDM7NTYwMyw3IEBAIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJCQkJICAgIEJSQ01GX1ZORFJfSUVfUFJCUlNQX0ZMQUcsCiAJCQkJCSAgICAmYW1wO2J1ZltpZV9vZmZzZXRdLAogCQkJCQkgICAgaWVfbGVuKTsKLQkJY2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIHRydWUsCiYjNDM7CQljZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBjb29raWUsIGJ1ZiwgbGVuLCB0cnVlLAogCQkJCQlHRlBfS0VSTkVMKTsKIAl9IGVsc2UgaWYgKGllZWU4MDIxMV9pc19hY3Rpb24obWdtdC0mZ3Q7ZnJhbWVfY29udHJvbCkpIHsKIAkJaWYgKGxlbiAmZ3Q7IEJSQ01GX0ZJTF9BQ1RJT05fRlJBTUVfU0laRSAmIzQzOyBET1QxMV9NR01UX0hEUl9MRU4pIHsKQEAgLTU2MjEsNyAmIzQzOzU2MTksNyBAQCBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCX0KIAkJYWN0aW9uX2ZyYW1lID0gJmFtcDthZl9wYXJhbXMtJmd0O2FjdGlvbl9mcmFtZTsKIAkJLyogQWRkIHRoZSBwYWNrZXQgSWQgKi8KLQkJYWN0aW9uX2ZyYW1lLSZndDtwYWNrZXRfaWQgPSBjcHVfdG9fbGUzMigqY29va2llKTsKJiM0MzsJCWFjdGlvbl9mcmFtZS0mZ3Q7cGFja2V0X2lkID0gY3B1X3RvX2xlMzIoY29va2llKTsKIAkJLyogQWRkIEJTU0lEICovCiAJCW1lbWNweSgmYW1wO2FjdGlvbl9mcmFtZS0mZ3Q7ZGFbMF0sICZhbXA7bWdtdC0mZ3Q7ZGFbMF0sIEVUSF9BTEVOKTsKIAkJbWVtY3B5KCZhbXA7YWZfcGFyYW1zLSZndDtic3NpZFswXSwgJmFtcDttZ210LSZndDtic3NpZFswXSwgRVRIX0FMRU4pOwpAQCAtNTY0OSwxMiAmIzQzOzU2NDcsMTIgQEAgYnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkgICAgICAgbGUxNl90b19jcHUoYWN0aW9uX2ZyYW1lLSZndDtsZW4pKTsKIAogCQlicmNtZl9kYmcoVFJBQ0UsICYjMzQ7QWN0aW9uIGZyYW1lLCBjb29raWU9JWxsZCwgbGVuPSVkLCBjaGFubmVsPSVkXG4mIzM0OywKLQkJCSAgKmNvb2tpZSwgbGUxNl90b19jcHUoYWN0aW9uX2ZyYW1lLSZndDtsZW4pLAomIzQzOwkJCSAgY29va2llLCBsZTE2X3RvX2NwdShhY3Rpb25fZnJhbWUtJmd0O2xlbiksCiAJCQkgIGxlMzJfdG9fY3B1KGFmX3BhcmFtcy0mZ3Q7Y2hhbm5lbCkpOwogCiAJCWFjayA9IGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZSh2aWYtJmd0O2lmcCwgYWZfcGFyYW1zKTsKIAotCQljZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCAqY29va2llLCBidWYsIGxlbiwgYWNrLAomIzQzOwkJY2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgYWNrLAogCQkJCQlHRlBfS0VSTkVMKTsKIGZyZWU6CiAJCWtmcmVlKGFmX3BhcmFtcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oCmluZGV4IDZjZWIzMDE0MjkwNTQuLjYzZTUzNDUyM2Y1MTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oCkBAIC00OTcsNiAmIzQzOzQ5Nyw2IEBAIHZvaWQgYnJjbWZfY2ZnODAyMTFfZnJlZV92aWYoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpOwogCiBpbnQgYnJjbWZfc2V0X3dzZWMoc3RydWN0IGJyY21mX2lmICppZnAsIGNvbnN0IHU4ICprZXksIHUxNiBrZXlfbGVuLCB1MTYgZmxhZ3MpOwogaW50IGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKLQkJCSAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSk7CiYjNDM7CQkJICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpOwogCiAjZW5kaWYgLyogQlJDTUZNQUNfQ0ZHODAyMTFfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYwppbmRleCA4NzM3NTRiZTUxNzRiLi41NDVlYjlhYWU5NjYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYwpAQCAtMTAwLDcgJiM0MzsxMDAsNyBAQCBzdGF0aWMgaW50IGJyY21mX2N5d19hY3RpdmF0ZV9ldmVudHMoc3RydWN0IGJyY21mX2lmICppZnApCiAKIHN0YXRpYwogaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCi0JCSAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSkKJiM0MzsJCSAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKQogewogCXN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcgPSB3aXBoeV90b19jZmcod2lwaHkpOwogCXN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiA9IHBhcmFtcy0mZ3Q7Y2hhbjsKQEAgLTEyMyw3ICYjNDM7MTIzLDYgQEAgaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJaWYgKCFpZWVlODAyMTFfaXNfYXV0aChtZ210LSZndDtmcmFtZV9jb250cm9sKSkKIAkJcmV0dXJuIGJyY21mX2NmZzgwMjExX21nbXRfdHgod2lwaHksIHdkZXYsIHBhcmFtcywgY29va2llKTsKIAotCSpjb29raWUgPSAwOwogCXZpZiA9IGNvbnRhaW5lcl9vZih3ZGV2LCBzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfdmlmLCB3ZGV2KTsKIAogCXJlaW5pdF9jb21wbGV0aW9uKCZhbXA7dmlmLSZndDttZ210X3R4KTsKQEAgLTE1NSw3ICYjNDM7MTU0LDcgQEAgaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAKIAltZW1jcHkoJmFtcDttZl9wYXJhbXMtJmd0O2RhWzBdLCAmYW1wO21nbXQtJmd0O2RhWzBdLCBFVEhfQUxFTik7CiAJbWVtY3B5KCZhbXA7bWZfcGFyYW1zLSZndDtic3NpZFswXSwgJmFtcDttZ210LSZndDtic3NpZFswXSwgRVRIX0FMRU4pOwotCW1mX3BhcmFtcy0mZ3Q7cGFja2V0X2lkID0gY3B1X3RvX2xlMzIoKmNvb2tpZSk7CiYjNDM7CW1mX3BhcmFtcy0mZ3Q7cGFja2V0X2lkID0gY3B1X3RvX2xlMzIoY29va2llKTsKIAltZW1jcHkobWZfcGFyYW1zLSZndDtkYXRhLCAmYW1wO2J1ZltET1QxMV9NR01UX0hEUl9MRU5dLAogCSAgICAgICBsZTE2X3RvX2NwdShtZl9wYXJhbXMtJmd0O2xlbikpOwogCkBAIC0xODcsOCAmIzQzOzE4Niw3IEBAIGludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCX0KIAogdHhfc3RhdHVzOgotCWNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsICpjb29raWUsIGJ1ZiwgbGVuLCBhY2ssCi0JCQkJR0ZQX0tFUk5FTCk7CiYjNDM7CWNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIGFjaywgR0ZQX0tFUk5FTCk7CiBmcmVlOgogCWtmcmVlKG1mX3BhcmFtcyk7CiAJcmV0dXJuIGVycjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYwppbmRleCBjN2Q3YjM1YWIxMjUzLi4zMmEwMTVkNmI3Njk4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jCkBAIC05NzksMTAgJiM0Mzs5NzksOCBAQCBicmNtZl9wMnBfZGlzY292ZXJfbGlzdGVuKHN0cnVjdCBicmNtZl9wMnBfaW5mbyAqcDJwLCB1MTYgY2hhbm5lbCwgdTMyIGR1cmF0aW9uKQogCXAycC0mZ3Q7Y2ZnLSZndDtkMTFpbmYuZW5jY2hzcGVjKCZhbXA7Y2gpOwogCWVyciA9IGJyY21mX3AycF9zZXRfZGlzY292ZXJfc3RhdGUodmlmLSZndDtpZnAsIFdMX1AyUF9ESVNDX1NUX0xJU1RFTiwKIAkJCQkJICAgY2guY2hzcGVjLCAodTE2KWR1cmF0aW9uKTsKLQlpZiAoIWVycikgewomIzQzOwlpZiAoIWVycikKIAkJc2V0X2JpdChCUkNNRl9QMlBfU1RBVFVTX0RJU0NPVkVSX0xJU1RFTiwgJmFtcDtwMnAtJmd0O3N0YXR1cyk7Ci0JCXAycC0mZ3Q7cmVtYWluX29uX2NoYW5uZWxfY29va2llJiM0MzsmIzQzOzsKLQl9CiBleGl0OgogCXJldHVybiBlcnI7CiB9CkBAIC0xMDAwLDcgJiM0Mzs5OTgsNyBAQCBicmNtZl9wMnBfZGlzY292ZXJfbGlzdGVuKHN0cnVjdCBicmNtZl9wMnBfaW5mbyAqcDJwLCB1MTYgY2hhbm5lbCwgdTMyIGR1cmF0aW9uKQogICovCiBpbnQgYnJjbWZfcDJwX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCQkJc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsLAotCQkJCXVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsCiYjNDM7CQkJCXVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSwKIAkJCQljb25zdCB1OCAqcnhfYWRkcikKIHsKIAlzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnID0gd2lwaHlfdG9fY2ZnKHdpcGh5KTsKQEAgLTEwMjAsOCAmIzQzOzEwMTgsOCBAQCBpbnQgYnJjbWZfcDJwX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCWdvdG8gZXhpdDsKIAogCW1lbWNweSgmYW1wO3AycC0mZ3Q7cmVtYWluX29uX2NoYW5uZWwsIGNoYW5uZWwsIHNpemVvZigqY2hhbm5lbCkpOwotCSpjb29raWUgPSBwMnAtJmd0O3JlbWFpbl9vbl9jaGFubmVsX2Nvb2tpZTsKLQljZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW5uZWwsIGR1cmF0aW9uLCBHRlBfS0VSTkVMKTsKJiM0MzsJcDJwLSZndDtyZW1haW5fb25fY2hhbm5lbF9jb29raWUgPSBjb29raWU7CiYjNDM7CWNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFubmVsLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7CiAKIGV4aXQ6CiAJcmV0dXJuIGVycjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaAppbmRleCA5ZjNmMDFhZGUyYjc3Li43MDc4MDA5NDkxNzA3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oCkBAIC0xNTcsNyAmIzQzOzE1Nyw3IEBAIGludCBicmNtZl9wMnBfc2Nhbl9wcmVwKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJCQlzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfdmlmICp2aWYpOwogaW50IGJyY21mX3AycF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJCXN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbm5lbCwKLQkJCQl1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLAomIzQzOwkJCQl1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsCiAJCQkJY29uc3QgdTggKnJ4X2FkZHIpOwogaW50IGJyY21mX3AycF9ub3RpZnlfbGlzdGVuX2NvbXBsZXRlKHN0cnVjdCBicmNtZl9pZiAqaWZwLAogCQkJCSAgICAgY29uc3Qgc3RydWN0IGJyY21mX2V2ZW50X21zZyAqZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMKaW5kZXggOGVjMmQyMmE4YzMzYS4uN2ExYmEzMmYxZmIzNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMKQEAgLTE5Niw3ICYjNDM7MTk2LDcgQEAgbXdpZmlleF9mb3JtX21nbXRfZnJhbWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbikKICAqLwogc3RhdGljIGludAogbXdpZmlleF9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCi0JCQkgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKQomIzQzOwkJCSBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSkKIHsKIAljb25zdCB1OCAqYnVmID0gcGFyYW1zLSZndDtidWY7CiAJc2l6ZV90IGxlbiA9IHBhcmFtcy0mZ3Q7bGVuOwpAQCAtMjU5LDE0ICYjNDM7MjU5LDEzIEBAIG13aWZpZXhfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCXR4X2luZm8tJmd0O3BrdF9sZW4gPSBwa3RfbGVuOwogCiAJbXdpZmlleF9mb3JtX21nbXRfZnJhbWUoc2tiLCBidWYsIGxlbik7Ci0JKmNvb2tpZSA9IGdldF9yYW5kb21fdTMyKCkgfCAxOwogCiAJaWYgKGllZWU4MDIxMV9pc19hY3Rpb24obWdtdC0mZ3Q7ZnJhbWVfY29udHJvbCkpCiAJCXNrYiA9IG13aWZpZXhfY2xvbmVfc2tiX2Zvcl90eF9zdGF0dXMocHJpdiwKIAkJCQkJCSAgICAgIHNrYiwKLQkJCQlNV0lGSUVYX0JVRl9GTEFHX0FDVElPTl9UWF9TVEFUVVMsIGNvb2tpZSk7CiYjNDM7CQkJCU1XSUZJRVhfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgJmFtcDtjb29raWUpOwogCWVsc2UKLQkJY2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIHRydWUsCiYjNDM7CQljZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBjb29raWUsIGJ1ZiwgbGVuLCB0cnVlLAogCQkJCQlHRlBfQVRPTUlDKTsKIAogCW13aWZpZXhfcXVldWVfdHhfcGt0KHByaXYsIHNrYik7CkBAIC0zMDQsMTMgJiM0MzszMDMsMTMgQEAgc3RhdGljIGludAogbXdpZmlleF9jZmc4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCQkJCSAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCQkJICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLAotCQkJCSAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsCiYjNDM7CQkJCSAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSwKIAkJCQkgICBjb25zdCB1OCAqcnhfYWRkcikKIHsKIAlzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2ID0gbXdpZmlleF9uZXRkZXZfZ2V0X3ByaXYod2Rldi0mZ3Q7bmV0ZGV2KTsKIAlpbnQgcmV0OwogCi0JaWYgKCFjaGFuIHx8ICFjb29raWUpIHsKJiM0MzsJaWYgKCFjaGFuKSB7CiAJCW13aWZpZXhfZGJnKHByaXYtJmd0O2FkYXB0ZXIsIEVSUk9SLCAmIzM0O0ludmFsaWQgcGFyYW1ldGVyIGZvciBST0NcbiYjMzQ7KTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQpAQCAtMzI2LDE1ICYjNDM7MzI1LDE0IEBAIG13aWZpZXhfY2ZnODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAkJCQkJIGR1cmF0aW9uKTsKIAogCWlmICghcmV0KSB7Ci0JCSpjb29raWUgPSBnZXRfcmFuZG9tX3UzMigpIHwgMTsKLQkJcHJpdi0mZ3Q7cm9jX2NmZy5jb29raWUgPSAqY29va2llOwomIzQzOwkJcHJpdi0mZ3Q7cm9jX2NmZy5jb29raWUgPSBjb29raWU7CiAJCXByaXYtJmd0O3JvY19jZmcuY2hhbiA9ICpjaGFuOwogCi0JCWNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgKmNvb2tpZSwgY2hhbiwKJiM0MzsJCWNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLAogCQkJCQkgIGR1cmF0aW9uLCBHRlBfQVRPTUlDKTsKIAogCQltd2lmaWV4X2RiZyhwcml2LSZndDthZGFwdGVyLCBJTkZPLAotCQkJICAgICYjMzQ7aW5mbzogUk9DLCBjb29raWUgPSAweCVsbHhcbiYjMzQ7LCAqY29va2llKTsKJiM0MzsJCQkgICAgJiMzNDtpbmZvOiBST0MsIGNvb2tpZSA9IDB4JWxseFxuJiMzNDssIGNvb2tpZSk7CiAJfQogCiAJcmV0dXJuIHJldDsKQEAgLTQ1NjAsNyAmIzQzOzQ1NTgsNyBAQCBtd2lmaWV4X2NmZzgwMjExX2Rpc2Fzc29jaWF0ZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogc3RhdGljIGludAogbXdpZmlleF9jZmc4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJCQkgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKnBlZXIsCi0JCQkgICAgdTY0ICpjb29raWUpCiYjNDM7CQkJICAgIHU2NCBjb29raWUpCiB7CiAJLyogaG9zdGFwZCBsb29rcyBmb3IgTkw4MDIxMV9DTURfUFJPQkVfQ0xJRU5UIHN1cHBvcnQ7IG90aGVyd2lzZSwKIAkgKiBpdCByZXF1aXJlcyBtb25pdG9yLW1vZGUgc3VwcG9ydCAod2hpY2ggbXdpZmlleCBkb2VzbiYjMzk7dCBzdXBwb3J0KS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2NmZzgwMjExLmMKaW5kZXggNjY1NGZjZTRkZWQ4NC4uYmIyNzQ4YTE5MzI5NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2NmZzgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2NmZzgwMjExLmMKQEAgLTExMDAsMjQgJiM0MzsxMTAwLDE5IEBAIHN0YXRpYyB2b2lkIHdpbGNfd2ZpX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQoc3RydWN0IHdpbGNfdmlmICp2aWYsIHU2NCBjb29raWUpCiBzdGF0aWMgaW50IHJlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJCQkgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCQkgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiwKLQkJCSAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSwKJiM0MzsJCQkgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSwKIAkJCSAgICAgY29uc3QgdTggKnJ4X2FkZHIpCiB7CiAJaW50IHJldCA9IDA7CiAJc3RydWN0IHdpbGNfdmlmICp2aWYgPSBuZXRkZXZfcHJpdih3ZGV2LSZndDtuZXRkZXYpOwogCXN0cnVjdCB3aWxjX3ByaXYgKnByaXYgPSAmYW1wO3ZpZi0mZ3Q7cHJpdjsKLQl1NjQgaWQ7CiAKIAlpZiAod2Rldi0mZ3Q7aWZ0eXBlID09IE5MODAyMTFfSUZUWVBFX0FQKSB7CiAJCW5ldGRldl9kYmcodmlmLSZndDtuZGV2LCAmIzM0O1JlcXVpcmVkIHdoaWxlIGluIEFQIG1vZGVcbiYjMzQ7KTsKIAkJcmV0dXJuIHJldDsKIAl9CiAKLQlpZCA9ICYjNDM7JiM0Mztwcml2LSZndDtpbmNfcm9jX2Nvb2tpZTsKLQlpZiAoaWQgPT0gMCkKLQkJaWQgPSAmIzQzOyYjNDM7cHJpdi0mZ3Q7aW5jX3JvY19jb29raWU7Ci0KLQlyZXQgPSB3aWxjX3JlbWFpbl9vbl9jaGFubmVsKHZpZiwgaWQsIGNoYW4tJmd0O2h3X3ZhbHVlLAomIzQzOwlyZXQgPSB3aWxjX3JlbWFpbl9vbl9jaGFubmVsKHZpZiwgY29va2llLCBjaGFuLSZndDtod192YWx1ZSwKIAkJCQkgICAgIHdpbGNfd2ZpX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CkBAIC0xMTI1LDEyICYjNDM7MTEyMCwxMSBAQCBzdGF0aWMgaW50IHJlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJdmlmLSZndDt3aWxjLSZndDtvcF9jaCA9IGNoYW4tJmd0O2h3X3ZhbHVlOwogCiAJcHJpdi0mZ3Q7cmVtYWluX29uX2NoX3BhcmFtcy5saXN0ZW5fY2ggPSBjaGFuOwotCXByaXYtJmd0O3JlbWFpbl9vbl9jaF9wYXJhbXMubGlzdGVuX2Nvb2tpZSA9IGlkOwotCSpjb29raWUgPSBpZDsKJiM0MzsJcHJpdi0mZ3Q7cmVtYWluX29uX2NoX3BhcmFtcy5saXN0ZW5fY29va2llID0gY29va2llOwogCXByaXYtJmd0O3AycF9saXN0ZW5fc3RhdGUgPSB0cnVlOwogCXByaXYtJmd0O3JlbWFpbl9vbl9jaF9wYXJhbXMubGlzdGVuX2R1cmF0aW9uID0gZHVyYXRpb247CiAKLQljZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sIGR1cmF0aW9uLCBHRlBfS0VSTkVMKTsKJiM0MzsJY2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCBjb29raWUsIGNoYW4sIGR1cmF0aW9uLCBHRlBfS0VSTkVMKTsKIAltb2RfdGltZXIoJmFtcDt2aWYtJmd0O2hpZl9kcnYtJmd0O3JlbWFpbl9vbl9jaF90aW1lciwKIAkJICBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoZHVyYXRpb24gJiM0MzsgMTAwMCkpOwogCkBAIC0xMTUzLDcgJiM0MzsxMTQ3LDcgQEAgc3RhdGljIGludCBjYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwKIHN0YXRpYyBpbnQgbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCQkgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywKLQkJICAgdTY0ICpjb29raWUpCiYjNDM7CQkgICB1NjQgY29va2llKQogewogCXN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiA9IHBhcmFtcy0mZ3Q7Y2hhbjsKIAl1bnNpZ25lZCBpbnQgd2FpdCA9IHBhcmFtcy0mZ3Q7d2FpdDsKQEAgLTExNzAsOCAmIzQzOzExNjQsNyBAQCBzdGF0aWMgaW50IG1nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAljb25zdCB1OCAqdmVuZG9yX2llOwogCWludCByZXQgPSAwOwogCi0JKmNvb2tpZSA9IGdldF9yYW5kb21fdTMyKCk7Ci0JcHJpdi0mZ3Q7dHhfY29va2llID0gKmNvb2tpZTsKJiM0MzsJcHJpdi0mZ3Q7dHhfY29va2llID0gY29va2llOwogCW1nbXQgPSAoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICopYnVmOwogCiAJaWYgKCFpZWVlODAyMTFfaXNfbWdtdChtZ210LSZndDtmcmFtZV9jb250cm9sKSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jCmluZGV4IDRmOWUyMGY3MjgxMTQuLmM4MjBmMDhkMjgzNTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYwpAQCAtMTUwLDcgJiM0MzsxNTAsNyBAQCBueHB3aWZpX2Zvcm1fbWdtdF9mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKQogLyogY2ZnODAyMTEgb3BlcmF0aW9uIGhhbmRsZXIgdG8gdHJhbnNtaXQgYSBtYW5hZ2VtZW50IGZyYW1lLiAqLwogc3RhdGljIGludAogbnhwd2lmaV9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCi0JCQkgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKQomIzQzOwkJCSBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSkKIHsKIAljb25zdCB1OCAqYnVmID0gcGFyYW1zLSZndDtidWY7CiAJc2l6ZV90IGxlbiA9IHBhcmFtcy0mZ3Q7bGVuOwpAQCAtMjEyLDE0ICYjNDM7MjEyLDEzIEBAIG54cHdpZmlfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCXR4X2luZm8tJmd0O3BrdF9sZW4gPSBwa3RfbGVuOwogCiAJbnhwd2lmaV9mb3JtX21nbXRfZnJhbWUoc2tiLCBidWYsIGxlbik7Ci0JKmNvb2tpZSA9IG54cHdpZmlfcm9jX2Nvb2tpZShwcml2LSZndDthZGFwdGVyKTsKIAogCWlmIChpZWVlODAyMTFfaXNfYWN0aW9uKG1nbXQtJmd0O2ZyYW1lX2NvbnRyb2wpKQogCQlza2IgPSBueHB3aWZpX2Nsb25lX3NrYl9mb3JfdHhfc3RhdHVzKHByaXYsCiAJCQkJCQkgICAgICBza2IsCi0JCQkJTlhQV0lGSV9CVUZfRkxBR19BQ1RJT05fVFhfU1RBVFVTLCBjb29raWUpOwomIzQzOwkJCQlOWFBXSUZJX0JVRl9GTEFHX0FDVElPTl9UWF9TVEFUVVMsICZhbXA7Y29va2llKTsKIAllbHNlCi0JCWNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsICpjb29raWUsIGJ1ZiwgbGVuLCB0cnVlLAomIzQzOwkJY2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgdHJ1ZSwKIAkJCQkJR0ZQX0FUT01JQyk7CiAKIAlueHB3aWZpX3F1ZXVlX3R4X3BrdChwcml2LCBza2IpOwpAQCAtMjU0LDE0ICYjNDM7MjUzLDE0IEBAIHN0YXRpYyBpbnQKIG54cHdpZmlfY2ZnODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAkJCQkgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJCSAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiwKLQkJCQkgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLAomIzQzOwkJCQkgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsCiAJCQkJICAgY29uc3QgdTggKnJ4X2FkZHIpCiB7CiAJc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdiA9IG54cHdpZmlfbmV0ZGV2X2dldF9wcml2KHdkZXYtJmd0O25ldGRldik7CiAJc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtJmd0O2FkYXB0ZXI7CiAJaW50IHJldDsKIAotCWlmICghY2hhbiB8fCAhY29va2llKSB7CiYjNDM7CWlmICghY2hhbikgewogCQlueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUiwgJiMzNDtJbnZhbGlkIHBhcmFtZXRlciBmb3IgUk9DXG4mIzM0Oyk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KQEAgLTI3NywxNSAmIzQzOzI3NiwxNCBAQCBueHB3aWZpX2NmZzgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJCQkJCSBkdXJhdGlvbik7CiAKIAlpZiAoIXJldCkgewotCQkqY29va2llID0gbnhwd2lmaV9yb2NfY29va2llKGFkYXB0ZXIpOwotCQlwcml2LSZndDtyb2NfY2ZnLmNvb2tpZSA9ICpjb29raWU7CiYjNDM7CQlwcml2LSZndDtyb2NfY2ZnLmNvb2tpZSA9IGNvb2tpZTsKIAkJcHJpdi0mZ3Q7cm9jX2NmZy5jaGFuID0gKmNoYW47CiAKLQkJY2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCAqY29va2llLCBjaGFuLAomIzQzOwkJY2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCBjb29raWUsIGNoYW4sCiAJCQkJCSAgZHVyYXRpb24sIEdGUF9BVE9NSUMpOwogCiAJCW54cHdpZmlfZGJnKGFkYXB0ZXIsIElORk8sCi0JCQkgICAgJiMzNDtpbmZvOiBST0MsIGNvb2tpZSA9IDB4JWxseFxuJiMzNDssICpjb29raWUpOwomIzQzOwkJCSAgICAmIzM0O2luZm86IFJPQywgY29va2llID0gMHglbGx4XG4mIzM0OywgY29va2llKTsKIAl9CiAKIAlyZXR1cm4gcmV0OwpAQCAtMzYxOCw3ICYjNDM7MzYxNiw3IEBAIG54cHdpZmlfY2ZnODAyMTFfZGlzYXNzb2NpYXRlKHN0cnVjdCB3aXBoeSAqd2lwaHksCiBzdGF0aWMgaW50CiBueHB3aWZpX2NmZzgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAkJCSAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICpwZWVyLAotCQkJICAgICAgdTY0ICpjb29raWUpCiYjNDM7CQkJICAgICAgdTY0IGNvb2tpZSkKIHsKIAkvKgogCSAqIGhvc3RhcGQgbG9va3MgZm9yIE5MODAyMTFfQ01EX1BST0JFX0NMSUVOVCBzdXBwb3J0OyBvdGhlcndpc2UsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY2ZnODAyMTEuYwppbmRleCA5ZTQ0Yzg1ZDIwNTFjLi40NWUyYjdhZTk2MzMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9jZmc4MDIxMS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2NmZzgwMjExLmMKQEAgLTQ0Niw3ICYjNDM7NDQ2LDcgQEAgcXRuZl91cGRhdGVfbWdtdF9mcmFtZV9yZWdpc3RyYXRpb25zKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAKIHN0YXRpYyBpbnQKIHF0bmZfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAotCSAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKQomIzQzOwkgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKQogewogCXN0cnVjdCBxdG5mX3ZpZiAqdmlmID0gcXRuZl9uZXRkZXZfZ2V0X3ByaXYod2Rldi0mZ3Q7bmV0ZGV2KTsKIAljb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXRfZnJhbWUgPSAodm9pZCAqKXBhcmFtcy0mZ3Q7YnVmOwpAQCAtNDU0LDggJiM0Mzs0NTQsNiBAQCBxdG5mX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAl1MTYgZmxhZ3MgPSAwOwogCXUxNiBmcmVxOwogCi0JKmNvb2tpZSA9IHNob3J0X2Nvb2tpZTsKLQogCWlmIChwYXJhbXMtJmd0O29mZmNoYW4pCiAJCWZsYWdzIHw9IFFMSU5LX0ZSQU1FX1RYX0ZMQUdfT0ZGQ0hBTjsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvaW9jdGxfY2ZnODAyMTEuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL2lvY3RsX2NmZzgwMjExLmMKaW5kZXggNmE5N2FmZDg5ZGM3OC4uYjU4ZGRhMTI5ZmY2NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvaW9jdGxfY2ZnODAyMTEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9pb2N0bF9jZmc4MDIxMS5jCkBAIC0yNTMwLDcgJiM0MzsyNTMwLDcgQEAgc3RhdGljIGludCBfY2ZnODAyMTFfcnR3X21nbXRfdHgoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCB1OCB0eF9jaCwgY29uc3QgdTggKmIKIAogc3RhdGljIGludCBjZmc4MDIxMV9ydHdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJCXN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLAotCQkJCXU2NCAqY29va2llKQomIzQzOwkJCQl1NjQgY29va2llKQogewogCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gd2Rldl90b19uZGV2KHdkZXYpOwogCXN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiA9IHBhcmFtcy0mZ3Q7Y2hhbjsKQEAgLTI1NTIsMTEgJiM0MzsyNTUyLDggQEAgc3RhdGljIGludCBjZmc4MDIxMV9ydHdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCiAJcGFkYXB0ZXIgPSBydHdfbmV0ZGV2X3ByaXYobmRldik7CiAKLQkvKiBjb29raWUgZ2VuZXJhdGlvbiAqLwotCSpjb29raWUgPSAodW5zaWduZWQgbG9uZylidWY7Ci0KIAkvKiBpbmRpY2F0ZSBhY2sgYmVmb3JlIGlzc3VlIGZyYW1lIHRvIGF2b2lkIHJhY2luZyB3aXRoIHJzcCBmcmFtZSAqLwotCXJ0d19jZmc4MDIxMV9tZ210X3R4X3N0YXR1cyhwYWRhcHRlciwgKmNvb2tpZSwgYnVmLCBsZW4sIGFjaywgR0ZQX0tFUk5FTCk7CiYjNDM7CXJ0d19jZmc4MDIxMV9tZ210X3R4X3N0YXR1cyhwYWRhcHRlciwgY29va2llLCBidWYsIGxlbiwgYWNrLCBHRlBfS0VSTkVMKTsKIAogCWlmICghcnR3X2FjdGlvbl9mcmFtZV9wYXJzZShidWYsIGxlbiwgJmFtcDtjYXRlZ29yeSwgJmFtcDthY3Rpb24pKQogCQlnb3RvIGV4aXQ7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9jZmc4MDIxMS5oIGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaAppbmRleCBkY2JiMGU1NWMzMmVjLi45N2MxNmQ0ZmYxMjcxIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9jZmc4MDIxMS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2NmZzgwMjExLmgKQEAgLTUxMDgsNyAmIzQzOzUxMDgsOCBAQCBzdHJ1Y3QgbWdtdF9mcmFtZV9yZWdzIHsKICAqIEB0ZGxzX29wZXI6IFBlcmZvcm0gYSBoaWdoLWxldmVsIFRETFMgb3BlcmF0aW9uIChlLmcuIFRETFMgbGluayBzZXR1cCkuCiAgKgogICogQHByb2JlX3BlZXI6IHByb2JlIGEgY29ubmVjdGVkIHBlZXIgKEFQOiBTVEEgTUFDIHJlcXVpcmVkOyBTVEE6IG5vIE1BQyksCi0gKgltdXN0IHJldHVybiBhIGNvb2tpZSB0aGF0IGlzIGxhdGVyIHBhc3NlZCB0byBjZmc4MDIxMV9wcm9iZV9zdGF0dXMoKS4KJiM0MzsgKgltdXN0IHVzZSB0aGUgQGNvb2tpZSBhcyBwcm92aWRlZCB3aGljaCBpcyBsYXRlciBwYXNzZWQgdG8KJiM0MzsgKgljZmc4MDIxMV9wcm9iZV9zdGF0dXMoKS4KICAqCiAgKiBAc2V0X25vYWNrX21hcDogU2V0IHRoZSBOb0FjayBNYXAgZm9yIHRoZSBUSURzLgogICoKQEAgLTUyMTksNyAmIzQzOzUyMjAsOCBAQCBzdHJ1Y3QgbWdtdF9mcmFtZV9yZWdzIHsKICAqICAgICB1c2VyIHNwYWNlCiAgKgogICogQHR4X2NvbnRyb2xfcG9ydDogVFggYSBjb250cm9sIHBvcnQgZnJhbWUgKEVBUG9MKS4gIFRoZSBub2VuY3J5cHQgcGFyYW1ldGVyCi0gKgl0ZWxscyB0aGUgZHJpdmVyIHRoYXQgdGhlIGZyYW1lIHNob3VsZCBub3QgYmUgZW5jcnlwdGVkLgomIzQzOyAqCXRlbGxzIHRoZSBkcml2ZXIgdGhhdCB0aGUgZnJhbWUgc2hvdWxkIG5vdCBiZSBlbmNyeXB0ZWQuIEEgQGNvb2tpZQomIzQzOyAqCXZhbHVlIG9mIDAgbWVhbnMgdGhlIGNhbGxlciBkb2VzIG5vdCB3YW50IFRYIHN0YXR1cyByZXBvcnRpbmcuCiAgKgogICogQGdldF9mdG1fcmVzcG9uZGVyX3N0YXRzOiBSZXRyaWV2ZSBGVE0gcmVzcG9uZGVyIHN0YXRpc3RpY3MsIGlmIGF2YWlsYWJsZS4KICAqCVN0YXRpc3RpY3Mgc2hvdWxkIGJlIGN1bXVsYXRpdmUsIGN1cnJlbnRseSBubyB3YXkgdG8gcmVzZXQgaXMgcHJvdmlkZWQuCkBAIC01NDU2LDE0ICYjNDM7NTQ1OCwxNCBAQCBzdHJ1Y3QgY2ZnODAyMTFfb3BzIHsKIAkJCQkgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCQkJICAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sCiAJCQkJICAgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sCi0JCQkJICAgICB1NjQgKmNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpOwomIzQzOwkJCQkgICAgIHU2NCBjb29raWUsIGNvbnN0IHU4ICpyeF9hZGRyKTsKIAlpbnQJKCpjYW5jZWxfcmVtYWluX29uX2NoYW5uZWwpKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJCQkJCSAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJCQkgICAgdTY0IGNvb2tpZSk7CiAKIAlpbnQJKCptZ210X3R4KShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsCi0JCQkgICB1NjQgKmNvb2tpZSk7CiYjNDM7CQkJICAgdTY0IGNvb2tpZSk7CiAJaW50CSgqbWdtdF90eF9jYW5jZWxfd2FpdCkoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAkJCQkgICAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJCQkgICAgICAgdTY0IGNvb2tpZSk7CkBAIC01NTEwLDcgJiM0Mzs1NTEyLDcgQEAgc3RydWN0IGNmZzgwMjExX29wcyB7CiAJCQkgICAgIGNvbnN0IHU4ICpwZWVyLCBlbnVtIG5sODAyMTFfdGRsc19vcGVyYXRpb24gb3Blcik7CiAKIAlpbnQJKCpwcm9iZV9wZWVyKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAotCQkJICAgICAgY29uc3QgdTggKnBlZXIsIHU2NCAqY29va2llKTsKJiM0MzsJCQkgICAgICBjb25zdCB1OCAqcGVlciwgdTY0IGNvb2tpZSk7CiAKIAlpbnQJKCpzZXRfbm9hY2tfbWFwKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCQkJCSAgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKQEAgLTU2MDgsNyAmIzQzOzU2MTAsNyBAQCBzdHJ1Y3QgY2ZnODAyMTFfb3BzIHsKIAkJCQkgICBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLAogCQkJCSAgIGNvbnN0IHU4ICpkZXN0LCBjb25zdCBfX2JlMTYgcHJvdG8sCiAJCQkJICAgY29uc3QgYm9vbCBub2VuY3J5cHQsIGludCBsaW5rX2lkLAotCQkJCSAgIHU2NCAqY29va2llKTsKJiM0MzsJCQkJICAgdTY0IGNvb2tpZSk7CiAKIAlpbnQJKCpnZXRfZnRtX3Jlc3BvbmRlcl9zdGF0cykoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAkJCQlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LApkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2NmZy5jIGIvbmV0L21hYzgwMjExL2NmZy5jCmluZGV4IDBhOTI0N2JlMjZhZmEuLjBjMmM3YWZkNTljNGEgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS9jZmcuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvY2ZnLmMKQEAgLTQ4MzEsMTkgJiM0Mzs0ODMxLDYgQEAgaW50IGllZWU4MDIxMV9jaGFubmVsX3N3aXRjaChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCXJldHVybiBfX2llZWU4MDIxMV9jaGFubmVsX3N3aXRjaCh3aXBoeSwgZGV2LCBwYXJhbXMpOwogfQogCi11NjQgaWVlZTgwMjExX21nbXRfdHhfY29va2llKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKQotewotCWxvY2tkZXBfYXNzZXJ0X3dpcGh5KGxvY2FsLSZndDtody53aXBoeSk7Ci0KLQlsb2NhbC0mZ3Q7cm9jX2Nvb2tpZV9jb3VudGVyJiM0MzsmIzQzOzsKLQotCS8qIHdvdywgeW91IHdyYXBwZWQgNjQgYml0cyAuLi4gbW9yZSBsaWtlbHkgYSBidWcgKi8KLQlpZiAoV0FSTl9PTihsb2NhbC0mZ3Q7cm9jX2Nvb2tpZV9jb3VudGVyID09IDApKQotCQlsb2NhbC0mZ3Q7cm9jX2Nvb2tpZV9jb3VudGVyJiM0MzsmIzQzOzsKLQotCXJldHVybiBsb2NhbC0mZ3Q7cm9jX2Nvb2tpZV9jb3VudGVyOwotfQotCiBpbnQgaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICAgICB1NjQgKmNvb2tpZSwgZ2ZwX3QgZ2ZwKQogewpAQCAtNDg2OCw3ICYjNDM7NDg1NSw2IEBAIGludCBpZWVlODAyMTFfYXR0YWNoX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IsCiAJSUVFRTgwMjExX1NLQl9DQihza2IpLSZndDtzdGF0dXNfZGF0YV9pZHIgPSAxOwogCUlFRUU4MDIxMV9TS0JfQ0Ioc2tiKS0mZ3Q7c3RhdHVzX2RhdGEgPSBpZDsKIAotCSpjb29raWUgPSBpZWVlODAyMTFfbWdtdF90eF9jb29raWUobG9jYWwpOwogCUlFRUU4MDIxMV9TS0JfQ0IoYWNrX3NrYiktJmd0O2Fjay5jb29raWUgPSAqY29va2llOwogCiAJcmV0dXJuIDA7CkBAIC00OTU0LDcgJiM0Mzs0OTQwLDcgQEAgc3RhdGljIGludCBpZWVlODAyMTFfc2V0X3Jla2V5X2RhdGEoc3RydWN0IHdpcGh5ICp3aXBoeSwKIH0KIAogc3RhdGljIGludCBpZWVlODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAotCQkJCWNvbnN0IHU4ICpwZWVyLCB1NjQgKmNvb2tpZSkKJiM0MzsJCQkJY29uc3QgdTggKnBlZXIsIHU2NCBjb29raWUpCiB7CiAJc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpOwogCXN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtJmd0O2xvY2FsOwpAQCAtNTA2MSw3ICYjNDM7NTA0Nyw3IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAlpZiAocW9zKQogCQludWxsZnVuYy0mZ3Q7cW9zX2N0cmwgPSBjcHVfdG9fbGUxNig3KTsKIAotCXJldCA9IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihsb2NhbCwgc2tiLCBjb29raWUsIEdGUF9BVE9NSUMpOwomIzQzOwlyZXQgPSBpZWVlODAyMTFfYXR0YWNoX2Fja19za2IobG9jYWwsIHNrYiwgJmFtcDtjb29raWUsIEdGUF9BVE9NSUMpOwogCWlmIChyZXQpIHsKIAkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaCBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oCmluZGV4IGExZWY4OGZlODQ2ZGQuLjU3NjFlOTYyMTQ5MTQgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oCkBAIC0xNzEwLDggJiM0MzsxNzEwLDYgQEAgc3RydWN0IGllZWU4MDIxMV9sb2NhbCB7CiAJc3RydWN0IGxpc3RfaGVhZCByb2NfbGlzdDsKIAlzdHJ1Y3Qgd2lwaHlfd29yayBod19yb2Nfc3RhcnQsIGh3X3JvY19kb25lOwogCXVuc2lnbmVkIGxvbmcgaHdfcm9jX3N0YXJ0X3RpbWU7Ci0JdTY0IHJvY19jb29raWVfY291bnRlcjsKLQogCXN0cnVjdCBpZHIgYWNrX3N0YXR1c19mcmFtZXM7CiAJc3BpbmxvY2tfdCBhY2tfc3RhdHVzX2xvY2s7CiAKQEAgLTE5OTEsNyAmIzQzOzE5ODksNiBAQCB1NjQgaWVlZTgwMjExX3Jlc2V0X2VycF9pbmZvKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTsKIAogdm9pZCBpZWVlODAyMTFfaGFuZGxlX3F1ZXVlZF9mcmFtZXMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpOwogCi11NjQgaWVlZTgwMjExX21nbXRfdHhfY29va2llKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKTsKIGludCBpZWVlODAyMTFfYXR0YWNoX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IsCiAJCQkgICAgIHU2NCAqY29va2llLCBnZnBfdCBnZnApOwogCkBAIC0yMTUzLDEyICYjNDM7MjE1MCwxMiBAQCB2b2lkIGllZWU4MDIxMV9yb2NfcHVyZ2Uoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsCiAJCQkgc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpOwogaW50IGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJCXN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiwKLQkJCQl1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLAomIzQzOwkJCQl1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsCiAJCQkJY29uc3QgdTggKnJ4X2FkZHIpOwogaW50IGllZWU4MDIxMV9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAkJCQkgICAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgdTY0IGNvb2tpZSk7CiBpbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKLQkJICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKTsKJiM0MzsJCSAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKTsKIGludCBpZWVlODAyMTFfbWdtdF90eF9jYW5jZWxfd2FpdChzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCQkJCSAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgdTY0IGNvb2tpZSk7CiAKQEAgLTIyMzcsNyAmIzQzOzIyMzQsNyBAQCB2b2lkIF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCQkgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQkJICB1MzIgaW5mb19mbGFncywKIAkJCQkgIHUzMiBjdHJsX2ZsYWdzLAotCQkJCSAgdTY0ICpjb29raWUpOwomIzQzOwkJCQkgIHU2NCBjb29raWUpOwogc3RydWN0IHNrX2J1ZmYgKgogaWVlZTgwMjExX2J1aWxkX2RhdGFfdGVtcGxhdGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsCiAJCQkgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mb19mbGFncyk7CkBAIC0yMjUxLDcgJiM0MzsyMjQ4LDcgQEAgdm9pZCBpZWVlODAyMTFfY2xlYXJfZmFzdF94bWl0KHN0cnVjdCBzdGFfaW5mbyAqc3RhKTsKIGludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQkgICAgICBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLAogCQkJICAgICAgY29uc3QgdTggKmRlc3QsIF9fYmUxNiBwcm90bywgYm9vbCB1bmVuY3J5cHRlZCwKLQkJCSAgICAgIGludCBsaW5rX2lkLCB1NjQgKmNvb2tpZSk7CiYjNDM7CQkJICAgICAgaW50IGxpbmtfaWQsIHU2NCBjb29raWUpOwogaW50IGllZWU4MDIxMV9wcm9iZV9tZXNoX2xpbmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJCSAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pOwogdm9pZCBfX2llZWU4MDIxMV94bWl0X2Zhc3Qoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jIGIvbmV0L21hYzgwMjExL29mZmNoYW5uZWwuYwppbmRleCAyYmNlYjczNzE3YzY2Li43YWNlZjgwZDVmMWZiIDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMKQEAgLTYwMiwxNCAmIzQzOzYwMiwxMiBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9zdGFydF9yb2Nfd29yayhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwKIAogCS8qCiAJICogY29va2llIGlzIGVpdGhlciB0aGUgcm9jIGNvb2tpZSAoZm9yIG5vcm1hbCByb2MpCi0JICogb3IgdGhlIFNLQiAoZm9yIG1nbXQgVFgpCiYjNDM7CSAqIG9yIHRoZSBtZ210X3R4IGNvb2tpZTsgYm90aCBhcmUgcHJlLWFzc2lnbmVkIGJ5IGNmZzgwMjExCiAJICovCi0JaWYgKCF0eHNrYikgewotCQlyb2MtJmd0O2Nvb2tpZSA9IGllZWU4MDIxMV9tZ210X3R4X2Nvb2tpZShsb2NhbCk7Ci0JCSpjb29raWUgPSByb2MtJmd0O2Nvb2tpZTsKLQl9IGVsc2UgewomIzQzOwlpZiAoIXR4c2tiKQomIzQzOwkJcm9jLSZndDtjb29raWUgPSAqY29va2llOwomIzQzOwllbHNlCiAJCXJvYy0mZ3Q7bWdtdF90eF9jb29raWUgPSAqY29va2llOwotCX0KIAogCXJlcSA9IHdpcGh5X2RlcmVmZXJlbmNlKGxvY2FsLSZndDtody53aXBoeSwgbG9jYWwtJmd0O3NjYW5fcmVxKTsKIApAQCAtNzA0LDcgJiM0Mzs3MDIsNyBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9zdGFydF9yb2Nfd29yayhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwKIAogaW50IGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJCXN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiwKLQkJCQl1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLAomIzQzOwkJCQl1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsCiAJCQkJY29uc3QgdTggKnJ4X2FkZHIpCiB7CiAJc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfV0RFVl9UT19TVUJfSUYod2Rldik7CkBAIC03MTMsNyAmIzQzOzcxMSw3IEBAIGludCBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAlsb2NrZGVwX2Fzc2VydF93aXBoeShsb2NhbC0mZ3Q7aHcud2lwaHkpOwogCiAJcmV0dXJuIGllZWU4MDIxMV9zdGFydF9yb2Nfd29yayhsb2NhbCwgc2RhdGEsIGNoYW4sCi0JCQkJCWR1cmF0aW9uLCBjb29raWUsIE5VTEwsCiYjNDM7CQkJCQlkdXJhdGlvbiwgJmFtcDtjb29raWUsIE5VTEwsCiAJCQkJCUlFRUU4MDIxMV9ST0NfVFlQRV9OT1JNQUwpOwogfQogCkBAIC04MTAsNyAmIzQzOzgwOCw3IEBAIGludCBpZWVlODAyMTFfY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksCiB9CiAKIGludCBpZWVlODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAotCQkgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpCiYjNDM7CQkgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSkKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTsKIAlzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLSZndDtsb2NhbDsKQEAgLTEwMTYsMTggJiM0MzsxMDE0LDExIEBAIGludCBpZWVlODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkvKiBtYWtlIGEgY29weSB0byBwcmVzZXJ2ZSB0aGUgZnJhbWUgY29udGVudHMKIAkJICogaW4gY2FzZSBvZiBlbmNyeXB0aW9uLgogCQkgKi8KLQkJcmV0ID0gaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKGxvY2FsLCBza2IsIGNvb2tpZSwgR0ZQX0tFUk5FTCk7CiYjNDM7CQlyZXQgPSBpZWVlODAyMTFfYXR0YWNoX2Fja19za2IobG9jYWwsIHNrYiwgJmFtcDtjb29raWUsIEdGUF9LRVJORUwpOwogCQlpZiAocmV0KSB7CiAJCQlrZnJlZV9za2Ioc2tiKTsKIAkJCWdvdG8gb3V0X3VubG9jazsKIAkJfQotCX0gZWxzZSB7Ci0JCS8qIEFzc2lnbiBhIGR1bW15IG5vbi16ZXJvIGNvb2tpZSwgaXQmIzM5O3Mgbm90IHNlbnQgdG8KLQkJICogdXNlcnNwYWNlIGluIHRoaXMgY2FzZSBidXQgd2UgcmVseSBvbiBpdHMgdmFsdWUKLQkJICogaW50ZXJuYWxseSBpbiB0aGUgbmVlZF9vZmZjaGFuIGNhc2UgdG8gZGlzdGluZ3Vpc2gKLQkJICogbWdtdC10eCBmcm9tIHJlbWFpbi1vbi1jaGFubmVsLgotCQkgKi8KLQkJKmNvb2tpZSA9IDB4ZmZmZmZmZmY7CiAJfQogCiAJaWYgKCFuZWVkX29mZmNoYW4pIHsKQEAgLTEwNDQsNyAmIzQzOzEwMzUsNyBAQCBpbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAogCS8qIFRoaXMgd2lsbCBoYW5kbGUgYWxsIGtpbmRzIG9mIGNvYWxlc2NpbmcgYW5kIGltbWVkaWF0ZSBUWCAqLwogCXJldCA9IGllZWU4MDIxMV9zdGFydF9yb2Nfd29yayhsb2NhbCwgc2RhdGEsIHBhcmFtcy0mZ3Q7Y2hhbiwKLQkJCQkgICAgICAgcGFyYW1zLSZndDt3YWl0LCBjb29raWUsIHNrYiwKJiM0MzsJCQkJICAgICAgIHBhcmFtcy0mZ3Q7d2FpdCwgJmFtcDtjb29raWUsIHNrYiwKIAkJCQkgICAgICAgSUVFRTgwMjExX1JPQ19UWVBFX01HTVRfVFgpOwogCWlmIChyZXQpCiAJCWllZWU4MDIxMV9mcmVlX3R4c2tiKCZhbXA7bG9jYWwtJmd0O2h3LCBza2IpOwpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3RkbHMuYyBiL25ldC9tYWM4MDIxMS90ZGxzLmMKaW5kZXggZmZkNTc1YThkMTg4Zi4uZGMyZjY2MmZlNGM0NiAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL3RkbHMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvdGRscy5jCkBAIC0xMTIxLDcgJiM0MzsxMTIxLDcgQEAgaWVlZTgwMjExX3RkbHNfcHJlcF9tZ210X3BhY2tldChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCS8qIGRpc2FibGUgYm90dG9tIGhhbHZlcyB3aGVuIGVudGVyaW5nIHRoZSBUeCBwYXRoICovCiAJbG9jYWxfYmhfZGlzYWJsZSgpOwogCV9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIGZsYWdzLAotCQkJCSAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLCBOVUxMKTsKJiM0MzsJCQkJICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsIDApOwogCWxvY2FsX2JoX2VuYWJsZSgpOwogCiAJcmV0dXJuIHJldDsKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS90eC5jIGIvbmV0L21hYzgwMjExL3R4LmMKaW5kZXggMGNmNWY2ZWM3NWU2Ny4uNDU0YTg3MmIyNTlhMyAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL3R4LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL3R4LmMKQEAgLTI1ODMsNyAmIzQzOzI1ODMsNyBAQCBpbnQgaWVlZTgwMjExX2xvb2t1cF9yYV9zdGEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsCiBzdGF0aWMgdTE2IGllZWU4MDIxMV9zdG9yZV9hY2tfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLAogCQkJCSAgIHN0cnVjdCBza19idWZmICpza2IsCiAJCQkJICAgdTMyICppbmZvX2ZsYWdzLAotCQkJCSAgIHU2NCAqY29va2llKQomIzQzOwkJCQkgICB1NjQgY29va2llKQogewogCXN0cnVjdCBza19idWZmICphY2tfc2tiOwogCXUxNiBpbmZvX2lkID0gMDsKQEAgLTI2MDUsMTAgJiM0MzsyNjA1LDggQEAgc3RhdGljIHUxNiBpZWVlODAyMTFfc3RvcmVfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwKIAkJaWYgKGlkICZndDs9IDApIHsKIAkJCWluZm9faWQgPSBpZDsKIAkJCSppbmZvX2ZsYWdzIHw9IElFRUU4MDIxMV9UWF9DVExfUkVRX1RYX1NUQVRVUzsKLQkJCWlmIChjb29raWUpIHsKLQkJCQkqY29va2llID0gaWVlZTgwMjExX21nbXRfdHhfY29va2llKGxvY2FsKTsKLQkJCQlJRUVFODAyMTFfU0tCX0NCKGFja19za2IpLSZndDthY2suY29va2llID0gKmNvb2tpZTsKLQkJCX0KJiM0MzsJCQlpZiAoY29va2llKQomIzQzOwkJCQlJRUVFODAyMTFfU0tCX0NCKGFja19za2IpLSZndDthY2suY29va2llID0gY29va2llOwogCQl9IGVsc2UgewogCQkJa2ZyZWVfc2tiKGFja19za2IpOwogCQl9CkBAIC0yNjUzLDcgJiM0MzsyNjUxLDcgQEAgc3RhdGljIHZvaWQgaWVlZTgwMjExX3JlbW92ZV9hY2tfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLCB1MTYgaW5mb19pZCkKIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX2J1aWxkX2hkcihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKIAkJCQkJICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIGluZm9fZmxhZ3MsCiAJCQkJCSAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1MzIgY3RybF9mbGFncywKLQkJCQkJICAgdTY0ICpjb29raWUpCiYjNDM7CQkJCQkgICB1NjQgY29va2llKQogewogCXN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtJmd0O2xvY2FsOwogCXN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbzsKQEAgLTQzNzQsNyAmIzQzOzQzNzIsNyBAQCB2b2lkIF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCQkgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQkJICB1MzIgaW5mb19mbGFncywKIAkJCQkgIHUzMiBjdHJsX2ZsYWdzLAotCQkJCSAgdTY0ICpjb29raWUpCiYjNDM7CQkJCSAgdTY0IGNvb2tpZSkKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7CiAJc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS0mZ3Q7bG9jYWw7CkBAIC00NTY5LDcgJiM0Mzs0NTY3LDcgQEAgc3RhdGljIHZvaWQgaWVlZTgwMjExX21sb19tdWx0aWNhc3RfdHhfb25lKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLAogCQlyZXR1cm47CiAKIAljdHJsX2ZsYWdzIHw9IHUzMl9lbmNvZGVfYml0cyhsaW5rX2lkLCBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOSyk7Ci0JX19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChvdXQsIHNkYXRhLSZndDtkZXYsIDAsIGN0cmxfZmxhZ3MsIE5VTEwpOwomIzQzOwlfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KG91dCwgc2RhdGEtJmd0O2RldiwgMCwgY3RybF9mbGFncywgMCk7CiB9CiAKIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbG9fbXVsdGljYXN0X3R4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCkBAIC00NTg0LDggJiM0Mzs0NTgyLDcgQEAgc3RhdGljIHZvaWQgaWVlZTgwMjExX21sb19tdWx0aWNhc3RfdHgoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJY3RybF9mbGFncyB8PSB1MzJfZW5jb2RlX2JpdHMoX19mZnMobGlua3MpLAogCQkJCQkgICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOSyk7CiAKLQkJX19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIHNkYXRhLSZndDtkZXYsIDAsIGN0cmxfZmxhZ3MsCi0JCQkJCSAgICAgTlVMTCk7CiYjNDM7CQlfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgc2RhdGEtJmd0O2RldiwgMCwgY3RybF9mbGFncywgMCk7CiAJCXJldHVybjsKIAl9CiAKQEAgLTQ2MjcsNyAmIzQzOzQ2MjQsNyBAQCBuZXRkZXZfdHhfdCBpZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQl3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUoJmFtcDtxdWV1ZSkpKQogCQkJX19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIGRldiwgMCwKIAkJCQkJCSAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLAotCQkJCQkJICAgICBOVUxMKTsKJiM0MzsJCQkJCQkgICAgIDApOwogCX0gZWxzZSBpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoJmFtcDtzZGF0YS0mZ3Q7dmlmKSAmYW1wOyZhbXA7CiAJCSAgICgoc2RhdGEtJmd0O3ZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQICZhbXA7JmFtcDsKIAkJICAgICAhaWVlZTgwMjExX2h3X2NoZWNrKCZhbXA7c2RhdGEtJmd0O2xvY2FsLSZndDtodywgTUxPX01DQVNUX01VTFRJX0xJTktfVFgpKSB8fApAQCAtNDYzOCw3ICYjNDM7NDYzNSw3IEBAIG5ldGRldl90eF90IGllZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsCiBub3JtYWw6CiAJCV9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIDAsCiAJCQkJCSAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLAotCQkJCQkgICAgIE5VTEwpOwomIzQzOwkJCQkJICAgICAwKTsKIAl9CiAKIAlyZXR1cm4gTkVUREVWX1RYX09LOwpAQCAtNDczNyw3ICYjNDM7NDczNCw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV84MDIzX3htaXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsCiAJCQkvKiBmYWxsIGJhY2sgdG8gbm9uLW9mZmxvYWQgc2xvdyBwYXRoICovCiAJCQlfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgZGV2LCAwLAogCQkJCQkJICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsCi0JCQkJCQkgICAgIE5VTEwpOwomIzQzOwkJCQkJCSAgICAgMCk7CiAJCQlyZXR1cm47CiAJCX0KIApAQCAtNDc3Myw3ICYjNDM7NDc3MCw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV84MDIzX3htaXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsCiAKIAlpZiAodW5saWtlbHkoc2tfcmVxdWVzdHNfd2lmaV9zdGF0dXMoc2tiLSZndDtzaykpKSB7CiAJCWluZm8tJmd0O3N0YXR1c19kYXRhID0gaWVlZTgwMjExX3N0b3JlX2Fja19za2IobG9jYWwsIHNrYiwKLQkJCQkJCQkgICAgJmFtcDtpbmZvLSZndDtmbGFncywgTlVMTCk7CiYjNDM7CQkJCQkJCSAgICAmYW1wO2luZm8tJmd0O2ZsYWdzLCAwKTsKIAkJaWYgKGluZm8tJmd0O3N0YXR1c19kYXRhKQogCQkJaW5mby0mZ3Q7c3RhdHVzX2RhdGFfaWRyID0gMTsKIAl9CkBAIC00OTE2LDcgJiM0Mzs0OTEzLDcgQEAgaWVlZTgwMjExX2J1aWxkX2RhdGFfdGVtcGxhdGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsCiAJfQogCiAJc2tiID0gaWVlZTgwMjExX2J1aWxkX2hkcihzZGF0YSwgc2tiLCBpbmZvX2ZsYWdzLCBzdGEsCi0JCQkJICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsIE5VTEwpOwomIzQzOwkJCQkgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LX1VOU1BFQywgMCk7CiAJaWYgKElTX0VSUihza2IpKQogCQlnb3RvIG91dDsKIApAQCAtNjUzMSw3ICYjNDM7NjUyOCw3IEBAIHZvaWQgaWVlZTgwMjExX3R4X3NrYl90aWQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsCiBpbnQgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkJICAgICAgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbiwKIAkJCSAgICAgIGNvbnN0IHU4ICpkZXN0LCBfX2JlMTYgcHJvdG8sIGJvb2wgdW5lbmNyeXB0ZWQsCi0JCQkgICAgICBpbnQgbGlua19pZCwgdTY0ICpjb29raWUpCiYjNDM7CQkJICAgICAgaW50IGxpbmtfaWQsIHU2NCBjb29raWUpCiB7CiAJc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpOwogCXN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtJmd0O2xvY2FsOwpAQCAtNjY2Niw3ICYjNDM7NjY2Myw3IEBAIGludCBpZWVlODAyMTFfcHJvYmVfbWVzaF9saW5rKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJbG9jYWxfYmhfZGlzYWJsZSgpOwogCV9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBza2ItJmd0O2RldiwgMCwKIAkJCQkgICAgIElFRUU4MDIxMV9UWF9DVFJMX1NLSVBfTVBBVEhfTE9PS1VQLAotCQkJCSAgICAgTlVMTCk7CiYjNDM7CQkJCSAgICAgMCk7CiAJbG9jYWxfYmhfZW5hYmxlKCk7CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9jb3JlLmggYi9uZXQvd2lyZWxlc3MvY29yZS5oCmluZGV4IDE1ZDlmN2ViNThiNGQuLmI0NjEwZjY2ODVkY2IgMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVzcy9jb3JlLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL2NvcmUuaApAQCAtNDAyLDcgJiM0Mzs0MDIsNyBAQCB2b2lkIGNmZzgwMjExX21sbWVfcHVyZ2VfcmVnaXN0cmF0aW9ucyhzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2KTsKIGludCBjZmc4MDIxMV9tbG1lX21nbXRfdHgoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LAogCQkJICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywKLQkJCSAgdTY0ICpjb29raWUpOwomIzQzOwkJCSAgdTY0IGNvb2tpZSk7CiB2b2lkIGNmZzgwMjExX29wZXJfYW5kX2h0X2NhcGEoc3RydWN0IGllZWU4MDIxMV9odF9jYXAgKmh0X2NhcGEsCiAJCQkgICAgICAgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9odF9jYXAgKmh0X2NhcGFfbWFzayk7CiB2b2lkIGNmZzgwMjExX29wZXJfYW5kX3ZodF9jYXBhKHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCAqdmh0X2NhcGEsCmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3MvbWxtZS5jIGIvbmV0L3dpcmVsZXNzL21sbWUuYwppbmRleCA3ODI0YjdhYzI3NzBmLi5hMGQxY2RlMjZmMGM5IDEwMDY0NAotLS0gYS9uZXQvd2lyZWxlc3MvbWxtZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC93aXJlbGVzcy9tbG1lLmMKQEAgLTg5NCw3ICYjNDM7ODk0LDcgQEAgc3RhdGljIGJvb2wgY2ZnODAyMTFfYWxsb3dlZF9yYW5kb21fYWRkcmVzcyhzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCiBpbnQgY2ZnODAyMTFfbWxtZV9tZ210X3R4KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldiwKIAkJCSAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKLQkJCSAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKQomIzQzOwkJCSAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpCiB7CiAJY29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210OwogCXUxNiBzdHlwZTsKZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9ubDgwMjExLmMgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jCmluZGV4IDhhZGJlZjVmMDQ0MjUuLmFjODk1ZTAyY2Q0MTEgMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVzcy9ubDgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL25sODAyMTEuYwpAQCAtMTQ2NDIsOCAmIzQzOzE0NjQyLDkgQEAgc3RhdGljIGludCBubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBza19idWZmICpza2IsCiAJCWdvdG8gZnJlZV9tc2c7CiAJfQogCiYjNDM7CWNvb2tpZSA9IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7CiAJZXJyID0gcmRldl9yZW1haW5fb25fY2hhbm5lbChyZGV2LCB3ZGV2LCBjaGFuZGVmLmNoYW4sCi0JCQkJICAgICBkdXJhdGlvbiwgJmFtcDtjb29raWUsIHJ4X2FkZHIpOwomIzQzOwkJCQkgICAgIGR1cmF0aW9uLCBjb29raWUsIHJ4X2FkZHIpOwogCiAJaWYgKGVycikKIAkJZ290byBmcmVlX21zZzsKQEAgLTE0ODgzLDcgJiM0MzsxNDg4NCw4IEBAIHN0YXRpYyBpbnQgbmw4MDIxMV90eF9tZ210KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pCiAJfQogCiAJcGFyYW1zLmNoYW4gPSBjaGFuZGVmLmNoYW47Ci0JZXJyID0gY2ZnODAyMTFfbWxtZV9tZ210X3R4KHJkZXYsIHdkZXYsICZhbXA7cGFyYW1zLCAmYW1wO2Nvb2tpZSk7CiYjNDM7CWNvb2tpZSA9IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7CiYjNDM7CWVyciA9IGNmZzgwMjExX21sbWVfbWdtdF90eChyZGV2LCB3ZGV2LCAmYW1wO3BhcmFtcywgY29va2llKTsKIAlpZiAoZXJyKQogCQlnb3RvIGZyZWVfbXNnOwogCkBAIC0xNjM3MSw3ICYjNDM7MTYzNzMsOCBAQCBzdGF0aWMgaW50IG5sODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKQogCQlnb3RvIGZyZWVfbXNnOwogCX0KIAotCWVyciA9IHJkZXZfcHJvYmVfcGVlcihyZGV2LCBkZXYsIGFkZHIsICZhbXA7Y29va2llKTsKJiM0MzsJY29va2llID0gY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTsKJiM0MzsJZXJyID0gcmRldl9wcm9iZV9wZWVyKHJkZXYsIGRldiwgYWRkciwgY29va2llKTsKIAlpZiAoZXJyKQogCQlnb3RvIGZyZWVfbXNnOwogCkBAIC0xODU4NiwxMCAmIzQzOzE4NTg5LDExIEBAIHN0YXRpYyBpbnQgbmw4MDIxMV90eF9jb250cm9sX3BvcnQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbykKIAogCWxpbmtfaWQgPSBubDgwMjExX2xpbmtfaWRfb3JfaW52YWxpZChpbmZvLSZndDthdHRycyk7CiAKJiM0MzsJY29va2llID0gZG9udF93YWl0X2Zvcl9hY2sgPyAwIDogY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTsKIAllcnIgPSByZGV2X3R4X2NvbnRyb2xfcG9ydChyZGV2LCBkZXYsIGJ1ZiwgbGVuLAogCQkJCSAgIGRlc3QsIGNwdV90b19iZTE2KHByb3RvKSwgbm9lbmNyeXB0LCBsaW5rX2lkLAotCQkJCSAgIGRvbnRfd2FpdF9mb3JfYWNrID8gTlVMTCA6ICZhbXA7Y29va2llKTsKLQlpZiAoIWVyciAmYW1wOyZhbXA7ICFkb250X3dhaXRfZm9yX2FjaykKJiM0MzsJCQkJICAgY29va2llKTsKJiM0MzsJaWYgKCFlcnIgJmFtcDsmYW1wOyBjb29raWUpCiAJCW5sX3NldF9leHRhY2tfY29va2llX3U2NChpbmZvLSZndDtleHRhY2ssIGNvb2tpZSk7CiAJcmV0dXJuIGVycjsKIH0KQEAgLTIyMDQyLDYgJiM0MzsyMjA0NiwxMCBAQCBzdGF0aWMgdm9pZCBubDgwMjExX2ZyYW1lX3R4X3N0YXR1cyhzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCXN0cnVjdCBza19idWZmICptc2c7CiAJdm9pZCAqaGRyOwogCiYjNDM7CS8qIHVzZXJzcGFjZSBub3QgaW50ZXJlc3RlZCBpbiB6ZXJvLWNvb2tpZSBzdGF0dXMgKi8KJiM0MzsJaWYgKCFzdGF0dXMtJmd0O2Nvb2tpZSkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAlpZiAoY29tbWFuZCA9PSBOTDgwMjExX0NNRF9GUkFNRV9UWF9TVEFUVVMpCiAJCXRyYWNlX2NmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIHN0YXR1cy0mZ3Q7Y29va2llLAogCQkJCQkgICAgICBzdGF0dXMtJmd0O2Fjayk7CmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3MvcmRldi1vcHMuaCBiL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oCmluZGV4IDZjM2JhZDhiMmQ2ZjYuLjQ2ODQ5ZmU4ZDBiMzkgMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oCkBAIC03MzYsMTQgJiM0Mzs3MzYsMTQgQEAgc3RhdGljIGlubGluZSBpbnQKIHJkZXZfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LAogCQkgICAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJICAgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiwKLQkJICAgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsIGNvbnN0IHU4ICpyeF9hZGRyKQomIzQzOwkJICAgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpCiB7CiAJaW50IHJldDsKIAl0cmFjZV9yZGV2X3JlbWFpbl9vbl9jaGFubmVsKCZhbXA7cmRldi0mZ3Q7d2lwaHksIHdkZXYsIGNoYW4sIGR1cmF0aW9uLAogCQkJCSAgICAgcnhfYWRkcik7CiAJcmV0ID0gcmRldi0mZ3Q7b3BzLSZndDtyZW1haW5fb25fY2hhbm5lbCgmYW1wO3JkZXYtJmd0O3dpcGh5LCB3ZGV2LCBjaGFuLAogCQkJCQkgICBkdXJhdGlvbiwgY29va2llLCByeF9hZGRyKTsKLQl0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKCZhbXA7cmRldi0mZ3Q7d2lwaHksIHJldCwgKmNvb2tpZSk7CiYjNDM7CXRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoJmFtcDtyZGV2LSZndDt3aXBoeSwgcmV0LCBjb29raWUpOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTc2MSwxMiAmIzQzOzc2MSwxMiBAQCByZGV2X2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsCiBzdGF0aWMgaW5saW5lIGludCByZGV2X21nbXRfdHgoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LAogCQkJICAgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCQkgICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsCi0JCQkgICAgICAgdTY0ICpjb29raWUpCiYjNDM7CQkJICAgICAgIHU2NCBjb29raWUpCiB7CiAJaW50IHJldDsKIAl0cmFjZV9yZGV2X21nbXRfdHgoJmFtcDtyZGV2LSZndDt3aXBoeSwgd2RldiwgcGFyYW1zKTsKIAlyZXQgPSByZGV2LSZndDtvcHMtJmd0O21nbXRfdHgoJmFtcDtyZGV2LSZndDt3aXBoeSwgd2RldiwgcGFyYW1zLCBjb29raWUpOwotCXRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoJmFtcDtyZGV2LSZndDt3aXBoeSwgcmV0LCAqY29va2llKTsKJiM0MzsJdHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZSgmYW1wO3JkZXYtJmd0O3dpcGh5LCByZXQsIGNvb2tpZSk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtNzc1LDcgJiM0Mzs3NzUsNyBAQCBzdGF0aWMgaW5saW5lIGludCByZGV2X3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsCiAJCQkJICAgICAgIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbiwKIAkJCQkgICAgICAgY29uc3QgdTggKmRlc3QsIF9fYmUxNiBwcm90bywKIAkJCQkgICAgICAgY29uc3QgYm9vbCBub2VuY3J5cHQsIGludCBsaW5rLAotCQkJCSAgICAgICB1NjQgKmNvb2tpZSkKJiM0MzsJCQkJICAgICAgIHU2NCBjb29raWUpCiB7CiAJaW50IHJldDsKIAl0cmFjZV9yZGV2X3R4X2NvbnRyb2xfcG9ydCgmYW1wO3JkZXYtJmd0O3dpcGh5LCBkZXYsIGJ1ZiwgbGVuLApAQCAtNzgzLDcgJiM0Mzs3ODMsNyBAQCBzdGF0aWMgaW5saW5lIGludCByZGV2X3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsCiAJcmV0ID0gcmRldi0mZ3Q7b3BzLSZndDt0eF9jb250cm9sX3BvcnQoJmFtcDtyZGV2LSZndDt3aXBoeSwgZGV2LCBidWYsIGxlbiwKIAkJCQkJIGRlc3QsIHByb3RvLCBub2VuY3J5cHQsIGxpbmssIGNvb2tpZSk7CiAJaWYgKGNvb2tpZSkKLQkJdHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZSgmYW1wO3JkZXYtJmd0O3dpcGh5LCByZXQsICpjb29raWUpOwomIzQzOwkJdHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZSgmYW1wO3JkZXYtJmd0O3dpcGh5LCByZXQsIGNvb2tpZSk7CiAJZWxzZQogCQl0cmFjZV9yZGV2X3JldHVybl9pbnQoJmFtcDtyZGV2LSZndDt3aXBoeSwgcmV0KTsKIAlyZXR1cm4gcmV0OwpAQCAtOTUwLDEyICYjNDM7OTUwLDEyIEBAIHN0YXRpYyBpbmxpbmUgaW50IHJkZXZfdGRsc19vcGVyKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldiwKIAogc3RhdGljIGlubGluZSBpbnQgcmRldl9wcm9iZV9wZWVyKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldiwKIAkJCQkgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICpwZWVyLAotCQkJCSAgdTY0ICpjb29raWUpCiYjNDM7CQkJCSAgdTY0IGNvb2tpZSkKIHsKIAlpbnQgcmV0OwogCXRyYWNlX3JkZXZfcHJvYmVfcGVlcigmYW1wO3JkZXYtJmd0O3dpcGh5LCBkZXYsIHBlZXIpOwogCXJldCA9IHJkZXYtJmd0O29wcy0mZ3Q7cHJvYmVfcGVlcigmYW1wO3JkZXYtJmd0O3dpcGh5LCBkZXYsIHBlZXIsIGNvb2tpZSk7Ci0JdHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZSgmYW1wO3JkZXYtJmd0O3dpcGh5LCByZXQsICpjb29raWUpOwomIzQzOwl0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKCZhbXA7cmRldi0mZ3Q7d2lwaHksIHJldCwgY29va2llKTsKIAlyZXR1cm4gcmV0OwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNzA5CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNTk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNvb2tpZSBIYW5kbGluZyBSZWZhY3RvciBpbiBjZmc4MDIxMS9tYWM4MDIxMSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgbG9va3MgbGlrZSBhIGZhaXJseSBzaWduaWZpY2FudCBjaGFuZ2UgdG8gaG93IGNvb2tpZXMgYXJlIGhhbmRsZWQgaW4gc2V2ZXJhbCBjZmc4MDIxMS9tYWM4MDIxMSBmdW5jdGlvbnMuIFNwZWNpZmljYWxseSwgdGhleSYjMzk7cmUgbW92aW5nIGZyb20gcGFzc2luZyBhIGB1NjQgKmNvb2tpZWAgKGEgcG9pbnRlciB0byBhIGNvb2tpZSkgdG8gYSBgdTY0IGNvb2tpZWAgKHBhc3NpbmcgdGhlIGNvb2tpZSBieSB2YWx1ZSkgaW4gc2V2ZXJhbCBrZXkgZnVuY3Rpb25zLiBGdW5jdGlvbnMgYWZmZWN0ZWQgaW5jbHVkZSBgcmVtYWluX29uX2NoYW5uZWxgLCBgbWdtdF90eGAsIGBwcm9iZV9wZWVyYCwgYW5kIGB0eF9jb250cm9sX3BvcnRgLgoKVGhlIGNoYW5nZXMgYXJlIHF1aXRlIHdpZGVzcHJlYWQ7IHRoZSBwYXRjaCB0b3VjaGVzIGEgYnVuY2ggb2YgZHJpdmVyczogYXRoNmtsLCB3aWw2MjEwLCBicmNtZm1hYywgbXdpZmlleCwgd2lsYzEwMDAsIG54cHdpZmksIHF0bmZtYWMsIHJ0bDg3MjNicywgYW5kIGFsc28gdGhlIGNvcmUgYGNmZzgwMjExLmhgLCBtYWM4MDIxMSAoY2ZnLmMsIG9mZmNoYW5uZWwuYywgdGRscy5jLCB0eC5jKSwgYW5kIHdpcmVsZXNzIGNvcmUgaGVhZGVycy4gVGhlIGZpbGVzIGluY2x1ZGUgYGNvcmUuaGAsIGBtbG1lLmNgLCBgbmw4MDIxMS5jYCwgYW5kIGByZGV2LW9wcy5oYC4KClRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseSBub3QganVzdCBhIGNvc21ldGljIG9uZSwgYmVjYXVzZSBpdCBmdW5kYW1lbnRhbGx5IGFsdGVycyBob3cgY29va2llcyBhcmUgZ2VuZXJhdGVkIGFuZCBwYXNzZWQgYXJvdW5kLiBUaGUgb2xkIHdheSwgdGhlIGRyaXZlcnMgb3IgbWFjODAyMTEgd291bGQgZ2VuZXJhdGUgdGhlIGNvb2tpZSBhbmQgdGhlbiB1c2UgdGhlIHBvaW50ZXIgdG8gc2VuZCBpdCBiYWNrLiBUaGUgbmV3IHdheT8gYG5sODAyMTFgIGlzIG5vdyByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyB0aGUgY29va2llIHVzaW5nIGBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpYCBhbmQgdGhlbiBwYXNzaW5nIGl0IGJ5IHZhbHVlIHRvIHRoZSBkcml2ZXJzL21hYzgwMjExLgoKV2FpdCBhIHNlY29uZCwgbGV0IG1lIGp1c3QgcGF1c2UgYW5kIHF1aWNrbHkgY2hlY2sgc29tZXRoaW5nLiBgY2ZnODAyMTFfYXNzaWduX2Nvb2tpZWAuLi4gaXMgdGhhdCBhIGJyYW5kIG5ldyBmdW5jdGlvbj8gSSBzaG91bGQgcHJvYmFibHkgdGFrZSBhIGxvb2sgYXQgaXQgdG8gc2VlIGhvdyBpdCB3b3Jrcy4gTGV0JiMzOTtzIGRvIGEgcXVpY2sgZ3JlcCBmb3IgYGNmZzgwMjExX2Fzc2lnbl9jb29raWVgIHRvIG1ha2Ugc3VyZSBpdCBleGlzdHMsIGFuZCB0byB1bmRlcnN0YW5kIGl0cyBzY29wZS4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGNvcmUgaGVscGVyIGZ1bmN0aW9ucyBvcGVyYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NmZzgwMjExX2Fzc2lnbl9jb29raWUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL2NvcmUuaD0xMzc9Y2ZnODAyMTFfcmRldl9mcmVlX3dvd2xhbihzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYpXG4tLVxubmV0L3dpcmVsZXNzL2NvcmUuaC0xNTUtXG5uZXQvd2lyZWxlc3MvY29yZS5oOjE1NjpzdGF0aWMgaW5saW5lIHU2NCBjZmc4MDIxMV9hc3NpZ25fY29va2llKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldilcbm5ldC93aXJlbGVzcy9jb3JlLmgtMTU3LXtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTExOTUyPXN0YXRpYyBpbnQgbmw4MDIxMV9zdGFydF9zY2hlZF9zY2FuKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xMTk4MS1cdGlmICh3YW50X211bHRpIFx1MDAyNlx1MDAyNiByZGV2LVx1MDAzZXdpcGh5Lm1heF9zY2hlZF9zY2FuX3JlcXMgXHUwMDNlIDEpXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjExOTgyOlx0XHRzY2hlZF9zY2FuX3JlcS1cdTAwM2VyZXFpZCA9IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTExOTgzLVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTQ1NzA9c3RhdGljIGludCBubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNDY0NC1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTQ2NDU6XHRjb29raWUgPSBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpO1xubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNDY0Ni1cdGVyciA9IHJkZXZfcmVtYWluX29uX2NoYW5uZWwocmRldiwgd2RldiwgY2hhbmRlZi5jaGFuLFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTQ3NjQ9c3RhdGljIGludCBubDgwMjExX3R4X21nbXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0ODg2LVx0cGFyYW1zLmNoYW4gPSBjaGFuZGVmLmNoYW47XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE0ODg3Olx0Y29va2llID0gY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTQ4ODgtXHRlcnIgPSBjZmc4MDIxMV9tbG1lX21nbXRfdHgocmRldiwgd2RldiwgXHUwMDI2cGFyYW1zLCBjb29raWUpO1xuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTYzMjg9c3RhdGljIGludCBubDgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE2Mzc1LVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxNjM3NjpcdGNvb2tpZSA9IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE2Mzc3LVx0ZXJyID0gcmRldl9wcm9iZV9wZWVyKHJkZXYsIGRldiwgYWRkciwgY29va2llKTtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE2ODA2PXN0YXRpYyBpbnQgbmw4MDIxMV9uYW5fYWRkX2Z1bmMoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE2ODM2LVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxNjgzNzpcdGZ1bmMtXHUwMDNlY29va2llID0gY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTY4MzgtXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xODUzNj1zdGF0aWMgaW50IG5sODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODU5MS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTg1OTI6XHRjb29raWUgPSBkb250X3dhaXRfZm9yX2FjayA/IDAgOiBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpO1xubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODU5My1cdGVyciA9IHJkZXZfdHhfY29udHJvbF9wb3J0KHJkZXYsIGRldiwgYnVmLCBsZW4sXG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYz00MTQ9aW50IG5sODAyMTFfcG1zcl9zdGFydChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC93aXJlbGVzcy9wbXNyLmMtNTIxLVx0fVxubmV0L3dpcmVsZXNzL3Btc3IuYzo1MjI6XHRyZXEtXHUwMDNlY29va2llID0gY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtNTIzLVx0cmVxLVx1MDAzZW5sX3BvcnRpZCA9IGluZm8tXHUwMDNlc25kX3BvcnRpZDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxOToyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTk2NAoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDM0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXaXJlbGVzcyBTdGFjayBBUEkgQ2hhbmdlIFJldmlldyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIGhpdHRpbmcgdGhlIGNvcmUgb2YgdGhlIHdpcmVsZXNzIHN0YWNrLCBzcGVjaWZpY2FsbHkgdGhlIGBjZmc4MDIxMWAgYW5kIGBtYWM4MDIxMWAgQVBJcyBmb3IgYHJlbWFpbl9vbl9jaGFubmVsYCwgYG1nbXRfdHhgLCBgcHJvYmVfcGVlcmAsIGFuZCBgdHhfY29udHJvbF9wb3J0YC4gVGhhdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGNvc21ldGljIG9uZSwgbWVhbmluZyBpdCYjMzk7cyBob3cgd2UgaGFuZGxlIGNvb2tpZXMgYW5kIHBhc3MgdGhlbSB1cCB0byB1c2Vyc3BhY2UuIERlZmluaXRlbHksIGZ1enppbmcgaXMgZ29pbmcgdG8gYmUgY3J1Y2lhbCBoZXJlIHRvIGVuc3VyZSB3ZSBoYXZlbiYjMzk7dCBpbnRyb2R1Y2VkIGFueSB2dWxuZXJhYmlsaXRpZXMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciBjaGFuZ2VzLgoKVGhlIGtleSBzeW1ib2xzIHRvIGtlZXAgYW4gZXllIG9uIGFyZSB0aGUgYG5sODAyMTFfKmAgYW5kIGBpZWVlODAyMTFfKmAgdmFyaWF0aW9ucyBvZiB0aG9zZSBmdW5jdGlvbnMuIFRoZXkmIzM5O3JlIHRoZSBlbnRyeSBwb2ludHMgZnJvbSBuZXRsaW5rIGFuZCB0aGUgY29yZSBtYWM4MDIxMSBzdGFjaywgcmVzcGVjdGl2ZWx5LiBXZSBuZWVkIHRvIGJlIGVzcGVjaWFsbHkgbWluZGZ1bCBvZiB0aGUgaW50ZXJhY3Rpb25zIGFuZCBjb29raWUgaGFuZGxpbmcgYmV0d2VlbiB0aGVzZSBwb2ludHMuCgpBcyBmb3IgY29uZmlndXJhdGlvbiwgYENPTkZJR19NQUM4MDIxMWAgYW5kIGBDT05GSUdfQ0ZHODAyMTFgIGFyZSB0aGUgb2J2aW91cyBvbmVzLiBCZXlvbmQgdGhhdCwgd2hpbGUgYENPTkZJR19OTDgwMjExX1RFU1RNT0RFYCBtaWdodCBwcm92aWRlIHNvbWUgdXNlZnVsIGRlYnVnZ2luZyBjYXBhYmlsaXRpZXMsIGl0JiMzOTtzIG5vdCBzdHJpY3RseSByZXF1aXJlZCBmb3IgdGhlc2UgY29yZSBubDgwMjExIGNvbW1hbmRzLiBOb3csIHRoaXMgaXMgaW50ZXJlc3RpbmcuLi5RRU1VIGNhbiBlbXVsYXRlIGBtYWM4MDIxMV9od3NpbWAuIFRoYXQgbWFrZXMgdGVzdGluZyBhIGxvdCBlYXNpZXIuIFNvLCB0byBlbnN1cmUgYSBzb2xpZCB0ZXN0aW5nIGVudmlyb25tZW50LCB3ZSBhYnNvbHV0ZWx5IG5lZWQgYENPTkZJR19NQUM4MDIxMV9IV1NJTWAgZW5hYmxlZC4gVGhhdCB3aWxsIGdpdmUgdXMgYSBjb250cm9sbGVkIGVudmlyb25tZW50IHRvIHB1dCB0aGUgcGF0Y2ggdGhyb3VnaCBpdHMgcGFjZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTk6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQzgwMjExX0hXU0lNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZzoxOmNvbmZpZyBNQUM4MDIxMV9IV1NJTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTItXHR0cmlzdGF0ZSBcJiMzNDtTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxMVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NzQ3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyB0aGUgTUFDODAyMTFfSFdTSU0gS2NvbmZpZyBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZGVwZW5kZW5jaWVzIG9mIGBNQUM4MDIxMV9IV1NJTWAuIFRpbWUgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWdgLiBJIGtub3cgdGhpcyBpcyB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIHZpcnR1YWwgaGFyZHdhcmUgc2ltdWxhdGlvbiByZXNpZGUuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIHN0YW5kYXJkIGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzIGluIHRoZXJlLiBJJiMzOTttIGxvb2tpbmcgZm9yIGNsdWVzIGFib3V0IG90aGVyIGZlYXR1cmVzIG9yIGRyaXZlcnMgaXQgbWlnaHQgYmUgbGlua2VkIHRvLiBUaGlzIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHdoYXQgZmVhdHVyZXMgaXQgZW5hYmxlcyBhbmQgcG90ZW50aWFsbHkgd2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyBtaWdodCBiZWNvbWUgcmVsZXZhbnQuIFRoaXMgaXMgYSBjb21tb24gZmlyc3Qgc3RlcCB3aGVuIGludmVzdGlnYXRpbmcgaG93IGEgY29tcGxleCBmZWF0dXJlIGxpa2UgYE1BQzgwMjExX0hXU0lNYCBpbnRlZ3JhdGVzIHdpdGggdGhlIHdpZGVyIGtlcm5lbCBuZXR3b3JrIHN0YWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Y29uZmlnIE1BQzgwMjExX0hXU0lNXG4gICAyOlx0XHR0cmlzdGF0ZSBcJiMzNDtTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxMVwmIzM0O1xuICAgMzpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAgNDpcdFx0aGVscFxuICAgNTpcdFx0ICBUaGlzIGRyaXZlciBpcyBhIGRldmVsb3BlciB0ZXN0aW5nIHRvb2wgdGhhdCBjYW4gYmUgdXNlZCB0byB0ZXN0XG4gICA2Olx0XHQgIElFRUUgODAyLjExIG5ldHdvcmtpbmcgc3RhY2sgKG1hYzgwMjExKSBmdW5jdGlvbmFsaXR5LiBUaGlzIGlzIG5vdFxuICAgNzpcdFx0ICBuZWVkZWQgZm9yIG5vcm1hbCB3aXJlbGVzcyBMQU4gdXNhZ2UgYW5kIGlzIG9ubHkgZm9yIHRlc3RpbmcuIFNlZVxuICAgODpcdFx0ICBEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbWFjODAyMTFfaHdzaW0gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93XG4gICA5Olx0XHQgIHRvIHVzZSB0aGlzIHRvb2wuXG4gIDEwOlx0XG4gIDExOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZVxuICAxMjpcdFx0ICBjYWxsZWQgbWFjODAyMTFfaHdzaW0uICBJZiB1bnN1cmUsIHNheSBOLlxuICAxMzpcdFxuICAxNDpcdGNvbmZpZyBWSVJUX1dJRklcbiAgMTU6XHRcdHRyaXN0YXRlIFwmIzM0O1dpZmkgd3JhcHBlciBmb3IgZXRoZXJuZXQgZHJpdmVyc1wmIzM0O1xuICAxNjpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBUaGlzIG9wdGlvbiBhZGRzIHN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbm5lY3Rpb25zIHRvIGFwcGVhciBhcyBpZiB0aGV5XG4gIDE5Olx0XHQgIGFyZSB3aWZpIGNvbm5lY3Rpb25zIHRocm91Z2ggYSBzcGVjaWFsIHJ0bmV0bGluayBkZXZpY2UuXG4gIDIwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTk6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjczMTQKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAzNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFdpcmVsZXNzIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSBzZWUgdGhlIGRlcGVuZGVuY3kgY2hhaW46IGBNQUM4MDIxMV9IV1NJTWAgcmVsaWVzIG9uIGBNQUM4MDIxMWAsIHdoaWNoIGluIHR1cm4gcmVsaWVzIG9uIGBDRkc4MDIxMWAuIFRoYXQgbWVhbnMgZm9yIHRoaXMgdG8gd29yaywgSSYjMzk7bGwgbmVlZCB0byBlbnN1cmUgYWxsIHRocmVlIGFyZSBlbmFibGVkOiBgQ0ZHODAyMTFgLCBgTUFDODAyMTFgLCBhbmQgYE1BQzgwMjExX0hXU0lNYC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUuCgpOb3csIGxldCYjMzk7cyBkaWcgYSBsaXR0bGUgZGVlcGVyLiBUaGlzIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSBjb3JlIG9mIGBjZmc4MDIxMWAgYW5kIGBtYWM4MDIxMWAsIHdoaWNoIG1ha2VzIG1lIHRoaW5rIGl0JiMzOTtzIGZ1bmN0aW9uYWwuIFRoZXNlIGNoYW5nZXMgYXJlIGRlZmluaXRlbHkgYWNjZXNzaWJsZSB0aHJvdWdoIGBubDgwMjExYCwgd2hpY2ggaXMgcHJvbWlzaW5nLiBUaGUgZmFjdCB0aGF0IHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgdmFyaW91cyBkcml2ZXJzIGlzIGNvbmNlcm5pbmcgYmVjYXVzZSBJIGNhbiYjMzk7dCBwb3NzaWJseSB0ZXN0IHRoZW0gYWxsIGluIGEgUUVNVSBlbnZpcm9ubWVudC4gSG93ZXZlciwgdGhlIHVzZSBvZiBgbWFjODAyMTFfaHdzaW1gIGlzIGEgc21hcnQgbW92ZS4gSXQgc2hvdWxkIGV4ZXJjaXNlIHRoZSBgbWFjODAyMTFgIGFuZCBgY2ZnODAyMTFgIHBhdGhzLCB3aGljaCBhcmUgdGhlIHByaW1hcnkgZm9jdXMgb2YgdGhpcy4KClRvIG1ha2Ugc3VyZSBJJiMzOTttIGZvbGxvd2luZyBldmVyeXRoaW5nLCBJIG5lZWQgdG8gZm9jdXMgb24gdGhlc2Ugc3ltYm9sczogYG5sODAyMTFfcmVtYWluX29uX2NoYW5uZWxgLCBgbmw4MDIxMV90eF9tZ210YCwgYG5sODAyMTFfcHJvYmVfcGVlcmAsIGBubDgwMjExX3R4X2NvbnRyb2xfcG9ydGAsIGBjZmc4MDIxMV9tbG1lX21nbXRfdHhgLCBgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsYCwgYGllZWU4MDIxMV9tZ210X3R4YCwgYGllZWU4MDIxMV9wcm9iZV9wZWVyYCwgYW5kIGBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0YC4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYW5kIHRoZSBuYW1lcyBhcmUgY29ycmVjdC4gSSYjMzk7bGwgbmVlZCB0byBnbyBiYWNrIGFuZCB2ZXJpZnkgYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxOToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jZmcuYz01OTc0PWNvbnN0IHN0cnVjdCBjZmc4MDIxMV9vcHMgbWFjODAyMTFfY29uZmlnX29wcyA9IHtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNjA2OC1cdC5zZXRfbXVsdGljYXN0X3RvX3VuaWNhc3QgPSBpZWVlODAyMTFfc2V0X211bHRpY2FzdF90b191bmljYXN0LFxubmV0L21hYzgwMjExL2NmZy5jOjYwNjk6XHQudHhfY29udHJvbF9wb3J0ID0gaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydCxcbm5ldC9tYWM4MDIxMS9jZmcuYy02MDcwLVx0LmdldF90eHFfc3RhdHMgPSBpZWVlODAyMTFfZ2V0X3R4cV9zdGF0cyxcbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0yMjQ3PXZvaWQgaWVlZTgwMjExX2NsZWFyX2Zhc3RfeG1pdChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSk7XG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyMjQ4OmludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yMjQ5LVx0XHRcdCAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sXG4tLVxubmV0L21hYzgwMjExL3R4LmM9MjY1MT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV9idWlsZF9oZHIoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtMzA1MC1cdFx0ICogY3RybF9mbGFncyBhbHJlYWR5IGhhdmUgYmVlbiBzZXQgYnlcbm5ldC9tYWM4MDIxMS90eC5jOjMwNTE6XHRcdCAqIGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQoKSwgaGVyZVxubmV0L21hYzgwMjExL3R4LmMtMzA1Mi1cdFx0ICogd2UganVzdCBzYW5pdHkgY2hlY2sgdGhhdFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTY0OTc9dm9pZCBpZWVlODAyMTFfdHhfc2tiX3RpZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy02NTI3LVxubmV0L21hYzgwMjExL3R4LmM6NjUyODppbnQgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L21hYzgwMjExL3R4LmMtNjUyOS1cdFx0XHQgICAgICBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxOToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODc4OQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uZmlybWluZyBhbmQgUmVmaW5pbmcgYSBIeXBvdGhlc2lzKioKCk9rYXksIHNvIHRoZSBpbml0aWFsIGFzc2Vzc21lbnQgZmVlbHMgY29ycmVjdC4gKlllcywgaXQgaXMqLiBCdXQsIGxldCYjMzk7cyBub3QgcnVzaCB0byBjb25jbHVzaW9ucy4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBiZWZvcmUgcHJvY2VlZGluZy4gVGhpcyBpcyBjcml0aWNhbC4KClRvIGJlIHRob3JvdWdoLCBsZXQmIzM5O3MgaW1tZWRpYXRlbHkgYW5kIHNwZWNpZmljYWxseSBnbyBiYWNrIGFuZCByaWdvcm91c2x5IGV4YW1pbmUgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBpZWVlODAyMTFfcHJvYmVfcGVlcmAuIEkgd2FudCB0byBkcmlsbCBkb3duIGludG8gdGhlIGNvcmUgZnVuY3Rpb24gdGhhdCYjMzk7cyBhdCB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlci4gRG91YmxlLWNoZWNraW5nIGlzIGNydWNpYWwgaGVyZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9mIHRoZSBleGFjdCBsb2dpYyB3aXRoaW4gdGhhdCBwcm9iZSBmdW5jdGlvbi4gSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IHRoZSBlZGdlIGNhc2VzLCBhbmQgYWxsIHBvc3NpYmxlIHNvdXJjZXMgb2YgZXJyb3IuIE5vIHN0b25lIHVudHVybmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxOToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfcHJvYmVfcGVlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2ZnLmM9NDkyNz1zdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfcmVrZXlfZGF0YShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy00OTQxLVxubmV0L21hYzgwMjExL2NmZy5jOjQ5NDI6c3RhdGljIGludCBpZWVlODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L21hYzgwMjExL2NmZy5jLTQ5NDMtXHRcdFx0XHRjb25zdCB1OCAqcGVlciwgdTY0IGNvb2tpZSlcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9NTk3ND1jb25zdCBzdHJ1Y3QgY2ZnODAyMTFfb3BzIG1hYzgwMjExX2NvbmZpZ19vcHMgPSB7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTYwNDktXHQudGRsc19jYW5jZWxfY2hhbm5lbF9zd2l0Y2ggPSBpZWVlODAyMTFfdGRsc19jYW5jZWxfY2hhbm5lbF9zd2l0Y2gsXG5uZXQvbWFjODAyMTEvY2ZnLmM6NjA1MDpcdC5wcm9iZV9wZWVyID0gaWVlZTgwMjExX3Byb2JlX3BlZXIsXG5uZXQvbWFjODAyMTEvY2ZnLmMtNjA1MS1cdC5zZXRfbm9hY2tfbWFwID0gaWVlZTgwMjExX3NldF9ub2Fja19tYXAsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MzI2CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uZmlybWluZyBhbmQgQ3Jvc3MtUmVmZXJlbmNpbmcqKgoKWWVzLCB0aGF0JiMzOTtzIGNvcnJlY3QsIG5vIHN1cnByaXNlcyB0aGVyZS4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGhvbGRpbmcuIEJ1dCwganVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIGFuZCB0byBzb2xpZGlmeSBteSB1bmRlcnN0YW5kaW5nLCBsZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGBpZWVlODAyMTFfbWdtdF90eGAgZnVuY3Rpb24uIEkgd2FudCB0byBxdWlja2x5IHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBwYXJ0aWN1bGFyIG1lY2hhbmlzbSBoYW5kbGVzIHRoZSB0cmFuc2FjdGlvbi4gTm8gbmVlZCB0byBsZWF2ZSBhbnkgc3RvbmUgdW50dXJuZWQgd2hlbiBkZWFsaW5nIHdpdGggbG93IGxldmVsIHN5c3RlbXMuIEkgbmVlZCB0byByZWZyZXNoIHRoZSBpbm5lciB3b3JraW5ncyBvZiB0aGlzIGZ1bmN0aW9uIGluIG15IG1pbmQgdG8gcHJvY2VlZCB3aXRoIHRoZSBuZXh0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9tZ210X3R4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jZmcuYz01OTc0PWNvbnN0IHN0cnVjdCBjZmc4MDIxMV9vcHMgbWFjODAyMTFfY29uZmlnX29wcyA9IHtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNjAzNi1cdC5jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwgPSBpZWVlODAyMTFfY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsLFxubmV0L21hYzgwMjExL2NmZy5jOjYwMzc6XHQubWdtdF90eCA9IGllZWU4MDIxMV9tZ210X3R4LFxubmV0L21hYzgwMjExL2NmZy5jOjYwMzg6XHQubWdtdF90eF9jYW5jZWxfd2FpdCA9IGllZWU4MDIxMV9tZ210X3R4X2NhbmNlbF93YWl0LFxubmV0L21hYzgwMjExL2NmZy5jLTYwMzktXHQuc2V0X2NxbV9yc3NpX2NvbmZpZyA9IGllZWU4MDIxMV9zZXRfY3FtX3Jzc2lfY29uZmlnLFxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTIxNTU9aW50IGllZWU4MDIxMV9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIxNTYtXHRcdFx0XHQgICAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgdTY0IGNvb2tpZSk7XG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyMTU3OmludCBpZWVlODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjE1OC1cdFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjE1OTppbnQgaWVlZTgwMjExX21nbXRfdHhfY2FuY2VsX3dhaXQoc3RydWN0IHdpcGh5ICp3aXBoeSxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIxNjAtXHRcdFx0XHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsIHU2NCBjb29raWUpO1xuLS1cbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmM9ODAxPWludCBpZWVlODAyMTFfY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYy04MDktXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jOjgxMDppbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMtODExLVx0XHQgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcbi0tXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jLTEwNDUtXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jOjEwNDY6aW50IGllZWU4MDIxMV9tZ210X3R4X2NhbmNlbF93YWl0KHN0cnVjdCB3aXBoeSAqd2lwaHksXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jLTEwNDctXHRcdFx0XHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsIHU2NCBjb29raWUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMjg4CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEb3VibGUtQ2hlY2tpbmcgdGhlIGBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxgIEZ1bmN0aW9uKioKCk9rYXksIHllcywgdGhhdCBzZWVtcyByaWdodC4gQnV0IGJlZm9yZSBJIG1vdmUgb24sIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4uIExldCBtZSBqdXN0IHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIGRldGFpbHMgYWdhaW4uIEkmIzM5O20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsYC4gSXQmIzM5O3MgYSBjcml0aWNhbCBmdW5jdGlvbiwgYW5kIGEgc3VidGxlIGJ1ZyBoZXJlIGNvdWxkIGhhdmUgY2FzY2FkaW5nIGFuZCBuYXN0eSBpbXBsaWNhdGlvbnMgZG93biB0aGUgbGluZS4gSXQmIzM5O3MgdG9vIGltcG9ydGFudCB0byBnbG9zcyBvdmVyLCBldmVuIGlmIG15IGluaXRpYWwgYXNzZXNzbWVudCBzdWdnZXN0ZWQgZXZlcnl0aGluZyB3YXMgaW4gb3JkZXIuIEkmIzM5O20gZ29pbmcgdG8gbWFrZSBzdXJlIEkmIzM5O20gc29saWQgb24gdGhlIG51YW5jZXMgYW5kIGFueSBwb3RlbnRpYWwgZWRnZSBjYXNlcyBiZWZvcmUgSSBmaW5hbGl6ZSBteSBjb25jbHVzaW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTk6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9NDUyMT12b2lkIF9fYXRoMTBrX3NjYW5fZmluaXNoKHN0cnVjdCBhdGgxMGsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtNDUzMC1cdFx0aWYgKGFyLVx1MDAzZXNjYW4uaXNfcm9jIFx1MDAyNlx1MDAyNiBhci1cdTAwM2VzY2FuLnJvY19ub3RpZnkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjQ1MzE6XHRcdFx0aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQoYXItXHUwMDNlaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy00NTMyLVx0XHRmYWxsdGhyb3VnaDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jPTM4NjY9dm9pZCBfX2F0aDExa19tYWNfc2Nhbl9maW5pc2goc3RydWN0IGF0aDExayAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0zODc1LVx0XHRpZiAoYXItXHUwMDNlc2Nhbi5pc19yb2MgXHUwMDI2XHUwMDI2IGFyLVx1MDAzZXNjYW4ucm9jX25vdGlmeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM6Mzg3NjpcdFx0XHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChhci1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTM4NzctXHRcdGZhbGx0aHJvdWdoO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM9NTE2MT12b2lkIF9fYXRoMTJrX21hY19zY2FuX2ZpbmlzaChzdHJ1Y3QgYXRoMTJrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTUxNzItXHRcdGlmIChhci1cdTAwM2VzY2FuLmlzX3JvYyBcdTAwMjZcdTAwMjYgYXItXHUwMDNlc2Nhbi5yb2Nfbm90aWZ5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYzo1MTczOlx0XHRcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtNTE3NC1cdFx0ZmFsbHRocm91Z2g7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NoYW5uZWwuYz05MzQ9dm9pZCBhdGhfcm9jX2NvbXBsZXRlKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBlbnVtIGF0aF9yb2NfY29tcGxldGVfcmVhc29uIHJlYXNvbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jLTk0My1cdFx0YXRoX2RiZyhjb21tb24sIENIQU5fQ1RYLCBcJiMzNDtSb0MgYWJvcnRlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jOjk0NDpcdFx0aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQoc2MtXHUwMDNlaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NoYW5uZWwuYy05NDUtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jaGFubmVsLmMtOTQ3LVx0XHRhdGhfZGJnKGNvbW1vbiwgQ0hBTl9DVFgsIFwmIzM0O1JvQyBleHBpcmVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jaGFubmVsLmM6OTQ4Olx0XHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChzYy1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jLTk0OS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvaWZhY2UuYz0yMD12b2lkIGl3bF9tbGRfY2xlYW51cF92aWYodm9pZCAqZGF0YSwgdTggKm1hYywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9pZmFjZS5jLTM0LVx0aWYgKG1sZF92aWYtXHUwMDNlcm9jX2FjdGl2aXR5ICE9IFJPQ19OVU1fQUNUSVZJVElFUylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2lmYWNlLmM6MzU6XHRcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKG1sZC1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9pZmFjZS5jLTM2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3JvYy5jPTIyNT12b2lkIGl3bF9tbGRfaGFuZGxlX3JvY19ub3RpZihzdHJ1Y3QgaXdsX21sZCAqbWxkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3JvYy5jLTI1OC1cdFx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9yb2MuYzoyNTk6XHRcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKG1sZC1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9yb2MuYy0yNjAtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYz0xMTMwPXZvaWQgaXdsX212bV9yZXN0YXJ0X2NsZWFudXAoc3RydWN0IGl3bF9tdm0gKm12bSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jLTExNDEtXHRpd2xfbXZtX2NsZWFudXBfcm9jX3RlKG12bSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jOjExNDI6XHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChtdm0tXHUwMDNlaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYy0xMTQzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3RpbWUtZXZlbnQuYz0zMDk9c3RhdGljIHZvaWQgaXdsX212bV90ZV9oYW5kbGVfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90aW1lLWV2ZW50LmMtMzUxLVx0XHRjYXNlIE5MODAyMTFfSUZUWVBFX1AyUF9ERVZJQ0U6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90aW1lLWV2ZW50LmM6MzUyOlx0XHRcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKG12bS1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90aW1lLWV2ZW50LmMtMzUzLVx0XHRcdGl3bF9tdm1fcm9jX2ZpbmlzaGVkKG12bSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGltZS1ldmVudC5jPTQxNT12b2lkIGl3bF9tdm1fcnhfcm9jX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGltZS1ldmVudC5jLTQ0NC1cdFx0aXdsX212bV9yb2NfZmluaXNoZWQobXZtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3RpbWUtZXZlbnQuYzo0NDU6XHRcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKG12bS1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90aW1lLWV2ZW50LmMtNDQ2LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3RpbWUtZXZlbnQuYz00NTI9c3RhdGljIGludCBpd2xfbXZtX2F1eF9yb2NfdGVfaGFuZGxlX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGltZS1ldmVudC5jLTQ3NS1cdFx0LyogRW5kIFRFLCBub3RpZnkgbWFjODAyMTEgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3RpbWUtZXZlbnQuYzo0NzY6XHRcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKG12bS1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90aW1lLWV2ZW50LmMtNDc3LVx0XHRpd2xfbXZtX3JvY19maW5pc2hlZChtdm0pOyAvKiBmbHVzaCBhdXggcXVldWUgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90aW1lLWV2ZW50LmM9OTQ1PXZvaWQgaXdsX212bV9yeF9zZXNzaW9uX3Byb3RlY3Rfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90aW1lLWV2ZW50LmMtMTAwOS1cdFx0aXdsX212bV9yb2NfZmluaXNoZWQobXZtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3RpbWUtZXZlbnQuYzoxMDEwOlx0XHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChtdm0tXHUwMDNlaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGltZS1ldmVudC5jLTEwMTEtXHR9IGVsc2UgaWYgKGxlMzJfdG9fY3B1KG5vdGlmLVx1MDAzZXN0YXJ0KSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvY2hhbm5lbC5jPTMxMz12b2lkIG10NzZfcm9jX2NvbXBsZXRlKHN0cnVjdCBtdDc2X3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvY2hhbm5lbC5jLTMzMS1cdGlmICghdGVzdF9iaXQoTVQ3Nl9NQ1VfUkVTRVQsIFx1MDAyNmRldi1cdTAwM2VwaHkuc3RhdGUpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9jaGFubmVsLmM6MzMyOlx0XHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChwaHktXHUwMDNlaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9jaGFubmVsLmMtMzMzLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWluLmM9MTAzMD12b2lkIG10NzYxNV9yb2Nfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jLTEwNDQtXHRtdDc2MTVfbXV0ZXhfcmVsZWFzZShwaHktXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21haW4uYzoxMDQ1Olx0aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQocGh5LVx1MDAzZW10NzYtXHUwMDNlaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jLTEwNDYtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYz0zODc9dm9pZCBtdDc5MjFfcm9jX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00MDItXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShwaHktXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0MDM6XHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChwaHktXHUwMDNlbXQ3Ni1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtNDA0LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9NTA5PXZvaWQgbXQ3OTI1X3JvY193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtNTIzLVx0bXQ3OTJ4X211dGV4X3JlbGVhc2UocGh5LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6NTI0Olx0aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQocGh5LVx1MDAzZW10NzYtXHUwMDNlaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTUyNS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9NTA0OD12b2lkIHJ0dzg5X3JvY19lbmQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3ODlfdmlmICpydHd2aWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNTA1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjUwNTg6XHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy01MDU5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21hYzgwMjExLmM9MTc2OT12b2lkIHJzaV9yb2NfdGltZW91dChzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWM4MDIxMS5jLTE3NzUtXHRtdXRleF9sb2NrKFx1MDAyNmNvbW1vbi1cdTAwM2VtdXRleCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWM4MDIxMS5jOjE3NzY6XHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChjb21tb24tXHUwMDNlcHJpdi1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWM4MDIxMS5jLTE3NzctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9zY2FuLmM9MTQ5PXZvaWQgd2Z4X3JlbWFpbl9vbl9jaGFubmVsX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93Zngvc2Nhbi5jLTE3OC1cdFx0ZGV2X2Vycih3dmlmLVx1MDAzZXdkZXYtXHUwMDNlZGV2LCBcJiMzNDtyb2MgZGlkbiYjMzk7dCBzdG9wXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93Zngvc2Nhbi5jOjE3OTpcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKHd2aWYtXHUwMDNld2Rldi1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L3NjYW4uYy0xODAtZW5kOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9tYWluLmM9MjcxMj1zdGF0aWMgdm9pZCBfX3dsMTI3MV9vcF9yZW1vdmVfaW50ZXJmYWNlKHN0cnVjdCB3bDEyNzEgKndsLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9tYWluLmMtMjc1NC1cdFx0d2wtXHUwMDNlcm9jX3ZpZiA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvbWFpbi5jOjI3NTU6XHRcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKHdsLVx1MDAzZWh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9tYWluLmMtMjc1Ni1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvbWFpbi5jPTU3NDM9c3RhdGljIHZvaWQgd2xjb3JlX3JvY19jb21wbGV0ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvbWFpbi5jLTU3NTMtXHRpZiAoIXJldClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9tYWluLmM6NTc1NDpcdFx0aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQod2wtXHUwMDNlaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL21haW4uYy01NzU1LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0zMzA3PXN0YXRpYyB2b2lkIGh3X3JvY19kb25lKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zMzEyLVx0bXV0ZXhfbG9jayhcdTAwMjZod3NpbS1cdTAwM2VtdXRleCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzozMzEzOlx0aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQoaHdzaW0tXHUwMDNlaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzMxNC1cdGh3c2ltLVx1MDAzZXRtcF9jaGFuID0gTlVMTDtcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oPTQwNjg9c3RydWN0IGllZWU4MDIxMV9wcmVwX3R4X2luZm8ge1xuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNDQ1MS0gKlx0ZHVyYXRpb24gKHdoaWNoIHdpbGwgYWx3YXlzIGJlIG5vbi16ZXJvKSBleHBpcmVzLCB0aGUgZHJpdmVyIG11c3QgY2FsbFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo0NDUyOiAqXHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZCgpLlxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC00NDUzLSAqXHROb3RlIHRoYXQgdGhpcyBjYWxsYmFjayBtYXkgYmUgY2FsbGVkIHdoaWxlIHRoZSBkZXZpY2UgaXMgaW4gSURMRSBhbmRcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oPTcxNjg9dm9pZCBpZWVlODAyMTFfcmVhZHlfb25fY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyk7XG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03MTcwLS8qKlxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo3MTcxOiAqIGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkIC0gcmVtYWluX29uX2NoYW5uZWwgZHVyYXRpb24gZXhwaXJlZFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03MTcyLSAqIEBodzogcG9pbnRlciBhcyBvYnRhaW5lZCBmcm9tIGllZWU4MDIxMV9hbGxvY19odygpXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTcxNzMtICovXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjcxNzQ6dm9pZCBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyk7XG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTcxNzUtXG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTU5NzQ9Y29uc3Qgc3RydWN0IGNmZzgwMjExX29wcyBtYWM4MDIxMV9jb25maWdfb3BzID0ge1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy02MDM0LVx0LnNldF9iaXRyYXRlX21hc2sgPSBpZWVlODAyMTFfc2V0X2JpdHJhdGVfbWFzayxcbm5ldC9tYWM4MDIxMS9jZmcuYzo2MDM1Olx0LnJlbWFpbl9vbl9jaGFubmVsID0gaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsLFxubmV0L21hYzgwMjExL2NmZy5jLTYwMzYtXHQuY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsID0gaWVlZTgwMjExX2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbCxcbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0yMTQ5PXZvaWQgaWVlZTgwMjExX3JvY19wdXJnZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIxNTAtXHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTtcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjIxNTE6aW50IGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjE1Mi1cdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi0tXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jPTQ5Nj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfaHdfcm9jX2RvbmUoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKndvcmspXG4tLVxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYy01MDgtXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jOjUwOTp2b2lkIGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYy01MTAte1xuLS1cbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMtNTE2LX1cbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmM6NTE3OkVYUE9SVF9TWU1CT0xfR1BMKGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKTtcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMtNTE4LVxuLS1cbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmM9NTU5PXN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMtNzAyLVxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYzo3MDM6aW50IGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYy03MDQtXHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MjUzCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDaGVja2luZyB0aGUgU3RheS1vbi1DaGFubmVsIE1lY2hhbmlzbSoqCgpBbHJpZ2h0LCB0aGUgY29yZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiBoZXJlIGlzIGNsZWFybHkgYGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbGAuIFRoYXQmIzM5O3MgdGhlIG9uZSBJIG5lZWQgdG8gZm9jdXMgb24uIE15IG1lbnRhbCBjaGVja2xpc3Qga2lja3MgaW4gYXV0b21hdGljYWxseTsgdGhlIHN0YXktb24tY2hhbm5lbCBtZWNoYW5pc20gaXMgdXN1YWxseSB0aWdodGx5IGNvdXBsZWQgd2l0aCBtYW5hZ2VtZW50IGZyYW1lIHRyYW5zbWlzc2lvbi4KClNvLCBsZXQgbWUgaW1tZWRpYXRlbHkgY3Jvc3MtcmVmZXJlbmNlIHRoYXQgd2l0aCB0aGUgcmVsZXZhbnQgbWFuYWdlbWVudCBmcmFtZSB0cmFuc21pc3Npb24gZnVuY3Rpb24uIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSB2ZXJpZnkgaG93IGBjZmc4MDIxMV9tbG1lX21nbXRfdHhgIGludGVyYWN0cyB3aXRoIGBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxgLiBJIG5lZWQgdG8gZW5zdXJlIHRoZSBwcm9wZXIgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGVzZSBjb21wb25lbnRzLiBJcyB0aGVyZSBhIGNhbGwgZGlyZWN0bHkgZnJvbSB0aGUgZm9ybWVyIHRvIHRoZSBsYXR0ZXIsIG9yIGlzIGl0IGEgbW9yZSBpbmRpcmVjdCBpbnRlcmFjdGlvbiB0aHJvdWdoIG90aGVyIGZ1bmN0aW9ucz8gQXJlIHRoZXJlIGFueSBkYXRhIHN0cnVjdHVyZXMgb3IgZmxhZ3Mgc2hhcmVkIHRvIGd1YXJhbnRlZSB0aGF0IHN0YXktb24tY2hhbm5lbCBpcyByZXNwZWN0ZWQgd2hlbiBhIG1hbmFnZW1lbnQgZnJhbWUgaXMgdHJhbnNtaXR0ZWQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzZXF1ZW5jaW5nIGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGUgc3RheS1vbi1jaGFubmVsIHByb2Nlc3MgaXMgaW5pdGlhdGVkLCBoYW5kbGVkLCBhbmQgZmluYWxseSwgdGVybWluYXRlZCBpbiByZWxhdGlvbiB0byBmcmFtZSB0cmFuc21pc3Npb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NmZzgwMjExX21sbWVfbWdtdF90eCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvY29yZS5oPTQwMT12b2lkIGNmZzgwMjExX21sbWVfcHVyZ2VfcmVnaXN0cmF0aW9ucyhzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2KTtcbm5ldC93aXJlbGVzcy9jb3JlLmg6NDAyOmludCBjZmc4MDIxMV9tbG1lX21nbXRfdHgoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxubmV0L3dpcmVsZXNzL2NvcmUuaC00MDMtXHRcdFx0ICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9tbG1lLmM9ODYyPXN0YXRpYyBib29sIGNmZzgwMjExX2FsbG93ZWRfcmFuZG9tX2FkZHJlc3Moc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi0tXG5uZXQvd2lyZWxlc3MvbWxtZS5jLTg5NC1cbm5ldC93aXJlbGVzcy9tbG1lLmM6ODk1OmludCBjZmc4MDIxMV9tbG1lX21nbXRfdHgoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxubmV0L3dpcmVsZXNzL21sbWUuYy04OTYtXHRcdFx0ICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTQ3NjQ9c3RhdGljIGludCBubDgwMjExX3R4X21nbXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0ODg3LVx0Y29va2llID0gY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTQ4ODg6XHRlcnIgPSBjZmc4MDIxMV9tbG1lX21nbXRfdHgocmRldiwgd2RldiwgXHUwMDI2cGFyYW1zLCBjb29raWUpO1xubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNDg4OS1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1OTYyCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgaXQmIzM5O3MgYSBkaXJlY3Qgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkNoZWNraW5nIHRoZSBSZW1haW4gb24gQ2hhbm5lbCBGdW5jdGlvbmFsaXR5KioKClllcywgdGhhdCYjMzk7cyBjb3JyZWN0LiBJJiMzOTttIGNvbmZpcm1pbmcgdGhhdCB3aGF0IEkmIzM5O20gdGhpbmtpbmcgaXMgdGhlIGNhc2UuIEFscmlnaHQsIG5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNoZWNrIHRoZSBgbmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbGAgZnVuY3Rpb24gaXRzZWxmLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhpcyBwaWVjZSBvZiBjb2RlIG9wZXJhdGVzLiBVbmRlcnN0YW5kaW5nIGl0cyBzcGVjaWZpY3MgaXMgY3J1Y2lhbCBmb3IgY29uZmlybWluZyBteSBoeXBvdGhlc2lzLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTk6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE0NTQ5PXN0YXRpYyBpbnQgbmw4MDIxMV90ZGxzX29wZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0NTY5LVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxNDU3MDpzdGF0aWMgaW50IG5sODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTQ1NzEtXHRcdFx0XHQgICAgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xOTczMz1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfc21hbGxfb3BzIG5sODAyMTFfc21hbGxfb3BzW10gPSB7XG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMDA4OS1cdFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyMDA5MDpcdFx0LmRvaXQgPSBubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMDA5MS1cdFx0LmZsYWdzID0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTk6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY0NTUKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipDb25maXJtaW5nIGFuZCBaZXJvaW5nIEluKioKClllcywgdGhhdCYjMzk7cyBleGFjdGx5IHJpZ2h0LCB0aGF0JiMzOTtzIHdoYXQgSSB3YXMgdGhpbmtpbmcuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgYG5sODAyMTFfdHhfbWdtdGAgZnVuY3Rpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoYXQgbW9kdWxlIGhhbmRsZXMgdGhlIHRyYW5zbWlzc2lvbiBvZiBtYW5hZ2VtZW50IGZyYW1lcyB3aXRoaW4gdGhlIG5sODAyMTEgZnJhbWV3b3JrLiBJIGhhdmUgYSBmZWVsaW5nIHRoZXJlIG1pZ2h0IGJlIGEgc3VidGxlIG51YW5jZSB0aGVyZSB0aGF0IEkmIzM5O3ZlIG92ZXJsb29rZWQuIFRpbWUgdG8gZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MgYW5kIGRvdWJsZS1jaGVjayB0aG9zZSBwYXJhbWV0ZXJzIGFuZCB0aGUgYXNzb2NpYXRlZCBsb2dpYy4gSSYjMzk7bSBlc3BlY2lhbGx5IGtlZW4gdG8gc2VlIGhvdyBpdCBtYW5hZ2VzIHRoZSBmcmFtZSBjb25zdHJ1Y3Rpb24gYW5kIGFueSBwb3RlbnRpYWwgcmF0ZSBjb250cm9sIGNvbnNpZGVyYXRpb25zLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTk6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmw4MDIxMV90eF9tZ210JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9ubDgwMjExLmM9MTQ3MDY9c3RhdGljIGludCBubDgwMjExX3JlZ2lzdGVyX21nbXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0NzYzLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxNDc2NDpzdGF0aWMgaW50IG5sODAyMTFfdHhfbWdtdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNDc2NS17XG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNDkwOS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTQ5MTA6c3RhdGljIGludCBubDgwMjExX3R4X21nbXRfY2FuY2VsX3dhaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTQ5MTEte1xuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTk3MzM9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBubDgwMjExX3NtYWxsX29wc1tdID0ge1xuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjAxMjAtXHRcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjAxMjE6XHRcdC5kb2l0ID0gbmw4MDIxMV90eF9tZ210LFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMDEyMi1cdFx0LmZsYWdzID0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIwMTI3LVx0XHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjIwMTI4Olx0XHQuZG9pdCA9IG5sODAyMTFfdHhfbWdtdF9jYW5jZWxfd2FpdCxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjAxMjktXHRcdC5mbGFncyA9IEdFTkxfVU5TX0FETUlOX1BFUk0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MTk1CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uZmlybWluZyBhbmQgWmVyb2luZyBJbioqCgpZZXMsIHRoYXQmIzM5O3MgZGVmaW5pdGVseSB0aGUga2V5IHBvaW50IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGguIE9rYXksIHNvIHRoZSBuZXh0IHRoaW5nIHRvIGludmVzdGlnYXRlIGlzIGBubDgwMjExX3Byb2JlX3BlZXJgLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24uIEl0JiMzOTtzIHRoZSBsb2dpY2FsIG5leHQgc3RlcCBpbiB0cmFjaW5nIHRoaXMgaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25sODAyMTFfcHJvYmVfcGVlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE2MzEwPXN0YXRpYyBpbnQgbmw4MDIxMV9yZWdpc3Rlcl91bmV4cGVjdGVkX2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNjMyNy1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTYzMjg6c3RhdGljIGludCBubDgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTYzMjkte1xuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTk3MzM9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBubDgwMjExX3NtYWxsX29wc1tdID0ge1xuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjAyMzctXHRcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjAyMzg6XHRcdC5kb2l0ID0gbmw4MDIxMV9wcm9iZV9wZWVyLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMDIzOS1cdFx0LmZsYWdzID0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTk6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc2MzcKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIFRyYW5zbWlzc2lvbiBDb250cm9sIFBvcnQqKgoKWWVzLCB0aGF0JiMzOTtzIGRlZmluaXRlbHkgdGhlIGtleSBhcmVhIHRvIGJlIGxvb2tpbmcgYXQuIEkmIzM5O20gZm9jdXNpbmcgaW4gb24gYG5sODAyMTFfdHhfY29udHJvbF9wb3J0YC4gSXQmIzM5O3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgc28gdG8gc3BlYWssIGluIHRlcm1zIG9mIGFjdHVhbGx5ICpjb250cm9sbGluZyogdGhlIHRyYW5zbWlzc2lvbiBwcm9jZXNzIGZvciA4MDIuMTEgZnJhbWVzLiBHb3R0YSB2ZXJpZnkgdGhlIG51YW5jZXMgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25sODAyMTFfdHhfY29udHJvbF9wb3J0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9ubDgwMjExLmM9MTg0OTQ9c3RhdGljIGludCBubDgwMjExX2V4dGVybmFsX2F1dGgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE4NTM1LVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxODUzNjpzdGF0aWMgaW50IG5sODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE4NTM3LXtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE5NzMzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgbmw4MDIxMV9zbWFsbF9vcHNbXSA9IHtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIwNDcxLVx0XHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjIwNDcyOlx0XHQuZG9pdCA9IG5sODAyMTFfdHhfY29udHJvbF9wb3J0LFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMDQ3My1cdFx0LmZsYWdzID0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTk6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgxMDcKCQkJCQkJCW91dHB1dDogMzMxCgkJCQkJCQl0aG91Z2h0czogNDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgUGxhbiBmb3IgVGhpcyBQYXRjaCoqCgpPa2F5LCB5ZXMsIHRoaXMgcGF0Y2ggbG9va3Mgc29saWQsIGRlZmluaXRlbHkgZnVuY3Rpb25hbCwgYW5kIHJlYWR5IGZvciBhIGdvb2QgZnV6emluZyBydW4uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGl0IG5lZWRzIHRvIGJlIHN0cmVzc2VkIHdpdGggZnV6emluZy4KClRvIGVuc3VyZSBjb21wcmVoZW5zaXZlIGNvdmVyYWdlLCBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpZ3VyZSB0aGUgZnV6emluZyBlbnZpcm9ubWVudCB3aXRoIGBDRkc4MDIxMWAsIGBNQUM4MDIxMWAsIGFuZCBgTUFDODAyMTFfSFdTSU1gLiBUaGF0IHdpbGwgYmUgbXkgc3RhcnRpbmcgcG9pbnQuCgpUaGUgY29yZSBmb2N1cyBzeW1ib2xzIGZvciBpbml0aWFsIGZ1enppbmcgYXJlOgotICAgYG5sODAyMTFfcmVtYWluX29uX2NoYW5uZWxgCi0gICBgbmw4MDIxMV90eF9tZ210YAotICAgYG5sODAyMTFfcHJvYmVfcGVlcmAKLSAgIGBubDgwMjExX3R4X2NvbnRyb2xfcG9ydGAKLSAgIGBjZmc4MDIxMV9tbG1lX21nbXRfdHhgCi0gICBgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsYAotICAgYGllZWU4MDIxMV9tZ210X3R4YAotICAgYGllZWU4MDIxMV9wcm9iZV9wZWVyYAotICAgYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgCgpIb3dldmVyLCBhIHF1aWNrIHNjYW4gb2YgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyByZXZlYWxzIHNldmVyYWwgYWRkaXRpb25hbCBhcmVhcyBpbXBhY3RlZC4gSSBzZWUgYGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYmAgd2hpY2ggbG9va3MgaW50ZXJlc3RpbmcgZm9yIGZ1enppbmcsIGFzIHdlbGwgYXMgYGllZWU4MDIxMV9zdGFydF9yb2Nfd29ya2AsIHdoaWNoIGNvdWxkIGFsc28gZXhwb3NlIHNvbWUgdnVsbmVyYWJpbGl0aWVzLiBJJiMzOTttIGFsc28gc2VlaW5nIGBpZWVlODAyMTFfbWxvX211bHRpY2FzdF90eF9vbmVgLCBgaWVlZTgwMjExX21sb19tdWx0aWNhc3RfdHhgLCBgaWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXRgLCBgaWVlZTgwMjExXzgwMjNfeG1pdGAsIGBpZWVlODAyMTFfYnVpbGRfZGF0YV90ZW1wbGF0ZWAsIGBpZWVlODAyMTFfcHJvYmVfbWVzaF9saW5rYCwgYW5kIGBpZWVlODAyMTFfdGRsc19wcmVwX21nbXRfcGFja2V0YC4KCkNvbnNpZGVyaW5nIHRoZXNlLCBJJiMzOTttIGdvaW5nIHRvIGFkZCBgaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiYCBhbmQgYGllZWU4MDIxMV9zdGFydF9yb2Nfd29ya2AgdG8gdGhlIGluaXRpYWwgZm9jdXMgbGlzdCBmb3IgZnV6emluZy4gVGhpcyBzaG91bGQgZ2l2ZSBhIHJvYnVzdCB0ZXN0LCBhbmQgaG9wZWZ1bGx5IHVuZWFydGggYW55IGhpZGRlbiBidWdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxOToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsJiMzNDssCiAgICAmIzM0O25sODAyMTFfdHhfbWdtdCYjMzQ7LAogICAgJiMzNDtubDgwMjExX3Byb2JlX3BlZXImIzM0OywKICAgICYjMzQ7bmw4MDIxMV90eF9jb250cm9sX3BvcnQmIzM0OywKICAgICYjMzQ7Y2ZnODAyMTFfbWxtZV9tZ210X3R4JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfbWdtdF90eCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfcHJvYmVfcGVlciYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9hdHRhY2hfYWNrX3NrYiYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfc3RhcnRfcm9jX3dvcmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBob3cgY29va2llcyBhcmUgZ2VuZXJhdGVkIGFuZCBwYXNzZWQgZm9yIHNldmVyYWwgbmw4MDIxMSBjb21tYW5kcyAocmVtYWluX29uX2NoYW5uZWwsIHR4X21nbXQsIHByb2JlX3BlZXIsIHR4X2NvbnRyb2xfcG9ydCkuIEl0IG1vZGlmaWVzIHRoZSBjb3JlIGNmZzgwMjExIGFuZCBtYWM4MDIxMSBsb2dpYyB0byBnZW5lcmF0ZSBjb29raWVzIGluIG5sODAyMTEgYW5kIHBhc3MgdGhlbSBieSB2YWx1ZSB0byBkcml2ZXJzLCBpbnN0ZWFkIG9mIGhhdmluZyBkcml2ZXJzIGdlbmVyYXRlIHRoZW0gYW5kIHBhc3MgdGhlbSBiYWNrIHZpYSBwb2ludGVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIHdpcmVsZXNzIHN0YWNrIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25sODAyMTFfcmVtYWluX29uX2NoYW5uZWwmIzM0OywKICAgICYjMzQ7bmw4MDIxMV90eF9tZ210JiMzNDssCiAgICAmIzM0O25sODAyMTFfcHJvYmVfcGVlciYjMzQ7LAogICAgJiMzNDtubDgwMjExX3R4X2NvbnRyb2xfcG9ydCYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV9tbG1lX21nbXRfdHgmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9tZ210X3R4JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9wcm9iZV9wZWVyJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV90eF9jb250cm9sX3BvcnQmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9zdGFydF9yb2Nfd29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIGhvdyBjb29raWVzIGFyZSBnZW5lcmF0ZWQgYW5kIHBhc3NlZCBmb3Igc2V2ZXJhbCBubDgwMjExIGNvbW1hbmRzIChyZW1haW5fb25fY2hhbm5lbCwgdHhfbWdtdCwgcHJvYmVfcGVlciwgdHhfY29udHJvbF9wb3J0KS4gSXQgbW9kaWZpZXMgdGhlIGNvcmUgY2ZnODAyMTEgYW5kIG1hYzgwMjExIGxvZ2ljIHRvIGdlbmVyYXRlIGNvb2tpZXMgaW4gbmw4MDIxMSBhbmQgcGFzcyB0aGVtIGJ5IHZhbHVlIHRvIGRyaXZlcnMsIGluc3RlYWQgb2YgaGF2aW5nIGRyaXZlcnMgZ2VuZXJhdGUgdGhlbSBhbmQgcGFzcyB0aGVtIGJhY2sgdmlhIHBvaW50ZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgd2lyZWxlc3Mgc3RhY2sgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxOToyMjozNy4zMTcxNTQ3NTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTA4ODk2OTY1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbFwiLFxuICAgIFwibmw4MDIxMV90eF9tZ210XCIsXG4gICAgXCJubDgwMjExX3Byb2JlX3BlZXJcIixcbiAgICBcIm5sODAyMTFfdHhfY29udHJvbF9wb3J0XCIsXG4gICAgXCJjZmc4MDIxMV9tbG1lX21nbXRfdHhcIixcbiAgICBcImllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbFwiLFxuICAgIFwiaWVlZTgwMjExX21nbXRfdHhcIixcbiAgICBcImllZWU4MDIxMV9wcm9iZV9wZWVyXCIsXG4gICAgXCJpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0XCIsXG4gICAgXCJpZWVlODAyMTFfYXR0YWNoX2Fja19za2JcIixcbiAgICBcImllZWU4MDIxMV9zdGFydF9yb2Nfd29ya1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgaG93IGNvb2tpZXMgYXJlIGdlbmVyYXRlZCBhbmQgcGFzc2VkIGZvciBzZXZlcmFsIG5sODAyMTEgY29tbWFuZHMgKHJlbWFpbl9vbl9jaGFubmVsLCB0eF9tZ210LCBwcm9iZV9wZWVyLCB0eF9jb250cm9sX3BvcnQpLiBJdCBtb2RpZmllcyB0aGUgY29yZSBjZmc4MDIxMSBhbmQgbWFjODAyMTEgbG9naWMgdG8gZ2VuZXJhdGUgY29va2llcyBpbiBubDgwMjExIGFuZCBwYXNzIHRoZW0gYnkgdmFsdWUgdG8gZHJpdmVycywgaW5zdGVhZCBvZiBoYXZpbmcgZHJpdmVycyBnZW5lcmF0ZSB0aGVtIGFuZCBwYXNzIHRoZW0gYmFjayB2aWEgcG9pbnRlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSB3aXJlbGVzcyBzdGFjayBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjI6MzcuMzE3MTYwMDE1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODQ1OTA3OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkYjY0N2Y0MDNkOTlhNDM2OTA0M2RmM2MwNWVlYTVkZGY4NDA4MDVkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDEgMTk6MjI6MzYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jXFxuaW5kZXggZWNkZTkxMTU5YjU0Ni4uMzQwMjVkNjRkNjE1OCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmNcXG5AQCAtMzAzNCwyMCArMzAzNCwxNCBAQCBzdGF0aWMgaW50IGF0aDZrbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXHRcXHRcXHRcXHQgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcXG4gXFx0XFx0XFx0XFx0ICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbixcXG4tXFx0XFx0XFx0XFx0ICAgIHU2NCAqY29va2llLCBjb25zdCB1OCAqcnhfYWRkcilcXG4rXFx0XFx0XFx0XFx0ICAgIHU2NCBjb29raWUsIGNvbnN0IHU4ICpyeF9hZGRyKVxcbiB7XFxuIFxcdHN0cnVjdCBhdGg2a2xfdmlmICp2aWYgPSBhdGg2a2xfdmlmX2Zyb21fd2Rldih3ZGV2KTtcXG4gXFx0c3RydWN0IGF0aDZrbCAqYXIgPSBhdGg2a2xfcHJpdih2aWYtXFx1MDAzZW5kZXYpO1xcbi1cXHR1MzIgaWQ7XFxuIFxcbiBcXHQvKiBUT0RPOiBpZiBhbHJlYWR5IHBlbmRpbmcgb3Igb25nb2luZyByZW1haW4tb24tY2hhbm5lbCxcXG4gXFx0ICogcmV0dXJuIC1FQlVTWSAqL1xcbi1cXHRpZCA9ICsrdmlmLVxcdTAwM2VsYXN0X3JvY19pZDtcXG4tXFx0aWYgKGlkID09IDApIHtcXG4tXFx0XFx0LyogRG8gbm90IHVzZSAwIGFzIHRoZSBjb29raWUgdmFsdWUgKi9cXG4tXFx0XFx0aWQgPSArK3ZpZi1cXHUwMDNlbGFzdF9yb2NfaWQ7XFxuLVxcdH1cXG4tXFx0KmNvb2tpZSA9IGlkO1xcbitcXHR2aWYtXFx1MDAzZWxhc3Rfcm9jX2lkID0gY29va2llO1xcbiBcXG4gXFx0cmV0dXJuIGF0aDZrbF93bWlfcmVtYWluX29uX2NobmxfY21kKGFyLVxcdTAwM2V3bWksIHZpZi1cXHUwMDNlZndfdmlmX2lkeCxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICBjaGFuLVxcdTAwM2VjZW50ZXJfZnJlcSwgZHVyYXRpb24pO1xcbkBAIC0zMTA2LDYgKzMxMDAsNyBAQCBzdGF0aWMgaW50IGF0aDZrbF9zZW5kX2dvX3Byb2JlX3Jlc3Aoc3RydWN0IGF0aDZrbF92aWYgKnZpZixcXG4gXFxuIHN0YXRpYyBib29sIGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLFxcbiBcXHRcXHRcXHRcXHQgICAgIHUzMiBpZCxcXG4rXFx0XFx0XFx0XFx0ICAgICB1NjQgY29va2llLFxcbiBcXHRcXHRcXHRcXHQgICAgIHUzMiBmcmVxLFxcbiBcXHRcXHRcXHRcXHQgICAgIHUzMiB3YWl0LFxcbiBcXHRcXHRcXHRcXHQgICAgIGNvbnN0IHU4ICpidWYsXFxuQEAgLTMxMzgsNiArMzEzMyw3IEBAIHN0YXRpYyBib29sIGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLFxcbiBcXG4gXFx0XFx0XFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNm1nbXRfYnVmLVxcdTAwM2VsaXN0KTtcXG4gXFx0XFx0XFx0bWdtdF9idWYtXFx1MDAzZWlkID0gaWQ7XFxuK1xcdFxcdFxcdG1nbXRfYnVmLVxcdTAwM2Vjb29raWUgPSBjb29raWU7XFxuIFxcdFxcdFxcdG1nbXRfYnVmLVxcdTAwM2VmcmVxID0gZnJlcTtcXG4gXFx0XFx0XFx0bWdtdF9idWYtXFx1MDAzZXdhaXQgPSB3YWl0O1xcbiBcXHRcXHRcXHRtZ210X2J1Zi1cXHUwMDNlbGVuID0gbGVuO1xcbkBAIC0zMTkwLDcgKzMxODYsNyBAQCBzdGF0aWMgYm9vbCBhdGg2a2xfaXNfcDJwX2dvX3NzaWQoY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbilcXG4gfVxcbiBcXG4gc3RhdGljIGludCBhdGg2a2xfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbi1cXHRcXHRcXHQgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcXG4rXFx0XFx0XFx0ICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmID0gYXRoNmtsX3ZpZl9mcm9tX3dkZXYod2Rldik7XFxuIFxcdHN0cnVjdCBhdGg2a2wgKmFyID0gYXRoNmtsX3ByaXYodmlmLVxcdTAwM2VuZGV2KTtcXG5AQCAtMzIyMiw3ICszMjE4LDYgQEAgc3RhdGljIGludCBhdGg2a2xfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRcXHQgKiBTZW5kIFByb2JlIFJlc3BvbnNlIGZyYW1lIGluIEdPIG1vZGUgdXNpbmcgYSBzZXBhcmF0ZSBXTUlcXG4gXFx0XFx0ICogY29tbWFuZCB0byBhbGxvdyB0aGUgdGFyZ2V0IHRvIGZpbGwgaW4gdGhlIGdlbmVyaWMgSUVzLlxcbiBcXHRcXHQgKi9cXG4tXFx0XFx0KmNvb2tpZSA9IDA7IC8qIFRYIHN0YXR1cyBub3Qgc3VwcG9ydGVkICovXFxuIFxcdFxcdHJldHVybiBhdGg2a2xfc2VuZF9nb19wcm9iZV9yZXNwKHZpZiwgYnVmLCBsZW4sIGZyZXEpO1xcbiBcXHR9XFxuIFxcbkBAIC0zMjM1LDE2ICszMjMwLDE1IEBAIHN0YXRpYyBpbnQgYXRoNmtsX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0aWQgPSB2aWYtXFx1MDAzZXNlbmRfYWN0aW9uX2lkKys7XFxuIFxcdH1cXG4gXFxuLVxcdCpjb29raWUgPSBpZDtcXG4tXFxuIFxcdC8qIEFQIG1vZGUgUG93ZXIgc2F2aW5nIHByb2Nlc3NpbmcgKi9cXG4gXFx0aWYgKHZpZi1cXHUwMDNlbndfdHlwZSA9PSBBUF9ORVRXT1JLKSB7XFxuLVxcdFxcdHF1ZXVlZCA9IGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcCh2aWYsIGlkLCBmcmVxLCB3YWl0LCBidWYsIGxlbixcXG4tXFx0XFx0XFx0XFx0XFx0XFx0ICBcXHUwMDI2bW9yZV9kYXRhLCBub19jY2spO1xcbitcXHRcXHRxdWV1ZWQgPSBhdGg2a2xfbWdtdF9wb3dlcnNhdmVfYXAodmlmLCBpZCwgY29va2llLCBmcmVxLCB3YWl0LFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgIGJ1ZiwgbGVuLCBcXHUwMDI2bW9yZV9kYXRhLCBub19jY2spO1xcbiBcXHRcXHRpZiAocXVldWVkKVxcbiBcXHRcXHRcXHRyZXR1cm4gMDtcXG4gXFx0fVxcbiBcXG4rXFx0YXItXFx1MDAzZXdtaS1cXHUwMDNlbGFzdF9tZ210X3R4X2Nvb2tpZSA9IGNvb2tpZTtcXG4gXFx0cmV0dXJuIGF0aDZrbF93bWlfc2VuZF9tZ210X2NtZChhci1cXHUwMDNld21pLCB2aWYtXFx1MDAzZWZ3X3ZpZl9pZHgsIGlkLCBmcmVxLFxcbiBcXHRcXHRcXHRcXHRcXHR3YWl0LCBidWYsIGxlbiwgbm9fY2NrKTtcXG4gfVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oXFxuaW5kZXggNzdlMDUyMzM2ZWI1Yi4uYTBiMjM2ZWVlYWI1NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oXFxuQEAgLTQwNCw2ICs0MDQsNyBAQCBzdHJ1Y3QgYXRoNmtsX21nbXRfYnVmZiB7XFxuIFxcdHUzMiBmcmVxO1xcbiBcXHR1MzIgd2FpdDtcXG4gXFx0dTMyIGlkO1xcbitcXHR1NjQgY29va2llO1xcbiBcXHRib29sIG5vX2NjaztcXG4gXFx0c2l6ZV90IGxlbjtcXG4gXFx0dTggYnVmW107XFxuQEAgLTYzMSw4ICs2MzIsOCBAQCBzdHJ1Y3QgYXRoNmtsX3ZpZiB7XFxuIFxcdHN0cnVjdCBjZmc4MDIxMV9zY2FuX3JlcXVlc3QgKnNjYW5fcmVxO1xcbiBcXHRlbnVtIHNtZV9zdGF0ZSBzbWVfc3RhdGU7XFxuIFxcdGludCByZWNvbm5lY3RfZmxhZztcXG4tXFx0dTMyIGxhc3Rfcm9jX2lkO1xcbi1cXHR1MzIgbGFzdF9jYW5jZWxfcm9jX2lkO1xcbitcXHR1NjQgbGFzdF9yb2NfaWQ7XFxuK1xcdHU2NCBsYXN0X2NhbmNlbF9yb2NfaWQ7XFxuIFxcdHUzMiBzZW5kX2FjdGlvbl9pZDtcXG4gXFx0Ym9vbCBwcm9iZV9yZXFfcmVwb3J0O1xcbiBcXHR1MTYgYXNzb2NfYnNzX2JlYWNvbl9pbnQ7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmNcXG5pbmRleCA4YWZjNjU4OWZjNTFlLi45YzAyM2Q3Y2UzMDU5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmNcXG5AQCAtODk4LDYgKzg5OCw3IEBAIHZvaWQgYXRoNmtsX3BzcG9sbF9ldmVudChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCBhaWQpXFxuIFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZjb25uLVxcdTAwM2Vwc3FfbG9jayk7XFxuIFxcbiBcXHRcXHRjb25uLVxcdTAwM2VzdGFfZmxhZ3MgfD0gU1RBX1BTX1BPTExFRDtcXG4rXFx0XFx0YXItXFx1MDAzZXdtaS1cXHUwMDNlbGFzdF9tZ210X3R4X2Nvb2tpZSA9IG1nbXRfYnVmLVxcdTAwM2Vjb29raWU7XFxuIFxcdFxcdGF0aDZrbF93bWlfc2VuZF9tZ210X2NtZChhci1cXHUwMDNld21pLCB2aWYtXFx1MDAzZWZ3X3ZpZl9pZHgsXFxuIFxcdFxcdFxcdFxcdFxcdCBtZ210X2J1Zi1cXHUwMDNlaWQsIG1nbXRfYnVmLVxcdTAwM2VmcmVxLFxcbiBcXHRcXHRcXHRcXHRcXHQgbWdtdF9idWYtXFx1MDAzZXdhaXQsIG1nbXRfYnVmLVxcdTAwM2VidWYsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNcXG5pbmRleCBkODE4MjU0MTM5MDYxLi42MDlkNDU4Y2E2YzU3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNcXG5AQCAtMTQ2OSw2ICsxNDY5LDcgQEAgdm9pZCBhdGg2a2xfcngoc3RydWN0IGh0Y190YXJnZXQgKnRhcmdldCwgc3RydWN0IGh0Y19wYWNrZXQgKnBhY2tldClcXG4gXFx0XFx0XFx0XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmNvbm4tXFx1MDAzZXBzcV9sb2NrKTtcXG4gXFx0XFx0XFx0XFx0XFx0aWR4ID0gdmlmLVxcdTAwM2Vmd192aWZfaWR4O1xcbiBcXG4rXFx0XFx0XFx0XFx0XFx0YXItXFx1MDAzZXdtaS1cXHUwMDNlbGFzdF9tZ210X3R4X2Nvb2tpZSA9IG1nbXQtXFx1MDAzZWNvb2tpZTtcXG4gXFx0XFx0XFx0XFx0XFx0YXRoNmtsX3dtaV9zZW5kX21nbXRfY21kKGFyLVxcdTAwM2V3bWksXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCBpZHgsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCBtZ210LVxcdTAwM2VpZCxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmNcXG5pbmRleCA2YzI5ZjBiY2VjOWY1Li4yMTQwZmRkYmE4YmFmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jXFxuQEAgLTU5Niw3ICs1OTYsNyBAQCBzdGF0aWMgaW50IGF0aDZrbF93bWlfdHhfc3RhdHVzX2V2ZW50X3J4KHN0cnVjdCB3bWkgKndtaSwgdTggKmRhdGFwLCBpbnQgbGVuLFxcbiBcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV01JLCBcXFwidHhfc3RhdHVzOiBpZD0leCBhY2tfc3RhdHVzPSV1XFxcXG5cXFwiLFxcbiBcXHRcXHQgICBpZCwgZXYtXFx1MDAzZWFja19zdGF0dXMpO1xcbiBcXHRpZiAod21pLVxcdTAwM2VsYXN0X21nbXRfdHhfZnJhbWUpIHtcXG4tXFx0XFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMoXFx1MDAyNnZpZi1cXHUwMDNld2RldiwgaWQsXFxuK1xcdFxcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKFxcdTAwMjZ2aWYtXFx1MDAzZXdkZXYsIHdtaS1cXHUwMDNlbGFzdF9tZ210X3R4X2Nvb2tpZSxcXG4gXFx0XFx0XFx0XFx0XFx0d21pLVxcdTAwM2VsYXN0X21nbXRfdHhfZnJhbWUsXFxuIFxcdFxcdFxcdFxcdFxcdHdtaS1cXHUwMDNlbGFzdF9tZ210X3R4X2ZyYW1lX2xlbixcXG4gXFx0XFx0XFx0XFx0XFx0ISFldi1cXHUwMDNlYWNrX3N0YXR1cywgR0ZQX0FUT01JQyk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oXFxuaW5kZXggOGZiZWNlM2ZkYWQ5Zi4uODljZTJhYmJiMWNkYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaFxcbkBAIC0xMjUsNiArMTI1LDcgQEAgc3RydWN0IHdtaSB7XFxuIFxcbiBcXHR1OCAqbGFzdF9tZ210X3R4X2ZyYW1lO1xcbiBcXHRzaXplX3QgbGFzdF9tZ210X3R4X2ZyYW1lX2xlbjtcXG4rXFx0dTY0IGxhc3RfbWdtdF90eF9jb29raWU7XFxuIFxcdHU4IHNhdmVkX3B3cl9tb2RlO1xcbiB9O1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmNcXG5pbmRleCA1ZjJiZDlhMzFmYWY2Li45YWMzM2Q4MjdmODAxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9jZmc4MDIxMS5jXFxuQEAgLTE0MzIsNyArMTQzMiw3IEBAIHN0YXRpYyBpbnQgd2lsX2NmZzgwMjExX3NldF93aXBoeV9wYXJhbXMoc3RydWN0IHdpcGh5ICp3aXBoeSwgaW50IHJhZGlvX2lkeCxcXG4gXFxuIGludCB3aWxfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRcXHRcXHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXFxuLVxcdFxcdFxcdCB1NjQgKmNvb2tpZSlcXG4rXFx0XFx0XFx0IHU2NCBjb29raWUpXFxuIHtcXG4gXFx0Y29uc3QgdTggKmJ1ZiA9IHBhcmFtcy1cXHUwMDNlYnVmO1xcbiBcXHRzaXplX3QgbGVuID0gcGFyYW1zLVxcdTAwM2VsZW47XFxuQEAgLTE0ODgsOCArMTQ4OCw3IEBAIGludCB3aWxfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHQgKi9cXG4gXFx0dHhfc3RhdHVzID0gKHJjID09IDApO1xcbiBcXHRyYyA9IChyYyA9PSAtRUFHQUlOKSA/IDAgOiByYztcXG4tXFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llID8gKmNvb2tpZSA6IDAsIGJ1ZiwgbGVuLFxcbi1cXHRcXHRcXHRcXHR0eF9zdGF0dXMsIEdGUF9LRVJORUwpO1xcbitcXHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBjb29raWUsIGJ1ZiwgbGVuLCB0eF9zdGF0dXMsIEdGUF9LRVJORUwpO1xcbiBcXG4gXFx0cmV0dXJuIHJjO1xcbiB9XFxuQEAgLTE3MzUsNyArMTczNCw3IEBAIHN0YXRpYyBpbnQgd2lsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdFxcdFxcdFxcdCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRcXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxcbiBcXHRcXHRcXHRcXHQgdW5zaWduZWQgaW50IGR1cmF0aW9uLFxcbi1cXHRcXHRcXHRcXHQgdTY0ICpjb29raWUsIGNvbnN0IHU4ICpyeF9hZGRyKVxcbitcXHRcXHRcXHRcXHQgdTY0IGNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpXFxuIHtcXG4gXFx0c3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsID0gd2lwaHlfdG9fd2lsKHdpcGh5KTtcXG4gXFx0aW50IHJjO1xcbkBAIC0yMzgxLDcgKzIzODAsNyBAQCB2b2lkIHdpbF9wcm9iZV9jbGllbnRfZmx1c2goc3RydWN0IHdpbDYyMTBfdmlmICp2aWYpXFxuIFxcbiBzdGF0aWMgaW50IHdpbF9jZmc4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLVxcdFxcdFxcdFxcdCAgIGNvbnN0IHU4ICpwZWVyLCB1NjQgKmNvb2tpZSlcXG4rXFx0XFx0XFx0XFx0ICAgY29uc3QgdTggKnBlZXIsIHU2NCBjb29raWUpXFxuIHtcXG4gXFx0c3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsID0gd2lwaHlfdG9fd2lsKHdpcGh5KTtcXG4gXFx0c3RydWN0IHdpbDYyMTBfdmlmICp2aWYgPSBuZGV2X3RvX3ZpZihkZXYpO1xcbkBAIC0yMzk5LDEzICsyMzk4LDEyIEBAIHN0YXRpYyBpbnQgd2lsX2NmZzgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbiBcXHRyZXEtXFx1MDAzZWNpZCA9IGNpZDtcXG4tXFx0cmVxLVxcdTAwM2Vjb29raWUgPSBjaWQ7XFxuK1xcdHJlcS1cXHUwMDNlY29va2llID0gY29va2llO1xcbiBcXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2dmlmLVxcdTAwM2Vwcm9iZV9jbGllbnRfbXV0ZXgpO1xcbiBcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZyZXEtXFx1MDAzZWxpc3QsIFxcdTAwMjZ2aWYtXFx1MDAzZXByb2JlX2NsaWVudF9wZW5kaW5nKTtcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2aWYtXFx1MDAzZXByb2JlX2NsaWVudF9tdXRleCk7XFxuIFxcbi1cXHQqY29va2llID0gcmVxLVxcdTAwM2Vjb29raWU7XFxuIFxcdHF1ZXVlX3dvcmsod2lsLVxcdTAwM2V3cV9zZXJ2aWNlLCBcXHUwMDI2dmlmLVxcdTAwM2Vwcm9iZV9jbGllbnRfd29ya2VyKTtcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvZGVidWdmcy5jXFxuaW5kZXggYjhjYjczNmE3MTg1Mi4uZTA2ZTQ1MzIzMjcyYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9kZWJ1Z2ZzLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9kZWJ1Z2ZzLmNcXG5AQCAtOTg1LDcgKzk4NSw3IEBAIHN0YXRpYyBzc2l6ZV90IHdpbF93cml0ZV9maWxlX3R4bWdtdChzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZixcXG4gXFx0cGFyYW1zLmJ1ZiA9IGZyYW1lO1xcbiBcXHRwYXJhbXMubGVuID0gbGVuO1xcbiBcXG4tXFx0cmMgPSB3aWxfY2ZnODAyMTFfbWdtdF90eCh3aXBoeSwgd2RldiwgXFx1MDAyNnBhcmFtcywgTlVMTCk7XFxuK1xcdHJjID0gd2lsX2NmZzgwMjExX21nbXRfdHgod2lwaHksIHdkZXYsIFxcdTAwMjZwYXJhbXMsIDApO1xcbiBcXG4gXFx0a2ZyZWUoZnJhbWUpO1xcbiBcXHR3aWxfaW5mbyh3aWwsIFxcXCItXFx1MDAzZSAlZFxcXFxuXFxcIiwgcmMpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9wMnAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3AycC5jXFxuaW5kZXggZjIwY2FmMWEzOTA1Yi4uYWNkOGEyZTM1MTAzMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9wMnAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3AycC5jXFxuQEAgLTEyNCw3ICsxMjQsNyBAQCBpbnQgd2lsX3AycF9zZWFyY2goc3RydWN0IHdpbDYyMTBfdmlmICp2aWYsXFxuIFxcbiBpbnQgd2lsX3AycF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRcXHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcXG4tXFx0XFx0ICAgdTY0ICpjb29raWUpXFxuK1xcdFxcdCAgIHU2NCBjb29raWUpXFxuIHtcXG4gXFx0c3RydWN0IHdpbDYyMTBfdmlmICp2aWYgPSB3ZGV2X3RvX3ZpZih3aWwsIHdkZXYpO1xcbiBcXHRzdHJ1Y3Qgd2lsX3AycF9pbmZvICpwMnAgPSBcXHUwMDI2dmlmLVxcdTAwM2VwMnA7XFxuQEAgLTE0NCw3ICsxNDQsNyBAQCBpbnQgd2lsX3AycF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHR9XFxuIFxcbiBcXHRtZW1jcHkoXFx1MDAyNnAycC1cXHUwMDNlbGlzdGVuX2NoYW4sIGNoYW4sIHNpemVvZigqY2hhbikpO1xcbi1cXHQqY29va2llID0gKytwMnAtXFx1MDAzZWNvb2tpZTtcXG4rXFx0cDJwLVxcdTAwM2Vjb29raWUgPSBjb29raWU7XFxuIFxcdHAycC1cXHUwMDNlbGlzdGVuX2R1cmF0aW9uID0gZHVyYXRpb247XFxuIFxcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZ3aWwtXFx1MDAzZXZpZl9tdXRleCk7XFxuQEAgLTE2Niw3ICsxNjYsNyBAQCBpbnQgd2lsX3AycF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRpZiAodmlmLVxcdTAwM2VtaWQgPT0gMClcXG4gXFx0XFx0d2lsLVxcdTAwM2VyYWRpb193ZGV2ID0gd2RldjtcXG4gXFxuLVxcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgKmNvb2tpZSwgY2hhbiwgZHVyYXRpb24sXFxuK1xcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLCBkdXJhdGlvbixcXG4gXFx0XFx0XFx0XFx0ICBHRlBfS0VSTkVMKTtcXG4gXFxuIG91dDpcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd2lsNjIxMC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd2lsNjIxMC5oXFxuaW5kZXggMzFlMTA3YzgxZTJkNC4uZjhlNjBiZTYzMWNhNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93aWw2MjEwLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93aWw2MjEwLmhcXG5AQCAtMTMwMSw3ICsxMzAxLDcgQEAgaW50IHdpbF9wMnBfc2VhcmNoKHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmLFxcbiBcXHRcXHQgICBzdHJ1Y3QgY2ZnODAyMTFfc2Nhbl9yZXF1ZXN0ICpyZXF1ZXN0KTtcXG4gaW50IHdpbF9wMnBfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0ICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXFxuLVxcdFxcdCAgIHU2NCAqY29va2llKTtcXG4rXFx0XFx0ICAgdTY0IGNvb2tpZSk7XFxuIHU4IHdpbF9wMnBfc3RvcF9kaXNjb3Zlcnkoc3RydWN0IHdpbDYyMTBfdmlmICp2aWYpO1xcbiBpbnQgd2lsX3AycF9jYW5jZWxfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmLCB1NjQgY29va2llKTtcXG4gdm9pZCB3aWxfcDJwX2xpc3Rlbl9leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XFxuQEAgLTEzMTcsNyArMTMxNyw3IEBAIGludCB3bWlfc3RvcF9kaXNjb3Zlcnkoc3RydWN0IHdpbDYyMTBfdmlmICp2aWYpO1xcbiBcXG4gaW50IHdpbF9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdCBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcyxcXG4tXFx0XFx0XFx0IHU2NCAqY29va2llKTtcXG4rXFx0XFx0XFx0IHU2NCBjb29raWUpO1xcbiB2b2lkIHdpbF9jZmc4MDIxMV9hcF9yZWNvdmVyeShzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwpO1xcbiBpbnQgd2lsX2NmZzgwMjExX2lmYWNlX2NvbWJpbmF0aW9uc19mcm9tX2Z3KFxcbiBcXHRzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcXG5pbmRleCA2YjJjMzRlM2E3OTZjLi44NzJjNDg4MDZkMDkxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcXG5AQCAtNTU1NCw3ICs1NTU0LDcgQEAgYnJjbWZfY2ZnODAyMTFfdXBkYXRlX21nbXRfZnJhbWVfcmVnaXN0cmF0aW9ucyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXG4gaW50XFxuIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tXFx0XFx0ICAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcXG4rXFx0XFx0ICAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxcbiB7XFxuIFxcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcgPSB3aXBoeV90b19jZmcod2lwaHkpO1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4gPSBwYXJhbXMtXFx1MDAzZWNoYW47XFxuQEAgLTU1NzMsOCArNTU3Myw2IEBAIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFxuIFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcIkVudGVyXFxcXG5cXFwiKTtcXG4gXFxuLVxcdCpjb29raWUgPSAwO1xcbi1cXG4gXFx0bWdtdCA9IChjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilidWY7XFxuIFxcbiBcXHRpZiAoIWllZWU4MDIxMV9pc19tZ210KG1nbXQtXFx1MDAzZWZyYW1lX2NvbnRyb2wpKSB7XFxuQEAgLTU2MDUsNyArNTYwMyw3IEBAIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0XFx0XFx0XFx0ICAgIEJSQ01GX1ZORFJfSUVfUFJCUlNQX0ZMQUcsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2YnVmW2llX29mZnNldF0sXFxuIFxcdFxcdFxcdFxcdFxcdCAgICBpZV9sZW4pO1xcbi1cXHRcXHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCAqY29va2llLCBidWYsIGxlbiwgdHJ1ZSxcXG4rXFx0XFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgdHJ1ZSxcXG4gXFx0XFx0XFx0XFx0XFx0R0ZQX0tFUk5FTCk7XFxuIFxcdH0gZWxzZSBpZiAoaWVlZTgwMjExX2lzX2FjdGlvbihtZ210LVxcdTAwM2VmcmFtZV9jb250cm9sKSkge1xcbiBcXHRcXHRpZiAobGVuIFxcdTAwM2UgQlJDTUZfRklMX0FDVElPTl9GUkFNRV9TSVpFICsgRE9UMTFfTUdNVF9IRFJfTEVOKSB7XFxuQEAgLTU2MjEsNyArNTYxOSw3IEBAIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0fVxcbiBcXHRcXHRhY3Rpb25fZnJhbWUgPSBcXHUwMDI2YWZfcGFyYW1zLVxcdTAwM2VhY3Rpb25fZnJhbWU7XFxuIFxcdFxcdC8qIEFkZCB0aGUgcGFja2V0IElkICovXFxuLVxcdFxcdGFjdGlvbl9mcmFtZS1cXHUwMDNlcGFja2V0X2lkID0gY3B1X3RvX2xlMzIoKmNvb2tpZSk7XFxuK1xcdFxcdGFjdGlvbl9mcmFtZS1cXHUwMDNlcGFja2V0X2lkID0gY3B1X3RvX2xlMzIoY29va2llKTtcXG4gXFx0XFx0LyogQWRkIEJTU0lEICovXFxuIFxcdFxcdG1lbWNweShcXHUwMDI2YWN0aW9uX2ZyYW1lLVxcdTAwM2VkYVswXSwgXFx1MDAyNm1nbXQtXFx1MDAzZWRhWzBdLCBFVEhfQUxFTik7XFxuIFxcdFxcdG1lbWNweShcXHUwMDI2YWZfcGFyYW1zLVxcdTAwM2Vic3NpZFswXSwgXFx1MDAyNm1nbXQtXFx1MDAzZWJzc2lkWzBdLCBFVEhfQUxFTik7XFxuQEAgLTU2NDksMTIgKzU2NDcsMTIgQEAgYnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRcXHQgICAgICAgbGUxNl90b19jcHUoYWN0aW9uX2ZyYW1lLVxcdTAwM2VsZW4pKTtcXG4gXFxuIFxcdFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcIkFjdGlvbiBmcmFtZSwgY29va2llPSVsbGQsIGxlbj0lZCwgY2hhbm5lbD0lZFxcXFxuXFxcIixcXG4tXFx0XFx0XFx0ICAqY29va2llLCBsZTE2X3RvX2NwdShhY3Rpb25fZnJhbWUtXFx1MDAzZWxlbiksXFxuK1xcdFxcdFxcdCAgY29va2llLCBsZTE2X3RvX2NwdShhY3Rpb25fZnJhbWUtXFx1MDAzZWxlbiksXFxuIFxcdFxcdFxcdCAgbGUzMl90b19jcHUoYWZfcGFyYW1zLVxcdTAwM2VjaGFubmVsKSk7XFxuIFxcbiBcXHRcXHRhY2sgPSBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUodmlmLVxcdTAwM2VpZnAsIGFmX3BhcmFtcyk7XFxuIFxcbi1cXHRcXHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCAqY29va2llLCBidWYsIGxlbiwgYWNrLFxcbitcXHRcXHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBjb29raWUsIGJ1ZiwgbGVuLCBhY2ssXFxuIFxcdFxcdFxcdFxcdFxcdEdGUF9LRVJORUwpO1xcbiBmcmVlOlxcbiBcXHRcXHRrZnJlZShhZl9wYXJhbXMpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oXFxuaW5kZXggNmNlYjMwMTQyOTA1NC4uNjNlNTM0NTIzZjUxOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oXFxuQEAgLTQ5Nyw2ICs0OTcsNiBAQCB2b2lkIGJyY21mX2NmZzgwMjExX2ZyZWVfdmlmKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KTtcXG4gXFxuIGludCBicmNtZl9zZXRfd3NlYyhzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwgY29uc3QgdTggKmtleSwgdTE2IGtleV9sZW4sIHUxNiBmbGFncyk7XFxuIGludCBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLVxcdFxcdFxcdCAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSk7XFxuK1xcdFxcdFxcdCAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKTtcXG4gXFxuICNlbmRpZiAvKiBCUkNNRk1BQ19DRkc4MDIxMV9IICovXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcXG5pbmRleCA4NzM3NTRiZTUxNzRiLi41NDVlYjlhYWU5NjYwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcXG5AQCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyBpbnQgYnJjbWZfY3l3X2FjdGl2YXRlX2V2ZW50cyhzdHJ1Y3QgYnJjbWZfaWYgKmlmcClcXG4gXFxuIHN0YXRpY1xcbiBpbnQgYnJjbWZfY3l3X21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tXFx0XFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxcbitcXHRcXHQgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnID0gd2lwaHlfdG9fY2ZnKHdpcGh5KTtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuID0gcGFyYW1zLVxcdTAwM2VjaGFuO1xcbkBAIC0xMjMsNyArMTIzLDYgQEAgaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdGlmICghaWVlZTgwMjExX2lzX2F1dGgobWdtdC1cXHUwMDNlZnJhbWVfY29udHJvbCkpXFxuIFxcdFxcdHJldHVybiBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHdpcGh5LCB3ZGV2LCBwYXJhbXMsIGNvb2tpZSk7XFxuIFxcbi1cXHQqY29va2llID0gMDtcXG4gXFx0dmlmID0gY29udGFpbmVyX29mKHdkZXYsIHN0cnVjdCBicmNtZl9jZmc4MDIxMV92aWYsIHdkZXYpO1xcbiBcXG4gXFx0cmVpbml0X2NvbXBsZXRpb24oXFx1MDAyNnZpZi1cXHUwMDNlbWdtdF90eCk7XFxuQEAgLTE1NSw3ICsxNTQsNyBAQCBpbnQgYnJjbWZfY3l3X21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFxuIFxcdG1lbWNweShcXHUwMDI2bWZfcGFyYW1zLVxcdTAwM2VkYVswXSwgXFx1MDAyNm1nbXQtXFx1MDAzZWRhWzBdLCBFVEhfQUxFTik7XFxuIFxcdG1lbWNweShcXHUwMDI2bWZfcGFyYW1zLVxcdTAwM2Vic3NpZFswXSwgXFx1MDAyNm1nbXQtXFx1MDAzZWJzc2lkWzBdLCBFVEhfQUxFTik7XFxuLVxcdG1mX3BhcmFtcy1cXHUwMDNlcGFja2V0X2lkID0gY3B1X3RvX2xlMzIoKmNvb2tpZSk7XFxuK1xcdG1mX3BhcmFtcy1cXHUwMDNlcGFja2V0X2lkID0gY3B1X3RvX2xlMzIoY29va2llKTtcXG4gXFx0bWVtY3B5KG1mX3BhcmFtcy1cXHUwMDNlZGF0YSwgXFx1MDAyNmJ1ZltET1QxMV9NR01UX0hEUl9MRU5dLFxcbiBcXHQgICAgICAgbGUxNl90b19jcHUobWZfcGFyYW1zLVxcdTAwM2VsZW4pKTtcXG4gXFxuQEAgLTE4Nyw4ICsxODYsNyBAQCBpbnQgYnJjbWZfY3l3X21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0fVxcbiBcXG4gdHhfc3RhdHVzOlxcbi1cXHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCAqY29va2llLCBidWYsIGxlbiwgYWNrLFxcbi1cXHRcXHRcXHRcXHRHRlBfS0VSTkVMKTtcXG4rXFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgYWNrLCBHRlBfS0VSTkVMKTtcXG4gZnJlZTpcXG4gXFx0a2ZyZWUobWZfcGFyYW1zKTtcXG4gXFx0cmV0dXJuIGVycjtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXFxuaW5kZXggYzdkN2IzNWFiMTI1My4uMzJhMDE1ZDZiNzY5OCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmNcXG5AQCAtOTc5LDEwICs5NzksOCBAQCBicmNtZl9wMnBfZGlzY292ZXJfbGlzdGVuKHN0cnVjdCBicmNtZl9wMnBfaW5mbyAqcDJwLCB1MTYgY2hhbm5lbCwgdTMyIGR1cmF0aW9uKVxcbiBcXHRwMnAtXFx1MDAzZWNmZy1cXHUwMDNlZDExaW5mLmVuY2Noc3BlYyhcXHUwMDI2Y2gpO1xcbiBcXHRlcnIgPSBicmNtZl9wMnBfc2V0X2Rpc2NvdmVyX3N0YXRlKHZpZi1cXHUwMDNlaWZwLCBXTF9QMlBfRElTQ19TVF9MSVNURU4sXFxuIFxcdFxcdFxcdFxcdFxcdCAgIGNoLmNoc3BlYywgKHUxNilkdXJhdGlvbik7XFxuLVxcdGlmICghZXJyKSB7XFxuK1xcdGlmICghZXJyKVxcbiBcXHRcXHRzZXRfYml0KEJSQ01GX1AyUF9TVEFUVVNfRElTQ09WRVJfTElTVEVOLCBcXHUwMDI2cDJwLVxcdTAwM2VzdGF0dXMpO1xcbi1cXHRcXHRwMnAtXFx1MDAzZXJlbWFpbl9vbl9jaGFubmVsX2Nvb2tpZSsrO1xcbi1cXHR9XFxuIGV4aXQ6XFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG5AQCAtMTAwMCw3ICs5OTgsNyBAQCBicmNtZl9wMnBfZGlzY292ZXJfbGlzdGVuKHN0cnVjdCBicmNtZl9wMnBfaW5mbyAqcDJwLCB1MTYgY2hhbm5lbCwgdTMyIGR1cmF0aW9uKVxcbiAgKi9cXG4gaW50IGJyY21mX3AycF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW5uZWwsXFxuLVxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXFxuK1xcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSxcXG4gXFx0XFx0XFx0XFx0Y29uc3QgdTggKnJ4X2FkZHIpXFxuIHtcXG4gXFx0c3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyA9IHdpcGh5X3RvX2NmZyh3aXBoeSk7XFxuQEAgLTEwMjAsOCArMTAxOCw4IEBAIGludCBicmNtZl9wMnBfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0Z290byBleGl0O1xcbiBcXG4gXFx0bWVtY3B5KFxcdTAwMjZwMnAtXFx1MDAzZXJlbWFpbl9vbl9jaGFubmVsLCBjaGFubmVsLCBzaXplb2YoKmNoYW5uZWwpKTtcXG4tXFx0KmNvb2tpZSA9IHAycC1cXHUwMDNlcmVtYWluX29uX2NoYW5uZWxfY29va2llO1xcbi1cXHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW5uZWwsIGR1cmF0aW9uLCBHRlBfS0VSTkVMKTtcXG4rXFx0cDJwLVxcdTAwM2VyZW1haW5fb25fY2hhbm5lbF9jb29raWUgPSBjb29raWU7XFxuK1xcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFubmVsLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7XFxuIFxcbiBleGl0OlxcbiBcXHRyZXR1cm4gZXJyO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmhcXG5pbmRleCA5ZjNmMDFhZGUyYjc3Li43MDc4MDA5NDkxNzA3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaFxcbkBAIC0xNTcsNyArMTU3LDcgQEAgaW50IGJyY21mX3AycF9zY2FuX3ByZXAoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0XFx0XFx0c3RydWN0IGJyY21mX2NmZzgwMjExX3ZpZiAqdmlmKTtcXG4gaW50IGJyY21mX3AycF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW5uZWwsXFxuLVxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXFxuK1xcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSxcXG4gXFx0XFx0XFx0XFx0Y29uc3QgdTggKnJ4X2FkZHIpO1xcbiBpbnQgYnJjbWZfcDJwX25vdGlmeV9saXN0ZW5fY29tcGxldGUoc3RydWN0IGJyY21mX2lmICppZnAsXFxuIFxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IGJyY21mX2V2ZW50X21zZyAqZSxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY1xcbmluZGV4IDhlYzJkMjJhOGMzM2EuLjdhMWJhMzJmMWZiMzYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY1xcbkBAIC0xOTYsNyArMTk2LDcgQEAgbXdpZmlleF9mb3JtX21nbXRfZnJhbWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbilcXG4gICovXFxuIHN0YXRpYyBpbnRcXG4gbXdpZmlleF9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLVxcdFxcdFxcdCBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXFxuK1xcdFxcdFxcdCBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcXG4ge1xcbiBcXHRjb25zdCB1OCAqYnVmID0gcGFyYW1zLVxcdTAwM2VidWY7XFxuIFxcdHNpemVfdCBsZW4gPSBwYXJhbXMtXFx1MDAzZWxlbjtcXG5AQCAtMjU5LDE0ICsyNTksMTMgQEAgbXdpZmlleF9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdHR4X2luZm8tXFx1MDAzZXBrdF9sZW4gPSBwa3RfbGVuO1xcbiBcXG4gXFx0bXdpZmlleF9mb3JtX21nbXRfZnJhbWUoc2tiLCBidWYsIGxlbik7XFxuLVxcdCpjb29raWUgPSBnZXRfcmFuZG9tX3UzMigpIHwgMTtcXG4gXFxuIFxcdGlmIChpZWVlODAyMTFfaXNfYWN0aW9uKG1nbXQtXFx1MDAzZWZyYW1lX2NvbnRyb2wpKVxcbiBcXHRcXHRza2IgPSBtd2lmaWV4X2Nsb25lX3NrYl9mb3JfdHhfc3RhdHVzKHByaXYsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIHNrYixcXG4tXFx0XFx0XFx0XFx0TVdJRklFWF9CVUZfRkxBR19BQ1RJT05fVFhfU1RBVFVTLCBjb29raWUpO1xcbitcXHRcXHRcXHRcXHRNV0lGSUVYX0JVRl9GTEFHX0FDVElPTl9UWF9TVEFUVVMsIFxcdTAwMjZjb29raWUpO1xcbiBcXHRlbHNlXFxuLVxcdFxcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsICpjb29raWUsIGJ1ZiwgbGVuLCB0cnVlLFxcbitcXHRcXHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBjb29raWUsIGJ1ZiwgbGVuLCB0cnVlLFxcbiBcXHRcXHRcXHRcXHRcXHRHRlBfQVRPTUlDKTtcXG4gXFxuIFxcdG13aWZpZXhfcXVldWVfdHhfcGt0KHByaXYsIHNrYik7XFxuQEAgLTMwNCwxMyArMzAzLDEzIEBAIHN0YXRpYyBpbnRcXG4gbXdpZmlleF9jZmc4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXFxuLVxcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXFxuK1xcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSxcXG4gXFx0XFx0XFx0XFx0ICAgY29uc3QgdTggKnJ4X2FkZHIpXFxuIHtcXG4gXFx0c3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiA9IG13aWZpZXhfbmV0ZGV2X2dldF9wcml2KHdkZXYtXFx1MDAzZW5ldGRldik7XFxuIFxcdGludCByZXQ7XFxuIFxcbi1cXHRpZiAoIWNoYW4gfHwgIWNvb2tpZSkge1xcbitcXHRpZiAoIWNoYW4pIHtcXG4gXFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgRVJST1IsIFxcXCJJbnZhbGlkIHBhcmFtZXRlciBmb3IgUk9DXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdH1cXG5AQCAtMzI2LDE1ICszMjUsMTQgQEAgbXdpZmlleF9jZmc4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXHRcXHRcXHRcXHRcXHQgZHVyYXRpb24pO1xcbiBcXG4gXFx0aWYgKCFyZXQpIHtcXG4tXFx0XFx0KmNvb2tpZSA9IGdldF9yYW5kb21fdTMyKCkgfCAxO1xcbi1cXHRcXHRwcml2LVxcdTAwM2Vyb2NfY2ZnLmNvb2tpZSA9ICpjb29raWU7XFxuK1xcdFxcdHByaXYtXFx1MDAzZXJvY19jZmcuY29va2llID0gY29va2llO1xcbiBcXHRcXHRwcml2LVxcdTAwM2Vyb2NfY2ZnLmNoYW4gPSAqY2hhbjtcXG4gXFxuLVxcdFxcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgKmNvb2tpZSwgY2hhbixcXG4rXFx0XFx0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCBjb29raWUsIGNoYW4sXFxuIFxcdFxcdFxcdFxcdFxcdCAgZHVyYXRpb24sIEdGUF9BVE9NSUMpO1xcbiBcXG4gXFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgSU5GTyxcXG4tXFx0XFx0XFx0ICAgIFxcXCJpbmZvOiBST0MsIGNvb2tpZSA9IDB4JWxseFxcXFxuXFxcIiwgKmNvb2tpZSk7XFxuK1xcdFxcdFxcdCAgICBcXFwiaW5mbzogUk9DLCBjb29raWUgPSAweCVsbHhcXFxcblxcXCIsIGNvb2tpZSk7XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuQEAgLTQ1NjAsNyArNDU1OCw3IEBAIG13aWZpZXhfY2ZnODAyMTFfZGlzYXNzb2NpYXRlKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIHN0YXRpYyBpbnRcXG4gbXdpZmlleF9jZmc4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdFxcdFxcdCAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqcGVlcixcXG4tXFx0XFx0XFx0ICAgIHU2NCAqY29va2llKVxcbitcXHRcXHRcXHQgICAgdTY0IGNvb2tpZSlcXG4ge1xcbiBcXHQvKiBob3N0YXBkIGxvb2tzIGZvciBOTDgwMjExX0NNRF9QUk9CRV9DTElFTlQgc3VwcG9ydDsgb3RoZXJ3aXNlLFxcbiBcXHQgKiBpdCByZXF1aXJlcyBtb25pdG9yLW1vZGUgc3VwcG9ydCAod2hpY2ggbXdpZmlleCBkb2Vzbid0IHN1cHBvcnQpLlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9jZmc4MDIxMS5jXFxuaW5kZXggNjY1NGZjZTRkZWQ4NC4uYmIyNzQ4YTE5MzI5NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9jZmc4MDIxMS5jXFxuQEAgLTExMDAsMjQgKzExMDAsMTkgQEAgc3RhdGljIHZvaWQgd2lsY193ZmlfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChzdHJ1Y3Qgd2lsY192aWYgKnZpZiwgdTY0IGNvb2tpZSlcXG4gc3RhdGljIGludCByZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXHRcXHRcXHQgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdCAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxcbi1cXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXFxuK1xcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLFxcbiBcXHRcXHRcXHQgICAgIGNvbnN0IHU4ICpyeF9hZGRyKVxcbiB7XFxuIFxcdGludCByZXQgPSAwO1xcbiBcXHRzdHJ1Y3Qgd2lsY192aWYgKnZpZiA9IG5ldGRldl9wcml2KHdkZXYtXFx1MDAzZW5ldGRldik7XFxuIFxcdHN0cnVjdCB3aWxjX3ByaXYgKnByaXYgPSBcXHUwMDI2dmlmLVxcdTAwM2Vwcml2O1xcbi1cXHR1NjQgaWQ7XFxuIFxcbiBcXHRpZiAod2Rldi1cXHUwMDNlaWZ0eXBlID09IE5MODAyMTFfSUZUWVBFX0FQKSB7XFxuIFxcdFxcdG5ldGRldl9kYmcodmlmLVxcdTAwM2VuZGV2LCBcXFwiUmVxdWlyZWQgd2hpbGUgaW4gQVAgbW9kZVxcXFxuXFxcIik7XFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdH1cXG4gXFxuLVxcdGlkID0gKytwcml2LVxcdTAwM2VpbmNfcm9jX2Nvb2tpZTtcXG4tXFx0aWYgKGlkID09IDApXFxuLVxcdFxcdGlkID0gKytwcml2LVxcdTAwM2VpbmNfcm9jX2Nvb2tpZTtcXG4tXFxuLVxcdHJldCA9IHdpbGNfcmVtYWluX29uX2NoYW5uZWwodmlmLCBpZCwgY2hhbi1cXHUwMDNlaHdfdmFsdWUsXFxuK1xcdHJldCA9IHdpbGNfcmVtYWluX29uX2NoYW5uZWwodmlmLCBjb29raWUsIGNoYW4tXFx1MDAzZWh3X3ZhbHVlLFxcbiBcXHRcXHRcXHRcXHQgICAgIHdpbGNfd2ZpX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQpO1xcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbkBAIC0xMTI1LDEyICsxMTIwLDExIEBAIHN0YXRpYyBpbnQgcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0dmlmLVxcdTAwM2V3aWxjLVxcdTAwM2VvcF9jaCA9IGNoYW4tXFx1MDAzZWh3X3ZhbHVlO1xcbiBcXG4gXFx0cHJpdi1cXHUwMDNlcmVtYWluX29uX2NoX3BhcmFtcy5saXN0ZW5fY2ggPSBjaGFuO1xcbi1cXHRwcml2LVxcdTAwM2VyZW1haW5fb25fY2hfcGFyYW1zLmxpc3Rlbl9jb29raWUgPSBpZDtcXG4tXFx0KmNvb2tpZSA9IGlkO1xcbitcXHRwcml2LVxcdTAwM2VyZW1haW5fb25fY2hfcGFyYW1zLmxpc3Rlbl9jb29raWUgPSBjb29raWU7XFxuIFxcdHByaXYtXFx1MDAzZXAycF9saXN0ZW5fc3RhdGUgPSB0cnVlO1xcbiBcXHRwcml2LVxcdTAwM2VyZW1haW5fb25fY2hfcGFyYW1zLmxpc3Rlbl9kdXJhdGlvbiA9IGR1cmF0aW9uO1xcbiBcXG4tXFx0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCAqY29va2llLCBjaGFuLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7XFxuK1xcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7XFxuIFxcdG1vZF90aW1lcihcXHUwMDI2dmlmLVxcdTAwM2VoaWZfZHJ2LVxcdTAwM2VyZW1haW5fb25fY2hfdGltZXIsXFxuIFxcdFxcdCAgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoZHVyYXRpb24gKyAxMDAwKSk7XFxuIFxcbkBAIC0xMTUzLDcgKzExNDcsNyBAQCBzdGF0aWMgaW50IGNhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBzdGF0aWMgaW50IG1nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0XFx0ICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0ICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXFxuLVxcdFxcdCAgIHU2NCAqY29va2llKVxcbitcXHRcXHQgICB1NjQgY29va2llKVxcbiB7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiA9IHBhcmFtcy1cXHUwMDNlY2hhbjtcXG4gXFx0dW5zaWduZWQgaW50IHdhaXQgPSBwYXJhbXMtXFx1MDAzZXdhaXQ7XFxuQEAgLTExNzAsOCArMTE2NCw3IEBAIHN0YXRpYyBpbnQgbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXHRjb25zdCB1OCAqdmVuZG9yX2llO1xcbiBcXHRpbnQgcmV0ID0gMDtcXG4gXFxuLVxcdCpjb29raWUgPSBnZXRfcmFuZG9tX3UzMigpO1xcbi1cXHRwcml2LVxcdTAwM2V0eF9jb29raWUgPSAqY29va2llO1xcbitcXHRwcml2LVxcdTAwM2V0eF9jb29raWUgPSBjb29raWU7XFxuIFxcdG1nbXQgPSAoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICopYnVmO1xcbiBcXG4gXFx0aWYgKCFpZWVlODAyMTFfaXNfbWdtdChtZ210LVxcdTAwM2VmcmFtZV9jb250cm9sKSlcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmNcXG5pbmRleCA0ZjllMjBmNzI4MTE0Li5jODIwZjA4ZDI4MzU1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXFxuQEAgLTE1MCw3ICsxNTAsNyBAQCBueHB3aWZpX2Zvcm1fbWdtdF9mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKVxcbiAvKiBjZmc4MDIxMSBvcGVyYXRpb24gaGFuZGxlciB0byB0cmFuc21pdCBhIG1hbmFnZW1lbnQgZnJhbWUuICovXFxuIHN0YXRpYyBpbnRcXG4gbnhwd2lmaV9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLVxcdFxcdFxcdCBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXFxuK1xcdFxcdFxcdCBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcXG4ge1xcbiBcXHRjb25zdCB1OCAqYnVmID0gcGFyYW1zLVxcdTAwM2VidWY7XFxuIFxcdHNpemVfdCBsZW4gPSBwYXJhbXMtXFx1MDAzZWxlbjtcXG5AQCAtMjEyLDE0ICsyMTIsMTMgQEAgbnhwd2lmaV9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdHR4X2luZm8tXFx1MDAzZXBrdF9sZW4gPSBwa3RfbGVuO1xcbiBcXG4gXFx0bnhwd2lmaV9mb3JtX21nbXRfZnJhbWUoc2tiLCBidWYsIGxlbik7XFxuLVxcdCpjb29raWUgPSBueHB3aWZpX3JvY19jb29raWUocHJpdi1cXHUwMDNlYWRhcHRlcik7XFxuIFxcbiBcXHRpZiAoaWVlZTgwMjExX2lzX2FjdGlvbihtZ210LVxcdTAwM2VmcmFtZV9jb250cm9sKSlcXG4gXFx0XFx0c2tiID0gbnhwd2lmaV9jbG9uZV9za2JfZm9yX3R4X3N0YXR1cyhwcml2LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBza2IsXFxuLVxcdFxcdFxcdFxcdE5YUFdJRklfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgY29va2llKTtcXG4rXFx0XFx0XFx0XFx0TlhQV0lGSV9CVUZfRkxBR19BQ1RJT05fVFhfU1RBVFVTLCBcXHUwMDI2Y29va2llKTtcXG4gXFx0ZWxzZVxcbi1cXHRcXHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCAqY29va2llLCBidWYsIGxlbiwgdHJ1ZSxcXG4rXFx0XFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgdHJ1ZSxcXG4gXFx0XFx0XFx0XFx0XFx0R0ZQX0FUT01JQyk7XFxuIFxcbiBcXHRueHB3aWZpX3F1ZXVlX3R4X3BrdChwcml2LCBza2IpO1xcbkBAIC0yNTQsMTQgKzI1MywxNCBAQCBzdGF0aWMgaW50XFxuIG54cHdpZmlfY2ZnODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0XFx0XFx0XFx0ICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0XFx0XFx0ICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxcbi1cXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLFxcbitcXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXFxuIFxcdFxcdFxcdFxcdCAgIGNvbnN0IHU4ICpyeF9hZGRyKVxcbiB7XFxuIFxcdHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYgPSBueHB3aWZpX25ldGRldl9nZXRfcHJpdih3ZGV2LVxcdTAwM2VuZXRkZXYpO1xcbiBcXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG4gXFx0aW50IHJldDtcXG4gXFxuLVxcdGlmICghY2hhbiB8fCAhY29va2llKSB7XFxuK1xcdGlmICghY2hhbikge1xcbiBcXHRcXHRueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUiwgXFxcIkludmFsaWQgcGFyYW1ldGVyIGZvciBST0NcXFxcblxcXCIpO1xcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0fVxcbkBAIC0yNzcsMTUgKzI3NiwxNCBAQCBueHB3aWZpX2NmZzgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdFxcdFxcdFxcdFxcdCBkdXJhdGlvbik7XFxuIFxcbiBcXHRpZiAoIXJldCkge1xcbi1cXHRcXHQqY29va2llID0gbnhwd2lmaV9yb2NfY29va2llKGFkYXB0ZXIpO1xcbi1cXHRcXHRwcml2LVxcdTAwM2Vyb2NfY2ZnLmNvb2tpZSA9ICpjb29raWU7XFxuK1xcdFxcdHByaXYtXFx1MDAzZXJvY19jZmcuY29va2llID0gY29va2llO1xcbiBcXHRcXHRwcml2LVxcdTAwM2Vyb2NfY2ZnLmNoYW4gPSAqY2hhbjtcXG4gXFxuLVxcdFxcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgKmNvb2tpZSwgY2hhbixcXG4rXFx0XFx0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCBjb29raWUsIGNoYW4sXFxuIFxcdFxcdFxcdFxcdFxcdCAgZHVyYXRpb24sIEdGUF9BVE9NSUMpO1xcbiBcXG4gXFx0XFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgSU5GTyxcXG4tXFx0XFx0XFx0ICAgIFxcXCJpbmZvOiBST0MsIGNvb2tpZSA9IDB4JWxseFxcXFxuXFxcIiwgKmNvb2tpZSk7XFxuK1xcdFxcdFxcdCAgICBcXFwiaW5mbzogUk9DLCBjb29raWUgPSAweCVsbHhcXFxcblxcXCIsIGNvb2tpZSk7XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuQEAgLTM2MTgsNyArMzYxNiw3IEBAIG54cHdpZmlfY2ZnODAyMTFfZGlzYXNzb2NpYXRlKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIHN0YXRpYyBpbnRcXG4gbnhwd2lmaV9jZmc4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICpwZWVyLFxcbi1cXHRcXHRcXHQgICAgICB1NjQgKmNvb2tpZSlcXG4rXFx0XFx0XFx0ICAgICAgdTY0IGNvb2tpZSlcXG4ge1xcbiBcXHQvKlxcbiBcXHQgKiBob3N0YXBkIGxvb2tzIGZvciBOTDgwMjExX0NNRF9QUk9CRV9DTElFTlQgc3VwcG9ydDsgb3RoZXJ3aXNlLFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY2ZnODAyMTEuY1xcbmluZGV4IDllNDRjODVkMjA1MWMuLjQ1ZTJiN2FlOTYzMzMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY2ZnODAyMTEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2NmZzgwMjExLmNcXG5AQCAtNDQ2LDcgKzQ0Niw3IEBAIHF0bmZfdXBkYXRlX21nbXRfZnJhbWVfcmVnaXN0cmF0aW9ucyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXG4gc3RhdGljIGludFxcbiBxdG5mX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tXFx0ICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXFxuK1xcdCAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXFxuIHtcXG4gXFx0c3RydWN0IHF0bmZfdmlmICp2aWYgPSBxdG5mX25ldGRldl9nZXRfcHJpdih3ZGV2LVxcdTAwM2VuZXRkZXYpO1xcbiBcXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXRfZnJhbWUgPSAodm9pZCAqKXBhcmFtcy1cXHUwMDNlYnVmO1xcbkBAIC00NTQsOCArNDU0LDYgQEAgcXRuZl9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdHUxNiBmbGFncyA9IDA7XFxuIFxcdHUxNiBmcmVxO1xcbiBcXG4tXFx0KmNvb2tpZSA9IHNob3J0X2Nvb2tpZTtcXG4tXFxuIFxcdGlmIChwYXJhbXMtXFx1MDAzZW9mZmNoYW4pXFxuIFxcdFxcdGZsYWdzIHw9IFFMSU5LX0ZSQU1FX1RYX0ZMQUdfT0ZGQ0hBTjtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL2lvY3RsX2NmZzgwMjExLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9pb2N0bF9jZmc4MDIxMS5jXFxuaW5kZXggNmE5N2FmZDg5ZGM3OC4uYjU4ZGRhMTI5ZmY2NiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9pb2N0bF9jZmc4MDIxMS5jXFxuKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvaW9jdGxfY2ZnODAyMTEuY1xcbkBAIC0yNTMwLDcgKzI1MzAsNyBAQCBzdGF0aWMgaW50IF9jZmc4MDIxMV9ydHdfbWdtdF90eChzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHU4IHR4X2NoLCBjb25zdCB1OCAqYlxcbiBcXG4gc3RhdGljIGludCBjZmc4MDIxMV9ydHdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRcXHRcXHRcXHRzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcyxcXG4tXFx0XFx0XFx0XFx0dTY0ICpjb29raWUpXFxuK1xcdFxcdFxcdFxcdHU2NCBjb29raWUpXFxuIHtcXG4gXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSB3ZGV2X3RvX25kZXYod2Rldik7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiA9IHBhcmFtcy1cXHUwMDNlY2hhbjtcXG5AQCAtMjU1MiwxMSArMjU1Miw4IEBAIHN0YXRpYyBpbnQgY2ZnODAyMTFfcnR3X21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFxuIFxcdHBhZGFwdGVyID0gcnR3X25ldGRldl9wcml2KG5kZXYpO1xcbiBcXG4tXFx0LyogY29va2llIGdlbmVyYXRpb24gKi9cXG4tXFx0KmNvb2tpZSA9ICh1bnNpZ25lZCBsb25nKWJ1ZjtcXG4tXFxuIFxcdC8qIGluZGljYXRlIGFjayBiZWZvcmUgaXNzdWUgZnJhbWUgdG8gYXZvaWQgcmFjaW5nIHdpdGggcnNwIGZyYW1lICovXFxuLVxcdHJ0d19jZmc4MDIxMV9tZ210X3R4X3N0YXR1cyhwYWRhcHRlciwgKmNvb2tpZSwgYnVmLCBsZW4sIGFjaywgR0ZQX0tFUk5FTCk7XFxuK1xcdHJ0d19jZmc4MDIxMV9tZ210X3R4X3N0YXR1cyhwYWRhcHRlciwgY29va2llLCBidWYsIGxlbiwgYWNrLCBHRlBfS0VSTkVMKTtcXG4gXFxuIFxcdGlmICghcnR3X2FjdGlvbl9mcmFtZV9wYXJzZShidWYsIGxlbiwgXFx1MDAyNmNhdGVnb3J5LCBcXHUwMDI2YWN0aW9uKSlcXG4gXFx0XFx0Z290byBleGl0O1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9jZmc4MDIxMS5oIGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxcbmluZGV4IGRjYmIwZTU1YzMyZWMuLjk3YzE2ZDRmZjEyNzEgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxcbisrKyBiL2luY2x1ZGUvbmV0L2NmZzgwMjExLmhcXG5AQCAtNTEwOCw3ICs1MTA4LDggQEAgc3RydWN0IG1nbXRfZnJhbWVfcmVncyB7XFxuICAqIEB0ZGxzX29wZXI6IFBlcmZvcm0gYSBoaWdoLWxldmVsIFRETFMgb3BlcmF0aW9uIChlLmcuIFRETFMgbGluayBzZXR1cCkuXFxuICAqXFxuICAqIEBwcm9iZV9wZWVyOiBwcm9iZSBhIGNvbm5lY3RlZCBwZWVyIChBUDogU1RBIE1BQyByZXF1aXJlZDsgU1RBOiBubyBNQUMpLFxcbi0gKlxcdG11c3QgcmV0dXJuIGEgY29va2llIHRoYXQgaXMgbGF0ZXIgcGFzc2VkIHRvIGNmZzgwMjExX3Byb2JlX3N0YXR1cygpLlxcbisgKlxcdG11c3QgdXNlIHRoZSBAY29va2llIGFzIHByb3ZpZGVkIHdoaWNoIGlzIGxhdGVyIHBhc3NlZCB0b1xcbisgKlxcdGNmZzgwMjExX3Byb2JlX3N0YXR1cygpLlxcbiAgKlxcbiAgKiBAc2V0X25vYWNrX21hcDogU2V0IHRoZSBOb0FjayBNYXAgZm9yIHRoZSBUSURzLlxcbiAgKlxcbkBAIC01MjE5LDcgKzUyMjAsOCBAQCBzdHJ1Y3QgbWdtdF9mcmFtZV9yZWdzIHtcXG4gICogICAgIHVzZXIgc3BhY2VcXG4gICpcXG4gICogQHR4X2NvbnRyb2xfcG9ydDogVFggYSBjb250cm9sIHBvcnQgZnJhbWUgKEVBUG9MKS4gIFRoZSBub2VuY3J5cHQgcGFyYW1ldGVyXFxuLSAqXFx0dGVsbHMgdGhlIGRyaXZlciB0aGF0IHRoZSBmcmFtZSBzaG91bGQgbm90IGJlIGVuY3J5cHRlZC5cXG4rICpcXHR0ZWxscyB0aGUgZHJpdmVyIHRoYXQgdGhlIGZyYW1lIHNob3VsZCBub3QgYmUgZW5jcnlwdGVkLiBBIEBjb29raWVcXG4rICpcXHR2YWx1ZSBvZiAwIG1lYW5zIHRoZSBjYWxsZXIgZG9lcyBub3Qgd2FudCBUWCBzdGF0dXMgcmVwb3J0aW5nLlxcbiAgKlxcbiAgKiBAZ2V0X2Z0bV9yZXNwb25kZXJfc3RhdHM6IFJldHJpZXZlIEZUTSByZXNwb25kZXIgc3RhdGlzdGljcywgaWYgYXZhaWxhYmxlLlxcbiAgKlxcdFN0YXRpc3RpY3Mgc2hvdWxkIGJlIGN1bXVsYXRpdmUsIGN1cnJlbnRseSBubyB3YXkgdG8gcmVzZXQgaXMgcHJvdmlkZWQuXFxuQEAgLTU0NTYsMTQgKzU0NTgsMTQgQEAgc3RydWN0IGNmZzgwMjExX29wcyB7XFxuIFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXFxuIFxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLFxcbi1cXHRcXHRcXHRcXHQgICAgIHU2NCAqY29va2llLCBjb25zdCB1OCAqcnhfYWRkcik7XFxuK1xcdFxcdFxcdFxcdCAgICAgdTY0IGNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpO1xcbiBcXHRpbnRcXHQoKmNhbmNlbF9yZW1haW5fb25fY2hhbm5lbCkoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICB1NjQgY29va2llKTtcXG4gXFxuIFxcdGludFxcdCgqbWdtdF90eCkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0XFx0ICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXFxuLVxcdFxcdFxcdCAgIHU2NCAqY29va2llKTtcXG4rXFx0XFx0XFx0ICAgdTY0IGNvb2tpZSk7XFxuIFxcdGludFxcdCgqbWdtdF90eF9jYW5jZWxfd2FpdCkoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgICB1NjQgY29va2llKTtcXG5AQCAtNTUxMCw3ICs1NTEyLDcgQEAgc3RydWN0IGNmZzgwMjExX29wcyB7XFxuIFxcdFxcdFxcdCAgICAgY29uc3QgdTggKnBlZXIsIGVudW0gbmw4MDIxMV90ZGxzX29wZXJhdGlvbiBvcGVyKTtcXG4gXFxuIFxcdGludFxcdCgqcHJvYmVfcGVlcikoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tXFx0XFx0XFx0ICAgICAgY29uc3QgdTggKnBlZXIsIHU2NCAqY29va2llKTtcXG4rXFx0XFx0XFx0ICAgICAgY29uc3QgdTggKnBlZXIsIHU2NCBjb29raWUpO1xcbiBcXG4gXFx0aW50XFx0KCpzZXRfbm9hY2tfbWFwKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXHRcXHRcXHRcXHQgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuQEAgLTU2MDgsNyArNTYxMCw3IEBAIHN0cnVjdCBjZmc4MDIxMV9vcHMge1xcbiBcXHRcXHRcXHRcXHQgICBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLFxcbiBcXHRcXHRcXHRcXHQgICBjb25zdCB1OCAqZGVzdCwgY29uc3QgX19iZTE2IHByb3RvLFxcbiBcXHRcXHRcXHRcXHQgICBjb25zdCBib29sIG5vZW5jcnlwdCwgaW50IGxpbmtfaWQsXFxuLVxcdFxcdFxcdFxcdCAgIHU2NCAqY29va2llKTtcXG4rXFx0XFx0XFx0XFx0ICAgdTY0IGNvb2tpZSk7XFxuIFxcbiBcXHRpbnRcXHQoKmdldF9mdG1fcmVzcG9uZGVyX3N0YXRzKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXHRcXHRcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvY2ZnLmMgYi9uZXQvbWFjODAyMTEvY2ZnLmNcXG5pbmRleCAwYTkyNDdiZTI2YWZhLi4wYzJjN2FmZDU5YzRhIDEwMDY0NFxcbi0tLSBhL25ldC9tYWM4MDIxMS9jZmcuY1xcbisrKyBiL25ldC9tYWM4MDIxMS9jZmcuY1xcbkBAIC00ODMxLDE5ICs0ODMxLDYgQEAgaW50IGllZWU4MDIxMV9jaGFubmVsX3N3aXRjaChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRyZXR1cm4gX19pZWVlODAyMTFfY2hhbm5lbF9zd2l0Y2god2lwaHksIGRldiwgcGFyYW1zKTtcXG4gfVxcbiBcXG4tdTY0IGllZWU4MDIxMV9tZ210X3R4X2Nvb2tpZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcXG4te1xcbi1cXHRsb2NrZGVwX2Fzc2VydF93aXBoeShsb2NhbC1cXHUwMDNlaHcud2lwaHkpO1xcbi1cXG4tXFx0bG9jYWwtXFx1MDAzZXJvY19jb29raWVfY291bnRlcisrO1xcbi1cXG4tXFx0Lyogd293LCB5b3Ugd3JhcHBlZCA2NCBiaXRzIC4uLiBtb3JlIGxpa2VseSBhIGJ1ZyAqL1xcbi1cXHRpZiAoV0FSTl9PTihsb2NhbC1cXHUwMDNlcm9jX2Nvb2tpZV9jb3VudGVyID09IDApKVxcbi1cXHRcXHRsb2NhbC1cXHUwMDNlcm9jX2Nvb2tpZV9jb3VudGVyKys7XFxuLVxcbi1cXHRyZXR1cm4gbG9jYWwtXFx1MDAzZXJvY19jb29raWVfY291bnRlcjtcXG4tfVxcbi1cXG4gaW50IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0ICAgICB1NjQgKmNvb2tpZSwgZ2ZwX3QgZ2ZwKVxcbiB7XFxuQEAgLTQ4NjgsNyArNDg1NSw2IEBAIGludCBpZWVlODAyMTFfYXR0YWNoX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdElFRUU4MDIxMV9TS0JfQ0Ioc2tiKS1cXHUwMDNlc3RhdHVzX2RhdGFfaWRyID0gMTtcXG4gXFx0SUVFRTgwMjExX1NLQl9DQihza2IpLVxcdTAwM2VzdGF0dXNfZGF0YSA9IGlkO1xcbiBcXG4tXFx0KmNvb2tpZSA9IGllZWU4MDIxMV9tZ210X3R4X2Nvb2tpZShsb2NhbCk7XFxuIFxcdElFRUU4MDIxMV9TS0JfQ0IoYWNrX3NrYiktXFx1MDAzZWFjay5jb29raWUgPSAqY29va2llO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTQ5NTQsNyArNDk0MCw3IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF9yZWtleV9kYXRhKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgaWVlZTgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tXFx0XFx0XFx0XFx0Y29uc3QgdTggKnBlZXIsIHU2NCAqY29va2llKVxcbitcXHRcXHRcXHRcXHRjb25zdCB1OCAqcGVlciwgdTY0IGNvb2tpZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXFx1MDAzZWxvY2FsO1xcbkBAIC01MDYxLDcgKzUwNDcsNyBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdGlmIChxb3MpXFxuIFxcdFxcdG51bGxmdW5jLVxcdTAwM2Vxb3NfY3RybCA9IGNwdV90b19sZTE2KDcpO1xcbiBcXG4tXFx0cmV0ID0gaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKGxvY2FsLCBza2IsIGNvb2tpZSwgR0ZQX0FUT01JQyk7XFxuK1xcdHJldCA9IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihsb2NhbCwgc2tiLCBcXHUwMDI2Y29va2llLCBHRlBfQVRPTUlDKTtcXG4gXFx0aWYgKHJldCkge1xcbiBcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmggYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxcbmluZGV4IGExZWY4OGZlODQ2ZGQuLjU3NjFlOTYyMTQ5MTQgMTAwNjQ0XFxuLS0tIGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmhcXG4rKysgYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxcbkBAIC0xNzEwLDggKzE3MTAsNiBAQCBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsIHtcXG4gXFx0c3RydWN0IGxpc3RfaGVhZCByb2NfbGlzdDtcXG4gXFx0c3RydWN0IHdpcGh5X3dvcmsgaHdfcm9jX3N0YXJ0LCBod19yb2NfZG9uZTtcXG4gXFx0dW5zaWduZWQgbG9uZyBod19yb2Nfc3RhcnRfdGltZTtcXG4tXFx0dTY0IHJvY19jb29raWVfY291bnRlcjtcXG4tXFxuIFxcdHN0cnVjdCBpZHIgYWNrX3N0YXR1c19mcmFtZXM7XFxuIFxcdHNwaW5sb2NrX3QgYWNrX3N0YXR1c19sb2NrO1xcbiBcXG5AQCAtMTk5MSw3ICsxOTg5LDYgQEAgdTY0IGllZWU4MDIxMV9yZXNldF9lcnBfaW5mbyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XFxuIFxcbiB2b2lkIGllZWU4MDIxMV9oYW5kbGVfcXVldWVkX2ZyYW1lcyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCk7XFxuIFxcbi11NjQgaWVlZTgwMjExX21nbXRfdHhfY29va2llKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKTtcXG4gaW50IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0ICAgICB1NjQgKmNvb2tpZSwgZ2ZwX3QgZ2ZwKTtcXG4gXFxuQEAgLTIxNTMsMTIgKzIxNTAsMTIgQEAgdm9pZCBpZWVlODAyMTFfcm9jX3B1cmdlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbiBcXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpO1xcbiBpbnQgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcXG4tXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcXG4rXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLFxcbiBcXHRcXHRcXHRcXHRjb25zdCB1OCAqcnhfYWRkcik7XFxuIGludCBpZWVlODAyMTFfY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LCB1NjQgY29va2llKTtcXG4gaW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLVxcdFxcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSk7XFxuK1xcdFxcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKTtcXG4gaW50IGllZWU4MDIxMV9tZ210X3R4X2NhbmNlbF93YWl0KHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdFxcdFxcdFxcdCAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgdTY0IGNvb2tpZSk7XFxuIFxcbkBAIC0yMjM3LDcgKzIyMzQsNyBAQCB2b2lkIF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRcXHRcXHRcXHQgIHUzMiBpbmZvX2ZsYWdzLFxcbiBcXHRcXHRcXHRcXHQgIHUzMiBjdHJsX2ZsYWdzLFxcbi1cXHRcXHRcXHRcXHQgIHU2NCAqY29va2llKTtcXG4rXFx0XFx0XFx0XFx0ICB1NjQgY29va2llKTtcXG4gc3RydWN0IHNrX2J1ZmYgKlxcbiBpZWVlODAyMTFfYnVpbGRfZGF0YV90ZW1wbGF0ZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4gXFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIGluZm9fZmxhZ3MpO1xcbkBAIC0yMjUxLDcgKzIyNDgsNyBAQCB2b2lkIGllZWU4MDIxMV9jbGVhcl9mYXN0X3htaXQoc3RydWN0IHN0YV9pbmZvICpzdGEpO1xcbiBpbnQgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRcXHRcXHQgICAgICBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLFxcbiBcXHRcXHRcXHQgICAgICBjb25zdCB1OCAqZGVzdCwgX19iZTE2IHByb3RvLCBib29sIHVuZW5jcnlwdGVkLFxcbi1cXHRcXHRcXHQgICAgICBpbnQgbGlua19pZCwgdTY0ICpjb29raWUpO1xcbitcXHRcXHRcXHQgICAgICBpbnQgbGlua19pZCwgdTY0IGNvb2tpZSk7XFxuIGludCBpZWVlODAyMTFfcHJvYmVfbWVzaF9saW5rKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdCAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pO1xcbiB2b2lkIF9faWVlZTgwMjExX3htaXRfZmFzdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL29mZmNoYW5uZWwuYyBiL25ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmNcXG5pbmRleCAyYmNlYjczNzE3YzY2Li43YWNlZjgwZDVmMWZiIDEwMDY0NFxcbi0tLSBhL25ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmNcXG4rKysgYi9uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jXFxuQEAgLTYwMiwxNCArNjAyLDEyIEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbiBcXG4gXFx0LypcXG4gXFx0ICogY29va2llIGlzIGVpdGhlciB0aGUgcm9jIGNvb2tpZSAoZm9yIG5vcm1hbCByb2MpXFxuLVxcdCAqIG9yIHRoZSBTS0IgKGZvciBtZ210IFRYKVxcbitcXHQgKiBvciB0aGUgbWdtdF90eCBjb29raWU7IGJvdGggYXJlIHByZS1hc3NpZ25lZCBieSBjZmc4MDIxMVxcbiBcXHQgKi9cXG4tXFx0aWYgKCF0eHNrYikge1xcbi1cXHRcXHRyb2MtXFx1MDAzZWNvb2tpZSA9IGllZWU4MDIxMV9tZ210X3R4X2Nvb2tpZShsb2NhbCk7XFxuLVxcdFxcdCpjb29raWUgPSByb2MtXFx1MDAzZWNvb2tpZTtcXG4tXFx0fSBlbHNlIHtcXG4rXFx0aWYgKCF0eHNrYilcXG4rXFx0XFx0cm9jLVxcdTAwM2Vjb29raWUgPSAqY29va2llO1xcbitcXHRlbHNlXFxuIFxcdFxcdHJvYy1cXHUwMDNlbWdtdF90eF9jb29raWUgPSAqY29va2llO1xcbi1cXHR9XFxuIFxcbiBcXHRyZXEgPSB3aXBoeV9kZXJlZmVyZW5jZShsb2NhbC1cXHUwMDNlaHcud2lwaHksIGxvY2FsLVxcdTAwM2VzY2FuX3JlcSk7XFxuIFxcbkBAIC03MDQsNyArNzAyLDcgQEAgc3RhdGljIGludCBpZWVlODAyMTFfc3RhcnRfcm9jX3dvcmsoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuIFxcbiBpbnQgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcXG4tXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcXG4rXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLFxcbiBcXHRcXHRcXHRcXHRjb25zdCB1OCAqcnhfYWRkcilcXG4ge1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTtcXG5AQCAtNzEzLDcgKzcxMSw3IEBAIGludCBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkobG9jYWwtXFx1MDAzZWh3LndpcGh5KTtcXG4gXFxuIFxcdHJldHVybiBpZWVlODAyMTFfc3RhcnRfcm9jX3dvcmsobG9jYWwsIHNkYXRhLCBjaGFuLFxcbi1cXHRcXHRcXHRcXHRcXHRkdXJhdGlvbiwgY29va2llLCBOVUxMLFxcbitcXHRcXHRcXHRcXHRcXHRkdXJhdGlvbiwgXFx1MDAyNmNvb2tpZSwgTlVMTCxcXG4gXFx0XFx0XFx0XFx0XFx0SUVFRTgwMjExX1JPQ19UWVBFX05PUk1BTCk7XFxuIH1cXG4gXFxuQEAgLTgxMCw3ICs4MDgsNyBAQCBpbnQgaWVlZTgwMjExX2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiB9XFxuIFxcbiBpbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tXFx0XFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxcbitcXHRcXHQgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxuQEAgLTEwMTYsMTggKzEwMTQsMTEgQEAgaW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdC8qIG1ha2UgYSBjb3B5IHRvIHByZXNlcnZlIHRoZSBmcmFtZSBjb250ZW50c1xcbiBcXHRcXHQgKiBpbiBjYXNlIG9mIGVuY3J5cHRpb24uXFxuIFxcdFxcdCAqL1xcbi1cXHRcXHRyZXQgPSBpZWVlODAyMTFfYXR0YWNoX2Fja19za2IobG9jYWwsIHNrYiwgY29va2llLCBHRlBfS0VSTkVMKTtcXG4rXFx0XFx0cmV0ID0gaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKGxvY2FsLCBza2IsIFxcdTAwMjZjb29raWUsIEdGUF9LRVJORUwpO1xcbiBcXHRcXHRpZiAocmV0KSB7XFxuIFxcdFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRcXHRnb3RvIG91dF91bmxvY2s7XFxuIFxcdFxcdH1cXG4tXFx0fSBlbHNlIHtcXG4tXFx0XFx0LyogQXNzaWduIGEgZHVtbXkgbm9uLXplcm8gY29va2llLCBpdCdzIG5vdCBzZW50IHRvXFxuLVxcdFxcdCAqIHVzZXJzcGFjZSBpbiB0aGlzIGNhc2UgYnV0IHdlIHJlbHkgb24gaXRzIHZhbHVlXFxuLVxcdFxcdCAqIGludGVybmFsbHkgaW4gdGhlIG5lZWRfb2ZmY2hhbiBjYXNlIHRvIGRpc3Rpbmd1aXNoXFxuLVxcdFxcdCAqIG1nbXQtdHggZnJvbSByZW1haW4tb24tY2hhbm5lbC5cXG4tXFx0XFx0ICovXFxuLVxcdFxcdCpjb29raWUgPSAweGZmZmZmZmZmO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAoIW5lZWRfb2ZmY2hhbikge1xcbkBAIC0xMDQ0LDcgKzEwMzUsNyBAQCBpbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFxuIFxcdC8qIFRoaXMgd2lsbCBoYW5kbGUgYWxsIGtpbmRzIG9mIGNvYWxlc2NpbmcgYW5kIGltbWVkaWF0ZSBUWCAqL1xcbiBcXHRyZXQgPSBpZWVlODAyMTFfc3RhcnRfcm9jX3dvcmsobG9jYWwsIHNkYXRhLCBwYXJhbXMtXFx1MDAzZWNoYW4sXFxuLVxcdFxcdFxcdFxcdCAgICAgICBwYXJhbXMtXFx1MDAzZXdhaXQsIGNvb2tpZSwgc2tiLFxcbitcXHRcXHRcXHRcXHQgICAgICAgcGFyYW1zLVxcdTAwM2V3YWl0LCBcXHUwMDI2Y29va2llLCBza2IsXFxuIFxcdFxcdFxcdFxcdCAgICAgICBJRUVFODAyMTFfUk9DX1RZUEVfTUdNVF9UWCk7XFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIHNrYik7XFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS90ZGxzLmMgYi9uZXQvbWFjODAyMTEvdGRscy5jXFxuaW5kZXggZmZkNTc1YThkMTg4Zi4uZGMyZjY2MmZlNGM0NiAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTEvdGRscy5jXFxuKysrIGIvbmV0L21hYzgwMjExL3RkbHMuY1xcbkBAIC0xMTIxLDcgKzExMjEsNyBAQCBpZWVlODAyMTFfdGRsc19wcmVwX21nbXRfcGFja2V0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdC8qIGRpc2FibGUgYm90dG9tIGhhbHZlcyB3aGVuIGVudGVyaW5nIHRoZSBUeCBwYXRoICovXFxuIFxcdGxvY2FsX2JoX2Rpc2FibGUoKTtcXG4gXFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIGRldiwgZmxhZ3MsXFxuLVxcdFxcdFxcdFxcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLCBOVUxMKTtcXG4rXFx0XFx0XFx0XFx0ICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsIDApO1xcbiBcXHRsb2NhbF9iaF9lbmFibGUoKTtcXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS90eC5jIGIvbmV0L21hYzgwMjExL3R4LmNcXG5pbmRleCAwY2Y1ZjZlYzc1ZTY3Li40NTRhODcyYjI1OWEzIDEwMDY0NFxcbi0tLSBhL25ldC9tYWM4MDIxMS90eC5jXFxuKysrIGIvbmV0L21hYzgwMjExL3R4LmNcXG5AQCAtMjU4Myw3ICsyNTgzLDcgQEAgaW50IGllZWU4MDIxMV9sb29rdXBfcmFfc3RhKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbiBzdGF0aWMgdTE2IGllZWU4MDIxMV9zdG9yZV9hY2tfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbiBcXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRcXHRcXHQgICB1MzIgKmluZm9fZmxhZ3MsXFxuLVxcdFxcdFxcdFxcdCAgIHU2NCAqY29va2llKVxcbitcXHRcXHRcXHRcXHQgICB1NjQgY29va2llKVxcbiB7XFxuIFxcdHN0cnVjdCBza19idWZmICphY2tfc2tiO1xcbiBcXHR1MTYgaW5mb19pZCA9IDA7XFxuQEAgLTI2MDUsMTAgKzI2MDUsOCBAQCBzdGF0aWMgdTE2IGllZWU4MDIxMV9zdG9yZV9hY2tfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbiBcXHRcXHRpZiAoaWQgXFx1MDAzZT0gMCkge1xcbiBcXHRcXHRcXHRpbmZvX2lkID0gaWQ7XFxuIFxcdFxcdFxcdCppbmZvX2ZsYWdzIHw9IElFRUU4MDIxMV9UWF9DVExfUkVRX1RYX1NUQVRVUztcXG4tXFx0XFx0XFx0aWYgKGNvb2tpZSkge1xcbi1cXHRcXHRcXHRcXHQqY29va2llID0gaWVlZTgwMjExX21nbXRfdHhfY29va2llKGxvY2FsKTtcXG4tXFx0XFx0XFx0XFx0SUVFRTgwMjExX1NLQl9DQihhY2tfc2tiKS1cXHUwMDNlYWNrLmNvb2tpZSA9ICpjb29raWU7XFxuLVxcdFxcdFxcdH1cXG4rXFx0XFx0XFx0aWYgKGNvb2tpZSlcXG4rXFx0XFx0XFx0XFx0SUVFRTgwMjExX1NLQl9DQihhY2tfc2tiKS1cXHUwMDNlYWNrLmNvb2tpZSA9IGNvb2tpZTtcXG4gXFx0XFx0fSBlbHNlIHtcXG4gXFx0XFx0XFx0a2ZyZWVfc2tiKGFja19za2IpO1xcbiBcXHRcXHR9XFxuQEAgLTI2NTMsNyArMjY1MSw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9yZW1vdmVfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgdTE2IGluZm9faWQpXFxuIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX2J1aWxkX2hkcihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIGluZm9fZmxhZ3MsXFxuIFxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1MzIgY3RybF9mbGFncyxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgdTY0ICpjb29raWUpXFxuK1xcdFxcdFxcdFxcdFxcdCAgIHU2NCBjb29raWUpXFxuIHtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbztcXG5AQCAtNDM3NCw3ICs0MzcyLDcgQEAgdm9pZCBfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdFxcdCAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0XFx0XFx0XFx0ICB1MzIgaW5mb19mbGFncyxcXG4gXFx0XFx0XFx0XFx0ICB1MzIgY3RybF9mbGFncyxcXG4tXFx0XFx0XFx0XFx0ICB1NjQgKmNvb2tpZSlcXG4rXFx0XFx0XFx0XFx0ICB1NjQgY29va2llKVxcbiB7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxuQEAgLTQ1NjksNyArNDU2Nyw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbG9fbXVsdGljYXN0X3R4X29uZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0Y3RybF9mbGFncyB8PSB1MzJfZW5jb2RlX2JpdHMobGlua19pZCwgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTkspO1xcbi1cXHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KG91dCwgc2RhdGEtXFx1MDAzZWRldiwgMCwgY3RybF9mbGFncywgTlVMTCk7XFxuK1xcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQob3V0LCBzZGF0YS1cXHUwMDNlZGV2LCAwLCBjdHJsX2ZsYWdzLCAwKTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgaWVlZTgwMjExX21sb19tdWx0aWNhc3RfdHgoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5AQCAtNDU4NCw4ICs0NTgyLDcgQEAgc3RhdGljIHZvaWQgaWVlZTgwMjExX21sb19tdWx0aWNhc3RfdHgoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0XFx0Y3RybF9mbGFncyB8PSB1MzJfZW5jb2RlX2JpdHMoX19mZnMobGlua3MpLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOSyk7XFxuIFxcbi1cXHRcXHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgc2RhdGEtXFx1MDAzZWRldiwgMCwgY3RybF9mbGFncyxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICBOVUxMKTtcXG4rXFx0XFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIHNkYXRhLVxcdTAwM2VkZXYsIDAsIGN0cmxfZmxhZ3MsIDApO1xcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG4gXFxuQEAgLTQ2MjcsNyArNDYyNCw3IEBAIG5ldGRldl90eF90IGllZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShcXHUwMDI2cXVldWUpKSlcXG4gXFx0XFx0XFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIGRldiwgMCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgTlVMTCk7XFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgMCk7XFxuIFxcdH0gZWxzZSBpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICgoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICAgIWllZWU4MDIxMV9od19jaGVjayhcXHUwMDI2c2RhdGEtXFx1MDAzZWxvY2FsLVxcdTAwM2VodywgTUxPX01DQVNUX01VTFRJX0xJTktfVFgpKSB8fFxcbkBAIC00NjM4LDcgKzQ2MzUsNyBAQCBuZXRkZXZfdHhfdCBpZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBub3JtYWw6XFxuIFxcdFxcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIDAsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgIE5VTEwpO1xcbitcXHRcXHRcXHRcXHRcXHQgICAgIDApO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gTkVUREVWX1RYX09LO1xcbkBAIC00NzM3LDcgKzQ3MzQsNyBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfODAyM194bWl0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbiBcXHRcXHRcXHQvKiBmYWxsIGJhY2sgdG8gbm9uLW9mZmxvYWQgc2xvdyBwYXRoICovXFxuIFxcdFxcdFxcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIDAsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIE5VTEwpO1xcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgIDApO1xcbiBcXHRcXHRcXHRyZXR1cm47XFxuIFxcdFxcdH1cXG4gXFxuQEAgLTQ3NzMsNyArNDc3MCw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV84MDIzX3htaXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuIFxcbiBcXHRpZiAodW5saWtlbHkoc2tfcmVxdWVzdHNfd2lmaV9zdGF0dXMoc2tiLVxcdTAwM2VzaykpKSB7XFxuIFxcdFxcdGluZm8tXFx1MDAzZXN0YXR1c19kYXRhID0gaWVlZTgwMjExX3N0b3JlX2Fja19za2IobG9jYWwsIHNrYixcXG4tXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZpbmZvLVxcdTAwM2VmbGFncywgTlVMTCk7XFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2aW5mby1cXHUwMDNlZmxhZ3MsIDApO1xcbiBcXHRcXHRpZiAoaW5mby1cXHUwMDNlc3RhdHVzX2RhdGEpXFxuIFxcdFxcdFxcdGluZm8tXFx1MDAzZXN0YXR1c19kYXRhX2lkciA9IDE7XFxuIFxcdH1cXG5AQCAtNDkxNiw3ICs0OTEzLDcgQEAgaWVlZTgwMjExX2J1aWxkX2RhdGFfdGVtcGxhdGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuIFxcdH1cXG4gXFxuIFxcdHNrYiA9IGllZWU4MDIxMV9idWlsZF9oZHIoc2RhdGEsIHNrYiwgaW5mb19mbGFncywgc3RhLFxcbi1cXHRcXHRcXHRcXHQgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LX1VOU1BFQywgTlVMTCk7XFxuK1xcdFxcdFxcdFxcdCAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLCAwKTtcXG4gXFx0aWYgKElTX0VSUihza2IpKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFxuQEAgLTY1MzEsNyArNjUyOCw3IEBAIHZvaWQgaWVlZTgwMjExX3R4X3NrYl90aWQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuIGludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdCAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sXFxuIFxcdFxcdFxcdCAgICAgIGNvbnN0IHU4ICpkZXN0LCBfX2JlMTYgcHJvdG8sIGJvb2wgdW5lbmNyeXB0ZWQsXFxuLVxcdFxcdFxcdCAgICAgIGludCBsaW5rX2lkLCB1NjQgKmNvb2tpZSlcXG4rXFx0XFx0XFx0ICAgICAgaW50IGxpbmtfaWQsIHU2NCBjb29raWUpXFxuIHtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5AQCAtNjY2Niw3ICs2NjYzLDcgQEAgaW50IGllZWU4MDIxMV9wcm9iZV9tZXNoX2xpbmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0bG9jYWxfYmhfZGlzYWJsZSgpO1xcbiBcXHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgc2tiLVxcdTAwM2VkZXYsIDAsXFxuIFxcdFxcdFxcdFxcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfU0tJUF9NUEFUSF9MT09LVVAsXFxuLVxcdFxcdFxcdFxcdCAgICAgTlVMTCk7XFxuK1xcdFxcdFxcdFxcdCAgICAgMCk7XFxuIFxcdGxvY2FsX2JoX2VuYWJsZSgpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9jb3JlLmggYi9uZXQvd2lyZWxlc3MvY29yZS5oXFxuaW5kZXggMTVkOWY3ZWI1OGI0ZC4uYjQ2MTBmNjY4NWRjYiAxMDA2NDRcXG4tLS0gYS9uZXQvd2lyZWxlc3MvY29yZS5oXFxuKysrIGIvbmV0L3dpcmVsZXNzL2NvcmUuaFxcbkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBjZmc4MDIxMV9tbG1lX3B1cmdlX3JlZ2lzdHJhdGlvbnMoc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldik7XFxuIGludCBjZmc4MDIxMV9tbG1lX21nbXRfdHgoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbiBcXHRcXHRcXHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdCAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXFxuLVxcdFxcdFxcdCAgdTY0ICpjb29raWUpO1xcbitcXHRcXHRcXHQgIHU2NCBjb29raWUpO1xcbiB2b2lkIGNmZzgwMjExX29wZXJfYW5kX2h0X2NhcGEoc3RydWN0IGllZWU4MDIxMV9odF9jYXAgKmh0X2NhcGEsXFxuIFxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCAqaHRfY2FwYV9tYXNrKTtcXG4gdm9pZCBjZmc4MDIxMV9vcGVyX2FuZF92aHRfY2FwYShzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXBhLFxcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3MvbWxtZS5jIGIvbmV0L3dpcmVsZXNzL21sbWUuY1xcbmluZGV4IDc4MjRiN2FjMjc3MGYuLmEwZDFjZGUyNmYwYzkgMTAwNjQ0XFxuLS0tIGEvbmV0L3dpcmVsZXNzL21sbWUuY1xcbisrKyBiL25ldC93aXJlbGVzcy9tbG1lLmNcXG5AQCAtODk0LDcgKzg5NCw3IEBAIHN0YXRpYyBib29sIGNmZzgwMjExX2FsbG93ZWRfcmFuZG9tX2FkZHJlc3Moc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFxuIGludCBjZmc4MDIxMV9tbG1lX21nbXRfdHgoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbiBcXHRcXHRcXHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLVxcdFxcdFxcdCAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxcbitcXHRcXHRcXHQgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxcbiB7XFxuIFxcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcXG4gXFx0dTE2IHN0eXBlO1xcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jIGIvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xcbmluZGV4IDhhZGJlZjVmMDQ0MjUuLmFjODk1ZTAyY2Q0MTEgMTAwNjQ0XFxuLS0tIGEvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xcbisrKyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmNcXG5AQCAtMTQ2NDIsOCArMTQ2NDIsOSBAQCBzdGF0aWMgaW50IG5sODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0Z290byBmcmVlX21zZztcXG4gXFx0fVxcbiBcXG4rXFx0Y29va2llID0gY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcXG4gXFx0ZXJyID0gcmRldl9yZW1haW5fb25fY2hhbm5lbChyZGV2LCB3ZGV2LCBjaGFuZGVmLmNoYW4sXFxuLVxcdFxcdFxcdFxcdCAgICAgZHVyYXRpb24sIFxcdTAwMjZjb29raWUsIHJ4X2FkZHIpO1xcbitcXHRcXHRcXHRcXHQgICAgIGR1cmF0aW9uLCBjb29raWUsIHJ4X2FkZHIpO1xcbiBcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0Z290byBmcmVlX21zZztcXG5AQCAtMTQ4ODMsNyArMTQ4ODQsOCBAQCBzdGF0aWMgaW50IG5sODAyMTFfdHhfbWdtdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbiBcXHR9XFxuIFxcbiBcXHRwYXJhbXMuY2hhbiA9IGNoYW5kZWYuY2hhbjtcXG4tXFx0ZXJyID0gY2ZnODAyMTFfbWxtZV9tZ210X3R4KHJkZXYsIHdkZXYsIFxcdTAwMjZwYXJhbXMsIFxcdTAwMjZjb29raWUpO1xcbitcXHRjb29raWUgPSBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpO1xcbitcXHRlcnIgPSBjZmc4MDIxMV9tbG1lX21nbXRfdHgocmRldiwgd2RldiwgXFx1MDAyNnBhcmFtcywgY29va2llKTtcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0Z290byBmcmVlX21zZztcXG4gXFxuQEAgLTE2MzcxLDcgKzE2MzczLDggQEAgc3RhdGljIGludCBubDgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4gXFx0XFx0Z290byBmcmVlX21zZztcXG4gXFx0fVxcbiBcXG4tXFx0ZXJyID0gcmRldl9wcm9iZV9wZWVyKHJkZXYsIGRldiwgYWRkciwgXFx1MDAyNmNvb2tpZSk7XFxuK1xcdGNvb2tpZSA9IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7XFxuK1xcdGVyciA9IHJkZXZfcHJvYmVfcGVlcihyZGV2LCBkZXYsIGFkZHIsIGNvb2tpZSk7XFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdGdvdG8gZnJlZV9tc2c7XFxuIFxcbkBAIC0xODU4NiwxMCArMTg1ODksMTEgQEAgc3RhdGljIGludCBubDgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbiBcXG4gXFx0bGlua19pZCA9IG5sODAyMTFfbGlua19pZF9vcl9pbnZhbGlkKGluZm8tXFx1MDAzZWF0dHJzKTtcXG4gXFxuK1xcdGNvb2tpZSA9IGRvbnRfd2FpdF9mb3JfYWNrID8gMCA6IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7XFxuIFxcdGVyciA9IHJkZXZfdHhfY29udHJvbF9wb3J0KHJkZXYsIGRldiwgYnVmLCBsZW4sXFxuIFxcdFxcdFxcdFxcdCAgIGRlc3QsIGNwdV90b19iZTE2KHByb3RvKSwgbm9lbmNyeXB0LCBsaW5rX2lkLFxcbi1cXHRcXHRcXHRcXHQgICBkb250X3dhaXRfZm9yX2FjayA/IE5VTEwgOiBcXHUwMDI2Y29va2llKTtcXG4tXFx0aWYgKCFlcnIgXFx1MDAyNlxcdTAwMjYgIWRvbnRfd2FpdF9mb3JfYWNrKVxcbitcXHRcXHRcXHRcXHQgICBjb29raWUpO1xcbitcXHRpZiAoIWVyciBcXHUwMDI2XFx1MDAyNiBjb29raWUpXFxuIFxcdFxcdG5sX3NldF9leHRhY2tfY29va2llX3U2NChpbmZvLVxcdTAwM2VleHRhY2ssIGNvb2tpZSk7XFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG5AQCAtMjIwNDIsNiArMjIwNDYsMTAgQEAgc3RhdGljIHZvaWQgbmw4MDIxMV9mcmFtZV90eF9zdGF0dXMoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0c3RydWN0IHNrX2J1ZmYgKm1zZztcXG4gXFx0dm9pZCAqaGRyO1xcbiBcXG4rXFx0LyogdXNlcnNwYWNlIG5vdCBpbnRlcmVzdGVkIGluIHplcm8tY29va2llIHN0YXR1cyAqL1xcbitcXHRpZiAoIXN0YXR1cy1cXHUwMDNlY29va2llKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbiBcXHRpZiAoY29tbWFuZCA9PSBOTDgwMjExX0NNRF9GUkFNRV9UWF9TVEFUVVMpXFxuIFxcdFxcdHRyYWNlX2NmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIHN0YXR1cy1cXHUwMDNlY29va2llLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICBzdGF0dXMtXFx1MDAzZWFjayk7XFxuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oIGIvbmV0L3dpcmVsZXNzL3JkZXYtb3BzLmhcXG5pbmRleCA2YzNiYWQ4YjJkNmY2Li40Njg0OWZlOGQwYjM5IDEwMDY0NFxcbi0tLSBhL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oXFxuKysrIGIvbmV0L3dpcmVsZXNzL3JkZXYtb3BzLmhcXG5AQCAtNzM2LDE0ICs3MzYsMTQgQEAgc3RhdGljIGlubGluZSBpbnRcXG4gcmRldl9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXFxuIFxcdFxcdCAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRcXHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxcbi1cXHRcXHQgICAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpXFxuK1xcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsIGNvbnN0IHU4ICpyeF9hZGRyKVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcdHRyYWNlX3JkZXZfcmVtYWluX29uX2NoYW5uZWwoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LCB3ZGV2LCBjaGFuLCBkdXJhdGlvbixcXG4gXFx0XFx0XFx0XFx0ICAgICByeF9hZGRyKTtcXG4gXFx0cmV0ID0gcmRldi1cXHUwMDNlb3BzLVxcdTAwM2VyZW1haW5fb25fY2hhbm5lbChcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIHdkZXYsIGNoYW4sXFxuIFxcdFxcdFxcdFxcdFxcdCAgIGR1cmF0aW9uLCBjb29raWUsIHJ4X2FkZHIpO1xcbi1cXHR0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKFxcdTAwMjZyZGV2LVxcdTAwM2V3aXBoeSwgcmV0LCAqY29va2llKTtcXG4rXFx0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIHJldCwgY29va2llKTtcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG5AQCAtNzYxLDEyICs3NjEsMTIgQEAgcmRldl9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbiBzdGF0aWMgaW5saW5lIGludCByZGV2X21nbXRfdHgoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbiBcXHRcXHRcXHQgICAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLFxcbi1cXHRcXHRcXHQgICAgICAgdTY0ICpjb29raWUpXFxuK1xcdFxcdFxcdCAgICAgICB1NjQgY29va2llKVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcdHRyYWNlX3JkZXZfbWdtdF90eChcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIHdkZXYsIHBhcmFtcyk7XFxuIFxcdHJldCA9IHJkZXYtXFx1MDAzZW9wcy1cXHUwMDNlbWdtdF90eChcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIHdkZXYsIHBhcmFtcywgY29va2llKTtcXG4tXFx0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIHJldCwgKmNvb2tpZSk7XFxuK1xcdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LCByZXQsIGNvb2tpZSk7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuQEAgLTc3NSw3ICs3NzUsNyBAQCBzdGF0aWMgaW5saW5lIGludCByZGV2X3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgICBjb25zdCB2b2lkICpidWYsIHNpemVfdCBsZW4sXFxuIFxcdFxcdFxcdFxcdCAgICAgICBjb25zdCB1OCAqZGVzdCwgX19iZTE2IHByb3RvLFxcbiBcXHRcXHRcXHRcXHQgICAgICAgY29uc3QgYm9vbCBub2VuY3J5cHQsIGludCBsaW5rLFxcbi1cXHRcXHRcXHRcXHQgICAgICAgdTY0ICpjb29raWUpXFxuK1xcdFxcdFxcdFxcdCAgICAgICB1NjQgY29va2llKVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcdHRyYWNlX3JkZXZfdHhfY29udHJvbF9wb3J0KFxcdTAwMjZyZGV2LVxcdTAwM2V3aXBoeSwgZGV2LCBidWYsIGxlbixcXG5AQCAtNzgzLDcgKzc4Myw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJkZXZfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG4gXFx0cmV0ID0gcmRldi1cXHUwMDNlb3BzLVxcdTAwM2V0eF9jb250cm9sX3BvcnQoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LCBkZXYsIGJ1ZiwgbGVuLFxcbiBcXHRcXHRcXHRcXHRcXHQgZGVzdCwgcHJvdG8sIG5vZW5jcnlwdCwgbGluaywgY29va2llKTtcXG4gXFx0aWYgKGNvb2tpZSlcXG4tXFx0XFx0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIHJldCwgKmNvb2tpZSk7XFxuK1xcdFxcdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LCByZXQsIGNvb2tpZSk7XFxuIFxcdGVsc2VcXG4gXFx0XFx0dHJhY2VfcmRldl9yZXR1cm5faW50KFxcdTAwMjZyZGV2LVxcdTAwM2V3aXBoeSwgcmV0KTtcXG4gXFx0cmV0dXJuIHJldDtcXG5AQCAtOTUwLDEyICs5NTAsMTIgQEAgc3RhdGljIGlubGluZSBpbnQgcmRldl90ZGxzX29wZXIoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbiBcXG4gc3RhdGljIGlubGluZSBpbnQgcmRldl9wcm9iZV9wZWVyKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG4gXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqcGVlcixcXG4tXFx0XFx0XFx0XFx0ICB1NjQgKmNvb2tpZSlcXG4rXFx0XFx0XFx0XFx0ICB1NjQgY29va2llKVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcdHRyYWNlX3JkZXZfcHJvYmVfcGVlcihcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIGRldiwgcGVlcik7XFxuIFxcdHJldCA9IHJkZXYtXFx1MDAzZW9wcy1cXHUwMDNlcHJvYmVfcGVlcihcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIGRldiwgcGVlciwgY29va2llKTtcXG4tXFx0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIHJldCwgKmNvb2tpZSk7XFxuK1xcdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LCByZXQsIGNvb2tpZSk7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIyOjM4LjAwMjc0NzEzM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjkwNDAzMzQ5MDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsXCIsXG4gICAgXCJubDgwMjExX3R4X21nbXRcIixcbiAgICBcIm5sODAyMTFfcHJvYmVfcGVlclwiLFxuICAgIFwibmw4MDIxMV90eF9jb250cm9sX3BvcnRcIixcbiAgICBcImNmZzgwMjExX21sbWVfbWdtdF90eFwiLFxuICAgIFwiaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsXCIsXG4gICAgXCJpZWVlODAyMTFfbWdtdF90eFwiLFxuICAgIFwiaWVlZTgwMjExX3Byb2JlX3BlZXJcIixcbiAgICBcImllZWU4MDIxMV90eF9jb250cm9sX3BvcnRcIixcbiAgICBcImllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYlwiLFxuICAgIFwiaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBob3cgY29va2llcyBhcmUgZ2VuZXJhdGVkIGFuZCBwYXNzZWQgZm9yIHNldmVyYWwgbmw4MDIxMSBjb21tYW5kcyAocmVtYWluX29uX2NoYW5uZWwsIHR4X21nbXQsIHByb2JlX3BlZXIsIHR4X2NvbnRyb2xfcG9ydCkuIEl0IG1vZGlmaWVzIHRoZSBjb3JlIGNmZzgwMjExIGFuZCBtYWM4MDIxMSBsb2dpYyB0byBnZW5lcmF0ZSBjb29raWVzIGluIG5sODAyMTEgYW5kIHBhc3MgdGhlbSBieSB2YWx1ZSB0byBkcml2ZXJzLCBpbnN0ZWFkIG9mIGhhdmluZyBkcml2ZXJzIGdlbmVyYXRlIHRoZW0gYW5kIHBhc3MgdGhlbSBiYWNrIHZpYSBwb2ludGVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIHdpcmVsZXNzIHN0YWNrIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkYjY0N2Y0MDNkOTlhNDM2OTA0M2RmM2MwNWVlYTVkZGY4NDA4MDVkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMSAxOToyMjozNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuY1xuaW5kZXggZWNkZTkxMTU5YjU0Ni4uMzQwMjVkNjRkNjE1OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jXG5AQCAtMzAzNCwyMCArMzAzNCwxNCBAQCBzdGF0aWMgaW50IGF0aDZrbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHQgICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuIFx0XHRcdFx0ICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbixcbi1cdFx0XHRcdCAgICB1NjQgKmNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpXG4rXHRcdFx0XHQgICAgdTY0IGNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpXG4ge1xuIFx0c3RydWN0IGF0aDZrbF92aWYgKnZpZiA9IGF0aDZrbF92aWZfZnJvbV93ZGV2KHdkZXYpO1xuIFx0c3RydWN0IGF0aDZrbCAqYXIgPSBhdGg2a2xfcHJpdih2aWYtXHUwMDNlbmRldik7XG4tXHR1MzIgaWQ7XG4gXG4gXHQvKiBUT0RPOiBpZiBhbHJlYWR5IHBlbmRpbmcgb3Igb25nb2luZyByZW1haW4tb24tY2hhbm5lbCxcbiBcdCAqIHJldHVybiAtRUJVU1kgKi9cbi1cdGlkID0gKyt2aWYtXHUwMDNlbGFzdF9yb2NfaWQ7XG4tXHRpZiAoaWQgPT0gMCkge1xuLVx0XHQvKiBEbyBub3QgdXNlIDAgYXMgdGhlIGNvb2tpZSB2YWx1ZSAqL1xuLVx0XHRpZCA9ICsrdmlmLVx1MDAzZWxhc3Rfcm9jX2lkO1xuLVx0fVxuLVx0KmNvb2tpZSA9IGlkO1xuK1x0dmlmLVx1MDAzZWxhc3Rfcm9jX2lkID0gY29va2llO1xuIFxuIFx0cmV0dXJuIGF0aDZrbF93bWlfcmVtYWluX29uX2NobmxfY21kKGFyLVx1MDAzZXdtaSwgdmlmLVx1MDAzZWZ3X3ZpZl9pZHgsXG4gXHRcdFx0XHRcdCAgICAgY2hhbi1cdTAwM2VjZW50ZXJfZnJlcSwgZHVyYXRpb24pO1xuQEAgLTMxMDYsNiArMzEwMCw3IEBAIHN0YXRpYyBpbnQgYXRoNmtsX3NlbmRfZ29fcHJvYmVfcmVzcChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLFxuIFxuIHN0YXRpYyBib29sIGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLFxuIFx0XHRcdFx0ICAgICB1MzIgaWQsXG4rXHRcdFx0XHQgICAgIHU2NCBjb29raWUsXG4gXHRcdFx0XHQgICAgIHUzMiBmcmVxLFxuIFx0XHRcdFx0ICAgICB1MzIgd2FpdCxcbiBcdFx0XHRcdCAgICAgY29uc3QgdTggKmJ1ZixcbkBAIC0zMTM4LDYgKzMxMzMsNyBAQCBzdGF0aWMgYm9vbCBhdGg2a2xfbWdtdF9wb3dlcnNhdmVfYXAoc3RydWN0IGF0aDZrbF92aWYgKnZpZixcbiBcbiBcdFx0XHRJTklUX0xJU1RfSEVBRChcdTAwMjZtZ210X2J1Zi1cdTAwM2VsaXN0KTtcbiBcdFx0XHRtZ210X2J1Zi1cdTAwM2VpZCA9IGlkO1xuK1x0XHRcdG1nbXRfYnVmLVx1MDAzZWNvb2tpZSA9IGNvb2tpZTtcbiBcdFx0XHRtZ210X2J1Zi1cdTAwM2VmcmVxID0gZnJlcTtcbiBcdFx0XHRtZ210X2J1Zi1cdTAwM2V3YWl0ID0gd2FpdDtcbiBcdFx0XHRtZ210X2J1Zi1cdTAwM2VsZW4gPSBsZW47XG5AQCAtMzE5MCw3ICszMTg2LDcgQEAgc3RhdGljIGJvb2wgYXRoNmtsX2lzX3AycF9nb19zc2lkKGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pXG4gfVxuIFxuIHN0YXRpYyBpbnQgYXRoNmtsX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0XHQgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcbitcdFx0XHQgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBhdGg2a2xfdmlmICp2aWYgPSBhdGg2a2xfdmlmX2Zyb21fd2Rldih3ZGV2KTtcbiBcdHN0cnVjdCBhdGg2a2wgKmFyID0gYXRoNmtsX3ByaXYodmlmLVx1MDAzZW5kZXYpO1xuQEAgLTMyMjIsNyArMzIxOCw2IEBAIHN0YXRpYyBpbnQgYXRoNmtsX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0ICogU2VuZCBQcm9iZSBSZXNwb25zZSBmcmFtZSBpbiBHTyBtb2RlIHVzaW5nIGEgc2VwYXJhdGUgV01JXG4gXHRcdCAqIGNvbW1hbmQgdG8gYWxsb3cgdGhlIHRhcmdldCB0byBmaWxsIGluIHRoZSBnZW5lcmljIElFcy5cbiBcdFx0ICovXG4tXHRcdCpjb29raWUgPSAwOyAvKiBUWCBzdGF0dXMgbm90IHN1cHBvcnRlZCAqL1xuIFx0XHRyZXR1cm4gYXRoNmtsX3NlbmRfZ29fcHJvYmVfcmVzcCh2aWYsIGJ1ZiwgbGVuLCBmcmVxKTtcbiBcdH1cbiBcbkBAIC0zMjM1LDE2ICszMjMwLDE1IEBAIHN0YXRpYyBpbnQgYXRoNmtsX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0aWQgPSB2aWYtXHUwMDNlc2VuZF9hY3Rpb25faWQrKztcbiBcdH1cbiBcbi1cdCpjb29raWUgPSBpZDtcbi1cbiBcdC8qIEFQIG1vZGUgUG93ZXIgc2F2aW5nIHByb2Nlc3NpbmcgKi9cbiBcdGlmICh2aWYtXHUwMDNlbndfdHlwZSA9PSBBUF9ORVRXT1JLKSB7XG4tXHRcdHF1ZXVlZCA9IGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcCh2aWYsIGlkLCBmcmVxLCB3YWl0LCBidWYsIGxlbixcbi1cdFx0XHRcdFx0XHQgIFx1MDAyNm1vcmVfZGF0YSwgbm9fY2NrKTtcbitcdFx0cXVldWVkID0gYXRoNmtsX21nbXRfcG93ZXJzYXZlX2FwKHZpZiwgaWQsIGNvb2tpZSwgZnJlcSwgd2FpdCxcbitcdFx0XHRcdFx0XHQgIGJ1ZiwgbGVuLCBcdTAwMjZtb3JlX2RhdGEsIG5vX2Njayk7XG4gXHRcdGlmIChxdWV1ZWQpXG4gXHRcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG4rXHRhci1cdTAwM2V3bWktXHUwMDNlbGFzdF9tZ210X3R4X2Nvb2tpZSA9IGNvb2tpZTtcbiBcdHJldHVybiBhdGg2a2xfd21pX3NlbmRfbWdtdF9jbWQoYXItXHUwMDNld21pLCB2aWYtXHUwMDNlZndfdmlmX2lkeCwgaWQsIGZyZXEsXG4gXHRcdFx0XHRcdHdhaXQsIGJ1ZiwgbGVuLCBub19jY2spO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oXG5pbmRleCA3N2UwNTIzMzZlYjViLi5hMGIyMzZlZWVhYjU0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oXG5AQCAtNDA0LDYgKzQwNCw3IEBAIHN0cnVjdCBhdGg2a2xfbWdtdF9idWZmIHtcbiBcdHUzMiBmcmVxO1xuIFx0dTMyIHdhaXQ7XG4gXHR1MzIgaWQ7XG4rXHR1NjQgY29va2llO1xuIFx0Ym9vbCBub19jY2s7XG4gXHRzaXplX3QgbGVuO1xuIFx0dTggYnVmW107XG5AQCAtNjMxLDggKzYzMiw4IEBAIHN0cnVjdCBhdGg2a2xfdmlmIHtcbiBcdHN0cnVjdCBjZmc4MDIxMV9zY2FuX3JlcXVlc3QgKnNjYW5fcmVxO1xuIFx0ZW51bSBzbWVfc3RhdGUgc21lX3N0YXRlO1xuIFx0aW50IHJlY29ubmVjdF9mbGFnO1xuLVx0dTMyIGxhc3Rfcm9jX2lkO1xuLVx0dTMyIGxhc3RfY2FuY2VsX3JvY19pZDtcbitcdHU2NCBsYXN0X3JvY19pZDtcbitcdHU2NCBsYXN0X2NhbmNlbF9yb2NfaWQ7XG4gXHR1MzIgc2VuZF9hY3Rpb25faWQ7XG4gXHRib29sIHByb2JlX3JlcV9yZXBvcnQ7XG4gXHR1MTYgYXNzb2NfYnNzX2JlYWNvbl9pbnQ7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uY1xuaW5kZXggOGFmYzY1ODlmYzUxZS4uOWMwMjNkN2NlMzA1OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uY1xuQEAgLTg5OCw2ICs4OTgsNyBAQCB2b2lkIGF0aDZrbF9wc3BvbGxfZXZlbnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggYWlkKVxuIFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZjb25uLVx1MDAzZXBzcV9sb2NrKTtcbiBcbiBcdFx0Y29ubi1cdTAwM2VzdGFfZmxhZ3MgfD0gU1RBX1BTX1BPTExFRDtcbitcdFx0YXItXHUwMDNld21pLVx1MDAzZWxhc3RfbWdtdF90eF9jb29raWUgPSBtZ210X2J1Zi1cdTAwM2Vjb29raWU7XG4gXHRcdGF0aDZrbF93bWlfc2VuZF9tZ210X2NtZChhci1cdTAwM2V3bWksIHZpZi1cdTAwM2Vmd192aWZfaWR4LFxuIFx0XHRcdFx0XHQgbWdtdF9idWYtXHUwMDNlaWQsIG1nbXRfYnVmLVx1MDAzZWZyZXEsXG4gXHRcdFx0XHRcdCBtZ210X2J1Zi1cdTAwM2V3YWl0LCBtZ210X2J1Zi1cdTAwM2VidWYsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY1xuaW5kZXggZDgxODI1NDEzOTA2MS4uNjA5ZDQ1OGNhNmM1NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY1xuQEAgLTE0NjksNiArMTQ2OSw3IEBAIHZvaWQgYXRoNmtsX3J4KHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQsIHN0cnVjdCBodGNfcGFja2V0ICpwYWNrZXQpXG4gXHRcdFx0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmNvbm4tXHUwMDNlcHNxX2xvY2spO1xuIFx0XHRcdFx0XHRpZHggPSB2aWYtXHUwMDNlZndfdmlmX2lkeDtcbiBcbitcdFx0XHRcdFx0YXItXHUwMDNld21pLVx1MDAzZWxhc3RfbWdtdF90eF9jb29raWUgPSBtZ210LVx1MDAzZWNvb2tpZTtcbiBcdFx0XHRcdFx0YXRoNmtsX3dtaV9zZW5kX21nbXRfY21kKGFyLVx1MDAzZXdtaSxcbiBcdFx0XHRcdFx0XHRcdFx0IGlkeCxcbiBcdFx0XHRcdFx0XHRcdFx0IG1nbXQtXHUwMDNlaWQsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmNcbmluZGV4IDZjMjlmMGJjZWM5ZjUuLjIxNDBmZGRiYThiYWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jXG5AQCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyBpbnQgYXRoNmtsX3dtaV90eF9zdGF0dXNfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sXG4gXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV01JLCBcInR4X3N0YXR1czogaWQ9JXggYWNrX3N0YXR1cz0ldVxcblwiLFxuIFx0XHQgICBpZCwgZXYtXHUwMDNlYWNrX3N0YXR1cyk7XG4gXHRpZiAod21pLVx1MDAzZWxhc3RfbWdtdF90eF9mcmFtZSkge1xuLVx0XHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyhcdTAwMjZ2aWYtXHUwMDNld2RldiwgaWQsXG4rXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKFx1MDAyNnZpZi1cdTAwM2V3ZGV2LCB3bWktXHUwMDNlbGFzdF9tZ210X3R4X2Nvb2tpZSxcbiBcdFx0XHRcdFx0d21pLVx1MDAzZWxhc3RfbWdtdF90eF9mcmFtZSxcbiBcdFx0XHRcdFx0d21pLVx1MDAzZWxhc3RfbWdtdF90eF9mcmFtZV9sZW4sXG4gXHRcdFx0XHRcdCEhZXYtXHUwMDNlYWNrX3N0YXR1cywgR0ZQX0FUT01JQyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmhcbmluZGV4IDhmYmVjZTNmZGFkOWYuLjg5Y2UyYWJiYjFjZGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oXG5AQCAtMTI1LDYgKzEyNSw3IEBAIHN0cnVjdCB3bWkge1xuIFxuIFx0dTggKmxhc3RfbWdtdF90eF9mcmFtZTtcbiBcdHNpemVfdCBsYXN0X21nbXRfdHhfZnJhbWVfbGVuO1xuK1x0dTY0IGxhc3RfbWdtdF90eF9jb29raWU7XG4gXHR1OCBzYXZlZF9wd3JfbW9kZTtcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9jZmc4MDIxMS5jXG5pbmRleCA1ZjJiZDlhMzFmYWY2Li45YWMzM2Q4MjdmODAxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuY1xuQEAgLTE0MzIsNyArMTQzMiw3IEBAIHN0YXRpYyBpbnQgd2lsX2NmZzgwMjExX3NldF93aXBoeV9wYXJhbXMoc3RydWN0IHdpcGh5ICp3aXBoeSwgaW50IHJhZGlvX2lkeCxcbiBcbiBpbnQgd2lsX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXG4tXHRcdFx0IHU2NCAqY29va2llKVxuK1x0XHRcdCB1NjQgY29va2llKVxuIHtcbiBcdGNvbnN0IHU4ICpidWYgPSBwYXJhbXMtXHUwMDNlYnVmO1xuIFx0c2l6ZV90IGxlbiA9IHBhcmFtcy1cdTAwM2VsZW47XG5AQCAtMTQ4OCw4ICsxNDg4LDcgQEAgaW50IHdpbF9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHQgKi9cbiBcdHR4X3N0YXR1cyA9IChyYyA9PSAwKTtcbiBcdHJjID0gKHJjID09IC1FQUdBSU4pID8gMCA6IHJjO1xuLVx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llID8gKmNvb2tpZSA6IDAsIGJ1ZiwgbGVuLFxuLVx0XHRcdFx0dHhfc3RhdHVzLCBHRlBfS0VSTkVMKTtcbitcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHR4X3N0YXR1cywgR0ZQX0tFUk5FTCk7XG4gXG4gXHRyZXR1cm4gcmM7XG4gfVxuQEAgLTE3MzUsNyArMTczNCw3IEBAIHN0YXRpYyBpbnQgd2lsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0XHQgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXG4gXHRcdFx0XHQgdW5zaWduZWQgaW50IGR1cmF0aW9uLFxuLVx0XHRcdFx0IHU2NCAqY29va2llLCBjb25zdCB1OCAqcnhfYWRkcilcbitcdFx0XHRcdCB1NjQgY29va2llLCBjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwgPSB3aXBoeV90b193aWwod2lwaHkpO1xuIFx0aW50IHJjO1xuQEAgLTIzODEsNyArMjM4MCw3IEBAIHZvaWQgd2lsX3Byb2JlX2NsaWVudF9mbHVzaChzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZilcbiBcbiBzdGF0aWMgaW50IHdpbF9jZmc4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0XHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLVx0XHRcdFx0ICAgY29uc3QgdTggKnBlZXIsIHU2NCAqY29va2llKVxuK1x0XHRcdFx0ICAgY29uc3QgdTggKnBlZXIsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsID0gd2lwaHlfdG9fd2lsKHdpcGh5KTtcbiBcdHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmID0gbmRldl90b192aWYoZGV2KTtcbkBAIC0yMzk5LDEzICsyMzk4LDEyIEBAIHN0YXRpYyBpbnQgd2lsX2NmZzgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRyZXEtXHUwMDNlY2lkID0gY2lkO1xuLVx0cmVxLVx1MDAzZWNvb2tpZSA9IGNpZDtcbitcdHJlcS1cdTAwM2Vjb29raWUgPSBjb29raWU7XG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNnZpZi1cdTAwM2Vwcm9iZV9jbGllbnRfbXV0ZXgpO1xuIFx0bGlzdF9hZGRfdGFpbChcdTAwMjZyZXEtXHUwMDNlbGlzdCwgXHUwMDI2dmlmLVx1MDAzZXByb2JlX2NsaWVudF9wZW5kaW5nKTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZ2aWYtXHUwMDNlcHJvYmVfY2xpZW50X211dGV4KTtcbiBcbi1cdCpjb29raWUgPSByZXEtXHUwMDNlY29va2llO1xuIFx0cXVldWVfd29yayh3aWwtXHUwMDNld3Ffc2VydmljZSwgXHUwMDI2dmlmLVx1MDAzZXByb2JlX2NsaWVudF93b3JrZXIpO1xuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2RlYnVnZnMuY1xuaW5kZXggYjhjYjczNmE3MTg1Mi4uZTA2ZTQ1MzIzMjcyYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2RlYnVnZnMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvZGVidWdmcy5jXG5AQCAtOTg1LDcgKzk4NSw3IEBAIHN0YXRpYyBzc2l6ZV90IHdpbF93cml0ZV9maWxlX3R4bWdtdChzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZixcbiBcdHBhcmFtcy5idWYgPSBmcmFtZTtcbiBcdHBhcmFtcy5sZW4gPSBsZW47XG4gXG4tXHRyYyA9IHdpbF9jZmc4MDIxMV9tZ210X3R4KHdpcGh5LCB3ZGV2LCBcdTAwMjZwYXJhbXMsIE5VTEwpO1xuK1x0cmMgPSB3aWxfY2ZnODAyMTFfbWdtdF90eCh3aXBoeSwgd2RldiwgXHUwMDI2cGFyYW1zLCAwKTtcbiBcbiBcdGtmcmVlKGZyYW1lKTtcbiBcdHdpbF9pbmZvKHdpbCwgXCItXHUwMDNlICVkXFxuXCIsIHJjKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9wMnAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3AycC5jXG5pbmRleCBmMjBjYWYxYTM5MDViLi5hY2Q4YTJlMzUxMDMyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvcDJwLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3AycC5jXG5AQCAtMTI0LDcgKzEyNCw3IEBAIGludCB3aWxfcDJwX3NlYXJjaChzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZixcbiBcbiBpbnQgd2lsX3AycF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0ICAgdTY0ICpjb29raWUpXG4rXHRcdCAgIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IHdpbDYyMTBfdmlmICp2aWYgPSB3ZGV2X3RvX3ZpZih3aWwsIHdkZXYpO1xuIFx0c3RydWN0IHdpbF9wMnBfaW5mbyAqcDJwID0gXHUwMDI2dmlmLVx1MDAzZXAycDtcbkBAIC0xNDQsNyArMTQ0LDcgQEAgaW50IHdpbF9wMnBfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdH1cbiBcbiBcdG1lbWNweShcdTAwMjZwMnAtXHUwMDNlbGlzdGVuX2NoYW4sIGNoYW4sIHNpemVvZigqY2hhbikpO1xuLVx0KmNvb2tpZSA9ICsrcDJwLVx1MDAzZWNvb2tpZTtcbitcdHAycC1cdTAwM2Vjb29raWUgPSBjb29raWU7XG4gXHRwMnAtXHUwMDNlbGlzdGVuX2R1cmF0aW9uID0gZHVyYXRpb247XG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNndpbC1cdTAwM2V2aWZfbXV0ZXgpO1xuQEAgLTE2Niw3ICsxNjYsNyBAQCBpbnQgd2lsX3AycF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0aWYgKHZpZi1cdTAwM2VtaWQgPT0gMClcbiBcdFx0d2lsLVx1MDAzZXJhZGlvX3dkZXYgPSB3ZGV2O1xuIFxuLVx0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCAqY29va2llLCBjaGFuLCBkdXJhdGlvbixcbitcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLCBkdXJhdGlvbixcbiBcdFx0XHRcdCAgR0ZQX0tFUk5FTCk7XG4gXG4gb3V0OlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dpbDYyMTAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dpbDYyMTAuaFxuaW5kZXggMzFlMTA3YzgxZTJkNC4uZjhlNjBiZTYzMWNhNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dpbDYyMTAuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd2lsNjIxMC5oXG5AQCAtMTMwMSw3ICsxMzAxLDcgQEAgaW50IHdpbF9wMnBfc2VhcmNoKHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmLFxuIFx0XHQgICBzdHJ1Y3QgY2ZnODAyMTFfc2Nhbl9yZXF1ZXN0ICpyZXF1ZXN0KTtcbiBpbnQgd2lsX3AycF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0ICAgdTY0ICpjb29raWUpO1xuK1x0XHQgICB1NjQgY29va2llKTtcbiB1OCB3aWxfcDJwX3N0b3BfZGlzY292ZXJ5KHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmKTtcbiBpbnQgd2lsX3AycF9jYW5jZWxfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmLCB1NjQgY29va2llKTtcbiB2b2lkIHdpbF9wMnBfbGlzdGVuX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbkBAIC0xMzE3LDcgKzEzMTcsNyBAQCBpbnQgd21pX3N0b3BfZGlzY292ZXJ5KHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmKTtcbiBcbiBpbnQgd2lsX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXG4tXHRcdFx0IHU2NCAqY29va2llKTtcbitcdFx0XHQgdTY0IGNvb2tpZSk7XG4gdm9pZCB3aWxfY2ZnODAyMTFfYXBfcmVjb3Zlcnkoc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsKTtcbiBpbnQgd2lsX2NmZzgwMjExX2lmYWNlX2NvbWJpbmF0aW9uc19mcm9tX2Z3KFxuIFx0c3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcbmluZGV4IDZiMmMzNGUzYTc5NmMuLjg3MmM0ODgwNmQwOTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcbkBAIC01NTU0LDcgKzU1NTQsNyBAQCBicmNtZl9jZmc4MDIxMV91cGRhdGVfbWdtdF9mcmFtZV9yZWdpc3RyYXRpb25zKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXG4gaW50XG4gYnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLVx0XHQgICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxuK1x0XHQgICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyA9IHdpcGh5X3RvX2NmZyh3aXBoeSk7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4gPSBwYXJhbXMtXHUwMDNlY2hhbjtcbkBAIC01NTczLDggKzU1NzMsNiBAQCBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXG4gXHRicmNtZl9kYmcoVFJBQ0UsIFwiRW50ZXJcXG5cIik7XG4gXG4tXHQqY29va2llID0gMDtcbi1cbiBcdG1nbXQgPSAoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICopYnVmO1xuIFxuIFx0aWYgKCFpZWVlODAyMTFfaXNfbWdtdChtZ210LVx1MDAzZWZyYW1lX2NvbnRyb2wpKSB7XG5AQCAtNTYwNSw3ICs1NjAzLDcgQEAgYnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0XHQgICAgQlJDTUZfVk5EUl9JRV9QUkJSU1BfRkxBRyxcbiBcdFx0XHRcdFx0ICAgIFx1MDAyNmJ1ZltpZV9vZmZzZXRdLFxuIFx0XHRcdFx0XHQgICAgaWVfbGVuKTtcbi1cdFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4rXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4gXHRcdFx0XHRcdEdGUF9LRVJORUwpO1xuIFx0fSBlbHNlIGlmIChpZWVlODAyMTFfaXNfYWN0aW9uKG1nbXQtXHUwMDNlZnJhbWVfY29udHJvbCkpIHtcbiBcdFx0aWYgKGxlbiBcdTAwM2UgQlJDTUZfRklMX0FDVElPTl9GUkFNRV9TSVpFICsgRE9UMTFfTUdNVF9IRFJfTEVOKSB7XG5AQCAtNTYyMSw3ICs1NjE5LDcgQEAgYnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHR9XG4gXHRcdGFjdGlvbl9mcmFtZSA9IFx1MDAyNmFmX3BhcmFtcy1cdTAwM2VhY3Rpb25fZnJhbWU7XG4gXHRcdC8qIEFkZCB0aGUgcGFja2V0IElkICovXG4tXHRcdGFjdGlvbl9mcmFtZS1cdTAwM2VwYWNrZXRfaWQgPSBjcHVfdG9fbGUzMigqY29va2llKTtcbitcdFx0YWN0aW9uX2ZyYW1lLVx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKGNvb2tpZSk7XG4gXHRcdC8qIEFkZCBCU1NJRCAqL1xuIFx0XHRtZW1jcHkoXHUwMDI2YWN0aW9uX2ZyYW1lLVx1MDAzZWRhWzBdLCBcdTAwMjZtZ210LVx1MDAzZWRhWzBdLCBFVEhfQUxFTik7XG4gXHRcdG1lbWNweShcdTAwMjZhZl9wYXJhbXMtXHUwMDNlYnNzaWRbMF0sIFx1MDAyNm1nbXQtXHUwMDNlYnNzaWRbMF0sIEVUSF9BTEVOKTtcbkBAIC01NjQ5LDEyICs1NjQ3LDEyIEBAIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0ICAgICAgIGxlMTZfdG9fY3B1KGFjdGlvbl9mcmFtZS1cdTAwM2VsZW4pKTtcbiBcbiBcdFx0YnJjbWZfZGJnKFRSQUNFLCBcIkFjdGlvbiBmcmFtZSwgY29va2llPSVsbGQsIGxlbj0lZCwgY2hhbm5lbD0lZFxcblwiLFxuLVx0XHRcdCAgKmNvb2tpZSwgbGUxNl90b19jcHUoYWN0aW9uX2ZyYW1lLVx1MDAzZWxlbiksXG4rXHRcdFx0ICBjb29raWUsIGxlMTZfdG9fY3B1KGFjdGlvbl9mcmFtZS1cdTAwM2VsZW4pLFxuIFx0XHRcdCAgbGUzMl90b19jcHUoYWZfcGFyYW1zLVx1MDAzZWNoYW5uZWwpKTtcbiBcbiBcdFx0YWNrID0gYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKHZpZi1cdTAwM2VpZnAsIGFmX3BhcmFtcyk7XG4gXG4tXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsICpjb29raWUsIGJ1ZiwgbGVuLCBhY2ssXG4rXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIGFjayxcbiBcdFx0XHRcdFx0R0ZQX0tFUk5FTCk7XG4gZnJlZTpcbiBcdFx0a2ZyZWUoYWZfcGFyYW1zKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oXG5pbmRleCA2Y2ViMzAxNDI5MDU0Li42M2U1MzQ1MjNmNTE4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oXG5AQCAtNDk3LDYgKzQ5Nyw2IEBAIHZvaWQgYnJjbWZfY2ZnODAyMTFfZnJlZV92aWYoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xuIFxuIGludCBicmNtZl9zZXRfd3NlYyhzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwgY29uc3QgdTggKmtleSwgdTE2IGtleV9sZW4sIHUxNiBmbGFncyk7XG4gaW50IGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0XHQgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpO1xuK1x0XHRcdCAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKTtcbiBcbiAjZW5kaWYgLyogQlJDTUZNQUNfQ0ZHODAyMTFfSCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcbmluZGV4IDg3Mzc1NGJlNTE3NGIuLjU0NWViOWFhZTk2NjAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcbkBAIC0xMDAsNyArMTAwLDcgQEAgc3RhdGljIGludCBicmNtZl9jeXdfYWN0aXZhdGVfZXZlbnRzKHN0cnVjdCBicmNtZl9pZiAqaWZwKVxuIFxuIHN0YXRpY1xuIGludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLVx0XHQgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXG4rXHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcgPSB3aXBoeV90b19jZmcod2lwaHkpO1xuIFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuID0gcGFyYW1zLVx1MDAzZWNoYW47XG5AQCAtMTIzLDcgKzEyMyw2IEBAIGludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0aWYgKCFpZWVlODAyMTFfaXNfYXV0aChtZ210LVx1MDAzZWZyYW1lX2NvbnRyb2wpKVxuIFx0XHRyZXR1cm4gYnJjbWZfY2ZnODAyMTFfbWdtdF90eCh3aXBoeSwgd2RldiwgcGFyYW1zLCBjb29raWUpO1xuIFxuLVx0KmNvb2tpZSA9IDA7XG4gXHR2aWYgPSBjb250YWluZXJfb2Yod2Rldiwgc3RydWN0IGJyY21mX2NmZzgwMjExX3ZpZiwgd2Rldik7XG4gXG4gXHRyZWluaXRfY29tcGxldGlvbihcdTAwMjZ2aWYtXHUwMDNlbWdtdF90eCk7XG5AQCAtMTU1LDcgKzE1NCw3IEBAIGludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFxuIFx0bWVtY3B5KFx1MDAyNm1mX3BhcmFtcy1cdTAwM2VkYVswXSwgXHUwMDI2bWdtdC1cdTAwM2VkYVswXSwgRVRIX0FMRU4pO1xuIFx0bWVtY3B5KFx1MDAyNm1mX3BhcmFtcy1cdTAwM2Vic3NpZFswXSwgXHUwMDI2bWdtdC1cdTAwM2Vic3NpZFswXSwgRVRIX0FMRU4pO1xuLVx0bWZfcGFyYW1zLVx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKCpjb29raWUpO1xuK1x0bWZfcGFyYW1zLVx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKGNvb2tpZSk7XG4gXHRtZW1jcHkobWZfcGFyYW1zLVx1MDAzZWRhdGEsIFx1MDAyNmJ1ZltET1QxMV9NR01UX0hEUl9MRU5dLFxuIFx0ICAgICAgIGxlMTZfdG9fY3B1KG1mX3BhcmFtcy1cdTAwM2VsZW4pKTtcbiBcbkBAIC0xODcsOCArMTg2LDcgQEAgaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHR9XG4gXG4gdHhfc3RhdHVzOlxuLVx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIGFjayxcbi1cdFx0XHRcdEdGUF9LRVJORUwpO1xuK1x0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgYWNrLCBHRlBfS0VSTkVMKTtcbiBmcmVlOlxuIFx0a2ZyZWUobWZfcGFyYW1zKTtcbiBcdHJldHVybiBlcnI7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXG5pbmRleCBjN2Q3YjM1YWIxMjUzLi4zMmEwMTVkNmI3Njk4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmNcbkBAIC05NzksMTAgKzk3OSw4IEBAIGJyY21mX3AycF9kaXNjb3Zlcl9saXN0ZW4oc3RydWN0IGJyY21mX3AycF9pbmZvICpwMnAsIHUxNiBjaGFubmVsLCB1MzIgZHVyYXRpb24pXG4gXHRwMnAtXHUwMDNlY2ZnLVx1MDAzZWQxMWluZi5lbmNjaHNwZWMoXHUwMDI2Y2gpO1xuIFx0ZXJyID0gYnJjbWZfcDJwX3NldF9kaXNjb3Zlcl9zdGF0ZSh2aWYtXHUwMDNlaWZwLCBXTF9QMlBfRElTQ19TVF9MSVNURU4sXG4gXHRcdFx0XHRcdCAgIGNoLmNoc3BlYywgKHUxNilkdXJhdGlvbik7XG4tXHRpZiAoIWVycikge1xuK1x0aWYgKCFlcnIpXG4gXHRcdHNldF9iaXQoQlJDTUZfUDJQX1NUQVRVU19ESVNDT1ZFUl9MSVNURU4sIFx1MDAyNnAycC1cdTAwM2VzdGF0dXMpO1xuLVx0XHRwMnAtXHUwMDNlcmVtYWluX29uX2NoYW5uZWxfY29va2llKys7XG4tXHR9XG4gZXhpdDpcbiBcdHJldHVybiBlcnI7XG4gfVxuQEAgLTEwMDAsNyArOTk4LDcgQEAgYnJjbWZfcDJwX2Rpc2NvdmVyX2xpc3RlbihzdHJ1Y3QgYnJjbWZfcDJwX2luZm8gKnAycCwgdTE2IGNoYW5uZWwsIHUzMiBkdXJhdGlvbilcbiAgKi9cbiBpbnQgYnJjbWZfcDJwX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW5uZWwsXG4tXHRcdFx0XHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLFxuK1x0XHRcdFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLFxuIFx0XHRcdFx0Y29uc3QgdTggKnJ4X2FkZHIpXG4ge1xuIFx0c3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyA9IHdpcGh5X3RvX2NmZyh3aXBoeSk7XG5AQCAtMTAyMCw4ICsxMDE4LDggQEAgaW50IGJyY21mX3AycF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRnb3RvIGV4aXQ7XG4gXG4gXHRtZW1jcHkoXHUwMDI2cDJwLVx1MDAzZXJlbWFpbl9vbl9jaGFubmVsLCBjaGFubmVsLCBzaXplb2YoKmNoYW5uZWwpKTtcbi1cdCpjb29raWUgPSBwMnAtXHUwMDNlcmVtYWluX29uX2NoYW5uZWxfY29va2llO1xuLVx0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCAqY29va2llLCBjaGFubmVsLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7XG4rXHRwMnAtXHUwMDNlcmVtYWluX29uX2NoYW5uZWxfY29va2llID0gY29va2llO1xuK1x0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCBjb29raWUsIGNoYW5uZWwsIGR1cmF0aW9uLCBHRlBfS0VSTkVMKTtcbiBcbiBleGl0OlxuIFx0cmV0dXJuIGVycjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmhcbmluZGV4IDlmM2YwMWFkZTJiNzcuLjcwNzgwMDk0OTE3MDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaFxuQEAgLTE1Nyw3ICsxNTcsNyBAQCBpbnQgYnJjbWZfcDJwX3NjYW5fcHJlcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV92aWYgKnZpZik7XG4gaW50IGJyY21mX3AycF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsLFxuLVx0XHRcdFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcbitcdFx0XHRcdHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSxcbiBcdFx0XHRcdGNvbnN0IHU4ICpyeF9hZGRyKTtcbiBpbnQgYnJjbWZfcDJwX25vdGlmeV9saXN0ZW5fY29tcGxldGUoc3RydWN0IGJyY21mX2lmICppZnAsXG4gXHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBicmNtZl9ldmVudF9tc2cgKmUsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY1xuaW5kZXggOGVjMmQyMmE4YzMzYS4uN2ExYmEzMmYxZmIzNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY1xuQEAgLTE5Niw3ICsxOTYsNyBAQCBtd2lmaWV4X2Zvcm1fbWdtdF9mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKVxuICAqL1xuIHN0YXRpYyBpbnRcbiBtd2lmaWV4X2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0XHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxuK1x0XHRcdCBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcbiB7XG4gXHRjb25zdCB1OCAqYnVmID0gcGFyYW1zLVx1MDAzZWJ1ZjtcbiBcdHNpemVfdCBsZW4gPSBwYXJhbXMtXHUwMDNlbGVuO1xuQEAgLTI1OSwxNCArMjU5LDEzIEBAIG13aWZpZXhfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0dHhfaW5mby1cdTAwM2Vwa3RfbGVuID0gcGt0X2xlbjtcbiBcbiBcdG13aWZpZXhfZm9ybV9tZ210X2ZyYW1lKHNrYiwgYnVmLCBsZW4pO1xuLVx0KmNvb2tpZSA9IGdldF9yYW5kb21fdTMyKCkgfCAxO1xuIFxuIFx0aWYgKGllZWU4MDIxMV9pc19hY3Rpb24obWdtdC1cdTAwM2VmcmFtZV9jb250cm9sKSlcbiBcdFx0c2tiID0gbXdpZmlleF9jbG9uZV9za2JfZm9yX3R4X3N0YXR1cyhwcml2LFxuIFx0XHRcdFx0XHRcdCAgICAgIHNrYixcbi1cdFx0XHRcdE1XSUZJRVhfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgY29va2llKTtcbitcdFx0XHRcdE1XSUZJRVhfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgXHUwMDI2Y29va2llKTtcbiBcdGVsc2Vcbi1cdFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4rXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4gXHRcdFx0XHRcdEdGUF9BVE9NSUMpO1xuIFxuIFx0bXdpZmlleF9xdWV1ZV90eF9wa3QocHJpdiwgc2tiKTtcbkBAIC0zMDQsMTMgKzMwMywxMyBAQCBzdGF0aWMgaW50XG4gbXdpZmlleF9jZmc4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0XHRcdCAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXG4rXHRcdFx0XHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXG4gXHRcdFx0XHQgICBjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2ID0gbXdpZmlleF9uZXRkZXZfZ2V0X3ByaXYod2Rldi1cdTAwM2VuZXRkZXYpO1xuIFx0aW50IHJldDtcbiBcbi1cdGlmICghY2hhbiB8fCAhY29va2llKSB7XG4rXHRpZiAoIWNoYW4pIHtcbiBcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBFUlJPUiwgXCJJbnZhbGlkIHBhcmFtZXRlciBmb3IgUk9DXFxuXCIpO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbkBAIC0zMjYsMTUgKzMyNSwxNCBAQCBtd2lmaWV4X2NmZzgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0XHRcdCBkdXJhdGlvbik7XG4gXG4gXHRpZiAoIXJldCkge1xuLVx0XHQqY29va2llID0gZ2V0X3JhbmRvbV91MzIoKSB8IDE7XG4tXHRcdHByaXYtXHUwMDNlcm9jX2NmZy5jb29raWUgPSAqY29va2llO1xuK1x0XHRwcml2LVx1MDAzZXJvY19jZmcuY29va2llID0gY29va2llO1xuIFx0XHRwcml2LVx1MDAzZXJvY19jZmcuY2hhbiA9ICpjaGFuO1xuIFxuLVx0XHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sXG4rXHRcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLFxuIFx0XHRcdFx0XHQgIGR1cmF0aW9uLCBHRlBfQVRPTUlDKTtcbiBcbiBcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBJTkZPLFxuLVx0XHRcdCAgICBcImluZm86IFJPQywgY29va2llID0gMHglbGx4XFxuXCIsICpjb29raWUpO1xuK1x0XHRcdCAgICBcImluZm86IFJPQywgY29va2llID0gMHglbGx4XFxuXCIsIGNvb2tpZSk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gcmV0O1xuQEAgLTQ1NjAsNyArNDU1OCw3IEBAIG13aWZpZXhfY2ZnODAyMTFfZGlzYXNzb2NpYXRlKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gc3RhdGljIGludFxuIG13aWZpZXhfY2ZnODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdCAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqcGVlcixcbi1cdFx0XHQgICAgdTY0ICpjb29raWUpXG4rXHRcdFx0ICAgIHU2NCBjb29raWUpXG4ge1xuIFx0LyogaG9zdGFwZCBsb29rcyBmb3IgTkw4MDIxMV9DTURfUFJPQkVfQ0xJRU5UIHN1cHBvcnQ7IG90aGVyd2lzZSxcbiBcdCAqIGl0IHJlcXVpcmVzIG1vbml0b3ItbW9kZSBzdXBwb3J0ICh3aGljaCBtd2lmaWV4IGRvZXNuJ3Qgc3VwcG9ydCkuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuY1xuaW5kZXggNjY1NGZjZTRkZWQ4NC4uYmIyNzQ4YTE5MzI5NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9jZmc4MDIxMS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuY1xuQEAgLTExMDAsMjQgKzExMDAsMTkgQEAgc3RhdGljIHZvaWQgd2lsY193ZmlfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChzdHJ1Y3Qgd2lsY192aWYgKnZpZiwgdTY0IGNvb2tpZSlcbiBzdGF0aWMgaW50IHJlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0ICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuLVx0XHRcdCAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcbitcdFx0XHQgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSxcbiBcdFx0XHQgICAgIGNvbnN0IHU4ICpyeF9hZGRyKVxuIHtcbiBcdGludCByZXQgPSAwO1xuIFx0c3RydWN0IHdpbGNfdmlmICp2aWYgPSBuZXRkZXZfcHJpdih3ZGV2LVx1MDAzZW5ldGRldik7XG4gXHRzdHJ1Y3Qgd2lsY19wcml2ICpwcml2ID0gXHUwMDI2dmlmLVx1MDAzZXByaXY7XG4tXHR1NjQgaWQ7XG4gXG4gXHRpZiAod2Rldi1cdTAwM2VpZnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVApIHtcbiBcdFx0bmV0ZGV2X2RiZyh2aWYtXHUwMDNlbmRldiwgXCJSZXF1aXJlZCB3aGlsZSBpbiBBUCBtb2RlXFxuXCIpO1xuIFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuIFxuLVx0aWQgPSArK3ByaXYtXHUwMDNlaW5jX3JvY19jb29raWU7XG4tXHRpZiAoaWQgPT0gMClcbi1cdFx0aWQgPSArK3ByaXYtXHUwMDNlaW5jX3JvY19jb29raWU7XG4tXG4tXHRyZXQgPSB3aWxjX3JlbWFpbl9vbl9jaGFubmVsKHZpZiwgaWQsIGNoYW4tXHUwMDNlaHdfdmFsdWUsXG4rXHRyZXQgPSB3aWxjX3JlbWFpbl9vbl9jaGFubmVsKHZpZiwgY29va2llLCBjaGFuLVx1MDAzZWh3X3ZhbHVlLFxuIFx0XHRcdFx0ICAgICB3aWxjX3dmaV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG5AQCAtMTEyNSwxMiArMTEyMCwxMSBAQCBzdGF0aWMgaW50IHJlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHR2aWYtXHUwMDNld2lsYy1cdTAwM2VvcF9jaCA9IGNoYW4tXHUwMDNlaHdfdmFsdWU7XG4gXG4gXHRwcml2LVx1MDAzZXJlbWFpbl9vbl9jaF9wYXJhbXMubGlzdGVuX2NoID0gY2hhbjtcbi1cdHByaXYtXHUwMDNlcmVtYWluX29uX2NoX3BhcmFtcy5saXN0ZW5fY29va2llID0gaWQ7XG4tXHQqY29va2llID0gaWQ7XG4rXHRwcml2LVx1MDAzZXJlbWFpbl9vbl9jaF9wYXJhbXMubGlzdGVuX2Nvb2tpZSA9IGNvb2tpZTtcbiBcdHByaXYtXHUwMDNlcDJwX2xpc3Rlbl9zdGF0ZSA9IHRydWU7XG4gXHRwcml2LVx1MDAzZXJlbWFpbl9vbl9jaF9wYXJhbXMubGlzdGVuX2R1cmF0aW9uID0gZHVyYXRpb247XG4gXG4tXHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sIGR1cmF0aW9uLCBHRlBfS0VSTkVMKTtcbitcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7XG4gXHRtb2RfdGltZXIoXHUwMDI2dmlmLVx1MDAzZWhpZl9kcnYtXHUwMDNlcmVtYWluX29uX2NoX3RpbWVyLFxuIFx0XHQgIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKGR1cmF0aW9uICsgMTAwMCkpO1xuIFxuQEAgLTExNTMsNyArMTE0Nyw3IEBAIHN0YXRpYyBpbnQgY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gc3RhdGljIGludCBtZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdCAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdCAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLFxuLVx0XHQgICB1NjQgKmNvb2tpZSlcbitcdFx0ICAgdTY0IGNvb2tpZSlcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4gPSBwYXJhbXMtXHUwMDNlY2hhbjtcbiBcdHVuc2lnbmVkIGludCB3YWl0ID0gcGFyYW1zLVx1MDAzZXdhaXQ7XG5AQCAtMTE3MCw4ICsxMTY0LDcgQEAgc3RhdGljIGludCBtZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRjb25zdCB1OCAqdmVuZG9yX2llO1xuIFx0aW50IHJldCA9IDA7XG4gXG4tXHQqY29va2llID0gZ2V0X3JhbmRvbV91MzIoKTtcbi1cdHByaXYtXHUwMDNldHhfY29va2llID0gKmNvb2tpZTtcbitcdHByaXYtXHUwMDNldHhfY29va2llID0gY29va2llO1xuIFx0bWdtdCA9IChjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilidWY7XG4gXG4gXHRpZiAoIWllZWU4MDIxMV9pc19tZ210KG1nbXQtXHUwMDNlZnJhbWVfY29udHJvbCkpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmNcbmluZGV4IDRmOWUyMGY3MjgxMTQuLmM4MjBmMDhkMjgzNTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXG5AQCAtMTUwLDcgKzE1MCw3IEBAIG54cHdpZmlfZm9ybV9tZ210X2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pXG4gLyogY2ZnODAyMTEgb3BlcmF0aW9uIGhhbmRsZXIgdG8gdHJhbnNtaXQgYSBtYW5hZ2VtZW50IGZyYW1lLiAqL1xuIHN0YXRpYyBpbnRcbiBueHB3aWZpX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0XHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxuK1x0XHRcdCBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcbiB7XG4gXHRjb25zdCB1OCAqYnVmID0gcGFyYW1zLVx1MDAzZWJ1ZjtcbiBcdHNpemVfdCBsZW4gPSBwYXJhbXMtXHUwMDNlbGVuO1xuQEAgLTIxMiwxNCArMjEyLDEzIEBAIG54cHdpZmlfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0dHhfaW5mby1cdTAwM2Vwa3RfbGVuID0gcGt0X2xlbjtcbiBcbiBcdG54cHdpZmlfZm9ybV9tZ210X2ZyYW1lKHNrYiwgYnVmLCBsZW4pO1xuLVx0KmNvb2tpZSA9IG54cHdpZmlfcm9jX2Nvb2tpZShwcml2LVx1MDAzZWFkYXB0ZXIpO1xuIFxuIFx0aWYgKGllZWU4MDIxMV9pc19hY3Rpb24obWdtdC1cdTAwM2VmcmFtZV9jb250cm9sKSlcbiBcdFx0c2tiID0gbnhwd2lmaV9jbG9uZV9za2JfZm9yX3R4X3N0YXR1cyhwcml2LFxuIFx0XHRcdFx0XHRcdCAgICAgIHNrYixcbi1cdFx0XHRcdE5YUFdJRklfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgY29va2llKTtcbitcdFx0XHRcdE5YUFdJRklfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgXHUwMDI2Y29va2llKTtcbiBcdGVsc2Vcbi1cdFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4rXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4gXHRcdFx0XHRcdEdGUF9BVE9NSUMpO1xuIFxuIFx0bnhwd2lmaV9xdWV1ZV90eF9wa3QocHJpdiwgc2tiKTtcbkBAIC0yNTQsMTQgKzI1MywxNCBAQCBzdGF0aWMgaW50XG4gbnhwd2lmaV9jZmc4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0XHRcdCAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXG4rXHRcdFx0XHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXG4gXHRcdFx0XHQgICBjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2ID0gbnhwd2lmaV9uZXRkZXZfZ2V0X3ByaXYod2Rldi1cdTAwM2VuZXRkZXYpO1xuIFx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbiBcdGludCByZXQ7XG4gXG4tXHRpZiAoIWNoYW4gfHwgIWNvb2tpZSkge1xuK1x0aWYgKCFjaGFuKSB7XG4gXHRcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLCBcIkludmFsaWQgcGFyYW1ldGVyIGZvciBST0NcXG5cIik7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuQEAgLTI3NywxNSArMjc2LDE0IEBAIG54cHdpZmlfY2ZnODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdFx0IGR1cmF0aW9uKTtcbiBcbiBcdGlmICghcmV0KSB7XG4tXHRcdCpjb29raWUgPSBueHB3aWZpX3JvY19jb29raWUoYWRhcHRlcik7XG4tXHRcdHByaXYtXHUwMDNlcm9jX2NmZy5jb29raWUgPSAqY29va2llO1xuK1x0XHRwcml2LVx1MDAzZXJvY19jZmcuY29va2llID0gY29va2llO1xuIFx0XHRwcml2LVx1MDAzZXJvY19jZmcuY2hhbiA9ICpjaGFuO1xuIFxuLVx0XHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sXG4rXHRcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLFxuIFx0XHRcdFx0XHQgIGR1cmF0aW9uLCBHRlBfQVRPTUlDKTtcbiBcbiBcdFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgSU5GTyxcbi1cdFx0XHQgICAgXCJpbmZvOiBST0MsIGNvb2tpZSA9IDB4JWxseFxcblwiLCAqY29va2llKTtcbitcdFx0XHQgICAgXCJpbmZvOiBST0MsIGNvb2tpZSA9IDB4JWxseFxcblwiLCBjb29raWUpO1xuIFx0fVxuIFxuIFx0cmV0dXJuIHJldDtcbkBAIC0zNjE4LDcgKzM2MTYsNyBAQCBueHB3aWZpX2NmZzgwMjExX2Rpc2Fzc29jaWF0ZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIHN0YXRpYyBpbnRcbiBueHB3aWZpX2NmZzgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHQgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqcGVlcixcbi1cdFx0XHQgICAgICB1NjQgKmNvb2tpZSlcbitcdFx0XHQgICAgICB1NjQgY29va2llKVxuIHtcbiBcdC8qXG4gXHQgKiBob3N0YXBkIGxvb2tzIGZvciBOTDgwMjExX0NNRF9QUk9CRV9DTElFTlQgc3VwcG9ydDsgb3RoZXJ3aXNlLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9jZmc4MDIxMS5jXG5pbmRleCA5ZTQ0Yzg1ZDIwNTFjLi40NWUyYjdhZTk2MzMzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY2ZnODAyMTEuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY2ZnODAyMTEuY1xuQEAgLTQ0Niw3ICs0NDYsNyBAQCBxdG5mX3VwZGF0ZV9tZ210X2ZyYW1lX3JlZ2lzdHJhdGlvbnMoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcbiBzdGF0aWMgaW50XG4gcXRuZl9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tXHQgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcbitcdCAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IHF0bmZfdmlmICp2aWYgPSBxdG5mX25ldGRldl9nZXRfcHJpdih3ZGV2LVx1MDAzZW5ldGRldik7XG4gXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXRfZnJhbWUgPSAodm9pZCAqKXBhcmFtcy1cdTAwM2VidWY7XG5AQCAtNDU0LDggKzQ1NCw2IEBAIHF0bmZfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0dTE2IGZsYWdzID0gMDtcbiBcdHUxNiBmcmVxO1xuIFxuLVx0KmNvb2tpZSA9IHNob3J0X2Nvb2tpZTtcbi1cbiBcdGlmIChwYXJhbXMtXHUwMDNlb2ZmY2hhbilcbiBcdFx0ZmxhZ3MgfD0gUUxJTktfRlJBTUVfVFhfRkxBR19PRkZDSEFOO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL2lvY3RsX2NmZzgwMjExLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9pb2N0bF9jZmc4MDIxMS5jXG5pbmRleCA2YTk3YWZkODlkYzc4Li5iNThkZGExMjlmZjY2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvaW9jdGxfY2ZnODAyMTEuY1xuKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvaW9jdGxfY2ZnODAyMTEuY1xuQEAgLTI1MzAsNyArMjUzMCw3IEBAIHN0YXRpYyBpbnQgX2NmZzgwMjExX3J0d19tZ210X3R4KHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdTggdHhfY2gsIGNvbnN0IHU4ICpiXG4gXG4gc3RhdGljIGludCBjZmc4MDIxMV9ydHdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0c3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXG4tXHRcdFx0XHR1NjQgKmNvb2tpZSlcbitcdFx0XHRcdHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSB3ZGV2X3RvX25kZXYod2Rldik7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4gPSBwYXJhbXMtXHUwMDNlY2hhbjtcbkBAIC0yNTUyLDExICsyNTUyLDggQEAgc3RhdGljIGludCBjZmc4MDIxMV9ydHdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFxuIFx0cGFkYXB0ZXIgPSBydHdfbmV0ZGV2X3ByaXYobmRldik7XG4gXG4tXHQvKiBjb29raWUgZ2VuZXJhdGlvbiAqL1xuLVx0KmNvb2tpZSA9ICh1bnNpZ25lZCBsb25nKWJ1Zjtcbi1cbiBcdC8qIGluZGljYXRlIGFjayBiZWZvcmUgaXNzdWUgZnJhbWUgdG8gYXZvaWQgcmFjaW5nIHdpdGggcnNwIGZyYW1lICovXG4tXHRydHdfY2ZnODAyMTFfbWdtdF90eF9zdGF0dXMocGFkYXB0ZXIsICpjb29raWUsIGJ1ZiwgbGVuLCBhY2ssIEdGUF9LRVJORUwpO1xuK1x0cnR3X2NmZzgwMjExX21nbXRfdHhfc3RhdHVzKHBhZGFwdGVyLCBjb29raWUsIGJ1ZiwgbGVuLCBhY2ssIEdGUF9LRVJORUwpO1xuIFxuIFx0aWYgKCFydHdfYWN0aW9uX2ZyYW1lX3BhcnNlKGJ1ZiwgbGVuLCBcdTAwMjZjYXRlZ29yeSwgXHUwMDI2YWN0aW9uKSlcbiBcdFx0Z290byBleGl0O1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2NmZzgwMjExLmggYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oXG5pbmRleCBkY2JiMGU1NWMzMmVjLi45N2MxNmQ0ZmYxMjcxIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxuKysrIGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxuQEAgLTUxMDgsNyArNTEwOCw4IEBAIHN0cnVjdCBtZ210X2ZyYW1lX3JlZ3Mge1xuICAqIEB0ZGxzX29wZXI6IFBlcmZvcm0gYSBoaWdoLWxldmVsIFRETFMgb3BlcmF0aW9uIChlLmcuIFRETFMgbGluayBzZXR1cCkuXG4gICpcbiAgKiBAcHJvYmVfcGVlcjogcHJvYmUgYSBjb25uZWN0ZWQgcGVlciAoQVA6IFNUQSBNQUMgcmVxdWlyZWQ7IFNUQTogbm8gTUFDKSxcbi0gKlx0bXVzdCByZXR1cm4gYSBjb29raWUgdGhhdCBpcyBsYXRlciBwYXNzZWQgdG8gY2ZnODAyMTFfcHJvYmVfc3RhdHVzKCkuXG4rICpcdG11c3QgdXNlIHRoZSBAY29va2llIGFzIHByb3ZpZGVkIHdoaWNoIGlzIGxhdGVyIHBhc3NlZCB0b1xuKyAqXHRjZmc4MDIxMV9wcm9iZV9zdGF0dXMoKS5cbiAgKlxuICAqIEBzZXRfbm9hY2tfbWFwOiBTZXQgdGhlIE5vQWNrIE1hcCBmb3IgdGhlIFRJRHMuXG4gICpcbkBAIC01MjE5LDcgKzUyMjAsOCBAQCBzdHJ1Y3QgbWdtdF9mcmFtZV9yZWdzIHtcbiAgKiAgICAgdXNlciBzcGFjZVxuICAqXG4gICogQHR4X2NvbnRyb2xfcG9ydDogVFggYSBjb250cm9sIHBvcnQgZnJhbWUgKEVBUG9MKS4gIFRoZSBub2VuY3J5cHQgcGFyYW1ldGVyXG4tICpcdHRlbGxzIHRoZSBkcml2ZXIgdGhhdCB0aGUgZnJhbWUgc2hvdWxkIG5vdCBiZSBlbmNyeXB0ZWQuXG4rICpcdHRlbGxzIHRoZSBkcml2ZXIgdGhhdCB0aGUgZnJhbWUgc2hvdWxkIG5vdCBiZSBlbmNyeXB0ZWQuIEEgQGNvb2tpZVxuKyAqXHR2YWx1ZSBvZiAwIG1lYW5zIHRoZSBjYWxsZXIgZG9lcyBub3Qgd2FudCBUWCBzdGF0dXMgcmVwb3J0aW5nLlxuICAqXG4gICogQGdldF9mdG1fcmVzcG9uZGVyX3N0YXRzOiBSZXRyaWV2ZSBGVE0gcmVzcG9uZGVyIHN0YXRpc3RpY3MsIGlmIGF2YWlsYWJsZS5cbiAgKlx0U3RhdGlzdGljcyBzaG91bGQgYmUgY3VtdWxhdGl2ZSwgY3VycmVudGx5IG5vIHdheSB0byByZXNldCBpcyBwcm92aWRlZC5cbkBAIC01NDU2LDE0ICs1NDU4LDE0IEBAIHN0cnVjdCBjZmc4MDIxMV9vcHMge1xuIFx0XHRcdFx0ICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXG4gXHRcdFx0XHQgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbixcbi1cdFx0XHRcdCAgICAgdTY0ICpjb29raWUsIGNvbnN0IHU4ICpyeF9hZGRyKTtcbitcdFx0XHRcdCAgICAgdTY0IGNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpO1xuIFx0aW50XHQoKmNhbmNlbF9yZW1haW5fb25fY2hhbm5lbCkoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdFx0ICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHRcdCAgICB1NjQgY29va2llKTtcbiBcbiBcdGludFx0KCptZ210X3R4KShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdCAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLFxuLVx0XHRcdCAgIHU2NCAqY29va2llKTtcbitcdFx0XHQgICB1NjQgY29va2llKTtcbiBcdGludFx0KCptZ210X3R4X2NhbmNlbF93YWl0KShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICAgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHQgICAgICAgdTY0IGNvb2tpZSk7XG5AQCAtNTUxMCw3ICs1NTEyLDcgQEAgc3RydWN0IGNmZzgwMjExX29wcyB7XG4gXHRcdFx0ICAgICBjb25zdCB1OCAqcGVlciwgZW51bSBubDgwMjExX3RkbHNfb3BlcmF0aW9uIG9wZXIpO1xuIFxuIFx0aW50XHQoKnByb2JlX3BlZXIpKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tXHRcdFx0ICAgICAgY29uc3QgdTggKnBlZXIsIHU2NCAqY29va2llKTtcbitcdFx0XHQgICAgICBjb25zdCB1OCAqcGVlciwgdTY0IGNvb2tpZSk7XG4gXG4gXHRpbnRcdCgqc2V0X25vYWNrX21hcCkoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdCAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbkBAIC01NjA4LDcgKzU2MTAsNyBAQCBzdHJ1Y3QgY2ZnODAyMTFfb3BzIHtcbiBcdFx0XHRcdCAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sXG4gXHRcdFx0XHQgICBjb25zdCB1OCAqZGVzdCwgY29uc3QgX19iZTE2IHByb3RvLFxuIFx0XHRcdFx0ICAgY29uc3QgYm9vbCBub2VuY3J5cHQsIGludCBsaW5rX2lkLFxuLVx0XHRcdFx0ICAgdTY0ICpjb29raWUpO1xuK1x0XHRcdFx0ICAgdTY0IGNvb2tpZSk7XG4gXG4gXHRpbnRcdCgqZ2V0X2Z0bV9yZXNwb25kZXJfc3RhdHMpKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9jZmcuYyBiL25ldC9tYWM4MDIxMS9jZmcuY1xuaW5kZXggMGE5MjQ3YmUyNmFmYS4uMGMyYzdhZmQ1OWM0YSAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9jZmcuY1xuKysrIGIvbmV0L21hYzgwMjExL2NmZy5jXG5AQCAtNDgzMSwxOSArNDgzMSw2IEBAIGludCBpZWVlODAyMTFfY2hhbm5lbF9zd2l0Y2goc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdHJldHVybiBfX2llZWU4MDIxMV9jaGFubmVsX3N3aXRjaCh3aXBoeSwgZGV2LCBwYXJhbXMpO1xuIH1cbiBcbi11NjQgaWVlZTgwMjExX21nbXRfdHhfY29va2llKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuLXtcbi1cdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGxvY2FsLVx1MDAzZWh3LndpcGh5KTtcbi1cbi1cdGxvY2FsLVx1MDAzZXJvY19jb29raWVfY291bnRlcisrO1xuLVxuLVx0Lyogd293LCB5b3Ugd3JhcHBlZCA2NCBiaXRzIC4uLiBtb3JlIGxpa2VseSBhIGJ1ZyAqL1xuLVx0aWYgKFdBUk5fT04obG9jYWwtXHUwMDNlcm9jX2Nvb2tpZV9jb3VudGVyID09IDApKVxuLVx0XHRsb2NhbC1cdTAwM2Vyb2NfY29va2llX2NvdW50ZXIrKztcbi1cbi1cdHJldHVybiBsb2NhbC1cdTAwM2Vyb2NfY29va2llX2NvdW50ZXI7XG4tfVxuLVxuIGludCBpZWVlODAyMTFfYXR0YWNoX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICAgICB1NjQgKmNvb2tpZSwgZ2ZwX3QgZ2ZwKVxuIHtcbkBAIC00ODY4LDcgKzQ4NTUsNiBAQCBpbnQgaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0SUVFRTgwMjExX1NLQl9DQihza2IpLVx1MDAzZXN0YXR1c19kYXRhX2lkciA9IDE7XG4gXHRJRUVFODAyMTFfU0tCX0NCKHNrYiktXHUwMDNlc3RhdHVzX2RhdGEgPSBpZDtcbiBcbi1cdCpjb29raWUgPSBpZWVlODAyMTFfbWdtdF90eF9jb29raWUobG9jYWwpO1xuIFx0SUVFRTgwMjExX1NLQl9DQihhY2tfc2tiKS1cdTAwM2VhY2suY29va2llID0gKmNvb2tpZTtcbiBcbiBcdHJldHVybiAwO1xuQEAgLTQ5NTQsNyArNDk0MCw3IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF9yZWtleV9kYXRhKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gfVxuIFxuIHN0YXRpYyBpbnQgaWVlZTgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi1cdFx0XHRcdGNvbnN0IHU4ICpwZWVyLCB1NjQgKmNvb2tpZSlcbitcdFx0XHRcdGNvbnN0IHU4ICpwZWVyLCB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcbiBcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5AQCAtNTA2MSw3ICs1MDQ3LDcgQEAgc3RhdGljIGludCBpZWVlODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0aWYgKHFvcylcbiBcdFx0bnVsbGZ1bmMtXHUwMDNlcW9zX2N0cmwgPSBjcHVfdG9fbGUxNig3KTtcbiBcbi1cdHJldCA9IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihsb2NhbCwgc2tiLCBjb29raWUsIEdGUF9BVE9NSUMpO1xuK1x0cmV0ID0gaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKGxvY2FsLCBza2IsIFx1MDAyNmNvb2tpZSwgR0ZQX0FUT01JQyk7XG4gXHRpZiAocmV0KSB7XG4gXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gcmV0O1xuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oIGIvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmhcbmluZGV4IGExZWY4OGZlODQ2ZGQuLjU3NjFlOTYyMTQ5MTQgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxuKysrIGIvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmhcbkBAIC0xNzEwLDggKzE3MTAsNiBAQCBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsIHtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgcm9jX2xpc3Q7XG4gXHRzdHJ1Y3Qgd2lwaHlfd29yayBod19yb2Nfc3RhcnQsIGh3X3JvY19kb25lO1xuIFx0dW5zaWduZWQgbG9uZyBod19yb2Nfc3RhcnRfdGltZTtcbi1cdHU2NCByb2NfY29va2llX2NvdW50ZXI7XG4tXG4gXHRzdHJ1Y3QgaWRyIGFja19zdGF0dXNfZnJhbWVzO1xuIFx0c3BpbmxvY2tfdCBhY2tfc3RhdHVzX2xvY2s7XG4gXG5AQCAtMTk5MSw3ICsxOTg5LDYgQEAgdTY0IGllZWU4MDIxMV9yZXNldF9lcnBfaW5mbyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XG4gXG4gdm9pZCBpZWVlODAyMTFfaGFuZGxlX3F1ZXVlZF9mcmFtZXMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpO1xuIFxuLXU2NCBpZWVlODAyMTFfbWdtdF90eF9jb29raWUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpO1xuIGludCBpZWVlODAyMTFfYXR0YWNoX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICAgICB1NjQgKmNvb2tpZSwgZ2ZwX3QgZ2ZwKTtcbiBcbkBAIC0yMTUzLDEyICsyMTUwLDEyIEBAIHZvaWQgaWVlZTgwMjExX3JvY19wdXJnZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdFx0XHQgc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpO1xuIGludCBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0XHRcdHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXG4rXHRcdFx0XHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXG4gXHRcdFx0XHRjb25zdCB1OCAqcnhfYWRkcik7XG4gaW50IGllZWU4MDIxMV9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdCAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LCB1NjQgY29va2llKTtcbiBpbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKTtcbitcdFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpO1xuIGludCBpZWVlODAyMTFfbWdtdF90eF9jYW5jZWxfd2FpdChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LCB1NjQgY29va2llKTtcbiBcbkBAIC0yMjM3LDcgKzIyMzQsNyBAQCB2b2lkIF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRcdCAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgdTMyIGluZm9fZmxhZ3MsXG4gXHRcdFx0XHQgIHUzMiBjdHJsX2ZsYWdzLFxuLVx0XHRcdFx0ICB1NjQgKmNvb2tpZSk7XG4rXHRcdFx0XHQgIHU2NCBjb29raWUpO1xuIHN0cnVjdCBza19idWZmICpcbiBpZWVlODAyMTFfYnVpbGRfZGF0YV90ZW1wbGF0ZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mb19mbGFncyk7XG5AQCAtMjI1MSw3ICsyMjQ4LDcgQEAgdm9pZCBpZWVlODAyMTFfY2xlYXJfZmFzdF94bWl0KHN0cnVjdCBzdGFfaW5mbyAqc3RhKTtcbiBpbnQgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdCAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sXG4gXHRcdFx0ICAgICAgY29uc3QgdTggKmRlc3QsIF9fYmUxNiBwcm90bywgYm9vbCB1bmVuY3J5cHRlZCxcbi1cdFx0XHQgICAgICBpbnQgbGlua19pZCwgdTY0ICpjb29raWUpO1xuK1x0XHRcdCAgICAgIGludCBsaW5rX2lkLCB1NjQgY29va2llKTtcbiBpbnQgaWVlZTgwMjExX3Byb2JlX21lc2hfbGluayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdCAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pO1xuIHZvaWQgX19pZWVlODAyMTFfeG1pdF9mYXN0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMgYi9uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jXG5pbmRleCAyYmNlYjczNzE3YzY2Li43YWNlZjgwZDVmMWZiIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL29mZmNoYW5uZWwuY1xuKysrIGIvbmV0L21hYzgwMjExL29mZmNoYW5uZWwuY1xuQEAgLTYwMiwxNCArNjAyLDEyIEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuIFxuIFx0LypcbiBcdCAqIGNvb2tpZSBpcyBlaXRoZXIgdGhlIHJvYyBjb29raWUgKGZvciBub3JtYWwgcm9jKVxuLVx0ICogb3IgdGhlIFNLQiAoZm9yIG1nbXQgVFgpXG4rXHQgKiBvciB0aGUgbWdtdF90eCBjb29raWU7IGJvdGggYXJlIHByZS1hc3NpZ25lZCBieSBjZmc4MDIxMVxuIFx0ICovXG4tXHRpZiAoIXR4c2tiKSB7XG4tXHRcdHJvYy1cdTAwM2Vjb29raWUgPSBpZWVlODAyMTFfbWdtdF90eF9jb29raWUobG9jYWwpO1xuLVx0XHQqY29va2llID0gcm9jLVx1MDAzZWNvb2tpZTtcbi1cdH0gZWxzZSB7XG4rXHRpZiAoIXR4c2tiKVxuK1x0XHRyb2MtXHUwMDNlY29va2llID0gKmNvb2tpZTtcbitcdGVsc2VcbiBcdFx0cm9jLVx1MDAzZW1nbXRfdHhfY29va2llID0gKmNvb2tpZTtcbi1cdH1cbiBcbiBcdHJlcSA9IHdpcGh5X2RlcmVmZXJlbmNlKGxvY2FsLVx1MDAzZWh3LndpcGh5LCBsb2NhbC1cdTAwM2VzY2FuX3JlcSk7XG4gXG5AQCAtNzA0LDcgKzcwMiw3IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuIFxuIGludCBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0XHRcdHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXG4rXHRcdFx0XHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXG4gXHRcdFx0XHRjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTtcbkBAIC03MTMsNyArNzExLDcgQEAgaW50IGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkobG9jYWwtXHUwMDNlaHcud2lwaHkpO1xuIFxuIFx0cmV0dXJuIGllZWU4MDIxMV9zdGFydF9yb2Nfd29yayhsb2NhbCwgc2RhdGEsIGNoYW4sXG4tXHRcdFx0XHRcdGR1cmF0aW9uLCBjb29raWUsIE5VTEwsXG4rXHRcdFx0XHRcdGR1cmF0aW9uLCBcdTAwMjZjb29raWUsIE5VTEwsXG4gXHRcdFx0XHRcdElFRUU4MDIxMV9ST0NfVFlQRV9OT1JNQUwpO1xuIH1cbiBcbkBAIC04MTAsNyArODA4LDcgQEAgaW50IGllZWU4MDIxMV9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiB9XG4gXG4gaW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tXHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcbitcdFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfV0RFVl9UT19TVUJfSUYod2Rldik7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xuQEAgLTEwMTYsMTggKzEwMTQsMTEgQEAgaW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdC8qIG1ha2UgYSBjb3B5IHRvIHByZXNlcnZlIHRoZSBmcmFtZSBjb250ZW50c1xuIFx0XHQgKiBpbiBjYXNlIG9mIGVuY3J5cHRpb24uXG4gXHRcdCAqL1xuLVx0XHRyZXQgPSBpZWVlODAyMTFfYXR0YWNoX2Fja19za2IobG9jYWwsIHNrYiwgY29va2llLCBHRlBfS0VSTkVMKTtcbitcdFx0cmV0ID0gaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKGxvY2FsLCBza2IsIFx1MDAyNmNvb2tpZSwgR0ZQX0tFUk5FTCk7XG4gXHRcdGlmIChyZXQpIHtcbiBcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXHRcdH1cbi1cdH0gZWxzZSB7XG4tXHRcdC8qIEFzc2lnbiBhIGR1bW15IG5vbi16ZXJvIGNvb2tpZSwgaXQncyBub3Qgc2VudCB0b1xuLVx0XHQgKiB1c2Vyc3BhY2UgaW4gdGhpcyBjYXNlIGJ1dCB3ZSByZWx5IG9uIGl0cyB2YWx1ZVxuLVx0XHQgKiBpbnRlcm5hbGx5IGluIHRoZSBuZWVkX29mZmNoYW4gY2FzZSB0byBkaXN0aW5ndWlzaFxuLVx0XHQgKiBtZ210LXR4IGZyb20gcmVtYWluLW9uLWNoYW5uZWwuXG4tXHRcdCAqL1xuLVx0XHQqY29va2llID0gMHhmZmZmZmZmZjtcbiBcdH1cbiBcbiBcdGlmICghbmVlZF9vZmZjaGFuKSB7XG5AQCAtMTA0NCw3ICsxMDM1LDcgQEAgaW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXG4gXHQvKiBUaGlzIHdpbGwgaGFuZGxlIGFsbCBraW5kcyBvZiBjb2FsZXNjaW5nIGFuZCBpbW1lZGlhdGUgVFggKi9cbiBcdHJldCA9IGllZWU4MDIxMV9zdGFydF9yb2Nfd29yayhsb2NhbCwgc2RhdGEsIHBhcmFtcy1cdTAwM2VjaGFuLFxuLVx0XHRcdFx0ICAgICAgIHBhcmFtcy1cdTAwM2V3YWl0LCBjb29raWUsIHNrYixcbitcdFx0XHRcdCAgICAgICBwYXJhbXMtXHUwMDNld2FpdCwgXHUwMDI2Y29va2llLCBza2IsXG4gXHRcdFx0XHQgICAgICAgSUVFRTgwMjExX1JPQ19UWVBFX01HTVRfVFgpO1xuIFx0aWYgKHJldClcbiBcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3RkbHMuYyBiL25ldC9tYWM4MDIxMS90ZGxzLmNcbmluZGV4IGZmZDU3NWE4ZDE4OGYuLmRjMmY2NjJmZTRjNDYgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvdGRscy5jXG4rKysgYi9uZXQvbWFjODAyMTEvdGRscy5jXG5AQCAtMTEyMSw3ICsxMTIxLDcgQEAgaWVlZTgwMjExX3RkbHNfcHJlcF9tZ210X3BhY2tldChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0LyogZGlzYWJsZSBib3R0b20gaGFsdmVzIHdoZW4gZW50ZXJpbmcgdGhlIFR4IHBhdGggKi9cbiBcdGxvY2FsX2JoX2Rpc2FibGUoKTtcbiBcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIGZsYWdzLFxuLVx0XHRcdFx0ICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsIE5VTEwpO1xuK1x0XHRcdFx0ICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsIDApO1xuIFx0bG9jYWxfYmhfZW5hYmxlKCk7XG4gXG4gXHRyZXR1cm4gcmV0O1xuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS90eC5jIGIvbmV0L21hYzgwMjExL3R4LmNcbmluZGV4IDBjZjVmNmVjNzVlNjcuLjQ1NGE4NzJiMjU5YTMgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvdHguY1xuKysrIGIvbmV0L21hYzgwMjExL3R4LmNcbkBAIC0yNTgzLDcgKzI1ODMsNyBAQCBpbnQgaWVlZTgwMjExX2xvb2t1cF9yYV9zdGEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gc3RhdGljIHUxNiBpZWVlODAyMTFfc3RvcmVfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdFx0XHRcdCAgIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHQgICB1MzIgKmluZm9fZmxhZ3MsXG4tXHRcdFx0XHQgICB1NjQgKmNvb2tpZSlcbitcdFx0XHRcdCAgIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IHNrX2J1ZmYgKmFja19za2I7XG4gXHR1MTYgaW5mb19pZCA9IDA7XG5AQCAtMjYwNSwxMCArMjYwNSw4IEBAIHN0YXRpYyB1MTYgaWVlZTgwMjExX3N0b3JlX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4gXHRcdGlmIChpZCBcdTAwM2U9IDApIHtcbiBcdFx0XHRpbmZvX2lkID0gaWQ7XG4gXHRcdFx0KmluZm9fZmxhZ3MgfD0gSUVFRTgwMjExX1RYX0NUTF9SRVFfVFhfU1RBVFVTO1xuLVx0XHRcdGlmIChjb29raWUpIHtcbi1cdFx0XHRcdCpjb29raWUgPSBpZWVlODAyMTFfbWdtdF90eF9jb29raWUobG9jYWwpO1xuLVx0XHRcdFx0SUVFRTgwMjExX1NLQl9DQihhY2tfc2tiKS1cdTAwM2VhY2suY29va2llID0gKmNvb2tpZTtcbi1cdFx0XHR9XG4rXHRcdFx0aWYgKGNvb2tpZSlcbitcdFx0XHRcdElFRUU4MDIxMV9TS0JfQ0IoYWNrX3NrYiktXHUwMDNlYWNrLmNvb2tpZSA9IGNvb2tpZTtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRrZnJlZV9za2IoYWNrX3NrYik7XG4gXHRcdH1cbkBAIC0yNjUzLDcgKzI2NTEsNyBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfcmVtb3ZlX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHUxNiBpbmZvX2lkKVxuIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX2J1aWxkX2hkcihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcdFx0XHRcdFx0ICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIGluZm9fZmxhZ3MsXG4gXHRcdFx0XHRcdCAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1MzIgY3RybF9mbGFncyxcbi1cdFx0XHRcdFx0ICAgdTY0ICpjb29raWUpXG4rXHRcdFx0XHRcdCAgIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbiBcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbztcbkBAIC00Mzc0LDcgKzQzNzIsNyBAQCB2b2lkIF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRcdCAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgdTMyIGluZm9fZmxhZ3MsXG4gXHRcdFx0XHQgIHUzMiBjdHJsX2ZsYWdzLFxuLVx0XHRcdFx0ICB1NjQgKmNvb2tpZSlcbitcdFx0XHRcdCAgdTY0IGNvb2tpZSlcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xuQEAgLTQ1NjksNyArNDU2Nyw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbG9fbXVsdGljYXN0X3R4X29uZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcdFx0cmV0dXJuO1xuIFxuIFx0Y3RybF9mbGFncyB8PSB1MzJfZW5jb2RlX2JpdHMobGlua19pZCwgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTkspO1xuLVx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChvdXQsIHNkYXRhLVx1MDAzZWRldiwgMCwgY3RybF9mbGFncywgTlVMTCk7XG4rXHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KG91dCwgc2RhdGEtXHUwMDNlZGV2LCAwLCBjdHJsX2ZsYWdzLCAwKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgaWVlZTgwMjExX21sb19tdWx0aWNhc3RfdHgoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbkBAIC00NTg0LDggKzQ1ODIsNyBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfbWxvX211bHRpY2FzdF90eChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRjdHJsX2ZsYWdzIHw9IHUzMl9lbmNvZGVfYml0cyhfX2ZmcyhsaW5rcyksXG4gXHRcdFx0XHRcdCAgICAgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LKTtcbiBcbi1cdFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIHNkYXRhLVx1MDAzZWRldiwgMCwgY3RybF9mbGFncyxcbi1cdFx0XHRcdFx0ICAgICBOVUxMKTtcbitcdFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIHNkYXRhLVx1MDAzZWRldiwgMCwgY3RybF9mbGFncywgMCk7XG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbkBAIC00NjI3LDcgKzQ2MjQsNyBAQCBuZXRkZXZfdHhfdCBpZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHR3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUoXHUwMDI2cXVldWUpKSlcbiBcdFx0XHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgZGV2LCAwLFxuIFx0XHRcdFx0XHRcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLFxuLVx0XHRcdFx0XHRcdCAgICAgTlVMTCk7XG4rXHRcdFx0XHRcdFx0ICAgICAwKTtcbiBcdH0gZWxzZSBpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgKChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICAhaWVlZTgwMjExX2h3X2NoZWNrKFx1MDAyNnNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZWh3LCBNTE9fTUNBU1RfTVVMVElfTElOS19UWCkpIHx8XG5AQCAtNDYzOCw3ICs0NjM1LDcgQEAgbmV0ZGV2X3R4X3QgaWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBub3JtYWw6XG4gXHRcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIDAsXG4gXHRcdFx0XHRcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLFxuLVx0XHRcdFx0XHQgICAgIE5VTEwpO1xuK1x0XHRcdFx0XHQgICAgIDApO1xuIFx0fVxuIFxuIFx0cmV0dXJuIE5FVERFVl9UWF9PSztcbkBAIC00NzM3LDcgKzQ3MzQsNyBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfODAyM194bWl0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIFx0XHRcdC8qIGZhbGwgYmFjayB0byBub24tb2ZmbG9hZCBzbG93IHBhdGggKi9cbiBcdFx0XHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgZGV2LCAwLFxuIFx0XHRcdFx0XHRcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLFxuLVx0XHRcdFx0XHRcdCAgICAgTlVMTCk7XG4rXHRcdFx0XHRcdFx0ICAgICAwKTtcbiBcdFx0XHRyZXR1cm47XG4gXHRcdH1cbiBcbkBAIC00NzczLDcgKzQ3NzAsNyBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfODAyM194bWl0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIFxuIFx0aWYgKHVubGlrZWx5KHNrX3JlcXVlc3RzX3dpZmlfc3RhdHVzKHNrYi1cdTAwM2VzaykpKSB7XG4gXHRcdGluZm8tXHUwMDNlc3RhdHVzX2RhdGEgPSBpZWVlODAyMTFfc3RvcmVfYWNrX3NrYihsb2NhbCwgc2tiLFxuLVx0XHRcdFx0XHRcdFx0ICAgIFx1MDAyNmluZm8tXHUwMDNlZmxhZ3MsIE5VTEwpO1xuK1x0XHRcdFx0XHRcdFx0ICAgIFx1MDAyNmluZm8tXHUwMDNlZmxhZ3MsIDApO1xuIFx0XHRpZiAoaW5mby1cdTAwM2VzdGF0dXNfZGF0YSlcbiBcdFx0XHRpbmZvLVx1MDAzZXN0YXR1c19kYXRhX2lkciA9IDE7XG4gXHR9XG5AQCAtNDkxNiw3ICs0OTEzLDcgQEAgaWVlZTgwMjExX2J1aWxkX2RhdGFfdGVtcGxhdGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXHR9XG4gXG4gXHRza2IgPSBpZWVlODAyMTFfYnVpbGRfaGRyKHNkYXRhLCBza2IsIGluZm9fZmxhZ3MsIHN0YSxcbi1cdFx0XHRcdCAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLCBOVUxMKTtcbitcdFx0XHRcdCAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLCAwKTtcbiBcdGlmIChJU19FUlIoc2tiKSlcbiBcdFx0Z290byBvdXQ7XG4gXG5AQCAtNjUzMSw3ICs2NTI4LDcgQEAgdm9pZCBpZWVlODAyMTFfdHhfc2tiX3RpZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBpbnQgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdCAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sXG4gXHRcdFx0ICAgICAgY29uc3QgdTggKmRlc3QsIF9fYmUxNiBwcm90bywgYm9vbCB1bmVuY3J5cHRlZCxcbi1cdFx0XHQgICAgICBpbnQgbGlua19pZCwgdTY0ICpjb29raWUpXG4rXHRcdFx0ICAgICAgaW50IGxpbmtfaWQsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xuIFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbkBAIC02NjY2LDcgKzY2NjMsNyBAQCBpbnQgaWVlZTgwMjExX3Byb2JlX21lc2hfbGluayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0bG9jYWxfYmhfZGlzYWJsZSgpO1xuIFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIHNrYi1cdTAwM2VkZXYsIDAsXG4gXHRcdFx0XHQgICAgIElFRUU4MDIxMV9UWF9DVFJMX1NLSVBfTVBBVEhfTE9PS1VQLFxuLVx0XHRcdFx0ICAgICBOVUxMKTtcbitcdFx0XHRcdCAgICAgMCk7XG4gXHRsb2NhbF9iaF9lbmFibGUoKTtcbiBcbiBcdHJldHVybiAwO1xuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9jb3JlLmggYi9uZXQvd2lyZWxlc3MvY29yZS5oXG5pbmRleCAxNWQ5ZjdlYjU4YjRkLi5iNDYxMGY2Njg1ZGNiIDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL2NvcmUuaFxuKysrIGIvbmV0L3dpcmVsZXNzL2NvcmUuaFxuQEAgLTQwMiw3ICs0MDIsNyBAQCB2b2lkIGNmZzgwMjExX21sbWVfcHVyZ2VfcmVnaXN0cmF0aW9ucyhzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2KTtcbiBpbnQgY2ZnODAyMTFfbWxtZV9tZ210X3R4KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdFx0XHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0ICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcyxcbi1cdFx0XHQgIHU2NCAqY29va2llKTtcbitcdFx0XHQgIHU2NCBjb29raWUpO1xuIHZvaWQgY2ZnODAyMTFfb3Blcl9hbmRfaHRfY2FwYShzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCAqaHRfY2FwYSxcbiBcdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9odF9jYXAgKmh0X2NhcGFfbWFzayk7XG4gdm9pZCBjZmc4MDIxMV9vcGVyX2FuZF92aHRfY2FwYShzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXBhLFxuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9tbG1lLmMgYi9uZXQvd2lyZWxlc3MvbWxtZS5jXG5pbmRleCA3ODI0YjdhYzI3NzBmLi5hMGQxY2RlMjZmMGM5IDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL21sbWUuY1xuKysrIGIvbmV0L3dpcmVsZXNzL21sbWUuY1xuQEAgLTg5NCw3ICs4OTQsNyBAQCBzdGF0aWMgYm9vbCBjZmc4MDIxMV9hbGxvd2VkX3JhbmRvbV9hZGRyZXNzKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXG4gaW50IGNmZzgwMjExX21sbWVfbWdtdF90eChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4gXHRcdFx0ICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLVx0XHRcdCAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxuK1x0XHRcdCAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xuIFx0dTE2IHN0eXBlO1xuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9ubDgwMjExLmMgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG5pbmRleCA4YWRiZWY1ZjA0NDI1Li5hYzg5NWUwMmNkNDExIDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xuKysrIGIvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xuQEAgLTE0NjQyLDggKzE0NjQyLDkgQEAgc3RhdGljIGludCBubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdGdvdG8gZnJlZV9tc2c7XG4gXHR9XG4gXG4rXHRjb29raWUgPSBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpO1xuIFx0ZXJyID0gcmRldl9yZW1haW5fb25fY2hhbm5lbChyZGV2LCB3ZGV2LCBjaGFuZGVmLmNoYW4sXG4tXHRcdFx0XHQgICAgIGR1cmF0aW9uLCBcdTAwMjZjb29raWUsIHJ4X2FkZHIpO1xuK1x0XHRcdFx0ICAgICBkdXJhdGlvbiwgY29va2llLCByeF9hZGRyKTtcbiBcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZnJlZV9tc2c7XG5AQCAtMTQ4ODMsNyArMTQ4ODQsOCBAQCBzdGF0aWMgaW50IG5sODAyMTFfdHhfbWdtdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIFx0fVxuIFxuIFx0cGFyYW1zLmNoYW4gPSBjaGFuZGVmLmNoYW47XG4tXHRlcnIgPSBjZmc4MDIxMV9tbG1lX21nbXRfdHgocmRldiwgd2RldiwgXHUwMDI2cGFyYW1zLCBcdTAwMjZjb29raWUpO1xuK1x0Y29va2llID0gY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcbitcdGVyciA9IGNmZzgwMjExX21sbWVfbWdtdF90eChyZGV2LCB3ZGV2LCBcdTAwMjZwYXJhbXMsIGNvb2tpZSk7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGZyZWVfbXNnO1xuIFxuQEAgLTE2MzcxLDcgKzE2MzczLDggQEAgc3RhdGljIGludCBubDgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiBcdFx0Z290byBmcmVlX21zZztcbiBcdH1cbiBcbi1cdGVyciA9IHJkZXZfcHJvYmVfcGVlcihyZGV2LCBkZXYsIGFkZHIsIFx1MDAyNmNvb2tpZSk7XG4rXHRjb29raWUgPSBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpO1xuK1x0ZXJyID0gcmRldl9wcm9iZV9wZWVyKHJkZXYsIGRldiwgYWRkciwgY29va2llKTtcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZnJlZV9tc2c7XG4gXG5AQCAtMTg1ODYsMTAgKzE4NTg5LDExIEBAIHN0YXRpYyBpbnQgbmw4MDIxMV90eF9jb250cm9sX3BvcnQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiBcbiBcdGxpbmtfaWQgPSBubDgwMjExX2xpbmtfaWRfb3JfaW52YWxpZChpbmZvLVx1MDAzZWF0dHJzKTtcbiBcbitcdGNvb2tpZSA9IGRvbnRfd2FpdF9mb3JfYWNrID8gMCA6IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7XG4gXHRlcnIgPSByZGV2X3R4X2NvbnRyb2xfcG9ydChyZGV2LCBkZXYsIGJ1ZiwgbGVuLFxuIFx0XHRcdFx0ICAgZGVzdCwgY3B1X3RvX2JlMTYocHJvdG8pLCBub2VuY3J5cHQsIGxpbmtfaWQsXG4tXHRcdFx0XHQgICBkb250X3dhaXRfZm9yX2FjayA/IE5VTEwgOiBcdTAwMjZjb29raWUpO1xuLVx0aWYgKCFlcnIgXHUwMDI2XHUwMDI2ICFkb250X3dhaXRfZm9yX2FjaylcbitcdFx0XHRcdCAgIGNvb2tpZSk7XG4rXHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgY29va2llKVxuIFx0XHRubF9zZXRfZXh0YWNrX2Nvb2tpZV91NjQoaW5mby1cdTAwM2VleHRhY2ssIGNvb2tpZSk7XG4gXHRyZXR1cm4gZXJyO1xuIH1cbkBAIC0yMjA0Miw2ICsyMjA0NiwxMCBAQCBzdGF0aWMgdm9pZCBubDgwMjExX2ZyYW1lX3R4X3N0YXR1cyhzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0c3RydWN0IHNrX2J1ZmYgKm1zZztcbiBcdHZvaWQgKmhkcjtcbiBcbitcdC8qIHVzZXJzcGFjZSBub3QgaW50ZXJlc3RlZCBpbiB6ZXJvLWNvb2tpZSBzdGF0dXMgKi9cbitcdGlmICghc3RhdHVzLVx1MDAzZWNvb2tpZSlcbitcdFx0cmV0dXJuO1xuK1xuIFx0aWYgKGNvbW1hbmQgPT0gTkw4MDIxMV9DTURfRlJBTUVfVFhfU1RBVFVTKVxuIFx0XHR0cmFjZV9jZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBzdGF0dXMtXHUwMDNlY29va2llLFxuIFx0XHRcdFx0XHQgICAgICBzdGF0dXMtXHUwMDNlYWNrKTtcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3MvcmRldi1vcHMuaCBiL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oXG5pbmRleCA2YzNiYWQ4YjJkNmY2Li40Njg0OWZlOGQwYjM5IDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL3JkZXYtb3BzLmhcbisrKyBiL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oXG5AQCAtNzM2LDE0ICs3MzYsMTQgQEAgc3RhdGljIGlubGluZSBpbnRcbiByZGV2X3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdFx0ICAgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXG4tXHRcdCAgICAgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLCBjb25zdCB1OCAqcnhfYWRkcilcbitcdFx0ICAgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpXG4ge1xuIFx0aW50IHJldDtcbiBcdHRyYWNlX3JkZXZfcmVtYWluX29uX2NoYW5uZWwoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgd2RldiwgY2hhbiwgZHVyYXRpb24sXG4gXHRcdFx0XHQgICAgIHJ4X2FkZHIpO1xuIFx0cmV0ID0gcmRldi1cdTAwM2VvcHMtXHUwMDNlcmVtYWluX29uX2NoYW5uZWwoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgd2RldiwgY2hhbixcbiBcdFx0XHRcdFx0ICAgZHVyYXRpb24sIGNvb2tpZSwgcnhfYWRkcik7XG4tXHR0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHJldCwgKmNvb2tpZSk7XG4rXHR0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHJldCwgY29va2llKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTc2MSwxMiArNzYxLDEyIEBAIHJkZXZfY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBzdGF0aWMgaW5saW5lIGludCByZGV2X21nbXRfdHgoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuIFx0XHRcdCAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdCAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcyxcbi1cdFx0XHQgICAgICAgdTY0ICpjb29raWUpXG4rXHRcdFx0ICAgICAgIHU2NCBjb29raWUpXG4ge1xuIFx0aW50IHJldDtcbiBcdHRyYWNlX3JkZXZfbWdtdF90eChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCB3ZGV2LCBwYXJhbXMpO1xuIFx0cmV0ID0gcmRldi1cdTAwM2VvcHMtXHUwMDNlbWdtdF90eChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCB3ZGV2LCBwYXJhbXMsIGNvb2tpZSk7XG4tXHR0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHJldCwgKmNvb2tpZSk7XG4rXHR0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHJldCwgY29va2llKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTc3NSw3ICs3NzUsNyBAQCBzdGF0aWMgaW5saW5lIGludCByZGV2X3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4gXHRcdFx0XHQgICAgICAgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgbGVuLFxuIFx0XHRcdFx0ICAgICAgIGNvbnN0IHU4ICpkZXN0LCBfX2JlMTYgcHJvdG8sXG4gXHRcdFx0XHQgICAgICAgY29uc3QgYm9vbCBub2VuY3J5cHQsIGludCBsaW5rLFxuLVx0XHRcdFx0ICAgICAgIHU2NCAqY29va2llKVxuK1x0XHRcdFx0ICAgICAgIHU2NCBjb29raWUpXG4ge1xuIFx0aW50IHJldDtcbiBcdHRyYWNlX3JkZXZfdHhfY29udHJvbF9wb3J0KFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIGRldiwgYnVmLCBsZW4sXG5AQCAtNzgzLDcgKzc4Myw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJkZXZfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdHJldCA9IHJkZXYtXHUwMDNlb3BzLVx1MDAzZXR4X2NvbnRyb2xfcG9ydChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCBkZXYsIGJ1ZiwgbGVuLFxuIFx0XHRcdFx0XHQgZGVzdCwgcHJvdG8sIG5vZW5jcnlwdCwgbGluaywgY29va2llKTtcbiBcdGlmIChjb29raWUpXG4tXHRcdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgcmV0LCAqY29va2llKTtcbitcdFx0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCByZXQsIGNvb2tpZSk7XG4gXHRlbHNlXG4gXHRcdHRyYWNlX3JkZXZfcmV0dXJuX2ludChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCByZXQpO1xuIFx0cmV0dXJuIHJldDtcbkBAIC05NTAsMTIgKzk1MCwxMiBAQCBzdGF0aWMgaW5saW5lIGludCByZGV2X3RkbHNfb3BlcihzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4gXG4gc3RhdGljIGlubGluZSBpbnQgcmRldl9wcm9iZV9wZWVyKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdFx0XHRcdCAgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKnBlZXIsXG4tXHRcdFx0XHQgIHU2NCAqY29va2llKVxuK1x0XHRcdFx0ICB1NjQgY29va2llKVxuIHtcbiBcdGludCByZXQ7XG4gXHR0cmFjZV9yZGV2X3Byb2JlX3BlZXIoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgZGV2LCBwZWVyKTtcbiBcdHJldCA9IHJkZXYtXHUwMDNlb3BzLVx1MDAzZXByb2JlX3BlZXIoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgZGV2LCBwZWVyLCBjb29raWUpO1xuLVx0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCByZXQsICpjb29raWUpO1xuK1x0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCByZXQsIGNvb2tpZSk7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIyOjM4LjAwMjc0ODk0M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg2NjQ4NTQ1NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ29va2llIEhhbmRsaW5nIFJlZmFjdG9yIGluIGNmZzgwMjExL21hYzgwMjExKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgbG9va3MgbGlrZSBhIGZhaXJseSBzaWduaWZpY2FudCBjaGFuZ2UgdG8gaG93IGNvb2tpZXMgYXJlIGhhbmRsZWQgaW4gc2V2ZXJhbCBjZmc4MDIxMS9tYWM4MDIxMSBmdW5jdGlvbnMuIFNwZWNpZmljYWxseSwgdGhleSdyZSBtb3ZpbmcgZnJvbSBwYXNzaW5nIGEgYHU2NCAqY29va2llYCAoYSBwb2ludGVyIHRvIGEgY29va2llKSB0byBhIGB1NjQgY29va2llYCAocGFzc2luZyB0aGUgY29va2llIGJ5IHZhbHVlKSBpbiBzZXZlcmFsIGtleSBmdW5jdGlvbnMuIEZ1bmN0aW9ucyBhZmZlY3RlZCBpbmNsdWRlIGByZW1haW5fb25fY2hhbm5lbGAsIGBtZ210X3R4YCwgYHByb2JlX3BlZXJgLCBhbmQgYHR4X2NvbnRyb2xfcG9ydGAuXG5cblRoZSBjaGFuZ2VzIGFyZSBxdWl0ZSB3aWRlc3ByZWFkOyB0aGUgcGF0Y2ggdG91Y2hlcyBhIGJ1bmNoIG9mIGRyaXZlcnM6IGF0aDZrbCwgd2lsNjIxMCwgYnJjbWZtYWMsIG13aWZpZXgsIHdpbGMxMDAwLCBueHB3aWZpLCBxdG5mbWFjLCBydGw4NzIzYnMsIGFuZCBhbHNvIHRoZSBjb3JlIGBjZmc4MDIxMS5oYCwgbWFjODAyMTEgKGNmZy5jLCBvZmZjaGFubmVsLmMsIHRkbHMuYywgdHguYyksIGFuZCB3aXJlbGVzcyBjb3JlIGhlYWRlcnMuIFRoZSBmaWxlcyBpbmNsdWRlIGBjb3JlLmhgLCBgbWxtZS5jYCwgYG5sODAyMTEuY2AsIGFuZCBgcmRldi1vcHMuaGAuXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseSBub3QganVzdCBhIGNvc21ldGljIG9uZSwgYmVjYXVzZSBpdCBmdW5kYW1lbnRhbGx5IGFsdGVycyBob3cgY29va2llcyBhcmUgZ2VuZXJhdGVkIGFuZCBwYXNzZWQgYXJvdW5kLiBUaGUgb2xkIHdheSwgdGhlIGRyaXZlcnMgb3IgbWFjODAyMTEgd291bGQgZ2VuZXJhdGUgdGhlIGNvb2tpZSBhbmQgdGhlbiB1c2UgdGhlIHBvaW50ZXIgdG8gc2VuZCBpdCBiYWNrLiBUaGUgbmV3IHdheT8gYG5sODAyMTFgIGlzIG5vdyByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyB0aGUgY29va2llIHVzaW5nIGBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpYCBhbmQgdGhlbiBwYXNzaW5nIGl0IGJ5IHZhbHVlIHRvIHRoZSBkcml2ZXJzL21hYzgwMjExLlxuXG5XYWl0IGEgc2Vjb25kLCBsZXQgbWUganVzdCBwYXVzZSBhbmQgcXVpY2tseSBjaGVjayBzb21ldGhpbmcuIGBjZmc4MDIxMV9hc3NpZ25fY29va2llYC4uLiBpcyB0aGF0IGEgYnJhbmQgbmV3IGZ1bmN0aW9uPyBJIHNob3VsZCBwcm9iYWJseSB0YWtlIGEgbG9vayBhdCBpdCB0byBzZWUgaG93IGl0IHdvcmtzLiBMZXQncyBkbyBhIHF1aWNrIGdyZXAgZm9yIGBjZmc4MDIxMV9hc3NpZ25fY29va2llYCB0byBtYWtlIHN1cmUgaXQgZXhpc3RzLCBhbmQgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUuIEl0J3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGNvcmUgaGVscGVyIGZ1bmN0aW9ucyBvcGVyYXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzcwOSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIyOjQ2LjY2NzYxNzQ5NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTUyMTcyMDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNmZzgwMjExX2Fzc2lnbl9jb29raWVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL2NvcmUuaD0xMzc9Y2ZnODAyMTFfcmRldl9mcmVlX3dvd2xhbihzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYpXFxuLS1cXG5uZXQvd2lyZWxlc3MvY29yZS5oLTE1NS1cXG5uZXQvd2lyZWxlc3MvY29yZS5oOjE1NjpzdGF0aWMgaW5saW5lIHU2NCBjZmc4MDIxMV9hc3NpZ25fY29va2llKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldilcXG5uZXQvd2lyZWxlc3MvY29yZS5oLTE1Ny17XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTExOTUyPXN0YXRpYyBpbnQgbmw4MDIxMV9zdGFydF9zY2hlZF9zY2FuKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTExOTgxLVxcdGlmICh3YW50X211bHRpIFxcdTAwMjZcXHUwMDI2IHJkZXYtXFx1MDAzZXdpcGh5Lm1heF9zY2hlZF9zY2FuX3JlcXMgXFx1MDAzZSAxKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTE5ODI6XFx0XFx0c2NoZWRfc2Nhbl9yZXEtXFx1MDAzZXJlcWlkID0gY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTExOTgzLVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xNDU3MD1zdGF0aWMgaW50IG5sODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTQ2NDQtXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxNDY0NTpcXHRjb29raWUgPSBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpO1xcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTQ2NDYtXFx0ZXJyID0gcmRldl9yZW1haW5fb25fY2hhbm5lbChyZGV2LCB3ZGV2LCBjaGFuZGVmLmNoYW4sXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE0NzY0PXN0YXRpYyBpbnQgbmw4MDIxMV90eF9tZ210KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0ODg2LVxcdHBhcmFtcy5jaGFuID0gY2hhbmRlZi5jaGFuO1xcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTQ4ODc6XFx0Y29va2llID0gY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0ODg4LVxcdGVyciA9IGNmZzgwMjExX21sbWVfbWdtdF90eChyZGV2LCB3ZGV2LCBcXHUwMDI2cGFyYW1zLCBjb29raWUpO1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xNjMyOD1zdGF0aWMgaW50IG5sODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNjM3NS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE2Mzc2OlxcdGNvb2tpZSA9IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNjM3Ny1cXHRlcnIgPSByZGV2X3Byb2JlX3BlZXIocmRldiwgZGV2LCBhZGRyLCBjb29raWUpO1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xNjgwNj1zdGF0aWMgaW50IG5sODAyMTFfbmFuX2FkZF9mdW5jKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE2ODM2LVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTY4Mzc6XFx0ZnVuYy1cXHUwMDNlY29va2llID0gY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE2ODM4LVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xODUzNj1zdGF0aWMgaW50IG5sODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE4NTkxLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTg1OTI6XFx0Y29va2llID0gZG9udF93YWl0X2Zvcl9hY2sgPyAwIDogY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE4NTkzLVxcdGVyciA9IHJkZXZfdHhfY29udHJvbF9wb3J0KHJkZXYsIGRldiwgYnVmLCBsZW4sXFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jPTQxND1pbnQgbmw4MDIxMV9wbXNyX3N0YXJ0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jLTUyMS1cXHR9XFxubmV0L3dpcmVsZXNzL3Btc3IuYzo1MjI6XFx0cmVxLVxcdTAwM2Vjb29raWUgPSBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpO1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtNTIzLVxcdHJlcS1cXHUwMDNlbmxfcG9ydGlkID0gaW5mby1cXHUwMDNlc25kX3BvcnRpZDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjI6NDkuMjE5Nzk0MTU2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU3OTAwNzQxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXaXJlbGVzcyBTdGFjayBBUEkgQ2hhbmdlIFJldmlldyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBoaXR0aW5nIHRoZSBjb3JlIG9mIHRoZSB3aXJlbGVzcyBzdGFjaywgc3BlY2lmaWNhbGx5IHRoZSBgY2ZnODAyMTFgIGFuZCBgbWFjODAyMTFgIEFQSXMgZm9yIGByZW1haW5fb25fY2hhbm5lbGAsIGBtZ210X3R4YCwgYHByb2JlX3BlZXJgLCBhbmQgYHR4X2NvbnRyb2xfcG9ydGAuIFRoYXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGNvc21ldGljIG9uZSwgbWVhbmluZyBpdCdzIGhvdyB3ZSBoYW5kbGUgY29va2llcyBhbmQgcGFzcyB0aGVtIHVwIHRvIHVzZXJzcGFjZS4gRGVmaW5pdGVseSwgZnV6emluZyBpcyBnb2luZyB0byBiZSBjcnVjaWFsIGhlcmUgdG8gZW5zdXJlIHdlIGhhdmVuJ3QgaW50cm9kdWNlZCBhbnkgdnVsbmVyYWJpbGl0aWVzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgY2hhbmdlcy5cblxuVGhlIGtleSBzeW1ib2xzIHRvIGtlZXAgYW4gZXllIG9uIGFyZSB0aGUgYG5sODAyMTFfKmAgYW5kIGBpZWVlODAyMTFfKmAgdmFyaWF0aW9ucyBvZiB0aG9zZSBmdW5jdGlvbnMuIFRoZXkncmUgdGhlIGVudHJ5IHBvaW50cyBmcm9tIG5ldGxpbmsgYW5kIHRoZSBjb3JlIG1hYzgwMjExIHN0YWNrLCByZXNwZWN0aXZlbHkuIFdlIG5lZWQgdG8gYmUgZXNwZWNpYWxseSBtaW5kZnVsIG9mIHRoZSBpbnRlcmFjdGlvbnMgYW5kIGNvb2tpZSBoYW5kbGluZyBiZXR3ZWVuIHRoZXNlIHBvaW50cy5cblxuQXMgZm9yIGNvbmZpZ3VyYXRpb24sIGBDT05GSUdfTUFDODAyMTFgIGFuZCBgQ09ORklHX0NGRzgwMjExYCBhcmUgdGhlIG9idmlvdXMgb25lcy4gQmV5b25kIHRoYXQsIHdoaWxlIGBDT05GSUdfTkw4MDIxMV9URVNUTU9ERWAgbWlnaHQgcHJvdmlkZSBzb21lIHVzZWZ1bCBkZWJ1Z2dpbmcgY2FwYWJpbGl0aWVzLCBpdCdzIG5vdCBzdHJpY3RseSByZXF1aXJlZCBmb3IgdGhlc2UgY29yZSBubDgwMjExIGNvbW1hbmRzLiBOb3csIHRoaXMgaXMgaW50ZXJlc3RpbmcuLi5RRU1VIGNhbiBlbXVsYXRlIGBtYWM4MDIxMV9od3NpbWAuIFRoYXQgbWFrZXMgdGVzdGluZyBhIGxvdCBlYXNpZXIuIFNvLCB0byBlbnN1cmUgYSBzb2xpZCB0ZXN0aW5nIGVudmlyb25tZW50LCB3ZSBhYnNvbHV0ZWx5IG5lZWQgYENPTkZJR19NQUM4MDIxMV9IV1NJTWAgZW5hYmxlZC4gVGhhdCB3aWxsIGdpdmUgdXMgYSBjb250cm9sbGVkIGVudmlyb25tZW50IHRvIHB1dCB0aGUgcGF0Y2ggdGhyb3VnaCBpdHMgcGFjZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1OTY0LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIyOjU1Ljc5ODgwNDUxOFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTg3OTM4Nzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxMV9IV1NJTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIyOjU4LjM4Njc1MTY4N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NDY0OTE0NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIE1BQzgwMjExX0hXU0lNIEtjb25maWcgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZGVwZW5kZW5jaWVzIG9mIGBNQUM4MDIxMV9IV1NJTWAuIFRpbWUgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWdgLiBJIGtub3cgdGhpcyBpcyB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIHZpcnR1YWwgaGFyZHdhcmUgc2ltdWxhdGlvbiByZXNpZGUuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIHN0YW5kYXJkIGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzIGluIHRoZXJlLiBJJ20gbG9va2luZyBmb3IgY2x1ZXMgYWJvdXQgb3RoZXIgZmVhdHVyZXMgb3IgZHJpdmVycyBpdCBtaWdodCBiZSBsaW5rZWQgdG8uIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgd2hhdCBmZWF0dXJlcyBpdCBlbmFibGVzIGFuZCBwb3RlbnRpYWxseSB3aGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGJlY29tZSByZWxldmFudC4gVGhpcyBpcyBhIGNvbW1vbiBmaXJzdCBzdGVwIHdoZW4gaW52ZXN0aWdhdGluZyBob3cgYSBjb21wbGV4IGZlYXR1cmUgbGlrZSBgTUFDODAyMTFfSFdTSU1gIGludGVncmF0ZXMgd2l0aCB0aGUgd2lkZXIga2VybmVsIG5ldHdvcmsgc3RhY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NzQ3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjM6MDIuMDMzMjQ1MjhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTc2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHRjb25maWcgTUFDODAyMTFfSFdTSU1cXG4gICAyOlxcdFxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxMVxcXCJcXG4gICAzOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gICA0OlxcdFxcdGhlbHBcXG4gICA1OlxcdFxcdCAgVGhpcyBkcml2ZXIgaXMgYSBkZXZlbG9wZXIgdGVzdGluZyB0b29sIHRoYXQgY2FuIGJlIHVzZWQgdG8gdGVzdFxcbiAgIDY6XFx0XFx0ICBJRUVFIDgwMi4xMSBuZXR3b3JraW5nIHN0YWNrIChtYWM4MDIxMSkgZnVuY3Rpb25hbGl0eS4gVGhpcyBpcyBub3RcXG4gICA3OlxcdFxcdCAgbmVlZGVkIGZvciBub3JtYWwgd2lyZWxlc3MgTEFOIHVzYWdlIGFuZCBpcyBvbmx5IGZvciB0ZXN0aW5nLiBTZWVcXG4gICA4OlxcdFxcdCAgRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL21hYzgwMjExX2h3c2ltIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvd1xcbiAgIDk6XFx0XFx0ICB0byB1c2UgdGhpcyB0b29sLlxcbiAgMTA6XFx0XFxuICAxMTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZVxcbiAgMTI6XFx0XFx0ICBjYWxsZWQgbWFjODAyMTFfaHdzaW0uICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgMTM6XFx0XFxuICAxNDpcXHRjb25maWcgVklSVF9XSUZJXFxuICAxNTpcXHRcXHR0cmlzdGF0ZSBcXFwiV2lmaSB3cmFwcGVyIGZvciBldGhlcm5ldCBkcml2ZXJzXFxcIlxcbiAgMTY6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBUaGlzIG9wdGlvbiBhZGRzIHN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbm5lY3Rpb25zIHRvIGFwcGVhciBhcyBpZiB0aGV5XFxuICAxOTpcXHRcXHQgIGFyZSB3aWZpIGNvbm5lY3Rpb25zIHRocm91Z2ggYSBzcGVjaWFsIHJ0bmV0bGluayBkZXZpY2UuXFxuICAyMDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjM6MDIuMDMzMzEyNjkxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY0NDYxMzIzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgV2lyZWxlc3MgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSBzZWUgdGhlIGRlcGVuZGVuY3kgY2hhaW46IGBNQUM4MDIxMV9IV1NJTWAgcmVsaWVzIG9uIGBNQUM4MDIxMWAsIHdoaWNoIGluIHR1cm4gcmVsaWVzIG9uIGBDRkc4MDIxMWAuIFRoYXQgbWVhbnMgZm9yIHRoaXMgdG8gd29yaywgSSdsbCBuZWVkIHRvIGVuc3VyZSBhbGwgdGhyZWUgYXJlIGVuYWJsZWQ6IGBDRkc4MDIxMWAsIGBNQUM4MDIxMWAsIGFuZCBgTUFDODAyMTFfSFdTSU1gLiBUaGF0J3MgdGhlIGJhc2VsaW5lLlxuXG5Ob3csIGxldCdzIGRpZyBhIGxpdHRsZSBkZWVwZXIuIFRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIGNvcmUgb2YgYGNmZzgwMjExYCBhbmQgYG1hYzgwMjExYCwgd2hpY2ggbWFrZXMgbWUgdGhpbmsgaXQncyBmdW5jdGlvbmFsLiBUaGVzZSBjaGFuZ2VzIGFyZSBkZWZpbml0ZWx5IGFjY2Vzc2libGUgdGhyb3VnaCBgbmw4MDIxMWAsIHdoaWNoIGlzIHByb21pc2luZy4gVGhlIGZhY3QgdGhhdCB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIHZhcmlvdXMgZHJpdmVycyBpcyBjb25jZXJuaW5nIGJlY2F1c2UgSSBjYW4ndCBwb3NzaWJseSB0ZXN0IHRoZW0gYWxsIGluIGEgUUVNVSBlbnZpcm9ubWVudC4gSG93ZXZlciwgdGhlIHVzZSBvZiBgbWFjODAyMTFfaHdzaW1gIGlzIGEgc21hcnQgbW92ZS4gSXQgc2hvdWxkIGV4ZXJjaXNlIHRoZSBgbWFjODAyMTFgIGFuZCBgY2ZnODAyMTFgIHBhdGhzLCB3aGljaCBhcmUgdGhlIHByaW1hcnkgZm9jdXMgb2YgdGhpcy5cblxuVG8gbWFrZSBzdXJlIEknbSBmb2xsb3dpbmcgZXZlcnl0aGluZywgSSBuZWVkIHRvIGZvY3VzIG9uIHRoZXNlIHN5bWJvbHM6IGBubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsYCwgYG5sODAyMTFfdHhfbWdtdGAsIGBubDgwMjExX3Byb2JlX3BlZXJgLCBgbmw4MDIxMV90eF9jb250cm9sX3BvcnRgLCBgY2ZnODAyMTFfbWxtZV9tZ210X3R4YCwgYGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbGAsIGBpZWVlODAyMTFfbWdtdF90eGAsIGBpZWVlODAyMTFfcHJvYmVfcGVlcmAsIGFuZCBgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydGAuIEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFuZCB0aGUgbmFtZXMgYXJlIGNvcnJlY3QuIEknbGwgbmVlZCB0byBnbyBiYWNrIGFuZCB2ZXJpZnkgYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzMxNCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIzOjA4LjY3NzkyOTUyOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ0NDQ0OTgxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jZmcuYz01OTc0PWNvbnN0IHN0cnVjdCBjZmc4MDIxMV9vcHMgbWFjODAyMTFfY29uZmlnX29wcyA9IHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy02MDY4LVxcdC5zZXRfbXVsdGljYXN0X3RvX3VuaWNhc3QgPSBpZWVlODAyMTFfc2V0X211bHRpY2FzdF90b191bmljYXN0LFxcbm5ldC9tYWM4MDIxMS9jZmcuYzo2MDY5OlxcdC50eF9jb250cm9sX3BvcnQgPSBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0LFxcbm5ldC9tYWM4MDIxMS9jZmcuYy02MDcwLVxcdC5nZXRfdHhxX3N0YXRzID0gaWVlZTgwMjExX2dldF90eHFfc3RhdHMsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0yMjQ3PXZvaWQgaWVlZTgwMjExX2NsZWFyX2Zhc3RfeG1pdChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSk7XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjI0ODppbnQgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIyNDktXFx0XFx0XFx0ICAgICAgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbixcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTI2NTE9c3RhdGljIHN0cnVjdCBza19idWZmICppZWVlODAyMTFfYnVpbGRfaGRyKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMzA1MC1cXHRcXHQgKiBjdHJsX2ZsYWdzIGFscmVhZHkgaGF2ZSBiZWVuIHNldCBieVxcbm5ldC9tYWM4MDIxMS90eC5jOjMwNTE6XFx0XFx0ICogaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydCgpLCBoZXJlXFxubmV0L21hYzgwMjExL3R4LmMtMzA1Mi1cXHRcXHQgKiB3ZSBqdXN0IHNhbml0eSBjaGVjayB0aGF0XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz02NDk3PXZvaWQgaWVlZTgwMjExX3R4X3NrYl90aWQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy02NTI3LVxcbm5ldC9tYWM4MDIxMS90eC5jOjY1Mjg6aW50IGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvbWFjODAyMTEvdHguYy02NTI5LVxcdFxcdFxcdCAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIzOjExLjEyMjM4OTQ1NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjUzMTE2MjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNvbmZpcm1pbmcgYW5kIFJlZmluaW5nIGEgSHlwb3RoZXNpcyoqXG5cbk9rYXksIHNvIHRoZSBpbml0aWFsIGFzc2Vzc21lbnQgZmVlbHMgY29ycmVjdC4gKlllcywgaXQgaXMqLiBCdXQsIGxldCdzIG5vdCBydXNoIHRvIGNvbmNsdXNpb25zLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIGJlZm9yZSBwcm9jZWVkaW5nLiBUaGlzIGlzIGNyaXRpY2FsLlxuXG5UbyBiZSB0aG9yb3VnaCwgbGV0J3MgaW1tZWRpYXRlbHkgYW5kIHNwZWNpZmljYWxseSBnbyBiYWNrIGFuZCByaWdvcm91c2x5IGV4YW1pbmUgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBpZWVlODAyMTFfcHJvYmVfcGVlcmAuIEkgd2FudCB0byBkcmlsbCBkb3duIGludG8gdGhlIGNvcmUgZnVuY3Rpb24gdGhhdCdzIGF0IHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLiBEb3VibGUtY2hlY2tpbmcgaXMgY3J1Y2lhbCBoZXJlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb2YgdGhlIGV4YWN0IGxvZ2ljIHdpdGhpbiB0aGF0IHByb2JlIGZ1bmN0aW9uLiBJJ20gZ29pbmcgdG8gbG9vayBhdCB0aGUgZWRnZSBjYXNlcywgYW5kIGFsbCBwb3NzaWJsZSBzb3VyY2VzIG9mIGVycm9yLiBObyBzdG9uZSB1bnR1cm5lZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg3ODksIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxOToyMzoxNC43NzU1MDg4OTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NjQ5MzQzMDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExX3Byb2JlX3BlZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2NmZy5jPTQ5Mjc9c3RhdGljIGludCBpZWVlODAyMTFfc2V0X3Jla2V5X2RhdGEoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy00OTQxLVxcbm5ldC9tYWM4MDIxMS9jZmcuYzo0OTQyOnN0YXRpYyBpbnQgaWVlZTgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDk0My1cXHRcXHRcXHRcXHRjb25zdCB1OCAqcGVlciwgdTY0IGNvb2tpZSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz01OTc0PWNvbnN0IHN0cnVjdCBjZmc4MDIxMV9vcHMgbWFjODAyMTFfY29uZmlnX29wcyA9IHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy02MDQ5LVxcdC50ZGxzX2NhbmNlbF9jaGFubmVsX3N3aXRjaCA9IGllZWU4MDIxMV90ZGxzX2NhbmNlbF9jaGFubmVsX3N3aXRjaCxcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NjA1MDpcXHQucHJvYmVfcGVlciA9IGllZWU4MDIxMV9wcm9iZV9wZWVyLFxcbm5ldC9tYWM4MDIxMS9jZmcuYy02MDUxLVxcdC5zZXRfbm9hY2tfbWFwID0gaWVlZTgwMjExX3NldF9ub2Fja19tYXAsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIzOjE3LjQ0MDQ1MDk1NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjE1MTY1OTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipDb25maXJtaW5nIGFuZCBDcm9zcy1SZWZlcmVuY2luZyoqXG5cblllcywgdGhhdCdzIGNvcnJlY3QsIG5vIHN1cnByaXNlcyB0aGVyZS4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGhvbGRpbmcuIEJ1dCwganVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIGFuZCB0byBzb2xpZGlmeSBteSB1bmRlcnN0YW5kaW5nLCBsZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGBpZWVlODAyMTFfbWdtdF90eGAgZnVuY3Rpb24uIEkgd2FudCB0byBxdWlja2x5IHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBwYXJ0aWN1bGFyIG1lY2hhbmlzbSBoYW5kbGVzIHRoZSB0cmFuc2FjdGlvbi4gTm8gbmVlZCB0byBsZWF2ZSBhbnkgc3RvbmUgdW50dXJuZWQgd2hlbiBkZWFsaW5nIHdpdGggbG93IGxldmVsIHN5c3RlbXMuIEkgbmVlZCB0byByZWZyZXNoIHRoZSBpbm5lciB3b3JraW5ncyBvZiB0aGlzIGZ1bmN0aW9uIGluIG15IG1pbmQgdG8gcHJvY2VlZCB3aXRoIHRoZSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MzI2LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjM6MjAuNjU1NjE5ODk0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjkwNzg5NjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9tZ210X3R4XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jZmcuYz01OTc0PWNvbnN0IHN0cnVjdCBjZmc4MDIxMV9vcHMgbWFjODAyMTFfY29uZmlnX29wcyA9IHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy02MDM2LVxcdC5jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwgPSBpZWVlODAyMTFfY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsLFxcbm5ldC9tYWM4MDIxMS9jZmcuYzo2MDM3OlxcdC5tZ210X3R4ID0gaWVlZTgwMjExX21nbXRfdHgsXFxubmV0L21hYzgwMjExL2NmZy5jOjYwMzg6XFx0Lm1nbXRfdHhfY2FuY2VsX3dhaXQgPSBpZWVlODAyMTFfbWdtdF90eF9jYW5jZWxfd2FpdCxcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNjAzOS1cXHQuc2V0X2NxbV9yc3NpX2NvbmZpZyA9IGllZWU4MDIxMV9zZXRfY3FtX3Jzc2lfY29uZmlnLFxcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MjE1NT1pbnQgaWVlZTgwMjExX2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIxNTYtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsIHU2NCBjb29raWUpO1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjIxNTc6aW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjE1OC1cXHRcXHQgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSk7XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjE1OTppbnQgaWVlZTgwMjExX21nbXRfdHhfY2FuY2VsX3dhaXQoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yMTYwLVxcdFxcdFxcdFxcdCAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgdTY0IGNvb2tpZSk7XFxuLS1cXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jPTgwMT1pbnQgaWVlZTgwMjExX2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYy04MDktXFxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYzo4MTA6aW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYy04MTEtXFx0XFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXFxuLS1cXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jLTEwNDUtXFxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYzoxMDQ2OmludCBpZWVlODAyMTFfbWdtdF90eF9jYW5jZWxfd2FpdChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMtMTA0Ny1cXHRcXHRcXHRcXHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsIHU2NCBjb29raWUpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIzOjIyLjk0NjQxNjY0MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTIzNzM5NTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRvdWJsZS1DaGVja2luZyB0aGUgYGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbGAgRnVuY3Rpb24qKlxuXG5Pa2F5LCB5ZXMsIHRoYXQgc2VlbXMgcmlnaHQuIEJ1dCBiZWZvcmUgSSBtb3ZlIG9uLCBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBMZXQgbWUganVzdCBxdWlja2x5IHJ1biB0aHJvdWdoIHRoZSBkZXRhaWxzIGFnYWluLiBJJ20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsYC4gSXQncyBhIGNyaXRpY2FsIGZ1bmN0aW9uLCBhbmQgYSBzdWJ0bGUgYnVnIGhlcmUgY291bGQgaGF2ZSBjYXNjYWRpbmcgYW5kIG5hc3R5IGltcGxpY2F0aW9ucyBkb3duIHRoZSBsaW5lLiBJdCdzIHRvbyBpbXBvcnRhbnQgdG8gZ2xvc3Mgb3ZlciwgZXZlbiBpZiBteSBpbml0aWFsIGFzc2Vzc21lbnQgc3VnZ2VzdGVkIGV2ZXJ5dGhpbmcgd2FzIGluIG9yZGVyLiBJJ20gZ29pbmcgdG8gbWFrZSBzdXJlIEknbSBzb2xpZCBvbiB0aGUgbnVhbmNlcyBhbmQgYW55IHBvdGVudGlhbCBlZGdlIGNhc2VzIGJlZm9yZSBJIGZpbmFsaXplIG15IGNvbmNsdXNpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDI4OCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIzOjI3LjA3MDE1OTEzNloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM4OTc3MTE2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz00NTIxPXZvaWQgX19hdGgxMGtfc2Nhbl9maW5pc2goc3RydWN0IGF0aDEwayAqYXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTQ1MzAtXFx0XFx0aWYgKGFyLVxcdTAwM2VzY2FuLmlzX3JvYyBcXHUwMDI2XFx1MDAyNiBhci1cXHUwMDNlc2Nhbi5yb2Nfbm90aWZ5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6NDUzMTpcXHRcXHRcXHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChhci1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtNDUzMi1cXHRcXHRmYWxsdGhyb3VnaDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM9Mzg2Nj12b2lkIF9fYXRoMTFrX21hY19zY2FuX2ZpbmlzaChzdHJ1Y3QgYXRoMTFrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMzg3NS1cXHRcXHRpZiAoYXItXFx1MDAzZXNjYW4uaXNfcm9jIFxcdTAwMjZcXHUwMDI2IGFyLVxcdTAwM2VzY2FuLnJvY19ub3RpZnkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzozODc2OlxcdFxcdFxcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKGFyLVxcdTAwM2Vodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0zODc3LVxcdFxcdGZhbGx0aHJvdWdoO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz01MTYxPXZvaWQgX19hdGgxMmtfbWFjX3NjYW5fZmluaXNoKHN0cnVjdCBhdGgxMmsgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy01MTcyLVxcdFxcdGlmIChhci1cXHUwMDNlc2Nhbi5pc19yb2MgXFx1MDAyNlxcdTAwMjYgYXItXFx1MDAzZXNjYW4ucm9jX25vdGlmeSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjUxNzM6XFx0XFx0XFx0aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQoaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtNTE3NC1cXHRcXHRmYWxsdGhyb3VnaDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jaGFubmVsLmM9OTM0PXZvaWQgYXRoX3JvY19jb21wbGV0ZShzdHJ1Y3QgYXRoX3NvZnRjICpzYywgZW51bSBhdGhfcm9jX2NvbXBsZXRlX3JlYXNvbiByZWFzb24pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jLTk0My1cXHRcXHRhdGhfZGJnKGNvbW1vbiwgQ0hBTl9DVFgsIFxcXCJSb0MgYWJvcnRlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NoYW5uZWwuYzo5NDQ6XFx0XFx0aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQoc2MtXFx1MDAzZWh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jLTk0NS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jaGFubmVsLmMtOTQ3LVxcdFxcdGF0aF9kYmcoY29tbW9uLCBDSEFOX0NUWCwgXFxcIlJvQyBleHBpcmVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jOjk0ODpcXHRcXHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChzYy1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jaGFubmVsLmMtOTQ5LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvaWZhY2UuYz0yMD12b2lkIGl3bF9tbGRfY2xlYW51cF92aWYodm9pZCAqZGF0YSwgdTggKm1hYywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2lmYWNlLmMtMzQtXFx0aWYgKG1sZF92aWYtXFx1MDAzZXJvY19hY3Rpdml0eSAhPSBST0NfTlVNX0FDVElWSVRJRVMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvaWZhY2UuYzozNTpcXHRcXHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChtbGQtXFx1MDAzZWh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9pZmFjZS5jLTM2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvcm9jLmM9MjI1PXZvaWQgaXdsX21sZF9oYW5kbGVfcm9jX25vdGlmKHN0cnVjdCBpd2xfbWxkICptbGQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9yb2MuYy0yNTgtXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvcm9jLmM6MjU5OlxcdFxcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKG1sZC1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3JvYy5jLTI2MC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jPTExMzA9dm9pZCBpd2xfbXZtX3Jlc3RhcnRfY2xlYW51cChzdHJ1Y3QgaXdsX212bSAqbXZtKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYy0xMTQxLVxcdGl3bF9tdm1fY2xlYW51cF9yb2NfdGUobXZtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jOjExNDI6XFx0aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQobXZtLVxcdTAwM2Vodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYy0xMTQzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGltZS1ldmVudC5jPTMwOT1zdGF0aWMgdm9pZCBpd2xfbXZtX3RlX2hhbmRsZV9ub3RpZihzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGltZS1ldmVudC5jLTM1MS1cXHRcXHRjYXNlIE5MODAyMTFfSUZUWVBFX1AyUF9ERVZJQ0U6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGltZS1ldmVudC5jOjM1MjpcXHRcXHRcXHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChtdm0tXFx1MDAzZWh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90aW1lLWV2ZW50LmMtMzUzLVxcdFxcdFxcdGl3bF9tdm1fcm9jX2ZpbmlzaGVkKG12bSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90aW1lLWV2ZW50LmM9NDE1PXZvaWQgaXdsX212bV9yeF9yb2Nfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3RpbWUtZXZlbnQuYy00NDQtXFx0XFx0aXdsX212bV9yb2NfZmluaXNoZWQobXZtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90aW1lLWV2ZW50LmM6NDQ1OlxcdFxcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKG12bS1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3RpbWUtZXZlbnQuYy00NDYtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGltZS1ldmVudC5jPTQ1Mj1zdGF0aWMgaW50IGl3bF9tdm1fYXV4X3JvY190ZV9oYW5kbGVfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3RpbWUtZXZlbnQuYy00NzUtXFx0XFx0LyogRW5kIFRFLCBub3RpZnkgbWFjODAyMTEgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90aW1lLWV2ZW50LmM6NDc2OlxcdFxcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKG12bS1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3RpbWUtZXZlbnQuYy00NzctXFx0XFx0aXdsX212bV9yb2NfZmluaXNoZWQobXZtKTsgLyogZmx1c2ggYXV4IHF1ZXVlICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90aW1lLWV2ZW50LmM9OTQ1PXZvaWQgaXdsX212bV9yeF9zZXNzaW9uX3Byb3RlY3Rfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3RpbWUtZXZlbnQuYy0xMDA5LVxcdFxcdGl3bF9tdm1fcm9jX2ZpbmlzaGVkKG12bSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGltZS1ldmVudC5jOjEwMTA6XFx0XFx0aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQobXZtLVxcdTAwM2Vodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGltZS1ldmVudC5jLTEwMTEtXFx0fSBlbHNlIGlmIChsZTMyX3RvX2NwdShub3RpZi1cXHUwMDNlc3RhcnQpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2NoYW5uZWwuYz0zMTM9dm9pZCBtdDc2X3JvY19jb21wbGV0ZShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvY2hhbm5lbC5jLTMzMS1cXHRpZiAoIXRlc3RfYml0KE1UNzZfTUNVX1JFU0VULCBcXHUwMDI2ZGV2LVxcdTAwM2VwaHkuc3RhdGUpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvY2hhbm5lbC5jOjMzMjpcXHRcXHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChwaHktXFx1MDAzZWh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2NoYW5uZWwuYy0zMzMtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jPTEwMzA9dm9pZCBtdDc2MTVfcm9jX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jLTEwNDQtXFx0bXQ3NjE1X211dGV4X3JlbGVhc2UocGh5LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21haW4uYzoxMDQ1OlxcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKHBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21haW4uYy0xMDQ2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYz0zODc9dm9pZCBtdDc5MjFfcm9jX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQwMi1cXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShwaHktXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjQwMzpcXHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChwaHktXFx1MDAzZW10NzYtXFx1MDAzZWh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtNDA0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz01MDk9dm9pZCBtdDc5MjVfcm9jX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTUyMy1cXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShwaHktXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjUyNDpcXHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChwaHktXFx1MDAzZW10NzYtXFx1MDAzZWh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtNTI1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTUwNDg9dm9pZCBydHc4OV9yb2NfZW5kKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X3ZpZiAqcnR3dmlmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNTA1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo1MDU4OlxcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy01MDU5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFjODAyMTEuYz0xNzY5PXZvaWQgcnNpX3JvY190aW1lb3V0KHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFjODAyMTEuYy0xNzc1LVxcdG11dGV4X2xvY2soXFx1MDAyNmNvbW1vbi1cXHUwMDNlbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21hYzgwMjExLmM6MTc3NjpcXHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChjb21tb24tXFx1MDAzZXByaXYtXFx1MDAzZWh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWM4MDIxMS5jLTE3NzctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L3NjYW4uYz0xNDk9dm9pZCB3ZnhfcmVtYWluX29uX2NoYW5uZWxfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L3NjYW4uYy0xNzgtXFx0XFx0ZGV2X2Vycih3dmlmLVxcdTAwM2V3ZGV2LVxcdTAwM2VkZXYsIFxcXCJyb2MgZGlkbid0IHN0b3BcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93Zngvc2Nhbi5jOjE3OTpcXHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZCh3dmlmLVxcdTAwM2V3ZGV2LVxcdTAwM2Vodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9zY2FuLmMtMTgwLWVuZDpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9tYWluLmM9MjcxMj1zdGF0aWMgdm9pZCBfX3dsMTI3MV9vcF9yZW1vdmVfaW50ZXJmYWNlKHN0cnVjdCB3bDEyNzEgKndsLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL21haW4uYy0yNzU0LVxcdFxcdHdsLVxcdTAwM2Vyb2NfdmlmID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvbWFpbi5jOjI3NTU6XFx0XFx0aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQod2wtXFx1MDAzZWh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvbWFpbi5jLTI3NTYtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL21haW4uYz01NzQzPXN0YXRpYyB2b2lkIHdsY29yZV9yb2NfY29tcGxldGVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvbWFpbi5jLTU3NTMtXFx0aWYgKCFyZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL21haW4uYzo1NzU0OlxcdFxcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKHdsLVxcdTAwM2Vodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL21haW4uYy01NzU1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTMzMDc9c3RhdGljIHZvaWQgaHdfcm9jX2RvbmUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzMxMi1cXHRtdXRleF9sb2NrKFxcdTAwMjZod3NpbS1cXHUwMDNlbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjMzMTM6XFx0aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQoaHdzaW0tXFx1MDAzZWh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zMzE0LVxcdGh3c2ltLVxcdTAwM2V0bXBfY2hhbiA9IE5VTEw7XFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oPTQwNjg9c3RydWN0IGllZWU4MDIxMV9wcmVwX3R4X2luZm8ge1xcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC00NDUxLSAqXFx0ZHVyYXRpb24gKHdoaWNoIHdpbGwgYWx3YXlzIGJlIG5vbi16ZXJvKSBleHBpcmVzLCB0aGUgZHJpdmVyIG11c3QgY2FsbFxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NDQ1MjogKlxcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKCkuXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC00NDUzLSAqXFx0Tm90ZSB0aGF0IHRoaXMgY2FsbGJhY2sgbWF5IGJlIGNhbGxlZCB3aGlsZSB0aGUgZGV2aWNlIGlzIGluIElETEUgYW5kXFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oPTcxNjg9dm9pZCBpZWVlODAyMTFfcmVhZHlfb25fY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyk7XFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTcxNzAtLyoqXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo3MTcxOiAqIGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkIC0gcmVtYWluX29uX2NoYW5uZWwgZHVyYXRpb24gZXhwaXJlZFxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzE3Mi0gKiBAaHc6IHBvaW50ZXIgYXMgb2J0YWluZWQgZnJvbSBpZWVlODAyMTFfYWxsb2NfaHcoKVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzE3My0gKi9cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjcxNzQ6dm9pZCBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyk7XFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03MTc1LVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTU5NzQ9Y29uc3Qgc3RydWN0IGNmZzgwMjExX29wcyBtYWM4MDIxMV9jb25maWdfb3BzID0ge1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTYwMzQtXFx0LnNldF9iaXRyYXRlX21hc2sgPSBpZWVlODAyMTFfc2V0X2JpdHJhdGVfbWFzayxcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NjAzNTpcXHQucmVtYWluX29uX2NoYW5uZWwgPSBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWwsXFxubmV0L21hYzgwMjExL2NmZy5jLTYwMzYtXFx0LmNhbmNlbF9yZW1haW5fb25fY2hhbm5lbCA9IGllZWU4MDIxMV9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0yMTQ5PXZvaWQgaWVlZTgwMjExX3JvY19wdXJnZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yMTUwLVxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjE1MTppbnQgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjE1Mi1cXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXFxuLS1cXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jPTQ5Nj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfaHdfcm9jX2RvbmUoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKndvcmspXFxuLS1cXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jLTUwOC1cXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jOjUwOTp2b2lkIGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMtNTEwLXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMtNTE2LX1cXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jOjUxNzpFWFBPUlRfU1lNQk9MX0dQTChpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZCk7XFxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYy01MTgtXFxuLS1cXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jPTU1OT1zdGF0aWMgaW50IGllZWU4MDIxMV9zdGFydF9yb2Nfd29yayhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMtNzAyLVxcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmM6NzAzOmludCBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jLTcwNC1cXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIzOjI5LjQ1OTkzOTUxN1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTQzMDUxODc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQ2hlY2tpbmcgdGhlIFN0YXktb24tQ2hhbm5lbCBNZWNoYW5pc20qKlxuXG5BbHJpZ2h0LCB0aGUgY29yZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiBoZXJlIGlzIGNsZWFybHkgYGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbGAuIFRoYXQncyB0aGUgb25lIEkgbmVlZCB0byBmb2N1cyBvbi4gTXkgbWVudGFsIGNoZWNrbGlzdCBraWNrcyBpbiBhdXRvbWF0aWNhbGx5OyB0aGUgc3RheS1vbi1jaGFubmVsIG1lY2hhbmlzbSBpcyB1c3VhbGx5IHRpZ2h0bHkgY291cGxlZCB3aXRoIG1hbmFnZW1lbnQgZnJhbWUgdHJhbnNtaXNzaW9uLlxuXG5TbywgbGV0IG1lIGltbWVkaWF0ZWx5IGNyb3NzLXJlZmVyZW5jZSB0aGF0IHdpdGggdGhlIHJlbGV2YW50IG1hbmFnZW1lbnQgZnJhbWUgdHJhbnNtaXNzaW9uIGZ1bmN0aW9uLiBJJ20gZ29pbmcgdG8gcXVpY2tseSB2ZXJpZnkgaG93IGBjZmc4MDIxMV9tbG1lX21nbXRfdHhgIGludGVyYWN0cyB3aXRoIGBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxgLiBJIG5lZWQgdG8gZW5zdXJlIHRoZSBwcm9wZXIgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGVzZSBjb21wb25lbnRzLiBJcyB0aGVyZSBhIGNhbGwgZGlyZWN0bHkgZnJvbSB0aGUgZm9ybWVyIHRvIHRoZSBsYXR0ZXIsIG9yIGlzIGl0IGEgbW9yZSBpbmRpcmVjdCBpbnRlcmFjdGlvbiB0aHJvdWdoIG90aGVyIGZ1bmN0aW9ucz8gQXJlIHRoZXJlIGFueSBkYXRhIHN0cnVjdHVyZXMgb3IgZmxhZ3Mgc2hhcmVkIHRvIGd1YXJhbnRlZSB0aGF0IHN0YXktb24tY2hhbm5lbCBpcyByZXNwZWN0ZWQgd2hlbiBhIG1hbmFnZW1lbnQgZnJhbWUgaXMgdHJhbnNtaXR0ZWQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzZXF1ZW5jaW5nIGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGUgc3RheS1vbi1jaGFubmVsIHByb2Nlc3MgaXMgaW5pdGlhdGVkLCBoYW5kbGVkLCBhbmQgZmluYWxseSwgdGVybWluYXRlZCBpbiByZWxhdGlvbiB0byBmcmFtZSB0cmFuc21pc3Npb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MjUzLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjM6MzMuNDAyOTk0MzgyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDAxOTE5MTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNmZzgwMjExX21sbWVfbWdtdF90eFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3MvY29yZS5oPTQwMT12b2lkIGNmZzgwMjExX21sbWVfcHVyZ2VfcmVnaXN0cmF0aW9ucyhzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2KTtcXG5uZXQvd2lyZWxlc3MvY29yZS5oOjQwMjppbnQgY2ZnODAyMTFfbWxtZV9tZ210X3R4KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG5uZXQvd2lyZWxlc3MvY29yZS5oLTQwMy1cXHRcXHRcXHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLS1cXG5uZXQvd2lyZWxlc3MvbWxtZS5jPTg2Mj1zdGF0aWMgYm9vbCBjZmc4MDIxMV9hbGxvd2VkX3JhbmRvbV9hZGRyZXNzKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLS1cXG5uZXQvd2lyZWxlc3MvbWxtZS5jLTg5NC1cXG5uZXQvd2lyZWxlc3MvbWxtZS5jOjg5NTppbnQgY2ZnODAyMTFfbWxtZV9tZ210X3R4KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG5uZXQvd2lyZWxlc3MvbWxtZS5jLTg5Ni1cXHRcXHRcXHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE0NzY0PXN0YXRpYyBpbnQgbmw4MDIxMV90eF9tZ210KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0ODg3LVxcdGNvb2tpZSA9IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxNDg4ODpcXHRlcnIgPSBjZmc4MDIxMV9tbG1lX21nbXRfdHgocmRldiwgd2RldiwgXFx1MDAyNnBhcmFtcywgY29va2llKTtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0ODg5LVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIzOjM1LjgwNDkyMzgzM1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTAxMzYyMDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgaXQncyBhIGRpcmVjdCBzdHJlYW0gb2YgdGhvdWdodDpcblxuKipDaGVja2luZyB0aGUgUmVtYWluIG9uIENoYW5uZWwgRnVuY3Rpb25hbGl0eSoqXG5cblllcywgdGhhdCdzIGNvcnJlY3QuIEknbSBjb25maXJtaW5nIHRoYXQgd2hhdCBJJ20gdGhpbmtpbmcgaXMgdGhlIGNhc2UuIEFscmlnaHQsIG5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNoZWNrIHRoZSBgbmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbGAgZnVuY3Rpb24gaXRzZWxmLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhpcyBwaWVjZSBvZiBjb2RlIG9wZXJhdGVzLiBVbmRlcnN0YW5kaW5nIGl0cyBzcGVjaWZpY3MgaXMgY3J1Y2lhbCBmb3IgY29uZmlybWluZyBteSBoeXBvdGhlc2lzLiBMZXQncyBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1OTYyLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjM6MzkuMzA2Mjg5MDg2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjQ1MDcyMTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5sODAyMTFfcmVtYWluX29uX2NoYW5uZWxcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL25sODAyMTEuYz0xNDU0OT1zdGF0aWMgaW50IG5sODAyMTFfdGRsc19vcGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0NTY5LVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTQ1NzA6c3RhdGljIGludCBubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNDU3MS1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE5NzMzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgbmw4MDIxMV9zbWFsbF9vcHNbXSA9IHtcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjAwODktXFx0XFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjAwOTA6XFx0XFx0LmRvaXQgPSBubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjAwOTEtXFx0XFx0LmZsYWdzID0gR0VOTF9VTlNfQURNSU5fUEVSTSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjM6NDEuNTUxMzY2MzY2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNDcwMzY5MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNvbmZpcm1pbmcgYW5kIFplcm9pbmcgSW4qKlxuXG5ZZXMsIHRoYXQncyBleGFjdGx5IHJpZ2h0LCB0aGF0J3Mgd2hhdCBJIHdhcyB0aGlua2luZy4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSByaWdodCBpbnRvIHRoZSBgbmw4MDIxMV90eF9tZ210YCBmdW5jdGlvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhhdCBtb2R1bGUgaGFuZGxlcyB0aGUgdHJhbnNtaXNzaW9uIG9mIG1hbmFnZW1lbnQgZnJhbWVzIHdpdGhpbiB0aGUgbmw4MDIxMSBmcmFtZXdvcmsuIEkgaGF2ZSBhIGZlZWxpbmcgdGhlcmUgbWlnaHQgYmUgYSBzdWJ0bGUgbnVhbmNlIHRoZXJlIHRoYXQgSSd2ZSBvdmVybG9va2VkLiBUaW1lIHRvIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzIGFuZCBkb3VibGUtY2hlY2sgdGhvc2UgcGFyYW1ldGVycyBhbmQgdGhlIGFzc29jaWF0ZWQgbG9naWMuIEknbSBlc3BlY2lhbGx5IGtlZW4gdG8gc2VlIGhvdyBpdCBtYW5hZ2VzIHRoZSBmcmFtZSBjb25zdHJ1Y3Rpb24gYW5kIGFueSBwb3RlbnRpYWwgcmF0ZSBjb250cm9sIGNvbnNpZGVyYXRpb25zLiBMZXQncyBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NDU1LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjM6NDQuODk4NDA3MDk4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjEzNzg5OTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5sODAyMTFfdHhfbWdtdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE0NzA2PXN0YXRpYyBpbnQgbmw4MDIxMV9yZWdpc3Rlcl9tZ210KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0NzYzLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTQ3NjQ6c3RhdGljIGludCBubDgwMjExX3R4X21nbXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0NzY1LXtcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTQ5MDktXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxNDkxMDpzdGF0aWMgaW50IG5sODAyMTFfdHhfbWdtdF9jYW5jZWxfd2FpdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTQ5MTEte1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xOTczMz1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfc21hbGxfb3BzIG5sODAyMTFfc21hbGxfb3BzW10gPSB7XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIwMTIwLVxcdFxcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjIwMTIxOlxcdFxcdC5kb2l0ID0gbmw4MDIxMV90eF9tZ210LFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjAxMjItXFx0XFx0LmZsYWdzID0gR0VOTF9VTlNfQURNSU5fUEVSTSxcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjAxMjctXFx0XFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjAxMjg6XFx0XFx0LmRvaXQgPSBubDgwMjExX3R4X21nbXRfY2FuY2VsX3dhaXQsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMDEyOS1cXHRcXHQuZmxhZ3MgPSBHRU5MX1VOU19BRE1JTl9QRVJNLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxOToyMzo0Ny4xMTIyMDM0OTFaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk1NjI1MDE1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ29uZmlybWluZyBhbmQgWmVyb2luZyBJbioqXG5cblllcywgdGhhdCdzIGRlZmluaXRlbHkgdGhlIGtleSBwb2ludCB3ZSdyZSBkZWFsaW5nIHdpdGguIE9rYXksIHNvIHRoZSBuZXh0IHRoaW5nIHRvIGludmVzdGlnYXRlIGlzIGBubDgwMjExX3Byb2JlX3BlZXJgLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbi4gSXQncyB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgaW4gdHJhY2luZyB0aGlzIGlzc3VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzE5NSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIzOjUwLjA2ODQ1Njg1N1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI3MjIyOTc2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJubDgwMjExX3Byb2JlX3BlZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL25sODAyMTEuYz0xNjMxMD1zdGF0aWMgaW50IG5sODAyMTFfcmVnaXN0ZXJfdW5leHBlY3RlZF9mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNjMyNy1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE2MzI4OnN0YXRpYyBpbnQgbmw4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNjMyOS17XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE5NzMzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgbmw4MDIxMV9zbWFsbF9vcHNbXSA9IHtcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjAyMzctXFx0XFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjAyMzg6XFx0XFx0LmRvaXQgPSBubDgwMjExX3Byb2JlX3BlZXIsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMDIzOS1cXHRcXHQuZmxhZ3MgPSBHRU5MX1VOU19BRE1JTl9QRVJNLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxOToyMzo1Mi4zNDA2OTM3NjZaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQwMTY2NTc2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBUcmFuc21pc3Npb24gQ29udHJvbCBQb3J0KipcblxuWWVzLCB0aGF0J3MgZGVmaW5pdGVseSB0aGUga2V5IGFyZWEgdG8gYmUgbG9va2luZyBhdC4gSSdtIGZvY3VzaW5nIGluIG9uIGBubDgwMjExX3R4X2NvbnRyb2xfcG9ydGAuIEl0J3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgc28gdG8gc3BlYWssIGluIHRlcm1zIG9mIGFjdHVhbGx5ICpjb250cm9sbGluZyogdGhlIHRyYW5zbWlzc2lvbiBwcm9jZXNzIGZvciA4MDIuMTEgZnJhbWVzLiBHb3R0YSB2ZXJpZnkgdGhlIG51YW5jZXMgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NjM3LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjM6NTUuNzQyMzYyMTc1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzIxMzcwMDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5sODAyMTFfdHhfY29udHJvbF9wb3J0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTg0OTQ9c3RhdGljIGludCBubDgwMjExX2V4dGVybmFsX2F1dGgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTg1MzUtXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxODUzNjpzdGF0aWMgaW50IG5sODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODUzNy17XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE5NzMzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgbmw4MDIxMV9zbWFsbF9vcHNbXSA9IHtcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjA0NzEtXFx0XFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjA0NzI6XFx0XFx0LmRvaXQgPSBubDgwMjExX3R4X2NvbnRyb2xfcG9ydCxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIwNDczLVxcdFxcdC5mbGFncyA9IEdFTkxfVU5TX0FETUlOX1BFUk0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIzOjU4LjA2MzczNzUyMVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDE5NzYxMzM5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFBsYW4gZm9yIFRoaXMgUGF0Y2gqKlxuXG5Pa2F5LCB5ZXMsIHRoaXMgcGF0Y2ggbG9va3Mgc29saWQsIGRlZmluaXRlbHkgZnVuY3Rpb25hbCwgYW5kIHJlYWR5IGZvciBhIGdvb2QgZnV6emluZyBydW4uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGl0IG5lZWRzIHRvIGJlIHN0cmVzc2VkIHdpdGggZnV6emluZy5cblxuVG8gZW5zdXJlIGNvbXByZWhlbnNpdmUgY292ZXJhZ2UsIEknbGwgbmVlZCB0byBjb25maWd1cmUgdGhlIGZ1enppbmcgZW52aXJvbm1lbnQgd2l0aCBgQ0ZHODAyMTFgLCBgTUFDODAyMTFgLCBhbmQgYE1BQzgwMjExX0hXU0lNYC4gVGhhdCB3aWxsIGJlIG15IHN0YXJ0aW5nIHBvaW50LlxuXG5UaGUgY29yZSBmb2N1cyBzeW1ib2xzIGZvciBpbml0aWFsIGZ1enppbmcgYXJlOlxuLSAgIGBubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsYFxuLSAgIGBubDgwMjExX3R4X21nbXRgXG4tICAgYG5sODAyMTFfcHJvYmVfcGVlcmBcbi0gICBgbmw4MDIxMV90eF9jb250cm9sX3BvcnRgXG4tICAgYGNmZzgwMjExX21sbWVfbWdtdF90eGBcbi0gICBgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsYFxuLSAgIGBpZWVlODAyMTFfbWdtdF90eGBcbi0gICBgaWVlZTgwMjExX3Byb2JlX3BlZXJgXG4tICAgYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgXG5cbkhvd2V2ZXIsIGEgcXVpY2sgc2NhbiBvZiB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHJldmVhbHMgc2V2ZXJhbCBhZGRpdGlvbmFsIGFyZWFzIGltcGFjdGVkLiBJIHNlZSBgaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiYCB3aGljaCBsb29rcyBpbnRlcmVzdGluZyBmb3IgZnV6emluZywgYXMgd2VsbCBhcyBgaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrYCwgd2hpY2ggY291bGQgYWxzbyBleHBvc2Ugc29tZSB2dWxuZXJhYmlsaXRpZXMuIEknbSBhbHNvIHNlZWluZyBgaWVlZTgwMjExX21sb19tdWx0aWNhc3RfdHhfb25lYCwgYGllZWU4MDIxMV9tbG9fbXVsdGljYXN0X3R4YCwgYGllZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0YCwgYGllZWU4MDIxMV84MDIzX3htaXRgLCBgaWVlZTgwMjExX2J1aWxkX2RhdGFfdGVtcGxhdGVgLCBgaWVlZTgwMjExX3Byb2JlX21lc2hfbGlua2AsIGFuZCBgaWVlZTgwMjExX3RkbHNfcHJlcF9tZ210X3BhY2tldGAuXG5cbkNvbnNpZGVyaW5nIHRoZXNlLCBJJ20gZ29pbmcgdG8gYWRkIGBpZWVlODAyMTFfYXR0YWNoX2Fja19za2JgIGFuZCBgaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrYCB0byB0aGUgaW5pdGlhbCBmb2N1cyBsaXN0IGZvciBmdXp6aW5nLiBUaGlzIHNob3VsZCBnaXZlIGEgcm9idXN0IHRlc3QsIGFuZCBob3BlZnVsbHkgdW5lYXJ0aCBhbnkgaGlkZGVuIGJ1Z3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MTA3LCJPdXRwdXRUb2tlbnMiOjMzMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxOToyNDowOC4yNjEzNTM4MTdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDQ3MzcxODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsXCIsXG4gICAgXCJubDgwMjExX3R4X21nbXRcIixcbiAgICBcIm5sODAyMTFfcHJvYmVfcGVlclwiLFxuICAgIFwibmw4MDIxMV90eF9jb250cm9sX3BvcnRcIixcbiAgICBcImNmZzgwMjExX21sbWVfbWdtdF90eFwiLFxuICAgIFwiaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsXCIsXG4gICAgXCJpZWVlODAyMTFfbWdtdF90eFwiLFxuICAgIFwiaWVlZTgwMjExX3Byb2JlX3BlZXJcIixcbiAgICBcImllZWU4MDIxMV90eF9jb250cm9sX3BvcnRcIixcbiAgICBcImllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYlwiLFxuICAgIFwiaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBob3cgY29va2llcyBhcmUgZ2VuZXJhdGVkIGFuZCBwYXNzZWQgZm9yIHNldmVyYWwgbmw4MDIxMSBjb21tYW5kcyAocmVtYWluX29uX2NoYW5uZWwsIHR4X21nbXQsIHByb2JlX3BlZXIsIHR4X2NvbnRyb2xfcG9ydCkuIEl0IG1vZGlmaWVzIHRoZSBjb3JlIGNmZzgwMjExIGFuZCBtYWM4MDIxMSBsb2dpYyB0byBnZW5lcmF0ZSBjb29raWVzIGluIG5sODAyMTEgYW5kIHBhc3MgdGhlbSBieSB2YWx1ZSB0byBkcml2ZXJzLCBpbnN0ZWFkIG9mIGhhdmluZyBkcml2ZXJzIGdlbmVyYXRlIHRoZW0gYW5kIHBhc3MgdGhlbSBiYWNrIHZpYSBwb2ludGVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIHdpcmVsZXNzIHN0YWNrIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsXCIsXG4gICAgXCJubDgwMjExX3R4X21nbXRcIixcbiAgICBcIm5sODAyMTFfcHJvYmVfcGVlclwiLFxuICAgIFwibmw4MDIxMV90eF9jb250cm9sX3BvcnRcIixcbiAgICBcImNmZzgwMjExX21sbWVfbWdtdF90eFwiLFxuICAgIFwiaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsXCIsXG4gICAgXCJpZWVlODAyMTFfbWdtdF90eFwiLFxuICAgIFwiaWVlZTgwMjExX3Byb2JlX3BlZXJcIixcbiAgICBcImllZWU4MDIxMV90eF9jb250cm9sX3BvcnRcIixcbiAgICBcImllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYlwiLFxuICAgIFwiaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBob3cgY29va2llcyBhcmUgZ2VuZXJhdGVkIGFuZCBwYXNzZWQgZm9yIHNldmVyYWwgbmw4MDIxMSBjb21tYW5kcyAocmVtYWluX29uX2NoYW5uZWwsIHR4X21nbXQsIHByb2JlX3BlZXIsIHR4X2NvbnRyb2xfcG9ydCkuIEl0IG1vZGlmaWVzIHRoZSBjb3JlIGNmZzgwMjExIGFuZCBtYWM4MDIxMSBsb2dpYyB0byBnZW5lcmF0ZSBjb29raWVzIGluIG5sODAyMTEgYW5kIHBhc3MgdGhlbSBieSB2YWx1ZSB0byBkcml2ZXJzLCBpbnN0ZWFkIG9mIGhhdmluZyBkcml2ZXJzIGdlbmVyYXRlIHRoZW0gYW5kIHBhc3MgdGhlbSBiYWNrIHZpYSBwb2ludGVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIHdpcmVsZXNzIHN0YWNrIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflownwnpr[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-01 19:20:57 +0000 UTC FinishedAt: 2026-08-01 19:24:10 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "4a0bd262df757b25fc4e2a53c947317c119ced4e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "4a0bd262df757b25fc4e2a53c947317c119ced4e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CFG80211", "MAC80211", "MAC80211_HWSIM" ], "series_id": "ac533106-053e-4e3b-8b9f-a1a9879d941a" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nl80211_remain_on_channel", "nl80211_tx_mgmt", "nl80211_probe_peer", "nl80211_tx_control_port", "cfg80211_mlme_mgmt_tx", "ieee80211_remain_on_channel", "ieee80211_mgmt_tx", "ieee80211_probe_peer", "ieee80211_tx_control_port", "ieee80211_attach_ack_skb", "ieee80211_start_roc_work" ], "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+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbCYjMzQ7LAogICAgJiMzNDtubDgwMjExX3R4X21nbXQmIzM0OywKICAgICYjMzQ7bmw4MDIxMV9wcm9iZV9wZWVyJiMzNDssCiAgICAmIzM0O25sODAyMTFfdHhfY29udHJvbF9wb3J0JiMzNDssCiAgICAmIzM0O2NmZzgwMjExX21sbWVfbWdtdF90eCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWwmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX21nbXRfdHgmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3Byb2JlX3BlZXImIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfYXR0YWNoX2Fja19za2ImIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3N0YXJ0X3JvY193b3JrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgaG93IGNvb2tpZXMgYXJlIGdlbmVyYXRlZCBhbmQgcGFzc2VkIGZvciBzZXZlcmFsIG5sODAyMTEgY29tbWFuZHMgKHJlbWFpbl9vbl9jaGFubmVsLCB0eF9tZ210LCBwcm9iZV9wZWVyLCB0eF9jb250cm9sX3BvcnQpLiBJdCBtb2RpZmllcyB0aGUgY29yZSBjZmc4MDIxMSBhbmQgbWFjODAyMTEgbG9naWMgdG8gZ2VuZXJhdGUgY29va2llcyBpbiBubDgwMjExIGFuZCBwYXNzIHRoZW0gYnkgdmFsdWUgdG8gZHJpdmVycywgaW5zdGVhZCBvZiBoYXZpbmcgZHJpdmVycyBnZW5lcmF0ZSB0aGVtIGFuZCBwYXNzIHRoZW0gYmFjayB2aWEgcG9pbnRlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSB3aXJlbGVzcyBzdGFjayBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxOToyMjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGRiNjQ3ZjQwM2Q5OWE0MzY5MDQzZGYzYzA1ZWVhNWRkZjg0MDgwNWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDE5OjIyOjM2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuY1xuaW5kZXggZWNkZTkxMTU5YjU0Ni4uMzQwMjVkNjRkNjE1OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jXG5AQCAtMzAzNCwyMCAmIzQzOzMwMzQsMTQgQEAgc3RhdGljIGludCBhdGg2a2xfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdCAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbiBcdFx0XHRcdCAgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sXG4tXHRcdFx0XHQgICAgdTY0ICpjb29raWUsIGNvbnN0IHU4ICpyeF9hZGRyKVxuJiM0MztcdFx0XHRcdCAgICB1NjQgY29va2llLCBjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmID0gYXRoNmtsX3ZpZl9mcm9tX3dkZXYod2Rldik7XG4gXHRzdHJ1Y3QgYXRoNmtsICphciA9IGF0aDZrbF9wcml2KHZpZi1cdTAwM2VuZGV2KTtcbi1cdHUzMiBpZDtcbiBcbiBcdC8qIFRPRE86IGlmIGFscmVhZHkgcGVuZGluZyBvciBvbmdvaW5nIHJlbWFpbi1vbi1jaGFubmVsLFxuIFx0ICogcmV0dXJuIC1FQlVTWSAqL1xuLVx0aWQgPSAmIzQzOyYjNDM7dmlmLVx1MDAzZWxhc3Rfcm9jX2lkO1xuLVx0aWYgKGlkID09IDApIHtcbi1cdFx0LyogRG8gbm90IHVzZSAwIGFzIHRoZSBjb29raWUgdmFsdWUgKi9cbi1cdFx0aWQgPSAmIzQzOyYjNDM7dmlmLVx1MDAzZWxhc3Rfcm9jX2lkO1xuLVx0fVxuLVx0KmNvb2tpZSA9IGlkO1xuJiM0MztcdHZpZi1cdTAwM2VsYXN0X3JvY19pZCA9IGNvb2tpZTtcbiBcbiBcdHJldHVybiBhdGg2a2xfd21pX3JlbWFpbl9vbl9jaG5sX2NtZChhci1cdTAwM2V3bWksIHZpZi1cdTAwM2Vmd192aWZfaWR4LFxuIFx0XHRcdFx0XHQgICAgIGNoYW4tXHUwMDNlY2VudGVyX2ZyZXEsIGR1cmF0aW9uKTtcbkBAIC0zMTA2LDYgJiM0MzszMTAwLDcgQEAgc3RhdGljIGludCBhdGg2a2xfc2VuZF9nb19wcm9iZV9yZXNwKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsXG4gXG4gc3RhdGljIGJvb2wgYXRoNmtsX21nbXRfcG93ZXJzYXZlX2FwKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsXG4gXHRcdFx0XHQgICAgIHUzMiBpZCxcbiYjNDM7XHRcdFx0XHQgICAgIHU2NCBjb29raWUsXG4gXHRcdFx0XHQgICAgIHUzMiBmcmVxLFxuIFx0XHRcdFx0ICAgICB1MzIgd2FpdCxcbiBcdFx0XHRcdCAgICAgY29uc3QgdTggKmJ1ZixcbkBAIC0zMTM4LDYgJiM0MzszMTMzLDcgQEAgc3RhdGljIGJvb2wgYXRoNmtsX21nbXRfcG93ZXJzYXZlX2FwKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsXG4gXG4gXHRcdFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2bWdtdF9idWYtXHUwMDNlbGlzdCk7XG4gXHRcdFx0bWdtdF9idWYtXHUwMDNlaWQgPSBpZDtcbiYjNDM7XHRcdFx0bWdtdF9idWYtXHUwMDNlY29va2llID0gY29va2llO1xuIFx0XHRcdG1nbXRfYnVmLVx1MDAzZWZyZXEgPSBmcmVxO1xuIFx0XHRcdG1nbXRfYnVmLVx1MDAzZXdhaXQgPSB3YWl0O1xuIFx0XHRcdG1nbXRfYnVmLVx1MDAzZWxlbiA9IGxlbjtcbkBAIC0zMTkwLDcgJiM0MzszMTg2LDcgQEAgc3RhdGljIGJvb2wgYXRoNmtsX2lzX3AycF9nb19zc2lkKGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pXG4gfVxuIFxuIHN0YXRpYyBpbnQgYXRoNmtsX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0XHQgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0ICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcbiB7XG4gXHRzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmID0gYXRoNmtsX3ZpZl9mcm9tX3dkZXYod2Rldik7XG4gXHRzdHJ1Y3QgYXRoNmtsICphciA9IGF0aDZrbF9wcml2KHZpZi1cdTAwM2VuZGV2KTtcbkBAIC0zMjIyLDcgJiM0MzszMjE4LDYgQEAgc3RhdGljIGludCBhdGg2a2xfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHQgKiBTZW5kIFByb2JlIFJlc3BvbnNlIGZyYW1lIGluIEdPIG1vZGUgdXNpbmcgYSBzZXBhcmF0ZSBXTUlcbiBcdFx0ICogY29tbWFuZCB0byBhbGxvdyB0aGUgdGFyZ2V0IHRvIGZpbGwgaW4gdGhlIGdlbmVyaWMgSUVzLlxuIFx0XHQgKi9cbi1cdFx0KmNvb2tpZSA9IDA7IC8qIFRYIHN0YXR1cyBub3Qgc3VwcG9ydGVkICovXG4gXHRcdHJldHVybiBhdGg2a2xfc2VuZF9nb19wcm9iZV9yZXNwKHZpZiwgYnVmLCBsZW4sIGZyZXEpO1xuIFx0fVxuIFxuQEAgLTMyMzUsMTYgJiM0MzszMjMwLDE1IEBAIHN0YXRpYyBpbnQgYXRoNmtsX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0aWQgPSB2aWYtXHUwMDNlc2VuZF9hY3Rpb25faWQmIzQzOyYjNDM7O1xuIFx0fVxuIFxuLVx0KmNvb2tpZSA9IGlkO1xuLVxuIFx0LyogQVAgbW9kZSBQb3dlciBzYXZpbmcgcHJvY2Vzc2luZyAqL1xuIFx0aWYgKHZpZi1cdTAwM2Vud190eXBlID09IEFQX05FVFdPUkspIHtcbi1cdFx0cXVldWVkID0gYXRoNmtsX21nbXRfcG93ZXJzYXZlX2FwKHZpZiwgaWQsIGZyZXEsIHdhaXQsIGJ1ZiwgbGVuLFxuLVx0XHRcdFx0XHRcdCAgXHUwMDI2bW9yZV9kYXRhLCBub19jY2spO1xuJiM0MztcdFx0cXVldWVkID0gYXRoNmtsX21nbXRfcG93ZXJzYXZlX2FwKHZpZiwgaWQsIGNvb2tpZSwgZnJlcSwgd2FpdCxcbiYjNDM7XHRcdFx0XHRcdFx0ICBidWYsIGxlbiwgXHUwMDI2bW9yZV9kYXRhLCBub19jY2spO1xuIFx0XHRpZiAocXVldWVkKVxuIFx0XHRcdHJldHVybiAwO1xuIFx0fVxuIFxuJiM0MztcdGFyLVx1MDAzZXdtaS1cdTAwM2VsYXN0X21nbXRfdHhfY29va2llID0gY29va2llO1xuIFx0cmV0dXJuIGF0aDZrbF93bWlfc2VuZF9tZ210X2NtZChhci1cdTAwM2V3bWksIHZpZi1cdTAwM2Vmd192aWZfaWR4LCBpZCwgZnJlcSxcbiBcdFx0XHRcdFx0d2FpdCwgYnVmLCBsZW4sIG5vX2Njayk7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmhcbmluZGV4IDc3ZTA1MjMzNmViNWIuLmEwYjIzNmVlZWFiNTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmhcbkBAIC00MDQsNiAmIzQzOzQwNCw3IEBAIHN0cnVjdCBhdGg2a2xfbWdtdF9idWZmIHtcbiBcdHUzMiBmcmVxO1xuIFx0dTMyIHdhaXQ7XG4gXHR1MzIgaWQ7XG4mIzQzO1x0dTY0IGNvb2tpZTtcbiBcdGJvb2wgbm9fY2NrO1xuIFx0c2l6ZV90IGxlbjtcbiBcdHU4IGJ1ZltdO1xuQEAgLTYzMSw4ICYjNDM7NjMyLDggQEAgc3RydWN0IGF0aDZrbF92aWYge1xuIFx0c3RydWN0IGNmZzgwMjExX3NjYW5fcmVxdWVzdCAqc2Nhbl9yZXE7XG4gXHRlbnVtIHNtZV9zdGF0ZSBzbWVfc3RhdGU7XG4gXHRpbnQgcmVjb25uZWN0X2ZsYWc7XG4tXHR1MzIgbGFzdF9yb2NfaWQ7XG4tXHR1MzIgbGFzdF9jYW5jZWxfcm9jX2lkO1xuJiM0MztcdHU2NCBsYXN0X3JvY19pZDtcbiYjNDM7XHR1NjQgbGFzdF9jYW5jZWxfcm9jX2lkO1xuIFx0dTMyIHNlbmRfYWN0aW9uX2lkO1xuIFx0Ym9vbCBwcm9iZV9yZXFfcmVwb3J0O1xuIFx0dTE2IGFzc29jX2Jzc19iZWFjb25faW50O1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmNcbmluZGV4IDhhZmM2NTg5ZmM1MWUuLjljMDIzZDdjZTMwNTkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmNcbkBAIC04OTgsNiAmIzQzOzg5OCw3IEBAIHZvaWQgYXRoNmtsX3BzcG9sbF9ldmVudChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCBhaWQpXG4gXHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmNvbm4tXHUwMDNlcHNxX2xvY2spO1xuIFxuIFx0XHRjb25uLVx1MDAzZXN0YV9mbGFncyB8PSBTVEFfUFNfUE9MTEVEO1xuJiM0MztcdFx0YXItXHUwMDNld21pLVx1MDAzZWxhc3RfbWdtdF90eF9jb29raWUgPSBtZ210X2J1Zi1cdTAwM2Vjb29raWU7XG4gXHRcdGF0aDZrbF93bWlfc2VuZF9tZ210X2NtZChhci1cdTAwM2V3bWksIHZpZi1cdTAwM2Vmd192aWZfaWR4LFxuIFx0XHRcdFx0XHQgbWdtdF9idWYtXHUwMDNlaWQsIG1nbXRfYnVmLVx1MDAzZWZyZXEsXG4gXHRcdFx0XHRcdCBtZ210X2J1Zi1cdTAwM2V3YWl0LCBtZ210X2J1Zi1cdTAwM2VidWYsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY1xuaW5kZXggZDgxODI1NDEzOTA2MS4uNjA5ZDQ1OGNhNmM1NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY1xuQEAgLTE0NjksNiAmIzQzOzE0NjksNyBAQCB2b2lkIGF0aDZrbF9yeChzdHJ1Y3QgaHRjX3RhcmdldCAqdGFyZ2V0LCBzdHJ1Y3QgaHRjX3BhY2tldCAqcGFja2V0KVxuIFx0XHRcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZjb25uLVx1MDAzZXBzcV9sb2NrKTtcbiBcdFx0XHRcdFx0aWR4ID0gdmlmLVx1MDAzZWZ3X3ZpZl9pZHg7XG4gXG4mIzQzO1x0XHRcdFx0XHRhci1cdTAwM2V3bWktXHUwMDNlbGFzdF9tZ210X3R4X2Nvb2tpZSA9IG1nbXQtXHUwMDNlY29va2llO1xuIFx0XHRcdFx0XHRhdGg2a2xfd21pX3NlbmRfbWdtdF9jbWQoYXItXHUwMDNld21pLFxuIFx0XHRcdFx0XHRcdFx0XHQgaWR4LFxuIFx0XHRcdFx0XHRcdFx0XHQgbWdtdC1cdTAwM2VpZCxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuY1xuaW5kZXggNmMyOWYwYmNlYzlmNS4uMjE0MGZkZGJhOGJhZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmNcbkBAIC01OTYsNyAmIzQzOzU5Niw3IEBAIHN0YXRpYyBpbnQgYXRoNmtsX3dtaV90eF9zdGF0dXNfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sXG4gXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV01JLCBcJiMzNDt0eF9zdGF0dXM6IGlkPSV4IGFja19zdGF0dXM9JXVcXG5cJiMzNDssXG4gXHRcdCAgIGlkLCBldi1cdTAwM2VhY2tfc3RhdHVzKTtcbiBcdGlmICh3bWktXHUwMDNlbGFzdF9tZ210X3R4X2ZyYW1lKSB7XG4tXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKFx1MDAyNnZpZi1cdTAwM2V3ZGV2LCBpZCxcbiYjNDM7XHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKFx1MDAyNnZpZi1cdTAwM2V3ZGV2LCB3bWktXHUwMDNlbGFzdF9tZ210X3R4X2Nvb2tpZSxcbiBcdFx0XHRcdFx0d21pLVx1MDAzZWxhc3RfbWdtdF90eF9mcmFtZSxcbiBcdFx0XHRcdFx0d21pLVx1MDAzZWxhc3RfbWdtdF90eF9mcmFtZV9sZW4sXG4gXHRcdFx0XHRcdCEhZXYtXHUwMDNlYWNrX3N0YXR1cywgR0ZQX0FUT01JQyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmhcbmluZGV4IDhmYmVjZTNmZGFkOWYuLjg5Y2UyYWJiYjFjZGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oXG5AQCAtMTI1LDYgJiM0MzsxMjUsNyBAQCBzdHJ1Y3Qgd21pIHtcbiBcbiBcdHU4ICpsYXN0X21nbXRfdHhfZnJhbWU7XG4gXHRzaXplX3QgbGFzdF9tZ210X3R4X2ZyYW1lX2xlbjtcbiYjNDM7XHR1NjQgbGFzdF9tZ210X3R4X2Nvb2tpZTtcbiBcdHU4IHNhdmVkX3B3cl9tb2RlO1xuIH07XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmNcbmluZGV4IDVmMmJkOWEzMWZhZjYuLjlhYzMzZDgyN2Y4MDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9jZmc4MDIxMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9jZmc4MDIxMS5jXG5AQCAtMTQzMiw3ICYjNDM7MTQzMiw3IEBAIHN0YXRpYyBpbnQgd2lsX2NmZzgwMjExX3NldF93aXBoeV9wYXJhbXMoc3RydWN0IHdpcGh5ICp3aXBoeSwgaW50IHJhZGlvX2lkeCxcbiBcbiBpbnQgd2lsX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXG4tXHRcdFx0IHU2NCAqY29va2llKVxuJiM0MztcdFx0XHQgdTY0IGNvb2tpZSlcbiB7XG4gXHRjb25zdCB1OCAqYnVmID0gcGFyYW1zLVx1MDAzZWJ1ZjtcbiBcdHNpemVfdCBsZW4gPSBwYXJhbXMtXHUwMDNlbGVuO1xuQEAgLTE0ODgsOCAmIzQzOzE0ODgsNyBAQCBpbnQgd2lsX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdCAqL1xuIFx0dHhfc3RhdHVzID0gKHJjID09IDApO1xuIFx0cmMgPSAocmMgPT0gLUVBR0FJTikgPyAwIDogcmM7XG4tXHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBjb29raWUgPyAqY29va2llIDogMCwgYnVmLCBsZW4sXG4tXHRcdFx0XHR0eF9zdGF0dXMsIEdGUF9LRVJORUwpO1xuJiM0MztcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHR4X3N0YXR1cywgR0ZQX0tFUk5FTCk7XG4gXG4gXHRyZXR1cm4gcmM7XG4gfVxuQEAgLTE3MzUsNyAmIzQzOzE3MzQsNyBAQCBzdGF0aWMgaW50IHdpbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0IHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHQgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuIFx0XHRcdFx0IHVuc2lnbmVkIGludCBkdXJhdGlvbixcbi1cdFx0XHRcdCB1NjQgKmNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpXG4mIzQzO1x0XHRcdFx0IHU2NCBjb29raWUsIGNvbnN0IHU4ICpyeF9hZGRyKVxuIHtcbiBcdHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCA9IHdpcGh5X3RvX3dpbCh3aXBoeSk7XG4gXHRpbnQgcmM7XG5AQCAtMjM4MSw3ICYjNDM7MjM4MCw3IEBAIHZvaWQgd2lsX3Byb2JlX2NsaWVudF9mbHVzaChzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZilcbiBcbiBzdGF0aWMgaW50IHdpbF9jZmc4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0XHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLVx0XHRcdFx0ICAgY29uc3QgdTggKnBlZXIsIHU2NCAqY29va2llKVxuJiM0MztcdFx0XHRcdCAgIGNvbnN0IHU4ICpwZWVyLCB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCA9IHdpcGh5X3RvX3dpbCh3aXBoeSk7XG4gXHRzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZiA9IG5kZXZfdG9fdmlmKGRldik7XG5AQCAtMjM5OSwxMyAmIzQzOzIzOTgsMTIgQEAgc3RhdGljIGludCB3aWxfY2ZnODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcbiBcdHJlcS1cdTAwM2VjaWQgPSBjaWQ7XG4tXHRyZXEtXHUwMDNlY29va2llID0gY2lkO1xuJiM0MztcdHJlcS1cdTAwM2Vjb29raWUgPSBjb29raWU7XG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNnZpZi1cdTAwM2Vwcm9iZV9jbGllbnRfbXV0ZXgpO1xuIFx0bGlzdF9hZGRfdGFpbChcdTAwMjZyZXEtXHUwMDNlbGlzdCwgXHUwMDI2dmlmLVx1MDAzZXByb2JlX2NsaWVudF9wZW5kaW5nKTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZ2aWYtXHUwMDNlcHJvYmVfY2xpZW50X211dGV4KTtcbiBcbi1cdCpjb29raWUgPSByZXEtXHUwMDNlY29va2llO1xuIFx0cXVldWVfd29yayh3aWwtXHUwMDNld3Ffc2VydmljZSwgXHUwMDI2dmlmLVx1MDAzZXByb2JlX2NsaWVudF93b3JrZXIpO1xuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2RlYnVnZnMuY1xuaW5kZXggYjhjYjczNmE3MTg1Mi4uZTA2ZTQ1MzIzMjcyYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2RlYnVnZnMuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvZGVidWdmcy5jXG5AQCAtOTg1LDcgJiM0Mzs5ODUsNyBAQCBzdGF0aWMgc3NpemVfdCB3aWxfd3JpdGVfZmlsZV90eG1nbXQoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICpidWYsXG4gXHRwYXJhbXMuYnVmID0gZnJhbWU7XG4gXHRwYXJhbXMubGVuID0gbGVuO1xuIFxuLVx0cmMgPSB3aWxfY2ZnODAyMTFfbWdtdF90eCh3aXBoeSwgd2RldiwgXHUwMDI2cGFyYW1zLCBOVUxMKTtcbiYjNDM7XHRyYyA9IHdpbF9jZmc4MDIxMV9tZ210X3R4KHdpcGh5LCB3ZGV2LCBcdTAwMjZwYXJhbXMsIDApO1xuIFxuIFx0a2ZyZWUoZnJhbWUpO1xuIFx0d2lsX2luZm8od2lsLCBcJiMzNDstXHUwMDNlICVkXFxuXCYjMzQ7LCByYyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvcDJwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9wMnAuY1xuaW5kZXggZjIwY2FmMWEzOTA1Yi4uYWNkOGEyZTM1MTAzMiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3AycC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9wMnAuY1xuQEAgLTEyNCw3ICYjNDM7MTI0LDcgQEAgaW50IHdpbF9wMnBfc2VhcmNoKHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmLFxuIFxuIGludCB3aWxfcDJwX2xpc3RlbihzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwsIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdCAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuLVx0XHQgICB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdCAgIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IHdpbDYyMTBfdmlmICp2aWYgPSB3ZGV2X3RvX3ZpZih3aWwsIHdkZXYpO1xuIFx0c3RydWN0IHdpbF9wMnBfaW5mbyAqcDJwID0gXHUwMDI2dmlmLVx1MDAzZXAycDtcbkBAIC0xNDQsNyAmIzQzOzE0NCw3IEBAIGludCB3aWxfcDJwX2xpc3RlbihzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwsIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHR9XG4gXG4gXHRtZW1jcHkoXHUwMDI2cDJwLVx1MDAzZWxpc3Rlbl9jaGFuLCBjaGFuLCBzaXplb2YoKmNoYW4pKTtcbi1cdCpjb29raWUgPSAmIzQzOyYjNDM7cDJwLVx1MDAzZWNvb2tpZTtcbiYjNDM7XHRwMnAtXHUwMDNlY29va2llID0gY29va2llO1xuIFx0cDJwLVx1MDAzZWxpc3Rlbl9kdXJhdGlvbiA9IGR1cmF0aW9uO1xuIFxuIFx0bXV0ZXhfbG9jayhcdTAwMjZ3aWwtXHUwMDNldmlmX211dGV4KTtcbkBAIC0xNjYsNyAmIzQzOzE2Niw3IEBAIGludCB3aWxfcDJwX2xpc3RlbihzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwsIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRpZiAodmlmLVx1MDAzZW1pZCA9PSAwKVxuIFx0XHR3aWwtXHUwMDNlcmFkaW9fd2RldiA9IHdkZXY7XG4gXG4tXHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sIGR1cmF0aW9uLFxuJiM0MztcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLCBkdXJhdGlvbixcbiBcdFx0XHRcdCAgR0ZQX0tFUk5FTCk7XG4gXG4gb3V0OlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dpbDYyMTAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dpbDYyMTAuaFxuaW5kZXggMzFlMTA3YzgxZTJkNC4uZjhlNjBiZTYzMWNhNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dpbDYyMTAuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd2lsNjIxMC5oXG5AQCAtMTMwMSw3ICYjNDM7MTMwMSw3IEBAIGludCB3aWxfcDJwX3NlYXJjaChzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZixcbiBcdFx0ICAgc3RydWN0IGNmZzgwMjExX3NjYW5fcmVxdWVzdCAqcmVxdWVzdCk7XG4gaW50IHdpbF9wMnBfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0ICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXG4tXHRcdCAgIHU2NCAqY29va2llKTtcbiYjNDM7XHRcdCAgIHU2NCBjb29raWUpO1xuIHU4IHdpbF9wMnBfc3RvcF9kaXNjb3Zlcnkoc3RydWN0IHdpbDYyMTBfdmlmICp2aWYpO1xuIGludCB3aWxfcDJwX2NhbmNlbF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfdmlmICp2aWYsIHU2NCBjb29raWUpO1xuIHZvaWQgd2lsX3AycF9saXN0ZW5fZXhwaXJlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspO1xuQEAgLTEzMTcsNyAmIzQzOzEzMTcsNyBAQCBpbnQgd21pX3N0b3BfZGlzY292ZXJ5KHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmKTtcbiBcbiBpbnQgd2lsX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXG4tXHRcdFx0IHU2NCAqY29va2llKTtcbiYjNDM7XHRcdFx0IHU2NCBjb29raWUpO1xuIHZvaWQgd2lsX2NmZzgwMjExX2FwX3JlY292ZXJ5KHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCk7XG4gaW50IHdpbF9jZmc4MDIxMV9pZmFjZV9jb21iaW5hdGlvbnNfZnJvbV9mdyhcbiBcdHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXG5pbmRleCA2YjJjMzRlM2E3OTZjLi44NzJjNDg4MDZkMDkxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXG5AQCAtNTU1NCw3ICYjNDM7NTU1NCw3IEBAIGJyY21mX2NmZzgwMjExX3VwZGF0ZV9tZ210X2ZyYW1lX3JlZ2lzdHJhdGlvbnMoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcbiBpbnRcbiBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tXHRcdCAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXG4mIzQzO1x0XHQgICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyA9IHdpcGh5X3RvX2NmZyh3aXBoeSk7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4gPSBwYXJhbXMtXHUwMDNlY2hhbjtcbkBAIC01NTczLDggJiM0Mzs1NTczLDYgQEAgYnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFxuIFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtFbnRlclxcblwmIzM0Oyk7XG4gXG4tXHQqY29va2llID0gMDtcbi1cbiBcdG1nbXQgPSAoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICopYnVmO1xuIFxuIFx0aWYgKCFpZWVlODAyMTFfaXNfbWdtdChtZ210LVx1MDAzZWZyYW1lX2NvbnRyb2wpKSB7XG5AQCAtNTYwNSw3ICYjNDM7NTYwMyw3IEBAIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdFx0ICAgIEJSQ01GX1ZORFJfSUVfUFJCUlNQX0ZMQUcsXG4gXHRcdFx0XHRcdCAgICBcdTAwMjZidWZbaWVfb2Zmc2V0XSxcbiBcdFx0XHRcdFx0ICAgIGllX2xlbik7XG4tXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsICpjb29raWUsIGJ1ZiwgbGVuLCB0cnVlLFxuJiM0MztcdFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgdHJ1ZSxcbiBcdFx0XHRcdFx0R0ZQX0tFUk5FTCk7XG4gXHR9IGVsc2UgaWYgKGllZWU4MDIxMV9pc19hY3Rpb24obWdtdC1cdTAwM2VmcmFtZV9jb250cm9sKSkge1xuIFx0XHRpZiAobGVuIFx1MDAzZSBCUkNNRl9GSUxfQUNUSU9OX0ZSQU1FX1NJWkUgJiM0MzsgRE9UMTFfTUdNVF9IRFJfTEVOKSB7XG5AQCAtNTYyMSw3ICYjNDM7NTYxOSw3IEBAIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0fVxuIFx0XHRhY3Rpb25fZnJhbWUgPSBcdTAwMjZhZl9wYXJhbXMtXHUwMDNlYWN0aW9uX2ZyYW1lO1xuIFx0XHQvKiBBZGQgdGhlIHBhY2tldCBJZCAqL1xuLVx0XHRhY3Rpb25fZnJhbWUtXHUwMDNlcGFja2V0X2lkID0gY3B1X3RvX2xlMzIoKmNvb2tpZSk7XG4mIzQzO1x0XHRhY3Rpb25fZnJhbWUtXHUwMDNlcGFja2V0X2lkID0gY3B1X3RvX2xlMzIoY29va2llKTtcbiBcdFx0LyogQWRkIEJTU0lEICovXG4gXHRcdG1lbWNweShcdTAwMjZhY3Rpb25fZnJhbWUtXHUwMDNlZGFbMF0sIFx1MDAyNm1nbXQtXHUwMDNlZGFbMF0sIEVUSF9BTEVOKTtcbiBcdFx0bWVtY3B5KFx1MDAyNmFmX3BhcmFtcy1cdTAwM2Vic3NpZFswXSwgXHUwMDI2bWdtdC1cdTAwM2Vic3NpZFswXSwgRVRIX0FMRU4pO1xuQEAgLTU2NDksMTIgJiM0Mzs1NjQ3LDEyIEBAIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0ICAgICAgIGxlMTZfdG9fY3B1KGFjdGlvbl9mcmFtZS1cdTAwM2VsZW4pKTtcbiBcbiBcdFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtBY3Rpb24gZnJhbWUsIGNvb2tpZT0lbGxkLCBsZW49JWQsIGNoYW5uZWw9JWRcXG5cJiMzNDssXG4tXHRcdFx0ICAqY29va2llLCBsZTE2X3RvX2NwdShhY3Rpb25fZnJhbWUtXHUwMDNlbGVuKSxcbiYjNDM7XHRcdFx0ICBjb29raWUsIGxlMTZfdG9fY3B1KGFjdGlvbl9mcmFtZS1cdTAwM2VsZW4pLFxuIFx0XHRcdCAgbGUzMl90b19jcHUoYWZfcGFyYW1zLVx1MDAzZWNoYW5uZWwpKTtcbiBcbiBcdFx0YWNrID0gYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKHZpZi1cdTAwM2VpZnAsIGFmX3BhcmFtcyk7XG4gXG4tXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsICpjb29raWUsIGJ1ZiwgbGVuLCBhY2ssXG4mIzQzO1x0XHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBjb29raWUsIGJ1ZiwgbGVuLCBhY2ssXG4gXHRcdFx0XHRcdEdGUF9LRVJORUwpO1xuIGZyZWU6XG4gXHRcdGtmcmVlKGFmX3BhcmFtcyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaFxuaW5kZXggNmNlYjMwMTQyOTA1NC4uNjNlNTM0NTIzZjUxOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaFxuQEAgLTQ5Nyw2ICYjNDM7NDk3LDYgQEAgdm9pZCBicmNtZl9jZmc4MDIxMV9mcmVlX3ZpZihzdHJ1Y3QgbmV0X2RldmljZSAqbmRldik7XG4gXG4gaW50IGJyY21mX3NldF93c2VjKHN0cnVjdCBicmNtZl9pZiAqaWZwLCBjb25zdCB1OCAqa2V5LCB1MTYga2V5X2xlbiwgdTE2IGZsYWdzKTtcbiBpbnQgYnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLVx0XHRcdCAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSk7XG4mIzQzO1x0XHRcdCAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKTtcbiBcbiAjZW5kaWYgLyogQlJDTUZNQUNfQ0ZHODAyMTFfSCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcbmluZGV4IDg3Mzc1NGJlNTE3NGIuLjU0NWViOWFhZTk2NjAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcbkBAIC0xMDAsNyAmIzQzOzEwMCw3IEBAIHN0YXRpYyBpbnQgYnJjbWZfY3l3X2FjdGl2YXRlX2V2ZW50cyhzdHJ1Y3QgYnJjbWZfaWYgKmlmcClcbiBcbiBzdGF0aWNcbiBpbnQgYnJjbWZfY3l3X21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxuJiM0MztcdFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyA9IHdpcGh5X3RvX2NmZyh3aXBoeSk7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4gPSBwYXJhbXMtXHUwMDNlY2hhbjtcbkBAIC0xMjMsNyAmIzQzOzEyMyw2IEBAIGludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0aWYgKCFpZWVlODAyMTFfaXNfYXV0aChtZ210LVx1MDAzZWZyYW1lX2NvbnRyb2wpKVxuIFx0XHRyZXR1cm4gYnJjbWZfY2ZnODAyMTFfbWdtdF90eCh3aXBoeSwgd2RldiwgcGFyYW1zLCBjb29raWUpO1xuIFxuLVx0KmNvb2tpZSA9IDA7XG4gXHR2aWYgPSBjb250YWluZXJfb2Yod2Rldiwgc3RydWN0IGJyY21mX2NmZzgwMjExX3ZpZiwgd2Rldik7XG4gXG4gXHRyZWluaXRfY29tcGxldGlvbihcdTAwMjZ2aWYtXHUwMDNlbWdtdF90eCk7XG5AQCAtMTU1LDcgJiM0MzsxNTQsNyBAQCBpbnQgYnJjbWZfY3l3X21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcbiBcdG1lbWNweShcdTAwMjZtZl9wYXJhbXMtXHUwMDNlZGFbMF0sIFx1MDAyNm1nbXQtXHUwMDNlZGFbMF0sIEVUSF9BTEVOKTtcbiBcdG1lbWNweShcdTAwMjZtZl9wYXJhbXMtXHUwMDNlYnNzaWRbMF0sIFx1MDAyNm1nbXQtXHUwMDNlYnNzaWRbMF0sIEVUSF9BTEVOKTtcbi1cdG1mX3BhcmFtcy1cdTAwM2VwYWNrZXRfaWQgPSBjcHVfdG9fbGUzMigqY29va2llKTtcbiYjNDM7XHRtZl9wYXJhbXMtXHUwMDNlcGFja2V0X2lkID0gY3B1X3RvX2xlMzIoY29va2llKTtcbiBcdG1lbWNweShtZl9wYXJhbXMtXHUwMDNlZGF0YSwgXHUwMDI2YnVmW0RPVDExX01HTVRfSERSX0xFTl0sXG4gXHQgICAgICAgbGUxNl90b19jcHUobWZfcGFyYW1zLVx1MDAzZWxlbikpO1xuIFxuQEAgLTE4Nyw4ICYjNDM7MTg2LDcgQEAgaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHR9XG4gXG4gdHhfc3RhdHVzOlxuLVx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIGFjayxcbi1cdFx0XHRcdEdGUF9LRVJORUwpO1xuJiM0MztcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIGFjaywgR0ZQX0tFUk5FTCk7XG4gZnJlZTpcbiBcdGtmcmVlKG1mX3BhcmFtcyk7XG4gXHRyZXR1cm4gZXJyO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuY1xuaW5kZXggYzdkN2IzNWFiMTI1My4uMzJhMDE1ZDZiNzY5OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXG5AQCAtOTc5LDEwICYjNDM7OTc5LDggQEAgYnJjbWZfcDJwX2Rpc2NvdmVyX2xpc3RlbihzdHJ1Y3QgYnJjbWZfcDJwX2luZm8gKnAycCwgdTE2IGNoYW5uZWwsIHUzMiBkdXJhdGlvbilcbiBcdHAycC1cdTAwM2VjZmctXHUwMDNlZDExaW5mLmVuY2Noc3BlYyhcdTAwMjZjaCk7XG4gXHRlcnIgPSBicmNtZl9wMnBfc2V0X2Rpc2NvdmVyX3N0YXRlKHZpZi1cdTAwM2VpZnAsIFdMX1AyUF9ESVNDX1NUX0xJU1RFTixcbiBcdFx0XHRcdFx0ICAgY2guY2hzcGVjLCAodTE2KWR1cmF0aW9uKTtcbi1cdGlmICghZXJyKSB7XG4mIzQzO1x0aWYgKCFlcnIpXG4gXHRcdHNldF9iaXQoQlJDTUZfUDJQX1NUQVRVU19ESVNDT1ZFUl9MSVNURU4sIFx1MDAyNnAycC1cdTAwM2VzdGF0dXMpO1xuLVx0XHRwMnAtXHUwMDNlcmVtYWluX29uX2NoYW5uZWxfY29va2llJiM0MzsmIzQzOztcbi1cdH1cbiBleGl0OlxuIFx0cmV0dXJuIGVycjtcbiB9XG5AQCAtMTAwMCw3ICYjNDM7OTk4LDcgQEAgYnJjbWZfcDJwX2Rpc2NvdmVyX2xpc3RlbihzdHJ1Y3QgYnJjbWZfcDJwX2luZm8gKnAycCwgdTE2IGNoYW5uZWwsIHUzMiBkdXJhdGlvbilcbiAgKi9cbiBpbnQgYnJjbWZfcDJwX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW5uZWwsXG4tXHRcdFx0XHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLFxuJiM0MztcdFx0XHRcdHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSxcbiBcdFx0XHRcdGNvbnN0IHU4ICpyeF9hZGRyKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcgPSB3aXBoeV90b19jZmcod2lwaHkpO1xuQEAgLTEwMjAsOCAmIzQzOzEwMTgsOCBAQCBpbnQgYnJjbWZfcDJwX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdGdvdG8gZXhpdDtcbiBcbiBcdG1lbWNweShcdTAwMjZwMnAtXHUwMDNlcmVtYWluX29uX2NoYW5uZWwsIGNoYW5uZWwsIHNpemVvZigqY2hhbm5lbCkpO1xuLVx0KmNvb2tpZSA9IHAycC1cdTAwM2VyZW1haW5fb25fY2hhbm5lbF9jb29raWU7XG4tXHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW5uZWwsIGR1cmF0aW9uLCBHRlBfS0VSTkVMKTtcbiYjNDM7XHRwMnAtXHUwMDNlcmVtYWluX29uX2NoYW5uZWxfY29va2llID0gY29va2llO1xuJiM0MztcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFubmVsLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7XG4gXG4gZXhpdDpcbiBcdHJldHVybiBlcnI7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oXG5pbmRleCA5ZjNmMDFhZGUyYjc3Li43MDc4MDA5NDkxNzA3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmhcbkBAIC0xNTcsNyAmIzQzOzE1Nyw3IEBAIGludCBicmNtZl9wMnBfc2Nhbl9wcmVwKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0c3RydWN0IGJyY21mX2NmZzgwMjExX3ZpZiAqdmlmKTtcbiBpbnQgYnJjbWZfcDJwX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW5uZWwsXG4tXHRcdFx0XHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLFxuJiM0MztcdFx0XHRcdHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSxcbiBcdFx0XHRcdGNvbnN0IHU4ICpyeF9hZGRyKTtcbiBpbnQgYnJjbWZfcDJwX25vdGlmeV9saXN0ZW5fY29tcGxldGUoc3RydWN0IGJyY21mX2lmICppZnAsXG4gXHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBicmNtZl9ldmVudF9tc2cgKmUsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY1xuaW5kZXggOGVjMmQyMmE4YzMzYS4uN2ExYmEzMmYxZmIzNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY1xuQEAgLTE5Niw3ICYjNDM7MTk2LDcgQEAgbXdpZmlleF9mb3JtX21nbXRfZnJhbWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbilcbiAgKi9cbiBzdGF0aWMgaW50XG4gbXdpZmlleF9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tXHRcdFx0IHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0IHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxuIHtcbiBcdGNvbnN0IHU4ICpidWYgPSBwYXJhbXMtXHUwMDNlYnVmO1xuIFx0c2l6ZV90IGxlbiA9IHBhcmFtcy1cdTAwM2VsZW47XG5AQCAtMjU5LDE0ICYjNDM7MjU5LDEzIEBAIG13aWZpZXhfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0dHhfaW5mby1cdTAwM2Vwa3RfbGVuID0gcGt0X2xlbjtcbiBcbiBcdG13aWZpZXhfZm9ybV9tZ210X2ZyYW1lKHNrYiwgYnVmLCBsZW4pO1xuLVx0KmNvb2tpZSA9IGdldF9yYW5kb21fdTMyKCkgfCAxO1xuIFxuIFx0aWYgKGllZWU4MDIxMV9pc19hY3Rpb24obWdtdC1cdTAwM2VmcmFtZV9jb250cm9sKSlcbiBcdFx0c2tiID0gbXdpZmlleF9jbG9uZV9za2JfZm9yX3R4X3N0YXR1cyhwcml2LFxuIFx0XHRcdFx0XHRcdCAgICAgIHNrYixcbi1cdFx0XHRcdE1XSUZJRVhfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgY29va2llKTtcbiYjNDM7XHRcdFx0XHRNV0lGSUVYX0JVRl9GTEFHX0FDVElPTl9UWF9TVEFUVVMsIFx1MDAyNmNvb2tpZSk7XG4gXHRlbHNlXG4tXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsICpjb29raWUsIGJ1ZiwgbGVuLCB0cnVlLFxuJiM0MztcdFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgdHJ1ZSxcbiBcdFx0XHRcdFx0R0ZQX0FUT01JQyk7XG4gXG4gXHRtd2lmaWV4X3F1ZXVlX3R4X3BrdChwcml2LCBza2IpO1xuQEAgLTMwNCwxMyAmIzQzOzMwMywxMyBAQCBzdGF0aWMgaW50XG4gbXdpZmlleF9jZmc4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0XHRcdCAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXG4mIzQzO1x0XHRcdFx0ICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLFxuIFx0XHRcdFx0ICAgY29uc3QgdTggKnJ4X2FkZHIpXG4ge1xuIFx0c3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiA9IG13aWZpZXhfbmV0ZGV2X2dldF9wcml2KHdkZXYtXHUwMDNlbmV0ZGV2KTtcbiBcdGludCByZXQ7XG4gXG4tXHRpZiAoIWNoYW4gfHwgIWNvb2tpZSkge1xuJiM0MztcdGlmICghY2hhbikge1xuIFx0XHRtd2lmaWV4X2RiZyhwcml2LVx1MDAzZWFkYXB0ZXIsIEVSUk9SLCBcJiMzNDtJbnZhbGlkIHBhcmFtZXRlciBmb3IgUk9DXFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXHR9XG5AQCAtMzI2LDE1ICYjNDM7MzI1LDE0IEBAIG13aWZpZXhfY2ZnODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdFx0IGR1cmF0aW9uKTtcbiBcbiBcdGlmICghcmV0KSB7XG4tXHRcdCpjb29raWUgPSBnZXRfcmFuZG9tX3UzMigpIHwgMTtcbi1cdFx0cHJpdi1cdTAwM2Vyb2NfY2ZnLmNvb2tpZSA9ICpjb29raWU7XG4mIzQzO1x0XHRwcml2LVx1MDAzZXJvY19jZmcuY29va2llID0gY29va2llO1xuIFx0XHRwcml2LVx1MDAzZXJvY19jZmcuY2hhbiA9ICpjaGFuO1xuIFxuLVx0XHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sXG4mIzQzO1x0XHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsIGNvb2tpZSwgY2hhbixcbiBcdFx0XHRcdFx0ICBkdXJhdGlvbiwgR0ZQX0FUT01JQyk7XG4gXG4gXHRcdG13aWZpZXhfZGJnKHByaXYtXHUwMDNlYWRhcHRlciwgSU5GTyxcbi1cdFx0XHQgICAgXCYjMzQ7aW5mbzogUk9DLCBjb29raWUgPSAweCVsbHhcXG5cJiMzNDssICpjb29raWUpO1xuJiM0MztcdFx0XHQgICAgXCYjMzQ7aW5mbzogUk9DLCBjb29raWUgPSAweCVsbHhcXG5cJiMzNDssIGNvb2tpZSk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gcmV0O1xuQEAgLTQ1NjAsNyAmIzQzOzQ1NTgsNyBAQCBtd2lmaWV4X2NmZzgwMjExX2Rpc2Fzc29jaWF0ZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIHN0YXRpYyBpbnRcbiBtd2lmaWV4X2NmZzgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHQgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKnBlZXIsXG4tXHRcdFx0ICAgIHU2NCAqY29va2llKVxuJiM0MztcdFx0XHQgICAgdTY0IGNvb2tpZSlcbiB7XG4gXHQvKiBob3N0YXBkIGxvb2tzIGZvciBOTDgwMjExX0NNRF9QUk9CRV9DTElFTlQgc3VwcG9ydDsgb3RoZXJ3aXNlLFxuIFx0ICogaXQgcmVxdWlyZXMgbW9uaXRvci1tb2RlIHN1cHBvcnQgKHdoaWNoIG13aWZpZXggZG9lc24mIzM5O3Qgc3VwcG9ydCkuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuY1xuaW5kZXggNjY1NGZjZTRkZWQ4NC4uYmIyNzQ4YTE5MzI5NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9jZmc4MDIxMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuY1xuQEAgLTExMDAsMjQgJiM0MzsxMTAwLDE5IEBAIHN0YXRpYyB2b2lkIHdpbGNfd2ZpX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQoc3RydWN0IHdpbGNfdmlmICp2aWYsIHU2NCBjb29raWUpXG4gc3RhdGljIGludCByZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdCAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHQgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0XHQgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXG4mIzQzO1x0XHRcdCAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLFxuIFx0XHRcdCAgICAgY29uc3QgdTggKnJ4X2FkZHIpXG4ge1xuIFx0aW50IHJldCA9IDA7XG4gXHRzdHJ1Y3Qgd2lsY192aWYgKnZpZiA9IG5ldGRldl9wcml2KHdkZXYtXHUwMDNlbmV0ZGV2KTtcbiBcdHN0cnVjdCB3aWxjX3ByaXYgKnByaXYgPSBcdTAwMjZ2aWYtXHUwMDNlcHJpdjtcbi1cdHU2NCBpZDtcbiBcbiBcdGlmICh3ZGV2LVx1MDAzZWlmdHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCkge1xuIFx0XHRuZXRkZXZfZGJnKHZpZi1cdTAwM2VuZGV2LCBcJiMzNDtSZXF1aXJlZCB3aGlsZSBpbiBBUCBtb2RlXFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIHJldDtcbiBcdH1cbiBcbi1cdGlkID0gJiM0MzsmIzQzO3ByaXYtXHUwMDNlaW5jX3JvY19jb29raWU7XG4tXHRpZiAoaWQgPT0gMClcbi1cdFx0aWQgPSAmIzQzOyYjNDM7cHJpdi1cdTAwM2VpbmNfcm9jX2Nvb2tpZTtcbi1cbi1cdHJldCA9IHdpbGNfcmVtYWluX29uX2NoYW5uZWwodmlmLCBpZCwgY2hhbi1cdTAwM2Vod192YWx1ZSxcbiYjNDM7XHRyZXQgPSB3aWxjX3JlbWFpbl9vbl9jaGFubmVsKHZpZiwgY29va2llLCBjaGFuLVx1MDAzZWh3X3ZhbHVlLFxuIFx0XHRcdFx0ICAgICB3aWxjX3dmaV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG5AQCAtMTEyNSwxMiAmIzQzOzExMjAsMTEgQEAgc3RhdGljIGludCByZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0dmlmLVx1MDAzZXdpbGMtXHUwMDNlb3BfY2ggPSBjaGFuLVx1MDAzZWh3X3ZhbHVlO1xuIFxuIFx0cHJpdi1cdTAwM2VyZW1haW5fb25fY2hfcGFyYW1zLmxpc3Rlbl9jaCA9IGNoYW47XG4tXHRwcml2LVx1MDAzZXJlbWFpbl9vbl9jaF9wYXJhbXMubGlzdGVuX2Nvb2tpZSA9IGlkO1xuLVx0KmNvb2tpZSA9IGlkO1xuJiM0MztcdHByaXYtXHUwMDNlcmVtYWluX29uX2NoX3BhcmFtcy5saXN0ZW5fY29va2llID0gY29va2llO1xuIFx0cHJpdi1cdTAwM2VwMnBfbGlzdGVuX3N0YXRlID0gdHJ1ZTtcbiBcdHByaXYtXHUwMDNlcmVtYWluX29uX2NoX3BhcmFtcy5saXN0ZW5fZHVyYXRpb24gPSBkdXJhdGlvbjtcbiBcbi1cdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgKmNvb2tpZSwgY2hhbiwgZHVyYXRpb24sIEdGUF9LRVJORUwpO1xuJiM0MztcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7XG4gXHRtb2RfdGltZXIoXHUwMDI2dmlmLVx1MDAzZWhpZl9kcnYtXHUwMDNlcmVtYWluX29uX2NoX3RpbWVyLFxuIFx0XHQgIGppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyhkdXJhdGlvbiAmIzQzOyAxMDAwKSk7XG4gXG5AQCAtMTE1Myw3ICYjNDM7MTE0Nyw3IEBAIHN0YXRpYyBpbnQgY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gc3RhdGljIGludCBtZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdCAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdCAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLFxuLVx0XHQgICB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdCAgIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuID0gcGFyYW1zLVx1MDAzZWNoYW47XG4gXHR1bnNpZ25lZCBpbnQgd2FpdCA9IHBhcmFtcy1cdTAwM2V3YWl0O1xuQEAgLTExNzAsOCAmIzQzOzExNjQsNyBAQCBzdGF0aWMgaW50IG1nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdGNvbnN0IHU4ICp2ZW5kb3JfaWU7XG4gXHRpbnQgcmV0ID0gMDtcbiBcbi1cdCpjb29raWUgPSBnZXRfcmFuZG9tX3UzMigpO1xuLVx0cHJpdi1cdTAwM2V0eF9jb29raWUgPSAqY29va2llO1xuJiM0MztcdHByaXYtXHUwMDNldHhfY29va2llID0gY29va2llO1xuIFx0bWdtdCA9IChjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilidWY7XG4gXG4gXHRpZiAoIWllZWU4MDIxMV9pc19tZ210KG1nbXQtXHUwMDNlZnJhbWVfY29udHJvbCkpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmNcbmluZGV4IDRmOWUyMGY3MjgxMTQuLmM4MjBmMDhkMjgzNTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXG5AQCAtMTUwLDcgJiM0MzsxNTAsNyBAQCBueHB3aWZpX2Zvcm1fbWdtdF9mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKVxuIC8qIGNmZzgwMjExIG9wZXJhdGlvbiBoYW5kbGVyIHRvIHRyYW5zbWl0IGEgbWFuYWdlbWVudCBmcmFtZS4gKi9cbiBzdGF0aWMgaW50XG4gbnhwd2lmaV9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tXHRcdFx0IHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0IHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxuIHtcbiBcdGNvbnN0IHU4ICpidWYgPSBwYXJhbXMtXHUwMDNlYnVmO1xuIFx0c2l6ZV90IGxlbiA9IHBhcmFtcy1cdTAwM2VsZW47XG5AQCAtMjEyLDE0ICYjNDM7MjEyLDEzIEBAIG54cHdpZmlfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0dHhfaW5mby1cdTAwM2Vwa3RfbGVuID0gcGt0X2xlbjtcbiBcbiBcdG54cHdpZmlfZm9ybV9tZ210X2ZyYW1lKHNrYiwgYnVmLCBsZW4pO1xuLVx0KmNvb2tpZSA9IG54cHdpZmlfcm9jX2Nvb2tpZShwcml2LVx1MDAzZWFkYXB0ZXIpO1xuIFxuIFx0aWYgKGllZWU4MDIxMV9pc19hY3Rpb24obWdtdC1cdTAwM2VmcmFtZV9jb250cm9sKSlcbiBcdFx0c2tiID0gbnhwd2lmaV9jbG9uZV9za2JfZm9yX3R4X3N0YXR1cyhwcml2LFxuIFx0XHRcdFx0XHRcdCAgICAgIHNrYixcbi1cdFx0XHRcdE5YUFdJRklfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgY29va2llKTtcbiYjNDM7XHRcdFx0XHROWFBXSUZJX0JVRl9GTEFHX0FDVElPTl9UWF9TVEFUVVMsIFx1MDAyNmNvb2tpZSk7XG4gXHRlbHNlXG4tXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsICpjb29raWUsIGJ1ZiwgbGVuLCB0cnVlLFxuJiM0MztcdFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgdHJ1ZSxcbiBcdFx0XHRcdFx0R0ZQX0FUT01JQyk7XG4gXG4gXHRueHB3aWZpX3F1ZXVlX3R4X3BrdChwcml2LCBza2IpO1xuQEAgLTI1NCwxNCAmIzQzOzI1MywxNCBAQCBzdGF0aWMgaW50XG4gbnhwd2lmaV9jZmc4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0XHRcdCAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXG4mIzQzO1x0XHRcdFx0ICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLFxuIFx0XHRcdFx0ICAgY29uc3QgdTggKnJ4X2FkZHIpXG4ge1xuIFx0c3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdiA9IG54cHdpZmlfbmV0ZGV2X2dldF9wcml2KHdkZXYtXHUwMDNlbmV0ZGV2KTtcbiBcdHN0cnVjdCBueHB3aWZpX2FkYXB0ZXIgKmFkYXB0ZXIgPSBwcml2LVx1MDAzZWFkYXB0ZXI7XG4gXHRpbnQgcmV0O1xuIFxuLVx0aWYgKCFjaGFuIHx8ICFjb29raWUpIHtcbiYjNDM7XHRpZiAoIWNoYW4pIHtcbiBcdFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgRVJST1IsIFwmIzM0O0ludmFsaWQgcGFyYW1ldGVyIGZvciBST0NcXG5cJiMzNDspO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbkBAIC0yNzcsMTUgJiM0MzsyNzYsMTQgQEAgbnhwd2lmaV9jZmc4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0XHQgZHVyYXRpb24pO1xuIFxuIFx0aWYgKCFyZXQpIHtcbi1cdFx0KmNvb2tpZSA9IG54cHdpZmlfcm9jX2Nvb2tpZShhZGFwdGVyKTtcbi1cdFx0cHJpdi1cdTAwM2Vyb2NfY2ZnLmNvb2tpZSA9ICpjb29raWU7XG4mIzQzO1x0XHRwcml2LVx1MDAzZXJvY19jZmcuY29va2llID0gY29va2llO1xuIFx0XHRwcml2LVx1MDAzZXJvY19jZmcuY2hhbiA9ICpjaGFuO1xuIFxuLVx0XHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sXG4mIzQzO1x0XHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsIGNvb2tpZSwgY2hhbixcbiBcdFx0XHRcdFx0ICBkdXJhdGlvbiwgR0ZQX0FUT01JQyk7XG4gXG4gXHRcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIElORk8sXG4tXHRcdFx0ICAgIFwmIzM0O2luZm86IFJPQywgY29va2llID0gMHglbGx4XFxuXCYjMzQ7LCAqY29va2llKTtcbiYjNDM7XHRcdFx0ICAgIFwmIzM0O2luZm86IFJPQywgY29va2llID0gMHglbGx4XFxuXCYjMzQ7LCBjb29raWUpO1xuIFx0fVxuIFxuIFx0cmV0dXJuIHJldDtcbkBAIC0zNjE4LDcgJiM0MzszNjE2LDcgQEAgbnhwd2lmaV9jZmc4MDIxMV9kaXNhc3NvY2lhdGUoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBzdGF0aWMgaW50XG4gbnhwd2lmaV9jZmc4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0ICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKnBlZXIsXG4tXHRcdFx0ICAgICAgdTY0ICpjb29raWUpXG4mIzQzO1x0XHRcdCAgICAgIHU2NCBjb29raWUpXG4ge1xuIFx0LypcbiBcdCAqIGhvc3RhcGQgbG9va3MgZm9yIE5MODAyMTFfQ01EX1BST0JFX0NMSUVOVCBzdXBwb3J0OyBvdGhlcndpc2UsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2NmZzgwMjExLmNcbmluZGV4IDllNDRjODVkMjA1MWMuLjQ1ZTJiN2FlOTYzMzMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9jZmc4MDIxMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9jZmc4MDIxMS5jXG5AQCAtNDQ2LDcgJiM0Mzs0NDYsNyBAQCBxdG5mX3VwZGF0ZV9tZ210X2ZyYW1lX3JlZ2lzdHJhdGlvbnMoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcbiBzdGF0aWMgaW50XG4gcXRuZl9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tXHQgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcbiYjNDM7XHQgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBxdG5mX3ZpZiAqdmlmID0gcXRuZl9uZXRkZXZfZ2V0X3ByaXYod2Rldi1cdTAwM2VuZXRkZXYpO1xuIFx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210X2ZyYW1lID0gKHZvaWQgKilwYXJhbXMtXHUwMDNlYnVmO1xuQEAgLTQ1NCw4ICYjNDM7NDU0LDYgQEAgcXRuZl9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHR1MTYgZmxhZ3MgPSAwO1xuIFx0dTE2IGZyZXE7XG4gXG4tXHQqY29va2llID0gc2hvcnRfY29va2llO1xuLVxuIFx0aWYgKHBhcmFtcy1cdTAwM2VvZmZjaGFuKVxuIFx0XHRmbGFncyB8PSBRTElOS19GUkFNRV9UWF9GTEFHX09GRkNIQU47XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvaW9jdGxfY2ZnODAyMTEuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL2lvY3RsX2NmZzgwMjExLmNcbmluZGV4IDZhOTdhZmQ4OWRjNzguLmI1OGRkYTEyOWZmNjYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9pb2N0bF9jZmc4MDIxMS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9pb2N0bF9jZmc4MDIxMS5jXG5AQCAtMjUzMCw3ICYjNDM7MjUzMCw3IEBAIHN0YXRpYyBpbnQgX2NmZzgwMjExX3J0d19tZ210X3R4KHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdTggdHhfY2gsIGNvbnN0IHU4ICpiXG4gXG4gc3RhdGljIGludCBjZmc4MDIxMV9ydHdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0c3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXG4tXHRcdFx0XHR1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0XHR1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gd2Rldl90b19uZGV2KHdkZXYpO1xuIFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuID0gcGFyYW1zLVx1MDAzZWNoYW47XG5AQCAtMjU1MiwxMSAmIzQzOzI1NTIsOCBAQCBzdGF0aWMgaW50IGNmZzgwMjExX3J0d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXG4gXHRwYWRhcHRlciA9IHJ0d19uZXRkZXZfcHJpdihuZGV2KTtcbiBcbi1cdC8qIGNvb2tpZSBnZW5lcmF0aW9uICovXG4tXHQqY29va2llID0gKHVuc2lnbmVkIGxvbmcpYnVmO1xuLVxuIFx0LyogaW5kaWNhdGUgYWNrIGJlZm9yZSBpc3N1ZSBmcmFtZSB0byBhdm9pZCByYWNpbmcgd2l0aCByc3AgZnJhbWUgKi9cbi1cdHJ0d19jZmc4MDIxMV9tZ210X3R4X3N0YXR1cyhwYWRhcHRlciwgKmNvb2tpZSwgYnVmLCBsZW4sIGFjaywgR0ZQX0tFUk5FTCk7XG4mIzQzO1x0cnR3X2NmZzgwMjExX21nbXRfdHhfc3RhdHVzKHBhZGFwdGVyLCBjb29raWUsIGJ1ZiwgbGVuLCBhY2ssIEdGUF9LRVJORUwpO1xuIFxuIFx0aWYgKCFydHdfYWN0aW9uX2ZyYW1lX3BhcnNlKGJ1ZiwgbGVuLCBcdTAwMjZjYXRlZ29yeSwgXHUwMDI2YWN0aW9uKSlcbiBcdFx0Z290byBleGl0O1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2NmZzgwMjExLmggYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oXG5pbmRleCBkY2JiMGU1NWMzMmVjLi45N2MxNmQ0ZmYxMjcxIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxuQEAgLTUxMDgsNyAmIzQzOzUxMDgsOCBAQCBzdHJ1Y3QgbWdtdF9mcmFtZV9yZWdzIHtcbiAgKiBAdGRsc19vcGVyOiBQZXJmb3JtIGEgaGlnaC1sZXZlbCBURExTIG9wZXJhdGlvbiAoZS5nLiBURExTIGxpbmsgc2V0dXApLlxuICAqXG4gICogQHByb2JlX3BlZXI6IHByb2JlIGEgY29ubmVjdGVkIHBlZXIgKEFQOiBTVEEgTUFDIHJlcXVpcmVkOyBTVEE6IG5vIE1BQyksXG4tICpcdG11c3QgcmV0dXJuIGEgY29va2llIHRoYXQgaXMgbGF0ZXIgcGFzc2VkIHRvIGNmZzgwMjExX3Byb2JlX3N0YXR1cygpLlxuJiM0MzsgKlx0bXVzdCB1c2UgdGhlIEBjb29raWUgYXMgcHJvdmlkZWQgd2hpY2ggaXMgbGF0ZXIgcGFzc2VkIHRvXG4mIzQzOyAqXHRjZmc4MDIxMV9wcm9iZV9zdGF0dXMoKS5cbiAgKlxuICAqIEBzZXRfbm9hY2tfbWFwOiBTZXQgdGhlIE5vQWNrIE1hcCBmb3IgdGhlIFRJRHMuXG4gICpcbkBAIC01MjE5LDcgJiM0Mzs1MjIwLDggQEAgc3RydWN0IG1nbXRfZnJhbWVfcmVncyB7XG4gICogICAgIHVzZXIgc3BhY2VcbiAgKlxuICAqIEB0eF9jb250cm9sX3BvcnQ6IFRYIGEgY29udHJvbCBwb3J0IGZyYW1lIChFQVBvTCkuICBUaGUgbm9lbmNyeXB0IHBhcmFtZXRlclxuLSAqXHR0ZWxscyB0aGUgZHJpdmVyIHRoYXQgdGhlIGZyYW1lIHNob3VsZCBub3QgYmUgZW5jcnlwdGVkLlxuJiM0MzsgKlx0dGVsbHMgdGhlIGRyaXZlciB0aGF0IHRoZSBmcmFtZSBzaG91bGQgbm90IGJlIGVuY3J5cHRlZC4gQSBAY29va2llXG4mIzQzOyAqXHR2YWx1ZSBvZiAwIG1lYW5zIHRoZSBjYWxsZXIgZG9lcyBub3Qgd2FudCBUWCBzdGF0dXMgcmVwb3J0aW5nLlxuICAqXG4gICogQGdldF9mdG1fcmVzcG9uZGVyX3N0YXRzOiBSZXRyaWV2ZSBGVE0gcmVzcG9uZGVyIHN0YXRpc3RpY3MsIGlmIGF2YWlsYWJsZS5cbiAgKlx0U3RhdGlzdGljcyBzaG91bGQgYmUgY3VtdWxhdGl2ZSwgY3VycmVudGx5IG5vIHdheSB0byByZXNldCBpcyBwcm92aWRlZC5cbkBAIC01NDU2LDE0ICYjNDM7NTQ1OCwxNCBAQCBzdHJ1Y3QgY2ZnODAyMTFfb3BzIHtcbiBcdFx0XHRcdCAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuIFx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sXG4tXHRcdFx0XHQgICAgIHU2NCAqY29va2llLCBjb25zdCB1OCAqcnhfYWRkcik7XG4mIzQzO1x0XHRcdFx0ICAgICB1NjQgY29va2llLCBjb25zdCB1OCAqcnhfYWRkcik7XG4gXHRpbnRcdCgqY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0XHQgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdFx0ICAgIHU2NCBjb29raWUpO1xuIFxuIFx0aW50XHQoKm1nbXRfdHgpKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0ICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXG4tXHRcdFx0ICAgdTY0ICpjb29raWUpO1xuJiM0MztcdFx0XHQgICB1NjQgY29va2llKTtcbiBcdGludFx0KCptZ210X3R4X2NhbmNlbF93YWl0KShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICAgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHQgICAgICAgdTY0IGNvb2tpZSk7XG5AQCAtNTUxMCw3ICYjNDM7NTUxMiw3IEBAIHN0cnVjdCBjZmc4MDIxMV9vcHMge1xuIFx0XHRcdCAgICAgY29uc3QgdTggKnBlZXIsIGVudW0gbmw4MDIxMV90ZGxzX29wZXJhdGlvbiBvcGVyKTtcbiBcbiBcdGludFx0KCpwcm9iZV9wZWVyKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLVx0XHRcdCAgICAgIGNvbnN0IHU4ICpwZWVyLCB1NjQgKmNvb2tpZSk7XG4mIzQzO1x0XHRcdCAgICAgIGNvbnN0IHU4ICpwZWVyLCB1NjQgY29va2llKTtcbiBcbiBcdGludFx0KCpzZXRfbm9hY2tfbWFwKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuQEAgLTU2MDgsNyAmIzQzOzU2MTAsNyBAQCBzdHJ1Y3QgY2ZnODAyMTFfb3BzIHtcbiBcdFx0XHRcdCAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sXG4gXHRcdFx0XHQgICBjb25zdCB1OCAqZGVzdCwgY29uc3QgX19iZTE2IHByb3RvLFxuIFx0XHRcdFx0ICAgY29uc3QgYm9vbCBub2VuY3J5cHQsIGludCBsaW5rX2lkLFxuLVx0XHRcdFx0ICAgdTY0ICpjb29raWUpO1xuJiM0MztcdFx0XHRcdCAgIHU2NCBjb29raWUpO1xuIFxuIFx0aW50XHQoKmdldF9mdG1fcmVzcG9uZGVyX3N0YXRzKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0c3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvY2ZnLmMgYi9uZXQvbWFjODAyMTEvY2ZnLmNcbmluZGV4IDBhOTI0N2JlMjZhZmEuLjBjMmM3YWZkNTljNGEgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvY2ZnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9jZmcuY1xuQEAgLTQ4MzEsMTkgJiM0Mzs0ODMxLDYgQEAgaW50IGllZWU4MDIxMV9jaGFubmVsX3N3aXRjaChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0cmV0dXJuIF9faWVlZTgwMjExX2NoYW5uZWxfc3dpdGNoKHdpcGh5LCBkZXYsIHBhcmFtcyk7XG4gfVxuIFxuLXU2NCBpZWVlODAyMTFfbWdtdF90eF9jb29raWUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXG4te1xuLVx0bG9ja2RlcF9hc3NlcnRfd2lwaHkobG9jYWwtXHUwMDNlaHcud2lwaHkpO1xuLVxuLVx0bG9jYWwtXHUwMDNlcm9jX2Nvb2tpZV9jb3VudGVyJiM0MzsmIzQzOztcbi1cbi1cdC8qIHdvdywgeW91IHdyYXBwZWQgNjQgYml0cyAuLi4gbW9yZSBsaWtlbHkgYSBidWcgKi9cbi1cdGlmIChXQVJOX09OKGxvY2FsLVx1MDAzZXJvY19jb29raWVfY291bnRlciA9PSAwKSlcbi1cdFx0bG9jYWwtXHUwMDNlcm9jX2Nvb2tpZV9jb3VudGVyJiM0MzsmIzQzOztcbi1cbi1cdHJldHVybiBsb2NhbC1cdTAwM2Vyb2NfY29va2llX2NvdW50ZXI7XG4tfVxuLVxuIGludCBpZWVlODAyMTFfYXR0YWNoX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICAgICB1NjQgKmNvb2tpZSwgZ2ZwX3QgZ2ZwKVxuIHtcbkBAIC00ODY4LDcgJiM0Mzs0ODU1LDYgQEAgaW50IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdElFRUU4MDIxMV9TS0JfQ0Ioc2tiKS1cdTAwM2VzdGF0dXNfZGF0YV9pZHIgPSAxO1xuIFx0SUVFRTgwMjExX1NLQl9DQihza2IpLVx1MDAzZXN0YXR1c19kYXRhID0gaWQ7XG4gXG4tXHQqY29va2llID0gaWVlZTgwMjExX21nbXRfdHhfY29va2llKGxvY2FsKTtcbiBcdElFRUU4MDIxMV9TS0JfQ0IoYWNrX3NrYiktXHUwMDNlYWNrLmNvb2tpZSA9ICpjb29raWU7XG4gXG4gXHRyZXR1cm4gMDtcbkBAIC00OTU0LDcgJiM0Mzs0OTQwLDcgQEAgc3RhdGljIGludCBpZWVlODAyMTFfc2V0X3Jla2V5X2RhdGEoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiB9XG4gXG4gc3RhdGljIGludCBpZWVlODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLVx0XHRcdFx0Y29uc3QgdTggKnBlZXIsIHU2NCAqY29va2llKVxuJiM0MztcdFx0XHRcdGNvbnN0IHU4ICpwZWVyLCB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcbiBcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5AQCAtNTA2MSw3ICYjNDM7NTA0Nyw3IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGlmIChxb3MpXG4gXHRcdG51bGxmdW5jLVx1MDAzZXFvc19jdHJsID0gY3B1X3RvX2xlMTYoNyk7XG4gXG4tXHRyZXQgPSBpZWVlODAyMTFfYXR0YWNoX2Fja19za2IobG9jYWwsIHNrYiwgY29va2llLCBHRlBfQVRPTUlDKTtcbiYjNDM7XHRyZXQgPSBpZWVlODAyMTFfYXR0YWNoX2Fja19za2IobG9jYWwsIHNrYiwgXHUwMDI2Y29va2llLCBHRlBfQVRPTUlDKTtcbiBcdGlmIChyZXQpIHtcbiBcdFx0a2ZyZWVfc2tiKHNrYik7XG4gXHRcdHJldHVybiByZXQ7XG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmggYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxuaW5kZXggYTFlZjg4ZmU4NDZkZC4uNTc2MWU5NjIxNDkxNCAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxuQEAgLTE3MTAsOCAmIzQzOzE3MTAsNiBAQCBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsIHtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgcm9jX2xpc3Q7XG4gXHRzdHJ1Y3Qgd2lwaHlfd29yayBod19yb2Nfc3RhcnQsIGh3X3JvY19kb25lO1xuIFx0dW5zaWduZWQgbG9uZyBod19yb2Nfc3RhcnRfdGltZTtcbi1cdHU2NCByb2NfY29va2llX2NvdW50ZXI7XG4tXG4gXHRzdHJ1Y3QgaWRyIGFja19zdGF0dXNfZnJhbWVzO1xuIFx0c3BpbmxvY2tfdCBhY2tfc3RhdHVzX2xvY2s7XG4gXG5AQCAtMTk5MSw3ICYjNDM7MTk4OSw2IEBAIHU2NCBpZWVlODAyMTFfcmVzZXRfZXJwX2luZm8oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpO1xuIFxuIHZvaWQgaWVlZTgwMjExX2hhbmRsZV9xdWV1ZWRfZnJhbWVzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKTtcbiBcbi11NjQgaWVlZTgwMjExX21nbXRfdHhfY29va2llKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKTtcbiBpbnQgaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAgICAgdTY0ICpjb29raWUsIGdmcF90IGdmcCk7XG4gXG5AQCAtMjE1MywxMiAmIzQzOzIxNTAsMTIgQEAgdm9pZCBpZWVlODAyMTFfcm9jX3B1cmdlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuIFx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XG4gaW50IGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuLVx0XHRcdFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcbiYjNDM7XHRcdFx0XHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXG4gXHRcdFx0XHRjb25zdCB1OCAqcnhfYWRkcik7XG4gaW50IGllZWU4MDIxMV9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdCAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LCB1NjQgY29va2llKTtcbiBpbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKTtcbiYjNDM7XHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKTtcbiBpbnQgaWVlZTgwMjExX21nbXRfdHhfY2FuY2VsX3dhaXQoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdCAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgdTY0IGNvb2tpZSk7XG4gXG5AQCAtMjIzNyw3ICYjNDM7MjIzNCw3IEBAIHZvaWQgX19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdFx0ICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdFx0ICB1MzIgaW5mb19mbGFncyxcbiBcdFx0XHRcdCAgdTMyIGN0cmxfZmxhZ3MsXG4tXHRcdFx0XHQgIHU2NCAqY29va2llKTtcbiYjNDM7XHRcdFx0XHQgIHU2NCBjb29raWUpO1xuIHN0cnVjdCBza19idWZmICpcbiBpZWVlODAyMTFfYnVpbGRfZGF0YV90ZW1wbGF0ZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mb19mbGFncyk7XG5AQCAtMjI1MSw3ICYjNDM7MjI0OCw3IEBAIHZvaWQgaWVlZTgwMjExX2NsZWFyX2Zhc3RfeG1pdChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSk7XG4gaW50IGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHQgICAgICBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLFxuIFx0XHRcdCAgICAgIGNvbnN0IHU4ICpkZXN0LCBfX2JlMTYgcHJvdG8sIGJvb2wgdW5lbmNyeXB0ZWQsXG4tXHRcdFx0ICAgICAgaW50IGxpbmtfaWQsIHU2NCAqY29va2llKTtcbiYjNDM7XHRcdFx0ICAgICAgaW50IGxpbmtfaWQsIHU2NCBjb29raWUpO1xuIGludCBpZWVlODAyMTFfcHJvYmVfbWVzaF9saW5rKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0ICAgICAgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbik7XG4gdm9pZCBfX2llZWU4MDIxMV94bWl0X2Zhc3Qoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL29mZmNoYW5uZWwuYyBiL25ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmNcbmluZGV4IDJiY2ViNzM3MTdjNjYuLjdhY2VmODBkNWYxZmIgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jXG5AQCAtNjAyLDE0ICYjNDM7NjAyLDEyIEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuIFxuIFx0LypcbiBcdCAqIGNvb2tpZSBpcyBlaXRoZXIgdGhlIHJvYyBjb29raWUgKGZvciBub3JtYWwgcm9jKVxuLVx0ICogb3IgdGhlIFNLQiAoZm9yIG1nbXQgVFgpXG4mIzQzO1x0ICogb3IgdGhlIG1nbXRfdHggY29va2llOyBib3RoIGFyZSBwcmUtYXNzaWduZWQgYnkgY2ZnODAyMTFcbiBcdCAqL1xuLVx0aWYgKCF0eHNrYikge1xuLVx0XHRyb2MtXHUwMDNlY29va2llID0gaWVlZTgwMjExX21nbXRfdHhfY29va2llKGxvY2FsKTtcbi1cdFx0KmNvb2tpZSA9IHJvYy1cdTAwM2Vjb29raWU7XG4tXHR9IGVsc2Uge1xuJiM0MztcdGlmICghdHhza2IpXG4mIzQzO1x0XHRyb2MtXHUwMDNlY29va2llID0gKmNvb2tpZTtcbiYjNDM7XHRlbHNlXG4gXHRcdHJvYy1cdTAwM2VtZ210X3R4X2Nvb2tpZSA9ICpjb29raWU7XG4tXHR9XG4gXG4gXHRyZXEgPSB3aXBoeV9kZXJlZmVyZW5jZShsb2NhbC1cdTAwM2Vody53aXBoeSwgbG9jYWwtXHUwMDNlc2Nhbl9yZXEpO1xuIFxuQEAgLTcwNCw3ICYjNDM7NzAyLDcgQEAgc3RhdGljIGludCBpZWVlODAyMTFfc3RhcnRfcm9jX3dvcmsoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4gXG4gaW50IGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuLVx0XHRcdFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcbiYjNDM7XHRcdFx0XHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXG4gXHRcdFx0XHRjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTtcbkBAIC03MTMsNyAmIzQzOzcxMSw3IEBAIGludCBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGxvY2FsLVx1MDAzZWh3LndpcGh5KTtcbiBcbiBcdHJldHVybiBpZWVlODAyMTFfc3RhcnRfcm9jX3dvcmsobG9jYWwsIHNkYXRhLCBjaGFuLFxuLVx0XHRcdFx0XHRkdXJhdGlvbiwgY29va2llLCBOVUxMLFxuJiM0MztcdFx0XHRcdFx0ZHVyYXRpb24sIFx1MDAyNmNvb2tpZSwgTlVMTCxcbiBcdFx0XHRcdFx0SUVFRTgwMjExX1JPQ19UWVBFX05PUk1BTCk7XG4gfVxuIFxuQEAgLTgxMCw3ICYjNDM7ODA4LDcgQEAgaW50IGllZWU4MDIxMV9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiB9XG4gXG4gaW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tXHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX1dERVZfVE9fU1VCX0lGKHdkZXYpO1xuIFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbkBAIC0xMDE2LDE4ICYjNDM7MTAxNCwxMSBAQCBpbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0LyogbWFrZSBhIGNvcHkgdG8gcHJlc2VydmUgdGhlIGZyYW1lIGNvbnRlbnRzXG4gXHRcdCAqIGluIGNhc2Ugb2YgZW5jcnlwdGlvbi5cbiBcdFx0ICovXG4tXHRcdHJldCA9IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihsb2NhbCwgc2tiLCBjb29raWUsIEdGUF9LRVJORUwpO1xuJiM0MztcdFx0cmV0ID0gaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKGxvY2FsLCBza2IsIFx1MDAyNmNvb2tpZSwgR0ZQX0tFUk5FTCk7XG4gXHRcdGlmIChyZXQpIHtcbiBcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXHRcdH1cbi1cdH0gZWxzZSB7XG4tXHRcdC8qIEFzc2lnbiBhIGR1bW15IG5vbi16ZXJvIGNvb2tpZSwgaXQmIzM5O3Mgbm90IHNlbnQgdG9cbi1cdFx0ICogdXNlcnNwYWNlIGluIHRoaXMgY2FzZSBidXQgd2UgcmVseSBvbiBpdHMgdmFsdWVcbi1cdFx0ICogaW50ZXJuYWxseSBpbiB0aGUgbmVlZF9vZmZjaGFuIGNhc2UgdG8gZGlzdGluZ3Vpc2hcbi1cdFx0ICogbWdtdC10eCBmcm9tIHJlbWFpbi1vbi1jaGFubmVsLlxuLVx0XHQgKi9cbi1cdFx0KmNvb2tpZSA9IDB4ZmZmZmZmZmY7XG4gXHR9XG4gXG4gXHRpZiAoIW5lZWRfb2ZmY2hhbikge1xuQEAgLTEwNDQsNyAmIzQzOzEwMzUsNyBAQCBpbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcbiBcdC8qIFRoaXMgd2lsbCBoYW5kbGUgYWxsIGtpbmRzIG9mIGNvYWxlc2NpbmcgYW5kIGltbWVkaWF0ZSBUWCAqL1xuIFx0cmV0ID0gaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKGxvY2FsLCBzZGF0YSwgcGFyYW1zLVx1MDAzZWNoYW4sXG4tXHRcdFx0XHQgICAgICAgcGFyYW1zLVx1MDAzZXdhaXQsIGNvb2tpZSwgc2tiLFxuJiM0MztcdFx0XHRcdCAgICAgICBwYXJhbXMtXHUwMDNld2FpdCwgXHUwMDI2Y29va2llLCBza2IsXG4gXHRcdFx0XHQgICAgICAgSUVFRTgwMjExX1JPQ19UWVBFX01HTVRfVFgpO1xuIFx0aWYgKHJldClcbiBcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3RkbHMuYyBiL25ldC9tYWM4MDIxMS90ZGxzLmNcbmluZGV4IGZmZDU3NWE4ZDE4OGYuLmRjMmY2NjJmZTRjNDYgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvdGRscy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvdGRscy5jXG5AQCAtMTEyMSw3ICYjNDM7MTEyMSw3IEBAIGllZWU4MDIxMV90ZGxzX3ByZXBfbWdtdF9wYWNrZXQoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdC8qIGRpc2FibGUgYm90dG9tIGhhbHZlcyB3aGVuIGVudGVyaW5nIHRoZSBUeCBwYXRoICovXG4gXHRsb2NhbF9iaF9kaXNhYmxlKCk7XG4gXHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgZGV2LCBmbGFncyxcbi1cdFx0XHRcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLCBOVUxMKTtcbiYjNDM7XHRcdFx0XHQgICAgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LX1VOU1BFQywgMCk7XG4gXHRsb2NhbF9iaF9lbmFibGUoKTtcbiBcbiBcdHJldHVybiByZXQ7XG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3R4LmMgYi9uZXQvbWFjODAyMTEvdHguY1xuaW5kZXggMGNmNWY2ZWM3NWU2Ny4uNDU0YTg3MmIyNTlhMyAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS90eC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvdHguY1xuQEAgLTI1ODMsNyAmIzQzOzI1ODMsNyBAQCBpbnQgaWVlZTgwMjExX2xvb2t1cF9yYV9zdGEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gc3RhdGljIHUxNiBpZWVlODAyMTFfc3RvcmVfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdFx0XHRcdCAgIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHQgICB1MzIgKmluZm9fZmxhZ3MsXG4tXHRcdFx0XHQgICB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0XHQgICB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBza19idWZmICphY2tfc2tiO1xuIFx0dTE2IGluZm9faWQgPSAwO1xuQEAgLTI2MDUsMTAgJiM0MzsyNjA1LDggQEAgc3RhdGljIHUxNiBpZWVlODAyMTFfc3RvcmVfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdFx0aWYgKGlkIFx1MDAzZT0gMCkge1xuIFx0XHRcdGluZm9faWQgPSBpZDtcbiBcdFx0XHQqaW5mb19mbGFncyB8PSBJRUVFODAyMTFfVFhfQ1RMX1JFUV9UWF9TVEFUVVM7XG4tXHRcdFx0aWYgKGNvb2tpZSkge1xuLVx0XHRcdFx0KmNvb2tpZSA9IGllZWU4MDIxMV9tZ210X3R4X2Nvb2tpZShsb2NhbCk7XG4tXHRcdFx0XHRJRUVFODAyMTFfU0tCX0NCKGFja19za2IpLVx1MDAzZWFjay5jb29raWUgPSAqY29va2llO1xuLVx0XHRcdH1cbiYjNDM7XHRcdFx0aWYgKGNvb2tpZSlcbiYjNDM7XHRcdFx0XHRJRUVFODAyMTFfU0tCX0NCKGFja19za2IpLVx1MDAzZWFjay5jb29raWUgPSBjb29raWU7XG4gXHRcdH0gZWxzZSB7XG4gXHRcdFx0a2ZyZWVfc2tiKGFja19za2IpO1xuIFx0XHR9XG5AQCAtMjY1Myw3ICYjNDM7MjY1MSw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9yZW1vdmVfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgdTE2IGluZm9faWQpXG4gc3RhdGljIHN0cnVjdCBza19idWZmICppZWVlODAyMTFfYnVpbGRfaGRyKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIFx0XHRcdFx0XHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mb19mbGFncyxcbiBcdFx0XHRcdFx0ICAgc3RydWN0IHN0YV9pbmZvICpzdGEsIHUzMiBjdHJsX2ZsYWdzLFxuLVx0XHRcdFx0XHQgICB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0XHRcdCAgIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbiBcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbztcbkBAIC00Mzc0LDcgJiM0Mzs0MzcyLDcgQEAgdm9pZCBfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHQgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0XHQgIHUzMiBpbmZvX2ZsYWdzLFxuIFx0XHRcdFx0ICB1MzIgY3RybF9mbGFncyxcbi1cdFx0XHRcdCAgdTY0ICpjb29raWUpXG4mIzQzO1x0XHRcdFx0ICB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcbiBcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5AQCAtNDU2OSw3ICYjNDM7NDU2Nyw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbG9fbXVsdGljYXN0X3R4X29uZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcdFx0cmV0dXJuO1xuIFxuIFx0Y3RybF9mbGFncyB8PSB1MzJfZW5jb2RlX2JpdHMobGlua19pZCwgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTkspO1xuLVx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChvdXQsIHNkYXRhLVx1MDAzZWRldiwgMCwgY3RybF9mbGFncywgTlVMTCk7XG4mIzQzO1x0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChvdXQsIHNkYXRhLVx1MDAzZWRldiwgMCwgY3RybF9mbGFncywgMCk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbG9fbXVsdGljYXN0X3R4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5AQCAtNDU4NCw4ICYjNDM7NDU4Miw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbG9fbXVsdGljYXN0X3R4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdGN0cmxfZmxhZ3MgfD0gdTMyX2VuY29kZV9iaXRzKF9fZmZzKGxpbmtzKSxcbiBcdFx0XHRcdFx0ICAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTkspO1xuIFxuLVx0XHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgc2RhdGEtXHUwMDNlZGV2LCAwLCBjdHJsX2ZsYWdzLFxuLVx0XHRcdFx0XHQgICAgIE5VTEwpO1xuJiM0MztcdFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIHNkYXRhLVx1MDAzZWRldiwgMCwgY3RybF9mbGFncywgMCk7XG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbkBAIC00NjI3LDcgJiM0Mzs0NjI0LDcgQEAgbmV0ZGV2X3R4X3QgaWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0d2hpbGUgKChza2IgPSBfX3NrYl9kZXF1ZXVlKFx1MDAyNnF1ZXVlKSkpXG4gXHRcdFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIGRldiwgMCxcbiBcdFx0XHRcdFx0XHQgICAgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LX1VOU1BFQyxcbi1cdFx0XHRcdFx0XHQgICAgIE5VTEwpO1xuJiM0MztcdFx0XHRcdFx0XHQgICAgIDApO1xuIFx0fSBlbHNlIGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAoKHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgICFpZWVlODAyMTFfaHdfY2hlY2soXHUwMDI2c2RhdGEtXHUwMDNlbG9jYWwtXHUwMDNlaHcsIE1MT19NQ0FTVF9NVUxUSV9MSU5LX1RYKSkgfHxcbkBAIC00NjM4LDcgJiM0Mzs0NjM1LDcgQEAgbmV0ZGV2X3R4X3QgaWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBub3JtYWw6XG4gXHRcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIDAsXG4gXHRcdFx0XHRcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLFxuLVx0XHRcdFx0XHQgICAgIE5VTEwpO1xuJiM0MztcdFx0XHRcdFx0ICAgICAwKTtcbiBcdH1cbiBcbiBcdHJldHVybiBORVRERVZfVFhfT0s7XG5AQCAtNDczNyw3ICYjNDM7NDczNCw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV84MDIzX3htaXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXHRcdFx0LyogZmFsbCBiYWNrIHRvIG5vbi1vZmZsb2FkIHNsb3cgcGF0aCAqL1xuIFx0XHRcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIDAsXG4gXHRcdFx0XHRcdFx0ICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsXG4tXHRcdFx0XHRcdFx0ICAgICBOVUxMKTtcbiYjNDM7XHRcdFx0XHRcdFx0ICAgICAwKTtcbiBcdFx0XHRyZXR1cm47XG4gXHRcdH1cbiBcbkBAIC00NzczLDcgJiM0Mzs0NzcwLDcgQEAgc3RhdGljIHZvaWQgaWVlZTgwMjExXzgwMjNfeG1pdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcbiBcdGlmICh1bmxpa2VseShza19yZXF1ZXN0c193aWZpX3N0YXR1cyhza2ItXHUwMDNlc2spKSkge1xuIFx0XHRpbmZvLVx1MDAzZXN0YXR1c19kYXRhID0gaWVlZTgwMjExX3N0b3JlX2Fja19za2IobG9jYWwsIHNrYixcbi1cdFx0XHRcdFx0XHRcdCAgICBcdTAwMjZpbmZvLVx1MDAzZWZsYWdzLCBOVUxMKTtcbiYjNDM7XHRcdFx0XHRcdFx0XHQgICAgXHUwMDI2aW5mby1cdTAwM2VmbGFncywgMCk7XG4gXHRcdGlmIChpbmZvLVx1MDAzZXN0YXR1c19kYXRhKVxuIFx0XHRcdGluZm8tXHUwMDNlc3RhdHVzX2RhdGFfaWRyID0gMTtcbiBcdH1cbkBAIC00OTE2LDcgJiM0Mzs0OTEzLDcgQEAgaWVlZTgwMjExX2J1aWxkX2RhdGFfdGVtcGxhdGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXHR9XG4gXG4gXHRza2IgPSBpZWVlODAyMTFfYnVpbGRfaGRyKHNkYXRhLCBza2IsIGluZm9fZmxhZ3MsIHN0YSxcbi1cdFx0XHRcdCAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLCBOVUxMKTtcbiYjNDM7XHRcdFx0XHQgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LX1VOU1BFQywgMCk7XG4gXHRpZiAoSVNfRVJSKHNrYikpXG4gXHRcdGdvdG8gb3V0O1xuIFxuQEAgLTY1MzEsNyAmIzQzOzY1MjgsNyBAQCB2b2lkIGllZWU4MDIxMV90eF9za2JfdGlkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIGludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0ICAgICAgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbixcbiBcdFx0XHQgICAgICBjb25zdCB1OCAqZGVzdCwgX19iZTE2IHByb3RvLCBib29sIHVuZW5jcnlwdGVkLFxuLVx0XHRcdCAgICAgIGludCBsaW5rX2lkLCB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0ICAgICAgaW50IGxpbmtfaWQsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xuIFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbkBAIC02NjY2LDcgJiM0Mzs2NjYzLDcgQEAgaW50IGllZWU4MDIxMV9wcm9iZV9tZXNoX2xpbmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGxvY2FsX2JoX2Rpc2FibGUoKTtcbiBcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBza2ItXHUwMDNlZGV2LCAwLFxuIFx0XHRcdFx0ICAgICBJRUVFODAyMTFfVFhfQ1RSTF9TS0lQX01QQVRIX0xPT0tVUCxcbi1cdFx0XHRcdCAgICAgTlVMTCk7XG4mIzQzO1x0XHRcdFx0ICAgICAwKTtcbiBcdGxvY2FsX2JoX2VuYWJsZSgpO1xuIFxuIFx0cmV0dXJuIDA7XG5kaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL2NvcmUuaCBiL25ldC93aXJlbGVzcy9jb3JlLmhcbmluZGV4IDE1ZDlmN2ViNThiNGQuLmI0NjEwZjY2ODVkY2IgMTAwNjQ0XG4tLS0gYS9uZXQvd2lyZWxlc3MvY29yZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvd2lyZWxlc3MvY29yZS5oXG5AQCAtNDAyLDcgJiM0Mzs0MDIsNyBAQCB2b2lkIGNmZzgwMjExX21sbWVfcHVyZ2VfcmVnaXN0cmF0aW9ucyhzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2KTtcbiBpbnQgY2ZnODAyMTFfbWxtZV9tZ210X3R4KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdFx0XHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0ICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcyxcbi1cdFx0XHQgIHU2NCAqY29va2llKTtcbiYjNDM7XHRcdFx0ICB1NjQgY29va2llKTtcbiB2b2lkIGNmZzgwMjExX29wZXJfYW5kX2h0X2NhcGEoc3RydWN0IGllZWU4MDIxMV9odF9jYXAgKmh0X2NhcGEsXG4gXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfaHRfY2FwICpodF9jYXBhX21hc2spO1xuIHZvaWQgY2ZnODAyMTFfb3Blcl9hbmRfdmh0X2NhcGEoc3RydWN0IGllZWU4MDIxMV92aHRfY2FwICp2aHRfY2FwYSxcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3MvbWxtZS5jIGIvbmV0L3dpcmVsZXNzL21sbWUuY1xuaW5kZXggNzgyNGI3YWMyNzcwZi4uYTBkMWNkZTI2ZjBjOSAxMDA2NDRcbi0tLSBhL25ldC93aXJlbGVzcy9tbG1lLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC93aXJlbGVzcy9tbG1lLmNcbkBAIC04OTQsNyAmIzQzOzg5NCw3IEBAIHN0YXRpYyBib29sIGNmZzgwMjExX2FsbG93ZWRfcmFuZG9tX2FkZHJlc3Moc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcbiBpbnQgY2ZnODAyMTFfbWxtZV9tZ210X3R4KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdFx0XHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tXHRcdFx0ICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXG4mIzQzO1x0XHRcdCAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xuIFx0dTE2IHN0eXBlO1xuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9ubDgwMjExLmMgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG5pbmRleCA4YWRiZWY1ZjA0NDI1Li5hYzg5NWUwMmNkNDExIDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xuQEAgLTE0NjQyLDggJiM0MzsxNDY0Miw5IEBAIHN0YXRpYyBpbnQgbmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRnb3RvIGZyZWVfbXNnO1xuIFx0fVxuIFxuJiM0MztcdGNvb2tpZSA9IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7XG4gXHRlcnIgPSByZGV2X3JlbWFpbl9vbl9jaGFubmVsKHJkZXYsIHdkZXYsIGNoYW5kZWYuY2hhbixcbi1cdFx0XHRcdCAgICAgZHVyYXRpb24sIFx1MDAyNmNvb2tpZSwgcnhfYWRkcik7XG4mIzQzO1x0XHRcdFx0ICAgICBkdXJhdGlvbiwgY29va2llLCByeF9hZGRyKTtcbiBcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZnJlZV9tc2c7XG5AQCAtMTQ4ODMsNyAmIzQzOzE0ODg0LDggQEAgc3RhdGljIGludCBubDgwMjExX3R4X21nbXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiBcdH1cbiBcbiBcdHBhcmFtcy5jaGFuID0gY2hhbmRlZi5jaGFuO1xuLVx0ZXJyID0gY2ZnODAyMTFfbWxtZV9tZ210X3R4KHJkZXYsIHdkZXYsIFx1MDAyNnBhcmFtcywgXHUwMDI2Y29va2llKTtcbiYjNDM7XHRjb29raWUgPSBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpO1xuJiM0MztcdGVyciA9IGNmZzgwMjExX21sbWVfbWdtdF90eChyZGV2LCB3ZGV2LCBcdTAwMjZwYXJhbXMsIGNvb2tpZSk7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGZyZWVfbXNnO1xuIFxuQEAgLTE2MzcxLDcgJiM0MzsxNjM3Myw4IEBAIHN0YXRpYyBpbnQgbmw4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXHRcdGdvdG8gZnJlZV9tc2c7XG4gXHR9XG4gXG4tXHRlcnIgPSByZGV2X3Byb2JlX3BlZXIocmRldiwgZGV2LCBhZGRyLCBcdTAwMjZjb29raWUpO1xuJiM0MztcdGNvb2tpZSA9IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7XG4mIzQzO1x0ZXJyID0gcmRldl9wcm9iZV9wZWVyKHJkZXYsIGRldiwgYWRkciwgY29va2llKTtcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZnJlZV9tc2c7XG4gXG5AQCAtMTg1ODYsMTAgJiM0MzsxODU4OSwxMSBAQCBzdGF0aWMgaW50IG5sODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4gXG4gXHRsaW5rX2lkID0gbmw4MDIxMV9saW5rX2lkX29yX2ludmFsaWQoaW5mby1cdTAwM2VhdHRycyk7XG4gXG4mIzQzO1x0Y29va2llID0gZG9udF93YWl0X2Zvcl9hY2sgPyAwIDogY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcbiBcdGVyciA9IHJkZXZfdHhfY29udHJvbF9wb3J0KHJkZXYsIGRldiwgYnVmLCBsZW4sXG4gXHRcdFx0XHQgICBkZXN0LCBjcHVfdG9fYmUxNihwcm90byksIG5vZW5jcnlwdCwgbGlua19pZCxcbi1cdFx0XHRcdCAgIGRvbnRfd2FpdF9mb3JfYWNrID8gTlVMTCA6IFx1MDAyNmNvb2tpZSk7XG4tXHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgIWRvbnRfd2FpdF9mb3JfYWNrKVxuJiM0MztcdFx0XHRcdCAgIGNvb2tpZSk7XG4mIzQzO1x0aWYgKCFlcnIgXHUwMDI2XHUwMDI2IGNvb2tpZSlcbiBcdFx0bmxfc2V0X2V4dGFja19jb29raWVfdTY0KGluZm8tXHUwMDNlZXh0YWNrLCBjb29raWUpO1xuIFx0cmV0dXJuIGVycjtcbiB9XG5AQCAtMjIwNDIsNiAmIzQzOzIyMDQ2LDEwIEBAIHN0YXRpYyB2b2lkIG5sODAyMTFfZnJhbWVfdHhfc3RhdHVzKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqbXNnO1xuIFx0dm9pZCAqaGRyO1xuIFxuJiM0MztcdC8qIHVzZXJzcGFjZSBub3QgaW50ZXJlc3RlZCBpbiB6ZXJvLWNvb2tpZSBzdGF0dXMgKi9cbiYjNDM7XHRpZiAoIXN0YXR1cy1cdTAwM2Vjb29raWUpXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuIFx0aWYgKGNvbW1hbmQgPT0gTkw4MDIxMV9DTURfRlJBTUVfVFhfU1RBVFVTKVxuIFx0XHR0cmFjZV9jZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBzdGF0dXMtXHUwMDNlY29va2llLFxuIFx0XHRcdFx0XHQgICAgICBzdGF0dXMtXHUwMDNlYWNrKTtcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3MvcmRldi1vcHMuaCBiL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oXG5pbmRleCA2YzNiYWQ4YjJkNmY2Li40Njg0OWZlOGQwYjM5IDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL3JkZXYtb3BzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oXG5AQCAtNzM2LDE0ICYjNDM7NzM2LDE0IEBAIHN0YXRpYyBpbmxpbmUgaW50XG4gcmRldl9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4gXHRcdCAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuLVx0XHQgICAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpXG4mIzQzO1x0XHQgICAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLCBjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRpbnQgcmV0O1xuIFx0dHJhY2VfcmRldl9yZW1haW5fb25fY2hhbm5lbChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCB3ZGV2LCBjaGFuLCBkdXJhdGlvbixcbiBcdFx0XHRcdCAgICAgcnhfYWRkcik7XG4gXHRyZXQgPSByZGV2LVx1MDAzZW9wcy1cdTAwM2VyZW1haW5fb25fY2hhbm5lbChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCB3ZGV2LCBjaGFuLFxuIFx0XHRcdFx0XHQgICBkdXJhdGlvbiwgY29va2llLCByeF9hZGRyKTtcbi1cdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgcmV0LCAqY29va2llKTtcbiYjNDM7XHR0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHJldCwgY29va2llKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTc2MSwxMiAmIzQzOzc2MSwxMiBAQCByZGV2X2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4gc3RhdGljIGlubGluZSBpbnQgcmRldl9tZ210X3R4KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdFx0XHQgICAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHQgICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXG4tXHRcdFx0ICAgICAgIHU2NCAqY29va2llKVxuJiM0MztcdFx0XHQgICAgICAgdTY0IGNvb2tpZSlcbiB7XG4gXHRpbnQgcmV0O1xuIFx0dHJhY2VfcmRldl9tZ210X3R4KFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHdkZXYsIHBhcmFtcyk7XG4gXHRyZXQgPSByZGV2LVx1MDAzZW9wcy1cdTAwM2VtZ210X3R4KFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHdkZXYsIHBhcmFtcywgY29va2llKTtcbi1cdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgcmV0LCAqY29va2llKTtcbiYjNDM7XHR0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHJldCwgY29va2llKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTc3NSw3ICYjNDM7Nzc1LDcgQEAgc3RhdGljIGlubGluZSBpbnQgcmRldl90eF9jb250cm9sX3BvcnQoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuIFx0XHRcdFx0ICAgICAgIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbixcbiBcdFx0XHRcdCAgICAgICBjb25zdCB1OCAqZGVzdCwgX19iZTE2IHByb3RvLFxuIFx0XHRcdFx0ICAgICAgIGNvbnN0IGJvb2wgbm9lbmNyeXB0LCBpbnQgbGluayxcbi1cdFx0XHRcdCAgICAgICB1NjQgKmNvb2tpZSlcbiYjNDM7XHRcdFx0XHQgICAgICAgdTY0IGNvb2tpZSlcbiB7XG4gXHRpbnQgcmV0O1xuIFx0dHJhY2VfcmRldl90eF9jb250cm9sX3BvcnQoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgZGV2LCBidWYsIGxlbixcbkBAIC03ODMsNyAmIzQzOzc4Myw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJkZXZfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdHJldCA9IHJkZXYtXHUwMDNlb3BzLVx1MDAzZXR4X2NvbnRyb2xfcG9ydChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCBkZXYsIGJ1ZiwgbGVuLFxuIFx0XHRcdFx0XHQgZGVzdCwgcHJvdG8sIG5vZW5jcnlwdCwgbGluaywgY29va2llKTtcbiBcdGlmIChjb29raWUpXG4tXHRcdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgcmV0LCAqY29va2llKTtcbiYjNDM7XHRcdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgcmV0LCBjb29raWUpO1xuIFx0ZWxzZVxuIFx0XHR0cmFjZV9yZGV2X3JldHVybl9pbnQoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgcmV0KTtcbiBcdHJldHVybiByZXQ7XG5AQCAtOTUwLDEyICYjNDM7OTUwLDEyIEBAIHN0YXRpYyBpbmxpbmUgaW50IHJkZXZfdGRsc19vcGVyKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcbiBzdGF0aWMgaW5saW5lIGludCByZGV2X3Byb2JlX3BlZXIoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuIFx0XHRcdFx0ICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqcGVlcixcbi1cdFx0XHRcdCAgdTY0ICpjb29raWUpXG4mIzQzO1x0XHRcdFx0ICB1NjQgY29va2llKVxuIHtcbiBcdGludCByZXQ7XG4gXHR0cmFjZV9yZGV2X3Byb2JlX3BlZXIoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgZGV2LCBwZWVyKTtcbiBcdHJldCA9IHJkZXYtXHUwMDNlb3BzLVx1MDAzZXByb2JlX3BlZXIoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgZGV2LCBwZWVyLCBjb29raWUpO1xuLVx0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCByZXQsICpjb29raWUpO1xuJiM0MztcdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgcmV0LCBjb29raWUpO1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTk6MjI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NGRzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExJiMzNDssCiAgICAmIzM0O01BQzgwMjExX0hXU0lNJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbCYjMzQ7LAogICAgJiMzNDtubDgwMjExX3R4X21nbXQmIzM0OywKICAgICYjMzQ7bmw4MDIxMV9wcm9iZV9wZWVyJiMzNDssCiAgICAmIzM0O25sODAyMTFfdHhfY29udHJvbF9wb3J0JiMzNDssCiAgICAmIzM0O2NmZzgwMjExX21sbWVfbWdtdF90eCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWwmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX21nbXRfdHgmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3Byb2JlX3BlZXImIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfYXR0YWNoX2Fja19za2ImIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3N0YXJ0X3JvY193b3JrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgaG93IGNvb2tpZXMgYXJlIGdlbmVyYXRlZCBhbmQgcGFzc2VkIGZvciBzZXZlcmFsIG5sODAyMTEgY29tbWFuZHMgKHJlbWFpbl9vbl9jaGFubmVsLCB0eF9tZ210LCBwcm9iZV9wZWVyLCB0eF9jb250cm9sX3BvcnQpLiBJdCBtb2RpZmllcyB0aGUgY29yZSBjZmc4MDIxMSBhbmQgbWFjODAyMTEgbG9naWMgdG8gZ2VuZXJhdGUgY29va2llcyBpbiBubDgwMjExIGFuZCBwYXNzIHRoZW0gYnkgdmFsdWUgdG8gZHJpdmVycywgaW5zdGVhZCBvZiBoYXZpbmcgZHJpdmVycyBnZW5lcmF0ZSB0aGVtIGFuZCBwYXNzIHRoZW0gYmFjayB2aWEgcG9pbnRlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSB3aXJlbGVzcyBzdGFjayBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGRiNjQ3ZjQwM2Q5OWE0MzY5MDQzZGYzYzA1ZWVhNWRkZjg0MDgwNWQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAxIDE5OjIyOjM2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jCmluZGV4IGVjZGU5MTE1OWI1NDYuLjM0MDI1ZDY0ZDYxNTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmMKQEAgLTMwMzQsMjAgJiM0MzszMDM0LDE0IEBAIHN0YXRpYyBpbnQgYXRoNmtsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJCQkJICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCQkJICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiwKIAkJCQkgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLAotCQkJCSAgICB1NjQgKmNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpCiYjNDM7CQkJCSAgICB1NjQgY29va2llLCBjb25zdCB1OCAqcnhfYWRkcikKIHsKIAlzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmID0gYXRoNmtsX3ZpZl9mcm9tX3dkZXYod2Rldik7CiAJc3RydWN0IGF0aDZrbCAqYXIgPSBhdGg2a2xfcHJpdih2aWYtJmd0O25kZXYpOwotCXUzMiBpZDsKIAogCS8qIFRPRE86IGlmIGFscmVhZHkgcGVuZGluZyBvciBvbmdvaW5nIHJlbWFpbi1vbi1jaGFubmVsLAogCSAqIHJldHVybiAtRUJVU1kgKi8KLQlpZCA9ICYjNDM7JiM0Mzt2aWYtJmd0O2xhc3Rfcm9jX2lkOwotCWlmIChpZCA9PSAwKSB7Ci0JCS8qIERvIG5vdCB1c2UgMCBhcyB0aGUgY29va2llIHZhbHVlICovCi0JCWlkID0gJiM0MzsmIzQzO3ZpZi0mZ3Q7bGFzdF9yb2NfaWQ7Ci0JfQotCSpjb29raWUgPSBpZDsKJiM0MzsJdmlmLSZndDtsYXN0X3JvY19pZCA9IGNvb2tpZTsKIAogCXJldHVybiBhdGg2a2xfd21pX3JlbWFpbl9vbl9jaG5sX2NtZChhci0mZ3Q7d21pLCB2aWYtJmd0O2Z3X3ZpZl9pZHgsCiAJCQkJCSAgICAgY2hhbi0mZ3Q7Y2VudGVyX2ZyZXEsIGR1cmF0aW9uKTsKQEAgLTMxMDYsNiAmIzQzOzMxMDAsNyBAQCBzdGF0aWMgaW50IGF0aDZrbF9zZW5kX2dvX3Byb2JlX3Jlc3Aoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwKIAogc3RhdGljIGJvb2wgYXRoNmtsX21nbXRfcG93ZXJzYXZlX2FwKHN0cnVjdCBhdGg2a2xfdmlmICp2aWYsCiAJCQkJICAgICB1MzIgaWQsCiYjNDM7CQkJCSAgICAgdTY0IGNvb2tpZSwKIAkJCQkgICAgIHUzMiBmcmVxLAogCQkJCSAgICAgdTMyIHdhaXQsCiAJCQkJICAgICBjb25zdCB1OCAqYnVmLApAQCAtMzEzOCw2ICYjNDM7MzEzMyw3IEBAIHN0YXRpYyBib29sIGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLAogCiAJCQlJTklUX0xJU1RfSEVBRCgmYW1wO21nbXRfYnVmLSZndDtsaXN0KTsKIAkJCW1nbXRfYnVmLSZndDtpZCA9IGlkOwomIzQzOwkJCW1nbXRfYnVmLSZndDtjb29raWUgPSBjb29raWU7CiAJCQltZ210X2J1Zi0mZ3Q7ZnJlcSA9IGZyZXE7CiAJCQltZ210X2J1Zi0mZ3Q7d2FpdCA9IHdhaXQ7CiAJCQltZ210X2J1Zi0mZ3Q7bGVuID0gbGVuOwpAQCAtMzE5MCw3ICYjNDM7MzE4Niw3IEBAIHN0YXRpYyBib29sIGF0aDZrbF9pc19wMnBfZ29fc3NpZChjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKQogfQogCiBzdGF0aWMgaW50IGF0aDZrbF9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCi0JCQkgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSkKJiM0MzsJCQkgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKQogewogCXN0cnVjdCBhdGg2a2xfdmlmICp2aWYgPSBhdGg2a2xfdmlmX2Zyb21fd2Rldih3ZGV2KTsKIAlzdHJ1Y3QgYXRoNmtsICphciA9IGF0aDZrbF9wcml2KHZpZi0mZ3Q7bmRldik7CkBAIC0zMjIyLDcgJiM0MzszMjE4LDYgQEAgc3RhdGljIGludCBhdGg2a2xfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkgKiBTZW5kIFByb2JlIFJlc3BvbnNlIGZyYW1lIGluIEdPIG1vZGUgdXNpbmcgYSBzZXBhcmF0ZSBXTUkKIAkJICogY29tbWFuZCB0byBhbGxvdyB0aGUgdGFyZ2V0IHRvIGZpbGwgaW4gdGhlIGdlbmVyaWMgSUVzLgogCQkgKi8KLQkJKmNvb2tpZSA9IDA7IC8qIFRYIHN0YXR1cyBub3Qgc3VwcG9ydGVkICovCiAJCXJldHVybiBhdGg2a2xfc2VuZF9nb19wcm9iZV9yZXNwKHZpZiwgYnVmLCBsZW4sIGZyZXEpOwogCX0KIApAQCAtMzIzNSwxNiAmIzQzOzMyMzAsMTUgQEAgc3RhdGljIGludCBhdGg2a2xfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQlpZCA9IHZpZi0mZ3Q7c2VuZF9hY3Rpb25faWQmIzQzOyYjNDM7OwogCX0KIAotCSpjb29raWUgPSBpZDsKLQogCS8qIEFQIG1vZGUgUG93ZXIgc2F2aW5nIHByb2Nlc3NpbmcgKi8KIAlpZiAodmlmLSZndDtud190eXBlID09IEFQX05FVFdPUkspIHsKLQkJcXVldWVkID0gYXRoNmtsX21nbXRfcG93ZXJzYXZlX2FwKHZpZiwgaWQsIGZyZXEsIHdhaXQsIGJ1ZiwgbGVuLAotCQkJCQkJICAmYW1wO21vcmVfZGF0YSwgbm9fY2NrKTsKJiM0MzsJCXF1ZXVlZCA9IGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcCh2aWYsIGlkLCBjb29raWUsIGZyZXEsIHdhaXQsCiYjNDM7CQkJCQkJICBidWYsIGxlbiwgJmFtcDttb3JlX2RhdGEsIG5vX2Njayk7CiAJCWlmIChxdWV1ZWQpCiAJCQlyZXR1cm4gMDsKIAl9CiAKJiM0MzsJYXItJmd0O3dtaS0mZ3Q7bGFzdF9tZ210X3R4X2Nvb2tpZSA9IGNvb2tpZTsKIAlyZXR1cm4gYXRoNmtsX3dtaV9zZW5kX21nbXRfY21kKGFyLSZndDt3bWksIHZpZi0mZ3Q7ZndfdmlmX2lkeCwgaWQsIGZyZXEsCiAJCQkJCXdhaXQsIGJ1ZiwgbGVuLCBub19jY2spOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaAppbmRleCA3N2UwNTIzMzZlYjViLi5hMGIyMzZlZWVhYjU0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaApAQCAtNDA0LDYgJiM0Mzs0MDQsNyBAQCBzdHJ1Y3QgYXRoNmtsX21nbXRfYnVmZiB7CiAJdTMyIGZyZXE7CiAJdTMyIHdhaXQ7CiAJdTMyIGlkOwomIzQzOwl1NjQgY29va2llOwogCWJvb2wgbm9fY2NrOwogCXNpemVfdCBsZW47CiAJdTggYnVmW107CkBAIC02MzEsOCAmIzQzOzYzMiw4IEBAIHN0cnVjdCBhdGg2a2xfdmlmIHsKIAlzdHJ1Y3QgY2ZnODAyMTFfc2Nhbl9yZXF1ZXN0ICpzY2FuX3JlcTsKIAllbnVtIHNtZV9zdGF0ZSBzbWVfc3RhdGU7CiAJaW50IHJlY29ubmVjdF9mbGFnOwotCXUzMiBsYXN0X3JvY19pZDsKLQl1MzIgbGFzdF9jYW5jZWxfcm9jX2lkOwomIzQzOwl1NjQgbGFzdF9yb2NfaWQ7CiYjNDM7CXU2NCBsYXN0X2NhbmNlbF9yb2NfaWQ7CiAJdTMyIHNlbmRfYWN0aW9uX2lkOwogCWJvb2wgcHJvYmVfcmVxX3JlcG9ydDsKIAl1MTYgYXNzb2NfYnNzX2JlYWNvbl9pbnQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jCmluZGV4IDhhZmM2NTg5ZmM1MWUuLjljMDIzZDdjZTMwNTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jCkBAIC04OTgsNiAmIzQzOzg5OCw3IEBAIHZvaWQgYXRoNmtsX3BzcG9sbF9ldmVudChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCBhaWQpCiAJCXNwaW5fdW5sb2NrX2JoKCZhbXA7Y29ubi0mZ3Q7cHNxX2xvY2spOwogCiAJCWNvbm4tJmd0O3N0YV9mbGFncyB8PSBTVEFfUFNfUE9MTEVEOwomIzQzOwkJYXItJmd0O3dtaS0mZ3Q7bGFzdF9tZ210X3R4X2Nvb2tpZSA9IG1nbXRfYnVmLSZndDtjb29raWU7CiAJCWF0aDZrbF93bWlfc2VuZF9tZ210X2NtZChhci0mZ3Q7d21pLCB2aWYtJmd0O2Z3X3ZpZl9pZHgsCiAJCQkJCSBtZ210X2J1Zi0mZ3Q7aWQsIG1nbXRfYnVmLSZndDtmcmVxLAogCQkJCQkgbWdtdF9idWYtJmd0O3dhaXQsIG1nbXRfYnVmLSZndDtidWYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jCmluZGV4IGQ4MTgyNTQxMzkwNjEuLjYwOWQ0NThjYTZjNTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jCkBAIC0xNDY5LDYgJiM0MzsxNDY5LDcgQEAgdm9pZCBhdGg2a2xfcngoc3RydWN0IGh0Y190YXJnZXQgKnRhcmdldCwgc3RydWN0IGh0Y19wYWNrZXQgKnBhY2tldCkKIAkJCQkJc3Bpbl91bmxvY2tfYmgoJmFtcDtjb25uLSZndDtwc3FfbG9jayk7CiAJCQkJCWlkeCA9IHZpZi0mZ3Q7ZndfdmlmX2lkeDsKIAomIzQzOwkJCQkJYXItJmd0O3dtaS0mZ3Q7bGFzdF9tZ210X3R4X2Nvb2tpZSA9IG1nbXQtJmd0O2Nvb2tpZTsKIAkJCQkJYXRoNmtsX3dtaV9zZW5kX21nbXRfY21kKGFyLSZndDt3bWksCiAJCQkJCQkJCSBpZHgsCiAJCQkJCQkJCSBtZ210LSZndDtpZCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jCmluZGV4IDZjMjlmMGJjZWM5ZjUuLjIxNDBmZGRiYThiYWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYwpAQCAtNTk2LDcgJiM0Mzs1OTYsNyBAQCBzdGF0aWMgaW50IGF0aDZrbF93bWlfdHhfc3RhdHVzX2V2ZW50X3J4KHN0cnVjdCB3bWkgKndtaSwgdTggKmRhdGFwLCBpbnQgbGVuLAogCWF0aDZrbF9kYmcoQVRINktMX0RCR19XTUksICYjMzQ7dHhfc3RhdHVzOiBpZD0leCBhY2tfc3RhdHVzPSV1XG4mIzM0OywKIAkJICAgaWQsIGV2LSZndDthY2tfc3RhdHVzKTsKIAlpZiAod21pLSZndDtsYXN0X21nbXRfdHhfZnJhbWUpIHsKLQkJY2ZnODAyMTFfbWdtdF90eF9zdGF0dXMoJmFtcDt2aWYtJmd0O3dkZXYsIGlkLAomIzQzOwkJY2ZnODAyMTFfbWdtdF90eF9zdGF0dXMoJmFtcDt2aWYtJmd0O3dkZXYsIHdtaS0mZ3Q7bGFzdF9tZ210X3R4X2Nvb2tpZSwKIAkJCQkJd21pLSZndDtsYXN0X21nbXRfdHhfZnJhbWUsCiAJCQkJCXdtaS0mZ3Q7bGFzdF9tZ210X3R4X2ZyYW1lX2xlbiwKIAkJCQkJISFldi0mZ3Q7YWNrX3N0YXR1cywgR0ZQX0FUT01JQyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaAppbmRleCA4ZmJlY2UzZmRhZDlmLi44OWNlMmFiYmIxY2RjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmgKQEAgLTEyNSw2ICYjNDM7MTI1LDcgQEAgc3RydWN0IHdtaSB7CiAKIAl1OCAqbGFzdF9tZ210X3R4X2ZyYW1lOwogCXNpemVfdCBsYXN0X21nbXRfdHhfZnJhbWVfbGVuOwomIzQzOwl1NjQgbGFzdF9tZ210X3R4X2Nvb2tpZTsKIAl1OCBzYXZlZF9wd3JfbW9kZTsKIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9jZmc4MDIxMS5jCmluZGV4IDVmMmJkOWEzMWZhZjYuLjlhYzMzZDgyN2Y4MDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuYwpAQCAtMTQzMiw3ICYjNDM7MTQzMiw3IEBAIHN0YXRpYyBpbnQgd2lsX2NmZzgwMjExX3NldF93aXBoeV9wYXJhbXMoc3RydWN0IHdpcGh5ICp3aXBoeSwgaW50IHJhZGlvX2lkeCwKIAogaW50IHdpbF9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCQkgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsCi0JCQkgdTY0ICpjb29raWUpCiYjNDM7CQkJIHU2NCBjb29raWUpCiB7CiAJY29uc3QgdTggKmJ1ZiA9IHBhcmFtcy0mZ3Q7YnVmOwogCXNpemVfdCBsZW4gPSBwYXJhbXMtJmd0O2xlbjsKQEAgLTE0ODgsOCAmIzQzOzE0ODgsNyBAQCBpbnQgd2lsX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkgKi8KIAl0eF9zdGF0dXMgPSAocmMgPT0gMCk7CiAJcmMgPSAocmMgPT0gLUVBR0FJTikgPyAwIDogcmM7Ci0JY2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llID8gKmNvb2tpZSA6IDAsIGJ1ZiwgbGVuLAotCQkJCXR4X3N0YXR1cywgR0ZQX0tFUk5FTCk7CiYjNDM7CWNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHR4X3N0YXR1cywgR0ZQX0tFUk5FTCk7CiAKIAlyZXR1cm4gcmM7CiB9CkBAIC0xNzM1LDcgJiM0MzsxNzM0LDcgQEAgc3RhdGljIGludCB3aWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAkJCQkgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJCQkgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLAogCQkJCSB1bnNpZ25lZCBpbnQgZHVyYXRpb24sCi0JCQkJIHU2NCAqY29va2llLCBjb25zdCB1OCAqcnhfYWRkcikKJiM0MzsJCQkJIHU2NCBjb29raWUsIGNvbnN0IHU4ICpyeF9hZGRyKQogewogCXN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCA9IHdpcGh5X3RvX3dpbCh3aXBoeSk7CiAJaW50IHJjOwpAQCAtMjM4MSw3ICYjNDM7MjM4MCw3IEBAIHZvaWQgd2lsX3Byb2JlX2NsaWVudF9mbHVzaChzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZikKIAogc3RhdGljIGludCB3aWxfY2ZnODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCQkJCSAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCi0JCQkJICAgY29uc3QgdTggKnBlZXIsIHU2NCAqY29va2llKQomIzQzOwkJCQkgICBjb25zdCB1OCAqcGVlciwgdTY0IGNvb2tpZSkKIHsKIAlzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwgPSB3aXBoeV90b193aWwod2lwaHkpOwogCXN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmID0gbmRldl90b192aWYoZGV2KTsKQEAgLTIzOTksMTMgJiM0MzsyMzk4LDEyIEBAIHN0YXRpYyBpbnQgd2lsX2NmZzgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAkJcmV0dXJuIC1FTk9NRU07CiAKIAlyZXEtJmd0O2NpZCA9IGNpZDsKLQlyZXEtJmd0O2Nvb2tpZSA9IGNpZDsKJiM0MzsJcmVxLSZndDtjb29raWUgPSBjb29raWU7CiAKIAltdXRleF9sb2NrKCZhbXA7dmlmLSZndDtwcm9iZV9jbGllbnRfbXV0ZXgpOwogCWxpc3RfYWRkX3RhaWwoJmFtcDtyZXEtJmd0O2xpc3QsICZhbXA7dmlmLSZndDtwcm9iZV9jbGllbnRfcGVuZGluZyk7CiAJbXV0ZXhfdW5sb2NrKCZhbXA7dmlmLSZndDtwcm9iZV9jbGllbnRfbXV0ZXgpOwogCi0JKmNvb2tpZSA9IHJlcS0mZ3Q7Y29va2llOwogCXF1ZXVlX3dvcmsod2lsLSZndDt3cV9zZXJ2aWNlLCAmYW1wO3ZpZi0mZ3Q7cHJvYmVfY2xpZW50X3dvcmtlcik7CiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9kZWJ1Z2ZzLmMKaW5kZXggYjhjYjczNmE3MTg1Mi4uZTA2ZTQ1MzIzMjcyYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvZGVidWdmcy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2RlYnVnZnMuYwpAQCAtOTg1LDcgJiM0Mzs5ODUsNyBAQCBzdGF0aWMgc3NpemVfdCB3aWxfd3JpdGVfZmlsZV90eG1nbXQoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgX191c2VyICpidWYsCiAJcGFyYW1zLmJ1ZiA9IGZyYW1lOwogCXBhcmFtcy5sZW4gPSBsZW47CiAKLQlyYyA9IHdpbF9jZmc4MDIxMV9tZ210X3R4KHdpcGh5LCB3ZGV2LCAmYW1wO3BhcmFtcywgTlVMTCk7CiYjNDM7CXJjID0gd2lsX2NmZzgwMjExX21nbXRfdHgod2lwaHksIHdkZXYsICZhbXA7cGFyYW1zLCAwKTsKIAogCWtmcmVlKGZyYW1lKTsKIAl3aWxfaW5mbyh3aWwsICYjMzQ7LSZndDsgJWRcbiYjMzQ7LCByYyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9wMnAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3AycC5jCmluZGV4IGYyMGNhZjFhMzkwNWIuLmFjZDhhMmUzNTEwMzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3AycC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3AycC5jCkBAIC0xMjQsNyAmIzQzOzEyNCw3IEBAIGludCB3aWxfcDJwX3NlYXJjaChzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZiwKIAogaW50IHdpbF9wMnBfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sCi0JCSAgIHU2NCAqY29va2llKQomIzQzOwkJICAgdTY0IGNvb2tpZSkKIHsKIAlzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZiA9IHdkZXZfdG9fdmlmKHdpbCwgd2Rldik7CiAJc3RydWN0IHdpbF9wMnBfaW5mbyAqcDJwID0gJmFtcDt2aWYtJmd0O3AycDsKQEAgLTE0NCw3ICYjNDM7MTQ0LDcgQEAgaW50IHdpbF9wMnBfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAl9CiAKIAltZW1jcHkoJmFtcDtwMnAtJmd0O2xpc3Rlbl9jaGFuLCBjaGFuLCBzaXplb2YoKmNoYW4pKTsKLQkqY29va2llID0gJiM0MzsmIzQzO3AycC0mZ3Q7Y29va2llOwomIzQzOwlwMnAtJmd0O2Nvb2tpZSA9IGNvb2tpZTsKIAlwMnAtJmd0O2xpc3Rlbl9kdXJhdGlvbiA9IGR1cmF0aW9uOwogCiAJbXV0ZXhfbG9jaygmYW1wO3dpbC0mZ3Q7dmlmX211dGV4KTsKQEAgLTE2Niw3ICYjNDM7MTY2LDcgQEAgaW50IHdpbF9wMnBfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAlpZiAodmlmLSZndDttaWQgPT0gMCkKIAkJd2lsLSZndDtyYWRpb193ZGV2ID0gd2RldjsKIAotCWNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgKmNvb2tpZSwgY2hhbiwgZHVyYXRpb24sCiYjNDM7CWNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLCBkdXJhdGlvbiwKIAkJCQkgIEdGUF9LRVJORUwpOwogCiBvdXQ6CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93aWw2MjEwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93aWw2MjEwLmgKaW5kZXggMzFlMTA3YzgxZTJkNC4uZjhlNjBiZTYzMWNhNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd2lsNjIxMC5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dpbDYyMTAuaApAQCAtMTMwMSw3ICYjNDM7MTMwMSw3IEBAIGludCB3aWxfcDJwX3NlYXJjaChzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZiwKIAkJICAgc3RydWN0IGNmZzgwMjExX3NjYW5fcmVxdWVzdCAqcmVxdWVzdCk7CiBpbnQgd2lsX3AycF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiwKLQkJICAgdTY0ICpjb29raWUpOwomIzQzOwkJICAgdTY0IGNvb2tpZSk7CiB1OCB3aWxfcDJwX3N0b3BfZGlzY292ZXJ5KHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmKTsKIGludCB3aWxfcDJwX2NhbmNlbF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfdmlmICp2aWYsIHU2NCBjb29raWUpOwogdm9pZCB3aWxfcDJwX2xpc3Rlbl9leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7CkBAIC0xMzE3LDcgJiM0MzsxMzE3LDcgQEAgaW50IHdtaV9zdG9wX2Rpc2NvdmVyeShzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZik7CiAKIGludCB3aWxfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLAotCQkJIHU2NCAqY29va2llKTsKJiM0MzsJCQkgdTY0IGNvb2tpZSk7CiB2b2lkIHdpbF9jZmc4MDIxMV9hcF9yZWNvdmVyeShzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwpOwogaW50IHdpbF9jZmc4MDIxMV9pZmFjZV9jb21iaW5hdGlvbnNfZnJvbV9mdygKIAlzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jCmluZGV4IDZiMmMzNGUzYTc5NmMuLjg3MmM0ODgwNmQwOTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jCkBAIC01NTU0LDcgJiM0Mzs1NTU0LDcgQEAgYnJjbWZfY2ZnODAyMTFfdXBkYXRlX21nbXRfZnJhbWVfcmVnaXN0cmF0aW9ucyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCiBpbnQKIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKLQkJICAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSkKJiM0MzsJCSAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSkKIHsKIAlzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnID0gd2lwaHlfdG9fY2ZnKHdpcGh5KTsKIAlzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4gPSBwYXJhbXMtJmd0O2NoYW47CkBAIC01NTczLDggJiM0Mzs1NTczLDYgQEAgYnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCiAJYnJjbWZfZGJnKFRSQUNFLCAmIzM0O0VudGVyXG4mIzM0Oyk7CiAKLQkqY29va2llID0gMDsKLQogCW1nbXQgPSAoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICopYnVmOwogCiAJaWYgKCFpZWVlODAyMTFfaXNfbWdtdChtZ210LSZndDtmcmFtZV9jb250cm9sKSkgewpAQCAtNTYwNSw3ICYjNDM7NTYwMyw3IEBAIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJCQkJICAgIEJSQ01GX1ZORFJfSUVfUFJCUlNQX0ZMQUcsCiAJCQkJCSAgICAmYW1wO2J1ZltpZV9vZmZzZXRdLAogCQkJCQkgICAgaWVfbGVuKTsKLQkJY2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIHRydWUsCiYjNDM7CQljZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBjb29raWUsIGJ1ZiwgbGVuLCB0cnVlLAogCQkJCQlHRlBfS0VSTkVMKTsKIAl9IGVsc2UgaWYgKGllZWU4MDIxMV9pc19hY3Rpb24obWdtdC0mZ3Q7ZnJhbWVfY29udHJvbCkpIHsKIAkJaWYgKGxlbiAmZ3Q7IEJSQ01GX0ZJTF9BQ1RJT05fRlJBTUVfU0laRSAmIzQzOyBET1QxMV9NR01UX0hEUl9MRU4pIHsKQEAgLTU2MjEsNyAmIzQzOzU2MTksNyBAQCBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCX0KIAkJYWN0aW9uX2ZyYW1lID0gJmFtcDthZl9wYXJhbXMtJmd0O2FjdGlvbl9mcmFtZTsKIAkJLyogQWRkIHRoZSBwYWNrZXQgSWQgKi8KLQkJYWN0aW9uX2ZyYW1lLSZndDtwYWNrZXRfaWQgPSBjcHVfdG9fbGUzMigqY29va2llKTsKJiM0MzsJCWFjdGlvbl9mcmFtZS0mZ3Q7cGFja2V0X2lkID0gY3B1X3RvX2xlMzIoY29va2llKTsKIAkJLyogQWRkIEJTU0lEICovCiAJCW1lbWNweSgmYW1wO2FjdGlvbl9mcmFtZS0mZ3Q7ZGFbMF0sICZhbXA7bWdtdC0mZ3Q7ZGFbMF0sIEVUSF9BTEVOKTsKIAkJbWVtY3B5KCZhbXA7YWZfcGFyYW1zLSZndDtic3NpZFswXSwgJmFtcDttZ210LSZndDtic3NpZFswXSwgRVRIX0FMRU4pOwpAQCAtNTY0OSwxMiAmIzQzOzU2NDcsMTIgQEAgYnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkgICAgICAgbGUxNl90b19jcHUoYWN0aW9uX2ZyYW1lLSZndDtsZW4pKTsKIAogCQlicmNtZl9kYmcoVFJBQ0UsICYjMzQ7QWN0aW9uIGZyYW1lLCBjb29raWU9JWxsZCwgbGVuPSVkLCBjaGFubmVsPSVkXG4mIzM0OywKLQkJCSAgKmNvb2tpZSwgbGUxNl90b19jcHUoYWN0aW9uX2ZyYW1lLSZndDtsZW4pLAomIzQzOwkJCSAgY29va2llLCBsZTE2X3RvX2NwdShhY3Rpb25fZnJhbWUtJmd0O2xlbiksCiAJCQkgIGxlMzJfdG9fY3B1KGFmX3BhcmFtcy0mZ3Q7Y2hhbm5lbCkpOwogCiAJCWFjayA9IGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZSh2aWYtJmd0O2lmcCwgYWZfcGFyYW1zKTsKIAotCQljZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCAqY29va2llLCBidWYsIGxlbiwgYWNrLAomIzQzOwkJY2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgYWNrLAogCQkJCQlHRlBfS0VSTkVMKTsKIGZyZWU6CiAJCWtmcmVlKGFmX3BhcmFtcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oCmluZGV4IDZjZWIzMDE0MjkwNTQuLjYzZTUzNDUyM2Y1MTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oCkBAIC00OTcsNiAmIzQzOzQ5Nyw2IEBAIHZvaWQgYnJjbWZfY2ZnODAyMTFfZnJlZV92aWYoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpOwogCiBpbnQgYnJjbWZfc2V0X3dzZWMoc3RydWN0IGJyY21mX2lmICppZnAsIGNvbnN0IHU4ICprZXksIHUxNiBrZXlfbGVuLCB1MTYgZmxhZ3MpOwogaW50IGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKLQkJCSAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSk7CiYjNDM7CQkJICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpOwogCiAjZW5kaWYgLyogQlJDTUZNQUNfQ0ZHODAyMTFfSCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYwppbmRleCA4NzM3NTRiZTUxNzRiLi41NDVlYjlhYWU5NjYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuYwpAQCAtMTAwLDcgJiM0MzsxMDAsNyBAQCBzdGF0aWMgaW50IGJyY21mX2N5d19hY3RpdmF0ZV9ldmVudHMoc3RydWN0IGJyY21mX2lmICppZnApCiAKIHN0YXRpYwogaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCi0JCSAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSkKJiM0MzsJCSAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKQogewogCXN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcgPSB3aXBoeV90b19jZmcod2lwaHkpOwogCXN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiA9IHBhcmFtcy0mZ3Q7Y2hhbjsKQEAgLTEyMyw3ICYjNDM7MTIzLDYgQEAgaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJaWYgKCFpZWVlODAyMTFfaXNfYXV0aChtZ210LSZndDtmcmFtZV9jb250cm9sKSkKIAkJcmV0dXJuIGJyY21mX2NmZzgwMjExX21nbXRfdHgod2lwaHksIHdkZXYsIHBhcmFtcywgY29va2llKTsKIAotCSpjb29raWUgPSAwOwogCXZpZiA9IGNvbnRhaW5lcl9vZih3ZGV2LCBzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfdmlmLCB3ZGV2KTsKIAogCXJlaW5pdF9jb21wbGV0aW9uKCZhbXA7dmlmLSZndDttZ210X3R4KTsKQEAgLTE1NSw3ICYjNDM7MTU0LDcgQEAgaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAKIAltZW1jcHkoJmFtcDttZl9wYXJhbXMtJmd0O2RhWzBdLCAmYW1wO21nbXQtJmd0O2RhWzBdLCBFVEhfQUxFTik7CiAJbWVtY3B5KCZhbXA7bWZfcGFyYW1zLSZndDtic3NpZFswXSwgJmFtcDttZ210LSZndDtic3NpZFswXSwgRVRIX0FMRU4pOwotCW1mX3BhcmFtcy0mZ3Q7cGFja2V0X2lkID0gY3B1X3RvX2xlMzIoKmNvb2tpZSk7CiYjNDM7CW1mX3BhcmFtcy0mZ3Q7cGFja2V0X2lkID0gY3B1X3RvX2xlMzIoY29va2llKTsKIAltZW1jcHkobWZfcGFyYW1zLSZndDtkYXRhLCAmYW1wO2J1ZltET1QxMV9NR01UX0hEUl9MRU5dLAogCSAgICAgICBsZTE2X3RvX2NwdShtZl9wYXJhbXMtJmd0O2xlbikpOwogCkBAIC0xODcsOCAmIzQzOzE4Niw3IEBAIGludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCX0KIAogdHhfc3RhdHVzOgotCWNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsICpjb29raWUsIGJ1ZiwgbGVuLCBhY2ssCi0JCQkJR0ZQX0tFUk5FTCk7CiYjNDM7CWNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIGFjaywgR0ZQX0tFUk5FTCk7CiBmcmVlOgogCWtmcmVlKG1mX3BhcmFtcyk7CiAJcmV0dXJuIGVycjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYwppbmRleCBjN2Q3YjM1YWIxMjUzLi4zMmEwMTVkNmI3Njk4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jCkBAIC05NzksMTAgJiM0Mzs5NzksOCBAQCBicmNtZl9wMnBfZGlzY292ZXJfbGlzdGVuKHN0cnVjdCBicmNtZl9wMnBfaW5mbyAqcDJwLCB1MTYgY2hhbm5lbCwgdTMyIGR1cmF0aW9uKQogCXAycC0mZ3Q7Y2ZnLSZndDtkMTFpbmYuZW5jY2hzcGVjKCZhbXA7Y2gpOwogCWVyciA9IGJyY21mX3AycF9zZXRfZGlzY292ZXJfc3RhdGUodmlmLSZndDtpZnAsIFdMX1AyUF9ESVNDX1NUX0xJU1RFTiwKIAkJCQkJICAgY2guY2hzcGVjLCAodTE2KWR1cmF0aW9uKTsKLQlpZiAoIWVycikgewomIzQzOwlpZiAoIWVycikKIAkJc2V0X2JpdChCUkNNRl9QMlBfU1RBVFVTX0RJU0NPVkVSX0xJU1RFTiwgJmFtcDtwMnAtJmd0O3N0YXR1cyk7Ci0JCXAycC0mZ3Q7cmVtYWluX29uX2NoYW5uZWxfY29va2llJiM0MzsmIzQzOzsKLQl9CiBleGl0OgogCXJldHVybiBlcnI7CiB9CkBAIC0xMDAwLDcgJiM0Mzs5OTgsNyBAQCBicmNtZl9wMnBfZGlzY292ZXJfbGlzdGVuKHN0cnVjdCBicmNtZl9wMnBfaW5mbyAqcDJwLCB1MTYgY2hhbm5lbCwgdTMyIGR1cmF0aW9uKQogICovCiBpbnQgYnJjbWZfcDJwX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCQkJc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsLAotCQkJCXVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsCiYjNDM7CQkJCXVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSwKIAkJCQljb25zdCB1OCAqcnhfYWRkcikKIHsKIAlzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnID0gd2lwaHlfdG9fY2ZnKHdpcGh5KTsKQEAgLTEwMjAsOCAmIzQzOzEwMTgsOCBAQCBpbnQgYnJjbWZfcDJwX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCWdvdG8gZXhpdDsKIAogCW1lbWNweSgmYW1wO3AycC0mZ3Q7cmVtYWluX29uX2NoYW5uZWwsIGNoYW5uZWwsIHNpemVvZigqY2hhbm5lbCkpOwotCSpjb29raWUgPSBwMnAtJmd0O3JlbWFpbl9vbl9jaGFubmVsX2Nvb2tpZTsKLQljZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW5uZWwsIGR1cmF0aW9uLCBHRlBfS0VSTkVMKTsKJiM0MzsJcDJwLSZndDtyZW1haW5fb25fY2hhbm5lbF9jb29raWUgPSBjb29raWU7CiYjNDM7CWNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFubmVsLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7CiAKIGV4aXQ6CiAJcmV0dXJuIGVycjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaAppbmRleCA5ZjNmMDFhZGUyYjc3Li43MDc4MDA5NDkxNzA3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oCkBAIC0xNTcsNyAmIzQzOzE1Nyw3IEBAIGludCBicmNtZl9wMnBfc2Nhbl9wcmVwKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJCQlzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfdmlmICp2aWYpOwogaW50IGJyY21mX3AycF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJCXN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbm5lbCwKLQkJCQl1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLAomIzQzOwkJCQl1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsCiAJCQkJY29uc3QgdTggKnJ4X2FkZHIpOwogaW50IGJyY21mX3AycF9ub3RpZnlfbGlzdGVuX2NvbXBsZXRlKHN0cnVjdCBicmNtZl9pZiAqaWZwLAogCQkJCSAgICAgY29uc3Qgc3RydWN0IGJyY21mX2V2ZW50X21zZyAqZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMKaW5kZXggOGVjMmQyMmE4YzMzYS4uN2ExYmEzMmYxZmIzNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMKQEAgLTE5Niw3ICYjNDM7MTk2LDcgQEAgbXdpZmlleF9mb3JtX21nbXRfZnJhbWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbikKICAqLwogc3RhdGljIGludAogbXdpZmlleF9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCi0JCQkgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKQomIzQzOwkJCSBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSkKIHsKIAljb25zdCB1OCAqYnVmID0gcGFyYW1zLSZndDtidWY7CiAJc2l6ZV90IGxlbiA9IHBhcmFtcy0mZ3Q7bGVuOwpAQCAtMjU5LDE0ICYjNDM7MjU5LDEzIEBAIG13aWZpZXhfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCXR4X2luZm8tJmd0O3BrdF9sZW4gPSBwa3RfbGVuOwogCiAJbXdpZmlleF9mb3JtX21nbXRfZnJhbWUoc2tiLCBidWYsIGxlbik7Ci0JKmNvb2tpZSA9IGdldF9yYW5kb21fdTMyKCkgfCAxOwogCiAJaWYgKGllZWU4MDIxMV9pc19hY3Rpb24obWdtdC0mZ3Q7ZnJhbWVfY29udHJvbCkpCiAJCXNrYiA9IG13aWZpZXhfY2xvbmVfc2tiX2Zvcl90eF9zdGF0dXMocHJpdiwKIAkJCQkJCSAgICAgIHNrYiwKLQkJCQlNV0lGSUVYX0JVRl9GTEFHX0FDVElPTl9UWF9TVEFUVVMsIGNvb2tpZSk7CiYjNDM7CQkJCU1XSUZJRVhfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgJmFtcDtjb29raWUpOwogCWVsc2UKLQkJY2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIHRydWUsCiYjNDM7CQljZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBjb29raWUsIGJ1ZiwgbGVuLCB0cnVlLAogCQkJCQlHRlBfQVRPTUlDKTsKIAogCW13aWZpZXhfcXVldWVfdHhfcGt0KHByaXYsIHNrYik7CkBAIC0zMDQsMTMgJiM0MzszMDMsMTMgQEAgc3RhdGljIGludAogbXdpZmlleF9jZmc4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCQkJCSAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCQkJICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLAotCQkJCSAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsCiYjNDM7CQkJCSAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSwKIAkJCQkgICBjb25zdCB1OCAqcnhfYWRkcikKIHsKIAlzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2ID0gbXdpZmlleF9uZXRkZXZfZ2V0X3ByaXYod2Rldi0mZ3Q7bmV0ZGV2KTsKIAlpbnQgcmV0OwogCi0JaWYgKCFjaGFuIHx8ICFjb29raWUpIHsKJiM0MzsJaWYgKCFjaGFuKSB7CiAJCW13aWZpZXhfZGJnKHByaXYtJmd0O2FkYXB0ZXIsIEVSUk9SLCAmIzM0O0ludmFsaWQgcGFyYW1ldGVyIGZvciBST0NcbiYjMzQ7KTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQpAQCAtMzI2LDE1ICYjNDM7MzI1LDE0IEBAIG13aWZpZXhfY2ZnODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAkJCQkJIGR1cmF0aW9uKTsKIAogCWlmICghcmV0KSB7Ci0JCSpjb29raWUgPSBnZXRfcmFuZG9tX3UzMigpIHwgMTsKLQkJcHJpdi0mZ3Q7cm9jX2NmZy5jb29raWUgPSAqY29va2llOwomIzQzOwkJcHJpdi0mZ3Q7cm9jX2NmZy5jb29raWUgPSBjb29raWU7CiAJCXByaXYtJmd0O3JvY19jZmcuY2hhbiA9ICpjaGFuOwogCi0JCWNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgKmNvb2tpZSwgY2hhbiwKJiM0MzsJCWNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLAogCQkJCQkgIGR1cmF0aW9uLCBHRlBfQVRPTUlDKTsKIAogCQltd2lmaWV4X2RiZyhwcml2LSZndDthZGFwdGVyLCBJTkZPLAotCQkJICAgICYjMzQ7aW5mbzogUk9DLCBjb29raWUgPSAweCVsbHhcbiYjMzQ7LCAqY29va2llKTsKJiM0MzsJCQkgICAgJiMzNDtpbmZvOiBST0MsIGNvb2tpZSA9IDB4JWxseFxuJiMzNDssIGNvb2tpZSk7CiAJfQogCiAJcmV0dXJuIHJldDsKQEAgLTQ1NjAsNyAmIzQzOzQ1NTgsNyBAQCBtd2lmaWV4X2NmZzgwMjExX2Rpc2Fzc29jaWF0ZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogc3RhdGljIGludAogbXdpZmlleF9jZmc4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJCQkgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKnBlZXIsCi0JCQkgICAgdTY0ICpjb29raWUpCiYjNDM7CQkJICAgIHU2NCBjb29raWUpCiB7CiAJLyogaG9zdGFwZCBsb29rcyBmb3IgTkw4MDIxMV9DTURfUFJPQkVfQ0xJRU5UIHN1cHBvcnQ7IG90aGVyd2lzZSwKIAkgKiBpdCByZXF1aXJlcyBtb25pdG9yLW1vZGUgc3VwcG9ydCAod2hpY2ggbXdpZmlleCBkb2VzbiYjMzk7dCBzdXBwb3J0KS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2NmZzgwMjExLmMKaW5kZXggNjY1NGZjZTRkZWQ4NC4uYmIyNzQ4YTE5MzI5NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2NmZzgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2NmZzgwMjExLmMKQEAgLTExMDAsMjQgJiM0MzsxMTAwLDE5IEBAIHN0YXRpYyB2b2lkIHdpbGNfd2ZpX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQoc3RydWN0IHdpbGNfdmlmICp2aWYsIHU2NCBjb29raWUpCiBzdGF0aWMgaW50IHJlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJCQkgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCQkgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiwKLQkJCSAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSwKJiM0MzsJCQkgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSwKIAkJCSAgICAgY29uc3QgdTggKnJ4X2FkZHIpCiB7CiAJaW50IHJldCA9IDA7CiAJc3RydWN0IHdpbGNfdmlmICp2aWYgPSBuZXRkZXZfcHJpdih3ZGV2LSZndDtuZXRkZXYpOwogCXN0cnVjdCB3aWxjX3ByaXYgKnByaXYgPSAmYW1wO3ZpZi0mZ3Q7cHJpdjsKLQl1NjQgaWQ7CiAKIAlpZiAod2Rldi0mZ3Q7aWZ0eXBlID09IE5MODAyMTFfSUZUWVBFX0FQKSB7CiAJCW5ldGRldl9kYmcodmlmLSZndDtuZGV2LCAmIzM0O1JlcXVpcmVkIHdoaWxlIGluIEFQIG1vZGVcbiYjMzQ7KTsKIAkJcmV0dXJuIHJldDsKIAl9CiAKLQlpZCA9ICYjNDM7JiM0Mztwcml2LSZndDtpbmNfcm9jX2Nvb2tpZTsKLQlpZiAoaWQgPT0gMCkKLQkJaWQgPSAmIzQzOyYjNDM7cHJpdi0mZ3Q7aW5jX3JvY19jb29raWU7Ci0KLQlyZXQgPSB3aWxjX3JlbWFpbl9vbl9jaGFubmVsKHZpZiwgaWQsIGNoYW4tJmd0O2h3X3ZhbHVlLAomIzQzOwlyZXQgPSB3aWxjX3JlbWFpbl9vbl9jaGFubmVsKHZpZiwgY29va2llLCBjaGFuLSZndDtod192YWx1ZSwKIAkJCQkgICAgIHdpbGNfd2ZpX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CkBAIC0xMTI1LDEyICYjNDM7MTEyMCwxMSBAQCBzdGF0aWMgaW50IHJlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJdmlmLSZndDt3aWxjLSZndDtvcF9jaCA9IGNoYW4tJmd0O2h3X3ZhbHVlOwogCiAJcHJpdi0mZ3Q7cmVtYWluX29uX2NoX3BhcmFtcy5saXN0ZW5fY2ggPSBjaGFuOwotCXByaXYtJmd0O3JlbWFpbl9vbl9jaF9wYXJhbXMubGlzdGVuX2Nvb2tpZSA9IGlkOwotCSpjb29raWUgPSBpZDsKJiM0MzsJcHJpdi0mZ3Q7cmVtYWluX29uX2NoX3BhcmFtcy5saXN0ZW5fY29va2llID0gY29va2llOwogCXByaXYtJmd0O3AycF9saXN0ZW5fc3RhdGUgPSB0cnVlOwogCXByaXYtJmd0O3JlbWFpbl9vbl9jaF9wYXJhbXMubGlzdGVuX2R1cmF0aW9uID0gZHVyYXRpb247CiAKLQljZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sIGR1cmF0aW9uLCBHRlBfS0VSTkVMKTsKJiM0MzsJY2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCBjb29raWUsIGNoYW4sIGR1cmF0aW9uLCBHRlBfS0VSTkVMKTsKIAltb2RfdGltZXIoJmFtcDt2aWYtJmd0O2hpZl9kcnYtJmd0O3JlbWFpbl9vbl9jaF90aW1lciwKIAkJICBqaWZmaWVzICYjNDM7IG1zZWNzX3RvX2ppZmZpZXMoZHVyYXRpb24gJiM0MzsgMTAwMCkpOwogCkBAIC0xMTUzLDcgJiM0MzsxMTQ3LDcgQEAgc3RhdGljIGludCBjYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwKIHN0YXRpYyBpbnQgbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCQkgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywKLQkJICAgdTY0ICpjb29raWUpCiYjNDM7CQkgICB1NjQgY29va2llKQogewogCXN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiA9IHBhcmFtcy0mZ3Q7Y2hhbjsKIAl1bnNpZ25lZCBpbnQgd2FpdCA9IHBhcmFtcy0mZ3Q7d2FpdDsKQEAgLTExNzAsOCAmIzQzOzExNjQsNyBAQCBzdGF0aWMgaW50IG1nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAljb25zdCB1OCAqdmVuZG9yX2llOwogCWludCByZXQgPSAwOwogCi0JKmNvb2tpZSA9IGdldF9yYW5kb21fdTMyKCk7Ci0JcHJpdi0mZ3Q7dHhfY29va2llID0gKmNvb2tpZTsKJiM0MzsJcHJpdi0mZ3Q7dHhfY29va2llID0gY29va2llOwogCW1nbXQgPSAoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICopYnVmOwogCiAJaWYgKCFpZWVlODAyMTFfaXNfbWdtdChtZ210LSZndDtmcmFtZV9jb250cm9sKSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jCmluZGV4IDRmOWUyMGY3MjgxMTQuLmM4MjBmMDhkMjgzNTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYwpAQCAtMTUwLDcgJiM0MzsxNTAsNyBAQCBueHB3aWZpX2Zvcm1fbWdtdF9mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKQogLyogY2ZnODAyMTEgb3BlcmF0aW9uIGhhbmRsZXIgdG8gdHJhbnNtaXQgYSBtYW5hZ2VtZW50IGZyYW1lLiAqLwogc3RhdGljIGludAogbnhwd2lmaV9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCi0JCQkgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKQomIzQzOwkJCSBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSkKIHsKIAljb25zdCB1OCAqYnVmID0gcGFyYW1zLSZndDtidWY7CiAJc2l6ZV90IGxlbiA9IHBhcmFtcy0mZ3Q7bGVuOwpAQCAtMjEyLDE0ICYjNDM7MjEyLDEzIEBAIG54cHdpZmlfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCXR4X2luZm8tJmd0O3BrdF9sZW4gPSBwa3RfbGVuOwogCiAJbnhwd2lmaV9mb3JtX21nbXRfZnJhbWUoc2tiLCBidWYsIGxlbik7Ci0JKmNvb2tpZSA9IG54cHdpZmlfcm9jX2Nvb2tpZShwcml2LSZndDthZGFwdGVyKTsKIAogCWlmIChpZWVlODAyMTFfaXNfYWN0aW9uKG1nbXQtJmd0O2ZyYW1lX2NvbnRyb2wpKQogCQlza2IgPSBueHB3aWZpX2Nsb25lX3NrYl9mb3JfdHhfc3RhdHVzKHByaXYsCiAJCQkJCQkgICAgICBza2IsCi0JCQkJTlhQV0lGSV9CVUZfRkxBR19BQ1RJT05fVFhfU1RBVFVTLCBjb29raWUpOwomIzQzOwkJCQlOWFBXSUZJX0JVRl9GTEFHX0FDVElPTl9UWF9TVEFUVVMsICZhbXA7Y29va2llKTsKIAllbHNlCi0JCWNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsICpjb29raWUsIGJ1ZiwgbGVuLCB0cnVlLAomIzQzOwkJY2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgdHJ1ZSwKIAkJCQkJR0ZQX0FUT01JQyk7CiAKIAlueHB3aWZpX3F1ZXVlX3R4X3BrdChwcml2LCBza2IpOwpAQCAtMjU0LDE0ICYjNDM7MjUzLDE0IEBAIHN0YXRpYyBpbnQKIG54cHdpZmlfY2ZnODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAkJCQkgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJCSAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiwKLQkJCQkgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLAomIzQzOwkJCQkgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsCiAJCQkJICAgY29uc3QgdTggKnJ4X2FkZHIpCiB7CiAJc3RydWN0IG54cHdpZmlfcHJpdmF0ZSAqcHJpdiA9IG54cHdpZmlfbmV0ZGV2X2dldF9wcml2KHdkZXYtJmd0O25ldGRldik7CiAJc3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtJmd0O2FkYXB0ZXI7CiAJaW50IHJldDsKIAotCWlmICghY2hhbiB8fCAhY29va2llKSB7CiYjNDM7CWlmICghY2hhbikgewogCQlueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUiwgJiMzNDtJbnZhbGlkIHBhcmFtZXRlciBmb3IgUk9DXG4mIzM0Oyk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KQEAgLTI3NywxNSAmIzQzOzI3NiwxNCBAQCBueHB3aWZpX2NmZzgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJCQkJCSBkdXJhdGlvbik7CiAKIAlpZiAoIXJldCkgewotCQkqY29va2llID0gbnhwd2lmaV9yb2NfY29va2llKGFkYXB0ZXIpOwotCQlwcml2LSZndDtyb2NfY2ZnLmNvb2tpZSA9ICpjb29raWU7CiYjNDM7CQlwcml2LSZndDtyb2NfY2ZnLmNvb2tpZSA9IGNvb2tpZTsKIAkJcHJpdi0mZ3Q7cm9jX2NmZy5jaGFuID0gKmNoYW47CiAKLQkJY2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCAqY29va2llLCBjaGFuLAomIzQzOwkJY2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCBjb29raWUsIGNoYW4sCiAJCQkJCSAgZHVyYXRpb24sIEdGUF9BVE9NSUMpOwogCiAJCW54cHdpZmlfZGJnKGFkYXB0ZXIsIElORk8sCi0JCQkgICAgJiMzNDtpbmZvOiBST0MsIGNvb2tpZSA9IDB4JWxseFxuJiMzNDssICpjb29raWUpOwomIzQzOwkJCSAgICAmIzM0O2luZm86IFJPQywgY29va2llID0gMHglbGx4XG4mIzM0OywgY29va2llKTsKIAl9CiAKIAlyZXR1cm4gcmV0OwpAQCAtMzYxOCw3ICYjNDM7MzYxNiw3IEBAIG54cHdpZmlfY2ZnODAyMTFfZGlzYXNzb2NpYXRlKHN0cnVjdCB3aXBoeSAqd2lwaHksCiBzdGF0aWMgaW50CiBueHB3aWZpX2NmZzgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAkJCSAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICpwZWVyLAotCQkJICAgICAgdTY0ICpjb29raWUpCiYjNDM7CQkJICAgICAgdTY0IGNvb2tpZSkKIHsKIAkvKgogCSAqIGhvc3RhcGQgbG9va3MgZm9yIE5MODAyMTFfQ01EX1BST0JFX0NMSUVOVCBzdXBwb3J0OyBvdGhlcndpc2UsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY2ZnODAyMTEuYwppbmRleCA5ZTQ0Yzg1ZDIwNTFjLi40NWUyYjdhZTk2MzMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9jZmc4MDIxMS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2NmZzgwMjExLmMKQEAgLTQ0Niw3ICYjNDM7NDQ2LDcgQEAgcXRuZl91cGRhdGVfbWdtdF9mcmFtZV9yZWdpc3RyYXRpb25zKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAKIHN0YXRpYyBpbnQKIHF0bmZfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAotCSAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKQomIzQzOwkgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKQogewogCXN0cnVjdCBxdG5mX3ZpZiAqdmlmID0gcXRuZl9uZXRkZXZfZ2V0X3ByaXYod2Rldi0mZ3Q7bmV0ZGV2KTsKIAljb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXRfZnJhbWUgPSAodm9pZCAqKXBhcmFtcy0mZ3Q7YnVmOwpAQCAtNDU0LDggJiM0Mzs0NTQsNiBAQCBxdG5mX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAl1MTYgZmxhZ3MgPSAwOwogCXUxNiBmcmVxOwogCi0JKmNvb2tpZSA9IHNob3J0X2Nvb2tpZTsKLQogCWlmIChwYXJhbXMtJmd0O29mZmNoYW4pCiAJCWZsYWdzIHw9IFFMSU5LX0ZSQU1FX1RYX0ZMQUdfT0ZGQ0hBTjsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvaW9jdGxfY2ZnODAyMTEuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL2lvY3RsX2NmZzgwMjExLmMKaW5kZXggNmE5N2FmZDg5ZGM3OC4uYjU4ZGRhMTI5ZmY2NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvaW9jdGxfY2ZnODAyMTEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9pb2N0bF9jZmc4MDIxMS5jCkBAIC0yNTMwLDcgJiM0MzsyNTMwLDcgQEAgc3RhdGljIGludCBfY2ZnODAyMTFfcnR3X21nbXRfdHgoc3RydWN0IGFkYXB0ZXIgKnBhZGFwdGVyLCB1OCB0eF9jaCwgY29uc3QgdTggKmIKIAogc3RhdGljIGludCBjZmc4MDIxMV9ydHdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJCXN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLAotCQkJCXU2NCAqY29va2llKQomIzQzOwkJCQl1NjQgY29va2llKQogewogCXN0cnVjdCBuZXRfZGV2aWNlICpuZGV2ID0gd2Rldl90b19uZGV2KHdkZXYpOwogCXN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiA9IHBhcmFtcy0mZ3Q7Y2hhbjsKQEAgLTI1NTIsMTEgJiM0MzsyNTUyLDggQEAgc3RhdGljIGludCBjZmc4MDIxMV9ydHdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCiAJcGFkYXB0ZXIgPSBydHdfbmV0ZGV2X3ByaXYobmRldik7CiAKLQkvKiBjb29raWUgZ2VuZXJhdGlvbiAqLwotCSpjb29raWUgPSAodW5zaWduZWQgbG9uZylidWY7Ci0KIAkvKiBpbmRpY2F0ZSBhY2sgYmVmb3JlIGlzc3VlIGZyYW1lIHRvIGF2b2lkIHJhY2luZyB3aXRoIHJzcCBmcmFtZSAqLwotCXJ0d19jZmc4MDIxMV9tZ210X3R4X3N0YXR1cyhwYWRhcHRlciwgKmNvb2tpZSwgYnVmLCBsZW4sIGFjaywgR0ZQX0tFUk5FTCk7CiYjNDM7CXJ0d19jZmc4MDIxMV9tZ210X3R4X3N0YXR1cyhwYWRhcHRlciwgY29va2llLCBidWYsIGxlbiwgYWNrLCBHRlBfS0VSTkVMKTsKIAogCWlmICghcnR3X2FjdGlvbl9mcmFtZV9wYXJzZShidWYsIGxlbiwgJmFtcDtjYXRlZ29yeSwgJmFtcDthY3Rpb24pKQogCQlnb3RvIGV4aXQ7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9jZmc4MDIxMS5oIGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaAppbmRleCBkY2JiMGU1NWMzMmVjLi45N2MxNmQ0ZmYxMjcxIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9jZmc4MDIxMS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2NmZzgwMjExLmgKQEAgLTUxMDgsNyAmIzQzOzUxMDgsOCBAQCBzdHJ1Y3QgbWdtdF9mcmFtZV9yZWdzIHsKICAqIEB0ZGxzX29wZXI6IFBlcmZvcm0gYSBoaWdoLWxldmVsIFRETFMgb3BlcmF0aW9uIChlLmcuIFRETFMgbGluayBzZXR1cCkuCiAgKgogICogQHByb2JlX3BlZXI6IHByb2JlIGEgY29ubmVjdGVkIHBlZXIgKEFQOiBTVEEgTUFDIHJlcXVpcmVkOyBTVEE6IG5vIE1BQyksCi0gKgltdXN0IHJldHVybiBhIGNvb2tpZSB0aGF0IGlzIGxhdGVyIHBhc3NlZCB0byBjZmc4MDIxMV9wcm9iZV9zdGF0dXMoKS4KJiM0MzsgKgltdXN0IHVzZSB0aGUgQGNvb2tpZSBhcyBwcm92aWRlZCB3aGljaCBpcyBsYXRlciBwYXNzZWQgdG8KJiM0MzsgKgljZmc4MDIxMV9wcm9iZV9zdGF0dXMoKS4KICAqCiAgKiBAc2V0X25vYWNrX21hcDogU2V0IHRoZSBOb0FjayBNYXAgZm9yIHRoZSBUSURzLgogICoKQEAgLTUyMTksNyAmIzQzOzUyMjAsOCBAQCBzdHJ1Y3QgbWdtdF9mcmFtZV9yZWdzIHsKICAqICAgICB1c2VyIHNwYWNlCiAgKgogICogQHR4X2NvbnRyb2xfcG9ydDogVFggYSBjb250cm9sIHBvcnQgZnJhbWUgKEVBUG9MKS4gIFRoZSBub2VuY3J5cHQgcGFyYW1ldGVyCi0gKgl0ZWxscyB0aGUgZHJpdmVyIHRoYXQgdGhlIGZyYW1lIHNob3VsZCBub3QgYmUgZW5jcnlwdGVkLgomIzQzOyAqCXRlbGxzIHRoZSBkcml2ZXIgdGhhdCB0aGUgZnJhbWUgc2hvdWxkIG5vdCBiZSBlbmNyeXB0ZWQuIEEgQGNvb2tpZQomIzQzOyAqCXZhbHVlIG9mIDAgbWVhbnMgdGhlIGNhbGxlciBkb2VzIG5vdCB3YW50IFRYIHN0YXR1cyByZXBvcnRpbmcuCiAgKgogICogQGdldF9mdG1fcmVzcG9uZGVyX3N0YXRzOiBSZXRyaWV2ZSBGVE0gcmVzcG9uZGVyIHN0YXRpc3RpY3MsIGlmIGF2YWlsYWJsZS4KICAqCVN0YXRpc3RpY3Mgc2hvdWxkIGJlIGN1bXVsYXRpdmUsIGN1cnJlbnRseSBubyB3YXkgdG8gcmVzZXQgaXMgcHJvdmlkZWQuCkBAIC01NDU2LDE0ICYjNDM7NTQ1OCwxNCBAQCBzdHJ1Y3QgY2ZnODAyMTFfb3BzIHsKIAkJCQkgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCQkJICAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sCiAJCQkJICAgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sCi0JCQkJICAgICB1NjQgKmNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpOwomIzQzOwkJCQkgICAgIHU2NCBjb29raWUsIGNvbnN0IHU4ICpyeF9hZGRyKTsKIAlpbnQJKCpjYW5jZWxfcmVtYWluX29uX2NoYW5uZWwpKHN0cnVjdCB3aXBoeSAqd2lwaHksCiAJCQkJCSAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJCQkgICAgdTY0IGNvb2tpZSk7CiAKIAlpbnQJKCptZ210X3R4KShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsCi0JCQkgICB1NjQgKmNvb2tpZSk7CiYjNDM7CQkJICAgdTY0IGNvb2tpZSk7CiAJaW50CSgqbWdtdF90eF9jYW5jZWxfd2FpdCkoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAkJCQkgICAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJCQkgICAgICAgdTY0IGNvb2tpZSk7CkBAIC01NTEwLDcgJiM0Mzs1NTEyLDcgQEAgc3RydWN0IGNmZzgwMjExX29wcyB7CiAJCQkgICAgIGNvbnN0IHU4ICpwZWVyLCBlbnVtIG5sODAyMTFfdGRsc19vcGVyYXRpb24gb3Blcik7CiAKIAlpbnQJKCpwcm9iZV9wZWVyKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAotCQkJICAgICAgY29uc3QgdTggKnBlZXIsIHU2NCAqY29va2llKTsKJiM0MzsJCQkgICAgICBjb25zdCB1OCAqcGVlciwgdTY0IGNvb2tpZSk7CiAKIAlpbnQJKCpzZXRfbm9hY2tfbWFwKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCQkJCSAgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKQEAgLTU2MDgsNyAmIzQzOzU2MTAsNyBAQCBzdHJ1Y3QgY2ZnODAyMTFfb3BzIHsKIAkJCQkgICBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLAogCQkJCSAgIGNvbnN0IHU4ICpkZXN0LCBjb25zdCBfX2JlMTYgcHJvdG8sCiAJCQkJICAgY29uc3QgYm9vbCBub2VuY3J5cHQsIGludCBsaW5rX2lkLAotCQkJCSAgIHU2NCAqY29va2llKTsKJiM0MzsJCQkJICAgdTY0IGNvb2tpZSk7CiAKIAlpbnQJKCpnZXRfZnRtX3Jlc3BvbmRlcl9zdGF0cykoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAkJCQlzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LApkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2NmZy5jIGIvbmV0L21hYzgwMjExL2NmZy5jCmluZGV4IDBhOTI0N2JlMjZhZmEuLjBjMmM3YWZkNTljNGEgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS9jZmcuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvY2ZnLmMKQEAgLTQ4MzEsMTkgJiM0Mzs0ODMxLDYgQEAgaW50IGllZWU4MDIxMV9jaGFubmVsX3N3aXRjaChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCXJldHVybiBfX2llZWU4MDIxMV9jaGFubmVsX3N3aXRjaCh3aXBoeSwgZGV2LCBwYXJhbXMpOwogfQogCi11NjQgaWVlZTgwMjExX21nbXRfdHhfY29va2llKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKQotewotCWxvY2tkZXBfYXNzZXJ0X3dpcGh5KGxvY2FsLSZndDtody53aXBoeSk7Ci0KLQlsb2NhbC0mZ3Q7cm9jX2Nvb2tpZV9jb3VudGVyJiM0MzsmIzQzOzsKLQotCS8qIHdvdywgeW91IHdyYXBwZWQgNjQgYml0cyAuLi4gbW9yZSBsaWtlbHkgYSBidWcgKi8KLQlpZiAoV0FSTl9PTihsb2NhbC0mZ3Q7cm9jX2Nvb2tpZV9jb3VudGVyID09IDApKQotCQlsb2NhbC0mZ3Q7cm9jX2Nvb2tpZV9jb3VudGVyJiM0MzsmIzQzOzsKLQotCXJldHVybiBsb2NhbC0mZ3Q7cm9jX2Nvb2tpZV9jb3VudGVyOwotfQotCiBpbnQgaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJICAgICB1NjQgKmNvb2tpZSwgZ2ZwX3QgZ2ZwKQogewpAQCAtNDg2OCw3ICYjNDM7NDg1NSw2IEBAIGludCBpZWVlODAyMTFfYXR0YWNoX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IsCiAJSUVFRTgwMjExX1NLQl9DQihza2IpLSZndDtzdGF0dXNfZGF0YV9pZHIgPSAxOwogCUlFRUU4MDIxMV9TS0JfQ0Ioc2tiKS0mZ3Q7c3RhdHVzX2RhdGEgPSBpZDsKIAotCSpjb29raWUgPSBpZWVlODAyMTFfbWdtdF90eF9jb29raWUobG9jYWwpOwogCUlFRUU4MDIxMV9TS0JfQ0IoYWNrX3NrYiktJmd0O2Fjay5jb29raWUgPSAqY29va2llOwogCiAJcmV0dXJuIDA7CkBAIC00OTU0LDcgJiM0Mzs0OTQwLDcgQEAgc3RhdGljIGludCBpZWVlODAyMTFfc2V0X3Jla2V5X2RhdGEoc3RydWN0IHdpcGh5ICp3aXBoeSwKIH0KIAogc3RhdGljIGludCBpZWVlODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAotCQkJCWNvbnN0IHU4ICpwZWVyLCB1NjQgKmNvb2tpZSkKJiM0MzsJCQkJY29uc3QgdTggKnBlZXIsIHU2NCBjb29raWUpCiB7CiAJc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpOwogCXN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtJmd0O2xvY2FsOwpAQCAtNTA2MSw3ICYjNDM7NTA0Nyw3IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAlpZiAocW9zKQogCQludWxsZnVuYy0mZ3Q7cW9zX2N0cmwgPSBjcHVfdG9fbGUxNig3KTsKIAotCXJldCA9IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihsb2NhbCwgc2tiLCBjb29raWUsIEdGUF9BVE9NSUMpOwomIzQzOwlyZXQgPSBpZWVlODAyMTFfYXR0YWNoX2Fja19za2IobG9jYWwsIHNrYiwgJmFtcDtjb29raWUsIEdGUF9BVE9NSUMpOwogCWlmIChyZXQpIHsKIAkJa2ZyZWVfc2tiKHNrYik7CiAJCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaCBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oCmluZGV4IGExZWY4OGZlODQ2ZGQuLjU3NjFlOTYyMTQ5MTQgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oCkBAIC0xNzEwLDggJiM0MzsxNzEwLDYgQEAgc3RydWN0IGllZWU4MDIxMV9sb2NhbCB7CiAJc3RydWN0IGxpc3RfaGVhZCByb2NfbGlzdDsKIAlzdHJ1Y3Qgd2lwaHlfd29yayBod19yb2Nfc3RhcnQsIGh3X3JvY19kb25lOwogCXVuc2lnbmVkIGxvbmcgaHdfcm9jX3N0YXJ0X3RpbWU7Ci0JdTY0IHJvY19jb29raWVfY291bnRlcjsKLQogCXN0cnVjdCBpZHIgYWNrX3N0YXR1c19mcmFtZXM7CiAJc3BpbmxvY2tfdCBhY2tfc3RhdHVzX2xvY2s7CiAKQEAgLTE5OTEsNyAmIzQzOzE5ODksNiBAQCB1NjQgaWVlZTgwMjExX3Jlc2V0X2VycF9pbmZvKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTsKIAogdm9pZCBpZWVlODAyMTFfaGFuZGxlX3F1ZXVlZF9mcmFtZXMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpOwogCi11NjQgaWVlZTgwMjExX21nbXRfdHhfY29va2llKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKTsKIGludCBpZWVlODAyMTFfYXR0YWNoX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IsCiAJCQkgICAgIHU2NCAqY29va2llLCBnZnBfdCBnZnApOwogCkBAIC0yMTUzLDEyICYjNDM7MjE1MCwxMiBAQCB2b2lkIGllZWU4MDIxMV9yb2NfcHVyZ2Uoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsCiAJCQkgc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpOwogaW50IGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJCXN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiwKLQkJCQl1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLAomIzQzOwkJCQl1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsCiAJCQkJY29uc3QgdTggKnJ4X2FkZHIpOwogaW50IGllZWU4MDIxMV9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwKIAkJCQkgICAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgdTY0IGNvb2tpZSk7CiBpbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKLQkJICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKTsKJiM0MzsJCSAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKTsKIGludCBpZWVlODAyMTFfbWdtdF90eF9jYW5jZWxfd2FpdChzdHJ1Y3Qgd2lwaHkgKndpcGh5LAogCQkJCSAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgdTY0IGNvb2tpZSk7CiAKQEAgLTIyMzcsNyAmIzQzOzIyMzQsNyBAQCB2b2lkIF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCQkgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQkJICB1MzIgaW5mb19mbGFncywKIAkJCQkgIHUzMiBjdHJsX2ZsYWdzLAotCQkJCSAgdTY0ICpjb29raWUpOwomIzQzOwkJCQkgIHU2NCBjb29raWUpOwogc3RydWN0IHNrX2J1ZmYgKgogaWVlZTgwMjExX2J1aWxkX2RhdGFfdGVtcGxhdGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsCiAJCQkgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mb19mbGFncyk7CkBAIC0yMjUxLDcgJiM0MzsyMjQ4LDcgQEAgdm9pZCBpZWVlODAyMTFfY2xlYXJfZmFzdF94bWl0KHN0cnVjdCBzdGFfaW5mbyAqc3RhKTsKIGludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQkgICAgICBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLAogCQkJICAgICAgY29uc3QgdTggKmRlc3QsIF9fYmUxNiBwcm90bywgYm9vbCB1bmVuY3J5cHRlZCwKLQkJCSAgICAgIGludCBsaW5rX2lkLCB1NjQgKmNvb2tpZSk7CiYjNDM7CQkJICAgICAgaW50IGxpbmtfaWQsIHU2NCBjb29raWUpOwogaW50IGllZWU4MDIxMV9wcm9iZV9tZXNoX2xpbmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJCSAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pOwogdm9pZCBfX2llZWU4MDIxMV94bWl0X2Zhc3Qoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jIGIvbmV0L21hYzgwMjExL29mZmNoYW5uZWwuYwppbmRleCAyYmNlYjczNzE3YzY2Li43YWNlZjgwZDVmMWZiIDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMKQEAgLTYwMiwxNCAmIzQzOzYwMiwxMiBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9zdGFydF9yb2Nfd29yayhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwKIAogCS8qCiAJICogY29va2llIGlzIGVpdGhlciB0aGUgcm9jIGNvb2tpZSAoZm9yIG5vcm1hbCByb2MpCi0JICogb3IgdGhlIFNLQiAoZm9yIG1nbXQgVFgpCiYjNDM7CSAqIG9yIHRoZSBtZ210X3R4IGNvb2tpZTsgYm90aCBhcmUgcHJlLWFzc2lnbmVkIGJ5IGNmZzgwMjExCiAJICovCi0JaWYgKCF0eHNrYikgewotCQlyb2MtJmd0O2Nvb2tpZSA9IGllZWU4MDIxMV9tZ210X3R4X2Nvb2tpZShsb2NhbCk7Ci0JCSpjb29raWUgPSByb2MtJmd0O2Nvb2tpZTsKLQl9IGVsc2UgewomIzQzOwlpZiAoIXR4c2tiKQomIzQzOwkJcm9jLSZndDtjb29raWUgPSAqY29va2llOwomIzQzOwllbHNlCiAJCXJvYy0mZ3Q7bWdtdF90eF9jb29raWUgPSAqY29va2llOwotCX0KIAogCXJlcSA9IHdpcGh5X2RlcmVmZXJlbmNlKGxvY2FsLSZndDtody53aXBoeSwgbG9jYWwtJmd0O3NjYW5fcmVxKTsKIApAQCAtNzA0LDcgJiM0Mzs3MDIsNyBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9zdGFydF9yb2Nfd29yayhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwKIAogaW50IGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJCXN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiwKLQkJCQl1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLAomIzQzOwkJCQl1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsCiAJCQkJY29uc3QgdTggKnJ4X2FkZHIpCiB7CiAJc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfV0RFVl9UT19TVUJfSUYod2Rldik7CkBAIC03MTMsNyAmIzQzOzcxMSw3IEBAIGludCBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAlsb2NrZGVwX2Fzc2VydF93aXBoeShsb2NhbC0mZ3Q7aHcud2lwaHkpOwogCiAJcmV0dXJuIGllZWU4MDIxMV9zdGFydF9yb2Nfd29yayhsb2NhbCwgc2RhdGEsIGNoYW4sCi0JCQkJCWR1cmF0aW9uLCBjb29raWUsIE5VTEwsCiYjNDM7CQkJCQlkdXJhdGlvbiwgJmFtcDtjb29raWUsIE5VTEwsCiAJCQkJCUlFRUU4MDIxMV9ST0NfVFlQRV9OT1JNQUwpOwogfQogCkBAIC04MTAsNyAmIzQzOzgwOCw3IEBAIGludCBpZWVlODAyMTFfY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksCiB9CiAKIGludCBpZWVlODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAotCQkgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpCiYjNDM7CQkgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSkKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTsKIAlzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLSZndDtsb2NhbDsKQEAgLTEwMTYsMTggJiM0MzsxMDE0LDExIEBAIGludCBpZWVlODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkvKiBtYWtlIGEgY29weSB0byBwcmVzZXJ2ZSB0aGUgZnJhbWUgY29udGVudHMKIAkJICogaW4gY2FzZSBvZiBlbmNyeXB0aW9uLgogCQkgKi8KLQkJcmV0ID0gaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKGxvY2FsLCBza2IsIGNvb2tpZSwgR0ZQX0tFUk5FTCk7CiYjNDM7CQlyZXQgPSBpZWVlODAyMTFfYXR0YWNoX2Fja19za2IobG9jYWwsIHNrYiwgJmFtcDtjb29raWUsIEdGUF9LRVJORUwpOwogCQlpZiAocmV0KSB7CiAJCQlrZnJlZV9za2Ioc2tiKTsKIAkJCWdvdG8gb3V0X3VubG9jazsKIAkJfQotCX0gZWxzZSB7Ci0JCS8qIEFzc2lnbiBhIGR1bW15IG5vbi16ZXJvIGNvb2tpZSwgaXQmIzM5O3Mgbm90IHNlbnQgdG8KLQkJICogdXNlcnNwYWNlIGluIHRoaXMgY2FzZSBidXQgd2UgcmVseSBvbiBpdHMgdmFsdWUKLQkJICogaW50ZXJuYWxseSBpbiB0aGUgbmVlZF9vZmZjaGFuIGNhc2UgdG8gZGlzdGluZ3Vpc2gKLQkJICogbWdtdC10eCBmcm9tIHJlbWFpbi1vbi1jaGFubmVsLgotCQkgKi8KLQkJKmNvb2tpZSA9IDB4ZmZmZmZmZmY7CiAJfQogCiAJaWYgKCFuZWVkX29mZmNoYW4pIHsKQEAgLTEwNDQsNyAmIzQzOzEwMzUsNyBAQCBpbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAogCS8qIFRoaXMgd2lsbCBoYW5kbGUgYWxsIGtpbmRzIG9mIGNvYWxlc2NpbmcgYW5kIGltbWVkaWF0ZSBUWCAqLwogCXJldCA9IGllZWU4MDIxMV9zdGFydF9yb2Nfd29yayhsb2NhbCwgc2RhdGEsIHBhcmFtcy0mZ3Q7Y2hhbiwKLQkJCQkgICAgICAgcGFyYW1zLSZndDt3YWl0LCBjb29raWUsIHNrYiwKJiM0MzsJCQkJICAgICAgIHBhcmFtcy0mZ3Q7d2FpdCwgJmFtcDtjb29raWUsIHNrYiwKIAkJCQkgICAgICAgSUVFRTgwMjExX1JPQ19UWVBFX01HTVRfVFgpOwogCWlmIChyZXQpCiAJCWllZWU4MDIxMV9mcmVlX3R4c2tiKCZhbXA7bG9jYWwtJmd0O2h3LCBza2IpOwpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3RkbHMuYyBiL25ldC9tYWM4MDIxMS90ZGxzLmMKaW5kZXggZmZkNTc1YThkMTg4Zi4uZGMyZjY2MmZlNGM0NiAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL3RkbHMuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvdGRscy5jCkBAIC0xMTIxLDcgJiM0MzsxMTIxLDcgQEAgaWVlZTgwMjExX3RkbHNfcHJlcF9tZ210X3BhY2tldChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCS8qIGRpc2FibGUgYm90dG9tIGhhbHZlcyB3aGVuIGVudGVyaW5nIHRoZSBUeCBwYXRoICovCiAJbG9jYWxfYmhfZGlzYWJsZSgpOwogCV9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIGZsYWdzLAotCQkJCSAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLCBOVUxMKTsKJiM0MzsJCQkJICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsIDApOwogCWxvY2FsX2JoX2VuYWJsZSgpOwogCiAJcmV0dXJuIHJldDsKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS90eC5jIGIvbmV0L21hYzgwMjExL3R4LmMKaW5kZXggMGNmNWY2ZWM3NWU2Ny4uNDU0YTg3MmIyNTlhMyAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL3R4LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL3R4LmMKQEAgLTI1ODMsNyAmIzQzOzI1ODMsNyBAQCBpbnQgaWVlZTgwMjExX2xvb2t1cF9yYV9zdGEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsCiBzdGF0aWMgdTE2IGllZWU4MDIxMV9zdG9yZV9hY2tfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLAogCQkJCSAgIHN0cnVjdCBza19idWZmICpza2IsCiAJCQkJICAgdTMyICppbmZvX2ZsYWdzLAotCQkJCSAgIHU2NCAqY29va2llKQomIzQzOwkJCQkgICB1NjQgY29va2llKQogewogCXN0cnVjdCBza19idWZmICphY2tfc2tiOwogCXUxNiBpbmZvX2lkID0gMDsKQEAgLTI2MDUsMTAgJiM0MzsyNjA1LDggQEAgc3RhdGljIHUxNiBpZWVlODAyMTFfc3RvcmVfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwKIAkJaWYgKGlkICZndDs9IDApIHsKIAkJCWluZm9faWQgPSBpZDsKIAkJCSppbmZvX2ZsYWdzIHw9IElFRUU4MDIxMV9UWF9DVExfUkVRX1RYX1NUQVRVUzsKLQkJCWlmIChjb29raWUpIHsKLQkJCQkqY29va2llID0gaWVlZTgwMjExX21nbXRfdHhfY29va2llKGxvY2FsKTsKLQkJCQlJRUVFODAyMTFfU0tCX0NCKGFja19za2IpLSZndDthY2suY29va2llID0gKmNvb2tpZTsKLQkJCX0KJiM0MzsJCQlpZiAoY29va2llKQomIzQzOwkJCQlJRUVFODAyMTFfU0tCX0NCKGFja19za2IpLSZndDthY2suY29va2llID0gY29va2llOwogCQl9IGVsc2UgewogCQkJa2ZyZWVfc2tiKGFja19za2IpOwogCQl9CkBAIC0yNjUzLDcgJiM0MzsyNjUxLDcgQEAgc3RhdGljIHZvaWQgaWVlZTgwMjExX3JlbW92ZV9hY2tfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLCB1MTYgaW5mb19pZCkKIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX2J1aWxkX2hkcihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwKIAkJCQkJICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIGluZm9fZmxhZ3MsCiAJCQkJCSAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1MzIgY3RybF9mbGFncywKLQkJCQkJICAgdTY0ICpjb29raWUpCiYjNDM7CQkJCQkgICB1NjQgY29va2llKQogewogCXN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtJmd0O2xvY2FsOwogCXN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbzsKQEAgLTQzNzQsNyAmIzQzOzQzNzIsNyBAQCB2b2lkIF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCQkgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQkJICB1MzIgaW5mb19mbGFncywKIAkJCQkgIHUzMiBjdHJsX2ZsYWdzLAotCQkJCSAgdTY0ICpjb29raWUpCiYjNDM7CQkJCSAgdTY0IGNvb2tpZSkKIHsKIAlzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7CiAJc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS0mZ3Q7bG9jYWw7CkBAIC00NTY5LDcgJiM0Mzs0NTY3LDcgQEAgc3RhdGljIHZvaWQgaWVlZTgwMjExX21sb19tdWx0aWNhc3RfdHhfb25lKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLAogCQlyZXR1cm47CiAKIAljdHJsX2ZsYWdzIHw9IHUzMl9lbmNvZGVfYml0cyhsaW5rX2lkLCBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOSyk7Ci0JX19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChvdXQsIHNkYXRhLSZndDtkZXYsIDAsIGN0cmxfZmxhZ3MsIE5VTEwpOwomIzQzOwlfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KG91dCwgc2RhdGEtJmd0O2RldiwgMCwgY3RybF9mbGFncywgMCk7CiB9CiAKIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbG9fbXVsdGljYXN0X3R4KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCkBAIC00NTg0LDggJiM0Mzs0NTgyLDcgQEAgc3RhdGljIHZvaWQgaWVlZTgwMjExX21sb19tdWx0aWNhc3RfdHgoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJY3RybF9mbGFncyB8PSB1MzJfZW5jb2RlX2JpdHMoX19mZnMobGlua3MpLAogCQkJCQkgICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOSyk7CiAKLQkJX19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIHNkYXRhLSZndDtkZXYsIDAsIGN0cmxfZmxhZ3MsCi0JCQkJCSAgICAgTlVMTCk7CiYjNDM7CQlfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgc2RhdGEtJmd0O2RldiwgMCwgY3RybF9mbGFncywgMCk7CiAJCXJldHVybjsKIAl9CiAKQEAgLTQ2MjcsNyAmIzQzOzQ2MjQsNyBAQCBuZXRkZXZfdHhfdCBpZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQl3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUoJmFtcDtxdWV1ZSkpKQogCQkJX19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIGRldiwgMCwKIAkJCQkJCSAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLAotCQkJCQkJICAgICBOVUxMKTsKJiM0MzsJCQkJCQkgICAgIDApOwogCX0gZWxzZSBpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoJmFtcDtzZGF0YS0mZ3Q7dmlmKSAmYW1wOyZhbXA7CiAJCSAgICgoc2RhdGEtJmd0O3ZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQICZhbXA7JmFtcDsKIAkJICAgICAhaWVlZTgwMjExX2h3X2NoZWNrKCZhbXA7c2RhdGEtJmd0O2xvY2FsLSZndDtodywgTUxPX01DQVNUX01VTFRJX0xJTktfVFgpKSB8fApAQCAtNDYzOCw3ICYjNDM7NDYzNSw3IEBAIG5ldGRldl90eF90IGllZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsCiBub3JtYWw6CiAJCV9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIDAsCiAJCQkJCSAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLAotCQkJCQkgICAgIE5VTEwpOwomIzQzOwkJCQkJICAgICAwKTsKIAl9CiAKIAlyZXR1cm4gTkVUREVWX1RYX09LOwpAQCAtNDczNyw3ICYjNDM7NDczNCw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV84MDIzX3htaXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsCiAJCQkvKiBmYWxsIGJhY2sgdG8gbm9uLW9mZmxvYWQgc2xvdyBwYXRoICovCiAJCQlfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgZGV2LCAwLAogCQkJCQkJICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsCi0JCQkJCQkgICAgIE5VTEwpOwomIzQzOwkJCQkJCSAgICAgMCk7CiAJCQlyZXR1cm47CiAJCX0KIApAQCAtNDc3Myw3ICYjNDM7NDc3MCw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV84MDIzX3htaXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsCiAKIAlpZiAodW5saWtlbHkoc2tfcmVxdWVzdHNfd2lmaV9zdGF0dXMoc2tiLSZndDtzaykpKSB7CiAJCWluZm8tJmd0O3N0YXR1c19kYXRhID0gaWVlZTgwMjExX3N0b3JlX2Fja19za2IobG9jYWwsIHNrYiwKLQkJCQkJCQkgICAgJmFtcDtpbmZvLSZndDtmbGFncywgTlVMTCk7CiYjNDM7CQkJCQkJCSAgICAmYW1wO2luZm8tJmd0O2ZsYWdzLCAwKTsKIAkJaWYgKGluZm8tJmd0O3N0YXR1c19kYXRhKQogCQkJaW5mby0mZ3Q7c3RhdHVzX2RhdGFfaWRyID0gMTsKIAl9CkBAIC00OTE2LDcgJiM0Mzs0OTEzLDcgQEAgaWVlZTgwMjExX2J1aWxkX2RhdGFfdGVtcGxhdGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsCiAJfQogCiAJc2tiID0gaWVlZTgwMjExX2J1aWxkX2hkcihzZGF0YSwgc2tiLCBpbmZvX2ZsYWdzLCBzdGEsCi0JCQkJICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsIE5VTEwpOwomIzQzOwkJCQkgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LX1VOU1BFQywgMCk7CiAJaWYgKElTX0VSUihza2IpKQogCQlnb3RvIG91dDsKIApAQCAtNjUzMSw3ICYjNDM7NjUyOCw3IEBAIHZvaWQgaWVlZTgwMjExX3R4X3NrYl90aWQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsCiBpbnQgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkJICAgICAgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbiwKIAkJCSAgICAgIGNvbnN0IHU4ICpkZXN0LCBfX2JlMTYgcHJvdG8sIGJvb2wgdW5lbmNyeXB0ZWQsCi0JCQkgICAgICBpbnQgbGlua19pZCwgdTY0ICpjb29raWUpCiYjNDM7CQkJICAgICAgaW50IGxpbmtfaWQsIHU2NCBjb29raWUpCiB7CiAJc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpOwogCXN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtJmd0O2xvY2FsOwpAQCAtNjY2Niw3ICYjNDM7NjY2Myw3IEBAIGludCBpZWVlODAyMTFfcHJvYmVfbWVzaF9saW5rKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJbG9jYWxfYmhfZGlzYWJsZSgpOwogCV9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBza2ItJmd0O2RldiwgMCwKIAkJCQkgICAgIElFRUU4MDIxMV9UWF9DVFJMX1NLSVBfTVBBVEhfTE9PS1VQLAotCQkJCSAgICAgTlVMTCk7CiYjNDM7CQkJCSAgICAgMCk7CiAJbG9jYWxfYmhfZW5hYmxlKCk7CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9jb3JlLmggYi9uZXQvd2lyZWxlc3MvY29yZS5oCmluZGV4IDE1ZDlmN2ViNThiNGQuLmI0NjEwZjY2ODVkY2IgMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVzcy9jb3JlLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL2NvcmUuaApAQCAtNDAyLDcgJiM0Mzs0MDIsNyBAQCB2b2lkIGNmZzgwMjExX21sbWVfcHVyZ2VfcmVnaXN0cmF0aW9ucyhzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2KTsKIGludCBjZmc4MDIxMV9tbG1lX21nbXRfdHgoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LAogCQkJICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCQkJICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywKLQkJCSAgdTY0ICpjb29raWUpOwomIzQzOwkJCSAgdTY0IGNvb2tpZSk7CiB2b2lkIGNmZzgwMjExX29wZXJfYW5kX2h0X2NhcGEoc3RydWN0IGllZWU4MDIxMV9odF9jYXAgKmh0X2NhcGEsCiAJCQkgICAgICAgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9odF9jYXAgKmh0X2NhcGFfbWFzayk7CiB2b2lkIGNmZzgwMjExX29wZXJfYW5kX3ZodF9jYXBhKHN0cnVjdCBpZWVlODAyMTFfdmh0X2NhcCAqdmh0X2NhcGEsCmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3MvbWxtZS5jIGIvbmV0L3dpcmVsZXNzL21sbWUuYwppbmRleCA3ODI0YjdhYzI3NzBmLi5hMGQxY2RlMjZmMGM5IDEwMDY0NAotLS0gYS9uZXQvd2lyZWxlc3MvbWxtZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC93aXJlbGVzcy9tbG1lLmMKQEAgLTg5NCw3ICYjNDM7ODk0LDcgQEAgc3RhdGljIGJvb2wgY2ZnODAyMTFfYWxsb3dlZF9yYW5kb21fYWRkcmVzcyhzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCiBpbnQgY2ZnODAyMTFfbWxtZV9tZ210X3R4KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldiwKIAkJCSAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKLQkJCSAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKQomIzQzOwkJCSAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpCiB7CiAJY29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210OwogCXUxNiBzdHlwZTsKZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9ubDgwMjExLmMgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jCmluZGV4IDhhZGJlZjVmMDQ0MjUuLmFjODk1ZTAyY2Q0MTEgMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVzcy9ubDgwMjExLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3dpcmVsZXNzL25sODAyMTEuYwpAQCAtMTQ2NDIsOCAmIzQzOzE0NjQyLDkgQEAgc3RhdGljIGludCBubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBza19idWZmICpza2IsCiAJCWdvdG8gZnJlZV9tc2c7CiAJfQogCiYjNDM7CWNvb2tpZSA9IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7CiAJZXJyID0gcmRldl9yZW1haW5fb25fY2hhbm5lbChyZGV2LCB3ZGV2LCBjaGFuZGVmLmNoYW4sCi0JCQkJICAgICBkdXJhdGlvbiwgJmFtcDtjb29raWUsIHJ4X2FkZHIpOwomIzQzOwkJCQkgICAgIGR1cmF0aW9uLCBjb29raWUsIHJ4X2FkZHIpOwogCiAJaWYgKGVycikKIAkJZ290byBmcmVlX21zZzsKQEAgLTE0ODgzLDcgJiM0MzsxNDg4NCw4IEBAIHN0YXRpYyBpbnQgbmw4MDIxMV90eF9tZ210KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pCiAJfQogCiAJcGFyYW1zLmNoYW4gPSBjaGFuZGVmLmNoYW47Ci0JZXJyID0gY2ZnODAyMTFfbWxtZV9tZ210X3R4KHJkZXYsIHdkZXYsICZhbXA7cGFyYW1zLCAmYW1wO2Nvb2tpZSk7CiYjNDM7CWNvb2tpZSA9IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7CiYjNDM7CWVyciA9IGNmZzgwMjExX21sbWVfbWdtdF90eChyZGV2LCB3ZGV2LCAmYW1wO3BhcmFtcywgY29va2llKTsKIAlpZiAoZXJyKQogCQlnb3RvIGZyZWVfbXNnOwogCkBAIC0xNjM3MSw3ICYjNDM7MTYzNzMsOCBAQCBzdGF0aWMgaW50IG5sODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKQogCQlnb3RvIGZyZWVfbXNnOwogCX0KIAotCWVyciA9IHJkZXZfcHJvYmVfcGVlcihyZGV2LCBkZXYsIGFkZHIsICZhbXA7Y29va2llKTsKJiM0MzsJY29va2llID0gY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTsKJiM0MzsJZXJyID0gcmRldl9wcm9iZV9wZWVyKHJkZXYsIGRldiwgYWRkciwgY29va2llKTsKIAlpZiAoZXJyKQogCQlnb3RvIGZyZWVfbXNnOwogCkBAIC0xODU4NiwxMCAmIzQzOzE4NTg5LDExIEBAIHN0YXRpYyBpbnQgbmw4MDIxMV90eF9jb250cm9sX3BvcnQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbykKIAogCWxpbmtfaWQgPSBubDgwMjExX2xpbmtfaWRfb3JfaW52YWxpZChpbmZvLSZndDthdHRycyk7CiAKJiM0MzsJY29va2llID0gZG9udF93YWl0X2Zvcl9hY2sgPyAwIDogY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTsKIAllcnIgPSByZGV2X3R4X2NvbnRyb2xfcG9ydChyZGV2LCBkZXYsIGJ1ZiwgbGVuLAogCQkJCSAgIGRlc3QsIGNwdV90b19iZTE2KHByb3RvKSwgbm9lbmNyeXB0LCBsaW5rX2lkLAotCQkJCSAgIGRvbnRfd2FpdF9mb3JfYWNrID8gTlVMTCA6ICZhbXA7Y29va2llKTsKLQlpZiAoIWVyciAmYW1wOyZhbXA7ICFkb250X3dhaXRfZm9yX2FjaykKJiM0MzsJCQkJICAgY29va2llKTsKJiM0MzsJaWYgKCFlcnIgJmFtcDsmYW1wOyBjb29raWUpCiAJCW5sX3NldF9leHRhY2tfY29va2llX3U2NChpbmZvLSZndDtleHRhY2ssIGNvb2tpZSk7CiAJcmV0dXJuIGVycjsKIH0KQEAgLTIyMDQyLDYgJiM0MzsyMjA0NiwxMCBAQCBzdGF0aWMgdm9pZCBubDgwMjExX2ZyYW1lX3R4X3N0YXR1cyhzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LAogCXN0cnVjdCBza19idWZmICptc2c7CiAJdm9pZCAqaGRyOwogCiYjNDM7CS8qIHVzZXJzcGFjZSBub3QgaW50ZXJlc3RlZCBpbiB6ZXJvLWNvb2tpZSBzdGF0dXMgKi8KJiM0MzsJaWYgKCFzdGF0dXMtJmd0O2Nvb2tpZSkKJiM0MzsJCXJldHVybjsKJiM0MzsKIAlpZiAoY29tbWFuZCA9PSBOTDgwMjExX0NNRF9GUkFNRV9UWF9TVEFUVVMpCiAJCXRyYWNlX2NmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIHN0YXR1cy0mZ3Q7Y29va2llLAogCQkJCQkgICAgICBzdGF0dXMtJmd0O2Fjayk7CmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3MvcmRldi1vcHMuaCBiL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oCmluZGV4IDZjM2JhZDhiMmQ2ZjYuLjQ2ODQ5ZmU4ZDBiMzkgMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oCiYjNDM7JiM0MzsmIzQzOyBiL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oCkBAIC03MzYsMTQgJiM0Mzs3MzYsMTQgQEAgc3RhdGljIGlubGluZSBpbnQKIHJkZXZfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LAogCQkgICAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwKIAkJICAgICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiwKLQkJICAgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsIGNvbnN0IHU4ICpyeF9hZGRyKQomIzQzOwkJICAgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpCiB7CiAJaW50IHJldDsKIAl0cmFjZV9yZGV2X3JlbWFpbl9vbl9jaGFubmVsKCZhbXA7cmRldi0mZ3Q7d2lwaHksIHdkZXYsIGNoYW4sIGR1cmF0aW9uLAogCQkJCSAgICAgcnhfYWRkcik7CiAJcmV0ID0gcmRldi0mZ3Q7b3BzLSZndDtyZW1haW5fb25fY2hhbm5lbCgmYW1wO3JkZXYtJmd0O3dpcGh5LCB3ZGV2LCBjaGFuLAogCQkJCQkgICBkdXJhdGlvbiwgY29va2llLCByeF9hZGRyKTsKLQl0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKCZhbXA7cmRldi0mZ3Q7d2lwaHksIHJldCwgKmNvb2tpZSk7CiYjNDM7CXRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoJmFtcDtyZGV2LSZndDt3aXBoeSwgcmV0LCBjb29raWUpOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTc2MSwxMiAmIzQzOzc2MSwxMiBAQCByZGV2X2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsCiBzdGF0aWMgaW5saW5lIGludCByZGV2X21nbXRfdHgoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LAogCQkJICAgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsCiAJCQkgICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsCi0JCQkgICAgICAgdTY0ICpjb29raWUpCiYjNDM7CQkJICAgICAgIHU2NCBjb29raWUpCiB7CiAJaW50IHJldDsKIAl0cmFjZV9yZGV2X21nbXRfdHgoJmFtcDtyZGV2LSZndDt3aXBoeSwgd2RldiwgcGFyYW1zKTsKIAlyZXQgPSByZGV2LSZndDtvcHMtJmd0O21nbXRfdHgoJmFtcDtyZGV2LSZndDt3aXBoeSwgd2RldiwgcGFyYW1zLCBjb29raWUpOwotCXRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoJmFtcDtyZGV2LSZndDt3aXBoeSwgcmV0LCAqY29va2llKTsKJiM0MzsJdHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZSgmYW1wO3JkZXYtJmd0O3dpcGh5LCByZXQsIGNvb2tpZSk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtNzc1LDcgJiM0Mzs3NzUsNyBAQCBzdGF0aWMgaW5saW5lIGludCByZGV2X3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsCiAJCQkJICAgICAgIGNvbnN0IHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbiwKIAkJCQkgICAgICAgY29uc3QgdTggKmRlc3QsIF9fYmUxNiBwcm90bywKIAkJCQkgICAgICAgY29uc3QgYm9vbCBub2VuY3J5cHQsIGludCBsaW5rLAotCQkJCSAgICAgICB1NjQgKmNvb2tpZSkKJiM0MzsJCQkJICAgICAgIHU2NCBjb29raWUpCiB7CiAJaW50IHJldDsKIAl0cmFjZV9yZGV2X3R4X2NvbnRyb2xfcG9ydCgmYW1wO3JkZXYtJmd0O3dpcGh5LCBkZXYsIGJ1ZiwgbGVuLApAQCAtNzgzLDcgJiM0Mzs3ODMsNyBAQCBzdGF0aWMgaW5saW5lIGludCByZGV2X3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsCiAJcmV0ID0gcmRldi0mZ3Q7b3BzLSZndDt0eF9jb250cm9sX3BvcnQoJmFtcDtyZGV2LSZndDt3aXBoeSwgZGV2LCBidWYsIGxlbiwKIAkJCQkJIGRlc3QsIHByb3RvLCBub2VuY3J5cHQsIGxpbmssIGNvb2tpZSk7CiAJaWYgKGNvb2tpZSkKLQkJdHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZSgmYW1wO3JkZXYtJmd0O3dpcGh5LCByZXQsICpjb29raWUpOwomIzQzOwkJdHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZSgmYW1wO3JkZXYtJmd0O3dpcGh5LCByZXQsIGNvb2tpZSk7CiAJZWxzZQogCQl0cmFjZV9yZGV2X3JldHVybl9pbnQoJmFtcDtyZGV2LSZndDt3aXBoeSwgcmV0KTsKIAlyZXR1cm4gcmV0OwpAQCAtOTUwLDEyICYjNDM7OTUwLDEyIEBAIHN0YXRpYyBpbmxpbmUgaW50IHJkZXZfdGRsc19vcGVyKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldiwKIAogc3RhdGljIGlubGluZSBpbnQgcmRldl9wcm9iZV9wZWVyKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldiwKIAkJCQkgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICpwZWVyLAotCQkJCSAgdTY0ICpjb29raWUpCiYjNDM7CQkJCSAgdTY0IGNvb2tpZSkKIHsKIAlpbnQgcmV0OwogCXRyYWNlX3JkZXZfcHJvYmVfcGVlcigmYW1wO3JkZXYtJmd0O3dpcGh5LCBkZXYsIHBlZXIpOwogCXJldCA9IHJkZXYtJmd0O29wcy0mZ3Q7cHJvYmVfcGVlcigmYW1wO3JkZXYtJmd0O3dpcGh5LCBkZXYsIHBlZXIsIGNvb2tpZSk7Ci0JdHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZSgmYW1wO3JkZXYtJmd0O3dpcGh5LCByZXQsICpjb29raWUpOwomIzQzOwl0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKCZhbXA7cmRldi0mZ3Q7d2lwaHksIHJldCwgY29va2llKTsKIAlyZXR1cm4gcmV0OwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNzA5CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogNTk5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNvb2tpZSBIYW5kbGluZyBSZWZhY3RvciBpbiBjZmc4MDIxMS9tYWM4MDIxMSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgbG9va3MgbGlrZSBhIGZhaXJseSBzaWduaWZpY2FudCBjaGFuZ2UgdG8gaG93IGNvb2tpZXMgYXJlIGhhbmRsZWQgaW4gc2V2ZXJhbCBjZmc4MDIxMS9tYWM4MDIxMSBmdW5jdGlvbnMuIFNwZWNpZmljYWxseSwgdGhleSYjMzk7cmUgbW92aW5nIGZyb20gcGFzc2luZyBhIGB1NjQgKmNvb2tpZWAgKGEgcG9pbnRlciB0byBhIGNvb2tpZSkgdG8gYSBgdTY0IGNvb2tpZWAgKHBhc3NpbmcgdGhlIGNvb2tpZSBieSB2YWx1ZSkgaW4gc2V2ZXJhbCBrZXkgZnVuY3Rpb25zLiBGdW5jdGlvbnMgYWZmZWN0ZWQgaW5jbHVkZSBgcmVtYWluX29uX2NoYW5uZWxgLCBgbWdtdF90eGAsIGBwcm9iZV9wZWVyYCwgYW5kIGB0eF9jb250cm9sX3BvcnRgLgoKVGhlIGNoYW5nZXMgYXJlIHF1aXRlIHdpZGVzcHJlYWQ7IHRoZSBwYXRjaCB0b3VjaGVzIGEgYnVuY2ggb2YgZHJpdmVyczogYXRoNmtsLCB3aWw2MjEwLCBicmNtZm1hYywgbXdpZmlleCwgd2lsYzEwMDAsIG54cHdpZmksIHF0bmZtYWMsIHJ0bDg3MjNicywgYW5kIGFsc28gdGhlIGNvcmUgYGNmZzgwMjExLmhgLCBtYWM4MDIxMSAoY2ZnLmMsIG9mZmNoYW5uZWwuYywgdGRscy5jLCB0eC5jKSwgYW5kIHdpcmVsZXNzIGNvcmUgaGVhZGVycy4gVGhlIGZpbGVzIGluY2x1ZGUgYGNvcmUuaGAsIGBtbG1lLmNgLCBgbmw4MDIxMS5jYCwgYW5kIGByZGV2LW9wcy5oYC4KClRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseSBub3QganVzdCBhIGNvc21ldGljIG9uZSwgYmVjYXVzZSBpdCBmdW5kYW1lbnRhbGx5IGFsdGVycyBob3cgY29va2llcyBhcmUgZ2VuZXJhdGVkIGFuZCBwYXNzZWQgYXJvdW5kLiBUaGUgb2xkIHdheSwgdGhlIGRyaXZlcnMgb3IgbWFjODAyMTEgd291bGQgZ2VuZXJhdGUgdGhlIGNvb2tpZSBhbmQgdGhlbiB1c2UgdGhlIHBvaW50ZXIgdG8gc2VuZCBpdCBiYWNrLiBUaGUgbmV3IHdheT8gYG5sODAyMTFgIGlzIG5vdyByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyB0aGUgY29va2llIHVzaW5nIGBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpYCBhbmQgdGhlbiBwYXNzaW5nIGl0IGJ5IHZhbHVlIHRvIHRoZSBkcml2ZXJzL21hYzgwMjExLgoKV2FpdCBhIHNlY29uZCwgbGV0IG1lIGp1c3QgcGF1c2UgYW5kIHF1aWNrbHkgY2hlY2sgc29tZXRoaW5nLiBgY2ZnODAyMTFfYXNzaWduX2Nvb2tpZWAuLi4gaXMgdGhhdCBhIGJyYW5kIG5ldyBmdW5jdGlvbj8gSSBzaG91bGQgcHJvYmFibHkgdGFrZSBhIGxvb2sgYXQgaXQgdG8gc2VlIGhvdyBpdCB3b3Jrcy4gTGV0JiMzOTtzIGRvIGEgcXVpY2sgZ3JlcCBmb3IgYGNmZzgwMjExX2Fzc2lnbl9jb29raWVgIHRvIG1ha2Ugc3VyZSBpdCBleGlzdHMsIGFuZCB0byB1bmRlcnN0YW5kIGl0cyBzY29wZS4gSXQmIzM5O3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGNvcmUgaGVscGVyIGZ1bmN0aW9ucyBvcGVyYXRlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NmZzgwMjExX2Fzc2lnbl9jb29raWUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3dpcmVsZXNzL2NvcmUuaD0xMzc9Y2ZnODAyMTFfcmRldl9mcmVlX3dvd2xhbihzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYpXG4tLVxubmV0L3dpcmVsZXNzL2NvcmUuaC0xNTUtXG5uZXQvd2lyZWxlc3MvY29yZS5oOjE1NjpzdGF0aWMgaW5saW5lIHU2NCBjZmc4MDIxMV9hc3NpZ25fY29va2llKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldilcbm5ldC93aXJlbGVzcy9jb3JlLmgtMTU3LXtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTExOTUyPXN0YXRpYyBpbnQgbmw4MDIxMV9zdGFydF9zY2hlZF9zY2FuKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xMTk4MS1cdGlmICh3YW50X211bHRpIFx1MDAyNlx1MDAyNiByZGV2LVx1MDAzZXdpcGh5Lm1heF9zY2hlZF9zY2FuX3JlcXMgXHUwMDNlIDEpXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjExOTgyOlx0XHRzY2hlZF9zY2FuX3JlcS1cdTAwM2VyZXFpZCA9IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTExOTgzLVxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTQ1NzA9c3RhdGljIGludCBubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNDY0NC1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTQ2NDU6XHRjb29raWUgPSBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpO1xubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNDY0Ni1cdGVyciA9IHJkZXZfcmVtYWluX29uX2NoYW5uZWwocmRldiwgd2RldiwgY2hhbmRlZi5jaGFuLFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTQ3NjQ9c3RhdGljIGludCBubDgwMjExX3R4X21nbXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0ODg2LVx0cGFyYW1zLmNoYW4gPSBjaGFuZGVmLmNoYW47XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE0ODg3Olx0Y29va2llID0gY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTQ4ODgtXHRlcnIgPSBjZmc4MDIxMV9tbG1lX21nbXRfdHgocmRldiwgd2RldiwgXHUwMDI2cGFyYW1zLCBjb29raWUpO1xuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTYzMjg9c3RhdGljIGludCBubDgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE2Mzc1LVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxNjM3NjpcdGNvb2tpZSA9IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7XG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE2Mzc3LVx0ZXJyID0gcmRldl9wcm9iZV9wZWVyKHJkZXYsIGRldiwgYWRkciwgY29va2llKTtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE2ODA2PXN0YXRpYyBpbnQgbmw4MDIxMV9uYW5fYWRkX2Z1bmMoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE2ODM2LVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxNjgzNzpcdGZ1bmMtXHUwMDNlY29va2llID0gY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTY4MzgtXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xODUzNj1zdGF0aWMgaW50IG5sODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODU5MS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTg1OTI6XHRjb29raWUgPSBkb250X3dhaXRfZm9yX2FjayA/IDAgOiBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpO1xubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODU5My1cdGVyciA9IHJkZXZfdHhfY29udHJvbF9wb3J0KHJkZXYsIGRldiwgYnVmLCBsZW4sXG4tLVxubmV0L3dpcmVsZXNzL3Btc3IuYz00MTQ9aW50IG5sODAyMTFfcG1zcl9zdGFydChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC93aXJlbGVzcy9wbXNyLmMtNTIxLVx0fVxubmV0L3dpcmVsZXNzL3Btc3IuYzo1MjI6XHRyZXEtXHUwMDNlY29va2llID0gY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcbm5ldC93aXJlbGVzcy9wbXNyLmMtNTIzLVx0cmVxLVx1MDAzZW5sX3BvcnRpZCA9IGluZm8tXHUwMDNlc25kX3BvcnRpZDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxOToyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTk2NAoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDM0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXaXJlbGVzcyBTdGFjayBBUEkgQ2hhbmdlIFJldmlldyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGlzIHBhdGNoIGlzIGhpdHRpbmcgdGhlIGNvcmUgb2YgdGhlIHdpcmVsZXNzIHN0YWNrLCBzcGVjaWZpY2FsbHkgdGhlIGBjZmc4MDIxMWAgYW5kIGBtYWM4MDIxMWAgQVBJcyBmb3IgYHJlbWFpbl9vbl9jaGFubmVsYCwgYG1nbXRfdHhgLCBgcHJvYmVfcGVlcmAsIGFuZCBgdHhfY29udHJvbF9wb3J0YC4gVGhhdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGNvc21ldGljIG9uZSwgbWVhbmluZyBpdCYjMzk7cyBob3cgd2UgaGFuZGxlIGNvb2tpZXMgYW5kIHBhc3MgdGhlbSB1cCB0byB1c2Vyc3BhY2UuIERlZmluaXRlbHksIGZ1enppbmcgaXMgZ29pbmcgdG8gYmUgY3J1Y2lhbCBoZXJlIHRvIGVuc3VyZSB3ZSBoYXZlbiYjMzk7dCBpbnRyb2R1Y2VkIGFueSB2dWxuZXJhYmlsaXRpZXMgb3IgdW5leHBlY3RlZCBiZWhhdmlvciBjaGFuZ2VzLgoKVGhlIGtleSBzeW1ib2xzIHRvIGtlZXAgYW4gZXllIG9uIGFyZSB0aGUgYG5sODAyMTFfKmAgYW5kIGBpZWVlODAyMTFfKmAgdmFyaWF0aW9ucyBvZiB0aG9zZSBmdW5jdGlvbnMuIFRoZXkmIzM5O3JlIHRoZSBlbnRyeSBwb2ludHMgZnJvbSBuZXRsaW5rIGFuZCB0aGUgY29yZSBtYWM4MDIxMSBzdGFjaywgcmVzcGVjdGl2ZWx5LiBXZSBuZWVkIHRvIGJlIGVzcGVjaWFsbHkgbWluZGZ1bCBvZiB0aGUgaW50ZXJhY3Rpb25zIGFuZCBjb29raWUgaGFuZGxpbmcgYmV0d2VlbiB0aGVzZSBwb2ludHMuCgpBcyBmb3IgY29uZmlndXJhdGlvbiwgYENPTkZJR19NQUM4MDIxMWAgYW5kIGBDT05GSUdfQ0ZHODAyMTFgIGFyZSB0aGUgb2J2aW91cyBvbmVzLiBCZXlvbmQgdGhhdCwgd2hpbGUgYENPTkZJR19OTDgwMjExX1RFU1RNT0RFYCBtaWdodCBwcm92aWRlIHNvbWUgdXNlZnVsIGRlYnVnZ2luZyBjYXBhYmlsaXRpZXMsIGl0JiMzOTtzIG5vdCBzdHJpY3RseSByZXF1aXJlZCBmb3IgdGhlc2UgY29yZSBubDgwMjExIGNvbW1hbmRzLiBOb3csIHRoaXMgaXMgaW50ZXJlc3RpbmcuLi5RRU1VIGNhbiBlbXVsYXRlIGBtYWM4MDIxMV9od3NpbWAuIFRoYXQgbWFrZXMgdGVzdGluZyBhIGxvdCBlYXNpZXIuIFNvLCB0byBlbnN1cmUgYSBzb2xpZCB0ZXN0aW5nIGVudmlyb25tZW50LCB3ZSBhYnNvbHV0ZWx5IG5lZWQgYENPTkZJR19NQUM4MDIxMV9IV1NJTWAgZW5hYmxlZC4gVGhhdCB3aWxsIGdpdmUgdXMgYSBjb250cm9sbGVkIGVudmlyb25tZW50IHRvIHB1dCB0aGUgcGF0Y2ggdGhyb3VnaCBpdHMgcGFjZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTk6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQzgwMjExX0hXU0lNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvS2NvbmZpZzoxOmNvbmZpZyBNQUM4MDIxMV9IV1NJTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnLTItXHR0cmlzdGF0ZSBcJiMzNDtTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxMVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NzQ3CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyB0aGUgTUFDODAyMTFfSFdTSU0gS2NvbmZpZyBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZGVwZW5kZW5jaWVzIG9mIGBNQUM4MDIxMV9IV1NJTWAuIFRpbWUgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWdgLiBJIGtub3cgdGhpcyBpcyB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIHZpcnR1YWwgaGFyZHdhcmUgc2ltdWxhdGlvbiByZXNpZGUuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIHN0YW5kYXJkIGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzIGluIHRoZXJlLiBJJiMzOTttIGxvb2tpbmcgZm9yIGNsdWVzIGFib3V0IG90aGVyIGZlYXR1cmVzIG9yIGRyaXZlcnMgaXQgbWlnaHQgYmUgbGlua2VkIHRvLiBUaGlzIHdpbGwgaGVscCBtZSB1bmRlcnN0YW5kIHdoYXQgZmVhdHVyZXMgaXQgZW5hYmxlcyBhbmQgcG90ZW50aWFsbHkgd2hhdCBvdGhlciBjb25maWd1cmF0aW9ucyBtaWdodCBiZWNvbWUgcmVsZXZhbnQuIFRoaXMgaXMgYSBjb21tb24gZmlyc3Qgc3RlcCB3aGVuIGludmVzdGlnYXRpbmcgaG93IGEgY29tcGxleCBmZWF0dXJlIGxpa2UgYE1BQzgwMjExX0hXU0lNYCBpbnRlZ3JhdGVzIHdpdGggdGhlIHdpZGVyIGtlcm5lbCBuZXR3b3JrIHN0YWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Y29uZmlnIE1BQzgwMjExX0hXU0lNXG4gICAyOlx0XHR0cmlzdGF0ZSBcJiMzNDtTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxMVwmIzM0O1xuICAgMzpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAgNDpcdFx0aGVscFxuICAgNTpcdFx0ICBUaGlzIGRyaXZlciBpcyBhIGRldmVsb3BlciB0ZXN0aW5nIHRvb2wgdGhhdCBjYW4gYmUgdXNlZCB0byB0ZXN0XG4gICA2Olx0XHQgIElFRUUgODAyLjExIG5ldHdvcmtpbmcgc3RhY2sgKG1hYzgwMjExKSBmdW5jdGlvbmFsaXR5LiBUaGlzIGlzIG5vdFxuICAgNzpcdFx0ICBuZWVkZWQgZm9yIG5vcm1hbCB3aXJlbGVzcyBMQU4gdXNhZ2UgYW5kIGlzIG9ubHkgZm9yIHRlc3RpbmcuIFNlZVxuICAgODpcdFx0ICBEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvbWFjODAyMTFfaHdzaW0gZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93XG4gICA5Olx0XHQgIHRvIHVzZSB0aGlzIHRvb2wuXG4gIDEwOlx0XG4gIDExOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZVxuICAxMjpcdFx0ICBjYWxsZWQgbWFjODAyMTFfaHdzaW0uICBJZiB1bnN1cmUsIHNheSBOLlxuICAxMzpcdFxuICAxNDpcdGNvbmZpZyBWSVJUX1dJRklcbiAgMTU6XHRcdHRyaXN0YXRlIFwmIzM0O1dpZmkgd3JhcHBlciBmb3IgZXRoZXJuZXQgZHJpdmVyc1wmIzM0O1xuICAxNjpcdFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBUaGlzIG9wdGlvbiBhZGRzIHN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbm5lY3Rpb25zIHRvIGFwcGVhciBhcyBpZiB0aGV5XG4gIDE5Olx0XHQgIGFyZSB3aWZpIGNvbm5lY3Rpb25zIHRocm91Z2ggYSBzcGVjaWFsIHJ0bmV0bGluayBkZXZpY2UuXG4gIDIwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTk6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjczMTQKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAzNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFdpcmVsZXNzIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSBzZWUgdGhlIGRlcGVuZGVuY3kgY2hhaW46IGBNQUM4MDIxMV9IV1NJTWAgcmVsaWVzIG9uIGBNQUM4MDIxMWAsIHdoaWNoIGluIHR1cm4gcmVsaWVzIG9uIGBDRkc4MDIxMWAuIFRoYXQgbWVhbnMgZm9yIHRoaXMgdG8gd29yaywgSSYjMzk7bGwgbmVlZCB0byBlbnN1cmUgYWxsIHRocmVlIGFyZSBlbmFibGVkOiBgQ0ZHODAyMTFgLCBgTUFDODAyMTFgLCBhbmQgYE1BQzgwMjExX0hXU0lNYC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUuCgpOb3csIGxldCYjMzk7cyBkaWcgYSBsaXR0bGUgZGVlcGVyLiBUaGlzIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSBjb3JlIG9mIGBjZmc4MDIxMWAgYW5kIGBtYWM4MDIxMWAsIHdoaWNoIG1ha2VzIG1lIHRoaW5rIGl0JiMzOTtzIGZ1bmN0aW9uYWwuIFRoZXNlIGNoYW5nZXMgYXJlIGRlZmluaXRlbHkgYWNjZXNzaWJsZSB0aHJvdWdoIGBubDgwMjExYCwgd2hpY2ggaXMgcHJvbWlzaW5nLiBUaGUgZmFjdCB0aGF0IHRoZSBwYXRjaCBhbHNvIHRvdWNoZXMgdmFyaW91cyBkcml2ZXJzIGlzIGNvbmNlcm5pbmcgYmVjYXVzZSBJIGNhbiYjMzk7dCBwb3NzaWJseSB0ZXN0IHRoZW0gYWxsIGluIGEgUUVNVSBlbnZpcm9ubWVudC4gSG93ZXZlciwgdGhlIHVzZSBvZiBgbWFjODAyMTFfaHdzaW1gIGlzIGEgc21hcnQgbW92ZS4gSXQgc2hvdWxkIGV4ZXJjaXNlIHRoZSBgbWFjODAyMTFgIGFuZCBgY2ZnODAyMTFgIHBhdGhzLCB3aGljaCBhcmUgdGhlIHByaW1hcnkgZm9jdXMgb2YgdGhpcy4KClRvIG1ha2Ugc3VyZSBJJiMzOTttIGZvbGxvd2luZyBldmVyeXRoaW5nLCBJIG5lZWQgdG8gZm9jdXMgb24gdGhlc2Ugc3ltYm9sczogYG5sODAyMTFfcmVtYWluX29uX2NoYW5uZWxgLCBgbmw4MDIxMV90eF9tZ210YCwgYG5sODAyMTFfcHJvYmVfcGVlcmAsIGBubDgwMjExX3R4X2NvbnRyb2xfcG9ydGAsIGBjZmc4MDIxMV9tbG1lX21nbXRfdHhgLCBgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsYCwgYGllZWU4MDIxMV9tZ210X3R4YCwgYGllZWU4MDIxMV9wcm9iZV9wZWVyYCwgYW5kIGBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0YC4gSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYW5kIHRoZSBuYW1lcyBhcmUgY29ycmVjdC4gSSYjMzk7bGwgbmVlZCB0byBnbyBiYWNrIGFuZCB2ZXJpZnkgYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxOToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jZmcuYz01OTc0PWNvbnN0IHN0cnVjdCBjZmc4MDIxMV9vcHMgbWFjODAyMTFfY29uZmlnX29wcyA9IHtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNjA2OC1cdC5zZXRfbXVsdGljYXN0X3RvX3VuaWNhc3QgPSBpZWVlODAyMTFfc2V0X211bHRpY2FzdF90b191bmljYXN0LFxubmV0L21hYzgwMjExL2NmZy5jOjYwNjk6XHQudHhfY29udHJvbF9wb3J0ID0gaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydCxcbm5ldC9tYWM4MDIxMS9jZmcuYy02MDcwLVx0LmdldF90eHFfc3RhdHMgPSBpZWVlODAyMTFfZ2V0X3R4cV9zdGF0cyxcbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0yMjQ3PXZvaWQgaWVlZTgwMjExX2NsZWFyX2Zhc3RfeG1pdChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSk7XG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyMjQ4OmludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yMjQ5LVx0XHRcdCAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sXG4tLVxubmV0L21hYzgwMjExL3R4LmM9MjY1MT1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV9idWlsZF9oZHIoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtMzA1MC1cdFx0ICogY3RybF9mbGFncyBhbHJlYWR5IGhhdmUgYmVlbiBzZXQgYnlcbm5ldC9tYWM4MDIxMS90eC5jOjMwNTE6XHRcdCAqIGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQoKSwgaGVyZVxubmV0L21hYzgwMjExL3R4LmMtMzA1Mi1cdFx0ICogd2UganVzdCBzYW5pdHkgY2hlY2sgdGhhdFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTY0OTc9dm9pZCBpZWVlODAyMTFfdHhfc2tiX3RpZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy02NTI3LVxubmV0L21hYzgwMjExL3R4LmM6NjUyODppbnQgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L21hYzgwMjExL3R4LmMtNjUyOS1cdFx0XHQgICAgICBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxOToyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODc4OQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uZmlybWluZyBhbmQgUmVmaW5pbmcgYSBIeXBvdGhlc2lzKioKCk9rYXksIHNvIHRoZSBpbml0aWFsIGFzc2Vzc21lbnQgZmVlbHMgY29ycmVjdC4gKlllcywgaXQgaXMqLiBCdXQsIGxldCYjMzk7cyBub3QgcnVzaCB0byBjb25jbHVzaW9ucy4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiBiZWZvcmUgcHJvY2VlZGluZy4gVGhpcyBpcyBjcml0aWNhbC4KClRvIGJlIHRob3JvdWdoLCBsZXQmIzM5O3MgaW1tZWRpYXRlbHkgYW5kIHNwZWNpZmljYWxseSBnbyBiYWNrIGFuZCByaWdvcm91c2x5IGV4YW1pbmUgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBpZWVlODAyMTFfcHJvYmVfcGVlcmAuIEkgd2FudCB0byBkcmlsbCBkb3duIGludG8gdGhlIGNvcmUgZnVuY3Rpb24gdGhhdCYjMzk7cyBhdCB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlci4gRG91YmxlLWNoZWNraW5nIGlzIGNydWNpYWwgaGVyZS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9mIHRoZSBleGFjdCBsb2dpYyB3aXRoaW4gdGhhdCBwcm9iZSBmdW5jdGlvbi4gSSYjMzk7bSBnb2luZyB0byBsb29rIGF0IHRoZSBlZGdlIGNhc2VzLCBhbmQgYWxsIHBvc3NpYmxlIHNvdXJjZXMgb2YgZXJyb3IuIE5vIHN0b25lIHVudHVybmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxOToyMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfcHJvYmVfcGVlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2ZnLmM9NDkyNz1zdGF0aWMgaW50IGllZWU4MDIxMV9zZXRfcmVrZXlfZGF0YShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy00OTQxLVxubmV0L21hYzgwMjExL2NmZy5jOjQ5NDI6c3RhdGljIGludCBpZWVlODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxubmV0L21hYzgwMjExL2NmZy5jLTQ5NDMtXHRcdFx0XHRjb25zdCB1OCAqcGVlciwgdTY0IGNvb2tpZSlcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9NTk3ND1jb25zdCBzdHJ1Y3QgY2ZnODAyMTFfb3BzIG1hYzgwMjExX2NvbmZpZ19vcHMgPSB7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTYwNDktXHQudGRsc19jYW5jZWxfY2hhbm5lbF9zd2l0Y2ggPSBpZWVlODAyMTFfdGRsc19jYW5jZWxfY2hhbm5lbF9zd2l0Y2gsXG5uZXQvbWFjODAyMTEvY2ZnLmM6NjA1MDpcdC5wcm9iZV9wZWVyID0gaWVlZTgwMjExX3Byb2JlX3BlZXIsXG5uZXQvbWFjODAyMTEvY2ZnLmMtNjA1MS1cdC5zZXRfbm9hY2tfbWFwID0gaWVlZTgwMjExX3NldF9ub2Fja19tYXAsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MzI2CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uZmlybWluZyBhbmQgQ3Jvc3MtUmVmZXJlbmNpbmcqKgoKWWVzLCB0aGF0JiMzOTtzIGNvcnJlY3QsIG5vIHN1cnByaXNlcyB0aGVyZS4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGhvbGRpbmcuIEJ1dCwganVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIGFuZCB0byBzb2xpZGlmeSBteSB1bmRlcnN0YW5kaW5nLCBsZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGBpZWVlODAyMTFfbWdtdF90eGAgZnVuY3Rpb24uIEkgd2FudCB0byBxdWlja2x5IHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBwYXJ0aWN1bGFyIG1lY2hhbmlzbSBoYW5kbGVzIHRoZSB0cmFuc2FjdGlvbi4gTm8gbmVlZCB0byBsZWF2ZSBhbnkgc3RvbmUgdW50dXJuZWQgd2hlbiBkZWFsaW5nIHdpdGggbG93IGxldmVsIHN5c3RlbXMuIEkgbmVlZCB0byByZWZyZXNoIHRoZSBpbm5lciB3b3JraW5ncyBvZiB0aGlzIGZ1bmN0aW9uIGluIG15IG1pbmQgdG8gcHJvY2VlZCB3aXRoIHRoZSBuZXh0IHN0ZXAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9tZ210X3R4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jZmcuYz01OTc0PWNvbnN0IHN0cnVjdCBjZmc4MDIxMV9vcHMgbWFjODAyMTFfY29uZmlnX29wcyA9IHtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtNjAzNi1cdC5jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwgPSBpZWVlODAyMTFfY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsLFxubmV0L21hYzgwMjExL2NmZy5jOjYwMzc6XHQubWdtdF90eCA9IGllZWU4MDIxMV9tZ210X3R4LFxubmV0L21hYzgwMjExL2NmZy5jOjYwMzg6XHQubWdtdF90eF9jYW5jZWxfd2FpdCA9IGllZWU4MDIxMV9tZ210X3R4X2NhbmNlbF93YWl0LFxubmV0L21hYzgwMjExL2NmZy5jLTYwMzktXHQuc2V0X2NxbV9yc3NpX2NvbmZpZyA9IGllZWU4MDIxMV9zZXRfY3FtX3Jzc2lfY29uZmlnLFxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTIxNTU9aW50IGllZWU4MDIxMV9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIxNTYtXHRcdFx0XHQgICAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgdTY0IGNvb2tpZSk7XG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoyMTU3OmludCBpZWVlODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjE1OC1cdFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjE1OTppbnQgaWVlZTgwMjExX21nbXRfdHhfY2FuY2VsX3dhaXQoc3RydWN0IHdpcGh5ICp3aXBoeSxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIxNjAtXHRcdFx0XHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsIHU2NCBjb29raWUpO1xuLS1cbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmM9ODAxPWludCBpZWVlODAyMTFfY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYy04MDktXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jOjgxMDppbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMtODExLVx0XHQgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcbi0tXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jLTEwNDUtXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jOjEwNDY6aW50IGllZWU4MDIxMV9tZ210X3R4X2NhbmNlbF93YWl0KHN0cnVjdCB3aXBoeSAqd2lwaHksXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jLTEwNDctXHRcdFx0XHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsIHU2NCBjb29raWUpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMjg4CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEb3VibGUtQ2hlY2tpbmcgdGhlIGBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxgIEZ1bmN0aW9uKioKCk9rYXksIHllcywgdGhhdCBzZWVtcyByaWdodC4gQnV0IGJlZm9yZSBJIG1vdmUgb24sIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4uIExldCBtZSBqdXN0IHF1aWNrbHkgcnVuIHRocm91Z2ggdGhlIGRldGFpbHMgYWdhaW4uIEkmIzM5O20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsYC4gSXQmIzM5O3MgYSBjcml0aWNhbCBmdW5jdGlvbiwgYW5kIGEgc3VidGxlIGJ1ZyBoZXJlIGNvdWxkIGhhdmUgY2FzY2FkaW5nIGFuZCBuYXN0eSBpbXBsaWNhdGlvbnMgZG93biB0aGUgbGluZS4gSXQmIzM5O3MgdG9vIGltcG9ydGFudCB0byBnbG9zcyBvdmVyLCBldmVuIGlmIG15IGluaXRpYWwgYXNzZXNzbWVudCBzdWdnZXN0ZWQgZXZlcnl0aGluZyB3YXMgaW4gb3JkZXIuIEkmIzM5O20gZ29pbmcgdG8gbWFrZSBzdXJlIEkmIzM5O20gc29saWQgb24gdGhlIG51YW5jZXMgYW5kIGFueSBwb3RlbnRpYWwgZWRnZSBjYXNlcyBiZWZvcmUgSSBmaW5hbGl6ZSBteSBjb25jbHVzaW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTk6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM9NDUyMT12b2lkIF9fYXRoMTBrX3NjYW5fZmluaXNoKHN0cnVjdCBhdGgxMGsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtNDUzMC1cdFx0aWYgKGFyLVx1MDAzZXNjYW4uaXNfcm9jIFx1MDAyNlx1MDAyNiBhci1cdTAwM2VzY2FuLnJvY19ub3RpZnkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jOjQ1MzE6XHRcdFx0aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQoYXItXHUwMDNlaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYy00NTMyLVx0XHRmYWxsdGhyb3VnaDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jPTM4NjY9dm9pZCBfX2F0aDExa19tYWNfc2Nhbl9maW5pc2goc3RydWN0IGF0aDExayAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0zODc1LVx0XHRpZiAoYXItXHUwMDNlc2Nhbi5pc19yb2MgXHUwMDI2XHUwMDI2IGFyLVx1MDAzZXNjYW4ucm9jX25vdGlmeSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM6Mzg3NjpcdFx0XHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChhci1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTFrL21hYy5jLTM4NzctXHRcdGZhbGx0aHJvdWdoO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmM9NTE2MT12b2lkIF9fYXRoMTJrX21hY19zY2FuX2ZpbmlzaChzdHJ1Y3QgYXRoMTJrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTUxNzItXHRcdGlmIChhci1cdTAwM2VzY2FuLmlzX3JvYyBcdTAwMjZcdTAwMjYgYXItXHUwMDNlc2Nhbi5yb2Nfbm90aWZ5KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYzo1MTczOlx0XHRcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKGh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtNTE3NC1cdFx0ZmFsbHRocm91Z2g7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NoYW5uZWwuYz05MzQ9dm9pZCBhdGhfcm9jX2NvbXBsZXRlKHN0cnVjdCBhdGhfc29mdGMgKnNjLCBlbnVtIGF0aF9yb2NfY29tcGxldGVfcmVhc29uIHJlYXNvbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jLTk0My1cdFx0YXRoX2RiZyhjb21tb24sIENIQU5fQ1RYLCBcJiMzNDtSb0MgYWJvcnRlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jOjk0NDpcdFx0aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQoc2MtXHUwMDNlaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NoYW5uZWwuYy05NDUtXHRcdGJyZWFrO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jaGFubmVsLmMtOTQ3LVx0XHRhdGhfZGJnKGNvbW1vbiwgQ0hBTl9DVFgsIFwmIzM0O1JvQyBleHBpcmVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jaGFubmVsLmM6OTQ4Olx0XHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChzYy1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jLTk0OS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvaWZhY2UuYz0yMD12b2lkIGl3bF9tbGRfY2xlYW51cF92aWYodm9pZCAqZGF0YSwgdTggKm1hYywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9pZmFjZS5jLTM0LVx0aWYgKG1sZF92aWYtXHUwMDNlcm9jX2FjdGl2aXR5ICE9IFJPQ19OVU1fQUNUSVZJVElFUylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2lmYWNlLmM6MzU6XHRcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKG1sZC1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9pZmFjZS5jLTM2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3JvYy5jPTIyNT12b2lkIGl3bF9tbGRfaGFuZGxlX3JvY19ub3RpZihzdHJ1Y3QgaXdsX21sZCAqbWxkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3JvYy5jLTI1OC1cdFx0ICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9yb2MuYzoyNTk6XHRcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKG1sZC1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9yb2MuYy0yNjAtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYz0xMTMwPXZvaWQgaXdsX212bV9yZXN0YXJ0X2NsZWFudXAoc3RydWN0IGl3bF9tdm0gKm12bSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jLTExNDEtXHRpd2xfbXZtX2NsZWFudXBfcm9jX3RlKG12bSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jOjExNDI6XHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChtdm0tXHUwMDNlaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYy0xMTQzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3RpbWUtZXZlbnQuYz0zMDk9c3RhdGljIHZvaWQgaXdsX212bV90ZV9oYW5kbGVfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90aW1lLWV2ZW50LmMtMzUxLVx0XHRjYXNlIE5MODAyMTFfSUZUWVBFX1AyUF9ERVZJQ0U6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90aW1lLWV2ZW50LmM6MzUyOlx0XHRcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKG12bS1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90aW1lLWV2ZW50LmMtMzUzLVx0XHRcdGl3bF9tdm1fcm9jX2ZpbmlzaGVkKG12bSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGltZS1ldmVudC5jPTQxNT12b2lkIGl3bF9tdm1fcnhfcm9jX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGltZS1ldmVudC5jLTQ0NC1cdFx0aXdsX212bV9yb2NfZmluaXNoZWQobXZtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3RpbWUtZXZlbnQuYzo0NDU6XHRcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKG12bS1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90aW1lLWV2ZW50LmMtNDQ2LVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3RpbWUtZXZlbnQuYz00NTI9c3RhdGljIGludCBpd2xfbXZtX2F1eF9yb2NfdGVfaGFuZGxlX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGltZS1ldmVudC5jLTQ3NS1cdFx0LyogRW5kIFRFLCBub3RpZnkgbWFjODAyMTEgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3RpbWUtZXZlbnQuYzo0NzY6XHRcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKG12bS1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90aW1lLWV2ZW50LmMtNDc3LVx0XHRpd2xfbXZtX3JvY19maW5pc2hlZChtdm0pOyAvKiBmbHVzaCBhdXggcXVldWUgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90aW1lLWV2ZW50LmM9OTQ1PXZvaWQgaXdsX212bV9yeF9zZXNzaW9uX3Byb3RlY3Rfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90aW1lLWV2ZW50LmMtMTAwOS1cdFx0aXdsX212bV9yb2NfZmluaXNoZWQobXZtKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3RpbWUtZXZlbnQuYzoxMDEwOlx0XHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChtdm0tXHUwMDNlaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGltZS1ldmVudC5jLTEwMTEtXHR9IGVsc2UgaWYgKGxlMzJfdG9fY3B1KG5vdGlmLVx1MDAzZXN0YXJ0KSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvY2hhbm5lbC5jPTMxMz12b2lkIG10NzZfcm9jX2NvbXBsZXRlKHN0cnVjdCBtdDc2X3BoeSAqcGh5KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvY2hhbm5lbC5jLTMzMS1cdGlmICghdGVzdF9iaXQoTVQ3Nl9NQ1VfUkVTRVQsIFx1MDAyNmRldi1cdTAwM2VwaHkuc3RhdGUpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9jaGFubmVsLmM6MzMyOlx0XHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChwaHktXHUwMDNlaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9jaGFubmVsLmMtMzMzLX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzYxNS9tYWluLmM9MTAzMD12b2lkIG10NzYxNV9yb2Nfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jLTEwNDQtXHRtdDc2MTVfbXV0ZXhfcmVsZWFzZShwaHktXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21haW4uYzoxMDQ1Olx0aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQocGh5LVx1MDAzZW10NzYtXHUwMDNlaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jLTEwNDYtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYz0zODc9dm9pZCBtdDc5MjFfcm9jX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYy00MDItXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShwaHktXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYzo0MDM6XHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChwaHktXHUwMDNlbXQ3Ni1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtNDA0LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM9NTA5PXZvaWQgbXQ3OTI1X3JvY193b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtNTIzLVx0bXQ3OTJ4X211dGV4X3JlbGVhc2UocGh5LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmM6NTI0Olx0aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQocGh5LVx1MDAzZW10NzYtXHUwMDNlaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTUyNS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9NTA0OD12b2lkIHJ0dzg5X3JvY19lbmQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3QgcnR3ODlfdmlmICpydHd2aWYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNTA1Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjUwNTg6XHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy01MDU5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21hYzgwMjExLmM9MTc2OT12b2lkIHJzaV9yb2NfdGltZW91dChzdHJ1Y3QgdGltZXJfbGlzdCAqdClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWM4MDIxMS5jLTE3NzUtXHRtdXRleF9sb2NrKFx1MDAyNmNvbW1vbi1cdTAwM2VtdXRleCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWM4MDIxMS5jOjE3NzY6XHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChjb21tb24tXHUwMDNlcHJpdi1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWM4MDIxMS5jLTE3NzctXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9zY2FuLmM9MTQ5PXZvaWQgd2Z4X3JlbWFpbl9vbl9jaGFubmVsX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93Zngvc2Nhbi5jLTE3OC1cdFx0ZGV2X2Vycih3dmlmLVx1MDAzZXdkZXYtXHUwMDNlZGV2LCBcJiMzNDtyb2MgZGlkbiYjMzk7dCBzdG9wXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93Zngvc2Nhbi5jOjE3OTpcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKHd2aWYtXHUwMDNld2Rldi1cdTAwM2Vodyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L3NjYW4uYy0xODAtZW5kOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9tYWluLmM9MjcxMj1zdGF0aWMgdm9pZCBfX3dsMTI3MV9vcF9yZW1vdmVfaW50ZXJmYWNlKHN0cnVjdCB3bDEyNzEgKndsLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9tYWluLmMtMjc1NC1cdFx0d2wtXHUwMDNlcm9jX3ZpZiA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvbWFpbi5jOjI3NTU6XHRcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKHdsLVx1MDAzZWh3KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9tYWluLmMtMjc1Ni1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvbWFpbi5jPTU3NDM9c3RhdGljIHZvaWQgd2xjb3JlX3JvY19jb21wbGV0ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvbWFpbi5jLTU3NTMtXHRpZiAoIXJldClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9tYWluLmM6NTc1NDpcdFx0aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQod2wtXHUwMDNlaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL21haW4uYy01NzU1LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYz0zMzA3PXN0YXRpYyB2b2lkIGh3X3JvY19kb25lKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zMzEyLVx0bXV0ZXhfbG9jayhcdTAwMjZod3NpbS1cdTAwM2VtdXRleCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYzozMzEzOlx0aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQoaHdzaW0tXHUwMDNlaHcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzMxNC1cdGh3c2ltLVx1MDAzZXRtcF9jaGFuID0gTlVMTDtcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oPTQwNjg9c3RydWN0IGllZWU4MDIxMV9wcmVwX3R4X2luZm8ge1xuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNDQ1MS0gKlx0ZHVyYXRpb24gKHdoaWNoIHdpbGwgYWx3YXlzIGJlIG5vbi16ZXJvKSBleHBpcmVzLCB0aGUgZHJpdmVyIG11c3QgY2FsbFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo0NDUyOiAqXHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZCgpLlxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC00NDUzLSAqXHROb3RlIHRoYXQgdGhpcyBjYWxsYmFjayBtYXkgYmUgY2FsbGVkIHdoaWxlIHRoZSBkZXZpY2UgaXMgaW4gSURMRSBhbmRcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oPTcxNjg9dm9pZCBpZWVlODAyMTFfcmVhZHlfb25fY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyk7XG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03MTcwLS8qKlxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo3MTcxOiAqIGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkIC0gcmVtYWluX29uX2NoYW5uZWwgZHVyYXRpb24gZXhwaXJlZFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03MTcyLSAqIEBodzogcG9pbnRlciBhcyBvYnRhaW5lZCBmcm9tIGllZWU4MDIxMV9hbGxvY19odygpXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTcxNzMtICovXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjcxNzQ6dm9pZCBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyk7XG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTcxNzUtXG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTU5NzQ9Y29uc3Qgc3RydWN0IGNmZzgwMjExX29wcyBtYWM4MDIxMV9jb25maWdfb3BzID0ge1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy02MDM0LVx0LnNldF9iaXRyYXRlX21hc2sgPSBpZWVlODAyMTFfc2V0X2JpdHJhdGVfbWFzayxcbm5ldC9tYWM4MDIxMS9jZmcuYzo2MDM1Olx0LnJlbWFpbl9vbl9jaGFubmVsID0gaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsLFxubmV0L21hYzgwMjExL2NmZy5jLTYwMzYtXHQuY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsID0gaWVlZTgwMjExX2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbCxcbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0yMTQ5PXZvaWQgaWVlZTgwMjExX3JvY19wdXJnZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIxNTAtXHRcdFx0IHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKTtcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjIxNTE6aW50IGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjE1Mi1cdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi0tXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jPTQ5Nj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfaHdfcm9jX2RvbmUoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKndvcmspXG4tLVxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYy01MDgtXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jOjUwOTp2b2lkIGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYy01MTAte1xuLS1cbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMtNTE2LX1cbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmM6NTE3OkVYUE9SVF9TWU1CT0xfR1BMKGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKTtcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMtNTE4LVxuLS1cbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmM9NTU5PXN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMtNzAyLVxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYzo3MDM6aW50IGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYy03MDQtXHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MjUzCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDaGVja2luZyB0aGUgU3RheS1vbi1DaGFubmVsIE1lY2hhbmlzbSoqCgpBbHJpZ2h0LCB0aGUgY29yZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiBoZXJlIGlzIGNsZWFybHkgYGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbGAuIFRoYXQmIzM5O3MgdGhlIG9uZSBJIG5lZWQgdG8gZm9jdXMgb24uIE15IG1lbnRhbCBjaGVja2xpc3Qga2lja3MgaW4gYXV0b21hdGljYWxseTsgdGhlIHN0YXktb24tY2hhbm5lbCBtZWNoYW5pc20gaXMgdXN1YWxseSB0aWdodGx5IGNvdXBsZWQgd2l0aCBtYW5hZ2VtZW50IGZyYW1lIHRyYW5zbWlzc2lvbi4KClNvLCBsZXQgbWUgaW1tZWRpYXRlbHkgY3Jvc3MtcmVmZXJlbmNlIHRoYXQgd2l0aCB0aGUgcmVsZXZhbnQgbWFuYWdlbWVudCBmcmFtZSB0cmFuc21pc3Npb24gZnVuY3Rpb24uIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSB2ZXJpZnkgaG93IGBjZmc4MDIxMV9tbG1lX21nbXRfdHhgIGludGVyYWN0cyB3aXRoIGBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxgLiBJIG5lZWQgdG8gZW5zdXJlIHRoZSBwcm9wZXIgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGVzZSBjb21wb25lbnRzLiBJcyB0aGVyZSBhIGNhbGwgZGlyZWN0bHkgZnJvbSB0aGUgZm9ybWVyIHRvIHRoZSBsYXR0ZXIsIG9yIGlzIGl0IGEgbW9yZSBpbmRpcmVjdCBpbnRlcmFjdGlvbiB0aHJvdWdoIG90aGVyIGZ1bmN0aW9ucz8gQXJlIHRoZXJlIGFueSBkYXRhIHN0cnVjdHVyZXMgb3IgZmxhZ3Mgc2hhcmVkIHRvIGd1YXJhbnRlZSB0aGF0IHN0YXktb24tY2hhbm5lbCBpcyByZXNwZWN0ZWQgd2hlbiBhIG1hbmFnZW1lbnQgZnJhbWUgaXMgdHJhbnNtaXR0ZWQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzZXF1ZW5jaW5nIGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGUgc3RheS1vbi1jaGFubmVsIHByb2Nlc3MgaXMgaW5pdGlhdGVkLCBoYW5kbGVkLCBhbmQgZmluYWxseSwgdGVybWluYXRlZCBpbiByZWxhdGlvbiB0byBmcmFtZSB0cmFuc21pc3Npb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NmZzgwMjExX21sbWVfbWdtdF90eCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3MvY29yZS5oPTQwMT12b2lkIGNmZzgwMjExX21sbWVfcHVyZ2VfcmVnaXN0cmF0aW9ucyhzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2KTtcbm5ldC93aXJlbGVzcy9jb3JlLmg6NDAyOmludCBjZmc4MDIxMV9tbG1lX21nbXRfdHgoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxubmV0L3dpcmVsZXNzL2NvcmUuaC00MDMtXHRcdFx0ICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9tbG1lLmM9ODYyPXN0YXRpYyBib29sIGNmZzgwMjExX2FsbG93ZWRfcmFuZG9tX2FkZHJlc3Moc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi0tXG5uZXQvd2lyZWxlc3MvbWxtZS5jLTg5NC1cbm5ldC93aXJlbGVzcy9tbG1lLmM6ODk1OmludCBjZmc4MDIxMV9tbG1lX21nbXRfdHgoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxubmV0L3dpcmVsZXNzL21sbWUuYy04OTYtXHRcdFx0ICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTQ3NjQ9c3RhdGljIGludCBubDgwMjExX3R4X21nbXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0ODg3LVx0Y29va2llID0gY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTQ4ODg6XHRlcnIgPSBjZmc4MDIxMV9tbG1lX21nbXRfdHgocmRldiwgd2RldiwgXHUwMDI2cGFyYW1zLCBjb29raWUpO1xubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNDg4OS1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1OTYyCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgaXQmIzM5O3MgYSBkaXJlY3Qgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKkNoZWNraW5nIHRoZSBSZW1haW4gb24gQ2hhbm5lbCBGdW5jdGlvbmFsaXR5KioKClllcywgdGhhdCYjMzk7cyBjb3JyZWN0LiBJJiMzOTttIGNvbmZpcm1pbmcgdGhhdCB3aGF0IEkmIzM5O20gdGhpbmtpbmcgaXMgdGhlIGNhc2UuIEFscmlnaHQsIG5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNoZWNrIHRoZSBgbmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbGAgZnVuY3Rpb24gaXRzZWxmLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhpcyBwaWVjZSBvZiBjb2RlIG9wZXJhdGVzLiBVbmRlcnN0YW5kaW5nIGl0cyBzcGVjaWZpY3MgaXMgY3J1Y2lhbCBmb3IgY29uZmlybWluZyBteSBoeXBvdGhlc2lzLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTk6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE0NTQ5PXN0YXRpYyBpbnQgbmw4MDIxMV90ZGxzX29wZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0NTY5LVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxNDU3MDpzdGF0aWMgaW50IG5sODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHNrX2J1ZmYgKnNrYixcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTQ1NzEtXHRcdFx0XHQgICAgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xOTczMz1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfc21hbGxfb3BzIG5sODAyMTFfc21hbGxfb3BzW10gPSB7XG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMDA4OS1cdFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoyMDA5MDpcdFx0LmRvaXQgPSBubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMDA5MS1cdFx0LmZsYWdzID0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTk6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzY0NTUKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipDb25maXJtaW5nIGFuZCBaZXJvaW5nIEluKioKClllcywgdGhhdCYjMzk7cyBleGFjdGx5IHJpZ2h0LCB0aGF0JiMzOTtzIHdoYXQgSSB3YXMgdGhpbmtpbmcuIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgYG5sODAyMTFfdHhfbWdtdGAgZnVuY3Rpb24uIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoYXQgbW9kdWxlIGhhbmRsZXMgdGhlIHRyYW5zbWlzc2lvbiBvZiBtYW5hZ2VtZW50IGZyYW1lcyB3aXRoaW4gdGhlIG5sODAyMTEgZnJhbWV3b3JrLiBJIGhhdmUgYSBmZWVsaW5nIHRoZXJlIG1pZ2h0IGJlIGEgc3VidGxlIG51YW5jZSB0aGVyZSB0aGF0IEkmIzM5O3ZlIG92ZXJsb29rZWQuIFRpbWUgdG8gZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MgYW5kIGRvdWJsZS1jaGVjayB0aG9zZSBwYXJhbWV0ZXJzIGFuZCB0aGUgYXNzb2NpYXRlZCBsb2dpYy4gSSYjMzk7bSBlc3BlY2lhbGx5IGtlZW4gdG8gc2VlIGhvdyBpdCBtYW5hZ2VzIHRoZSBmcmFtZSBjb25zdHJ1Y3Rpb24gYW5kIGFueSBwb3RlbnRpYWwgcmF0ZSBjb250cm9sIGNvbnNpZGVyYXRpb25zLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTk6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmw4MDIxMV90eF9tZ210JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9ubDgwMjExLmM9MTQ3MDY9c3RhdGljIGludCBubDgwMjExX3JlZ2lzdGVyX21nbXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0NzYzLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxNDc2NDpzdGF0aWMgaW50IG5sODAyMTFfdHhfbWdtdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNDc2NS17XG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNDkwOS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTQ5MTA6c3RhdGljIGludCBubDgwMjExX3R4X21nbXRfY2FuY2VsX3dhaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTQ5MTEte1xuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTk3MzM9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBubDgwMjExX3NtYWxsX29wc1tdID0ge1xuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjAxMjAtXHRcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjAxMjE6XHRcdC5kb2l0ID0gbmw4MDIxMV90eF9tZ210LFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMDEyMi1cdFx0LmZsYWdzID0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIwMTI3LVx0XHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjIwMTI4Olx0XHQuZG9pdCA9IG5sODAyMTFfdHhfbWdtdF9jYW5jZWxfd2FpdCxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjAxMjktXHRcdC5mbGFncyA9IEdFTkxfVU5TX0FETUlOX1BFUk0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3MTk1CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uZmlybWluZyBhbmQgWmVyb2luZyBJbioqCgpZZXMsIHRoYXQmIzM5O3MgZGVmaW5pdGVseSB0aGUga2V5IHBvaW50IHdlJiMzOTtyZSBkZWFsaW5nIHdpdGguIE9rYXksIHNvIHRoZSBuZXh0IHRoaW5nIHRvIGludmVzdGlnYXRlIGlzIGBubDgwMjExX3Byb2JlX3BlZXJgLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBmb2N1cyBteSBhdHRlbnRpb24uIEl0JiMzOTtzIHRoZSBsb2dpY2FsIG5leHQgc3RlcCBpbiB0cmFjaW5nIHRoaXMgaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25sODAyMTFfcHJvYmVfcGVlciYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE2MzEwPXN0YXRpYyBpbnQgbmw4MDIxMV9yZWdpc3Rlcl91bmV4cGVjdGVkX2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNjMyNy1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTYzMjg6c3RhdGljIGludCBubDgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTYzMjkte1xuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTk3MzM9c3RhdGljIGNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBubDgwMjExX3NtYWxsX29wc1tdID0ge1xuLS1cbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjAyMzctXHRcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjAyMzg6XHRcdC5kb2l0ID0gbmw4MDIxMV9wcm9iZV9wZWVyLFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMDIzOS1cdFx0LmZsYWdzID0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTk6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc2MzcKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIFRyYW5zbWlzc2lvbiBDb250cm9sIFBvcnQqKgoKWWVzLCB0aGF0JiMzOTtzIGRlZmluaXRlbHkgdGhlIGtleSBhcmVhIHRvIGJlIGxvb2tpbmcgYXQuIEkmIzM5O20gZm9jdXNpbmcgaW4gb24gYG5sODAyMTFfdHhfY29udHJvbF9wb3J0YC4gSXQmIzM5O3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgc28gdG8gc3BlYWssIGluIHRlcm1zIG9mIGFjdHVhbGx5ICpjb250cm9sbGluZyogdGhlIHRyYW5zbWlzc2lvbiBwcm9jZXNzIGZvciA4MDIuMTEgZnJhbWVzLiBHb3R0YSB2ZXJpZnkgdGhlIG51YW5jZXMgdGhlcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25sODAyMTFfdHhfY29udHJvbF9wb3J0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC93aXJlbGVzcy9ubDgwMjExLmM9MTg0OTQ9c3RhdGljIGludCBubDgwMjExX2V4dGVybmFsX2F1dGgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE4NTM1LVxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxODUzNjpzdGF0aWMgaW50IG5sODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE4NTM3LXtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE5NzMzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgbmw4MDIxMV9zbWFsbF9vcHNbXSA9IHtcbi0tXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIwNDcxLVx0XHQudmFsaWRhdGUgPSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjIwNDcyOlx0XHQuZG9pdCA9IG5sODAyMTFfdHhfY29udHJvbF9wb3J0LFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMDQ3My1cdFx0LmZsYWdzID0gR0VOTF9VTlNfQURNSU5fUEVSTSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTk6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzgxMDcKCQkJCQkJCW91dHB1dDogMzMxCgkJCQkJCQl0aG91Z2h0czogNDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgUGxhbiBmb3IgVGhpcyBQYXRjaCoqCgpPa2F5LCB5ZXMsIHRoaXMgcGF0Y2ggbG9va3Mgc29saWQsIGRlZmluaXRlbHkgZnVuY3Rpb25hbCwgYW5kIHJlYWR5IGZvciBhIGdvb2QgZnV6emluZyBydW4uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGl0IG5lZWRzIHRvIGJlIHN0cmVzc2VkIHdpdGggZnV6emluZy4KClRvIGVuc3VyZSBjb21wcmVoZW5zaXZlIGNvdmVyYWdlLCBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpZ3VyZSB0aGUgZnV6emluZyBlbnZpcm9ubWVudCB3aXRoIGBDRkc4MDIxMWAsIGBNQUM4MDIxMWAsIGFuZCBgTUFDODAyMTFfSFdTSU1gLiBUaGF0IHdpbGwgYmUgbXkgc3RhcnRpbmcgcG9pbnQuCgpUaGUgY29yZSBmb2N1cyBzeW1ib2xzIGZvciBpbml0aWFsIGZ1enppbmcgYXJlOgotICAgYG5sODAyMTFfcmVtYWluX29uX2NoYW5uZWxgCi0gICBgbmw4MDIxMV90eF9tZ210YAotICAgYG5sODAyMTFfcHJvYmVfcGVlcmAKLSAgIGBubDgwMjExX3R4X2NvbnRyb2xfcG9ydGAKLSAgIGBjZmc4MDIxMV9tbG1lX21nbXRfdHhgCi0gICBgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsYAotICAgYGllZWU4MDIxMV9tZ210X3R4YAotICAgYGllZWU4MDIxMV9wcm9iZV9wZWVyYAotICAgYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgCgpIb3dldmVyLCBhIHF1aWNrIHNjYW4gb2YgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucyByZXZlYWxzIHNldmVyYWwgYWRkaXRpb25hbCBhcmVhcyBpbXBhY3RlZC4gSSBzZWUgYGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYmAgd2hpY2ggbG9va3MgaW50ZXJlc3RpbmcgZm9yIGZ1enppbmcsIGFzIHdlbGwgYXMgYGllZWU4MDIxMV9zdGFydF9yb2Nfd29ya2AsIHdoaWNoIGNvdWxkIGFsc28gZXhwb3NlIHNvbWUgdnVsbmVyYWJpbGl0aWVzLiBJJiMzOTttIGFsc28gc2VlaW5nIGBpZWVlODAyMTFfbWxvX211bHRpY2FzdF90eF9vbmVgLCBgaWVlZTgwMjExX21sb19tdWx0aWNhc3RfdHhgLCBgaWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXRgLCBgaWVlZTgwMjExXzgwMjNfeG1pdGAsIGBpZWVlODAyMTFfYnVpbGRfZGF0YV90ZW1wbGF0ZWAsIGBpZWVlODAyMTFfcHJvYmVfbWVzaF9saW5rYCwgYW5kIGBpZWVlODAyMTFfdGRsc19wcmVwX21nbXRfcGFja2V0YC4KCkNvbnNpZGVyaW5nIHRoZXNlLCBJJiMzOTttIGdvaW5nIHRvIGFkZCBgaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiYCBhbmQgYGllZWU4MDIxMV9zdGFydF9yb2Nfd29ya2AgdG8gdGhlIGluaXRpYWwgZm9jdXMgbGlzdCBmb3IgZnV6emluZy4gVGhpcyBzaG91bGQgZ2l2ZSBhIHJvYnVzdCB0ZXN0LCBhbmQgaG9wZWZ1bGx5IHVuZWFydGggYW55IGhpZGRlbiBidWdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxOToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q0ZHODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTEmIzM0OywKICAgICYjMzQ7TUFDODAyMTFfSFdTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsJiMzNDssCiAgICAmIzM0O25sODAyMTFfdHhfbWdtdCYjMzQ7LAogICAgJiMzNDtubDgwMjExX3Byb2JlX3BlZXImIzM0OywKICAgICYjMzQ7bmw4MDIxMV90eF9jb250cm9sX3BvcnQmIzM0OywKICAgICYjMzQ7Y2ZnODAyMTFfbWxtZV9tZ210X3R4JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfbWdtdF90eCYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfcHJvYmVfcGVlciYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9hdHRhY2hfYWNrX3NrYiYjMzQ7LAogICAgJiMzNDtpZWVlODAyMTFfc3RhcnRfcm9jX3dvcmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBob3cgY29va2llcyBhcmUgZ2VuZXJhdGVkIGFuZCBwYXNzZWQgZm9yIHNldmVyYWwgbmw4MDIxMSBjb21tYW5kcyAocmVtYWluX29uX2NoYW5uZWwsIHR4X21nbXQsIHByb2JlX3BlZXIsIHR4X2NvbnRyb2xfcG9ydCkuIEl0IG1vZGlmaWVzIHRoZSBjb3JlIGNmZzgwMjExIGFuZCBtYWM4MDIxMSBsb2dpYyB0byBnZW5lcmF0ZSBjb29raWVzIGluIG5sODAyMTEgYW5kIHBhc3MgdGhlbSBieSB2YWx1ZSB0byBkcml2ZXJzLCBpbnN0ZWFkIG9mIGhhdmluZyBkcml2ZXJzIGdlbmVyYXRlIHRoZW0gYW5kIHBhc3MgdGhlbSBiYWNrIHZpYSBwb2ludGVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIHdpcmVsZXNzIHN0YWNrIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDRkc4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMSYjMzQ7LAogICAgJiMzNDtNQUM4MDIxMV9IV1NJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25sODAyMTFfcmVtYWluX29uX2NoYW5uZWwmIzM0OywKICAgICYjMzQ7bmw4MDIxMV90eF9tZ210JiMzNDssCiAgICAmIzM0O25sODAyMTFfcHJvYmVfcGVlciYjMzQ7LAogICAgJiMzNDtubDgwMjExX3R4X2NvbnRyb2xfcG9ydCYjMzQ7LAogICAgJiMzNDtjZmc4MDIxMV9tbG1lX21nbXRfdHgmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9tZ210X3R4JiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9wcm9iZV9wZWVyJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV90eF9jb250cm9sX3BvcnQmIzM0OywKICAgICYjMzQ7aWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiJiMzNDssCiAgICAmIzM0O2llZWU4MDIxMV9zdGFydF9yb2Nfd29yayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBjaGFuZ2VzIGhvdyBjb29raWVzIGFyZSBnZW5lcmF0ZWQgYW5kIHBhc3NlZCBmb3Igc2V2ZXJhbCBubDgwMjExIGNvbW1hbmRzIChyZW1haW5fb25fY2hhbm5lbCwgdHhfbWdtdCwgcHJvYmVfcGVlciwgdHhfY29udHJvbF9wb3J0KS4gSXQgbW9kaWZpZXMgdGhlIGNvcmUgY2ZnODAyMTEgYW5kIG1hYzgwMjExIGxvZ2ljIHRvIGdlbmVyYXRlIGNvb2tpZXMgaW4gbmw4MDIxMSBhbmQgcGFzcyB0aGVtIGJ5IHZhbHVlIHRvIGRyaXZlcnMsIGluc3RlYWQgb2YgaGF2aW5nIGRyaXZlcnMgZ2VuZXJhdGUgdGhlbSBhbmQgcGFzcyB0aGVtIGJhY2sgdmlhIHBvaW50ZXJzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvcmUgd2lyZWxlc3Mgc3RhY2sgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxOToyMjozNy4zMTcxNTQ3NTVaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MTA4ODk2OTY1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJDRkc4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFcIixcbiAgICBcIk1BQzgwMjExX0hXU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbFwiLFxuICAgIFwibmw4MDIxMV90eF9tZ210XCIsXG4gICAgXCJubDgwMjExX3Byb2JlX3BlZXJcIixcbiAgICBcIm5sODAyMTFfdHhfY29udHJvbF9wb3J0XCIsXG4gICAgXCJjZmc4MDIxMV9tbG1lX21nbXRfdHhcIixcbiAgICBcImllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbFwiLFxuICAgIFwiaWVlZTgwMjExX21nbXRfdHhcIixcbiAgICBcImllZWU4MDIxMV9wcm9iZV9wZWVyXCIsXG4gICAgXCJpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0XCIsXG4gICAgXCJpZWVlODAyMTFfYXR0YWNoX2Fja19za2JcIixcbiAgICBcImllZWU4MDIxMV9zdGFydF9yb2Nfd29ya1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgaG93IGNvb2tpZXMgYXJlIGdlbmVyYXRlZCBhbmQgcGFzc2VkIGZvciBzZXZlcmFsIG5sODAyMTEgY29tbWFuZHMgKHJlbWFpbl9vbl9jaGFubmVsLCB0eF9tZ210LCBwcm9iZV9wZWVyLCB0eF9jb250cm9sX3BvcnQpLiBJdCBtb2RpZmllcyB0aGUgY29yZSBjZmc4MDIxMSBhbmQgbWFjODAyMTEgbG9naWMgdG8gZ2VuZXJhdGUgY29va2llcyBpbiBubDgwMjExIGFuZCBwYXNzIHRoZW0gYnkgdmFsdWUgdG8gZHJpdmVycywgaW5zdGVhZCBvZiBoYXZpbmcgZHJpdmVycyBnZW5lcmF0ZSB0aGVtIGFuZCBwYXNzIHRoZW0gYmFjayB2aWEgcG9pbnRlcnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgY29yZSB3aXJlbGVzcyBzdGFjayBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjI6MzcuMzE3MTYwMDE1WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODQ1OTA3OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkYjY0N2Y0MDNkOTlhNDM2OTA0M2RmM2MwNWVlYTVkZGY4NDA4MDVkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDEgMTk6MjI6MzYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jXFxuaW5kZXggZWNkZTkxMTU5YjU0Ni4uMzQwMjVkNjRkNjE1OCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NmZzgwMjExLmNcXG5AQCAtMzAzNCwyMCArMzAzNCwxNCBAQCBzdGF0aWMgaW50IGF0aDZrbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXHRcXHRcXHRcXHQgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcXG4gXFx0XFx0XFx0XFx0ICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbixcXG4tXFx0XFx0XFx0XFx0ICAgIHU2NCAqY29va2llLCBjb25zdCB1OCAqcnhfYWRkcilcXG4rXFx0XFx0XFx0XFx0ICAgIHU2NCBjb29raWUsIGNvbnN0IHU4ICpyeF9hZGRyKVxcbiB7XFxuIFxcdHN0cnVjdCBhdGg2a2xfdmlmICp2aWYgPSBhdGg2a2xfdmlmX2Zyb21fd2Rldih3ZGV2KTtcXG4gXFx0c3RydWN0IGF0aDZrbCAqYXIgPSBhdGg2a2xfcHJpdih2aWYtXFx1MDAzZW5kZXYpO1xcbi1cXHR1MzIgaWQ7XFxuIFxcbiBcXHQvKiBUT0RPOiBpZiBhbHJlYWR5IHBlbmRpbmcgb3Igb25nb2luZyByZW1haW4tb24tY2hhbm5lbCxcXG4gXFx0ICogcmV0dXJuIC1FQlVTWSAqL1xcbi1cXHRpZCA9ICsrdmlmLVxcdTAwM2VsYXN0X3JvY19pZDtcXG4tXFx0aWYgKGlkID09IDApIHtcXG4tXFx0XFx0LyogRG8gbm90IHVzZSAwIGFzIHRoZSBjb29raWUgdmFsdWUgKi9cXG4tXFx0XFx0aWQgPSArK3ZpZi1cXHUwMDNlbGFzdF9yb2NfaWQ7XFxuLVxcdH1cXG4tXFx0KmNvb2tpZSA9IGlkO1xcbitcXHR2aWYtXFx1MDAzZWxhc3Rfcm9jX2lkID0gY29va2llO1xcbiBcXG4gXFx0cmV0dXJuIGF0aDZrbF93bWlfcmVtYWluX29uX2NobmxfY21kKGFyLVxcdTAwM2V3bWksIHZpZi1cXHUwMDNlZndfdmlmX2lkeCxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgICBjaGFuLVxcdTAwM2VjZW50ZXJfZnJlcSwgZHVyYXRpb24pO1xcbkBAIC0zMTA2LDYgKzMxMDAsNyBAQCBzdGF0aWMgaW50IGF0aDZrbF9zZW5kX2dvX3Byb2JlX3Jlc3Aoc3RydWN0IGF0aDZrbF92aWYgKnZpZixcXG4gXFxuIHN0YXRpYyBib29sIGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLFxcbiBcXHRcXHRcXHRcXHQgICAgIHUzMiBpZCxcXG4rXFx0XFx0XFx0XFx0ICAgICB1NjQgY29va2llLFxcbiBcXHRcXHRcXHRcXHQgICAgIHUzMiBmcmVxLFxcbiBcXHRcXHRcXHRcXHQgICAgIHUzMiB3YWl0LFxcbiBcXHRcXHRcXHRcXHQgICAgIGNvbnN0IHU4ICpidWYsXFxuQEAgLTMxMzgsNiArMzEzMyw3IEBAIHN0YXRpYyBib29sIGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLFxcbiBcXG4gXFx0XFx0XFx0SU5JVF9MSVNUX0hFQUQoXFx1MDAyNm1nbXRfYnVmLVxcdTAwM2VsaXN0KTtcXG4gXFx0XFx0XFx0bWdtdF9idWYtXFx1MDAzZWlkID0gaWQ7XFxuK1xcdFxcdFxcdG1nbXRfYnVmLVxcdTAwM2Vjb29raWUgPSBjb29raWU7XFxuIFxcdFxcdFxcdG1nbXRfYnVmLVxcdTAwM2VmcmVxID0gZnJlcTtcXG4gXFx0XFx0XFx0bWdtdF9idWYtXFx1MDAzZXdhaXQgPSB3YWl0O1xcbiBcXHRcXHRcXHRtZ210X2J1Zi1cXHUwMDNlbGVuID0gbGVuO1xcbkBAIC0zMTkwLDcgKzMxODYsNyBAQCBzdGF0aWMgYm9vbCBhdGg2a2xfaXNfcDJwX2dvX3NzaWQoY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbilcXG4gfVxcbiBcXG4gc3RhdGljIGludCBhdGg2a2xfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbi1cXHRcXHRcXHQgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcXG4rXFx0XFx0XFx0ICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmID0gYXRoNmtsX3ZpZl9mcm9tX3dkZXYod2Rldik7XFxuIFxcdHN0cnVjdCBhdGg2a2wgKmFyID0gYXRoNmtsX3ByaXYodmlmLVxcdTAwM2VuZGV2KTtcXG5AQCAtMzIyMiw3ICszMjE4LDYgQEAgc3RhdGljIGludCBhdGg2a2xfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRcXHQgKiBTZW5kIFByb2JlIFJlc3BvbnNlIGZyYW1lIGluIEdPIG1vZGUgdXNpbmcgYSBzZXBhcmF0ZSBXTUlcXG4gXFx0XFx0ICogY29tbWFuZCB0byBhbGxvdyB0aGUgdGFyZ2V0IHRvIGZpbGwgaW4gdGhlIGdlbmVyaWMgSUVzLlxcbiBcXHRcXHQgKi9cXG4tXFx0XFx0KmNvb2tpZSA9IDA7IC8qIFRYIHN0YXR1cyBub3Qgc3VwcG9ydGVkICovXFxuIFxcdFxcdHJldHVybiBhdGg2a2xfc2VuZF9nb19wcm9iZV9yZXNwKHZpZiwgYnVmLCBsZW4sIGZyZXEpO1xcbiBcXHR9XFxuIFxcbkBAIC0zMjM1LDE2ICszMjMwLDE1IEBAIHN0YXRpYyBpbnQgYXRoNmtsX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0aWQgPSB2aWYtXFx1MDAzZXNlbmRfYWN0aW9uX2lkKys7XFxuIFxcdH1cXG4gXFxuLVxcdCpjb29raWUgPSBpZDtcXG4tXFxuIFxcdC8qIEFQIG1vZGUgUG93ZXIgc2F2aW5nIHByb2Nlc3NpbmcgKi9cXG4gXFx0aWYgKHZpZi1cXHUwMDNlbndfdHlwZSA9PSBBUF9ORVRXT1JLKSB7XFxuLVxcdFxcdHF1ZXVlZCA9IGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcCh2aWYsIGlkLCBmcmVxLCB3YWl0LCBidWYsIGxlbixcXG4tXFx0XFx0XFx0XFx0XFx0XFx0ICBcXHUwMDI2bW9yZV9kYXRhLCBub19jY2spO1xcbitcXHRcXHRxdWV1ZWQgPSBhdGg2a2xfbWdtdF9wb3dlcnNhdmVfYXAodmlmLCBpZCwgY29va2llLCBmcmVxLCB3YWl0LFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgIGJ1ZiwgbGVuLCBcXHUwMDI2bW9yZV9kYXRhLCBub19jY2spO1xcbiBcXHRcXHRpZiAocXVldWVkKVxcbiBcXHRcXHRcXHRyZXR1cm4gMDtcXG4gXFx0fVxcbiBcXG4rXFx0YXItXFx1MDAzZXdtaS1cXHUwMDNlbGFzdF9tZ210X3R4X2Nvb2tpZSA9IGNvb2tpZTtcXG4gXFx0cmV0dXJuIGF0aDZrbF93bWlfc2VuZF9tZ210X2NtZChhci1cXHUwMDNld21pLCB2aWYtXFx1MDAzZWZ3X3ZpZl9pZHgsIGlkLCBmcmVxLFxcbiBcXHRcXHRcXHRcXHRcXHR3YWl0LCBidWYsIGxlbiwgbm9fY2NrKTtcXG4gfVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oXFxuaW5kZXggNzdlMDUyMzM2ZWI1Yi4uYTBiMjM2ZWVlYWI1NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oXFxuQEAgLTQwNCw2ICs0MDQsNyBAQCBzdHJ1Y3QgYXRoNmtsX21nbXRfYnVmZiB7XFxuIFxcdHUzMiBmcmVxO1xcbiBcXHR1MzIgd2FpdDtcXG4gXFx0dTMyIGlkO1xcbitcXHR1NjQgY29va2llO1xcbiBcXHRib29sIG5vX2NjaztcXG4gXFx0c2l6ZV90IGxlbjtcXG4gXFx0dTggYnVmW107XFxuQEAgLTYzMSw4ICs2MzIsOCBAQCBzdHJ1Y3QgYXRoNmtsX3ZpZiB7XFxuIFxcdHN0cnVjdCBjZmc4MDIxMV9zY2FuX3JlcXVlc3QgKnNjYW5fcmVxO1xcbiBcXHRlbnVtIHNtZV9zdGF0ZSBzbWVfc3RhdGU7XFxuIFxcdGludCByZWNvbm5lY3RfZmxhZztcXG4tXFx0dTMyIGxhc3Rfcm9jX2lkO1xcbi1cXHR1MzIgbGFzdF9jYW5jZWxfcm9jX2lkO1xcbitcXHR1NjQgbGFzdF9yb2NfaWQ7XFxuK1xcdHU2NCBsYXN0X2NhbmNlbF9yb2NfaWQ7XFxuIFxcdHUzMiBzZW5kX2FjdGlvbl9pZDtcXG4gXFx0Ym9vbCBwcm9iZV9yZXFfcmVwb3J0O1xcbiBcXHR1MTYgYXNzb2NfYnNzX2JlYWNvbl9pbnQ7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmNcXG5pbmRleCA4YWZjNjU4OWZjNTFlLi45YzAyM2Q3Y2UzMDU5IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmNcXG5AQCAtODk4LDYgKzg5OCw3IEBAIHZvaWQgYXRoNmtsX3BzcG9sbF9ldmVudChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLCB1OCBhaWQpXFxuIFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZjb25uLVxcdTAwM2Vwc3FfbG9jayk7XFxuIFxcbiBcXHRcXHRjb25uLVxcdTAwM2VzdGFfZmxhZ3MgfD0gU1RBX1BTX1BPTExFRDtcXG4rXFx0XFx0YXItXFx1MDAzZXdtaS1cXHUwMDNlbGFzdF9tZ210X3R4X2Nvb2tpZSA9IG1nbXRfYnVmLVxcdTAwM2Vjb29raWU7XFxuIFxcdFxcdGF0aDZrbF93bWlfc2VuZF9tZ210X2NtZChhci1cXHUwMDNld21pLCB2aWYtXFx1MDAzZWZ3X3ZpZl9pZHgsXFxuIFxcdFxcdFxcdFxcdFxcdCBtZ210X2J1Zi1cXHUwMDNlaWQsIG1nbXRfYnVmLVxcdTAwM2VmcmVxLFxcbiBcXHRcXHRcXHRcXHRcXHQgbWdtdF9idWYtXFx1MDAzZXdhaXQsIG1nbXRfYnVmLVxcdTAwM2VidWYsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNcXG5pbmRleCBkODE4MjU0MTM5MDYxLi42MDlkNDU4Y2E2YzU3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmNcXG5AQCAtMTQ2OSw2ICsxNDY5LDcgQEAgdm9pZCBhdGg2a2xfcngoc3RydWN0IGh0Y190YXJnZXQgKnRhcmdldCwgc3RydWN0IGh0Y19wYWNrZXQgKnBhY2tldClcXG4gXFx0XFx0XFx0XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmNvbm4tXFx1MDAzZXBzcV9sb2NrKTtcXG4gXFx0XFx0XFx0XFx0XFx0aWR4ID0gdmlmLVxcdTAwM2Vmd192aWZfaWR4O1xcbiBcXG4rXFx0XFx0XFx0XFx0XFx0YXItXFx1MDAzZXdtaS1cXHUwMDNlbGFzdF9tZ210X3R4X2Nvb2tpZSA9IG1nbXQtXFx1MDAzZWNvb2tpZTtcXG4gXFx0XFx0XFx0XFx0XFx0YXRoNmtsX3dtaV9zZW5kX21nbXRfY21kKGFyLVxcdTAwM2V3bWksXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCBpZHgsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCBtZ210LVxcdTAwM2VpZCxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmNcXG5pbmRleCA2YzI5ZjBiY2VjOWY1Li4yMTQwZmRkYmE4YmFmIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jXFxuQEAgLTU5Niw3ICs1OTYsNyBAQCBzdGF0aWMgaW50IGF0aDZrbF93bWlfdHhfc3RhdHVzX2V2ZW50X3J4KHN0cnVjdCB3bWkgKndtaSwgdTggKmRhdGFwLCBpbnQgbGVuLFxcbiBcXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV01JLCBcXFwidHhfc3RhdHVzOiBpZD0leCBhY2tfc3RhdHVzPSV1XFxcXG5cXFwiLFxcbiBcXHRcXHQgICBpZCwgZXYtXFx1MDAzZWFja19zdGF0dXMpO1xcbiBcXHRpZiAod21pLVxcdTAwM2VsYXN0X21nbXRfdHhfZnJhbWUpIHtcXG4tXFx0XFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMoXFx1MDAyNnZpZi1cXHUwMDNld2RldiwgaWQsXFxuK1xcdFxcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKFxcdTAwMjZ2aWYtXFx1MDAzZXdkZXYsIHdtaS1cXHUwMDNlbGFzdF9tZ210X3R4X2Nvb2tpZSxcXG4gXFx0XFx0XFx0XFx0XFx0d21pLVxcdTAwM2VsYXN0X21nbXRfdHhfZnJhbWUsXFxuIFxcdFxcdFxcdFxcdFxcdHdtaS1cXHUwMDNlbGFzdF9tZ210X3R4X2ZyYW1lX2xlbixcXG4gXFx0XFx0XFx0XFx0XFx0ISFldi1cXHUwMDNlYWNrX3N0YXR1cywgR0ZQX0FUT01JQyk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oXFxuaW5kZXggOGZiZWNlM2ZkYWQ5Zi4uODljZTJhYmJiMWNkYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaFxcbkBAIC0xMjUsNiArMTI1LDcgQEAgc3RydWN0IHdtaSB7XFxuIFxcbiBcXHR1OCAqbGFzdF9tZ210X3R4X2ZyYW1lO1xcbiBcXHRzaXplX3QgbGFzdF9tZ210X3R4X2ZyYW1lX2xlbjtcXG4rXFx0dTY0IGxhc3RfbWdtdF90eF9jb29raWU7XFxuIFxcdHU4IHNhdmVkX3B3cl9tb2RlO1xcbiB9O1xcbiBcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmNcXG5pbmRleCA1ZjJiZDlhMzFmYWY2Li45YWMzM2Q4MjdmODAxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9jZmc4MDIxMS5jXFxuQEAgLTE0MzIsNyArMTQzMiw3IEBAIHN0YXRpYyBpbnQgd2lsX2NmZzgwMjExX3NldF93aXBoeV9wYXJhbXMoc3RydWN0IHdpcGh5ICp3aXBoeSwgaW50IHJhZGlvX2lkeCxcXG4gXFxuIGludCB3aWxfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRcXHRcXHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXFxuLVxcdFxcdFxcdCB1NjQgKmNvb2tpZSlcXG4rXFx0XFx0XFx0IHU2NCBjb29raWUpXFxuIHtcXG4gXFx0Y29uc3QgdTggKmJ1ZiA9IHBhcmFtcy1cXHUwMDNlYnVmO1xcbiBcXHRzaXplX3QgbGVuID0gcGFyYW1zLVxcdTAwM2VsZW47XFxuQEAgLTE0ODgsOCArMTQ4OCw3IEBAIGludCB3aWxfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHQgKi9cXG4gXFx0dHhfc3RhdHVzID0gKHJjID09IDApO1xcbiBcXHRyYyA9IChyYyA9PSAtRUFHQUlOKSA/IDAgOiByYztcXG4tXFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llID8gKmNvb2tpZSA6IDAsIGJ1ZiwgbGVuLFxcbi1cXHRcXHRcXHRcXHR0eF9zdGF0dXMsIEdGUF9LRVJORUwpO1xcbitcXHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBjb29raWUsIGJ1ZiwgbGVuLCB0eF9zdGF0dXMsIEdGUF9LRVJORUwpO1xcbiBcXG4gXFx0cmV0dXJuIHJjO1xcbiB9XFxuQEAgLTE3MzUsNyArMTczNCw3IEBAIHN0YXRpYyBpbnQgd2lsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdFxcdFxcdFxcdCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRcXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxcbiBcXHRcXHRcXHRcXHQgdW5zaWduZWQgaW50IGR1cmF0aW9uLFxcbi1cXHRcXHRcXHRcXHQgdTY0ICpjb29raWUsIGNvbnN0IHU4ICpyeF9hZGRyKVxcbitcXHRcXHRcXHRcXHQgdTY0IGNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpXFxuIHtcXG4gXFx0c3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsID0gd2lwaHlfdG9fd2lsKHdpcGh5KTtcXG4gXFx0aW50IHJjO1xcbkBAIC0yMzgxLDcgKzIzODAsNyBAQCB2b2lkIHdpbF9wcm9iZV9jbGllbnRfZmx1c2goc3RydWN0IHdpbDYyMTBfdmlmICp2aWYpXFxuIFxcbiBzdGF0aWMgaW50IHdpbF9jZmc4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLVxcdFxcdFxcdFxcdCAgIGNvbnN0IHU4ICpwZWVyLCB1NjQgKmNvb2tpZSlcXG4rXFx0XFx0XFx0XFx0ICAgY29uc3QgdTggKnBlZXIsIHU2NCBjb29raWUpXFxuIHtcXG4gXFx0c3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsID0gd2lwaHlfdG9fd2lsKHdpcGh5KTtcXG4gXFx0c3RydWN0IHdpbDYyMTBfdmlmICp2aWYgPSBuZGV2X3RvX3ZpZihkZXYpO1xcbkBAIC0yMzk5LDEzICsyMzk4LDEyIEBAIHN0YXRpYyBpbnQgd2lsX2NmZzgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIFxcbiBcXHRyZXEtXFx1MDAzZWNpZCA9IGNpZDtcXG4tXFx0cmVxLVxcdTAwM2Vjb29raWUgPSBjaWQ7XFxuK1xcdHJlcS1cXHUwMDNlY29va2llID0gY29va2llO1xcbiBcXG4gXFx0bXV0ZXhfbG9jayhcXHUwMDI2dmlmLVxcdTAwM2Vwcm9iZV9jbGllbnRfbXV0ZXgpO1xcbiBcXHRsaXN0X2FkZF90YWlsKFxcdTAwMjZyZXEtXFx1MDAzZWxpc3QsIFxcdTAwMjZ2aWYtXFx1MDAzZXByb2JlX2NsaWVudF9wZW5kaW5nKTtcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZ2aWYtXFx1MDAzZXByb2JlX2NsaWVudF9tdXRleCk7XFxuIFxcbi1cXHQqY29va2llID0gcmVxLVxcdTAwM2Vjb29raWU7XFxuIFxcdHF1ZXVlX3dvcmsod2lsLVxcdTAwM2V3cV9zZXJ2aWNlLCBcXHUwMDI2dmlmLVxcdTAwM2Vwcm9iZV9jbGllbnRfd29ya2VyKTtcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvZGVidWdmcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvZGVidWdmcy5jXFxuaW5kZXggYjhjYjczNmE3MTg1Mi4uZTA2ZTQ1MzIzMjcyYyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9kZWJ1Z2ZzLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9kZWJ1Z2ZzLmNcXG5AQCAtOTg1LDcgKzk4NSw3IEBAIHN0YXRpYyBzc2l6ZV90IHdpbF93cml0ZV9maWxlX3R4bWdtdChzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZixcXG4gXFx0cGFyYW1zLmJ1ZiA9IGZyYW1lO1xcbiBcXHRwYXJhbXMubGVuID0gbGVuO1xcbiBcXG4tXFx0cmMgPSB3aWxfY2ZnODAyMTFfbWdtdF90eCh3aXBoeSwgd2RldiwgXFx1MDAyNnBhcmFtcywgTlVMTCk7XFxuK1xcdHJjID0gd2lsX2NmZzgwMjExX21nbXRfdHgod2lwaHksIHdkZXYsIFxcdTAwMjZwYXJhbXMsIDApO1xcbiBcXG4gXFx0a2ZyZWUoZnJhbWUpO1xcbiBcXHR3aWxfaW5mbyh3aWwsIFxcXCItXFx1MDAzZSAlZFxcXFxuXFxcIiwgcmMpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9wMnAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3AycC5jXFxuaW5kZXggZjIwY2FmMWEzOTA1Yi4uYWNkOGEyZTM1MTAzMiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9wMnAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3AycC5jXFxuQEAgLTEyNCw3ICsxMjQsNyBAQCBpbnQgd2lsX3AycF9zZWFyY2goc3RydWN0IHdpbDYyMTBfdmlmICp2aWYsXFxuIFxcbiBpbnQgd2lsX3AycF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRcXHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcXG4tXFx0XFx0ICAgdTY0ICpjb29raWUpXFxuK1xcdFxcdCAgIHU2NCBjb29raWUpXFxuIHtcXG4gXFx0c3RydWN0IHdpbDYyMTBfdmlmICp2aWYgPSB3ZGV2X3RvX3ZpZih3aWwsIHdkZXYpO1xcbiBcXHRzdHJ1Y3Qgd2lsX3AycF9pbmZvICpwMnAgPSBcXHUwMDI2dmlmLVxcdTAwM2VwMnA7XFxuQEAgLTE0NCw3ICsxNDQsNyBAQCBpbnQgd2lsX3AycF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHR9XFxuIFxcbiBcXHRtZW1jcHkoXFx1MDAyNnAycC1cXHUwMDNlbGlzdGVuX2NoYW4sIGNoYW4sIHNpemVvZigqY2hhbikpO1xcbi1cXHQqY29va2llID0gKytwMnAtXFx1MDAzZWNvb2tpZTtcXG4rXFx0cDJwLVxcdTAwM2Vjb29raWUgPSBjb29raWU7XFxuIFxcdHAycC1cXHUwMDNlbGlzdGVuX2R1cmF0aW9uID0gZHVyYXRpb247XFxuIFxcbiBcXHRtdXRleF9sb2NrKFxcdTAwMjZ3aWwtXFx1MDAzZXZpZl9tdXRleCk7XFxuQEAgLTE2Niw3ICsxNjYsNyBAQCBpbnQgd2lsX3AycF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRpZiAodmlmLVxcdTAwM2VtaWQgPT0gMClcXG4gXFx0XFx0d2lsLVxcdTAwM2VyYWRpb193ZGV2ID0gd2RldjtcXG4gXFxuLVxcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgKmNvb2tpZSwgY2hhbiwgZHVyYXRpb24sXFxuK1xcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLCBkdXJhdGlvbixcXG4gXFx0XFx0XFx0XFx0ICBHRlBfS0VSTkVMKTtcXG4gXFxuIG91dDpcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd2lsNjIxMC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd2lsNjIxMC5oXFxuaW5kZXggMzFlMTA3YzgxZTJkNC4uZjhlNjBiZTYzMWNhNSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93aWw2MjEwLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC93aWw2MjEwLmhcXG5AQCAtMTMwMSw3ICsxMzAxLDcgQEAgaW50IHdpbF9wMnBfc2VhcmNoKHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmLFxcbiBcXHRcXHQgICBzdHJ1Y3QgY2ZnODAyMTFfc2Nhbl9yZXF1ZXN0ICpyZXF1ZXN0KTtcXG4gaW50IHdpbF9wMnBfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0ICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXFxuLVxcdFxcdCAgIHU2NCAqY29va2llKTtcXG4rXFx0XFx0ICAgdTY0IGNvb2tpZSk7XFxuIHU4IHdpbF9wMnBfc3RvcF9kaXNjb3Zlcnkoc3RydWN0IHdpbDYyMTBfdmlmICp2aWYpO1xcbiBpbnQgd2lsX3AycF9jYW5jZWxfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmLCB1NjQgY29va2llKTtcXG4gdm9pZCB3aWxfcDJwX2xpc3Rlbl9leHBpcmVkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yayk7XFxuQEAgLTEzMTcsNyArMTMxNyw3IEBAIGludCB3bWlfc3RvcF9kaXNjb3Zlcnkoc3RydWN0IHdpbDYyMTBfdmlmICp2aWYpO1xcbiBcXG4gaW50IHdpbF9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdCBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcyxcXG4tXFx0XFx0XFx0IHU2NCAqY29va2llKTtcXG4rXFx0XFx0XFx0IHU2NCBjb29raWUpO1xcbiB2b2lkIHdpbF9jZmc4MDIxMV9hcF9yZWNvdmVyeShzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwpO1xcbiBpbnQgd2lsX2NmZzgwMjExX2lmYWNlX2NvbWJpbmF0aW9uc19mcm9tX2Z3KFxcbiBcXHRzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcXG5pbmRleCA2YjJjMzRlM2E3OTZjLi44NzJjNDg4MDZkMDkxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcXG5AQCAtNTU1NCw3ICs1NTU0LDcgQEAgYnJjbWZfY2ZnODAyMTFfdXBkYXRlX21nbXRfZnJhbWVfcmVnaXN0cmF0aW9ucyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXG4gaW50XFxuIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tXFx0XFx0ICAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcXG4rXFx0XFx0ICAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxcbiB7XFxuIFxcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcgPSB3aXBoeV90b19jZmcod2lwaHkpO1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4gPSBwYXJhbXMtXFx1MDAzZWNoYW47XFxuQEAgLTU1NzMsOCArNTU3Myw2IEBAIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFxuIFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcIkVudGVyXFxcXG5cXFwiKTtcXG4gXFxuLVxcdCpjb29raWUgPSAwO1xcbi1cXG4gXFx0bWdtdCA9IChjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilidWY7XFxuIFxcbiBcXHRpZiAoIWllZWU4MDIxMV9pc19tZ210KG1nbXQtXFx1MDAzZWZyYW1lX2NvbnRyb2wpKSB7XFxuQEAgLTU2MDUsNyArNTYwMyw3IEBAIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0XFx0XFx0XFx0ICAgIEJSQ01GX1ZORFJfSUVfUFJCUlNQX0ZMQUcsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2YnVmW2llX29mZnNldF0sXFxuIFxcdFxcdFxcdFxcdFxcdCAgICBpZV9sZW4pO1xcbi1cXHRcXHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCAqY29va2llLCBidWYsIGxlbiwgdHJ1ZSxcXG4rXFx0XFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgdHJ1ZSxcXG4gXFx0XFx0XFx0XFx0XFx0R0ZQX0tFUk5FTCk7XFxuIFxcdH0gZWxzZSBpZiAoaWVlZTgwMjExX2lzX2FjdGlvbihtZ210LVxcdTAwM2VmcmFtZV9jb250cm9sKSkge1xcbiBcXHRcXHRpZiAobGVuIFxcdTAwM2UgQlJDTUZfRklMX0FDVElPTl9GUkFNRV9TSVpFICsgRE9UMTFfTUdNVF9IRFJfTEVOKSB7XFxuQEAgLTU2MjEsNyArNTYxOSw3IEBAIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0fVxcbiBcXHRcXHRhY3Rpb25fZnJhbWUgPSBcXHUwMDI2YWZfcGFyYW1zLVxcdTAwM2VhY3Rpb25fZnJhbWU7XFxuIFxcdFxcdC8qIEFkZCB0aGUgcGFja2V0IElkICovXFxuLVxcdFxcdGFjdGlvbl9mcmFtZS1cXHUwMDNlcGFja2V0X2lkID0gY3B1X3RvX2xlMzIoKmNvb2tpZSk7XFxuK1xcdFxcdGFjdGlvbl9mcmFtZS1cXHUwMDNlcGFja2V0X2lkID0gY3B1X3RvX2xlMzIoY29va2llKTtcXG4gXFx0XFx0LyogQWRkIEJTU0lEICovXFxuIFxcdFxcdG1lbWNweShcXHUwMDI2YWN0aW9uX2ZyYW1lLVxcdTAwM2VkYVswXSwgXFx1MDAyNm1nbXQtXFx1MDAzZWRhWzBdLCBFVEhfQUxFTik7XFxuIFxcdFxcdG1lbWNweShcXHUwMDI2YWZfcGFyYW1zLVxcdTAwM2Vic3NpZFswXSwgXFx1MDAyNm1nbXQtXFx1MDAzZWJzc2lkWzBdLCBFVEhfQUxFTik7XFxuQEAgLTU2NDksMTIgKzU2NDcsMTIgQEAgYnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRcXHQgICAgICAgbGUxNl90b19jcHUoYWN0aW9uX2ZyYW1lLVxcdTAwM2VsZW4pKTtcXG4gXFxuIFxcdFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcIkFjdGlvbiBmcmFtZSwgY29va2llPSVsbGQsIGxlbj0lZCwgY2hhbm5lbD0lZFxcXFxuXFxcIixcXG4tXFx0XFx0XFx0ICAqY29va2llLCBsZTE2X3RvX2NwdShhY3Rpb25fZnJhbWUtXFx1MDAzZWxlbiksXFxuK1xcdFxcdFxcdCAgY29va2llLCBsZTE2X3RvX2NwdShhY3Rpb25fZnJhbWUtXFx1MDAzZWxlbiksXFxuIFxcdFxcdFxcdCAgbGUzMl90b19jcHUoYWZfcGFyYW1zLVxcdTAwM2VjaGFubmVsKSk7XFxuIFxcbiBcXHRcXHRhY2sgPSBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUodmlmLVxcdTAwM2VpZnAsIGFmX3BhcmFtcyk7XFxuIFxcbi1cXHRcXHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCAqY29va2llLCBidWYsIGxlbiwgYWNrLFxcbitcXHRcXHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBjb29raWUsIGJ1ZiwgbGVuLCBhY2ssXFxuIFxcdFxcdFxcdFxcdFxcdEdGUF9LRVJORUwpO1xcbiBmcmVlOlxcbiBcXHRcXHRrZnJlZShhZl9wYXJhbXMpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oXFxuaW5kZXggNmNlYjMwMTQyOTA1NC4uNjNlNTM0NTIzZjUxOCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oXFxuQEAgLTQ5Nyw2ICs0OTcsNiBAQCB2b2lkIGJyY21mX2NmZzgwMjExX2ZyZWVfdmlmKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KTtcXG4gXFxuIGludCBicmNtZl9zZXRfd3NlYyhzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwgY29uc3QgdTggKmtleSwgdTE2IGtleV9sZW4sIHUxNiBmbGFncyk7XFxuIGludCBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLVxcdFxcdFxcdCAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSk7XFxuK1xcdFxcdFxcdCAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKTtcXG4gXFxuICNlbmRpZiAvKiBCUkNNRk1BQ19DRkc4MDIxMV9IICovXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcXG5pbmRleCA4NzM3NTRiZTUxNzRiLi41NDVlYjlhYWU5NjYwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcXG5AQCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyBpbnQgYnJjbWZfY3l3X2FjdGl2YXRlX2V2ZW50cyhzdHJ1Y3QgYnJjbWZfaWYgKmlmcClcXG4gXFxuIHN0YXRpY1xcbiBpbnQgYnJjbWZfY3l3X21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tXFx0XFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxcbitcXHRcXHQgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnID0gd2lwaHlfdG9fY2ZnKHdpcGh5KTtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuID0gcGFyYW1zLVxcdTAwM2VjaGFuO1xcbkBAIC0xMjMsNyArMTIzLDYgQEAgaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdGlmICghaWVlZTgwMjExX2lzX2F1dGgobWdtdC1cXHUwMDNlZnJhbWVfY29udHJvbCkpXFxuIFxcdFxcdHJldHVybiBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHdpcGh5LCB3ZGV2LCBwYXJhbXMsIGNvb2tpZSk7XFxuIFxcbi1cXHQqY29va2llID0gMDtcXG4gXFx0dmlmID0gY29udGFpbmVyX29mKHdkZXYsIHN0cnVjdCBicmNtZl9jZmc4MDIxMV92aWYsIHdkZXYpO1xcbiBcXG4gXFx0cmVpbml0X2NvbXBsZXRpb24oXFx1MDAyNnZpZi1cXHUwMDNlbWdtdF90eCk7XFxuQEAgLTE1NSw3ICsxNTQsNyBAQCBpbnQgYnJjbWZfY3l3X21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFxuIFxcdG1lbWNweShcXHUwMDI2bWZfcGFyYW1zLVxcdTAwM2VkYVswXSwgXFx1MDAyNm1nbXQtXFx1MDAzZWRhWzBdLCBFVEhfQUxFTik7XFxuIFxcdG1lbWNweShcXHUwMDI2bWZfcGFyYW1zLVxcdTAwM2Vic3NpZFswXSwgXFx1MDAyNm1nbXQtXFx1MDAzZWJzc2lkWzBdLCBFVEhfQUxFTik7XFxuLVxcdG1mX3BhcmFtcy1cXHUwMDNlcGFja2V0X2lkID0gY3B1X3RvX2xlMzIoKmNvb2tpZSk7XFxuK1xcdG1mX3BhcmFtcy1cXHUwMDNlcGFja2V0X2lkID0gY3B1X3RvX2xlMzIoY29va2llKTtcXG4gXFx0bWVtY3B5KG1mX3BhcmFtcy1cXHUwMDNlZGF0YSwgXFx1MDAyNmJ1ZltET1QxMV9NR01UX0hEUl9MRU5dLFxcbiBcXHQgICAgICAgbGUxNl90b19jcHUobWZfcGFyYW1zLVxcdTAwM2VsZW4pKTtcXG4gXFxuQEAgLTE4Nyw4ICsxODYsNyBAQCBpbnQgYnJjbWZfY3l3X21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0fVxcbiBcXG4gdHhfc3RhdHVzOlxcbi1cXHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCAqY29va2llLCBidWYsIGxlbiwgYWNrLFxcbi1cXHRcXHRcXHRcXHRHRlBfS0VSTkVMKTtcXG4rXFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgYWNrLCBHRlBfS0VSTkVMKTtcXG4gZnJlZTpcXG4gXFx0a2ZyZWUobWZfcGFyYW1zKTtcXG4gXFx0cmV0dXJuIGVycjtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXFxuaW5kZXggYzdkN2IzNWFiMTI1My4uMzJhMDE1ZDZiNzY5OCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmNcXG5AQCAtOTc5LDEwICs5NzksOCBAQCBicmNtZl9wMnBfZGlzY292ZXJfbGlzdGVuKHN0cnVjdCBicmNtZl9wMnBfaW5mbyAqcDJwLCB1MTYgY2hhbm5lbCwgdTMyIGR1cmF0aW9uKVxcbiBcXHRwMnAtXFx1MDAzZWNmZy1cXHUwMDNlZDExaW5mLmVuY2Noc3BlYyhcXHUwMDI2Y2gpO1xcbiBcXHRlcnIgPSBicmNtZl9wMnBfc2V0X2Rpc2NvdmVyX3N0YXRlKHZpZi1cXHUwMDNlaWZwLCBXTF9QMlBfRElTQ19TVF9MSVNURU4sXFxuIFxcdFxcdFxcdFxcdFxcdCAgIGNoLmNoc3BlYywgKHUxNilkdXJhdGlvbik7XFxuLVxcdGlmICghZXJyKSB7XFxuK1xcdGlmICghZXJyKVxcbiBcXHRcXHRzZXRfYml0KEJSQ01GX1AyUF9TVEFUVVNfRElTQ09WRVJfTElTVEVOLCBcXHUwMDI2cDJwLVxcdTAwM2VzdGF0dXMpO1xcbi1cXHRcXHRwMnAtXFx1MDAzZXJlbWFpbl9vbl9jaGFubmVsX2Nvb2tpZSsrO1xcbi1cXHR9XFxuIGV4aXQ6XFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG5AQCAtMTAwMCw3ICs5OTgsNyBAQCBicmNtZl9wMnBfZGlzY292ZXJfbGlzdGVuKHN0cnVjdCBicmNtZl9wMnBfaW5mbyAqcDJwLCB1MTYgY2hhbm5lbCwgdTMyIGR1cmF0aW9uKVxcbiAgKi9cXG4gaW50IGJyY21mX3AycF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW5uZWwsXFxuLVxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXFxuK1xcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSxcXG4gXFx0XFx0XFx0XFx0Y29uc3QgdTggKnJ4X2FkZHIpXFxuIHtcXG4gXFx0c3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyA9IHdpcGh5X3RvX2NmZyh3aXBoeSk7XFxuQEAgLTEwMjAsOCArMTAxOCw4IEBAIGludCBicmNtZl9wMnBfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0Z290byBleGl0O1xcbiBcXG4gXFx0bWVtY3B5KFxcdTAwMjZwMnAtXFx1MDAzZXJlbWFpbl9vbl9jaGFubmVsLCBjaGFubmVsLCBzaXplb2YoKmNoYW5uZWwpKTtcXG4tXFx0KmNvb2tpZSA9IHAycC1cXHUwMDNlcmVtYWluX29uX2NoYW5uZWxfY29va2llO1xcbi1cXHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW5uZWwsIGR1cmF0aW9uLCBHRlBfS0VSTkVMKTtcXG4rXFx0cDJwLVxcdTAwM2VyZW1haW5fb25fY2hhbm5lbF9jb29raWUgPSBjb29raWU7XFxuK1xcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFubmVsLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7XFxuIFxcbiBleGl0OlxcbiBcXHRyZXR1cm4gZXJyO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmhcXG5pbmRleCA5ZjNmMDFhZGUyYjc3Li43MDc4MDA5NDkxNzA3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaFxcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaFxcbkBAIC0xNTcsNyArMTU3LDcgQEAgaW50IGJyY21mX3AycF9zY2FuX3ByZXAoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0XFx0XFx0c3RydWN0IGJyY21mX2NmZzgwMjExX3ZpZiAqdmlmKTtcXG4gaW50IGJyY21mX3AycF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW5uZWwsXFxuLVxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXFxuK1xcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSxcXG4gXFx0XFx0XFx0XFx0Y29uc3QgdTggKnJ4X2FkZHIpO1xcbiBpbnQgYnJjbWZfcDJwX25vdGlmeV9saXN0ZW5fY29tcGxldGUoc3RydWN0IGJyY21mX2lmICppZnAsXFxuIFxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IGJyY21mX2V2ZW50X21zZyAqZSxcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY1xcbmluZGV4IDhlYzJkMjJhOGMzM2EuLjdhMWJhMzJmMWZiMzYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY1xcbkBAIC0xOTYsNyArMTk2LDcgQEAgbXdpZmlleF9mb3JtX21nbXRfZnJhbWUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbilcXG4gICovXFxuIHN0YXRpYyBpbnRcXG4gbXdpZmlleF9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLVxcdFxcdFxcdCBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXFxuK1xcdFxcdFxcdCBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcXG4ge1xcbiBcXHRjb25zdCB1OCAqYnVmID0gcGFyYW1zLVxcdTAwM2VidWY7XFxuIFxcdHNpemVfdCBsZW4gPSBwYXJhbXMtXFx1MDAzZWxlbjtcXG5AQCAtMjU5LDE0ICsyNTksMTMgQEAgbXdpZmlleF9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdHR4X2luZm8tXFx1MDAzZXBrdF9sZW4gPSBwa3RfbGVuO1xcbiBcXG4gXFx0bXdpZmlleF9mb3JtX21nbXRfZnJhbWUoc2tiLCBidWYsIGxlbik7XFxuLVxcdCpjb29raWUgPSBnZXRfcmFuZG9tX3UzMigpIHwgMTtcXG4gXFxuIFxcdGlmIChpZWVlODAyMTFfaXNfYWN0aW9uKG1nbXQtXFx1MDAzZWZyYW1lX2NvbnRyb2wpKVxcbiBcXHRcXHRza2IgPSBtd2lmaWV4X2Nsb25lX3NrYl9mb3JfdHhfc3RhdHVzKHByaXYsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIHNrYixcXG4tXFx0XFx0XFx0XFx0TVdJRklFWF9CVUZfRkxBR19BQ1RJT05fVFhfU1RBVFVTLCBjb29raWUpO1xcbitcXHRcXHRcXHRcXHRNV0lGSUVYX0JVRl9GTEFHX0FDVElPTl9UWF9TVEFUVVMsIFxcdTAwMjZjb29raWUpO1xcbiBcXHRlbHNlXFxuLVxcdFxcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsICpjb29raWUsIGJ1ZiwgbGVuLCB0cnVlLFxcbitcXHRcXHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBjb29raWUsIGJ1ZiwgbGVuLCB0cnVlLFxcbiBcXHRcXHRcXHRcXHRcXHRHRlBfQVRPTUlDKTtcXG4gXFxuIFxcdG13aWZpZXhfcXVldWVfdHhfcGt0KHByaXYsIHNrYik7XFxuQEAgLTMwNCwxMyArMzAzLDEzIEBAIHN0YXRpYyBpbnRcXG4gbXdpZmlleF9jZmc4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXFxuLVxcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXFxuK1xcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSxcXG4gXFx0XFx0XFx0XFx0ICAgY29uc3QgdTggKnJ4X2FkZHIpXFxuIHtcXG4gXFx0c3RydWN0IG13aWZpZXhfcHJpdmF0ZSAqcHJpdiA9IG13aWZpZXhfbmV0ZGV2X2dldF9wcml2KHdkZXYtXFx1MDAzZW5ldGRldik7XFxuIFxcdGludCByZXQ7XFxuIFxcbi1cXHRpZiAoIWNoYW4gfHwgIWNvb2tpZSkge1xcbitcXHRpZiAoIWNoYW4pIHtcXG4gXFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgRVJST1IsIFxcXCJJbnZhbGlkIHBhcmFtZXRlciBmb3IgUk9DXFxcXG5cXFwiKTtcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdH1cXG5AQCAtMzI2LDE1ICszMjUsMTQgQEAgbXdpZmlleF9jZmc4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXHRcXHRcXHRcXHRcXHQgZHVyYXRpb24pO1xcbiBcXG4gXFx0aWYgKCFyZXQpIHtcXG4tXFx0XFx0KmNvb2tpZSA9IGdldF9yYW5kb21fdTMyKCkgfCAxO1xcbi1cXHRcXHRwcml2LVxcdTAwM2Vyb2NfY2ZnLmNvb2tpZSA9ICpjb29raWU7XFxuK1xcdFxcdHByaXYtXFx1MDAzZXJvY19jZmcuY29va2llID0gY29va2llO1xcbiBcXHRcXHRwcml2LVxcdTAwM2Vyb2NfY2ZnLmNoYW4gPSAqY2hhbjtcXG4gXFxuLVxcdFxcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgKmNvb2tpZSwgY2hhbixcXG4rXFx0XFx0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCBjb29raWUsIGNoYW4sXFxuIFxcdFxcdFxcdFxcdFxcdCAgZHVyYXRpb24sIEdGUF9BVE9NSUMpO1xcbiBcXG4gXFx0XFx0bXdpZmlleF9kYmcocHJpdi1cXHUwMDNlYWRhcHRlciwgSU5GTyxcXG4tXFx0XFx0XFx0ICAgIFxcXCJpbmZvOiBST0MsIGNvb2tpZSA9IDB4JWxseFxcXFxuXFxcIiwgKmNvb2tpZSk7XFxuK1xcdFxcdFxcdCAgICBcXFwiaW5mbzogUk9DLCBjb29raWUgPSAweCVsbHhcXFxcblxcXCIsIGNvb2tpZSk7XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuQEAgLTQ1NjAsNyArNDU1OCw3IEBAIG13aWZpZXhfY2ZnODAyMTFfZGlzYXNzb2NpYXRlKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIHN0YXRpYyBpbnRcXG4gbXdpZmlleF9jZmc4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdFxcdFxcdCAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqcGVlcixcXG4tXFx0XFx0XFx0ICAgIHU2NCAqY29va2llKVxcbitcXHRcXHRcXHQgICAgdTY0IGNvb2tpZSlcXG4ge1xcbiBcXHQvKiBob3N0YXBkIGxvb2tzIGZvciBOTDgwMjExX0NNRF9QUk9CRV9DTElFTlQgc3VwcG9ydDsgb3RoZXJ3aXNlLFxcbiBcXHQgKiBpdCByZXF1aXJlcyBtb25pdG9yLW1vZGUgc3VwcG9ydCAod2hpY2ggbXdpZmlleCBkb2Vzbid0IHN1cHBvcnQpLlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9jZmc4MDIxMS5jXFxuaW5kZXggNjY1NGZjZTRkZWQ4NC4uYmIyNzQ4YTE5MzI5NCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9jZmc4MDIxMS5jXFxuQEAgLTExMDAsMjQgKzExMDAsMTkgQEAgc3RhdGljIHZvaWQgd2lsY193ZmlfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChzdHJ1Y3Qgd2lsY192aWYgKnZpZiwgdTY0IGNvb2tpZSlcXG4gc3RhdGljIGludCByZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXHRcXHRcXHQgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdCAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxcbi1cXHRcXHRcXHQgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXFxuK1xcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLFxcbiBcXHRcXHRcXHQgICAgIGNvbnN0IHU4ICpyeF9hZGRyKVxcbiB7XFxuIFxcdGludCByZXQgPSAwO1xcbiBcXHRzdHJ1Y3Qgd2lsY192aWYgKnZpZiA9IG5ldGRldl9wcml2KHdkZXYtXFx1MDAzZW5ldGRldik7XFxuIFxcdHN0cnVjdCB3aWxjX3ByaXYgKnByaXYgPSBcXHUwMDI2dmlmLVxcdTAwM2Vwcml2O1xcbi1cXHR1NjQgaWQ7XFxuIFxcbiBcXHRpZiAod2Rldi1cXHUwMDNlaWZ0eXBlID09IE5MODAyMTFfSUZUWVBFX0FQKSB7XFxuIFxcdFxcdG5ldGRldl9kYmcodmlmLVxcdTAwM2VuZGV2LCBcXFwiUmVxdWlyZWQgd2hpbGUgaW4gQVAgbW9kZVxcXFxuXFxcIik7XFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcdH1cXG4gXFxuLVxcdGlkID0gKytwcml2LVxcdTAwM2VpbmNfcm9jX2Nvb2tpZTtcXG4tXFx0aWYgKGlkID09IDApXFxuLVxcdFxcdGlkID0gKytwcml2LVxcdTAwM2VpbmNfcm9jX2Nvb2tpZTtcXG4tXFxuLVxcdHJldCA9IHdpbGNfcmVtYWluX29uX2NoYW5uZWwodmlmLCBpZCwgY2hhbi1cXHUwMDNlaHdfdmFsdWUsXFxuK1xcdHJldCA9IHdpbGNfcmVtYWluX29uX2NoYW5uZWwodmlmLCBjb29raWUsIGNoYW4tXFx1MDAzZWh3X3ZhbHVlLFxcbiBcXHRcXHRcXHRcXHQgICAgIHdpbGNfd2ZpX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQpO1xcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbkBAIC0xMTI1LDEyICsxMTIwLDExIEBAIHN0YXRpYyBpbnQgcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0dmlmLVxcdTAwM2V3aWxjLVxcdTAwM2VvcF9jaCA9IGNoYW4tXFx1MDAzZWh3X3ZhbHVlO1xcbiBcXG4gXFx0cHJpdi1cXHUwMDNlcmVtYWluX29uX2NoX3BhcmFtcy5saXN0ZW5fY2ggPSBjaGFuO1xcbi1cXHRwcml2LVxcdTAwM2VyZW1haW5fb25fY2hfcGFyYW1zLmxpc3Rlbl9jb29raWUgPSBpZDtcXG4tXFx0KmNvb2tpZSA9IGlkO1xcbitcXHRwcml2LVxcdTAwM2VyZW1haW5fb25fY2hfcGFyYW1zLmxpc3Rlbl9jb29raWUgPSBjb29raWU7XFxuIFxcdHByaXYtXFx1MDAzZXAycF9saXN0ZW5fc3RhdGUgPSB0cnVlO1xcbiBcXHRwcml2LVxcdTAwM2VyZW1haW5fb25fY2hfcGFyYW1zLmxpc3Rlbl9kdXJhdGlvbiA9IGR1cmF0aW9uO1xcbiBcXG4tXFx0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCAqY29va2llLCBjaGFuLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7XFxuK1xcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7XFxuIFxcdG1vZF90aW1lcihcXHUwMDI2dmlmLVxcdTAwM2VoaWZfZHJ2LVxcdTAwM2VyZW1haW5fb25fY2hfdGltZXIsXFxuIFxcdFxcdCAgamlmZmllcyArIG1zZWNzX3RvX2ppZmZpZXMoZHVyYXRpb24gKyAxMDAwKSk7XFxuIFxcbkBAIC0xMTUzLDcgKzExNDcsNyBAQCBzdGF0aWMgaW50IGNhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBzdGF0aWMgaW50IG1nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0XFx0ICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0ICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXFxuLVxcdFxcdCAgIHU2NCAqY29va2llKVxcbitcXHRcXHQgICB1NjQgY29va2llKVxcbiB7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiA9IHBhcmFtcy1cXHUwMDNlY2hhbjtcXG4gXFx0dW5zaWduZWQgaW50IHdhaXQgPSBwYXJhbXMtXFx1MDAzZXdhaXQ7XFxuQEAgLTExNzAsOCArMTE2NCw3IEBAIHN0YXRpYyBpbnQgbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXHRjb25zdCB1OCAqdmVuZG9yX2llO1xcbiBcXHRpbnQgcmV0ID0gMDtcXG4gXFxuLVxcdCpjb29raWUgPSBnZXRfcmFuZG9tX3UzMigpO1xcbi1cXHRwcml2LVxcdTAwM2V0eF9jb29raWUgPSAqY29va2llO1xcbitcXHRwcml2LVxcdTAwM2V0eF9jb29raWUgPSBjb29raWU7XFxuIFxcdG1nbXQgPSAoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICopYnVmO1xcbiBcXG4gXFx0aWYgKCFpZWVlODAyMTFfaXNfbWdtdChtZ210LVxcdTAwM2VmcmFtZV9jb250cm9sKSlcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmNcXG5pbmRleCA0ZjllMjBmNzI4MTE0Li5jODIwZjA4ZDI4MzU1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXFxuQEAgLTE1MCw3ICsxNTAsNyBAQCBueHB3aWZpX2Zvcm1fbWdtdF9mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKVxcbiAvKiBjZmc4MDIxMSBvcGVyYXRpb24gaGFuZGxlciB0byB0cmFuc21pdCBhIG1hbmFnZW1lbnQgZnJhbWUuICovXFxuIHN0YXRpYyBpbnRcXG4gbnhwd2lmaV9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLVxcdFxcdFxcdCBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXFxuK1xcdFxcdFxcdCBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcXG4ge1xcbiBcXHRjb25zdCB1OCAqYnVmID0gcGFyYW1zLVxcdTAwM2VidWY7XFxuIFxcdHNpemVfdCBsZW4gPSBwYXJhbXMtXFx1MDAzZWxlbjtcXG5AQCAtMjEyLDE0ICsyMTIsMTMgQEAgbnhwd2lmaV9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdHR4X2luZm8tXFx1MDAzZXBrdF9sZW4gPSBwa3RfbGVuO1xcbiBcXG4gXFx0bnhwd2lmaV9mb3JtX21nbXRfZnJhbWUoc2tiLCBidWYsIGxlbik7XFxuLVxcdCpjb29raWUgPSBueHB3aWZpX3JvY19jb29raWUocHJpdi1cXHUwMDNlYWRhcHRlcik7XFxuIFxcbiBcXHRpZiAoaWVlZTgwMjExX2lzX2FjdGlvbihtZ210LVxcdTAwM2VmcmFtZV9jb250cm9sKSlcXG4gXFx0XFx0c2tiID0gbnhwd2lmaV9jbG9uZV9za2JfZm9yX3R4X3N0YXR1cyhwcml2LFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgICAgICBza2IsXFxuLVxcdFxcdFxcdFxcdE5YUFdJRklfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgY29va2llKTtcXG4rXFx0XFx0XFx0XFx0TlhQV0lGSV9CVUZfRkxBR19BQ1RJT05fVFhfU1RBVFVTLCBcXHUwMDI2Y29va2llKTtcXG4gXFx0ZWxzZVxcbi1cXHRcXHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCAqY29va2llLCBidWYsIGxlbiwgdHJ1ZSxcXG4rXFx0XFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgdHJ1ZSxcXG4gXFx0XFx0XFx0XFx0XFx0R0ZQX0FUT01JQyk7XFxuIFxcbiBcXHRueHB3aWZpX3F1ZXVlX3R4X3BrdChwcml2LCBza2IpO1xcbkBAIC0yNTQsMTQgKzI1MywxNCBAQCBzdGF0aWMgaW50XFxuIG54cHdpZmlfY2ZnODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0XFx0XFx0XFx0ICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0XFx0XFx0ICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxcbi1cXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLFxcbitcXHRcXHRcXHRcXHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXFxuIFxcdFxcdFxcdFxcdCAgIGNvbnN0IHU4ICpyeF9hZGRyKVxcbiB7XFxuIFxcdHN0cnVjdCBueHB3aWZpX3ByaXZhdGUgKnByaXYgPSBueHB3aWZpX25ldGRldl9nZXRfcHJpdih3ZGV2LVxcdTAwM2VuZXRkZXYpO1xcbiBcXHRzdHJ1Y3Qgbnhwd2lmaV9hZGFwdGVyICphZGFwdGVyID0gcHJpdi1cXHUwMDNlYWRhcHRlcjtcXG4gXFx0aW50IHJldDtcXG4gXFxuLVxcdGlmICghY2hhbiB8fCAhY29va2llKSB7XFxuK1xcdGlmICghY2hhbikge1xcbiBcXHRcXHRueHB3aWZpX2RiZyhhZGFwdGVyLCBFUlJPUiwgXFxcIkludmFsaWQgcGFyYW1ldGVyIGZvciBST0NcXFxcblxcXCIpO1xcbiBcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gXFx0fVxcbkBAIC0yNzcsMTUgKzI3NiwxNCBAQCBueHB3aWZpX2NmZzgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdFxcdFxcdFxcdFxcdCBkdXJhdGlvbik7XFxuIFxcbiBcXHRpZiAoIXJldCkge1xcbi1cXHRcXHQqY29va2llID0gbnhwd2lmaV9yb2NfY29va2llKGFkYXB0ZXIpO1xcbi1cXHRcXHRwcml2LVxcdTAwM2Vyb2NfY2ZnLmNvb2tpZSA9ICpjb29raWU7XFxuK1xcdFxcdHByaXYtXFx1MDAzZXJvY19jZmcuY29va2llID0gY29va2llO1xcbiBcXHRcXHRwcml2LVxcdTAwM2Vyb2NfY2ZnLmNoYW4gPSAqY2hhbjtcXG4gXFxuLVxcdFxcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgKmNvb2tpZSwgY2hhbixcXG4rXFx0XFx0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCBjb29raWUsIGNoYW4sXFxuIFxcdFxcdFxcdFxcdFxcdCAgZHVyYXRpb24sIEdGUF9BVE9NSUMpO1xcbiBcXG4gXFx0XFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgSU5GTyxcXG4tXFx0XFx0XFx0ICAgIFxcXCJpbmZvOiBST0MsIGNvb2tpZSA9IDB4JWxseFxcXFxuXFxcIiwgKmNvb2tpZSk7XFxuK1xcdFxcdFxcdCAgICBcXFwiaW5mbzogUk9DLCBjb29raWUgPSAweCVsbHhcXFxcblxcXCIsIGNvb2tpZSk7XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuQEAgLTM2MTgsNyArMzYxNiw3IEBAIG54cHdpZmlfY2ZnODAyMTFfZGlzYXNzb2NpYXRlKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIHN0YXRpYyBpbnRcXG4gbnhwd2lmaV9jZmc4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICpwZWVyLFxcbi1cXHRcXHRcXHQgICAgICB1NjQgKmNvb2tpZSlcXG4rXFx0XFx0XFx0ICAgICAgdTY0IGNvb2tpZSlcXG4ge1xcbiBcXHQvKlxcbiBcXHQgKiBob3N0YXBkIGxvb2tzIGZvciBOTDgwMjExX0NNRF9QUk9CRV9DTElFTlQgc3VwcG9ydDsgb3RoZXJ3aXNlLFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY2ZnODAyMTEuY1xcbmluZGV4IDllNDRjODVkMjA1MWMuLjQ1ZTJiN2FlOTYzMzMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY2ZnODAyMTEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2NmZzgwMjExLmNcXG5AQCAtNDQ2LDcgKzQ0Niw3IEBAIHF0bmZfdXBkYXRlX21nbXRfZnJhbWVfcmVnaXN0cmF0aW9ucyhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXG4gc3RhdGljIGludFxcbiBxdG5mX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tXFx0ICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXFxuK1xcdCAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXFxuIHtcXG4gXFx0c3RydWN0IHF0bmZfdmlmICp2aWYgPSBxdG5mX25ldGRldl9nZXRfcHJpdih3ZGV2LVxcdTAwM2VuZXRkZXYpO1xcbiBcXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXRfZnJhbWUgPSAodm9pZCAqKXBhcmFtcy1cXHUwMDNlYnVmO1xcbkBAIC00NTQsOCArNDU0LDYgQEAgcXRuZl9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdHUxNiBmbGFncyA9IDA7XFxuIFxcdHUxNiBmcmVxO1xcbiBcXG4tXFx0KmNvb2tpZSA9IHNob3J0X2Nvb2tpZTtcXG4tXFxuIFxcdGlmIChwYXJhbXMtXFx1MDAzZW9mZmNoYW4pXFxuIFxcdFxcdGZsYWdzIHw9IFFMSU5LX0ZSQU1FX1RYX0ZMQUdfT0ZGQ0hBTjtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL2lvY3RsX2NmZzgwMjExLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9pb2N0bF9jZmc4MDIxMS5jXFxuaW5kZXggNmE5N2FmZDg5ZGM3OC4uYjU4ZGRhMTI5ZmY2NiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9pb2N0bF9jZmc4MDIxMS5jXFxuKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvaW9jdGxfY2ZnODAyMTEuY1xcbkBAIC0yNTMwLDcgKzI1MzAsNyBAQCBzdGF0aWMgaW50IF9jZmc4MDIxMV9ydHdfbWdtdF90eChzdHJ1Y3QgYWRhcHRlciAqcGFkYXB0ZXIsIHU4IHR4X2NoLCBjb25zdCB1OCAqYlxcbiBcXG4gc3RhdGljIGludCBjZmc4MDIxMV9ydHdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRcXHRcXHRcXHRzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcyxcXG4tXFx0XFx0XFx0XFx0dTY0ICpjb29raWUpXFxuK1xcdFxcdFxcdFxcdHU2NCBjb29raWUpXFxuIHtcXG4gXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSB3ZGV2X3RvX25kZXYod2Rldik7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbiA9IHBhcmFtcy1cXHUwMDNlY2hhbjtcXG5AQCAtMjU1MiwxMSArMjU1Miw4IEBAIHN0YXRpYyBpbnQgY2ZnODAyMTFfcnR3X21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFxuIFxcdHBhZGFwdGVyID0gcnR3X25ldGRldl9wcml2KG5kZXYpO1xcbiBcXG4tXFx0LyogY29va2llIGdlbmVyYXRpb24gKi9cXG4tXFx0KmNvb2tpZSA9ICh1bnNpZ25lZCBsb25nKWJ1ZjtcXG4tXFxuIFxcdC8qIGluZGljYXRlIGFjayBiZWZvcmUgaXNzdWUgZnJhbWUgdG8gYXZvaWQgcmFjaW5nIHdpdGggcnNwIGZyYW1lICovXFxuLVxcdHJ0d19jZmc4MDIxMV9tZ210X3R4X3N0YXR1cyhwYWRhcHRlciwgKmNvb2tpZSwgYnVmLCBsZW4sIGFjaywgR0ZQX0tFUk5FTCk7XFxuK1xcdHJ0d19jZmc4MDIxMV9tZ210X3R4X3N0YXR1cyhwYWRhcHRlciwgY29va2llLCBidWYsIGxlbiwgYWNrLCBHRlBfS0VSTkVMKTtcXG4gXFxuIFxcdGlmICghcnR3X2FjdGlvbl9mcmFtZV9wYXJzZShidWYsIGxlbiwgXFx1MDAyNmNhdGVnb3J5LCBcXHUwMDI2YWN0aW9uKSlcXG4gXFx0XFx0Z290byBleGl0O1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9jZmc4MDIxMS5oIGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxcbmluZGV4IGRjYmIwZTU1YzMyZWMuLjk3YzE2ZDRmZjEyNzEgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxcbisrKyBiL2luY2x1ZGUvbmV0L2NmZzgwMjExLmhcXG5AQCAtNTEwOCw3ICs1MTA4LDggQEAgc3RydWN0IG1nbXRfZnJhbWVfcmVncyB7XFxuICAqIEB0ZGxzX29wZXI6IFBlcmZvcm0gYSBoaWdoLWxldmVsIFRETFMgb3BlcmF0aW9uIChlLmcuIFRETFMgbGluayBzZXR1cCkuXFxuICAqXFxuICAqIEBwcm9iZV9wZWVyOiBwcm9iZSBhIGNvbm5lY3RlZCBwZWVyIChBUDogU1RBIE1BQyByZXF1aXJlZDsgU1RBOiBubyBNQUMpLFxcbi0gKlxcdG11c3QgcmV0dXJuIGEgY29va2llIHRoYXQgaXMgbGF0ZXIgcGFzc2VkIHRvIGNmZzgwMjExX3Byb2JlX3N0YXR1cygpLlxcbisgKlxcdG11c3QgdXNlIHRoZSBAY29va2llIGFzIHByb3ZpZGVkIHdoaWNoIGlzIGxhdGVyIHBhc3NlZCB0b1xcbisgKlxcdGNmZzgwMjExX3Byb2JlX3N0YXR1cygpLlxcbiAgKlxcbiAgKiBAc2V0X25vYWNrX21hcDogU2V0IHRoZSBOb0FjayBNYXAgZm9yIHRoZSBUSURzLlxcbiAgKlxcbkBAIC01MjE5LDcgKzUyMjAsOCBAQCBzdHJ1Y3QgbWdtdF9mcmFtZV9yZWdzIHtcXG4gICogICAgIHVzZXIgc3BhY2VcXG4gICpcXG4gICogQHR4X2NvbnRyb2xfcG9ydDogVFggYSBjb250cm9sIHBvcnQgZnJhbWUgKEVBUG9MKS4gIFRoZSBub2VuY3J5cHQgcGFyYW1ldGVyXFxuLSAqXFx0dGVsbHMgdGhlIGRyaXZlciB0aGF0IHRoZSBmcmFtZSBzaG91bGQgbm90IGJlIGVuY3J5cHRlZC5cXG4rICpcXHR0ZWxscyB0aGUgZHJpdmVyIHRoYXQgdGhlIGZyYW1lIHNob3VsZCBub3QgYmUgZW5jcnlwdGVkLiBBIEBjb29raWVcXG4rICpcXHR2YWx1ZSBvZiAwIG1lYW5zIHRoZSBjYWxsZXIgZG9lcyBub3Qgd2FudCBUWCBzdGF0dXMgcmVwb3J0aW5nLlxcbiAgKlxcbiAgKiBAZ2V0X2Z0bV9yZXNwb25kZXJfc3RhdHM6IFJldHJpZXZlIEZUTSByZXNwb25kZXIgc3RhdGlzdGljcywgaWYgYXZhaWxhYmxlLlxcbiAgKlxcdFN0YXRpc3RpY3Mgc2hvdWxkIGJlIGN1bXVsYXRpdmUsIGN1cnJlbnRseSBubyB3YXkgdG8gcmVzZXQgaXMgcHJvdmlkZWQuXFxuQEAgLTU0NTYsMTQgKzU0NTgsMTQgQEAgc3RydWN0IGNmZzgwMjExX29wcyB7XFxuIFxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXFxuIFxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLFxcbi1cXHRcXHRcXHRcXHQgICAgIHU2NCAqY29va2llLCBjb25zdCB1OCAqcnhfYWRkcik7XFxuK1xcdFxcdFxcdFxcdCAgICAgdTY0IGNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpO1xcbiBcXHRpbnRcXHQoKmNhbmNlbF9yZW1haW5fb25fY2hhbm5lbCkoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICB1NjQgY29va2llKTtcXG4gXFxuIFxcdGludFxcdCgqbWdtdF90eCkoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0XFx0ICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXFxuLVxcdFxcdFxcdCAgIHU2NCAqY29va2llKTtcXG4rXFx0XFx0XFx0ICAgdTY0IGNvb2tpZSk7XFxuIFxcdGludFxcdCgqbWdtdF90eF9jYW5jZWxfd2FpdCkoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4gXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgICB1NjQgY29va2llKTtcXG5AQCAtNTUxMCw3ICs1NTEyLDcgQEAgc3RydWN0IGNmZzgwMjExX29wcyB7XFxuIFxcdFxcdFxcdCAgICAgY29uc3QgdTggKnBlZXIsIGVudW0gbmw4MDIxMV90ZGxzX29wZXJhdGlvbiBvcGVyKTtcXG4gXFxuIFxcdGludFxcdCgqcHJvYmVfcGVlcikoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tXFx0XFx0XFx0ICAgICAgY29uc3QgdTggKnBlZXIsIHU2NCAqY29va2llKTtcXG4rXFx0XFx0XFx0ICAgICAgY29uc3QgdTggKnBlZXIsIHU2NCBjb29raWUpO1xcbiBcXG4gXFx0aW50XFx0KCpzZXRfbm9hY2tfbWFwKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXHRcXHRcXHRcXHQgIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuQEAgLTU2MDgsNyArNTYxMCw3IEBAIHN0cnVjdCBjZmc4MDIxMV9vcHMge1xcbiBcXHRcXHRcXHRcXHQgICBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLFxcbiBcXHRcXHRcXHRcXHQgICBjb25zdCB1OCAqZGVzdCwgY29uc3QgX19iZTE2IHByb3RvLFxcbiBcXHRcXHRcXHRcXHQgICBjb25zdCBib29sIG5vZW5jcnlwdCwgaW50IGxpbmtfaWQsXFxuLVxcdFxcdFxcdFxcdCAgIHU2NCAqY29va2llKTtcXG4rXFx0XFx0XFx0XFx0ICAgdTY0IGNvb2tpZSk7XFxuIFxcbiBcXHRpbnRcXHQoKmdldF9mdG1fcmVzcG9uZGVyX3N0YXRzKShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiBcXHRcXHRcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvY2ZnLmMgYi9uZXQvbWFjODAyMTEvY2ZnLmNcXG5pbmRleCAwYTkyNDdiZTI2YWZhLi4wYzJjN2FmZDU5YzRhIDEwMDY0NFxcbi0tLSBhL25ldC9tYWM4MDIxMS9jZmcuY1xcbisrKyBiL25ldC9tYWM4MDIxMS9jZmcuY1xcbkBAIC00ODMxLDE5ICs0ODMxLDYgQEAgaW50IGllZWU4MDIxMV9jaGFubmVsX3N3aXRjaChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRyZXR1cm4gX19pZWVlODAyMTFfY2hhbm5lbF9zd2l0Y2god2lwaHksIGRldiwgcGFyYW1zKTtcXG4gfVxcbiBcXG4tdTY0IGllZWU4MDIxMV9tZ210X3R4X2Nvb2tpZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcXG4te1xcbi1cXHRsb2NrZGVwX2Fzc2VydF93aXBoeShsb2NhbC1cXHUwMDNlaHcud2lwaHkpO1xcbi1cXG4tXFx0bG9jYWwtXFx1MDAzZXJvY19jb29raWVfY291bnRlcisrO1xcbi1cXG4tXFx0Lyogd293LCB5b3Ugd3JhcHBlZCA2NCBiaXRzIC4uLiBtb3JlIGxpa2VseSBhIGJ1ZyAqL1xcbi1cXHRpZiAoV0FSTl9PTihsb2NhbC1cXHUwMDNlcm9jX2Nvb2tpZV9jb3VudGVyID09IDApKVxcbi1cXHRcXHRsb2NhbC1cXHUwMDNlcm9jX2Nvb2tpZV9jb3VudGVyKys7XFxuLVxcbi1cXHRyZXR1cm4gbG9jYWwtXFx1MDAzZXJvY19jb29raWVfY291bnRlcjtcXG4tfVxcbi1cXG4gaW50IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0ICAgICB1NjQgKmNvb2tpZSwgZ2ZwX3QgZ2ZwKVxcbiB7XFxuQEAgLTQ4NjgsNyArNDg1NSw2IEBAIGludCBpZWVlODAyMTFfYXR0YWNoX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdElFRUU4MDIxMV9TS0JfQ0Ioc2tiKS1cXHUwMDNlc3RhdHVzX2RhdGFfaWRyID0gMTtcXG4gXFx0SUVFRTgwMjExX1NLQl9DQihza2IpLVxcdTAwM2VzdGF0dXNfZGF0YSA9IGlkO1xcbiBcXG4tXFx0KmNvb2tpZSA9IGllZWU4MDIxMV9tZ210X3R4X2Nvb2tpZShsb2NhbCk7XFxuIFxcdElFRUU4MDIxMV9TS0JfQ0IoYWNrX3NrYiktXFx1MDAzZWFjay5jb29raWUgPSAqY29va2llO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTQ5NTQsNyArNDk0MCw3IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF9yZWtleV9kYXRhKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIH1cXG4gXFxuIHN0YXRpYyBpbnQgaWVlZTgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tXFx0XFx0XFx0XFx0Y29uc3QgdTggKnBlZXIsIHU2NCAqY29va2llKVxcbitcXHRcXHRcXHRcXHRjb25zdCB1OCAqcGVlciwgdTY0IGNvb2tpZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXFx1MDAzZWxvY2FsO1xcbkBAIC01MDYxLDcgKzUwNDcsNyBAQCBzdGF0aWMgaW50IGllZWU4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdGlmIChxb3MpXFxuIFxcdFxcdG51bGxmdW5jLVxcdTAwM2Vxb3NfY3RybCA9IGNwdV90b19sZTE2KDcpO1xcbiBcXG4tXFx0cmV0ID0gaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKGxvY2FsLCBza2IsIGNvb2tpZSwgR0ZQX0FUT01JQyk7XFxuK1xcdHJldCA9IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihsb2NhbCwgc2tiLCBcXHUwMDI2Y29va2llLCBHRlBfQVRPTUlDKTtcXG4gXFx0aWYgKHJldCkge1xcbiBcXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmggYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxcbmluZGV4IGExZWY4OGZlODQ2ZGQuLjU3NjFlOTYyMTQ5MTQgMTAwNjQ0XFxuLS0tIGEvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmhcXG4rKysgYi9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxcbkBAIC0xNzEwLDggKzE3MTAsNiBAQCBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsIHtcXG4gXFx0c3RydWN0IGxpc3RfaGVhZCByb2NfbGlzdDtcXG4gXFx0c3RydWN0IHdpcGh5X3dvcmsgaHdfcm9jX3N0YXJ0LCBod19yb2NfZG9uZTtcXG4gXFx0dW5zaWduZWQgbG9uZyBod19yb2Nfc3RhcnRfdGltZTtcXG4tXFx0dTY0IHJvY19jb29raWVfY291bnRlcjtcXG4tXFxuIFxcdHN0cnVjdCBpZHIgYWNrX3N0YXR1c19mcmFtZXM7XFxuIFxcdHNwaW5sb2NrX3QgYWNrX3N0YXR1c19sb2NrO1xcbiBcXG5AQCAtMTk5MSw3ICsxOTg5LDYgQEAgdTY0IGllZWU4MDIxMV9yZXNldF9lcnBfaW5mbyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XFxuIFxcbiB2b2lkIGllZWU4MDIxMV9oYW5kbGVfcXVldWVkX2ZyYW1lcyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCk7XFxuIFxcbi11NjQgaWVlZTgwMjExX21nbXRfdHhfY29va2llKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKTtcXG4gaW50IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0ICAgICB1NjQgKmNvb2tpZSwgZ2ZwX3QgZ2ZwKTtcXG4gXFxuQEAgLTIxNTMsMTIgKzIxNTAsMTIgQEAgdm9pZCBpZWVlODAyMTFfcm9jX3B1cmdlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbiBcXHRcXHRcXHQgc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpO1xcbiBpbnQgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcXG4tXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcXG4rXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLFxcbiBcXHRcXHRcXHRcXHRjb25zdCB1OCAqcnhfYWRkcik7XFxuIGludCBpZWVlODAyMTFfY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LCB1NjQgY29va2llKTtcXG4gaW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLVxcdFxcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSk7XFxuK1xcdFxcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKTtcXG4gaW50IGllZWU4MDIxMV9tZ210X3R4X2NhbmNlbF93YWl0KHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuIFxcdFxcdFxcdFxcdCAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgdTY0IGNvb2tpZSk7XFxuIFxcbkBAIC0yMjM3LDcgKzIyMzQsNyBAQCB2b2lkIF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRcXHRcXHRcXHQgIHUzMiBpbmZvX2ZsYWdzLFxcbiBcXHRcXHRcXHRcXHQgIHUzMiBjdHJsX2ZsYWdzLFxcbi1cXHRcXHRcXHRcXHQgIHU2NCAqY29va2llKTtcXG4rXFx0XFx0XFx0XFx0ICB1NjQgY29va2llKTtcXG4gc3RydWN0IHNrX2J1ZmYgKlxcbiBpZWVlODAyMTFfYnVpbGRfZGF0YV90ZW1wbGF0ZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4gXFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIGluZm9fZmxhZ3MpO1xcbkBAIC0yMjUxLDcgKzIyNDgsNyBAQCB2b2lkIGllZWU4MDIxMV9jbGVhcl9mYXN0X3htaXQoc3RydWN0IHN0YV9pbmZvICpzdGEpO1xcbiBpbnQgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRcXHRcXHQgICAgICBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLFxcbiBcXHRcXHRcXHQgICAgICBjb25zdCB1OCAqZGVzdCwgX19iZTE2IHByb3RvLCBib29sIHVuZW5jcnlwdGVkLFxcbi1cXHRcXHRcXHQgICAgICBpbnQgbGlua19pZCwgdTY0ICpjb29raWUpO1xcbitcXHRcXHRcXHQgICAgICBpbnQgbGlua19pZCwgdTY0IGNvb2tpZSk7XFxuIGludCBpZWVlODAyMTFfcHJvYmVfbWVzaF9saW5rKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdCAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pO1xcbiB2b2lkIF9faWVlZTgwMjExX3htaXRfZmFzdChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL29mZmNoYW5uZWwuYyBiL25ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmNcXG5pbmRleCAyYmNlYjczNzE3YzY2Li43YWNlZjgwZDVmMWZiIDEwMDY0NFxcbi0tLSBhL25ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmNcXG4rKysgYi9uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jXFxuQEAgLTYwMiwxNCArNjAyLDEyIEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbiBcXG4gXFx0LypcXG4gXFx0ICogY29va2llIGlzIGVpdGhlciB0aGUgcm9jIGNvb2tpZSAoZm9yIG5vcm1hbCByb2MpXFxuLVxcdCAqIG9yIHRoZSBTS0IgKGZvciBtZ210IFRYKVxcbitcXHQgKiBvciB0aGUgbWdtdF90eCBjb29raWU7IGJvdGggYXJlIHByZS1hc3NpZ25lZCBieSBjZmc4MDIxMVxcbiBcXHQgKi9cXG4tXFx0aWYgKCF0eHNrYikge1xcbi1cXHRcXHRyb2MtXFx1MDAzZWNvb2tpZSA9IGllZWU4MDIxMV9tZ210X3R4X2Nvb2tpZShsb2NhbCk7XFxuLVxcdFxcdCpjb29raWUgPSByb2MtXFx1MDAzZWNvb2tpZTtcXG4tXFx0fSBlbHNlIHtcXG4rXFx0aWYgKCF0eHNrYilcXG4rXFx0XFx0cm9jLVxcdTAwM2Vjb29raWUgPSAqY29va2llO1xcbitcXHRlbHNlXFxuIFxcdFxcdHJvYy1cXHUwMDNlbWdtdF90eF9jb29raWUgPSAqY29va2llO1xcbi1cXHR9XFxuIFxcbiBcXHRyZXEgPSB3aXBoeV9kZXJlZmVyZW5jZShsb2NhbC1cXHUwMDNlaHcud2lwaHksIGxvY2FsLVxcdTAwM2VzY2FuX3JlcSk7XFxuIFxcbkBAIC03MDQsNyArNzAyLDcgQEAgc3RhdGljIGludCBpZWVlODAyMTFfc3RhcnRfcm9jX3dvcmsoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuIFxcbiBpbnQgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcXG4tXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcXG4rXFx0XFx0XFx0XFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLFxcbiBcXHRcXHRcXHRcXHRjb25zdCB1OCAqcnhfYWRkcilcXG4ge1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTtcXG5AQCAtNzEzLDcgKzcxMSw3IEBAIGludCBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkobG9jYWwtXFx1MDAzZWh3LndpcGh5KTtcXG4gXFxuIFxcdHJldHVybiBpZWVlODAyMTFfc3RhcnRfcm9jX3dvcmsobG9jYWwsIHNkYXRhLCBjaGFuLFxcbi1cXHRcXHRcXHRcXHRcXHRkdXJhdGlvbiwgY29va2llLCBOVUxMLFxcbitcXHRcXHRcXHRcXHRcXHRkdXJhdGlvbiwgXFx1MDAyNmNvb2tpZSwgTlVMTCxcXG4gXFx0XFx0XFx0XFx0XFx0SUVFRTgwMjExX1JPQ19UWVBFX05PUk1BTCk7XFxuIH1cXG4gXFxuQEAgLTgxMCw3ICs4MDgsNyBAQCBpbnQgaWVlZTgwMjExX2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbiB9XFxuIFxcbiBpbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4tXFx0XFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxcbitcXHRcXHQgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcXG4ge1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxuQEAgLTEwMTYsMTggKzEwMTQsMTEgQEAgaW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdC8qIG1ha2UgYSBjb3B5IHRvIHByZXNlcnZlIHRoZSBmcmFtZSBjb250ZW50c1xcbiBcXHRcXHQgKiBpbiBjYXNlIG9mIGVuY3J5cHRpb24uXFxuIFxcdFxcdCAqL1xcbi1cXHRcXHRyZXQgPSBpZWVlODAyMTFfYXR0YWNoX2Fja19za2IobG9jYWwsIHNrYiwgY29va2llLCBHRlBfS0VSTkVMKTtcXG4rXFx0XFx0cmV0ID0gaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKGxvY2FsLCBza2IsIFxcdTAwMjZjb29raWUsIEdGUF9LRVJORUwpO1xcbiBcXHRcXHRpZiAocmV0KSB7XFxuIFxcdFxcdFxcdGtmcmVlX3NrYihza2IpO1xcbiBcXHRcXHRcXHRnb3RvIG91dF91bmxvY2s7XFxuIFxcdFxcdH1cXG4tXFx0fSBlbHNlIHtcXG4tXFx0XFx0LyogQXNzaWduIGEgZHVtbXkgbm9uLXplcm8gY29va2llLCBpdCdzIG5vdCBzZW50IHRvXFxuLVxcdFxcdCAqIHVzZXJzcGFjZSBpbiB0aGlzIGNhc2UgYnV0IHdlIHJlbHkgb24gaXRzIHZhbHVlXFxuLVxcdFxcdCAqIGludGVybmFsbHkgaW4gdGhlIG5lZWRfb2ZmY2hhbiBjYXNlIHRvIGRpc3Rpbmd1aXNoXFxuLVxcdFxcdCAqIG1nbXQtdHggZnJvbSByZW1haW4tb24tY2hhbm5lbC5cXG4tXFx0XFx0ICovXFxuLVxcdFxcdCpjb29raWUgPSAweGZmZmZmZmZmO1xcbiBcXHR9XFxuIFxcbiBcXHRpZiAoIW5lZWRfb2ZmY2hhbikge1xcbkBAIC0xMDQ0LDcgKzEwMzUsNyBAQCBpbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFxuIFxcdC8qIFRoaXMgd2lsbCBoYW5kbGUgYWxsIGtpbmRzIG9mIGNvYWxlc2NpbmcgYW5kIGltbWVkaWF0ZSBUWCAqL1xcbiBcXHRyZXQgPSBpZWVlODAyMTFfc3RhcnRfcm9jX3dvcmsobG9jYWwsIHNkYXRhLCBwYXJhbXMtXFx1MDAzZWNoYW4sXFxuLVxcdFxcdFxcdFxcdCAgICAgICBwYXJhbXMtXFx1MDAzZXdhaXQsIGNvb2tpZSwgc2tiLFxcbitcXHRcXHRcXHRcXHQgICAgICAgcGFyYW1zLVxcdTAwM2V3YWl0LCBcXHUwMDI2Y29va2llLCBza2IsXFxuIFxcdFxcdFxcdFxcdCAgICAgICBJRUVFODAyMTFfUk9DX1RZUEVfTUdNVF9UWCk7XFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdGllZWU4MDIxMV9mcmVlX3R4c2tiKFxcdTAwMjZsb2NhbC1cXHUwMDNlaHcsIHNrYik7XFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS90ZGxzLmMgYi9uZXQvbWFjODAyMTEvdGRscy5jXFxuaW5kZXggZmZkNTc1YThkMTg4Zi4uZGMyZjY2MmZlNGM0NiAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTEvdGRscy5jXFxuKysrIGIvbmV0L21hYzgwMjExL3RkbHMuY1xcbkBAIC0xMTIxLDcgKzExMjEsNyBAQCBpZWVlODAyMTFfdGRsc19wcmVwX21nbXRfcGFja2V0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdC8qIGRpc2FibGUgYm90dG9tIGhhbHZlcyB3aGVuIGVudGVyaW5nIHRoZSBUeCBwYXRoICovXFxuIFxcdGxvY2FsX2JoX2Rpc2FibGUoKTtcXG4gXFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIGRldiwgZmxhZ3MsXFxuLVxcdFxcdFxcdFxcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLCBOVUxMKTtcXG4rXFx0XFx0XFx0XFx0ICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsIDApO1xcbiBcXHRsb2NhbF9iaF9lbmFibGUoKTtcXG4gXFxuIFxcdHJldHVybiByZXQ7XFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS90eC5jIGIvbmV0L21hYzgwMjExL3R4LmNcXG5pbmRleCAwY2Y1ZjZlYzc1ZTY3Li40NTRhODcyYjI1OWEzIDEwMDY0NFxcbi0tLSBhL25ldC9tYWM4MDIxMS90eC5jXFxuKysrIGIvbmV0L21hYzgwMjExL3R4LmNcXG5AQCAtMjU4Myw3ICsyNTgzLDcgQEAgaW50IGllZWU4MDIxMV9sb29rdXBfcmFfc3RhKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbiBzdGF0aWMgdTE2IGllZWU4MDIxMV9zdG9yZV9hY2tfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbiBcXHRcXHRcXHRcXHQgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXHRcXHRcXHRcXHQgICB1MzIgKmluZm9fZmxhZ3MsXFxuLVxcdFxcdFxcdFxcdCAgIHU2NCAqY29va2llKVxcbitcXHRcXHRcXHRcXHQgICB1NjQgY29va2llKVxcbiB7XFxuIFxcdHN0cnVjdCBza19idWZmICphY2tfc2tiO1xcbiBcXHR1MTYgaW5mb19pZCA9IDA7XFxuQEAgLTI2MDUsMTAgKzI2MDUsOCBAQCBzdGF0aWMgdTE2IGllZWU4MDIxMV9zdG9yZV9hY2tfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbiBcXHRcXHRpZiAoaWQgXFx1MDAzZT0gMCkge1xcbiBcXHRcXHRcXHRpbmZvX2lkID0gaWQ7XFxuIFxcdFxcdFxcdCppbmZvX2ZsYWdzIHw9IElFRUU4MDIxMV9UWF9DVExfUkVRX1RYX1NUQVRVUztcXG4tXFx0XFx0XFx0aWYgKGNvb2tpZSkge1xcbi1cXHRcXHRcXHRcXHQqY29va2llID0gaWVlZTgwMjExX21nbXRfdHhfY29va2llKGxvY2FsKTtcXG4tXFx0XFx0XFx0XFx0SUVFRTgwMjExX1NLQl9DQihhY2tfc2tiKS1cXHUwMDNlYWNrLmNvb2tpZSA9ICpjb29raWU7XFxuLVxcdFxcdFxcdH1cXG4rXFx0XFx0XFx0aWYgKGNvb2tpZSlcXG4rXFx0XFx0XFx0XFx0SUVFRTgwMjExX1NLQl9DQihhY2tfc2tiKS1cXHUwMDNlYWNrLmNvb2tpZSA9IGNvb2tpZTtcXG4gXFx0XFx0fSBlbHNlIHtcXG4gXFx0XFx0XFx0a2ZyZWVfc2tiKGFja19za2IpO1xcbiBcXHRcXHR9XFxuQEAgLTI2NTMsNyArMjY1MSw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9yZW1vdmVfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCwgdTE2IGluZm9faWQpXFxuIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX2J1aWxkX2hkcihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4gXFx0XFx0XFx0XFx0XFx0ICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIGluZm9fZmxhZ3MsXFxuIFxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1MzIgY3RybF9mbGFncyxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgdTY0ICpjb29raWUpXFxuK1xcdFxcdFxcdFxcdFxcdCAgIHU2NCBjb29raWUpXFxuIHtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbztcXG5AQCAtNDM3NCw3ICs0MzcyLDcgQEAgdm9pZCBfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdFxcdCAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0XFx0XFx0XFx0ICB1MzIgaW5mb19mbGFncyxcXG4gXFx0XFx0XFx0XFx0ICB1MzIgY3RybF9mbGFncyxcXG4tXFx0XFx0XFx0XFx0ICB1NjQgKmNvb2tpZSlcXG4rXFx0XFx0XFx0XFx0ICB1NjQgY29va2llKVxcbiB7XFxuIFxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cXHUwMDNlbG9jYWw7XFxuQEAgLTQ1NjksNyArNDU2Nyw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbG9fbXVsdGljYXN0X3R4X29uZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0Y3RybF9mbGFncyB8PSB1MzJfZW5jb2RlX2JpdHMobGlua19pZCwgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTkspO1xcbi1cXHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KG91dCwgc2RhdGEtXFx1MDAzZWRldiwgMCwgY3RybF9mbGFncywgTlVMTCk7XFxuK1xcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQob3V0LCBzZGF0YS1cXHUwMDNlZGV2LCAwLCBjdHJsX2ZsYWdzLCAwKTtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgaWVlZTgwMjExX21sb19tdWx0aWNhc3RfdHgoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5AQCAtNDU4NCw4ICs0NTgyLDcgQEAgc3RhdGljIHZvaWQgaWVlZTgwMjExX21sb19tdWx0aWNhc3RfdHgoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0XFx0Y3RybF9mbGFncyB8PSB1MzJfZW5jb2RlX2JpdHMoX19mZnMobGlua3MpLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOSyk7XFxuIFxcbi1cXHRcXHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgc2RhdGEtXFx1MDAzZWRldiwgMCwgY3RybF9mbGFncyxcXG4tXFx0XFx0XFx0XFx0XFx0ICAgICBOVUxMKTtcXG4rXFx0XFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIHNkYXRhLVxcdTAwM2VkZXYsIDAsIGN0cmxfZmxhZ3MsIDApO1xcbiBcXHRcXHRyZXR1cm47XFxuIFxcdH1cXG4gXFxuQEAgLTQ2MjcsNyArNDYyNCw3IEBAIG5ldGRldl90eF90IGllZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdHdoaWxlICgoc2tiID0gX19za2JfZGVxdWV1ZShcXHUwMDI2cXVldWUpKSlcXG4gXFx0XFx0XFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIGRldiwgMCxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgTlVMTCk7XFxuK1xcdFxcdFxcdFxcdFxcdFxcdCAgICAgMCk7XFxuIFxcdH0gZWxzZSBpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICgoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIFxcdTAwMjZcXHUwMDI2XFxuIFxcdFxcdCAgICAgIWllZWU4MDIxMV9od19jaGVjayhcXHUwMDI2c2RhdGEtXFx1MDAzZWxvY2FsLVxcdTAwM2VodywgTUxPX01DQVNUX01VTFRJX0xJTktfVFgpKSB8fFxcbkBAIC00NjM4LDcgKzQ2MzUsNyBAQCBuZXRkZXZfdHhfdCBpZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBub3JtYWw6XFxuIFxcdFxcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIDAsXFxuIFxcdFxcdFxcdFxcdFxcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLFxcbi1cXHRcXHRcXHRcXHRcXHQgICAgIE5VTEwpO1xcbitcXHRcXHRcXHRcXHRcXHQgICAgIDApO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXR1cm4gTkVUREVWX1RYX09LO1xcbkBAIC00NzM3LDcgKzQ3MzQsNyBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfODAyM194bWl0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbiBcXHRcXHRcXHQvKiBmYWxsIGJhY2sgdG8gbm9uLW9mZmxvYWQgc2xvdyBwYXRoICovXFxuIFxcdFxcdFxcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIDAsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLFxcbi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIE5VTEwpO1xcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgIDApO1xcbiBcXHRcXHRcXHRyZXR1cm47XFxuIFxcdFxcdH1cXG4gXFxuQEAgLTQ3NzMsNyArNDc3MCw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV84MDIzX3htaXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuIFxcbiBcXHRpZiAodW5saWtlbHkoc2tfcmVxdWVzdHNfd2lmaV9zdGF0dXMoc2tiLVxcdTAwM2VzaykpKSB7XFxuIFxcdFxcdGluZm8tXFx1MDAzZXN0YXR1c19kYXRhID0gaWVlZTgwMjExX3N0b3JlX2Fja19za2IobG9jYWwsIHNrYixcXG4tXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZpbmZvLVxcdTAwM2VmbGFncywgTlVMTCk7XFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBcXHUwMDI2aW5mby1cXHUwMDNlZmxhZ3MsIDApO1xcbiBcXHRcXHRpZiAoaW5mby1cXHUwMDNlc3RhdHVzX2RhdGEpXFxuIFxcdFxcdFxcdGluZm8tXFx1MDAzZXN0YXR1c19kYXRhX2lkciA9IDE7XFxuIFxcdH1cXG5AQCAtNDkxNiw3ICs0OTEzLDcgQEAgaWVlZTgwMjExX2J1aWxkX2RhdGFfdGVtcGxhdGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuIFxcdH1cXG4gXFxuIFxcdHNrYiA9IGllZWU4MDIxMV9idWlsZF9oZHIoc2RhdGEsIHNrYiwgaW5mb19mbGFncywgc3RhLFxcbi1cXHRcXHRcXHRcXHQgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LX1VOU1BFQywgTlVMTCk7XFxuK1xcdFxcdFxcdFxcdCAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLCAwKTtcXG4gXFx0aWYgKElTX0VSUihza2IpKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFxuQEAgLTY1MzEsNyArNjUyOCw3IEBAIHZvaWQgaWVlZTgwMjExX3R4X3NrYl90aWQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuIGludCBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdCAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sXFxuIFxcdFxcdFxcdCAgICAgIGNvbnN0IHU4ICpkZXN0LCBfX2JlMTYgcHJvdG8sIGJvb2wgdW5lbmNyeXB0ZWQsXFxuLVxcdFxcdFxcdCAgICAgIGludCBsaW5rX2lkLCB1NjQgKmNvb2tpZSlcXG4rXFx0XFx0XFx0ICAgICAgaW50IGxpbmtfaWQsIHU2NCBjb29raWUpXFxuIHtcXG4gXFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xcbiBcXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVxcdTAwM2Vsb2NhbDtcXG5AQCAtNjY2Niw3ICs2NjYzLDcgQEAgaW50IGllZWU4MDIxMV9wcm9iZV9tZXNoX2xpbmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0bG9jYWxfYmhfZGlzYWJsZSgpO1xcbiBcXHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgc2tiLVxcdTAwM2VkZXYsIDAsXFxuIFxcdFxcdFxcdFxcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfU0tJUF9NUEFUSF9MT09LVVAsXFxuLVxcdFxcdFxcdFxcdCAgICAgTlVMTCk7XFxuK1xcdFxcdFxcdFxcdCAgICAgMCk7XFxuIFxcdGxvY2FsX2JoX2VuYWJsZSgpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9jb3JlLmggYi9uZXQvd2lyZWxlc3MvY29yZS5oXFxuaW5kZXggMTVkOWY3ZWI1OGI0ZC4uYjQ2MTBmNjY4NWRjYiAxMDA2NDRcXG4tLS0gYS9uZXQvd2lyZWxlc3MvY29yZS5oXFxuKysrIGIvbmV0L3dpcmVsZXNzL2NvcmUuaFxcbkBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBjZmc4MDIxMV9tbG1lX3B1cmdlX3JlZ2lzdHJhdGlvbnMoc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldik7XFxuIGludCBjZmc4MDIxMV9tbG1lX21nbXRfdHgoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbiBcXHRcXHRcXHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuIFxcdFxcdFxcdCAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXFxuLVxcdFxcdFxcdCAgdTY0ICpjb29raWUpO1xcbitcXHRcXHRcXHQgIHU2NCBjb29raWUpO1xcbiB2b2lkIGNmZzgwMjExX29wZXJfYW5kX2h0X2NhcGEoc3RydWN0IGllZWU4MDIxMV9odF9jYXAgKmh0X2NhcGEsXFxuIFxcdFxcdFxcdCAgICAgICBjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCAqaHRfY2FwYV9tYXNrKTtcXG4gdm9pZCBjZmc4MDIxMV9vcGVyX2FuZF92aHRfY2FwYShzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXBhLFxcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3MvbWxtZS5jIGIvbmV0L3dpcmVsZXNzL21sbWUuY1xcbmluZGV4IDc4MjRiN2FjMjc3MGYuLmEwZDFjZGUyNmYwYzkgMTAwNjQ0XFxuLS0tIGEvbmV0L3dpcmVsZXNzL21sbWUuY1xcbisrKyBiL25ldC93aXJlbGVzcy9tbG1lLmNcXG5AQCAtODk0LDcgKzg5NCw3IEBAIHN0YXRpYyBib29sIGNmZzgwMjExX2FsbG93ZWRfcmFuZG9tX2FkZHJlc3Moc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFxuIGludCBjZmc4MDIxMV9tbG1lX21nbXRfdHgoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbiBcXHRcXHRcXHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLVxcdFxcdFxcdCAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxcbitcXHRcXHRcXHQgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxcbiB7XFxuIFxcdGNvbnN0IHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcXG4gXFx0dTE2IHN0eXBlO1xcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jIGIvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xcbmluZGV4IDhhZGJlZjVmMDQ0MjUuLmFjODk1ZTAyY2Q0MTEgMTAwNjQ0XFxuLS0tIGEvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xcbisrKyBiL25ldC93aXJlbGVzcy9ubDgwMjExLmNcXG5AQCAtMTQ2NDIsOCArMTQ2NDIsOSBAQCBzdGF0aWMgaW50IG5sODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0Z290byBmcmVlX21zZztcXG4gXFx0fVxcbiBcXG4rXFx0Y29va2llID0gY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcXG4gXFx0ZXJyID0gcmRldl9yZW1haW5fb25fY2hhbm5lbChyZGV2LCB3ZGV2LCBjaGFuZGVmLmNoYW4sXFxuLVxcdFxcdFxcdFxcdCAgICAgZHVyYXRpb24sIFxcdTAwMjZjb29raWUsIHJ4X2FkZHIpO1xcbitcXHRcXHRcXHRcXHQgICAgIGR1cmF0aW9uLCBjb29raWUsIHJ4X2FkZHIpO1xcbiBcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0Z290byBmcmVlX21zZztcXG5AQCAtMTQ4ODMsNyArMTQ4ODQsOCBAQCBzdGF0aWMgaW50IG5sODAyMTFfdHhfbWdtdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbiBcXHR9XFxuIFxcbiBcXHRwYXJhbXMuY2hhbiA9IGNoYW5kZWYuY2hhbjtcXG4tXFx0ZXJyID0gY2ZnODAyMTFfbWxtZV9tZ210X3R4KHJkZXYsIHdkZXYsIFxcdTAwMjZwYXJhbXMsIFxcdTAwMjZjb29raWUpO1xcbitcXHRjb29raWUgPSBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpO1xcbitcXHRlcnIgPSBjZmc4MDIxMV9tbG1lX21nbXRfdHgocmRldiwgd2RldiwgXFx1MDAyNnBhcmFtcywgY29va2llKTtcXG4gXFx0aWYgKGVycilcXG4gXFx0XFx0Z290byBmcmVlX21zZztcXG4gXFxuQEAgLTE2MzcxLDcgKzE2MzczLDggQEAgc3RhdGljIGludCBubDgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4gXFx0XFx0Z290byBmcmVlX21zZztcXG4gXFx0fVxcbiBcXG4tXFx0ZXJyID0gcmRldl9wcm9iZV9wZWVyKHJkZXYsIGRldiwgYWRkciwgXFx1MDAyNmNvb2tpZSk7XFxuK1xcdGNvb2tpZSA9IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7XFxuK1xcdGVyciA9IHJkZXZfcHJvYmVfcGVlcihyZGV2LCBkZXYsIGFkZHIsIGNvb2tpZSk7XFxuIFxcdGlmIChlcnIpXFxuIFxcdFxcdGdvdG8gZnJlZV9tc2c7XFxuIFxcbkBAIC0xODU4NiwxMCArMTg1ODksMTEgQEAgc3RhdGljIGludCBubDgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbiBcXG4gXFx0bGlua19pZCA9IG5sODAyMTFfbGlua19pZF9vcl9pbnZhbGlkKGluZm8tXFx1MDAzZWF0dHJzKTtcXG4gXFxuK1xcdGNvb2tpZSA9IGRvbnRfd2FpdF9mb3JfYWNrID8gMCA6IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7XFxuIFxcdGVyciA9IHJkZXZfdHhfY29udHJvbF9wb3J0KHJkZXYsIGRldiwgYnVmLCBsZW4sXFxuIFxcdFxcdFxcdFxcdCAgIGRlc3QsIGNwdV90b19iZTE2KHByb3RvKSwgbm9lbmNyeXB0LCBsaW5rX2lkLFxcbi1cXHRcXHRcXHRcXHQgICBkb250X3dhaXRfZm9yX2FjayA/IE5VTEwgOiBcXHUwMDI2Y29va2llKTtcXG4tXFx0aWYgKCFlcnIgXFx1MDAyNlxcdTAwMjYgIWRvbnRfd2FpdF9mb3JfYWNrKVxcbitcXHRcXHRcXHRcXHQgICBjb29raWUpO1xcbitcXHRpZiAoIWVyciBcXHUwMDI2XFx1MDAyNiBjb29raWUpXFxuIFxcdFxcdG5sX3NldF9leHRhY2tfY29va2llX3U2NChpbmZvLVxcdTAwM2VleHRhY2ssIGNvb2tpZSk7XFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG5AQCAtMjIwNDIsNiArMjIwNDYsMTAgQEAgc3RhdGljIHZvaWQgbmw4MDIxMV9mcmFtZV90eF9zdGF0dXMoc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0c3RydWN0IHNrX2J1ZmYgKm1zZztcXG4gXFx0dm9pZCAqaGRyO1xcbiBcXG4rXFx0LyogdXNlcnNwYWNlIG5vdCBpbnRlcmVzdGVkIGluIHplcm8tY29va2llIHN0YXR1cyAqL1xcbitcXHRpZiAoIXN0YXR1cy1cXHUwMDNlY29va2llKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbiBcXHRpZiAoY29tbWFuZCA9PSBOTDgwMjExX0NNRF9GUkFNRV9UWF9TVEFUVVMpXFxuIFxcdFxcdHRyYWNlX2NmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIHN0YXR1cy1cXHUwMDNlY29va2llLFxcbiBcXHRcXHRcXHRcXHRcXHQgICAgICBzdGF0dXMtXFx1MDAzZWFjayk7XFxuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oIGIvbmV0L3dpcmVsZXNzL3JkZXYtb3BzLmhcXG5pbmRleCA2YzNiYWQ4YjJkNmY2Li40Njg0OWZlOGQwYjM5IDEwMDY0NFxcbi0tLSBhL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oXFxuKysrIGIvbmV0L3dpcmVsZXNzL3JkZXYtb3BzLmhcXG5AQCAtNzM2LDE0ICs3MzYsMTQgQEAgc3RhdGljIGlubGluZSBpbnRcXG4gcmRldl9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXFxuIFxcdFxcdCAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxcbiBcXHRcXHQgICAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxcbi1cXHRcXHQgICAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpXFxuK1xcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsIGNvbnN0IHU4ICpyeF9hZGRyKVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcdHRyYWNlX3JkZXZfcmVtYWluX29uX2NoYW5uZWwoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LCB3ZGV2LCBjaGFuLCBkdXJhdGlvbixcXG4gXFx0XFx0XFx0XFx0ICAgICByeF9hZGRyKTtcXG4gXFx0cmV0ID0gcmRldi1cXHUwMDNlb3BzLVxcdTAwM2VyZW1haW5fb25fY2hhbm5lbChcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIHdkZXYsIGNoYW4sXFxuIFxcdFxcdFxcdFxcdFxcdCAgIGR1cmF0aW9uLCBjb29raWUsIHJ4X2FkZHIpO1xcbi1cXHR0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKFxcdTAwMjZyZGV2LVxcdTAwM2V3aXBoeSwgcmV0LCAqY29va2llKTtcXG4rXFx0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIHJldCwgY29va2llKTtcXG4gXFx0cmV0dXJuIHJldDtcXG4gfVxcbiBcXG5AQCAtNzYxLDEyICs3NjEsMTIgQEAgcmRldl9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbiBzdGF0aWMgaW5saW5lIGludCByZGV2X21nbXRfdHgoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbiBcXHRcXHRcXHQgICAgICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG4gXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLFxcbi1cXHRcXHRcXHQgICAgICAgdTY0ICpjb29raWUpXFxuK1xcdFxcdFxcdCAgICAgICB1NjQgY29va2llKVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcdHRyYWNlX3JkZXZfbWdtdF90eChcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIHdkZXYsIHBhcmFtcyk7XFxuIFxcdHJldCA9IHJkZXYtXFx1MDAzZW9wcy1cXHUwMDNlbWdtdF90eChcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIHdkZXYsIHBhcmFtcywgY29va2llKTtcXG4tXFx0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIHJldCwgKmNvb2tpZSk7XFxuK1xcdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LCByZXQsIGNvb2tpZSk7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuQEAgLTc3NSw3ICs3NzUsNyBAQCBzdGF0aWMgaW5saW5lIGludCByZGV2X3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXFxuIFxcdFxcdFxcdFxcdCAgICAgICBjb25zdCB2b2lkICpidWYsIHNpemVfdCBsZW4sXFxuIFxcdFxcdFxcdFxcdCAgICAgICBjb25zdCB1OCAqZGVzdCwgX19iZTE2IHByb3RvLFxcbiBcXHRcXHRcXHRcXHQgICAgICAgY29uc3QgYm9vbCBub2VuY3J5cHQsIGludCBsaW5rLFxcbi1cXHRcXHRcXHRcXHQgICAgICAgdTY0ICpjb29raWUpXFxuK1xcdFxcdFxcdFxcdCAgICAgICB1NjQgY29va2llKVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcdHRyYWNlX3JkZXZfdHhfY29udHJvbF9wb3J0KFxcdTAwMjZyZGV2LVxcdTAwM2V3aXBoeSwgZGV2LCBidWYsIGxlbixcXG5AQCAtNzgzLDcgKzc4Myw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJkZXZfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG4gXFx0cmV0ID0gcmRldi1cXHUwMDNlb3BzLVxcdTAwM2V0eF9jb250cm9sX3BvcnQoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LCBkZXYsIGJ1ZiwgbGVuLFxcbiBcXHRcXHRcXHRcXHRcXHQgZGVzdCwgcHJvdG8sIG5vZW5jcnlwdCwgbGluaywgY29va2llKTtcXG4gXFx0aWYgKGNvb2tpZSlcXG4tXFx0XFx0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIHJldCwgKmNvb2tpZSk7XFxuK1xcdFxcdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LCByZXQsIGNvb2tpZSk7XFxuIFxcdGVsc2VcXG4gXFx0XFx0dHJhY2VfcmRldl9yZXR1cm5faW50KFxcdTAwMjZyZGV2LVxcdTAwM2V3aXBoeSwgcmV0KTtcXG4gXFx0cmV0dXJuIHJldDtcXG5AQCAtOTUwLDEyICs5NTAsMTIgQEAgc3RhdGljIGlubGluZSBpbnQgcmRldl90ZGxzX29wZXIoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxcbiBcXG4gc3RhdGljIGlubGluZSBpbnQgcmRldl9wcm9iZV9wZWVyKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG4gXFx0XFx0XFx0XFx0ICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqcGVlcixcXG4tXFx0XFx0XFx0XFx0ICB1NjQgKmNvb2tpZSlcXG4rXFx0XFx0XFx0XFx0ICB1NjQgY29va2llKVxcbiB7XFxuIFxcdGludCByZXQ7XFxuIFxcdHRyYWNlX3JkZXZfcHJvYmVfcGVlcihcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIGRldiwgcGVlcik7XFxuIFxcdHJldCA9IHJkZXYtXFx1MDAzZW9wcy1cXHUwMDNlcHJvYmVfcGVlcihcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIGRldiwgcGVlciwgY29va2llKTtcXG4tXFx0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcXHUwMDI2cmRldi1cXHUwMDNld2lwaHksIHJldCwgKmNvb2tpZSk7XFxuK1xcdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXFx1MDAyNnJkZXYtXFx1MDAzZXdpcGh5LCByZXQsIGNvb2tpZSk7XFxuIFxcdHJldHVybiByZXQ7XFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIyOjM4LjAwMjc0NzEzM1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjkwNDAzMzQ5MDk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsXCIsXG4gICAgXCJubDgwMjExX3R4X21nbXRcIixcbiAgICBcIm5sODAyMTFfcHJvYmVfcGVlclwiLFxuICAgIFwibmw4MDIxMV90eF9jb250cm9sX3BvcnRcIixcbiAgICBcImNmZzgwMjExX21sbWVfbWdtdF90eFwiLFxuICAgIFwiaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsXCIsXG4gICAgXCJpZWVlODAyMTFfbWdtdF90eFwiLFxuICAgIFwiaWVlZTgwMjExX3Byb2JlX3BlZXJcIixcbiAgICBcImllZWU4MDIxMV90eF9jb250cm9sX3BvcnRcIixcbiAgICBcImllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYlwiLFxuICAgIFwiaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBob3cgY29va2llcyBhcmUgZ2VuZXJhdGVkIGFuZCBwYXNzZWQgZm9yIHNldmVyYWwgbmw4MDIxMSBjb21tYW5kcyAocmVtYWluX29uX2NoYW5uZWwsIHR4X21nbXQsIHByb2JlX3BlZXIsIHR4X2NvbnRyb2xfcG9ydCkuIEl0IG1vZGlmaWVzIHRoZSBjb3JlIGNmZzgwMjExIGFuZCBtYWM4MDIxMSBsb2dpYyB0byBnZW5lcmF0ZSBjb29raWVzIGluIG5sODAyMTEgYW5kIHBhc3MgdGhlbSBieSB2YWx1ZSB0byBkcml2ZXJzLCBpbnN0ZWFkIG9mIGhhdmluZyBkcml2ZXJzIGdlbmVyYXRlIHRoZW0gYW5kIHBhc3MgdGhlbSBiYWNrIHZpYSBwb2ludGVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIHdpcmVsZXNzIHN0YWNrIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkYjY0N2Y0MDNkOTlhNDM2OTA0M2RmM2MwNWVlYTVkZGY4NDA4MDVkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMSAxOToyMjozNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuY1xuaW5kZXggZWNkZTkxMTU5YjU0Ni4uMzQwMjVkNjRkNjE1OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY2ZnODAyMTEuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jZmc4MDIxMS5jXG5AQCAtMzAzNCwyMCArMzAzNCwxNCBAQCBzdGF0aWMgaW50IGF0aDZrbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHQgICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuIFx0XHRcdFx0ICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbixcbi1cdFx0XHRcdCAgICB1NjQgKmNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpXG4rXHRcdFx0XHQgICAgdTY0IGNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpXG4ge1xuIFx0c3RydWN0IGF0aDZrbF92aWYgKnZpZiA9IGF0aDZrbF92aWZfZnJvbV93ZGV2KHdkZXYpO1xuIFx0c3RydWN0IGF0aDZrbCAqYXIgPSBhdGg2a2xfcHJpdih2aWYtXHUwMDNlbmRldik7XG4tXHR1MzIgaWQ7XG4gXG4gXHQvKiBUT0RPOiBpZiBhbHJlYWR5IHBlbmRpbmcgb3Igb25nb2luZyByZW1haW4tb24tY2hhbm5lbCxcbiBcdCAqIHJldHVybiAtRUJVU1kgKi9cbi1cdGlkID0gKyt2aWYtXHUwMDNlbGFzdF9yb2NfaWQ7XG4tXHRpZiAoaWQgPT0gMCkge1xuLVx0XHQvKiBEbyBub3QgdXNlIDAgYXMgdGhlIGNvb2tpZSB2YWx1ZSAqL1xuLVx0XHRpZCA9ICsrdmlmLVx1MDAzZWxhc3Rfcm9jX2lkO1xuLVx0fVxuLVx0KmNvb2tpZSA9IGlkO1xuK1x0dmlmLVx1MDAzZWxhc3Rfcm9jX2lkID0gY29va2llO1xuIFxuIFx0cmV0dXJuIGF0aDZrbF93bWlfcmVtYWluX29uX2NobmxfY21kKGFyLVx1MDAzZXdtaSwgdmlmLVx1MDAzZWZ3X3ZpZl9pZHgsXG4gXHRcdFx0XHRcdCAgICAgY2hhbi1cdTAwM2VjZW50ZXJfZnJlcSwgZHVyYXRpb24pO1xuQEAgLTMxMDYsNiArMzEwMCw3IEBAIHN0YXRpYyBpbnQgYXRoNmtsX3NlbmRfZ29fcHJvYmVfcmVzcChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLFxuIFxuIHN0YXRpYyBib29sIGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcChzdHJ1Y3QgYXRoNmtsX3ZpZiAqdmlmLFxuIFx0XHRcdFx0ICAgICB1MzIgaWQsXG4rXHRcdFx0XHQgICAgIHU2NCBjb29raWUsXG4gXHRcdFx0XHQgICAgIHUzMiBmcmVxLFxuIFx0XHRcdFx0ICAgICB1MzIgd2FpdCxcbiBcdFx0XHRcdCAgICAgY29uc3QgdTggKmJ1ZixcbkBAIC0zMTM4LDYgKzMxMzMsNyBAQCBzdGF0aWMgYm9vbCBhdGg2a2xfbWdtdF9wb3dlcnNhdmVfYXAoc3RydWN0IGF0aDZrbF92aWYgKnZpZixcbiBcbiBcdFx0XHRJTklUX0xJU1RfSEVBRChcdTAwMjZtZ210X2J1Zi1cdTAwM2VsaXN0KTtcbiBcdFx0XHRtZ210X2J1Zi1cdTAwM2VpZCA9IGlkO1xuK1x0XHRcdG1nbXRfYnVmLVx1MDAzZWNvb2tpZSA9IGNvb2tpZTtcbiBcdFx0XHRtZ210X2J1Zi1cdTAwM2VmcmVxID0gZnJlcTtcbiBcdFx0XHRtZ210X2J1Zi1cdTAwM2V3YWl0ID0gd2FpdDtcbiBcdFx0XHRtZ210X2J1Zi1cdTAwM2VsZW4gPSBsZW47XG5AQCAtMzE5MCw3ICszMTg2LDcgQEAgc3RhdGljIGJvb2wgYXRoNmtsX2lzX3AycF9nb19zc2lkKGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pXG4gfVxuIFxuIHN0YXRpYyBpbnQgYXRoNmtsX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0XHQgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcbitcdFx0XHQgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBhdGg2a2xfdmlmICp2aWYgPSBhdGg2a2xfdmlmX2Zyb21fd2Rldih3ZGV2KTtcbiBcdHN0cnVjdCBhdGg2a2wgKmFyID0gYXRoNmtsX3ByaXYodmlmLVx1MDAzZW5kZXYpO1xuQEAgLTMyMjIsNyArMzIxOCw2IEBAIHN0YXRpYyBpbnQgYXRoNmtsX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0ICogU2VuZCBQcm9iZSBSZXNwb25zZSBmcmFtZSBpbiBHTyBtb2RlIHVzaW5nIGEgc2VwYXJhdGUgV01JXG4gXHRcdCAqIGNvbW1hbmQgdG8gYWxsb3cgdGhlIHRhcmdldCB0byBmaWxsIGluIHRoZSBnZW5lcmljIElFcy5cbiBcdFx0ICovXG4tXHRcdCpjb29raWUgPSAwOyAvKiBUWCBzdGF0dXMgbm90IHN1cHBvcnRlZCAqL1xuIFx0XHRyZXR1cm4gYXRoNmtsX3NlbmRfZ29fcHJvYmVfcmVzcCh2aWYsIGJ1ZiwgbGVuLCBmcmVxKTtcbiBcdH1cbiBcbkBAIC0zMjM1LDE2ICszMjMwLDE1IEBAIHN0YXRpYyBpbnQgYXRoNmtsX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0aWQgPSB2aWYtXHUwMDNlc2VuZF9hY3Rpb25faWQrKztcbiBcdH1cbiBcbi1cdCpjb29raWUgPSBpZDtcbi1cbiBcdC8qIEFQIG1vZGUgUG93ZXIgc2F2aW5nIHByb2Nlc3NpbmcgKi9cbiBcdGlmICh2aWYtXHUwMDNlbndfdHlwZSA9PSBBUF9ORVRXT1JLKSB7XG4tXHRcdHF1ZXVlZCA9IGF0aDZrbF9tZ210X3Bvd2Vyc2F2ZV9hcCh2aWYsIGlkLCBmcmVxLCB3YWl0LCBidWYsIGxlbixcbi1cdFx0XHRcdFx0XHQgIFx1MDAyNm1vcmVfZGF0YSwgbm9fY2NrKTtcbitcdFx0cXVldWVkID0gYXRoNmtsX21nbXRfcG93ZXJzYXZlX2FwKHZpZiwgaWQsIGNvb2tpZSwgZnJlcSwgd2FpdCxcbitcdFx0XHRcdFx0XHQgIGJ1ZiwgbGVuLCBcdTAwMjZtb3JlX2RhdGEsIG5vX2Njayk7XG4gXHRcdGlmIChxdWV1ZWQpXG4gXHRcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG4rXHRhci1cdTAwM2V3bWktXHUwMDNlbGFzdF9tZ210X3R4X2Nvb2tpZSA9IGNvb2tpZTtcbiBcdHJldHVybiBhdGg2a2xfd21pX3NlbmRfbWdtdF9jbWQoYXItXHUwMDNld21pLCB2aWYtXHUwMDNlZndfdmlmX2lkeCwgaWQsIGZyZXEsXG4gXHRcdFx0XHRcdHdhaXQsIGJ1ZiwgbGVuLCBub19jY2spO1xuIH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oXG5pbmRleCA3N2UwNTIzMzZlYjViLi5hMGIyMzZlZWVhYjU0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9jb3JlLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvY29yZS5oXG5AQCAtNDA0LDYgKzQwNCw3IEBAIHN0cnVjdCBhdGg2a2xfbWdtdF9idWZmIHtcbiBcdHUzMiBmcmVxO1xuIFx0dTMyIHdhaXQ7XG4gXHR1MzIgaWQ7XG4rXHR1NjQgY29va2llO1xuIFx0Ym9vbCBub19jY2s7XG4gXHRzaXplX3QgbGVuO1xuIFx0dTggYnVmW107XG5AQCAtNjMxLDggKzYzMiw4IEBAIHN0cnVjdCBhdGg2a2xfdmlmIHtcbiBcdHN0cnVjdCBjZmc4MDIxMV9zY2FuX3JlcXVlc3QgKnNjYW5fcmVxO1xuIFx0ZW51bSBzbWVfc3RhdGUgc21lX3N0YXRlO1xuIFx0aW50IHJlY29ubmVjdF9mbGFnO1xuLVx0dTMyIGxhc3Rfcm9jX2lkO1xuLVx0dTMyIGxhc3RfY2FuY2VsX3JvY19pZDtcbitcdHU2NCBsYXN0X3JvY19pZDtcbitcdHU2NCBsYXN0X2NhbmNlbF9yb2NfaWQ7XG4gXHR1MzIgc2VuZF9hY3Rpb25faWQ7XG4gXHRib29sIHByb2JlX3JlcV9yZXBvcnQ7XG4gXHR1MTYgYXNzb2NfYnNzX2JlYWNvbl9pbnQ7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uY1xuaW5kZXggOGFmYzY1ODlmYzUxZS4uOWMwMjNkN2NlMzA1OSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL21haW4uY1xuQEAgLTg5OCw2ICs4OTgsNyBAQCB2b2lkIGF0aDZrbF9wc3BvbGxfZXZlbnQoc3RydWN0IGF0aDZrbF92aWYgKnZpZiwgdTggYWlkKVxuIFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZjb25uLVx1MDAzZXBzcV9sb2NrKTtcbiBcbiBcdFx0Y29ubi1cdTAwM2VzdGFfZmxhZ3MgfD0gU1RBX1BTX1BPTExFRDtcbitcdFx0YXItXHUwMDNld21pLVx1MDAzZWxhc3RfbWdtdF90eF9jb29raWUgPSBtZ210X2J1Zi1cdTAwM2Vjb29raWU7XG4gXHRcdGF0aDZrbF93bWlfc2VuZF9tZ210X2NtZChhci1cdTAwM2V3bWksIHZpZi1cdTAwM2Vmd192aWZfaWR4LFxuIFx0XHRcdFx0XHQgbWdtdF9idWYtXHUwMDNlaWQsIG1nbXRfYnVmLVx1MDAzZWZyZXEsXG4gXHRcdFx0XHRcdCBtZ210X2J1Zi1cdTAwM2V3YWl0LCBtZ210X2J1Zi1cdTAwM2VidWYsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC90eHJ4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY1xuaW5kZXggZDgxODI1NDEzOTA2MS4uNjA5ZDQ1OGNhNmM1NyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvdHhyeC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3R4cnguY1xuQEAgLTE0NjksNiArMTQ2OSw3IEBAIHZvaWQgYXRoNmtsX3J4KHN0cnVjdCBodGNfdGFyZ2V0ICp0YXJnZXQsIHN0cnVjdCBodGNfcGFja2V0ICpwYWNrZXQpXG4gXHRcdFx0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmNvbm4tXHUwMDNlcHNxX2xvY2spO1xuIFx0XHRcdFx0XHRpZHggPSB2aWYtXHUwMDNlZndfdmlmX2lkeDtcbiBcbitcdFx0XHRcdFx0YXItXHUwMDNld21pLVx1MDAzZWxhc3RfbWdtdF90eF9jb29raWUgPSBtZ210LVx1MDAzZWNvb2tpZTtcbiBcdFx0XHRcdFx0YXRoNmtsX3dtaV9zZW5kX21nbXRfY21kKGFyLVx1MDAzZXdtaSxcbiBcdFx0XHRcdFx0XHRcdFx0IGlkeCxcbiBcdFx0XHRcdFx0XHRcdFx0IG1nbXQtXHUwMDNlaWQsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmNcbmluZGV4IDZjMjlmMGJjZWM5ZjUuLjIxNDBmZGRiYThiYWYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5jXG5AQCAtNTk2LDcgKzU5Niw3IEBAIHN0YXRpYyBpbnQgYXRoNmtsX3dtaV90eF9zdGF0dXNfZXZlbnRfcngoc3RydWN0IHdtaSAqd21pLCB1OCAqZGF0YXAsIGludCBsZW4sXG4gXHRhdGg2a2xfZGJnKEFUSDZLTF9EQkdfV01JLCBcInR4X3N0YXR1czogaWQ9JXggYWNrX3N0YXR1cz0ldVxcblwiLFxuIFx0XHQgICBpZCwgZXYtXHUwMDNlYWNrX3N0YXR1cyk7XG4gXHRpZiAod21pLVx1MDAzZWxhc3RfbWdtdF90eF9mcmFtZSkge1xuLVx0XHRjZmc4MDIxMV9tZ210X3R4X3N0YXR1cyhcdTAwMjZ2aWYtXHUwMDNld2RldiwgaWQsXG4rXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKFx1MDAyNnZpZi1cdTAwM2V3ZGV2LCB3bWktXHUwMDNlbGFzdF9tZ210X3R4X2Nvb2tpZSxcbiBcdFx0XHRcdFx0d21pLVx1MDAzZWxhc3RfbWdtdF90eF9mcmFtZSxcbiBcdFx0XHRcdFx0d21pLVx1MDAzZWxhc3RfbWdtdF90eF9mcmFtZV9sZW4sXG4gXHRcdFx0XHRcdCEhZXYtXHUwMDNlYWNrX3N0YXR1cywgR0ZQX0FUT01JQyk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDZrbC93bWkuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg2a2wvd21pLmhcbmluZGV4IDhmYmVjZTNmZGFkOWYuLjg5Y2UyYWJiYjFjZGMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNmtsL3dtaS5oXG5AQCAtMTI1LDYgKzEyNSw3IEBAIHN0cnVjdCB3bWkge1xuIFxuIFx0dTggKmxhc3RfbWdtdF90eF9mcmFtZTtcbiBcdHNpemVfdCBsYXN0X21nbXRfdHhfZnJhbWVfbGVuO1xuK1x0dTY0IGxhc3RfbWdtdF90eF9jb29raWU7XG4gXHR1OCBzYXZlZF9wd3JfbW9kZTtcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9jZmc4MDIxMS5jXG5pbmRleCA1ZjJiZDlhMzFmYWY2Li45YWMzM2Q4MjdmODAxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvY2ZnODAyMTEuY1xuQEAgLTE0MzIsNyArMTQzMiw3IEBAIHN0YXRpYyBpbnQgd2lsX2NmZzgwMjExX3NldF93aXBoeV9wYXJhbXMoc3RydWN0IHdpcGh5ICp3aXBoeSwgaW50IHJhZGlvX2lkeCxcbiBcbiBpbnQgd2lsX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXG4tXHRcdFx0IHU2NCAqY29va2llKVxuK1x0XHRcdCB1NjQgY29va2llKVxuIHtcbiBcdGNvbnN0IHU4ICpidWYgPSBwYXJhbXMtXHUwMDNlYnVmO1xuIFx0c2l6ZV90IGxlbiA9IHBhcmFtcy1cdTAwM2VsZW47XG5AQCAtMTQ4OCw4ICsxNDg4LDcgQEAgaW50IHdpbF9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHQgKi9cbiBcdHR4X3N0YXR1cyA9IChyYyA9PSAwKTtcbiBcdHJjID0gKHJjID09IC1FQUdBSU4pID8gMCA6IHJjO1xuLVx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llID8gKmNvb2tpZSA6IDAsIGJ1ZiwgbGVuLFxuLVx0XHRcdFx0dHhfc3RhdHVzLCBHRlBfS0VSTkVMKTtcbitcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHR4X3N0YXR1cywgR0ZQX0tFUk5FTCk7XG4gXG4gXHRyZXR1cm4gcmM7XG4gfVxuQEAgLTE3MzUsNyArMTczNCw3IEBAIHN0YXRpYyBpbnQgd2lsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0XHQgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdCBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXG4gXHRcdFx0XHQgdW5zaWduZWQgaW50IGR1cmF0aW9uLFxuLVx0XHRcdFx0IHU2NCAqY29va2llLCBjb25zdCB1OCAqcnhfYWRkcilcbitcdFx0XHRcdCB1NjQgY29va2llLCBjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRzdHJ1Y3Qgd2lsNjIxMF9wcml2ICp3aWwgPSB3aXBoeV90b193aWwod2lwaHkpO1xuIFx0aW50IHJjO1xuQEAgLTIzODEsNyArMjM4MCw3IEBAIHZvaWQgd2lsX3Byb2JlX2NsaWVudF9mbHVzaChzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZilcbiBcbiBzdGF0aWMgaW50IHdpbF9jZmc4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0XHQgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLVx0XHRcdFx0ICAgY29uc3QgdTggKnBlZXIsIHU2NCAqY29va2llKVxuK1x0XHRcdFx0ICAgY29uc3QgdTggKnBlZXIsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsID0gd2lwaHlfdG9fd2lsKHdpcGh5KTtcbiBcdHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmID0gbmRldl90b192aWYoZGV2KTtcbkBAIC0yMzk5LDEzICsyMzk4LDEyIEBAIHN0YXRpYyBpbnQgd2lsX2NmZzgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRyZXEtXHUwMDNlY2lkID0gY2lkO1xuLVx0cmVxLVx1MDAzZWNvb2tpZSA9IGNpZDtcbitcdHJlcS1cdTAwM2Vjb29raWUgPSBjb29raWU7XG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNnZpZi1cdTAwM2Vwcm9iZV9jbGllbnRfbXV0ZXgpO1xuIFx0bGlzdF9hZGRfdGFpbChcdTAwMjZyZXEtXHUwMDNlbGlzdCwgXHUwMDI2dmlmLVx1MDAzZXByb2JlX2NsaWVudF9wZW5kaW5nKTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZ2aWYtXHUwMDNlcHJvYmVfY2xpZW50X211dGV4KTtcbiBcbi1cdCpjb29raWUgPSByZXEtXHUwMDNlY29va2llO1xuIFx0cXVldWVfd29yayh3aWwtXHUwMDNld3Ffc2VydmljZSwgXHUwMDI2dmlmLVx1MDAzZXByb2JlX2NsaWVudF93b3JrZXIpO1xuIFx0cmV0dXJuIDA7XG4gfVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2RlYnVnZnMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2RlYnVnZnMuY1xuaW5kZXggYjhjYjczNmE3MTg1Mi4uZTA2ZTQ1MzIzMjcyYyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL2RlYnVnZnMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvZGVidWdmcy5jXG5AQCAtOTg1LDcgKzk4NSw3IEBAIHN0YXRpYyBzc2l6ZV90IHdpbF93cml0ZV9maWxlX3R4bWdtdChzdHJ1Y3QgZmlsZSAqZmlsZSwgY29uc3QgY2hhciBfX3VzZXIgKmJ1ZixcbiBcdHBhcmFtcy5idWYgPSBmcmFtZTtcbiBcdHBhcmFtcy5sZW4gPSBsZW47XG4gXG4tXHRyYyA9IHdpbF9jZmc4MDIxMV9tZ210X3R4KHdpcGh5LCB3ZGV2LCBcdTAwMjZwYXJhbXMsIE5VTEwpO1xuK1x0cmMgPSB3aWxfY2ZnODAyMTFfbWdtdF90eCh3aXBoeSwgd2RldiwgXHUwMDI2cGFyYW1zLCAwKTtcbiBcbiBcdGtmcmVlKGZyYW1lKTtcbiBcdHdpbF9pbmZvKHdpbCwgXCItXHUwMDNlICVkXFxuXCIsIHJjKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvd2lsNjIxMC9wMnAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3AycC5jXG5pbmRleCBmMjBjYWYxYTM5MDViLi5hY2Q4YTJlMzUxMDMyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvcDJwLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3AycC5jXG5AQCAtMTI0LDcgKzEyNCw3IEBAIGludCB3aWxfcDJwX3NlYXJjaChzdHJ1Y3Qgd2lsNjIxMF92aWYgKnZpZixcbiBcbiBpbnQgd2lsX3AycF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0ICAgdTY0ICpjb29raWUpXG4rXHRcdCAgIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IHdpbDYyMTBfdmlmICp2aWYgPSB3ZGV2X3RvX3ZpZih3aWwsIHdkZXYpO1xuIFx0c3RydWN0IHdpbF9wMnBfaW5mbyAqcDJwID0gXHUwMDI2dmlmLVx1MDAzZXAycDtcbkBAIC0xNDQsNyArMTQ0LDcgQEAgaW50IHdpbF9wMnBfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ByaXYgKndpbCwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdH1cbiBcbiBcdG1lbWNweShcdTAwMjZwMnAtXHUwMDNlbGlzdGVuX2NoYW4sIGNoYW4sIHNpemVvZigqY2hhbikpO1xuLVx0KmNvb2tpZSA9ICsrcDJwLVx1MDAzZWNvb2tpZTtcbitcdHAycC1cdTAwM2Vjb29raWUgPSBjb29raWU7XG4gXHRwMnAtXHUwMDNlbGlzdGVuX2R1cmF0aW9uID0gZHVyYXRpb247XG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNndpbC1cdTAwM2V2aWZfbXV0ZXgpO1xuQEAgLTE2Niw3ICsxNjYsNyBAQCBpbnQgd2lsX3AycF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0aWYgKHZpZi1cdTAwM2VtaWQgPT0gMClcbiBcdFx0d2lsLVx1MDAzZXJhZGlvX3dkZXYgPSB3ZGV2O1xuIFxuLVx0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCAqY29va2llLCBjaGFuLCBkdXJhdGlvbixcbitcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLCBkdXJhdGlvbixcbiBcdFx0XHRcdCAgR0ZQX0tFUk5FTCk7XG4gXG4gb3V0OlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dpbDYyMTAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dpbDYyMTAuaFxuaW5kZXggMzFlMTA3YzgxZTJkNC4uZjhlNjBiZTYzMWNhNSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC93aWw2MjEwL3dpbDYyMTAuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3dpbDYyMTAvd2lsNjIxMC5oXG5AQCAtMTMwMSw3ICsxMzAxLDcgQEAgaW50IHdpbF9wMnBfc2VhcmNoKHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmLFxuIFx0XHQgICBzdHJ1Y3QgY2ZnODAyMTFfc2Nhbl9yZXF1ZXN0ICpyZXF1ZXN0KTtcbiBpbnQgd2lsX3AycF9saXN0ZW4oc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0ICAgdTY0ICpjb29raWUpO1xuK1x0XHQgICB1NjQgY29va2llKTtcbiB1OCB3aWxfcDJwX3N0b3BfZGlzY292ZXJ5KHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmKTtcbiBpbnQgd2lsX3AycF9jYW5jZWxfbGlzdGVuKHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmLCB1NjQgY29va2llKTtcbiB2b2lkIHdpbF9wMnBfbGlzdGVuX2V4cGlyZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTtcbkBAIC0xMzE3LDcgKzEzMTcsNyBAQCBpbnQgd21pX3N0b3BfZGlzY292ZXJ5KHN0cnVjdCB3aWw2MjEwX3ZpZiAqdmlmKTtcbiBcbiBpbnQgd2lsX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXG4tXHRcdFx0IHU2NCAqY29va2llKTtcbitcdFx0XHQgdTY0IGNvb2tpZSk7XG4gdm9pZCB3aWxfY2ZnODAyMTFfYXBfcmVjb3Zlcnkoc3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsKTtcbiBpbnQgd2lsX2NmZzgwMjExX2lmYWNlX2NvbWJpbmF0aW9uc19mcm9tX2Z3KFxuIFx0c3RydWN0IHdpbDYyMTBfcHJpdiAqd2lsLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcbmluZGV4IDZiMmMzNGUzYTc5NmMuLjg3MmM0ODgwNmQwOTEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcbkBAIC01NTU0LDcgKzU1NTQsNyBAQCBicmNtZl9jZmc4MDIxMV91cGRhdGVfbWdtdF9mcmFtZV9yZWdpc3RyYXRpb25zKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXG4gaW50XG4gYnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLVx0XHQgICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxuK1x0XHQgICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyA9IHdpcGh5X3RvX2NmZyh3aXBoeSk7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4gPSBwYXJhbXMtXHUwMDNlY2hhbjtcbkBAIC01NTczLDggKzU1NzMsNiBAQCBicmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXG4gXHRicmNtZl9kYmcoVFJBQ0UsIFwiRW50ZXJcXG5cIik7XG4gXG4tXHQqY29va2llID0gMDtcbi1cbiBcdG1nbXQgPSAoY29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICopYnVmO1xuIFxuIFx0aWYgKCFpZWVlODAyMTFfaXNfbWdtdChtZ210LVx1MDAzZWZyYW1lX2NvbnRyb2wpKSB7XG5AQCAtNTYwNSw3ICs1NjAzLDcgQEAgYnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0XHQgICAgQlJDTUZfVk5EUl9JRV9QUkJSU1BfRkxBRyxcbiBcdFx0XHRcdFx0ICAgIFx1MDAyNmJ1ZltpZV9vZmZzZXRdLFxuIFx0XHRcdFx0XHQgICAgaWVfbGVuKTtcbi1cdFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4rXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4gXHRcdFx0XHRcdEdGUF9LRVJORUwpO1xuIFx0fSBlbHNlIGlmIChpZWVlODAyMTFfaXNfYWN0aW9uKG1nbXQtXHUwMDNlZnJhbWVfY29udHJvbCkpIHtcbiBcdFx0aWYgKGxlbiBcdTAwM2UgQlJDTUZfRklMX0FDVElPTl9GUkFNRV9TSVpFICsgRE9UMTFfTUdNVF9IRFJfTEVOKSB7XG5AQCAtNTYyMSw3ICs1NjE5LDcgQEAgYnJjbWZfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHR9XG4gXHRcdGFjdGlvbl9mcmFtZSA9IFx1MDAyNmFmX3BhcmFtcy1cdTAwM2VhY3Rpb25fZnJhbWU7XG4gXHRcdC8qIEFkZCB0aGUgcGFja2V0IElkICovXG4tXHRcdGFjdGlvbl9mcmFtZS1cdTAwM2VwYWNrZXRfaWQgPSBjcHVfdG9fbGUzMigqY29va2llKTtcbitcdFx0YWN0aW9uX2ZyYW1lLVx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKGNvb2tpZSk7XG4gXHRcdC8qIEFkZCBCU1NJRCAqL1xuIFx0XHRtZW1jcHkoXHUwMDI2YWN0aW9uX2ZyYW1lLVx1MDAzZWRhWzBdLCBcdTAwMjZtZ210LVx1MDAzZWRhWzBdLCBFVEhfQUxFTik7XG4gXHRcdG1lbWNweShcdTAwMjZhZl9wYXJhbXMtXHUwMDNlYnNzaWRbMF0sIFx1MDAyNm1nbXQtXHUwMDNlYnNzaWRbMF0sIEVUSF9BTEVOKTtcbkBAIC01NjQ5LDEyICs1NjQ3LDEyIEBAIGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0ICAgICAgIGxlMTZfdG9fY3B1KGFjdGlvbl9mcmFtZS1cdTAwM2VsZW4pKTtcbiBcbiBcdFx0YnJjbWZfZGJnKFRSQUNFLCBcIkFjdGlvbiBmcmFtZSwgY29va2llPSVsbGQsIGxlbj0lZCwgY2hhbm5lbD0lZFxcblwiLFxuLVx0XHRcdCAgKmNvb2tpZSwgbGUxNl90b19jcHUoYWN0aW9uX2ZyYW1lLVx1MDAzZWxlbiksXG4rXHRcdFx0ICBjb29raWUsIGxlMTZfdG9fY3B1KGFjdGlvbl9mcmFtZS1cdTAwM2VsZW4pLFxuIFx0XHRcdCAgbGUzMl90b19jcHUoYWZfcGFyYW1zLVx1MDAzZWNoYW5uZWwpKTtcbiBcbiBcdFx0YWNrID0gYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKHZpZi1cdTAwM2VpZnAsIGFmX3BhcmFtcyk7XG4gXG4tXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsICpjb29raWUsIGJ1ZiwgbGVuLCBhY2ssXG4rXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIGFjayxcbiBcdFx0XHRcdFx0R0ZQX0tFUk5FTCk7XG4gZnJlZTpcbiBcdFx0a2ZyZWUoYWZfcGFyYW1zKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oXG5pbmRleCA2Y2ViMzAxNDI5MDU0Li42M2U1MzQ1MjNmNTE4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oXG5AQCAtNDk3LDYgKzQ5Nyw2IEBAIHZvaWQgYnJjbWZfY2ZnODAyMTFfZnJlZV92aWYoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xuIFxuIGludCBicmNtZl9zZXRfd3NlYyhzdHJ1Y3QgYnJjbWZfaWYgKmlmcCwgY29uc3QgdTggKmtleSwgdTE2IGtleV9sZW4sIHUxNiBmbGFncyk7XG4gaW50IGJyY21mX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0XHQgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpO1xuK1x0XHRcdCAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKTtcbiBcbiAjZW5kaWYgLyogQlJDTUZNQUNfQ0ZHODAyMTFfSCAqL1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jeXcvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcbmluZGV4IDg3Mzc1NGJlNTE3NGIuLjU0NWViOWFhZTk2NjAgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY3l3L2NvcmUuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2N5dy9jb3JlLmNcbkBAIC0xMDAsNyArMTAwLDcgQEAgc3RhdGljIGludCBicmNtZl9jeXdfYWN0aXZhdGVfZXZlbnRzKHN0cnVjdCBicmNtZl9pZiAqaWZwKVxuIFxuIHN0YXRpY1xuIGludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLVx0XHQgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0ICpjb29raWUpXG4rXHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcgPSB3aXBoeV90b19jZmcod2lwaHkpO1xuIFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuID0gcGFyYW1zLVx1MDAzZWNoYW47XG5AQCAtMTIzLDcgKzEyMyw2IEBAIGludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0aWYgKCFpZWVlODAyMTFfaXNfYXV0aChtZ210LVx1MDAzZWZyYW1lX2NvbnRyb2wpKVxuIFx0XHRyZXR1cm4gYnJjbWZfY2ZnODAyMTFfbWdtdF90eCh3aXBoeSwgd2RldiwgcGFyYW1zLCBjb29raWUpO1xuIFxuLVx0KmNvb2tpZSA9IDA7XG4gXHR2aWYgPSBjb250YWluZXJfb2Yod2Rldiwgc3RydWN0IGJyY21mX2NmZzgwMjExX3ZpZiwgd2Rldik7XG4gXG4gXHRyZWluaXRfY29tcGxldGlvbihcdTAwMjZ2aWYtXHUwMDNlbWdtdF90eCk7XG5AQCAtMTU1LDcgKzE1NCw3IEBAIGludCBicmNtZl9jeXdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFxuIFx0bWVtY3B5KFx1MDAyNm1mX3BhcmFtcy1cdTAwM2VkYVswXSwgXHUwMDI2bWdtdC1cdTAwM2VkYVswXSwgRVRIX0FMRU4pO1xuIFx0bWVtY3B5KFx1MDAyNm1mX3BhcmFtcy1cdTAwM2Vic3NpZFswXSwgXHUwMDI2bWdtdC1cdTAwM2Vic3NpZFswXSwgRVRIX0FMRU4pO1xuLVx0bWZfcGFyYW1zLVx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKCpjb29raWUpO1xuK1x0bWZfcGFyYW1zLVx1MDAzZXBhY2tldF9pZCA9IGNwdV90b19sZTMyKGNvb2tpZSk7XG4gXHRtZW1jcHkobWZfcGFyYW1zLVx1MDAzZWRhdGEsIFx1MDAyNmJ1ZltET1QxMV9NR01UX0hEUl9MRU5dLFxuIFx0ICAgICAgIGxlMTZfdG9fY3B1KG1mX3BhcmFtcy1cdTAwM2VsZW4pKTtcbiBcbkBAIC0xODcsOCArMTg2LDcgQEAgaW50IGJyY21mX2N5d19tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHR9XG4gXG4gdHhfc3RhdHVzOlxuLVx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIGFjayxcbi1cdFx0XHRcdEdGUF9LRVJORUwpO1xuK1x0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgY29va2llLCBidWYsIGxlbiwgYWNrLCBHRlBfS0VSTkVMKTtcbiBmcmVlOlxuIFx0a2ZyZWUobWZfcGFyYW1zKTtcbiBcdHJldHVybiBlcnI7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXG5pbmRleCBjN2Q3YjM1YWIxMjUzLi4zMmEwMTVkNmI3Njk4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmNcbkBAIC05NzksMTAgKzk3OSw4IEBAIGJyY21mX3AycF9kaXNjb3Zlcl9saXN0ZW4oc3RydWN0IGJyY21mX3AycF9pbmZvICpwMnAsIHUxNiBjaGFubmVsLCB1MzIgZHVyYXRpb24pXG4gXHRwMnAtXHUwMDNlY2ZnLVx1MDAzZWQxMWluZi5lbmNjaHNwZWMoXHUwMDI2Y2gpO1xuIFx0ZXJyID0gYnJjbWZfcDJwX3NldF9kaXNjb3Zlcl9zdGF0ZSh2aWYtXHUwMDNlaWZwLCBXTF9QMlBfRElTQ19TVF9MSVNURU4sXG4gXHRcdFx0XHRcdCAgIGNoLmNoc3BlYywgKHUxNilkdXJhdGlvbik7XG4tXHRpZiAoIWVycikge1xuK1x0aWYgKCFlcnIpXG4gXHRcdHNldF9iaXQoQlJDTUZfUDJQX1NUQVRVU19ESVNDT1ZFUl9MSVNURU4sIFx1MDAyNnAycC1cdTAwM2VzdGF0dXMpO1xuLVx0XHRwMnAtXHUwMDNlcmVtYWluX29uX2NoYW5uZWxfY29va2llKys7XG4tXHR9XG4gZXhpdDpcbiBcdHJldHVybiBlcnI7XG4gfVxuQEAgLTEwMDAsNyArOTk4LDcgQEAgYnJjbWZfcDJwX2Rpc2NvdmVyX2xpc3RlbihzdHJ1Y3QgYnJjbWZfcDJwX2luZm8gKnAycCwgdTE2IGNoYW5uZWwsIHUzMiBkdXJhdGlvbilcbiAgKi9cbiBpbnQgYnJjbWZfcDJwX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW5uZWwsXG4tXHRcdFx0XHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLFxuK1x0XHRcdFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgY29va2llLFxuIFx0XHRcdFx0Y29uc3QgdTggKnJ4X2FkZHIpXG4ge1xuIFx0c3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyA9IHdpcGh5X3RvX2NmZyh3aXBoeSk7XG5AQCAtMTAyMCw4ICsxMDE4LDggQEAgaW50IGJyY21mX3AycF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRnb3RvIGV4aXQ7XG4gXG4gXHRtZW1jcHkoXHUwMDI2cDJwLVx1MDAzZXJlbWFpbl9vbl9jaGFubmVsLCBjaGFubmVsLCBzaXplb2YoKmNoYW5uZWwpKTtcbi1cdCpjb29raWUgPSBwMnAtXHUwMDNlcmVtYWluX29uX2NoYW5uZWxfY29va2llO1xuLVx0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCAqY29va2llLCBjaGFubmVsLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7XG4rXHRwMnAtXHUwMDNlcmVtYWluX29uX2NoYW5uZWxfY29va2llID0gY29va2llO1xuK1x0Y2ZnODAyMTFfcmVhZHlfb25fY2hhbm5lbCh3ZGV2LCBjb29raWUsIGNoYW5uZWwsIGR1cmF0aW9uLCBHRlBfS0VSTkVMKTtcbiBcbiBleGl0OlxuIFx0cmV0dXJuIGVycjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmhcbmluZGV4IDlmM2YwMWFkZTJiNzcuLjcwNzgwMDk0OTE3MDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaFxuQEAgLTE1Nyw3ICsxNTcsNyBAQCBpbnQgYnJjbWZfcDJwX3NjYW5fcHJlcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV92aWYgKnZpZik7XG4gaW50IGJyY21mX3AycF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0c3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsLFxuLVx0XHRcdFx0dW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcbitcdFx0XHRcdHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSxcbiBcdFx0XHRcdGNvbnN0IHU4ICpyeF9hZGRyKTtcbiBpbnQgYnJjbWZfcDJwX25vdGlmeV9saXN0ZW5fY29tcGxldGUoc3RydWN0IGJyY21mX2lmICppZnAsXG4gXHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBicmNtZl9ldmVudF9tc2cgKmUsXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFydmVsbC9td2lmaWV4L2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY1xuaW5kZXggOGVjMmQyMmE4YzMzYS4uN2ExYmEzMmYxZmIzNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hcnZlbGwvbXdpZmlleC9jZmc4MDIxMS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYXJ2ZWxsL213aWZpZXgvY2ZnODAyMTEuY1xuQEAgLTE5Niw3ICsxOTYsNyBAQCBtd2lmaWV4X2Zvcm1fbWdtdF9mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuKVxuICAqL1xuIHN0YXRpYyBpbnRcbiBtd2lmaWV4X2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0XHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxuK1x0XHRcdCBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcbiB7XG4gXHRjb25zdCB1OCAqYnVmID0gcGFyYW1zLVx1MDAzZWJ1ZjtcbiBcdHNpemVfdCBsZW4gPSBwYXJhbXMtXHUwMDNlbGVuO1xuQEAgLTI1OSwxNCArMjU5LDEzIEBAIG13aWZpZXhfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0dHhfaW5mby1cdTAwM2Vwa3RfbGVuID0gcGt0X2xlbjtcbiBcbiBcdG13aWZpZXhfZm9ybV9tZ210X2ZyYW1lKHNrYiwgYnVmLCBsZW4pO1xuLVx0KmNvb2tpZSA9IGdldF9yYW5kb21fdTMyKCkgfCAxO1xuIFxuIFx0aWYgKGllZWU4MDIxMV9pc19hY3Rpb24obWdtdC1cdTAwM2VmcmFtZV9jb250cm9sKSlcbiBcdFx0c2tiID0gbXdpZmlleF9jbG9uZV9za2JfZm9yX3R4X3N0YXR1cyhwcml2LFxuIFx0XHRcdFx0XHRcdCAgICAgIHNrYixcbi1cdFx0XHRcdE1XSUZJRVhfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgY29va2llKTtcbitcdFx0XHRcdE1XSUZJRVhfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgXHUwMDI2Y29va2llKTtcbiBcdGVsc2Vcbi1cdFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4rXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4gXHRcdFx0XHRcdEdGUF9BVE9NSUMpO1xuIFxuIFx0bXdpZmlleF9xdWV1ZV90eF9wa3QocHJpdiwgc2tiKTtcbkBAIC0zMDQsMTMgKzMwMywxMyBAQCBzdGF0aWMgaW50XG4gbXdpZmlleF9jZmc4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0XHRcdCAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXG4rXHRcdFx0XHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXG4gXHRcdFx0XHQgICBjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRzdHJ1Y3QgbXdpZmlleF9wcml2YXRlICpwcml2ID0gbXdpZmlleF9uZXRkZXZfZ2V0X3ByaXYod2Rldi1cdTAwM2VuZXRkZXYpO1xuIFx0aW50IHJldDtcbiBcbi1cdGlmICghY2hhbiB8fCAhY29va2llKSB7XG4rXHRpZiAoIWNoYW4pIHtcbiBcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBFUlJPUiwgXCJJbnZhbGlkIHBhcmFtZXRlciBmb3IgUk9DXFxuXCIpO1xuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbkBAIC0zMjYsMTUgKzMyNSwxNCBAQCBtd2lmaWV4X2NmZzgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0XHRcdCBkdXJhdGlvbik7XG4gXG4gXHRpZiAoIXJldCkge1xuLVx0XHQqY29va2llID0gZ2V0X3JhbmRvbV91MzIoKSB8IDE7XG4tXHRcdHByaXYtXHUwMDNlcm9jX2NmZy5jb29raWUgPSAqY29va2llO1xuK1x0XHRwcml2LVx1MDAzZXJvY19jZmcuY29va2llID0gY29va2llO1xuIFx0XHRwcml2LVx1MDAzZXJvY19jZmcuY2hhbiA9ICpjaGFuO1xuIFxuLVx0XHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sXG4rXHRcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLFxuIFx0XHRcdFx0XHQgIGR1cmF0aW9uLCBHRlBfQVRPTUlDKTtcbiBcbiBcdFx0bXdpZmlleF9kYmcocHJpdi1cdTAwM2VhZGFwdGVyLCBJTkZPLFxuLVx0XHRcdCAgICBcImluZm86IFJPQywgY29va2llID0gMHglbGx4XFxuXCIsICpjb29raWUpO1xuK1x0XHRcdCAgICBcImluZm86IFJPQywgY29va2llID0gMHglbGx4XFxuXCIsIGNvb2tpZSk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gcmV0O1xuQEAgLTQ1NjAsNyArNDU1OCw3IEBAIG13aWZpZXhfY2ZnODAyMTFfZGlzYXNzb2NpYXRlKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gc3RhdGljIGludFxuIG13aWZpZXhfY2ZnODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdCAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqcGVlcixcbi1cdFx0XHQgICAgdTY0ICpjb29raWUpXG4rXHRcdFx0ICAgIHU2NCBjb29raWUpXG4ge1xuIFx0LyogaG9zdGFwZCBsb29rcyBmb3IgTkw4MDIxMV9DTURfUFJPQkVfQ0xJRU5UIHN1cHBvcnQ7IG90aGVyd2lzZSxcbiBcdCAqIGl0IHJlcXVpcmVzIG1vbml0b3ItbW9kZSBzdXBwb3J0ICh3aGljaCBtd2lmaWV4IGRvZXNuJ3Qgc3VwcG9ydCkuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWljcm9jaGlwL3dpbGMxMDAwL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuY1xuaW5kZXggNjY1NGZjZTRkZWQ4NC4uYmIyNzQ4YTE5MzI5NCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21pY3JvY2hpcC93aWxjMTAwMC9jZmc4MDIxMS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9taWNyb2NoaXAvd2lsYzEwMDAvY2ZnODAyMTEuY1xuQEAgLTExMDAsMjQgKzExMDAsMTkgQEAgc3RhdGljIHZvaWQgd2lsY193ZmlfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChzdHJ1Y3Qgd2lsY192aWYgKnZpZiwgdTY0IGNvb2tpZSlcbiBzdGF0aWMgaW50IHJlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0ICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdCAgICAgc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFuLFxuLVx0XHRcdCAgICAgdW5zaWduZWQgaW50IGR1cmF0aW9uLCB1NjQgKmNvb2tpZSxcbitcdFx0XHQgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSxcbiBcdFx0XHQgICAgIGNvbnN0IHU4ICpyeF9hZGRyKVxuIHtcbiBcdGludCByZXQgPSAwO1xuIFx0c3RydWN0IHdpbGNfdmlmICp2aWYgPSBuZXRkZXZfcHJpdih3ZGV2LVx1MDAzZW5ldGRldik7XG4gXHRzdHJ1Y3Qgd2lsY19wcml2ICpwcml2ID0gXHUwMDI2dmlmLVx1MDAzZXByaXY7XG4tXHR1NjQgaWQ7XG4gXG4gXHRpZiAod2Rldi1cdTAwM2VpZnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVApIHtcbiBcdFx0bmV0ZGV2X2RiZyh2aWYtXHUwMDNlbmRldiwgXCJSZXF1aXJlZCB3aGlsZSBpbiBBUCBtb2RlXFxuXCIpO1xuIFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuIFxuLVx0aWQgPSArK3ByaXYtXHUwMDNlaW5jX3JvY19jb29raWU7XG4tXHRpZiAoaWQgPT0gMClcbi1cdFx0aWQgPSArK3ByaXYtXHUwMDNlaW5jX3JvY19jb29raWU7XG4tXG4tXHRyZXQgPSB3aWxjX3JlbWFpbl9vbl9jaGFubmVsKHZpZiwgaWQsIGNoYW4tXHUwMDNlaHdfdmFsdWUsXG4rXHRyZXQgPSB3aWxjX3JlbWFpbl9vbl9jaGFubmVsKHZpZiwgY29va2llLCBjaGFuLVx1MDAzZWh3X3ZhbHVlLFxuIFx0XHRcdFx0ICAgICB3aWxjX3dmaV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKTtcbiBcdGlmIChyZXQpXG4gXHRcdHJldHVybiByZXQ7XG5AQCAtMTEyNSwxMiArMTEyMCwxMSBAQCBzdGF0aWMgaW50IHJlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHR2aWYtXHUwMDNld2lsYy1cdTAwM2VvcF9jaCA9IGNoYW4tXHUwMDNlaHdfdmFsdWU7XG4gXG4gXHRwcml2LVx1MDAzZXJlbWFpbl9vbl9jaF9wYXJhbXMubGlzdGVuX2NoID0gY2hhbjtcbi1cdHByaXYtXHUwMDNlcmVtYWluX29uX2NoX3BhcmFtcy5saXN0ZW5fY29va2llID0gaWQ7XG4tXHQqY29va2llID0gaWQ7XG4rXHRwcml2LVx1MDAzZXJlbWFpbl9vbl9jaF9wYXJhbXMubGlzdGVuX2Nvb2tpZSA9IGNvb2tpZTtcbiBcdHByaXYtXHUwMDNlcDJwX2xpc3Rlbl9zdGF0ZSA9IHRydWU7XG4gXHRwcml2LVx1MDAzZXJlbWFpbl9vbl9jaF9wYXJhbXMubGlzdGVuX2R1cmF0aW9uID0gZHVyYXRpb247XG4gXG4tXHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sIGR1cmF0aW9uLCBHRlBfS0VSTkVMKTtcbitcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLCBkdXJhdGlvbiwgR0ZQX0tFUk5FTCk7XG4gXHRtb2RfdGltZXIoXHUwMDI2dmlmLVx1MDAzZWhpZl9kcnYtXHUwMDNlcmVtYWluX29uX2NoX3RpbWVyLFxuIFx0XHQgIGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKGR1cmF0aW9uICsgMTAwMCkpO1xuIFxuQEAgLTExNTMsNyArMTE0Nyw3IEBAIHN0YXRpYyBpbnQgY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gc3RhdGljIGludCBtZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdCAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdCAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLFxuLVx0XHQgICB1NjQgKmNvb2tpZSlcbitcdFx0ICAgdTY0IGNvb2tpZSlcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4gPSBwYXJhbXMtXHUwMDNlY2hhbjtcbiBcdHVuc2lnbmVkIGludCB3YWl0ID0gcGFyYW1zLVx1MDAzZXdhaXQ7XG5AQCAtMTE3MCw4ICsxMTY0LDcgQEAgc3RhdGljIGludCBtZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRjb25zdCB1OCAqdmVuZG9yX2llO1xuIFx0aW50IHJldCA9IDA7XG4gXG4tXHQqY29va2llID0gZ2V0X3JhbmRvbV91MzIoKTtcbi1cdHByaXYtXHUwMDNldHhfY29va2llID0gKmNvb2tpZTtcbitcdHByaXYtXHUwMDNldHhfY29va2llID0gY29va2llO1xuIFx0bWdtdCA9IChjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKilidWY7XG4gXG4gXHRpZiAoIWllZWU4MDIxMV9pc19tZ210KG1nbXQtXHUwMDNlZnJhbWVfY29udHJvbCkpXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbnhwL254cHdpZmkvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL254cC9ueHB3aWZpL2NmZzgwMjExLmNcbmluZGV4IDRmOWUyMGY3MjgxMTQuLmM4MjBmMDhkMjgzNTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ueHAvbnhwd2lmaS9jZmc4MDIxMS5jXG5AQCAtMTUwLDcgKzE1MCw3IEBAIG54cHdpZmlfZm9ybV9tZ210X2ZyYW1lKHN0cnVjdCBza19idWZmICpza2IsIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pXG4gLyogY2ZnODAyMTEgb3BlcmF0aW9uIGhhbmRsZXIgdG8gdHJhbnNtaXQgYSBtYW5hZ2VtZW50IGZyYW1lLiAqL1xuIHN0YXRpYyBpbnRcbiBueHB3aWZpX2NmZzgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0XHQgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxuK1x0XHRcdCBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSlcbiB7XG4gXHRjb25zdCB1OCAqYnVmID0gcGFyYW1zLVx1MDAzZWJ1ZjtcbiBcdHNpemVfdCBsZW4gPSBwYXJhbXMtXHUwMDNlbGVuO1xuQEAgLTIxMiwxNCArMjEyLDEzIEBAIG54cHdpZmlfY2ZnODAyMTFfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0dHhfaW5mby1cdTAwM2Vwa3RfbGVuID0gcGt0X2xlbjtcbiBcbiBcdG54cHdpZmlfZm9ybV9tZ210X2ZyYW1lKHNrYiwgYnVmLCBsZW4pO1xuLVx0KmNvb2tpZSA9IG54cHdpZmlfcm9jX2Nvb2tpZShwcml2LVx1MDAzZWFkYXB0ZXIpO1xuIFxuIFx0aWYgKGllZWU4MDIxMV9pc19hY3Rpb24obWdtdC1cdTAwM2VmcmFtZV9jb250cm9sKSlcbiBcdFx0c2tiID0gbnhwd2lmaV9jbG9uZV9za2JfZm9yX3R4X3N0YXR1cyhwcml2LFxuIFx0XHRcdFx0XHRcdCAgICAgIHNrYixcbi1cdFx0XHRcdE5YUFdJRklfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgY29va2llKTtcbitcdFx0XHRcdE5YUFdJRklfQlVGX0ZMQUdfQUNUSU9OX1RYX1NUQVRVUywgXHUwMDI2Y29va2llKTtcbiBcdGVsc2Vcbi1cdFx0Y2ZnODAyMTFfbWdtdF90eF9zdGF0dXMod2RldiwgKmNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4rXHRcdGNmZzgwMjExX21nbXRfdHhfc3RhdHVzKHdkZXYsIGNvb2tpZSwgYnVmLCBsZW4sIHRydWUsXG4gXHRcdFx0XHRcdEdGUF9BVE9NSUMpO1xuIFxuIFx0bnhwd2lmaV9xdWV1ZV90eF9wa3QocHJpdiwgc2tiKTtcbkBAIC0yNTQsMTQgKzI1MywxNCBAQCBzdGF0aWMgaW50XG4gbnhwd2lmaV9jZmc4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0XHRcdCAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXG4rXHRcdFx0XHQgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXG4gXHRcdFx0XHQgICBjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRzdHJ1Y3Qgbnhwd2lmaV9wcml2YXRlICpwcml2ID0gbnhwd2lmaV9uZXRkZXZfZ2V0X3ByaXYod2Rldi1cdTAwM2VuZXRkZXYpO1xuIFx0c3RydWN0IG54cHdpZmlfYWRhcHRlciAqYWRhcHRlciA9IHByaXYtXHUwMDNlYWRhcHRlcjtcbiBcdGludCByZXQ7XG4gXG4tXHRpZiAoIWNoYW4gfHwgIWNvb2tpZSkge1xuK1x0aWYgKCFjaGFuKSB7XG4gXHRcdG54cHdpZmlfZGJnKGFkYXB0ZXIsIEVSUk9SLCBcIkludmFsaWQgcGFyYW1ldGVyIGZvciBST0NcXG5cIik7XG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFx0fVxuQEAgLTI3NywxNSArMjc2LDE0IEBAIG54cHdpZmlfY2ZnODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdFx0IGR1cmF0aW9uKTtcbiBcbiBcdGlmICghcmV0KSB7XG4tXHRcdCpjb29raWUgPSBueHB3aWZpX3JvY19jb29raWUoYWRhcHRlcik7XG4tXHRcdHByaXYtXHUwMDNlcm9jX2NmZy5jb29raWUgPSAqY29va2llO1xuK1x0XHRwcml2LVx1MDAzZXJvY19jZmcuY29va2llID0gY29va2llO1xuIFx0XHRwcml2LVx1MDAzZXJvY19jZmcuY2hhbiA9ICpjaGFuO1xuIFxuLVx0XHRjZmc4MDIxMV9yZWFkeV9vbl9jaGFubmVsKHdkZXYsICpjb29raWUsIGNoYW4sXG4rXHRcdGNmZzgwMjExX3JlYWR5X29uX2NoYW5uZWwod2RldiwgY29va2llLCBjaGFuLFxuIFx0XHRcdFx0XHQgIGR1cmF0aW9uLCBHRlBfQVRPTUlDKTtcbiBcbiBcdFx0bnhwd2lmaV9kYmcoYWRhcHRlciwgSU5GTyxcbi1cdFx0XHQgICAgXCJpbmZvOiBST0MsIGNvb2tpZSA9IDB4JWxseFxcblwiLCAqY29va2llKTtcbitcdFx0XHQgICAgXCJpbmZvOiBST0MsIGNvb2tpZSA9IDB4JWxseFxcblwiLCBjb29raWUpO1xuIFx0fVxuIFxuIFx0cmV0dXJuIHJldDtcbkBAIC0zNjE4LDcgKzM2MTYsNyBAQCBueHB3aWZpX2NmZzgwMjExX2Rpc2Fzc29jaWF0ZShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIHN0YXRpYyBpbnRcbiBueHB3aWZpX2NmZzgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHQgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqcGVlcixcbi1cdFx0XHQgICAgICB1NjQgKmNvb2tpZSlcbitcdFx0XHQgICAgICB1NjQgY29va2llKVxuIHtcbiBcdC8qXG4gXHQgKiBob3N0YXBkIGxvb2tzIGZvciBOTDgwMjExX0NNRF9QUk9CRV9DTElFTlQgc3VwcG9ydDsgb3RoZXJ3aXNlLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3F1YW50ZW5uYS9xdG5mbWFjL2NmZzgwMjExLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9xdWFudGVubmEvcXRuZm1hYy9jZmc4MDIxMS5jXG5pbmRleCA5ZTQ0Yzg1ZDIwNTFjLi40NWUyYjdhZTk2MzMzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY2ZnODAyMTEuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcXVhbnRlbm5hL3F0bmZtYWMvY2ZnODAyMTEuY1xuQEAgLTQ0Niw3ICs0NDYsNyBAQCBxdG5mX3VwZGF0ZV9tZ210X2ZyYW1lX3JlZ2lzdHJhdGlvbnMoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcbiBzdGF0aWMgaW50XG4gcXRuZl9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tXHQgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcbitcdCAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IHF0bmZfdmlmICp2aWYgPSBxdG5mX25ldGRldl9nZXRfcHJpdih3ZGV2LVx1MDAzZW5ldGRldik7XG4gXHRjb25zdCBzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXRfZnJhbWUgPSAodm9pZCAqKXBhcmFtcy1cdTAwM2VidWY7XG5AQCAtNDU0LDggKzQ1NCw2IEBAIHF0bmZfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0dTE2IGZsYWdzID0gMDtcbiBcdHUxNiBmcmVxO1xuIFxuLVx0KmNvb2tpZSA9IHNob3J0X2Nvb2tpZTtcbi1cbiBcdGlmIChwYXJhbXMtXHUwMDNlb2ZmY2hhbilcbiBcdFx0ZmxhZ3MgfD0gUUxJTktfRlJBTUVfVFhfRkxBR19PRkZDSEFOO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzIzYnMvb3NfZGVwL2lvY3RsX2NmZzgwMjExLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcyM2JzL29zX2RlcC9pb2N0bF9jZmc4MDIxMS5jXG5pbmRleCA2YTk3YWZkODlkYzc4Li5iNThkZGExMjlmZjY2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvaW9jdGxfY2ZnODAyMTEuY1xuKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MjNicy9vc19kZXAvaW9jdGxfY2ZnODAyMTEuY1xuQEAgLTI1MzAsNyArMjUzMCw3IEBAIHN0YXRpYyBpbnQgX2NmZzgwMjExX3J0d19tZ210X3R4KHN0cnVjdCBhZGFwdGVyICpwYWRhcHRlciwgdTggdHhfY2gsIGNvbnN0IHU4ICpiXG4gXG4gc3RhdGljIGludCBjZmc4MDIxMV9ydHdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0c3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsXG4tXHRcdFx0XHR1NjQgKmNvb2tpZSlcbitcdFx0XHRcdHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXYgPSB3ZGV2X3RvX25kZXYod2Rldik7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4gPSBwYXJhbXMtXHUwMDNlY2hhbjtcbkBAIC0yNTUyLDExICsyNTUyLDggQEAgc3RhdGljIGludCBjZmc4MDIxMV9ydHdfbWdtdF90eChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFxuIFx0cGFkYXB0ZXIgPSBydHdfbmV0ZGV2X3ByaXYobmRldik7XG4gXG4tXHQvKiBjb29raWUgZ2VuZXJhdGlvbiAqL1xuLVx0KmNvb2tpZSA9ICh1bnNpZ25lZCBsb25nKWJ1Zjtcbi1cbiBcdC8qIGluZGljYXRlIGFjayBiZWZvcmUgaXNzdWUgZnJhbWUgdG8gYXZvaWQgcmFjaW5nIHdpdGggcnNwIGZyYW1lICovXG4tXHRydHdfY2ZnODAyMTFfbWdtdF90eF9zdGF0dXMocGFkYXB0ZXIsICpjb29raWUsIGJ1ZiwgbGVuLCBhY2ssIEdGUF9LRVJORUwpO1xuK1x0cnR3X2NmZzgwMjExX21nbXRfdHhfc3RhdHVzKHBhZGFwdGVyLCBjb29raWUsIGJ1ZiwgbGVuLCBhY2ssIEdGUF9LRVJORUwpO1xuIFxuIFx0aWYgKCFydHdfYWN0aW9uX2ZyYW1lX3BhcnNlKGJ1ZiwgbGVuLCBcdTAwMjZjYXRlZ29yeSwgXHUwMDI2YWN0aW9uKSlcbiBcdFx0Z290byBleGl0O1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2NmZzgwMjExLmggYi9pbmNsdWRlL25ldC9jZmc4MDIxMS5oXG5pbmRleCBkY2JiMGU1NWMzMmVjLi45N2MxNmQ0ZmYxMjcxIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxuKysrIGIvaW5jbHVkZS9uZXQvY2ZnODAyMTEuaFxuQEAgLTUxMDgsNyArNTEwOCw4IEBAIHN0cnVjdCBtZ210X2ZyYW1lX3JlZ3Mge1xuICAqIEB0ZGxzX29wZXI6IFBlcmZvcm0gYSBoaWdoLWxldmVsIFRETFMgb3BlcmF0aW9uIChlLmcuIFRETFMgbGluayBzZXR1cCkuXG4gICpcbiAgKiBAcHJvYmVfcGVlcjogcHJvYmUgYSBjb25uZWN0ZWQgcGVlciAoQVA6IFNUQSBNQUMgcmVxdWlyZWQ7IFNUQTogbm8gTUFDKSxcbi0gKlx0bXVzdCByZXR1cm4gYSBjb29raWUgdGhhdCBpcyBsYXRlciBwYXNzZWQgdG8gY2ZnODAyMTFfcHJvYmVfc3RhdHVzKCkuXG4rICpcdG11c3QgdXNlIHRoZSBAY29va2llIGFzIHByb3ZpZGVkIHdoaWNoIGlzIGxhdGVyIHBhc3NlZCB0b1xuKyAqXHRjZmc4MDIxMV9wcm9iZV9zdGF0dXMoKS5cbiAgKlxuICAqIEBzZXRfbm9hY2tfbWFwOiBTZXQgdGhlIE5vQWNrIE1hcCBmb3IgdGhlIFRJRHMuXG4gICpcbkBAIC01MjE5LDcgKzUyMjAsOCBAQCBzdHJ1Y3QgbWdtdF9mcmFtZV9yZWdzIHtcbiAgKiAgICAgdXNlciBzcGFjZVxuICAqXG4gICogQHR4X2NvbnRyb2xfcG9ydDogVFggYSBjb250cm9sIHBvcnQgZnJhbWUgKEVBUG9MKS4gIFRoZSBub2VuY3J5cHQgcGFyYW1ldGVyXG4tICpcdHRlbGxzIHRoZSBkcml2ZXIgdGhhdCB0aGUgZnJhbWUgc2hvdWxkIG5vdCBiZSBlbmNyeXB0ZWQuXG4rICpcdHRlbGxzIHRoZSBkcml2ZXIgdGhhdCB0aGUgZnJhbWUgc2hvdWxkIG5vdCBiZSBlbmNyeXB0ZWQuIEEgQGNvb2tpZVxuKyAqXHR2YWx1ZSBvZiAwIG1lYW5zIHRoZSBjYWxsZXIgZG9lcyBub3Qgd2FudCBUWCBzdGF0dXMgcmVwb3J0aW5nLlxuICAqXG4gICogQGdldF9mdG1fcmVzcG9uZGVyX3N0YXRzOiBSZXRyaWV2ZSBGVE0gcmVzcG9uZGVyIHN0YXRpc3RpY3MsIGlmIGF2YWlsYWJsZS5cbiAgKlx0U3RhdGlzdGljcyBzaG91bGQgYmUgY3VtdWxhdGl2ZSwgY3VycmVudGx5IG5vIHdheSB0byByZXNldCBpcyBwcm92aWRlZC5cbkBAIC01NDU2LDE0ICs1NDU4LDE0IEBAIHN0cnVjdCBjZmc4MDIxMV9vcHMge1xuIFx0XHRcdFx0ICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdFx0ICAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXG4gXHRcdFx0XHQgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbixcbi1cdFx0XHRcdCAgICAgdTY0ICpjb29raWUsIGNvbnN0IHU4ICpyeF9hZGRyKTtcbitcdFx0XHRcdCAgICAgdTY0IGNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpO1xuIFx0aW50XHQoKmNhbmNlbF9yZW1haW5fb25fY2hhbm5lbCkoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdFx0ICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHRcdCAgICB1NjQgY29va2llKTtcbiBcbiBcdGludFx0KCptZ210X3R4KShzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdCAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLFxuLVx0XHRcdCAgIHU2NCAqY29va2llKTtcbitcdFx0XHQgICB1NjQgY29va2llKTtcbiBcdGludFx0KCptZ210X3R4X2NhbmNlbF93YWl0KShzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICAgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0XHQgICAgICAgdTY0IGNvb2tpZSk7XG5AQCAtNTUxMCw3ICs1NTEyLDcgQEAgc3RydWN0IGNmZzgwMjExX29wcyB7XG4gXHRcdFx0ICAgICBjb25zdCB1OCAqcGVlciwgZW51bSBubDgwMjExX3RkbHNfb3BlcmF0aW9uIG9wZXIpO1xuIFxuIFx0aW50XHQoKnByb2JlX3BlZXIpKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tXHRcdFx0ICAgICAgY29uc3QgdTggKnBlZXIsIHU2NCAqY29va2llKTtcbitcdFx0XHQgICAgICBjb25zdCB1OCAqcGVlciwgdTY0IGNvb2tpZSk7XG4gXG4gXHRpbnRcdCgqc2V0X25vYWNrX21hcCkoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdCAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbkBAIC01NjA4LDcgKzU2MTAsNyBAQCBzdHJ1Y3QgY2ZnODAyMTFfb3BzIHtcbiBcdFx0XHRcdCAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sXG4gXHRcdFx0XHQgICBjb25zdCB1OCAqZGVzdCwgY29uc3QgX19iZTE2IHByb3RvLFxuIFx0XHRcdFx0ICAgY29uc3QgYm9vbCBub2VuY3J5cHQsIGludCBsaW5rX2lkLFxuLVx0XHRcdFx0ICAgdTY0ICpjb29raWUpO1xuK1x0XHRcdFx0ICAgdTY0IGNvb2tpZSk7XG4gXG4gXHRpbnRcdCgqZ2V0X2Z0bV9yZXNwb25kZXJfc3RhdHMpKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gXHRcdFx0XHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9jZmcuYyBiL25ldC9tYWM4MDIxMS9jZmcuY1xuaW5kZXggMGE5MjQ3YmUyNmFmYS4uMGMyYzdhZmQ1OWM0YSAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9jZmcuY1xuKysrIGIvbmV0L21hYzgwMjExL2NmZy5jXG5AQCAtNDgzMSwxOSArNDgzMSw2IEBAIGludCBpZWVlODAyMTFfY2hhbm5lbF9zd2l0Y2goc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdHJldHVybiBfX2llZWU4MDIxMV9jaGFubmVsX3N3aXRjaCh3aXBoeSwgZGV2LCBwYXJhbXMpO1xuIH1cbiBcbi11NjQgaWVlZTgwMjExX21nbXRfdHhfY29va2llKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuLXtcbi1cdGxvY2tkZXBfYXNzZXJ0X3dpcGh5KGxvY2FsLVx1MDAzZWh3LndpcGh5KTtcbi1cbi1cdGxvY2FsLVx1MDAzZXJvY19jb29raWVfY291bnRlcisrO1xuLVxuLVx0Lyogd293LCB5b3Ugd3JhcHBlZCA2NCBiaXRzIC4uLiBtb3JlIGxpa2VseSBhIGJ1ZyAqL1xuLVx0aWYgKFdBUk5fT04obG9jYWwtXHUwMDNlcm9jX2Nvb2tpZV9jb3VudGVyID09IDApKVxuLVx0XHRsb2NhbC1cdTAwM2Vyb2NfY29va2llX2NvdW50ZXIrKztcbi1cbi1cdHJldHVybiBsb2NhbC1cdTAwM2Vyb2NfY29va2llX2NvdW50ZXI7XG4tfVxuLVxuIGludCBpZWVlODAyMTFfYXR0YWNoX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICAgICB1NjQgKmNvb2tpZSwgZ2ZwX3QgZ2ZwKVxuIHtcbkBAIC00ODY4LDcgKzQ4NTUsNiBAQCBpbnQgaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0SUVFRTgwMjExX1NLQl9DQihza2IpLVx1MDAzZXN0YXR1c19kYXRhX2lkciA9IDE7XG4gXHRJRUVFODAyMTFfU0tCX0NCKHNrYiktXHUwMDNlc3RhdHVzX2RhdGEgPSBpZDtcbiBcbi1cdCpjb29raWUgPSBpZWVlODAyMTFfbWdtdF90eF9jb29raWUobG9jYWwpO1xuIFx0SUVFRTgwMjExX1NLQl9DQihhY2tfc2tiKS1cdTAwM2VhY2suY29va2llID0gKmNvb2tpZTtcbiBcbiBcdHJldHVybiAwO1xuQEAgLTQ5NTQsNyArNDk0MCw3IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3NldF9yZWtleV9kYXRhKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4gfVxuIFxuIHN0YXRpYyBpbnQgaWVlZTgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi1cdFx0XHRcdGNvbnN0IHU4ICpwZWVyLCB1NjQgKmNvb2tpZSlcbitcdFx0XHRcdGNvbnN0IHU4ICpwZWVyLCB1NjQgY29va2llKVxuIHtcbiBcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhID0gSUVFRTgwMjExX0RFVl9UT19TVUJfSUYoZGV2KTtcbiBcdHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsID0gc2RhdGEtXHUwMDNlbG9jYWw7XG5AQCAtNTA2MSw3ICs1MDQ3LDcgQEAgc3RhdGljIGludCBpZWVlODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0aWYgKHFvcylcbiBcdFx0bnVsbGZ1bmMtXHUwMDNlcW9zX2N0cmwgPSBjcHVfdG9fbGUxNig3KTtcbiBcbi1cdHJldCA9IGllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYihsb2NhbCwgc2tiLCBjb29raWUsIEdGUF9BVE9NSUMpO1xuK1x0cmV0ID0gaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKGxvY2FsLCBza2IsIFx1MDAyNmNvb2tpZSwgR0ZQX0FUT01JQyk7XG4gXHRpZiAocmV0KSB7XG4gXHRcdGtmcmVlX3NrYihza2IpO1xuIFx0XHRyZXR1cm4gcmV0O1xuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oIGIvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmhcbmluZGV4IGExZWY4OGZlODQ2ZGQuLjU3NjFlOTYyMTQ5MTQgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaFxuKysrIGIvbmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmhcbkBAIC0xNzEwLDggKzE3MTAsNiBAQCBzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsIHtcbiBcdHN0cnVjdCBsaXN0X2hlYWQgcm9jX2xpc3Q7XG4gXHRzdHJ1Y3Qgd2lwaHlfd29yayBod19yb2Nfc3RhcnQsIGh3X3JvY19kb25lO1xuIFx0dW5zaWduZWQgbG9uZyBod19yb2Nfc3RhcnRfdGltZTtcbi1cdHU2NCByb2NfY29va2llX2NvdW50ZXI7XG4tXG4gXHRzdHJ1Y3QgaWRyIGFja19zdGF0dXNfZnJhbWVzO1xuIFx0c3BpbmxvY2tfdCBhY2tfc3RhdHVzX2xvY2s7XG4gXG5AQCAtMTk5MSw3ICsxOTg5LDYgQEAgdTY0IGllZWU4MDIxMV9yZXNldF9lcnBfaW5mbyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XG4gXG4gdm9pZCBpZWVlODAyMTFfaGFuZGxlX3F1ZXVlZF9mcmFtZXMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpO1xuIFxuLXU2NCBpZWVlODAyMTFfbWdtdF90eF9jb29raWUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpO1xuIGludCBpZWVlODAyMTFfYXR0YWNoX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICAgICB1NjQgKmNvb2tpZSwgZ2ZwX3QgZ2ZwKTtcbiBcbkBAIC0yMTUzLDEyICsyMTUwLDEyIEBAIHZvaWQgaWVlZTgwMjExX3JvY19wdXJnZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdFx0XHQgc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpO1xuIGludCBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0XHRcdHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXG4rXHRcdFx0XHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXG4gXHRcdFx0XHRjb25zdCB1OCAqcnhfYWRkcik7XG4gaW50IGllZWU4MDIxMV9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiBcdFx0XHRcdCAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LCB1NjQgY29va2llKTtcbiBpbnQgaWVlZTgwMjExX21nbXRfdHgoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2Rldixcbi1cdFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKTtcbitcdFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpO1xuIGludCBpZWVlODAyMTFfbWdtdF90eF9jYW5jZWxfd2FpdChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuIFx0XHRcdFx0ICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LCB1NjQgY29va2llKTtcbiBcbkBAIC0yMjM3LDcgKzIyMzQsNyBAQCB2b2lkIF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRcdCAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgdTMyIGluZm9fZmxhZ3MsXG4gXHRcdFx0XHQgIHUzMiBjdHJsX2ZsYWdzLFxuLVx0XHRcdFx0ICB1NjQgKmNvb2tpZSk7XG4rXHRcdFx0XHQgIHU2NCBjb29raWUpO1xuIHN0cnVjdCBza19idWZmICpcbiBpZWVlODAyMTFfYnVpbGRfZGF0YV90ZW1wbGF0ZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcdFx0XHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaW5mb19mbGFncyk7XG5AQCAtMjI1MSw3ICsyMjQ4LDcgQEAgdm9pZCBpZWVlODAyMTFfY2xlYXJfZmFzdF94bWl0KHN0cnVjdCBzdGFfaW5mbyAqc3RhKTtcbiBpbnQgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdCAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sXG4gXHRcdFx0ICAgICAgY29uc3QgdTggKmRlc3QsIF9fYmUxNiBwcm90bywgYm9vbCB1bmVuY3J5cHRlZCxcbi1cdFx0XHQgICAgICBpbnQgbGlua19pZCwgdTY0ICpjb29raWUpO1xuK1x0XHRcdCAgICAgIGludCBsaW5rX2lkLCB1NjQgY29va2llKTtcbiBpbnQgaWVlZTgwMjExX3Byb2JlX21lc2hfbGluayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdCAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4pO1xuIHZvaWQgX19pZWVlODAyMTFfeG1pdF9mYXN0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMgYi9uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jXG5pbmRleCAyYmNlYjczNzE3YzY2Li43YWNlZjgwZDVmMWZiIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL29mZmNoYW5uZWwuY1xuKysrIGIvbmV0L21hYzgwMjExL29mZmNoYW5uZWwuY1xuQEAgLTYwMiwxNCArNjAyLDEyIEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuIFxuIFx0LypcbiBcdCAqIGNvb2tpZSBpcyBlaXRoZXIgdGhlIHJvYyBjb29raWUgKGZvciBub3JtYWwgcm9jKVxuLVx0ICogb3IgdGhlIFNLQiAoZm9yIG1nbXQgVFgpXG4rXHQgKiBvciB0aGUgbWdtdF90eCBjb29raWU7IGJvdGggYXJlIHByZS1hc3NpZ25lZCBieSBjZmc4MDIxMVxuIFx0ICovXG4tXHRpZiAoIXR4c2tiKSB7XG4tXHRcdHJvYy1cdTAwM2Vjb29raWUgPSBpZWVlODAyMTFfbWdtdF90eF9jb29raWUobG9jYWwpO1xuLVx0XHQqY29va2llID0gcm9jLVx1MDAzZWNvb2tpZTtcbi1cdH0gZWxzZSB7XG4rXHRpZiAoIXR4c2tiKVxuK1x0XHRyb2MtXHUwMDNlY29va2llID0gKmNvb2tpZTtcbitcdGVsc2VcbiBcdFx0cm9jLVx1MDAzZW1nbXRfdHhfY29va2llID0gKmNvb2tpZTtcbi1cdH1cbiBcbiBcdHJlcSA9IHdpcGh5X2RlcmVmZXJlbmNlKGxvY2FsLVx1MDAzZWh3LndpcGh5LCBsb2NhbC1cdTAwM2VzY2FuX3JlcSk7XG4gXG5AQCAtNzA0LDcgKzcwMiw3IEBAIHN0YXRpYyBpbnQgaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuIFxuIGludCBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcbiBcdFx0XHRcdHN0cnVjdCBpZWVlODAyMTFfY2hhbm5lbCAqY2hhbixcbi1cdFx0XHRcdHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0ICpjb29raWUsXG4rXHRcdFx0XHR1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCBjb29raWUsXG4gXHRcdFx0XHRjb25zdCB1OCAqcnhfYWRkcilcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9XREVWX1RPX1NVQl9JRih3ZGV2KTtcbkBAIC03MTMsNyArNzExLDcgQEAgaW50IGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0bG9ja2RlcF9hc3NlcnRfd2lwaHkobG9jYWwtXHUwMDNlaHcud2lwaHkpO1xuIFxuIFx0cmV0dXJuIGllZWU4MDIxMV9zdGFydF9yb2Nfd29yayhsb2NhbCwgc2RhdGEsIGNoYW4sXG4tXHRcdFx0XHRcdGR1cmF0aW9uLCBjb29raWUsIE5VTEwsXG4rXHRcdFx0XHRcdGR1cmF0aW9uLCBcdTAwMjZjb29raWUsIE5VTEwsXG4gXHRcdFx0XHRcdElFRUU4MDIxMV9ST0NfVFlQRV9OT1JNQUwpO1xuIH1cbiBcbkBAIC04MTAsNyArODA4LDcgQEAgaW50IGllZWU4MDIxMV9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSxcbiB9XG4gXG4gaW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tXHRcdCAgICAgIHN0cnVjdCBjZmc4MDIxMV9tZ210X3R4X3BhcmFtcyAqcGFyYW1zLCB1NjQgKmNvb2tpZSlcbitcdFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfV0RFVl9UT19TVUJfSUYod2Rldik7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xuQEAgLTEwMTYsMTggKzEwMTQsMTEgQEAgaW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdC8qIG1ha2UgYSBjb3B5IHRvIHByZXNlcnZlIHRoZSBmcmFtZSBjb250ZW50c1xuIFx0XHQgKiBpbiBjYXNlIG9mIGVuY3J5cHRpb24uXG4gXHRcdCAqL1xuLVx0XHRyZXQgPSBpZWVlODAyMTFfYXR0YWNoX2Fja19za2IobG9jYWwsIHNrYiwgY29va2llLCBHRlBfS0VSTkVMKTtcbitcdFx0cmV0ID0gaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiKGxvY2FsLCBza2IsIFx1MDAyNmNvb2tpZSwgR0ZQX0tFUk5FTCk7XG4gXHRcdGlmIChyZXQpIHtcbiBcdFx0XHRrZnJlZV9za2Ioc2tiKTtcbiBcdFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXHRcdH1cbi1cdH0gZWxzZSB7XG4tXHRcdC8qIEFzc2lnbiBhIGR1bW15IG5vbi16ZXJvIGNvb2tpZSwgaXQncyBub3Qgc2VudCB0b1xuLVx0XHQgKiB1c2Vyc3BhY2UgaW4gdGhpcyBjYXNlIGJ1dCB3ZSByZWx5IG9uIGl0cyB2YWx1ZVxuLVx0XHQgKiBpbnRlcm5hbGx5IGluIHRoZSBuZWVkX29mZmNoYW4gY2FzZSB0byBkaXN0aW5ndWlzaFxuLVx0XHQgKiBtZ210LXR4IGZyb20gcmVtYWluLW9uLWNoYW5uZWwuXG4tXHRcdCAqL1xuLVx0XHQqY29va2llID0gMHhmZmZmZmZmZjtcbiBcdH1cbiBcbiBcdGlmICghbmVlZF9vZmZjaGFuKSB7XG5AQCAtMTA0NCw3ICsxMDM1LDcgQEAgaW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXG4gXHQvKiBUaGlzIHdpbGwgaGFuZGxlIGFsbCBraW5kcyBvZiBjb2FsZXNjaW5nIGFuZCBpbW1lZGlhdGUgVFggKi9cbiBcdHJldCA9IGllZWU4MDIxMV9zdGFydF9yb2Nfd29yayhsb2NhbCwgc2RhdGEsIHBhcmFtcy1cdTAwM2VjaGFuLFxuLVx0XHRcdFx0ICAgICAgIHBhcmFtcy1cdTAwM2V3YWl0LCBjb29raWUsIHNrYixcbitcdFx0XHRcdCAgICAgICBwYXJhbXMtXHUwMDNld2FpdCwgXHUwMDI2Y29va2llLCBza2IsXG4gXHRcdFx0XHQgICAgICAgSUVFRTgwMjExX1JPQ19UWVBFX01HTVRfVFgpO1xuIFx0aWYgKHJldClcbiBcdFx0aWVlZTgwMjExX2ZyZWVfdHhza2IoXHUwMDI2bG9jYWwtXHUwMDNlaHcsIHNrYik7XG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3RkbHMuYyBiL25ldC9tYWM4MDIxMS90ZGxzLmNcbmluZGV4IGZmZDU3NWE4ZDE4OGYuLmRjMmY2NjJmZTRjNDYgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvdGRscy5jXG4rKysgYi9uZXQvbWFjODAyMTEvdGRscy5jXG5AQCAtMTEyMSw3ICsxMTIxLDcgQEAgaWVlZTgwMjExX3RkbHNfcHJlcF9tZ210X3BhY2tldChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0LyogZGlzYWJsZSBib3R0b20gaGFsdmVzIHdoZW4gZW50ZXJpbmcgdGhlIFR4IHBhdGggKi9cbiBcdGxvY2FsX2JoX2Rpc2FibGUoKTtcbiBcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIGZsYWdzLFxuLVx0XHRcdFx0ICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsIE5VTEwpO1xuK1x0XHRcdFx0ICAgICBJRUVFODAyMTFfVFhfQ1RSTF9NTE9fTElOS19VTlNQRUMsIDApO1xuIFx0bG9jYWxfYmhfZW5hYmxlKCk7XG4gXG4gXHRyZXR1cm4gcmV0O1xuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS90eC5jIGIvbmV0L21hYzgwMjExL3R4LmNcbmluZGV4IDBjZjVmNmVjNzVlNjcuLjQ1NGE4NzJiMjU5YTMgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvdHguY1xuKysrIGIvbmV0L21hYzgwMjExL3R4LmNcbkBAIC0yNTgzLDcgKzI1ODMsNyBAQCBpbnQgaWVlZTgwMjExX2xvb2t1cF9yYV9zdGEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gc3RhdGljIHUxNiBpZWVlODAyMTFfc3RvcmVfYWNrX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdFx0XHRcdCAgIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0XHQgICB1MzIgKmluZm9fZmxhZ3MsXG4tXHRcdFx0XHQgICB1NjQgKmNvb2tpZSlcbitcdFx0XHRcdCAgIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IHNrX2J1ZmYgKmFja19za2I7XG4gXHR1MTYgaW5mb19pZCA9IDA7XG5AQCAtMjYwNSwxMCArMjYwNSw4IEBAIHN0YXRpYyB1MTYgaWVlZTgwMjExX3N0b3JlX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4gXHRcdGlmIChpZCBcdTAwM2U9IDApIHtcbiBcdFx0XHRpbmZvX2lkID0gaWQ7XG4gXHRcdFx0KmluZm9fZmxhZ3MgfD0gSUVFRTgwMjExX1RYX0NUTF9SRVFfVFhfU1RBVFVTO1xuLVx0XHRcdGlmIChjb29raWUpIHtcbi1cdFx0XHRcdCpjb29raWUgPSBpZWVlODAyMTFfbWdtdF90eF9jb29raWUobG9jYWwpO1xuLVx0XHRcdFx0SUVFRTgwMjExX1NLQl9DQihhY2tfc2tiKS1cdTAwM2VhY2suY29va2llID0gKmNvb2tpZTtcbi1cdFx0XHR9XG4rXHRcdFx0aWYgKGNvb2tpZSlcbitcdFx0XHRcdElFRUU4MDIxMV9TS0JfQ0IoYWNrX3NrYiktXHUwMDNlYWNrLmNvb2tpZSA9IGNvb2tpZTtcbiBcdFx0fSBlbHNlIHtcbiBcdFx0XHRrZnJlZV9za2IoYWNrX3NrYik7XG4gXHRcdH1cbkBAIC0yNjUzLDcgKzI2NTEsNyBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfcmVtb3ZlX2Fja19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsIHUxNiBpbmZvX2lkKVxuIHN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX2J1aWxkX2hkcihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcdFx0XHRcdFx0ICAgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIGluZm9fZmxhZ3MsXG4gXHRcdFx0XHRcdCAgIHN0cnVjdCBzdGFfaW5mbyAqc3RhLCB1MzIgY3RybF9mbGFncyxcbi1cdFx0XHRcdFx0ICAgdTY0ICpjb29raWUpXG4rXHRcdFx0XHRcdCAgIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbiBcdHN0cnVjdCBpZWVlODAyMTFfdHhfaW5mbyAqaW5mbztcbkBAIC00Mzc0LDcgKzQzNzIsNyBAQCB2b2lkIF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdFx0XHRcdCAgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHRcdCAgdTMyIGluZm9fZmxhZ3MsXG4gXHRcdFx0XHQgIHUzMiBjdHJsX2ZsYWdzLFxuLVx0XHRcdFx0ICB1NjQgKmNvb2tpZSlcbitcdFx0XHRcdCAgdTY0IGNvb2tpZSlcbiB7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSA9IElFRUU4MDIxMV9ERVZfVE9fU1VCX0lGKGRldik7XG4gXHRzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCA9IHNkYXRhLVx1MDAzZWxvY2FsO1xuQEAgLTQ1NjksNyArNDU2Nyw3IEBAIHN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbG9fbXVsdGljYXN0X3R4X29uZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBcdFx0cmV0dXJuO1xuIFxuIFx0Y3RybF9mbGFncyB8PSB1MzJfZW5jb2RlX2JpdHMobGlua19pZCwgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTkspO1xuLVx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChvdXQsIHNkYXRhLVx1MDAzZWRldiwgMCwgY3RybF9mbGFncywgTlVMTCk7XG4rXHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KG91dCwgc2RhdGEtXHUwMDNlZGV2LCAwLCBjdHJsX2ZsYWdzLCAwKTtcbiB9XG4gXG4gc3RhdGljIHZvaWQgaWVlZTgwMjExX21sb19tdWx0aWNhc3RfdHgoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbkBAIC00NTg0LDggKzQ1ODIsNyBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfbWxvX211bHRpY2FzdF90eChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRjdHJsX2ZsYWdzIHw9IHUzMl9lbmNvZGVfYml0cyhfX2ZmcyhsaW5rcyksXG4gXHRcdFx0XHRcdCAgICAgIElFRUU4MDIxMV9UWF9DVFJMX01MT19MSU5LKTtcbiBcbi1cdFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIHNkYXRhLVx1MDAzZWRldiwgMCwgY3RybF9mbGFncyxcbi1cdFx0XHRcdFx0ICAgICBOVUxMKTtcbitcdFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIHNkYXRhLVx1MDAzZWRldiwgMCwgY3RybF9mbGFncywgMCk7XG4gXHRcdHJldHVybjtcbiBcdH1cbiBcbkBAIC00NjI3LDcgKzQ2MjQsNyBAQCBuZXRkZXZfdHhfdCBpZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHR3aGlsZSAoKHNrYiA9IF9fc2tiX2RlcXVldWUoXHUwMDI2cXVldWUpKSlcbiBcdFx0XHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgZGV2LCAwLFxuIFx0XHRcdFx0XHRcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLFxuLVx0XHRcdFx0XHRcdCAgICAgTlVMTCk7XG4rXHRcdFx0XHRcdFx0ICAgICAwKTtcbiBcdH0gZWxzZSBpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgKChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICAhaWVlZTgwMjExX2h3X2NoZWNrKFx1MDAyNnNkYXRhLVx1MDAzZWxvY2FsLVx1MDAzZWh3LCBNTE9fTUNBU1RfTVVMVElfTElOS19UWCkpIHx8XG5AQCAtNDYzOCw3ICs0NjM1LDcgQEAgbmV0ZGV2X3R4X3QgaWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBub3JtYWw6XG4gXHRcdF9faWVlZTgwMjExX3N1YmlmX3N0YXJ0X3htaXQoc2tiLCBkZXYsIDAsXG4gXHRcdFx0XHRcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLFxuLVx0XHRcdFx0XHQgICAgIE5VTEwpO1xuK1x0XHRcdFx0XHQgICAgIDApO1xuIFx0fVxuIFxuIFx0cmV0dXJuIE5FVERFVl9UWF9PSztcbkBAIC00NzM3LDcgKzQ3MzQsNyBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfODAyM194bWl0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIFx0XHRcdC8qIGZhbGwgYmFjayB0byBub24tb2ZmbG9hZCBzbG93IHBhdGggKi9cbiBcdFx0XHRfX2llZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHNrYiwgZGV2LCAwLFxuIFx0XHRcdFx0XHRcdCAgICAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLFxuLVx0XHRcdFx0XHRcdCAgICAgTlVMTCk7XG4rXHRcdFx0XHRcdFx0ICAgICAwKTtcbiBcdFx0XHRyZXR1cm47XG4gXHRcdH1cbiBcbkBAIC00NzczLDcgKzQ3NzAsNyBAQCBzdGF0aWMgdm9pZCBpZWVlODAyMTFfODAyM194bWl0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuIFxuIFx0aWYgKHVubGlrZWx5KHNrX3JlcXVlc3RzX3dpZmlfc3RhdHVzKHNrYi1cdTAwM2VzaykpKSB7XG4gXHRcdGluZm8tXHUwMDNlc3RhdHVzX2RhdGEgPSBpZWVlODAyMTFfc3RvcmVfYWNrX3NrYihsb2NhbCwgc2tiLFxuLVx0XHRcdFx0XHRcdFx0ICAgIFx1MDAyNmluZm8tXHUwMDNlZmxhZ3MsIE5VTEwpO1xuK1x0XHRcdFx0XHRcdFx0ICAgIFx1MDAyNmluZm8tXHUwMDNlZmxhZ3MsIDApO1xuIFx0XHRpZiAoaW5mby1cdTAwM2VzdGF0dXNfZGF0YSlcbiBcdFx0XHRpbmZvLVx1MDAzZXN0YXR1c19kYXRhX2lkciA9IDE7XG4gXHR9XG5AQCAtNDkxNiw3ICs0OTEzLDcgQEAgaWVlZTgwMjExX2J1aWxkX2RhdGFfdGVtcGxhdGUoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4gXHR9XG4gXG4gXHRza2IgPSBpZWVlODAyMTFfYnVpbGRfaGRyKHNkYXRhLCBza2IsIGluZm9fZmxhZ3MsIHN0YSxcbi1cdFx0XHRcdCAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLCBOVUxMKTtcbitcdFx0XHRcdCAgSUVFRTgwMjExX1RYX0NUUkxfTUxPX0xJTktfVU5TUEVDLCAwKTtcbiBcdGlmIChJU19FUlIoc2tiKSlcbiBcdFx0Z290byBvdXQ7XG4gXG5AQCAtNjUzMSw3ICs2NTI4LDcgQEAgdm9pZCBpZWVlODAyMTFfdHhfc2tiX3RpZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbiBpbnQgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdCAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sXG4gXHRcdFx0ICAgICAgY29uc3QgdTggKmRlc3QsIF9fYmUxNiBwcm90bywgYm9vbCB1bmVuY3J5cHRlZCxcbi1cdFx0XHQgICAgICBpbnQgbGlua19pZCwgdTY0ICpjb29raWUpXG4rXHRcdFx0ICAgICAgaW50IGxpbmtfaWQsIHU2NCBjb29raWUpXG4ge1xuIFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEgPSBJRUVFODAyMTFfREVWX1RPX1NVQl9JRihkZXYpO1xuIFx0c3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwgPSBzZGF0YS1cdTAwM2Vsb2NhbDtcbkBAIC02NjY2LDcgKzY2NjMsNyBAQCBpbnQgaWVlZTgwMjExX3Byb2JlX21lc2hfbGluayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0bG9jYWxfYmhfZGlzYWJsZSgpO1xuIFx0X19pZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChza2IsIHNrYi1cdTAwM2VkZXYsIDAsXG4gXHRcdFx0XHQgICAgIElFRUU4MDIxMV9UWF9DVFJMX1NLSVBfTVBBVEhfTE9PS1VQLFxuLVx0XHRcdFx0ICAgICBOVUxMKTtcbitcdFx0XHRcdCAgICAgMCk7XG4gXHRsb2NhbF9iaF9lbmFibGUoKTtcbiBcbiBcdHJldHVybiAwO1xuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9jb3JlLmggYi9uZXQvd2lyZWxlc3MvY29yZS5oXG5pbmRleCAxNWQ5ZjdlYjU4YjRkLi5iNDYxMGY2Njg1ZGNiIDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL2NvcmUuaFxuKysrIGIvbmV0L3dpcmVsZXNzL2NvcmUuaFxuQEAgLTQwMiw3ICs0MDIsNyBAQCB2b2lkIGNmZzgwMjExX21sbWVfcHVyZ2VfcmVnaXN0cmF0aW9ucyhzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2KTtcbiBpbnQgY2ZnODAyMTFfbWxtZV9tZ210X3R4KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdFx0XHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdFx0ICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcyxcbi1cdFx0XHQgIHU2NCAqY29va2llKTtcbitcdFx0XHQgIHU2NCBjb29raWUpO1xuIHZvaWQgY2ZnODAyMTFfb3Blcl9hbmRfaHRfY2FwYShzdHJ1Y3QgaWVlZTgwMjExX2h0X2NhcCAqaHRfY2FwYSxcbiBcdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9odF9jYXAgKmh0X2NhcGFfbWFzayk7XG4gdm9pZCBjZmc4MDIxMV9vcGVyX2FuZF92aHRfY2FwYShzdHJ1Y3QgaWVlZTgwMjExX3ZodF9jYXAgKnZodF9jYXBhLFxuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9tbG1lLmMgYi9uZXQvd2lyZWxlc3MvbWxtZS5jXG5pbmRleCA3ODI0YjdhYzI3NzBmLi5hMGQxY2RlMjZmMGM5IDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL21sbWUuY1xuKysrIGIvbmV0L3dpcmVsZXNzL21sbWUuY1xuQEAgLTg5NCw3ICs4OTQsNyBAQCBzdGF0aWMgYm9vbCBjZmc4MDIxMV9hbGxvd2VkX3JhbmRvbV9hZGRyZXNzKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXG4gaW50IGNmZzgwMjExX21sbWVfbWdtdF90eChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4gXHRcdFx0ICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLVx0XHRcdCAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCAqY29va2llKVxuK1x0XHRcdCAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xuIFx0dTE2IHN0eXBlO1xuZGlmZiAtLWdpdCBhL25ldC93aXJlbGVzcy9ubDgwMjExLmMgYi9uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jXG5pbmRleCA4YWRiZWY1ZjA0NDI1Li5hYzg5NWUwMmNkNDExIDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xuKysrIGIvbmV0L3dpcmVsZXNzL25sODAyMTEuY1xuQEAgLTE0NjQyLDggKzE0NjQyLDkgQEAgc3RhdGljIGludCBubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdGdvdG8gZnJlZV9tc2c7XG4gXHR9XG4gXG4rXHRjb29raWUgPSBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpO1xuIFx0ZXJyID0gcmRldl9yZW1haW5fb25fY2hhbm5lbChyZGV2LCB3ZGV2LCBjaGFuZGVmLmNoYW4sXG4tXHRcdFx0XHQgICAgIGR1cmF0aW9uLCBcdTAwMjZjb29raWUsIHJ4X2FkZHIpO1xuK1x0XHRcdFx0ICAgICBkdXJhdGlvbiwgY29va2llLCByeF9hZGRyKTtcbiBcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZnJlZV9tc2c7XG5AQCAtMTQ4ODMsNyArMTQ4ODQsOCBAQCBzdGF0aWMgaW50IG5sODAyMTFfdHhfbWdtdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuIFx0fVxuIFxuIFx0cGFyYW1zLmNoYW4gPSBjaGFuZGVmLmNoYW47XG4tXHRlcnIgPSBjZmc4MDIxMV9tbG1lX21nbXRfdHgocmRldiwgd2RldiwgXHUwMDI2cGFyYW1zLCBcdTAwMjZjb29raWUpO1xuK1x0Y29va2llID0gY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcbitcdGVyciA9IGNmZzgwMjExX21sbWVfbWdtdF90eChyZGV2LCB3ZGV2LCBcdTAwMjZwYXJhbXMsIGNvb2tpZSk7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGZyZWVfbXNnO1xuIFxuQEAgLTE2MzcxLDcgKzE2MzczLDggQEAgc3RhdGljIGludCBubDgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiBcdFx0Z290byBmcmVlX21zZztcbiBcdH1cbiBcbi1cdGVyciA9IHJkZXZfcHJvYmVfcGVlcihyZGV2LCBkZXYsIGFkZHIsIFx1MDAyNmNvb2tpZSk7XG4rXHRjb29raWUgPSBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpO1xuK1x0ZXJyID0gcmRldl9wcm9iZV9wZWVyKHJkZXYsIGRldiwgYWRkciwgY29va2llKTtcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZnJlZV9tc2c7XG4gXG5AQCAtMTg1ODYsMTAgKzE4NTg5LDExIEBAIHN0YXRpYyBpbnQgbmw4MDIxMV90eF9jb250cm9sX3BvcnQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbiBcbiBcdGxpbmtfaWQgPSBubDgwMjExX2xpbmtfaWRfb3JfaW52YWxpZChpbmZvLVx1MDAzZWF0dHJzKTtcbiBcbitcdGNvb2tpZSA9IGRvbnRfd2FpdF9mb3JfYWNrID8gMCA6IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7XG4gXHRlcnIgPSByZGV2X3R4X2NvbnRyb2xfcG9ydChyZGV2LCBkZXYsIGJ1ZiwgbGVuLFxuIFx0XHRcdFx0ICAgZGVzdCwgY3B1X3RvX2JlMTYocHJvdG8pLCBub2VuY3J5cHQsIGxpbmtfaWQsXG4tXHRcdFx0XHQgICBkb250X3dhaXRfZm9yX2FjayA/IE5VTEwgOiBcdTAwMjZjb29raWUpO1xuLVx0aWYgKCFlcnIgXHUwMDI2XHUwMDI2ICFkb250X3dhaXRfZm9yX2FjaylcbitcdFx0XHRcdCAgIGNvb2tpZSk7XG4rXHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgY29va2llKVxuIFx0XHRubF9zZXRfZXh0YWNrX2Nvb2tpZV91NjQoaW5mby1cdTAwM2VleHRhY2ssIGNvb2tpZSk7XG4gXHRyZXR1cm4gZXJyO1xuIH1cbkBAIC0yMjA0Miw2ICsyMjA0NiwxMCBAQCBzdGF0aWMgdm9pZCBubDgwMjExX2ZyYW1lX3R4X3N0YXR1cyhzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0c3RydWN0IHNrX2J1ZmYgKm1zZztcbiBcdHZvaWQgKmhkcjtcbiBcbitcdC8qIHVzZXJzcGFjZSBub3QgaW50ZXJlc3RlZCBpbiB6ZXJvLWNvb2tpZSBzdGF0dXMgKi9cbitcdGlmICghc3RhdHVzLVx1MDAzZWNvb2tpZSlcbitcdFx0cmV0dXJuO1xuK1xuIFx0aWYgKGNvbW1hbmQgPT0gTkw4MDIxMV9DTURfRlJBTUVfVFhfU1RBVFVTKVxuIFx0XHR0cmFjZV9jZmc4MDIxMV9tZ210X3R4X3N0YXR1cyh3ZGV2LCBzdGF0dXMtXHUwMDNlY29va2llLFxuIFx0XHRcdFx0XHQgICAgICBzdGF0dXMtXHUwMDNlYWNrKTtcbmRpZmYgLS1naXQgYS9uZXQvd2lyZWxlc3MvcmRldi1vcHMuaCBiL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oXG5pbmRleCA2YzNiYWQ4YjJkNmY2Li40Njg0OWZlOGQwYjM5IDEwMDY0NFxuLS0tIGEvbmV0L3dpcmVsZXNzL3JkZXYtb3BzLmhcbisrKyBiL25ldC93aXJlbGVzcy9yZGV2LW9wcy5oXG5AQCAtNzM2LDE0ICs3MzYsMTQgQEAgc3RhdGljIGlubGluZSBpbnRcbiByZGV2X3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdFx0ICAgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4gXHRcdCAgICAgICBzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXG4tXHRcdCAgICAgICB1bnNpZ25lZCBpbnQgZHVyYXRpb24sIHU2NCAqY29va2llLCBjb25zdCB1OCAqcnhfYWRkcilcbitcdFx0ICAgICAgIHVuc2lnbmVkIGludCBkdXJhdGlvbiwgdTY0IGNvb2tpZSwgY29uc3QgdTggKnJ4X2FkZHIpXG4ge1xuIFx0aW50IHJldDtcbiBcdHRyYWNlX3JkZXZfcmVtYWluX29uX2NoYW5uZWwoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgd2RldiwgY2hhbiwgZHVyYXRpb24sXG4gXHRcdFx0XHQgICAgIHJ4X2FkZHIpO1xuIFx0cmV0ID0gcmRldi1cdTAwM2VvcHMtXHUwMDNlcmVtYWluX29uX2NoYW5uZWwoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgd2RldiwgY2hhbixcbiBcdFx0XHRcdFx0ICAgZHVyYXRpb24sIGNvb2tpZSwgcnhfYWRkcik7XG4tXHR0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHJldCwgKmNvb2tpZSk7XG4rXHR0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHJldCwgY29va2llKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTc2MSwxMiArNzYxLDEyIEBAIHJkZXZfY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBzdGF0aWMgaW5saW5lIGludCByZGV2X21nbXRfdHgoc3RydWN0IGNmZzgwMjExX3JlZ2lzdGVyZWRfZGV2aWNlICpyZGV2LFxuIFx0XHRcdCAgICAgICBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuIFx0XHRcdCAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcyxcbi1cdFx0XHQgICAgICAgdTY0ICpjb29raWUpXG4rXHRcdFx0ICAgICAgIHU2NCBjb29raWUpXG4ge1xuIFx0aW50IHJldDtcbiBcdHRyYWNlX3JkZXZfbWdtdF90eChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCB3ZGV2LCBwYXJhbXMpO1xuIFx0cmV0ID0gcmRldi1cdTAwM2VvcHMtXHUwMDNlbWdtdF90eChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCB3ZGV2LCBwYXJhbXMsIGNvb2tpZSk7XG4tXHR0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHJldCwgKmNvb2tpZSk7XG4rXHR0cmFjZV9yZGV2X3JldHVybl9pbnRfY29va2llKFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIHJldCwgY29va2llKTtcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuQEAgLTc3NSw3ICs3NzUsNyBAQCBzdGF0aWMgaW5saW5lIGludCByZGV2X3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4gXHRcdFx0XHQgICAgICAgY29uc3Qgdm9pZCAqYnVmLCBzaXplX3QgbGVuLFxuIFx0XHRcdFx0ICAgICAgIGNvbnN0IHU4ICpkZXN0LCBfX2JlMTYgcHJvdG8sXG4gXHRcdFx0XHQgICAgICAgY29uc3QgYm9vbCBub2VuY3J5cHQsIGludCBsaW5rLFxuLVx0XHRcdFx0ICAgICAgIHU2NCAqY29va2llKVxuK1x0XHRcdFx0ICAgICAgIHU2NCBjb29raWUpXG4ge1xuIFx0aW50IHJldDtcbiBcdHRyYWNlX3JkZXZfdHhfY29udHJvbF9wb3J0KFx1MDAyNnJkZXYtXHUwMDNld2lwaHksIGRldiwgYnVmLCBsZW4sXG5AQCAtNzgzLDcgKzc4Myw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IHJkZXZfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdHJldCA9IHJkZXYtXHUwMDNlb3BzLVx1MDAzZXR4X2NvbnRyb2xfcG9ydChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCBkZXYsIGJ1ZiwgbGVuLFxuIFx0XHRcdFx0XHQgZGVzdCwgcHJvdG8sIG5vZW5jcnlwdCwgbGluaywgY29va2llKTtcbiBcdGlmIChjb29raWUpXG4tXHRcdHRyYWNlX3JkZXZfcmV0dXJuX2ludF9jb29raWUoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgcmV0LCAqY29va2llKTtcbitcdFx0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCByZXQsIGNvb2tpZSk7XG4gXHRlbHNlXG4gXHRcdHRyYWNlX3JkZXZfcmV0dXJuX2ludChcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCByZXQpO1xuIFx0cmV0dXJuIHJldDtcbkBAIC05NTAsMTIgKzk1MCwxMiBAQCBzdGF0aWMgaW5saW5lIGludCByZGV2X3RkbHNfb3BlcihzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYsXG4gXG4gc3RhdGljIGlubGluZSBpbnQgcmRldl9wcm9iZV9wZWVyKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcbiBcdFx0XHRcdCAgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKnBlZXIsXG4tXHRcdFx0XHQgIHU2NCAqY29va2llKVxuK1x0XHRcdFx0ICB1NjQgY29va2llKVxuIHtcbiBcdGludCByZXQ7XG4gXHR0cmFjZV9yZGV2X3Byb2JlX3BlZXIoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgZGV2LCBwZWVyKTtcbiBcdHJldCA9IHJkZXYtXHUwMDNlb3BzLVx1MDAzZXByb2JlX3BlZXIoXHUwMDI2cmRldi1cdTAwM2V3aXBoeSwgZGV2LCBwZWVyLCBjb29raWUpO1xuLVx0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCByZXQsICpjb29raWUpO1xuK1x0dHJhY2VfcmRldl9yZXR1cm5faW50X2Nvb2tpZShcdTAwMjZyZGV2LVx1MDAzZXdpcGh5LCByZXQsIGNvb2tpZSk7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIyOjM4LjAwMjc0ODk0M1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg2NjQ4NTQ1NzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ29va2llIEhhbmRsaW5nIFJlZmFjdG9yIGluIGNmZzgwMjExL21hYzgwMjExKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgbG9va3MgbGlrZSBhIGZhaXJseSBzaWduaWZpY2FudCBjaGFuZ2UgdG8gaG93IGNvb2tpZXMgYXJlIGhhbmRsZWQgaW4gc2V2ZXJhbCBjZmc4MDIxMS9tYWM4MDIxMSBmdW5jdGlvbnMuIFNwZWNpZmljYWxseSwgdGhleSdyZSBtb3ZpbmcgZnJvbSBwYXNzaW5nIGEgYHU2NCAqY29va2llYCAoYSBwb2ludGVyIHRvIGEgY29va2llKSB0byBhIGB1NjQgY29va2llYCAocGFzc2luZyB0aGUgY29va2llIGJ5IHZhbHVlKSBpbiBzZXZlcmFsIGtleSBmdW5jdGlvbnMuIEZ1bmN0aW9ucyBhZmZlY3RlZCBpbmNsdWRlIGByZW1haW5fb25fY2hhbm5lbGAsIGBtZ210X3R4YCwgYHByb2JlX3BlZXJgLCBhbmQgYHR4X2NvbnRyb2xfcG9ydGAuXG5cblRoZSBjaGFuZ2VzIGFyZSBxdWl0ZSB3aWRlc3ByZWFkOyB0aGUgcGF0Y2ggdG91Y2hlcyBhIGJ1bmNoIG9mIGRyaXZlcnM6IGF0aDZrbCwgd2lsNjIxMCwgYnJjbWZtYWMsIG13aWZpZXgsIHdpbGMxMDAwLCBueHB3aWZpLCBxdG5mbWFjLCBydGw4NzIzYnMsIGFuZCBhbHNvIHRoZSBjb3JlIGBjZmc4MDIxMS5oYCwgbWFjODAyMTEgKGNmZy5jLCBvZmZjaGFubmVsLmMsIHRkbHMuYywgdHguYyksIGFuZCB3aXJlbGVzcyBjb3JlIGhlYWRlcnMuIFRoZSBmaWxlcyBpbmNsdWRlIGBjb3JlLmhgLCBgbWxtZS5jYCwgYG5sODAyMTEuY2AsIGFuZCBgcmRldi1vcHMuaGAuXG5cblRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseSBub3QganVzdCBhIGNvc21ldGljIG9uZSwgYmVjYXVzZSBpdCBmdW5kYW1lbnRhbGx5IGFsdGVycyBob3cgY29va2llcyBhcmUgZ2VuZXJhdGVkIGFuZCBwYXNzZWQgYXJvdW5kLiBUaGUgb2xkIHdheSwgdGhlIGRyaXZlcnMgb3IgbWFjODAyMTEgd291bGQgZ2VuZXJhdGUgdGhlIGNvb2tpZSBhbmQgdGhlbiB1c2UgdGhlIHBvaW50ZXIgdG8gc2VuZCBpdCBiYWNrLiBUaGUgbmV3IHdheT8gYG5sODAyMTFgIGlzIG5vdyByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyB0aGUgY29va2llIHVzaW5nIGBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpYCBhbmQgdGhlbiBwYXNzaW5nIGl0IGJ5IHZhbHVlIHRvIHRoZSBkcml2ZXJzL21hYzgwMjExLlxuXG5XYWl0IGEgc2Vjb25kLCBsZXQgbWUganVzdCBwYXVzZSBhbmQgcXVpY2tseSBjaGVjayBzb21ldGhpbmcuIGBjZmc4MDIxMV9hc3NpZ25fY29va2llYC4uLiBpcyB0aGF0IGEgYnJhbmQgbmV3IGZ1bmN0aW9uPyBJIHNob3VsZCBwcm9iYWJseSB0YWtlIGEgbG9vayBhdCBpdCB0byBzZWUgaG93IGl0IHdvcmtzLiBMZXQncyBkbyBhIHF1aWNrIGdyZXAgZm9yIGBjZmc4MDIxMV9hc3NpZ25fY29va2llYCB0byBtYWtlIHN1cmUgaXQgZXhpc3RzLCBhbmQgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUuIEl0J3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGNvcmUgaGVscGVyIGZ1bmN0aW9ucyBvcGVyYXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzcwOSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5OSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIyOjQ2LjY2NzYxNzQ5NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTUyMTcyMDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNmZzgwMjExX2Fzc2lnbl9jb29raWVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL2NvcmUuaD0xMzc9Y2ZnODAyMTFfcmRldl9mcmVlX3dvd2xhbihzdHJ1Y3QgY2ZnODAyMTFfcmVnaXN0ZXJlZF9kZXZpY2UgKnJkZXYpXFxuLS1cXG5uZXQvd2lyZWxlc3MvY29yZS5oLTE1NS1cXG5uZXQvd2lyZWxlc3MvY29yZS5oOjE1NjpzdGF0aWMgaW5saW5lIHU2NCBjZmc4MDIxMV9hc3NpZ25fY29va2llKHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldilcXG5uZXQvd2lyZWxlc3MvY29yZS5oLTE1Ny17XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTExOTUyPXN0YXRpYyBpbnQgbmw4MDIxMV9zdGFydF9zY2hlZF9zY2FuKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTExOTgxLVxcdGlmICh3YW50X211bHRpIFxcdTAwMjZcXHUwMDI2IHJkZXYtXFx1MDAzZXdpcGh5Lm1heF9zY2hlZF9zY2FuX3JlcXMgXFx1MDAzZSAxKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTE5ODI6XFx0XFx0c2NoZWRfc2Nhbl9yZXEtXFx1MDAzZXJlcWlkID0gY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTExOTgzLVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xNDU3MD1zdGF0aWMgaW50IG5sODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTQ2NDQtXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxNDY0NTpcXHRjb29raWUgPSBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpO1xcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTQ2NDYtXFx0ZXJyID0gcmRldl9yZW1haW5fb25fY2hhbm5lbChyZGV2LCB3ZGV2LCBjaGFuZGVmLmNoYW4sXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE0NzY0PXN0YXRpYyBpbnQgbmw4MDIxMV90eF9tZ210KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0ODg2LVxcdHBhcmFtcy5jaGFuID0gY2hhbmRlZi5jaGFuO1xcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTQ4ODc6XFx0Y29va2llID0gY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0ODg4LVxcdGVyciA9IGNmZzgwMjExX21sbWVfbWdtdF90eChyZGV2LCB3ZGV2LCBcXHUwMDI2cGFyYW1zLCBjb29raWUpO1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xNjMyOD1zdGF0aWMgaW50IG5sODAyMTFfcHJvYmVfcGVlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNjM3NS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE2Mzc2OlxcdGNvb2tpZSA9IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNjM3Ny1cXHRlcnIgPSByZGV2X3Byb2JlX3BlZXIocmRldiwgZGV2LCBhZGRyLCBjb29raWUpO1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xNjgwNj1zdGF0aWMgaW50IG5sODAyMTFfbmFuX2FkZF9mdW5jKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE2ODM2LVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTY4Mzc6XFx0ZnVuYy1cXHUwMDNlY29va2llID0gY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE2ODM4LVxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xODUzNj1zdGF0aWMgaW50IG5sODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE4NTkxLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTg1OTI6XFx0Y29va2llID0gZG9udF93YWl0X2Zvcl9hY2sgPyAwIDogY2ZnODAyMTFfYXNzaWduX2Nvb2tpZShyZGV2KTtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE4NTkzLVxcdGVyciA9IHJkZXZfdHhfY29udHJvbF9wb3J0KHJkZXYsIGRldiwgYnVmLCBsZW4sXFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jPTQxND1pbnQgbmw4MDIxMV9wbXNyX3N0YXJ0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvd2lyZWxlc3MvcG1zci5jLTUyMS1cXHR9XFxubmV0L3dpcmVsZXNzL3Btc3IuYzo1MjI6XFx0cmVxLVxcdTAwM2Vjb29raWUgPSBjZmc4MDIxMV9hc3NpZ25fY29va2llKHJkZXYpO1xcbm5ldC93aXJlbGVzcy9wbXNyLmMtNTIzLVxcdHJlcS1cXHUwMDNlbmxfcG9ydGlkID0gaW5mby1cXHUwMDNlc25kX3BvcnRpZDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjI6NDkuMjE5Nzk0MTU2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjU3OTAwNzQxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXaXJlbGVzcyBTdGFjayBBUEkgQ2hhbmdlIFJldmlldyoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBoaXR0aW5nIHRoZSBjb3JlIG9mIHRoZSB3aXJlbGVzcyBzdGFjaywgc3BlY2lmaWNhbGx5IHRoZSBgY2ZnODAyMTFgIGFuZCBgbWFjODAyMTFgIEFQSXMgZm9yIGByZW1haW5fb25fY2hhbm5lbGAsIGBtZ210X3R4YCwgYHByb2JlX3BlZXJgLCBhbmQgYHR4X2NvbnRyb2xfcG9ydGAuIFRoYXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBub3QganVzdCBhIGNvc21ldGljIG9uZSwgbWVhbmluZyBpdCdzIGhvdyB3ZSBoYW5kbGUgY29va2llcyBhbmQgcGFzcyB0aGVtIHVwIHRvIHVzZXJzcGFjZS4gRGVmaW5pdGVseSwgZnV6emluZyBpcyBnb2luZyB0byBiZSBjcnVjaWFsIGhlcmUgdG8gZW5zdXJlIHdlIGhhdmVuJ3QgaW50cm9kdWNlZCBhbnkgdnVsbmVyYWJpbGl0aWVzIG9yIHVuZXhwZWN0ZWQgYmVoYXZpb3IgY2hhbmdlcy5cblxuVGhlIGtleSBzeW1ib2xzIHRvIGtlZXAgYW4gZXllIG9uIGFyZSB0aGUgYG5sODAyMTFfKmAgYW5kIGBpZWVlODAyMTFfKmAgdmFyaWF0aW9ucyBvZiB0aG9zZSBmdW5jdGlvbnMuIFRoZXkncmUgdGhlIGVudHJ5IHBvaW50cyBmcm9tIG5ldGxpbmsgYW5kIHRoZSBjb3JlIG1hYzgwMjExIHN0YWNrLCByZXNwZWN0aXZlbHkuIFdlIG5lZWQgdG8gYmUgZXNwZWNpYWxseSBtaW5kZnVsIG9mIHRoZSBpbnRlcmFjdGlvbnMgYW5kIGNvb2tpZSBoYW5kbGluZyBiZXR3ZWVuIHRoZXNlIHBvaW50cy5cblxuQXMgZm9yIGNvbmZpZ3VyYXRpb24sIGBDT05GSUdfTUFDODAyMTFgIGFuZCBgQ09ORklHX0NGRzgwMjExYCBhcmUgdGhlIG9idmlvdXMgb25lcy4gQmV5b25kIHRoYXQsIHdoaWxlIGBDT05GSUdfTkw4MDIxMV9URVNUTU9ERWAgbWlnaHQgcHJvdmlkZSBzb21lIHVzZWZ1bCBkZWJ1Z2dpbmcgY2FwYWJpbGl0aWVzLCBpdCdzIG5vdCBzdHJpY3RseSByZXF1aXJlZCBmb3IgdGhlc2UgY29yZSBubDgwMjExIGNvbW1hbmRzLiBOb3csIHRoaXMgaXMgaW50ZXJlc3RpbmcuLi5RRU1VIGNhbiBlbXVsYXRlIGBtYWM4MDIxMV9od3NpbWAuIFRoYXQgbWFrZXMgdGVzdGluZyBhIGxvdCBlYXNpZXIuIFNvLCB0byBlbnN1cmUgYSBzb2xpZCB0ZXN0aW5nIGVudmlyb25tZW50LCB3ZSBhYnNvbHV0ZWx5IG5lZWQgYENPTkZJR19NQUM4MDIxMV9IV1NJTWAgZW5hYmxlZC4gVGhhdCB3aWxsIGdpdmUgdXMgYSBjb250cm9sbGVkIGVudmlyb25tZW50IHRvIHB1dCB0aGUgcGF0Y2ggdGhyb3VnaCBpdHMgcGFjZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1OTY0LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIyOjU1Ljc5ODgwNDUxOFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTg3OTM4Nzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUM4MDIxMV9IV1NJTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWc6MTpjb25maWcgTUFDODAyMTFfSFdTSU1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWctMi1cXHR0cmlzdGF0ZSBcXFwiU2ltdWxhdGVkIHJhZGlvIHRlc3RpbmcgdG9vbCBmb3IgbWFjODAyMTFcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIyOjU4LjM4Njc1MTY4N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NDY0OTE0NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIE1BQzgwMjExX0hXU0lNIEtjb25maWcgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZGVwZW5kZW5jaWVzIG9mIGBNQUM4MDIxMV9IV1NJTWAuIFRpbWUgdG8gZGl2ZSBpbnRvIGBkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWdgLiBJIGtub3cgdGhpcyBpcyB3aGVyZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGlzIHZpcnR1YWwgaGFyZHdhcmUgc2ltdWxhdGlvbiByZXNpZGUuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIHN0YW5kYXJkIGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzIGluIHRoZXJlLiBJJ20gbG9va2luZyBmb3IgY2x1ZXMgYWJvdXQgb3RoZXIgZmVhdHVyZXMgb3IgZHJpdmVycyBpdCBtaWdodCBiZSBsaW5rZWQgdG8uIFRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgd2hhdCBmZWF0dXJlcyBpdCBlbmFibGVzIGFuZCBwb3RlbnRpYWxseSB3aGF0IG90aGVyIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IGJlY29tZSByZWxldmFudC4gVGhpcyBpcyBhIGNvbW1vbiBmaXJzdCBzdGVwIHdoZW4gaW52ZXN0aWdhdGluZyBob3cgYSBjb21wbGV4IGZlYXR1cmUgbGlrZSBgTUFDODAyMTFfSFdTSU1gIGludGVncmF0ZXMgd2l0aCB0aGUgd2lkZXIga2VybmVsIG5ldHdvcmsgc3RhY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2NzQ3LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjM6MDIuMDMzMjQ1MjhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTc2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHRjb25maWcgTUFDODAyMTFfSFdTSU1cXG4gICAyOlxcdFxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgcmFkaW8gdGVzdGluZyB0b29sIGZvciBtYWM4MDIxMVxcXCJcXG4gICAzOlxcdFxcdGRlcGVuZHMgb24gTUFDODAyMTFcXG4gICA0OlxcdFxcdGhlbHBcXG4gICA1OlxcdFxcdCAgVGhpcyBkcml2ZXIgaXMgYSBkZXZlbG9wZXIgdGVzdGluZyB0b29sIHRoYXQgY2FuIGJlIHVzZWQgdG8gdGVzdFxcbiAgIDY6XFx0XFx0ICBJRUVFIDgwMi4xMSBuZXR3b3JraW5nIHN0YWNrIChtYWM4MDIxMSkgZnVuY3Rpb25hbGl0eS4gVGhpcyBpcyBub3RcXG4gICA3OlxcdFxcdCAgbmVlZGVkIGZvciBub3JtYWwgd2lyZWxlc3MgTEFOIHVzYWdlIGFuZCBpcyBvbmx5IGZvciB0ZXN0aW5nLiBTZWVcXG4gICA4OlxcdFxcdCAgRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL21hYzgwMjExX2h3c2ltIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvd1xcbiAgIDk6XFx0XFx0ICB0byB1c2UgdGhpcyB0b29sLlxcbiAgMTA6XFx0XFxuICAxMTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGUgd2lsbCBiZVxcbiAgMTI6XFx0XFx0ICBjYWxsZWQgbWFjODAyMTFfaHdzaW0uICBJZiB1bnN1cmUsIHNheSBOLlxcbiAgMTM6XFx0XFxuICAxNDpcXHRjb25maWcgVklSVF9XSUZJXFxuICAxNTpcXHRcXHR0cmlzdGF0ZSBcXFwiV2lmaSB3cmFwcGVyIGZvciBldGhlcm5ldCBkcml2ZXJzXFxcIlxcbiAgMTY6XFx0XFx0ZGVwZW5kcyBvbiBDRkc4MDIxMVxcbiAgMTc6XFx0XFx0aGVscFxcbiAgMTg6XFx0XFx0ICBUaGlzIG9wdGlvbiBhZGRzIHN1cHBvcnQgZm9yIGV0aGVybmV0IGNvbm5lY3Rpb25zIHRvIGFwcGVhciBhcyBpZiB0aGV5XFxuICAxOTpcXHRcXHQgIGFyZSB3aWZpIGNvbm5lY3Rpb25zIHRocm91Z2ggYSBzcGVjaWFsIHJ0bmV0bGluayBkZXZpY2UuXFxuICAyMDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjM6MDIuMDMzMzEyNjkxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY0NDYxMzIzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgV2lyZWxlc3MgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSBzZWUgdGhlIGRlcGVuZGVuY3kgY2hhaW46IGBNQUM4MDIxMV9IV1NJTWAgcmVsaWVzIG9uIGBNQUM4MDIxMWAsIHdoaWNoIGluIHR1cm4gcmVsaWVzIG9uIGBDRkc4MDIxMWAuIFRoYXQgbWVhbnMgZm9yIHRoaXMgdG8gd29yaywgSSdsbCBuZWVkIHRvIGVuc3VyZSBhbGwgdGhyZWUgYXJlIGVuYWJsZWQ6IGBDRkc4MDIxMWAsIGBNQUM4MDIxMWAsIGFuZCBgTUFDODAyMTFfSFdTSU1gLiBUaGF0J3MgdGhlIGJhc2VsaW5lLlxuXG5Ob3csIGxldCdzIGRpZyBhIGxpdHRsZSBkZWVwZXIuIFRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIGNvcmUgb2YgYGNmZzgwMjExYCBhbmQgYG1hYzgwMjExYCwgd2hpY2ggbWFrZXMgbWUgdGhpbmsgaXQncyBmdW5jdGlvbmFsLiBUaGVzZSBjaGFuZ2VzIGFyZSBkZWZpbml0ZWx5IGFjY2Vzc2libGUgdGhyb3VnaCBgbmw4MDIxMWAsIHdoaWNoIGlzIHByb21pc2luZy4gVGhlIGZhY3QgdGhhdCB0aGUgcGF0Y2ggYWxzbyB0b3VjaGVzIHZhcmlvdXMgZHJpdmVycyBpcyBjb25jZXJuaW5nIGJlY2F1c2UgSSBjYW4ndCBwb3NzaWJseSB0ZXN0IHRoZW0gYWxsIGluIGEgUUVNVSBlbnZpcm9ubWVudC4gSG93ZXZlciwgdGhlIHVzZSBvZiBgbWFjODAyMTFfaHdzaW1gIGlzIGEgc21hcnQgbW92ZS4gSXQgc2hvdWxkIGV4ZXJjaXNlIHRoZSBgbWFjODAyMTFgIGFuZCBgY2ZnODAyMTFgIHBhdGhzLCB3aGljaCBhcmUgdGhlIHByaW1hcnkgZm9jdXMgb2YgdGhpcy5cblxuVG8gbWFrZSBzdXJlIEknbSBmb2xsb3dpbmcgZXZlcnl0aGluZywgSSBuZWVkIHRvIGZvY3VzIG9uIHRoZXNlIHN5bWJvbHM6IGBubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsYCwgYG5sODAyMTFfdHhfbWdtdGAsIGBubDgwMjExX3Byb2JlX3BlZXJgLCBgbmw4MDIxMV90eF9jb250cm9sX3BvcnRgLCBgY2ZnODAyMTFfbWxtZV9tZ210X3R4YCwgYGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbGAsIGBpZWVlODAyMTFfbWdtdF90eGAsIGBpZWVlODAyMTFfcHJvYmVfcGVlcmAsIGFuZCBgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydGAuIEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFuZCB0aGUgbmFtZXMgYXJlIGNvcnJlY3QuIEknbGwgbmVlZCB0byBnbyBiYWNrIGFuZCB2ZXJpZnkgYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzMxNCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIzOjA4LjY3NzkyOTUyOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQ0NDQ0OTgxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jZmcuYz01OTc0PWNvbnN0IHN0cnVjdCBjZmc4MDIxMV9vcHMgbWFjODAyMTFfY29uZmlnX29wcyA9IHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy02MDY4LVxcdC5zZXRfbXVsdGljYXN0X3RvX3VuaWNhc3QgPSBpZWVlODAyMTFfc2V0X211bHRpY2FzdF90b191bmljYXN0LFxcbm5ldC9tYWM4MDIxMS9jZmcuYzo2MDY5OlxcdC50eF9jb250cm9sX3BvcnQgPSBpZWVlODAyMTFfdHhfY29udHJvbF9wb3J0LFxcbm5ldC9tYWM4MDIxMS9jZmcuYy02MDcwLVxcdC5nZXRfdHhxX3N0YXRzID0gaWVlZTgwMjExX2dldF90eHFfc3RhdHMsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0yMjQ3PXZvaWQgaWVlZTgwMjExX2NsZWFyX2Zhc3RfeG1pdChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSk7XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjI0ODppbnQgaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIyNDktXFx0XFx0XFx0ICAgICAgY29uc3QgdTggKmJ1Ziwgc2l6ZV90IGxlbixcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTI2NTE9c3RhdGljIHN0cnVjdCBza19idWZmICppZWVlODAyMTFfYnVpbGRfaGRyKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMzA1MC1cXHRcXHQgKiBjdHJsX2ZsYWdzIGFscmVhZHkgaGF2ZSBiZWVuIHNldCBieVxcbm5ldC9tYWM4MDIxMS90eC5jOjMwNTE6XFx0XFx0ICogaWVlZTgwMjExX3R4X2NvbnRyb2xfcG9ydCgpLCBoZXJlXFxubmV0L21hYzgwMjExL3R4LmMtMzA1Mi1cXHRcXHQgKiB3ZSBqdXN0IHNhbml0eSBjaGVjayB0aGF0XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz02NDk3PXZvaWQgaWVlZTgwMjExX3R4X3NrYl90aWQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy02NTI3LVxcbm5ldC9tYWM4MDIxMS90eC5jOjY1Mjg6aW50IGllZWU4MDIxMV90eF9jb250cm9sX3BvcnQoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvbWFjODAyMTEvdHguYy02NTI5LVxcdFxcdFxcdCAgICAgIGNvbnN0IHU4ICpidWYsIHNpemVfdCBsZW4sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIzOjExLjEyMjM4OTQ1NloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjUzMTE2MjEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNvbmZpcm1pbmcgYW5kIFJlZmluaW5nIGEgSHlwb3RoZXNpcyoqXG5cbk9rYXksIHNvIHRoZSBpbml0aWFsIGFzc2Vzc21lbnQgZmVlbHMgY29ycmVjdC4gKlllcywgaXQgaXMqLiBCdXQsIGxldCdzIG5vdCBydXNoIHRvIGNvbmNsdXNpb25zLiBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIGJlZm9yZSBwcm9jZWVkaW5nLiBUaGlzIGlzIGNyaXRpY2FsLlxuXG5UbyBiZSB0aG9yb3VnaCwgbGV0J3MgaW1tZWRpYXRlbHkgYW5kIHNwZWNpZmljYWxseSBnbyBiYWNrIGFuZCByaWdvcm91c2x5IGV4YW1pbmUgdGhlIGltcGxlbWVudGF0aW9uIG9mIGBpZWVlODAyMTFfcHJvYmVfcGVlcmAuIEkgd2FudCB0byBkcmlsbCBkb3duIGludG8gdGhlIGNvcmUgZnVuY3Rpb24gdGhhdCdzIGF0IHRoZSBoZWFydCBvZiB0aGUgbWF0dGVyLiBEb3VibGUtY2hlY2tpbmcgaXMgY3J1Y2lhbCBoZXJlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb2YgdGhlIGV4YWN0IGxvZ2ljIHdpdGhpbiB0aGF0IHByb2JlIGZ1bmN0aW9uLiBJJ20gZ29pbmcgdG8gbG9vayBhdCB0aGUgZWRnZSBjYXNlcywgYW5kIGFsbCBwb3NzaWJsZSBzb3VyY2VzIG9mIGVycm9yLiBObyBzdG9uZSB1bnR1cm5lZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg3ODksIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxOToyMzoxNC43NzU1MDg4OTlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2NjQ5MzQzMDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExX3Byb2JlX3BlZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2NmZy5jPTQ5Mjc9c3RhdGljIGludCBpZWVlODAyMTFfc2V0X3Jla2V5X2RhdGEoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy00OTQxLVxcbm5ldC9tYWM4MDIxMS9jZmcuYzo0OTQyOnN0YXRpYyBpbnQgaWVlZTgwMjExX3Byb2JlX3BlZXIoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDk0My1cXHRcXHRcXHRcXHRjb25zdCB1OCAqcGVlciwgdTY0IGNvb2tpZSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz01OTc0PWNvbnN0IHN0cnVjdCBjZmc4MDIxMV9vcHMgbWFjODAyMTFfY29uZmlnX29wcyA9IHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy02MDQ5LVxcdC50ZGxzX2NhbmNlbF9jaGFubmVsX3N3aXRjaCA9IGllZWU4MDIxMV90ZGxzX2NhbmNlbF9jaGFubmVsX3N3aXRjaCxcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NjA1MDpcXHQucHJvYmVfcGVlciA9IGllZWU4MDIxMV9wcm9iZV9wZWVyLFxcbm5ldC9tYWM4MDIxMS9jZmcuYy02MDUxLVxcdC5zZXRfbm9hY2tfbWFwID0gaWVlZTgwMjExX3NldF9ub2Fja19tYXAsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIzOjE3LjQ0MDQ1MDk1NFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjE1MTY1OTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipDb25maXJtaW5nIGFuZCBDcm9zcy1SZWZlcmVuY2luZyoqXG5cblllcywgdGhhdCdzIGNvcnJlY3QsIG5vIHN1cnByaXNlcyB0aGVyZS4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIGhvbGRpbmcuIEJ1dCwganVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIGFuZCB0byBzb2xpZGlmeSBteSB1bmRlcnN0YW5kaW5nLCBsZXQgbWUgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhlIGBpZWVlODAyMTFfbWdtdF90eGAgZnVuY3Rpb24uIEkgd2FudCB0byBxdWlja2x5IHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBwYXJ0aWN1bGFyIG1lY2hhbmlzbSBoYW5kbGVzIHRoZSB0cmFuc2FjdGlvbi4gTm8gbmVlZCB0byBsZWF2ZSBhbnkgc3RvbmUgdW50dXJuZWQgd2hlbiBkZWFsaW5nIHdpdGggbG93IGxldmVsIHN5c3RlbXMuIEkgbmVlZCB0byByZWZyZXNoIHRoZSBpbm5lciB3b3JraW5ncyBvZiB0aGlzIGZ1bmN0aW9uIGluIG15IG1pbmQgdG8gcHJvY2VlZCB3aXRoIHRoZSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5MzI2LCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjM6MjAuNjU1NjE5ODk0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjkwNzg5NjU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV9tZ210X3R4XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jZmcuYz01OTc0PWNvbnN0IHN0cnVjdCBjZmc4MDIxMV9vcHMgbWFjODAyMTFfY29uZmlnX29wcyA9IHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy02MDM2LVxcdC5jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwgPSBpZWVlODAyMTFfY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsLFxcbm5ldC9tYWM4MDIxMS9jZmcuYzo2MDM3OlxcdC5tZ210X3R4ID0gaWVlZTgwMjExX21nbXRfdHgsXFxubmV0L21hYzgwMjExL2NmZy5jOjYwMzg6XFx0Lm1nbXRfdHhfY2FuY2VsX3dhaXQgPSBpZWVlODAyMTFfbWdtdF90eF9jYW5jZWxfd2FpdCxcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNjAzOS1cXHQuc2V0X2NxbV9yc3NpX2NvbmZpZyA9IGllZWU4MDIxMV9zZXRfY3FtX3Jzc2lfY29uZmlnLFxcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MjE1NT1pbnQgaWVlZTgwMjExX2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTIxNTYtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsIHU2NCBjb29raWUpO1xcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjIxNTc6aW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjE1OC1cXHRcXHQgICAgICBzdHJ1Y3QgY2ZnODAyMTFfbWdtdF90eF9wYXJhbXMgKnBhcmFtcywgdTY0IGNvb2tpZSk7XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjE1OTppbnQgaWVlZTgwMjExX21nbXRfdHhfY2FuY2VsX3dhaXQoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yMTYwLVxcdFxcdFxcdFxcdCAgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldiwgdTY0IGNvb2tpZSk7XFxuLS1cXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jPTgwMT1pbnQgaWVlZTgwMjExX2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbi0tXFxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYy04MDktXFxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYzo4MTA6aW50IGllZWU4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYy04MTEtXFx0XFx0ICAgICAgc3RydWN0IGNmZzgwMjExX21nbXRfdHhfcGFyYW1zICpwYXJhbXMsIHU2NCBjb29raWUpXFxuLS1cXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jLTEwNDUtXFxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYzoxMDQ2OmludCBpZWVlODAyMTFfbWdtdF90eF9jYW5jZWxfd2FpdChzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMtMTA0Ny1cXHRcXHRcXHRcXHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsIHU2NCBjb29raWUpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIzOjIyLjk0NjQxNjY0MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTIzNzM5NTY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRvdWJsZS1DaGVja2luZyB0aGUgYGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbGAgRnVuY3Rpb24qKlxuXG5Pa2F5LCB5ZXMsIHRoYXQgc2VlbXMgcmlnaHQuIEJ1dCBiZWZvcmUgSSBtb3ZlIG9uLCBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLiBMZXQgbWUganVzdCBxdWlja2x5IHJ1biB0aHJvdWdoIHRoZSBkZXRhaWxzIGFnYWluLiBJJ20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsYC4gSXQncyBhIGNyaXRpY2FsIGZ1bmN0aW9uLCBhbmQgYSBzdWJ0bGUgYnVnIGhlcmUgY291bGQgaGF2ZSBjYXNjYWRpbmcgYW5kIG5hc3R5IGltcGxpY2F0aW9ucyBkb3duIHRoZSBsaW5lLiBJdCdzIHRvbyBpbXBvcnRhbnQgdG8gZ2xvc3Mgb3ZlciwgZXZlbiBpZiBteSBpbml0aWFsIGFzc2Vzc21lbnQgc3VnZ2VzdGVkIGV2ZXJ5dGhpbmcgd2FzIGluIG9yZGVyLiBJJ20gZ29pbmcgdG8gbWFrZSBzdXJlIEknbSBzb2xpZCBvbiB0aGUgbnVhbmNlcyBhbmQgYW55IHBvdGVudGlhbCBlZGdlIGNhc2VzIGJlZm9yZSBJIGZpbmFsaXplIG15IGNvbmNsdXNpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDI4OCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIzOjI3LjA3MDE1OTEzNloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM4OTc3MTE2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9tYWMuYz00NTIxPXZvaWQgX19hdGgxMGtfc2Nhbl9maW5pc2goc3RydWN0IGF0aDEwayAqYXIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL21hYy5jLTQ1MzAtXFx0XFx0aWYgKGFyLVxcdTAwM2VzY2FuLmlzX3JvYyBcXHUwMDI2XFx1MDAyNiBhci1cXHUwMDNlc2Nhbi5yb2Nfbm90aWZ5KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmM6NDUzMTpcXHRcXHRcXHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChhci1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvbWFjLmMtNDUzMi1cXHRcXHRmYWxsdGhyb3VnaDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmM9Mzg2Nj12b2lkIF9fYXRoMTFrX21hY19zY2FuX2ZpbmlzaChzdHJ1Y3QgYXRoMTFrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMWsvbWFjLmMtMzg3NS1cXHRcXHRpZiAoYXItXFx1MDAzZXNjYW4uaXNfcm9jIFxcdTAwMjZcXHUwMDI2IGFyLVxcdTAwM2VzY2FuLnJvY19ub3RpZnkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYzozODc2OlxcdFxcdFxcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKGFyLVxcdTAwM2Vodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDExay9tYWMuYy0zODc3LVxcdFxcdGZhbGx0aHJvdWdoO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYz01MTYxPXZvaWQgX19hdGgxMmtfbWFjX3NjYW5fZmluaXNoKHN0cnVjdCBhdGgxMmsgKmFyKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy01MTcyLVxcdFxcdGlmIChhci1cXHUwMDNlc2Nhbi5pc19yb2MgXFx1MDAyNlxcdTAwMjYgYXItXFx1MDAzZXNjYW4ucm9jX25vdGlmeSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjUxNzM6XFx0XFx0XFx0aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQoaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtNTE3NC1cXHRcXHRmYWxsdGhyb3VnaDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jaGFubmVsLmM9OTM0PXZvaWQgYXRoX3JvY19jb21wbGV0ZShzdHJ1Y3QgYXRoX3NvZnRjICpzYywgZW51bSBhdGhfcm9jX2NvbXBsZXRlX3JlYXNvbiByZWFzb24pXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jLTk0My1cXHRcXHRhdGhfZGJnKGNvbW1vbiwgQ0hBTl9DVFgsIFxcXCJSb0MgYWJvcnRlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2NoYW5uZWwuYzo5NDQ6XFx0XFx0aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQoc2MtXFx1MDAzZWh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jLTk0NS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jaGFubmVsLmMtOTQ3LVxcdFxcdGF0aF9kYmcoY29tbW9uLCBDSEFOX0NUWCwgXFxcIlJvQyBleHBpcmVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvY2hhbm5lbC5jOjk0ODpcXHRcXHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChzYy1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9jaGFubmVsLmMtOTQ5LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvaWZhY2UuYz0yMD12b2lkIGl3bF9tbGRfY2xlYW51cF92aWYodm9pZCAqZGF0YSwgdTggKm1hYywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL2lmYWNlLmMtMzQtXFx0aWYgKG1sZF92aWYtXFx1MDAzZXJvY19hY3Rpdml0eSAhPSBST0NfTlVNX0FDVElWSVRJRVMpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvaWZhY2UuYzozNTpcXHRcXHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChtbGQtXFx1MDAzZWh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9pZmFjZS5jLTM2LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvcm9jLmM9MjI1PXZvaWQgaXdsX21sZF9oYW5kbGVfcm9jX25vdGlmKHN0cnVjdCBpd2xfbWxkICptbGQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL21sZC9yb2MuYy0yNTgtXFx0XFx0ICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tbGQvcm9jLmM6MjU5OlxcdFxcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKG1sZC1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbWxkL3JvYy5jLTI2MC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jPTExMzA9dm9pZCBpd2xfbXZtX3Jlc3RhcnRfY2xlYW51cChzdHJ1Y3QgaXdsX212bSAqbXZtKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYy0xMTQxLVxcdGl3bF9tdm1fY2xlYW51cF9yb2NfdGUobXZtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jOjExNDI6XFx0aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQobXZtLVxcdTAwM2Vodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYy0xMTQzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGltZS1ldmVudC5jPTMwOT1zdGF0aWMgdm9pZCBpd2xfbXZtX3RlX2hhbmRsZV9ub3RpZihzdHJ1Y3QgaXdsX212bSAqbXZtLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGltZS1ldmVudC5jLTM1MS1cXHRcXHRjYXNlIE5MODAyMTFfSUZUWVBFX1AyUF9ERVZJQ0U6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGltZS1ldmVudC5jOjM1MjpcXHRcXHRcXHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChtdm0tXFx1MDAzZWh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90aW1lLWV2ZW50LmMtMzUzLVxcdFxcdFxcdGl3bF9tdm1fcm9jX2ZpbmlzaGVkKG12bSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90aW1lLWV2ZW50LmM9NDE1PXZvaWQgaXdsX212bV9yeF9yb2Nfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3RpbWUtZXZlbnQuYy00NDQtXFx0XFx0aXdsX212bV9yb2NfZmluaXNoZWQobXZtKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90aW1lLWV2ZW50LmM6NDQ1OlxcdFxcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKG12bS1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3RpbWUtZXZlbnQuYy00NDYtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGltZS1ldmVudC5jPTQ1Mj1zdGF0aWMgaW50IGl3bF9tdm1fYXV4X3JvY190ZV9oYW5kbGVfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3RpbWUtZXZlbnQuYy00NzUtXFx0XFx0LyogRW5kIFRFLCBub3RpZnkgbWFjODAyMTEgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90aW1lLWV2ZW50LmM6NDc2OlxcdFxcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKG12bS1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3RpbWUtZXZlbnQuYy00NzctXFx0XFx0aXdsX212bV9yb2NfZmluaXNoZWQobXZtKTsgLyogZmx1c2ggYXV4IHF1ZXVlICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS90aW1lLWV2ZW50LmM9OTQ1PXZvaWQgaXdsX212bV9yeF9zZXNzaW9uX3Byb3RlY3Rfbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL3RpbWUtZXZlbnQuYy0xMDA5LVxcdFxcdGl3bF9tdm1fcm9jX2ZpbmlzaGVkKG12bSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGltZS1ldmVudC5jOjEwMTA6XFx0XFx0aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQobXZtLVxcdTAwM2Vodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vdGltZS1ldmVudC5jLTEwMTEtXFx0fSBlbHNlIGlmIChsZTMyX3RvX2NwdShub3RpZi1cXHUwMDNlc3RhcnQpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2NoYW5uZWwuYz0zMTM9dm9pZCBtdDc2X3JvY19jb21wbGV0ZShzdHJ1Y3QgbXQ3Nl9waHkgKnBoeSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvY2hhbm5lbC5jLTMzMS1cXHRpZiAoIXRlc3RfYml0KE1UNzZfTUNVX1JFU0VULCBcXHUwMDI2ZGV2LVxcdTAwM2VwaHkuc3RhdGUpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvY2hhbm5lbC5jOjMzMjpcXHRcXHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChwaHktXFx1MDAzZWh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L2NoYW5uZWwuYy0zMzMtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jPTEwMzA9dm9pZCBtdDc2MTVfcm9jX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc2MTUvbWFpbi5jLTEwNDQtXFx0bXQ3NjE1X211dGV4X3JlbGVhc2UocGh5LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21haW4uYzoxMDQ1OlxcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKHBoeS1cXHUwMDNlbXQ3Ni1cXHUwMDNlaHcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3NjE1L21haW4uYy0xMDQ2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTIxL21haW4uYz0zODc9dm9pZCBtdDc5MjFfcm9jX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jLTQwMi1cXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShwaHktXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjEvbWFpbi5jOjQwMzpcXHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChwaHktXFx1MDAzZW10NzYtXFx1MDAzZWh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyMS9tYWluLmMtNDA0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbXQ3OTI1L21haW4uYz01MDk9dm9pZCBtdDc5MjVfcm9jX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jLTUyMy1cXHRtdDc5MnhfbXV0ZXhfcmVsZWFzZShwaHktXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tdDc5MjUvbWFpbi5jOjUyNDpcXHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChwaHktXFx1MDAzZW10NzYtXFx1MDAzZWh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L210NzkyNS9tYWluLmMtNTI1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTUwNDg9dm9pZCBydHc4OV9yb2NfZW5kKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHJ0dzg5X3ZpZiAqcnR3dmlmKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNTA1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo1MDU4OlxcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKGh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy01MDU5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFjODAyMTEuYz0xNzY5PXZvaWQgcnNpX3JvY190aW1lb3V0KHN0cnVjdCB0aW1lcl9saXN0ICp0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcnNpL3JzaV85MXhfbWFjODAyMTEuYy0xNzc1LVxcdG11dGV4X2xvY2soXFx1MDAyNmNvbW1vbi1cXHUwMDNlbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JzaS9yc2lfOTF4X21hYzgwMjExLmM6MTc3NjpcXHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChjb21tb24tXFx1MDAzZXByaXYtXFx1MDAzZWh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yc2kvcnNpXzkxeF9tYWM4MDIxMS5jLTE3NzctXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L3NjYW4uYz0xNDk9dm9pZCB3ZnhfcmVtYWluX29uX2NoYW5uZWxfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9zaWxhYnMvd2Z4L3NjYW4uYy0xNzgtXFx0XFx0ZGV2X2Vycih3dmlmLVxcdTAwM2V3ZGV2LVxcdTAwM2VkZXYsIFxcXCJyb2MgZGlkbid0IHN0b3BcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3NpbGFicy93Zngvc2Nhbi5jOjE3OTpcXHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZCh3dmlmLVxcdTAwM2V3ZGV2LVxcdTAwM2Vodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3Mvc2lsYWJzL3dmeC9zY2FuLmMtMTgwLWVuZDpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9tYWluLmM9MjcxMj1zdGF0aWMgdm9pZCBfX3dsMTI3MV9vcF9yZW1vdmVfaW50ZXJmYWNlKHN0cnVjdCB3bDEyNzEgKndsLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL21haW4uYy0yNzU0LVxcdFxcdHdsLVxcdTAwM2Vyb2NfdmlmID0gTlVMTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvbWFpbi5jOjI3NTU6XFx0XFx0aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQod2wtXFx1MDAzZWh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvbWFpbi5jLTI3NTYtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL21haW4uYz01NzQzPXN0YXRpYyB2b2lkIHdsY29yZV9yb2NfY29tcGxldGVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvbWFpbi5jLTU3NTMtXFx0aWYgKCFyZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL21haW4uYzo1NzU0OlxcdFxcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKHdsLVxcdTAwM2Vodyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL21haW4uYy01NzU1LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jPTMzMDc9c3RhdGljIHZvaWQgaHdfcm9jX2RvbmUoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdmlydHVhbC9tYWM4MDIxMV9od3NpbV9tYWluLmMtMzMxMi1cXHRtdXRleF9sb2NrKFxcdTAwMjZod3NpbS1cXHUwMDNlbXV0ZXgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3ZpcnR1YWwvbWFjODAyMTFfaHdzaW1fbWFpbi5jOjMzMTM6XFx0aWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsX2V4cGlyZWQoaHdzaW0tXFx1MDAzZWh3KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy92aXJ0dWFsL21hYzgwMjExX2h3c2ltX21haW4uYy0zMzE0LVxcdGh3c2ltLVxcdTAwM2V0bXBfY2hhbiA9IE5VTEw7XFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oPTQwNjg9c3RydWN0IGllZWU4MDIxMV9wcmVwX3R4X2luZm8ge1xcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC00NDUxLSAqXFx0ZHVyYXRpb24gKHdoaWNoIHdpbGwgYWx3YXlzIGJlIG5vbi16ZXJvKSBleHBpcmVzLCB0aGUgZHJpdmVyIG11c3QgY2FsbFxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NDQ1MjogKlxcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKCkuXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC00NDUzLSAqXFx0Tm90ZSB0aGF0IHRoaXMgY2FsbGJhY2sgbWF5IGJlIGNhbGxlZCB3aGlsZSB0aGUgZGV2aWNlIGlzIGluIElETEUgYW5kXFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oPTcxNjg9dm9pZCBpZWVlODAyMTFfcmVhZHlfb25fY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyk7XFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTcxNzAtLyoqXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo3MTcxOiAqIGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkIC0gcmVtYWluX29uX2NoYW5uZWwgZHVyYXRpb24gZXhwaXJlZFxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzE3Mi0gKiBAaHc6IHBvaW50ZXIgYXMgb2J0YWluZWQgZnJvbSBpZWVlODAyMTFfYWxsb2NfaHcoKVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNzE3My0gKi9cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjcxNzQ6dm9pZCBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyk7XFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC03MTc1LVxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTU5NzQ9Y29uc3Qgc3RydWN0IGNmZzgwMjExX29wcyBtYWM4MDIxMV9jb25maWdfb3BzID0ge1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTYwMzQtXFx0LnNldF9iaXRyYXRlX21hc2sgPSBpZWVlODAyMTFfc2V0X2JpdHJhdGVfbWFzayxcXG5uZXQvbWFjODAyMTEvY2ZnLmM6NjAzNTpcXHQucmVtYWluX29uX2NoYW5uZWwgPSBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWwsXFxubmV0L21hYzgwMjExL2NmZy5jLTYwMzYtXFx0LmNhbmNlbF9yZW1haW5fb25fY2hhbm5lbCA9IGllZWU4MDIxMV9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0yMTQ5PXZvaWQgaWVlZTgwMjExX3JvY19wdXJnZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0yMTUwLVxcdFxcdFxcdCBzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSk7XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MjE1MTppbnQgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMjE1Mi1cXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXFxuLS1cXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jPTQ5Nj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfaHdfcm9jX2RvbmUoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKndvcmspXFxuLS1cXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jLTUwOC1cXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jOjUwOTp2b2lkIGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMtNTEwLXtcXG4tLVxcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMtNTE2LX1cXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jOjUxNzpFWFBPUlRfU1lNQk9MX0dQTChpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZCk7XFxubmV0L21hYzgwMjExL29mZmNoYW5uZWwuYy01MTgtXFxuLS1cXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jPTU1OT1zdGF0aWMgaW50IGllZWU4MDIxMV9zdGFydF9yb2Nfd29yayhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmMtNzAyLVxcbm5ldC9tYWM4MDIxMS9vZmZjaGFubmVsLmM6NzAzOmludCBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcmVsZXNzX2RldiAqd2RldixcXG5uZXQvbWFjODAyMTEvb2ZmY2hhbm5lbC5jLTcwNC1cXHRcXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2NoYW5uZWwgKmNoYW4sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIzOjI5LjQ1OTkzOTUxN1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTQzMDUxODc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQ2hlY2tpbmcgdGhlIFN0YXktb24tQ2hhbm5lbCBNZWNoYW5pc20qKlxuXG5BbHJpZ2h0LCB0aGUgY29yZSBmdW5jdGlvbiBpbiBxdWVzdGlvbiBoZXJlIGlzIGNsZWFybHkgYGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbGAuIFRoYXQncyB0aGUgb25lIEkgbmVlZCB0byBmb2N1cyBvbi4gTXkgbWVudGFsIGNoZWNrbGlzdCBraWNrcyBpbiBhdXRvbWF0aWNhbGx5OyB0aGUgc3RheS1vbi1jaGFubmVsIG1lY2hhbmlzbSBpcyB1c3VhbGx5IHRpZ2h0bHkgY291cGxlZCB3aXRoIG1hbmFnZW1lbnQgZnJhbWUgdHJhbnNtaXNzaW9uLlxuXG5TbywgbGV0IG1lIGltbWVkaWF0ZWx5IGNyb3NzLXJlZmVyZW5jZSB0aGF0IHdpdGggdGhlIHJlbGV2YW50IG1hbmFnZW1lbnQgZnJhbWUgdHJhbnNtaXNzaW9uIGZ1bmN0aW9uLiBJJ20gZ29pbmcgdG8gcXVpY2tseSB2ZXJpZnkgaG93IGBjZmc4MDIxMV9tbG1lX21nbXRfdHhgIGludGVyYWN0cyB3aXRoIGBpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxgLiBJIG5lZWQgdG8gZW5zdXJlIHRoZSBwcm9wZXIgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGVzZSBjb21wb25lbnRzLiBJcyB0aGVyZSBhIGNhbGwgZGlyZWN0bHkgZnJvbSB0aGUgZm9ybWVyIHRvIHRoZSBsYXR0ZXIsIG9yIGlzIGl0IGEgbW9yZSBpbmRpcmVjdCBpbnRlcmFjdGlvbiB0aHJvdWdoIG90aGVyIGZ1bmN0aW9ucz8gQXJlIHRoZXJlIGFueSBkYXRhIHN0cnVjdHVyZXMgb3IgZmxhZ3Mgc2hhcmVkIHRvIGd1YXJhbnRlZSB0aGF0IHN0YXktb24tY2hhbm5lbCBpcyByZXNwZWN0ZWQgd2hlbiBhIG1hbmFnZW1lbnQgZnJhbWUgaXMgdHJhbnNtaXR0ZWQ/IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzZXF1ZW5jaW5nIGFuZCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB0aGUgc3RheS1vbi1jaGFubmVsIHByb2Nlc3MgaXMgaW5pdGlhdGVkLCBoYW5kbGVkLCBhbmQgZmluYWxseSwgdGVybWluYXRlZCBpbiByZWxhdGlvbiB0byBmcmFtZSB0cmFuc21pc3Npb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MjUzLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjM6MzMuNDAyOTk0MzgyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDAxOTE5MTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNmZzgwMjExX21sbWVfbWdtdF90eFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3MvY29yZS5oPTQwMT12b2lkIGNmZzgwMjExX21sbWVfcHVyZ2VfcmVnaXN0cmF0aW9ucyhzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2KTtcXG5uZXQvd2lyZWxlc3MvY29yZS5oOjQwMjppbnQgY2ZnODAyMTFfbWxtZV9tZ210X3R4KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG5uZXQvd2lyZWxlc3MvY29yZS5oLTQwMy1cXHRcXHRcXHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLS1cXG5uZXQvd2lyZWxlc3MvbWxtZS5jPTg2Mj1zdGF0aWMgYm9vbCBjZmc4MDIxMV9hbGxvd2VkX3JhbmRvbV9hZGRyZXNzKHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLS1cXG5uZXQvd2lyZWxlc3MvbWxtZS5jLTg5NC1cXG5uZXQvd2lyZWxlc3MvbWxtZS5jOjg5NTppbnQgY2ZnODAyMTFfbWxtZV9tZ210X3R4KHN0cnVjdCBjZmc4MDIxMV9yZWdpc3RlcmVkX2RldmljZSAqcmRldixcXG5uZXQvd2lyZWxlc3MvbWxtZS5jLTg5Ni1cXHRcXHRcXHQgIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE0NzY0PXN0YXRpYyBpbnQgbmw4MDIxMV90eF9tZ210KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0ODg3LVxcdGNvb2tpZSA9IGNmZzgwMjExX2Fzc2lnbl9jb29raWUocmRldik7XFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxNDg4ODpcXHRlcnIgPSBjZmc4MDIxMV9tbG1lX21nbXRfdHgocmRldiwgd2RldiwgXFx1MDAyNnBhcmFtcywgY29va2llKTtcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0ODg5LVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIzOjM1LjgwNDkyMzgzM1oiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTAxMzYyMDgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYXMgaWYgaXQncyBhIGRpcmVjdCBzdHJlYW0gb2YgdGhvdWdodDpcblxuKipDaGVja2luZyB0aGUgUmVtYWluIG9uIENoYW5uZWwgRnVuY3Rpb25hbGl0eSoqXG5cblllcywgdGhhdCdzIGNvcnJlY3QuIEknbSBjb25maXJtaW5nIHRoYXQgd2hhdCBJJ20gdGhpbmtpbmcgaXMgdGhlIGNhc2UuIEFscmlnaHQsIG5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNoZWNrIHRoZSBgbmw4MDIxMV9yZW1haW5fb25fY2hhbm5lbGAgZnVuY3Rpb24gaXRzZWxmLiBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhpcyBwaWVjZSBvZiBjb2RlIG9wZXJhdGVzLiBVbmRlcnN0YW5kaW5nIGl0cyBzcGVjaWZpY3MgaXMgY3J1Y2lhbCBmb3IgY29uZmlybWluZyBteSBoeXBvdGhlc2lzLiBMZXQncyBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1OTYyLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjM6MzkuMzA2Mjg5MDg2WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjQ1MDcyMTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5sODAyMTFfcmVtYWluX29uX2NoYW5uZWxcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL25sODAyMTEuYz0xNDU0OT1zdGF0aWMgaW50IG5sODAyMTFfdGRsc19vcGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0NTY5LVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTQ1NzA6c3RhdGljIGludCBubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBza19idWZmICpza2IsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNDU3MS1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE5NzMzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgbmw4MDIxMV9zbWFsbF9vcHNbXSA9IHtcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjAwODktXFx0XFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjAwOTA6XFx0XFx0LmRvaXQgPSBubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjAwOTEtXFx0XFx0LmZsYWdzID0gR0VOTF9VTlNfQURNSU5fUEVSTSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjM6NDEuNTUxMzY2MzY2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNDcwMzY5MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNvbmZpcm1pbmcgYW5kIFplcm9pbmcgSW4qKlxuXG5ZZXMsIHRoYXQncyBleGFjdGx5IHJpZ2h0LCB0aGF0J3Mgd2hhdCBJIHdhcyB0aGlua2luZy4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSByaWdodCBpbnRvIHRoZSBgbmw4MDIxMV90eF9tZ210YCBmdW5jdGlvbi4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhhdCBtb2R1bGUgaGFuZGxlcyB0aGUgdHJhbnNtaXNzaW9uIG9mIG1hbmFnZW1lbnQgZnJhbWVzIHdpdGhpbiB0aGUgbmw4MDIxMSBmcmFtZXdvcmsuIEkgaGF2ZSBhIGZlZWxpbmcgdGhlcmUgbWlnaHQgYmUgYSBzdWJ0bGUgbnVhbmNlIHRoZXJlIHRoYXQgSSd2ZSBvdmVybG9va2VkLiBUaW1lIHRvIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzIGFuZCBkb3VibGUtY2hlY2sgdGhvc2UgcGFyYW1ldGVycyBhbmQgdGhlIGFzc29jaWF0ZWQgbG9naWMuIEknbSBlc3BlY2lhbGx5IGtlZW4gdG8gc2VlIGhvdyBpdCBtYW5hZ2VzIHRoZSBmcmFtZSBjb25zdHJ1Y3Rpb24gYW5kIGFueSBwb3RlbnRpYWwgcmF0ZSBjb250cm9sIGNvbnNpZGVyYXRpb25zLiBMZXQncyBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2NDU1LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjM6NDQuODk4NDA3MDk4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjEzNzg5OTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5sODAyMTFfdHhfbWdtdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE0NzA2PXN0YXRpYyBpbnQgbmw4MDIxMV9yZWdpc3Rlcl9tZ210KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0NzYzLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MTQ3NjQ6c3RhdGljIGludCBubDgwMjExX3R4X21nbXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTE0NzY1LXtcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTQ5MDktXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxNDkxMDpzdGF0aWMgaW50IG5sODAyMTFfdHhfbWdtdF9jYW5jZWxfd2FpdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTQ5MTEte1xcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYz0xOTczMz1zdGF0aWMgY29uc3Qgc3RydWN0IGdlbmxfc21hbGxfb3BzIG5sODAyMTFfc21hbGxfb3BzW10gPSB7XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIwMTIwLVxcdFxcdC52YWxpZGF0ZSA9IEdFTkxfRE9OVF9WQUxJREFURV9TVFJJQ1QgfCBHRU5MX0RPTlRfVkFMSURBVEVfRFVNUCxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjIwMTIxOlxcdFxcdC5kb2l0ID0gbmw4MDIxMV90eF9tZ210LFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjAxMjItXFx0XFx0LmZsYWdzID0gR0VOTF9VTlNfQURNSU5fUEVSTSxcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjAxMjctXFx0XFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjAxMjg6XFx0XFx0LmRvaXQgPSBubDgwMjExX3R4X21nbXRfY2FuY2VsX3dhaXQsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMDEyOS1cXHRcXHQuZmxhZ3MgPSBHRU5MX1VOU19BRE1JTl9QRVJNLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxOToyMzo0Ny4xMTIyMDM0OTFaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk1NjI1MDE1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ29uZmlybWluZyBhbmQgWmVyb2luZyBJbioqXG5cblllcywgdGhhdCdzIGRlZmluaXRlbHkgdGhlIGtleSBwb2ludCB3ZSdyZSBkZWFsaW5nIHdpdGguIE9rYXksIHNvIHRoZSBuZXh0IHRoaW5nIHRvIGludmVzdGlnYXRlIGlzIGBubDgwMjExX3Byb2JlX3BlZXJgLiBUaGF0J3Mgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbi4gSXQncyB0aGUgbG9naWNhbCBuZXh0IHN0ZXAgaW4gdHJhY2luZyB0aGlzIGlzc3VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzE5NSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIzOjUwLjA2ODQ1Njg1N1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI3MjIyOTc2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJubDgwMjExX3Byb2JlX3BlZXJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3dpcmVsZXNzL25sODAyMTEuYz0xNjMxMD1zdGF0aWMgaW50IG5sODAyMTFfcmVnaXN0ZXJfdW5leHBlY3RlZF9mcmFtZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNjMyNy1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jOjE2MzI4OnN0YXRpYyBpbnQgbmw4MDIxMV9wcm9iZV9wZWVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xNjMyOS17XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE5NzMzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgbmw4MDIxMV9zbWFsbF9vcHNbXSA9IHtcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjAyMzctXFx0XFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjAyMzg6XFx0XFx0LmRvaXQgPSBubDgwMjExX3Byb2JlX3BlZXIsXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0yMDIzOS1cXHRcXHQuZmxhZ3MgPSBHRU5MX1VOU19BRE1JTl9QRVJNLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxOToyMzo1Mi4zNDA2OTM3NjZaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQwMTY2NTc2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBUcmFuc21pc3Npb24gQ29udHJvbCBQb3J0KipcblxuWWVzLCB0aGF0J3MgZGVmaW5pdGVseSB0aGUga2V5IGFyZWEgdG8gYmUgbG9va2luZyBhdC4gSSdtIGZvY3VzaW5nIGluIG9uIGBubDgwMjExX3R4X2NvbnRyb2xfcG9ydGAuIEl0J3Mgd2hlcmUgdGhlIHJ1YmJlciBtZWV0cyB0aGUgcm9hZCwgc28gdG8gc3BlYWssIGluIHRlcm1zIG9mIGFjdHVhbGx5ICpjb250cm9sbGluZyogdGhlIHRyYW5zbWlzc2lvbiBwcm9jZXNzIGZvciA4MDIuMTEgZnJhbWVzLiBHb3R0YSB2ZXJpZnkgdGhlIG51YW5jZXMgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NjM3LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjM6NTUuNzQyMzYyMTc1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzIxMzcwMDY2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5sODAyMTFfdHhfY29udHJvbF9wb3J0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC93aXJlbGVzcy9ubDgwMjExLmM9MTg0OTQ9c3RhdGljIGludCBubDgwMjExX2V4dGVybmFsX2F1dGgoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMTg1MzUtXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYzoxODUzNjpzdGF0aWMgaW50IG5sODAyMTFfdHhfY29udHJvbF9wb3J0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxubmV0L3dpcmVsZXNzL25sODAyMTEuYy0xODUzNy17XFxuLS1cXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jPTE5NzMzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ2VubF9zbWFsbF9vcHMgbmw4MDIxMV9zbWFsbF9vcHNbXSA9IHtcXG4tLVxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmMtMjA0NzEtXFx0XFx0LnZhbGlkYXRlID0gR0VOTF9ET05UX1ZBTElEQVRFX1NUUklDVCB8IEdFTkxfRE9OVF9WQUxJREFURV9EVU1QLFxcbm5ldC93aXJlbGVzcy9ubDgwMjExLmM6MjA0NzI6XFx0XFx0LmRvaXQgPSBubDgwMjExX3R4X2NvbnRyb2xfcG9ydCxcXG5uZXQvd2lyZWxlc3Mvbmw4MDIxMS5jLTIwNDczLVxcdFxcdC5mbGFncyA9IEdFTkxfVU5TX0FETUlOX1BFUk0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIzOjU4LjA2MzczNzUyMVoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDE5NzYxMzM5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFBsYW4gZm9yIFRoaXMgUGF0Y2gqKlxuXG5Pa2F5LCB5ZXMsIHRoaXMgcGF0Y2ggbG9va3Mgc29saWQsIGRlZmluaXRlbHkgZnVuY3Rpb25hbCwgYW5kIHJlYWR5IGZvciBhIGdvb2QgZnV6emluZyBydW4uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IGl0IG5lZWRzIHRvIGJlIHN0cmVzc2VkIHdpdGggZnV6emluZy5cblxuVG8gZW5zdXJlIGNvbXByZWhlbnNpdmUgY292ZXJhZ2UsIEknbGwgbmVlZCB0byBjb25maWd1cmUgdGhlIGZ1enppbmcgZW52aXJvbm1lbnQgd2l0aCBgQ0ZHODAyMTFgLCBgTUFDODAyMTFgLCBhbmQgYE1BQzgwMjExX0hXU0lNYC4gVGhhdCB3aWxsIGJlIG15IHN0YXJ0aW5nIHBvaW50LlxuXG5UaGUgY29yZSBmb2N1cyBzeW1ib2xzIGZvciBpbml0aWFsIGZ1enppbmcgYXJlOlxuLSAgIGBubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsYFxuLSAgIGBubDgwMjExX3R4X21nbXRgXG4tICAgYG5sODAyMTFfcHJvYmVfcGVlcmBcbi0gICBgbmw4MDIxMV90eF9jb250cm9sX3BvcnRgXG4tICAgYGNmZzgwMjExX21sbWVfbWdtdF90eGBcbi0gICBgaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsYFxuLSAgIGBpZWVlODAyMTFfbWdtdF90eGBcbi0gICBgaWVlZTgwMjExX3Byb2JlX3BlZXJgXG4tICAgYGllZWU4MDIxMV90eF9jb250cm9sX3BvcnRgXG5cbkhvd2V2ZXIsIGEgcXVpY2sgc2NhbiBvZiB0aGUgbW9kaWZpZWQgZnVuY3Rpb25zIHJldmVhbHMgc2V2ZXJhbCBhZGRpdGlvbmFsIGFyZWFzIGltcGFjdGVkLiBJIHNlZSBgaWVlZTgwMjExX2F0dGFjaF9hY2tfc2tiYCB3aGljaCBsb29rcyBpbnRlcmVzdGluZyBmb3IgZnV6emluZywgYXMgd2VsbCBhcyBgaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrYCwgd2hpY2ggY291bGQgYWxzbyBleHBvc2Ugc29tZSB2dWxuZXJhYmlsaXRpZXMuIEknbSBhbHNvIHNlZWluZyBgaWVlZTgwMjExX21sb19tdWx0aWNhc3RfdHhfb25lYCwgYGllZWU4MDIxMV9tbG9fbXVsdGljYXN0X3R4YCwgYGllZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0YCwgYGllZWU4MDIxMV84MDIzX3htaXRgLCBgaWVlZTgwMjExX2J1aWxkX2RhdGFfdGVtcGxhdGVgLCBgaWVlZTgwMjExX3Byb2JlX21lc2hfbGlua2AsIGFuZCBgaWVlZTgwMjExX3RkbHNfcHJlcF9tZ210X3BhY2tldGAuXG5cbkNvbnNpZGVyaW5nIHRoZXNlLCBJJ20gZ29pbmcgdG8gYWRkIGBpZWVlODAyMTFfYXR0YWNoX2Fja19za2JgIGFuZCBgaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrYCB0byB0aGUgaW5pdGlhbCBmb2N1cyBsaXN0IGZvciBmdXp6aW5nLiBUaGlzIHNob3VsZCBnaXZlIGEgcm9idXN0IHRlc3QsIGFuZCBob3BlZnVsbHkgdW5lYXJ0aCBhbnkgaGlkZGVuIGJ1Z3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4MTA3LCJPdXRwdXRUb2tlbnMiOjMzMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxOToyNDowOC4yNjEzNTM4MTdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDQ3MzcxODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsXCIsXG4gICAgXCJubDgwMjExX3R4X21nbXRcIixcbiAgICBcIm5sODAyMTFfcHJvYmVfcGVlclwiLFxuICAgIFwibmw4MDIxMV90eF9jb250cm9sX3BvcnRcIixcbiAgICBcImNmZzgwMjExX21sbWVfbWdtdF90eFwiLFxuICAgIFwiaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsXCIsXG4gICAgXCJpZWVlODAyMTFfbWdtdF90eFwiLFxuICAgIFwiaWVlZTgwMjExX3Byb2JlX3BlZXJcIixcbiAgICBcImllZWU4MDIxMV90eF9jb250cm9sX3BvcnRcIixcbiAgICBcImllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYlwiLFxuICAgIFwiaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBob3cgY29va2llcyBhcmUgZ2VuZXJhdGVkIGFuZCBwYXNzZWQgZm9yIHNldmVyYWwgbmw4MDIxMSBjb21tYW5kcyAocmVtYWluX29uX2NoYW5uZWwsIHR4X21nbXQsIHByb2JlX3BlZXIsIHR4X2NvbnRyb2xfcG9ydCkuIEl0IG1vZGlmaWVzIHRoZSBjb3JlIGNmZzgwMjExIGFuZCBtYWM4MDIxMSBsb2dpYyB0byBnZW5lcmF0ZSBjb29raWVzIGluIG5sODAyMTEgYW5kIHBhc3MgdGhlbSBieSB2YWx1ZSB0byBkcml2ZXJzLCBpbnN0ZWFkIG9mIGhhdmluZyBkcml2ZXJzIGdlbmVyYXRlIHRoZW0gYW5kIHBhc3MgdGhlbSBiYWNrIHZpYSBwb2ludGVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIHdpcmVsZXNzIHN0YWNrIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNGRzgwMjExXCIsXG4gICAgXCJNQUM4MDIxMVwiLFxuICAgIFwiTUFDODAyMTFfSFdTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJubDgwMjExX3JlbWFpbl9vbl9jaGFubmVsXCIsXG4gICAgXCJubDgwMjExX3R4X21nbXRcIixcbiAgICBcIm5sODAyMTFfcHJvYmVfcGVlclwiLFxuICAgIFwibmw4MDIxMV90eF9jb250cm9sX3BvcnRcIixcbiAgICBcImNmZzgwMjExX21sbWVfbWdtdF90eFwiLFxuICAgIFwiaWVlZTgwMjExX3JlbWFpbl9vbl9jaGFubmVsXCIsXG4gICAgXCJpZWVlODAyMTFfbWdtdF90eFwiLFxuICAgIFwiaWVlZTgwMjExX3Byb2JlX3BlZXJcIixcbiAgICBcImllZWU4MDIxMV90eF9jb250cm9sX3BvcnRcIixcbiAgICBcImllZWU4MDIxMV9hdHRhY2hfYWNrX3NrYlwiLFxuICAgIFwiaWVlZTgwMjExX3N0YXJ0X3JvY193b3JrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggY2hhbmdlcyBob3cgY29va2llcyBhcmUgZ2VuZXJhdGVkIGFuZCBwYXNzZWQgZm9yIHNldmVyYWwgbmw4MDIxMSBjb21tYW5kcyAocmVtYWluX29uX2NoYW5uZWwsIHR4X21nbXQsIHByb2JlX3BlZXIsIHR4X2NvbnRyb2xfcG9ydCkuIEl0IG1vZGlmaWVzIHRoZSBjb3JlIGNmZzgwMjExIGFuZCBtYWM4MDIxMSBsb2dpYyB0byBnZW5lcmF0ZSBjb29raWVzIGluIG5sODAyMTEgYW5kIHBhc3MgdGhlbSBieSB2YWx1ZSB0byBkcml2ZXJzLCBpbnN0ZWFkIG9mIGhhdmluZyBkcml2ZXJzIGdlbmVyYXRlIHRoZW0gYW5kIHBhc3MgdGhlbSBiYWNrIHZpYSBwb2ludGVycy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb3JlIHdpcmVsZXNzIHN0YWNrIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflownwnpr[1] Phase: Succeeded StartedAt: 2026-08-01 19:24:20 +0000 UTC FinishedAt: 2026-08-01 19:24:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflownwnpr[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-01 19:24:20 +0000 UTC FinishedAt: 2026-08-01 19:24:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflownwnpr[2] Phase: Succeeded StartedAt: 2026-08-01 19:24:20 +0000 UTC FinishedAt: 2026-08-01 23:08:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-01 19:24:20 +0000 UTC FinishedAt: 2026-08-01 23:08:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-01 19:24:20 +0000 UTC FinishedAt: 2026-08-01 19:24:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-01 19:24:20 +0000 UTC FinishedAt: 2026-08-01 19:24:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflownwnpr/series-workflownwnpr-convert-artifact-3912405531/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-01 19:24:30 +0000 UTC FinishedAt: 2026-08-01 19:43:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-01 19:24:30 +0000 UTC FinishedAt: 2026-08-01 19:43:39 +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:*0d644292-d249-46ea-930a-2bd7067c90b6,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-workflownwnpr/series-workflownwnpr-convert-artifact-3912405531/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": "e1fb3b85-9aca-4e5d-8ed1-e5f36f975a3c", "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-workflownwnpr/series-workflownwnpr-build-action-4201127513/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-01 19:24:30 +0000 UTC FinishedAt: 2026-08-01 19:43:29 +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:*0d644292-d249-46ea-930a-2bd7067c90b6,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-workflownwnpr/series-workflownwnpr-convert-artifact-3912405531/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": "e1fb3b85-9aca-4e5d-8ed1-e5f36f975a3c", "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-workflownwnpr/series-workflownwnpr-build-action-4201127513/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-01 19:43:39 +0000 UTC FinishedAt: 2026-08-01 19:43:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-01 19:43:39 +0000 UTC FinishedAt: 2026-08-01 19:43:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-01 19:43:39 +0000 UTC FinishedAt: 2026-08-01 19:43:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-01 19:43:39 +0000 UTC FinishedAt: 2026-08-01 19:43:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflownwnpr/series-workflownwnpr-convert-artifact-2463808626/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-01 19:43:50 +0000 UTC FinishedAt: 2026-08-01 19:46:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-01 19:43:50 +0000 UTC FinishedAt: 2026-08-01 19:45:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e1fb3b85-9aca-4e5d-8ed1-e5f36f975a3c,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-workflownwnpr/series-workflownwnpr-build-action-4201127513/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-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-01 19:46:07 +0000 UTC FinishedAt: 2026-08-01 19:46:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-01 19:46:07 +0000 UTC FinishedAt: 2026-08-01 19:46:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-01 19:46:07 +0000 UTC FinishedAt: 2026-08-01 20:03:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-01 19:46:07 +0000 UTC FinishedAt: 2026-08-01 20:03:34 +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:*0d644292-d249-46ea-930a-2bd7067c90b6,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-workflownwnpr/series-workflownwnpr-convert-artifact-2463808626/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": "ad26fc65-d1c2-497a-855d-24dd83b12dbc", "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-workflownwnpr/series-workflownwnpr-build-action-3129523206/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-01 19:46:07 +0000 UTC FinishedAt: 2026-08-01 20:03:24 +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:*0d644292-d249-46ea-930a-2bd7067c90b6,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-workflownwnpr/series-workflownwnpr-convert-artifact-2463808626/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": "ad26fc65-d1c2-497a-855d-24dd83b12dbc", "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-workflownwnpr/series-workflownwnpr-build-action-3129523206/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-01 20:03:34 +0000 UTC FinishedAt: 2026-08-01 20:03:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-01 20:03:34 +0000 UTC FinishedAt: 2026-08-01 20:03:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-01 20:03:34 +0000 UTC FinishedAt: 2026-08-01 20:05:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-01 20:03:34 +0000 UTC FinishedAt: 2026-08-01 20:05:28 +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:*ad26fc65-d1c2-497a-855d-24dd83b12dbc,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-workflownwnpr/series-workflownwnpr-build-action-3129523206/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-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-01 20:05:40 +0000 UTC FinishedAt: 2026-08-01 23:08:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-01 20:05:40 +0000 UTC FinishedAt: 2026-08-01 23:08:38 +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":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"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:*e1fb3b85-9aca-4e5d-8ed1-e5f36f975a3c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ad26fc65-d1c2-497a-855d-24dd83b12dbc,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-workflownwnpr/series-workflownwnpr-build-action-4201127513/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-workflownwnpr/series-workflownwnpr-build-action-3129523206/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-01 20:05:40 +0000 UTC FinishedAt: 2026-08-01 20:05:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-01 20:05:40 +0000 UTC FinishedAt: 2026-08-01 20:05:45 +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":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"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-workflownwnpr/series-workflownwnpr-convert-artifact-2013594055/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-01 20:05:40 +0000 UTC FinishedAt: 2026-08-01 20:05:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-01 20:05:40 +0000 UTC FinishedAt: 2026-08-01 20:05:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-01 20:05:40 +0000 UTC FinishedAt: 2026-08-01 20:05:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-01 20:05:51 +0000 UTC FinishedAt: 2026-08-01 23:08:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflownwnpr[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nl80211_remain_on_channel","nl80211_tx_mgmt","nl80211_probe_peer","nl80211_tx_control_port","cfg80211_mlme_mgmt_tx","ieee80211_remain_on_channel","ieee80211_mgmt_tx","ieee80211_probe_peer","ieee80211_tx_control_port","ieee80211_attach_ack_skb","ieee80211_start_roc_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4a0bd262df757b25fc4e2a53c947317c119ced4e","config_name":"upstream-apparmor-kasan.config","enable_configs":["CFG80211","MAC80211","MAC80211_HWSIM"],"series_id":"ac533106-053e-4e3b-8b9f-a1a9879d941a","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-01 20:05:51 +0000 UTC FinishedAt: 2026-08-01 23:08:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e1fb3b85-9aca-4e5d-8ed1-e5f36f975a3c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*ad26fc65-d1c2-497a-855d-24dd83b12dbc,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-workflownwnpr/series-workflownwnpr-build-action-4201127513/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-workflownwnpr/series-workflownwnpr-build-action-3129523206/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-workflownwnpr/series-workflownwnpr-convert-artifact-2013594055/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,}