Name: series-workflowwxpms Phase: Succeeded StartedAt: 2026-08-26 08:03:08 +0000 UTC FinishedAt: 2026-08-26 10:01:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwxpms[0] Phase: Succeeded StartedAt: 2026-08-26 08:03:08 +0000 UTC FinishedAt: 2026-08-26 08:50:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwxpms[0].run-triage Phase: Succeeded StartedAt: 2026-08-26 08:03:08 +0000 UTC FinishedAt: 2026-08-26 08:50:42 +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": "a8406e6c0b793ce0788019683837c40855b55995", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_DIGITAL", "NFC_SIM", "NFC_NCI", "NFC_VIRTUAL_NCI" ], "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": "a8406e6c0b793ce0788019683837c40855b55995", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_DIGITAL", "NFC_SIM", "NFC_NCI", "NFC_VIRTUAL_NCI" ], "series_id": "6f4e9aed-2eea-44c2-8ef0-04ce578d399f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nfc_llcp_local_put", "nfc_llcp_accept_dequeue", "nfc_llcp_accept_unlink" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI2IDA4OjQ4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQyYjMzQ7LAogICAgJiMzNDtORkNfRElHSVRBTCYjMzQ7LAogICAgJiMzNDtORkNfU0lNJiMzNDssCiAgICAmIzM0O05GQ19OQ0kmIzM0OywKICAgICYjMzQ7TkZDX1ZJUlRVQUxfTkNJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZjX2xsY3BfbG9jYWxfcHV0JiMzNDssCiAgICAmIzM0O25mY19sbGNwX2FjY2VwdF9kZXF1ZXVlJiMzNDssCiAgICAmIzM0O25mY19sbGNwX2FjY2VwdF91bmxpbmsmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgbG9ja2luZywgcmVmZXJlbmNlIGNvdW50aW5nLCBhbmQgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGluIHRoZSBORkMgTExDUCBzb2NrZXQgbGF5ZXIuIEl0IGludHJvZHVjZXMgYSB3b3JrcXVldWUgZm9yIGRlZmVycmVkIGNsZWFudXAsIG1vZGlmaWVzIHNvY2tldCBsaXN0IHBvcHBpbmcgdG8gYXZvaWQgZGVhZGxvY2tzIG9yIFVBRiwgYW5kIGZpeGVzIGFjY2VwdCBxdWV1ZSBoYW5kbGluZy4gVGhlcmUgYXJlIG5vIGNoYW5nZXMgdG8gZGF0YSBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBubyBuZXcgYnVmZmVyIGFsbG9jYXRpb25zLCBhbmQgbm8gbW9kaWZpY2F0aW9ucyB0byBkYXRhIGxlbmd0aHMgb3IgYm91bmRzIGNoZWNrcyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgb3IgZGVhZGxvY2tzKSB3b3VsZCBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbG9naWMgb2YgTkZDIExMQ1Agc29ja2V0cywgZml4aW5nIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIG9yIHVzZS1hZnRlci1mcmVlIGR1cmluZyBzb2NrZXQgcmVsZWFzZSBhbmQgYWNjZXB0IHF1ZXVlIGhhbmRsaW5nLiBJdCBpbnRyb2R1Y2VzIGEgd29ya3F1ZXVlIGZvciBsb2NhbCByZWxlYXNlIGFuZCBtb2RpZmllcyBzb2NrZXQgbG9ja2luZy4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHN0YW5kYXJkIHNvY2tldCBBUElzIHdoZW4gTkZDIGlzIGVuYWJsZWQuIFZpcnR1YWwgTkZDIGRldmljZXMgKE5GQ19TSU0sIE5GQ19WSVJUVUFMX05DSSkgY2FuIGJlIHVzZWQgdG8gdHJpZ2dlciB0aGlzIGNvZGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDAxOTIwMzIzYjk1NDBmY2I2OGViOGUxZmFlZDAyNDQ3MDgyNjE2ZWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAyNiAwODo0ODozMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmZjL2xsY3AuaCBiL25ldC9uZmMvbGxjcC5oXG5pbmRleCBkODM0NWVkNTdjOTU0Li4yM2FlN2EwMTEyZDM3IDEwMDY0NFxuLS0tIGEvbmV0L25mYy9sbGNwLmhcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZmMvbGxjcC5oXG5AQCAtOTEsNiAmIzQzOzkxLDcgQEAgc3RydWN0IG5mY19sbGNwX2xvY2FsIHtcbiBcdHN0cnVjdCBobGlzdF9oZWFkIHBlbmRpbmdfc2RyZXFzO1xuIFx0c3RydWN0IHRpbWVyX2xpc3Qgc2RyZXFfdGltZXI7XG4gXHRzdHJ1Y3Qgd29ya19zdHJ1Y3Qgc2RyZXFfdGltZW91dF93b3JrO1xuJiM0MztcdHN0cnVjdCB3b3JrX3N0cnVjdCByZWxlYXNlX3dvcms7XG4gXHR1OCBzZHJlcV9uZXh0X3RpZDtcbiBcbiBcdC8qIHNvY2tldHMgYXJyYXkgKi9cbmRpZmYgLS1naXQgYS9uZXQvbmZjL2xsY3BfY29yZS5jIGIvbmV0L25mYy9sbGNwX2NvcmUuY1xuaW5kZXggYmQ2MzYxZTJlZmE0Zi4uMmMyZGJjMTI1MzFlYyAxMDA2NDRcbi0tLSBhL25ldC9uZmMvbGxjcF9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZmMvbGxjcF9jb3JlLmNcbkBAIC0yMCw2ICYjNDM7MjAsOCBAQCBzdGF0aWMgTElTVF9IRUFEKGxsY3BfZGV2aWNlcyk7XG4gLyogUHJvdGVjdHMgbGxjcF9kZXZpY2VzIGxpc3QgKi9cbiBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKGxsY3BfZGV2aWNlc19sb2NrKTtcbiBcbiYjNDM7c3RhdGljIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpsbGNwX3dxO1xuJiM0MztcbiBzdGF0aWMgdm9pZCBuZmNfbGxjcF9yeF9za2Ioc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG4gXG4gdm9pZCBuZmNfbGxjcF9zb2NrX2xpbmsoc3RydWN0IGxsY3Bfc29ja19saXN0ICpsLCBzdHJ1Y3Qgc29jayAqc2spXG5AQCAtNjMsMjEgJiM0Mzs2NSwzMyBAQCBzdGF0aWMgdm9pZCBuZmNfbGxjcF9zb2NrZXRfcHVyZ2Uoc3RydWN0IG5mY19sbGNwX3NvY2sgKnNvY2spXG4gXHR9XG4gfVxuIFxuJiM0MztzdGF0aWMgc3RydWN0IHNvY2sgKm5mY19sbGNwX3NvY2tfbGlzdF9wb3Aoc3RydWN0IGxsY3Bfc29ja19saXN0ICpsKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHNvY2sgKnNrO1xuJiM0MztcbiYjNDM7XHR3cml0ZV9sb2NrKFx1MDAyNmwtXHUwMDNlbG9jayk7XG4mIzQzO1x0c2sgPSBza19oZWFkKFx1MDAyNmwtXHUwMDNlaGVhZCk7XG4mIzQzO1x0aWYgKHNrKSB7XG4mIzQzO1x0XHRzb2NrX2hvbGQoc2spO1xuJiM0MztcdFx0c2tfZGVsX25vZGVfaW5pdChzayk7XG4mIzQzO1x0fVxuJiM0MztcdHdyaXRlX3VubG9jayhcdTAwMjZsLVx1MDAzZWxvY2spO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gc2s7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2Uoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgYm9vbCBkZXZpY2UsXG4gXHRcdFx0XHQgICAgaW50IGVycilcbiB7XG4gXHRzdHJ1Y3Qgc29jayAqc2s7XG4tXHRzdHJ1Y3QgaGxpc3Rfbm9kZSAqdG1wO1xuIFx0c3RydWN0IG5mY19sbGNwX3NvY2sgKmxsY3Bfc29jaztcbiBcbiBcdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZsb2NhbC1cdTAwM2V0eF9xdWV1ZSk7XG4gXG4tXHR3cml0ZV9sb2NrKFx1MDAyNmxvY2FsLVx1MDAzZXNvY2tldHMubG9jayk7XG4tXG4tXHRza19mb3JfZWFjaF9zYWZlKHNrLCB0bXAsIFx1MDAyNmxvY2FsLVx1MDAzZXNvY2tldHMuaGVhZCkge1xuJiM0MztcdHdoaWxlICgoc2sgPSBuZmNfbGxjcF9zb2NrX2xpc3RfcG9wKFx1MDAyNmxvY2FsLVx1MDAzZXNvY2tldHMpKSkge1xuIFx0XHRsbGNwX3NvY2sgPSBuZmNfbGxjcF9zb2NrKHNrKTtcbiBcbi1cdFx0YmhfbG9ja19zb2NrKHNrKTtcbiYjNDM7XHRcdGxvY2tfc29jayhzayk7XG4gXG4gXHRcdG5mY19sbGNwX3NvY2tldF9wdXJnZShsbGNwX3NvY2spO1xuIFxuQEAgLTkxLDE3ICYjNDM7MTA1LDI3IEBAIHN0YXRpYyB2b2lkIG5mY19sbGNwX3NvY2tldF9yZWxlYXNlKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIGJvb2wgZGV2aWNlLFxuIFx0XHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShsc2ssIG4sXG4gXHRcdFx0XHRcdFx0IFx1MDAyNmxsY3Bfc29jay1cdTAwM2VhY2NlcHRfcXVldWUsXG4gXHRcdFx0XHRcdFx0IGFjY2VwdF9xdWV1ZSkge1xuLVx0XHRcdFx0YWNjZXB0X3NrID0gXHUwMDI2bHNrLVx1MDAzZXNrO1xuLVx0XHRcdFx0YmhfbG9ja19zb2NrKGFjY2VwdF9zayk7XG4tXG4tXHRcdFx0XHRuZmNfbGxjcF9hY2NlcHRfdW5saW5rKGFjY2VwdF9zayk7XG4mIzQzO1x0XHRcdFx0Ym9vbCBwdXRfY3JlYXRpb24gPSBmYWxzZTtcbiBcbi1cdFx0XHRcdGlmIChlcnIpXG4tXHRcdFx0XHRcdGFjY2VwdF9zay1cdTAwM2Vza19lcnIgPSBlcnI7XG4tXHRcdFx0XHRhY2NlcHRfc2stXHUwMDNlc2tfc3RhdGUgPSBMTENQX0NMT1NFRDtcbi1cdFx0XHRcdGFjY2VwdF9zay1cdTAwM2Vza19zdGF0ZV9jaGFuZ2Uoc2spO1xuJiM0MztcdFx0XHRcdGFjY2VwdF9zayA9IFx1MDAyNmxzay1cdTAwM2VzaztcbiYjNDM7XHRcdFx0XHRsb2NrX3NvY2tfbmVzdGVkKGFjY2VwdF9zayxcbiYjNDM7XHRcdFx0XHRcdFx0IFNJTkdMRV9ERVBUSF9ORVNUSU5HKTtcbiYjNDM7XG4mIzQzO1x0XHRcdFx0aWYgKG5mY19sbGNwX3NvY2soYWNjZXB0X3NrKS1cdTAwM2VwYXJlbnQgPT0gc2spIHtcbiYjNDM7XHRcdFx0XHRcdG5mY19sbGNwX2FjY2VwdF91bmxpbmsoYWNjZXB0X3NrKTtcbiYjNDM7XHRcdFx0XHRcdG5mY19sbGNwX3NvY2tfdW5saW5rKFx1MDAyNmxvY2FsLVx1MDAzZXNvY2tldHMsIGFjY2VwdF9zayk7XG4mIzQzO1xuJiM0MztcdFx0XHRcdFx0aWYgKGVycilcbiYjNDM7XHRcdFx0XHRcdFx0YWNjZXB0X3NrLVx1MDAzZXNrX2VyciA9IGVycjtcbiYjNDM7XHRcdFx0XHRcdGFjY2VwdF9zay1cdTAwM2Vza19zdGF0ZSA9IExMQ1BfQ0xPU0VEO1xuJiM0MztcdFx0XHRcdFx0YWNjZXB0X3NrLVx1MDAzZXNrX3N0YXRlX2NoYW5nZShhY2NlcHRfc2spO1xuJiM0MztcdFx0XHRcdFx0c29ja19vcnBoYW4oYWNjZXB0X3NrKTtcbiYjNDM7XHRcdFx0XHRcdHB1dF9jcmVhdGlvbiA9IHRydWU7XG4mIzQzO1x0XHRcdFx0fVxuIFxuLVx0XHRcdFx0YmhfdW5sb2NrX3NvY2soYWNjZXB0X3NrKTtcbiYjNDM7XHRcdFx0XHRyZWxlYXNlX3NvY2soYWNjZXB0X3NrKTtcbiYjNDM7XHRcdFx0XHRpZiAocHV0X2NyZWF0aW9uKVxuJiM0MztcdFx0XHRcdFx0c29ja19wdXQoYWNjZXB0X3NrKTsgLyogY3JlYXRpb24gcmVmICovXG4gXHRcdFx0fVxuIFx0XHR9XG4gXG5AQCAtMTEwLDIzICYjNDM7MTM0LDE4IEBAIHN0YXRpYyB2b2lkIG5mY19sbGNwX3NvY2tldF9yZWxlYXNlKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIGJvb2wgZGV2aWNlLFxuIFx0XHRzay1cdTAwM2Vza19zdGF0ZSA9IExMQ1BfQ0xPU0VEO1xuIFx0XHRzay1cdTAwM2Vza19zdGF0ZV9jaGFuZ2Uoc2spO1xuIFxuLVx0XHRiaF91bmxvY2tfc29jayhzayk7XG4tXG4tXHRcdHNrX2RlbF9ub2RlX2luaXQoc2spO1xuJiM0MztcdFx0cmVsZWFzZV9zb2NrKHNrKTtcbiYjNDM7XHRcdHNvY2tfcHV0KHNrKTtcbiBcdH1cbiBcbi1cdHdyaXRlX3VubG9jayhcdTAwMjZsb2NhbC1cdTAwM2Vzb2NrZXRzLmxvY2spO1xuLVxuIFx0LyogSWYgd2Ugc3RpbGwgaGF2ZSBhIGRldmljZSwgd2Uga2VlcCB0aGUgUkFXIHNvY2tldHMgYWxpdmUgKi9cbiBcdGlmIChkZXZpY2UgPT0gdHJ1ZSlcbiBcdFx0cmV0dXJuO1xuIFxuLVx0d3JpdGVfbG9jayhcdTAwMjZsb2NhbC1cdTAwM2VyYXdfc29ja2V0cy5sb2NrKTtcbi1cbi1cdHNrX2Zvcl9lYWNoX3NhZmUoc2ssIHRtcCwgXHUwMDI2bG9jYWwtXHUwMDNlcmF3X3NvY2tldHMuaGVhZCkge1xuJiM0MztcdHdoaWxlICgoc2sgPSBuZmNfbGxjcF9zb2NrX2xpc3RfcG9wKFx1MDAyNmxvY2FsLVx1MDAzZXJhd19zb2NrZXRzKSkpIHtcbiBcdFx0bGxjcF9zb2NrID0gbmZjX2xsY3Bfc29jayhzayk7XG4gXG4tXHRcdGJoX2xvY2tfc29jayhzayk7XG4mIzQzO1x0XHRsb2NrX3NvY2soc2spO1xuIFxuIFx0XHRuZmNfbGxjcF9zb2NrZXRfcHVyZ2UobGxjcF9zb2NrKTtcbiBcbkBAIC0xMzUsMjYgJiM0MzsxNTQsMjAgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2Uoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgYm9vbCBkZXZpY2UsXG4gXHRcdHNrLVx1MDAzZXNrX3N0YXRlID0gTExDUF9DTE9TRUQ7XG4gXHRcdHNrLVx1MDAzZXNrX3N0YXRlX2NoYW5nZShzayk7XG4gXG4tXHRcdGJoX3VubG9ja19zb2NrKHNrKTtcbi1cbi1cdFx0c2tfZGVsX25vZGVfaW5pdChzayk7XG4mIzQzO1x0XHRyZWxlYXNlX3NvY2soc2spO1xuJiM0MztcdFx0c29ja19wdXQoc2spO1xuIFx0fVxuLVxuLVx0d3JpdGVfdW5sb2NrKFx1MDAyNmxvY2FsLVx1MDAzZXJhd19zb2NrZXRzLmxvY2spO1xuIH1cbiBcbiBzdGF0aWMgc3RydWN0IG5mY19sbGNwX2xvY2FsICpuZmNfbGxjcF9sb2NhbF9nZXQoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbClcbiB7XG4tXHQvKiBTaW5jZSB1c2luZyBuZmNfbGxjcF9sb2NhbCBtYXkgcmVzdWx0IGluIHVzYWdlIG9mIG5mY19kZXYsIHdoZW5ldmVyXG4tXHQgKiB3ZSBob2xkIGEgcmVmZXJlbmNlIHRvIGxvY2FsLCB3ZSBhbHNvIG5lZWQgdG8gaG9sZCBhIHJlZmVyZW5jZSB0b1xuLVx0ICogdGhlIGRldmljZSB0byBhdm9pZCBVQUYuXG4tXHQgKi9cbi1cdGlmICghbmZjX2dldF9kZXZpY2UobG9jYWwtXHUwMDNlZGV2LVx1MDAzZWlkeCkpXG4mIzQzO1x0aWYgKCFsb2NhbClcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4tXHRrcmVmX2dldChcdTAwMjZsb2NhbC1cdTAwM2VyZWYpO1xuJiM0MztcdGlmIChrcmVmX2dldF91bmxlc3NfemVybyhcdTAwMjZsb2NhbC1cdTAwM2VyZWYpKVxuJiM0MztcdFx0cmV0dXJuIGxvY2FsO1xuIFxuLVx0cmV0dXJuIGxvY2FsO1xuJiM0MztcdHJldHVybiBOVUxMO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBsb2NhbF9jbGVhbnVwKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwpXG5AQCAtMTcyLDMwICYjNDM7MTg1LDM0IEBAIHN0YXRpYyB2b2lkIGxvY2FsX2NsZWFudXAoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbClcbiBcdG5mY19sbGNwX2ZyZWVfc2RwX3Rsdl9saXN0KFx1MDAyNmxvY2FsLVx1MDAzZXBlbmRpbmdfc2RyZXFzKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgbG9jYWxfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqcmVmKVxuJiM0MztzdGF0aWMgdm9pZCBsb2NhbF9yZWxlYXNlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIHtcbiBcdHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWw7XG4mIzQzO1x0c3RydWN0IG5mY19kZXYgKmRldjtcbiBcbi1cdGxvY2FsID0gY29udGFpbmVyX29mKHJlZiwgc3RydWN0IG5mY19sbGNwX2xvY2FsLCByZWYpO1xuJiM0MztcdGxvY2FsID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZmNfbGxjcF9sb2NhbCwgcmVsZWFzZV93b3JrKTtcbiYjNDM7XHRkZXYgPSBsb2NhbC1cdTAwM2VkZXY7XG4gXG4gXHRsb2NhbF9jbGVhbnVwKGxvY2FsKTtcbiBcdGtmcmVlKGxvY2FsKTtcbiYjNDM7XHRuZmNfcHV0X2RldmljZShkZXYpO1xuIH1cbiBcbi1pbnQgbmZjX2xsY3BfbG9jYWxfcHV0KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwpXG4mIzQzO3N0YXRpYyB2b2lkIGxvY2FsX3JlbGVhc2Uoc3RydWN0IGtyZWYgKnJlZilcbiB7XG4tXHRzdHJ1Y3QgbmZjX2RldiAqZGV2O1xuLVx0aW50IHJldDtcbiYjNDM7XHRzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsO1xuIFxuLVx0aWYgKGxvY2FsID09IE5VTEwpXG4tXHRcdHJldHVybiAwO1xuJiM0MztcdGxvY2FsID0gY29udGFpbmVyX29mKHJlZiwgc3RydWN0IG5mY19sbGNwX2xvY2FsLCByZWYpO1xuIFxuLVx0ZGV2ID0gbG9jYWwtXHUwMDNlZGV2O1xuJiM0MztcdHF1ZXVlX3dvcmsobGxjcF93cSwgXHUwMDI2bG9jYWwtXHUwMDNlcmVsZWFzZV93b3JrKTtcbiYjNDM7fVxuIFxuLVx0cmV0ID0ga3JlZl9wdXQoXHUwMDI2bG9jYWwtXHUwMDNlcmVmLCBsb2NhbF9yZWxlYXNlKTtcbi1cdG5mY19wdXRfZGV2aWNlKGRldik7XG4mIzQzO2ludCBuZmNfbGxjcF9sb2NhbF9wdXQoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbClcbiYjNDM7e1xuJiM0MztcdGlmICghbG9jYWwpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiBcbi1cdHJldHVybiByZXQ7XG4mIzQzO1x0cmV0dXJuIGtyZWZfcHV0KFx1MDAyNmxvY2FsLVx1MDAzZXJlZiwgbG9jYWxfcmVsZWFzZSk7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqbmZjX2xsY3Bfc29ja19nZXQoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCxcbkBAIC0xNzA1LDYgJiM0MzsxNzIyLDcgQEAgaW50IG5mY19sbGNwX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmZjX2RldiAqbmRldilcbiBcdElOSVRfV09SSyhcdTAwMjZsb2NhbC1cdTAwM2VyeF93b3JrLCBuZmNfbGxjcF9yeF93b3JrKTtcbiBcbiBcdElOSVRfV09SSyhcdTAwMjZsb2NhbC1cdTAwM2V0aW1lb3V0X3dvcmssIG5mY19sbGNwX3RpbWVvdXRfd29yayk7XG4mIzQzO1x0SU5JVF9XT1JLKFx1MDAyNmxvY2FsLVx1MDAzZXJlbGVhc2Vfd29yaywgbG9jYWxfcmVsZWFzZV93b3JrKTtcbiBcbiBcdHJ3bG9ja19pbml0KFx1MDAyNmxvY2FsLVx1MDAzZXNvY2tldHMubG9jayk7XG4gXHRyd2xvY2tfaW5pdChcdTAwMjZsb2NhbC1cdTAwM2Vjb25uZWN0aW5nX3NvY2tldHMubG9jayk7XG5AQCAtMTc0OCwxMCAmIzQzOzE3NjYsMjMgQEAgdm9pZCBuZmNfbGxjcF91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmZjX2RldiAqZGV2KVxuIFxuIGludCBfX2luaXQgbmZjX2xsY3BfaW5pdCh2b2lkKVxuIHtcbi1cdHJldHVybiBuZmNfbGxjcF9zb2NrX2luaXQoKTtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRsbGNwX3dxID0gYWxsb2Nfd29ya3F1ZXVlKFwmIzM0O25mY19sbGNwX3dxXCYjMzQ7LCAwLCAwKTtcbiYjNDM7XHRpZiAoIWxsY3Bfd3EpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gbmZjX2xsY3Bfc29ja19pbml0KCk7XG4mIzQzO1x0aWYgKHJldCkge1xuJiM0MztcdFx0ZGVzdHJveV93b3JrcXVldWUobGxjcF93cSk7XG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4gfVxuIFxuIHZvaWQgbmZjX2xsY3BfZXhpdCh2b2lkKVxuIHtcbiBcdG5mY19sbGNwX3NvY2tfZXhpdCgpO1xuJiM0MztcdGRlc3Ryb3lfd29ya3F1ZXVlKGxsY3Bfd3EpO1xuIH1cbmRpZmYgLS1naXQgYS9uZXQvbmZjL2xsY3Bfc29jay5jIGIvbmV0L25mYy9sbGNwX3NvY2suY1xuaW5kZXggNTU1OGQ4YTRkNDhiMy4uY2U2ODc1ZWI1OGZiYyAxMDA2NDRcbi0tLSBhL25ldC9uZmMvbGxjcF9zb2NrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZmMvbGxjcF9zb2NrLmNcbkBAIC0zOTIsMTEgJiM0MzszOTIsMTIgQEAgdm9pZCBuZmNfbGxjcF9hY2NlcHRfdW5saW5rKHN0cnVjdCBzb2NrICpzaylcbiBcbiBcdHByX2RlYnVnKFwmIzM0O3N0YXRlICVkXFxuXCYjMzQ7LCBzay1cdTAwM2Vza19zdGF0ZSk7XG4gXG4tXHRsaXN0X2RlbF9pbml0KFx1MDAyNmxsY3Bfc29jay1cdTAwM2VhY2NlcHRfcXVldWUpO1xuLVx0c2tfYWNjZXB0cV9yZW1vdmVkKGxsY3Bfc29jay1cdTAwM2VwYXJlbnQpO1xuLVx0bGxjcF9zb2NrLVx1MDAzZXBhcmVudCA9IE5VTEw7XG4tXG4tXHRzb2NrX3B1dChzayk7XG4mIzQzO1x0aWYgKGxsY3Bfc29jay1cdTAwM2VwYXJlbnQpIHtcbiYjNDM7XHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2bGxjcF9zb2NrLVx1MDAzZWFjY2VwdF9xdWV1ZSk7XG4mIzQzO1x0XHRza19hY2NlcHRxX3JlbW92ZWQobGxjcF9zb2NrLVx1MDAzZXBhcmVudCk7XG4mIzQzO1x0XHRsbGNwX3NvY2stXHUwMDNlcGFyZW50ID0gTlVMTDtcbiYjNDM7XHRcdHNvY2tfcHV0KHNrKTtcbiYjNDM7XHR9XG4gfVxuIFxuIHZvaWQgbmZjX2xsY3BfYWNjZXB0X2VucXVldWUoc3RydWN0IHNvY2sgKnBhcmVudCwgc3RydWN0IHNvY2sgKnNrKVxuQEAgLTQyMywxMiAmIzQzOzQyNCwyMCBAQCBzdHJ1Y3Qgc29jayAqbmZjX2xsY3BfYWNjZXB0X2RlcXVldWUoc3RydWN0IHNvY2sgKnBhcmVudCxcbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShsc2ssIG4sIFx1MDAyNmxsY3BfcGFyZW50LVx1MDAzZWFjY2VwdF9xdWV1ZSxcbiBcdFx0XHRcdCBhY2NlcHRfcXVldWUpIHtcbiYjNDM7XHRcdHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWw7XG4mIzQzO1xuIFx0XHRzayA9IFx1MDAyNmxzay1cdTAwM2Vzaztcbi1cdFx0bG9ja19zb2NrKHNrKTtcbiYjNDM7XHRcdGxvY2tfc29ja19uZXN0ZWQoc2ssIFNJTkdMRV9ERVBUSF9ORVNUSU5HKTtcbiBcbiBcdFx0aWYgKHNrLVx1MDAzZXNrX3N0YXRlID09IExMQ1BfQ0xPU0VEKSB7XG4tXHRcdFx0cmVsZWFzZV9zb2NrKHNrKTtcbiYjNDM7XHRcdFx0bG9jYWwgPSBuZmNfbGxjcF9zb2NrKHNrKS1cdTAwM2Vsb2NhbDtcbiYjNDM7XG4gXHRcdFx0bmZjX2xsY3BfYWNjZXB0X3VubGluayhzayk7XG4mIzQzO1x0XHRcdGlmIChsb2NhbClcbiYjNDM7XHRcdFx0XHRuZmNfbGxjcF9zb2NrX3VubGluayhcdTAwMjZsb2NhbC1cdTAwM2Vzb2NrZXRzLCBzayk7XG4mIzQzO1x0XHRcdHNvY2tfb3JwaGFuKHNrKTtcbiYjNDM7XHRcdFx0cmVsZWFzZV9zb2NrKHNrKTtcbiYjNDM7XHRcdFx0c29ja19wdXQoc2spO1xuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHR9XG4gXG5AQCAtNDY0LDcgJiM0Mzs0NzMsNyBAQCBzdGF0aWMgaW50IGxsY3Bfc29ja19hY2NlcHQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2tldCAqbmV3c29jayxcbiBcbiBcdHByX2RlYnVnKFwmIzM0O3BhcmVudCAlcFxcblwmIzM0Oywgc2spO1xuIFxuLVx0bG9ja19zb2NrX25lc3RlZChzaywgU0lOR0xFX0RFUFRIX05FU1RJTkcpO1xuJiM0MztcdGxvY2tfc29jayhzayk7XG4gXG4gXHRpZiAoc2stXHUwMDNlc2tfc3RhdGUgIT0gTExDUF9MSVNURU4pIHtcbiBcdFx0cmV0ID0gLUVCQURGRDtcbkBAIC00OTAsNyAmIzQzOzQ5OSwxMiBAQCBzdGF0aWMgaW50IGxsY3Bfc29ja19hY2NlcHQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2tldCAqbmV3c29jayxcbiBcbiBcdFx0cmVsZWFzZV9zb2NrKHNrKTtcbiBcdFx0dGltZW8gPSBzY2hlZHVsZV90aW1lb3V0KHRpbWVvKTtcbi1cdFx0bG9ja19zb2NrX25lc3RlZChzaywgU0lOR0xFX0RFUFRIX05FU1RJTkcpO1xuJiM0MztcdFx0bG9ja19zb2NrKHNrKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoc2stXHUwMDNlc2tfc3RhdGUgIT0gTExDUF9MSVNURU4pIHtcbiYjNDM7XHRcdFx0cmV0ID0gLUVCQURGRDtcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXHRfX3NldF9jdXJyZW50X3N0YXRlKFRBU0tfUlVOTklORyk7XG4gXHRyZW1vdmVfd2FpdF9xdWV1ZShza19zbGVlcChzayksIFx1MDAyNndhaXQpO1xuQEAgLTYyOSwxMyAmIzQzOzY0MywyNCBAQCBzdGF0aWMgaW50IGxsY3Bfc29ja19yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXG4gXG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShsc2ssIG4sIFx1MDAyNmxsY3Bfc29jay1cdTAwM2VhY2NlcHRfcXVldWUsXG4gXHRcdFx0XHRcdCBhY2NlcHRfcXVldWUpIHtcbiYjNDM7XHRcdFx0Ym9vbCBwdXRfY3JlYXRpb24gPSBmYWxzZTtcbiYjNDM7XG4gXHRcdFx0YWNjZXB0X3NrID0gXHUwMDI2bHNrLVx1MDAzZXNrO1xuLVx0XHRcdGxvY2tfc29jayhhY2NlcHRfc2spO1xuJiM0MztcdFx0XHRsb2NrX3NvY2tfbmVzdGVkKGFjY2VwdF9zaywgU0lOR0xFX0RFUFRIX05FU1RJTkcpO1xuIFxuLVx0XHRcdG5mY19sbGNwX3NlbmRfZGlzY29ubmVjdChsc2spO1xuLVx0XHRcdG5mY19sbGNwX2FjY2VwdF91bmxpbmsoYWNjZXB0X3NrKTtcbiYjNDM7XHRcdFx0aWYgKG5mY19sbGNwX3NvY2soYWNjZXB0X3NrKS1cdTAwM2VwYXJlbnQgPT0gc2spIHtcbiYjNDM7XHRcdFx0XHRuZmNfbGxjcF9zZW5kX2Rpc2Nvbm5lY3QobHNrKTtcbiYjNDM7XHRcdFx0XHRuZmNfbGxjcF9hY2NlcHRfdW5saW5rKGFjY2VwdF9zayk7XG4mIzQzO1x0XHRcdFx0bmZjX2xsY3Bfc29ja191bmxpbmsoXHUwMDI2bG9jYWwtXHUwMDNlc29ja2V0cywgYWNjZXB0X3NrKTtcbiYjNDM7XG4mIzQzO1x0XHRcdFx0YWNjZXB0X3NrLVx1MDAzZXNrX3N0YXRlID0gTExDUF9DTE9TRUQ7XG4mIzQzO1x0XHRcdFx0c29ja19vcnBoYW4oYWNjZXB0X3NrKTtcbiYjNDM7XHRcdFx0XHRwdXRfY3JlYXRpb24gPSB0cnVlO1xuJiM0MztcdFx0XHR9XG4gXG4gXHRcdFx0cmVsZWFzZV9zb2NrKGFjY2VwdF9zayk7XG4mIzQzO1x0XHRcdGlmIChwdXRfY3JlYXRpb24pXG4mIzQzO1x0XHRcdFx0c29ja19wdXQoYWNjZXB0X3NrKTsgLyogY3JlYXRpb24gcmVmICovXG4gXHRcdH1cbiBcdH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0ODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDJiMzNDssCiAgICAmIzM0O05GQ19ESUdJVEFMJiMzNDssCiAgICAmIzM0O05GQ19TSU0mIzM0OywKICAgICYjMzQ7TkZDX05DSSYjMzQ7LAogICAgJiMzNDtORkNfVklSVFVBTF9OQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZmNfbGxjcF9sb2NhbF9wdXQmIzM0OywKICAgICYjMzQ7bmZjX2xsY3BfYWNjZXB0X2RlcXVldWUmIzM0OywKICAgICYjMzQ7bmZjX2xsY3BfYWNjZXB0X3VubGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBsb2dpYyBvZiBORkMgTExDUCBzb2NrZXRzLCBmaXhpbmcgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gb3IgdXNlLWFmdGVyLWZyZWUgZHVyaW5nIHNvY2tldCByZWxlYXNlIGFuZCBhY2NlcHQgcXVldWUgaGFuZGxpbmcuIEl0IGludHJvZHVjZXMgYSB3b3JrcXVldWUgZm9yIGxvY2FsIHJlbGVhc2UgYW5kIG1vZGlmaWVzIHNvY2tldCBsb2NraW5nLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgc3RhbmRhcmQgc29ja2V0IEFQSXMgd2hlbiBORkMgaXMgZW5hYmxlZC4gVmlydHVhbCBORkMgZGV2aWNlcyAoTkZDX1NJTSwgTkZDX1ZJUlRVQUxfTkNJKSBjYW4gYmUgdXNlZCB0byB0cmlnZ2VyIHRoaXMgY29kZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDE5MjAzMjNiOTU0MGZjYjY4ZWI4ZTFmYWVkMDI0NDcwODI2MTZlZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDI2IDA4OjQ4OjMzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25mYy9sbGNwLmggYi9uZXQvbmZjL2xsY3AuaAppbmRleCBkODM0NWVkNTdjOTU0Li4yM2FlN2EwMTEyZDM3IDEwMDY0NAotLS0gYS9uZXQvbmZjL2xsY3AuaAomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmZjL2xsY3AuaApAQCAtOTEsNiAmIzQzOzkxLDcgQEAgc3RydWN0IG5mY19sbGNwX2xvY2FsIHsKIAlzdHJ1Y3QgaGxpc3RfaGVhZCBwZW5kaW5nX3NkcmVxczsKIAlzdHJ1Y3QgdGltZXJfbGlzdCBzZHJlcV90aW1lcjsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgc2RyZXFfdGltZW91dF93b3JrOwomIzQzOwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgcmVsZWFzZV93b3JrOwogCXU4IHNkcmVxX25leHRfdGlkOwogCiAJLyogc29ja2V0cyBhcnJheSAqLwpkaWZmIC0tZ2l0IGEvbmV0L25mYy9sbGNwX2NvcmUuYyBiL25ldC9uZmMvbGxjcF9jb3JlLmMKaW5kZXggYmQ2MzYxZTJlZmE0Zi4uMmMyZGJjMTI1MzFlYyAxMDA2NDQKLS0tIGEvbmV0L25mYy9sbGNwX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmZjL2xsY3BfY29yZS5jCkBAIC0yMCw2ICYjNDM7MjAsOCBAQCBzdGF0aWMgTElTVF9IRUFEKGxsY3BfZGV2aWNlcyk7CiAvKiBQcm90ZWN0cyBsbGNwX2RldmljZXMgbGlzdCAqLwogc3RhdGljIERFRklORV9TUElOTE9DSyhsbGNwX2RldmljZXNfbG9jayk7CiAKJiM0MztzdGF0aWMgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKmxsY3Bfd3E7CiYjNDM7CiBzdGF0aWMgdm9pZCBuZmNfbGxjcF9yeF9za2Ioc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7CiAKIHZvaWQgbmZjX2xsY3Bfc29ja19saW5rKHN0cnVjdCBsbGNwX3NvY2tfbGlzdCAqbCwgc3RydWN0IHNvY2sgKnNrKQpAQCAtNjMsMjEgJiM0Mzs2NSwzMyBAQCBzdGF0aWMgdm9pZCBuZmNfbGxjcF9zb2NrZXRfcHVyZ2Uoc3RydWN0IG5mY19sbGNwX3NvY2sgKnNvY2spCiAJfQogfQogCiYjNDM7c3RhdGljIHN0cnVjdCBzb2NrICpuZmNfbGxjcF9zb2NrX2xpc3RfcG9wKHN0cnVjdCBsbGNwX3NvY2tfbGlzdCAqbCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBzb2NrICpzazsKJiM0MzsKJiM0MzsJd3JpdGVfbG9jaygmYW1wO2wtJmd0O2xvY2spOwomIzQzOwlzayA9IHNrX2hlYWQoJmFtcDtsLSZndDtoZWFkKTsKJiM0MzsJaWYgKHNrKSB7CiYjNDM7CQlzb2NrX2hvbGQoc2spOwomIzQzOwkJc2tfZGVsX25vZGVfaW5pdChzayk7CiYjNDM7CX0KJiM0MzsJd3JpdGVfdW5sb2NrKCZhbXA7bC0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CXJldHVybiBzazsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBuZmNfbGxjcF9zb2NrZXRfcmVsZWFzZShzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBib29sIGRldmljZSwKIAkJCQkgICAgaW50IGVycikKIHsKIAlzdHJ1Y3Qgc29jayAqc2s7Ci0Jc3RydWN0IGhsaXN0X25vZGUgKnRtcDsKIAlzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqbGxjcF9zb2NrOwogCiAJc2tiX3F1ZXVlX3B1cmdlKCZhbXA7bG9jYWwtJmd0O3R4X3F1ZXVlKTsKIAotCXdyaXRlX2xvY2soJmFtcDtsb2NhbC0mZ3Q7c29ja2V0cy5sb2NrKTsKLQotCXNrX2Zvcl9lYWNoX3NhZmUoc2ssIHRtcCwgJmFtcDtsb2NhbC0mZ3Q7c29ja2V0cy5oZWFkKSB7CiYjNDM7CXdoaWxlICgoc2sgPSBuZmNfbGxjcF9zb2NrX2xpc3RfcG9wKCZhbXA7bG9jYWwtJmd0O3NvY2tldHMpKSkgewogCQlsbGNwX3NvY2sgPSBuZmNfbGxjcF9zb2NrKHNrKTsKIAotCQliaF9sb2NrX3NvY2soc2spOwomIzQzOwkJbG9ja19zb2NrKHNrKTsKIAogCQluZmNfbGxjcF9zb2NrZXRfcHVyZ2UobGxjcF9zb2NrKTsKIApAQCAtOTEsMTcgJiM0MzsxMDUsMjcgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2Uoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgYm9vbCBkZXZpY2UsCiAJCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobHNrLCBuLAogCQkJCQkJICZhbXA7bGxjcF9zb2NrLSZndDthY2NlcHRfcXVldWUsCiAJCQkJCQkgYWNjZXB0X3F1ZXVlKSB7Ci0JCQkJYWNjZXB0X3NrID0gJmFtcDtsc2stJmd0O3NrOwotCQkJCWJoX2xvY2tfc29jayhhY2NlcHRfc2spOwotCi0JCQkJbmZjX2xsY3BfYWNjZXB0X3VubGluayhhY2NlcHRfc2spOwomIzQzOwkJCQlib29sIHB1dF9jcmVhdGlvbiA9IGZhbHNlOwogCi0JCQkJaWYgKGVycikKLQkJCQkJYWNjZXB0X3NrLSZndDtza19lcnIgPSBlcnI7Ci0JCQkJYWNjZXB0X3NrLSZndDtza19zdGF0ZSA9IExMQ1BfQ0xPU0VEOwotCQkJCWFjY2VwdF9zay0mZ3Q7c2tfc3RhdGVfY2hhbmdlKHNrKTsKJiM0MzsJCQkJYWNjZXB0X3NrID0gJmFtcDtsc2stJmd0O3NrOwomIzQzOwkJCQlsb2NrX3NvY2tfbmVzdGVkKGFjY2VwdF9zaywKJiM0MzsJCQkJCQkgU0lOR0xFX0RFUFRIX05FU1RJTkcpOwomIzQzOwomIzQzOwkJCQlpZiAobmZjX2xsY3Bfc29jayhhY2NlcHRfc2spLSZndDtwYXJlbnQgPT0gc2spIHsKJiM0MzsJCQkJCW5mY19sbGNwX2FjY2VwdF91bmxpbmsoYWNjZXB0X3NrKTsKJiM0MzsJCQkJCW5mY19sbGNwX3NvY2tfdW5saW5rKCZhbXA7bG9jYWwtJmd0O3NvY2tldHMsIGFjY2VwdF9zayk7CiYjNDM7CiYjNDM7CQkJCQlpZiAoZXJyKQomIzQzOwkJCQkJCWFjY2VwdF9zay0mZ3Q7c2tfZXJyID0gZXJyOwomIzQzOwkJCQkJYWNjZXB0X3NrLSZndDtza19zdGF0ZSA9IExMQ1BfQ0xPU0VEOwomIzQzOwkJCQkJYWNjZXB0X3NrLSZndDtza19zdGF0ZV9jaGFuZ2UoYWNjZXB0X3NrKTsKJiM0MzsJCQkJCXNvY2tfb3JwaGFuKGFjY2VwdF9zayk7CiYjNDM7CQkJCQlwdXRfY3JlYXRpb24gPSB0cnVlOwomIzQzOwkJCQl9CiAKLQkJCQliaF91bmxvY2tfc29jayhhY2NlcHRfc2spOwomIzQzOwkJCQlyZWxlYXNlX3NvY2soYWNjZXB0X3NrKTsKJiM0MzsJCQkJaWYgKHB1dF9jcmVhdGlvbikKJiM0MzsJCQkJCXNvY2tfcHV0KGFjY2VwdF9zayk7IC8qIGNyZWF0aW9uIHJlZiAqLwogCQkJfQogCQl9CiAKQEAgLTExMCwyMyAmIzQzOzEzNCwxOCBAQCBzdGF0aWMgdm9pZCBuZmNfbGxjcF9zb2NrZXRfcmVsZWFzZShzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBib29sIGRldmljZSwKIAkJc2stJmd0O3NrX3N0YXRlID0gTExDUF9DTE9TRUQ7CiAJCXNrLSZndDtza19zdGF0ZV9jaGFuZ2Uoc2spOwogCi0JCWJoX3VubG9ja19zb2NrKHNrKTsKLQotCQlza19kZWxfbm9kZV9pbml0KHNrKTsKJiM0MzsJCXJlbGVhc2Vfc29jayhzayk7CiYjNDM7CQlzb2NrX3B1dChzayk7CiAJfQogCi0Jd3JpdGVfdW5sb2NrKCZhbXA7bG9jYWwtJmd0O3NvY2tldHMubG9jayk7Ci0KIAkvKiBJZiB3ZSBzdGlsbCBoYXZlIGEgZGV2aWNlLCB3ZSBrZWVwIHRoZSBSQVcgc29ja2V0cyBhbGl2ZSAqLwogCWlmIChkZXZpY2UgPT0gdHJ1ZSkKIAkJcmV0dXJuOwogCi0Jd3JpdGVfbG9jaygmYW1wO2xvY2FsLSZndDtyYXdfc29ja2V0cy5sb2NrKTsKLQotCXNrX2Zvcl9lYWNoX3NhZmUoc2ssIHRtcCwgJmFtcDtsb2NhbC0mZ3Q7cmF3X3NvY2tldHMuaGVhZCkgewomIzQzOwl3aGlsZSAoKHNrID0gbmZjX2xsY3Bfc29ja19saXN0X3BvcCgmYW1wO2xvY2FsLSZndDtyYXdfc29ja2V0cykpKSB7CiAJCWxsY3Bfc29jayA9IG5mY19sbGNwX3NvY2soc2spOwogCi0JCWJoX2xvY2tfc29jayhzayk7CiYjNDM7CQlsb2NrX3NvY2soc2spOwogCiAJCW5mY19sbGNwX3NvY2tldF9wdXJnZShsbGNwX3NvY2spOwogCkBAIC0xMzUsMjYgJiM0MzsxNTQsMjAgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2Uoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgYm9vbCBkZXZpY2UsCiAJCXNrLSZndDtza19zdGF0ZSA9IExMQ1BfQ0xPU0VEOwogCQlzay0mZ3Q7c2tfc3RhdGVfY2hhbmdlKHNrKTsKIAotCQliaF91bmxvY2tfc29jayhzayk7Ci0KLQkJc2tfZGVsX25vZGVfaW5pdChzayk7CiYjNDM7CQlyZWxlYXNlX3NvY2soc2spOwomIzQzOwkJc29ja19wdXQoc2spOwogCX0KLQotCXdyaXRlX3VubG9jaygmYW1wO2xvY2FsLSZndDtyYXdfc29ja2V0cy5sb2NrKTsKIH0KIAogc3RhdGljIHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbmZjX2xsY3BfbG9jYWxfZ2V0KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwpCiB7Ci0JLyogU2luY2UgdXNpbmcgbmZjX2xsY3BfbG9jYWwgbWF5IHJlc3VsdCBpbiB1c2FnZSBvZiBuZmNfZGV2LCB3aGVuZXZlcgotCSAqIHdlIGhvbGQgYSByZWZlcmVuY2UgdG8gbG9jYWwsIHdlIGFsc28gbmVlZCB0byBob2xkIGEgcmVmZXJlbmNlIHRvCi0JICogdGhlIGRldmljZSB0byBhdm9pZCBVQUYuCi0JICovCi0JaWYgKCFuZmNfZ2V0X2RldmljZShsb2NhbC0mZ3Q7ZGV2LSZndDtpZHgpKQomIzQzOwlpZiAoIWxvY2FsKQogCQlyZXR1cm4gTlVMTDsKIAotCWtyZWZfZ2V0KCZhbXA7bG9jYWwtJmd0O3JlZik7CiYjNDM7CWlmIChrcmVmX2dldF91bmxlc3NfemVybygmYW1wO2xvY2FsLSZndDtyZWYpKQomIzQzOwkJcmV0dXJuIGxvY2FsOwogCi0JcmV0dXJuIGxvY2FsOwomIzQzOwlyZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIHZvaWQgbG9jYWxfY2xlYW51cChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsKQpAQCAtMTcyLDMwICYjNDM7MTg1LDM0IEBAIHN0YXRpYyB2b2lkIGxvY2FsX2NsZWFudXAoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCkKIAluZmNfbGxjcF9mcmVlX3NkcF90bHZfbGlzdCgmYW1wO2xvY2FsLSZndDtwZW5kaW5nX3NkcmVxcyk7CiB9CiAKLXN0YXRpYyB2b2lkIGxvY2FsX3JlbGVhc2Uoc3RydWN0IGtyZWYgKnJlZikKJiM0MztzdGF0aWMgdm9pZCBsb2NhbF9yZWxlYXNlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogewogCXN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWw7CiYjNDM7CXN0cnVjdCBuZmNfZGV2ICpkZXY7CiAKLQlsb2NhbCA9IGNvbnRhaW5lcl9vZihyZWYsIHN0cnVjdCBuZmNfbGxjcF9sb2NhbCwgcmVmKTsKJiM0MzsJbG9jYWwgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG5mY19sbGNwX2xvY2FsLCByZWxlYXNlX3dvcmspOwomIzQzOwlkZXYgPSBsb2NhbC0mZ3Q7ZGV2OwogCiAJbG9jYWxfY2xlYW51cChsb2NhbCk7CiAJa2ZyZWUobG9jYWwpOwomIzQzOwluZmNfcHV0X2RldmljZShkZXYpOwogfQogCi1pbnQgbmZjX2xsY3BfbG9jYWxfcHV0KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwpCiYjNDM7c3RhdGljIHZvaWQgbG9jYWxfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqcmVmKQogewotCXN0cnVjdCBuZmNfZGV2ICpkZXY7Ci0JaW50IHJldDsKJiM0MzsJc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbDsKIAotCWlmIChsb2NhbCA9PSBOVUxMKQotCQlyZXR1cm4gMDsKJiM0MzsJbG9jYWwgPSBjb250YWluZXJfb2YocmVmLCBzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwsIHJlZik7CiAKLQlkZXYgPSBsb2NhbC0mZ3Q7ZGV2OwomIzQzOwlxdWV1ZV93b3JrKGxsY3Bfd3EsICZhbXA7bG9jYWwtJmd0O3JlbGVhc2Vfd29yayk7CiYjNDM7fQogCi0JcmV0ID0ga3JlZl9wdXQoJmFtcDtsb2NhbC0mZ3Q7cmVmLCBsb2NhbF9yZWxlYXNlKTsKLQluZmNfcHV0X2RldmljZShkZXYpOwomIzQzO2ludCBuZmNfbGxjcF9sb2NhbF9wdXQoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCkKJiM0Mzt7CiYjNDM7CWlmICghbG9jYWwpCiYjNDM7CQlyZXR1cm4gMDsKIAotCXJldHVybiByZXQ7CiYjNDM7CXJldHVybiBrcmVmX3B1dCgmYW1wO2xvY2FsLSZndDtyZWYsIGxvY2FsX3JlbGVhc2UpOwogfQogCiBzdGF0aWMgc3RydWN0IG5mY19sbGNwX3NvY2sgKm5mY19sbGNwX3NvY2tfZ2V0KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsCkBAIC0xNzA1LDYgJiM0MzsxNzIyLDcgQEAgaW50IG5mY19sbGNwX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmZjX2RldiAqbmRldikKIAlJTklUX1dPUksoJmFtcDtsb2NhbC0mZ3Q7cnhfd29yaywgbmZjX2xsY3Bfcnhfd29yayk7CiAKIAlJTklUX1dPUksoJmFtcDtsb2NhbC0mZ3Q7dGltZW91dF93b3JrLCBuZmNfbGxjcF90aW1lb3V0X3dvcmspOwomIzQzOwlJTklUX1dPUksoJmFtcDtsb2NhbC0mZ3Q7cmVsZWFzZV93b3JrLCBsb2NhbF9yZWxlYXNlX3dvcmspOwogCiAJcndsb2NrX2luaXQoJmFtcDtsb2NhbC0mZ3Q7c29ja2V0cy5sb2NrKTsKIAlyd2xvY2tfaW5pdCgmYW1wO2xvY2FsLSZndDtjb25uZWN0aW5nX3NvY2tldHMubG9jayk7CkBAIC0xNzQ4LDEwICYjNDM7MTc2NiwyMyBAQCB2b2lkIG5mY19sbGNwX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBuZmNfZGV2ICpkZXYpCiAKIGludCBfX2luaXQgbmZjX2xsY3BfaW5pdCh2b2lkKQogewotCXJldHVybiBuZmNfbGxjcF9zb2NrX2luaXQoKTsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJbGxjcF93cSA9IGFsbG9jX3dvcmtxdWV1ZSgmIzM0O25mY19sbGNwX3dxJiMzNDssIDAsIDApOwomIzQzOwlpZiAoIWxsY3Bfd3EpCiYjNDM7CQlyZXR1cm4gLUVOT01FTTsKJiM0MzsKJiM0MzsJcmV0ID0gbmZjX2xsY3Bfc29ja19pbml0KCk7CiYjNDM7CWlmIChyZXQpIHsKJiM0MzsJCWRlc3Ryb3lfd29ya3F1ZXVlKGxsY3Bfd3EpOwomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gMDsKIH0KIAogdm9pZCBuZmNfbGxjcF9leGl0KHZvaWQpCiB7CiAJbmZjX2xsY3Bfc29ja19leGl0KCk7CiYjNDM7CWRlc3Ryb3lfd29ya3F1ZXVlKGxsY3Bfd3EpOwogfQpkaWZmIC0tZ2l0IGEvbmV0L25mYy9sbGNwX3NvY2suYyBiL25ldC9uZmMvbGxjcF9zb2NrLmMKaW5kZXggNTU1OGQ4YTRkNDhiMy4uY2U2ODc1ZWI1OGZiYyAxMDA2NDQKLS0tIGEvbmV0L25mYy9sbGNwX3NvY2suYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmZjL2xsY3Bfc29jay5jCkBAIC0zOTIsMTEgJiM0MzszOTIsMTIgQEAgdm9pZCBuZmNfbGxjcF9hY2NlcHRfdW5saW5rKHN0cnVjdCBzb2NrICpzaykKIAogCXByX2RlYnVnKCYjMzQ7c3RhdGUgJWRcbiYjMzQ7LCBzay0mZ3Q7c2tfc3RhdGUpOwogCi0JbGlzdF9kZWxfaW5pdCgmYW1wO2xsY3Bfc29jay0mZ3Q7YWNjZXB0X3F1ZXVlKTsKLQlza19hY2NlcHRxX3JlbW92ZWQobGxjcF9zb2NrLSZndDtwYXJlbnQpOwotCWxsY3Bfc29jay0mZ3Q7cGFyZW50ID0gTlVMTDsKLQotCXNvY2tfcHV0KHNrKTsKJiM0MzsJaWYgKGxsY3Bfc29jay0mZ3Q7cGFyZW50KSB7CiYjNDM7CQlsaXN0X2RlbF9pbml0KCZhbXA7bGxjcF9zb2NrLSZndDthY2NlcHRfcXVldWUpOwomIzQzOwkJc2tfYWNjZXB0cV9yZW1vdmVkKGxsY3Bfc29jay0mZ3Q7cGFyZW50KTsKJiM0MzsJCWxsY3Bfc29jay0mZ3Q7cGFyZW50ID0gTlVMTDsKJiM0MzsJCXNvY2tfcHV0KHNrKTsKJiM0MzsJfQogfQogCiB2b2lkIG5mY19sbGNwX2FjY2VwdF9lbnF1ZXVlKHN0cnVjdCBzb2NrICpwYXJlbnQsIHN0cnVjdCBzb2NrICpzaykKQEAgLTQyMywxMiAmIzQzOzQyNCwyMCBAQCBzdHJ1Y3Qgc29jayAqbmZjX2xsY3BfYWNjZXB0X2RlcXVldWUoc3RydWN0IHNvY2sgKnBhcmVudCwKIAogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShsc2ssIG4sICZhbXA7bGxjcF9wYXJlbnQtJmd0O2FjY2VwdF9xdWV1ZSwKIAkJCQkgYWNjZXB0X3F1ZXVlKSB7CiYjNDM7CQlzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsOwomIzQzOwogCQlzayA9ICZhbXA7bHNrLSZndDtzazsKLQkJbG9ja19zb2NrKHNrKTsKJiM0MzsJCWxvY2tfc29ja19uZXN0ZWQoc2ssIFNJTkdMRV9ERVBUSF9ORVNUSU5HKTsKIAogCQlpZiAoc2stJmd0O3NrX3N0YXRlID09IExMQ1BfQ0xPU0VEKSB7Ci0JCQlyZWxlYXNlX3NvY2soc2spOwomIzQzOwkJCWxvY2FsID0gbmZjX2xsY3Bfc29jayhzayktJmd0O2xvY2FsOwomIzQzOwogCQkJbmZjX2xsY3BfYWNjZXB0X3VubGluayhzayk7CiYjNDM7CQkJaWYgKGxvY2FsKQomIzQzOwkJCQluZmNfbGxjcF9zb2NrX3VubGluaygmYW1wO2xvY2FsLSZndDtzb2NrZXRzLCBzayk7CiYjNDM7CQkJc29ja19vcnBoYW4oc2spOwomIzQzOwkJCXJlbGVhc2Vfc29jayhzayk7CiYjNDM7CQkJc29ja19wdXQoc2spOwogCQkJY29udGludWU7CiAJCX0KIApAQCAtNDY0LDcgJiM0Mzs0NzMsNyBAQCBzdGF0aWMgaW50IGxsY3Bfc29ja19hY2NlcHQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2tldCAqbmV3c29jaywKIAogCXByX2RlYnVnKCYjMzQ7cGFyZW50ICVwXG4mIzM0Oywgc2spOwogCi0JbG9ja19zb2NrX25lc3RlZChzaywgU0lOR0xFX0RFUFRIX05FU1RJTkcpOwomIzQzOwlsb2NrX3NvY2soc2spOwogCiAJaWYgKHNrLSZndDtza19zdGF0ZSAhPSBMTENQX0xJU1RFTikgewogCQlyZXQgPSAtRUJBREZEOwpAQCAtNDkwLDcgJiM0Mzs0OTksMTIgQEAgc3RhdGljIGludCBsbGNwX3NvY2tfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssCiAKIAkJcmVsZWFzZV9zb2NrKHNrKTsKIAkJdGltZW8gPSBzY2hlZHVsZV90aW1lb3V0KHRpbWVvKTsKLQkJbG9ja19zb2NrX25lc3RlZChzaywgU0lOR0xFX0RFUFRIX05FU1RJTkcpOwomIzQzOwkJbG9ja19zb2NrKHNrKTsKJiM0MzsKJiM0MzsJCWlmIChzay0mZ3Q7c2tfc3RhdGUgIT0gTExDUF9MSVNURU4pIHsKJiM0MzsJCQlyZXQgPSAtRUJBREZEOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQogCX0KIAlfX3NldF9jdXJyZW50X3N0YXRlKFRBU0tfUlVOTklORyk7CiAJcmVtb3ZlX3dhaXRfcXVldWUoc2tfc2xlZXAoc2spLCAmYW1wO3dhaXQpOwpAQCAtNjI5LDEzICYjNDM7NjQzLDI0IEBAIHN0YXRpYyBpbnQgbGxjcF9zb2NrX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaykKIAogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobHNrLCBuLCAmYW1wO2xsY3Bfc29jay0mZ3Q7YWNjZXB0X3F1ZXVlLAogCQkJCQkgYWNjZXB0X3F1ZXVlKSB7CiYjNDM7CQkJYm9vbCBwdXRfY3JlYXRpb24gPSBmYWxzZTsKJiM0MzsKIAkJCWFjY2VwdF9zayA9ICZhbXA7bHNrLSZndDtzazsKLQkJCWxvY2tfc29jayhhY2NlcHRfc2spOwomIzQzOwkJCWxvY2tfc29ja19uZXN0ZWQoYWNjZXB0X3NrLCBTSU5HTEVfREVQVEhfTkVTVElORyk7CiAKLQkJCW5mY19sbGNwX3NlbmRfZGlzY29ubmVjdChsc2spOwotCQkJbmZjX2xsY3BfYWNjZXB0X3VubGluayhhY2NlcHRfc2spOwomIzQzOwkJCWlmIChuZmNfbGxjcF9zb2NrKGFjY2VwdF9zayktJmd0O3BhcmVudCA9PSBzaykgewomIzQzOwkJCQluZmNfbGxjcF9zZW5kX2Rpc2Nvbm5lY3QobHNrKTsKJiM0MzsJCQkJbmZjX2xsY3BfYWNjZXB0X3VubGluayhhY2NlcHRfc2spOwomIzQzOwkJCQluZmNfbGxjcF9zb2NrX3VubGluaygmYW1wO2xvY2FsLSZndDtzb2NrZXRzLCBhY2NlcHRfc2spOwomIzQzOwomIzQzOwkJCQlhY2NlcHRfc2stJmd0O3NrX3N0YXRlID0gTExDUF9DTE9TRUQ7CiYjNDM7CQkJCXNvY2tfb3JwaGFuKGFjY2VwdF9zayk7CiYjNDM7CQkJCXB1dF9jcmVhdGlvbiA9IHRydWU7CiYjNDM7CQkJfQogCiAJCQlyZWxlYXNlX3NvY2soYWNjZXB0X3NrKTsKJiM0MzsJCQlpZiAocHV0X2NyZWF0aW9uKQomIzQzOwkJCQlzb2NrX3B1dChhY2NlcHRfc2spOyAvKiBjcmVhdGlvbiByZWYgKi8KIAkJfQogCX0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjM3CgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogMjI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTkZDIFN1YnN5c3RlbSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBrZXJuZWwgcGF0Y2ggaW4gZnJvbnQgb2YgbWUuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3Mgc3BlY2lmaWNhbGx5IHRhcmdldGluZyB0aGUgTkZDIHN1YnN5c3RlbSwgZGlnZ2luZyBpbnRvIGBuZXQvbmZjL2xsY3BfY29yZS5jYCwgYG5ldC9uZmMvbGxjcC5oYCwgYW5kIGBuZXQvbmZjL2xsY3Bfc29jay5jYC4gU2VlbXMgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBkZWZpbml0ZWx5IG5vdCBhIGNvc21ldGljIG9uZS4gVGhlIGJpZ2dlc3QgZmxhZyBpcyB0aGUgaW50cm9kdWN0aW9uIG9mIHRoaXMgd29ya3F1ZXVlLCBgbGxjcF93cWAsIHNwZWNpZmljYWxseSBmb3IgYGxvY2FsX3JlbGVhc2Vfd29ya2AuIEkmIzM5O20gc2VlaW5nIGNoYW5nZXMgaW4gaG93IHNvY2tldHMgYXJlIHJlbGVhc2VkIHdpdGggYG5mY19sbGNwX3NvY2tldF9yZWxlYXNlYCB1c2luZyBgbmZjX2xsY3Bfc29ja19saXN0X3BvcGAgYW5kLCBpbXBvcnRhbnRseSwgbmV3IGxvY2tpbmcuIEFsc28sIG1vZGlmaWNhdGlvbnMgaW4gYG5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlYCwgYGxsY3Bfc29ja19hY2NlcHRgLCBhbmQgYGxsY3Bfc29ja19yZWxlYXNlYC4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyBpcyB0b3VjaGluZyBzb21lIGNyaXRpY2FsIGNvbmN1cnJlbmN5IGFzcGVjdHMgb2YgdGhlIExMQ1AgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24uCgpOb3csIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIGhvdyB0aGlzIHdpbGwgYmVoYXZlIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dC4gSSBrbm93IE5GQyBpcyBpbmhlcmVudGx5IGhhcmR3YXJlLWRlcGVuZGVudC4gU28sIHdpbGwgdGhpcyBpbXBhY3QgdGhlIHRlc3Rpbmcgb2YgdGhpcyBjaGFuZ2U/IEkgaGF2ZSB0byBjb25zaWRlciB3aGV0aGVyIHRoZXJlJiMzOTtzIGEgc2ltdWxhdG9yLCBsaWtlIHRoZSBgbWFjODAyMTFfaHdzaW1gIGVxdWl2YWxlbnQsIGF2YWlsYWJsZSBmb3IgTkZDLiBUaGUgcmVhbCBoYXJkd2FyZSBtaWdodCBub3QgYmUgZWFzaWx5IGFjY2Vzc2libGUgZm9yIGFsbCB0ZXN0IHNldHVwcy4gVGltZSB0byBzZWUgaWYgc29tZXRoaW5nIGxpa2UgYG5mY3NpbWAgZXhpc3RzLiBJJiMzOTtsbCBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIHdoYXQgSSBjYW4gdHVybiB1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZmNzaW0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvTWFrZWZpbGU9MTA9b2JqLSQoQ09ORklHX05GQ19NRUlfUEhZKVx0JiM0Mzs9IG1laV9waHkub1xuZHJpdmVycy9uZmMvTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX05GQ19TSU0pXHRcdCYjNDM7PSBuZmNzaW0ub1xuZHJpdmVycy9uZmMvTWFrZWZpbGUtMTItb2JqLSQoQ09ORklHX05GQ19QT1JUMTAwKVx0JiM0Mzs9IHBvcnQxMDAub1xuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMwLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzE6c3RydWN0IG5mY3NpbSB7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMi1cdHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKm5mY19kaWdpdGFsX2Rldjtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNi1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM3Olx0c3RydWN0IG5mY3NpbV9saW5rICpsaW5rX2luO1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mzg6XHRzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmtfb3V0O1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzktXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNTEtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo1MjpzdHJ1Y3QgbmZjc2ltX2xpbmsge1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtNTMtXHRzdHJ1Y3QgbXV0ZXggbG9jaztcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy02NC1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjY1OnN0YXRpYyBzdHJ1Y3QgbmZjc2ltX2xpbmsgKm5mY3NpbV9saW5rX25ldyh2b2lkKVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNjYte1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6Njc6XHRzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbms7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy02OC1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjY5Olx0bGluayA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBuZmNzaW1fbGluayk7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy03MC1cdGlmICghbGluaylcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy03OC1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjc5OnN0YXRpYyB2b2lkIG5mY3NpbV9saW5rX2ZyZWUoc3RydWN0IG5mY3NpbV9saW5rICpsaW5rKVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtODAte1xuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTg0LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6ODU6c3RhdGljIHZvaWQgbmZjc2ltX2xpbmtfcmVjdl93YWtlKHN0cnVjdCBuZmNzaW1fbGluayAqbGluaylcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTg2LXtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy05MC1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjkxOnN0YXRpYyB2b2lkIG5mY3NpbV9saW5rX3NldF9za2Ioc3RydWN0IG5mY3NpbV9saW5rICpsaW5rLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtOTItXHRcdFx0XHR1OCByZl90ZWNoLCB1OCBtb2RlKVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTEwMy1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjEwNDpzdGF0aWMgdm9pZCBuZmNzaW1fbGlua19yZWN2X2NhbmNlbChzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmspXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xMDUte1xuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTExMS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjExMjpcdG5mY3NpbV9saW5rX3JlY3Zfd2FrZShsaW5rKTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTExMy19XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xMTQtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoxMTU6c3RhdGljIHZvaWQgbmZjc2ltX2xpbmtfc2h1dGRvd24oc3RydWN0IG5mY3NpbV9saW5rICpsaW5rKVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTE2LXtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xMjMtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoxMjQ6XHRuZmNzaW1fbGlua19yZWN2X3dha2UobGluayk7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xMjUtfVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTI2LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTI3OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbmZjc2ltX2xpbmtfcmVjdl9za2Ioc3RydWN0IG5mY3NpbV9saW5rICpsaW5rLFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTI4LVx0XHRcdFx0XHQgICAgaW50IHRpbWVvdXQsIHU4IHJmX3RlY2gsIHU4IG1vZGUpXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTY5LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTcwOnN0YXRpYyB2b2lkIG5mY3NpbV9zZW5kX3dxKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE3MS17XG5kcml2ZXJzL25mYy9uZmNzaW0uYzoxNzI6XHRzdHJ1Y3QgbmZjc2ltICpkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG5mY3NpbSwgc2VuZF93b3JrLndvcmspO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTczLVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE3Ni1cdCAqIGlzIHRoZSBsaW5rX2luIG9mIHRoZSBwZWVyIGRldmljZS4gVGhlIGV4Y2hhbmdlZCBza2IgaGFzIGFscmVhZHkgYmVlblxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTc3Olx0ICogc3RvcmVkIGluIHRoZSBkZXYtXHUwMDNlbGlua19vdXQgdGhyb3VnaCBuZmNzaW1fbGlua19zZXRfc2tiKCkuXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xNzgtXHQgKi9cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE3OTpcdG5mY3NpbV9saW5rX3JlY3Zfd2FrZShkZXYtXHUwMDNlbGlua19vdXQpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTgwLX1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE4MS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE4MjpzdGF0aWMgdm9pZCBuZmNzaW1fcmVjdl93cShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xODMte1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTg0Olx0c3RydWN0IG5mY3NpbSAqZGV2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZmNzaW0sIHJlY3Zfd29yayk7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xODUtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTg2LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTg3Olx0c2tiID0gbmZjc2ltX2xpbmtfcmVjdl9za2IoZGV2LVx1MDAzZWxpbmtfaW4sIGRldi1cdTAwM2VyZWN2X3RpbWVvdXQsXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xODgtXHRcdFx0XHQgICBkZXYtXHUwMDNlcmZfdGVjaCwgZGV2LVx1MDAzZW1vZGUpO1xuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwMC1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjIwMTpzdGF0aWMgaW50IG5mY3NpbV9zZW5kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yMDItXHRcdCAgICAgICB1MTYgdGltZW91dCwgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsIHZvaWQgKmFyZylcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwMy17XG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyMDQ6XHRzdHJ1Y3QgbmZjc2ltICpkZXYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwNS1cdHU4IGRlbGF5O1xuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIyNi1cdGlmIChza2IpIHtcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjIyNzpcdFx0bmZjc2ltX2xpbmtfc2V0X3NrYihkZXYtXHUwMDNlbGlua19vdXQsIHNrYiwgZGV2LVx1MDAzZXJmX3RlY2gsXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yMjgtXHRcdFx0XHQgICAgZGV2LVx1MDAzZW1vZGUpO1xuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIzOS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI0MDpzdGF0aWMgdm9pZCBuZmNzaW1fYWJvcnRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNDEte1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjQyOlx0Y29uc3Qgc3RydWN0IG5mY3NpbSAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNDMtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyNDQ6XHRuZmNzaW1fbGlua19yZWN2X2NhbmNlbChkZXYtXHUwMDNlbGlua19pbik7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNDUtfVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjQ2LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjQ3OnN0YXRpYyBpbnQgbmZjc2ltX3N3aXRjaF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBib29sIG9uKVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjQ4LXtcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI0OTpcdHN0cnVjdCBuZmNzaW0gKmRldiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjUwLVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI1NS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI1NjpzdGF0aWMgaW50IG5mY3NpbV9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI1Ny1cdFx0XHRcdFx0ICBpbnQgdHlwZSwgaW50IHBhcmFtKVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjU4LXtcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI1OTpcdHN0cnVjdCBuZmNzaW0gKmRldiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjYwLVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI3OC1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI3OTpzdGF0aWMgaW50IG5mY3NpbV9pbl9zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjgwLVx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgdGltZW91dCxcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yODIte1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjgzOlx0cmV0dXJuIG5mY3NpbV9zZW5kKGRkZXYsIHNrYiwgdGltZW91dCwgY2IsIGFyZyk7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yODQtfVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjg1LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mjg2OnN0YXRpYyBpbnQgbmZjc2ltX3RnX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjg3LVx0XHRcdFx0XHQgIGludCB0eXBlLCBpbnQgcGFyYW0pXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yODgte1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mjg5Olx0c3RydWN0IG5mY3NpbSAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yOTAtXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzA4LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzA5OnN0YXRpYyBpbnQgbmZjc2ltX3RnX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMTAtXHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0aW1lb3V0LFxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMxMi17XG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMTM6XHRyZXR1cm4gbmZjc2ltX3NlbmQoZGRldiwgc2tiLCB0aW1lb3V0LCBjYiwgYXJnKTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMxNC19XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMTUtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMTY6c3RhdGljIGludCBuZmNzaW1fdGdfbGlzdGVuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHUxNiB0aW1lb3V0LFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzE3LVx0XHRcdCAgICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzE4LXtcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjMxOTpcdHJldHVybiBuZmNzaW1fc2VuZChkZGV2LCBOVUxMLCB0aW1lb3V0LCBjYiwgYXJnKTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMyMC19XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMjEtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMjI6c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfZGlnaXRhbF9vcHMgbmZjc2ltX2RpZ2l0YWxfb3BzID0ge1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzIzOlx0LmluX2NvbmZpZ3VyZV9odyA9IG5mY3NpbV9pbl9jb25maWd1cmVfaHcsXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMjQ6XHQuaW5fc2VuZF9jbWQgPSBuZmNzaW1faW5fc2VuZF9jbWQsXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMjUtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMjY6XHQudGdfbGlzdGVuID0gbmZjc2ltX3RnX2xpc3RlbixcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjMyNzpcdC50Z19jb25maWd1cmVfaHcgPSBuZmNzaW1fdGdfY29uZmlndXJlX2h3LFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzI4Olx0LnRnX3NlbmRfY21kID0gbmZjc2ltX3RnX3NlbmRfY21kLFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzI5LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzMwOlx0LmFib3J0X2NtZCA9IG5mY3NpbV9hYm9ydF9jbWQsXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMzE6XHQuc3dpdGNoX3JmID0gbmZjc2ltX3N3aXRjaF9yZixcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMzMi19O1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzMzLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzM0OnN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpuZmNzaW1fZGVidWdmc19yb290O1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzM1LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzM2OnN0YXRpYyB2b2lkIG5mY3NpbV9kZWJ1Z2ZzX2luaXQodm9pZClcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMzNy17XG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMzg6XHRuZmNzaW1fZGVidWdmc19yb290ID0gZGVidWdmc19jcmVhdGVfZGlyKFwmIzM0O25mY3NpbVwmIzM0OywgTlVMTCk7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMzktfVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzQwLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzQxOnN0YXRpYyB2b2lkIG5mY3NpbV9kZWJ1Z2ZzX3JlbW92ZSh2b2lkKVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzQyLXtcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM0MzpcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShuZmNzaW1fZGVidWdmc19yb290KTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM0NC19XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNDUtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozNDY6c3RhdGljIHZvaWQgbmZjc2ltX2RlYnVnZnNfaW5pdF9kZXYoc3RydWN0IG5mY3NpbSAqZGV2KVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzQ3LXtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNTItXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozNTM6XHRpZiAoIW5mY3NpbV9kZWJ1Z2ZzX3Jvb3QpIHtcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM1NDpcdFx0TkZDU0lNX0VSUihkZXYsIFwmIzM0O25mY3NpbSBkZWJ1Z2ZzIG5vdCBpbml0aWFsaXplZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNTUtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNjQtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozNjU6XHRkZXZfZGlyID0gZGVidWdmc19jcmVhdGVfZGlyKGRldm5hbWUsIG5mY3NpbV9kZWJ1Z2ZzX3Jvb3QpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzY2LVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM2OS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM3MDpzdGF0aWMgc3RydWN0IG5mY3NpbSAqbmZjc2ltX2RldmljZV9uZXcoc3RydWN0IG5mY3NpbV9saW5rICpsaW5rX2luLFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzcxOlx0XHRcdFx0XHRzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmtfb3V0KVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzcyLXtcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM3MzpcdHN0cnVjdCBuZmNzaW0gKmRldjtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM3NC1cdGludCByYztcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM3NS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM3NjpcdGRldiA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBuZmNzaW0pO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzc3LVx0aWYgKCFkZXYpXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzc5LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzgwOlx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXNlbmRfd29yaywgbmZjc2ltX3NlbmRfd3EpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzgxOlx0SU5JVF9XT1JLKFx1MDAyNmRldi1cdTAwM2VyZWN2X3dvcmssIG5mY3NpbV9yZWN2X3dxKTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM4Mi1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM4My1cdGRldi1cdTAwM2VuZmNfZGlnaXRhbF9kZXYgPVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mzg0Olx0XHRcdG5mY19kaWdpdGFsX2FsbG9jYXRlX2RldmljZShcdTAwMjZuZmNzaW1fZGlnaXRhbF9vcHMsXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zODUtXHRcdFx0XHRcdFx0ICAgIE5GQ19QUk9UT19ORkNfREVQX01BU0ssXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDA2LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDA3Olx0bmZjc2ltX2RlYnVnZnNfaW5pdF9kZXYoZGV2KTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQwOC1cbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00MTEtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0MTI6c3RhdGljIHZvaWQgbmZjc2ltX2RldmljZV9mcmVlKHN0cnVjdCBuZmNzaW0gKmRldilcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQxMy17XG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDE3LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDE4Olx0bmZjc2ltX2xpbmtfc2h1dGRvd24oZGV2LVx1MDAzZWxpbmtfaW4pO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDE5LVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQyNy1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQyODpzdGF0aWMgc3RydWN0IG5mY3NpbSAqZGV2MDtcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQyOTpzdGF0aWMgc3RydWN0IG5mY3NpbSAqZGV2MTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQzMC1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQzMTpzdGF0aWMgaW50IF9faW5pdCBuZmNzaW1faW5pdCh2b2lkKVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDMyLXtcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQzMzpcdHN0cnVjdCBuZmNzaW1fbGluayAqbGluazAsICpsaW5rMTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQzNC1cdGludCByYztcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQzNS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQzNjpcdGxpbmswID0gbmZjc2ltX2xpbmtfbmV3KCk7XG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0Mzc6XHRsaW5rMSA9IG5mY3NpbV9saW5rX25ldygpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDM4LVx0aWYgKCFsaW5rMCB8fCAhbGluazEpIHtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00NDItXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0NDM6XHRuZmNzaW1fZGVidWdmc19pbml0KCk7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy00NDQtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0NDU6XHRkZXYwID0gbmZjc2ltX2RldmljZV9uZXcobGluazAsIGxpbmsxKTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ0Ni1cdGlmIChJU19FUlIoZGV2MCkpIHtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00NTAtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0NTE6XHRkZXYxID0gbmZjc2ltX2RldmljZV9uZXcobGluazEsIGxpbmswKTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ1Mi1cdGlmIChJU19FUlIoZGV2MSkpIHtcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQ1MzpcdFx0bmZjc2ltX2RldmljZV9mcmVlKGRldjApO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDU0LVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ1OC1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQ1OTpcdHByX2luZm8oXCYjMzQ7bmZjc2ltIFwmIzM0OyBORkNTSU1fVkVSU0lPTiBcJiMzNDsgaW5pdGlhbGl6ZWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDYwLVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ2My1leGl0X2VycjpcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQ2NDpcdHByX2VycihcJiMzNDtGYWlsZWQgdG8gaW5pdGlhbGl6ZSBuZmNzaW0gZHJpdmVyICglZClcXG5cJiMzNDssIHJjKTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ2NS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ2Ni1cdGlmIChsaW5rMClcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQ2NzpcdFx0bmZjc2ltX2xpbmtfZnJlZShsaW5rMCk7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy00NjgtXHRpZiAobGluazEpXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0Njk6XHRcdG5mY3NpbV9saW5rX2ZyZWUobGluazEpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDcwLVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ3My1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQ3NDpzdGF0aWMgdm9pZCBfX2V4aXQgbmZjc2ltX2V4aXQodm9pZClcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ3NS17XG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0NzY6XHRzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmswLCAqbGluazE7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy00NzctXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDgwLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDgxOlx0bmZjc2ltX2RldmljZV9mcmVlKGRldjApO1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDgyOlx0bmZjc2ltX2RldmljZV9mcmVlKGRldjEpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDgzLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDg0Olx0bmZjc2ltX2xpbmtfZnJlZShsaW5rMCk7XG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0ODU6XHRuZmNzaW1fbGlua19mcmVlKGxpbmsxKTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ4Ni1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQ4NzpcdG5mY3NpbV9kZWJ1Z2ZzX3JlbW92ZSgpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDg4LX1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ4OS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQ5MDptb2R1bGVfaW5pdChuZmNzaW1faW5pdCk7XG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0OTE6bW9kdWxlX2V4aXQobmZjc2ltX2V4aXQpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDkyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA4OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNjg1CgkJCQkJCQlvdXRwdXQ6IDE2CgkJCQkJCQl0aG91Z2h0czogNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyB0aGUgTkZDIFNpbXVsYXRvciBEcml2ZXIqKgoKT2theSwgc28gYG5mY3NpbWAgaXMgYSBrbm93biBxdWFudGl0eSwgYSBzaW11bGF0b3IgZHJpdmVyIGZvciBORkMsIGFuZCBpdCYjMzk7cyBlbmFibGVkIGJ5IHRoZSBgQ09ORklHX05GQ19TSU1gIGNvbmZpZyBvcHRpb24uIEdvb2QuIEkgc2VlIGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHRvdWNoaW5nIGBuZXQvbmZjL2xsY3BfY29yZS5jYCBhbmQgYG5ldC9uZmMvbGxjcF9zb2NrLmNgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBtZWFucyB0aGV5JiMzOTtyZSBkaWdnaW5nIGludG8gdGhlIExvdyBMZXZlbCBDb21tdW5pY2F0aW9uIFByb3RvY29sIChMTENQKSBpbXBsZW1lbnRhdGlvbiB3aXRoaW4gdGhlIE5GQyBzdGFjay4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGJlZm9yZSBJIGRpdmUgZGVlcCBpbnRvIHRoZSBjb2RlIGNoYW5nZXMsIEkgbmVlZCB0byB2ZXJpZnkgYWxsIHRoZSBzdXBwb3J0aW5nIGNvbmZpZ3VyYXRpb25zIGFyZSBwcm9wZXJseSBzZXQgdG8gc3VwcG9ydCB0aGUgbmV3IGZlYXR1cmVzIG9yIHBhdGNoZXMsIGFuZCBzcGVjaWZpY2FsbHkgdGhhdCBORkMgYW5kIExMQ1AgYXJlIGNvcnJlY3RseSBlbmFibGVkIGluIHRoZSBmaXJzdCBwbGFjZS4gSSYjMzk7bGwgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmVxdWlyZW1lbnRzIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nJiMzOTtzIHNldCB1cCBjb3JyZWN0bHkgZm9yIHRlc3Rpbmcgd2l0aCB0aGUgc2ltdWxhdG9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA4OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORkMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9tNjhrL0tjb25maWcuZGV2aWNlcz0zNj1jb25maWcgTkZCTE9DS1xuLS1cbmFyY2gvbTY4ay9LY29uZmlnLmRldmljZXMtNDMtXG5hcmNoL202OGsvS2NvbmZpZy5kZXZpY2VzOjQ0OmNvbmZpZyBORkNPTlxuYXJjaC9tNjhrL0tjb25maWcuZGV2aWNlcy00NS1cdHRyaXN0YXRlIFwmIzM0O05hdEZlYXQgY29uc29sZSBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9LY29uZmlnPTY9bWVudSBcJiMzNDtOZWFyIEZpZWxkIENvbW11bmljYXRpb24gKE5GQykgZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL0tjb25maWctOC1cbmRyaXZlcnMvbmZjL0tjb25maWc6OTpjb25maWcgTkZDX1RSRjc5NzBBXG5kcml2ZXJzL25mYy9LY29uZmlnLTEwLVx0dHJpc3RhdGUgXCYjMzQ7VGV4YXMgSW5zdHJ1bWVudHMgVFJGNzk3MGEgTkZDIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL0tjb25maWctMjAtXG5kcml2ZXJzL25mYy9LY29uZmlnOjIxOmNvbmZpZyBORkNfTUVJX1BIWVxuZHJpdmVycy9uZmMvS2NvbmZpZy0yMi1cdHRyaXN0YXRlIFwmIzM0O01FSSBidXMgTkZDIGRldmljZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvS2NvbmZpZy0zMC1cbmRyaXZlcnMvbmZjL0tjb25maWc6MzE6Y29uZmlnIE5GQ19TSU1cbmRyaXZlcnMvbmZjL0tjb25maWctMzItXHR0cmlzdGF0ZSBcJiMzNDtORkMgaGFyZHdhcmUgc2ltdWxhdG9yIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL0tjb25maWctNDEtXG5kcml2ZXJzL25mYy9LY29uZmlnOjQyOmNvbmZpZyBORkNfUE9SVDEwMFxuZHJpdmVycy9uZmMvS2NvbmZpZy00My1cdHRyaXN0YXRlIFwmIzM0O1NvbnkgTkZDIFBvcnQtMTAwIFNlcmllcyBVU0IgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9LY29uZmlnLTUxLVxuZHJpdmVycy9uZmMvS2NvbmZpZzo1Mjpjb25maWcgTkZDX1ZJUlRVQUxfTkNJXG5kcml2ZXJzL25mYy9LY29uZmlnLTUzLVx0dHJpc3RhdGUgXCYjMzQ7TkNJIGRldmljZSBzaW11bGF0b3IgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvZmRwL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmZjL2ZkcC9LY29uZmlnOjI6Y29uZmlnIE5GQ19GRFBcbmRyaXZlcnMvbmZjL2ZkcC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBGRFAgTkZDIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL2ZkcC9LY29uZmlnLTE0LVxuZHJpdmVycy9uZmMvZmRwL0tjb25maWc6MTU6Y29uZmlnIE5GQ19GRFBfSTJDXG5kcml2ZXJzL25mYy9mZHAvS2NvbmZpZy0xNi1cdHRyaXN0YXRlIFwmIzM0O05GQyBGRFAgaTJjIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWc6Mjpjb25maWcgTkZDX01JQ1JPUkVBRFxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWctOS1cbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9LY29uZmlnOjEwOmNvbmZpZyBORkNfTUlDUk9SRUFEX0kyQ1xuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWctMTEtXHR0cmlzdGF0ZSBcJiMzNDtJbnNpZGUgU2VjdXJlIE1pY3JvcmVhZCBkZXZpY2Ugc3VwcG9ydCAoSTJDKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9LY29uZmlnLTIxLVxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWc6MjI6Y29uZmlnIE5GQ19NSUNST1JFQURfTUVJXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvS2NvbmZpZy0yMy1cdHRyaXN0YXRlIFwmIzM0O0luc2lkZSBTZWN1cmUgTWljcm9yZWFkIGRldmljZSBzdXBwb3J0IChNRUkpXCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWc6Mjpjb25maWcgTkZDX01SVkxcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctOS1cbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZzoxMDpjb25maWcgTkZDX01SVkxfVVNCXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctMTEtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE5GQy1vdmVyLVVTQiBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctMjItXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWc6MjM6Y29uZmlnIE5GQ19NUlZMX1VBUlRcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy0yNC1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgTkZDLW92ZXItVUFSVCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctMzQtXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWc6MzU6Y29uZmlnIE5GQ19NUlZMX0kyQ1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTM2LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBORkMtb3Zlci1JMkMgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTQ1LVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnOjQ2OmNvbmZpZyBORkNfTVJWTF9TUElcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy00Ny1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgTkZDLW92ZXItU1BJIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19OWFBfTkNJXG5kcml2ZXJzL25mYy9ueHAtbmNpL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O05YUC1OQ0kgTkZDIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy0xNC1cbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZzoxNTpjb25maWcgTkZDX05YUF9OQ0lfSTJDXG5kcml2ZXJzL25mYy9ueHAtbmNpL0tjb25maWctMTYtXHR0cmlzdGF0ZSBcJiMzNDtOWFAtTkNJIEkyQyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZzoyOmNvbmZpZyBORkNfUE41MzNcbmRyaXZlcnMvbmZjL3BuNTMzL0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZy03LVxuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZzo4OmNvbmZpZyBORkNfUE41MzNfVVNCXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnLTktXHR0cmlzdGF0ZSBcJiMzNDtORkMgUE41MzMgZGV2aWNlIHN1cHBvcnQgKFVTQilcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnLTE4LVxuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZzoxOTpjb25maWcgTkZDX1BONTMzX0kyQ1xuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZy0yMC1cdHRyaXN0YXRlIFwmIzM0O05GQyBQTjUzMyBkZXZpY2Ugc3VwcG9ydCAoSTJDKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL3BuNTMzL0tjb25maWctMjktXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnOjMwOmNvbmZpZyBORkNfUE41MzJfVUFSVFxuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZy0zMS1cdHRyaXN0YXRlIFwmIzM0O05GQyBQTjUzMiBkZXZpY2Ugc3VwcG9ydCAoVUFSVClcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9wbjU0NC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25mYy9wbjU0NC9LY29uZmlnOjI6Y29uZmlnIE5GQ19QTjU0NFxuZHJpdmVycy9uZmMvcG41NDQvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25mYy9wbjU0NC9LY29uZmlnLTktXG5kcml2ZXJzL25mYy9wbjU0NC9LY29uZmlnOjEwOmNvbmZpZyBORkNfUE41NDRfSTJDXG5kcml2ZXJzL25mYy9wbjU0NC9LY29uZmlnLTExLVx0dHJpc3RhdGUgXCYjMzQ7TlhQIFBONTQ0IGRldmljZSBzdXBwb3J0IChJMkMpXCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvcG41NDQvS2NvbmZpZy0yMC1cbmRyaXZlcnMvbmZjL3BuNTQ0L0tjb25maWc6MjE6Y29uZmlnIE5GQ19QTjU0NF9NRUlcbmRyaXZlcnMvbmZjL3BuNTQ0L0tjb25maWctMjItXHR0cmlzdGF0ZSBcJiMzNDtOWFAgUE41NDQgZGV2aWNlIHN1cHBvcnQgKE1FSSlcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9zM2Z3cm41L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZzoyOmNvbmZpZyBORkNfUzNGV1JONVxuZHJpdmVycy9uZmMvczNmd3JuNS9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZy05LVxuZHJpdmVycy9uZmMvczNmd3JuNS9LY29uZmlnOjEwOmNvbmZpZyBORkNfUzNGV1JONV9JMkNcbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZy0xMS1cdHRyaXN0YXRlIFwmIzM0O1NhbXN1bmcgUzNGV1JONSBJMkMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZy0yMi1cbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZzoyMzpjb25maWcgTkZDX1MzRldSTjgyX1VBUlRcbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZy0yNC0gICAgICAgIHRyaXN0YXRlIFwmIzM0O1NhbXN1bmcgUzNGV1JOODIgVUFSVCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19TVF9OQ0lcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTgtXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZzo5OmNvbmZpZyBORkNfU1RfTkNJX0kyQ1xuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMTAtXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKEkyQylcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0yMC1cbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnOjIxOmNvbmZpZyBORkNfU1RfTkNJX1NQSVxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMjItXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKFNQSSlcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnOjI6Y29uZmlnIE5GQ19TVDIxTkZDQVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnLTktXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnOjEwOmNvbmZpZyBORkNfU1QyMU5GQ0FfSTJDXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnLTExLVx0dHJpc3RhdGUgXCYjMzQ7U1RNaWNyb2VsZWN0cm9uaWNzIFNUMjFORkNBIE5GQyBkcml2ZXIgKEkyQylcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZmMvc3Q5NWhmL0tjb25maWc6Mjpjb25maWcgTkZDX1NUOTVIRlxuZHJpdmVycy9uZmMvc3Q5NWhmL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NUOTVIRiBORkMgVHJhbnNjZWl2ZXIgZHJpdmVyXCYjMzQ7XG4tLVxubmV0L25mYy9LY29uZmlnLTUtXG5uZXQvbmZjL0tjb25maWc6NjptZW51Y29uZmlnIE5GQ1xubmV0L25mYy9LY29uZmlnLTctXHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXG4tLVxubmV0L25mYy9LY29uZmlnLTE2LVxubmV0L25mYy9LY29uZmlnOjE3OmNvbmZpZyBORkNfRElHSVRBTFxubmV0L25mYy9LY29uZmlnLTE4LVx0ZGVwZW5kcyBvbiBORkNcbi0tXG5uZXQvbmZjL2hjaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbmZjL2hjaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19IQ0lcbm5ldC9uZmMvaGNpL0tjb25maWctMy1cdGRlcGVuZHMgb24gTkZDXG4tLVxubmV0L25mYy9oY2kvS2NvbmZpZy0xMC1cbm5ldC9uZmMvaGNpL0tjb25maWc6MTE6Y29uZmlnIE5GQ19TSERMQ1xubmV0L25mYy9oY2kvS2NvbmZpZy0xMi1cdGRlcGVuZHMgb24gTkZDX0hDSVxuLS1cbm5ldC9uZmMvbmNpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9uZmMvbmNpL0tjb25maWc6Mjpjb25maWcgTkZDX05DSVxubmV0L25mYy9uY2kvS2NvbmZpZy0zLVx0ZGVwZW5kcyBvbiBORkNcbi0tXG5uZXQvbmZjL25jaS9LY29uZmlnLTEyLVxubmV0L25mYy9uY2kvS2NvbmZpZzoxMzpjb25maWcgTkZDX05DSV9TUElcbm5ldC9uZmMvbmNpL0tjb25maWctMTQtXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXHUwMDI2XHUwMDI2IFNQSVxuLS1cbm5ldC9uZmMvbmNpL0tjb25maWctMjMtXG5uZXQvbmZjL25jaS9LY29uZmlnOjI0OmNvbmZpZyBORkNfTkNJX1VBUlRcbm5ldC9uZmMvbmNpL0tjb25maWctMjUtXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXHUwMDI2XHUwMDI2IFRUWVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA4OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0OTU1CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBORkMgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCkFscmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IHdheSB0byBoYW5kbGUgTkZDIGNvbmZpZ3VyYXRpb24gaW4gdGhpcyBwYXJ0aWN1bGFyIHN5c3RlbS4gSSBzZWUgdGhhdCB0aGUgcHJpbWFyeSBjb25maWcgZmxhZyBmb3IgZW5hYmxpbmcgTkZDIGlzIGBORkNgLiBUaGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIEJ1dCwgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgcHJvamVjdCwgSSB3YW50IHRvIGNvbnNpZGVyIGFsbCB0aGUgYW5nbGVzLiBJIGFsc28gbm90aWNlIHRoZSBleGlzdGVuY2Ugb2YgYE5GQ19TSU1gLiBPa2F5LCB0aGF0JiMzOTtzIHByb2JhYmx5IGZvciB0aGUgc2ltdWxhdG9yIGVudmlyb25tZW50LiBHb29kLCBnb29kLiBJ4oCZbGwgbWFrZSBhIG1lbnRhbCBub3RlIHRvIGFkZHJlc3MgYm90aC4KCk5vdywgYmVmb3JlIEkgY29tbWl0IHRvIGFueXRoaW5nLCBJIHNob3VsZCBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYSBtb3JlIGdyYW51bGFyIG9wdGlvbi4gSXQmIzM5O3MgbGlrZWx5IHRoZXJlIG1heSBiZSBhIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIExMQ1AgKExvZ2ljYWwgTGluayBDb250cm9sIFByb3RvY29sKSB3aGljaCBJJiMzOTtsbCBiZSBzdXJlIHRvIGludmVzdGlnYXRlLiBUaGUga2V5IGlzIGluIGNvbXByZWhlbnNpdmUgY29uc2lkZXJhdGlvbi4gVGhlIGluaXRpYWwgY29uZmlncyBtZW50aW9uZWQgcG9pbnQgdG8gZ2VuZXJhbCBORkMgdXNlIGFuZCBzaW11bGF0aW9uIGJ1dCB0aGVyZSBpcyBhIGNoYW5jZSBvZiBmaW5kaW5nIGBORkNfTExDUGAgYXMgYSBsb3ctbGV2ZWwgb3B0aW9uIHRoYXQgaXMgbmVjZXNzYXJ5IHRvIGNvbnNpZGVyLiBObyBuZWVkIHRvIG1ha2UgYXNzdW1wdGlvbnM7IGxldCYjMzk7cyBzZWUgd2hhdCBlbHNlIG1pZ2h0IGJlIGhpZGluZyBpbiB0aGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA4OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GQ19MTENQJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTI2MQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkxMQ1AgYW5kIE5GQzogQSBRdWljayBDaGVjayoqCgpPa2F5LCBzbyBJJiMzOTttIHdvbmRlcmluZyBhYm91dCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gTExDUCAoTG9naWNhbCBMaW5rIENvbnRyb2wgUHJvdG9jb2wpIGFuZCBORkMuIFNwZWNpZmljYWxseSwgZG9lcyBlbmFibGluZyBORkMgKmF1dG9tYXRpY2FsbHkqIGVuYWJsZSBMTENQPyBJdCBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBhc3N1bXB0aW9uLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0uIFRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0LCBvZiBjb3Vyc2UsIGlzIHRoZSBzb3VyY2UgY29kZS4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBgbmV0L25mYy9NYWtlZmlsZWAgZmlsZS4gVGhhdCYjMzk7cyB1c3VhbGx5IHdoZXJlIHRoZSBidWlsZCBkZXBlbmRlbmNpZXMgYW5kIGNvcmUgY29uZmlndXJhdGlvbnMgcmVzaWRlLiBJdCBzaG91bGQgcXVpY2tseSByZXZlYWwgd2hldGhlciB0aGUgTExDUCBtb2R1bGUgaXMgY29uZGl0aW9uYWxseSBjb21waWxlZCBiYXNlZCBvbiB0aGUgTkZDIGNvbmZpZ3VyYXRpb24sIG9yIGlmIHRoZXJlJiMzOTtzIGFuIGV4cGxpY2l0IGRlcGVuZGVuY3kgZXhwcmVzc2VkIHRoZXJlLiBIb3BlZnVsbHksIHRoaXMmIzM5O2xsIGJlIGEgcXVpY2sgb25lIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtsbGNwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX05GQ19ESUdJVEFMKSAmIzQzOz0gbmZjX2RpZ2l0YWwub1xubmV0L25mYy9NYWtlZmlsZS0xMC1cbm5ldC9uZmMvTWFrZWZpbGU6MTE6bmZjLW9ianMgOj0gY29yZS5vIG5ldGxpbmsubyBhZl9uZmMubyByYXdzb2NrLm8gbGxjcF9jb3JlLm8gbGxjcF9jb21tYW5kcy5vIFxcXG5uZXQvbmZjL01ha2VmaWxlOjEyOlx0XHRsbGNwX3NvY2sub1xubmV0L25mYy9NYWtlZmlsZS0xMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDg6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU1OTkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBORkMgTExDUCBTb2NrZXQgQ2hhbmdlcyoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBsbGNwX2NvcmUub2AgYW5kIGBsbGNwX3NvY2sub2AgYXJlIGluZGVlZCBidWlsdCB3aGVuIGBDT05GSUdfTkZDYCBpcyBlbmFibGVkLCB3aGljaCBpcyBleHBlY3RlZC4gVGhleSYjMzk7cmUgcGFydCBvZiB0aGF0IGBuZmMtb2Jqc2AgZ3JvdXBpbmcuIFRoZSBwYXRjaCB0YXJnZXRzIHF1aXRlIGEgZmV3IGNydWNpYWwgZnVuY3Rpb25zLCBtYWlubHkgdGhlIGxpZmVjeWNsZSBhbmQgbWFuYWdlbWVudCBvZiBORkMgTExDUCBzb2NrZXRzLiBJJiMzOTttIHNlZWluZyBtb2RpZmljYXRpb25zIGluIGBuZmNfbGxjcF9zb2NrZXRfcmVsZWFzZWAsIGBuZmNfbGxjcF9sb2NhbF9wdXRgLCBgbmZjX2xsY3BfYWNjZXB0X2RlcXVldWVgLCBgbGxjcF9zb2NrX2FjY2VwdGAsIGFuZCBgbGxjcF9zb2NrX3JlbGVhc2VgLiBUaG9zZSBhcmUgYWxsIGNvcmUgdG8gaG93IHRoZSBMTENQIHNvY2tldHMgb3BlcmF0ZS4gTm93LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gc3BlY2lmaWNzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoZXNlIGNoYW5nZXMuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgdGhlIGtleSBzeW1ib2xzIHRoYXQgYXJlIGJlaW5nIG1vZGlmaWVkLiBJIGNhbiBzZWUgdGhhdCBgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2VgIGlzIHN0YXRpYywgc28gaXRzIHNjb3BlIGlzIGxpbWl0ZWQgdG8gdGhlIG1vZHVsZSBpdHNlbGYuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgYG5mY19sbGNwX2xvY2FsX3B1dGAgaXMgZXhwb3J0ZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCBpdHMgcG90ZW50aWFsIGltcGFjdCBvbiB0aGUgd2lkZXIga2VybmVsLiBUaGF0JiMzOTtzIHRoZSBuZXh0IGNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZmNfbGxjcF9sb2NhbF9wdXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL2xsY3AuaD0yMDQ9c3RydWN0IG5mY19sbGNwX2xvY2FsICpuZmNfbGxjcF9maW5kX2xvY2FsKHN0cnVjdCBuZmNfZGV2ICpkZXYpO1xubmV0L25mYy9sbGNwLmg6MjA1OmludCBuZmNfbGxjcF9sb2NhbF9wdXQoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCk7XG5uZXQvbmZjL2xsY3AuaC0yMDYtdTggbmZjX2xsY3BfZ2V0X3NkcF9zc2FwKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmM9MzcxPWludCBuZmNfbGxjcF9zZW5kX3N5bW0oc3RydWN0IG5mY19kZXYgKmRldilcbi0tXG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYy00MDEtb3V0OlxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmM6NDAyOlx0bmZjX2xsY3BfbG9jYWxfcHV0KGxvY2FsKTtcbm5ldC9uZmMvbGxjcF9jb21tYW5kcy5jLTQwMy1cdHJldHVybiBlcnI7XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz0yMDE9c3RhdGljIHZvaWQgbG9jYWxfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqcmVmKVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMjA5LVxubmV0L25mYy9sbGNwX2NvcmUuYzoyMTA6aW50IG5mY19sbGNwX2xvY2FsX3B1dChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsKVxubmV0L25mYy9sbGNwX2NvcmUuYy0yMTEte1xuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM9NjU1PXU4ICpuZmNfbGxjcF9nZW5lcmFsX2J5dGVzKHN0cnVjdCBuZmNfZGV2ICpkZXYsIHNpemVfdCAqZ2VuZXJhbF9ieXRlc19sZW4pXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy02NjgtXG5uZXQvbmZjL2xsY3BfY29yZS5jOjY2OTpcdG5mY19sbGNwX2xvY2FsX3B1dChsb2NhbCk7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTY3MC1cbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jPTY3ND1pbnQgbmZjX2xsY3Bfc2V0X3JlbW90ZV9nYihzdHJ1Y3QgbmZjX2RldiAqZGV2LCBjb25zdCB1OCAqZ2IsIHU4IGdiX2xlbilcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTcwMS1vdXQ6XG5uZXQvbmZjL2xsY3BfY29yZS5jOjcwMjpcdG5mY19sbGNwX2xvY2FsX3B1dChsb2NhbCk7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTcwMy1cdHJldHVybiBlcnI7XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz0xNjM0PWludCBuZmNfbGxjcF9kYXRhX3JlY2VpdmVkKHN0cnVjdCBuZmNfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNjQ1LVxubmV0L25mYy9sbGNwX2NvcmUuYzoxNjQ2Olx0bmZjX2xsY3BfbG9jYWxfcHV0KGxvY2FsKTtcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY0Ny1cbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE2NTE9dm9pZCBuZmNfbGxjcF9tYWNfaXNfZG93bihzdHJ1Y3QgbmZjX2RldiAqZGV2KVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY2NC1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTY2NTpcdG5mY19sbGNwX2xvY2FsX3B1dChsb2NhbCk7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2NjYtfVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM9MTY2OD12b2lkIG5mY19sbGNwX21hY19pc191cChzdHJ1Y3QgbmZjX2RldiAqZGV2LCB1MzIgdGFyZ2V0X2lkeCxcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2OTEtXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE2OTI6XHRuZmNfbGxjcF9sb2NhbF9wdXQobG9jYWwpO1xubmV0L25mYy9sbGNwX2NvcmUuYy0xNjkzLX1cbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE3NTM9dm9pZCBuZmNfbGxjcF91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmZjX2RldiAqZGV2KVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTc2My1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTc2NDpcdG5mY19sbGNwX2xvY2FsX3B1dChsb2NhbCk7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTE3NjUtfVxuLS1cbm5ldC9uZmMvbGxjcF9zb2NrLmM9NTk9c3RhdGljIGludCBsbGNwX3NvY2tfYmluZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqYWRkciwgaW50IGFsZW4pXG4tLVxubmV0L25mYy9sbGNwX3NvY2suYy0xMzYtc29ja19sbGNwX3B1dF9sb2NhbDpcbm5ldC9uZmMvbGxjcF9zb2NrLmM6MTM3Olx0bmZjX2xsY3BfbG9jYWxfcHV0KGxsY3Bfc29jay1cdTAwM2Vsb2NhbCk7XG5uZXQvbmZjL2xsY3Bfc29jay5jLTEzOC1cdGxsY3Bfc29jay1cdTAwM2Vsb2NhbCA9IE5VTEw7XG4tLVxubmV0L25mYy9sbGNwX3NvY2suYz02ODY9c3RhdGljIGludCBsbGNwX3NvY2tfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqX2FkZHIsXG4tLVxubmV0L25mYy9sbGNwX3NvY2suYy03OTktc29ja19sbGNwX3B1dF9sb2NhbDpcbm5ldC9uZmMvbGxjcF9zb2NrLmM6ODAwOlx0bmZjX2xsY3BfbG9jYWxfcHV0KGxvY2FsKTtcbm5ldC9uZmMvbGxjcF9zb2NrLmMtODAxLVxuLS1cbm5ldC9uZmMvbGxjcF9zb2NrLmM9MTA0NT12b2lkIG5mY19sbGNwX3NvY2tfZnJlZShzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqc29jaylcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jLTEwNTUtXG5uZXQvbmZjL2xsY3Bfc29jay5jOjEwNTY6XHRuZmNfbGxjcF9sb2NhbF9wdXQoc29jay1cdTAwM2Vsb2NhbCk7XG5uZXQvbmZjL2xsY3Bfc29jay5jLTEwNTctfVxuLS1cbm5ldC9uZmMvbmV0bGluay5jPTEwMTc9c3RhdGljIGludCBuZmNfZ2VubF9sbGNfZ2V0X3BhcmFtcyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC9uZmMvbmV0bGluay5jLTEwNTAtcHV0X2xvY2FsOlxubmV0L25mYy9uZXRsaW5rLmM6MTA1MTpcdG5mY19sbGNwX2xvY2FsX3B1dChsb2NhbCk7XG5uZXQvbmZjL25ldGxpbmsuYy0xMDUyLVxuLS1cbm5ldC9uZmMvbmV0bGluay5jPTEwNjg9c3RhdGljIGludCBuZmNfZ2VubF9sbGNfc2V0X3BhcmFtcyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC9uZmMvbmV0bGluay5jLTExMjYtcHV0X2xvY2FsOlxubmV0L25mYy9uZXRsaW5rLmM6MTEyNzpcdG5mY19sbGNwX2xvY2FsX3B1dChsb2NhbCk7XG5uZXQvbmZjL25ldGxpbmsuYy0xMTI4LVxuLS1cbm5ldC9uZmMvbmV0bGluay5jPTExMzc9c3RhdGljIGludCBuZmNfZ2VubF9sbGNfc2RyZXEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvbmZjL25ldGxpbmsuYy0xMjE4LXB1dF9sb2NhbDpcbm5ldC9uZmMvbmV0bGluay5jOjEyMTk6XHRuZmNfbGxjcF9sb2NhbF9wdXQobG9jYWwpO1xubmV0L25mYy9uZXRsaW5rLmMtMTIyMC1cbi0tXG5uZXQvbmZjL25mYy5oPTU0PXN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbmZjX2xsY3BfZmluZF9sb2NhbChzdHJ1Y3QgbmZjX2RldiAqZGV2KTtcbm5ldC9uZmMvbmZjLmg6NTU6aW50IG5mY19sbGNwX2xvY2FsX3B1dChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsKTtcbm5ldC9uZmMvbmZjLmgtNTYtaW50IF9faW5pdCBuZmNfbGxjcF9pbml0KHZvaWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzg5MAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipGb2N1c2luZyBvbiBMTENQIFNvY2tldCBPcGVyYXRpb25zKioKCk9rYXksIGBuZmNfbGxjcF9sb2NhbF9wdXRgIGxvb2tzIGxpa2UgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgbXkgYW5hbHlzaXMuIEJ1dCB3YWl0LCB3aGF0IGFib3V0IGBsbGNwX3NvY2tfYWNjZXB0YCBhbmQgYGxsY3Bfc29ja19yZWxlYXNlYD8gVGhvc2UgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIGFzIHN0YXRpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcsIGJ1dCB0aGV5IGFyZSBhbHNvIGFzc2lnbmVkIHRvIHRoZSBgc3RydWN0IHByb3RvX29wc2AuIFRoYXQgbWFrZXMgdGhlbSBpbXBvcnRhbnQuIEhtbSwgSSBzaG91bGQgY2hlY2sgd2hlcmUgdGhleSYjMzk7cmUgZGVmaW5lZC4gTGV0JiMzOTtzIGRpZyBpbnRvIGBuZXQvbmZjL2xsY3Bfc29jay5jYCBhbmQgc2VlIHdoYXQgYGxsY3Bfc29ja19hY2NlcHRgIGlzIGFsbCBhYm91dC4gVGhpcyBzZWVtcyBsaWtlIGl0IHdpbGwgYmUgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA4OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xsY3Bfc29ja19hY2NlcHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjL2xsY3Bfc29jay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvbGxjcF9zb2NrLmM9NDE3PXN0cnVjdCBzb2NrICpuZmNfbGxjcF9hY2NlcHRfZGVxdWV1ZShzdHJ1Y3Qgc29jayAqcGFyZW50LFxuLS1cbm5ldC9uZmMvbGxjcF9zb2NrLmMtNDY1LVxubmV0L25mYy9sbGNwX3NvY2suYzo0NjY6c3RhdGljIGludCBsbGNwX3NvY2tfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssXG5uZXQvbmZjL2xsY3Bfc29jay5jLTQ2Ny1cdFx0XHQgICAgc3RydWN0IHByb3RvX2FjY2VwdF9hcmcgKmFyZylcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jPTk1Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBsbGNwX3NvY2tfb3BzID0ge1xuLS1cbm5ldC9uZmMvbGxjcF9zb2NrLmMtOTU4LVx0LnNvY2tldHBhaXIgICAgID0gc29ja19ub19zb2NrZXRwYWlyLFxubmV0L25mYy9sbGNwX3NvY2suYzo5NTk6XHQuYWNjZXB0ICAgICAgICAgPSBsbGNwX3NvY2tfYWNjZXB0LFxubmV0L25mYy9sbGNwX3NvY2suYy05NjAtXHQuZ2V0bmFtZSAgICAgICAgPSBsbGNwX3NvY2tfZ2V0bmFtZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDg6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg0MjQKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBMTENQIFNvY2tldCBBY2NlcHRhbmNlKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYGxsY3Bfc29ja19hY2NlcHRgIGZ1bmN0aW9uLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBpdCYjMzk7cyBkZWNsYXJlZCBgc3RhdGljYC4gVGhhdCBpbW1lZGlhdGVseSBzdWdnZXN0cyBpdCYjMzk7cyBpbnRlcm5hbCB0byB0aGlzIGNvbXBpbGF0aW9uIHVuaXQsIGFuZCBub3QgbWVhbnQgdG8gYmUgY2FsbGVkIGZyb20gYW55d2hlcmUgZWxzZS4gR29vZCB0byBrbm93LiBCdXQgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgY29ycmVjdC4KCk5vdywgd2hhdCBhYm91dCBgbmZjX2xsY3BfYWNjZXB0X2RlcXVldWVgPyBIbW0sIHRoYXQgbmFtZSBmZWVscyBsaWtlIGl0IHNob3VsZCBiZSByZWxhdGVkLCBhbmQgcG9zc2libHkgZXhwb3NlZCBmb3IgZXh0ZXJuYWwgdXNlLiBMZXQgbWUgcXVpY2tseSB2ZXJpZnkgaWYgdGhpcyBvbmUgaXMgKmFsc28qIHN0YXRpYyBvciB3aGV0aGVyIGl0JiMzOTtzIGV4cG9ydGVkIGFuZCB2aXNpYmxlIHRvIG90aGVyIG1vZHVsZXMuIFRoYXQmIzM5O2xsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGRlc2lnbiBoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBmdW5jdGlvbiBkZWNsYXJhdGlvbiB0byBiZSBzdXJlLiBUaGlzIGlzIGFuIGltcG9ydGFudCBkaXN0aW5jdGlvbiB0byBpZGVudGlmeSB0aGUgY29ycmVjdCBzY29wZSBvZiB0aGUgZnVuY3Rpb25hbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDg6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZjX2xsY3BfYWNjZXB0X2RlcXVldWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL2xsY3AuaD0yMTg9dm9pZCBuZmNfbGxjcF9hY2NlcHRfZW5xdWV1ZShzdHJ1Y3Qgc29jayAqcGFyZW50LCBzdHJ1Y3Qgc29jayAqc2spO1xubmV0L25mYy9sbGNwLmg6MjE5OnN0cnVjdCBzb2NrICpuZmNfbGxjcF9hY2NlcHRfZGVxdWV1ZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2spO1xubmV0L25mYy9sbGNwLmgtMjIwLVxuLS1cbm5ldC9uZmMvbGxjcF9zb2NrLmM9NDAzPXZvaWQgbmZjX2xsY3BfYWNjZXB0X2VucXVldWUoc3RydWN0IHNvY2sgKnBhcmVudCwgc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC9uZmMvbGxjcF9zb2NrLmMtNDE2LVxubmV0L25mYy9sbGNwX3NvY2suYzo0MTc6c3RydWN0IHNvY2sgKm5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlKHN0cnVjdCBzb2NrICpwYXJlbnQsXG5uZXQvbmZjL2xsY3Bfc29jay5jLTQxOC1cdFx0XHRcdCAgICAgc3RydWN0IHNvY2tldCAqbmV3c29jaylcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jPTQ2Nj1zdGF0aWMgaW50IGxsY3Bfc29ja19hY2NlcHQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2tldCAqbmV3c29jayxcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jLTQ4Ni1cdGFkZF93YWl0X3F1ZXVlX2V4Y2x1c2l2ZShza19zbGVlcChzayksIFx1MDAyNndhaXQpO1xubmV0L25mYy9sbGNwX3NvY2suYzo0ODc6XHR3aGlsZSAoIShuZXdfc2sgPSBuZmNfbGxjcF9hY2NlcHRfZGVxdWV1ZShzaywgbmV3c29jaykpKSB7XG5uZXQvbmZjL2xsY3Bfc29jay5jLTQ4OC1cdFx0c2V0X2N1cnJlbnRfc3RhdGUoVEFTS19JTlRFUlJVUFRJQkxFKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDg6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkwNTUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIEkgYW5hbHl6ZSB0aGVzZSBmdW5jdGlvbnM6CgoqKkZ1bmN0aW9uIFNjb3BlIElucXVpcnkqKgoKT2theSwgc28gYG5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlYCBpc24mIzM5O3Qgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IGp1bXBzIG91dCBhdCBtZSDigJMgaXQgbWVhbnMgaXQmIzM5O3MgbGlrZWx5IGJlaW5nIGNhbGxlZCBmcm9tIG91dHNpZGUgdGhpcyBzcGVjaWZpYyBtb2R1bGUgb3IgZmlsZS4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cgZm9yIHVuZGVyc3RhbmRpbmcgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLiBOb3csIEkgbmVlZCB0byBjaGVjayB0aGUgb3RoZXJzIHRvIGJ1aWxkIGEgY2xlYXJlciBwaWN0dXJlLgoKTGV0JiMzOTtzIHNlZeKApiBgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2VgPyBBaCwgdGhhdCBvbmUgKmlzKiBzdGF0aWMuIEludGVyZXN0aW5nLiBJIG5lZWQgdG8ga2VlcCB0cmFjayBvZiB0aGlzIGRpZmZlcmVuY2UgYmVjYXVzZSBpdCBpbW1lZGlhdGVseSBmbGFncyBwb3RlbnRpYWwgZW5jYXBzdWxhdGlvbiBpc3N1ZXMuIEEgc3RhdGljIGZ1bmN0aW9uIGlzLCBieSBkZWZpbml0aW9uLCBpbnRlbmRlZCBmb3IgaW50ZXJuYWwgdXNlIG9ubHkgd2l0aGluIGl0cyB0cmFuc2xhdGlvbiB1bml0LiBJdHMgYmVoYXZpb3Igc2hvdWxkbiYjMzk7dCBpbXBhY3QgYW55dGhpbmcgb3V0c2lkZSBpdC4KCkFscmlnaHQsIHdoYXQgZWxzZSBoYXMgYmVlbiBtb2RpZmllZD8gSSYjMzk7bSBub3cgZ29pbmcgdG8gcXVpY2tseSBzY2FuIGZvciBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoaXMgTExDUCBpbXBsZW1lbnRhdGlvbi4gQW55IGRldmlhdGlvbiBmcm9tIHRoZSBlc3RhYmxpc2hlZCBwYXR0ZXJuIHdhcnJhbnRzIGNsb3NlciBpbnNwZWN0aW9uLiBgbmZjX2xsY3Bfc29ja19saXN0X3BvcGAgYXBwZWFycyB0byBiZSBzdGF0aWMsIGNvbmZpcm1pbmcgaXRzIGludGVuZGVkIGxvY2FsIHNjb3BlLiBTYW1lIHdpdGggYGxvY2FsX3JlbGVhc2Vfd29ya2AuIE9rYXksIHR3byBtb3JlIHN0YXRpYyBmdW5jdGlvbnMsIHNvbGlkaWZ5aW5nIHRoZSBpZGVhIHRoYXQgdGhlIHN5c3RlbSBpcyB0cnlpbmcgdG8ga2VlcCB0aGUgaW5uZXIgd29ya2luZ3Mgb2YgdGhlIExMQ1AgbGF5ZXIgcHJldHR5IGNvbnRhaW5lZC4KCkFoYSEgYG5mY19sbGNwX2FjY2VwdF91bmxpbmtgIGlzIGFsc28gbm9uLXN0YXRpYywgbGlrZSB0aGUgYG5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlYCEgVGhpcyBzdWdnZXN0cyBhIGJyb2FkZXIgZXh0ZXJuYWwgaW50ZXJhY3Rpb24uIFRoaXMgc3VnZ2VzdHMgYSBwYXR0ZXJuIGVtZXJnaW5nLCBuYW1lbHkgdGhhdCB0aGVyZSYjMzk7cyBhIHNwZWNpZmljIHJlYXNvbiBmb3Igc29tZSBmdW5jdGlvbnMgdG8gYmUgYWNjZXNzaWJsZSBvdXRzaWRlIG9mIHRoZWlyIGRlY2xhcmF0aW9uIGNvbnRleHQsIHByb2JhYmx5IHRvIG1hbmFnZSBleHRlcm5hbCBjb25uZWN0aW9ucy4gSXQmIzM5O3MgdGltZSB0byBkaWcgZGVlcGVyIG9uIHRoZXNlIHR3byBmdW5jdGlvbnMgYW5kIHNlZSB3aGF0IHRoZXkmIzM5O3JlIGFjdHVhbGx5ICpkb2luZyouIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGVzZSBwYXJ0aWN1bGFyIGZ1bmN0aW9ucyBhcmUgZXhwb3NlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgdGhleSBtaWdodCBpbnRyb2R1Y2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA4OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mY19sbGNwX2FjY2VwdF91bmxpbmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL2xsY3AuaD0yMTY9dm9pZCBuZmNfbGxjcF9zb2NrX2ZyZWUoc3RydWN0IG5mY19sbGNwX3NvY2sgKnNvY2spO1xubmV0L25mYy9sbGNwLmg6MjE3OnZvaWQgbmZjX2xsY3BfYWNjZXB0X3VubGluayhzdHJ1Y3Qgc29jayAqc2spO1xubmV0L25mYy9sbGNwLmgtMjE4LXZvaWQgbmZjX2xsY3BfYWNjZXB0X2VucXVldWUoc3RydWN0IHNvY2sgKnBhcmVudCwgc3RydWN0IHNvY2sgKnNrKTtcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jPTgzPXN0YXRpYyB2b2lkIG5mY19sbGNwX3NvY2tldF9yZWxlYXNlKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIGJvb2wgZGV2aWNlLFxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTE0LVx0XHRcdFx0aWYgKG5mY19sbGNwX3NvY2soYWNjZXB0X3NrKS1cdTAwM2VwYXJlbnQgPT0gc2spIHtcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTE1Olx0XHRcdFx0XHRuZmNfbGxjcF9hY2NlcHRfdW5saW5rKGFjY2VwdF9zayk7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTExNi1cdFx0XHRcdFx0bmZjX2xsY3Bfc29ja191bmxpbmsoXHUwMDI2bG9jYWwtXHUwMDNlc29ja2V0cywgYWNjZXB0X3NrKTtcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jPTMwND1zdGF0aWMgaW50IG5mY19sbGNwX2dldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jLTM4OC1cbm5ldC9uZmMvbGxjcF9zb2NrLmM6Mzg5OnZvaWQgbmZjX2xsY3BfYWNjZXB0X3VubGluayhzdHJ1Y3Qgc29jayAqc2spXG5uZXQvbmZjL2xsY3Bfc29jay5jLTM5MC17XG4tLVxubmV0L25mYy9sbGNwX3NvY2suYz00MTc9c3RydWN0IHNvY2sgKm5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlKHN0cnVjdCBzb2NrICpwYXJlbnQsXG4tLVxubmV0L25mYy9sbGNwX3NvY2suYy00MzQtXG5uZXQvbmZjL2xsY3Bfc29jay5jOjQzNTpcdFx0XHRuZmNfbGxjcF9hY2NlcHRfdW5saW5rKHNrKTtcbm5ldC9uZmMvbGxjcF9zb2NrLmMtNDM2LVx0XHRcdGlmIChsb2NhbClcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jPTYxNj1zdGF0aWMgaW50IGxsY3Bfc29ja19yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXG4tLVxubmV0L25mYy9sbGNwX3NvY2suYy02NTItXHRcdFx0XHRuZmNfbGxjcF9zZW5kX2Rpc2Nvbm5lY3QobHNrKTtcbm5ldC9uZmMvbGxjcF9zb2NrLmM6NjUzOlx0XHRcdFx0bmZjX2xsY3BfYWNjZXB0X3VubGluayhhY2NlcHRfc2spO1xubmV0L25mYy9sbGNwX3NvY2suYy02NTQtXHRcdFx0XHRuZmNfbGxjcF9zb2NrX3VubGluayhcdTAwMjZsb2NhbC1cdTAwM2Vzb2NrZXRzLCBhY2NlcHRfc2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDE4MAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBORkMgTExDUCBDb2RlIGZvciBGdXp6aW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdGhhdCBgbmZjX2xsY3BfYWNjZXB0X3VubGlua2AsIGBuZmNfbGxjcF9hY2NlcHRfZGVxdWV1ZWAsIGFuZCBgbmZjX2xsY3BfbG9jYWxfcHV0YCBhcmUgc3Ryb25nIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcgdGFyZ2V0cyB3aXRoaW4gdGhpcyBORkMgTExDUCBpbXBsZW1lbnRhdGlvbi4gVGhvc2UgZnVuY3Rpb24gbmFtZXMgc2NyZWFtIHBvdGVudGlhbCBmb3IgaW5wdXQgaGFuZGxpbmcgdnVsbmVyYWJpbGl0aWVzLgoKTm93LCB0aGUgY29uZmlndXJhdGlvbiBhc3BlY3RzLiBJIHNlZSBgTkZDYCBhbmQgYE5GQ19TSU1gLiAqTkZDX1NJTSoganVtcHMgb3V0IGFzIHRoZSBzaW11bGF0b3IsIHdoaWNoIGlzIGlkZWFsIGZvciB0aGlzIGtpbmQgb2Ygd29yaywgYnV0IEkgbmVlZCB0byBlbnN1cmUgdGhlIGNvcmUgaXMgaW50YWN0LCBhbmQgdGhhdCBzZWVtcyB0byBiZSBlbmFibGVkIGJ5IGBORkNgLiBCdXQgaXMgYE5GQ19TSU1gIGFjdHVhbGx5IHBhcnQgb2YgdGhlIGNvcmUsIG9yIHNvbWV0aGluZyBlbHNlPwoKQWhhLCBgTkZDX1NJTWAgaXMgYSAqZHJpdmVyKiwgYnV0IHRoZSBjb2RlIEkmIzM5O20gbG9va2luZyBhdCwgc3BlY2lmaWNhbGx5IGBuZXQvbmZjL2xsY3BfY29yZS5jYCwgaXMgY29tcGlsZWQgdW5kZXIgdGhlIGBORkNgIGZsYWcuIFRoYXQmIzM5O3MgZ29vZC4gSXQgbWVhbnMgbXkgdGFyZ2V0IGNvZGUgaXMgcGFydCBvZiB0aGUgbWFpbiBzeXN0ZW0sIGFuZCBub3QgYSBzZXBhcmF0ZSBtb2R1bGUuCgpSaWdodCwgc28gdG8gbWFrZSBzdXJlIHRoZSBjb2RlIGdldHMgY29tcGlsZWQsIGBORkNgIG5lZWRzIHRvIGJlIGVuYWJsZWQuIEJ1dCB0byB0ZXN0IHRoZSBMTENQIGNvcmUsIEkgbmVlZCBhbiBORkMgZGV2aWNlLiAqQmluZ28hKiBgTkZDX1NJTWAgcHJvdmlkZXMgdGhhdCB2aXJ0dWFsIGRldmljZS4gSXQmIzM5O3MgYSBwZXJmZWN0IHNldHVwIGZvciBmdXp6aW5nIC0gSSBjYW4gc2ltdWxhdGUgaW50ZXJhY3Rpb25zIHdpdGhvdXQgcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlLgoKSnVzdCB0byBiZSBjZXJ0YWluLCBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIGlmIGBORkNfU0lNYCBoYXMgYW55IGRlcGVuZGVuY2llcyB0aGF0IGNvdWxkIGNvbXBsaWNhdGUgdGhpbmdzLiBJIHdhbnQgdG8ga25vdyBpZiB0aGVyZSBhcmUgaGlkZGVuIGZhY3RvcnMgb3IgbGltaXRhdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA4OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORkNfU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9LY29uZmlnPTIxPWNvbmZpZyBORkNfTUVJX1BIWVxuLS1cbmRyaXZlcnMvbmZjL0tjb25maWctMzAtXG5kcml2ZXJzL25mYy9LY29uZmlnOjMxOmNvbmZpZyBORkNfU0lNXG5kcml2ZXJzL25mYy9LY29uZmlnLTMyLVx0dHJpc3RhdGUgXCYjMzQ7TkZDIGhhcmR3YXJlIHNpbXVsYXRvciBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDg6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA4MzcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE5GQ19TSU1gOgoKKipEZWVwIERpdmUgaW50byBORkNfU0lNIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBiZWZvcmUgSSBnZXQgdG9vIGZhciBkb3duIHRoZSByb2FkIHdpdGggdGhpcywgbGV0JiMzOTtzIHRha2UgYSBnb29kLCBoYXJkIGxvb2sgYXQgdGhlIGRlcGVuZGVuY2llcyBvZiBgTkZDX1NJTWAuIEkgbmVlZCB0byBlbnN1cmUgYSByb2J1c3QgYW5kIHdlbGwtZGVmaW5lZCBmb3VuZGF0aW9uLCBhbmQgdGhhdCBzdGFydHMgaGVyZS4gSSYjMzk7bSB0aGlua2luZyBiZXlvbmQganVzdCB0aGUgaW1tZWRpYXRlbHkgb2J2aW91czsgd2hhdCBleHRlcm5hbCBsaWJyYXJpZXMgaXMgaXQgcHVsbGluZyBpbj8gV2hhdCBzcGVjaWZpYyB2ZXJzaW9ucyBhcmUgcmVxdWlyZWQsIGFuZCBhcmUgdGhvc2UgdmVyc2lvbnMgc3RpbGwgYWN0aXZlbHkgbWFpbnRhaW5lZD8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gQXJlIHRoZXJlIGFueSBpbmRpcmVjdCBkZXBlbmRlbmNpZXMg4oCTIGRlcGVuZGVuY2llcyBvZiBkZXBlbmRlbmNpZXMg4oCTIHRoYXQgbWlnaHQgaW50cm9kdWNlIHVuZXhwZWN0ZWQgY29tcGxleGl0aWVzIGRvd24gdGhlIGxpbmU/CgpJJiMzOTttIGFsc28gY29uc2lkZXJpbmcgdGhlIGJ1aWxkIGVudmlyb25tZW50IGl0c2VsZi4gV2hhdCBjb21waWxlciB2ZXJzaW9ucyBhcmUgc3VwcG9ydGVkPyBXaGF0IG9wZXJhdGluZyBzeXN0ZW1zIGFyZSBvZmZpY2lhbGx5IHN1cHBvcnRlZCwgYW5kIHdoYXQgYWJvdXQgbGVzcyBjb21tb24gb25lcz8gQXJlIHRoZXJlIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBkZXBlbmRlbmNpZXMgSSBuZWVkIHRvIHRha2UgaW50byBhY2NvdW50PyBUaGlzIGlzIGNydWNpYWwgZm9yIHBvcnRhYmlsaXR5LiBBbmQgd2hhdCBhYm91dCB0aGUgdGVzdGluZyBmcmFtZXdvcms/IEFyZSB0aGVyZSBhbnkgcGFydGljdWxhciBsaWJyYXJpZXMgb3IgdG9vbHMgYE5GQ19TSU1gIHJlbGllcyBvbiBmb3IgdW5pdCB0ZXN0cywgaW50ZWdyYXRpb24gdGVzdHMsIG9yIHBlcmZvcm1hbmNlIGJlbmNobWFya3M/IEkmIzM5O20gbm90IGp1c3QgY29uY2VybmVkIHdpdGggZ2V0dGluZyB0aGUgY29kZSB0byBydW47IEkgd2FudCB0byBlbnN1cmUgaXQmIzM5O3MgdGhvcm91Z2hseSB0ZXN0ZWQgYW5kIG1haW50YWluYWJsZS4KCkZpbmFsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGZ1dHVyZS4gV2lsbCBgTkZDX1NJTWAgbmVlZCB0byBpbnRlcmFjdCB3aXRoIGFueSBvdGhlciBzeXN0ZW1zIG9yIGNvbXBvbmVudHMgZG93biB0aGUgbGluZT8gQXJlIHRoZXJlIGFueSBlbWVyZ2luZyBzdGFuZGFyZHMgb3IgdGVjaG5vbG9naWVzIHRoYXQgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCB3aGVuIGV2YWx1YXRpbmcgdGhlc2UgZGVwZW5kZW5jaWVzPyBDaG9vc2luZyB0aGUgcmlnaHQgZGVwZW5kZW5jaWVzIG5vdyBjYW4gc2F2ZSBhIG1hc3NpdmUgaGVhZGFjaGUgbGF0ZXIuIEl0JiMzOTtzIGFsbCBhYm91dCBwcm9hY3RpdmUgcmlzayBtaXRpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDMwOlx0XG4gIDMxOlx0Y29uZmlnIE5GQ19TSU1cbiAgMzI6XHRcdHRyaXN0YXRlIFwmIzM0O05GQyBoYXJkd2FyZSBzaW11bGF0b3IgZHJpdmVyXCYjMzQ7XG4gIDMzOlx0XHRkZXBlbmRzIG9uIE5GQ19ESUdJVEFMXG4gIDM0Olx0XHRoZWxwXG4gIDM1Olx0XHQgIFRoaXMgZHJpdmVyIGRlY2xhcmVzIHR3byB2aXJ0dWFsIE5GQyBkZXZpY2VzIHN1cHBvcnRpbmcgTkZDLURFUFxuICAzNjpcdFx0ICBwcm90b2NvbC4gQW4gTExDUCBjb25uZWN0aW9uIGNhbiBiZSBlc3RhYmxpc2hlZCBiZXR3ZWVuIHRoZW0gYW5kXG4gIDM3Olx0XHQgIGFsbCBwYWNrZXRzIHNlbnQgZnJvbSBvbmUgZGV2aWNlIGlzIHNlbnQgYmFjayB0byB0aGUgb3RoZXIsIGFjdGluZyBhc1xuICAzODpcdFx0ICBsb29wYmFjayBkZXZpY2VzLlxuICAzOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTM0NQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gYSBmaXJzdC1wZXJzb24gcGVyc3BlY3RpdmUsIGFzc3VtaW5nIEkmIzM5O20gd2VsbC12ZXJzZWQgaW4gdGhpcyBmaWVsZDoKCioqRGVwZW5kZW5jeSBEZWVwIERpdmUqKgoKQWxyaWdodCwgSSBzZWUgaXQgaW1tZWRpYXRlbHkuIGBORkNfU0lNYCByZWxpZXMgb24gYE5GQ19ESUdJVEFMYC4gVGhpcyBpc24mIzM5O3QgdW5leHBlY3RlZCwgYnV0IGl0JiMzOTtzIGEgY3JpdGljYWwgcG9pbnQgdG8gYWNrbm93bGVkZ2UgYmVmb3JlIHByb2NlZWRpbmcuIE5vdywgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGBORkNfRElHSVRBTGAmIzM5O3Mgb3duIGRlcGVuZGVuY2llcy4gSXQmIzM5O3MgdGltZSB0byB0cmFjZSBpdHMgZGVwZW5kZW5jeSB0cmVlLiBHb3R0YSBtYWtlIHN1cmUgSSBoYXZlIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBldmVyeXRoaW5nIHRoYXQgZmVlZHMgaW50byBgTkZDX0RJR0lUQUxgIGJlY2F1c2UgdGhhdCBpbmV2aXRhYmx5IGltcGFjdHMgYE5GQ19TSU1gIGFuZCB0aGUgYnJvYWRlciBzeXN0ZW0mIzM5O3MgYmVoYXZpb3IuIFRpbWUgdG8gZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZDX0RJR0lUQUwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9LY29uZmlnPTY9bWVudWNvbmZpZyBORkNcbi0tXG5uZXQvbmZjL0tjb25maWctMTYtXG5uZXQvbmZjL0tjb25maWc6MTc6Y29uZmlnIE5GQ19ESUdJVEFMXG5uZXQvbmZjL0tjb25maWctMTgtXHRkZXBlbmRzIG9uIE5GQ1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTYzNgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgY29uZmlndXJhdGlvbnM6CgoqKkFuYWx5emluZyBORkMgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJiMzOTttIHNlZWluZywgYE5GQ2AsIGBORkNfRElHSVRBTGAsIGFuZCBgTkZDX1NJTWAgYXJlIHRoZSBrZXkgY29uZmlndXJhdGlvbnMgaW4gcGxheSBoZXJlLiBCdXQgaG9sZCBvbiwgaXQgc2VlbXMgbGlrZSBgTkZDX1ZJUlRVQUxfTkNJYCAqbWlnaHQqIGJlIHJlbGV2YW50IHRvby4gSSBzaG91bGQgcmVhbGx5IGNoZWNrIHRoYXQgb25lIGFzIHdlbGwsIGp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIHNlZSBpZiBpdCBicmluZ3MgYW55dGhpbmcgbmV3IHRvIHRoZSB0YWJsZS4gV2UgbmVlZCB0byBjb25zaWRlciBhbGwgYW5nbGVzIHdoZW4gZGVhbGluZyB3aXRoIHRoZSBORkMgaW1wbGVtZW50YXRpb25zLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gYmUgY29tcGxldGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA4OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNTE6XHRcbiAgNTI6XHRjb25maWcgTkZDX1ZJUlRVQUxfTkNJXG4gIDUzOlx0XHR0cmlzdGF0ZSBcJiMzNDtOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcJiMzNDtcbiAgNTQ6XHRcdGRlcGVuZHMgb24gTkZDX05DSVxuICA1NTpcdFx0aGVscFxuICA1NjpcdFx0ICBOQ0kgdmlydHVhbCBkZXZpY2Ugc2ltdWxhdGVzIGEgTkNJIGRldmljZSB0byB0aGUgdXNlci5cbiAgNTc6XHRcdCAgSXQgY2FuIGJlIHVzZWQgdG8gdmFsaWRhdGUgdGhlIE5DSSBtb2R1bGUgYW5kIGFwcGxpY2F0aW9ucy5cbiAgNTg6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHRoZSB2aXJ0dWFsIE5DSSBkZXZpY2UgYW5kXG4gIDU5Olx0XHQgIG1vZHVsZS5cbiAgNjA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDg6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE5ODcKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6CgoqKkRlcGVuZGVuY3kgRGVlcCBEaXZlKioKCkFscmlnaHQsIHNvIGBORkNfVklSVFVBTF9OQ0lgIGlzIGNsZWFybHkgYnVpbHQgb24gdG9wIG9mIGBORkNfTkNJYC4gVGhhdCYjMzk7cyBhIHByZXR0eSBzdGFuZGFyZCBsYXllcmluZyBhcHByb2FjaCwgYnV0IEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGUgZm91bmRhdGlvbiBpcyBzb2xpZCBiZWZvcmUgSSBnZXQgdG9vIGludmVzdGVkIGluIHRoZSB2aXJ0dWFsIGFzcGVjdHMuIFNvLCB0aGUgZmlyc3QgbG9naWNhbCBzdGVwIGlzIHRvIGRlbHZlIGludG8gdGhlIGRlcGVuZGVuY2llcyBvZiBgTkZDX05DSWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaXQgcmVsaWVzIG9uLCB3aGF0IGl0cyBwb3RlbnRpYWwgd2VhayBwb2ludHMgYXJlLCBhbmQgaWYgYW55IHVwZGF0ZXMgb3IgY2hhbmdlcyB0aGVyZSBjb3VsZCByaXBwbGUgdXAgYW5kIGFmZmVjdCBgTkZDX1ZJUlRVQUxfTkNJYC4gR290IHRvIHRob3JvdWdobHkgdmV0IHRoZSBiYXNlIGJlZm9yZSBJIGJ1aWxkIG9uIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZDX05DSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvbmNpL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9uY2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L25mYy9uY2kvS2NvbmZpZzoyOmNvbmZpZyBORkNfTkNJXG5uZXQvbmZjL25jaS9LY29uZmlnLTMtXHRkZXBlbmRzIG9uIE5GQ1xuLS1cbm5ldC9uZmMvbmNpL0tjb25maWctMTItXG5uZXQvbmZjL25jaS9LY29uZmlnOjEzOmNvbmZpZyBORkNfTkNJX1NQSVxubmV0L25mYy9uY2kvS2NvbmZpZy0xNC1cdGRlcGVuZHMgb24gTkZDX05DSSBcdTAwMjZcdTAwMjYgU1BJXG4tLVxubmV0L25mYy9uY2kvS2NvbmZpZy0yMy1cbm5ldC9uZmMvbmNpL0tjb25maWc6MjQ6Y29uZmlnIE5GQ19OQ0lfVUFSVFxubmV0L25mYy9uY2kvS2NvbmZpZy0yNS1cdGRlcGVuZHMgb24gTkZDX05DSSBcdTAwMjZcdTAwMjYgVFRZXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA4OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNDE3CgkJCQkJCQlvdXRwdXQ6IDE5MgoJCQkJCQkJdGhvdWdodHM6IDE2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhc3Nlc3NtZW50IG9mIHRoZSBzaXR1YXRpb246CgoqKk5GQyBUZXN0aW5nIGFuZCBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0aWVzKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcsIGJleW9uZCB0aGUgY29yZSBgTkZDYCBjb25maWcsIGVuYWJsaW5nIGBORkNfVklSVFVBTF9OQ0lgIGFuZCBgTkZDX05DSWAgc2VlbXMgbGlrZSBhIHNvbGlkIGFwcHJvYWNoIGZvciBjb21wcmVoZW5zaXZlIE5GQyB0ZXN0aW5nLiBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb25zIG9mIGBORkNgLCBgTkZDX0RJR0lUQUxgLCBhbmQgYE5GQ19TSU1gLgoKVGhpcyBwYXRjaCBpcyBpbnRlcmVzdGluZyDigJMgaXQmIzM5O3MgYWRkcmVzc2luZyBhIHJhY2UgY29uZGl0aW9uIG9yIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBzaXR1YXRpb24gd2l0aGluIExMQ1Agc29ja2V0IHJlbGVhc2UuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgdGhpcyBhcyBzb21ldGhpbmcgdGhhdCB3YXJyYW50cyBmdXp6aW5nLiBJdCYjMzk7cyBhIGNsYXNzaWMgYXJlYSBmb3IgbWVtb3J5IGNvcnJ1cHRpb24gdnVsbmVyYWJpbGl0aWVzLCBhbmQgTExDUCBiZWluZyBhIGxvd2VyLWxldmVsIHByb3RvY29sIG1ha2VzIGl0IGFuIGV2ZW4gYmV0dGVyIHRhcmdldC4KCk15IGZvY3VzIHNob3VsZCBiZSBvbiB0aGVzZSBrZXkgc3ltYm9sczogYG5mY19sbGNwX2xvY2FsX3B1dGAsIGBuZmNfbGxjcF9hY2NlcHRfZGVxdWV1ZWAsIGFuZCBgbmZjX2xsY3BfYWNjZXB0X3VubGlua2AuIFRoZXkgYXJlIGxpa2VseSBhdCB0aGUgaGVhcnQgb2YgdGhlIGlzc3VlIGFuZCB1bmRlcnN0YW5kaW5nIHRoZWlyIGJlaGF2aW9yIHdpbGwgYmUgY3JpdGljYWwgZm9yIGVmZmVjdGl2ZSBmdXp6aW5nLgoKQmVmb3JlIEkgY29tbWl0IHRvIHRoaXMsIEkmIzM5O2xsIHF1aWNrbHkgc2NhbiB0aGUgZXhpc3RpbmcgY29uZmlncyB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBvdmVybG9va2VkIGFueSBvdGhlciByZWxldmFudCBvcHRpb25zIHRoYXQgbWlnaHQgaW1wYWN0IHRoZSB0ZXN0IGVudmlyb25tZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDJiMzNDssCiAgICAmIzM0O05GQ19ESUdJVEFMJiMzNDssCiAgICAmIzM0O05GQ19TSU0mIzM0OywKICAgICYjMzQ7TkZDX05DSSYjMzQ7LAogICAgJiMzNDtORkNfVklSVFVBTF9OQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZmNfbGxjcF9sb2NhbF9wdXQmIzM0OywKICAgICYjMzQ7bmZjX2xsY3BfYWNjZXB0X2RlcXVldWUmIzM0OywKICAgICYjMzQ7bmZjX2xsY3BfYWNjZXB0X3VubGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBsb2dpYyBvZiBORkMgTExDUCBzb2NrZXRzLCBmaXhpbmcgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gb3IgdXNlLWFmdGVyLWZyZWUgZHVyaW5nIHNvY2tldCByZWxlYXNlIGFuZCBhY2NlcHQgcXVldWUgaGFuZGxpbmcuIEl0IGludHJvZHVjZXMgYSB3b3JrcXVldWUgZm9yIGxvY2FsIHJlbGVhc2UgYW5kIG1vZGlmaWVzIHNvY2tldCBsb2NraW5nLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgc3RhbmRhcmQgc29ja2V0IEFQSXMgd2hlbiBORkMgaXMgZW5hYmxlZC4gVmlydHVhbCBORkMgZGV2aWNlcyAoTkZDX1NJTSwgTkZDX1ZJUlRVQUxfTkNJKSBjYW4gYmUgdXNlZCB0byB0cmlnZ2VyIHRoaXMgY29kZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkMmIzM0OywKICAgICYjMzQ7TkZDX0RJR0lUQUwmIzM0OywKICAgICYjMzQ7TkZDX1NJTSYjMzQ7LAogICAgJiMzNDtORkNfTkNJJiMzNDssCiAgICAmIzM0O05GQ19WSVJUVUFMX05DSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mY19sbGNwX2xvY2FsX3B1dCYjMzQ7LAogICAgJiMzNDtuZmNfbGxjcF9hY2NlcHRfZGVxdWV1ZSYjMzQ7LAogICAgJiMzNDtuZmNfbGxjcF9hY2NlcHRfdW5saW5rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGxvZ2ljIG9mIE5GQyBMTENQIHNvY2tldHMsIGZpeGluZyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBvciB1c2UtYWZ0ZXItZnJlZSBkdXJpbmcgc29ja2V0IHJlbGVhc2UgYW5kIGFjY2VwdCBxdWV1ZSBoYW5kbGluZy4gSXQgaW50cm9kdWNlcyBhIHdvcmtxdWV1ZSBmb3IgbG9jYWwgcmVsZWFzZSBhbmQgbW9kaWZpZXMgc29ja2V0IGxvY2tpbmcuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBzdGFuZGFyZCBzb2NrZXQgQVBJcyB3aGVuIE5GQyBpcyBlbmFibGVkLiBWaXJ0dWFsIE5GQyBkZXZpY2VzIChORkNfU0lNLCBORkNfVklSVFVBTF9OQ0kpIGNhbiBiZSB1c2VkIHRvIHRyaWdnZXIgdGhpcyBjb2RlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA4OjQ5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDg6NDk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGxvY2tpbmcsIHJlZmVyZW5jZSBjb3VudGluZywgYW5kIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBpbiB0aGUgTkZDIExMQ1Agc29ja2V0IGxheWVyLiBJdCBpbnRyb2R1Y2VzIGEgd29ya3F1ZXVlIGZvciBkZWZlcnJlZCBjbGVhbnVwLCBtb2RpZmllcyBzb2NrZXQgbGlzdCBwb3BwaW5nIHRvIGF2b2lkIGRlYWRsb2NrcyBvciBVQUYsIGFuZCBmaXhlcyBhY2NlcHQgcXVldWUgaGFuZGxpbmcuIFRoZXJlIGFyZSBubyBjaGFuZ2VzIHRvIGRhdGEgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm8gbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucywgYW5kIG5vIG1vZGlmaWNhdGlvbnMgdG8gZGF0YSBsZW5ndGhzIG9yIGJvdW5kcyBjaGVja3MgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBidWdzIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcyAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIG9yIGRlYWRsb2Nrcykgd291bGQgYmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBMT0NLREVQLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDAxOTIwMzIzYjk1NDBmY2I2OGViOGUxZmFlZDAyNDQ3MDgyNjE2ZWQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAyNiAwODo0ODozMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZmMvbGxjcC5oIGIvbmV0L25mYy9sbGNwLmgKaW5kZXggZDgzNDVlZDU3Yzk1NC4uMjNhZTdhMDExMmQzNyAxMDA2NDQKLS0tIGEvbmV0L25mYy9sbGNwLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25mYy9sbGNwLmgKQEAgLTkxLDYgJiM0Mzs5MSw3IEBAIHN0cnVjdCBuZmNfbGxjcF9sb2NhbCB7CiAJc3RydWN0IGhsaXN0X2hlYWQgcGVuZGluZ19zZHJlcXM7CiAJc3RydWN0IHRpbWVyX2xpc3Qgc2RyZXFfdGltZXI7CiAJc3RydWN0IHdvcmtfc3RydWN0IHNkcmVxX3RpbWVvdXRfd29yazsKJiM0MzsJc3RydWN0IHdvcmtfc3RydWN0IHJlbGVhc2Vfd29yazsKIAl1OCBzZHJlcV9uZXh0X3RpZDsKIAogCS8qIHNvY2tldHMgYXJyYXkgKi8KZGlmZiAtLWdpdCBhL25ldC9uZmMvbGxjcF9jb3JlLmMgYi9uZXQvbmZjL2xsY3BfY29yZS5jCmluZGV4IGJkNjM2MWUyZWZhNGYuLjJjMmRiYzEyNTMxZWMgMTAwNjQ0Ci0tLSBhL25ldC9uZmMvbGxjcF9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25mYy9sbGNwX2NvcmUuYwpAQCAtMjAsNiAmIzQzOzIwLDggQEAgc3RhdGljIExJU1RfSEVBRChsbGNwX2RldmljZXMpOwogLyogUHJvdGVjdHMgbGxjcF9kZXZpY2VzIGxpc3QgKi8KIHN0YXRpYyBERUZJTkVfU1BJTkxPQ0sobGxjcF9kZXZpY2VzX2xvY2spOwogCiYjNDM7c3RhdGljIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpsbGNwX3dxOwomIzQzOwogc3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfc2tiKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpOwogCiB2b2lkIG5mY19sbGNwX3NvY2tfbGluayhzdHJ1Y3QgbGxjcF9zb2NrX2xpc3QgKmwsIHN0cnVjdCBzb2NrICpzaykKQEAgLTYzLDIxICYjNDM7NjUsMzMgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfc29ja2V0X3B1cmdlKHN0cnVjdCBuZmNfbGxjcF9zb2NrICpzb2NrKQogCX0KIH0KIAomIzQzO3N0YXRpYyBzdHJ1Y3Qgc29jayAqbmZjX2xsY3Bfc29ja19saXN0X3BvcChzdHJ1Y3QgbGxjcF9zb2NrX2xpc3QgKmwpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgc29jayAqc2s7CiYjNDM7CiYjNDM7CXdyaXRlX2xvY2soJmFtcDtsLSZndDtsb2NrKTsKJiM0MzsJc2sgPSBza19oZWFkKCZhbXA7bC0mZ3Q7aGVhZCk7CiYjNDM7CWlmIChzaykgewomIzQzOwkJc29ja19ob2xkKHNrKTsKJiM0MzsJCXNrX2RlbF9ub2RlX2luaXQoc2spOwomIzQzOwl9CiYjNDM7CXdyaXRlX3VubG9jaygmYW1wO2wtJmd0O2xvY2spOwomIzQzOwomIzQzOwlyZXR1cm4gc2s7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2Uoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgYm9vbCBkZXZpY2UsCiAJCQkJICAgIGludCBlcnIpCiB7CiAJc3RydWN0IHNvY2sgKnNrOwotCXN0cnVjdCBobGlzdF9ub2RlICp0bXA7CiAJc3RydWN0IG5mY19sbGNwX3NvY2sgKmxsY3Bfc29jazsKIAogCXNrYl9xdWV1ZV9wdXJnZSgmYW1wO2xvY2FsLSZndDt0eF9xdWV1ZSk7CiAKLQl3cml0ZV9sb2NrKCZhbXA7bG9jYWwtJmd0O3NvY2tldHMubG9jayk7Ci0KLQlza19mb3JfZWFjaF9zYWZlKHNrLCB0bXAsICZhbXA7bG9jYWwtJmd0O3NvY2tldHMuaGVhZCkgewomIzQzOwl3aGlsZSAoKHNrID0gbmZjX2xsY3Bfc29ja19saXN0X3BvcCgmYW1wO2xvY2FsLSZndDtzb2NrZXRzKSkpIHsKIAkJbGxjcF9zb2NrID0gbmZjX2xsY3Bfc29jayhzayk7CiAKLQkJYmhfbG9ja19zb2NrKHNrKTsKJiM0MzsJCWxvY2tfc29jayhzayk7CiAKIAkJbmZjX2xsY3Bfc29ja2V0X3B1cmdlKGxsY3Bfc29jayk7CiAKQEAgLTkxLDE3ICYjNDM7MTA1LDI3IEBAIHN0YXRpYyB2b2lkIG5mY19sbGNwX3NvY2tldF9yZWxlYXNlKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIGJvb2wgZGV2aWNlLAogCQkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGxzaywgbiwKIAkJCQkJCSAmYW1wO2xsY3Bfc29jay0mZ3Q7YWNjZXB0X3F1ZXVlLAogCQkJCQkJIGFjY2VwdF9xdWV1ZSkgewotCQkJCWFjY2VwdF9zayA9ICZhbXA7bHNrLSZndDtzazsKLQkJCQliaF9sb2NrX3NvY2soYWNjZXB0X3NrKTsKLQotCQkJCW5mY19sbGNwX2FjY2VwdF91bmxpbmsoYWNjZXB0X3NrKTsKJiM0MzsJCQkJYm9vbCBwdXRfY3JlYXRpb24gPSBmYWxzZTsKIAotCQkJCWlmIChlcnIpCi0JCQkJCWFjY2VwdF9zay0mZ3Q7c2tfZXJyID0gZXJyOwotCQkJCWFjY2VwdF9zay0mZ3Q7c2tfc3RhdGUgPSBMTENQX0NMT1NFRDsKLQkJCQlhY2NlcHRfc2stJmd0O3NrX3N0YXRlX2NoYW5nZShzayk7CiYjNDM7CQkJCWFjY2VwdF9zayA9ICZhbXA7bHNrLSZndDtzazsKJiM0MzsJCQkJbG9ja19zb2NrX25lc3RlZChhY2NlcHRfc2ssCiYjNDM7CQkJCQkJIFNJTkdMRV9ERVBUSF9ORVNUSU5HKTsKJiM0MzsKJiM0MzsJCQkJaWYgKG5mY19sbGNwX3NvY2soYWNjZXB0X3NrKS0mZ3Q7cGFyZW50ID09IHNrKSB7CiYjNDM7CQkJCQluZmNfbGxjcF9hY2NlcHRfdW5saW5rKGFjY2VwdF9zayk7CiYjNDM7CQkJCQluZmNfbGxjcF9zb2NrX3VubGluaygmYW1wO2xvY2FsLSZndDtzb2NrZXRzLCBhY2NlcHRfc2spOwomIzQzOwomIzQzOwkJCQkJaWYgKGVycikKJiM0MzsJCQkJCQlhY2NlcHRfc2stJmd0O3NrX2VyciA9IGVycjsKJiM0MzsJCQkJCWFjY2VwdF9zay0mZ3Q7c2tfc3RhdGUgPSBMTENQX0NMT1NFRDsKJiM0MzsJCQkJCWFjY2VwdF9zay0mZ3Q7c2tfc3RhdGVfY2hhbmdlKGFjY2VwdF9zayk7CiYjNDM7CQkJCQlzb2NrX29ycGhhbihhY2NlcHRfc2spOwomIzQzOwkJCQkJcHV0X2NyZWF0aW9uID0gdHJ1ZTsKJiM0MzsJCQkJfQogCi0JCQkJYmhfdW5sb2NrX3NvY2soYWNjZXB0X3NrKTsKJiM0MzsJCQkJcmVsZWFzZV9zb2NrKGFjY2VwdF9zayk7CiYjNDM7CQkJCWlmIChwdXRfY3JlYXRpb24pCiYjNDM7CQkJCQlzb2NrX3B1dChhY2NlcHRfc2spOyAvKiBjcmVhdGlvbiByZWYgKi8KIAkJCX0KIAkJfQogCkBAIC0xMTAsMjMgJiM0MzsxMzQsMTggQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2Uoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgYm9vbCBkZXZpY2UsCiAJCXNrLSZndDtza19zdGF0ZSA9IExMQ1BfQ0xPU0VEOwogCQlzay0mZ3Q7c2tfc3RhdGVfY2hhbmdlKHNrKTsKIAotCQliaF91bmxvY2tfc29jayhzayk7Ci0KLQkJc2tfZGVsX25vZGVfaW5pdChzayk7CiYjNDM7CQlyZWxlYXNlX3NvY2soc2spOwomIzQzOwkJc29ja19wdXQoc2spOwogCX0KIAotCXdyaXRlX3VubG9jaygmYW1wO2xvY2FsLSZndDtzb2NrZXRzLmxvY2spOwotCiAJLyogSWYgd2Ugc3RpbGwgaGF2ZSBhIGRldmljZSwgd2Uga2VlcCB0aGUgUkFXIHNvY2tldHMgYWxpdmUgKi8KIAlpZiAoZGV2aWNlID09IHRydWUpCiAJCXJldHVybjsKIAotCXdyaXRlX2xvY2soJmFtcDtsb2NhbC0mZ3Q7cmF3X3NvY2tldHMubG9jayk7Ci0KLQlza19mb3JfZWFjaF9zYWZlKHNrLCB0bXAsICZhbXA7bG9jYWwtJmd0O3Jhd19zb2NrZXRzLmhlYWQpIHsKJiM0MzsJd2hpbGUgKChzayA9IG5mY19sbGNwX3NvY2tfbGlzdF9wb3AoJmFtcDtsb2NhbC0mZ3Q7cmF3X3NvY2tldHMpKSkgewogCQlsbGNwX3NvY2sgPSBuZmNfbGxjcF9zb2NrKHNrKTsKIAotCQliaF9sb2NrX3NvY2soc2spOwomIzQzOwkJbG9ja19zb2NrKHNrKTsKIAogCQluZmNfbGxjcF9zb2NrZXRfcHVyZ2UobGxjcF9zb2NrKTsKIApAQCAtMTM1LDI2ICYjNDM7MTU0LDIwIEBAIHN0YXRpYyB2b2lkIG5mY19sbGNwX3NvY2tldF9yZWxlYXNlKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIGJvb2wgZGV2aWNlLAogCQlzay0mZ3Q7c2tfc3RhdGUgPSBMTENQX0NMT1NFRDsKIAkJc2stJmd0O3NrX3N0YXRlX2NoYW5nZShzayk7CiAKLQkJYmhfdW5sb2NrX3NvY2soc2spOwotCi0JCXNrX2RlbF9ub2RlX2luaXQoc2spOwomIzQzOwkJcmVsZWFzZV9zb2NrKHNrKTsKJiM0MzsJCXNvY2tfcHV0KHNrKTsKIAl9Ci0KLQl3cml0ZV91bmxvY2soJmFtcDtsb2NhbC0mZ3Q7cmF3X3NvY2tldHMubG9jayk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKm5mY19sbGNwX2xvY2FsX2dldChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsKQogewotCS8qIFNpbmNlIHVzaW5nIG5mY19sbGNwX2xvY2FsIG1heSByZXN1bHQgaW4gdXNhZ2Ugb2YgbmZjX2Rldiwgd2hlbmV2ZXIKLQkgKiB3ZSBob2xkIGEgcmVmZXJlbmNlIHRvIGxvY2FsLCB3ZSBhbHNvIG5lZWQgdG8gaG9sZCBhIHJlZmVyZW5jZSB0bwotCSAqIHRoZSBkZXZpY2UgdG8gYXZvaWQgVUFGLgotCSAqLwotCWlmICghbmZjX2dldF9kZXZpY2UobG9jYWwtJmd0O2Rldi0mZ3Q7aWR4KSkKJiM0MzsJaWYgKCFsb2NhbCkKIAkJcmV0dXJuIE5VTEw7CiAKLQlrcmVmX2dldCgmYW1wO2xvY2FsLSZndDtyZWYpOwomIzQzOwlpZiAoa3JlZl9nZXRfdW5sZXNzX3plcm8oJmFtcDtsb2NhbC0mZ3Q7cmVmKSkKJiM0MzsJCXJldHVybiBsb2NhbDsKIAotCXJldHVybiBsb2NhbDsKJiM0MzsJcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyB2b2lkIGxvY2FsX2NsZWFudXAoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCkKQEAgLTE3MiwzMCAmIzQzOzE4NSwzNCBAQCBzdGF0aWMgdm9pZCBsb2NhbF9jbGVhbnVwKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwpCiAJbmZjX2xsY3BfZnJlZV9zZHBfdGx2X2xpc3QoJmFtcDtsb2NhbC0mZ3Q7cGVuZGluZ19zZHJlcXMpOwogfQogCi1zdGF0aWMgdm9pZCBsb2NhbF9yZWxlYXNlKHN0cnVjdCBrcmVmICpyZWYpCiYjNDM7c3RhdGljIHZvaWQgbG9jYWxfcmVsZWFzZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIHsKIAlzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsOwomIzQzOwlzdHJ1Y3QgbmZjX2RldiAqZGV2OwogCi0JbG9jYWwgPSBjb250YWluZXJfb2YocmVmLCBzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwsIHJlZik7CiYjNDM7CWxvY2FsID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZmNfbGxjcF9sb2NhbCwgcmVsZWFzZV93b3JrKTsKJiM0MzsJZGV2ID0gbG9jYWwtJmd0O2RldjsKIAogCWxvY2FsX2NsZWFudXAobG9jYWwpOwogCWtmcmVlKGxvY2FsKTsKJiM0MzsJbmZjX3B1dF9kZXZpY2UoZGV2KTsKIH0KIAotaW50IG5mY19sbGNwX2xvY2FsX3B1dChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsKQomIzQzO3N0YXRpYyB2b2lkIGxvY2FsX3JlbGVhc2Uoc3RydWN0IGtyZWYgKnJlZikKIHsKLQlzdHJ1Y3QgbmZjX2RldiAqZGV2OwotCWludCByZXQ7CiYjNDM7CXN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWw7CiAKLQlpZiAobG9jYWwgPT0gTlVMTCkKLQkJcmV0dXJuIDA7CiYjNDM7CWxvY2FsID0gY29udGFpbmVyX29mKHJlZiwgc3RydWN0IG5mY19sbGNwX2xvY2FsLCByZWYpOwogCi0JZGV2ID0gbG9jYWwtJmd0O2RldjsKJiM0MzsJcXVldWVfd29yayhsbGNwX3dxLCAmYW1wO2xvY2FsLSZndDtyZWxlYXNlX3dvcmspOwomIzQzO30KIAotCXJldCA9IGtyZWZfcHV0KCZhbXA7bG9jYWwtJmd0O3JlZiwgbG9jYWxfcmVsZWFzZSk7Ci0JbmZjX3B1dF9kZXZpY2UoZGV2KTsKJiM0MztpbnQgbmZjX2xsY3BfbG9jYWxfcHV0KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwpCiYjNDM7ewomIzQzOwlpZiAoIWxvY2FsKQomIzQzOwkJcmV0dXJuIDA7CiAKLQlyZXR1cm4gcmV0OwomIzQzOwlyZXR1cm4ga3JlZl9wdXQoJmFtcDtsb2NhbC0mZ3Q7cmVmLCBsb2NhbF9yZWxlYXNlKTsKIH0KIAogc3RhdGljIHN0cnVjdCBuZmNfbGxjcF9zb2NrICpuZmNfbGxjcF9zb2NrX2dldChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLApAQCAtMTcwNSw2ICYjNDM7MTcyMiw3IEBAIGludCBuZmNfbGxjcF9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG5mY19kZXYgKm5kZXYpCiAJSU5JVF9XT1JLKCZhbXA7bG9jYWwtJmd0O3J4X3dvcmssIG5mY19sbGNwX3J4X3dvcmspOwogCiAJSU5JVF9XT1JLKCZhbXA7bG9jYWwtJmd0O3RpbWVvdXRfd29yaywgbmZjX2xsY3BfdGltZW91dF93b3JrKTsKJiM0MzsJSU5JVF9XT1JLKCZhbXA7bG9jYWwtJmd0O3JlbGVhc2Vfd29yaywgbG9jYWxfcmVsZWFzZV93b3JrKTsKIAogCXJ3bG9ja19pbml0KCZhbXA7bG9jYWwtJmd0O3NvY2tldHMubG9jayk7CiAJcndsb2NrX2luaXQoJmFtcDtsb2NhbC0mZ3Q7Y29ubmVjdGluZ19zb2NrZXRzLmxvY2spOwpAQCAtMTc0OCwxMCAmIzQzOzE3NjYsMjMgQEAgdm9pZCBuZmNfbGxjcF91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmZjX2RldiAqZGV2KQogCiBpbnQgX19pbml0IG5mY19sbGNwX2luaXQodm9pZCkKIHsKLQlyZXR1cm4gbmZjX2xsY3Bfc29ja19pbml0KCk7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CWxsY3Bfd3EgPSBhbGxvY193b3JrcXVldWUoJiMzNDtuZmNfbGxjcF93cSYjMzQ7LCAwLCAwKTsKJiM0MzsJaWYgKCFsbGNwX3dxKQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CXJldCA9IG5mY19sbGNwX3NvY2tfaW5pdCgpOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQlkZXN0cm95X3dvcmtxdWV1ZShsbGNwX3dxKTsKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIHZvaWQgbmZjX2xsY3BfZXhpdCh2b2lkKQogewogCW5mY19sbGNwX3NvY2tfZXhpdCgpOwomIzQzOwlkZXN0cm95X3dvcmtxdWV1ZShsbGNwX3dxKTsKIH0KZGlmZiAtLWdpdCBhL25ldC9uZmMvbGxjcF9zb2NrLmMgYi9uZXQvbmZjL2xsY3Bfc29jay5jCmluZGV4IDU1NThkOGE0ZDQ4YjMuLmNlNjg3NWViNThmYmMgMTAwNjQ0Ci0tLSBhL25ldC9uZmMvbGxjcF9zb2NrLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25mYy9sbGNwX3NvY2suYwpAQCAtMzkyLDExICYjNDM7MzkyLDEyIEBAIHZvaWQgbmZjX2xsY3BfYWNjZXB0X3VubGluayhzdHJ1Y3Qgc29jayAqc2spCiAKIAlwcl9kZWJ1ZygmIzM0O3N0YXRlICVkXG4mIzM0Oywgc2stJmd0O3NrX3N0YXRlKTsKIAotCWxpc3RfZGVsX2luaXQoJmFtcDtsbGNwX3NvY2stJmd0O2FjY2VwdF9xdWV1ZSk7Ci0Jc2tfYWNjZXB0cV9yZW1vdmVkKGxsY3Bfc29jay0mZ3Q7cGFyZW50KTsKLQlsbGNwX3NvY2stJmd0O3BhcmVudCA9IE5VTEw7Ci0KLQlzb2NrX3B1dChzayk7CiYjNDM7CWlmIChsbGNwX3NvY2stJmd0O3BhcmVudCkgewomIzQzOwkJbGlzdF9kZWxfaW5pdCgmYW1wO2xsY3Bfc29jay0mZ3Q7YWNjZXB0X3F1ZXVlKTsKJiM0MzsJCXNrX2FjY2VwdHFfcmVtb3ZlZChsbGNwX3NvY2stJmd0O3BhcmVudCk7CiYjNDM7CQlsbGNwX3NvY2stJmd0O3BhcmVudCA9IE5VTEw7CiYjNDM7CQlzb2NrX3B1dChzayk7CiYjNDM7CX0KIH0KIAogdm9pZCBuZmNfbGxjcF9hY2NlcHRfZW5xdWV1ZShzdHJ1Y3Qgc29jayAqcGFyZW50LCBzdHJ1Y3Qgc29jayAqc2spCkBAIC00MjMsMTIgJiM0Mzs0MjQsMjAgQEAgc3RydWN0IHNvY2sgKm5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlKHN0cnVjdCBzb2NrICpwYXJlbnQsCiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobHNrLCBuLCAmYW1wO2xsY3BfcGFyZW50LSZndDthY2NlcHRfcXVldWUsCiAJCQkJIGFjY2VwdF9xdWV1ZSkgewomIzQzOwkJc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbDsKJiM0MzsKIAkJc2sgPSAmYW1wO2xzay0mZ3Q7c2s7Ci0JCWxvY2tfc29jayhzayk7CiYjNDM7CQlsb2NrX3NvY2tfbmVzdGVkKHNrLCBTSU5HTEVfREVQVEhfTkVTVElORyk7CiAKIAkJaWYgKHNrLSZndDtza19zdGF0ZSA9PSBMTENQX0NMT1NFRCkgewotCQkJcmVsZWFzZV9zb2NrKHNrKTsKJiM0MzsJCQlsb2NhbCA9IG5mY19sbGNwX3NvY2soc2spLSZndDtsb2NhbDsKJiM0MzsKIAkJCW5mY19sbGNwX2FjY2VwdF91bmxpbmsoc2spOwomIzQzOwkJCWlmIChsb2NhbCkKJiM0MzsJCQkJbmZjX2xsY3Bfc29ja191bmxpbmsoJmFtcDtsb2NhbC0mZ3Q7c29ja2V0cywgc2spOwomIzQzOwkJCXNvY2tfb3JwaGFuKHNrKTsKJiM0MzsJCQlyZWxlYXNlX3NvY2soc2spOwomIzQzOwkJCXNvY2tfcHV0KHNrKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKQEAgLTQ2NCw3ICYjNDM7NDczLDcgQEAgc3RhdGljIGludCBsbGNwX3NvY2tfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssCiAKIAlwcl9kZWJ1ZygmIzM0O3BhcmVudCAlcFxuJiMzNDssIHNrKTsKIAotCWxvY2tfc29ja19uZXN0ZWQoc2ssIFNJTkdMRV9ERVBUSF9ORVNUSU5HKTsKJiM0MzsJbG9ja19zb2NrKHNrKTsKIAogCWlmIChzay0mZ3Q7c2tfc3RhdGUgIT0gTExDUF9MSVNURU4pIHsKIAkJcmV0ID0gLUVCQURGRDsKQEAgLTQ5MCw3ICYjNDM7NDk5LDEyIEBAIHN0YXRpYyBpbnQgbGxjcF9zb2NrX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLAogCiAJCXJlbGVhc2Vfc29jayhzayk7CiAJCXRpbWVvID0gc2NoZWR1bGVfdGltZW91dCh0aW1lbyk7Ci0JCWxvY2tfc29ja19uZXN0ZWQoc2ssIFNJTkdMRV9ERVBUSF9ORVNUSU5HKTsKJiM0MzsJCWxvY2tfc29jayhzayk7CiYjNDM7CiYjNDM7CQlpZiAoc2stJmd0O3NrX3N0YXRlICE9IExMQ1BfTElTVEVOKSB7CiYjNDM7CQkJcmV0ID0gLUVCQURGRDsKJiM0MzsJCQlicmVhazsKJiM0MzsJCX0KIAl9CiAJX19zZXRfY3VycmVudF9zdGF0ZShUQVNLX1JVTk5JTkcpOwogCXJlbW92ZV93YWl0X3F1ZXVlKHNrX3NsZWVwKHNrKSwgJmFtcDt3YWl0KTsKQEAgLTYyOSwxMyAmIzQzOzY0MywyNCBAQCBzdGF0aWMgaW50IGxsY3Bfc29ja19yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spCiAKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGxzaywgbiwgJmFtcDtsbGNwX3NvY2stJmd0O2FjY2VwdF9xdWV1ZSwKIAkJCQkJIGFjY2VwdF9xdWV1ZSkgewomIzQzOwkJCWJvb2wgcHV0X2NyZWF0aW9uID0gZmFsc2U7CiYjNDM7CiAJCQlhY2NlcHRfc2sgPSAmYW1wO2xzay0mZ3Q7c2s7Ci0JCQlsb2NrX3NvY2soYWNjZXB0X3NrKTsKJiM0MzsJCQlsb2NrX3NvY2tfbmVzdGVkKGFjY2VwdF9zaywgU0lOR0xFX0RFUFRIX05FU1RJTkcpOwogCi0JCQluZmNfbGxjcF9zZW5kX2Rpc2Nvbm5lY3QobHNrKTsKLQkJCW5mY19sbGNwX2FjY2VwdF91bmxpbmsoYWNjZXB0X3NrKTsKJiM0MzsJCQlpZiAobmZjX2xsY3Bfc29jayhhY2NlcHRfc2spLSZndDtwYXJlbnQgPT0gc2spIHsKJiM0MzsJCQkJbmZjX2xsY3Bfc2VuZF9kaXNjb25uZWN0KGxzayk7CiYjNDM7CQkJCW5mY19sbGNwX2FjY2VwdF91bmxpbmsoYWNjZXB0X3NrKTsKJiM0MzsJCQkJbmZjX2xsY3Bfc29ja191bmxpbmsoJmFtcDtsb2NhbC0mZ3Q7c29ja2V0cywgYWNjZXB0X3NrKTsKJiM0MzsKJiM0MzsJCQkJYWNjZXB0X3NrLSZndDtza19zdGF0ZSA9IExMQ1BfQ0xPU0VEOwomIzQzOwkJCQlzb2NrX29ycGhhbihhY2NlcHRfc2spOwomIzQzOwkJCQlwdXRfY3JlYXRpb24gPSB0cnVlOwomIzQzOwkJCX0KIAogCQkJcmVsZWFzZV9zb2NrKGFjY2VwdF9zayk7CiYjNDM7CQkJaWYgKHB1dF9jcmVhdGlvbikKJiM0MzsJCQkJc29ja19wdXQoYWNjZXB0X3NrKTsgLyogY3JlYXRpb24gcmVmICovCiAJCX0KIAl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA4OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2MzQKCQkJCQkJCW91dHB1dDogMTU2CgkJCQkJCQl0aG91Z2h0czogNTU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE5GQyBMTENQIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGp1c3QgcmV2aWV3ZWQgdGhpcyBwYXRjaCBmb3IgdGhlIE5GQyBMTENQIHN1YnN5c3RlbS4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgaXQmIzM5O3MgZm9jdXNlZCBvbiBzb21lIGNydWNpYWwsIGJ1dCB2ZXJ5IHRhcmdldGVkLCBmaXhlcy4gSXQmIzM5O3MgZXNzZW50aWFsbHkgYSBkZWVwIGRpdmUgaW50byBzb2NrZXQgbGlmZWN5Y2xlIG1hbmFnZW1lbnQsIHBhcnRpY3VsYXJseSBhcm91bmQgbG9ja2luZywgcmVmZXJlbmNlIGNvdW50aW5nLCBhbmQgY2xlYW51cCBwcm9jZWR1cmVzLiBJdCYjMzk7cyB0b3VjaGluZyBjb3JlIGZ1bmN0aW9uczogYG5mY19sbGNwX3NvY2tldF9yZWxlYXNlYCwgYG5mY19sbGNwX2xvY2FsX2dldGAsIGBsb2NhbF9yZWxlYXNlX3dvcmtgLCBgbmZjX2xsY3BfbG9jYWxfcHV0YCwgIGBuZmNfbGxjcF9hY2NlcHRfdW5saW5rYCwgYG5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlYCwgYGxsY3Bfc29ja19hY2NlcHRgLCBhbmQgYGxsY3Bfc29ja19yZWxlYXNlYCAoYWxvbmcgd2l0aCBgbmZjX2xsY3BfaW5pdGAgYW5kIGBuZmNfbGxjcF9leGl0YCkuIEkgY2FuIHNlZSB0aGF0IHRoZXJlJiMzOTtzIGEgZGVmaW5pdGUgZm9jdXMgb24gaW1wcm92aW5nIHNvY2tldCBzdGF0ZSBoYW5kbGluZyBhbmQgcHJldmVudGluZyBpc3N1ZXMgbGlrZSB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zIGFuZCByYWNlIGNvbmRpdGlvbnMuIFRoZSBpbnRyb2R1Y3Rpb24gb2YgYHJlbGVhc2Vfd29ya2AgYW5kIGRlZmVycmluZyB0aGUgbG9jYWwgcmVsZWFzZSB0byBhIHdvcmtxdWV1ZSAoYGxsY3Bfd3FgKSBpcyBhIGtleSBpbmRpY2F0b3Igb2YgdGhpcyByZWZhY3RvcmluZy4gSSYjMzk7bSBhbHNvIHNlZWluZyBzb21lIGltcHJvdmVtZW50cyB0byB0aGUgbG9ja2luZyBwcmltaXRpdmVzIGJlaW5nIHVzZWQsIHN1Y2ggYXMgYGxvY2tfc29ja2Agb3ZlciBgbG9ja19zb2NrX25lc3RlZGAgaW4gYGxsY3Bfc29ja19hY2NlcHRgLgoKTXkgbWFpbiBjb25jZXJuLCBhcyBhbHdheXMsIGlzIHdoZXRoZXIgdGhlc2UgY2hhbmdlcyBpbnRyb2R1Y2UgYW55IG5ldyBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMsIHBhcnRpY3VsYXJseSByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGV4cG9zdXJlIG9yIGluZm9ybWF0aW9uIGxlYWtzLiBIb3dldmVyLCBhZnRlciBjYXJlZnVsIHJldmlldywgSSYjMzk7bSBjb25maWRlbnQgdGhhdCB0aGUgYW5zd2VyIGlzIG5vLiBUaGlzIHBhdGNoIGRvZXNuJiMzOTt0IGludm9sdmUgYW55IGNoYW5nZXMgdGhhdCBpbnZvbHZlIHNlbmRpbmcgbmV3IGRhdGEgc3RydWN0dXJlcyB0byB1c2VyIHNwYWNlLCBub3IgaXMgaXQgcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSwgb3IgYWxsb2NhdGluZyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHVuaW5pdGlhbGl6ZWQgZmllbGRzLiBUaGVzZSBtb2RpZmljYXRpb25zIGFyZSBwdXJlbHkgY29udHJvbCBwbGFuZSBvcGVyYXRpb25zLCBjb25jZXJuZWQgd2l0aCB0aGUgbWFuYWdlbWVudCBvZiBzb2NrZXQgbGlmZWN5Y2xlLiBUaGVyZSYjMzk7cyBubyBkYXRhIGNvcHlpbmcgb3IgZGlyZWN0IGludGVyYWN0aW9uIHdpdGggdXNlciBzcGFjZSBkYXRhIHRoYXQgd291bGQgbmVjZXNzaXRhdGUgS01TQU4uCgpTaW5jZSB0aGVzZSBjaGFuZ2VzIGFyZSBhbGwgYWJvdXQgc29ja2V0IHN0YXRlLCBsb2NraW5nLCBhbmQgcmVmZXJlbmNlIGNvdW50aW5nLCBzdGFuZGFyZCBLQVNBTiwgTE9DS0RFUCwgYW5kIEtDU0FOIHNob3VsZCBiZSBwZXJmZWN0bHkgYWRlcXVhdGUgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBpc3N1ZXMg4oCTIHN1Y2ggYXMgVUFGLCBkZWFkbG9ja3MsIG9yIGRhdGEgcmFjZXMuIFRoZXJlZm9yZSwgSSYjMzk7bSBjb21mb3J0YWJsZSBzZXR0aW5nIGBOZWVkc0tNU0FOPWZhbHNlYCBmb3IgdGhpcyBvbmUuIEkmIzM5O3ZlIGRvdWJsZS1jaGVja2VkIHRoYXQgYWxsIG9mIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMsIGluY2x1ZGluZyB0aGUgb25lcyBtZW50aW9uZWQgYWJvdmUsIGRvbiYjMzk7dCBkZWFsIHdpdGggY29weWluZyBkYXRhIHRvIHVzZXIgc3BhY2Ugb3IgcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhleSBhcmUgY2xlYXJseSBmb2N1c2VkIG9uIGludGVybmFsIHNvY2tldCBzdGF0ZSBtYW5hZ2VtZW50IGFuZCBjbGVhbnVwLiBTbywgS01TQU4gaXMgbm90IG5lY2Vzc2FyeSBoZXJlLiBJIHRoaW5rIHRoaXMgcGF0Y2ggaXMgYSBnb29kIHNldCBvZiBmaXhlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDg6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGxvY2tpbmcsIHJlZmVyZW5jZSBjb3VudGluZywgYW5kIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBpbiB0aGUgTkZDIExMQ1Agc29ja2V0IGxheWVyLiBJdCBpbnRyb2R1Y2VzIGEgd29ya3F1ZXVlIGZvciBkZWZlcnJlZCBjbGVhbnVwLCBtb2RpZmllcyBzb2NrZXQgbGlzdCBwb3BwaW5nIHRvIGF2b2lkIGRlYWRsb2NrcyBvciBVQUYsIGFuZCBmaXhlcyBhY2NlcHQgcXVldWUgaGFuZGxpbmcuIFRoZXJlIGFyZSBubyBjaGFuZ2VzIHRvIGRhdGEgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm8gbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucywgYW5kIG5vIG1vZGlmaWNhdGlvbnMgdG8gZGF0YSBsZW5ndGhzIG9yIGJvdW5kcyBjaGVja3MgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBidWdzIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcyAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIG9yIGRlYWRsb2Nrcykgd291bGQgYmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBMT0NLREVQLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgbG9ja2luZywgcmVmZXJlbmNlIGNvdW50aW5nLCBhbmQgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGluIHRoZSBORkMgTExDUCBzb2NrZXQgbGF5ZXIuIEl0IGludHJvZHVjZXMgYSB3b3JrcXVldWUgZm9yIGRlZmVycmVkIGNsZWFudXAsIG1vZGlmaWVzIHNvY2tldCBsaXN0IHBvcHBpbmcgdG8gYXZvaWQgZGVhZGxvY2tzIG9yIFVBRiwgYW5kIGZpeGVzIGFjY2VwdCBxdWV1ZSBoYW5kbGluZy4gVGhlcmUgYXJlIG5vIGNoYW5nZXMgdG8gZGF0YSBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBubyBuZXcgYnVmZmVyIGFsbG9jYXRpb25zLCBhbmQgbm8gbW9kaWZpY2F0aW9ucyB0byBkYXRhIGxlbmd0aHMgb3IgYm91bmRzIGNoZWNrcyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgb3IgZGVhZGxvY2tzKSB3b3VsZCBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDg6MzUuMTk0MjYyNTA2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODY3NzEwMzYwNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZDXCIsXG4gICAgXCJORkNfRElHSVRBTFwiLFxuICAgIFwiTkZDX1NJTVwiLFxuICAgIFwiTkZDX05DSVwiLFxuICAgIFwiTkZDX1ZJUlRVQUxfTkNJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZjX2xsY3BfbG9jYWxfcHV0XCIsXG4gICAgXCJuZmNfbGxjcF9hY2NlcHRfZGVxdWV1ZVwiLFxuICAgIFwibmZjX2xsY3BfYWNjZXB0X3VubGlua1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGxvY2tpbmcsIHJlZmVyZW5jZSBjb3VudGluZywgYW5kIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBpbiB0aGUgTkZDIExMQ1Agc29ja2V0IGxheWVyLiBJdCBpbnRyb2R1Y2VzIGEgd29ya3F1ZXVlIGZvciBkZWZlcnJlZCBjbGVhbnVwLCBtb2RpZmllcyBzb2NrZXQgbGlzdCBwb3BwaW5nIHRvIGF2b2lkIGRlYWRsb2NrcyBvciBVQUYsIGFuZCBmaXhlcyBhY2NlcHQgcXVldWUgaGFuZGxpbmcuIFRoZXJlIGFyZSBubyBjaGFuZ2VzIHRvIGRhdGEgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm8gbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucywgYW5kIG5vIG1vZGlmaWNhdGlvbnMgdG8gZGF0YSBsZW5ndGhzIG9yIGJvdW5kcyBjaGVja3MgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBidWdzIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcyAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIG9yIGRlYWRsb2Nrcykgd291bGQgYmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBMT0NLREVQLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbG9naWMgb2YgTkZDIExMQ1Agc29ja2V0cywgZml4aW5nIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIG9yIHVzZS1hZnRlci1mcmVlIGR1cmluZyBzb2NrZXQgcmVsZWFzZSBhbmQgYWNjZXB0IHF1ZXVlIGhhbmRsaW5nLiBJdCBpbnRyb2R1Y2VzIGEgd29ya3F1ZXVlIGZvciBsb2NhbCByZWxlYXNlIGFuZCBtb2RpZmllcyBzb2NrZXQgbG9ja2luZy4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHN0YW5kYXJkIHNvY2tldCBBUElzIHdoZW4gTkZDIGlzIGVuYWJsZWQuIFZpcnR1YWwgTkZDIGRldmljZXMgKE5GQ19TSU0sIE5GQ19WSVJUVUFMX05DSSkgY2FuIGJlIHVzZWQgdG8gdHJpZ2dlciB0aGlzIGNvZGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDg6MzUuMTk0MjY3MjU2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzYwMDUwNzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDE5MjAzMjNiOTU0MGZjYjY4ZWI4ZTFmYWVkMDI0NDcwODI2MTZlZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyAyNiAwODo0ODozMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmZjL2xsY3AuaCBiL25ldC9uZmMvbGxjcC5oXFxuaW5kZXggZDgzNDVlZDU3Yzk1NC4uMjNhZTdhMDExMmQzNyAxMDA2NDRcXG4tLS0gYS9uZXQvbmZjL2xsY3AuaFxcbisrKyBiL25ldC9uZmMvbGxjcC5oXFxuQEAgLTkxLDYgKzkxLDcgQEAgc3RydWN0IG5mY19sbGNwX2xvY2FsIHtcXG4gXFx0c3RydWN0IGhsaXN0X2hlYWQgcGVuZGluZ19zZHJlcXM7XFxuIFxcdHN0cnVjdCB0aW1lcl9saXN0IHNkcmVxX3RpbWVyO1xcbiBcXHRzdHJ1Y3Qgd29ya19zdHJ1Y3Qgc2RyZXFfdGltZW91dF93b3JrO1xcbitcXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgcmVsZWFzZV93b3JrO1xcbiBcXHR1OCBzZHJlcV9uZXh0X3RpZDtcXG4gXFxuIFxcdC8qIHNvY2tldHMgYXJyYXkgKi9cXG5kaWZmIC0tZ2l0IGEvbmV0L25mYy9sbGNwX2NvcmUuYyBiL25ldC9uZmMvbGxjcF9jb3JlLmNcXG5pbmRleCBiZDYzNjFlMmVmYTRmLi4yYzJkYmMxMjUzMWVjIDEwMDY0NFxcbi0tLSBhL25ldC9uZmMvbGxjcF9jb3JlLmNcXG4rKysgYi9uZXQvbmZjL2xsY3BfY29yZS5jXFxuQEAgLTIwLDYgKzIwLDggQEAgc3RhdGljIExJU1RfSEVBRChsbGNwX2RldmljZXMpO1xcbiAvKiBQcm90ZWN0cyBsbGNwX2RldmljZXMgbGlzdCAqL1xcbiBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKGxsY3BfZGV2aWNlc19sb2NrKTtcXG4gXFxuK3N0YXRpYyBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqbGxjcF93cTtcXG4rXFxuIHN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3NrYihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG4gXFxuIHZvaWQgbmZjX2xsY3Bfc29ja19saW5rKHN0cnVjdCBsbGNwX3NvY2tfbGlzdCAqbCwgc3RydWN0IHNvY2sgKnNrKVxcbkBAIC02MywyMSArNjUsMzMgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfc29ja2V0X3B1cmdlKHN0cnVjdCBuZmNfbGxjcF9zb2NrICpzb2NrKVxcbiBcXHR9XFxuIH1cXG4gXFxuK3N0YXRpYyBzdHJ1Y3Qgc29jayAqbmZjX2xsY3Bfc29ja19saXN0X3BvcChzdHJ1Y3QgbGxjcF9zb2NrX2xpc3QgKmwpXFxuK3tcXG4rXFx0c3RydWN0IHNvY2sgKnNrO1xcbitcXG4rXFx0d3JpdGVfbG9jayhcXHUwMDI2bC1cXHUwMDNlbG9jayk7XFxuK1xcdHNrID0gc2tfaGVhZChcXHUwMDI2bC1cXHUwMDNlaGVhZCk7XFxuK1xcdGlmIChzaykge1xcbitcXHRcXHRzb2NrX2hvbGQoc2spO1xcbitcXHRcXHRza19kZWxfbm9kZV9pbml0KHNrKTtcXG4rXFx0fVxcbitcXHR3cml0ZV91bmxvY2soXFx1MDAyNmwtXFx1MDAzZWxvY2spO1xcbitcXG4rXFx0cmV0dXJuIHNrO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBuZmNfbGxjcF9zb2NrZXRfcmVsZWFzZShzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBib29sIGRldmljZSxcXG4gXFx0XFx0XFx0XFx0ICAgIGludCBlcnIpXFxuIHtcXG4gXFx0c3RydWN0IHNvY2sgKnNrO1xcbi1cXHRzdHJ1Y3QgaGxpc3Rfbm9kZSAqdG1wO1xcbiBcXHRzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqbGxjcF9zb2NrO1xcbiBcXG4gXFx0c2tiX3F1ZXVlX3B1cmdlKFxcdTAwMjZsb2NhbC1cXHUwMDNldHhfcXVldWUpO1xcbiBcXG4tXFx0d3JpdGVfbG9jayhcXHUwMDI2bG9jYWwtXFx1MDAzZXNvY2tldHMubG9jayk7XFxuLVxcbi1cXHRza19mb3JfZWFjaF9zYWZlKHNrLCB0bXAsIFxcdTAwMjZsb2NhbC1cXHUwMDNlc29ja2V0cy5oZWFkKSB7XFxuK1xcdHdoaWxlICgoc2sgPSBuZmNfbGxjcF9zb2NrX2xpc3RfcG9wKFxcdTAwMjZsb2NhbC1cXHUwMDNlc29ja2V0cykpKSB7XFxuIFxcdFxcdGxsY3Bfc29jayA9IG5mY19sbGNwX3NvY2soc2spO1xcbiBcXG4tXFx0XFx0YmhfbG9ja19zb2NrKHNrKTtcXG4rXFx0XFx0bG9ja19zb2NrKHNrKTtcXG4gXFxuIFxcdFxcdG5mY19sbGNwX3NvY2tldF9wdXJnZShsbGNwX3NvY2spO1xcbiBcXG5AQCAtOTEsMTcgKzEwNSwyNyBAQCBzdGF0aWMgdm9pZCBuZmNfbGxjcF9zb2NrZXRfcmVsZWFzZShzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBib29sIGRldmljZSxcXG4gXFx0XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGxzaywgbixcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZsbGNwX3NvY2stXFx1MDAzZWFjY2VwdF9xdWV1ZSxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IGFjY2VwdF9xdWV1ZSkge1xcbi1cXHRcXHRcXHRcXHRhY2NlcHRfc2sgPSBcXHUwMDI2bHNrLVxcdTAwM2VzaztcXG4tXFx0XFx0XFx0XFx0YmhfbG9ja19zb2NrKGFjY2VwdF9zayk7XFxuLVxcbi1cXHRcXHRcXHRcXHRuZmNfbGxjcF9hY2NlcHRfdW5saW5rKGFjY2VwdF9zayk7XFxuK1xcdFxcdFxcdFxcdGJvb2wgcHV0X2NyZWF0aW9uID0gZmFsc2U7XFxuIFxcbi1cXHRcXHRcXHRcXHRpZiAoZXJyKVxcbi1cXHRcXHRcXHRcXHRcXHRhY2NlcHRfc2stXFx1MDAzZXNrX2VyciA9IGVycjtcXG4tXFx0XFx0XFx0XFx0YWNjZXB0X3NrLVxcdTAwM2Vza19zdGF0ZSA9IExMQ1BfQ0xPU0VEO1xcbi1cXHRcXHRcXHRcXHRhY2NlcHRfc2stXFx1MDAzZXNrX3N0YXRlX2NoYW5nZShzayk7XFxuK1xcdFxcdFxcdFxcdGFjY2VwdF9zayA9IFxcdTAwMjZsc2stXFx1MDAzZXNrO1xcbitcXHRcXHRcXHRcXHRsb2NrX3NvY2tfbmVzdGVkKGFjY2VwdF9zayxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0IFNJTkdMRV9ERVBUSF9ORVNUSU5HKTtcXG4rXFxuK1xcdFxcdFxcdFxcdGlmIChuZmNfbGxjcF9zb2NrKGFjY2VwdF9zayktXFx1MDAzZXBhcmVudCA9PSBzaykge1xcbitcXHRcXHRcXHRcXHRcXHRuZmNfbGxjcF9hY2NlcHRfdW5saW5rKGFjY2VwdF9zayk7XFxuK1xcdFxcdFxcdFxcdFxcdG5mY19sbGNwX3NvY2tfdW5saW5rKFxcdTAwMjZsb2NhbC1cXHUwMDNlc29ja2V0cywgYWNjZXB0X3NrKTtcXG4rXFxuK1xcdFxcdFxcdFxcdFxcdGlmIChlcnIpXFxuK1xcdFxcdFxcdFxcdFxcdFxcdGFjY2VwdF9zay1cXHUwMDNlc2tfZXJyID0gZXJyO1xcbitcXHRcXHRcXHRcXHRcXHRhY2NlcHRfc2stXFx1MDAzZXNrX3N0YXRlID0gTExDUF9DTE9TRUQ7XFxuK1xcdFxcdFxcdFxcdFxcdGFjY2VwdF9zay1cXHUwMDNlc2tfc3RhdGVfY2hhbmdlKGFjY2VwdF9zayk7XFxuK1xcdFxcdFxcdFxcdFxcdHNvY2tfb3JwaGFuKGFjY2VwdF9zayk7XFxuK1xcdFxcdFxcdFxcdFxcdHB1dF9jcmVhdGlvbiA9IHRydWU7XFxuK1xcdFxcdFxcdFxcdH1cXG4gXFxuLVxcdFxcdFxcdFxcdGJoX3VubG9ja19zb2NrKGFjY2VwdF9zayk7XFxuK1xcdFxcdFxcdFxcdHJlbGVhc2Vfc29jayhhY2NlcHRfc2spO1xcbitcXHRcXHRcXHRcXHRpZiAocHV0X2NyZWF0aW9uKVxcbitcXHRcXHRcXHRcXHRcXHRzb2NrX3B1dChhY2NlcHRfc2spOyAvKiBjcmVhdGlvbiByZWYgKi9cXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuIFxcbkBAIC0xMTAsMjMgKzEzNCwxOCBAQCBzdGF0aWMgdm9pZCBuZmNfbGxjcF9zb2NrZXRfcmVsZWFzZShzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBib29sIGRldmljZSxcXG4gXFx0XFx0c2stXFx1MDAzZXNrX3N0YXRlID0gTExDUF9DTE9TRUQ7XFxuIFxcdFxcdHNrLVxcdTAwM2Vza19zdGF0ZV9jaGFuZ2Uoc2spO1xcbiBcXG4tXFx0XFx0YmhfdW5sb2NrX3NvY2soc2spO1xcbi1cXG4tXFx0XFx0c2tfZGVsX25vZGVfaW5pdChzayk7XFxuK1xcdFxcdHJlbGVhc2Vfc29jayhzayk7XFxuK1xcdFxcdHNvY2tfcHV0KHNrKTtcXG4gXFx0fVxcbiBcXG4tXFx0d3JpdGVfdW5sb2NrKFxcdTAwMjZsb2NhbC1cXHUwMDNlc29ja2V0cy5sb2NrKTtcXG4tXFxuIFxcdC8qIElmIHdlIHN0aWxsIGhhdmUgYSBkZXZpY2UsIHdlIGtlZXAgdGhlIFJBVyBzb2NrZXRzIGFsaXZlICovXFxuIFxcdGlmIChkZXZpY2UgPT0gdHJ1ZSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4tXFx0d3JpdGVfbG9jayhcXHUwMDI2bG9jYWwtXFx1MDAzZXJhd19zb2NrZXRzLmxvY2spO1xcbi1cXG4tXFx0c2tfZm9yX2VhY2hfc2FmZShzaywgdG1wLCBcXHUwMDI2bG9jYWwtXFx1MDAzZXJhd19zb2NrZXRzLmhlYWQpIHtcXG4rXFx0d2hpbGUgKChzayA9IG5mY19sbGNwX3NvY2tfbGlzdF9wb3AoXFx1MDAyNmxvY2FsLVxcdTAwM2VyYXdfc29ja2V0cykpKSB7XFxuIFxcdFxcdGxsY3Bfc29jayA9IG5mY19sbGNwX3NvY2soc2spO1xcbiBcXG4tXFx0XFx0YmhfbG9ja19zb2NrKHNrKTtcXG4rXFx0XFx0bG9ja19zb2NrKHNrKTtcXG4gXFxuIFxcdFxcdG5mY19sbGNwX3NvY2tldF9wdXJnZShsbGNwX3NvY2spO1xcbiBcXG5AQCAtMTM1LDI2ICsxNTQsMjAgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2Uoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgYm9vbCBkZXZpY2UsXFxuIFxcdFxcdHNrLVxcdTAwM2Vza19zdGF0ZSA9IExMQ1BfQ0xPU0VEO1xcbiBcXHRcXHRzay1cXHUwMDNlc2tfc3RhdGVfY2hhbmdlKHNrKTtcXG4gXFxuLVxcdFxcdGJoX3VubG9ja19zb2NrKHNrKTtcXG4tXFxuLVxcdFxcdHNrX2RlbF9ub2RlX2luaXQoc2spO1xcbitcXHRcXHRyZWxlYXNlX3NvY2soc2spO1xcbitcXHRcXHRzb2NrX3B1dChzayk7XFxuIFxcdH1cXG4tXFxuLVxcdHdyaXRlX3VubG9jayhcXHUwMDI2bG9jYWwtXFx1MDAzZXJhd19zb2NrZXRzLmxvY2spO1xcbiB9XFxuIFxcbiBzdGF0aWMgc3RydWN0IG5mY19sbGNwX2xvY2FsICpuZmNfbGxjcF9sb2NhbF9nZXQoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbClcXG4ge1xcbi1cXHQvKiBTaW5jZSB1c2luZyBuZmNfbGxjcF9sb2NhbCBtYXkgcmVzdWx0IGluIHVzYWdlIG9mIG5mY19kZXYsIHdoZW5ldmVyXFxuLVxcdCAqIHdlIGhvbGQgYSByZWZlcmVuY2UgdG8gbG9jYWwsIHdlIGFsc28gbmVlZCB0byBob2xkIGEgcmVmZXJlbmNlIHRvXFxuLVxcdCAqIHRoZSBkZXZpY2UgdG8gYXZvaWQgVUFGLlxcbi1cXHQgKi9cXG4tXFx0aWYgKCFuZmNfZ2V0X2RldmljZShsb2NhbC1cXHUwMDNlZGV2LVxcdTAwM2VpZHgpKVxcbitcXHRpZiAoIWxvY2FsKVxcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFxuLVxcdGtyZWZfZ2V0KFxcdTAwMjZsb2NhbC1cXHUwMDNlcmVmKTtcXG4rXFx0aWYgKGtyZWZfZ2V0X3VubGVzc196ZXJvKFxcdTAwMjZsb2NhbC1cXHUwMDNlcmVmKSlcXG4rXFx0XFx0cmV0dXJuIGxvY2FsO1xcbiBcXG4tXFx0cmV0dXJuIGxvY2FsO1xcbitcXHRyZXR1cm4gTlVMTDtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgbG9jYWxfY2xlYW51cChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsKVxcbkBAIC0xNzIsMzAgKzE4NSwzNCBAQCBzdGF0aWMgdm9pZCBsb2NhbF9jbGVhbnVwKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwpXFxuIFxcdG5mY19sbGNwX2ZyZWVfc2RwX3Rsdl9saXN0KFxcdTAwMjZsb2NhbC1cXHUwMDNlcGVuZGluZ19zZHJlcXMpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBsb2NhbF9yZWxlYXNlKHN0cnVjdCBrcmVmICpyZWYpXFxuK3N0YXRpYyB2b2lkIGxvY2FsX3JlbGVhc2Vfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIHtcXG4gXFx0c3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbDtcXG4rXFx0c3RydWN0IG5mY19kZXYgKmRldjtcXG4gXFxuLVxcdGxvY2FsID0gY29udGFpbmVyX29mKHJlZiwgc3RydWN0IG5mY19sbGNwX2xvY2FsLCByZWYpO1xcbitcXHRsb2NhbCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwsIHJlbGVhc2Vfd29yayk7XFxuK1xcdGRldiA9IGxvY2FsLVxcdTAwM2VkZXY7XFxuIFxcbiBcXHRsb2NhbF9jbGVhbnVwKGxvY2FsKTtcXG4gXFx0a2ZyZWUobG9jYWwpO1xcbitcXHRuZmNfcHV0X2RldmljZShkZXYpO1xcbiB9XFxuIFxcbi1pbnQgbmZjX2xsY3BfbG9jYWxfcHV0KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwpXFxuK3N0YXRpYyB2b2lkIGxvY2FsX3JlbGVhc2Uoc3RydWN0IGtyZWYgKnJlZilcXG4ge1xcbi1cXHRzdHJ1Y3QgbmZjX2RldiAqZGV2O1xcbi1cXHRpbnQgcmV0O1xcbitcXHRzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsO1xcbiBcXG4tXFx0aWYgKGxvY2FsID09IE5VTEwpXFxuLVxcdFxcdHJldHVybiAwO1xcbitcXHRsb2NhbCA9IGNvbnRhaW5lcl9vZihyZWYsIHN0cnVjdCBuZmNfbGxjcF9sb2NhbCwgcmVmKTtcXG4gXFxuLVxcdGRldiA9IGxvY2FsLVxcdTAwM2VkZXY7XFxuK1xcdHF1ZXVlX3dvcmsobGxjcF93cSwgXFx1MDAyNmxvY2FsLVxcdTAwM2VyZWxlYXNlX3dvcmspO1xcbit9XFxuIFxcbi1cXHRyZXQgPSBrcmVmX3B1dChcXHUwMDI2bG9jYWwtXFx1MDAzZXJlZiwgbG9jYWxfcmVsZWFzZSk7XFxuLVxcdG5mY19wdXRfZGV2aWNlKGRldik7XFxuK2ludCBuZmNfbGxjcF9sb2NhbF9wdXQoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbClcXG4re1xcbitcXHRpZiAoIWxvY2FsKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4gXFxuLVxcdHJldHVybiByZXQ7XFxuK1xcdHJldHVybiBrcmVmX3B1dChcXHUwMDI2bG9jYWwtXFx1MDAzZXJlZiwgbG9jYWxfcmVsZWFzZSk7XFxuIH1cXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqbmZjX2xsY3Bfc29ja19nZXQoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCxcXG5AQCAtMTcwNSw2ICsxNzIyLDcgQEAgaW50IG5mY19sbGNwX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmZjX2RldiAqbmRldilcXG4gXFx0SU5JVF9XT1JLKFxcdTAwMjZsb2NhbC1cXHUwMDNlcnhfd29yaywgbmZjX2xsY3Bfcnhfd29yayk7XFxuIFxcbiBcXHRJTklUX1dPUksoXFx1MDAyNmxvY2FsLVxcdTAwM2V0aW1lb3V0X3dvcmssIG5mY19sbGNwX3RpbWVvdXRfd29yayk7XFxuK1xcdElOSVRfV09SSyhcXHUwMDI2bG9jYWwtXFx1MDAzZXJlbGVhc2Vfd29yaywgbG9jYWxfcmVsZWFzZV93b3JrKTtcXG4gXFxuIFxcdHJ3bG9ja19pbml0KFxcdTAwMjZsb2NhbC1cXHUwMDNlc29ja2V0cy5sb2NrKTtcXG4gXFx0cndsb2NrX2luaXQoXFx1MDAyNmxvY2FsLVxcdTAwM2Vjb25uZWN0aW5nX3NvY2tldHMubG9jayk7XFxuQEAgLTE3NDgsMTAgKzE3NjYsMjMgQEAgdm9pZCBuZmNfbGxjcF91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmZjX2RldiAqZGV2KVxcbiBcXG4gaW50IF9faW5pdCBuZmNfbGxjcF9pbml0KHZvaWQpXFxuIHtcXG4tXFx0cmV0dXJuIG5mY19sbGNwX3NvY2tfaW5pdCgpO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0bGxjcF93cSA9IGFsbG9jX3dvcmtxdWV1ZShcXFwibmZjX2xsY3Bfd3FcXFwiLCAwLCAwKTtcXG4rXFx0aWYgKCFsbGNwX3dxKVxcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFxuK1xcdHJldCA9IG5mY19sbGNwX3NvY2tfaW5pdCgpO1xcbitcXHRpZiAocmV0KSB7XFxuK1xcdFxcdGRlc3Ryb3lfd29ya3F1ZXVlKGxsY3Bfd3EpO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4gdm9pZCBuZmNfbGxjcF9leGl0KHZvaWQpXFxuIHtcXG4gXFx0bmZjX2xsY3Bfc29ja19leGl0KCk7XFxuK1xcdGRlc3Ryb3lfd29ya3F1ZXVlKGxsY3Bfd3EpO1xcbiB9XFxuZGlmZiAtLWdpdCBhL25ldC9uZmMvbGxjcF9zb2NrLmMgYi9uZXQvbmZjL2xsY3Bfc29jay5jXFxuaW5kZXggNTU1OGQ4YTRkNDhiMy4uY2U2ODc1ZWI1OGZiYyAxMDA2NDRcXG4tLS0gYS9uZXQvbmZjL2xsY3Bfc29jay5jXFxuKysrIGIvbmV0L25mYy9sbGNwX3NvY2suY1xcbkBAIC0zOTIsMTEgKzM5MiwxMiBAQCB2b2lkIG5mY19sbGNwX2FjY2VwdF91bmxpbmsoc3RydWN0IHNvY2sgKnNrKVxcbiBcXG4gXFx0cHJfZGVidWcoXFxcInN0YXRlICVkXFxcXG5cXFwiLCBzay1cXHUwMDNlc2tfc3RhdGUpO1xcbiBcXG4tXFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2bGxjcF9zb2NrLVxcdTAwM2VhY2NlcHRfcXVldWUpO1xcbi1cXHRza19hY2NlcHRxX3JlbW92ZWQobGxjcF9zb2NrLVxcdTAwM2VwYXJlbnQpO1xcbi1cXHRsbGNwX3NvY2stXFx1MDAzZXBhcmVudCA9IE5VTEw7XFxuLVxcbi1cXHRzb2NrX3B1dChzayk7XFxuK1xcdGlmIChsbGNwX3NvY2stXFx1MDAzZXBhcmVudCkge1xcbitcXHRcXHRsaXN0X2RlbF9pbml0KFxcdTAwMjZsbGNwX3NvY2stXFx1MDAzZWFjY2VwdF9xdWV1ZSk7XFxuK1xcdFxcdHNrX2FjY2VwdHFfcmVtb3ZlZChsbGNwX3NvY2stXFx1MDAzZXBhcmVudCk7XFxuK1xcdFxcdGxsY3Bfc29jay1cXHUwMDNlcGFyZW50ID0gTlVMTDtcXG4rXFx0XFx0c29ja19wdXQoc2spO1xcbitcXHR9XFxuIH1cXG4gXFxuIHZvaWQgbmZjX2xsY3BfYWNjZXB0X2VucXVldWUoc3RydWN0IHNvY2sgKnBhcmVudCwgc3RydWN0IHNvY2sgKnNrKVxcbkBAIC00MjMsMTIgKzQyNCwyMCBAQCBzdHJ1Y3Qgc29jayAqbmZjX2xsY3BfYWNjZXB0X2RlcXVldWUoc3RydWN0IHNvY2sgKnBhcmVudCxcXG4gXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShsc2ssIG4sIFxcdTAwMjZsbGNwX3BhcmVudC1cXHUwMDNlYWNjZXB0X3F1ZXVlLFxcbiBcXHRcXHRcXHRcXHQgYWNjZXB0X3F1ZXVlKSB7XFxuK1xcdFxcdHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWw7XFxuK1xcbiBcXHRcXHRzayA9IFxcdTAwMjZsc2stXFx1MDAzZXNrO1xcbi1cXHRcXHRsb2NrX3NvY2soc2spO1xcbitcXHRcXHRsb2NrX3NvY2tfbmVzdGVkKHNrLCBTSU5HTEVfREVQVEhfTkVTVElORyk7XFxuIFxcbiBcXHRcXHRpZiAoc2stXFx1MDAzZXNrX3N0YXRlID09IExMQ1BfQ0xPU0VEKSB7XFxuLVxcdFxcdFxcdHJlbGVhc2Vfc29jayhzayk7XFxuK1xcdFxcdFxcdGxvY2FsID0gbmZjX2xsY3Bfc29jayhzayktXFx1MDAzZWxvY2FsO1xcbitcXG4gXFx0XFx0XFx0bmZjX2xsY3BfYWNjZXB0X3VubGluayhzayk7XFxuK1xcdFxcdFxcdGlmIChsb2NhbClcXG4rXFx0XFx0XFx0XFx0bmZjX2xsY3Bfc29ja191bmxpbmsoXFx1MDAyNmxvY2FsLVxcdTAwM2Vzb2NrZXRzLCBzayk7XFxuK1xcdFxcdFxcdHNvY2tfb3JwaGFuKHNrKTtcXG4rXFx0XFx0XFx0cmVsZWFzZV9zb2NrKHNrKTtcXG4rXFx0XFx0XFx0c29ja19wdXQoc2spO1xcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0fVxcbiBcXG5AQCAtNDY0LDcgKzQ3Myw3IEBAIHN0YXRpYyBpbnQgbGxjcF9zb2NrX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLFxcbiBcXG4gXFx0cHJfZGVidWcoXFxcInBhcmVudCAlcFxcXFxuXFxcIiwgc2spO1xcbiBcXG4tXFx0bG9ja19zb2NrX25lc3RlZChzaywgU0lOR0xFX0RFUFRIX05FU1RJTkcpO1xcbitcXHRsb2NrX3NvY2soc2spO1xcbiBcXG4gXFx0aWYgKHNrLVxcdTAwM2Vza19zdGF0ZSAhPSBMTENQX0xJU1RFTikge1xcbiBcXHRcXHRyZXQgPSAtRUJBREZEO1xcbkBAIC00OTAsNyArNDk5LDEyIEBAIHN0YXRpYyBpbnQgbGxjcF9zb2NrX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLFxcbiBcXG4gXFx0XFx0cmVsZWFzZV9zb2NrKHNrKTtcXG4gXFx0XFx0dGltZW8gPSBzY2hlZHVsZV90aW1lb3V0KHRpbWVvKTtcXG4tXFx0XFx0bG9ja19zb2NrX25lc3RlZChzaywgU0lOR0xFX0RFUFRIX05FU1RJTkcpO1xcbitcXHRcXHRsb2NrX3NvY2soc2spO1xcbitcXG4rXFx0XFx0aWYgKHNrLVxcdTAwM2Vza19zdGF0ZSAhPSBMTENQX0xJU1RFTikge1xcbitcXHRcXHRcXHRyZXQgPSAtRUJBREZEO1xcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcdF9fc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19SVU5OSU5HKTtcXG4gXFx0cmVtb3ZlX3dhaXRfcXVldWUoc2tfc2xlZXAoc2spLCBcXHUwMDI2d2FpdCk7XFxuQEAgLTYyOSwxMyArNjQzLDI0IEBAIHN0YXRpYyBpbnQgbGxjcF9zb2NrX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcXG4gXFxuIFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShsc2ssIG4sIFxcdTAwMjZsbGNwX3NvY2stXFx1MDAzZWFjY2VwdF9xdWV1ZSxcXG4gXFx0XFx0XFx0XFx0XFx0IGFjY2VwdF9xdWV1ZSkge1xcbitcXHRcXHRcXHRib29sIHB1dF9jcmVhdGlvbiA9IGZhbHNlO1xcbitcXG4gXFx0XFx0XFx0YWNjZXB0X3NrID0gXFx1MDAyNmxzay1cXHUwMDNlc2s7XFxuLVxcdFxcdFxcdGxvY2tfc29jayhhY2NlcHRfc2spO1xcbitcXHRcXHRcXHRsb2NrX3NvY2tfbmVzdGVkKGFjY2VwdF9zaywgU0lOR0xFX0RFUFRIX05FU1RJTkcpO1xcbiBcXG4tXFx0XFx0XFx0bmZjX2xsY3Bfc2VuZF9kaXNjb25uZWN0KGxzayk7XFxuLVxcdFxcdFxcdG5mY19sbGNwX2FjY2VwdF91bmxpbmsoYWNjZXB0X3NrKTtcXG4rXFx0XFx0XFx0aWYgKG5mY19sbGNwX3NvY2soYWNjZXB0X3NrKS1cXHUwMDNlcGFyZW50ID09IHNrKSB7XFxuK1xcdFxcdFxcdFxcdG5mY19sbGNwX3NlbmRfZGlzY29ubmVjdChsc2spO1xcbitcXHRcXHRcXHRcXHRuZmNfbGxjcF9hY2NlcHRfdW5saW5rKGFjY2VwdF9zayk7XFxuK1xcdFxcdFxcdFxcdG5mY19sbGNwX3NvY2tfdW5saW5rKFxcdTAwMjZsb2NhbC1cXHUwMDNlc29ja2V0cywgYWNjZXB0X3NrKTtcXG4rXFxuK1xcdFxcdFxcdFxcdGFjY2VwdF9zay1cXHUwMDNlc2tfc3RhdGUgPSBMTENQX0NMT1NFRDtcXG4rXFx0XFx0XFx0XFx0c29ja19vcnBoYW4oYWNjZXB0X3NrKTtcXG4rXFx0XFx0XFx0XFx0cHV0X2NyZWF0aW9uID0gdHJ1ZTtcXG4rXFx0XFx0XFx0fVxcbiBcXG4gXFx0XFx0XFx0cmVsZWFzZV9zb2NrKGFjY2VwdF9zayk7XFxuK1xcdFxcdFxcdGlmIChwdXRfY3JlYXRpb24pXFxuK1xcdFxcdFxcdFxcdHNvY2tfcHV0KGFjY2VwdF9zayk7IC8qIGNyZWF0aW9uIHJlZiAqL1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA4OjQ4OjM2LjU1NDkzODZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3NTYwNzAzNzQxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19ESUdJVEFMXCIsXG4gICAgXCJORkNfU0lNXCIsXG4gICAgXCJORkNfTkNJXCIsXG4gICAgXCJORkNfVklSVFVBTF9OQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZmNfbGxjcF9sb2NhbF9wdXRcIixcbiAgICBcIm5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlXCIsXG4gICAgXCJuZmNfbGxjcF9hY2NlcHRfdW5saW5rXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbG9naWMgb2YgTkZDIExMQ1Agc29ja2V0cywgZml4aW5nIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIG9yIHVzZS1hZnRlci1mcmVlIGR1cmluZyBzb2NrZXQgcmVsZWFzZSBhbmQgYWNjZXB0IHF1ZXVlIGhhbmRsaW5nLiBJdCBpbnRyb2R1Y2VzIGEgd29ya3F1ZXVlIGZvciBsb2NhbCByZWxlYXNlIGFuZCBtb2RpZmllcyBzb2NrZXQgbG9ja2luZy4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHN0YW5kYXJkIHNvY2tldCBBUElzIHdoZW4gTkZDIGlzIGVuYWJsZWQuIFZpcnR1YWwgTkZDIGRldmljZXMgKE5GQ19TSU0sIE5GQ19WSVJUVUFMX05DSSkgY2FuIGJlIHVzZWQgdG8gdHJpZ2dlciB0aGlzIGNvZGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDE5MjAzMjNiOTU0MGZjYjY4ZWI4ZTFmYWVkMDI0NDcwODI2MTZlZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDI2IDA4OjQ4OjMzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25mYy9sbGNwLmggYi9uZXQvbmZjL2xsY3AuaFxuaW5kZXggZDgzNDVlZDU3Yzk1NC4uMjNhZTdhMDExMmQzNyAxMDA2NDRcbi0tLSBhL25ldC9uZmMvbGxjcC5oXG4rKysgYi9uZXQvbmZjL2xsY3AuaFxuQEAgLTkxLDYgKzkxLDcgQEAgc3RydWN0IG5mY19sbGNwX2xvY2FsIHtcbiBcdHN0cnVjdCBobGlzdF9oZWFkIHBlbmRpbmdfc2RyZXFzO1xuIFx0c3RydWN0IHRpbWVyX2xpc3Qgc2RyZXFfdGltZXI7XG4gXHRzdHJ1Y3Qgd29ya19zdHJ1Y3Qgc2RyZXFfdGltZW91dF93b3JrO1xuK1x0c3RydWN0IHdvcmtfc3RydWN0IHJlbGVhc2Vfd29yaztcbiBcdHU4IHNkcmVxX25leHRfdGlkO1xuIFxuIFx0Lyogc29ja2V0cyBhcnJheSAqL1xuZGlmZiAtLWdpdCBhL25ldC9uZmMvbGxjcF9jb3JlLmMgYi9uZXQvbmZjL2xsY3BfY29yZS5jXG5pbmRleCBiZDYzNjFlMmVmYTRmLi4yYzJkYmMxMjUzMWVjIDEwMDY0NFxuLS0tIGEvbmV0L25mYy9sbGNwX2NvcmUuY1xuKysrIGIvbmV0L25mYy9sbGNwX2NvcmUuY1xuQEAgLTIwLDYgKzIwLDggQEAgc3RhdGljIExJU1RfSEVBRChsbGNwX2RldmljZXMpO1xuIC8qIFByb3RlY3RzIGxsY3BfZGV2aWNlcyBsaXN0ICovXG4gc3RhdGljIERFRklORV9TUElOTE9DSyhsbGNwX2RldmljZXNfbG9jayk7XG4gXG4rc3RhdGljIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpsbGNwX3dxO1xuK1xuIHN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3NrYihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbiBcbiB2b2lkIG5mY19sbGNwX3NvY2tfbGluayhzdHJ1Y3QgbGxjcF9zb2NrX2xpc3QgKmwsIHN0cnVjdCBzb2NrICpzaylcbkBAIC02MywyMSArNjUsMzMgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfc29ja2V0X3B1cmdlKHN0cnVjdCBuZmNfbGxjcF9zb2NrICpzb2NrKVxuIFx0fVxuIH1cbiBcbitzdGF0aWMgc3RydWN0IHNvY2sgKm5mY19sbGNwX3NvY2tfbGlzdF9wb3Aoc3RydWN0IGxsY3Bfc29ja19saXN0ICpsKVxuK3tcbitcdHN0cnVjdCBzb2NrICpzaztcbitcbitcdHdyaXRlX2xvY2soXHUwMDI2bC1cdTAwM2Vsb2NrKTtcbitcdHNrID0gc2tfaGVhZChcdTAwMjZsLVx1MDAzZWhlYWQpO1xuK1x0aWYgKHNrKSB7XG4rXHRcdHNvY2tfaG9sZChzayk7XG4rXHRcdHNrX2RlbF9ub2RlX2luaXQoc2spO1xuK1x0fVxuK1x0d3JpdGVfdW5sb2NrKFx1MDAyNmwtXHUwMDNlbG9jayk7XG4rXG4rXHRyZXR1cm4gc2s7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIG5mY19sbGNwX3NvY2tldF9yZWxlYXNlKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIGJvb2wgZGV2aWNlLFxuIFx0XHRcdFx0ICAgIGludCBlcnIpXG4ge1xuIFx0c3RydWN0IHNvY2sgKnNrO1xuLVx0c3RydWN0IGhsaXN0X25vZGUgKnRtcDtcbiBcdHN0cnVjdCBuZmNfbGxjcF9zb2NrICpsbGNwX3NvY2s7XG4gXG4gXHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2bG9jYWwtXHUwMDNldHhfcXVldWUpO1xuIFxuLVx0d3JpdGVfbG9jayhcdTAwMjZsb2NhbC1cdTAwM2Vzb2NrZXRzLmxvY2spO1xuLVxuLVx0c2tfZm9yX2VhY2hfc2FmZShzaywgdG1wLCBcdTAwMjZsb2NhbC1cdTAwM2Vzb2NrZXRzLmhlYWQpIHtcbitcdHdoaWxlICgoc2sgPSBuZmNfbGxjcF9zb2NrX2xpc3RfcG9wKFx1MDAyNmxvY2FsLVx1MDAzZXNvY2tldHMpKSkge1xuIFx0XHRsbGNwX3NvY2sgPSBuZmNfbGxjcF9zb2NrKHNrKTtcbiBcbi1cdFx0YmhfbG9ja19zb2NrKHNrKTtcbitcdFx0bG9ja19zb2NrKHNrKTtcbiBcbiBcdFx0bmZjX2xsY3Bfc29ja2V0X3B1cmdlKGxsY3Bfc29jayk7XG4gXG5AQCAtOTEsMTcgKzEwNSwyNyBAQCBzdGF0aWMgdm9pZCBuZmNfbGxjcF9zb2NrZXRfcmVsZWFzZShzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBib29sIGRldmljZSxcbiBcdFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobHNrLCBuLFxuIFx0XHRcdFx0XHRcdCBcdTAwMjZsbGNwX3NvY2stXHUwMDNlYWNjZXB0X3F1ZXVlLFxuIFx0XHRcdFx0XHRcdCBhY2NlcHRfcXVldWUpIHtcbi1cdFx0XHRcdGFjY2VwdF9zayA9IFx1MDAyNmxzay1cdTAwM2Vzaztcbi1cdFx0XHRcdGJoX2xvY2tfc29jayhhY2NlcHRfc2spO1xuLVxuLVx0XHRcdFx0bmZjX2xsY3BfYWNjZXB0X3VubGluayhhY2NlcHRfc2spO1xuK1x0XHRcdFx0Ym9vbCBwdXRfY3JlYXRpb24gPSBmYWxzZTtcbiBcbi1cdFx0XHRcdGlmIChlcnIpXG4tXHRcdFx0XHRcdGFjY2VwdF9zay1cdTAwM2Vza19lcnIgPSBlcnI7XG4tXHRcdFx0XHRhY2NlcHRfc2stXHUwMDNlc2tfc3RhdGUgPSBMTENQX0NMT1NFRDtcbi1cdFx0XHRcdGFjY2VwdF9zay1cdTAwM2Vza19zdGF0ZV9jaGFuZ2Uoc2spO1xuK1x0XHRcdFx0YWNjZXB0X3NrID0gXHUwMDI2bHNrLVx1MDAzZXNrO1xuK1x0XHRcdFx0bG9ja19zb2NrX25lc3RlZChhY2NlcHRfc2ssXG4rXHRcdFx0XHRcdFx0IFNJTkdMRV9ERVBUSF9ORVNUSU5HKTtcbitcbitcdFx0XHRcdGlmIChuZmNfbGxjcF9zb2NrKGFjY2VwdF9zayktXHUwMDNlcGFyZW50ID09IHNrKSB7XG4rXHRcdFx0XHRcdG5mY19sbGNwX2FjY2VwdF91bmxpbmsoYWNjZXB0X3NrKTtcbitcdFx0XHRcdFx0bmZjX2xsY3Bfc29ja191bmxpbmsoXHUwMDI2bG9jYWwtXHUwMDNlc29ja2V0cywgYWNjZXB0X3NrKTtcbitcbitcdFx0XHRcdFx0aWYgKGVycilcbitcdFx0XHRcdFx0XHRhY2NlcHRfc2stXHUwMDNlc2tfZXJyID0gZXJyO1xuK1x0XHRcdFx0XHRhY2NlcHRfc2stXHUwMDNlc2tfc3RhdGUgPSBMTENQX0NMT1NFRDtcbitcdFx0XHRcdFx0YWNjZXB0X3NrLVx1MDAzZXNrX3N0YXRlX2NoYW5nZShhY2NlcHRfc2spO1xuK1x0XHRcdFx0XHRzb2NrX29ycGhhbihhY2NlcHRfc2spO1xuK1x0XHRcdFx0XHRwdXRfY3JlYXRpb24gPSB0cnVlO1xuK1x0XHRcdFx0fVxuIFxuLVx0XHRcdFx0YmhfdW5sb2NrX3NvY2soYWNjZXB0X3NrKTtcbitcdFx0XHRcdHJlbGVhc2Vfc29jayhhY2NlcHRfc2spO1xuK1x0XHRcdFx0aWYgKHB1dF9jcmVhdGlvbilcbitcdFx0XHRcdFx0c29ja19wdXQoYWNjZXB0X3NrKTsgLyogY3JlYXRpb24gcmVmICovXG4gXHRcdFx0fVxuIFx0XHR9XG4gXG5AQCAtMTEwLDIzICsxMzQsMTggQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2Uoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgYm9vbCBkZXZpY2UsXG4gXHRcdHNrLVx1MDAzZXNrX3N0YXRlID0gTExDUF9DTE9TRUQ7XG4gXHRcdHNrLVx1MDAzZXNrX3N0YXRlX2NoYW5nZShzayk7XG4gXG4tXHRcdGJoX3VubG9ja19zb2NrKHNrKTtcbi1cbi1cdFx0c2tfZGVsX25vZGVfaW5pdChzayk7XG4rXHRcdHJlbGVhc2Vfc29jayhzayk7XG4rXHRcdHNvY2tfcHV0KHNrKTtcbiBcdH1cbiBcbi1cdHdyaXRlX3VubG9jayhcdTAwMjZsb2NhbC1cdTAwM2Vzb2NrZXRzLmxvY2spO1xuLVxuIFx0LyogSWYgd2Ugc3RpbGwgaGF2ZSBhIGRldmljZSwgd2Uga2VlcCB0aGUgUkFXIHNvY2tldHMgYWxpdmUgKi9cbiBcdGlmIChkZXZpY2UgPT0gdHJ1ZSlcbiBcdFx0cmV0dXJuO1xuIFxuLVx0d3JpdGVfbG9jayhcdTAwMjZsb2NhbC1cdTAwM2VyYXdfc29ja2V0cy5sb2NrKTtcbi1cbi1cdHNrX2Zvcl9lYWNoX3NhZmUoc2ssIHRtcCwgXHUwMDI2bG9jYWwtXHUwMDNlcmF3X3NvY2tldHMuaGVhZCkge1xuK1x0d2hpbGUgKChzayA9IG5mY19sbGNwX3NvY2tfbGlzdF9wb3AoXHUwMDI2bG9jYWwtXHUwMDNlcmF3X3NvY2tldHMpKSkge1xuIFx0XHRsbGNwX3NvY2sgPSBuZmNfbGxjcF9zb2NrKHNrKTtcbiBcbi1cdFx0YmhfbG9ja19zb2NrKHNrKTtcbitcdFx0bG9ja19zb2NrKHNrKTtcbiBcbiBcdFx0bmZjX2xsY3Bfc29ja2V0X3B1cmdlKGxsY3Bfc29jayk7XG4gXG5AQCAtMTM1LDI2ICsxNTQsMjAgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2Uoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgYm9vbCBkZXZpY2UsXG4gXHRcdHNrLVx1MDAzZXNrX3N0YXRlID0gTExDUF9DTE9TRUQ7XG4gXHRcdHNrLVx1MDAzZXNrX3N0YXRlX2NoYW5nZShzayk7XG4gXG4tXHRcdGJoX3VubG9ja19zb2NrKHNrKTtcbi1cbi1cdFx0c2tfZGVsX25vZGVfaW5pdChzayk7XG4rXHRcdHJlbGVhc2Vfc29jayhzayk7XG4rXHRcdHNvY2tfcHV0KHNrKTtcbiBcdH1cbi1cbi1cdHdyaXRlX3VubG9jayhcdTAwMjZsb2NhbC1cdTAwM2VyYXdfc29ja2V0cy5sb2NrKTtcbiB9XG4gXG4gc3RhdGljIHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbmZjX2xsY3BfbG9jYWxfZ2V0KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwpXG4ge1xuLVx0LyogU2luY2UgdXNpbmcgbmZjX2xsY3BfbG9jYWwgbWF5IHJlc3VsdCBpbiB1c2FnZSBvZiBuZmNfZGV2LCB3aGVuZXZlclxuLVx0ICogd2UgaG9sZCBhIHJlZmVyZW5jZSB0byBsb2NhbCwgd2UgYWxzbyBuZWVkIHRvIGhvbGQgYSByZWZlcmVuY2UgdG9cbi1cdCAqIHRoZSBkZXZpY2UgdG8gYXZvaWQgVUFGLlxuLVx0ICovXG4tXHRpZiAoIW5mY19nZXRfZGV2aWNlKGxvY2FsLVx1MDAzZWRldi1cdTAwM2VpZHgpKVxuK1x0aWYgKCFsb2NhbClcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4tXHRrcmVmX2dldChcdTAwMjZsb2NhbC1cdTAwM2VyZWYpO1xuK1x0aWYgKGtyZWZfZ2V0X3VubGVzc196ZXJvKFx1MDAyNmxvY2FsLVx1MDAzZXJlZikpXG4rXHRcdHJldHVybiBsb2NhbDtcbiBcbi1cdHJldHVybiBsb2NhbDtcbitcdHJldHVybiBOVUxMO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBsb2NhbF9jbGVhbnVwKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwpXG5AQCAtMTcyLDMwICsxODUsMzQgQEAgc3RhdGljIHZvaWQgbG9jYWxfY2xlYW51cChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsKVxuIFx0bmZjX2xsY3BfZnJlZV9zZHBfdGx2X2xpc3QoXHUwMDI2bG9jYWwtXHUwMDNlcGVuZGluZ19zZHJlcXMpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBsb2NhbF9yZWxlYXNlKHN0cnVjdCBrcmVmICpyZWYpXG4rc3RhdGljIHZvaWQgbG9jYWxfcmVsZWFzZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiB7XG4gXHRzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsO1xuK1x0c3RydWN0IG5mY19kZXYgKmRldjtcbiBcbi1cdGxvY2FsID0gY29udGFpbmVyX29mKHJlZiwgc3RydWN0IG5mY19sbGNwX2xvY2FsLCByZWYpO1xuK1x0bG9jYWwgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG5mY19sbGNwX2xvY2FsLCByZWxlYXNlX3dvcmspO1xuK1x0ZGV2ID0gbG9jYWwtXHUwMDNlZGV2O1xuIFxuIFx0bG9jYWxfY2xlYW51cChsb2NhbCk7XG4gXHRrZnJlZShsb2NhbCk7XG4rXHRuZmNfcHV0X2RldmljZShkZXYpO1xuIH1cbiBcbi1pbnQgbmZjX2xsY3BfbG9jYWxfcHV0KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwpXG4rc3RhdGljIHZvaWQgbG9jYWxfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqcmVmKVxuIHtcbi1cdHN0cnVjdCBuZmNfZGV2ICpkZXY7XG4tXHRpbnQgcmV0O1xuK1x0c3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbDtcbiBcbi1cdGlmIChsb2NhbCA9PSBOVUxMKVxuLVx0XHRyZXR1cm4gMDtcbitcdGxvY2FsID0gY29udGFpbmVyX29mKHJlZiwgc3RydWN0IG5mY19sbGNwX2xvY2FsLCByZWYpO1xuIFxuLVx0ZGV2ID0gbG9jYWwtXHUwMDNlZGV2O1xuK1x0cXVldWVfd29yayhsbGNwX3dxLCBcdTAwMjZsb2NhbC1cdTAwM2VyZWxlYXNlX3dvcmspO1xuK31cbiBcbi1cdHJldCA9IGtyZWZfcHV0KFx1MDAyNmxvY2FsLVx1MDAzZXJlZiwgbG9jYWxfcmVsZWFzZSk7XG4tXHRuZmNfcHV0X2RldmljZShkZXYpO1xuK2ludCBuZmNfbGxjcF9sb2NhbF9wdXQoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbClcbit7XG4rXHRpZiAoIWxvY2FsKVxuK1x0XHRyZXR1cm4gMDtcbiBcbi1cdHJldHVybiByZXQ7XG4rXHRyZXR1cm4ga3JlZl9wdXQoXHUwMDI2bG9jYWwtXHUwMDNlcmVmLCBsb2NhbF9yZWxlYXNlKTtcbiB9XG4gXG4gc3RhdGljIHN0cnVjdCBuZmNfbGxjcF9zb2NrICpuZmNfbGxjcF9zb2NrX2dldChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLFxuQEAgLTE3MDUsNiArMTcyMiw3IEBAIGludCBuZmNfbGxjcF9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG5mY19kZXYgKm5kZXYpXG4gXHRJTklUX1dPUksoXHUwMDI2bG9jYWwtXHUwMDNlcnhfd29yaywgbmZjX2xsY3Bfcnhfd29yayk7XG4gXG4gXHRJTklUX1dPUksoXHUwMDI2bG9jYWwtXHUwMDNldGltZW91dF93b3JrLCBuZmNfbGxjcF90aW1lb3V0X3dvcmspO1xuK1x0SU5JVF9XT1JLKFx1MDAyNmxvY2FsLVx1MDAzZXJlbGVhc2Vfd29yaywgbG9jYWxfcmVsZWFzZV93b3JrKTtcbiBcbiBcdHJ3bG9ja19pbml0KFx1MDAyNmxvY2FsLVx1MDAzZXNvY2tldHMubG9jayk7XG4gXHRyd2xvY2tfaW5pdChcdTAwMjZsb2NhbC1cdTAwM2Vjb25uZWN0aW5nX3NvY2tldHMubG9jayk7XG5AQCAtMTc0OCwxMCArMTc2NiwyMyBAQCB2b2lkIG5mY19sbGNwX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBuZmNfZGV2ICpkZXYpXG4gXG4gaW50IF9faW5pdCBuZmNfbGxjcF9pbml0KHZvaWQpXG4ge1xuLVx0cmV0dXJuIG5mY19sbGNwX3NvY2tfaW5pdCgpO1xuK1x0aW50IHJldDtcbitcbitcdGxsY3Bfd3EgPSBhbGxvY193b3JrcXVldWUoXCJuZmNfbGxjcF93cVwiLCAwLCAwKTtcbitcdGlmICghbGxjcF93cSlcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4rXG4rXHRyZXQgPSBuZmNfbGxjcF9zb2NrX2luaXQoKTtcbitcdGlmIChyZXQpIHtcbitcdFx0ZGVzdHJveV93b3JrcXVldWUobGxjcF93cSk7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gdm9pZCBuZmNfbGxjcF9leGl0KHZvaWQpXG4ge1xuIFx0bmZjX2xsY3Bfc29ja19leGl0KCk7XG4rXHRkZXN0cm95X3dvcmtxdWV1ZShsbGNwX3dxKTtcbiB9XG5kaWZmIC0tZ2l0IGEvbmV0L25mYy9sbGNwX3NvY2suYyBiL25ldC9uZmMvbGxjcF9zb2NrLmNcbmluZGV4IDU1NThkOGE0ZDQ4YjMuLmNlNjg3NWViNThmYmMgMTAwNjQ0XG4tLS0gYS9uZXQvbmZjL2xsY3Bfc29jay5jXG4rKysgYi9uZXQvbmZjL2xsY3Bfc29jay5jXG5AQCAtMzkyLDExICszOTIsMTIgQEAgdm9pZCBuZmNfbGxjcF9hY2NlcHRfdW5saW5rKHN0cnVjdCBzb2NrICpzaylcbiBcbiBcdHByX2RlYnVnKFwic3RhdGUgJWRcXG5cIiwgc2stXHUwMDNlc2tfc3RhdGUpO1xuIFxuLVx0bGlzdF9kZWxfaW5pdChcdTAwMjZsbGNwX3NvY2stXHUwMDNlYWNjZXB0X3F1ZXVlKTtcbi1cdHNrX2FjY2VwdHFfcmVtb3ZlZChsbGNwX3NvY2stXHUwMDNlcGFyZW50KTtcbi1cdGxsY3Bfc29jay1cdTAwM2VwYXJlbnQgPSBOVUxMO1xuLVxuLVx0c29ja19wdXQoc2spO1xuK1x0aWYgKGxsY3Bfc29jay1cdTAwM2VwYXJlbnQpIHtcbitcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZsbGNwX3NvY2stXHUwMDNlYWNjZXB0X3F1ZXVlKTtcbitcdFx0c2tfYWNjZXB0cV9yZW1vdmVkKGxsY3Bfc29jay1cdTAwM2VwYXJlbnQpO1xuK1x0XHRsbGNwX3NvY2stXHUwMDNlcGFyZW50ID0gTlVMTDtcbitcdFx0c29ja19wdXQoc2spO1xuK1x0fVxuIH1cbiBcbiB2b2lkIG5mY19sbGNwX2FjY2VwdF9lbnF1ZXVlKHN0cnVjdCBzb2NrICpwYXJlbnQsIHN0cnVjdCBzb2NrICpzaylcbkBAIC00MjMsMTIgKzQyNCwyMCBAQCBzdHJ1Y3Qgc29jayAqbmZjX2xsY3BfYWNjZXB0X2RlcXVldWUoc3RydWN0IHNvY2sgKnBhcmVudCxcbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShsc2ssIG4sIFx1MDAyNmxsY3BfcGFyZW50LVx1MDAzZWFjY2VwdF9xdWV1ZSxcbiBcdFx0XHRcdCBhY2NlcHRfcXVldWUpIHtcbitcdFx0c3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbDtcbitcbiBcdFx0c2sgPSBcdTAwMjZsc2stXHUwMDNlc2s7XG4tXHRcdGxvY2tfc29jayhzayk7XG4rXHRcdGxvY2tfc29ja19uZXN0ZWQoc2ssIFNJTkdMRV9ERVBUSF9ORVNUSU5HKTtcbiBcbiBcdFx0aWYgKHNrLVx1MDAzZXNrX3N0YXRlID09IExMQ1BfQ0xPU0VEKSB7XG4tXHRcdFx0cmVsZWFzZV9zb2NrKHNrKTtcbitcdFx0XHRsb2NhbCA9IG5mY19sbGNwX3NvY2soc2spLVx1MDAzZWxvY2FsO1xuK1xuIFx0XHRcdG5mY19sbGNwX2FjY2VwdF91bmxpbmsoc2spO1xuK1x0XHRcdGlmIChsb2NhbClcbitcdFx0XHRcdG5mY19sbGNwX3NvY2tfdW5saW5rKFx1MDAyNmxvY2FsLVx1MDAzZXNvY2tldHMsIHNrKTtcbitcdFx0XHRzb2NrX29ycGhhbihzayk7XG4rXHRcdFx0cmVsZWFzZV9zb2NrKHNrKTtcbitcdFx0XHRzb2NrX3B1dChzayk7XG4gXHRcdFx0Y29udGludWU7XG4gXHRcdH1cbiBcbkBAIC00NjQsNyArNDczLDcgQEAgc3RhdGljIGludCBsbGNwX3NvY2tfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssXG4gXG4gXHRwcl9kZWJ1ZyhcInBhcmVudCAlcFxcblwiLCBzayk7XG4gXG4tXHRsb2NrX3NvY2tfbmVzdGVkKHNrLCBTSU5HTEVfREVQVEhfTkVTVElORyk7XG4rXHRsb2NrX3NvY2soc2spO1xuIFxuIFx0aWYgKHNrLVx1MDAzZXNrX3N0YXRlICE9IExMQ1BfTElTVEVOKSB7XG4gXHRcdHJldCA9IC1FQkFERkQ7XG5AQCAtNDkwLDcgKzQ5OSwxMiBAQCBzdGF0aWMgaW50IGxsY3Bfc29ja19hY2NlcHQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2tldCAqbmV3c29jayxcbiBcbiBcdFx0cmVsZWFzZV9zb2NrKHNrKTtcbiBcdFx0dGltZW8gPSBzY2hlZHVsZV90aW1lb3V0KHRpbWVvKTtcbi1cdFx0bG9ja19zb2NrX25lc3RlZChzaywgU0lOR0xFX0RFUFRIX05FU1RJTkcpO1xuK1x0XHRsb2NrX3NvY2soc2spO1xuK1xuK1x0XHRpZiAoc2stXHUwMDNlc2tfc3RhdGUgIT0gTExDUF9MSVNURU4pIHtcbitcdFx0XHRyZXQgPSAtRUJBREZEO1xuK1x0XHRcdGJyZWFrO1xuK1x0XHR9XG4gXHR9XG4gXHRfX3NldF9jdXJyZW50X3N0YXRlKFRBU0tfUlVOTklORyk7XG4gXHRyZW1vdmVfd2FpdF9xdWV1ZShza19zbGVlcChzayksIFx1MDAyNndhaXQpO1xuQEAgLTYyOSwxMyArNjQzLDI0IEBAIHN0YXRpYyBpbnQgbGxjcF9zb2NrX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcbiBcbiBcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGxzaywgbiwgXHUwMDI2bGxjcF9zb2NrLVx1MDAzZWFjY2VwdF9xdWV1ZSxcbiBcdFx0XHRcdFx0IGFjY2VwdF9xdWV1ZSkge1xuK1x0XHRcdGJvb2wgcHV0X2NyZWF0aW9uID0gZmFsc2U7XG4rXG4gXHRcdFx0YWNjZXB0X3NrID0gXHUwMDI2bHNrLVx1MDAzZXNrO1xuLVx0XHRcdGxvY2tfc29jayhhY2NlcHRfc2spO1xuK1x0XHRcdGxvY2tfc29ja19uZXN0ZWQoYWNjZXB0X3NrLCBTSU5HTEVfREVQVEhfTkVTVElORyk7XG4gXG4tXHRcdFx0bmZjX2xsY3Bfc2VuZF9kaXNjb25uZWN0KGxzayk7XG4tXHRcdFx0bmZjX2xsY3BfYWNjZXB0X3VubGluayhhY2NlcHRfc2spO1xuK1x0XHRcdGlmIChuZmNfbGxjcF9zb2NrKGFjY2VwdF9zayktXHUwMDNlcGFyZW50ID09IHNrKSB7XG4rXHRcdFx0XHRuZmNfbGxjcF9zZW5kX2Rpc2Nvbm5lY3QobHNrKTtcbitcdFx0XHRcdG5mY19sbGNwX2FjY2VwdF91bmxpbmsoYWNjZXB0X3NrKTtcbitcdFx0XHRcdG5mY19sbGNwX3NvY2tfdW5saW5rKFx1MDAyNmxvY2FsLVx1MDAzZXNvY2tldHMsIGFjY2VwdF9zayk7XG4rXG4rXHRcdFx0XHRhY2NlcHRfc2stXHUwMDNlc2tfc3RhdGUgPSBMTENQX0NMT1NFRDtcbitcdFx0XHRcdHNvY2tfb3JwaGFuKGFjY2VwdF9zayk7XG4rXHRcdFx0XHRwdXRfY3JlYXRpb24gPSB0cnVlO1xuK1x0XHRcdH1cbiBcbiBcdFx0XHRyZWxlYXNlX3NvY2soYWNjZXB0X3NrKTtcbitcdFx0XHRpZiAocHV0X2NyZWF0aW9uKVxuK1x0XHRcdFx0c29ja19wdXQoYWNjZXB0X3NrKTsgLyogY3JlYXRpb24gcmVmICovXG4gXHRcdH1cbiBcdH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA4OjQ4OjM2LjU1NDkzOTY0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM4NTMyODA2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5GQyBTdWJzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIGtlcm5lbCBwYXRjaCBpbiBmcm9udCBvZiBtZS4gSXQgbG9va3MgbGlrZSBpdCdzIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgdGhlIE5GQyBzdWJzeXN0ZW0sIGRpZ2dpbmcgaW50byBgbmV0L25mYy9sbGNwX2NvcmUuY2AsIGBuZXQvbmZjL2xsY3AuaGAsIGFuZCBgbmV0L25mYy9sbGNwX3NvY2suY2AuIFNlZW1zIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseSBub3QgYSBjb3NtZXRpYyBvbmUuIFRoZSBiaWdnZXN0IGZsYWcgaXMgdGhlIGludHJvZHVjdGlvbiBvZiB0aGlzIHdvcmtxdWV1ZSwgYGxsY3Bfd3FgLCBzcGVjaWZpY2FsbHkgZm9yIGBsb2NhbF9yZWxlYXNlX3dvcmtgLiBJJ20gc2VlaW5nIGNoYW5nZXMgaW4gaG93IHNvY2tldHMgYXJlIHJlbGVhc2VkIHdpdGggYG5mY19sbGNwX3NvY2tldF9yZWxlYXNlYCB1c2luZyBgbmZjX2xsY3Bfc29ja19saXN0X3BvcGAgYW5kLCBpbXBvcnRhbnRseSwgbmV3IGxvY2tpbmcuIEFsc28sIG1vZGlmaWNhdGlvbnMgaW4gYG5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlYCwgYGxsY3Bfc29ja19hY2NlcHRgLCBhbmQgYGxsY3Bfc29ja19yZWxlYXNlYC4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyBpcyB0b3VjaGluZyBzb21lIGNyaXRpY2FsIGNvbmN1cnJlbmN5IGFzcGVjdHMgb2YgdGhlIExMQ1AgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24uXG5cbk5vdywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgaG93IHRoaXMgd2lsbCBiZWhhdmUgaW4gYSB2aXJ0dWFsaXplZCBjb250ZXh0LiBJIGtub3cgTkZDIGlzIGluaGVyZW50bHkgaGFyZHdhcmUtZGVwZW5kZW50LiBTbywgd2lsbCB0aGlzIGltcGFjdCB0aGUgdGVzdGluZyBvZiB0aGlzIGNoYW5nZT8gSSBoYXZlIHRvIGNvbnNpZGVyIHdoZXRoZXIgdGhlcmUncyBhIHNpbXVsYXRvciwgbGlrZSB0aGUgYG1hYzgwMjExX2h3c2ltYCBlcXVpdmFsZW50LCBhdmFpbGFibGUgZm9yIE5GQy4gVGhlIHJlYWwgaGFyZHdhcmUgbWlnaHQgbm90IGJlIGVhc2lseSBhY2Nlc3NpYmxlIGZvciBhbGwgdGVzdCBzZXR1cHMuIFRpbWUgdG8gc2VlIGlmIHNvbWV0aGluZyBsaWtlIGBuZmNzaW1gIGV4aXN0cy4gSSdsbCBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIHdoYXQgSSBjYW4gdHVybiB1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTYzNywiT3V0cHV0VG9rZW5zIjoxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA4OjQ4OjQyLjk0MDI2OTc3MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzkwNTYzMDIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mY3NpbVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25mYy9NYWtlZmlsZT0xMD1vYmotJChDT05GSUdfTkZDX01FSV9QSFkpXFx0Kz0gbWVpX3BoeS5vXFxuZHJpdmVycy9uZmMvTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX05GQ19TSU0pXFx0XFx0Kz0gbmZjc2ltLm9cXG5kcml2ZXJzL25mYy9NYWtlZmlsZS0xMi1vYmotJChDT05GSUdfTkZDX1BPUlQxMDApXFx0Kz0gcG9ydDEwMC5vXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMC1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMTpzdHJ1Y3QgbmZjc2ltIHtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMi1cXHRzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpuZmNfZGlnaXRhbF9kZXY7XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNi1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozNzpcXHRzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmtfaW47XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mzg6XFx0c3RydWN0IG5mY3NpbV9saW5rICpsaW5rX291dDtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zOS1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTUxLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjUyOnN0cnVjdCBuZmNzaW1fbGluayB7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNTMtXFx0c3RydWN0IG11dGV4IGxvY2s7XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy02NC1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo2NTpzdGF0aWMgc3RydWN0IG5mY3NpbV9saW5rICpuZmNzaW1fbGlua19uZXcodm9pZClcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy02Ni17XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Njc6XFx0c3RydWN0IG5mY3NpbV9saW5rICpsaW5rO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTY4LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjY5OlxcdGxpbmsgPSBremFsbG9jX29iaihzdHJ1Y3QgbmZjc2ltX2xpbmspO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTcwLVxcdGlmICghbGluaylcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTc4LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjc5OnN0YXRpYyB2b2lkIG5mY3NpbV9saW5rX2ZyZWUoc3RydWN0IG5mY3NpbV9saW5rICpsaW5rKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTgwLXtcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTg0LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjg1OnN0YXRpYyB2b2lkIG5mY3NpbV9saW5rX3JlY3Zfd2FrZShzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmspXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtODYte1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtOTAtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6OTE6c3RhdGljIHZvaWQgbmZjc2ltX2xpbmtfc2V0X3NrYihzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmssIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtOTItXFx0XFx0XFx0XFx0dTggcmZfdGVjaCwgdTggbW9kZSlcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTEwMy1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoxMDQ6c3RhdGljIHZvaWQgbmZjc2ltX2xpbmtfcmVjdl9jYW5jZWwoc3RydWN0IG5mY3NpbV9saW5rICpsaW5rKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTEwNS17XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xMTEtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTEyOlxcdG5mY3NpbV9saW5rX3JlY3Zfd2FrZShsaW5rKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xMTMtfVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTExNC1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoxMTU6c3RhdGljIHZvaWQgbmZjc2ltX2xpbmtfc2h1dGRvd24oc3RydWN0IG5mY3NpbV9saW5rICpsaW5rKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTExNi17XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xMjMtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTI0OlxcdG5mY3NpbV9saW5rX3JlY3Zfd2FrZShsaW5rKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xMjUtfVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTEyNi1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoxMjc6c3RhdGljIHN0cnVjdCBza19idWZmICpuZmNzaW1fbGlua19yZWN2X3NrYihzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmssXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTI4LVxcdFxcdFxcdFxcdFxcdCAgICBpbnQgdGltZW91dCwgdTggcmZfdGVjaCwgdTggbW9kZSlcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE2OS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoxNzA6c3RhdGljIHZvaWQgbmZjc2ltX3NlbmRfd3Eoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE3MS17XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTcyOlxcdHN0cnVjdCBuZmNzaW0gKmRldiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmZjc2ltLCBzZW5kX3dvcmsud29yayk7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTczLVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTc2LVxcdCAqIGlzIHRoZSBsaW5rX2luIG9mIHRoZSBwZWVyIGRldmljZS4gVGhlIGV4Y2hhbmdlZCBza2IgaGFzIGFscmVhZHkgYmVlblxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE3NzpcXHQgKiBzdG9yZWQgaW4gdGhlIGRldi1cXHUwMDNlbGlua19vdXQgdGhyb3VnaCBuZmNzaW1fbGlua19zZXRfc2tiKCkuXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTc4LVxcdCAqL1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE3OTpcXHRuZmNzaW1fbGlua19yZWN2X3dha2UoZGV2LVxcdTAwM2VsaW5rX291dCk7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTgwLX1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xODEtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTgyOnN0YXRpYyB2b2lkIG5mY3NpbV9yZWN2X3dxKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xODMte1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE4NDpcXHRzdHJ1Y3QgbmZjc2ltICpkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG5mY3NpbSwgcmVjdl93b3JrKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xODUtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xODYtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTg3OlxcdHNrYiA9IG5mY3NpbV9saW5rX3JlY3Zfc2tiKGRldi1cXHUwMDNlbGlua19pbiwgZGV2LVxcdTAwM2VyZWN2X3RpbWVvdXQsXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTg4LVxcdFxcdFxcdFxcdCAgIGRldi1cXHUwMDNlcmZfdGVjaCwgZGV2LVxcdTAwM2Vtb2RlKTtcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwMC1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyMDE6c3RhdGljIGludCBuZmNzaW1fc2VuZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwMi1cXHRcXHQgICAgICAgdTE2IHRpbWVvdXQsIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNiLCB2b2lkICphcmcpXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjAzLXtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyMDQ6XFx0c3RydWN0IG5mY3NpbSAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjA1LVxcdHU4IGRlbGF5O1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjI2LVxcdGlmIChza2IpIHtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyMjc6XFx0XFx0bmZjc2ltX2xpbmtfc2V0X3NrYihkZXYtXFx1MDAzZWxpbmtfb3V0LCBza2IsIGRldi1cXHUwMDNlcmZfdGVjaCxcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yMjgtXFx0XFx0XFx0XFx0ICAgIGRldi1cXHUwMDNlbW9kZSk7XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yMzktXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjQwOnN0YXRpYyB2b2lkIG5mY3NpbV9hYm9ydF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNDEte1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI0MjpcXHRjb25zdCBzdHJ1Y3QgbmZjc2ltICpkZXYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNDMtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjQ0OlxcdG5mY3NpbV9saW5rX3JlY3ZfY2FuY2VsKGRldi1cXHUwMDNlbGlua19pbik7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjQ1LX1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNDYtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjQ3OnN0YXRpYyBpbnQgbmZjc2ltX3N3aXRjaF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBib29sIG9uKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI0OC17XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjQ5OlxcdHN0cnVjdCBuZmNzaW0gKmRldiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI1MC1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI1NS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyNTY6c3RhdGljIGludCBuZmNzaW1faW5fY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjU3LVxcdFxcdFxcdFxcdFxcdCAgaW50IHR5cGUsIGludCBwYXJhbSlcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNTgte1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI1OTpcXHRzdHJ1Y3QgbmZjc2ltICpkZXYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNjAtXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNzgtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mjc5OnN0YXRpYyBpbnQgbmZjc2ltX2luX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjgwLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgdGltZW91dCxcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI4Mi17XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjgzOlxcdHJldHVybiBuZmNzaW1fc2VuZChkZGV2LCBza2IsIHRpbWVvdXQsIGNiLCBhcmcpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI4NC19XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjg1LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI4NjpzdGF0aWMgaW50IG5mY3NpbV90Z19jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yODctXFx0XFx0XFx0XFx0XFx0ICBpbnQgdHlwZSwgaW50IHBhcmFtKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI4OC17XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mjg5OlxcdHN0cnVjdCBuZmNzaW0gKmRldiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI5MC1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMwOC1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMDk6c3RhdGljIGludCBuZmNzaW1fdGdfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMTAtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0aW1lb3V0LFxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzEyLXtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMTM6XFx0cmV0dXJuIG5mY3NpbV9zZW5kKGRkZXYsIHNrYiwgdGltZW91dCwgY2IsIGFyZyk7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzE0LX1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMTUtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzE2OnN0YXRpYyBpbnQgbmZjc2ltX3RnX2xpc3RlbihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1MTYgdGltZW91dCxcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMTctXFx0XFx0XFx0ICAgIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNiLCB2b2lkICphcmcpXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzE4LXtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMTk6XFx0cmV0dXJuIG5mY3NpbV9zZW5kKGRkZXYsIE5VTEwsIHRpbWVvdXQsIGNiLCBhcmcpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMyMC19XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzIxLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjMyMjpzdGF0aWMgY29uc3Qgc3RydWN0IG5mY19kaWdpdGFsX29wcyBuZmNzaW1fZGlnaXRhbF9vcHMgPSB7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzIzOlxcdC5pbl9jb25maWd1cmVfaHcgPSBuZmNzaW1faW5fY29uZmlndXJlX2h3LFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjMyNDpcXHQuaW5fc2VuZF9jbWQgPSBuZmNzaW1faW5fc2VuZF9jbWQsXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzI1LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjMyNjpcXHQudGdfbGlzdGVuID0gbmZjc2ltX3RnX2xpc3RlbixcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMjc6XFx0LnRnX2NvbmZpZ3VyZV9odyA9IG5mY3NpbV90Z19jb25maWd1cmVfaHcsXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzI4OlxcdC50Z19zZW5kX2NtZCA9IG5mY3NpbV90Z19zZW5kX2NtZCxcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMjktXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzMwOlxcdC5hYm9ydF9jbWQgPSBuZmNzaW1fYWJvcnRfY21kLFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjMzMTpcXHQuc3dpdGNoX3JmID0gbmZjc2ltX3N3aXRjaF9yZixcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMzItfTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMzMtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzM0OnN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpuZmNzaW1fZGVidWdmc19yb290O1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMzNS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMzY6c3RhdGljIHZvaWQgbmZjc2ltX2RlYnVnZnNfaW5pdCh2b2lkKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMzNy17XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzM4OlxcdG5mY3NpbV9kZWJ1Z2ZzX3Jvb3QgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoXFxcIm5mY3NpbVxcXCIsIE5VTEwpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMzOS19XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzQwLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM0MTpzdGF0aWMgdm9pZCBuZmNzaW1fZGVidWdmc19yZW1vdmUodm9pZClcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNDIte1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM0MzpcXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUobmZjc2ltX2RlYnVnZnNfcm9vdCk7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzQ0LX1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNDUtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzQ2OnN0YXRpYyB2b2lkIG5mY3NpbV9kZWJ1Z2ZzX2luaXRfZGV2KHN0cnVjdCBuZmNzaW0gKmRldilcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNDcte1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzUyLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM1MzpcXHRpZiAoIW5mY3NpbV9kZWJ1Z2ZzX3Jvb3QpIHtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozNTQ6XFx0XFx0TkZDU0lNX0VSUihkZXYsIFxcXCJuZmNzaW0gZGVidWdmcyBub3QgaW5pdGlhbGl6ZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM1NS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNjQtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzY1OlxcdGRldl9kaXIgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZGV2bmFtZSwgbmZjc2ltX2RlYnVnZnNfcm9vdCk7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzY2LVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzY5LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM3MDpzdGF0aWMgc3RydWN0IG5mY3NpbSAqbmZjc2ltX2RldmljZV9uZXcoc3RydWN0IG5mY3NpbV9saW5rICpsaW5rX2luLFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM3MTpcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmtfb3V0KVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM3Mi17XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzczOlxcdHN0cnVjdCBuZmNzaW0gKmRldjtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNzQtXFx0aW50IHJjO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM3NS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozNzY6XFx0ZGV2ID0ga3phbGxvY19vYmooc3RydWN0IG5mY3NpbSk7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzc3LVxcdGlmICghZGV2KVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzc5LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM4MDpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VzZW5kX3dvcmssIG5mY3NpbV9zZW5kX3dxKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozODE6XFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXJlY3Zfd29yaywgbmZjc2ltX3JlY3Zfd3EpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM4Mi1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zODMtXFx0ZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYgPVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM4NDpcXHRcXHRcXHRuZmNfZGlnaXRhbF9hbGxvY2F0ZV9kZXZpY2UoXFx1MDAyNm5mY3NpbV9kaWdpdGFsX29wcyxcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zODUtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIE5GQ19QUk9UT19ORkNfREVQX01BU0ssXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00MDYtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDA3OlxcdG5mY3NpbV9kZWJ1Z2ZzX2luaXRfZGV2KGRldik7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDA4LVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDExLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQxMjpzdGF0aWMgdm9pZCBuZmNzaW1fZGV2aWNlX2ZyZWUoc3RydWN0IG5mY3NpbSAqZGV2KVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQxMy17XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00MTctXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDE4OlxcdG5mY3NpbV9saW5rX3NodXRkb3duKGRldi1cXHUwMDNlbGlua19pbik7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDE5LVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDI3LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQyODpzdGF0aWMgc3RydWN0IG5mY3NpbSAqZGV2MDtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0Mjk6c3RhdGljIHN0cnVjdCBuZmNzaW0gKmRldjE7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDMwLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQzMTpzdGF0aWMgaW50IF9faW5pdCBuZmNzaW1faW5pdCh2b2lkKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQzMi17XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDMzOlxcdHN0cnVjdCBuZmNzaW1fbGluayAqbGluazAsICpsaW5rMTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00MzQtXFx0aW50IHJjO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQzNS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0MzY6XFx0bGluazAgPSBuZmNzaW1fbGlua19uZXcoKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0Mzc6XFx0bGluazEgPSBuZmNzaW1fbGlua19uZXcoKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00MzgtXFx0aWYgKCFsaW5rMCB8fCAhbGluazEpIHtcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ0Mi1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0NDM6XFx0bmZjc2ltX2RlYnVnZnNfaW5pdCgpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ0NC1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0NDU6XFx0ZGV2MCA9IG5mY3NpbV9kZXZpY2VfbmV3KGxpbmswLCBsaW5rMSk7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDQ2LVxcdGlmIChJU19FUlIoZGV2MCkpIHtcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ1MC1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0NTE6XFx0ZGV2MSA9IG5mY3NpbV9kZXZpY2VfbmV3KGxpbmsxLCBsaW5rMCk7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDUyLVxcdGlmIChJU19FUlIoZGV2MSkpIHtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0NTM6XFx0XFx0bmZjc2ltX2RldmljZV9mcmVlKGRldjApO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ1NC1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ1OC1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0NTk6XFx0cHJfaW5mbyhcXFwibmZjc2ltIFxcXCIgTkZDU0lNX1ZFUlNJT04gXFxcIiBpbml0aWFsaXplZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDYwLVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDYzLWV4aXRfZXJyOlxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQ2NDpcXHRwcl9lcnIoXFxcIkZhaWxlZCB0byBpbml0aWFsaXplIG5mY3NpbSBkcml2ZXIgKCVkKVxcXFxuXFxcIiwgcmMpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ2NS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00NjYtXFx0aWYgKGxpbmswKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQ2NzpcXHRcXHRuZmNzaW1fbGlua19mcmVlKGxpbmswKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00NjgtXFx0aWYgKGxpbmsxKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQ2OTpcXHRcXHRuZmNzaW1fbGlua19mcmVlKGxpbmsxKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00NzAtXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00NzMtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDc0OnN0YXRpYyB2b2lkIF9fZXhpdCBuZmNzaW1fZXhpdCh2b2lkKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ3NS17XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDc2OlxcdHN0cnVjdCBuZmNzaW1fbGluayAqbGluazAsICpsaW5rMTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00NzctXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00ODAtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDgxOlxcdG5mY3NpbV9kZXZpY2VfZnJlZShkZXYwKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0ODI6XFx0bmZjc2ltX2RldmljZV9mcmVlKGRldjEpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ4My1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0ODQ6XFx0bmZjc2ltX2xpbmtfZnJlZShsaW5rMCk7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDg1OlxcdG5mY3NpbV9saW5rX2ZyZWUobGluazEpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ4Ni1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0ODc6XFx0bmZjc2ltX2RlYnVnZnNfcmVtb3ZlKCk7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDg4LX1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00ODktXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDkwOm1vZHVsZV9pbml0KG5mY3NpbV9pbml0KTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0OTE6bW9kdWxlX2V4aXQobmZjc2ltX2V4aXQpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ5Mi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDg6NDUuMzMwODM2OTgzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAxMjY2ODcxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTkZDIFNpbXVsYXRvciBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBgbmZjc2ltYCBpcyBhIGtub3duIHF1YW50aXR5LCBhIHNpbXVsYXRvciBkcml2ZXIgZm9yIE5GQywgYW5kIGl0J3MgZW5hYmxlZCBieSB0aGUgYENPTkZJR19ORkNfU0lNYCBjb25maWcgb3B0aW9uLiBHb29kLiBJIHNlZSBhIHBhdGNoIGhlcmUgdGhhdCdzIHRvdWNoaW5nIGBuZXQvbmZjL2xsY3BfY29yZS5jYCBhbmQgYG5ldC9uZmMvbGxjcF9zb2NrLmNgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIG1lYW5zIHRoZXkncmUgZGlnZ2luZyBpbnRvIHRoZSBMb3cgTGV2ZWwgQ29tbXVuaWNhdGlvbiBQcm90b2NvbCAoTExDUCkgaW1wbGVtZW50YXRpb24gd2l0aGluIHRoZSBORkMgc3RhY2suIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBiZWZvcmUgSSBkaXZlIGRlZXAgaW50byB0aGUgY29kZSBjaGFuZ2VzLCBJIG5lZWQgdG8gdmVyaWZ5IGFsbCB0aGUgc3VwcG9ydGluZyBjb25maWd1cmF0aW9ucyBhcmUgcHJvcGVybHkgc2V0IHRvIHN1cHBvcnQgdGhlIG5ldyBmZWF0dXJlcyBvciBwYXRjaGVzLCBhbmQgc3BlY2lmaWNhbGx5IHRoYXQgTkZDIGFuZCBMTENQIGFyZSBjb3JyZWN0bHkgZW5hYmxlZCBpbiB0aGUgZmlyc3QgcGxhY2UuIEknbGwgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmVxdWlyZW1lbnRzIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nJ3Mgc2V0IHVwIGNvcnJlY3RseSBmb3IgdGVzdGluZyB3aXRoIHRoZSBzaW11bGF0b3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNjg1LCJPdXRwdXRUb2tlbnMiOjE2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDg6NDkuMzQzNTA3NTA0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTcxMjg2ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GQ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL202OGsvS2NvbmZpZy5kZXZpY2VzPTM2PWNvbmZpZyBORkJMT0NLXFxuLS1cXG5hcmNoL202OGsvS2NvbmZpZy5kZXZpY2VzLTQzLVxcbmFyY2gvbTY4ay9LY29uZmlnLmRldmljZXM6NDQ6Y29uZmlnIE5GQ09OXFxuYXJjaC9tNjhrL0tjb25maWcuZGV2aWNlcy00NS1cXHR0cmlzdGF0ZSBcXFwiTmF0RmVhdCBjb25zb2xlIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL0tjb25maWc9Nj1tZW51IFxcXCJOZWFyIEZpZWxkIENvbW11bmljYXRpb24gKE5GQykgZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL0tjb25maWctOC1cXG5kcml2ZXJzL25mYy9LY29uZmlnOjk6Y29uZmlnIE5GQ19UUkY3OTcwQVxcbmRyaXZlcnMvbmZjL0tjb25maWctMTAtXFx0dHJpc3RhdGUgXFxcIlRleGFzIEluc3RydW1lbnRzIFRSRjc5NzBhIE5GQyBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9LY29uZmlnLTIwLVxcbmRyaXZlcnMvbmZjL0tjb25maWc6MjE6Y29uZmlnIE5GQ19NRUlfUEhZXFxuZHJpdmVycy9uZmMvS2NvbmZpZy0yMi1cXHR0cmlzdGF0ZSBcXFwiTUVJIGJ1cyBORkMgZGV2aWNlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9LY29uZmlnLTMwLVxcbmRyaXZlcnMvbmZjL0tjb25maWc6MzE6Y29uZmlnIE5GQ19TSU1cXG5kcml2ZXJzL25mYy9LY29uZmlnLTMyLVxcdHRyaXN0YXRlIFxcXCJORkMgaGFyZHdhcmUgc2ltdWxhdG9yIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL0tjb25maWctNDEtXFxuZHJpdmVycy9uZmMvS2NvbmZpZzo0Mjpjb25maWcgTkZDX1BPUlQxMDBcXG5kcml2ZXJzL25mYy9LY29uZmlnLTQzLVxcdHRyaXN0YXRlIFxcXCJTb255IE5GQyBQb3J0LTEwMCBTZXJpZXMgVVNCIGRldmljZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvS2NvbmZpZy01MS1cXG5kcml2ZXJzL25mYy9LY29uZmlnOjUyOmNvbmZpZyBORkNfVklSVFVBTF9OQ0lcXG5kcml2ZXJzL25mYy9LY29uZmlnLTUzLVxcdHRyaXN0YXRlIFxcXCJOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmZjL2ZkcC9LY29uZmlnOjI6Y29uZmlnIE5GQ19GRFBcXG5kcml2ZXJzL25mYy9mZHAvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBGRFAgTkZDIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL2ZkcC9LY29uZmlnLTE0LVxcbmRyaXZlcnMvbmZjL2ZkcC9LY29uZmlnOjE1OmNvbmZpZyBORkNfRkRQX0kyQ1xcbmRyaXZlcnMvbmZjL2ZkcC9LY29uZmlnLTE2LVxcdHRyaXN0YXRlIFxcXCJORkMgRkRQIGkyYyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvS2NvbmZpZzoyOmNvbmZpZyBORkNfTUlDUk9SRUFEXFxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWctOS1cXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvS2NvbmZpZzoxMDpjb25maWcgTkZDX01JQ1JPUkVBRF9JMkNcXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvS2NvbmZpZy0xMS1cXHR0cmlzdGF0ZSBcXFwiSW5zaWRlIFNlY3VyZSBNaWNyb3JlYWQgZGV2aWNlIHN1cHBvcnQgKEkyQylcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvS2NvbmZpZy0yMS1cXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvS2NvbmZpZzoyMjpjb25maWcgTkZDX01JQ1JPUkVBRF9NRUlcXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvS2NvbmZpZy0yMy1cXHR0cmlzdGF0ZSBcXFwiSW5zaWRlIFNlY3VyZSBNaWNyb3JlYWQgZGV2aWNlIHN1cHBvcnQgKE1FSSlcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWc6Mjpjb25maWcgTkZDX01SVkxcXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTktXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnOjEwOmNvbmZpZyBORkNfTVJWTF9VU0JcXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctMTEtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgTkZDLW92ZXItVVNCIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy0yMi1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWc6MjM6Y29uZmlnIE5GQ19NUlZMX1VBUlRcXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctMjQtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgTkZDLW92ZXItVUFSVCBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctMzQtXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnOjM1OmNvbmZpZyBORkNfTVJWTF9JMkNcXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctMzYtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgTkZDLW92ZXItSTJDIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy00NS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWc6NDY6Y29uZmlnIE5GQ19NUlZMX1NQSVxcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy00Ny1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBORkMtb3Zlci1TUEkgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19OWFBfTkNJXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk5YUC1OQ0kgTkZDIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy0xNC1cXG5kcml2ZXJzL25mYy9ueHAtbmNpL0tjb25maWc6MTU6Y29uZmlnIE5GQ19OWFBfTkNJX0kyQ1xcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy0xNi1cXHR0cmlzdGF0ZSBcXFwiTlhQLU5DSSBJMkMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL3BuNTMzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnOjI6Y29uZmlnIE5GQ19QTjUzM1xcbmRyaXZlcnMvbmZjL3BuNTMzL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZy03LVxcbmRyaXZlcnMvbmZjL3BuNTMzL0tjb25maWc6ODpjb25maWcgTkZDX1BONTMzX1VTQlxcbmRyaXZlcnMvbmZjL3BuNTMzL0tjb25maWctOS1cXHR0cmlzdGF0ZSBcXFwiTkZDIFBONTMzIGRldmljZSBzdXBwb3J0IChVU0IpXFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnOjE5OmNvbmZpZyBORkNfUE41MzNfSTJDXFxuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiTkZDIFBONTMzIGRldmljZSBzdXBwb3J0IChJMkMpXFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZy0yOS1cXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnOjMwOmNvbmZpZyBORkNfUE41MzJfVUFSVFxcbmRyaXZlcnMvbmZjL3BuNTMzL0tjb25maWctMzEtXFx0dHJpc3RhdGUgXFxcIk5GQyBQTjUzMiBkZXZpY2Ugc3VwcG9ydCAoVUFSVClcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9wbjU0NC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZmMvcG41NDQvS2NvbmZpZzoyOmNvbmZpZyBORkNfUE41NDRcXG5kcml2ZXJzL25mYy9wbjU0NC9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmZjL3BuNTQ0L0tjb25maWctOS1cXG5kcml2ZXJzL25mYy9wbjU0NC9LY29uZmlnOjEwOmNvbmZpZyBORkNfUE41NDRfSTJDXFxuZHJpdmVycy9uZmMvcG41NDQvS2NvbmZpZy0xMS1cXHR0cmlzdGF0ZSBcXFwiTlhQIFBONTQ0IGRldmljZSBzdXBwb3J0IChJMkMpXFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvcG41NDQvS2NvbmZpZy0yMC1cXG5kcml2ZXJzL25mYy9wbjU0NC9LY29uZmlnOjIxOmNvbmZpZyBORkNfUE41NDRfTUVJXFxuZHJpdmVycy9uZmMvcG41NDQvS2NvbmZpZy0yMi1cXHR0cmlzdGF0ZSBcXFwiTlhQIFBONTQ0IGRldmljZSBzdXBwb3J0IChNRUkpXFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvczNmd3JuNS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZmMvczNmd3JuNS9LY29uZmlnOjI6Y29uZmlnIE5GQ19TM0ZXUk41XFxuZHJpdmVycy9uZmMvczNmd3JuNS9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZy05LVxcbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZzoxMDpjb25maWcgTkZDX1MzRldSTjVfSTJDXFxuZHJpdmVycy9uZmMvczNmd3JuNS9LY29uZmlnLTExLVxcdHRyaXN0YXRlIFxcXCJTYW1zdW5nIFMzRldSTjUgSTJDIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9zM2Z3cm41L0tjb25maWctMjItXFxuZHJpdmVycy9uZmMvczNmd3JuNS9LY29uZmlnOjIzOmNvbmZpZyBORkNfUzNGV1JOODJfVUFSVFxcbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZy0yNC0gICAgICAgIHRyaXN0YXRlIFxcXCJTYW1zdW5nIFMzRldSTjgyIFVBUlQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWc6Mjpjb25maWcgTkZDX1NUX05DSVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTgtXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWc6OTpjb25maWcgTkZDX1NUX05DSV9JMkNcXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0xMC1cXHR0cmlzdGF0ZSBcXFwiU1RNaWNyb2VsZWN0cm9uaWNzIFNUIE5DSSBORkMgZHJpdmVyIChJMkMpXFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMjAtXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWc6MjE6Y29uZmlnIE5GQ19TVF9OQ0lfU1BJXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMjItXFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBTVCBOQ0kgTkZDIGRyaXZlciAoU1BJKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnOjI6Y29uZmlnIE5GQ19TVDIxTkZDQVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvS2NvbmZpZy05LVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWc6MTA6Y29uZmlnIE5GQ19TVDIxTkZDQV9JMkNcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnLTExLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgU1QyMU5GQ0EgTkZDIGRyaXZlciAoSTJDKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZmMvc3Q5NWhmL0tjb25maWc6Mjpjb25maWcgTkZDX1NUOTVIRlxcbmRyaXZlcnMvbmZjL3N0OTVoZi9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNUOTVIRiBORkMgVHJhbnNjZWl2ZXIgZHJpdmVyXFxcIlxcbi0tXFxubmV0L25mYy9LY29uZmlnLTUtXFxubmV0L25mYy9LY29uZmlnOjY6bWVudWNvbmZpZyBORkNcXG5uZXQvbmZjL0tjb25maWctNy1cXHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXFxuLS1cXG5uZXQvbmZjL0tjb25maWctMTYtXFxubmV0L25mYy9LY29uZmlnOjE3OmNvbmZpZyBORkNfRElHSVRBTFxcbm5ldC9uZmMvS2NvbmZpZy0xOC1cXHRkZXBlbmRzIG9uIE5GQ1xcbi0tXFxubmV0L25mYy9oY2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9uZmMvaGNpL0tjb25maWc6Mjpjb25maWcgTkZDX0hDSVxcbm5ldC9uZmMvaGNpL0tjb25maWctMy1cXHRkZXBlbmRzIG9uIE5GQ1xcbi0tXFxubmV0L25mYy9oY2kvS2NvbmZpZy0xMC1cXG5uZXQvbmZjL2hjaS9LY29uZmlnOjExOmNvbmZpZyBORkNfU0hETENcXG5uZXQvbmZjL2hjaS9LY29uZmlnLTEyLVxcdGRlcGVuZHMgb24gTkZDX0hDSVxcbi0tXFxubmV0L25mYy9uY2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9uZmMvbmNpL0tjb25maWc6Mjpjb25maWcgTkZDX05DSVxcbm5ldC9uZmMvbmNpL0tjb25maWctMy1cXHRkZXBlbmRzIG9uIE5GQ1xcbi0tXFxubmV0L25mYy9uY2kvS2NvbmZpZy0xMi1cXG5uZXQvbmZjL25jaS9LY29uZmlnOjEzOmNvbmZpZyBORkNfTkNJX1NQSVxcbm5ldC9uZmMvbmNpL0tjb25maWctMTQtXFx0ZGVwZW5kcyBvbiBORkNfTkNJIFxcdTAwMjZcXHUwMDI2IFNQSVxcbi0tXFxubmV0L25mYy9uY2kvS2NvbmZpZy0yMy1cXG5uZXQvbmZjL25jaS9LY29uZmlnOjI0OmNvbmZpZyBORkNfTkNJX1VBUlRcXG5uZXQvbmZjL25jaS9LY29uZmlnLTI1LVxcdGRlcGVuZHMgb24gTkZDX05DSSBcXHUwMDI2XFx1MDAyNiBUVFlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDg6NTAuODYwNjQwNzY2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgxODE3NjY5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBORkMgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuQWxyaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3Qgd2F5IHRvIGhhbmRsZSBORkMgY29uZmlndXJhdGlvbiBpbiB0aGlzIHBhcnRpY3VsYXIgc3lzdGVtLiBJIHNlZSB0aGF0IHRoZSBwcmltYXJ5IGNvbmZpZyBmbGFnIGZvciBlbmFibGluZyBORkMgaXMgYE5GQ2AuIFRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gQnV0LCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBwcm9qZWN0LCBJIHdhbnQgdG8gY29uc2lkZXIgYWxsIHRoZSBhbmdsZXMuIEkgYWxzbyBub3RpY2UgdGhlIGV4aXN0ZW5jZSBvZiBgTkZDX1NJTWAuIE9rYXksIHRoYXQncyBwcm9iYWJseSBmb3IgdGhlIHNpbXVsYXRvciBlbnZpcm9ubWVudC4gR29vZCwgZ29vZC4gSeKAmWxsIG1ha2UgYSBtZW50YWwgbm90ZSB0byBhZGRyZXNzIGJvdGguXG5cbk5vdywgYmVmb3JlIEkgY29tbWl0IHRvIGFueXRoaW5nLCBJIHNob3VsZCBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhIG1vcmUgZ3JhbnVsYXIgb3B0aW9uLiBJdCdzIGxpa2VseSB0aGVyZSBtYXkgYmUgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZvciBMTENQIChMb2dpY2FsIExpbmsgQ29udHJvbCBQcm90b2NvbCkgd2hpY2ggSSdsbCBiZSBzdXJlIHRvIGludmVzdGlnYXRlLiBUaGUga2V5IGlzIGluIGNvbXByZWhlbnNpdmUgY29uc2lkZXJhdGlvbi4gVGhlIGluaXRpYWwgY29uZmlncyBtZW50aW9uZWQgcG9pbnQgdG8gZ2VuZXJhbCBORkMgdXNlIGFuZCBzaW11bGF0aW9uIGJ1dCB0aGVyZSBpcyBhIGNoYW5jZSBvZiBmaW5kaW5nIGBORkNfTExDUGAgYXMgYSBsb3ctbGV2ZWwgb3B0aW9uIHRoYXQgaXMgbmVjZXNzYXJ5IHRvIGNvbnNpZGVyLiBObyBuZWVkIHRvIG1ha2UgYXNzdW1wdGlvbnM7IGxldCdzIHNlZSB3aGF0IGVsc2UgbWlnaHQgYmUgaGlkaW5nIGluIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0OTU1LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDg6NTUuNjc4ODIwNDA4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NzYzNjA3OTIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORkNfTExDUFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDg6NTcuMTU1MTg5MThaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODg2Njk5MTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipMTENQIGFuZCBORkM6IEEgUXVpY2sgQ2hlY2sqKlxuXG5Pa2F5LCBzbyBJJ20gd29uZGVyaW5nIGFib3V0IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBMTENQIChMb2dpY2FsIExpbmsgQ29udHJvbCBQcm90b2NvbCkgYW5kIE5GQy4gU3BlY2lmaWNhbGx5LCBkb2VzIGVuYWJsaW5nIE5GQyAqYXV0b21hdGljYWxseSogZW5hYmxlIExMQ1A/IEl0IHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIGFzc3VtcHRpb24sIGJ1dCBJIG5lZWQgdG8gY29uZmlybS4gVGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQsIG9mIGNvdXJzZSwgaXMgdGhlIHNvdXJjZSBjb2RlLiBMZXQncyBkaWcgaW50byB0aGUgYG5ldC9uZmMvTWFrZWZpbGVgIGZpbGUuIFRoYXQncyB1c3VhbGx5IHdoZXJlIHRoZSBidWlsZCBkZXBlbmRlbmNpZXMgYW5kIGNvcmUgY29uZmlndXJhdGlvbnMgcmVzaWRlLiBJdCBzaG91bGQgcXVpY2tseSByZXZlYWwgd2hldGhlciB0aGUgTExDUCBtb2R1bGUgaXMgY29uZGl0aW9uYWxseSBjb21waWxlZCBiYXNlZCBvbiB0aGUgTkZDIGNvbmZpZ3VyYXRpb24sIG9yIGlmIHRoZXJlJ3MgYW4gZXhwbGljaXQgZGVwZW5kZW5jeSBleHByZXNzZWQgdGhlcmUuIEhvcGVmdWxseSwgdGhpcydsbCBiZSBhIHF1aWNrIG9uZSFcblxuXG4iLCJJbnB1dFRva2VucyI6MTUyNjEsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwODo0OTowMS4wNDE4OTAyODNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNDY4OTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxsY3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX05GQ19ESUdJVEFMKSArPSBuZmNfZGlnaXRhbC5vXFxubmV0L25mYy9NYWtlZmlsZS0xMC1cXG5uZXQvbmZjL01ha2VmaWxlOjExOm5mYy1vYmpzIDo9IGNvcmUubyBuZXRsaW5rLm8gYWZfbmZjLm8gcmF3c29jay5vIGxsY3BfY29yZS5vIGxsY3BfY29tbWFuZHMubyBcXFxcXFxubmV0L25mYy9NYWtlZmlsZToxMjpcXHRcXHRsbGNwX3NvY2sub1xcbm5ldC9uZmMvTWFrZWZpbGUtMTMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA4OjQ5OjAxLjA4NTM2NTE2MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDE2NjA0Njc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTkZDIExMQ1AgU29ja2V0IENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IGBsbGNwX2NvcmUub2AgYW5kIGBsbGNwX3NvY2sub2AgYXJlIGluZGVlZCBidWlsdCB3aGVuIGBDT05GSUdfTkZDYCBpcyBlbmFibGVkLCB3aGljaCBpcyBleHBlY3RlZC4gVGhleSdyZSBwYXJ0IG9mIHRoYXQgYG5mYy1vYmpzYCBncm91cGluZy4gVGhlIHBhdGNoIHRhcmdldHMgcXVpdGUgYSBmZXcgY3J1Y2lhbCBmdW5jdGlvbnMsIG1haW5seSB0aGUgbGlmZWN5Y2xlIGFuZCBtYW5hZ2VtZW50IG9mIE5GQyBMTENQIHNvY2tldHMuIEknbSBzZWVpbmcgbW9kaWZpY2F0aW9ucyBpbiBgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2VgLCBgbmZjX2xsY3BfbG9jYWxfcHV0YCwgYG5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlYCwgYGxsY3Bfc29ja19hY2NlcHRgLCBhbmQgYGxsY3Bfc29ja19yZWxlYXNlYC4gVGhvc2UgYXJlIGFsbCBjb3JlIHRvIGhvdyB0aGUgTExDUCBzb2NrZXRzIG9wZXJhdGUuIE5vdywgbGV0J3MgZ2V0IGRvd24gdG8gc3BlY2lmaWNzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoZXNlIGNoYW5nZXMuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgdGhlIGtleSBzeW1ib2xzIHRoYXQgYXJlIGJlaW5nIG1vZGlmaWVkLiBJIGNhbiBzZWUgdGhhdCBgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2VgIGlzIHN0YXRpYywgc28gaXRzIHNjb3BlIGlzIGxpbWl0ZWQgdG8gdGhlIG1vZHVsZSBpdHNlbGYuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgYG5mY19sbGNwX2xvY2FsX3B1dGAgaXMgZXhwb3J0ZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCBpdHMgcG90ZW50aWFsIGltcGFjdCBvbiB0aGUgd2lkZXIga2VybmVsLiBUaGF0J3MgdGhlIG5leHQgY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NTk5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA4OjQ5OjA2LjUwMTk3MTkyN1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcwMzE4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZjX2xsY3BfbG9jYWxfcHV0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvbGxjcC5oPTIwND1zdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKm5mY19sbGNwX2ZpbmRfbG9jYWwoc3RydWN0IG5mY19kZXYgKmRldik7XFxubmV0L25mYy9sbGNwLmg6MjA1OmludCBuZmNfbGxjcF9sb2NhbF9wdXQoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCk7XFxubmV0L25mYy9sbGNwLmgtMjA2LXU4IG5mY19sbGNwX2dldF9zZHBfc3NhcChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmM9MzcxPWludCBuZmNfbGxjcF9zZW5kX3N5bW0oc3RydWN0IG5mY19kZXYgKmRldilcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb21tYW5kcy5jLTQwMS1vdXQ6XFxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmM6NDAyOlxcdG5mY19sbGNwX2xvY2FsX3B1dChsb2NhbCk7XFxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmMtNDAzLVxcdHJldHVybiBlcnI7XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTIwMT1zdGF0aWMgdm9pZCBsb2NhbF9yZWxlYXNlKHN0cnVjdCBrcmVmICpyZWYpXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTIwOS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjIxMDppbnQgbmZjX2xsY3BfbG9jYWxfcHV0KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwpXFxubmV0L25mYy9sbGNwX2NvcmUuYy0yMTEte1xcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYz02NTU9dTggKm5mY19sbGNwX2dlbmVyYWxfYnl0ZXMoc3RydWN0IG5mY19kZXYgKmRldiwgc2l6ZV90ICpnZW5lcmFsX2J5dGVzX2xlbilcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtNjY4LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6NjY5OlxcdG5mY19sbGNwX2xvY2FsX3B1dChsb2NhbCk7XFxubmV0L25mYy9sbGNwX2NvcmUuYy02NzAtXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTY3ND1pbnQgbmZjX2xsY3Bfc2V0X3JlbW90ZV9nYihzdHJ1Y3QgbmZjX2RldiAqZGV2LCBjb25zdCB1OCAqZ2IsIHU4IGdiX2xlbilcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtNzAxLW91dDpcXG5uZXQvbmZjL2xsY3BfY29yZS5jOjcwMjpcXHRuZmNfbGxjcF9sb2NhbF9wdXQobG9jYWwpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtNzAzLVxcdHJldHVybiBlcnI7XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE2MzQ9aW50IG5mY19sbGNwX2RhdGFfcmVjZWl2ZWQoc3RydWN0IG5mY19kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY0NS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE2NDY6XFx0bmZjX2xsY3BfbG9jYWxfcHV0KGxvY2FsKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2NDctXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE2NTE9dm9pZCBuZmNfbGxjcF9tYWNfaXNfZG93bihzdHJ1Y3QgbmZjX2RldiAqZGV2KVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNjY0LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTY2NTpcXHRuZmNfbGxjcF9sb2NhbF9wdXQobG9jYWwpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY2Ni19XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE2Njg9dm9pZCBuZmNfbGxjcF9tYWNfaXNfdXAoc3RydWN0IG5mY19kZXYgKmRldiwgdTMyIHRhcmdldF9pZHgsXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2OTEtXFxubmV0L25mYy9sbGNwX2NvcmUuYzoxNjkyOlxcdG5mY19sbGNwX2xvY2FsX3B1dChsb2NhbCk7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNjkzLX1cXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM9MTc1Mz12b2lkIG5mY19sbGNwX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBuZmNfZGV2ICpkZXYpXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE3NjMtXFxubmV0L25mYy9sbGNwX2NvcmUuYzoxNzY0OlxcdG5mY19sbGNwX2xvY2FsX3B1dChsb2NhbCk7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNzY1LX1cXG4tLVxcbm5ldC9uZmMvbGxjcF9zb2NrLmM9NTk9c3RhdGljIGludCBsbGNwX3NvY2tfYmluZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqYWRkciwgaW50IGFsZW4pXFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jLTEzNi1zb2NrX2xsY3BfcHV0X2xvY2FsOlxcbm5ldC9uZmMvbGxjcF9zb2NrLmM6MTM3OlxcdG5mY19sbGNwX2xvY2FsX3B1dChsbGNwX3NvY2stXFx1MDAzZWxvY2FsKTtcXG5uZXQvbmZjL2xsY3Bfc29jay5jLTEzOC1cXHRsbGNwX3NvY2stXFx1MDAzZWxvY2FsID0gTlVMTDtcXG4tLVxcbm5ldC9uZmMvbGxjcF9zb2NrLmM9Njg2PXN0YXRpYyBpbnQgbGxjcF9zb2NrX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKl9hZGRyLFxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYy03OTktc29ja19sbGNwX3B1dF9sb2NhbDpcXG5uZXQvbmZjL2xsY3Bfc29jay5jOjgwMDpcXHRuZmNfbGxjcF9sb2NhbF9wdXQobG9jYWwpO1xcbm5ldC9uZmMvbGxjcF9zb2NrLmMtODAxLVxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYz0xMDQ1PXZvaWQgbmZjX2xsY3Bfc29ja19mcmVlKHN0cnVjdCBuZmNfbGxjcF9zb2NrICpzb2NrKVxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYy0xMDU1LVxcbm5ldC9uZmMvbGxjcF9zb2NrLmM6MTA1NjpcXHRuZmNfbGxjcF9sb2NhbF9wdXQoc29jay1cXHUwMDNlbG9jYWwpO1xcbm5ldC9uZmMvbGxjcF9zb2NrLmMtMTA1Ny19XFxuLS1cXG5uZXQvbmZjL25ldGxpbmsuYz0xMDE3PXN0YXRpYyBpbnQgbmZjX2dlbmxfbGxjX2dldF9wYXJhbXMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC9uZmMvbmV0bGluay5jLTEwNTAtcHV0X2xvY2FsOlxcbm5ldC9uZmMvbmV0bGluay5jOjEwNTE6XFx0bmZjX2xsY3BfbG9jYWxfcHV0KGxvY2FsKTtcXG5uZXQvbmZjL25ldGxpbmsuYy0xMDUyLVxcbi0tXFxubmV0L25mYy9uZXRsaW5rLmM9MTA2OD1zdGF0aWMgaW50IG5mY19nZW5sX2xsY19zZXRfcGFyYW1zKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvbmZjL25ldGxpbmsuYy0xMTI2LXB1dF9sb2NhbDpcXG5uZXQvbmZjL25ldGxpbmsuYzoxMTI3OlxcdG5mY19sbGNwX2xvY2FsX3B1dChsb2NhbCk7XFxubmV0L25mYy9uZXRsaW5rLmMtMTEyOC1cXG4tLVxcbm5ldC9uZmMvbmV0bGluay5jPTExMzc9c3RhdGljIGludCBuZmNfZ2VubF9sbGNfc2RyZXEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC9uZmMvbmV0bGluay5jLTEyMTgtcHV0X2xvY2FsOlxcbm5ldC9uZmMvbmV0bGluay5jOjEyMTk6XFx0bmZjX2xsY3BfbG9jYWxfcHV0KGxvY2FsKTtcXG5uZXQvbmZjL25ldGxpbmsuYy0xMjIwLVxcbi0tXFxubmV0L25mYy9uZmMuaD01ND1zdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKm5mY19sbGNwX2ZpbmRfbG9jYWwoc3RydWN0IG5mY19kZXYgKmRldik7XFxubmV0L25mYy9uZmMuaDo1NTppbnQgbmZjX2xsY3BfbG9jYWxfcHV0KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwpO1xcbm5ldC9uZmMvbmZjLmgtNTYtaW50IF9faW5pdCBuZmNfbGxjcF9pbml0KHZvaWQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwODo0OTowNi41NDkwMDgyMzZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkzMjEyNTk2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRm9jdXNpbmcgb24gTExDUCBTb2NrZXQgT3BlcmF0aW9ucyoqXG5cbk9rYXksIGBuZmNfbGxjcF9sb2NhbF9wdXRgIGxvb2tzIGxpa2UgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgbXkgYW5hbHlzaXMuIEJ1dCB3YWl0LCB3aGF0IGFib3V0IGBsbGNwX3NvY2tfYWNjZXB0YCBhbmQgYGxsY3Bfc29ja19yZWxlYXNlYD8gVGhvc2UgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIGFzIHN0YXRpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcsIGJ1dCB0aGV5IGFyZSBhbHNvIGFzc2lnbmVkIHRvIHRoZSBgc3RydWN0IHByb3RvX29wc2AuIFRoYXQgbWFrZXMgdGhlbSBpbXBvcnRhbnQuIEhtbSwgSSBzaG91bGQgY2hlY2sgd2hlcmUgdGhleSdyZSBkZWZpbmVkLiBMZXQncyBkaWcgaW50byBgbmV0L25mYy9sbGNwX3NvY2suY2AgYW5kIHNlZSB3aGF0IGBsbGNwX3NvY2tfYWNjZXB0YCBpcyBhbGwgYWJvdXQuIFRoaXMgc2VlbXMgbGlrZSBpdCB3aWxsIGJlIGEgZ29vZCBwbGFjZSB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzg5MCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA4OjQ5OjEwLjQ4MTEzNjc0OFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE0OTg3MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGxjcF9zb2NrX2FjY2VwdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL2xsY3Bfc29jay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvbGxjcF9zb2NrLmM9NDE3PXN0cnVjdCBzb2NrICpuZmNfbGxjcF9hY2NlcHRfZGVxdWV1ZShzdHJ1Y3Qgc29jayAqcGFyZW50LFxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYy00NjUtXFxubmV0L25mYy9sbGNwX3NvY2suYzo0NjY6c3RhdGljIGludCBsbGNwX3NvY2tfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssXFxubmV0L25mYy9sbGNwX3NvY2suYy00NjctXFx0XFx0XFx0ICAgIHN0cnVjdCBwcm90b19hY2NlcHRfYXJnICphcmcpXFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jPTk1Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBsbGNwX3NvY2tfb3BzID0ge1xcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYy05NTgtXFx0LnNvY2tldHBhaXIgICAgID0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9uZmMvbGxjcF9zb2NrLmM6OTU5OlxcdC5hY2NlcHQgICAgICAgICA9IGxsY3Bfc29ja19hY2NlcHQsXFxubmV0L25mYy9sbGNwX3NvY2suYy05NjAtXFx0LmdldG5hbWUgICAgICAgID0gbGxjcF9zb2NrX2dldG5hbWUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA4OjQ5OjEwLjU0MjYzNzY2N1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTExODYwOTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBMTENQIFNvY2tldCBBY2NlcHRhbmNlKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBsbGNwX3NvY2tfYWNjZXB0YCBmdW5jdGlvbi4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgaXQncyBkZWNsYXJlZCBgc3RhdGljYC4gVGhhdCBpbW1lZGlhdGVseSBzdWdnZXN0cyBpdCdzIGludGVybmFsIHRvIHRoaXMgY29tcGlsYXRpb24gdW5pdCwgYW5kIG5vdCBtZWFudCB0byBiZSBjYWxsZWQgZnJvbSBhbnl3aGVyZSBlbHNlLiBHb29kIHRvIGtub3cuIEJ1dCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBjb3JyZWN0LlxuXG5Ob3csIHdoYXQgYWJvdXQgYG5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlYD8gSG1tLCB0aGF0IG5hbWUgZmVlbHMgbGlrZSBpdCBzaG91bGQgYmUgcmVsYXRlZCwgYW5kIHBvc3NpYmx5IGV4cG9zZWQgZm9yIGV4dGVybmFsIHVzZS4gTGV0IG1lIHF1aWNrbHkgdmVyaWZ5IGlmIHRoaXMgb25lIGlzICphbHNvKiBzdGF0aWMgb3Igd2hldGhlciBpdCdzIGV4cG9ydGVkIGFuZCB2aXNpYmxlIHRvIG90aGVyIG1vZHVsZXMuIFRoYXQnbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgZGVzaWduIGhlcmUuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZnVuY3Rpb24gZGVjbGFyYXRpb24gdG8gYmUgc3VyZS4gVGhpcyBpcyBhbiBpbXBvcnRhbnQgZGlzdGluY3Rpb24gdG8gaWRlbnRpZnkgdGhlIGNvcnJlY3Qgc2NvcGUgb2YgdGhlIGZ1bmN0aW9uYWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NDI0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDk6MTYuNDU0NTAwNzU2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzgyMzI1NTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZjX2xsY3BfYWNjZXB0X2RlcXVldWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9sbGNwLmg9MjE4PXZvaWQgbmZjX2xsY3BfYWNjZXB0X2VucXVldWUoc3RydWN0IHNvY2sgKnBhcmVudCwgc3RydWN0IHNvY2sgKnNrKTtcXG5uZXQvbmZjL2xsY3AuaDoyMTk6c3RydWN0IHNvY2sgKm5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNvY2tldCAqbmV3c29jayk7XFxubmV0L25mYy9sbGNwLmgtMjIwLVxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYz00MDM9dm9pZCBuZmNfbGxjcF9hY2NlcHRfZW5xdWV1ZShzdHJ1Y3Qgc29jayAqcGFyZW50LCBzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jLTQxNi1cXG5uZXQvbmZjL2xsY3Bfc29jay5jOjQxNzpzdHJ1Y3Qgc29jayAqbmZjX2xsY3BfYWNjZXB0X2RlcXVldWUoc3RydWN0IHNvY2sgKnBhcmVudCxcXG5uZXQvbmZjL2xsY3Bfc29jay5jLTQxOC1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2spXFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jPTQ2Nj1zdGF0aWMgaW50IGxsY3Bfc29ja19hY2NlcHQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2tldCAqbmV3c29jayxcXG4tLVxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtNDg2LVxcdGFkZF93YWl0X3F1ZXVlX2V4Y2x1c2l2ZShza19zbGVlcChzayksIFxcdTAwMjZ3YWl0KTtcXG5uZXQvbmZjL2xsY3Bfc29jay5jOjQ4NzpcXHR3aGlsZSAoIShuZXdfc2sgPSBuZmNfbGxjcF9hY2NlcHRfZGVxdWV1ZShzaywgbmV3c29jaykpKSB7XFxubmV0L25mYy9sbGNwX3NvY2suYy00ODgtXFx0XFx0c2V0X2N1cnJlbnRfc3RhdGUoVEFTS19JTlRFUlJVUFRJQkxFKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDk6MTYuOTkyNzM2MzI5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3OTY4MTc4NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIEkgYW5hbHl6ZSB0aGVzZSBmdW5jdGlvbnM6XG5cbioqRnVuY3Rpb24gU2NvcGUgSW5xdWlyeSoqXG5cbk9rYXksIHNvIGBuZmNfbGxjcF9hY2NlcHRfZGVxdWV1ZWAgaXNuJ3Qgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IGp1bXBzIG91dCBhdCBtZSDigJMgaXQgbWVhbnMgaXQncyBsaWtlbHkgYmVpbmcgY2FsbGVkIGZyb20gb3V0c2lkZSB0aGlzIHNwZWNpZmljIG1vZHVsZSBvciBmaWxlLiBUaGF0J3MgZ29vZCB0byBrbm93IGZvciB1bmRlcnN0YW5kaW5nIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4gTm93LCBJIG5lZWQgdG8gY2hlY2sgdGhlIG90aGVycyB0byBidWlsZCBhIGNsZWFyZXIgcGljdHVyZS5cblxuTGV0J3Mgc2Vl4oCmIGBuZmNfbGxjcF9zb2NrZXRfcmVsZWFzZWA/IEFoLCB0aGF0IG9uZSAqaXMqIHN0YXRpYy4gSW50ZXJlc3RpbmcuIEkgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoaXMgZGlmZmVyZW5jZSBiZWNhdXNlIGl0IGltbWVkaWF0ZWx5IGZsYWdzIHBvdGVudGlhbCBlbmNhcHN1bGF0aW9uIGlzc3Vlcy4gQSBzdGF0aWMgZnVuY3Rpb24gaXMsIGJ5IGRlZmluaXRpb24sIGludGVuZGVkIGZvciBpbnRlcm5hbCB1c2Ugb25seSB3aXRoaW4gaXRzIHRyYW5zbGF0aW9uIHVuaXQuIEl0cyBiZWhhdmlvciBzaG91bGRuJ3QgaW1wYWN0IGFueXRoaW5nIG91dHNpZGUgaXQuXG5cbkFscmlnaHQsIHdoYXQgZWxzZSBoYXMgYmVlbiBtb2RpZmllZD8gSSdtIG5vdyBnb2luZyB0byBxdWlja2x5IHNjYW4gZm9yIG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcyBMTENQIGltcGxlbWVudGF0aW9uLiBBbnkgZGV2aWF0aW9uIGZyb20gdGhlIGVzdGFibGlzaGVkIHBhdHRlcm4gd2FycmFudHMgY2xvc2VyIGluc3BlY3Rpb24uIGBuZmNfbGxjcF9zb2NrX2xpc3RfcG9wYCBhcHBlYXJzIHRvIGJlIHN0YXRpYywgY29uZmlybWluZyBpdHMgaW50ZW5kZWQgbG9jYWwgc2NvcGUuIFNhbWUgd2l0aCBgbG9jYWxfcmVsZWFzZV93b3JrYC4gT2theSwgdHdvIG1vcmUgc3RhdGljIGZ1bmN0aW9ucywgc29saWRpZnlpbmcgdGhlIGlkZWEgdGhhdCB0aGUgc3lzdGVtIGlzIHRyeWluZyB0byBrZWVwIHRoZSBpbm5lciB3b3JraW5ncyBvZiB0aGUgTExDUCBsYXllciBwcmV0dHkgY29udGFpbmVkLlxuXG5BaGEhIGBuZmNfbGxjcF9hY2NlcHRfdW5saW5rYCBpcyBhbHNvIG5vbi1zdGF0aWMsIGxpa2UgdGhlIGBuZmNfbGxjcF9hY2NlcHRfZGVxdWV1ZWAhIFRoaXMgc3VnZ2VzdHMgYSBicm9hZGVyIGV4dGVybmFsIGludGVyYWN0aW9uLiBUaGlzIHN1Z2dlc3RzIGEgcGF0dGVybiBlbWVyZ2luZywgbmFtZWx5IHRoYXQgdGhlcmUncyBhIHNwZWNpZmljIHJlYXNvbiBmb3Igc29tZSBmdW5jdGlvbnMgdG8gYmUgYWNjZXNzaWJsZSBvdXRzaWRlIG9mIHRoZWlyIGRlY2xhcmF0aW9uIGNvbnRleHQsIHByb2JhYmx5IHRvIG1hbmFnZSBleHRlcm5hbCBjb25uZWN0aW9ucy4gSXQncyB0aW1lIHRvIGRpZyBkZWVwZXIgb24gdGhlc2UgdHdvIGZ1bmN0aW9ucyBhbmQgc2VlIHdoYXQgdGhleSdyZSBhY3R1YWxseSAqZG9pbmcqLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhlc2UgcGFydGljdWxhciBmdW5jdGlvbnMgYXJlIGV4cG9zZWQgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIHRoZXkgbWlnaHQgaW50cm9kdWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTA1NSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA4OjQ5OjIzLjc4OTU1NjQ5N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE0NzQyODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZjX2xsY3BfYWNjZXB0X3VubGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL2xsY3AuaD0yMTY9dm9pZCBuZmNfbGxjcF9zb2NrX2ZyZWUoc3RydWN0IG5mY19sbGNwX3NvY2sgKnNvY2spO1xcbm5ldC9uZmMvbGxjcC5oOjIxNzp2b2lkIG5mY19sbGNwX2FjY2VwdF91bmxpbmsoc3RydWN0IHNvY2sgKnNrKTtcXG5uZXQvbmZjL2xsY3AuaC0yMTgtdm9pZCBuZmNfbGxjcF9hY2NlcHRfZW5xdWV1ZShzdHJ1Y3Qgc29jayAqcGFyZW50LCBzdHJ1Y3Qgc29jayAqc2spO1xcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYz04Mz1zdGF0aWMgdm9pZCBuZmNfbGxjcF9zb2NrZXRfcmVsZWFzZShzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBib29sIGRldmljZSxcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTE0LVxcdFxcdFxcdFxcdGlmIChuZmNfbGxjcF9zb2NrKGFjY2VwdF9zayktXFx1MDAzZXBhcmVudCA9PSBzaykge1xcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTE1OlxcdFxcdFxcdFxcdFxcdG5mY19sbGNwX2FjY2VwdF91bmxpbmsoYWNjZXB0X3NrKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTExNi1cXHRcXHRcXHRcXHRcXHRuZmNfbGxjcF9zb2NrX3VubGluayhcXHUwMDI2bG9jYWwtXFx1MDAzZXNvY2tldHMsIGFjY2VwdF9zayk7XFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jPTMwND1zdGF0aWMgaW50IG5mY19sbGNwX2dldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG4tLVxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtMzg4LVxcbm5ldC9uZmMvbGxjcF9zb2NrLmM6Mzg5OnZvaWQgbmZjX2xsY3BfYWNjZXB0X3VubGluayhzdHJ1Y3Qgc29jayAqc2spXFxubmV0L25mYy9sbGNwX3NvY2suYy0zOTAte1xcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYz00MTc9c3RydWN0IHNvY2sgKm5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlKHN0cnVjdCBzb2NrICpwYXJlbnQsXFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jLTQzNC1cXG5uZXQvbmZjL2xsY3Bfc29jay5jOjQzNTpcXHRcXHRcXHRuZmNfbGxjcF9hY2NlcHRfdW5saW5rKHNrKTtcXG5uZXQvbmZjL2xsY3Bfc29jay5jLTQzNi1cXHRcXHRcXHRpZiAobG9jYWwpXFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jPTYxNj1zdGF0aWMgaW50IGxsY3Bfc29ja19yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jLTY1Mi1cXHRcXHRcXHRcXHRuZmNfbGxjcF9zZW5kX2Rpc2Nvbm5lY3QobHNrKTtcXG5uZXQvbmZjL2xsY3Bfc29jay5jOjY1MzpcXHRcXHRcXHRcXHRuZmNfbGxjcF9hY2NlcHRfdW5saW5rKGFjY2VwdF9zayk7XFxubmV0L25mYy9sbGNwX3NvY2suYy02NTQtXFx0XFx0XFx0XFx0bmZjX2xsY3Bfc29ja191bmxpbmsoXFx1MDAyNmxvY2FsLVxcdTAwM2Vzb2NrZXRzLCBhY2NlcHRfc2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwODo0OToyMy44NTEwMzQ1MjZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ3NjIyOTgxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBORkMgTExDUCBDb2RlIGZvciBGdXp6aW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRoYXQgYG5mY19sbGNwX2FjY2VwdF91bmxpbmtgLCBgbmZjX2xsY3BfYWNjZXB0X2RlcXVldWVgLCBhbmQgYG5mY19sbGNwX2xvY2FsX3B1dGAgYXJlIHN0cm9uZyBjYW5kaWRhdGVzIGZvciBmdXp6aW5nIHRhcmdldHMgd2l0aGluIHRoaXMgTkZDIExMQ1AgaW1wbGVtZW50YXRpb24uIFRob3NlIGZ1bmN0aW9uIG5hbWVzIHNjcmVhbSBwb3RlbnRpYWwgZm9yIGlucHV0IGhhbmRsaW5nIHZ1bG5lcmFiaWxpdGllcy5cblxuTm93LCB0aGUgY29uZmlndXJhdGlvbiBhc3BlY3RzLiBJIHNlZSBgTkZDYCBhbmQgYE5GQ19TSU1gLiAqTkZDX1NJTSoganVtcHMgb3V0IGFzIHRoZSBzaW11bGF0b3IsIHdoaWNoIGlzIGlkZWFsIGZvciB0aGlzIGtpbmQgb2Ygd29yaywgYnV0IEkgbmVlZCB0byBlbnN1cmUgdGhlIGNvcmUgaXMgaW50YWN0LCBhbmQgdGhhdCBzZWVtcyB0byBiZSBlbmFibGVkIGJ5IGBORkNgLiBCdXQgaXMgYE5GQ19TSU1gIGFjdHVhbGx5IHBhcnQgb2YgdGhlIGNvcmUsIG9yIHNvbWV0aGluZyBlbHNlP1xuXG5BaGEsIGBORkNfU0lNYCBpcyBhICpkcml2ZXIqLCBidXQgdGhlIGNvZGUgSSdtIGxvb2tpbmcgYXQsIHNwZWNpZmljYWxseSBgbmV0L25mYy9sbGNwX2NvcmUuY2AsIGlzIGNvbXBpbGVkIHVuZGVyIHRoZSBgTkZDYCBmbGFnLiBUaGF0J3MgZ29vZC4gSXQgbWVhbnMgbXkgdGFyZ2V0IGNvZGUgaXMgcGFydCBvZiB0aGUgbWFpbiBzeXN0ZW0sIGFuZCBub3QgYSBzZXBhcmF0ZSBtb2R1bGUuXG5cblJpZ2h0LCBzbyB0byBtYWtlIHN1cmUgdGhlIGNvZGUgZ2V0cyBjb21waWxlZCwgYE5GQ2AgbmVlZHMgdG8gYmUgZW5hYmxlZC4gQnV0IHRvIHRlc3QgdGhlIExMQ1AgY29yZSwgSSBuZWVkIGFuIE5GQyBkZXZpY2UuICpCaW5nbyEqIGBORkNfU0lNYCBwcm92aWRlcyB0aGF0IHZpcnR1YWwgZGV2aWNlLiBJdCdzIGEgcGVyZmVjdCBzZXR1cCBmb3IgZnV6emluZyAtIEkgY2FuIHNpbXVsYXRlIGludGVyYWN0aW9ucyB3aXRob3V0IHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZS5cblxuSnVzdCB0byBiZSBjZXJ0YWluLCBJJ2xsIHF1aWNrbHkgY2hlY2sgaWYgYE5GQ19TSU1gIGhhcyBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgY291bGQgY29tcGxpY2F0ZSB0aGluZ3MuIEkgd2FudCB0byBrbm93IGlmIHRoZXJlIGFyZSBoaWRkZW4gZmFjdG9ycyBvciBsaW1pdGF0aW9ucyB0aGF0IG5lZWQgdG8gYmUgY29uc2lkZXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAxODAsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDk6MjkuMzI3MjY2NjlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3Nzc3NjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORkNfU0lNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmZjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvS2NvbmZpZz0yMT1jb25maWcgTkZDX01FSV9QSFlcXG4tLVxcbmRyaXZlcnMvbmZjL0tjb25maWctMzAtXFxuZHJpdmVycy9uZmMvS2NvbmZpZzozMTpjb25maWcgTkZDX1NJTVxcbmRyaXZlcnMvbmZjL0tjb25maWctMzItXFx0dHJpc3RhdGUgXFxcIk5GQyBoYXJkd2FyZSBzaW11bGF0b3IgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwODo0OToyOS4zNzUwNDc4MDlaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ5MzkzNDM1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIGRlcGVuZGVuY2llcyBvZiBgTkZDX1NJTWA6XG5cbioqRGVlcCBEaXZlIGludG8gTkZDX1NJTSBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBiZWZvcmUgSSBnZXQgdG9vIGZhciBkb3duIHRoZSByb2FkIHdpdGggdGhpcywgbGV0J3MgdGFrZSBhIGdvb2QsIGhhcmQgbG9vayBhdCB0aGUgZGVwZW5kZW5jaWVzIG9mIGBORkNfU0lNYC4gSSBuZWVkIHRvIGVuc3VyZSBhIHJvYnVzdCBhbmQgd2VsbC1kZWZpbmVkIGZvdW5kYXRpb24sIGFuZCB0aGF0IHN0YXJ0cyBoZXJlLiBJJ20gdGhpbmtpbmcgYmV5b25kIGp1c3QgdGhlIGltbWVkaWF0ZWx5IG9idmlvdXM7IHdoYXQgZXh0ZXJuYWwgbGlicmFyaWVzIGlzIGl0IHB1bGxpbmcgaW4/IFdoYXQgc3BlY2lmaWMgdmVyc2lvbnMgYXJlIHJlcXVpcmVkLCBhbmQgYXJlIHRob3NlIHZlcnNpb25zIHN0aWxsIGFjdGl2ZWx5IG1haW50YWluZWQ/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBhbnkgaW5kaXJlY3QgZGVwZW5kZW5jaWVzIOKAkyBkZXBlbmRlbmNpZXMgb2YgZGVwZW5kZW5jaWVzIOKAkyB0aGF0IG1pZ2h0IGludHJvZHVjZSB1bmV4cGVjdGVkIGNvbXBsZXhpdGllcyBkb3duIHRoZSBsaW5lP1xuXG5JJ20gYWxzbyBjb25zaWRlcmluZyB0aGUgYnVpbGQgZW52aXJvbm1lbnQgaXRzZWxmLiBXaGF0IGNvbXBpbGVyIHZlcnNpb25zIGFyZSBzdXBwb3J0ZWQ/IFdoYXQgb3BlcmF0aW5nIHN5c3RlbXMgYXJlIG9mZmljaWFsbHkgc3VwcG9ydGVkLCBhbmQgd2hhdCBhYm91dCBsZXNzIGNvbW1vbiBvbmVzPyBBcmUgdGhlcmUgYW55IHBsYXRmb3JtLXNwZWNpZmljIGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gdGFrZSBpbnRvIGFjY291bnQ/IFRoaXMgaXMgY3J1Y2lhbCBmb3IgcG9ydGFiaWxpdHkuIEFuZCB3aGF0IGFib3V0IHRoZSB0ZXN0aW5nIGZyYW1ld29yaz8gQXJlIHRoZXJlIGFueSBwYXJ0aWN1bGFyIGxpYnJhcmllcyBvciB0b29scyBgTkZDX1NJTWAgcmVsaWVzIG9uIGZvciB1bml0IHRlc3RzLCBpbnRlZ3JhdGlvbiB0ZXN0cywgb3IgcGVyZm9ybWFuY2UgYmVuY2htYXJrcz8gSSdtIG5vdCBqdXN0IGNvbmNlcm5lZCB3aXRoIGdldHRpbmcgdGhlIGNvZGUgdG8gcnVuOyBJIHdhbnQgdG8gZW5zdXJlIGl0J3MgdGhvcm91Z2hseSB0ZXN0ZWQgYW5kIG1haW50YWluYWJsZS5cblxuRmluYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBmdXR1cmUuIFdpbGwgYE5GQ19TSU1gIG5lZWQgdG8gaW50ZXJhY3Qgd2l0aCBhbnkgb3RoZXIgc3lzdGVtcyBvciBjb21wb25lbnRzIGRvd24gdGhlIGxpbmU/IEFyZSB0aGVyZSBhbnkgZW1lcmdpbmcgc3RhbmRhcmRzIG9yIHRlY2hub2xvZ2llcyB0aGF0IEkgbmVlZCB0byBrZWVwIGluIG1pbmQgd2hlbiBldmFsdWF0aW5nIHRoZXNlIGRlcGVuZGVuY2llcz8gQ2hvb3NpbmcgdGhlIHJpZ2h0IGRlcGVuZGVuY2llcyBub3cgY2FuIHNhdmUgYSBtYXNzaXZlIGhlYWRhY2hlIGxhdGVyLiBJdCdzIGFsbCBhYm91dCBwcm9hY3RpdmUgcmlzayBtaXRpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDgzNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA4OjQ5OjMzLjg2ODk4NDUzNVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25mYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMwLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDMwOlxcdFxcbiAgMzE6XFx0Y29uZmlnIE5GQ19TSU1cXG4gIDMyOlxcdFxcdHRyaXN0YXRlIFxcXCJORkMgaGFyZHdhcmUgc2ltdWxhdG9yIGRyaXZlclxcXCJcXG4gIDMzOlxcdFxcdGRlcGVuZHMgb24gTkZDX0RJR0lUQUxcXG4gIDM0OlxcdFxcdGhlbHBcXG4gIDM1OlxcdFxcdCAgVGhpcyBkcml2ZXIgZGVjbGFyZXMgdHdvIHZpcnR1YWwgTkZDIGRldmljZXMgc3VwcG9ydGluZyBORkMtREVQXFxuICAzNjpcXHRcXHQgIHByb3RvY29sLiBBbiBMTENQIGNvbm5lY3Rpb24gY2FuIGJlIGVzdGFibGlzaGVkIGJldHdlZW4gdGhlbSBhbmRcXG4gIDM3OlxcdFxcdCAgYWxsIHBhY2tldHMgc2VudCBmcm9tIG9uZSBkZXZpY2UgaXMgc2VudCBiYWNrIHRvIHRoZSBvdGhlciwgYWN0aW5nIGFzXFxuICAzODpcXHRcXHQgIGxvb3BiYWNrIGRldmljZXMuXFxuICAzOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDk6MzMuODY5MDM2ODQ1WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MTk1MDU0MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIGEgZmlyc3QtcGVyc29uIHBlcnNwZWN0aXZlLCBhc3N1bWluZyBJJ20gd2VsbC12ZXJzZWQgaW4gdGhpcyBmaWVsZDpcblxuKipEZXBlbmRlbmN5IERlZXAgRGl2ZSoqXG5cbkFscmlnaHQsIEkgc2VlIGl0IGltbWVkaWF0ZWx5LiBgTkZDX1NJTWAgcmVsaWVzIG9uIGBORkNfRElHSVRBTGAuIFRoaXMgaXNuJ3QgdW5leHBlY3RlZCwgYnV0IGl0J3MgYSBjcml0aWNhbCBwb2ludCB0byBhY2tub3dsZWRnZSBiZWZvcmUgcHJvY2VlZGluZy4gTm93LCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgYE5GQ19ESUdJVEFMYCdzIG93biBkZXBlbmRlbmNpZXMuIEl0J3MgdGltZSB0byB0cmFjZSBpdHMgZGVwZW5kZW5jeSB0cmVlLiBHb3R0YSBtYWtlIHN1cmUgSSBoYXZlIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBldmVyeXRoaW5nIHRoYXQgZmVlZHMgaW50byBgTkZDX0RJR0lUQUxgIGJlY2F1c2UgdGhhdCBpbmV2aXRhYmx5IGltcGFjdHMgYE5GQ19TSU1gIGFuZCB0aGUgYnJvYWRlciBzeXN0ZW0ncyBiZWhhdmlvci4gVGltZSB0byBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMzQ1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwODo0OTozNy40ODg1NDQ2MTFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1OTcyMzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORkNfRElHSVRBTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9LY29uZmlnPTY9bWVudWNvbmZpZyBORkNcXG4tLVxcbm5ldC9uZmMvS2NvbmZpZy0xNi1cXG5uZXQvbmZjL0tjb25maWc6MTc6Y29uZmlnIE5GQ19ESUdJVEFMXFxubmV0L25mYy9LY29uZmlnLTE4LVxcdGRlcGVuZHMgb24gTkZDXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA4OjQ5OjM3LjU0NDUyMjY4WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0Mzk3NTIxMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGNvbmZpZ3VyYXRpb25zOlxuXG4qKkFuYWx5emluZyBORkMgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSdtIHNlZWluZywgYE5GQ2AsIGBORkNfRElHSVRBTGAsIGFuZCBgTkZDX1NJTWAgYXJlIHRoZSBrZXkgY29uZmlndXJhdGlvbnMgaW4gcGxheSBoZXJlLiBCdXQgaG9sZCBvbiwgaXQgc2VlbXMgbGlrZSBgTkZDX1ZJUlRVQUxfTkNJYCAqbWlnaHQqIGJlIHJlbGV2YW50IHRvby4gSSBzaG91bGQgcmVhbGx5IGNoZWNrIHRoYXQgb25lIGFzIHdlbGwsIGp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIHNlZSBpZiBpdCBicmluZ3MgYW55dGhpbmcgbmV3IHRvIHRoZSB0YWJsZS4gV2UgbmVlZCB0byBjb25zaWRlciBhbGwgYW5nbGVzIHdoZW4gZGVhbGluZyB3aXRoIHRoZSBORkMgaW1wbGVtZW50YXRpb25zLiBJdCdzIGltcG9ydGFudCB0byBiZSBjb21wbGV0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE2MzYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwODo0OTo0MC45ODQyNzcxMzhaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI2MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZmMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA1MTpcXHRcXG4gIDUyOlxcdGNvbmZpZyBORkNfVklSVFVBTF9OQ0lcXG4gIDUzOlxcdFxcdHRyaXN0YXRlIFxcXCJOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcXFwiXFxuICA1NDpcXHRcXHRkZXBlbmRzIG9uIE5GQ19OQ0lcXG4gIDU1OlxcdFxcdGhlbHBcXG4gIDU2OlxcdFxcdCAgTkNJIHZpcnR1YWwgZGV2aWNlIHNpbXVsYXRlcyBhIE5DSSBkZXZpY2UgdG8gdGhlIHVzZXIuXFxuICA1NzpcXHRcXHQgIEl0IGNhbiBiZSB1c2VkIHRvIHZhbGlkYXRlIHRoZSBOQ0kgbW9kdWxlIGFuZCBhcHBsaWNhdGlvbnMuXFxuICA1ODpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIGNvbW11bmljYXRpb24gYmV0d2VlbiB0aGUgdmlydHVhbCBOQ0kgZGV2aWNlIGFuZFxcbiAgNTk6XFx0XFx0ICBtb2R1bGUuXFxuICA2MDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDk6NDAuOTg0MzMxNDU4WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MTMyMjI4NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6XG5cbioqRGVwZW5kZW5jeSBEZWVwIERpdmUqKlxuXG5BbHJpZ2h0LCBzbyBgTkZDX1ZJUlRVQUxfTkNJYCBpcyBjbGVhcmx5IGJ1aWx0IG9uIHRvcCBvZiBgTkZDX05DSWAuIFRoYXQncyBhIHByZXR0eSBzdGFuZGFyZCBsYXllcmluZyBhcHByb2FjaCwgYnV0IEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGUgZm91bmRhdGlvbiBpcyBzb2xpZCBiZWZvcmUgSSBnZXQgdG9vIGludmVzdGVkIGluIHRoZSB2aXJ0dWFsIGFzcGVjdHMuIFNvLCB0aGUgZmlyc3QgbG9naWNhbCBzdGVwIGlzIHRvIGRlbHZlIGludG8gdGhlIGRlcGVuZGVuY2llcyBvZiBgTkZDX05DSWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaXQgcmVsaWVzIG9uLCB3aGF0IGl0cyBwb3RlbnRpYWwgd2VhayBwb2ludHMgYXJlLCBhbmQgaWYgYW55IHVwZGF0ZXMgb3IgY2hhbmdlcyB0aGVyZSBjb3VsZCByaXBwbGUgdXAgYW5kIGFmZmVjdCBgTkZDX1ZJUlRVQUxfTkNJYC4gR290IHRvIHRob3JvdWdobHkgdmV0IHRoZSBiYXNlIGJlZm9yZSBJIGJ1aWxkIG9uIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTk4NywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDk6NDQuMzk3NTU2NDc3WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTMzMjg3MDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GQ19OQ0lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9uY2kvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL25jaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L25mYy9uY2kvS2NvbmZpZzoyOmNvbmZpZyBORkNfTkNJXFxubmV0L25mYy9uY2kvS2NvbmZpZy0zLVxcdGRlcGVuZHMgb24gTkZDXFxuLS1cXG5uZXQvbmZjL25jaS9LY29uZmlnLTEyLVxcbm5ldC9uZmMvbmNpL0tjb25maWc6MTM6Y29uZmlnIE5GQ19OQ0lfU1BJXFxubmV0L25mYy9uY2kvS2NvbmZpZy0xNC1cXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXFx1MDAyNlxcdTAwMjYgU1BJXFxuLS1cXG5uZXQvbmZjL25jaS9LY29uZmlnLTIzLVxcbm5ldC9uZmMvbmNpL0tjb25maWc6MjQ6Y29uZmlnIE5GQ19OQ0lfVUFSVFxcbm5ldC9uZmMvbmNpL0tjb25maWctMjUtXFx0ZGVwZW5kcyBvbiBORkNfTkNJIFxcdTAwMjZcXHUwMDI2IFRUWVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwODo0OTo0NS4xMTA4ODk1MThaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk3Nzc3MjA5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFzc2Vzc21lbnQgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipORkMgVGVzdGluZyBhbmQgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdGllcyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZywgYmV5b25kIHRoZSBjb3JlIGBORkNgIGNvbmZpZywgZW5hYmxpbmcgYE5GQ19WSVJUVUFMX05DSWAgYW5kIGBORkNfTkNJYCBzZWVtcyBsaWtlIGEgc29saWQgYXBwcm9hY2ggZm9yIGNvbXByZWhlbnNpdmUgTkZDIHRlc3RpbmcuIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhlIGNvcmUgY29uZmlndXJhdGlvbnMgb2YgYE5GQ2AsIGBORkNfRElHSVRBTGAsIGFuZCBgTkZDX1NJTWAuXG5cblRoaXMgcGF0Y2ggaXMgaW50ZXJlc3Rpbmcg4oCTIGl0J3MgYWRkcmVzc2luZyBhIHJhY2UgY29uZGl0aW9uIG9yIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBzaXR1YXRpb24gd2l0aGluIExMQ1Agc29ja2V0IHJlbGVhc2UuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgdGhpcyBhcyBzb21ldGhpbmcgdGhhdCB3YXJyYW50cyBmdXp6aW5nLiBJdCdzIGEgY2xhc3NpYyBhcmVhIGZvciBtZW1vcnkgY29ycnVwdGlvbiB2dWxuZXJhYmlsaXRpZXMsIGFuZCBMTENQIGJlaW5nIGEgbG93ZXItbGV2ZWwgcHJvdG9jb2wgbWFrZXMgaXQgYW4gZXZlbiBiZXR0ZXIgdGFyZ2V0LlxuXG5NeSBmb2N1cyBzaG91bGQgYmUgb24gdGhlc2Uga2V5IHN5bWJvbHM6IGBuZmNfbGxjcF9sb2NhbF9wdXRgLCBgbmZjX2xsY3BfYWNjZXB0X2RlcXVldWVgLCBhbmQgYG5mY19sbGNwX2FjY2VwdF91bmxpbmtgLiBUaGV5IGFyZSBsaWtlbHkgYXQgdGhlIGhlYXJ0IG9mIHRoZSBpc3N1ZSBhbmQgdW5kZXJzdGFuZGluZyB0aGVpciBiZWhhdmlvciB3aWxsIGJlIGNyaXRpY2FsIGZvciBlZmZlY3RpdmUgZnV6emluZy5cblxuQmVmb3JlIEkgY29tbWl0IHRvIHRoaXMsIEknbGwgcXVpY2tseSBzY2FuIHRoZSBleGlzdGluZyBjb25maWdzIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3Qgb3Zlcmxvb2tlZCBhbnkgb3RoZXIgcmVsZXZhbnQgb3B0aW9ucyB0aGF0IG1pZ2h0IGltcGFjdCB0aGUgdGVzdCBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI0MTcsIk91dHB1dFRva2VucyI6MTkyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA4OjQ5OjUyLjA4ODY2NTE3NFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczMzA3NDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19ESUdJVEFMXCIsXG4gICAgXCJORkNfU0lNXCIsXG4gICAgXCJORkNfTkNJXCIsXG4gICAgXCJORkNfVklSVFVBTF9OQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZmNfbGxjcF9sb2NhbF9wdXRcIixcbiAgICBcIm5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlXCIsXG4gICAgXCJuZmNfbGxjcF9hY2NlcHRfdW5saW5rXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbG9naWMgb2YgTkZDIExMQ1Agc29ja2V0cywgZml4aW5nIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIG9yIHVzZS1hZnRlci1mcmVlIGR1cmluZyBzb2NrZXQgcmVsZWFzZSBhbmQgYWNjZXB0IHF1ZXVlIGhhbmRsaW5nLiBJdCBpbnRyb2R1Y2VzIGEgd29ya3F1ZXVlIGZvciBsb2NhbCByZWxlYXNlIGFuZCBtb2RpZmllcyBzb2NrZXQgbG9ja2luZy4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHN0YW5kYXJkIHNvY2tldCBBUElzIHdoZW4gTkZDIGlzIGVuYWJsZWQuIFZpcnR1YWwgTkZDIGRldmljZXMgKE5GQ19TSU0sIE5GQ19WSVJUVUFMX05DSSkgY2FuIGJlIHVzZWQgdG8gdHJpZ2dlciB0aGlzIGNvZGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19ESUdJVEFMXCIsXG4gICAgXCJORkNfU0lNXCIsXG4gICAgXCJORkNfTkNJXCIsXG4gICAgXCJORkNfVklSVFVBTF9OQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZmNfbGxjcF9sb2NhbF9wdXRcIixcbiAgICBcIm5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlXCIsXG4gICAgXCJuZmNfbGxjcF9hY2NlcHRfdW5saW5rXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbG9naWMgb2YgTkZDIExMQ1Agc29ja2V0cywgZml4aW5nIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIG9yIHVzZS1hZnRlci1mcmVlIGR1cmluZyBzb2NrZXQgcmVsZWFzZSBhbmQgYWNjZXB0IHF1ZXVlIGhhbmRsaW5nLiBJdCBpbnRyb2R1Y2VzIGEgd29ya3F1ZXVlIGZvciBsb2NhbCByZWxlYXNlIGFuZCBtb2RpZmllcyBzb2NrZXQgbG9ja2luZy4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHN0YW5kYXJkIHNvY2tldCBBUElzIHdoZW4gTkZDIGlzIGVuYWJsZWQuIFZpcnR1YWwgTkZDIGRldmljZXMgKE5GQ19TSU0sIE5GQ19WSVJUVUFMX05DSSkgY2FuIGJlIHVzZWQgdG8gdHJpZ2dlciB0aGlzIGNvZGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDk6NTIuMTYxOTc5NjMzWiIsIlNlcSI6MzEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODAzMzExMDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDk6NTIuMTYyNDM4MDczWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjk4MDI4NDg5ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBsb2NraW5nLCByZWZlcmVuY2UgY291bnRpbmcsIGFuZCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgaW4gdGhlIE5GQyBMTENQIHNvY2tldCBsYXllci4gSXQgaW50cm9kdWNlcyBhIHdvcmtxdWV1ZSBmb3IgZGVmZXJyZWQgY2xlYW51cCwgbW9kaWZpZXMgc29ja2V0IGxpc3QgcG9wcGluZyB0byBhdm9pZCBkZWFkbG9ja3Mgb3IgVUFGLCBhbmQgZml4ZXMgYWNjZXB0IHF1ZXVlIGhhbmRsaW5nLiBUaGVyZSBhcmUgbm8gY2hhbmdlcyB0byBkYXRhIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMsIGFuZCBubyBtb2RpZmljYXRpb25zIHRvIGRhdGEgbGVuZ3RocyBvciBib3VuZHMgY2hlY2tzIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoZXNlIGNoYW5nZXMgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBvciBkZWFkbG9ja3MpIHdvdWxkIGJlIGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgTE9DS0RFUC4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDAxOTIwMzIzYjk1NDBmY2I2OGViOGUxZmFlZDAyNDQ3MDgyNjE2ZWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAyNiAwODo0ODozMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZmMvbGxjcC5oIGIvbmV0L25mYy9sbGNwLmhcbmluZGV4IGQ4MzQ1ZWQ1N2M5NTQuLjIzYWU3YTAxMTJkMzcgMTAwNjQ0XG4tLS0gYS9uZXQvbmZjL2xsY3AuaFxuKysrIGIvbmV0L25mYy9sbGNwLmhcbkBAIC05MSw2ICs5MSw3IEBAIHN0cnVjdCBuZmNfbGxjcF9sb2NhbCB7XG4gXHRzdHJ1Y3QgaGxpc3RfaGVhZCBwZW5kaW5nX3NkcmVxcztcbiBcdHN0cnVjdCB0aW1lcl9saXN0IHNkcmVxX3RpbWVyO1xuIFx0c3RydWN0IHdvcmtfc3RydWN0IHNkcmVxX3RpbWVvdXRfd29yaztcbitcdHN0cnVjdCB3b3JrX3N0cnVjdCByZWxlYXNlX3dvcms7XG4gXHR1OCBzZHJlcV9uZXh0X3RpZDtcbiBcbiBcdC8qIHNvY2tldHMgYXJyYXkgKi9cbmRpZmYgLS1naXQgYS9uZXQvbmZjL2xsY3BfY29yZS5jIGIvbmV0L25mYy9sbGNwX2NvcmUuY1xuaW5kZXggYmQ2MzYxZTJlZmE0Zi4uMmMyZGJjMTI1MzFlYyAxMDA2NDRcbi0tLSBhL25ldC9uZmMvbGxjcF9jb3JlLmNcbisrKyBiL25ldC9uZmMvbGxjcF9jb3JlLmNcbkBAIC0yMCw2ICsyMCw4IEBAIHN0YXRpYyBMSVNUX0hFQUQobGxjcF9kZXZpY2VzKTtcbiAvKiBQcm90ZWN0cyBsbGNwX2RldmljZXMgbGlzdCAqL1xuIHN0YXRpYyBERUZJTkVfU1BJTkxPQ0sobGxjcF9kZXZpY2VzX2xvY2spO1xuIFxuK3N0YXRpYyBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqbGxjcF93cTtcbitcbiBzdGF0aWMgdm9pZCBuZmNfbGxjcF9yeF9za2Ioc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG4gXG4gdm9pZCBuZmNfbGxjcF9zb2NrX2xpbmsoc3RydWN0IGxsY3Bfc29ja19saXN0ICpsLCBzdHJ1Y3Qgc29jayAqc2spXG5AQCAtNjMsMjEgKzY1LDMzIEBAIHN0YXRpYyB2b2lkIG5mY19sbGNwX3NvY2tldF9wdXJnZShzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqc29jaylcbiBcdH1cbiB9XG4gXG4rc3RhdGljIHN0cnVjdCBzb2NrICpuZmNfbGxjcF9zb2NrX2xpc3RfcG9wKHN0cnVjdCBsbGNwX3NvY2tfbGlzdCAqbClcbit7XG4rXHRzdHJ1Y3Qgc29jayAqc2s7XG4rXG4rXHR3cml0ZV9sb2NrKFx1MDAyNmwtXHUwMDNlbG9jayk7XG4rXHRzayA9IHNrX2hlYWQoXHUwMDI2bC1cdTAwM2VoZWFkKTtcbitcdGlmIChzaykge1xuK1x0XHRzb2NrX2hvbGQoc2spO1xuK1x0XHRza19kZWxfbm9kZV9pbml0KHNrKTtcbitcdH1cbitcdHdyaXRlX3VubG9jayhcdTAwMjZsLVx1MDAzZWxvY2spO1xuK1xuK1x0cmV0dXJuIHNrO1xuK31cbitcbiBzdGF0aWMgdm9pZCBuZmNfbGxjcF9zb2NrZXRfcmVsZWFzZShzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBib29sIGRldmljZSxcbiBcdFx0XHRcdCAgICBpbnQgZXJyKVxuIHtcbiBcdHN0cnVjdCBzb2NrICpzaztcbi1cdHN0cnVjdCBobGlzdF9ub2RlICp0bXA7XG4gXHRzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqbGxjcF9zb2NrO1xuIFxuIFx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmxvY2FsLVx1MDAzZXR4X3F1ZXVlKTtcbiBcbi1cdHdyaXRlX2xvY2soXHUwMDI2bG9jYWwtXHUwMDNlc29ja2V0cy5sb2NrKTtcbi1cbi1cdHNrX2Zvcl9lYWNoX3NhZmUoc2ssIHRtcCwgXHUwMDI2bG9jYWwtXHUwMDNlc29ja2V0cy5oZWFkKSB7XG4rXHR3aGlsZSAoKHNrID0gbmZjX2xsY3Bfc29ja19saXN0X3BvcChcdTAwMjZsb2NhbC1cdTAwM2Vzb2NrZXRzKSkpIHtcbiBcdFx0bGxjcF9zb2NrID0gbmZjX2xsY3Bfc29jayhzayk7XG4gXG4tXHRcdGJoX2xvY2tfc29jayhzayk7XG4rXHRcdGxvY2tfc29jayhzayk7XG4gXG4gXHRcdG5mY19sbGNwX3NvY2tldF9wdXJnZShsbGNwX3NvY2spO1xuIFxuQEAgLTkxLDE3ICsxMDUsMjcgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2Uoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgYm9vbCBkZXZpY2UsXG4gXHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGxzaywgbixcbiBcdFx0XHRcdFx0XHQgXHUwMDI2bGxjcF9zb2NrLVx1MDAzZWFjY2VwdF9xdWV1ZSxcbiBcdFx0XHRcdFx0XHQgYWNjZXB0X3F1ZXVlKSB7XG4tXHRcdFx0XHRhY2NlcHRfc2sgPSBcdTAwMjZsc2stXHUwMDNlc2s7XG4tXHRcdFx0XHRiaF9sb2NrX3NvY2soYWNjZXB0X3NrKTtcbi1cbi1cdFx0XHRcdG5mY19sbGNwX2FjY2VwdF91bmxpbmsoYWNjZXB0X3NrKTtcbitcdFx0XHRcdGJvb2wgcHV0X2NyZWF0aW9uID0gZmFsc2U7XG4gXG4tXHRcdFx0XHRpZiAoZXJyKVxuLVx0XHRcdFx0XHRhY2NlcHRfc2stXHUwMDNlc2tfZXJyID0gZXJyO1xuLVx0XHRcdFx0YWNjZXB0X3NrLVx1MDAzZXNrX3N0YXRlID0gTExDUF9DTE9TRUQ7XG4tXHRcdFx0XHRhY2NlcHRfc2stXHUwMDNlc2tfc3RhdGVfY2hhbmdlKHNrKTtcbitcdFx0XHRcdGFjY2VwdF9zayA9IFx1MDAyNmxzay1cdTAwM2VzaztcbitcdFx0XHRcdGxvY2tfc29ja19uZXN0ZWQoYWNjZXB0X3NrLFxuK1x0XHRcdFx0XHRcdCBTSU5HTEVfREVQVEhfTkVTVElORyk7XG4rXG4rXHRcdFx0XHRpZiAobmZjX2xsY3Bfc29jayhhY2NlcHRfc2spLVx1MDAzZXBhcmVudCA9PSBzaykge1xuK1x0XHRcdFx0XHRuZmNfbGxjcF9hY2NlcHRfdW5saW5rKGFjY2VwdF9zayk7XG4rXHRcdFx0XHRcdG5mY19sbGNwX3NvY2tfdW5saW5rKFx1MDAyNmxvY2FsLVx1MDAzZXNvY2tldHMsIGFjY2VwdF9zayk7XG4rXG4rXHRcdFx0XHRcdGlmIChlcnIpXG4rXHRcdFx0XHRcdFx0YWNjZXB0X3NrLVx1MDAzZXNrX2VyciA9IGVycjtcbitcdFx0XHRcdFx0YWNjZXB0X3NrLVx1MDAzZXNrX3N0YXRlID0gTExDUF9DTE9TRUQ7XG4rXHRcdFx0XHRcdGFjY2VwdF9zay1cdTAwM2Vza19zdGF0ZV9jaGFuZ2UoYWNjZXB0X3NrKTtcbitcdFx0XHRcdFx0c29ja19vcnBoYW4oYWNjZXB0X3NrKTtcbitcdFx0XHRcdFx0cHV0X2NyZWF0aW9uID0gdHJ1ZTtcbitcdFx0XHRcdH1cbiBcbi1cdFx0XHRcdGJoX3VubG9ja19zb2NrKGFjY2VwdF9zayk7XG4rXHRcdFx0XHRyZWxlYXNlX3NvY2soYWNjZXB0X3NrKTtcbitcdFx0XHRcdGlmIChwdXRfY3JlYXRpb24pXG4rXHRcdFx0XHRcdHNvY2tfcHV0KGFjY2VwdF9zayk7IC8qIGNyZWF0aW9uIHJlZiAqL1xuIFx0XHRcdH1cbiBcdFx0fVxuIFxuQEAgLTExMCwyMyArMTM0LDE4IEBAIHN0YXRpYyB2b2lkIG5mY19sbGNwX3NvY2tldF9yZWxlYXNlKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIGJvb2wgZGV2aWNlLFxuIFx0XHRzay1cdTAwM2Vza19zdGF0ZSA9IExMQ1BfQ0xPU0VEO1xuIFx0XHRzay1cdTAwM2Vza19zdGF0ZV9jaGFuZ2Uoc2spO1xuIFxuLVx0XHRiaF91bmxvY2tfc29jayhzayk7XG4tXG4tXHRcdHNrX2RlbF9ub2RlX2luaXQoc2spO1xuK1x0XHRyZWxlYXNlX3NvY2soc2spO1xuK1x0XHRzb2NrX3B1dChzayk7XG4gXHR9XG4gXG4tXHR3cml0ZV91bmxvY2soXHUwMDI2bG9jYWwtXHUwMDNlc29ja2V0cy5sb2NrKTtcbi1cbiBcdC8qIElmIHdlIHN0aWxsIGhhdmUgYSBkZXZpY2UsIHdlIGtlZXAgdGhlIFJBVyBzb2NrZXRzIGFsaXZlICovXG4gXHRpZiAoZGV2aWNlID09IHRydWUpXG4gXHRcdHJldHVybjtcbiBcbi1cdHdyaXRlX2xvY2soXHUwMDI2bG9jYWwtXHUwMDNlcmF3X3NvY2tldHMubG9jayk7XG4tXG4tXHRza19mb3JfZWFjaF9zYWZlKHNrLCB0bXAsIFx1MDAyNmxvY2FsLVx1MDAzZXJhd19zb2NrZXRzLmhlYWQpIHtcbitcdHdoaWxlICgoc2sgPSBuZmNfbGxjcF9zb2NrX2xpc3RfcG9wKFx1MDAyNmxvY2FsLVx1MDAzZXJhd19zb2NrZXRzKSkpIHtcbiBcdFx0bGxjcF9zb2NrID0gbmZjX2xsY3Bfc29jayhzayk7XG4gXG4tXHRcdGJoX2xvY2tfc29jayhzayk7XG4rXHRcdGxvY2tfc29jayhzayk7XG4gXG4gXHRcdG5mY19sbGNwX3NvY2tldF9wdXJnZShsbGNwX3NvY2spO1xuIFxuQEAgLTEzNSwyNiArMTU0LDIwIEBAIHN0YXRpYyB2b2lkIG5mY19sbGNwX3NvY2tldF9yZWxlYXNlKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIGJvb2wgZGV2aWNlLFxuIFx0XHRzay1cdTAwM2Vza19zdGF0ZSA9IExMQ1BfQ0xPU0VEO1xuIFx0XHRzay1cdTAwM2Vza19zdGF0ZV9jaGFuZ2Uoc2spO1xuIFxuLVx0XHRiaF91bmxvY2tfc29jayhzayk7XG4tXG4tXHRcdHNrX2RlbF9ub2RlX2luaXQoc2spO1xuK1x0XHRyZWxlYXNlX3NvY2soc2spO1xuK1x0XHRzb2NrX3B1dChzayk7XG4gXHR9XG4tXG4tXHR3cml0ZV91bmxvY2soXHUwMDI2bG9jYWwtXHUwMDNlcmF3X3NvY2tldHMubG9jayk7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKm5mY19sbGNwX2xvY2FsX2dldChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsKVxuIHtcbi1cdC8qIFNpbmNlIHVzaW5nIG5mY19sbGNwX2xvY2FsIG1heSByZXN1bHQgaW4gdXNhZ2Ugb2YgbmZjX2Rldiwgd2hlbmV2ZXJcbi1cdCAqIHdlIGhvbGQgYSByZWZlcmVuY2UgdG8gbG9jYWwsIHdlIGFsc28gbmVlZCB0byBob2xkIGEgcmVmZXJlbmNlIHRvXG4tXHQgKiB0aGUgZGV2aWNlIHRvIGF2b2lkIFVBRi5cbi1cdCAqL1xuLVx0aWYgKCFuZmNfZ2V0X2RldmljZShsb2NhbC1cdTAwM2VkZXYtXHUwMDNlaWR4KSlcbitcdGlmICghbG9jYWwpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuLVx0a3JlZl9nZXQoXHUwMDI2bG9jYWwtXHUwMDNlcmVmKTtcbitcdGlmIChrcmVmX2dldF91bmxlc3NfemVybyhcdTAwMjZsb2NhbC1cdTAwM2VyZWYpKVxuK1x0XHRyZXR1cm4gbG9jYWw7XG4gXG4tXHRyZXR1cm4gbG9jYWw7XG4rXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgbG9jYWxfY2xlYW51cChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsKVxuQEAgLTE3MiwzMCArMTg1LDM0IEBAIHN0YXRpYyB2b2lkIGxvY2FsX2NsZWFudXAoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbClcbiBcdG5mY19sbGNwX2ZyZWVfc2RwX3Rsdl9saXN0KFx1MDAyNmxvY2FsLVx1MDAzZXBlbmRpbmdfc2RyZXFzKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgbG9jYWxfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqcmVmKVxuK3N0YXRpYyB2b2lkIGxvY2FsX3JlbGVhc2Vfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4ge1xuIFx0c3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbDtcbitcdHN0cnVjdCBuZmNfZGV2ICpkZXY7XG4gXG4tXHRsb2NhbCA9IGNvbnRhaW5lcl9vZihyZWYsIHN0cnVjdCBuZmNfbGxjcF9sb2NhbCwgcmVmKTtcbitcdGxvY2FsID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZmNfbGxjcF9sb2NhbCwgcmVsZWFzZV93b3JrKTtcbitcdGRldiA9IGxvY2FsLVx1MDAzZWRldjtcbiBcbiBcdGxvY2FsX2NsZWFudXAobG9jYWwpO1xuIFx0a2ZyZWUobG9jYWwpO1xuK1x0bmZjX3B1dF9kZXZpY2UoZGV2KTtcbiB9XG4gXG4taW50IG5mY19sbGNwX2xvY2FsX3B1dChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsKVxuK3N0YXRpYyB2b2lkIGxvY2FsX3JlbGVhc2Uoc3RydWN0IGtyZWYgKnJlZilcbiB7XG4tXHRzdHJ1Y3QgbmZjX2RldiAqZGV2O1xuLVx0aW50IHJldDtcbitcdHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWw7XG4gXG4tXHRpZiAobG9jYWwgPT0gTlVMTClcbi1cdFx0cmV0dXJuIDA7XG4rXHRsb2NhbCA9IGNvbnRhaW5lcl9vZihyZWYsIHN0cnVjdCBuZmNfbGxjcF9sb2NhbCwgcmVmKTtcbiBcbi1cdGRldiA9IGxvY2FsLVx1MDAzZWRldjtcbitcdHF1ZXVlX3dvcmsobGxjcF93cSwgXHUwMDI2bG9jYWwtXHUwMDNlcmVsZWFzZV93b3JrKTtcbit9XG4gXG4tXHRyZXQgPSBrcmVmX3B1dChcdTAwMjZsb2NhbC1cdTAwM2VyZWYsIGxvY2FsX3JlbGVhc2UpO1xuLVx0bmZjX3B1dF9kZXZpY2UoZGV2KTtcbitpbnQgbmZjX2xsY3BfbG9jYWxfcHV0KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwpXG4re1xuK1x0aWYgKCFsb2NhbClcbitcdFx0cmV0dXJuIDA7XG4gXG4tXHRyZXR1cm4gcmV0O1xuK1x0cmV0dXJuIGtyZWZfcHV0KFx1MDAyNmxvY2FsLVx1MDAzZXJlZiwgbG9jYWxfcmVsZWFzZSk7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqbmZjX2xsY3Bfc29ja19nZXQoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCxcbkBAIC0xNzA1LDYgKzE3MjIsNyBAQCBpbnQgbmZjX2xsY3BfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBuZmNfZGV2ICpuZGV2KVxuIFx0SU5JVF9XT1JLKFx1MDAyNmxvY2FsLVx1MDAzZXJ4X3dvcmssIG5mY19sbGNwX3J4X3dvcmspO1xuIFxuIFx0SU5JVF9XT1JLKFx1MDAyNmxvY2FsLVx1MDAzZXRpbWVvdXRfd29yaywgbmZjX2xsY3BfdGltZW91dF93b3JrKTtcbitcdElOSVRfV09SSyhcdTAwMjZsb2NhbC1cdTAwM2VyZWxlYXNlX3dvcmssIGxvY2FsX3JlbGVhc2Vfd29yayk7XG4gXG4gXHRyd2xvY2tfaW5pdChcdTAwMjZsb2NhbC1cdTAwM2Vzb2NrZXRzLmxvY2spO1xuIFx0cndsb2NrX2luaXQoXHUwMDI2bG9jYWwtXHUwMDNlY29ubmVjdGluZ19zb2NrZXRzLmxvY2spO1xuQEAgLTE3NDgsMTAgKzE3NjYsMjMgQEAgdm9pZCBuZmNfbGxjcF91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmZjX2RldiAqZGV2KVxuIFxuIGludCBfX2luaXQgbmZjX2xsY3BfaW5pdCh2b2lkKVxuIHtcbi1cdHJldHVybiBuZmNfbGxjcF9zb2NrX2luaXQoKTtcbitcdGludCByZXQ7XG4rXG4rXHRsbGNwX3dxID0gYWxsb2Nfd29ya3F1ZXVlKFwibmZjX2xsY3Bfd3FcIiwgMCwgMCk7XG4rXHRpZiAoIWxsY3Bfd3EpXG4rXHRcdHJldHVybiAtRU5PTUVNO1xuK1xuK1x0cmV0ID0gbmZjX2xsY3Bfc29ja19pbml0KCk7XG4rXHRpZiAocmV0KSB7XG4rXHRcdGRlc3Ryb3lfd29ya3F1ZXVlKGxsY3Bfd3EpO1xuK1x0XHRyZXR1cm4gcmV0O1xuK1x0fVxuK1xuK1x0cmV0dXJuIDA7XG4gfVxuIFxuIHZvaWQgbmZjX2xsY3BfZXhpdCh2b2lkKVxuIHtcbiBcdG5mY19sbGNwX3NvY2tfZXhpdCgpO1xuK1x0ZGVzdHJveV93b3JrcXVldWUobGxjcF93cSk7XG4gfVxuZGlmZiAtLWdpdCBhL25ldC9uZmMvbGxjcF9zb2NrLmMgYi9uZXQvbmZjL2xsY3Bfc29jay5jXG5pbmRleCA1NTU4ZDhhNGQ0OGIzLi5jZTY4NzVlYjU4ZmJjIDEwMDY0NFxuLS0tIGEvbmV0L25mYy9sbGNwX3NvY2suY1xuKysrIGIvbmV0L25mYy9sbGNwX3NvY2suY1xuQEAgLTM5MiwxMSArMzkyLDEyIEBAIHZvaWQgbmZjX2xsY3BfYWNjZXB0X3VubGluayhzdHJ1Y3Qgc29jayAqc2spXG4gXG4gXHRwcl9kZWJ1ZyhcInN0YXRlICVkXFxuXCIsIHNrLVx1MDAzZXNrX3N0YXRlKTtcbiBcbi1cdGxpc3RfZGVsX2luaXQoXHUwMDI2bGxjcF9zb2NrLVx1MDAzZWFjY2VwdF9xdWV1ZSk7XG4tXHRza19hY2NlcHRxX3JlbW92ZWQobGxjcF9zb2NrLVx1MDAzZXBhcmVudCk7XG4tXHRsbGNwX3NvY2stXHUwMDNlcGFyZW50ID0gTlVMTDtcbi1cbi1cdHNvY2tfcHV0KHNrKTtcbitcdGlmIChsbGNwX3NvY2stXHUwMDNlcGFyZW50KSB7XG4rXHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2bGxjcF9zb2NrLVx1MDAzZWFjY2VwdF9xdWV1ZSk7XG4rXHRcdHNrX2FjY2VwdHFfcmVtb3ZlZChsbGNwX3NvY2stXHUwMDNlcGFyZW50KTtcbitcdFx0bGxjcF9zb2NrLVx1MDAzZXBhcmVudCA9IE5VTEw7XG4rXHRcdHNvY2tfcHV0KHNrKTtcbitcdH1cbiB9XG4gXG4gdm9pZCBuZmNfbGxjcF9hY2NlcHRfZW5xdWV1ZShzdHJ1Y3Qgc29jayAqcGFyZW50LCBzdHJ1Y3Qgc29jayAqc2spXG5AQCAtNDIzLDEyICs0MjQsMjAgQEAgc3RydWN0IHNvY2sgKm5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlKHN0cnVjdCBzb2NrICpwYXJlbnQsXG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobHNrLCBuLCBcdTAwMjZsbGNwX3BhcmVudC1cdTAwM2VhY2NlcHRfcXVldWUsXG4gXHRcdFx0XHQgYWNjZXB0X3F1ZXVlKSB7XG4rXHRcdHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWw7XG4rXG4gXHRcdHNrID0gXHUwMDI2bHNrLVx1MDAzZXNrO1xuLVx0XHRsb2NrX3NvY2soc2spO1xuK1x0XHRsb2NrX3NvY2tfbmVzdGVkKHNrLCBTSU5HTEVfREVQVEhfTkVTVElORyk7XG4gXG4gXHRcdGlmIChzay1cdTAwM2Vza19zdGF0ZSA9PSBMTENQX0NMT1NFRCkge1xuLVx0XHRcdHJlbGVhc2Vfc29jayhzayk7XG4rXHRcdFx0bG9jYWwgPSBuZmNfbGxjcF9zb2NrKHNrKS1cdTAwM2Vsb2NhbDtcbitcbiBcdFx0XHRuZmNfbGxjcF9hY2NlcHRfdW5saW5rKHNrKTtcbitcdFx0XHRpZiAobG9jYWwpXG4rXHRcdFx0XHRuZmNfbGxjcF9zb2NrX3VubGluayhcdTAwMjZsb2NhbC1cdTAwM2Vzb2NrZXRzLCBzayk7XG4rXHRcdFx0c29ja19vcnBoYW4oc2spO1xuK1x0XHRcdHJlbGVhc2Vfc29jayhzayk7XG4rXHRcdFx0c29ja19wdXQoc2spO1xuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHR9XG4gXG5AQCAtNDY0LDcgKzQ3Myw3IEBAIHN0YXRpYyBpbnQgbGxjcF9zb2NrX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLFxuIFxuIFx0cHJfZGVidWcoXCJwYXJlbnQgJXBcXG5cIiwgc2spO1xuIFxuLVx0bG9ja19zb2NrX25lc3RlZChzaywgU0lOR0xFX0RFUFRIX05FU1RJTkcpO1xuK1x0bG9ja19zb2NrKHNrKTtcbiBcbiBcdGlmIChzay1cdTAwM2Vza19zdGF0ZSAhPSBMTENQX0xJU1RFTikge1xuIFx0XHRyZXQgPSAtRUJBREZEO1xuQEAgLTQ5MCw3ICs0OTksMTIgQEAgc3RhdGljIGludCBsbGNwX3NvY2tfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssXG4gXG4gXHRcdHJlbGVhc2Vfc29jayhzayk7XG4gXHRcdHRpbWVvID0gc2NoZWR1bGVfdGltZW91dCh0aW1lbyk7XG4tXHRcdGxvY2tfc29ja19uZXN0ZWQoc2ssIFNJTkdMRV9ERVBUSF9ORVNUSU5HKTtcbitcdFx0bG9ja19zb2NrKHNrKTtcbitcbitcdFx0aWYgKHNrLVx1MDAzZXNrX3N0YXRlICE9IExMQ1BfTElTVEVOKSB7XG4rXHRcdFx0cmV0ID0gLUVCQURGRDtcbitcdFx0XHRicmVhaztcbitcdFx0fVxuIFx0fVxuIFx0X19zZXRfY3VycmVudF9zdGF0ZShUQVNLX1JVTk5JTkcpO1xuIFx0cmVtb3ZlX3dhaXRfcXVldWUoc2tfc2xlZXAoc2spLCBcdTAwMjZ3YWl0KTtcbkBAIC02MjksMTMgKzY0MywyNCBAQCBzdGF0aWMgaW50IGxsY3Bfc29ja19yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXG4gXG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShsc2ssIG4sIFx1MDAyNmxsY3Bfc29jay1cdTAwM2VhY2NlcHRfcXVldWUsXG4gXHRcdFx0XHRcdCBhY2NlcHRfcXVldWUpIHtcbitcdFx0XHRib29sIHB1dF9jcmVhdGlvbiA9IGZhbHNlO1xuK1xuIFx0XHRcdGFjY2VwdF9zayA9IFx1MDAyNmxzay1cdTAwM2Vzaztcbi1cdFx0XHRsb2NrX3NvY2soYWNjZXB0X3NrKTtcbitcdFx0XHRsb2NrX3NvY2tfbmVzdGVkKGFjY2VwdF9zaywgU0lOR0xFX0RFUFRIX05FU1RJTkcpO1xuIFxuLVx0XHRcdG5mY19sbGNwX3NlbmRfZGlzY29ubmVjdChsc2spO1xuLVx0XHRcdG5mY19sbGNwX2FjY2VwdF91bmxpbmsoYWNjZXB0X3NrKTtcbitcdFx0XHRpZiAobmZjX2xsY3Bfc29jayhhY2NlcHRfc2spLVx1MDAzZXBhcmVudCA9PSBzaykge1xuK1x0XHRcdFx0bmZjX2xsY3Bfc2VuZF9kaXNjb25uZWN0KGxzayk7XG4rXHRcdFx0XHRuZmNfbGxjcF9hY2NlcHRfdW5saW5rKGFjY2VwdF9zayk7XG4rXHRcdFx0XHRuZmNfbGxjcF9zb2NrX3VubGluayhcdTAwMjZsb2NhbC1cdTAwM2Vzb2NrZXRzLCBhY2NlcHRfc2spO1xuK1xuK1x0XHRcdFx0YWNjZXB0X3NrLVx1MDAzZXNrX3N0YXRlID0gTExDUF9DTE9TRUQ7XG4rXHRcdFx0XHRzb2NrX29ycGhhbihhY2NlcHRfc2spO1xuK1x0XHRcdFx0cHV0X2NyZWF0aW9uID0gdHJ1ZTtcbitcdFx0XHR9XG4gXG4gXHRcdFx0cmVsZWFzZV9zb2NrKGFjY2VwdF9zayk7XG4rXHRcdFx0aWYgKHB1dF9jcmVhdGlvbilcbitcdFx0XHRcdHNvY2tfcHV0KGFjY2VwdF9zayk7IC8qIGNyZWF0aW9uIHJlZiAqL1xuIFx0XHR9XG4gXHR9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwODo0OTo1Mi4xNjI0MzkwMjNaIiwiU2VxIjozMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTgwMjgyOTgxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBORkMgTExDUCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUganVzdCByZXZpZXdlZCB0aGlzIHBhdGNoIGZvciB0aGUgTkZDIExMQ1Agc3Vic3lzdGVtLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBpdCdzIGZvY3VzZWQgb24gc29tZSBjcnVjaWFsLCBidXQgdmVyeSB0YXJnZXRlZCwgZml4ZXMuIEl0J3MgZXNzZW50aWFsbHkgYSBkZWVwIGRpdmUgaW50byBzb2NrZXQgbGlmZWN5Y2xlIG1hbmFnZW1lbnQsIHBhcnRpY3VsYXJseSBhcm91bmQgbG9ja2luZywgcmVmZXJlbmNlIGNvdW50aW5nLCBhbmQgY2xlYW51cCBwcm9jZWR1cmVzLiBJdCdzIHRvdWNoaW5nIGNvcmUgZnVuY3Rpb25zOiBgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2VgLCBgbmZjX2xsY3BfbG9jYWxfZ2V0YCwgYGxvY2FsX3JlbGVhc2Vfd29ya2AsIGBuZmNfbGxjcF9sb2NhbF9wdXRgLCAgYG5mY19sbGNwX2FjY2VwdF91bmxpbmtgLCBgbmZjX2xsY3BfYWNjZXB0X2RlcXVldWVgLCBgbGxjcF9zb2NrX2FjY2VwdGAsIGFuZCBgbGxjcF9zb2NrX3JlbGVhc2VgIChhbG9uZyB3aXRoIGBuZmNfbGxjcF9pbml0YCBhbmQgYG5mY19sbGNwX2V4aXRgKS4gSSBjYW4gc2VlIHRoYXQgdGhlcmUncyBhIGRlZmluaXRlIGZvY3VzIG9uIGltcHJvdmluZyBzb2NrZXQgc3RhdGUgaGFuZGxpbmcgYW5kIHByZXZlbnRpbmcgaXNzdWVzIGxpa2UgdXNlLWFmdGVyLWZyZWUgY29uZGl0aW9ucyBhbmQgcmFjZSBjb25kaXRpb25zLiBUaGUgaW50cm9kdWN0aW9uIG9mIGByZWxlYXNlX3dvcmtgIGFuZCBkZWZlcnJpbmcgdGhlIGxvY2FsIHJlbGVhc2UgdG8gYSB3b3JrcXVldWUgKGBsbGNwX3dxYCkgaXMgYSBrZXkgaW5kaWNhdG9yIG9mIHRoaXMgcmVmYWN0b3JpbmcuIEknbSBhbHNvIHNlZWluZyBzb21lIGltcHJvdmVtZW50cyB0byB0aGUgbG9ja2luZyBwcmltaXRpdmVzIGJlaW5nIHVzZWQsIHN1Y2ggYXMgYGxvY2tfc29ja2Agb3ZlciBgbG9ja19zb2NrX25lc3RlZGAgaW4gYGxsY3Bfc29ja19hY2NlcHRgLlxuXG5NeSBtYWluIGNvbmNlcm4sIGFzIGFsd2F5cywgaXMgd2hldGhlciB0aGVzZSBjaGFuZ2VzIGludHJvZHVjZSBhbnkgbmV3IHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcywgcGFydGljdWxhcmx5IHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkgZXhwb3N1cmUgb3IgaW5mb3JtYXRpb24gbGVha3MuIEhvd2V2ZXIsIGFmdGVyIGNhcmVmdWwgcmV2aWV3LCBJJ20gY29uZmlkZW50IHRoYXQgdGhlIGFuc3dlciBpcyBuby4gVGhpcyBwYXRjaCBkb2Vzbid0IGludm9sdmUgYW55IGNoYW5nZXMgdGhhdCBpbnZvbHZlIHNlbmRpbmcgbmV3IGRhdGEgc3RydWN0dXJlcyB0byB1c2VyIHNwYWNlLCBub3IgaXMgaXQgcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSwgb3IgYWxsb2NhdGluZyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHVuaW5pdGlhbGl6ZWQgZmllbGRzLiBUaGVzZSBtb2RpZmljYXRpb25zIGFyZSBwdXJlbHkgY29udHJvbCBwbGFuZSBvcGVyYXRpb25zLCBjb25jZXJuZWQgd2l0aCB0aGUgbWFuYWdlbWVudCBvZiBzb2NrZXQgbGlmZWN5Y2xlLiBUaGVyZSdzIG5vIGRhdGEgY29weWluZyBvciBkaXJlY3QgaW50ZXJhY3Rpb24gd2l0aCB1c2VyIHNwYWNlIGRhdGEgdGhhdCB3b3VsZCBuZWNlc3NpdGF0ZSBLTVNBTi5cblxuU2luY2UgdGhlc2UgY2hhbmdlcyBhcmUgYWxsIGFib3V0IHNvY2tldCBzdGF0ZSwgbG9ja2luZywgYW5kIHJlZmVyZW5jZSBjb3VudGluZywgc3RhbmRhcmQgS0FTQU4sIExPQ0tERVAsIGFuZCBLQ1NBTiBzaG91bGQgYmUgcGVyZmVjdGx5IGFkZXF1YXRlIHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgaXNzdWVzIOKAkyBzdWNoIGFzIFVBRiwgZGVhZGxvY2tzLCBvciBkYXRhIHJhY2VzLiBUaGVyZWZvcmUsIEknbSBjb21mb3J0YWJsZSBzZXR0aW5nIGBOZWVkc0tNU0FOPWZhbHNlYCBmb3IgdGhpcyBvbmUuIEkndmUgZG91YmxlLWNoZWNrZWQgdGhhdCBhbGwgb2YgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucywgaW5jbHVkaW5nIHRoZSBvbmVzIG1lbnRpb25lZCBhYm92ZSwgZG9uJ3QgZGVhbCB3aXRoIGNvcHlpbmcgZGF0YSB0byB1c2VyIHNwYWNlIG9yIHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXkgYXJlIGNsZWFybHkgZm9jdXNlZCBvbiBpbnRlcm5hbCBzb2NrZXQgc3RhdGUgbWFuYWdlbWVudCBhbmQgY2xlYW51cC4gU28sIEtNU0FOIGlzIG5vdCBuZWNlc3NhcnkgaGVyZS4gSSB0aGluayB0aGlzIHBhdGNoIGlzIGEgZ29vZCBzZXQgb2YgZml4ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2MzQsIk91dHB1dFRva2VucyI6MTU2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTU0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NTA6MDEuOTY1MjcxNjQ0WiIsIlNlcSI6MzQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM4NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgbG9ja2luZywgcmVmZXJlbmNlIGNvdW50aW5nLCBhbmQgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGluIHRoZSBORkMgTExDUCBzb2NrZXQgbGF5ZXIuIEl0IGludHJvZHVjZXMgYSB3b3JrcXVldWUgZm9yIGRlZmVycmVkIGNsZWFudXAsIG1vZGlmaWVzIHNvY2tldCBsaXN0IHBvcHBpbmcgdG8gYXZvaWQgZGVhZGxvY2tzIG9yIFVBRiwgYW5kIGZpeGVzIGFjY2VwdCBxdWV1ZSBoYW5kbGluZy4gVGhlcmUgYXJlIG5vIGNoYW5nZXMgdG8gZGF0YSBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBubyBuZXcgYnVmZmVyIGFsbG9jYXRpb25zLCBhbmQgbm8gbW9kaWZpY2F0aW9ucyB0byBkYXRhIGxlbmd0aHMgb3IgYm91bmRzIGNoZWNrcyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgb3IgZGVhZGxvY2tzKSB3b3VsZCBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgbG9ja2luZywgcmVmZXJlbmNlIGNvdW50aW5nLCBhbmQgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGluIHRoZSBORkMgTExDUCBzb2NrZXQgbGF5ZXIuIEl0IGludHJvZHVjZXMgYSB3b3JrcXVldWUgZm9yIGRlZmVycmVkIGNsZWFudXAsIG1vZGlmaWVzIHNvY2tldCBsaXN0IHBvcHBpbmcgdG8gYXZvaWQgZGVhZGxvY2tzIG9yIFVBRiwgYW5kIGZpeGVzIGFjY2VwdCBxdWV1ZSBoYW5kbGluZy4gVGhlcmUgYXJlIG5vIGNoYW5nZXMgdG8gZGF0YSBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBubyBuZXcgYnVmZmVyIGFsbG9jYXRpb25zLCBhbmQgbm8gbW9kaWZpY2F0aW9ucyB0byBkYXRhIGxlbmd0aHMgb3IgYm91bmRzIGNoZWNrcyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgb3IgZGVhZGxvY2tzKSB3b3VsZCBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowwxpms[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-26 08:03:08 +0000 UTC FinishedAt: 2026-08-26 08:50:03 +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": "a8406e6c0b793ce0788019683837c40855b55995", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_DIGITAL", "NFC_SIM", "NFC_NCI", "NFC_VIRTUAL_NCI" ], "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": "a8406e6c0b793ce0788019683837c40855b55995", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NFC", "NFC_DIGITAL", "NFC_SIM", "NFC_NCI", "NFC_VIRTUAL_NCI" ], "series_id": "6f4e9aed-2eea-44c2-8ef0-04ce578d399f" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nfc_llcp_local_put", "nfc_llcp_accept_dequeue", "nfc_llcp_accept_unlink" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI2IDA4OjQ4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GQyYjMzQ7LAogICAgJiMzNDtORkNfRElHSVRBTCYjMzQ7LAogICAgJiMzNDtORkNfU0lNJiMzNDssCiAgICAmIzM0O05GQ19OQ0kmIzM0OywKICAgICYjMzQ7TkZDX1ZJUlRVQUxfTkNJJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZjX2xsY3BfbG9jYWxfcHV0JiMzNDssCiAgICAmIzM0O25mY19sbGNwX2FjY2VwdF9kZXF1ZXVlJiMzNDssCiAgICAmIzM0O25mY19sbGNwX2FjY2VwdF91bmxpbmsmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgbG9ja2luZywgcmVmZXJlbmNlIGNvdW50aW5nLCBhbmQgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGluIHRoZSBORkMgTExDUCBzb2NrZXQgbGF5ZXIuIEl0IGludHJvZHVjZXMgYSB3b3JrcXVldWUgZm9yIGRlZmVycmVkIGNsZWFudXAsIG1vZGlmaWVzIHNvY2tldCBsaXN0IHBvcHBpbmcgdG8gYXZvaWQgZGVhZGxvY2tzIG9yIFVBRiwgYW5kIGZpeGVzIGFjY2VwdCBxdWV1ZSBoYW5kbGluZy4gVGhlcmUgYXJlIG5vIGNoYW5nZXMgdG8gZGF0YSBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBubyBuZXcgYnVmZmVyIGFsbG9jYXRpb25zLCBhbmQgbm8gbW9kaWZpY2F0aW9ucyB0byBkYXRhIGxlbmd0aHMgb3IgYm91bmRzIGNoZWNrcyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgb3IgZGVhZGxvY2tzKSB3b3VsZCBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbG9naWMgb2YgTkZDIExMQ1Agc29ja2V0cywgZml4aW5nIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIG9yIHVzZS1hZnRlci1mcmVlIGR1cmluZyBzb2NrZXQgcmVsZWFzZSBhbmQgYWNjZXB0IHF1ZXVlIGhhbmRsaW5nLiBJdCBpbnRyb2R1Y2VzIGEgd29ya3F1ZXVlIGZvciBsb2NhbCByZWxlYXNlIGFuZCBtb2RpZmllcyBzb2NrZXQgbG9ja2luZy4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHN0YW5kYXJkIHNvY2tldCBBUElzIHdoZW4gTkZDIGlzIGVuYWJsZWQuIFZpcnR1YWwgTkZDIGRldmljZXMgKE5GQ19TSU0sIE5GQ19WSVJUVUFMX05DSSkgY2FuIGJlIHVzZWQgdG8gdHJpZ2dlciB0aGlzIGNvZGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0ODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDAxOTIwMzIzYjk1NDBmY2I2OGViOGUxZmFlZDAyNDQ3MDgyNjE2ZWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAyNiAwODo0ODozMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmZjL2xsY3AuaCBiL25ldC9uZmMvbGxjcC5oXG5pbmRleCBkODM0NWVkNTdjOTU0Li4yM2FlN2EwMTEyZDM3IDEwMDY0NFxuLS0tIGEvbmV0L25mYy9sbGNwLmhcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZmMvbGxjcC5oXG5AQCAtOTEsNiAmIzQzOzkxLDcgQEAgc3RydWN0IG5mY19sbGNwX2xvY2FsIHtcbiBcdHN0cnVjdCBobGlzdF9oZWFkIHBlbmRpbmdfc2RyZXFzO1xuIFx0c3RydWN0IHRpbWVyX2xpc3Qgc2RyZXFfdGltZXI7XG4gXHRzdHJ1Y3Qgd29ya19zdHJ1Y3Qgc2RyZXFfdGltZW91dF93b3JrO1xuJiM0MztcdHN0cnVjdCB3b3JrX3N0cnVjdCByZWxlYXNlX3dvcms7XG4gXHR1OCBzZHJlcV9uZXh0X3RpZDtcbiBcbiBcdC8qIHNvY2tldHMgYXJyYXkgKi9cbmRpZmYgLS1naXQgYS9uZXQvbmZjL2xsY3BfY29yZS5jIGIvbmV0L25mYy9sbGNwX2NvcmUuY1xuaW5kZXggYmQ2MzYxZTJlZmE0Zi4uMmMyZGJjMTI1MzFlYyAxMDA2NDRcbi0tLSBhL25ldC9uZmMvbGxjcF9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZmMvbGxjcF9jb3JlLmNcbkBAIC0yMCw2ICYjNDM7MjAsOCBAQCBzdGF0aWMgTElTVF9IRUFEKGxsY3BfZGV2aWNlcyk7XG4gLyogUHJvdGVjdHMgbGxjcF9kZXZpY2VzIGxpc3QgKi9cbiBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKGxsY3BfZGV2aWNlc19sb2NrKTtcbiBcbiYjNDM7c3RhdGljIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpsbGNwX3dxO1xuJiM0MztcbiBzdGF0aWMgdm9pZCBuZmNfbGxjcF9yeF9za2Ioc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG4gXG4gdm9pZCBuZmNfbGxjcF9zb2NrX2xpbmsoc3RydWN0IGxsY3Bfc29ja19saXN0ICpsLCBzdHJ1Y3Qgc29jayAqc2spXG5AQCAtNjMsMjEgJiM0Mzs2NSwzMyBAQCBzdGF0aWMgdm9pZCBuZmNfbGxjcF9zb2NrZXRfcHVyZ2Uoc3RydWN0IG5mY19sbGNwX3NvY2sgKnNvY2spXG4gXHR9XG4gfVxuIFxuJiM0MztzdGF0aWMgc3RydWN0IHNvY2sgKm5mY19sbGNwX3NvY2tfbGlzdF9wb3Aoc3RydWN0IGxsY3Bfc29ja19saXN0ICpsKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHNvY2sgKnNrO1xuJiM0MztcbiYjNDM7XHR3cml0ZV9sb2NrKFx1MDAyNmwtXHUwMDNlbG9jayk7XG4mIzQzO1x0c2sgPSBza19oZWFkKFx1MDAyNmwtXHUwMDNlaGVhZCk7XG4mIzQzO1x0aWYgKHNrKSB7XG4mIzQzO1x0XHRzb2NrX2hvbGQoc2spO1xuJiM0MztcdFx0c2tfZGVsX25vZGVfaW5pdChzayk7XG4mIzQzO1x0fVxuJiM0MztcdHdyaXRlX3VubG9jayhcdTAwMjZsLVx1MDAzZWxvY2spO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gc2s7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2Uoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgYm9vbCBkZXZpY2UsXG4gXHRcdFx0XHQgICAgaW50IGVycilcbiB7XG4gXHRzdHJ1Y3Qgc29jayAqc2s7XG4tXHRzdHJ1Y3QgaGxpc3Rfbm9kZSAqdG1wO1xuIFx0c3RydWN0IG5mY19sbGNwX3NvY2sgKmxsY3Bfc29jaztcbiBcbiBcdHNrYl9xdWV1ZV9wdXJnZShcdTAwMjZsb2NhbC1cdTAwM2V0eF9xdWV1ZSk7XG4gXG4tXHR3cml0ZV9sb2NrKFx1MDAyNmxvY2FsLVx1MDAzZXNvY2tldHMubG9jayk7XG4tXG4tXHRza19mb3JfZWFjaF9zYWZlKHNrLCB0bXAsIFx1MDAyNmxvY2FsLVx1MDAzZXNvY2tldHMuaGVhZCkge1xuJiM0MztcdHdoaWxlICgoc2sgPSBuZmNfbGxjcF9zb2NrX2xpc3RfcG9wKFx1MDAyNmxvY2FsLVx1MDAzZXNvY2tldHMpKSkge1xuIFx0XHRsbGNwX3NvY2sgPSBuZmNfbGxjcF9zb2NrKHNrKTtcbiBcbi1cdFx0YmhfbG9ja19zb2NrKHNrKTtcbiYjNDM7XHRcdGxvY2tfc29jayhzayk7XG4gXG4gXHRcdG5mY19sbGNwX3NvY2tldF9wdXJnZShsbGNwX3NvY2spO1xuIFxuQEAgLTkxLDE3ICYjNDM7MTA1LDI3IEBAIHN0YXRpYyB2b2lkIG5mY19sbGNwX3NvY2tldF9yZWxlYXNlKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIGJvb2wgZGV2aWNlLFxuIFx0XHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShsc2ssIG4sXG4gXHRcdFx0XHRcdFx0IFx1MDAyNmxsY3Bfc29jay1cdTAwM2VhY2NlcHRfcXVldWUsXG4gXHRcdFx0XHRcdFx0IGFjY2VwdF9xdWV1ZSkge1xuLVx0XHRcdFx0YWNjZXB0X3NrID0gXHUwMDI2bHNrLVx1MDAzZXNrO1xuLVx0XHRcdFx0YmhfbG9ja19zb2NrKGFjY2VwdF9zayk7XG4tXG4tXHRcdFx0XHRuZmNfbGxjcF9hY2NlcHRfdW5saW5rKGFjY2VwdF9zayk7XG4mIzQzO1x0XHRcdFx0Ym9vbCBwdXRfY3JlYXRpb24gPSBmYWxzZTtcbiBcbi1cdFx0XHRcdGlmIChlcnIpXG4tXHRcdFx0XHRcdGFjY2VwdF9zay1cdTAwM2Vza19lcnIgPSBlcnI7XG4tXHRcdFx0XHRhY2NlcHRfc2stXHUwMDNlc2tfc3RhdGUgPSBMTENQX0NMT1NFRDtcbi1cdFx0XHRcdGFjY2VwdF9zay1cdTAwM2Vza19zdGF0ZV9jaGFuZ2Uoc2spO1xuJiM0MztcdFx0XHRcdGFjY2VwdF9zayA9IFx1MDAyNmxzay1cdTAwM2VzaztcbiYjNDM7XHRcdFx0XHRsb2NrX3NvY2tfbmVzdGVkKGFjY2VwdF9zayxcbiYjNDM7XHRcdFx0XHRcdFx0IFNJTkdMRV9ERVBUSF9ORVNUSU5HKTtcbiYjNDM7XG4mIzQzO1x0XHRcdFx0aWYgKG5mY19sbGNwX3NvY2soYWNjZXB0X3NrKS1cdTAwM2VwYXJlbnQgPT0gc2spIHtcbiYjNDM7XHRcdFx0XHRcdG5mY19sbGNwX2FjY2VwdF91bmxpbmsoYWNjZXB0X3NrKTtcbiYjNDM7XHRcdFx0XHRcdG5mY19sbGNwX3NvY2tfdW5saW5rKFx1MDAyNmxvY2FsLVx1MDAzZXNvY2tldHMsIGFjY2VwdF9zayk7XG4mIzQzO1xuJiM0MztcdFx0XHRcdFx0aWYgKGVycilcbiYjNDM7XHRcdFx0XHRcdFx0YWNjZXB0X3NrLVx1MDAzZXNrX2VyciA9IGVycjtcbiYjNDM7XHRcdFx0XHRcdGFjY2VwdF9zay1cdTAwM2Vza19zdGF0ZSA9IExMQ1BfQ0xPU0VEO1xuJiM0MztcdFx0XHRcdFx0YWNjZXB0X3NrLVx1MDAzZXNrX3N0YXRlX2NoYW5nZShhY2NlcHRfc2spO1xuJiM0MztcdFx0XHRcdFx0c29ja19vcnBoYW4oYWNjZXB0X3NrKTtcbiYjNDM7XHRcdFx0XHRcdHB1dF9jcmVhdGlvbiA9IHRydWU7XG4mIzQzO1x0XHRcdFx0fVxuIFxuLVx0XHRcdFx0YmhfdW5sb2NrX3NvY2soYWNjZXB0X3NrKTtcbiYjNDM7XHRcdFx0XHRyZWxlYXNlX3NvY2soYWNjZXB0X3NrKTtcbiYjNDM7XHRcdFx0XHRpZiAocHV0X2NyZWF0aW9uKVxuJiM0MztcdFx0XHRcdFx0c29ja19wdXQoYWNjZXB0X3NrKTsgLyogY3JlYXRpb24gcmVmICovXG4gXHRcdFx0fVxuIFx0XHR9XG4gXG5AQCAtMTEwLDIzICYjNDM7MTM0LDE4IEBAIHN0YXRpYyB2b2lkIG5mY19sbGNwX3NvY2tldF9yZWxlYXNlKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIGJvb2wgZGV2aWNlLFxuIFx0XHRzay1cdTAwM2Vza19zdGF0ZSA9IExMQ1BfQ0xPU0VEO1xuIFx0XHRzay1cdTAwM2Vza19zdGF0ZV9jaGFuZ2Uoc2spO1xuIFxuLVx0XHRiaF91bmxvY2tfc29jayhzayk7XG4tXG4tXHRcdHNrX2RlbF9ub2RlX2luaXQoc2spO1xuJiM0MztcdFx0cmVsZWFzZV9zb2NrKHNrKTtcbiYjNDM7XHRcdHNvY2tfcHV0KHNrKTtcbiBcdH1cbiBcbi1cdHdyaXRlX3VubG9jayhcdTAwMjZsb2NhbC1cdTAwM2Vzb2NrZXRzLmxvY2spO1xuLVxuIFx0LyogSWYgd2Ugc3RpbGwgaGF2ZSBhIGRldmljZSwgd2Uga2VlcCB0aGUgUkFXIHNvY2tldHMgYWxpdmUgKi9cbiBcdGlmIChkZXZpY2UgPT0gdHJ1ZSlcbiBcdFx0cmV0dXJuO1xuIFxuLVx0d3JpdGVfbG9jayhcdTAwMjZsb2NhbC1cdTAwM2VyYXdfc29ja2V0cy5sb2NrKTtcbi1cbi1cdHNrX2Zvcl9lYWNoX3NhZmUoc2ssIHRtcCwgXHUwMDI2bG9jYWwtXHUwMDNlcmF3X3NvY2tldHMuaGVhZCkge1xuJiM0MztcdHdoaWxlICgoc2sgPSBuZmNfbGxjcF9zb2NrX2xpc3RfcG9wKFx1MDAyNmxvY2FsLVx1MDAzZXJhd19zb2NrZXRzKSkpIHtcbiBcdFx0bGxjcF9zb2NrID0gbmZjX2xsY3Bfc29jayhzayk7XG4gXG4tXHRcdGJoX2xvY2tfc29jayhzayk7XG4mIzQzO1x0XHRsb2NrX3NvY2soc2spO1xuIFxuIFx0XHRuZmNfbGxjcF9zb2NrZXRfcHVyZ2UobGxjcF9zb2NrKTtcbiBcbkBAIC0xMzUsMjYgJiM0MzsxNTQsMjAgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2Uoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgYm9vbCBkZXZpY2UsXG4gXHRcdHNrLVx1MDAzZXNrX3N0YXRlID0gTExDUF9DTE9TRUQ7XG4gXHRcdHNrLVx1MDAzZXNrX3N0YXRlX2NoYW5nZShzayk7XG4gXG4tXHRcdGJoX3VubG9ja19zb2NrKHNrKTtcbi1cbi1cdFx0c2tfZGVsX25vZGVfaW5pdChzayk7XG4mIzQzO1x0XHRyZWxlYXNlX3NvY2soc2spO1xuJiM0MztcdFx0c29ja19wdXQoc2spO1xuIFx0fVxuLVxuLVx0d3JpdGVfdW5sb2NrKFx1MDAyNmxvY2FsLVx1MDAzZXJhd19zb2NrZXRzLmxvY2spO1xuIH1cbiBcbiBzdGF0aWMgc3RydWN0IG5mY19sbGNwX2xvY2FsICpuZmNfbGxjcF9sb2NhbF9nZXQoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbClcbiB7XG4tXHQvKiBTaW5jZSB1c2luZyBuZmNfbGxjcF9sb2NhbCBtYXkgcmVzdWx0IGluIHVzYWdlIG9mIG5mY19kZXYsIHdoZW5ldmVyXG4tXHQgKiB3ZSBob2xkIGEgcmVmZXJlbmNlIHRvIGxvY2FsLCB3ZSBhbHNvIG5lZWQgdG8gaG9sZCBhIHJlZmVyZW5jZSB0b1xuLVx0ICogdGhlIGRldmljZSB0byBhdm9pZCBVQUYuXG4tXHQgKi9cbi1cdGlmICghbmZjX2dldF9kZXZpY2UobG9jYWwtXHUwMDNlZGV2LVx1MDAzZWlkeCkpXG4mIzQzO1x0aWYgKCFsb2NhbClcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4tXHRrcmVmX2dldChcdTAwMjZsb2NhbC1cdTAwM2VyZWYpO1xuJiM0MztcdGlmIChrcmVmX2dldF91bmxlc3NfemVybyhcdTAwMjZsb2NhbC1cdTAwM2VyZWYpKVxuJiM0MztcdFx0cmV0dXJuIGxvY2FsO1xuIFxuLVx0cmV0dXJuIGxvY2FsO1xuJiM0MztcdHJldHVybiBOVUxMO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBsb2NhbF9jbGVhbnVwKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwpXG5AQCAtMTcyLDMwICYjNDM7MTg1LDM0IEBAIHN0YXRpYyB2b2lkIGxvY2FsX2NsZWFudXAoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbClcbiBcdG5mY19sbGNwX2ZyZWVfc2RwX3Rsdl9saXN0KFx1MDAyNmxvY2FsLVx1MDAzZXBlbmRpbmdfc2RyZXFzKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgbG9jYWxfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqcmVmKVxuJiM0MztzdGF0aWMgdm9pZCBsb2NhbF9yZWxlYXNlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIHtcbiBcdHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWw7XG4mIzQzO1x0c3RydWN0IG5mY19kZXYgKmRldjtcbiBcbi1cdGxvY2FsID0gY29udGFpbmVyX29mKHJlZiwgc3RydWN0IG5mY19sbGNwX2xvY2FsLCByZWYpO1xuJiM0MztcdGxvY2FsID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZmNfbGxjcF9sb2NhbCwgcmVsZWFzZV93b3JrKTtcbiYjNDM7XHRkZXYgPSBsb2NhbC1cdTAwM2VkZXY7XG4gXG4gXHRsb2NhbF9jbGVhbnVwKGxvY2FsKTtcbiBcdGtmcmVlKGxvY2FsKTtcbiYjNDM7XHRuZmNfcHV0X2RldmljZShkZXYpO1xuIH1cbiBcbi1pbnQgbmZjX2xsY3BfbG9jYWxfcHV0KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwpXG4mIzQzO3N0YXRpYyB2b2lkIGxvY2FsX3JlbGVhc2Uoc3RydWN0IGtyZWYgKnJlZilcbiB7XG4tXHRzdHJ1Y3QgbmZjX2RldiAqZGV2O1xuLVx0aW50IHJldDtcbiYjNDM7XHRzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsO1xuIFxuLVx0aWYgKGxvY2FsID09IE5VTEwpXG4tXHRcdHJldHVybiAwO1xuJiM0MztcdGxvY2FsID0gY29udGFpbmVyX29mKHJlZiwgc3RydWN0IG5mY19sbGNwX2xvY2FsLCByZWYpO1xuIFxuLVx0ZGV2ID0gbG9jYWwtXHUwMDNlZGV2O1xuJiM0MztcdHF1ZXVlX3dvcmsobGxjcF93cSwgXHUwMDI2bG9jYWwtXHUwMDNlcmVsZWFzZV93b3JrKTtcbiYjNDM7fVxuIFxuLVx0cmV0ID0ga3JlZl9wdXQoXHUwMDI2bG9jYWwtXHUwMDNlcmVmLCBsb2NhbF9yZWxlYXNlKTtcbi1cdG5mY19wdXRfZGV2aWNlKGRldik7XG4mIzQzO2ludCBuZmNfbGxjcF9sb2NhbF9wdXQoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbClcbiYjNDM7e1xuJiM0MztcdGlmICghbG9jYWwpXG4mIzQzO1x0XHRyZXR1cm4gMDtcbiBcbi1cdHJldHVybiByZXQ7XG4mIzQzO1x0cmV0dXJuIGtyZWZfcHV0KFx1MDAyNmxvY2FsLVx1MDAzZXJlZiwgbG9jYWxfcmVsZWFzZSk7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqbmZjX2xsY3Bfc29ja19nZXQoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCxcbkBAIC0xNzA1LDYgJiM0MzsxNzIyLDcgQEAgaW50IG5mY19sbGNwX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmZjX2RldiAqbmRldilcbiBcdElOSVRfV09SSyhcdTAwMjZsb2NhbC1cdTAwM2VyeF93b3JrLCBuZmNfbGxjcF9yeF93b3JrKTtcbiBcbiBcdElOSVRfV09SSyhcdTAwMjZsb2NhbC1cdTAwM2V0aW1lb3V0X3dvcmssIG5mY19sbGNwX3RpbWVvdXRfd29yayk7XG4mIzQzO1x0SU5JVF9XT1JLKFx1MDAyNmxvY2FsLVx1MDAzZXJlbGVhc2Vfd29yaywgbG9jYWxfcmVsZWFzZV93b3JrKTtcbiBcbiBcdHJ3bG9ja19pbml0KFx1MDAyNmxvY2FsLVx1MDAzZXNvY2tldHMubG9jayk7XG4gXHRyd2xvY2tfaW5pdChcdTAwMjZsb2NhbC1cdTAwM2Vjb25uZWN0aW5nX3NvY2tldHMubG9jayk7XG5AQCAtMTc0OCwxMCAmIzQzOzE3NjYsMjMgQEAgdm9pZCBuZmNfbGxjcF91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmZjX2RldiAqZGV2KVxuIFxuIGludCBfX2luaXQgbmZjX2xsY3BfaW5pdCh2b2lkKVxuIHtcbi1cdHJldHVybiBuZmNfbGxjcF9zb2NrX2luaXQoKTtcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcbiYjNDM7XHRsbGNwX3dxID0gYWxsb2Nfd29ya3F1ZXVlKFwmIzM0O25mY19sbGNwX3dxXCYjMzQ7LCAwLCAwKTtcbiYjNDM7XHRpZiAoIWxsY3Bfd3EpXG4mIzQzO1x0XHRyZXR1cm4gLUVOT01FTTtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gbmZjX2xsY3Bfc29ja19pbml0KCk7XG4mIzQzO1x0aWYgKHJldCkge1xuJiM0MztcdFx0ZGVzdHJveV93b3JrcXVldWUobGxjcF93cSk7XG4mIzQzO1x0XHRyZXR1cm4gcmV0O1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0cmV0dXJuIDA7XG4gfVxuIFxuIHZvaWQgbmZjX2xsY3BfZXhpdCh2b2lkKVxuIHtcbiBcdG5mY19sbGNwX3NvY2tfZXhpdCgpO1xuJiM0MztcdGRlc3Ryb3lfd29ya3F1ZXVlKGxsY3Bfd3EpO1xuIH1cbmRpZmYgLS1naXQgYS9uZXQvbmZjL2xsY3Bfc29jay5jIGIvbmV0L25mYy9sbGNwX3NvY2suY1xuaW5kZXggNTU1OGQ4YTRkNDhiMy4uY2U2ODc1ZWI1OGZiYyAxMDA2NDRcbi0tLSBhL25ldC9uZmMvbGxjcF9zb2NrLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZmMvbGxjcF9zb2NrLmNcbkBAIC0zOTIsMTEgJiM0MzszOTIsMTIgQEAgdm9pZCBuZmNfbGxjcF9hY2NlcHRfdW5saW5rKHN0cnVjdCBzb2NrICpzaylcbiBcbiBcdHByX2RlYnVnKFwmIzM0O3N0YXRlICVkXFxuXCYjMzQ7LCBzay1cdTAwM2Vza19zdGF0ZSk7XG4gXG4tXHRsaXN0X2RlbF9pbml0KFx1MDAyNmxsY3Bfc29jay1cdTAwM2VhY2NlcHRfcXVldWUpO1xuLVx0c2tfYWNjZXB0cV9yZW1vdmVkKGxsY3Bfc29jay1cdTAwM2VwYXJlbnQpO1xuLVx0bGxjcF9zb2NrLVx1MDAzZXBhcmVudCA9IE5VTEw7XG4tXG4tXHRzb2NrX3B1dChzayk7XG4mIzQzO1x0aWYgKGxsY3Bfc29jay1cdTAwM2VwYXJlbnQpIHtcbiYjNDM7XHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2bGxjcF9zb2NrLVx1MDAzZWFjY2VwdF9xdWV1ZSk7XG4mIzQzO1x0XHRza19hY2NlcHRxX3JlbW92ZWQobGxjcF9zb2NrLVx1MDAzZXBhcmVudCk7XG4mIzQzO1x0XHRsbGNwX3NvY2stXHUwMDNlcGFyZW50ID0gTlVMTDtcbiYjNDM7XHRcdHNvY2tfcHV0KHNrKTtcbiYjNDM7XHR9XG4gfVxuIFxuIHZvaWQgbmZjX2xsY3BfYWNjZXB0X2VucXVldWUoc3RydWN0IHNvY2sgKnBhcmVudCwgc3RydWN0IHNvY2sgKnNrKVxuQEAgLTQyMywxMiAmIzQzOzQyNCwyMCBAQCBzdHJ1Y3Qgc29jayAqbmZjX2xsY3BfYWNjZXB0X2RlcXVldWUoc3RydWN0IHNvY2sgKnBhcmVudCxcbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShsc2ssIG4sIFx1MDAyNmxsY3BfcGFyZW50LVx1MDAzZWFjY2VwdF9xdWV1ZSxcbiBcdFx0XHRcdCBhY2NlcHRfcXVldWUpIHtcbiYjNDM7XHRcdHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWw7XG4mIzQzO1xuIFx0XHRzayA9IFx1MDAyNmxzay1cdTAwM2Vzaztcbi1cdFx0bG9ja19zb2NrKHNrKTtcbiYjNDM7XHRcdGxvY2tfc29ja19uZXN0ZWQoc2ssIFNJTkdMRV9ERVBUSF9ORVNUSU5HKTtcbiBcbiBcdFx0aWYgKHNrLVx1MDAzZXNrX3N0YXRlID09IExMQ1BfQ0xPU0VEKSB7XG4tXHRcdFx0cmVsZWFzZV9zb2NrKHNrKTtcbiYjNDM7XHRcdFx0bG9jYWwgPSBuZmNfbGxjcF9zb2NrKHNrKS1cdTAwM2Vsb2NhbDtcbiYjNDM7XG4gXHRcdFx0bmZjX2xsY3BfYWNjZXB0X3VubGluayhzayk7XG4mIzQzO1x0XHRcdGlmIChsb2NhbClcbiYjNDM7XHRcdFx0XHRuZmNfbGxjcF9zb2NrX3VubGluayhcdTAwMjZsb2NhbC1cdTAwM2Vzb2NrZXRzLCBzayk7XG4mIzQzO1x0XHRcdHNvY2tfb3JwaGFuKHNrKTtcbiYjNDM7XHRcdFx0cmVsZWFzZV9zb2NrKHNrKTtcbiYjNDM7XHRcdFx0c29ja19wdXQoc2spO1xuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHR9XG4gXG5AQCAtNDY0LDcgJiM0Mzs0NzMsNyBAQCBzdGF0aWMgaW50IGxsY3Bfc29ja19hY2NlcHQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2tldCAqbmV3c29jayxcbiBcbiBcdHByX2RlYnVnKFwmIzM0O3BhcmVudCAlcFxcblwmIzM0Oywgc2spO1xuIFxuLVx0bG9ja19zb2NrX25lc3RlZChzaywgU0lOR0xFX0RFUFRIX05FU1RJTkcpO1xuJiM0MztcdGxvY2tfc29jayhzayk7XG4gXG4gXHRpZiAoc2stXHUwMDNlc2tfc3RhdGUgIT0gTExDUF9MSVNURU4pIHtcbiBcdFx0cmV0ID0gLUVCQURGRDtcbkBAIC00OTAsNyAmIzQzOzQ5OSwxMiBAQCBzdGF0aWMgaW50IGxsY3Bfc29ja19hY2NlcHQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2tldCAqbmV3c29jayxcbiBcbiBcdFx0cmVsZWFzZV9zb2NrKHNrKTtcbiBcdFx0dGltZW8gPSBzY2hlZHVsZV90aW1lb3V0KHRpbWVvKTtcbi1cdFx0bG9ja19zb2NrX25lc3RlZChzaywgU0lOR0xFX0RFUFRIX05FU1RJTkcpO1xuJiM0MztcdFx0bG9ja19zb2NrKHNrKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoc2stXHUwMDNlc2tfc3RhdGUgIT0gTExDUF9MSVNURU4pIHtcbiYjNDM7XHRcdFx0cmV0ID0gLUVCQURGRDtcbiYjNDM7XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXHRfX3NldF9jdXJyZW50X3N0YXRlKFRBU0tfUlVOTklORyk7XG4gXHRyZW1vdmVfd2FpdF9xdWV1ZShza19zbGVlcChzayksIFx1MDAyNndhaXQpO1xuQEAgLTYyOSwxMyAmIzQzOzY0MywyNCBAQCBzdGF0aWMgaW50IGxsY3Bfc29ja19yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXG4gXG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShsc2ssIG4sIFx1MDAyNmxsY3Bfc29jay1cdTAwM2VhY2NlcHRfcXVldWUsXG4gXHRcdFx0XHRcdCBhY2NlcHRfcXVldWUpIHtcbiYjNDM7XHRcdFx0Ym9vbCBwdXRfY3JlYXRpb24gPSBmYWxzZTtcbiYjNDM7XG4gXHRcdFx0YWNjZXB0X3NrID0gXHUwMDI2bHNrLVx1MDAzZXNrO1xuLVx0XHRcdGxvY2tfc29jayhhY2NlcHRfc2spO1xuJiM0MztcdFx0XHRsb2NrX3NvY2tfbmVzdGVkKGFjY2VwdF9zaywgU0lOR0xFX0RFUFRIX05FU1RJTkcpO1xuIFxuLVx0XHRcdG5mY19sbGNwX3NlbmRfZGlzY29ubmVjdChsc2spO1xuLVx0XHRcdG5mY19sbGNwX2FjY2VwdF91bmxpbmsoYWNjZXB0X3NrKTtcbiYjNDM7XHRcdFx0aWYgKG5mY19sbGNwX3NvY2soYWNjZXB0X3NrKS1cdTAwM2VwYXJlbnQgPT0gc2spIHtcbiYjNDM7XHRcdFx0XHRuZmNfbGxjcF9zZW5kX2Rpc2Nvbm5lY3QobHNrKTtcbiYjNDM7XHRcdFx0XHRuZmNfbGxjcF9hY2NlcHRfdW5saW5rKGFjY2VwdF9zayk7XG4mIzQzO1x0XHRcdFx0bmZjX2xsY3Bfc29ja191bmxpbmsoXHUwMDI2bG9jYWwtXHUwMDNlc29ja2V0cywgYWNjZXB0X3NrKTtcbiYjNDM7XG4mIzQzO1x0XHRcdFx0YWNjZXB0X3NrLVx1MDAzZXNrX3N0YXRlID0gTExDUF9DTE9TRUQ7XG4mIzQzO1x0XHRcdFx0c29ja19vcnBoYW4oYWNjZXB0X3NrKTtcbiYjNDM7XHRcdFx0XHRwdXRfY3JlYXRpb24gPSB0cnVlO1xuJiM0MztcdFx0XHR9XG4gXG4gXHRcdFx0cmVsZWFzZV9zb2NrKGFjY2VwdF9zayk7XG4mIzQzO1x0XHRcdGlmIChwdXRfY3JlYXRpb24pXG4mIzQzO1x0XHRcdFx0c29ja19wdXQoYWNjZXB0X3NrKTsgLyogY3JlYXRpb24gcmVmICovXG4gXHRcdH1cbiBcdH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0ODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDJiMzNDssCiAgICAmIzM0O05GQ19ESUdJVEFMJiMzNDssCiAgICAmIzM0O05GQ19TSU0mIzM0OywKICAgICYjMzQ7TkZDX05DSSYjMzQ7LAogICAgJiMzNDtORkNfVklSVFVBTF9OQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZmNfbGxjcF9sb2NhbF9wdXQmIzM0OywKICAgICYjMzQ7bmZjX2xsY3BfYWNjZXB0X2RlcXVldWUmIzM0OywKICAgICYjMzQ7bmZjX2xsY3BfYWNjZXB0X3VubGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBsb2dpYyBvZiBORkMgTExDUCBzb2NrZXRzLCBmaXhpbmcgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gb3IgdXNlLWFmdGVyLWZyZWUgZHVyaW5nIHNvY2tldCByZWxlYXNlIGFuZCBhY2NlcHQgcXVldWUgaGFuZGxpbmcuIEl0IGludHJvZHVjZXMgYSB3b3JrcXVldWUgZm9yIGxvY2FsIHJlbGVhc2UgYW5kIG1vZGlmaWVzIHNvY2tldCBsb2NraW5nLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgc3RhbmRhcmQgc29ja2V0IEFQSXMgd2hlbiBORkMgaXMgZW5hYmxlZC4gVmlydHVhbCBORkMgZGV2aWNlcyAoTkZDX1NJTSwgTkZDX1ZJUlRVQUxfTkNJKSBjYW4gYmUgdXNlZCB0byB0cmlnZ2VyIHRoaXMgY29kZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMDE5MjAzMjNiOTU0MGZjYjY4ZWI4ZTFmYWVkMDI0NDcwODI2MTZlZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDI2IDA4OjQ4OjMzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L25mYy9sbGNwLmggYi9uZXQvbmZjL2xsY3AuaAppbmRleCBkODM0NWVkNTdjOTU0Li4yM2FlN2EwMTEyZDM3IDEwMDY0NAotLS0gYS9uZXQvbmZjL2xsY3AuaAomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmZjL2xsY3AuaApAQCAtOTEsNiAmIzQzOzkxLDcgQEAgc3RydWN0IG5mY19sbGNwX2xvY2FsIHsKIAlzdHJ1Y3QgaGxpc3RfaGVhZCBwZW5kaW5nX3NkcmVxczsKIAlzdHJ1Y3QgdGltZXJfbGlzdCBzZHJlcV90aW1lcjsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgc2RyZXFfdGltZW91dF93b3JrOwomIzQzOwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgcmVsZWFzZV93b3JrOwogCXU4IHNkcmVxX25leHRfdGlkOwogCiAJLyogc29ja2V0cyBhcnJheSAqLwpkaWZmIC0tZ2l0IGEvbmV0L25mYy9sbGNwX2NvcmUuYyBiL25ldC9uZmMvbGxjcF9jb3JlLmMKaW5kZXggYmQ2MzYxZTJlZmE0Zi4uMmMyZGJjMTI1MzFlYyAxMDA2NDQKLS0tIGEvbmV0L25mYy9sbGNwX2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmZjL2xsY3BfY29yZS5jCkBAIC0yMCw2ICYjNDM7MjAsOCBAQCBzdGF0aWMgTElTVF9IRUFEKGxsY3BfZGV2aWNlcyk7CiAvKiBQcm90ZWN0cyBsbGNwX2RldmljZXMgbGlzdCAqLwogc3RhdGljIERFRklORV9TUElOTE9DSyhsbGNwX2RldmljZXNfbG9jayk7CiAKJiM0MztzdGF0aWMgc3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKmxsY3Bfd3E7CiYjNDM7CiBzdGF0aWMgdm9pZCBuZmNfbGxjcF9yeF9za2Ioc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7CiAKIHZvaWQgbmZjX2xsY3Bfc29ja19saW5rKHN0cnVjdCBsbGNwX3NvY2tfbGlzdCAqbCwgc3RydWN0IHNvY2sgKnNrKQpAQCAtNjMsMjEgJiM0Mzs2NSwzMyBAQCBzdGF0aWMgdm9pZCBuZmNfbGxjcF9zb2NrZXRfcHVyZ2Uoc3RydWN0IG5mY19sbGNwX3NvY2sgKnNvY2spCiAJfQogfQogCiYjNDM7c3RhdGljIHN0cnVjdCBzb2NrICpuZmNfbGxjcF9zb2NrX2xpc3RfcG9wKHN0cnVjdCBsbGNwX3NvY2tfbGlzdCAqbCkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBzb2NrICpzazsKJiM0MzsKJiM0MzsJd3JpdGVfbG9jaygmYW1wO2wtJmd0O2xvY2spOwomIzQzOwlzayA9IHNrX2hlYWQoJmFtcDtsLSZndDtoZWFkKTsKJiM0MzsJaWYgKHNrKSB7CiYjNDM7CQlzb2NrX2hvbGQoc2spOwomIzQzOwkJc2tfZGVsX25vZGVfaW5pdChzayk7CiYjNDM7CX0KJiM0MzsJd3JpdGVfdW5sb2NrKCZhbXA7bC0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CXJldHVybiBzazsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgdm9pZCBuZmNfbGxjcF9zb2NrZXRfcmVsZWFzZShzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBib29sIGRldmljZSwKIAkJCQkgICAgaW50IGVycikKIHsKIAlzdHJ1Y3Qgc29jayAqc2s7Ci0Jc3RydWN0IGhsaXN0X25vZGUgKnRtcDsKIAlzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqbGxjcF9zb2NrOwogCiAJc2tiX3F1ZXVlX3B1cmdlKCZhbXA7bG9jYWwtJmd0O3R4X3F1ZXVlKTsKIAotCXdyaXRlX2xvY2soJmFtcDtsb2NhbC0mZ3Q7c29ja2V0cy5sb2NrKTsKLQotCXNrX2Zvcl9lYWNoX3NhZmUoc2ssIHRtcCwgJmFtcDtsb2NhbC0mZ3Q7c29ja2V0cy5oZWFkKSB7CiYjNDM7CXdoaWxlICgoc2sgPSBuZmNfbGxjcF9zb2NrX2xpc3RfcG9wKCZhbXA7bG9jYWwtJmd0O3NvY2tldHMpKSkgewogCQlsbGNwX3NvY2sgPSBuZmNfbGxjcF9zb2NrKHNrKTsKIAotCQliaF9sb2NrX3NvY2soc2spOwomIzQzOwkJbG9ja19zb2NrKHNrKTsKIAogCQluZmNfbGxjcF9zb2NrZXRfcHVyZ2UobGxjcF9zb2NrKTsKIApAQCAtOTEsMTcgJiM0MzsxMDUsMjcgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2Uoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgYm9vbCBkZXZpY2UsCiAJCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobHNrLCBuLAogCQkJCQkJICZhbXA7bGxjcF9zb2NrLSZndDthY2NlcHRfcXVldWUsCiAJCQkJCQkgYWNjZXB0X3F1ZXVlKSB7Ci0JCQkJYWNjZXB0X3NrID0gJmFtcDtsc2stJmd0O3NrOwotCQkJCWJoX2xvY2tfc29jayhhY2NlcHRfc2spOwotCi0JCQkJbmZjX2xsY3BfYWNjZXB0X3VubGluayhhY2NlcHRfc2spOwomIzQzOwkJCQlib29sIHB1dF9jcmVhdGlvbiA9IGZhbHNlOwogCi0JCQkJaWYgKGVycikKLQkJCQkJYWNjZXB0X3NrLSZndDtza19lcnIgPSBlcnI7Ci0JCQkJYWNjZXB0X3NrLSZndDtza19zdGF0ZSA9IExMQ1BfQ0xPU0VEOwotCQkJCWFjY2VwdF9zay0mZ3Q7c2tfc3RhdGVfY2hhbmdlKHNrKTsKJiM0MzsJCQkJYWNjZXB0X3NrID0gJmFtcDtsc2stJmd0O3NrOwomIzQzOwkJCQlsb2NrX3NvY2tfbmVzdGVkKGFjY2VwdF9zaywKJiM0MzsJCQkJCQkgU0lOR0xFX0RFUFRIX05FU1RJTkcpOwomIzQzOwomIzQzOwkJCQlpZiAobmZjX2xsY3Bfc29jayhhY2NlcHRfc2spLSZndDtwYXJlbnQgPT0gc2spIHsKJiM0MzsJCQkJCW5mY19sbGNwX2FjY2VwdF91bmxpbmsoYWNjZXB0X3NrKTsKJiM0MzsJCQkJCW5mY19sbGNwX3NvY2tfdW5saW5rKCZhbXA7bG9jYWwtJmd0O3NvY2tldHMsIGFjY2VwdF9zayk7CiYjNDM7CiYjNDM7CQkJCQlpZiAoZXJyKQomIzQzOwkJCQkJCWFjY2VwdF9zay0mZ3Q7c2tfZXJyID0gZXJyOwomIzQzOwkJCQkJYWNjZXB0X3NrLSZndDtza19zdGF0ZSA9IExMQ1BfQ0xPU0VEOwomIzQzOwkJCQkJYWNjZXB0X3NrLSZndDtza19zdGF0ZV9jaGFuZ2UoYWNjZXB0X3NrKTsKJiM0MzsJCQkJCXNvY2tfb3JwaGFuKGFjY2VwdF9zayk7CiYjNDM7CQkJCQlwdXRfY3JlYXRpb24gPSB0cnVlOwomIzQzOwkJCQl9CiAKLQkJCQliaF91bmxvY2tfc29jayhhY2NlcHRfc2spOwomIzQzOwkJCQlyZWxlYXNlX3NvY2soYWNjZXB0X3NrKTsKJiM0MzsJCQkJaWYgKHB1dF9jcmVhdGlvbikKJiM0MzsJCQkJCXNvY2tfcHV0KGFjY2VwdF9zayk7IC8qIGNyZWF0aW9uIHJlZiAqLwogCQkJfQogCQl9CiAKQEAgLTExMCwyMyAmIzQzOzEzNCwxOCBAQCBzdGF0aWMgdm9pZCBuZmNfbGxjcF9zb2NrZXRfcmVsZWFzZShzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBib29sIGRldmljZSwKIAkJc2stJmd0O3NrX3N0YXRlID0gTExDUF9DTE9TRUQ7CiAJCXNrLSZndDtza19zdGF0ZV9jaGFuZ2Uoc2spOwogCi0JCWJoX3VubG9ja19zb2NrKHNrKTsKLQotCQlza19kZWxfbm9kZV9pbml0KHNrKTsKJiM0MzsJCXJlbGVhc2Vfc29jayhzayk7CiYjNDM7CQlzb2NrX3B1dChzayk7CiAJfQogCi0Jd3JpdGVfdW5sb2NrKCZhbXA7bG9jYWwtJmd0O3NvY2tldHMubG9jayk7Ci0KIAkvKiBJZiB3ZSBzdGlsbCBoYXZlIGEgZGV2aWNlLCB3ZSBrZWVwIHRoZSBSQVcgc29ja2V0cyBhbGl2ZSAqLwogCWlmIChkZXZpY2UgPT0gdHJ1ZSkKIAkJcmV0dXJuOwogCi0Jd3JpdGVfbG9jaygmYW1wO2xvY2FsLSZndDtyYXdfc29ja2V0cy5sb2NrKTsKLQotCXNrX2Zvcl9lYWNoX3NhZmUoc2ssIHRtcCwgJmFtcDtsb2NhbC0mZ3Q7cmF3X3NvY2tldHMuaGVhZCkgewomIzQzOwl3aGlsZSAoKHNrID0gbmZjX2xsY3Bfc29ja19saXN0X3BvcCgmYW1wO2xvY2FsLSZndDtyYXdfc29ja2V0cykpKSB7CiAJCWxsY3Bfc29jayA9IG5mY19sbGNwX3NvY2soc2spOwogCi0JCWJoX2xvY2tfc29jayhzayk7CiYjNDM7CQlsb2NrX3NvY2soc2spOwogCiAJCW5mY19sbGNwX3NvY2tldF9wdXJnZShsbGNwX3NvY2spOwogCkBAIC0xMzUsMjYgJiM0MzsxNTQsMjAgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2Uoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgYm9vbCBkZXZpY2UsCiAJCXNrLSZndDtza19zdGF0ZSA9IExMQ1BfQ0xPU0VEOwogCQlzay0mZ3Q7c2tfc3RhdGVfY2hhbmdlKHNrKTsKIAotCQliaF91bmxvY2tfc29jayhzayk7Ci0KLQkJc2tfZGVsX25vZGVfaW5pdChzayk7CiYjNDM7CQlyZWxlYXNlX3NvY2soc2spOwomIzQzOwkJc29ja19wdXQoc2spOwogCX0KLQotCXdyaXRlX3VubG9jaygmYW1wO2xvY2FsLSZndDtyYXdfc29ja2V0cy5sb2NrKTsKIH0KIAogc3RhdGljIHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbmZjX2xsY3BfbG9jYWxfZ2V0KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwpCiB7Ci0JLyogU2luY2UgdXNpbmcgbmZjX2xsY3BfbG9jYWwgbWF5IHJlc3VsdCBpbiB1c2FnZSBvZiBuZmNfZGV2LCB3aGVuZXZlcgotCSAqIHdlIGhvbGQgYSByZWZlcmVuY2UgdG8gbG9jYWwsIHdlIGFsc28gbmVlZCB0byBob2xkIGEgcmVmZXJlbmNlIHRvCi0JICogdGhlIGRldmljZSB0byBhdm9pZCBVQUYuCi0JICovCi0JaWYgKCFuZmNfZ2V0X2RldmljZShsb2NhbC0mZ3Q7ZGV2LSZndDtpZHgpKQomIzQzOwlpZiAoIWxvY2FsKQogCQlyZXR1cm4gTlVMTDsKIAotCWtyZWZfZ2V0KCZhbXA7bG9jYWwtJmd0O3JlZik7CiYjNDM7CWlmIChrcmVmX2dldF91bmxlc3NfemVybygmYW1wO2xvY2FsLSZndDtyZWYpKQomIzQzOwkJcmV0dXJuIGxvY2FsOwogCi0JcmV0dXJuIGxvY2FsOwomIzQzOwlyZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIHZvaWQgbG9jYWxfY2xlYW51cChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsKQpAQCAtMTcyLDMwICYjNDM7MTg1LDM0IEBAIHN0YXRpYyB2b2lkIGxvY2FsX2NsZWFudXAoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCkKIAluZmNfbGxjcF9mcmVlX3NkcF90bHZfbGlzdCgmYW1wO2xvY2FsLSZndDtwZW5kaW5nX3NkcmVxcyk7CiB9CiAKLXN0YXRpYyB2b2lkIGxvY2FsX3JlbGVhc2Uoc3RydWN0IGtyZWYgKnJlZikKJiM0MztzdGF0aWMgdm9pZCBsb2NhbF9yZWxlYXNlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogewogCXN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWw7CiYjNDM7CXN0cnVjdCBuZmNfZGV2ICpkZXY7CiAKLQlsb2NhbCA9IGNvbnRhaW5lcl9vZihyZWYsIHN0cnVjdCBuZmNfbGxjcF9sb2NhbCwgcmVmKTsKJiM0MzsJbG9jYWwgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG5mY19sbGNwX2xvY2FsLCByZWxlYXNlX3dvcmspOwomIzQzOwlkZXYgPSBsb2NhbC0mZ3Q7ZGV2OwogCiAJbG9jYWxfY2xlYW51cChsb2NhbCk7CiAJa2ZyZWUobG9jYWwpOwomIzQzOwluZmNfcHV0X2RldmljZShkZXYpOwogfQogCi1pbnQgbmZjX2xsY3BfbG9jYWxfcHV0KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwpCiYjNDM7c3RhdGljIHZvaWQgbG9jYWxfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqcmVmKQogewotCXN0cnVjdCBuZmNfZGV2ICpkZXY7Ci0JaW50IHJldDsKJiM0MzsJc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbDsKIAotCWlmIChsb2NhbCA9PSBOVUxMKQotCQlyZXR1cm4gMDsKJiM0MzsJbG9jYWwgPSBjb250YWluZXJfb2YocmVmLCBzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwsIHJlZik7CiAKLQlkZXYgPSBsb2NhbC0mZ3Q7ZGV2OwomIzQzOwlxdWV1ZV93b3JrKGxsY3Bfd3EsICZhbXA7bG9jYWwtJmd0O3JlbGVhc2Vfd29yayk7CiYjNDM7fQogCi0JcmV0ID0ga3JlZl9wdXQoJmFtcDtsb2NhbC0mZ3Q7cmVmLCBsb2NhbF9yZWxlYXNlKTsKLQluZmNfcHV0X2RldmljZShkZXYpOwomIzQzO2ludCBuZmNfbGxjcF9sb2NhbF9wdXQoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCkKJiM0Mzt7CiYjNDM7CWlmICghbG9jYWwpCiYjNDM7CQlyZXR1cm4gMDsKIAotCXJldHVybiByZXQ7CiYjNDM7CXJldHVybiBrcmVmX3B1dCgmYW1wO2xvY2FsLSZndDtyZWYsIGxvY2FsX3JlbGVhc2UpOwogfQogCiBzdGF0aWMgc3RydWN0IG5mY19sbGNwX3NvY2sgKm5mY19sbGNwX3NvY2tfZ2V0KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsCkBAIC0xNzA1LDYgJiM0MzsxNzIyLDcgQEAgaW50IG5mY19sbGNwX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmZjX2RldiAqbmRldikKIAlJTklUX1dPUksoJmFtcDtsb2NhbC0mZ3Q7cnhfd29yaywgbmZjX2xsY3Bfcnhfd29yayk7CiAKIAlJTklUX1dPUksoJmFtcDtsb2NhbC0mZ3Q7dGltZW91dF93b3JrLCBuZmNfbGxjcF90aW1lb3V0X3dvcmspOwomIzQzOwlJTklUX1dPUksoJmFtcDtsb2NhbC0mZ3Q7cmVsZWFzZV93b3JrLCBsb2NhbF9yZWxlYXNlX3dvcmspOwogCiAJcndsb2NrX2luaXQoJmFtcDtsb2NhbC0mZ3Q7c29ja2V0cy5sb2NrKTsKIAlyd2xvY2tfaW5pdCgmYW1wO2xvY2FsLSZndDtjb25uZWN0aW5nX3NvY2tldHMubG9jayk7CkBAIC0xNzQ4LDEwICYjNDM7MTc2NiwyMyBAQCB2b2lkIG5mY19sbGNwX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBuZmNfZGV2ICpkZXYpCiAKIGludCBfX2luaXQgbmZjX2xsY3BfaW5pdCh2b2lkKQogewotCXJldHVybiBuZmNfbGxjcF9zb2NrX2luaXQoKTsKJiM0MzsJaW50IHJldDsKJiM0MzsKJiM0MzsJbGxjcF93cSA9IGFsbG9jX3dvcmtxdWV1ZSgmIzM0O25mY19sbGNwX3dxJiMzNDssIDAsIDApOwomIzQzOwlpZiAoIWxsY3Bfd3EpCiYjNDM7CQlyZXR1cm4gLUVOT01FTTsKJiM0MzsKJiM0MzsJcmV0ID0gbmZjX2xsY3Bfc29ja19pbml0KCk7CiYjNDM7CWlmIChyZXQpIHsKJiM0MzsJCWRlc3Ryb3lfd29ya3F1ZXVlKGxsY3Bfd3EpOwomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsJfQomIzQzOwomIzQzOwlyZXR1cm4gMDsKIH0KIAogdm9pZCBuZmNfbGxjcF9leGl0KHZvaWQpCiB7CiAJbmZjX2xsY3Bfc29ja19leGl0KCk7CiYjNDM7CWRlc3Ryb3lfd29ya3F1ZXVlKGxsY3Bfd3EpOwogfQpkaWZmIC0tZ2l0IGEvbmV0L25mYy9sbGNwX3NvY2suYyBiL25ldC9uZmMvbGxjcF9zb2NrLmMKaW5kZXggNTU1OGQ4YTRkNDhiMy4uY2U2ODc1ZWI1OGZiYyAxMDA2NDQKLS0tIGEvbmV0L25mYy9sbGNwX3NvY2suYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmZjL2xsY3Bfc29jay5jCkBAIC0zOTIsMTEgJiM0MzszOTIsMTIgQEAgdm9pZCBuZmNfbGxjcF9hY2NlcHRfdW5saW5rKHN0cnVjdCBzb2NrICpzaykKIAogCXByX2RlYnVnKCYjMzQ7c3RhdGUgJWRcbiYjMzQ7LCBzay0mZ3Q7c2tfc3RhdGUpOwogCi0JbGlzdF9kZWxfaW5pdCgmYW1wO2xsY3Bfc29jay0mZ3Q7YWNjZXB0X3F1ZXVlKTsKLQlza19hY2NlcHRxX3JlbW92ZWQobGxjcF9zb2NrLSZndDtwYXJlbnQpOwotCWxsY3Bfc29jay0mZ3Q7cGFyZW50ID0gTlVMTDsKLQotCXNvY2tfcHV0KHNrKTsKJiM0MzsJaWYgKGxsY3Bfc29jay0mZ3Q7cGFyZW50KSB7CiYjNDM7CQlsaXN0X2RlbF9pbml0KCZhbXA7bGxjcF9zb2NrLSZndDthY2NlcHRfcXVldWUpOwomIzQzOwkJc2tfYWNjZXB0cV9yZW1vdmVkKGxsY3Bfc29jay0mZ3Q7cGFyZW50KTsKJiM0MzsJCWxsY3Bfc29jay0mZ3Q7cGFyZW50ID0gTlVMTDsKJiM0MzsJCXNvY2tfcHV0KHNrKTsKJiM0MzsJfQogfQogCiB2b2lkIG5mY19sbGNwX2FjY2VwdF9lbnF1ZXVlKHN0cnVjdCBzb2NrICpwYXJlbnQsIHN0cnVjdCBzb2NrICpzaykKQEAgLTQyMywxMiAmIzQzOzQyNCwyMCBAQCBzdHJ1Y3Qgc29jayAqbmZjX2xsY3BfYWNjZXB0X2RlcXVldWUoc3RydWN0IHNvY2sgKnBhcmVudCwKIAogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShsc2ssIG4sICZhbXA7bGxjcF9wYXJlbnQtJmd0O2FjY2VwdF9xdWV1ZSwKIAkJCQkgYWNjZXB0X3F1ZXVlKSB7CiYjNDM7CQlzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsOwomIzQzOwogCQlzayA9ICZhbXA7bHNrLSZndDtzazsKLQkJbG9ja19zb2NrKHNrKTsKJiM0MzsJCWxvY2tfc29ja19uZXN0ZWQoc2ssIFNJTkdMRV9ERVBUSF9ORVNUSU5HKTsKIAogCQlpZiAoc2stJmd0O3NrX3N0YXRlID09IExMQ1BfQ0xPU0VEKSB7Ci0JCQlyZWxlYXNlX3NvY2soc2spOwomIzQzOwkJCWxvY2FsID0gbmZjX2xsY3Bfc29jayhzayktJmd0O2xvY2FsOwomIzQzOwogCQkJbmZjX2xsY3BfYWNjZXB0X3VubGluayhzayk7CiYjNDM7CQkJaWYgKGxvY2FsKQomIzQzOwkJCQluZmNfbGxjcF9zb2NrX3VubGluaygmYW1wO2xvY2FsLSZndDtzb2NrZXRzLCBzayk7CiYjNDM7CQkJc29ja19vcnBoYW4oc2spOwomIzQzOwkJCXJlbGVhc2Vfc29jayhzayk7CiYjNDM7CQkJc29ja19wdXQoc2spOwogCQkJY29udGludWU7CiAJCX0KIApAQCAtNDY0LDcgJiM0Mzs0NzMsNyBAQCBzdGF0aWMgaW50IGxsY3Bfc29ja19hY2NlcHQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2tldCAqbmV3c29jaywKIAogCXByX2RlYnVnKCYjMzQ7cGFyZW50ICVwXG4mIzM0Oywgc2spOwogCi0JbG9ja19zb2NrX25lc3RlZChzaywgU0lOR0xFX0RFUFRIX05FU1RJTkcpOwomIzQzOwlsb2NrX3NvY2soc2spOwogCiAJaWYgKHNrLSZndDtza19zdGF0ZSAhPSBMTENQX0xJU1RFTikgewogCQlyZXQgPSAtRUJBREZEOwpAQCAtNDkwLDcgJiM0Mzs0OTksMTIgQEAgc3RhdGljIGludCBsbGNwX3NvY2tfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssCiAKIAkJcmVsZWFzZV9zb2NrKHNrKTsKIAkJdGltZW8gPSBzY2hlZHVsZV90aW1lb3V0KHRpbWVvKTsKLQkJbG9ja19zb2NrX25lc3RlZChzaywgU0lOR0xFX0RFUFRIX05FU1RJTkcpOwomIzQzOwkJbG9ja19zb2NrKHNrKTsKJiM0MzsKJiM0MzsJCWlmIChzay0mZ3Q7c2tfc3RhdGUgIT0gTExDUF9MSVNURU4pIHsKJiM0MzsJCQlyZXQgPSAtRUJBREZEOwomIzQzOwkJCWJyZWFrOwomIzQzOwkJfQogCX0KIAlfX3NldF9jdXJyZW50X3N0YXRlKFRBU0tfUlVOTklORyk7CiAJcmVtb3ZlX3dhaXRfcXVldWUoc2tfc2xlZXAoc2spLCAmYW1wO3dhaXQpOwpAQCAtNjI5LDEzICYjNDM7NjQzLDI0IEBAIHN0YXRpYyBpbnQgbGxjcF9zb2NrX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaykKIAogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobHNrLCBuLCAmYW1wO2xsY3Bfc29jay0mZ3Q7YWNjZXB0X3F1ZXVlLAogCQkJCQkgYWNjZXB0X3F1ZXVlKSB7CiYjNDM7CQkJYm9vbCBwdXRfY3JlYXRpb24gPSBmYWxzZTsKJiM0MzsKIAkJCWFjY2VwdF9zayA9ICZhbXA7bHNrLSZndDtzazsKLQkJCWxvY2tfc29jayhhY2NlcHRfc2spOwomIzQzOwkJCWxvY2tfc29ja19uZXN0ZWQoYWNjZXB0X3NrLCBTSU5HTEVfREVQVEhfTkVTVElORyk7CiAKLQkJCW5mY19sbGNwX3NlbmRfZGlzY29ubmVjdChsc2spOwotCQkJbmZjX2xsY3BfYWNjZXB0X3VubGluayhhY2NlcHRfc2spOwomIzQzOwkJCWlmIChuZmNfbGxjcF9zb2NrKGFjY2VwdF9zayktJmd0O3BhcmVudCA9PSBzaykgewomIzQzOwkJCQluZmNfbGxjcF9zZW5kX2Rpc2Nvbm5lY3QobHNrKTsKJiM0MzsJCQkJbmZjX2xsY3BfYWNjZXB0X3VubGluayhhY2NlcHRfc2spOwomIzQzOwkJCQluZmNfbGxjcF9zb2NrX3VubGluaygmYW1wO2xvY2FsLSZndDtzb2NrZXRzLCBhY2NlcHRfc2spOwomIzQzOwomIzQzOwkJCQlhY2NlcHRfc2stJmd0O3NrX3N0YXRlID0gTExDUF9DTE9TRUQ7CiYjNDM7CQkJCXNvY2tfb3JwaGFuKGFjY2VwdF9zayk7CiYjNDM7CQkJCXB1dF9jcmVhdGlvbiA9IHRydWU7CiYjNDM7CQkJfQogCiAJCQlyZWxlYXNlX3NvY2soYWNjZXB0X3NrKTsKJiM0MzsJCQlpZiAocHV0X2NyZWF0aW9uKQomIzQzOwkJCQlzb2NrX3B1dChhY2NlcHRfc2spOyAvKiBjcmVhdGlvbiByZWYgKi8KIAkJfQogCX0KIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NjM3CgkJCQkJCQlvdXRwdXQ6IDE3CgkJCQkJCQl0aG91Z2h0czogMjI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTkZDIFN1YnN5c3RlbSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBrZXJuZWwgcGF0Y2ggaW4gZnJvbnQgb2YgbWUuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3Mgc3BlY2lmaWNhbGx5IHRhcmdldGluZyB0aGUgTkZDIHN1YnN5c3RlbSwgZGlnZ2luZyBpbnRvIGBuZXQvbmZjL2xsY3BfY29yZS5jYCwgYG5ldC9uZmMvbGxjcC5oYCwgYW5kIGBuZXQvbmZjL2xsY3Bfc29jay5jYC4gU2VlbXMgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBkZWZpbml0ZWx5IG5vdCBhIGNvc21ldGljIG9uZS4gVGhlIGJpZ2dlc3QgZmxhZyBpcyB0aGUgaW50cm9kdWN0aW9uIG9mIHRoaXMgd29ya3F1ZXVlLCBgbGxjcF93cWAsIHNwZWNpZmljYWxseSBmb3IgYGxvY2FsX3JlbGVhc2Vfd29ya2AuIEkmIzM5O20gc2VlaW5nIGNoYW5nZXMgaW4gaG93IHNvY2tldHMgYXJlIHJlbGVhc2VkIHdpdGggYG5mY19sbGNwX3NvY2tldF9yZWxlYXNlYCB1c2luZyBgbmZjX2xsY3Bfc29ja19saXN0X3BvcGAgYW5kLCBpbXBvcnRhbnRseSwgbmV3IGxvY2tpbmcuIEFsc28sIG1vZGlmaWNhdGlvbnMgaW4gYG5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlYCwgYGxsY3Bfc29ja19hY2NlcHRgLCBhbmQgYGxsY3Bfc29ja19yZWxlYXNlYC4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyBpcyB0b3VjaGluZyBzb21lIGNyaXRpY2FsIGNvbmN1cnJlbmN5IGFzcGVjdHMgb2YgdGhlIExMQ1AgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24uCgpOb3csIG15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIGhvdyB0aGlzIHdpbGwgYmVoYXZlIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dC4gSSBrbm93IE5GQyBpcyBpbmhlcmVudGx5IGhhcmR3YXJlLWRlcGVuZGVudC4gU28sIHdpbGwgdGhpcyBpbXBhY3QgdGhlIHRlc3Rpbmcgb2YgdGhpcyBjaGFuZ2U/IEkgaGF2ZSB0byBjb25zaWRlciB3aGV0aGVyIHRoZXJlJiMzOTtzIGEgc2ltdWxhdG9yLCBsaWtlIHRoZSBgbWFjODAyMTFfaHdzaW1gIGVxdWl2YWxlbnQsIGF2YWlsYWJsZSBmb3IgTkZDLiBUaGUgcmVhbCBoYXJkd2FyZSBtaWdodCBub3QgYmUgZWFzaWx5IGFjY2Vzc2libGUgZm9yIGFsbCB0ZXN0IHNldHVwcy4gVGltZSB0byBzZWUgaWYgc29tZXRoaW5nIGxpa2UgYG5mY3NpbWAgZXhpc3RzLiBJJiMzOTtsbCBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIHdoYXQgSSBjYW4gdHVybiB1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZmNzaW0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvTWFrZWZpbGU9MTA9b2JqLSQoQ09ORklHX05GQ19NRUlfUEhZKVx0JiM0Mzs9IG1laV9waHkub1xuZHJpdmVycy9uZmMvTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX05GQ19TSU0pXHRcdCYjNDM7PSBuZmNzaW0ub1xuZHJpdmVycy9uZmMvTWFrZWZpbGUtMTItb2JqLSQoQ09ORklHX05GQ19QT1JUMTAwKVx0JiM0Mzs9IHBvcnQxMDAub1xuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMwLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzE6c3RydWN0IG5mY3NpbSB7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMi1cdHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKm5mY19kaWdpdGFsX2Rldjtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNi1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM3Olx0c3RydWN0IG5mY3NpbV9saW5rICpsaW5rX2luO1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mzg6XHRzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmtfb3V0O1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzktXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNTEtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo1MjpzdHJ1Y3QgbmZjc2ltX2xpbmsge1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtNTMtXHRzdHJ1Y3QgbXV0ZXggbG9jaztcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy02NC1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjY1OnN0YXRpYyBzdHJ1Y3QgbmZjc2ltX2xpbmsgKm5mY3NpbV9saW5rX25ldyh2b2lkKVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNjYte1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6Njc6XHRzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbms7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy02OC1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjY5Olx0bGluayA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBuZmNzaW1fbGluayk7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy03MC1cdGlmICghbGluaylcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy03OC1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjc5OnN0YXRpYyB2b2lkIG5mY3NpbV9saW5rX2ZyZWUoc3RydWN0IG5mY3NpbV9saW5rICpsaW5rKVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtODAte1xuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTg0LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6ODU6c3RhdGljIHZvaWQgbmZjc2ltX2xpbmtfcmVjdl93YWtlKHN0cnVjdCBuZmNzaW1fbGluayAqbGluaylcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTg2LXtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy05MC1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjkxOnN0YXRpYyB2b2lkIG5mY3NpbV9saW5rX3NldF9za2Ioc3RydWN0IG5mY3NpbV9saW5rICpsaW5rLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtOTItXHRcdFx0XHR1OCByZl90ZWNoLCB1OCBtb2RlKVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTEwMy1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjEwNDpzdGF0aWMgdm9pZCBuZmNzaW1fbGlua19yZWN2X2NhbmNlbChzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmspXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xMDUte1xuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTExMS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjExMjpcdG5mY3NpbV9saW5rX3JlY3Zfd2FrZShsaW5rKTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTExMy19XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xMTQtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoxMTU6c3RhdGljIHZvaWQgbmZjc2ltX2xpbmtfc2h1dGRvd24oc3RydWN0IG5mY3NpbV9saW5rICpsaW5rKVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTE2LXtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xMjMtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoxMjQ6XHRuZmNzaW1fbGlua19yZWN2X3dha2UobGluayk7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xMjUtfVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTI2LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTI3OnN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqbmZjc2ltX2xpbmtfcmVjdl9za2Ioc3RydWN0IG5mY3NpbV9saW5rICpsaW5rLFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTI4LVx0XHRcdFx0XHQgICAgaW50IHRpbWVvdXQsIHU4IHJmX3RlY2gsIHU4IG1vZGUpXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTY5LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTcwOnN0YXRpYyB2b2lkIG5mY3NpbV9zZW5kX3dxKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE3MS17XG5kcml2ZXJzL25mYy9uZmNzaW0uYzoxNzI6XHRzdHJ1Y3QgbmZjc2ltICpkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG5mY3NpbSwgc2VuZF93b3JrLndvcmspO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTczLVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE3Ni1cdCAqIGlzIHRoZSBsaW5rX2luIG9mIHRoZSBwZWVyIGRldmljZS4gVGhlIGV4Y2hhbmdlZCBza2IgaGFzIGFscmVhZHkgYmVlblxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTc3Olx0ICogc3RvcmVkIGluIHRoZSBkZXYtXHUwMDNlbGlua19vdXQgdGhyb3VnaCBuZmNzaW1fbGlua19zZXRfc2tiKCkuXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xNzgtXHQgKi9cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE3OTpcdG5mY3NpbV9saW5rX3JlY3Zfd2FrZShkZXYtXHUwMDNlbGlua19vdXQpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTgwLX1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE4MS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE4MjpzdGF0aWMgdm9pZCBuZmNzaW1fcmVjdl93cShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xODMte1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTg0Olx0c3RydWN0IG5mY3NpbSAqZGV2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZmNzaW0sIHJlY3Zfd29yayk7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xODUtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTg2LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTg3Olx0c2tiID0gbmZjc2ltX2xpbmtfcmVjdl9za2IoZGV2LVx1MDAzZWxpbmtfaW4sIGRldi1cdTAwM2VyZWN2X3RpbWVvdXQsXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xODgtXHRcdFx0XHQgICBkZXYtXHUwMDNlcmZfdGVjaCwgZGV2LVx1MDAzZW1vZGUpO1xuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwMC1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjIwMTpzdGF0aWMgaW50IG5mY3NpbV9zZW5kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yMDItXHRcdCAgICAgICB1MTYgdGltZW91dCwgbmZjX2RpZ2l0YWxfY21kX2NvbXBsZXRlX3QgY2IsIHZvaWQgKmFyZylcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwMy17XG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyMDQ6XHRzdHJ1Y3QgbmZjc2ltICpkZXYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwNS1cdHU4IGRlbGF5O1xuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIyNi1cdGlmIChza2IpIHtcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjIyNzpcdFx0bmZjc2ltX2xpbmtfc2V0X3NrYihkZXYtXHUwMDNlbGlua19vdXQsIHNrYiwgZGV2LVx1MDAzZXJmX3RlY2gsXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yMjgtXHRcdFx0XHQgICAgZGV2LVx1MDAzZW1vZGUpO1xuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIzOS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI0MDpzdGF0aWMgdm9pZCBuZmNzaW1fYWJvcnRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYpXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNDEte1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjQyOlx0Y29uc3Qgc3RydWN0IG5mY3NpbSAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNDMtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyNDQ6XHRuZmNzaW1fbGlua19yZWN2X2NhbmNlbChkZXYtXHUwMDNlbGlua19pbik7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNDUtfVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjQ2LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjQ3OnN0YXRpYyBpbnQgbmZjc2ltX3N3aXRjaF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBib29sIG9uKVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjQ4LXtcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI0OTpcdHN0cnVjdCBuZmNzaW0gKmRldiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjUwLVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI1NS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI1NjpzdGF0aWMgaW50IG5mY3NpbV9pbl9jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI1Ny1cdFx0XHRcdFx0ICBpbnQgdHlwZSwgaW50IHBhcmFtKVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjU4LXtcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI1OTpcdHN0cnVjdCBuZmNzaW0gKmRldiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjYwLVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI3OC1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI3OTpzdGF0aWMgaW50IG5mY3NpbV9pbl9zZW5kX2NtZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjgwLVx0XHRcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgdGltZW91dCxcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yODIte1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjgzOlx0cmV0dXJuIG5mY3NpbV9zZW5kKGRkZXYsIHNrYiwgdGltZW91dCwgY2IsIGFyZyk7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yODQtfVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjg1LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mjg2OnN0YXRpYyBpbnQgbmZjc2ltX3RnX2NvbmZpZ3VyZV9odyhzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjg3LVx0XHRcdFx0XHQgIGludCB0eXBlLCBpbnQgcGFyYW0pXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yODgte1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mjg5Olx0c3RydWN0IG5mY3NpbSAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yOTAtXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzA4LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzA5OnN0YXRpYyBpbnQgbmZjc2ltX3RnX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMTAtXHRcdFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0aW1lb3V0LFxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMxMi17XG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMTM6XHRyZXR1cm4gbmZjc2ltX3NlbmQoZGRldiwgc2tiLCB0aW1lb3V0LCBjYiwgYXJnKTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMxNC19XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMTUtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMTY6c3RhdGljIGludCBuZmNzaW1fdGdfbGlzdGVuKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsIHUxNiB0aW1lb3V0LFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzE3LVx0XHRcdCAgICBuZmNfZGlnaXRhbF9jbWRfY29tcGxldGVfdCBjYiwgdm9pZCAqYXJnKVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzE4LXtcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjMxOTpcdHJldHVybiBuZmNzaW1fc2VuZChkZGV2LCBOVUxMLCB0aW1lb3V0LCBjYiwgYXJnKTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMyMC19XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMjEtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMjI6c3RhdGljIGNvbnN0IHN0cnVjdCBuZmNfZGlnaXRhbF9vcHMgbmZjc2ltX2RpZ2l0YWxfb3BzID0ge1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzIzOlx0LmluX2NvbmZpZ3VyZV9odyA9IG5mY3NpbV9pbl9jb25maWd1cmVfaHcsXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMjQ6XHQuaW5fc2VuZF9jbWQgPSBuZmNzaW1faW5fc2VuZF9jbWQsXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMjUtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMjY6XHQudGdfbGlzdGVuID0gbmZjc2ltX3RnX2xpc3RlbixcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjMyNzpcdC50Z19jb25maWd1cmVfaHcgPSBuZmNzaW1fdGdfY29uZmlndXJlX2h3LFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzI4Olx0LnRnX3NlbmRfY21kID0gbmZjc2ltX3RnX3NlbmRfY21kLFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzI5LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzMwOlx0LmFib3J0X2NtZCA9IG5mY3NpbV9hYm9ydF9jbWQsXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMzE6XHQuc3dpdGNoX3JmID0gbmZjc2ltX3N3aXRjaF9yZixcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMzMi19O1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzMzLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzM0OnN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpuZmNzaW1fZGVidWdmc19yb290O1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzM1LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzM2OnN0YXRpYyB2b2lkIG5mY3NpbV9kZWJ1Z2ZzX2luaXQodm9pZClcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMzNy17XG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMzg6XHRuZmNzaW1fZGVidWdmc19yb290ID0gZGVidWdmc19jcmVhdGVfZGlyKFwmIzM0O25mY3NpbVwmIzM0OywgTlVMTCk7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMzktfVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzQwLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzQxOnN0YXRpYyB2b2lkIG5mY3NpbV9kZWJ1Z2ZzX3JlbW92ZSh2b2lkKVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzQyLXtcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM0MzpcdGRlYnVnZnNfcmVtb3ZlX3JlY3Vyc2l2ZShuZmNzaW1fZGVidWdmc19yb290KTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM0NC19XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNDUtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozNDY6c3RhdGljIHZvaWQgbmZjc2ltX2RlYnVnZnNfaW5pdF9kZXYoc3RydWN0IG5mY3NpbSAqZGV2KVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzQ3LXtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNTItXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozNTM6XHRpZiAoIW5mY3NpbV9kZWJ1Z2ZzX3Jvb3QpIHtcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM1NDpcdFx0TkZDU0lNX0VSUihkZXYsIFwmIzM0O25mY3NpbSBkZWJ1Z2ZzIG5vdCBpbml0aWFsaXplZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNTUtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNjQtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozNjU6XHRkZXZfZGlyID0gZGVidWdmc19jcmVhdGVfZGlyKGRldm5hbWUsIG5mY3NpbV9kZWJ1Z2ZzX3Jvb3QpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzY2LVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM2OS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM3MDpzdGF0aWMgc3RydWN0IG5mY3NpbSAqbmZjc2ltX2RldmljZV9uZXcoc3RydWN0IG5mY3NpbV9saW5rICpsaW5rX2luLFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzcxOlx0XHRcdFx0XHRzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmtfb3V0KVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzcyLXtcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM3MzpcdHN0cnVjdCBuZmNzaW0gKmRldjtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM3NC1cdGludCByYztcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM3NS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM3NjpcdGRldiA9IGt6YWxsb2Nfb2JqKHN0cnVjdCBuZmNzaW0pO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzc3LVx0aWYgKCFkZXYpXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzc5LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzgwOlx0SU5JVF9ERUxBWUVEX1dPUksoXHUwMDI2ZGV2LVx1MDAzZXNlbmRfd29yaywgbmZjc2ltX3NlbmRfd3EpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzgxOlx0SU5JVF9XT1JLKFx1MDAyNmRldi1cdTAwM2VyZWN2X3dvcmssIG5mY3NpbV9yZWN2X3dxKTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM4Mi1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM4My1cdGRldi1cdTAwM2VuZmNfZGlnaXRhbF9kZXYgPVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mzg0Olx0XHRcdG5mY19kaWdpdGFsX2FsbG9jYXRlX2RldmljZShcdTAwMjZuZmNzaW1fZGlnaXRhbF9vcHMsXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zODUtXHRcdFx0XHRcdFx0ICAgIE5GQ19QUk9UT19ORkNfREVQX01BU0ssXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDA2LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDA3Olx0bmZjc2ltX2RlYnVnZnNfaW5pdF9kZXYoZGV2KTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQwOC1cbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00MTEtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0MTI6c3RhdGljIHZvaWQgbmZjc2ltX2RldmljZV9mcmVlKHN0cnVjdCBuZmNzaW0gKmRldilcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQxMy17XG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDE3LVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDE4Olx0bmZjc2ltX2xpbmtfc2h1dGRvd24oZGV2LVx1MDAzZWxpbmtfaW4pO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDE5LVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQyNy1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQyODpzdGF0aWMgc3RydWN0IG5mY3NpbSAqZGV2MDtcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQyOTpzdGF0aWMgc3RydWN0IG5mY3NpbSAqZGV2MTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQzMC1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQzMTpzdGF0aWMgaW50IF9faW5pdCBuZmNzaW1faW5pdCh2b2lkKVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDMyLXtcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQzMzpcdHN0cnVjdCBuZmNzaW1fbGluayAqbGluazAsICpsaW5rMTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQzNC1cdGludCByYztcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQzNS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQzNjpcdGxpbmswID0gbmZjc2ltX2xpbmtfbmV3KCk7XG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0Mzc6XHRsaW5rMSA9IG5mY3NpbV9saW5rX25ldygpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDM4LVx0aWYgKCFsaW5rMCB8fCAhbGluazEpIHtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00NDItXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0NDM6XHRuZmNzaW1fZGVidWdmc19pbml0KCk7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy00NDQtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0NDU6XHRkZXYwID0gbmZjc2ltX2RldmljZV9uZXcobGluazAsIGxpbmsxKTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ0Ni1cdGlmIChJU19FUlIoZGV2MCkpIHtcbi0tXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00NTAtXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0NTE6XHRkZXYxID0gbmZjc2ltX2RldmljZV9uZXcobGluazEsIGxpbmswKTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ1Mi1cdGlmIChJU19FUlIoZGV2MSkpIHtcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQ1MzpcdFx0bmZjc2ltX2RldmljZV9mcmVlKGRldjApO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDU0LVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ1OC1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQ1OTpcdHByX2luZm8oXCYjMzQ7bmZjc2ltIFwmIzM0OyBORkNTSU1fVkVSU0lPTiBcJiMzNDsgaW5pdGlhbGl6ZWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDYwLVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ2My1leGl0X2VycjpcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQ2NDpcdHByX2VycihcJiMzNDtGYWlsZWQgdG8gaW5pdGlhbGl6ZSBuZmNzaW0gZHJpdmVyICglZClcXG5cJiMzNDssIHJjKTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ2NS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ2Ni1cdGlmIChsaW5rMClcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQ2NzpcdFx0bmZjc2ltX2xpbmtfZnJlZShsaW5rMCk7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy00NjgtXHRpZiAobGluazEpXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0Njk6XHRcdG5mY3NpbV9saW5rX2ZyZWUobGluazEpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDcwLVxuLS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ3My1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQ3NDpzdGF0aWMgdm9pZCBfX2V4aXQgbmZjc2ltX2V4aXQodm9pZClcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ3NS17XG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0NzY6XHRzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmswLCAqbGluazE7XG5kcml2ZXJzL25mYy9uZmNzaW0uYy00NzctXG4tLVxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDgwLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDgxOlx0bmZjc2ltX2RldmljZV9mcmVlKGRldjApO1xuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDgyOlx0bmZjc2ltX2RldmljZV9mcmVlKGRldjEpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDgzLVxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDg0Olx0bmZjc2ltX2xpbmtfZnJlZShsaW5rMCk7XG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0ODU6XHRuZmNzaW1fbGlua19mcmVlKGxpbmsxKTtcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ4Ni1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQ4NzpcdG5mY3NpbV9kZWJ1Z2ZzX3JlbW92ZSgpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDg4LX1cbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ4OS1cbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQ5MDptb2R1bGVfaW5pdChuZmNzaW1faW5pdCk7XG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0OTE6bW9kdWxlX2V4aXQobmZjc2ltX2V4aXQpO1xuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDkyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA4OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNjg1CgkJCQkJCQlvdXRwdXQ6IDE2CgkJCQkJCQl0aG91Z2h0czogNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhlIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyB0aGUgTkZDIFNpbXVsYXRvciBEcml2ZXIqKgoKT2theSwgc28gYG5mY3NpbWAgaXMgYSBrbm93biBxdWFudGl0eSwgYSBzaW11bGF0b3IgZHJpdmVyIGZvciBORkMsIGFuZCBpdCYjMzk7cyBlbmFibGVkIGJ5IHRoZSBgQ09ORklHX05GQ19TSU1gIGNvbmZpZyBvcHRpb24uIEdvb2QuIEkgc2VlIGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHRvdWNoaW5nIGBuZXQvbmZjL2xsY3BfY29yZS5jYCBhbmQgYG5ldC9uZmMvbGxjcF9zb2NrLmNgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nLCBtZWFucyB0aGV5JiMzOTtyZSBkaWdnaW5nIGludG8gdGhlIExvdyBMZXZlbCBDb21tdW5pY2F0aW9uIFByb3RvY29sIChMTENQKSBpbXBsZW1lbnRhdGlvbiB3aXRoaW4gdGhlIE5GQyBzdGFjay4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGJlZm9yZSBJIGRpdmUgZGVlcCBpbnRvIHRoZSBjb2RlIGNoYW5nZXMsIEkgbmVlZCB0byB2ZXJpZnkgYWxsIHRoZSBzdXBwb3J0aW5nIGNvbmZpZ3VyYXRpb25zIGFyZSBwcm9wZXJseSBzZXQgdG8gc3VwcG9ydCB0aGUgbmV3IGZlYXR1cmVzIG9yIHBhdGNoZXMsIGFuZCBzcGVjaWZpY2FsbHkgdGhhdCBORkMgYW5kIExMQ1AgYXJlIGNvcnJlY3RseSBlbmFibGVkIGluIHRoZSBmaXJzdCBwbGFjZS4gSSYjMzk7bGwgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmVxdWlyZW1lbnRzIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nJiMzOTtzIHNldCB1cCBjb3JyZWN0bHkgZm9yIHRlc3Rpbmcgd2l0aCB0aGUgc2ltdWxhdG9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA4OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORkMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9tNjhrL0tjb25maWcuZGV2aWNlcz0zNj1jb25maWcgTkZCTE9DS1xuLS1cbmFyY2gvbTY4ay9LY29uZmlnLmRldmljZXMtNDMtXG5hcmNoL202OGsvS2NvbmZpZy5kZXZpY2VzOjQ0OmNvbmZpZyBORkNPTlxuYXJjaC9tNjhrL0tjb25maWcuZGV2aWNlcy00NS1cdHRyaXN0YXRlIFwmIzM0O05hdEZlYXQgY29uc29sZSBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9LY29uZmlnPTY9bWVudSBcJiMzNDtOZWFyIEZpZWxkIENvbW11bmljYXRpb24gKE5GQykgZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL0tjb25maWctOC1cbmRyaXZlcnMvbmZjL0tjb25maWc6OTpjb25maWcgTkZDX1RSRjc5NzBBXG5kcml2ZXJzL25mYy9LY29uZmlnLTEwLVx0dHJpc3RhdGUgXCYjMzQ7VGV4YXMgSW5zdHJ1bWVudHMgVFJGNzk3MGEgTkZDIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL0tjb25maWctMjAtXG5kcml2ZXJzL25mYy9LY29uZmlnOjIxOmNvbmZpZyBORkNfTUVJX1BIWVxuZHJpdmVycy9uZmMvS2NvbmZpZy0yMi1cdHRyaXN0YXRlIFwmIzM0O01FSSBidXMgTkZDIGRldmljZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvS2NvbmZpZy0zMC1cbmRyaXZlcnMvbmZjL0tjb25maWc6MzE6Y29uZmlnIE5GQ19TSU1cbmRyaXZlcnMvbmZjL0tjb25maWctMzItXHR0cmlzdGF0ZSBcJiMzNDtORkMgaGFyZHdhcmUgc2ltdWxhdG9yIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL0tjb25maWctNDEtXG5kcml2ZXJzL25mYy9LY29uZmlnOjQyOmNvbmZpZyBORkNfUE9SVDEwMFxuZHJpdmVycy9uZmMvS2NvbmZpZy00My1cdHRyaXN0YXRlIFwmIzM0O1NvbnkgTkZDIFBvcnQtMTAwIFNlcmllcyBVU0IgZGV2aWNlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9LY29uZmlnLTUxLVxuZHJpdmVycy9uZmMvS2NvbmZpZzo1Mjpjb25maWcgTkZDX1ZJUlRVQUxfTkNJXG5kcml2ZXJzL25mYy9LY29uZmlnLTUzLVx0dHJpc3RhdGUgXCYjMzQ7TkNJIGRldmljZSBzaW11bGF0b3IgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvZmRwL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmZjL2ZkcC9LY29uZmlnOjI6Y29uZmlnIE5GQ19GRFBcbmRyaXZlcnMvbmZjL2ZkcC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtJbnRlbCBGRFAgTkZDIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL2ZkcC9LY29uZmlnLTE0LVxuZHJpdmVycy9uZmMvZmRwL0tjb25maWc6MTU6Y29uZmlnIE5GQ19GRFBfSTJDXG5kcml2ZXJzL25mYy9mZHAvS2NvbmZpZy0xNi1cdHRyaXN0YXRlIFwmIzM0O05GQyBGRFAgaTJjIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWc6Mjpjb25maWcgTkZDX01JQ1JPUkVBRFxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWctOS1cbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9LY29uZmlnOjEwOmNvbmZpZyBORkNfTUlDUk9SRUFEX0kyQ1xuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWctMTEtXHR0cmlzdGF0ZSBcJiMzNDtJbnNpZGUgU2VjdXJlIE1pY3JvcmVhZCBkZXZpY2Ugc3VwcG9ydCAoSTJDKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL21pY3JvcmVhZC9LY29uZmlnLTIxLVxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWc6MjI6Y29uZmlnIE5GQ19NSUNST1JFQURfTUVJXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvS2NvbmZpZy0yMy1cdHRyaXN0YXRlIFwmIzM0O0luc2lkZSBTZWN1cmUgTWljcm9yZWFkIGRldmljZSBzdXBwb3J0IChNRUkpXCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWc6Mjpjb25maWcgTkZDX01SVkxcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctOS1cbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZzoxMDpjb25maWcgTkZDX01SVkxfVVNCXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctMTEtXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIE5GQy1vdmVyLVVTQiBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctMjItXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWc6MjM6Y29uZmlnIE5GQ19NUlZMX1VBUlRcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy0yNC1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgTkZDLW92ZXItVUFSVCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctMzQtXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWc6MzU6Y29uZmlnIE5GQ19NUlZMX0kyQ1xuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTM2LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBORkMtb3Zlci1JMkMgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTQ1LVxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnOjQ2OmNvbmZpZyBORkNfTVJWTF9TUElcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy00Ny1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgTkZDLW92ZXItU1BJIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19OWFBfTkNJXG5kcml2ZXJzL25mYy9ueHAtbmNpL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O05YUC1OQ0kgTkZDIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy0xNC1cbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZzoxNTpjb25maWcgTkZDX05YUF9OQ0lfSTJDXG5kcml2ZXJzL25mYy9ueHAtbmNpL0tjb25maWctMTYtXHR0cmlzdGF0ZSBcJiMzNDtOWFAtTkNJIEkyQyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZzoyOmNvbmZpZyBORkNfUE41MzNcbmRyaXZlcnMvbmZjL3BuNTMzL0tjb25maWctMy1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZy03LVxuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZzo4OmNvbmZpZyBORkNfUE41MzNfVVNCXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnLTktXHR0cmlzdGF0ZSBcJiMzNDtORkMgUE41MzMgZGV2aWNlIHN1cHBvcnQgKFVTQilcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnLTE4LVxuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZzoxOTpjb25maWcgTkZDX1BONTMzX0kyQ1xuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZy0yMC1cdHRyaXN0YXRlIFwmIzM0O05GQyBQTjUzMyBkZXZpY2Ugc3VwcG9ydCAoSTJDKVwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL3BuNTMzL0tjb25maWctMjktXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnOjMwOmNvbmZpZyBORkNfUE41MzJfVUFSVFxuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZy0zMS1cdHRyaXN0YXRlIFwmIzM0O05GQyBQTjUzMiBkZXZpY2Ugc3VwcG9ydCAoVUFSVClcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9wbjU0NC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25mYy9wbjU0NC9LY29uZmlnOjI6Y29uZmlnIE5GQ19QTjU0NFxuZHJpdmVycy9uZmMvcG41NDQvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25mYy9wbjU0NC9LY29uZmlnLTktXG5kcml2ZXJzL25mYy9wbjU0NC9LY29uZmlnOjEwOmNvbmZpZyBORkNfUE41NDRfSTJDXG5kcml2ZXJzL25mYy9wbjU0NC9LY29uZmlnLTExLVx0dHJpc3RhdGUgXCYjMzQ7TlhQIFBONTQ0IGRldmljZSBzdXBwb3J0IChJMkMpXCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvcG41NDQvS2NvbmZpZy0yMC1cbmRyaXZlcnMvbmZjL3BuNTQ0L0tjb25maWc6MjE6Y29uZmlnIE5GQ19QTjU0NF9NRUlcbmRyaXZlcnMvbmZjL3BuNTQ0L0tjb25maWctMjItXHR0cmlzdGF0ZSBcJiMzNDtOWFAgUE41NDQgZGV2aWNlIHN1cHBvcnQgKE1FSSlcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9zM2Z3cm41L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZzoyOmNvbmZpZyBORkNfUzNGV1JONVxuZHJpdmVycy9uZmMvczNmd3JuNS9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZy05LVxuZHJpdmVycy9uZmMvczNmd3JuNS9LY29uZmlnOjEwOmNvbmZpZyBORkNfUzNGV1JONV9JMkNcbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZy0xMS1cdHRyaXN0YXRlIFwmIzM0O1NhbXN1bmcgUzNGV1JONSBJMkMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZy0yMi1cbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZzoyMzpjb25maWcgTkZDX1MzRldSTjgyX1VBUlRcbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZy0yNC0gICAgICAgIHRyaXN0YXRlIFwmIzM0O1NhbXN1bmcgUzNGV1JOODIgVUFSVCBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19TVF9OQ0lcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTMtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTgtXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZzo5OmNvbmZpZyBORkNfU1RfTkNJX0kyQ1xuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMTAtXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKEkyQylcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0yMC1cbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnOjIxOmNvbmZpZyBORkNfU1RfTkNJX1NQSVxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMjItXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgU1QgTkNJIE5GQyBkcml2ZXIgKFNQSSlcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnOjI6Y29uZmlnIE5GQ19TVDIxTkZDQVxuZHJpdmVycy9uZmMvc3QyMW5mY2EvS2NvbmZpZy0zLVx0dHJpc3RhdGVcbi0tXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnLTktXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnOjEwOmNvbmZpZyBORkNfU1QyMU5GQ0FfSTJDXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnLTExLVx0dHJpc3RhdGUgXCYjMzQ7U1RNaWNyb2VsZWN0cm9uaWNzIFNUMjFORkNBIE5GQyBkcml2ZXIgKEkyQylcJiMzNDtcbi0tXG5kcml2ZXJzL25mYy9zdDk1aGYvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZmMvc3Q5NWhmL0tjb25maWc6Mjpjb25maWcgTkZDX1NUOTVIRlxuZHJpdmVycy9uZmMvc3Q5NWhmL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1NUOTVIRiBORkMgVHJhbnNjZWl2ZXIgZHJpdmVyXCYjMzQ7XG4tLVxubmV0L25mYy9LY29uZmlnLTUtXG5uZXQvbmZjL0tjb25maWc6NjptZW51Y29uZmlnIE5GQ1xubmV0L25mYy9LY29uZmlnLTctXHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXG4tLVxubmV0L25mYy9LY29uZmlnLTE2LVxubmV0L25mYy9LY29uZmlnOjE3OmNvbmZpZyBORkNfRElHSVRBTFxubmV0L25mYy9LY29uZmlnLTE4LVx0ZGVwZW5kcyBvbiBORkNcbi0tXG5uZXQvbmZjL2hjaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbmZjL2hjaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19IQ0lcbm5ldC9uZmMvaGNpL0tjb25maWctMy1cdGRlcGVuZHMgb24gTkZDXG4tLVxubmV0L25mYy9oY2kvS2NvbmZpZy0xMC1cbm5ldC9uZmMvaGNpL0tjb25maWc6MTE6Y29uZmlnIE5GQ19TSERMQ1xubmV0L25mYy9oY2kvS2NvbmZpZy0xMi1cdGRlcGVuZHMgb24gTkZDX0hDSVxuLS1cbm5ldC9uZmMvbmNpL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbm5ldC9uZmMvbmNpL0tjb25maWc6Mjpjb25maWcgTkZDX05DSVxubmV0L25mYy9uY2kvS2NvbmZpZy0zLVx0ZGVwZW5kcyBvbiBORkNcbi0tXG5uZXQvbmZjL25jaS9LY29uZmlnLTEyLVxubmV0L25mYy9uY2kvS2NvbmZpZzoxMzpjb25maWcgTkZDX05DSV9TUElcbm5ldC9uZmMvbmNpL0tjb25maWctMTQtXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXHUwMDI2XHUwMDI2IFNQSVxuLS1cbm5ldC9uZmMvbmNpL0tjb25maWctMjMtXG5uZXQvbmZjL25jaS9LY29uZmlnOjI0OmNvbmZpZyBORkNfTkNJX1VBUlRcbm5ldC9uZmMvbmNpL0tjb25maWctMjUtXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXHUwMDI2XHUwMDI2IFRUWVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA4OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0OTU1CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246CgoqKkFuYWx5emluZyBORkMgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCkFscmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IHdheSB0byBoYW5kbGUgTkZDIGNvbmZpZ3VyYXRpb24gaW4gdGhpcyBwYXJ0aWN1bGFyIHN5c3RlbS4gSSBzZWUgdGhhdCB0aGUgcHJpbWFyeSBjb25maWcgZmxhZyBmb3IgZW5hYmxpbmcgTkZDIGlzIGBORkNgLiBUaGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZCBlbm91Z2guIEJ1dCwgZ2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGUgcHJvamVjdCwgSSB3YW50IHRvIGNvbnNpZGVyIGFsbCB0aGUgYW5nbGVzLiBJIGFsc28gbm90aWNlIHRoZSBleGlzdGVuY2Ugb2YgYE5GQ19TSU1gLiBPa2F5LCB0aGF0JiMzOTtzIHByb2JhYmx5IGZvciB0aGUgc2ltdWxhdG9yIGVudmlyb25tZW50LiBHb29kLCBnb29kLiBJ4oCZbGwgbWFrZSBhIG1lbnRhbCBub3RlIHRvIGFkZHJlc3MgYm90aC4KCk5vdywgYmVmb3JlIEkgY29tbWl0IHRvIGFueXRoaW5nLCBJIHNob3VsZCBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYSBtb3JlIGdyYW51bGFyIG9wdGlvbi4gSXQmIzM5O3MgbGlrZWx5IHRoZXJlIG1heSBiZSBhIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZm9yIExMQ1AgKExvZ2ljYWwgTGluayBDb250cm9sIFByb3RvY29sKSB3aGljaCBJJiMzOTtsbCBiZSBzdXJlIHRvIGludmVzdGlnYXRlLiBUaGUga2V5IGlzIGluIGNvbXByZWhlbnNpdmUgY29uc2lkZXJhdGlvbi4gVGhlIGluaXRpYWwgY29uZmlncyBtZW50aW9uZWQgcG9pbnQgdG8gZ2VuZXJhbCBORkMgdXNlIGFuZCBzaW11bGF0aW9uIGJ1dCB0aGVyZSBpcyBhIGNoYW5jZSBvZiBmaW5kaW5nIGBORkNfTExDUGAgYXMgYSBsb3ctbGV2ZWwgb3B0aW9uIHRoYXQgaXMgbmVjZXNzYXJ5IHRvIGNvbnNpZGVyLiBObyBuZWVkIHRvIG1ha2UgYXNzdW1wdGlvbnM7IGxldCYjMzk7cyBzZWUgd2hhdCBlbHNlIG1pZ2h0IGJlIGhpZGluZyBpbiB0aGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA4OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GQ19MTENQJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTI2MQoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkxMQ1AgYW5kIE5GQzogQSBRdWljayBDaGVjayoqCgpPa2F5LCBzbyBJJiMzOTttIHdvbmRlcmluZyBhYm91dCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gTExDUCAoTG9naWNhbCBMaW5rIENvbnRyb2wgUHJvdG9jb2wpIGFuZCBORkMuIFNwZWNpZmljYWxseSwgZG9lcyBlbmFibGluZyBORkMgKmF1dG9tYXRpY2FsbHkqIGVuYWJsZSBMTENQPyBJdCBzZWVtcyBsaWtlIGEgcmVhc29uYWJsZSBhc3N1bXB0aW9uLCBidXQgSSBuZWVkIHRvIGNvbmZpcm0uIFRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0LCBvZiBjb3Vyc2UsIGlzIHRoZSBzb3VyY2UgY29kZS4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBgbmV0L25mYy9NYWtlZmlsZWAgZmlsZS4gVGhhdCYjMzk7cyB1c3VhbGx5IHdoZXJlIHRoZSBidWlsZCBkZXBlbmRlbmNpZXMgYW5kIGNvcmUgY29uZmlndXJhdGlvbnMgcmVzaWRlLiBJdCBzaG91bGQgcXVpY2tseSByZXZlYWwgd2hldGhlciB0aGUgTExDUCBtb2R1bGUgaXMgY29uZGl0aW9uYWxseSBjb21waWxlZCBiYXNlZCBvbiB0aGUgTkZDIGNvbmZpZ3VyYXRpb24sIG9yIGlmIHRoZXJlJiMzOTtzIGFuIGV4cGxpY2l0IGRlcGVuZGVuY3kgZXhwcmVzc2VkIHRoZXJlLiBIb3BlZnVsbHksIHRoaXMmIzM5O2xsIGJlIGEgcXVpY2sgb25lIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtsbGNwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25mYy9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX05GQ19ESUdJVEFMKSAmIzQzOz0gbmZjX2RpZ2l0YWwub1xubmV0L25mYy9NYWtlZmlsZS0xMC1cbm5ldC9uZmMvTWFrZWZpbGU6MTE6bmZjLW9ianMgOj0gY29yZS5vIG5ldGxpbmsubyBhZl9uZmMubyByYXdzb2NrLm8gbGxjcF9jb3JlLm8gbGxjcF9jb21tYW5kcy5vIFxcXG5uZXQvbmZjL01ha2VmaWxlOjEyOlx0XHRsbGNwX3NvY2sub1xubmV0L25mYy9NYWtlZmlsZS0xMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDg6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTU1OTkKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBORkMgTExDUCBTb2NrZXQgQ2hhbmdlcyoqCgpPa2F5LCBzbyBJIHNlZSB0aGF0IGBsbGNwX2NvcmUub2AgYW5kIGBsbGNwX3NvY2sub2AgYXJlIGluZGVlZCBidWlsdCB3aGVuIGBDT05GSUdfTkZDYCBpcyBlbmFibGVkLCB3aGljaCBpcyBleHBlY3RlZC4gVGhleSYjMzk7cmUgcGFydCBvZiB0aGF0IGBuZmMtb2Jqc2AgZ3JvdXBpbmcuIFRoZSBwYXRjaCB0YXJnZXRzIHF1aXRlIGEgZmV3IGNydWNpYWwgZnVuY3Rpb25zLCBtYWlubHkgdGhlIGxpZmVjeWNsZSBhbmQgbWFuYWdlbWVudCBvZiBORkMgTExDUCBzb2NrZXRzLiBJJiMzOTttIHNlZWluZyBtb2RpZmljYXRpb25zIGluIGBuZmNfbGxjcF9zb2NrZXRfcmVsZWFzZWAsIGBuZmNfbGxjcF9sb2NhbF9wdXRgLCBgbmZjX2xsY3BfYWNjZXB0X2RlcXVldWVgLCBgbGxjcF9zb2NrX2FjY2VwdGAsIGFuZCBgbGxjcF9zb2NrX3JlbGVhc2VgLiBUaG9zZSBhcmUgYWxsIGNvcmUgdG8gaG93IHRoZSBMTENQIHNvY2tldHMgb3BlcmF0ZS4gTm93LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gc3BlY2lmaWNzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoZXNlIGNoYW5nZXMuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgdGhlIGtleSBzeW1ib2xzIHRoYXQgYXJlIGJlaW5nIG1vZGlmaWVkLiBJIGNhbiBzZWUgdGhhdCBgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2VgIGlzIHN0YXRpYywgc28gaXRzIHNjb3BlIGlzIGxpbWl0ZWQgdG8gdGhlIG1vZHVsZSBpdHNlbGYuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgYG5mY19sbGNwX2xvY2FsX3B1dGAgaXMgZXhwb3J0ZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCBpdHMgcG90ZW50aWFsIGltcGFjdCBvbiB0aGUgd2lkZXIga2VybmVsLiBUaGF0JiMzOTtzIHRoZSBuZXh0IGNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZmNfbGxjcF9sb2NhbF9wdXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL2xsY3AuaD0yMDQ9c3RydWN0IG5mY19sbGNwX2xvY2FsICpuZmNfbGxjcF9maW5kX2xvY2FsKHN0cnVjdCBuZmNfZGV2ICpkZXYpO1xubmV0L25mYy9sbGNwLmg6MjA1OmludCBuZmNfbGxjcF9sb2NhbF9wdXQoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCk7XG5uZXQvbmZjL2xsY3AuaC0yMDYtdTggbmZjX2xsY3BfZ2V0X3NkcF9zc2FwKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmM9MzcxPWludCBuZmNfbGxjcF9zZW5kX3N5bW0oc3RydWN0IG5mY19kZXYgKmRldilcbi0tXG5uZXQvbmZjL2xsY3BfY29tbWFuZHMuYy00MDEtb3V0OlxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmM6NDAyOlx0bmZjX2xsY3BfbG9jYWxfcHV0KGxvY2FsKTtcbm5ldC9uZmMvbGxjcF9jb21tYW5kcy5jLTQwMy1cdHJldHVybiBlcnI7XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz0yMDE9c3RhdGljIHZvaWQgbG9jYWxfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqcmVmKVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMjA5LVxubmV0L25mYy9sbGNwX2NvcmUuYzoyMTA6aW50IG5mY19sbGNwX2xvY2FsX3B1dChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsKVxubmV0L25mYy9sbGNwX2NvcmUuYy0yMTEte1xuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM9NjU1PXU4ICpuZmNfbGxjcF9nZW5lcmFsX2J5dGVzKHN0cnVjdCBuZmNfZGV2ICpkZXYsIHNpemVfdCAqZ2VuZXJhbF9ieXRlc19sZW4pXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy02NjgtXG5uZXQvbmZjL2xsY3BfY29yZS5jOjY2OTpcdG5mY19sbGNwX2xvY2FsX3B1dChsb2NhbCk7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTY3MC1cbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jPTY3ND1pbnQgbmZjX2xsY3Bfc2V0X3JlbW90ZV9nYihzdHJ1Y3QgbmZjX2RldiAqZGV2LCBjb25zdCB1OCAqZ2IsIHU4IGdiX2xlbilcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTcwMS1vdXQ6XG5uZXQvbmZjL2xsY3BfY29yZS5jOjcwMjpcdG5mY19sbGNwX2xvY2FsX3B1dChsb2NhbCk7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTcwMy1cdHJldHVybiBlcnI7XG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYz0xNjM0PWludCBuZmNfbGxjcF9kYXRhX3JlY2VpdmVkKHN0cnVjdCBuZmNfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L25mYy9sbGNwX2NvcmUuYy0xNjQ1LVxubmV0L25mYy9sbGNwX2NvcmUuYzoxNjQ2Olx0bmZjX2xsY3BfbG9jYWxfcHV0KGxvY2FsKTtcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY0Ny1cbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE2NTE9dm9pZCBuZmNfbGxjcF9tYWNfaXNfZG93bihzdHJ1Y3QgbmZjX2RldiAqZGV2KVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY2NC1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTY2NTpcdG5mY19sbGNwX2xvY2FsX3B1dChsb2NhbCk7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2NjYtfVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmM9MTY2OD12b2lkIG5mY19sbGNwX21hY19pc191cChzdHJ1Y3QgbmZjX2RldiAqZGV2LCB1MzIgdGFyZ2V0X2lkeCxcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2OTEtXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE2OTI6XHRuZmNfbGxjcF9sb2NhbF9wdXQobG9jYWwpO1xubmV0L25mYy9sbGNwX2NvcmUuYy0xNjkzLX1cbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE3NTM9dm9pZCBuZmNfbGxjcF91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmZjX2RldiAqZGV2KVxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTc2My1cbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTc2NDpcdG5mY19sbGNwX2xvY2FsX3B1dChsb2NhbCk7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTE3NjUtfVxuLS1cbm5ldC9uZmMvbGxjcF9zb2NrLmM9NTk9c3RhdGljIGludCBsbGNwX3NvY2tfYmluZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqYWRkciwgaW50IGFsZW4pXG4tLVxubmV0L25mYy9sbGNwX3NvY2suYy0xMzYtc29ja19sbGNwX3B1dF9sb2NhbDpcbm5ldC9uZmMvbGxjcF9zb2NrLmM6MTM3Olx0bmZjX2xsY3BfbG9jYWxfcHV0KGxsY3Bfc29jay1cdTAwM2Vsb2NhbCk7XG5uZXQvbmZjL2xsY3Bfc29jay5jLTEzOC1cdGxsY3Bfc29jay1cdTAwM2Vsb2NhbCA9IE5VTEw7XG4tLVxubmV0L25mYy9sbGNwX3NvY2suYz02ODY9c3RhdGljIGludCBsbGNwX3NvY2tfY29ubmVjdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqX2FkZHIsXG4tLVxubmV0L25mYy9sbGNwX3NvY2suYy03OTktc29ja19sbGNwX3B1dF9sb2NhbDpcbm5ldC9uZmMvbGxjcF9zb2NrLmM6ODAwOlx0bmZjX2xsY3BfbG9jYWxfcHV0KGxvY2FsKTtcbm5ldC9uZmMvbGxjcF9zb2NrLmMtODAxLVxuLS1cbm5ldC9uZmMvbGxjcF9zb2NrLmM9MTA0NT12b2lkIG5mY19sbGNwX3NvY2tfZnJlZShzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqc29jaylcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jLTEwNTUtXG5uZXQvbmZjL2xsY3Bfc29jay5jOjEwNTY6XHRuZmNfbGxjcF9sb2NhbF9wdXQoc29jay1cdTAwM2Vsb2NhbCk7XG5uZXQvbmZjL2xsY3Bfc29jay5jLTEwNTctfVxuLS1cbm5ldC9uZmMvbmV0bGluay5jPTEwMTc9c3RhdGljIGludCBuZmNfZ2VubF9sbGNfZ2V0X3BhcmFtcyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC9uZmMvbmV0bGluay5jLTEwNTAtcHV0X2xvY2FsOlxubmV0L25mYy9uZXRsaW5rLmM6MTA1MTpcdG5mY19sbGNwX2xvY2FsX3B1dChsb2NhbCk7XG5uZXQvbmZjL25ldGxpbmsuYy0xMDUyLVxuLS1cbm5ldC9uZmMvbmV0bGluay5jPTEwNjg9c3RhdGljIGludCBuZmNfZ2VubF9sbGNfc2V0X3BhcmFtcyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxuLS1cbm5ldC9uZmMvbmV0bGluay5jLTExMjYtcHV0X2xvY2FsOlxubmV0L25mYy9uZXRsaW5rLmM6MTEyNzpcdG5mY19sbGNwX2xvY2FsX3B1dChsb2NhbCk7XG5uZXQvbmZjL25ldGxpbmsuYy0xMTI4LVxuLS1cbm5ldC9uZmMvbmV0bGluay5jPTExMzc9c3RhdGljIGludCBuZmNfZ2VubF9sbGNfc2RyZXEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvbmZjL25ldGxpbmsuYy0xMjE4LXB1dF9sb2NhbDpcbm5ldC9uZmMvbmV0bGluay5jOjEyMTk6XHRuZmNfbGxjcF9sb2NhbF9wdXQobG9jYWwpO1xubmV0L25mYy9uZXRsaW5rLmMtMTIyMC1cbi0tXG5uZXQvbmZjL25mYy5oPTU0PXN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbmZjX2xsY3BfZmluZF9sb2NhbChzdHJ1Y3QgbmZjX2RldiAqZGV2KTtcbm5ldC9uZmMvbmZjLmg6NTU6aW50IG5mY19sbGNwX2xvY2FsX3B1dChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsKTtcbm5ldC9uZmMvbmZjLmgtNTYtaW50IF9faW5pdCBuZmNfbGxjcF9pbml0KHZvaWQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzg5MAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipGb2N1c2luZyBvbiBMTENQIFNvY2tldCBPcGVyYXRpb25zKioKCk9rYXksIGBuZmNfbGxjcF9sb2NhbF9wdXRgIGxvb2tzIGxpa2UgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgbXkgYW5hbHlzaXMuIEJ1dCB3YWl0LCB3aGF0IGFib3V0IGBsbGNwX3NvY2tfYWNjZXB0YCBhbmQgYGxsY3Bfc29ja19yZWxlYXNlYD8gVGhvc2UgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIGFzIHN0YXRpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcsIGJ1dCB0aGV5IGFyZSBhbHNvIGFzc2lnbmVkIHRvIHRoZSBgc3RydWN0IHByb3RvX29wc2AuIFRoYXQgbWFrZXMgdGhlbSBpbXBvcnRhbnQuIEhtbSwgSSBzaG91bGQgY2hlY2sgd2hlcmUgdGhleSYjMzk7cmUgZGVmaW5lZC4gTGV0JiMzOTtzIGRpZyBpbnRvIGBuZXQvbmZjL2xsY3Bfc29jay5jYCBhbmQgc2VlIHdoYXQgYGxsY3Bfc29ja19hY2NlcHRgIGlzIGFsbCBhYm91dC4gVGhpcyBzZWVtcyBsaWtlIGl0IHdpbGwgYmUgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA4OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xsY3Bfc29ja19hY2NlcHQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjL2xsY3Bfc29jay5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZmMvbGxjcF9zb2NrLmM9NDE3PXN0cnVjdCBzb2NrICpuZmNfbGxjcF9hY2NlcHRfZGVxdWV1ZShzdHJ1Y3Qgc29jayAqcGFyZW50LFxuLS1cbm5ldC9uZmMvbGxjcF9zb2NrLmMtNDY1LVxubmV0L25mYy9sbGNwX3NvY2suYzo0NjY6c3RhdGljIGludCBsbGNwX3NvY2tfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssXG5uZXQvbmZjL2xsY3Bfc29jay5jLTQ2Ny1cdFx0XHQgICAgc3RydWN0IHByb3RvX2FjY2VwdF9hcmcgKmFyZylcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jPTk1Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBsbGNwX3NvY2tfb3BzID0ge1xuLS1cbm5ldC9uZmMvbGxjcF9zb2NrLmMtOTU4LVx0LnNvY2tldHBhaXIgICAgID0gc29ja19ub19zb2NrZXRwYWlyLFxubmV0L25mYy9sbGNwX3NvY2suYzo5NTk6XHQuYWNjZXB0ICAgICAgICAgPSBsbGNwX3NvY2tfYWNjZXB0LFxubmV0L25mYy9sbGNwX3NvY2suYy05NjAtXHQuZ2V0bmFtZSAgICAgICAgPSBsbGNwX3NvY2tfZ2V0bmFtZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDg6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg0MjQKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkFuYWx5emluZyBMTENQIFNvY2tldCBBY2NlcHRhbmNlKioKCk9rYXksIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgYGxsY3Bfc29ja19hY2NlcHRgIGZ1bmN0aW9uLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBpdCYjMzk7cyBkZWNsYXJlZCBgc3RhdGljYC4gVGhhdCBpbW1lZGlhdGVseSBzdWdnZXN0cyBpdCYjMzk7cyBpbnRlcm5hbCB0byB0aGlzIGNvbXBpbGF0aW9uIHVuaXQsIGFuZCBub3QgbWVhbnQgdG8gYmUgY2FsbGVkIGZyb20gYW55d2hlcmUgZWxzZS4gR29vZCB0byBrbm93LiBCdXQgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgY29ycmVjdC4KCk5vdywgd2hhdCBhYm91dCBgbmZjX2xsY3BfYWNjZXB0X2RlcXVldWVgPyBIbW0sIHRoYXQgbmFtZSBmZWVscyBsaWtlIGl0IHNob3VsZCBiZSByZWxhdGVkLCBhbmQgcG9zc2libHkgZXhwb3NlZCBmb3IgZXh0ZXJuYWwgdXNlLiBMZXQgbWUgcXVpY2tseSB2ZXJpZnkgaWYgdGhpcyBvbmUgaXMgKmFsc28qIHN0YXRpYyBvciB3aGV0aGVyIGl0JiMzOTtzIGV4cG9ydGVkIGFuZCB2aXNpYmxlIHRvIG90aGVyIG1vZHVsZXMuIFRoYXQmIzM5O2xsIGJlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBvdmVyYWxsIGRlc2lnbiBoZXJlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBmdW5jdGlvbiBkZWNsYXJhdGlvbiB0byBiZSBzdXJlLiBUaGlzIGlzIGFuIGltcG9ydGFudCBkaXN0aW5jdGlvbiB0byBpZGVudGlmeSB0aGUgY29ycmVjdCBzY29wZSBvZiB0aGUgZnVuY3Rpb25hbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDg6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZjX2xsY3BfYWNjZXB0X2RlcXVldWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL2xsY3AuaD0yMTg9dm9pZCBuZmNfbGxjcF9hY2NlcHRfZW5xdWV1ZShzdHJ1Y3Qgc29jayAqcGFyZW50LCBzdHJ1Y3Qgc29jayAqc2spO1xubmV0L25mYy9sbGNwLmg6MjE5OnN0cnVjdCBzb2NrICpuZmNfbGxjcF9hY2NlcHRfZGVxdWV1ZShzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2spO1xubmV0L25mYy9sbGNwLmgtMjIwLVxuLS1cbm5ldC9uZmMvbGxjcF9zb2NrLmM9NDAzPXZvaWQgbmZjX2xsY3BfYWNjZXB0X2VucXVldWUoc3RydWN0IHNvY2sgKnBhcmVudCwgc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC9uZmMvbGxjcF9zb2NrLmMtNDE2LVxubmV0L25mYy9sbGNwX3NvY2suYzo0MTc6c3RydWN0IHNvY2sgKm5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlKHN0cnVjdCBzb2NrICpwYXJlbnQsXG5uZXQvbmZjL2xsY3Bfc29jay5jLTQxOC1cdFx0XHRcdCAgICAgc3RydWN0IHNvY2tldCAqbmV3c29jaylcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jPTQ2Nj1zdGF0aWMgaW50IGxsY3Bfc29ja19hY2NlcHQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2tldCAqbmV3c29jayxcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jLTQ4Ni1cdGFkZF93YWl0X3F1ZXVlX2V4Y2x1c2l2ZShza19zbGVlcChzayksIFx1MDAyNndhaXQpO1xubmV0L25mYy9sbGNwX3NvY2suYzo0ODc6XHR3aGlsZSAoIShuZXdfc2sgPSBuZmNfbGxjcF9hY2NlcHRfZGVxdWV1ZShzaywgbmV3c29jaykpKSB7XG5uZXQvbmZjL2xsY3Bfc29jay5jLTQ4OC1cdFx0c2V0X2N1cnJlbnRfc3RhdGUoVEFTS19JTlRFUlJVUFRJQkxFKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDg6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkwNTUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIEkgYW5hbHl6ZSB0aGVzZSBmdW5jdGlvbnM6CgoqKkZ1bmN0aW9uIFNjb3BlIElucXVpcnkqKgoKT2theSwgc28gYG5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlYCBpc24mIzM5O3Qgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IGp1bXBzIG91dCBhdCBtZSDigJMgaXQgbWVhbnMgaXQmIzM5O3MgbGlrZWx5IGJlaW5nIGNhbGxlZCBmcm9tIG91dHNpZGUgdGhpcyBzcGVjaWZpYyBtb2R1bGUgb3IgZmlsZS4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cgZm9yIHVuZGVyc3RhbmRpbmcgZGVwZW5kZW5jaWVzIGFuZCBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLiBOb3csIEkgbmVlZCB0byBjaGVjayB0aGUgb3RoZXJzIHRvIGJ1aWxkIGEgY2xlYXJlciBwaWN0dXJlLgoKTGV0JiMzOTtzIHNlZeKApiBgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2VgPyBBaCwgdGhhdCBvbmUgKmlzKiBzdGF0aWMuIEludGVyZXN0aW5nLiBJIG5lZWQgdG8ga2VlcCB0cmFjayBvZiB0aGlzIGRpZmZlcmVuY2UgYmVjYXVzZSBpdCBpbW1lZGlhdGVseSBmbGFncyBwb3RlbnRpYWwgZW5jYXBzdWxhdGlvbiBpc3N1ZXMuIEEgc3RhdGljIGZ1bmN0aW9uIGlzLCBieSBkZWZpbml0aW9uLCBpbnRlbmRlZCBmb3IgaW50ZXJuYWwgdXNlIG9ubHkgd2l0aGluIGl0cyB0cmFuc2xhdGlvbiB1bml0LiBJdHMgYmVoYXZpb3Igc2hvdWxkbiYjMzk7dCBpbXBhY3QgYW55dGhpbmcgb3V0c2lkZSBpdC4KCkFscmlnaHQsIHdoYXQgZWxzZSBoYXMgYmVlbiBtb2RpZmllZD8gSSYjMzk7bSBub3cgZ29pbmcgdG8gcXVpY2tseSBzY2FuIGZvciBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoaXMgTExDUCBpbXBsZW1lbnRhdGlvbi4gQW55IGRldmlhdGlvbiBmcm9tIHRoZSBlc3RhYmxpc2hlZCBwYXR0ZXJuIHdhcnJhbnRzIGNsb3NlciBpbnNwZWN0aW9uLiBgbmZjX2xsY3Bfc29ja19saXN0X3BvcGAgYXBwZWFycyB0byBiZSBzdGF0aWMsIGNvbmZpcm1pbmcgaXRzIGludGVuZGVkIGxvY2FsIHNjb3BlLiBTYW1lIHdpdGggYGxvY2FsX3JlbGVhc2Vfd29ya2AuIE9rYXksIHR3byBtb3JlIHN0YXRpYyBmdW5jdGlvbnMsIHNvbGlkaWZ5aW5nIHRoZSBpZGVhIHRoYXQgdGhlIHN5c3RlbSBpcyB0cnlpbmcgdG8ga2VlcCB0aGUgaW5uZXIgd29ya2luZ3Mgb2YgdGhlIExMQ1AgbGF5ZXIgcHJldHR5IGNvbnRhaW5lZC4KCkFoYSEgYG5mY19sbGNwX2FjY2VwdF91bmxpbmtgIGlzIGFsc28gbm9uLXN0YXRpYywgbGlrZSB0aGUgYG5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlYCEgVGhpcyBzdWdnZXN0cyBhIGJyb2FkZXIgZXh0ZXJuYWwgaW50ZXJhY3Rpb24uIFRoaXMgc3VnZ2VzdHMgYSBwYXR0ZXJuIGVtZXJnaW5nLCBuYW1lbHkgdGhhdCB0aGVyZSYjMzk7cyBhIHNwZWNpZmljIHJlYXNvbiBmb3Igc29tZSBmdW5jdGlvbnMgdG8gYmUgYWNjZXNzaWJsZSBvdXRzaWRlIG9mIHRoZWlyIGRlY2xhcmF0aW9uIGNvbnRleHQsIHByb2JhYmx5IHRvIG1hbmFnZSBleHRlcm5hbCBjb25uZWN0aW9ucy4gSXQmIzM5O3MgdGltZSB0byBkaWcgZGVlcGVyIG9uIHRoZXNlIHR3byBmdW5jdGlvbnMgYW5kIHNlZSB3aGF0IHRoZXkmIzM5O3JlIGFjdHVhbGx5ICpkb2luZyouIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGVzZSBwYXJ0aWN1bGFyIGZ1bmN0aW9ucyBhcmUgZXhwb3NlZCBhbmQgd2hhdCBkZXBlbmRlbmNpZXMgdGhleSBtaWdodCBpbnRyb2R1Y2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA4OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mY19sbGNwX2FjY2VwdF91bmxpbmsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmZjL2xsY3AuaD0yMTY9dm9pZCBuZmNfbGxjcF9zb2NrX2ZyZWUoc3RydWN0IG5mY19sbGNwX3NvY2sgKnNvY2spO1xubmV0L25mYy9sbGNwLmg6MjE3OnZvaWQgbmZjX2xsY3BfYWNjZXB0X3VubGluayhzdHJ1Y3Qgc29jayAqc2spO1xubmV0L25mYy9sbGNwLmgtMjE4LXZvaWQgbmZjX2xsY3BfYWNjZXB0X2VucXVldWUoc3RydWN0IHNvY2sgKnBhcmVudCwgc3RydWN0IHNvY2sgKnNrKTtcbi0tXG5uZXQvbmZjL2xsY3BfY29yZS5jPTgzPXN0YXRpYyB2b2lkIG5mY19sbGNwX3NvY2tldF9yZWxlYXNlKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIGJvb2wgZGV2aWNlLFxuLS1cbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTE0LVx0XHRcdFx0aWYgKG5mY19sbGNwX3NvY2soYWNjZXB0X3NrKS1cdTAwM2VwYXJlbnQgPT0gc2spIHtcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTE1Olx0XHRcdFx0XHRuZmNfbGxjcF9hY2NlcHRfdW5saW5rKGFjY2VwdF9zayk7XG5uZXQvbmZjL2xsY3BfY29yZS5jLTExNi1cdFx0XHRcdFx0bmZjX2xsY3Bfc29ja191bmxpbmsoXHUwMDI2bG9jYWwtXHUwMDNlc29ja2V0cywgYWNjZXB0X3NrKTtcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jPTMwND1zdGF0aWMgaW50IG5mY19sbGNwX2dldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jLTM4OC1cbm5ldC9uZmMvbGxjcF9zb2NrLmM6Mzg5OnZvaWQgbmZjX2xsY3BfYWNjZXB0X3VubGluayhzdHJ1Y3Qgc29jayAqc2spXG5uZXQvbmZjL2xsY3Bfc29jay5jLTM5MC17XG4tLVxubmV0L25mYy9sbGNwX3NvY2suYz00MTc9c3RydWN0IHNvY2sgKm5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlKHN0cnVjdCBzb2NrICpwYXJlbnQsXG4tLVxubmV0L25mYy9sbGNwX3NvY2suYy00MzQtXG5uZXQvbmZjL2xsY3Bfc29jay5jOjQzNTpcdFx0XHRuZmNfbGxjcF9hY2NlcHRfdW5saW5rKHNrKTtcbm5ldC9uZmMvbGxjcF9zb2NrLmMtNDM2LVx0XHRcdGlmIChsb2NhbClcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jPTYxNj1zdGF0aWMgaW50IGxsY3Bfc29ja19yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXG4tLVxubmV0L25mYy9sbGNwX3NvY2suYy02NTItXHRcdFx0XHRuZmNfbGxjcF9zZW5kX2Rpc2Nvbm5lY3QobHNrKTtcbm5ldC9uZmMvbGxjcF9zb2NrLmM6NjUzOlx0XHRcdFx0bmZjX2xsY3BfYWNjZXB0X3VubGluayhhY2NlcHRfc2spO1xubmV0L25mYy9sbGNwX3NvY2suYy02NTQtXHRcdFx0XHRuZmNfbGxjcF9zb2NrX3VubGluayhcdTAwMjZsb2NhbC1cdTAwM2Vzb2NrZXRzLCBhY2NlcHRfc2spO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDE4MAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDE5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBORkMgTExDUCBDb2RlIGZvciBGdXp6aW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdGhhdCBgbmZjX2xsY3BfYWNjZXB0X3VubGlua2AsIGBuZmNfbGxjcF9hY2NlcHRfZGVxdWV1ZWAsIGFuZCBgbmZjX2xsY3BfbG9jYWxfcHV0YCBhcmUgc3Ryb25nIGNhbmRpZGF0ZXMgZm9yIGZ1enppbmcgdGFyZ2V0cyB3aXRoaW4gdGhpcyBORkMgTExDUCBpbXBsZW1lbnRhdGlvbi4gVGhvc2UgZnVuY3Rpb24gbmFtZXMgc2NyZWFtIHBvdGVudGlhbCBmb3IgaW5wdXQgaGFuZGxpbmcgdnVsbmVyYWJpbGl0aWVzLgoKTm93LCB0aGUgY29uZmlndXJhdGlvbiBhc3BlY3RzLiBJIHNlZSBgTkZDYCBhbmQgYE5GQ19TSU1gLiAqTkZDX1NJTSoganVtcHMgb3V0IGFzIHRoZSBzaW11bGF0b3IsIHdoaWNoIGlzIGlkZWFsIGZvciB0aGlzIGtpbmQgb2Ygd29yaywgYnV0IEkgbmVlZCB0byBlbnN1cmUgdGhlIGNvcmUgaXMgaW50YWN0LCBhbmQgdGhhdCBzZWVtcyB0byBiZSBlbmFibGVkIGJ5IGBORkNgLiBCdXQgaXMgYE5GQ19TSU1gIGFjdHVhbGx5IHBhcnQgb2YgdGhlIGNvcmUsIG9yIHNvbWV0aGluZyBlbHNlPwoKQWhhLCBgTkZDX1NJTWAgaXMgYSAqZHJpdmVyKiwgYnV0IHRoZSBjb2RlIEkmIzM5O20gbG9va2luZyBhdCwgc3BlY2lmaWNhbGx5IGBuZXQvbmZjL2xsY3BfY29yZS5jYCwgaXMgY29tcGlsZWQgdW5kZXIgdGhlIGBORkNgIGZsYWcuIFRoYXQmIzM5O3MgZ29vZC4gSXQgbWVhbnMgbXkgdGFyZ2V0IGNvZGUgaXMgcGFydCBvZiB0aGUgbWFpbiBzeXN0ZW0sIGFuZCBub3QgYSBzZXBhcmF0ZSBtb2R1bGUuCgpSaWdodCwgc28gdG8gbWFrZSBzdXJlIHRoZSBjb2RlIGdldHMgY29tcGlsZWQsIGBORkNgIG5lZWRzIHRvIGJlIGVuYWJsZWQuIEJ1dCB0byB0ZXN0IHRoZSBMTENQIGNvcmUsIEkgbmVlZCBhbiBORkMgZGV2aWNlLiAqQmluZ28hKiBgTkZDX1NJTWAgcHJvdmlkZXMgdGhhdCB2aXJ0dWFsIGRldmljZS4gSXQmIzM5O3MgYSBwZXJmZWN0IHNldHVwIGZvciBmdXp6aW5nIC0gSSBjYW4gc2ltdWxhdGUgaW50ZXJhY3Rpb25zIHdpdGhvdXQgcmVxdWlyaW5nIHBoeXNpY2FsIGhhcmR3YXJlLgoKSnVzdCB0byBiZSBjZXJ0YWluLCBJJiMzOTtsbCBxdWlja2x5IGNoZWNrIGlmIGBORkNfU0lNYCBoYXMgYW55IGRlcGVuZGVuY2llcyB0aGF0IGNvdWxkIGNvbXBsaWNhdGUgdGhpbmdzLiBJIHdhbnQgdG8ga25vdyBpZiB0aGVyZSBhcmUgaGlkZGVuIGZhY3RvcnMgb3IgbGltaXRhdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA4OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORkNfU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25mYy9LY29uZmlnPTIxPWNvbmZpZyBORkNfTUVJX1BIWVxuLS1cbmRyaXZlcnMvbmZjL0tjb25maWctMzAtXG5kcml2ZXJzL25mYy9LY29uZmlnOjMxOmNvbmZpZyBORkNfU0lNXG5kcml2ZXJzL25mYy9LY29uZmlnLTMyLVx0dHJpc3RhdGUgXCYjMzQ7TkZDIGhhcmR3YXJlIHNpbXVsYXRvciBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDg6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA4MzcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE5GQ19TSU1gOgoKKipEZWVwIERpdmUgaW50byBORkNfU0lNIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBiZWZvcmUgSSBnZXQgdG9vIGZhciBkb3duIHRoZSByb2FkIHdpdGggdGhpcywgbGV0JiMzOTtzIHRha2UgYSBnb29kLCBoYXJkIGxvb2sgYXQgdGhlIGRlcGVuZGVuY2llcyBvZiBgTkZDX1NJTWAuIEkgbmVlZCB0byBlbnN1cmUgYSByb2J1c3QgYW5kIHdlbGwtZGVmaW5lZCBmb3VuZGF0aW9uLCBhbmQgdGhhdCBzdGFydHMgaGVyZS4gSSYjMzk7bSB0aGlua2luZyBiZXlvbmQganVzdCB0aGUgaW1tZWRpYXRlbHkgb2J2aW91czsgd2hhdCBleHRlcm5hbCBsaWJyYXJpZXMgaXMgaXQgcHVsbGluZyBpbj8gV2hhdCBzcGVjaWZpYyB2ZXJzaW9ucyBhcmUgcmVxdWlyZWQsIGFuZCBhcmUgdGhvc2UgdmVyc2lvbnMgc3RpbGwgYWN0aXZlbHkgbWFpbnRhaW5lZD8gQXJlIHRoZXJlIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gQXJlIHRoZXJlIGFueSBpbmRpcmVjdCBkZXBlbmRlbmNpZXMg4oCTIGRlcGVuZGVuY2llcyBvZiBkZXBlbmRlbmNpZXMg4oCTIHRoYXQgbWlnaHQgaW50cm9kdWNlIHVuZXhwZWN0ZWQgY29tcGxleGl0aWVzIGRvd24gdGhlIGxpbmU/CgpJJiMzOTttIGFsc28gY29uc2lkZXJpbmcgdGhlIGJ1aWxkIGVudmlyb25tZW50IGl0c2VsZi4gV2hhdCBjb21waWxlciB2ZXJzaW9ucyBhcmUgc3VwcG9ydGVkPyBXaGF0IG9wZXJhdGluZyBzeXN0ZW1zIGFyZSBvZmZpY2lhbGx5IHN1cHBvcnRlZCwgYW5kIHdoYXQgYWJvdXQgbGVzcyBjb21tb24gb25lcz8gQXJlIHRoZXJlIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBkZXBlbmRlbmNpZXMgSSBuZWVkIHRvIHRha2UgaW50byBhY2NvdW50PyBUaGlzIGlzIGNydWNpYWwgZm9yIHBvcnRhYmlsaXR5LiBBbmQgd2hhdCBhYm91dCB0aGUgdGVzdGluZyBmcmFtZXdvcms/IEFyZSB0aGVyZSBhbnkgcGFydGljdWxhciBsaWJyYXJpZXMgb3IgdG9vbHMgYE5GQ19TSU1gIHJlbGllcyBvbiBmb3IgdW5pdCB0ZXN0cywgaW50ZWdyYXRpb24gdGVzdHMsIG9yIHBlcmZvcm1hbmNlIGJlbmNobWFya3M/IEkmIzM5O20gbm90IGp1c3QgY29uY2VybmVkIHdpdGggZ2V0dGluZyB0aGUgY29kZSB0byBydW47IEkgd2FudCB0byBlbnN1cmUgaXQmIzM5O3MgdGhvcm91Z2hseSB0ZXN0ZWQgYW5kIG1haW50YWluYWJsZS4KCkZpbmFsbHksIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGZ1dHVyZS4gV2lsbCBgTkZDX1NJTWAgbmVlZCB0byBpbnRlcmFjdCB3aXRoIGFueSBvdGhlciBzeXN0ZW1zIG9yIGNvbXBvbmVudHMgZG93biB0aGUgbGluZT8gQXJlIHRoZXJlIGFueSBlbWVyZ2luZyBzdGFuZGFyZHMgb3IgdGVjaG5vbG9naWVzIHRoYXQgSSBuZWVkIHRvIGtlZXAgaW4gbWluZCB3aGVuIGV2YWx1YXRpbmcgdGhlc2UgZGVwZW5kZW5jaWVzPyBDaG9vc2luZyB0aGUgcmlnaHQgZGVwZW5kZW5jaWVzIG5vdyBjYW4gc2F2ZSBhIG1hc3NpdmUgaGVhZGFjaGUgbGF0ZXIuIEl0JiMzOTtzIGFsbCBhYm91dCBwcm9hY3RpdmUgcmlzayBtaXRpZ2F0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmZjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDMwOlx0XG4gIDMxOlx0Y29uZmlnIE5GQ19TSU1cbiAgMzI6XHRcdHRyaXN0YXRlIFwmIzM0O05GQyBoYXJkd2FyZSBzaW11bGF0b3IgZHJpdmVyXCYjMzQ7XG4gIDMzOlx0XHRkZXBlbmRzIG9uIE5GQ19ESUdJVEFMXG4gIDM0Olx0XHRoZWxwXG4gIDM1Olx0XHQgIFRoaXMgZHJpdmVyIGRlY2xhcmVzIHR3byB2aXJ0dWFsIE5GQyBkZXZpY2VzIHN1cHBvcnRpbmcgTkZDLURFUFxuICAzNjpcdFx0ICBwcm90b2NvbC4gQW4gTExDUCBjb25uZWN0aW9uIGNhbiBiZSBlc3RhYmxpc2hlZCBiZXR3ZWVuIHRoZW0gYW5kXG4gIDM3Olx0XHQgIGFsbCBwYWNrZXRzIHNlbnQgZnJvbSBvbmUgZGV2aWNlIGlzIHNlbnQgYmFjayB0byB0aGUgb3RoZXIsIGFjdGluZyBhc1xuICAzODpcdFx0ICBsb29wYmFjayBkZXZpY2VzLlxuICAzOTpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTM0NQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBzdW1tYXJpemVkIGZyb20gYSBmaXJzdC1wZXJzb24gcGVyc3BlY3RpdmUsIGFzc3VtaW5nIEkmIzM5O20gd2VsbC12ZXJzZWQgaW4gdGhpcyBmaWVsZDoKCioqRGVwZW5kZW5jeSBEZWVwIERpdmUqKgoKQWxyaWdodCwgSSBzZWUgaXQgaW1tZWRpYXRlbHkuIGBORkNfU0lNYCByZWxpZXMgb24gYE5GQ19ESUdJVEFMYC4gVGhpcyBpc24mIzM5O3QgdW5leHBlY3RlZCwgYnV0IGl0JiMzOTtzIGEgY3JpdGljYWwgcG9pbnQgdG8gYWNrbm93bGVkZ2UgYmVmb3JlIHByb2NlZWRpbmcuIE5vdywgYmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGBORkNfRElHSVRBTGAmIzM5O3Mgb3duIGRlcGVuZGVuY2llcy4gSXQmIzM5O3MgdGltZSB0byB0cmFjZSBpdHMgZGVwZW5kZW5jeSB0cmVlLiBHb3R0YSBtYWtlIHN1cmUgSSBoYXZlIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBldmVyeXRoaW5nIHRoYXQgZmVlZHMgaW50byBgTkZDX0RJR0lUQUxgIGJlY2F1c2UgdGhhdCBpbmV2aXRhYmx5IGltcGFjdHMgYE5GQ19TSU1gIGFuZCB0aGUgYnJvYWRlciBzeXN0ZW0mIzM5O3MgYmVoYXZpb3IuIFRpbWUgdG8gZGlnIGluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZDX0RJR0lUQUwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmZjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9LY29uZmlnPTY9bWVudWNvbmZpZyBORkNcbi0tXG5uZXQvbmZjL0tjb25maWctMTYtXG5uZXQvbmZjL0tjb25maWc6MTc6Y29uZmlnIE5GQ19ESUdJVEFMXG5uZXQvbmZjL0tjb25maWctMTgtXHRkZXBlbmRzIG9uIE5GQ1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTYzNgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgY29uZmlndXJhdGlvbnM6CgoqKkFuYWx5emluZyBORkMgQ29uZmlndXJhdGlvbiBPcHRpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJJiMzOTttIHNlZWluZywgYE5GQ2AsIGBORkNfRElHSVRBTGAsIGFuZCBgTkZDX1NJTWAgYXJlIHRoZSBrZXkgY29uZmlndXJhdGlvbnMgaW4gcGxheSBoZXJlLiBCdXQgaG9sZCBvbiwgaXQgc2VlbXMgbGlrZSBgTkZDX1ZJUlRVQUxfTkNJYCAqbWlnaHQqIGJlIHJlbGV2YW50IHRvby4gSSBzaG91bGQgcmVhbGx5IGNoZWNrIHRoYXQgb25lIGFzIHdlbGwsIGp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIHNlZSBpZiBpdCBicmluZ3MgYW55dGhpbmcgbmV3IHRvIHRoZSB0YWJsZS4gV2UgbmVlZCB0byBjb25zaWRlciBhbGwgYW5nbGVzIHdoZW4gZGVhbGluZyB3aXRoIHRoZSBORkMgaW1wbGVtZW50YXRpb25zLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gYmUgY29tcGxldGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA4OjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZmMvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgNTE6XHRcbiAgNTI6XHRjb25maWcgTkZDX1ZJUlRVQUxfTkNJXG4gIDUzOlx0XHR0cmlzdGF0ZSBcJiMzNDtOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcJiMzNDtcbiAgNTQ6XHRcdGRlcGVuZHMgb24gTkZDX05DSVxuICA1NTpcdFx0aGVscFxuICA1NjpcdFx0ICBOQ0kgdmlydHVhbCBkZXZpY2Ugc2ltdWxhdGVzIGEgTkNJIGRldmljZSB0byB0aGUgdXNlci5cbiAgNTc6XHRcdCAgSXQgY2FuIGJlIHVzZWQgdG8gdmFsaWRhdGUgdGhlIE5DSSBtb2R1bGUgYW5kIGFwcGxpY2F0aW9ucy5cbiAgNTg6XHRcdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHRoZSB2aXJ0dWFsIE5DSSBkZXZpY2UgYW5kXG4gIDU5Olx0XHQgIG1vZHVsZS5cbiAgNjA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDg6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE5ODcKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6CgoqKkRlcGVuZGVuY3kgRGVlcCBEaXZlKioKCkFscmlnaHQsIHNvIGBORkNfVklSVFVBTF9OQ0lgIGlzIGNsZWFybHkgYnVpbHQgb24gdG9wIG9mIGBORkNfTkNJYC4gVGhhdCYjMzk7cyBhIHByZXR0eSBzdGFuZGFyZCBsYXllcmluZyBhcHByb2FjaCwgYnV0IEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGUgZm91bmRhdGlvbiBpcyBzb2xpZCBiZWZvcmUgSSBnZXQgdG9vIGludmVzdGVkIGluIHRoZSB2aXJ0dWFsIGFzcGVjdHMuIFNvLCB0aGUgZmlyc3QgbG9naWNhbCBzdGVwIGlzIHRvIGRlbHZlIGludG8gdGhlIGRlcGVuZGVuY2llcyBvZiBgTkZDX05DSWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaXQgcmVsaWVzIG9uLCB3aGF0IGl0cyBwb3RlbnRpYWwgd2VhayBwb2ludHMgYXJlLCBhbmQgaWYgYW55IHVwZGF0ZXMgb3IgY2hhbmdlcyB0aGVyZSBjb3VsZCByaXBwbGUgdXAgYW5kIGFmZmVjdCBgTkZDX1ZJUlRVQUxfTkNJYC4gR290IHRvIHRob3JvdWdobHkgdmV0IHRoZSBiYXNlIGJlZm9yZSBJIGJ1aWxkIG9uIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZDX05DSSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9uZmMvbmNpL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25mYy9uY2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxubmV0L25mYy9uY2kvS2NvbmZpZzoyOmNvbmZpZyBORkNfTkNJXG5uZXQvbmZjL25jaS9LY29uZmlnLTMtXHRkZXBlbmRzIG9uIE5GQ1xuLS1cbm5ldC9uZmMvbmNpL0tjb25maWctMTItXG5uZXQvbmZjL25jaS9LY29uZmlnOjEzOmNvbmZpZyBORkNfTkNJX1NQSVxubmV0L25mYy9uY2kvS2NvbmZpZy0xNC1cdGRlcGVuZHMgb24gTkZDX05DSSBcdTAwMjZcdTAwMjYgU1BJXG4tLVxubmV0L25mYy9uY2kvS2NvbmZpZy0yMy1cbm5ldC9uZmMvbmNpL0tjb25maWc6MjQ6Y29uZmlnIE5GQ19OQ0lfVUFSVFxubmV0L25mYy9uY2kvS2NvbmZpZy0yNS1cdGRlcGVuZHMgb24gTkZDX05DSSBcdTAwMjZcdTAwMjYgVFRZXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA4OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyNDE3CgkJCQkJCQlvdXRwdXQ6IDE5MgoJCQkJCQkJdGhvdWdodHM6IDE2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhc3Nlc3NtZW50IG9mIHRoZSBzaXR1YXRpb246CgoqKk5GQyBUZXN0aW5nIGFuZCBQb3RlbnRpYWwgVnVsbmVyYWJpbGl0aWVzKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcsIGJleW9uZCB0aGUgY29yZSBgTkZDYCBjb25maWcsIGVuYWJsaW5nIGBORkNfVklSVFVBTF9OQ0lgIGFuZCBgTkZDX05DSWAgc2VlbXMgbGlrZSBhIHNvbGlkIGFwcHJvYWNoIGZvciBjb21wcmVoZW5zaXZlIE5GQyB0ZXN0aW5nLiBJIG5lZWQgdG8ga2VlcCBpbiBtaW5kIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb25zIG9mIGBORkNgLCBgTkZDX0RJR0lUQUxgLCBhbmQgYE5GQ19TSU1gLgoKVGhpcyBwYXRjaCBpcyBpbnRlcmVzdGluZyDigJMgaXQmIzM5O3MgYWRkcmVzc2luZyBhIHJhY2UgY29uZGl0aW9uIG9yIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBzaXR1YXRpb24gd2l0aGluIExMQ1Agc29ja2V0IHJlbGVhc2UuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgdGhpcyBhcyBzb21ldGhpbmcgdGhhdCB3YXJyYW50cyBmdXp6aW5nLiBJdCYjMzk7cyBhIGNsYXNzaWMgYXJlYSBmb3IgbWVtb3J5IGNvcnJ1cHRpb24gdnVsbmVyYWJpbGl0aWVzLCBhbmQgTExDUCBiZWluZyBhIGxvd2VyLWxldmVsIHByb3RvY29sIG1ha2VzIGl0IGFuIGV2ZW4gYmV0dGVyIHRhcmdldC4KCk15IGZvY3VzIHNob3VsZCBiZSBvbiB0aGVzZSBrZXkgc3ltYm9sczogYG5mY19sbGNwX2xvY2FsX3B1dGAsIGBuZmNfbGxjcF9hY2NlcHRfZGVxdWV1ZWAsIGFuZCBgbmZjX2xsY3BfYWNjZXB0X3VubGlua2AuIFRoZXkgYXJlIGxpa2VseSBhdCB0aGUgaGVhcnQgb2YgdGhlIGlzc3VlIGFuZCB1bmRlcnN0YW5kaW5nIHRoZWlyIGJlaGF2aW9yIHdpbGwgYmUgY3JpdGljYWwgZm9yIGVmZmVjdGl2ZSBmdXp6aW5nLgoKQmVmb3JlIEkgY29tbWl0IHRvIHRoaXMsIEkmIzM5O2xsIHF1aWNrbHkgc2NhbiB0aGUgZXhpc3RpbmcgY29uZmlncyB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBvdmVybG9va2VkIGFueSBvdGhlciByZWxldmFudCBvcHRpb25zIHRoYXQgbWlnaHQgaW1wYWN0IHRoZSB0ZXN0IGVudmlyb25tZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwODo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZDJiMzNDssCiAgICAmIzM0O05GQ19ESUdJVEFMJiMzNDssCiAgICAmIzM0O05GQ19TSU0mIzM0OywKICAgICYjMzQ7TkZDX05DSSYjMzQ7LAogICAgJiMzNDtORkNfVklSVFVBTF9OQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuZmNfbGxjcF9sb2NhbF9wdXQmIzM0OywKICAgICYjMzQ7bmZjX2xsY3BfYWNjZXB0X2RlcXVldWUmIzM0OywKICAgICYjMzQ7bmZjX2xsY3BfYWNjZXB0X3VubGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY29yZSBsb2dpYyBvZiBORkMgTExDUCBzb2NrZXRzLCBmaXhpbmcgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gb3IgdXNlLWFmdGVyLWZyZWUgZHVyaW5nIHNvY2tldCByZWxlYXNlIGFuZCBhY2NlcHQgcXVldWUgaGFuZGxpbmcuIEl0IGludHJvZHVjZXMgYSB3b3JrcXVldWUgZm9yIGxvY2FsIHJlbGVhc2UgYW5kIG1vZGlmaWVzIHNvY2tldCBsb2NraW5nLiBUaGlzIGlzIHJlYWNoYWJsZSB2aWEgc3RhbmRhcmQgc29ja2V0IEFQSXMgd2hlbiBORkMgaXMgZW5hYmxlZC4gVmlydHVhbCBORkMgZGV2aWNlcyAoTkZDX1NJTSwgTkZDX1ZJUlRVQUxfTkNJKSBjYW4gYmUgdXNlZCB0byB0cmlnZ2VyIHRoaXMgY29kZSBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORkMmIzM0OywKICAgICYjMzQ7TkZDX0RJR0lUQUwmIzM0OywKICAgICYjMzQ7TkZDX1NJTSYjMzQ7LAogICAgJiMzNDtORkNfTkNJJiMzNDssCiAgICAmIzM0O05GQ19WSVJUVUFMX05DSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25mY19sbGNwX2xvY2FsX3B1dCYjMzQ7LAogICAgJiMzNDtuZmNfbGxjcF9hY2NlcHRfZGVxdWV1ZSYjMzQ7LAogICAgJiMzNDtuZmNfbGxjcF9hY2NlcHRfdW5saW5rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjb3JlIGxvZ2ljIG9mIE5GQyBMTENQIHNvY2tldHMsIGZpeGluZyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBvciB1c2UtYWZ0ZXItZnJlZSBkdXJpbmcgc29ja2V0IHJlbGVhc2UgYW5kIGFjY2VwdCBxdWV1ZSBoYW5kbGluZy4gSXQgaW50cm9kdWNlcyBhIHdvcmtxdWV1ZSBmb3IgbG9jYWwgcmVsZWFzZSBhbmQgbW9kaWZpZXMgc29ja2V0IGxvY2tpbmcuIFRoaXMgaXMgcmVhY2hhYmxlIHZpYSBzdGFuZGFyZCBzb2NrZXQgQVBJcyB3aGVuIE5GQyBpcyBlbmFibGVkLiBWaXJ0dWFsIE5GQyBkZXZpY2VzIChORkNfU0lNLCBORkNfVklSVFVBTF9OQ0kpIGNhbiBiZSB1c2VkIHRvIHRyaWdnZXIgdGhpcyBjb2RlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA4OjQ5PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDg6NDk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGxvY2tpbmcsIHJlZmVyZW5jZSBjb3VudGluZywgYW5kIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBpbiB0aGUgTkZDIExMQ1Agc29ja2V0IGxheWVyLiBJdCBpbnRyb2R1Y2VzIGEgd29ya3F1ZXVlIGZvciBkZWZlcnJlZCBjbGVhbnVwLCBtb2RpZmllcyBzb2NrZXQgbGlzdCBwb3BwaW5nIHRvIGF2b2lkIGRlYWRsb2NrcyBvciBVQUYsIGFuZCBmaXhlcyBhY2NlcHQgcXVldWUgaGFuZGxpbmcuIFRoZXJlIGFyZSBubyBjaGFuZ2VzIHRvIGRhdGEgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm8gbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucywgYW5kIG5vIG1vZGlmaWNhdGlvbnMgdG8gZGF0YSBsZW5ndGhzIG9yIGJvdW5kcyBjaGVja3MgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBidWdzIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcyAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIG9yIGRlYWRsb2Nrcykgd291bGQgYmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBMT0NLREVQLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDAxOTIwMzIzYjk1NDBmY2I2OGViOGUxZmFlZDAyNDQ3MDgyNjE2ZWQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAyNiAwODo0ODozMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9uZmMvbGxjcC5oIGIvbmV0L25mYy9sbGNwLmgKaW5kZXggZDgzNDVlZDU3Yzk1NC4uMjNhZTdhMDExMmQzNyAxMDA2NDQKLS0tIGEvbmV0L25mYy9sbGNwLmgKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25mYy9sbGNwLmgKQEAgLTkxLDYgJiM0Mzs5MSw3IEBAIHN0cnVjdCBuZmNfbGxjcF9sb2NhbCB7CiAJc3RydWN0IGhsaXN0X2hlYWQgcGVuZGluZ19zZHJlcXM7CiAJc3RydWN0IHRpbWVyX2xpc3Qgc2RyZXFfdGltZXI7CiAJc3RydWN0IHdvcmtfc3RydWN0IHNkcmVxX3RpbWVvdXRfd29yazsKJiM0MzsJc3RydWN0IHdvcmtfc3RydWN0IHJlbGVhc2Vfd29yazsKIAl1OCBzZHJlcV9uZXh0X3RpZDsKIAogCS8qIHNvY2tldHMgYXJyYXkgKi8KZGlmZiAtLWdpdCBhL25ldC9uZmMvbGxjcF9jb3JlLmMgYi9uZXQvbmZjL2xsY3BfY29yZS5jCmluZGV4IGJkNjM2MWUyZWZhNGYuLjJjMmRiYzEyNTMxZWMgMTAwNjQ0Ci0tLSBhL25ldC9uZmMvbGxjcF9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25mYy9sbGNwX2NvcmUuYwpAQCAtMjAsNiAmIzQzOzIwLDggQEAgc3RhdGljIExJU1RfSEVBRChsbGNwX2RldmljZXMpOwogLyogUHJvdGVjdHMgbGxjcF9kZXZpY2VzIGxpc3QgKi8KIHN0YXRpYyBERUZJTkVfU1BJTkxPQ0sobGxjcF9kZXZpY2VzX2xvY2spOwogCiYjNDM7c3RhdGljIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpsbGNwX3dxOwomIzQzOwogc3RhdGljIHZvaWQgbmZjX2xsY3Bfcnhfc2tiKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIHN0cnVjdCBza19idWZmICpza2IpOwogCiB2b2lkIG5mY19sbGNwX3NvY2tfbGluayhzdHJ1Y3QgbGxjcF9zb2NrX2xpc3QgKmwsIHN0cnVjdCBzb2NrICpzaykKQEAgLTYzLDIxICYjNDM7NjUsMzMgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfc29ja2V0X3B1cmdlKHN0cnVjdCBuZmNfbGxjcF9zb2NrICpzb2NrKQogCX0KIH0KIAomIzQzO3N0YXRpYyBzdHJ1Y3Qgc29jayAqbmZjX2xsY3Bfc29ja19saXN0X3BvcChzdHJ1Y3QgbGxjcF9zb2NrX2xpc3QgKmwpCiYjNDM7ewomIzQzOwlzdHJ1Y3Qgc29jayAqc2s7CiYjNDM7CiYjNDM7CXdyaXRlX2xvY2soJmFtcDtsLSZndDtsb2NrKTsKJiM0MzsJc2sgPSBza19oZWFkKCZhbXA7bC0mZ3Q7aGVhZCk7CiYjNDM7CWlmIChzaykgewomIzQzOwkJc29ja19ob2xkKHNrKTsKJiM0MzsJCXNrX2RlbF9ub2RlX2luaXQoc2spOwomIzQzOwl9CiYjNDM7CXdyaXRlX3VubG9jaygmYW1wO2wtJmd0O2xvY2spOwomIzQzOwomIzQzOwlyZXR1cm4gc2s7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2Uoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgYm9vbCBkZXZpY2UsCiAJCQkJICAgIGludCBlcnIpCiB7CiAJc3RydWN0IHNvY2sgKnNrOwotCXN0cnVjdCBobGlzdF9ub2RlICp0bXA7CiAJc3RydWN0IG5mY19sbGNwX3NvY2sgKmxsY3Bfc29jazsKIAogCXNrYl9xdWV1ZV9wdXJnZSgmYW1wO2xvY2FsLSZndDt0eF9xdWV1ZSk7CiAKLQl3cml0ZV9sb2NrKCZhbXA7bG9jYWwtJmd0O3NvY2tldHMubG9jayk7Ci0KLQlza19mb3JfZWFjaF9zYWZlKHNrLCB0bXAsICZhbXA7bG9jYWwtJmd0O3NvY2tldHMuaGVhZCkgewomIzQzOwl3aGlsZSAoKHNrID0gbmZjX2xsY3Bfc29ja19saXN0X3BvcCgmYW1wO2xvY2FsLSZndDtzb2NrZXRzKSkpIHsKIAkJbGxjcF9zb2NrID0gbmZjX2xsY3Bfc29jayhzayk7CiAKLQkJYmhfbG9ja19zb2NrKHNrKTsKJiM0MzsJCWxvY2tfc29jayhzayk7CiAKIAkJbmZjX2xsY3Bfc29ja2V0X3B1cmdlKGxsY3Bfc29jayk7CiAKQEAgLTkxLDE3ICYjNDM7MTA1LDI3IEBAIHN0YXRpYyB2b2lkIG5mY19sbGNwX3NvY2tldF9yZWxlYXNlKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIGJvb2wgZGV2aWNlLAogCQkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGxzaywgbiwKIAkJCQkJCSAmYW1wO2xsY3Bfc29jay0mZ3Q7YWNjZXB0X3F1ZXVlLAogCQkJCQkJIGFjY2VwdF9xdWV1ZSkgewotCQkJCWFjY2VwdF9zayA9ICZhbXA7bHNrLSZndDtzazsKLQkJCQliaF9sb2NrX3NvY2soYWNjZXB0X3NrKTsKLQotCQkJCW5mY19sbGNwX2FjY2VwdF91bmxpbmsoYWNjZXB0X3NrKTsKJiM0MzsJCQkJYm9vbCBwdXRfY3JlYXRpb24gPSBmYWxzZTsKIAotCQkJCWlmIChlcnIpCi0JCQkJCWFjY2VwdF9zay0mZ3Q7c2tfZXJyID0gZXJyOwotCQkJCWFjY2VwdF9zay0mZ3Q7c2tfc3RhdGUgPSBMTENQX0NMT1NFRDsKLQkJCQlhY2NlcHRfc2stJmd0O3NrX3N0YXRlX2NoYW5nZShzayk7CiYjNDM7CQkJCWFjY2VwdF9zayA9ICZhbXA7bHNrLSZndDtzazsKJiM0MzsJCQkJbG9ja19zb2NrX25lc3RlZChhY2NlcHRfc2ssCiYjNDM7CQkJCQkJIFNJTkdMRV9ERVBUSF9ORVNUSU5HKTsKJiM0MzsKJiM0MzsJCQkJaWYgKG5mY19sbGNwX3NvY2soYWNjZXB0X3NrKS0mZ3Q7cGFyZW50ID09IHNrKSB7CiYjNDM7CQkJCQluZmNfbGxjcF9hY2NlcHRfdW5saW5rKGFjY2VwdF9zayk7CiYjNDM7CQkJCQluZmNfbGxjcF9zb2NrX3VubGluaygmYW1wO2xvY2FsLSZndDtzb2NrZXRzLCBhY2NlcHRfc2spOwomIzQzOwomIzQzOwkJCQkJaWYgKGVycikKJiM0MzsJCQkJCQlhY2NlcHRfc2stJmd0O3NrX2VyciA9IGVycjsKJiM0MzsJCQkJCWFjY2VwdF9zay0mZ3Q7c2tfc3RhdGUgPSBMTENQX0NMT1NFRDsKJiM0MzsJCQkJCWFjY2VwdF9zay0mZ3Q7c2tfc3RhdGVfY2hhbmdlKGFjY2VwdF9zayk7CiYjNDM7CQkJCQlzb2NrX29ycGhhbihhY2NlcHRfc2spOwomIzQzOwkJCQkJcHV0X2NyZWF0aW9uID0gdHJ1ZTsKJiM0MzsJCQkJfQogCi0JCQkJYmhfdW5sb2NrX3NvY2soYWNjZXB0X3NrKTsKJiM0MzsJCQkJcmVsZWFzZV9zb2NrKGFjY2VwdF9zayk7CiYjNDM7CQkJCWlmIChwdXRfY3JlYXRpb24pCiYjNDM7CQkJCQlzb2NrX3B1dChhY2NlcHRfc2spOyAvKiBjcmVhdGlvbiByZWYgKi8KIAkJCX0KIAkJfQogCkBAIC0xMTAsMjMgJiM0MzsxMzQsMTggQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2Uoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgYm9vbCBkZXZpY2UsCiAJCXNrLSZndDtza19zdGF0ZSA9IExMQ1BfQ0xPU0VEOwogCQlzay0mZ3Q7c2tfc3RhdGVfY2hhbmdlKHNrKTsKIAotCQliaF91bmxvY2tfc29jayhzayk7Ci0KLQkJc2tfZGVsX25vZGVfaW5pdChzayk7CiYjNDM7CQlyZWxlYXNlX3NvY2soc2spOwomIzQzOwkJc29ja19wdXQoc2spOwogCX0KIAotCXdyaXRlX3VubG9jaygmYW1wO2xvY2FsLSZndDtzb2NrZXRzLmxvY2spOwotCiAJLyogSWYgd2Ugc3RpbGwgaGF2ZSBhIGRldmljZSwgd2Uga2VlcCB0aGUgUkFXIHNvY2tldHMgYWxpdmUgKi8KIAlpZiAoZGV2aWNlID09IHRydWUpCiAJCXJldHVybjsKIAotCXdyaXRlX2xvY2soJmFtcDtsb2NhbC0mZ3Q7cmF3X3NvY2tldHMubG9jayk7Ci0KLQlza19mb3JfZWFjaF9zYWZlKHNrLCB0bXAsICZhbXA7bG9jYWwtJmd0O3Jhd19zb2NrZXRzLmhlYWQpIHsKJiM0MzsJd2hpbGUgKChzayA9IG5mY19sbGNwX3NvY2tfbGlzdF9wb3AoJmFtcDtsb2NhbC0mZ3Q7cmF3X3NvY2tldHMpKSkgewogCQlsbGNwX3NvY2sgPSBuZmNfbGxjcF9zb2NrKHNrKTsKIAotCQliaF9sb2NrX3NvY2soc2spOwomIzQzOwkJbG9ja19zb2NrKHNrKTsKIAogCQluZmNfbGxjcF9zb2NrZXRfcHVyZ2UobGxjcF9zb2NrKTsKIApAQCAtMTM1LDI2ICYjNDM7MTU0LDIwIEBAIHN0YXRpYyB2b2lkIG5mY19sbGNwX3NvY2tldF9yZWxlYXNlKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIGJvb2wgZGV2aWNlLAogCQlzay0mZ3Q7c2tfc3RhdGUgPSBMTENQX0NMT1NFRDsKIAkJc2stJmd0O3NrX3N0YXRlX2NoYW5nZShzayk7CiAKLQkJYmhfdW5sb2NrX3NvY2soc2spOwotCi0JCXNrX2RlbF9ub2RlX2luaXQoc2spOwomIzQzOwkJcmVsZWFzZV9zb2NrKHNrKTsKJiM0MzsJCXNvY2tfcHV0KHNrKTsKIAl9Ci0KLQl3cml0ZV91bmxvY2soJmFtcDtsb2NhbC0mZ3Q7cmF3X3NvY2tldHMubG9jayk7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKm5mY19sbGNwX2xvY2FsX2dldChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsKQogewotCS8qIFNpbmNlIHVzaW5nIG5mY19sbGNwX2xvY2FsIG1heSByZXN1bHQgaW4gdXNhZ2Ugb2YgbmZjX2Rldiwgd2hlbmV2ZXIKLQkgKiB3ZSBob2xkIGEgcmVmZXJlbmNlIHRvIGxvY2FsLCB3ZSBhbHNvIG5lZWQgdG8gaG9sZCBhIHJlZmVyZW5jZSB0bwotCSAqIHRoZSBkZXZpY2UgdG8gYXZvaWQgVUFGLgotCSAqLwotCWlmICghbmZjX2dldF9kZXZpY2UobG9jYWwtJmd0O2Rldi0mZ3Q7aWR4KSkKJiM0MzsJaWYgKCFsb2NhbCkKIAkJcmV0dXJuIE5VTEw7CiAKLQlrcmVmX2dldCgmYW1wO2xvY2FsLSZndDtyZWYpOwomIzQzOwlpZiAoa3JlZl9nZXRfdW5sZXNzX3plcm8oJmFtcDtsb2NhbC0mZ3Q7cmVmKSkKJiM0MzsJCXJldHVybiBsb2NhbDsKIAotCXJldHVybiBsb2NhbDsKJiM0MzsJcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyB2b2lkIGxvY2FsX2NsZWFudXAoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCkKQEAgLTE3MiwzMCAmIzQzOzE4NSwzNCBAQCBzdGF0aWMgdm9pZCBsb2NhbF9jbGVhbnVwKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwpCiAJbmZjX2xsY3BfZnJlZV9zZHBfdGx2X2xpc3QoJmFtcDtsb2NhbC0mZ3Q7cGVuZGluZ19zZHJlcXMpOwogfQogCi1zdGF0aWMgdm9pZCBsb2NhbF9yZWxlYXNlKHN0cnVjdCBrcmVmICpyZWYpCiYjNDM7c3RhdGljIHZvaWQgbG9jYWxfcmVsZWFzZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIHsKIAlzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsOwomIzQzOwlzdHJ1Y3QgbmZjX2RldiAqZGV2OwogCi0JbG9jYWwgPSBjb250YWluZXJfb2YocmVmLCBzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwsIHJlZik7CiYjNDM7CWxvY2FsID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZmNfbGxjcF9sb2NhbCwgcmVsZWFzZV93b3JrKTsKJiM0MzsJZGV2ID0gbG9jYWwtJmd0O2RldjsKIAogCWxvY2FsX2NsZWFudXAobG9jYWwpOwogCWtmcmVlKGxvY2FsKTsKJiM0MzsJbmZjX3B1dF9kZXZpY2UoZGV2KTsKIH0KIAotaW50IG5mY19sbGNwX2xvY2FsX3B1dChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsKQomIzQzO3N0YXRpYyB2b2lkIGxvY2FsX3JlbGVhc2Uoc3RydWN0IGtyZWYgKnJlZikKIHsKLQlzdHJ1Y3QgbmZjX2RldiAqZGV2OwotCWludCByZXQ7CiYjNDM7CXN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWw7CiAKLQlpZiAobG9jYWwgPT0gTlVMTCkKLQkJcmV0dXJuIDA7CiYjNDM7CWxvY2FsID0gY29udGFpbmVyX29mKHJlZiwgc3RydWN0IG5mY19sbGNwX2xvY2FsLCByZWYpOwogCi0JZGV2ID0gbG9jYWwtJmd0O2RldjsKJiM0MzsJcXVldWVfd29yayhsbGNwX3dxLCAmYW1wO2xvY2FsLSZndDtyZWxlYXNlX3dvcmspOwomIzQzO30KIAotCXJldCA9IGtyZWZfcHV0KCZhbXA7bG9jYWwtJmd0O3JlZiwgbG9jYWxfcmVsZWFzZSk7Ci0JbmZjX3B1dF9kZXZpY2UoZGV2KTsKJiM0MztpbnQgbmZjX2xsY3BfbG9jYWxfcHV0KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwpCiYjNDM7ewomIzQzOwlpZiAoIWxvY2FsKQomIzQzOwkJcmV0dXJuIDA7CiAKLQlyZXR1cm4gcmV0OwomIzQzOwlyZXR1cm4ga3JlZl9wdXQoJmFtcDtsb2NhbC0mZ3Q7cmVmLCBsb2NhbF9yZWxlYXNlKTsKIH0KIAogc3RhdGljIHN0cnVjdCBuZmNfbGxjcF9zb2NrICpuZmNfbGxjcF9zb2NrX2dldChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLApAQCAtMTcwNSw2ICYjNDM7MTcyMiw3IEBAIGludCBuZmNfbGxjcF9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG5mY19kZXYgKm5kZXYpCiAJSU5JVF9XT1JLKCZhbXA7bG9jYWwtJmd0O3J4X3dvcmssIG5mY19sbGNwX3J4X3dvcmspOwogCiAJSU5JVF9XT1JLKCZhbXA7bG9jYWwtJmd0O3RpbWVvdXRfd29yaywgbmZjX2xsY3BfdGltZW91dF93b3JrKTsKJiM0MzsJSU5JVF9XT1JLKCZhbXA7bG9jYWwtJmd0O3JlbGVhc2Vfd29yaywgbG9jYWxfcmVsZWFzZV93b3JrKTsKIAogCXJ3bG9ja19pbml0KCZhbXA7bG9jYWwtJmd0O3NvY2tldHMubG9jayk7CiAJcndsb2NrX2luaXQoJmFtcDtsb2NhbC0mZ3Q7Y29ubmVjdGluZ19zb2NrZXRzLmxvY2spOwpAQCAtMTc0OCwxMCAmIzQzOzE3NjYsMjMgQEAgdm9pZCBuZmNfbGxjcF91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmZjX2RldiAqZGV2KQogCiBpbnQgX19pbml0IG5mY19sbGNwX2luaXQodm9pZCkKIHsKLQlyZXR1cm4gbmZjX2xsY3Bfc29ja19pbml0KCk7CiYjNDM7CWludCByZXQ7CiYjNDM7CiYjNDM7CWxsY3Bfd3EgPSBhbGxvY193b3JrcXVldWUoJiMzNDtuZmNfbGxjcF93cSYjMzQ7LCAwLCAwKTsKJiM0MzsJaWYgKCFsbGNwX3dxKQomIzQzOwkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CXJldCA9IG5mY19sbGNwX3NvY2tfaW5pdCgpOwomIzQzOwlpZiAocmV0KSB7CiYjNDM7CQlkZXN0cm95X3dvcmtxdWV1ZShsbGNwX3dxKTsKJiM0MzsJCXJldHVybiByZXQ7CiYjNDM7CX0KJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIHZvaWQgbmZjX2xsY3BfZXhpdCh2b2lkKQogewogCW5mY19sbGNwX3NvY2tfZXhpdCgpOwomIzQzOwlkZXN0cm95X3dvcmtxdWV1ZShsbGNwX3dxKTsKIH0KZGlmZiAtLWdpdCBhL25ldC9uZmMvbGxjcF9zb2NrLmMgYi9uZXQvbmZjL2xsY3Bfc29jay5jCmluZGV4IDU1NThkOGE0ZDQ4YjMuLmNlNjg3NWViNThmYmMgMTAwNjQ0Ci0tLSBhL25ldC9uZmMvbGxjcF9zb2NrLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L25mYy9sbGNwX3NvY2suYwpAQCAtMzkyLDExICYjNDM7MzkyLDEyIEBAIHZvaWQgbmZjX2xsY3BfYWNjZXB0X3VubGluayhzdHJ1Y3Qgc29jayAqc2spCiAKIAlwcl9kZWJ1ZygmIzM0O3N0YXRlICVkXG4mIzM0Oywgc2stJmd0O3NrX3N0YXRlKTsKIAotCWxpc3RfZGVsX2luaXQoJmFtcDtsbGNwX3NvY2stJmd0O2FjY2VwdF9xdWV1ZSk7Ci0Jc2tfYWNjZXB0cV9yZW1vdmVkKGxsY3Bfc29jay0mZ3Q7cGFyZW50KTsKLQlsbGNwX3NvY2stJmd0O3BhcmVudCA9IE5VTEw7Ci0KLQlzb2NrX3B1dChzayk7CiYjNDM7CWlmIChsbGNwX3NvY2stJmd0O3BhcmVudCkgewomIzQzOwkJbGlzdF9kZWxfaW5pdCgmYW1wO2xsY3Bfc29jay0mZ3Q7YWNjZXB0X3F1ZXVlKTsKJiM0MzsJCXNrX2FjY2VwdHFfcmVtb3ZlZChsbGNwX3NvY2stJmd0O3BhcmVudCk7CiYjNDM7CQlsbGNwX3NvY2stJmd0O3BhcmVudCA9IE5VTEw7CiYjNDM7CQlzb2NrX3B1dChzayk7CiYjNDM7CX0KIH0KIAogdm9pZCBuZmNfbGxjcF9hY2NlcHRfZW5xdWV1ZShzdHJ1Y3Qgc29jayAqcGFyZW50LCBzdHJ1Y3Qgc29jayAqc2spCkBAIC00MjMsMTIgJiM0Mzs0MjQsMjAgQEAgc3RydWN0IHNvY2sgKm5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlKHN0cnVjdCBzb2NrICpwYXJlbnQsCiAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobHNrLCBuLCAmYW1wO2xsY3BfcGFyZW50LSZndDthY2NlcHRfcXVldWUsCiAJCQkJIGFjY2VwdF9xdWV1ZSkgewomIzQzOwkJc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbDsKJiM0MzsKIAkJc2sgPSAmYW1wO2xzay0mZ3Q7c2s7Ci0JCWxvY2tfc29jayhzayk7CiYjNDM7CQlsb2NrX3NvY2tfbmVzdGVkKHNrLCBTSU5HTEVfREVQVEhfTkVTVElORyk7CiAKIAkJaWYgKHNrLSZndDtza19zdGF0ZSA9PSBMTENQX0NMT1NFRCkgewotCQkJcmVsZWFzZV9zb2NrKHNrKTsKJiM0MzsJCQlsb2NhbCA9IG5mY19sbGNwX3NvY2soc2spLSZndDtsb2NhbDsKJiM0MzsKIAkJCW5mY19sbGNwX2FjY2VwdF91bmxpbmsoc2spOwomIzQzOwkJCWlmIChsb2NhbCkKJiM0MzsJCQkJbmZjX2xsY3Bfc29ja191bmxpbmsoJmFtcDtsb2NhbC0mZ3Q7c29ja2V0cywgc2spOwomIzQzOwkJCXNvY2tfb3JwaGFuKHNrKTsKJiM0MzsJCQlyZWxlYXNlX3NvY2soc2spOwomIzQzOwkJCXNvY2tfcHV0KHNrKTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKQEAgLTQ2NCw3ICYjNDM7NDczLDcgQEAgc3RhdGljIGludCBsbGNwX3NvY2tfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssCiAKIAlwcl9kZWJ1ZygmIzM0O3BhcmVudCAlcFxuJiMzNDssIHNrKTsKIAotCWxvY2tfc29ja19uZXN0ZWQoc2ssIFNJTkdMRV9ERVBUSF9ORVNUSU5HKTsKJiM0MzsJbG9ja19zb2NrKHNrKTsKIAogCWlmIChzay0mZ3Q7c2tfc3RhdGUgIT0gTExDUF9MSVNURU4pIHsKIAkJcmV0ID0gLUVCQURGRDsKQEAgLTQ5MCw3ICYjNDM7NDk5LDEyIEBAIHN0YXRpYyBpbnQgbGxjcF9zb2NrX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLAogCiAJCXJlbGVhc2Vfc29jayhzayk7CiAJCXRpbWVvID0gc2NoZWR1bGVfdGltZW91dCh0aW1lbyk7Ci0JCWxvY2tfc29ja19uZXN0ZWQoc2ssIFNJTkdMRV9ERVBUSF9ORVNUSU5HKTsKJiM0MzsJCWxvY2tfc29jayhzayk7CiYjNDM7CiYjNDM7CQlpZiAoc2stJmd0O3NrX3N0YXRlICE9IExMQ1BfTElTVEVOKSB7CiYjNDM7CQkJcmV0ID0gLUVCQURGRDsKJiM0MzsJCQlicmVhazsKJiM0MzsJCX0KIAl9CiAJX19zZXRfY3VycmVudF9zdGF0ZShUQVNLX1JVTk5JTkcpOwogCXJlbW92ZV93YWl0X3F1ZXVlKHNrX3NsZWVwKHNrKSwgJmFtcDt3YWl0KTsKQEAgLTYyOSwxMyAmIzQzOzY0MywyNCBAQCBzdGF0aWMgaW50IGxsY3Bfc29ja19yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spCiAKIAkJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGxzaywgbiwgJmFtcDtsbGNwX3NvY2stJmd0O2FjY2VwdF9xdWV1ZSwKIAkJCQkJIGFjY2VwdF9xdWV1ZSkgewomIzQzOwkJCWJvb2wgcHV0X2NyZWF0aW9uID0gZmFsc2U7CiYjNDM7CiAJCQlhY2NlcHRfc2sgPSAmYW1wO2xzay0mZ3Q7c2s7Ci0JCQlsb2NrX3NvY2soYWNjZXB0X3NrKTsKJiM0MzsJCQlsb2NrX3NvY2tfbmVzdGVkKGFjY2VwdF9zaywgU0lOR0xFX0RFUFRIX05FU1RJTkcpOwogCi0JCQluZmNfbGxjcF9zZW5kX2Rpc2Nvbm5lY3QobHNrKTsKLQkJCW5mY19sbGNwX2FjY2VwdF91bmxpbmsoYWNjZXB0X3NrKTsKJiM0MzsJCQlpZiAobmZjX2xsY3Bfc29jayhhY2NlcHRfc2spLSZndDtwYXJlbnQgPT0gc2spIHsKJiM0MzsJCQkJbmZjX2xsY3Bfc2VuZF9kaXNjb25uZWN0KGxzayk7CiYjNDM7CQkJCW5mY19sbGNwX2FjY2VwdF91bmxpbmsoYWNjZXB0X3NrKTsKJiM0MzsJCQkJbmZjX2xsY3Bfc29ja191bmxpbmsoJmFtcDtsb2NhbC0mZ3Q7c29ja2V0cywgYWNjZXB0X3NrKTsKJiM0MzsKJiM0MzsJCQkJYWNjZXB0X3NrLSZndDtza19zdGF0ZSA9IExMQ1BfQ0xPU0VEOwomIzQzOwkJCQlzb2NrX29ycGhhbihhY2NlcHRfc2spOwomIzQzOwkJCQlwdXRfY3JlYXRpb24gPSB0cnVlOwomIzQzOwkJCX0KIAogCQkJcmVsZWFzZV9zb2NrKGFjY2VwdF9zayk7CiYjNDM7CQkJaWYgKHB1dF9jcmVhdGlvbikKJiM0MzsJCQkJc29ja19wdXQoYWNjZXB0X3NrKTsgLyogY3JlYXRpb24gcmVmICovCiAJCX0KIAl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDA4OjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2MzQKCQkJCQkJCW91dHB1dDogMTU2CgkJCQkJCQl0aG91Z2h0czogNTU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE5GQyBMTENQIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGp1c3QgcmV2aWV3ZWQgdGhpcyBwYXRjaCBmb3IgdGhlIE5GQyBMTENQIHN1YnN5c3RlbS4gTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgaXQmIzM5O3MgZm9jdXNlZCBvbiBzb21lIGNydWNpYWwsIGJ1dCB2ZXJ5IHRhcmdldGVkLCBmaXhlcy4gSXQmIzM5O3MgZXNzZW50aWFsbHkgYSBkZWVwIGRpdmUgaW50byBzb2NrZXQgbGlmZWN5Y2xlIG1hbmFnZW1lbnQsIHBhcnRpY3VsYXJseSBhcm91bmQgbG9ja2luZywgcmVmZXJlbmNlIGNvdW50aW5nLCBhbmQgY2xlYW51cCBwcm9jZWR1cmVzLiBJdCYjMzk7cyB0b3VjaGluZyBjb3JlIGZ1bmN0aW9uczogYG5mY19sbGNwX3NvY2tldF9yZWxlYXNlYCwgYG5mY19sbGNwX2xvY2FsX2dldGAsIGBsb2NhbF9yZWxlYXNlX3dvcmtgLCBgbmZjX2xsY3BfbG9jYWxfcHV0YCwgIGBuZmNfbGxjcF9hY2NlcHRfdW5saW5rYCwgYG5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlYCwgYGxsY3Bfc29ja19hY2NlcHRgLCBhbmQgYGxsY3Bfc29ja19yZWxlYXNlYCAoYWxvbmcgd2l0aCBgbmZjX2xsY3BfaW5pdGAgYW5kIGBuZmNfbGxjcF9leGl0YCkuIEkgY2FuIHNlZSB0aGF0IHRoZXJlJiMzOTtzIGEgZGVmaW5pdGUgZm9jdXMgb24gaW1wcm92aW5nIHNvY2tldCBzdGF0ZSBoYW5kbGluZyBhbmQgcHJldmVudGluZyBpc3N1ZXMgbGlrZSB1c2UtYWZ0ZXItZnJlZSBjb25kaXRpb25zIGFuZCByYWNlIGNvbmRpdGlvbnMuIFRoZSBpbnRyb2R1Y3Rpb24gb2YgYHJlbGVhc2Vfd29ya2AgYW5kIGRlZmVycmluZyB0aGUgbG9jYWwgcmVsZWFzZSB0byBhIHdvcmtxdWV1ZSAoYGxsY3Bfd3FgKSBpcyBhIGtleSBpbmRpY2F0b3Igb2YgdGhpcyByZWZhY3RvcmluZy4gSSYjMzk7bSBhbHNvIHNlZWluZyBzb21lIGltcHJvdmVtZW50cyB0byB0aGUgbG9ja2luZyBwcmltaXRpdmVzIGJlaW5nIHVzZWQsIHN1Y2ggYXMgYGxvY2tfc29ja2Agb3ZlciBgbG9ja19zb2NrX25lc3RlZGAgaW4gYGxsY3Bfc29ja19hY2NlcHRgLgoKTXkgbWFpbiBjb25jZXJuLCBhcyBhbHdheXMsIGlzIHdoZXRoZXIgdGhlc2UgY2hhbmdlcyBpbnRyb2R1Y2UgYW55IG5ldyBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMsIHBhcnRpY3VsYXJseSByZWxhdGVkIHRvIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGV4cG9zdXJlIG9yIGluZm9ybWF0aW9uIGxlYWtzLiBIb3dldmVyLCBhZnRlciBjYXJlZnVsIHJldmlldywgSSYjMzk7bSBjb25maWRlbnQgdGhhdCB0aGUgYW5zd2VyIGlzIG5vLiBUaGlzIHBhdGNoIGRvZXNuJiMzOTt0IGludm9sdmUgYW55IGNoYW5nZXMgdGhhdCBpbnZvbHZlIHNlbmRpbmcgbmV3IGRhdGEgc3RydWN0dXJlcyB0byB1c2VyIHNwYWNlLCBub3IgaXMgaXQgcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSwgb3IgYWxsb2NhdGluZyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHVuaW5pdGlhbGl6ZWQgZmllbGRzLiBUaGVzZSBtb2RpZmljYXRpb25zIGFyZSBwdXJlbHkgY29udHJvbCBwbGFuZSBvcGVyYXRpb25zLCBjb25jZXJuZWQgd2l0aCB0aGUgbWFuYWdlbWVudCBvZiBzb2NrZXQgbGlmZWN5Y2xlLiBUaGVyZSYjMzk7cyBubyBkYXRhIGNvcHlpbmcgb3IgZGlyZWN0IGludGVyYWN0aW9uIHdpdGggdXNlciBzcGFjZSBkYXRhIHRoYXQgd291bGQgbmVjZXNzaXRhdGUgS01TQU4uCgpTaW5jZSB0aGVzZSBjaGFuZ2VzIGFyZSBhbGwgYWJvdXQgc29ja2V0IHN0YXRlLCBsb2NraW5nLCBhbmQgcmVmZXJlbmNlIGNvdW50aW5nLCBzdGFuZGFyZCBLQVNBTiwgTE9DS0RFUCwgYW5kIEtDU0FOIHNob3VsZCBiZSBwZXJmZWN0bHkgYWRlcXVhdGUgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBpc3N1ZXMg4oCTIHN1Y2ggYXMgVUFGLCBkZWFkbG9ja3MsIG9yIGRhdGEgcmFjZXMuIFRoZXJlZm9yZSwgSSYjMzk7bSBjb21mb3J0YWJsZSBzZXR0aW5nIGBOZWVkc0tNU0FOPWZhbHNlYCBmb3IgdGhpcyBvbmUuIEkmIzM5O3ZlIGRvdWJsZS1jaGVja2VkIHRoYXQgYWxsIG9mIHRoZSBtb2RpZmllZCBmdW5jdGlvbnMsIGluY2x1ZGluZyB0aGUgb25lcyBtZW50aW9uZWQgYWJvdmUsIGRvbiYjMzk7dCBkZWFsIHdpdGggY29weWluZyBkYXRhIHRvIHVzZXIgc3BhY2Ugb3IgcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhleSBhcmUgY2xlYXJseSBmb2N1c2VkIG9uIGludGVybmFsIHNvY2tldCBzdGF0ZSBtYW5hZ2VtZW50IGFuZCBjbGVhbnVwLiBTbywgS01TQU4gaXMgbm90IG5lY2Vzc2FyeSBoZXJlLiBJIHRoaW5rIHRoaXMgcGF0Y2ggaXMgYSBnb29kIHNldCBvZiBmaXhlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDg6NTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcmVzc2VzIGxvY2tpbmcsIHJlZmVyZW5jZSBjb3VudGluZywgYW5kIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBpbiB0aGUgTkZDIExMQ1Agc29ja2V0IGxheWVyLiBJdCBpbnRyb2R1Y2VzIGEgd29ya3F1ZXVlIGZvciBkZWZlcnJlZCBjbGVhbnVwLCBtb2RpZmllcyBzb2NrZXQgbGlzdCBwb3BwaW5nIHRvIGF2b2lkIGRlYWRsb2NrcyBvciBVQUYsIGFuZCBmaXhlcyBhY2NlcHQgcXVldWUgaGFuZGxpbmcuIFRoZXJlIGFyZSBubyBjaGFuZ2VzIHRvIGRhdGEgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm8gbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucywgYW5kIG5vIG1vZGlmaWNhdGlvbnMgdG8gZGF0YSBsZW5ndGhzIG9yIGJvdW5kcyBjaGVja3MgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBidWdzIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcyAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIG9yIGRlYWRsb2Nrcykgd291bGQgYmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBMT0NLREVQLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgbG9ja2luZywgcmVmZXJlbmNlIGNvdW50aW5nLCBhbmQgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGluIHRoZSBORkMgTExDUCBzb2NrZXQgbGF5ZXIuIEl0IGludHJvZHVjZXMgYSB3b3JrcXVldWUgZm9yIGRlZmVycmVkIGNsZWFudXAsIG1vZGlmaWVzIHNvY2tldCBsaXN0IHBvcHBpbmcgdG8gYXZvaWQgZGVhZGxvY2tzIG9yIFVBRiwgYW5kIGZpeGVzIGFjY2VwdCBxdWV1ZSBoYW5kbGluZy4gVGhlcmUgYXJlIG5vIGNoYW5nZXMgdG8gZGF0YSBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBubyBuZXcgYnVmZmVyIGFsbG9jYXRpb25zLCBhbmQgbm8gbW9kaWZpY2F0aW9ucyB0byBkYXRhIGxlbmd0aHMgb3IgYm91bmRzIGNoZWNrcyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgb3IgZGVhZGxvY2tzKSB3b3VsZCBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDg6MzUuMTk0MjYyNTA2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODY3NzEwMzYwNTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZDXCIsXG4gICAgXCJORkNfRElHSVRBTFwiLFxuICAgIFwiTkZDX1NJTVwiLFxuICAgIFwiTkZDX05DSVwiLFxuICAgIFwiTkZDX1ZJUlRVQUxfTkNJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibmZjX2xsY3BfbG9jYWxfcHV0XCIsXG4gICAgXCJuZmNfbGxjcF9hY2NlcHRfZGVxdWV1ZVwiLFxuICAgIFwibmZjX2xsY3BfYWNjZXB0X3VubGlua1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIGxvY2tpbmcsIHJlZmVyZW5jZSBjb3VudGluZywgYW5kIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBpbiB0aGUgTkZDIExMQ1Agc29ja2V0IGxheWVyLiBJdCBpbnRyb2R1Y2VzIGEgd29ya3F1ZXVlIGZvciBkZWZlcnJlZCBjbGVhbnVwLCBtb2RpZmllcyBzb2NrZXQgbGlzdCBwb3BwaW5nIHRvIGF2b2lkIGRlYWRsb2NrcyBvciBVQUYsIGFuZCBmaXhlcyBhY2NlcHQgcXVldWUgaGFuZGxpbmcuIFRoZXJlIGFyZSBubyBjaGFuZ2VzIHRvIGRhdGEgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm8gbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucywgYW5kIG5vIG1vZGlmaWNhdGlvbnMgdG8gZGF0YSBsZW5ndGhzIG9yIGJvdW5kcyBjaGVja3MgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBidWdzIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcyAoc3VjaCBhcyB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIG9yIGRlYWRsb2Nrcykgd291bGQgYmUgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBMT0NLREVQLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgcmVxdWlyZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbG9naWMgb2YgTkZDIExMQ1Agc29ja2V0cywgZml4aW5nIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIG9yIHVzZS1hZnRlci1mcmVlIGR1cmluZyBzb2NrZXQgcmVsZWFzZSBhbmQgYWNjZXB0IHF1ZXVlIGhhbmRsaW5nLiBJdCBpbnRyb2R1Y2VzIGEgd29ya3F1ZXVlIGZvciBsb2NhbCByZWxlYXNlIGFuZCBtb2RpZmllcyBzb2NrZXQgbG9ja2luZy4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHN0YW5kYXJkIHNvY2tldCBBUElzIHdoZW4gTkZDIGlzIGVuYWJsZWQuIFZpcnR1YWwgTkZDIGRldmljZXMgKE5GQ19TSU0sIE5GQ19WSVJUVUFMX05DSSkgY2FuIGJlIHVzZWQgdG8gdHJpZ2dlciB0aGlzIGNvZGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDg6MzUuMTk0MjY3MjU2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzYwMDUwNzk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMDE5MjAzMjNiOTU0MGZjYjY4ZWI4ZTFmYWVkMDI0NDcwODI2MTZlZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyAyNiAwODo0ODozMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmZjL2xsY3AuaCBiL25ldC9uZmMvbGxjcC5oXFxuaW5kZXggZDgzNDVlZDU3Yzk1NC4uMjNhZTdhMDExMmQzNyAxMDA2NDRcXG4tLS0gYS9uZXQvbmZjL2xsY3AuaFxcbisrKyBiL25ldC9uZmMvbGxjcC5oXFxuQEAgLTkxLDYgKzkxLDcgQEAgc3RydWN0IG5mY19sbGNwX2xvY2FsIHtcXG4gXFx0c3RydWN0IGhsaXN0X2hlYWQgcGVuZGluZ19zZHJlcXM7XFxuIFxcdHN0cnVjdCB0aW1lcl9saXN0IHNkcmVxX3RpbWVyO1xcbiBcXHRzdHJ1Y3Qgd29ya19zdHJ1Y3Qgc2RyZXFfdGltZW91dF93b3JrO1xcbitcXHRzdHJ1Y3Qgd29ya19zdHJ1Y3QgcmVsZWFzZV93b3JrO1xcbiBcXHR1OCBzZHJlcV9uZXh0X3RpZDtcXG4gXFxuIFxcdC8qIHNvY2tldHMgYXJyYXkgKi9cXG5kaWZmIC0tZ2l0IGEvbmV0L25mYy9sbGNwX2NvcmUuYyBiL25ldC9uZmMvbGxjcF9jb3JlLmNcXG5pbmRleCBiZDYzNjFlMmVmYTRmLi4yYzJkYmMxMjUzMWVjIDEwMDY0NFxcbi0tLSBhL25ldC9uZmMvbGxjcF9jb3JlLmNcXG4rKysgYi9uZXQvbmZjL2xsY3BfY29yZS5jXFxuQEAgLTIwLDYgKzIwLDggQEAgc3RhdGljIExJU1RfSEVBRChsbGNwX2RldmljZXMpO1xcbiAvKiBQcm90ZWN0cyBsbGNwX2RldmljZXMgbGlzdCAqL1xcbiBzdGF0aWMgREVGSU5FX1NQSU5MT0NLKGxsY3BfZGV2aWNlc19sb2NrKTtcXG4gXFxuK3N0YXRpYyBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqbGxjcF93cTtcXG4rXFxuIHN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3NrYihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG4gXFxuIHZvaWQgbmZjX2xsY3Bfc29ja19saW5rKHN0cnVjdCBsbGNwX3NvY2tfbGlzdCAqbCwgc3RydWN0IHNvY2sgKnNrKVxcbkBAIC02MywyMSArNjUsMzMgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfc29ja2V0X3B1cmdlKHN0cnVjdCBuZmNfbGxjcF9zb2NrICpzb2NrKVxcbiBcXHR9XFxuIH1cXG4gXFxuK3N0YXRpYyBzdHJ1Y3Qgc29jayAqbmZjX2xsY3Bfc29ja19saXN0X3BvcChzdHJ1Y3QgbGxjcF9zb2NrX2xpc3QgKmwpXFxuK3tcXG4rXFx0c3RydWN0IHNvY2sgKnNrO1xcbitcXG4rXFx0d3JpdGVfbG9jayhcXHUwMDI2bC1cXHUwMDNlbG9jayk7XFxuK1xcdHNrID0gc2tfaGVhZChcXHUwMDI2bC1cXHUwMDNlaGVhZCk7XFxuK1xcdGlmIChzaykge1xcbitcXHRcXHRzb2NrX2hvbGQoc2spO1xcbitcXHRcXHRza19kZWxfbm9kZV9pbml0KHNrKTtcXG4rXFx0fVxcbitcXHR3cml0ZV91bmxvY2soXFx1MDAyNmwtXFx1MDAzZWxvY2spO1xcbitcXG4rXFx0cmV0dXJuIHNrO1xcbit9XFxuK1xcbiBzdGF0aWMgdm9pZCBuZmNfbGxjcF9zb2NrZXRfcmVsZWFzZShzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBib29sIGRldmljZSxcXG4gXFx0XFx0XFx0XFx0ICAgIGludCBlcnIpXFxuIHtcXG4gXFx0c3RydWN0IHNvY2sgKnNrO1xcbi1cXHRzdHJ1Y3QgaGxpc3Rfbm9kZSAqdG1wO1xcbiBcXHRzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqbGxjcF9zb2NrO1xcbiBcXG4gXFx0c2tiX3F1ZXVlX3B1cmdlKFxcdTAwMjZsb2NhbC1cXHUwMDNldHhfcXVldWUpO1xcbiBcXG4tXFx0d3JpdGVfbG9jayhcXHUwMDI2bG9jYWwtXFx1MDAzZXNvY2tldHMubG9jayk7XFxuLVxcbi1cXHRza19mb3JfZWFjaF9zYWZlKHNrLCB0bXAsIFxcdTAwMjZsb2NhbC1cXHUwMDNlc29ja2V0cy5oZWFkKSB7XFxuK1xcdHdoaWxlICgoc2sgPSBuZmNfbGxjcF9zb2NrX2xpc3RfcG9wKFxcdTAwMjZsb2NhbC1cXHUwMDNlc29ja2V0cykpKSB7XFxuIFxcdFxcdGxsY3Bfc29jayA9IG5mY19sbGNwX3NvY2soc2spO1xcbiBcXG4tXFx0XFx0YmhfbG9ja19zb2NrKHNrKTtcXG4rXFx0XFx0bG9ja19zb2NrKHNrKTtcXG4gXFxuIFxcdFxcdG5mY19sbGNwX3NvY2tldF9wdXJnZShsbGNwX3NvY2spO1xcbiBcXG5AQCAtOTEsMTcgKzEwNSwyNyBAQCBzdGF0aWMgdm9pZCBuZmNfbGxjcF9zb2NrZXRfcmVsZWFzZShzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBib29sIGRldmljZSxcXG4gXFx0XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGxzaywgbixcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZsbGNwX3NvY2stXFx1MDAzZWFjY2VwdF9xdWV1ZSxcXG4gXFx0XFx0XFx0XFx0XFx0XFx0IGFjY2VwdF9xdWV1ZSkge1xcbi1cXHRcXHRcXHRcXHRhY2NlcHRfc2sgPSBcXHUwMDI2bHNrLVxcdTAwM2VzaztcXG4tXFx0XFx0XFx0XFx0YmhfbG9ja19zb2NrKGFjY2VwdF9zayk7XFxuLVxcbi1cXHRcXHRcXHRcXHRuZmNfbGxjcF9hY2NlcHRfdW5saW5rKGFjY2VwdF9zayk7XFxuK1xcdFxcdFxcdFxcdGJvb2wgcHV0X2NyZWF0aW9uID0gZmFsc2U7XFxuIFxcbi1cXHRcXHRcXHRcXHRpZiAoZXJyKVxcbi1cXHRcXHRcXHRcXHRcXHRhY2NlcHRfc2stXFx1MDAzZXNrX2VyciA9IGVycjtcXG4tXFx0XFx0XFx0XFx0YWNjZXB0X3NrLVxcdTAwM2Vza19zdGF0ZSA9IExMQ1BfQ0xPU0VEO1xcbi1cXHRcXHRcXHRcXHRhY2NlcHRfc2stXFx1MDAzZXNrX3N0YXRlX2NoYW5nZShzayk7XFxuK1xcdFxcdFxcdFxcdGFjY2VwdF9zayA9IFxcdTAwMjZsc2stXFx1MDAzZXNrO1xcbitcXHRcXHRcXHRcXHRsb2NrX3NvY2tfbmVzdGVkKGFjY2VwdF9zayxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0IFNJTkdMRV9ERVBUSF9ORVNUSU5HKTtcXG4rXFxuK1xcdFxcdFxcdFxcdGlmIChuZmNfbGxjcF9zb2NrKGFjY2VwdF9zayktXFx1MDAzZXBhcmVudCA9PSBzaykge1xcbitcXHRcXHRcXHRcXHRcXHRuZmNfbGxjcF9hY2NlcHRfdW5saW5rKGFjY2VwdF9zayk7XFxuK1xcdFxcdFxcdFxcdFxcdG5mY19sbGNwX3NvY2tfdW5saW5rKFxcdTAwMjZsb2NhbC1cXHUwMDNlc29ja2V0cywgYWNjZXB0X3NrKTtcXG4rXFxuK1xcdFxcdFxcdFxcdFxcdGlmIChlcnIpXFxuK1xcdFxcdFxcdFxcdFxcdFxcdGFjY2VwdF9zay1cXHUwMDNlc2tfZXJyID0gZXJyO1xcbitcXHRcXHRcXHRcXHRcXHRhY2NlcHRfc2stXFx1MDAzZXNrX3N0YXRlID0gTExDUF9DTE9TRUQ7XFxuK1xcdFxcdFxcdFxcdFxcdGFjY2VwdF9zay1cXHUwMDNlc2tfc3RhdGVfY2hhbmdlKGFjY2VwdF9zayk7XFxuK1xcdFxcdFxcdFxcdFxcdHNvY2tfb3JwaGFuKGFjY2VwdF9zayk7XFxuK1xcdFxcdFxcdFxcdFxcdHB1dF9jcmVhdGlvbiA9IHRydWU7XFxuK1xcdFxcdFxcdFxcdH1cXG4gXFxuLVxcdFxcdFxcdFxcdGJoX3VubG9ja19zb2NrKGFjY2VwdF9zayk7XFxuK1xcdFxcdFxcdFxcdHJlbGVhc2Vfc29jayhhY2NlcHRfc2spO1xcbitcXHRcXHRcXHRcXHRpZiAocHV0X2NyZWF0aW9uKVxcbitcXHRcXHRcXHRcXHRcXHRzb2NrX3B1dChhY2NlcHRfc2spOyAvKiBjcmVhdGlvbiByZWYgKi9cXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHR9XFxuIFxcbkBAIC0xMTAsMjMgKzEzNCwxOCBAQCBzdGF0aWMgdm9pZCBuZmNfbGxjcF9zb2NrZXRfcmVsZWFzZShzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBib29sIGRldmljZSxcXG4gXFx0XFx0c2stXFx1MDAzZXNrX3N0YXRlID0gTExDUF9DTE9TRUQ7XFxuIFxcdFxcdHNrLVxcdTAwM2Vza19zdGF0ZV9jaGFuZ2Uoc2spO1xcbiBcXG4tXFx0XFx0YmhfdW5sb2NrX3NvY2soc2spO1xcbi1cXG4tXFx0XFx0c2tfZGVsX25vZGVfaW5pdChzayk7XFxuK1xcdFxcdHJlbGVhc2Vfc29jayhzayk7XFxuK1xcdFxcdHNvY2tfcHV0KHNrKTtcXG4gXFx0fVxcbiBcXG4tXFx0d3JpdGVfdW5sb2NrKFxcdTAwMjZsb2NhbC1cXHUwMDNlc29ja2V0cy5sb2NrKTtcXG4tXFxuIFxcdC8qIElmIHdlIHN0aWxsIGhhdmUgYSBkZXZpY2UsIHdlIGtlZXAgdGhlIFJBVyBzb2NrZXRzIGFsaXZlICovXFxuIFxcdGlmIChkZXZpY2UgPT0gdHJ1ZSlcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4tXFx0d3JpdGVfbG9jayhcXHUwMDI2bG9jYWwtXFx1MDAzZXJhd19zb2NrZXRzLmxvY2spO1xcbi1cXG4tXFx0c2tfZm9yX2VhY2hfc2FmZShzaywgdG1wLCBcXHUwMDI2bG9jYWwtXFx1MDAzZXJhd19zb2NrZXRzLmhlYWQpIHtcXG4rXFx0d2hpbGUgKChzayA9IG5mY19sbGNwX3NvY2tfbGlzdF9wb3AoXFx1MDAyNmxvY2FsLVxcdTAwM2VyYXdfc29ja2V0cykpKSB7XFxuIFxcdFxcdGxsY3Bfc29jayA9IG5mY19sbGNwX3NvY2soc2spO1xcbiBcXG4tXFx0XFx0YmhfbG9ja19zb2NrKHNrKTtcXG4rXFx0XFx0bG9ja19zb2NrKHNrKTtcXG4gXFxuIFxcdFxcdG5mY19sbGNwX3NvY2tldF9wdXJnZShsbGNwX3NvY2spO1xcbiBcXG5AQCAtMTM1LDI2ICsxNTQsMjAgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2Uoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgYm9vbCBkZXZpY2UsXFxuIFxcdFxcdHNrLVxcdTAwM2Vza19zdGF0ZSA9IExMQ1BfQ0xPU0VEO1xcbiBcXHRcXHRzay1cXHUwMDNlc2tfc3RhdGVfY2hhbmdlKHNrKTtcXG4gXFxuLVxcdFxcdGJoX3VubG9ja19zb2NrKHNrKTtcXG4tXFxuLVxcdFxcdHNrX2RlbF9ub2RlX2luaXQoc2spO1xcbitcXHRcXHRyZWxlYXNlX3NvY2soc2spO1xcbitcXHRcXHRzb2NrX3B1dChzayk7XFxuIFxcdH1cXG4tXFxuLVxcdHdyaXRlX3VubG9jayhcXHUwMDI2bG9jYWwtXFx1MDAzZXJhd19zb2NrZXRzLmxvY2spO1xcbiB9XFxuIFxcbiBzdGF0aWMgc3RydWN0IG5mY19sbGNwX2xvY2FsICpuZmNfbGxjcF9sb2NhbF9nZXQoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbClcXG4ge1xcbi1cXHQvKiBTaW5jZSB1c2luZyBuZmNfbGxjcF9sb2NhbCBtYXkgcmVzdWx0IGluIHVzYWdlIG9mIG5mY19kZXYsIHdoZW5ldmVyXFxuLVxcdCAqIHdlIGhvbGQgYSByZWZlcmVuY2UgdG8gbG9jYWwsIHdlIGFsc28gbmVlZCB0byBob2xkIGEgcmVmZXJlbmNlIHRvXFxuLVxcdCAqIHRoZSBkZXZpY2UgdG8gYXZvaWQgVUFGLlxcbi1cXHQgKi9cXG4tXFx0aWYgKCFuZmNfZ2V0X2RldmljZShsb2NhbC1cXHUwMDNlZGV2LVxcdTAwM2VpZHgpKVxcbitcXHRpZiAoIWxvY2FsKVxcbiBcXHRcXHRyZXR1cm4gTlVMTDtcXG4gXFxuLVxcdGtyZWZfZ2V0KFxcdTAwMjZsb2NhbC1cXHUwMDNlcmVmKTtcXG4rXFx0aWYgKGtyZWZfZ2V0X3VubGVzc196ZXJvKFxcdTAwMjZsb2NhbC1cXHUwMDNlcmVmKSlcXG4rXFx0XFx0cmV0dXJuIGxvY2FsO1xcbiBcXG4tXFx0cmV0dXJuIGxvY2FsO1xcbitcXHRyZXR1cm4gTlVMTDtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgbG9jYWxfY2xlYW51cChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsKVxcbkBAIC0xNzIsMzAgKzE4NSwzNCBAQCBzdGF0aWMgdm9pZCBsb2NhbF9jbGVhbnVwKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwpXFxuIFxcdG5mY19sbGNwX2ZyZWVfc2RwX3Rsdl9saXN0KFxcdTAwMjZsb2NhbC1cXHUwMDNlcGVuZGluZ19zZHJlcXMpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBsb2NhbF9yZWxlYXNlKHN0cnVjdCBrcmVmICpyZWYpXFxuK3N0YXRpYyB2b2lkIGxvY2FsX3JlbGVhc2Vfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIHtcXG4gXFx0c3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbDtcXG4rXFx0c3RydWN0IG5mY19kZXYgKmRldjtcXG4gXFxuLVxcdGxvY2FsID0gY29udGFpbmVyX29mKHJlZiwgc3RydWN0IG5mY19sbGNwX2xvY2FsLCByZWYpO1xcbitcXHRsb2NhbCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwsIHJlbGVhc2Vfd29yayk7XFxuK1xcdGRldiA9IGxvY2FsLVxcdTAwM2VkZXY7XFxuIFxcbiBcXHRsb2NhbF9jbGVhbnVwKGxvY2FsKTtcXG4gXFx0a2ZyZWUobG9jYWwpO1xcbitcXHRuZmNfcHV0X2RldmljZShkZXYpO1xcbiB9XFxuIFxcbi1pbnQgbmZjX2xsY3BfbG9jYWxfcHV0KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwpXFxuK3N0YXRpYyB2b2lkIGxvY2FsX3JlbGVhc2Uoc3RydWN0IGtyZWYgKnJlZilcXG4ge1xcbi1cXHRzdHJ1Y3QgbmZjX2RldiAqZGV2O1xcbi1cXHRpbnQgcmV0O1xcbitcXHRzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsO1xcbiBcXG4tXFx0aWYgKGxvY2FsID09IE5VTEwpXFxuLVxcdFxcdHJldHVybiAwO1xcbitcXHRsb2NhbCA9IGNvbnRhaW5lcl9vZihyZWYsIHN0cnVjdCBuZmNfbGxjcF9sb2NhbCwgcmVmKTtcXG4gXFxuLVxcdGRldiA9IGxvY2FsLVxcdTAwM2VkZXY7XFxuK1xcdHF1ZXVlX3dvcmsobGxjcF93cSwgXFx1MDAyNmxvY2FsLVxcdTAwM2VyZWxlYXNlX3dvcmspO1xcbit9XFxuIFxcbi1cXHRyZXQgPSBrcmVmX3B1dChcXHUwMDI2bG9jYWwtXFx1MDAzZXJlZiwgbG9jYWxfcmVsZWFzZSk7XFxuLVxcdG5mY19wdXRfZGV2aWNlKGRldik7XFxuK2ludCBuZmNfbGxjcF9sb2NhbF9wdXQoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbClcXG4re1xcbitcXHRpZiAoIWxvY2FsKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4gXFxuLVxcdHJldHVybiByZXQ7XFxuK1xcdHJldHVybiBrcmVmX3B1dChcXHUwMDI2bG9jYWwtXFx1MDAzZXJlZiwgbG9jYWxfcmVsZWFzZSk7XFxuIH1cXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqbmZjX2xsY3Bfc29ja19nZXQoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCxcXG5AQCAtMTcwNSw2ICsxNzIyLDcgQEAgaW50IG5mY19sbGNwX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmZjX2RldiAqbmRldilcXG4gXFx0SU5JVF9XT1JLKFxcdTAwMjZsb2NhbC1cXHUwMDNlcnhfd29yaywgbmZjX2xsY3Bfcnhfd29yayk7XFxuIFxcbiBcXHRJTklUX1dPUksoXFx1MDAyNmxvY2FsLVxcdTAwM2V0aW1lb3V0X3dvcmssIG5mY19sbGNwX3RpbWVvdXRfd29yayk7XFxuK1xcdElOSVRfV09SSyhcXHUwMDI2bG9jYWwtXFx1MDAzZXJlbGVhc2Vfd29yaywgbG9jYWxfcmVsZWFzZV93b3JrKTtcXG4gXFxuIFxcdHJ3bG9ja19pbml0KFxcdTAwMjZsb2NhbC1cXHUwMDNlc29ja2V0cy5sb2NrKTtcXG4gXFx0cndsb2NrX2luaXQoXFx1MDAyNmxvY2FsLVxcdTAwM2Vjb25uZWN0aW5nX3NvY2tldHMubG9jayk7XFxuQEAgLTE3NDgsMTAgKzE3NjYsMjMgQEAgdm9pZCBuZmNfbGxjcF91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmZjX2RldiAqZGV2KVxcbiBcXG4gaW50IF9faW5pdCBuZmNfbGxjcF9pbml0KHZvaWQpXFxuIHtcXG4tXFx0cmV0dXJuIG5mY19sbGNwX3NvY2tfaW5pdCgpO1xcbitcXHRpbnQgcmV0O1xcbitcXG4rXFx0bGxjcF93cSA9IGFsbG9jX3dvcmtxdWV1ZShcXFwibmZjX2xsY3Bfd3FcXFwiLCAwLCAwKTtcXG4rXFx0aWYgKCFsbGNwX3dxKVxcbitcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFxuK1xcdHJldCA9IG5mY19sbGNwX3NvY2tfaW5pdCgpO1xcbitcXHRpZiAocmV0KSB7XFxuK1xcdFxcdGRlc3Ryb3lfd29ya3F1ZXVlKGxsY3Bfd3EpO1xcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXHR9XFxuK1xcbitcXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4gdm9pZCBuZmNfbGxjcF9leGl0KHZvaWQpXFxuIHtcXG4gXFx0bmZjX2xsY3Bfc29ja19leGl0KCk7XFxuK1xcdGRlc3Ryb3lfd29ya3F1ZXVlKGxsY3Bfd3EpO1xcbiB9XFxuZGlmZiAtLWdpdCBhL25ldC9uZmMvbGxjcF9zb2NrLmMgYi9uZXQvbmZjL2xsY3Bfc29jay5jXFxuaW5kZXggNTU1OGQ4YTRkNDhiMy4uY2U2ODc1ZWI1OGZiYyAxMDA2NDRcXG4tLS0gYS9uZXQvbmZjL2xsY3Bfc29jay5jXFxuKysrIGIvbmV0L25mYy9sbGNwX3NvY2suY1xcbkBAIC0zOTIsMTEgKzM5MiwxMiBAQCB2b2lkIG5mY19sbGNwX2FjY2VwdF91bmxpbmsoc3RydWN0IHNvY2sgKnNrKVxcbiBcXG4gXFx0cHJfZGVidWcoXFxcInN0YXRlICVkXFxcXG5cXFwiLCBzay1cXHUwMDNlc2tfc3RhdGUpO1xcbiBcXG4tXFx0bGlzdF9kZWxfaW5pdChcXHUwMDI2bGxjcF9zb2NrLVxcdTAwM2VhY2NlcHRfcXVldWUpO1xcbi1cXHRza19hY2NlcHRxX3JlbW92ZWQobGxjcF9zb2NrLVxcdTAwM2VwYXJlbnQpO1xcbi1cXHRsbGNwX3NvY2stXFx1MDAzZXBhcmVudCA9IE5VTEw7XFxuLVxcbi1cXHRzb2NrX3B1dChzayk7XFxuK1xcdGlmIChsbGNwX3NvY2stXFx1MDAzZXBhcmVudCkge1xcbitcXHRcXHRsaXN0X2RlbF9pbml0KFxcdTAwMjZsbGNwX3NvY2stXFx1MDAzZWFjY2VwdF9xdWV1ZSk7XFxuK1xcdFxcdHNrX2FjY2VwdHFfcmVtb3ZlZChsbGNwX3NvY2stXFx1MDAzZXBhcmVudCk7XFxuK1xcdFxcdGxsY3Bfc29jay1cXHUwMDNlcGFyZW50ID0gTlVMTDtcXG4rXFx0XFx0c29ja19wdXQoc2spO1xcbitcXHR9XFxuIH1cXG4gXFxuIHZvaWQgbmZjX2xsY3BfYWNjZXB0X2VucXVldWUoc3RydWN0IHNvY2sgKnBhcmVudCwgc3RydWN0IHNvY2sgKnNrKVxcbkBAIC00MjMsMTIgKzQyNCwyMCBAQCBzdHJ1Y3Qgc29jayAqbmZjX2xsY3BfYWNjZXB0X2RlcXVldWUoc3RydWN0IHNvY2sgKnBhcmVudCxcXG4gXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShsc2ssIG4sIFxcdTAwMjZsbGNwX3BhcmVudC1cXHUwMDNlYWNjZXB0X3F1ZXVlLFxcbiBcXHRcXHRcXHRcXHQgYWNjZXB0X3F1ZXVlKSB7XFxuK1xcdFxcdHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWw7XFxuK1xcbiBcXHRcXHRzayA9IFxcdTAwMjZsc2stXFx1MDAzZXNrO1xcbi1cXHRcXHRsb2NrX3NvY2soc2spO1xcbitcXHRcXHRsb2NrX3NvY2tfbmVzdGVkKHNrLCBTSU5HTEVfREVQVEhfTkVTVElORyk7XFxuIFxcbiBcXHRcXHRpZiAoc2stXFx1MDAzZXNrX3N0YXRlID09IExMQ1BfQ0xPU0VEKSB7XFxuLVxcdFxcdFxcdHJlbGVhc2Vfc29jayhzayk7XFxuK1xcdFxcdFxcdGxvY2FsID0gbmZjX2xsY3Bfc29jayhzayktXFx1MDAzZWxvY2FsO1xcbitcXG4gXFx0XFx0XFx0bmZjX2xsY3BfYWNjZXB0X3VubGluayhzayk7XFxuK1xcdFxcdFxcdGlmIChsb2NhbClcXG4rXFx0XFx0XFx0XFx0bmZjX2xsY3Bfc29ja191bmxpbmsoXFx1MDAyNmxvY2FsLVxcdTAwM2Vzb2NrZXRzLCBzayk7XFxuK1xcdFxcdFxcdHNvY2tfb3JwaGFuKHNrKTtcXG4rXFx0XFx0XFx0cmVsZWFzZV9zb2NrKHNrKTtcXG4rXFx0XFx0XFx0c29ja19wdXQoc2spO1xcbiBcXHRcXHRcXHRjb250aW51ZTtcXG4gXFx0XFx0fVxcbiBcXG5AQCAtNDY0LDcgKzQ3Myw3IEBAIHN0YXRpYyBpbnQgbGxjcF9zb2NrX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLFxcbiBcXG4gXFx0cHJfZGVidWcoXFxcInBhcmVudCAlcFxcXFxuXFxcIiwgc2spO1xcbiBcXG4tXFx0bG9ja19zb2NrX25lc3RlZChzaywgU0lOR0xFX0RFUFRIX05FU1RJTkcpO1xcbitcXHRsb2NrX3NvY2soc2spO1xcbiBcXG4gXFx0aWYgKHNrLVxcdTAwM2Vza19zdGF0ZSAhPSBMTENQX0xJU1RFTikge1xcbiBcXHRcXHRyZXQgPSAtRUJBREZEO1xcbkBAIC00OTAsNyArNDk5LDEyIEBAIHN0YXRpYyBpbnQgbGxjcF9zb2NrX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLFxcbiBcXG4gXFx0XFx0cmVsZWFzZV9zb2NrKHNrKTtcXG4gXFx0XFx0dGltZW8gPSBzY2hlZHVsZV90aW1lb3V0KHRpbWVvKTtcXG4tXFx0XFx0bG9ja19zb2NrX25lc3RlZChzaywgU0lOR0xFX0RFUFRIX05FU1RJTkcpO1xcbitcXHRcXHRsb2NrX3NvY2soc2spO1xcbitcXG4rXFx0XFx0aWYgKHNrLVxcdTAwM2Vza19zdGF0ZSAhPSBMTENQX0xJU1RFTikge1xcbitcXHRcXHRcXHRyZXQgPSAtRUJBREZEO1xcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0fVxcbiBcXHR9XFxuIFxcdF9fc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19SVU5OSU5HKTtcXG4gXFx0cmVtb3ZlX3dhaXRfcXVldWUoc2tfc2xlZXAoc2spLCBcXHUwMDI2d2FpdCk7XFxuQEAgLTYyOSwxMyArNjQzLDI0IEBAIHN0YXRpYyBpbnQgbGxjcF9zb2NrX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcXG4gXFxuIFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShsc2ssIG4sIFxcdTAwMjZsbGNwX3NvY2stXFx1MDAzZWFjY2VwdF9xdWV1ZSxcXG4gXFx0XFx0XFx0XFx0XFx0IGFjY2VwdF9xdWV1ZSkge1xcbitcXHRcXHRcXHRib29sIHB1dF9jcmVhdGlvbiA9IGZhbHNlO1xcbitcXG4gXFx0XFx0XFx0YWNjZXB0X3NrID0gXFx1MDAyNmxzay1cXHUwMDNlc2s7XFxuLVxcdFxcdFxcdGxvY2tfc29jayhhY2NlcHRfc2spO1xcbitcXHRcXHRcXHRsb2NrX3NvY2tfbmVzdGVkKGFjY2VwdF9zaywgU0lOR0xFX0RFUFRIX05FU1RJTkcpO1xcbiBcXG4tXFx0XFx0XFx0bmZjX2xsY3Bfc2VuZF9kaXNjb25uZWN0KGxzayk7XFxuLVxcdFxcdFxcdG5mY19sbGNwX2FjY2VwdF91bmxpbmsoYWNjZXB0X3NrKTtcXG4rXFx0XFx0XFx0aWYgKG5mY19sbGNwX3NvY2soYWNjZXB0X3NrKS1cXHUwMDNlcGFyZW50ID09IHNrKSB7XFxuK1xcdFxcdFxcdFxcdG5mY19sbGNwX3NlbmRfZGlzY29ubmVjdChsc2spO1xcbitcXHRcXHRcXHRcXHRuZmNfbGxjcF9hY2NlcHRfdW5saW5rKGFjY2VwdF9zayk7XFxuK1xcdFxcdFxcdFxcdG5mY19sbGNwX3NvY2tfdW5saW5rKFxcdTAwMjZsb2NhbC1cXHUwMDNlc29ja2V0cywgYWNjZXB0X3NrKTtcXG4rXFxuK1xcdFxcdFxcdFxcdGFjY2VwdF9zay1cXHUwMDNlc2tfc3RhdGUgPSBMTENQX0NMT1NFRDtcXG4rXFx0XFx0XFx0XFx0c29ja19vcnBoYW4oYWNjZXB0X3NrKTtcXG4rXFx0XFx0XFx0XFx0cHV0X2NyZWF0aW9uID0gdHJ1ZTtcXG4rXFx0XFx0XFx0fVxcbiBcXG4gXFx0XFx0XFx0cmVsZWFzZV9zb2NrKGFjY2VwdF9zayk7XFxuK1xcdFxcdFxcdGlmIChwdXRfY3JlYXRpb24pXFxuK1xcdFxcdFxcdFxcdHNvY2tfcHV0KGFjY2VwdF9zayk7IC8qIGNyZWF0aW9uIHJlZiAqL1xcbiBcXHRcXHR9XFxuIFxcdH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA4OjQ4OjM2LjU1NDkzODZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3NTYwNzAzNzQxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19ESUdJVEFMXCIsXG4gICAgXCJORkNfU0lNXCIsXG4gICAgXCJORkNfTkNJXCIsXG4gICAgXCJORkNfVklSVFVBTF9OQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZmNfbGxjcF9sb2NhbF9wdXRcIixcbiAgICBcIm5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlXCIsXG4gICAgXCJuZmNfbGxjcF9hY2NlcHRfdW5saW5rXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbG9naWMgb2YgTkZDIExMQ1Agc29ja2V0cywgZml4aW5nIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIG9yIHVzZS1hZnRlci1mcmVlIGR1cmluZyBzb2NrZXQgcmVsZWFzZSBhbmQgYWNjZXB0IHF1ZXVlIGhhbmRsaW5nLiBJdCBpbnRyb2R1Y2VzIGEgd29ya3F1ZXVlIGZvciBsb2NhbCByZWxlYXNlIGFuZCBtb2RpZmllcyBzb2NrZXQgbG9ja2luZy4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHN0YW5kYXJkIHNvY2tldCBBUElzIHdoZW4gTkZDIGlzIGVuYWJsZWQuIFZpcnR1YWwgTkZDIGRldmljZXMgKE5GQ19TSU0sIE5GQ19WSVJUVUFMX05DSSkgY2FuIGJlIHVzZWQgdG8gdHJpZ2dlciB0aGlzIGNvZGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMDE5MjAzMjNiOTU0MGZjYjY4ZWI4ZTFmYWVkMDI0NDcwODI2MTZlZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDI2IDA4OjQ4OjMzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25mYy9sbGNwLmggYi9uZXQvbmZjL2xsY3AuaFxuaW5kZXggZDgzNDVlZDU3Yzk1NC4uMjNhZTdhMDExMmQzNyAxMDA2NDRcbi0tLSBhL25ldC9uZmMvbGxjcC5oXG4rKysgYi9uZXQvbmZjL2xsY3AuaFxuQEAgLTkxLDYgKzkxLDcgQEAgc3RydWN0IG5mY19sbGNwX2xvY2FsIHtcbiBcdHN0cnVjdCBobGlzdF9oZWFkIHBlbmRpbmdfc2RyZXFzO1xuIFx0c3RydWN0IHRpbWVyX2xpc3Qgc2RyZXFfdGltZXI7XG4gXHRzdHJ1Y3Qgd29ya19zdHJ1Y3Qgc2RyZXFfdGltZW91dF93b3JrO1xuK1x0c3RydWN0IHdvcmtfc3RydWN0IHJlbGVhc2Vfd29yaztcbiBcdHU4IHNkcmVxX25leHRfdGlkO1xuIFxuIFx0Lyogc29ja2V0cyBhcnJheSAqL1xuZGlmZiAtLWdpdCBhL25ldC9uZmMvbGxjcF9jb3JlLmMgYi9uZXQvbmZjL2xsY3BfY29yZS5jXG5pbmRleCBiZDYzNjFlMmVmYTRmLi4yYzJkYmMxMjUzMWVjIDEwMDY0NFxuLS0tIGEvbmV0L25mYy9sbGNwX2NvcmUuY1xuKysrIGIvbmV0L25mYy9sbGNwX2NvcmUuY1xuQEAgLTIwLDYgKzIwLDggQEAgc3RhdGljIExJU1RfSEVBRChsbGNwX2RldmljZXMpO1xuIC8qIFByb3RlY3RzIGxsY3BfZGV2aWNlcyBsaXN0ICovXG4gc3RhdGljIERFRklORV9TUElOTE9DSyhsbGNwX2RldmljZXNfbG9jayk7XG4gXG4rc3RhdGljIHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICpsbGNwX3dxO1xuK1xuIHN0YXRpYyB2b2lkIG5mY19sbGNwX3J4X3NrYihzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbiBcbiB2b2lkIG5mY19sbGNwX3NvY2tfbGluayhzdHJ1Y3QgbGxjcF9zb2NrX2xpc3QgKmwsIHN0cnVjdCBzb2NrICpzaylcbkBAIC02MywyMSArNjUsMzMgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfc29ja2V0X3B1cmdlKHN0cnVjdCBuZmNfbGxjcF9zb2NrICpzb2NrKVxuIFx0fVxuIH1cbiBcbitzdGF0aWMgc3RydWN0IHNvY2sgKm5mY19sbGNwX3NvY2tfbGlzdF9wb3Aoc3RydWN0IGxsY3Bfc29ja19saXN0ICpsKVxuK3tcbitcdHN0cnVjdCBzb2NrICpzaztcbitcbitcdHdyaXRlX2xvY2soXHUwMDI2bC1cdTAwM2Vsb2NrKTtcbitcdHNrID0gc2tfaGVhZChcdTAwMjZsLVx1MDAzZWhlYWQpO1xuK1x0aWYgKHNrKSB7XG4rXHRcdHNvY2tfaG9sZChzayk7XG4rXHRcdHNrX2RlbF9ub2RlX2luaXQoc2spO1xuK1x0fVxuK1x0d3JpdGVfdW5sb2NrKFx1MDAyNmwtXHUwMDNlbG9jayk7XG4rXG4rXHRyZXR1cm4gc2s7XG4rfVxuK1xuIHN0YXRpYyB2b2lkIG5mY19sbGNwX3NvY2tldF9yZWxlYXNlKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIGJvb2wgZGV2aWNlLFxuIFx0XHRcdFx0ICAgIGludCBlcnIpXG4ge1xuIFx0c3RydWN0IHNvY2sgKnNrO1xuLVx0c3RydWN0IGhsaXN0X25vZGUgKnRtcDtcbiBcdHN0cnVjdCBuZmNfbGxjcF9zb2NrICpsbGNwX3NvY2s7XG4gXG4gXHRza2JfcXVldWVfcHVyZ2UoXHUwMDI2bG9jYWwtXHUwMDNldHhfcXVldWUpO1xuIFxuLVx0d3JpdGVfbG9jayhcdTAwMjZsb2NhbC1cdTAwM2Vzb2NrZXRzLmxvY2spO1xuLVxuLVx0c2tfZm9yX2VhY2hfc2FmZShzaywgdG1wLCBcdTAwMjZsb2NhbC1cdTAwM2Vzb2NrZXRzLmhlYWQpIHtcbitcdHdoaWxlICgoc2sgPSBuZmNfbGxjcF9zb2NrX2xpc3RfcG9wKFx1MDAyNmxvY2FsLVx1MDAzZXNvY2tldHMpKSkge1xuIFx0XHRsbGNwX3NvY2sgPSBuZmNfbGxjcF9zb2NrKHNrKTtcbiBcbi1cdFx0YmhfbG9ja19zb2NrKHNrKTtcbitcdFx0bG9ja19zb2NrKHNrKTtcbiBcbiBcdFx0bmZjX2xsY3Bfc29ja2V0X3B1cmdlKGxsY3Bfc29jayk7XG4gXG5AQCAtOTEsMTcgKzEwNSwyNyBAQCBzdGF0aWMgdm9pZCBuZmNfbGxjcF9zb2NrZXRfcmVsZWFzZShzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBib29sIGRldmljZSxcbiBcdFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobHNrLCBuLFxuIFx0XHRcdFx0XHRcdCBcdTAwMjZsbGNwX3NvY2stXHUwMDNlYWNjZXB0X3F1ZXVlLFxuIFx0XHRcdFx0XHRcdCBhY2NlcHRfcXVldWUpIHtcbi1cdFx0XHRcdGFjY2VwdF9zayA9IFx1MDAyNmxzay1cdTAwM2Vzaztcbi1cdFx0XHRcdGJoX2xvY2tfc29jayhhY2NlcHRfc2spO1xuLVxuLVx0XHRcdFx0bmZjX2xsY3BfYWNjZXB0X3VubGluayhhY2NlcHRfc2spO1xuK1x0XHRcdFx0Ym9vbCBwdXRfY3JlYXRpb24gPSBmYWxzZTtcbiBcbi1cdFx0XHRcdGlmIChlcnIpXG4tXHRcdFx0XHRcdGFjY2VwdF9zay1cdTAwM2Vza19lcnIgPSBlcnI7XG4tXHRcdFx0XHRhY2NlcHRfc2stXHUwMDNlc2tfc3RhdGUgPSBMTENQX0NMT1NFRDtcbi1cdFx0XHRcdGFjY2VwdF9zay1cdTAwM2Vza19zdGF0ZV9jaGFuZ2Uoc2spO1xuK1x0XHRcdFx0YWNjZXB0X3NrID0gXHUwMDI2bHNrLVx1MDAzZXNrO1xuK1x0XHRcdFx0bG9ja19zb2NrX25lc3RlZChhY2NlcHRfc2ssXG4rXHRcdFx0XHRcdFx0IFNJTkdMRV9ERVBUSF9ORVNUSU5HKTtcbitcbitcdFx0XHRcdGlmIChuZmNfbGxjcF9zb2NrKGFjY2VwdF9zayktXHUwMDNlcGFyZW50ID09IHNrKSB7XG4rXHRcdFx0XHRcdG5mY19sbGNwX2FjY2VwdF91bmxpbmsoYWNjZXB0X3NrKTtcbitcdFx0XHRcdFx0bmZjX2xsY3Bfc29ja191bmxpbmsoXHUwMDI2bG9jYWwtXHUwMDNlc29ja2V0cywgYWNjZXB0X3NrKTtcbitcbitcdFx0XHRcdFx0aWYgKGVycilcbitcdFx0XHRcdFx0XHRhY2NlcHRfc2stXHUwMDNlc2tfZXJyID0gZXJyO1xuK1x0XHRcdFx0XHRhY2NlcHRfc2stXHUwMDNlc2tfc3RhdGUgPSBMTENQX0NMT1NFRDtcbitcdFx0XHRcdFx0YWNjZXB0X3NrLVx1MDAzZXNrX3N0YXRlX2NoYW5nZShhY2NlcHRfc2spO1xuK1x0XHRcdFx0XHRzb2NrX29ycGhhbihhY2NlcHRfc2spO1xuK1x0XHRcdFx0XHRwdXRfY3JlYXRpb24gPSB0cnVlO1xuK1x0XHRcdFx0fVxuIFxuLVx0XHRcdFx0YmhfdW5sb2NrX3NvY2soYWNjZXB0X3NrKTtcbitcdFx0XHRcdHJlbGVhc2Vfc29jayhhY2NlcHRfc2spO1xuK1x0XHRcdFx0aWYgKHB1dF9jcmVhdGlvbilcbitcdFx0XHRcdFx0c29ja19wdXQoYWNjZXB0X3NrKTsgLyogY3JlYXRpb24gcmVmICovXG4gXHRcdFx0fVxuIFx0XHR9XG4gXG5AQCAtMTEwLDIzICsxMzQsMTggQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2Uoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgYm9vbCBkZXZpY2UsXG4gXHRcdHNrLVx1MDAzZXNrX3N0YXRlID0gTExDUF9DTE9TRUQ7XG4gXHRcdHNrLVx1MDAzZXNrX3N0YXRlX2NoYW5nZShzayk7XG4gXG4tXHRcdGJoX3VubG9ja19zb2NrKHNrKTtcbi1cbi1cdFx0c2tfZGVsX25vZGVfaW5pdChzayk7XG4rXHRcdHJlbGVhc2Vfc29jayhzayk7XG4rXHRcdHNvY2tfcHV0KHNrKTtcbiBcdH1cbiBcbi1cdHdyaXRlX3VubG9jayhcdTAwMjZsb2NhbC1cdTAwM2Vzb2NrZXRzLmxvY2spO1xuLVxuIFx0LyogSWYgd2Ugc3RpbGwgaGF2ZSBhIGRldmljZSwgd2Uga2VlcCB0aGUgUkFXIHNvY2tldHMgYWxpdmUgKi9cbiBcdGlmIChkZXZpY2UgPT0gdHJ1ZSlcbiBcdFx0cmV0dXJuO1xuIFxuLVx0d3JpdGVfbG9jayhcdTAwMjZsb2NhbC1cdTAwM2VyYXdfc29ja2V0cy5sb2NrKTtcbi1cbi1cdHNrX2Zvcl9lYWNoX3NhZmUoc2ssIHRtcCwgXHUwMDI2bG9jYWwtXHUwMDNlcmF3X3NvY2tldHMuaGVhZCkge1xuK1x0d2hpbGUgKChzayA9IG5mY19sbGNwX3NvY2tfbGlzdF9wb3AoXHUwMDI2bG9jYWwtXHUwMDNlcmF3X3NvY2tldHMpKSkge1xuIFx0XHRsbGNwX3NvY2sgPSBuZmNfbGxjcF9zb2NrKHNrKTtcbiBcbi1cdFx0YmhfbG9ja19zb2NrKHNrKTtcbitcdFx0bG9ja19zb2NrKHNrKTtcbiBcbiBcdFx0bmZjX2xsY3Bfc29ja2V0X3B1cmdlKGxsY3Bfc29jayk7XG4gXG5AQCAtMTM1LDI2ICsxNTQsMjAgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2Uoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgYm9vbCBkZXZpY2UsXG4gXHRcdHNrLVx1MDAzZXNrX3N0YXRlID0gTExDUF9DTE9TRUQ7XG4gXHRcdHNrLVx1MDAzZXNrX3N0YXRlX2NoYW5nZShzayk7XG4gXG4tXHRcdGJoX3VubG9ja19zb2NrKHNrKTtcbi1cbi1cdFx0c2tfZGVsX25vZGVfaW5pdChzayk7XG4rXHRcdHJlbGVhc2Vfc29jayhzayk7XG4rXHRcdHNvY2tfcHV0KHNrKTtcbiBcdH1cbi1cbi1cdHdyaXRlX3VubG9jayhcdTAwMjZsb2NhbC1cdTAwM2VyYXdfc29ja2V0cy5sb2NrKTtcbiB9XG4gXG4gc3RhdGljIHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbmZjX2xsY3BfbG9jYWxfZ2V0KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwpXG4ge1xuLVx0LyogU2luY2UgdXNpbmcgbmZjX2xsY3BfbG9jYWwgbWF5IHJlc3VsdCBpbiB1c2FnZSBvZiBuZmNfZGV2LCB3aGVuZXZlclxuLVx0ICogd2UgaG9sZCBhIHJlZmVyZW5jZSB0byBsb2NhbCwgd2UgYWxzbyBuZWVkIHRvIGhvbGQgYSByZWZlcmVuY2UgdG9cbi1cdCAqIHRoZSBkZXZpY2UgdG8gYXZvaWQgVUFGLlxuLVx0ICovXG4tXHRpZiAoIW5mY19nZXRfZGV2aWNlKGxvY2FsLVx1MDAzZWRldi1cdTAwM2VpZHgpKVxuK1x0aWYgKCFsb2NhbClcbiBcdFx0cmV0dXJuIE5VTEw7XG4gXG4tXHRrcmVmX2dldChcdTAwMjZsb2NhbC1cdTAwM2VyZWYpO1xuK1x0aWYgKGtyZWZfZ2V0X3VubGVzc196ZXJvKFx1MDAyNmxvY2FsLVx1MDAzZXJlZikpXG4rXHRcdHJldHVybiBsb2NhbDtcbiBcbi1cdHJldHVybiBsb2NhbDtcbitcdHJldHVybiBOVUxMO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBsb2NhbF9jbGVhbnVwKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwpXG5AQCAtMTcyLDMwICsxODUsMzQgQEAgc3RhdGljIHZvaWQgbG9jYWxfY2xlYW51cChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsKVxuIFx0bmZjX2xsY3BfZnJlZV9zZHBfdGx2X2xpc3QoXHUwMDI2bG9jYWwtXHUwMDNlcGVuZGluZ19zZHJlcXMpO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBsb2NhbF9yZWxlYXNlKHN0cnVjdCBrcmVmICpyZWYpXG4rc3RhdGljIHZvaWQgbG9jYWxfcmVsZWFzZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiB7XG4gXHRzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsO1xuK1x0c3RydWN0IG5mY19kZXYgKmRldjtcbiBcbi1cdGxvY2FsID0gY29udGFpbmVyX29mKHJlZiwgc3RydWN0IG5mY19sbGNwX2xvY2FsLCByZWYpO1xuK1x0bG9jYWwgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG5mY19sbGNwX2xvY2FsLCByZWxlYXNlX3dvcmspO1xuK1x0ZGV2ID0gbG9jYWwtXHUwMDNlZGV2O1xuIFxuIFx0bG9jYWxfY2xlYW51cChsb2NhbCk7XG4gXHRrZnJlZShsb2NhbCk7XG4rXHRuZmNfcHV0X2RldmljZShkZXYpO1xuIH1cbiBcbi1pbnQgbmZjX2xsY3BfbG9jYWxfcHV0KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwpXG4rc3RhdGljIHZvaWQgbG9jYWxfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqcmVmKVxuIHtcbi1cdHN0cnVjdCBuZmNfZGV2ICpkZXY7XG4tXHRpbnQgcmV0O1xuK1x0c3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbDtcbiBcbi1cdGlmIChsb2NhbCA9PSBOVUxMKVxuLVx0XHRyZXR1cm4gMDtcbitcdGxvY2FsID0gY29udGFpbmVyX29mKHJlZiwgc3RydWN0IG5mY19sbGNwX2xvY2FsLCByZWYpO1xuIFxuLVx0ZGV2ID0gbG9jYWwtXHUwMDNlZGV2O1xuK1x0cXVldWVfd29yayhsbGNwX3dxLCBcdTAwMjZsb2NhbC1cdTAwM2VyZWxlYXNlX3dvcmspO1xuK31cbiBcbi1cdHJldCA9IGtyZWZfcHV0KFx1MDAyNmxvY2FsLVx1MDAzZXJlZiwgbG9jYWxfcmVsZWFzZSk7XG4tXHRuZmNfcHV0X2RldmljZShkZXYpO1xuK2ludCBuZmNfbGxjcF9sb2NhbF9wdXQoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbClcbit7XG4rXHRpZiAoIWxvY2FsKVxuK1x0XHRyZXR1cm4gMDtcbiBcbi1cdHJldHVybiByZXQ7XG4rXHRyZXR1cm4ga3JlZl9wdXQoXHUwMDI2bG9jYWwtXHUwMDNlcmVmLCBsb2NhbF9yZWxlYXNlKTtcbiB9XG4gXG4gc3RhdGljIHN0cnVjdCBuZmNfbGxjcF9zb2NrICpuZmNfbGxjcF9zb2NrX2dldChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLFxuQEAgLTE3MDUsNiArMTcyMiw3IEBAIGludCBuZmNfbGxjcF9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG5mY19kZXYgKm5kZXYpXG4gXHRJTklUX1dPUksoXHUwMDI2bG9jYWwtXHUwMDNlcnhfd29yaywgbmZjX2xsY3Bfcnhfd29yayk7XG4gXG4gXHRJTklUX1dPUksoXHUwMDI2bG9jYWwtXHUwMDNldGltZW91dF93b3JrLCBuZmNfbGxjcF90aW1lb3V0X3dvcmspO1xuK1x0SU5JVF9XT1JLKFx1MDAyNmxvY2FsLVx1MDAzZXJlbGVhc2Vfd29yaywgbG9jYWxfcmVsZWFzZV93b3JrKTtcbiBcbiBcdHJ3bG9ja19pbml0KFx1MDAyNmxvY2FsLVx1MDAzZXNvY2tldHMubG9jayk7XG4gXHRyd2xvY2tfaW5pdChcdTAwMjZsb2NhbC1cdTAwM2Vjb25uZWN0aW5nX3NvY2tldHMubG9jayk7XG5AQCAtMTc0OCwxMCArMTc2NiwyMyBAQCB2b2lkIG5mY19sbGNwX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBuZmNfZGV2ICpkZXYpXG4gXG4gaW50IF9faW5pdCBuZmNfbGxjcF9pbml0KHZvaWQpXG4ge1xuLVx0cmV0dXJuIG5mY19sbGNwX3NvY2tfaW5pdCgpO1xuK1x0aW50IHJldDtcbitcbitcdGxsY3Bfd3EgPSBhbGxvY193b3JrcXVldWUoXCJuZmNfbGxjcF93cVwiLCAwLCAwKTtcbitcdGlmICghbGxjcF93cSlcbitcdFx0cmV0dXJuIC1FTk9NRU07XG4rXG4rXHRyZXQgPSBuZmNfbGxjcF9zb2NrX2luaXQoKTtcbitcdGlmIChyZXQpIHtcbitcdFx0ZGVzdHJveV93b3JrcXVldWUobGxjcF93cSk7XG4rXHRcdHJldHVybiByZXQ7XG4rXHR9XG4rXG4rXHRyZXR1cm4gMDtcbiB9XG4gXG4gdm9pZCBuZmNfbGxjcF9leGl0KHZvaWQpXG4ge1xuIFx0bmZjX2xsY3Bfc29ja19leGl0KCk7XG4rXHRkZXN0cm95X3dvcmtxdWV1ZShsbGNwX3dxKTtcbiB9XG5kaWZmIC0tZ2l0IGEvbmV0L25mYy9sbGNwX3NvY2suYyBiL25ldC9uZmMvbGxjcF9zb2NrLmNcbmluZGV4IDU1NThkOGE0ZDQ4YjMuLmNlNjg3NWViNThmYmMgMTAwNjQ0XG4tLS0gYS9uZXQvbmZjL2xsY3Bfc29jay5jXG4rKysgYi9uZXQvbmZjL2xsY3Bfc29jay5jXG5AQCAtMzkyLDExICszOTIsMTIgQEAgdm9pZCBuZmNfbGxjcF9hY2NlcHRfdW5saW5rKHN0cnVjdCBzb2NrICpzaylcbiBcbiBcdHByX2RlYnVnKFwic3RhdGUgJWRcXG5cIiwgc2stXHUwMDNlc2tfc3RhdGUpO1xuIFxuLVx0bGlzdF9kZWxfaW5pdChcdTAwMjZsbGNwX3NvY2stXHUwMDNlYWNjZXB0X3F1ZXVlKTtcbi1cdHNrX2FjY2VwdHFfcmVtb3ZlZChsbGNwX3NvY2stXHUwMDNlcGFyZW50KTtcbi1cdGxsY3Bfc29jay1cdTAwM2VwYXJlbnQgPSBOVUxMO1xuLVxuLVx0c29ja19wdXQoc2spO1xuK1x0aWYgKGxsY3Bfc29jay1cdTAwM2VwYXJlbnQpIHtcbitcdFx0bGlzdF9kZWxfaW5pdChcdTAwMjZsbGNwX3NvY2stXHUwMDNlYWNjZXB0X3F1ZXVlKTtcbitcdFx0c2tfYWNjZXB0cV9yZW1vdmVkKGxsY3Bfc29jay1cdTAwM2VwYXJlbnQpO1xuK1x0XHRsbGNwX3NvY2stXHUwMDNlcGFyZW50ID0gTlVMTDtcbitcdFx0c29ja19wdXQoc2spO1xuK1x0fVxuIH1cbiBcbiB2b2lkIG5mY19sbGNwX2FjY2VwdF9lbnF1ZXVlKHN0cnVjdCBzb2NrICpwYXJlbnQsIHN0cnVjdCBzb2NrICpzaylcbkBAIC00MjMsMTIgKzQyNCwyMCBAQCBzdHJ1Y3Qgc29jayAqbmZjX2xsY3BfYWNjZXB0X2RlcXVldWUoc3RydWN0IHNvY2sgKnBhcmVudCxcbiBcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShsc2ssIG4sIFx1MDAyNmxsY3BfcGFyZW50LVx1MDAzZWFjY2VwdF9xdWV1ZSxcbiBcdFx0XHRcdCBhY2NlcHRfcXVldWUpIHtcbitcdFx0c3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbDtcbitcbiBcdFx0c2sgPSBcdTAwMjZsc2stXHUwMDNlc2s7XG4tXHRcdGxvY2tfc29jayhzayk7XG4rXHRcdGxvY2tfc29ja19uZXN0ZWQoc2ssIFNJTkdMRV9ERVBUSF9ORVNUSU5HKTtcbiBcbiBcdFx0aWYgKHNrLVx1MDAzZXNrX3N0YXRlID09IExMQ1BfQ0xPU0VEKSB7XG4tXHRcdFx0cmVsZWFzZV9zb2NrKHNrKTtcbitcdFx0XHRsb2NhbCA9IG5mY19sbGNwX3NvY2soc2spLVx1MDAzZWxvY2FsO1xuK1xuIFx0XHRcdG5mY19sbGNwX2FjY2VwdF91bmxpbmsoc2spO1xuK1x0XHRcdGlmIChsb2NhbClcbitcdFx0XHRcdG5mY19sbGNwX3NvY2tfdW5saW5rKFx1MDAyNmxvY2FsLVx1MDAzZXNvY2tldHMsIHNrKTtcbitcdFx0XHRzb2NrX29ycGhhbihzayk7XG4rXHRcdFx0cmVsZWFzZV9zb2NrKHNrKTtcbitcdFx0XHRzb2NrX3B1dChzayk7XG4gXHRcdFx0Y29udGludWU7XG4gXHRcdH1cbiBcbkBAIC00NjQsNyArNDczLDcgQEAgc3RhdGljIGludCBsbGNwX3NvY2tfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssXG4gXG4gXHRwcl9kZWJ1ZyhcInBhcmVudCAlcFxcblwiLCBzayk7XG4gXG4tXHRsb2NrX3NvY2tfbmVzdGVkKHNrLCBTSU5HTEVfREVQVEhfTkVTVElORyk7XG4rXHRsb2NrX3NvY2soc2spO1xuIFxuIFx0aWYgKHNrLVx1MDAzZXNrX3N0YXRlICE9IExMQ1BfTElTVEVOKSB7XG4gXHRcdHJldCA9IC1FQkFERkQ7XG5AQCAtNDkwLDcgKzQ5OSwxMiBAQCBzdGF0aWMgaW50IGxsY3Bfc29ja19hY2NlcHQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2tldCAqbmV3c29jayxcbiBcbiBcdFx0cmVsZWFzZV9zb2NrKHNrKTtcbiBcdFx0dGltZW8gPSBzY2hlZHVsZV90aW1lb3V0KHRpbWVvKTtcbi1cdFx0bG9ja19zb2NrX25lc3RlZChzaywgU0lOR0xFX0RFUFRIX05FU1RJTkcpO1xuK1x0XHRsb2NrX3NvY2soc2spO1xuK1xuK1x0XHRpZiAoc2stXHUwMDNlc2tfc3RhdGUgIT0gTExDUF9MSVNURU4pIHtcbitcdFx0XHRyZXQgPSAtRUJBREZEO1xuK1x0XHRcdGJyZWFrO1xuK1x0XHR9XG4gXHR9XG4gXHRfX3NldF9jdXJyZW50X3N0YXRlKFRBU0tfUlVOTklORyk7XG4gXHRyZW1vdmVfd2FpdF9xdWV1ZShza19zbGVlcChzayksIFx1MDAyNndhaXQpO1xuQEAgLTYyOSwxMyArNjQzLDI0IEBAIHN0YXRpYyBpbnQgbGxjcF9zb2NrX3JlbGVhc2Uoc3RydWN0IHNvY2tldCAqc29jaylcbiBcbiBcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGxzaywgbiwgXHUwMDI2bGxjcF9zb2NrLVx1MDAzZWFjY2VwdF9xdWV1ZSxcbiBcdFx0XHRcdFx0IGFjY2VwdF9xdWV1ZSkge1xuK1x0XHRcdGJvb2wgcHV0X2NyZWF0aW9uID0gZmFsc2U7XG4rXG4gXHRcdFx0YWNjZXB0X3NrID0gXHUwMDI2bHNrLVx1MDAzZXNrO1xuLVx0XHRcdGxvY2tfc29jayhhY2NlcHRfc2spO1xuK1x0XHRcdGxvY2tfc29ja19uZXN0ZWQoYWNjZXB0X3NrLCBTSU5HTEVfREVQVEhfTkVTVElORyk7XG4gXG4tXHRcdFx0bmZjX2xsY3Bfc2VuZF9kaXNjb25uZWN0KGxzayk7XG4tXHRcdFx0bmZjX2xsY3BfYWNjZXB0X3VubGluayhhY2NlcHRfc2spO1xuK1x0XHRcdGlmIChuZmNfbGxjcF9zb2NrKGFjY2VwdF9zayktXHUwMDNlcGFyZW50ID09IHNrKSB7XG4rXHRcdFx0XHRuZmNfbGxjcF9zZW5kX2Rpc2Nvbm5lY3QobHNrKTtcbitcdFx0XHRcdG5mY19sbGNwX2FjY2VwdF91bmxpbmsoYWNjZXB0X3NrKTtcbitcdFx0XHRcdG5mY19sbGNwX3NvY2tfdW5saW5rKFx1MDAyNmxvY2FsLVx1MDAzZXNvY2tldHMsIGFjY2VwdF9zayk7XG4rXG4rXHRcdFx0XHRhY2NlcHRfc2stXHUwMDNlc2tfc3RhdGUgPSBMTENQX0NMT1NFRDtcbitcdFx0XHRcdHNvY2tfb3JwaGFuKGFjY2VwdF9zayk7XG4rXHRcdFx0XHRwdXRfY3JlYXRpb24gPSB0cnVlO1xuK1x0XHRcdH1cbiBcbiBcdFx0XHRyZWxlYXNlX3NvY2soYWNjZXB0X3NrKTtcbitcdFx0XHRpZiAocHV0X2NyZWF0aW9uKVxuK1x0XHRcdFx0c29ja19wdXQoYWNjZXB0X3NrKTsgLyogY3JlYXRpb24gcmVmICovXG4gXHRcdH1cbiBcdH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA4OjQ4OjM2LjU1NDkzOTY0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM4NTMyODA2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5GQyBTdWJzeXN0ZW0gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIGtlcm5lbCBwYXRjaCBpbiBmcm9udCBvZiBtZS4gSXQgbG9va3MgbGlrZSBpdCdzIHNwZWNpZmljYWxseSB0YXJnZXRpbmcgdGhlIE5GQyBzdWJzeXN0ZW0sIGRpZ2dpbmcgaW50byBgbmV0L25mYy9sbGNwX2NvcmUuY2AsIGBuZXQvbmZjL2xsY3AuaGAsIGFuZCBgbmV0L25mYy9sbGNwX3NvY2suY2AuIFNlZW1zIGxpa2UgYSBmdW5jdGlvbmFsIGNoYW5nZSwgZGVmaW5pdGVseSBub3QgYSBjb3NtZXRpYyBvbmUuIFRoZSBiaWdnZXN0IGZsYWcgaXMgdGhlIGludHJvZHVjdGlvbiBvZiB0aGlzIHdvcmtxdWV1ZSwgYGxsY3Bfd3FgLCBzcGVjaWZpY2FsbHkgZm9yIGBsb2NhbF9yZWxlYXNlX3dvcmtgLiBJJ20gc2VlaW5nIGNoYW5nZXMgaW4gaG93IHNvY2tldHMgYXJlIHJlbGVhc2VkIHdpdGggYG5mY19sbGNwX3NvY2tldF9yZWxlYXNlYCB1c2luZyBgbmZjX2xsY3Bfc29ja19saXN0X3BvcGAgYW5kLCBpbXBvcnRhbnRseSwgbmV3IGxvY2tpbmcuIEFsc28sIG1vZGlmaWNhdGlvbnMgaW4gYG5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlYCwgYGxsY3Bfc29ja19hY2NlcHRgLCBhbmQgYGxsY3Bfc29ja19yZWxlYXNlYC4gTXkgaW5pdGlhbCBpbXByZXNzaW9uIGlzIHRoYXQgdGhpcyBpcyB0b3VjaGluZyBzb21lIGNyaXRpY2FsIGNvbmN1cnJlbmN5IGFzcGVjdHMgb2YgdGhlIExMQ1AgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24uXG5cbk5vdywgbXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgaG93IHRoaXMgd2lsbCBiZWhhdmUgaW4gYSB2aXJ0dWFsaXplZCBjb250ZXh0LiBJIGtub3cgTkZDIGlzIGluaGVyZW50bHkgaGFyZHdhcmUtZGVwZW5kZW50LiBTbywgd2lsbCB0aGlzIGltcGFjdCB0aGUgdGVzdGluZyBvZiB0aGlzIGNoYW5nZT8gSSBoYXZlIHRvIGNvbnNpZGVyIHdoZXRoZXIgdGhlcmUncyBhIHNpbXVsYXRvciwgbGlrZSB0aGUgYG1hYzgwMjExX2h3c2ltYCBlcXVpdmFsZW50LCBhdmFpbGFibGUgZm9yIE5GQy4gVGhlIHJlYWwgaGFyZHdhcmUgbWlnaHQgbm90IGJlIGVhc2lseSBhY2Nlc3NpYmxlIGZvciBhbGwgdGVzdCBzZXR1cHMuIFRpbWUgdG8gc2VlIGlmIHNvbWV0aGluZyBsaWtlIGBuZmNzaW1gIGV4aXN0cy4gSSdsbCBmaXJlIHVwIGBncmVwcGVyYCBhbmQgc2VlIHdoYXQgSSBjYW4gdHVybiB1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTYzNywiT3V0cHV0VG9rZW5zIjoxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA4OjQ4OjQyLjk0MDI2OTc3MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzkwNTYzMDIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mY3NpbVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25mYy9NYWtlZmlsZT0xMD1vYmotJChDT05GSUdfTkZDX01FSV9QSFkpXFx0Kz0gbWVpX3BoeS5vXFxuZHJpdmVycy9uZmMvTWFrZWZpbGU6MTE6b2JqLSQoQ09ORklHX05GQ19TSU0pXFx0XFx0Kz0gbmZjc2ltLm9cXG5kcml2ZXJzL25mYy9NYWtlZmlsZS0xMi1vYmotJChDT05GSUdfTkZDX1BPUlQxMDApXFx0Kz0gcG9ydDEwMC5vXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMC1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMTpzdHJ1Y3QgbmZjc2ltIHtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMi1cXHRzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpuZmNfZGlnaXRhbF9kZXY7XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNi1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozNzpcXHRzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmtfaW47XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mzg6XFx0c3RydWN0IG5mY3NpbV9saW5rICpsaW5rX291dDtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zOS1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTUxLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjUyOnN0cnVjdCBuZmNzaW1fbGluayB7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNTMtXFx0c3RydWN0IG11dGV4IGxvY2s7XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy02NC1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo2NTpzdGF0aWMgc3RydWN0IG5mY3NpbV9saW5rICpuZmNzaW1fbGlua19uZXcodm9pZClcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy02Ni17XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Njc6XFx0c3RydWN0IG5mY3NpbV9saW5rICpsaW5rO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTY4LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjY5OlxcdGxpbmsgPSBremFsbG9jX29iaihzdHJ1Y3QgbmZjc2ltX2xpbmspO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTcwLVxcdGlmICghbGluaylcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTc4LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjc5OnN0YXRpYyB2b2lkIG5mY3NpbV9saW5rX2ZyZWUoc3RydWN0IG5mY3NpbV9saW5rICpsaW5rKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTgwLXtcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTg0LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjg1OnN0YXRpYyB2b2lkIG5mY3NpbV9saW5rX3JlY3Zfd2FrZShzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmspXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtODYte1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtOTAtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6OTE6c3RhdGljIHZvaWQgbmZjc2ltX2xpbmtfc2V0X3NrYihzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmssIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtOTItXFx0XFx0XFx0XFx0dTggcmZfdGVjaCwgdTggbW9kZSlcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTEwMy1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoxMDQ6c3RhdGljIHZvaWQgbmZjc2ltX2xpbmtfcmVjdl9jYW5jZWwoc3RydWN0IG5mY3NpbV9saW5rICpsaW5rKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTEwNS17XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xMTEtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTEyOlxcdG5mY3NpbV9saW5rX3JlY3Zfd2FrZShsaW5rKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xMTMtfVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTExNC1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoxMTU6c3RhdGljIHZvaWQgbmZjc2ltX2xpbmtfc2h1dGRvd24oc3RydWN0IG5mY3NpbV9saW5rICpsaW5rKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTExNi17XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xMjMtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTI0OlxcdG5mY3NpbV9saW5rX3JlY3Zfd2FrZShsaW5rKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xMjUtfVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTEyNi1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoxMjc6c3RhdGljIHN0cnVjdCBza19idWZmICpuZmNzaW1fbGlua19yZWN2X3NrYihzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmssXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTI4LVxcdFxcdFxcdFxcdFxcdCAgICBpbnQgdGltZW91dCwgdTggcmZfdGVjaCwgdTggbW9kZSlcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE2OS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoxNzA6c3RhdGljIHZvaWQgbmZjc2ltX3NlbmRfd3Eoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTE3MS17XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTcyOlxcdHN0cnVjdCBuZmNzaW0gKmRldiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmZjc2ltLCBzZW5kX3dvcmsud29yayk7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTczLVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTc2LVxcdCAqIGlzIHRoZSBsaW5rX2luIG9mIHRoZSBwZWVyIGRldmljZS4gVGhlIGV4Y2hhbmdlZCBza2IgaGFzIGFscmVhZHkgYmVlblxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE3NzpcXHQgKiBzdG9yZWQgaW4gdGhlIGRldi1cXHUwMDNlbGlua19vdXQgdGhyb3VnaCBuZmNzaW1fbGlua19zZXRfc2tiKCkuXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTc4LVxcdCAqL1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE3OTpcXHRuZmNzaW1fbGlua19yZWN2X3dha2UoZGV2LVxcdTAwM2VsaW5rX291dCk7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTgwLX1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xODEtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTgyOnN0YXRpYyB2b2lkIG5mY3NpbV9yZWN2X3dxKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xODMte1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjE4NDpcXHRzdHJ1Y3QgbmZjc2ltICpkZXYgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG5mY3NpbSwgcmVjdl93b3JrKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xODUtXFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0xODYtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MTg3OlxcdHNrYiA9IG5mY3NpbV9saW5rX3JlY3Zfc2tiKGRldi1cXHUwMDNlbGlua19pbiwgZGV2LVxcdTAwM2VyZWN2X3RpbWVvdXQsXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMTg4LVxcdFxcdFxcdFxcdCAgIGRldi1cXHUwMDNlcmZfdGVjaCwgZGV2LVxcdTAwM2Vtb2RlKTtcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwMC1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyMDE6c3RhdGljIGludCBuZmNzaW1fc2VuZChzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTIwMi1cXHRcXHQgICAgICAgdTE2IHRpbWVvdXQsIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNiLCB2b2lkICphcmcpXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjAzLXtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyMDQ6XFx0c3RydWN0IG5mY3NpbSAqZGV2ID0gbmZjX2RpZ2l0YWxfZ2V0X2RydmRhdGEoZGRldik7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjA1LVxcdHU4IGRlbGF5O1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjI2LVxcdGlmIChza2IpIHtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyMjc6XFx0XFx0bmZjc2ltX2xpbmtfc2V0X3NrYihkZXYtXFx1MDAzZWxpbmtfb3V0LCBza2IsIGRldi1cXHUwMDNlcmZfdGVjaCxcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yMjgtXFx0XFx0XFx0XFx0ICAgIGRldi1cXHUwMDNlbW9kZSk7XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yMzktXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjQwOnN0YXRpYyB2b2lkIG5mY3NpbV9hYm9ydF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldilcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNDEte1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI0MjpcXHRjb25zdCBzdHJ1Y3QgbmZjc2ltICpkZXYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNDMtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjQ0OlxcdG5mY3NpbV9saW5rX3JlY3ZfY2FuY2VsKGRldi1cXHUwMDNlbGlua19pbik7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjQ1LX1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNDYtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjQ3OnN0YXRpYyBpbnQgbmZjc2ltX3N3aXRjaF9yZihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCBib29sIG9uKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI0OC17XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjQ5OlxcdHN0cnVjdCBuZmNzaW0gKmRldiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI1MC1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI1NS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzoyNTY6c3RhdGljIGludCBuZmNzaW1faW5fY29uZmlndXJlX2h3KHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjU3LVxcdFxcdFxcdFxcdFxcdCAgaW50IHR5cGUsIGludCBwYXJhbSlcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNTgte1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI1OTpcXHRzdHJ1Y3QgbmZjc2ltICpkZXYgPSBuZmNfZGlnaXRhbF9nZXRfZHJ2ZGF0YShkZGV2KTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNjAtXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yNzgtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mjc5OnN0YXRpYyBpbnQgbmZjc2ltX2luX3NlbmRfY21kKHN0cnVjdCBuZmNfZGlnaXRhbF9kZXYgKmRkZXYsXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjgwLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MTYgdGltZW91dCxcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI4Mi17XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MjgzOlxcdHJldHVybiBuZmNzaW1fc2VuZChkZGV2LCBza2IsIHRpbWVvdXQsIGNiLCBhcmcpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI4NC19XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMjg1LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjI4NjpzdGF0aWMgaW50IG5mY3NpbV90Z19jb25maWd1cmVfaHcoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0yODctXFx0XFx0XFx0XFx0XFx0ICBpbnQgdHlwZSwgaW50IHBhcmFtKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI4OC17XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6Mjg5OlxcdHN0cnVjdCBuZmNzaW0gKmRldiA9IG5mY19kaWdpdGFsX2dldF9kcnZkYXRhKGRkZXYpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTI5MC1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMwOC1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMDk6c3RhdGljIGludCBuZmNzaW1fdGdfc2VuZF9jbWQoc3RydWN0IG5mY19kaWdpdGFsX2RldiAqZGRldixcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMTAtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBza19idWZmICpza2IsIHUxNiB0aW1lb3V0LFxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzEyLXtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMTM6XFx0cmV0dXJuIG5mY3NpbV9zZW5kKGRkZXYsIHNrYiwgdGltZW91dCwgY2IsIGFyZyk7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzE0LX1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMTUtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzE2OnN0YXRpYyBpbnQgbmZjc2ltX3RnX2xpc3RlbihzdHJ1Y3QgbmZjX2RpZ2l0YWxfZGV2ICpkZGV2LCB1MTYgdGltZW91dCxcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMTctXFx0XFx0XFx0ICAgIG5mY19kaWdpdGFsX2NtZF9jb21wbGV0ZV90IGNiLCB2b2lkICphcmcpXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzE4LXtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMTk6XFx0cmV0dXJuIG5mY3NpbV9zZW5kKGRkZXYsIE5VTEwsIHRpbWVvdXQsIGNiLCBhcmcpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMyMC19XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzIxLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjMyMjpzdGF0aWMgY29uc3Qgc3RydWN0IG5mY19kaWdpdGFsX29wcyBuZmNzaW1fZGlnaXRhbF9vcHMgPSB7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzIzOlxcdC5pbl9jb25maWd1cmVfaHcgPSBuZmNzaW1faW5fY29uZmlndXJlX2h3LFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjMyNDpcXHQuaW5fc2VuZF9jbWQgPSBuZmNzaW1faW5fc2VuZF9jbWQsXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzI1LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjMyNjpcXHQudGdfbGlzdGVuID0gbmZjc2ltX3RnX2xpc3RlbixcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMjc6XFx0LnRnX2NvbmZpZ3VyZV9odyA9IG5mY3NpbV90Z19jb25maWd1cmVfaHcsXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzI4OlxcdC50Z19zZW5kX2NtZCA9IG5mY3NpbV90Z19zZW5kX2NtZCxcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMjktXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzMwOlxcdC5hYm9ydF9jbWQgPSBuZmNzaW1fYWJvcnRfY21kLFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjMzMTpcXHQuc3dpdGNoX3JmID0gbmZjc2ltX3N3aXRjaF9yZixcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMzItfTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zMzMtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzM0OnN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpuZmNzaW1fZGVidWdmc19yb290O1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMzNS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozMzY6c3RhdGljIHZvaWQgbmZjc2ltX2RlYnVnZnNfaW5pdCh2b2lkKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMzNy17XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzM4OlxcdG5mY3NpbV9kZWJ1Z2ZzX3Jvb3QgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoXFxcIm5mY3NpbVxcXCIsIE5VTEwpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTMzOS19XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzQwLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM0MTpzdGF0aWMgdm9pZCBuZmNzaW1fZGVidWdmc19yZW1vdmUodm9pZClcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNDIte1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM0MzpcXHRkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUobmZjc2ltX2RlYnVnZnNfcm9vdCk7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzQ0LX1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNDUtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzQ2OnN0YXRpYyB2b2lkIG5mY3NpbV9kZWJ1Z2ZzX2luaXRfZGV2KHN0cnVjdCBuZmNzaW0gKmRldilcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNDcte1xcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzUyLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM1MzpcXHRpZiAoIW5mY3NpbV9kZWJ1Z2ZzX3Jvb3QpIHtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozNTQ6XFx0XFx0TkZDU0lNX0VSUihkZXYsIFxcXCJuZmNzaW0gZGVidWdmcyBub3QgaW5pdGlhbGl6ZWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM1NS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNjQtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzY1OlxcdGRldl9kaXIgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZGV2bmFtZSwgbmZjc2ltX2RlYnVnZnNfcm9vdCk7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzY2LVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzY5LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM3MDpzdGF0aWMgc3RydWN0IG5mY3NpbSAqbmZjc2ltX2RldmljZV9uZXcoc3RydWN0IG5mY3NpbV9saW5rICpsaW5rX2luLFxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM3MTpcXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgbmZjc2ltX2xpbmsgKmxpbmtfb3V0KVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM3Mi17XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6MzczOlxcdHN0cnVjdCBuZmNzaW0gKmRldjtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zNzQtXFx0aW50IHJjO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM3NS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozNzY6XFx0ZGV2ID0ga3phbGxvY19vYmooc3RydWN0IG5mY3NpbSk7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzc3LVxcdGlmICghZGV2KVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtMzc5LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM4MDpcXHRJTklUX0RFTEFZRURfV09SSyhcXHUwMDI2ZGV2LVxcdTAwM2VzZW5kX3dvcmssIG5mY3NpbV9zZW5kX3dxKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzozODE6XFx0SU5JVF9XT1JLKFxcdTAwMjZkZXYtXFx1MDAzZXJlY3Zfd29yaywgbmZjc2ltX3JlY3Zfd3EpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTM4Mi1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zODMtXFx0ZGV2LVxcdTAwM2VuZmNfZGlnaXRhbF9kZXYgPVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjM4NDpcXHRcXHRcXHRuZmNfZGlnaXRhbF9hbGxvY2F0ZV9kZXZpY2UoXFx1MDAyNm5mY3NpbV9kaWdpdGFsX29wcyxcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy0zODUtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIE5GQ19QUk9UT19ORkNfREVQX01BU0ssXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00MDYtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDA3OlxcdG5mY3NpbV9kZWJ1Z2ZzX2luaXRfZGV2KGRldik7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDA4LVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDExLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQxMjpzdGF0aWMgdm9pZCBuZmNzaW1fZGV2aWNlX2ZyZWUoc3RydWN0IG5mY3NpbSAqZGV2KVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQxMy17XFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00MTctXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDE4OlxcdG5mY3NpbV9saW5rX3NodXRkb3duKGRldi1cXHUwMDNlbGlua19pbik7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDE5LVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDI3LVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQyODpzdGF0aWMgc3RydWN0IG5mY3NpbSAqZGV2MDtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0Mjk6c3RhdGljIHN0cnVjdCBuZmNzaW0gKmRldjE7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDMwLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQzMTpzdGF0aWMgaW50IF9faW5pdCBuZmNzaW1faW5pdCh2b2lkKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQzMi17XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDMzOlxcdHN0cnVjdCBuZmNzaW1fbGluayAqbGluazAsICpsaW5rMTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00MzQtXFx0aW50IHJjO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQzNS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0MzY6XFx0bGluazAgPSBuZmNzaW1fbGlua19uZXcoKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0Mzc6XFx0bGluazEgPSBuZmNzaW1fbGlua19uZXcoKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00MzgtXFx0aWYgKCFsaW5rMCB8fCAhbGluazEpIHtcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ0Mi1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0NDM6XFx0bmZjc2ltX2RlYnVnZnNfaW5pdCgpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ0NC1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0NDU6XFx0ZGV2MCA9IG5mY3NpbV9kZXZpY2VfbmV3KGxpbmswLCBsaW5rMSk7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDQ2LVxcdGlmIChJU19FUlIoZGV2MCkpIHtcXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ1MC1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0NTE6XFx0ZGV2MSA9IG5mY3NpbV9kZXZpY2VfbmV3KGxpbmsxLCBsaW5rMCk7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDUyLVxcdGlmIChJU19FUlIoZGV2MSkpIHtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0NTM6XFx0XFx0bmZjc2ltX2RldmljZV9mcmVlKGRldjApO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ1NC1cXG4tLVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ1OC1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0NTk6XFx0cHJfaW5mbyhcXFwibmZjc2ltIFxcXCIgTkZDU0lNX1ZFUlNJT04gXFxcIiBpbml0aWFsaXplZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDYwLVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDYzLWV4aXRfZXJyOlxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQ2NDpcXHRwcl9lcnIoXFxcIkZhaWxlZCB0byBpbml0aWFsaXplIG5mY3NpbSBkcml2ZXIgKCVkKVxcXFxuXFxcIiwgcmMpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ2NS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00NjYtXFx0aWYgKGxpbmswKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQ2NzpcXHRcXHRuZmNzaW1fbGlua19mcmVlKGxpbmswKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00NjgtXFx0aWYgKGxpbmsxKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jOjQ2OTpcXHRcXHRuZmNzaW1fbGlua19mcmVlKGxpbmsxKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00NzAtXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00NzMtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDc0OnN0YXRpYyB2b2lkIF9fZXhpdCBuZmNzaW1fZXhpdCh2b2lkKVxcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ3NS17XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDc2OlxcdHN0cnVjdCBuZmNzaW1fbGluayAqbGluazAsICpsaW5rMTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00NzctXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00ODAtXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDgxOlxcdG5mY3NpbV9kZXZpY2VfZnJlZShkZXYwKTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0ODI6XFx0bmZjc2ltX2RldmljZV9mcmVlKGRldjEpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ4My1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0ODQ6XFx0bmZjc2ltX2xpbmtfZnJlZShsaW5rMCk7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDg1OlxcdG5mY3NpbV9saW5rX2ZyZWUobGluazEpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ4Ni1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0ODc6XFx0bmZjc2ltX2RlYnVnZnNfcmVtb3ZlKCk7XFxuZHJpdmVycy9uZmMvbmZjc2ltLmMtNDg4LX1cXG5kcml2ZXJzL25mYy9uZmNzaW0uYy00ODktXFxuZHJpdmVycy9uZmMvbmZjc2ltLmM6NDkwOm1vZHVsZV9pbml0KG5mY3NpbV9pbml0KTtcXG5kcml2ZXJzL25mYy9uZmNzaW0uYzo0OTE6bW9kdWxlX2V4aXQobmZjc2ltX2V4aXQpO1xcbmRyaXZlcnMvbmZjL25mY3NpbS5jLTQ5Mi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDg6NDUuMzMwODM2OTgzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAxMjY2ODcxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRoZSBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTkZDIFNpbXVsYXRvciBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBgbmZjc2ltYCBpcyBhIGtub3duIHF1YW50aXR5LCBhIHNpbXVsYXRvciBkcml2ZXIgZm9yIE5GQywgYW5kIGl0J3MgZW5hYmxlZCBieSB0aGUgYENPTkZJR19ORkNfU0lNYCBjb25maWcgb3B0aW9uLiBHb29kLiBJIHNlZSBhIHBhdGNoIGhlcmUgdGhhdCdzIHRvdWNoaW5nIGBuZXQvbmZjL2xsY3BfY29yZS5jYCBhbmQgYG5ldC9uZmMvbGxjcF9zb2NrLmNgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIG1lYW5zIHRoZXkncmUgZGlnZ2luZyBpbnRvIHRoZSBMb3cgTGV2ZWwgQ29tbXVuaWNhdGlvbiBQcm90b2NvbCAoTExDUCkgaW1wbGVtZW50YXRpb24gd2l0aGluIHRoZSBORkMgc3RhY2suIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBiZWZvcmUgSSBkaXZlIGRlZXAgaW50byB0aGUgY29kZSBjaGFuZ2VzLCBJIG5lZWQgdG8gdmVyaWZ5IGFsbCB0aGUgc3VwcG9ydGluZyBjb25maWd1cmF0aW9ucyBhcmUgcHJvcGVybHkgc2V0IHRvIHN1cHBvcnQgdGhlIG5ldyBmZWF0dXJlcyBvciBwYXRjaGVzLCBhbmQgc3BlY2lmaWNhbGx5IHRoYXQgTkZDIGFuZCBMTENQIGFyZSBjb3JyZWN0bHkgZW5hYmxlZCBpbiB0aGUgZmlyc3QgcGxhY2UuIEknbGwgdGFrZSBhIHF1aWNrIGxvb2sgYXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmVxdWlyZW1lbnRzIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nJ3Mgc2V0IHVwIGNvcnJlY3RseSBmb3IgdGVzdGluZyB3aXRoIHRoZSBzaW11bGF0b3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNjg1LCJPdXRwdXRUb2tlbnMiOjE2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDg6NDkuMzQzNTA3NTA0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTcxMjg2ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GQ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL202OGsvS2NvbmZpZy5kZXZpY2VzPTM2PWNvbmZpZyBORkJMT0NLXFxuLS1cXG5hcmNoL202OGsvS2NvbmZpZy5kZXZpY2VzLTQzLVxcbmFyY2gvbTY4ay9LY29uZmlnLmRldmljZXM6NDQ6Y29uZmlnIE5GQ09OXFxuYXJjaC9tNjhrL0tjb25maWcuZGV2aWNlcy00NS1cXHR0cmlzdGF0ZSBcXFwiTmF0RmVhdCBjb25zb2xlIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL0tjb25maWc9Nj1tZW51IFxcXCJOZWFyIEZpZWxkIENvbW11bmljYXRpb24gKE5GQykgZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL0tjb25maWctOC1cXG5kcml2ZXJzL25mYy9LY29uZmlnOjk6Y29uZmlnIE5GQ19UUkY3OTcwQVxcbmRyaXZlcnMvbmZjL0tjb25maWctMTAtXFx0dHJpc3RhdGUgXFxcIlRleGFzIEluc3RydW1lbnRzIFRSRjc5NzBhIE5GQyBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9LY29uZmlnLTIwLVxcbmRyaXZlcnMvbmZjL0tjb25maWc6MjE6Y29uZmlnIE5GQ19NRUlfUEhZXFxuZHJpdmVycy9uZmMvS2NvbmZpZy0yMi1cXHR0cmlzdGF0ZSBcXFwiTUVJIGJ1cyBORkMgZGV2aWNlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9LY29uZmlnLTMwLVxcbmRyaXZlcnMvbmZjL0tjb25maWc6MzE6Y29uZmlnIE5GQ19TSU1cXG5kcml2ZXJzL25mYy9LY29uZmlnLTMyLVxcdHRyaXN0YXRlIFxcXCJORkMgaGFyZHdhcmUgc2ltdWxhdG9yIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL0tjb25maWctNDEtXFxuZHJpdmVycy9uZmMvS2NvbmZpZzo0Mjpjb25maWcgTkZDX1BPUlQxMDBcXG5kcml2ZXJzL25mYy9LY29uZmlnLTQzLVxcdHRyaXN0YXRlIFxcXCJTb255IE5GQyBQb3J0LTEwMCBTZXJpZXMgVVNCIGRldmljZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvS2NvbmZpZy01MS1cXG5kcml2ZXJzL25mYy9LY29uZmlnOjUyOmNvbmZpZyBORkNfVklSVFVBTF9OQ0lcXG5kcml2ZXJzL25mYy9LY29uZmlnLTUzLVxcdHRyaXN0YXRlIFxcXCJOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9mZHAvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbmZjL2ZkcC9LY29uZmlnOjI6Y29uZmlnIE5GQ19GRFBcXG5kcml2ZXJzL25mYy9mZHAvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJJbnRlbCBGRFAgTkZDIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL2ZkcC9LY29uZmlnLTE0LVxcbmRyaXZlcnMvbmZjL2ZkcC9LY29uZmlnOjE1OmNvbmZpZyBORkNfRkRQX0kyQ1xcbmRyaXZlcnMvbmZjL2ZkcC9LY29uZmlnLTE2LVxcdHRyaXN0YXRlIFxcXCJORkMgRkRQIGkyYyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvS2NvbmZpZzoyOmNvbmZpZyBORkNfTUlDUk9SRUFEXFxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZmMvbWljcm9yZWFkL0tjb25maWctOS1cXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvS2NvbmZpZzoxMDpjb25maWcgTkZDX01JQ1JPUkVBRF9JMkNcXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvS2NvbmZpZy0xMS1cXHR0cmlzdGF0ZSBcXFwiSW5zaWRlIFNlY3VyZSBNaWNyb3JlYWQgZGV2aWNlIHN1cHBvcnQgKEkyQylcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvS2NvbmZpZy0yMS1cXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvS2NvbmZpZzoyMjpjb25maWcgTkZDX01JQ1JPUkVBRF9NRUlcXG5kcml2ZXJzL25mYy9taWNyb3JlYWQvS2NvbmZpZy0yMy1cXHR0cmlzdGF0ZSBcXFwiSW5zaWRlIFNlY3VyZSBNaWNyb3JlYWQgZGV2aWNlIHN1cHBvcnQgKE1FSSlcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWc6Mjpjb25maWcgTkZDX01SVkxcXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnLTktXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnOjEwOmNvbmZpZyBORkNfTVJWTF9VU0JcXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctMTEtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgTkZDLW92ZXItVVNCIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy0yMi1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWc6MjM6Y29uZmlnIE5GQ19NUlZMX1VBUlRcXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctMjQtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgTkZDLW92ZXItVUFSVCBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctMzQtXFxuZHJpdmVycy9uZmMvbmZjbXJ2bC9LY29uZmlnOjM1OmNvbmZpZyBORkNfTVJWTF9JMkNcXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWctMzYtXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgTkZDLW92ZXItSTJDIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy00NS1cXG5kcml2ZXJzL25mYy9uZmNtcnZsL0tjb25maWc6NDY6Y29uZmlnIE5GQ19NUlZMX1NQSVxcbmRyaXZlcnMvbmZjL25mY21ydmwvS2NvbmZpZy00Ny1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBORkMtb3Zlci1TUEkgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnOjI6Y29uZmlnIE5GQ19OWFBfTkNJXFxuZHJpdmVycy9uZmMvbnhwLW5jaS9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk5YUC1OQ0kgTkZDIGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy0xNC1cXG5kcml2ZXJzL25mYy9ueHAtbmNpL0tjb25maWc6MTU6Y29uZmlnIE5GQ19OWFBfTkNJX0kyQ1xcbmRyaXZlcnMvbmZjL254cC1uY2kvS2NvbmZpZy0xNi1cXHR0cmlzdGF0ZSBcXFwiTlhQLU5DSSBJMkMgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL3BuNTMzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnOjI6Y29uZmlnIE5GQ19QTjUzM1xcbmRyaXZlcnMvbmZjL3BuNTMzL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZy03LVxcbmRyaXZlcnMvbmZjL3BuNTMzL0tjb25maWc6ODpjb25maWcgTkZDX1BONTMzX1VTQlxcbmRyaXZlcnMvbmZjL3BuNTMzL0tjb25maWctOS1cXHR0cmlzdGF0ZSBcXFwiTkZDIFBONTMzIGRldmljZSBzdXBwb3J0IChVU0IpXFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZy0xOC1cXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnOjE5OmNvbmZpZyBORkNfUE41MzNfSTJDXFxuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiTkZDIFBONTMzIGRldmljZSBzdXBwb3J0IChJMkMpXFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvcG41MzMvS2NvbmZpZy0yOS1cXG5kcml2ZXJzL25mYy9wbjUzMy9LY29uZmlnOjMwOmNvbmZpZyBORkNfUE41MzJfVUFSVFxcbmRyaXZlcnMvbmZjL3BuNTMzL0tjb25maWctMzEtXFx0dHJpc3RhdGUgXFxcIk5GQyBQTjUzMiBkZXZpY2Ugc3VwcG9ydCAoVUFSVClcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9wbjU0NC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZmMvcG41NDQvS2NvbmZpZzoyOmNvbmZpZyBORkNfUE41NDRcXG5kcml2ZXJzL25mYy9wbjU0NC9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmZjL3BuNTQ0L0tjb25maWctOS1cXG5kcml2ZXJzL25mYy9wbjU0NC9LY29uZmlnOjEwOmNvbmZpZyBORkNfUE41NDRfSTJDXFxuZHJpdmVycy9uZmMvcG41NDQvS2NvbmZpZy0xMS1cXHR0cmlzdGF0ZSBcXFwiTlhQIFBONTQ0IGRldmljZSBzdXBwb3J0IChJMkMpXFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvcG41NDQvS2NvbmZpZy0yMC1cXG5kcml2ZXJzL25mYy9wbjU0NC9LY29uZmlnOjIxOmNvbmZpZyBORkNfUE41NDRfTUVJXFxuZHJpdmVycy9uZmMvcG41NDQvS2NvbmZpZy0yMi1cXHR0cmlzdGF0ZSBcXFwiTlhQIFBONTQ0IGRldmljZSBzdXBwb3J0IChNRUkpXFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvczNmd3JuNS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZmMvczNmd3JuNS9LY29uZmlnOjI6Y29uZmlnIE5GQ19TM0ZXUk41XFxuZHJpdmVycy9uZmMvczNmd3JuNS9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZy05LVxcbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZzoxMDpjb25maWcgTkZDX1MzRldSTjVfSTJDXFxuZHJpdmVycy9uZmMvczNmd3JuNS9LY29uZmlnLTExLVxcdHRyaXN0YXRlIFxcXCJTYW1zdW5nIFMzRldSTjUgSTJDIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25mYy9zM2Z3cm41L0tjb25maWctMjItXFxuZHJpdmVycy9uZmMvczNmd3JuNS9LY29uZmlnOjIzOmNvbmZpZyBORkNfUzNGV1JOODJfVUFSVFxcbmRyaXZlcnMvbmZjL3MzZndybjUvS2NvbmZpZy0yNC0gICAgICAgIHRyaXN0YXRlIFxcXCJTYW1zdW5nIFMzRldSTjgyIFVBUlQgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWc6Mjpjb25maWcgTkZDX1NUX05DSVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTMtXFx0dHJpc3RhdGVcXG4tLVxcbmRyaXZlcnMvbmZjL3N0LW5jaS9LY29uZmlnLTgtXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWc6OTpjb25maWcgTkZDX1NUX05DSV9JMkNcXG5kcml2ZXJzL25mYy9zdC1uY2kvS2NvbmZpZy0xMC1cXHR0cmlzdGF0ZSBcXFwiU1RNaWNyb2VsZWN0cm9uaWNzIFNUIE5DSSBORkMgZHJpdmVyIChJMkMpXFxcIlxcbi0tXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMjAtXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWc6MjE6Y29uZmlnIE5GQ19TVF9OQ0lfU1BJXFxuZHJpdmVycy9uZmMvc3QtbmNpL0tjb25maWctMjItXFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBTVCBOQ0kgTkZDIGRyaXZlciAoU1BJKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnOjI6Y29uZmlnIE5GQ19TVDIxTkZDQVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWctMy1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZmMvc3QyMW5mY2EvS2NvbmZpZy05LVxcbmRyaXZlcnMvbmZjL3N0MjFuZmNhL0tjb25maWc6MTA6Y29uZmlnIE5GQ19TVDIxTkZDQV9JMkNcXG5kcml2ZXJzL25mYy9zdDIxbmZjYS9LY29uZmlnLTExLVxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgU1QyMU5GQ0EgTkZDIGRyaXZlciAoSTJDKVxcXCJcXG4tLVxcbmRyaXZlcnMvbmZjL3N0OTVoZi9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZmMvc3Q5NWhmL0tjb25maWc6Mjpjb25maWcgTkZDX1NUOTVIRlxcbmRyaXZlcnMvbmZjL3N0OTVoZi9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNUOTVIRiBORkMgVHJhbnNjZWl2ZXIgZHJpdmVyXFxcIlxcbi0tXFxubmV0L25mYy9LY29uZmlnLTUtXFxubmV0L25mYy9LY29uZmlnOjY6bWVudWNvbmZpZyBORkNcXG5uZXQvbmZjL0tjb25maWctNy1cXHRkZXBlbmRzIG9uIFJGS0lMTCB8fCAhUkZLSUxMXFxuLS1cXG5uZXQvbmZjL0tjb25maWctMTYtXFxubmV0L25mYy9LY29uZmlnOjE3OmNvbmZpZyBORkNfRElHSVRBTFxcbm5ldC9uZmMvS2NvbmZpZy0xOC1cXHRkZXBlbmRzIG9uIE5GQ1xcbi0tXFxubmV0L25mYy9oY2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9uZmMvaGNpL0tjb25maWc6Mjpjb25maWcgTkZDX0hDSVxcbm5ldC9uZmMvaGNpL0tjb25maWctMy1cXHRkZXBlbmRzIG9uIE5GQ1xcbi0tXFxubmV0L25mYy9oY2kvS2NvbmZpZy0xMC1cXG5uZXQvbmZjL2hjaS9LY29uZmlnOjExOmNvbmZpZyBORkNfU0hETENcXG5uZXQvbmZjL2hjaS9LY29uZmlnLTEyLVxcdGRlcGVuZHMgb24gTkZDX0hDSVxcbi0tXFxubmV0L25mYy9uY2kvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9uZmMvbmNpL0tjb25maWc6Mjpjb25maWcgTkZDX05DSVxcbm5ldC9uZmMvbmNpL0tjb25maWctMy1cXHRkZXBlbmRzIG9uIE5GQ1xcbi0tXFxubmV0L25mYy9uY2kvS2NvbmZpZy0xMi1cXG5uZXQvbmZjL25jaS9LY29uZmlnOjEzOmNvbmZpZyBORkNfTkNJX1NQSVxcbm5ldC9uZmMvbmNpL0tjb25maWctMTQtXFx0ZGVwZW5kcyBvbiBORkNfTkNJIFxcdTAwMjZcXHUwMDI2IFNQSVxcbi0tXFxubmV0L25mYy9uY2kvS2NvbmZpZy0yMy1cXG5uZXQvbmZjL25jaS9LY29uZmlnOjI0OmNvbmZpZyBORkNfTkNJX1VBUlRcXG5uZXQvbmZjL25jaS9LY29uZmlnLTI1LVxcdGRlcGVuZHMgb24gTkZDX05DSSBcXHUwMDI2XFx1MDAyNiBUVFlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDg6NTAuODYwNjQwNzY2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgxODE3NjY5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKkFuYWx5emluZyBORkMgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuQWxyaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGJlc3Qgd2F5IHRvIGhhbmRsZSBORkMgY29uZmlndXJhdGlvbiBpbiB0aGlzIHBhcnRpY3VsYXIgc3lzdGVtLiBJIHNlZSB0aGF0IHRoZSBwcmltYXJ5IGNvbmZpZyBmbGFnIGZvciBlbmFibGluZyBORkMgaXMgYE5GQ2AuIFRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gQnV0LCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBwcm9qZWN0LCBJIHdhbnQgdG8gY29uc2lkZXIgYWxsIHRoZSBhbmdsZXMuIEkgYWxzbyBub3RpY2UgdGhlIGV4aXN0ZW5jZSBvZiBgTkZDX1NJTWAuIE9rYXksIHRoYXQncyBwcm9iYWJseSBmb3IgdGhlIHNpbXVsYXRvciBlbnZpcm9ubWVudC4gR29vZCwgZ29vZC4gSeKAmWxsIG1ha2UgYSBtZW50YWwgbm90ZSB0byBhZGRyZXNzIGJvdGguXG5cbk5vdywgYmVmb3JlIEkgY29tbWl0IHRvIGFueXRoaW5nLCBJIHNob3VsZCBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhIG1vcmUgZ3JhbnVsYXIgb3B0aW9uLiBJdCdzIGxpa2VseSB0aGVyZSBtYXkgYmUgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZvciBMTENQIChMb2dpY2FsIExpbmsgQ29udHJvbCBQcm90b2NvbCkgd2hpY2ggSSdsbCBiZSBzdXJlIHRvIGludmVzdGlnYXRlLiBUaGUga2V5IGlzIGluIGNvbXByZWhlbnNpdmUgY29uc2lkZXJhdGlvbi4gVGhlIGluaXRpYWwgY29uZmlncyBtZW50aW9uZWQgcG9pbnQgdG8gZ2VuZXJhbCBORkMgdXNlIGFuZCBzaW11bGF0aW9uIGJ1dCB0aGVyZSBpcyBhIGNoYW5jZSBvZiBmaW5kaW5nIGBORkNfTExDUGAgYXMgYSBsb3ctbGV2ZWwgb3B0aW9uIHRoYXQgaXMgbmVjZXNzYXJ5IHRvIGNvbnNpZGVyLiBObyBuZWVkIHRvIG1ha2UgYXNzdW1wdGlvbnM7IGxldCdzIHNlZSB3aGF0IGVsc2UgbWlnaHQgYmUgaGlkaW5nIGluIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0OTU1LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDg6NTUuNjc4ODIwNDA4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NzYzNjA3OTIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORkNfTExDUFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDg6NTcuMTU1MTg5MThaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODg2Njk5MTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipMTENQIGFuZCBORkM6IEEgUXVpY2sgQ2hlY2sqKlxuXG5Pa2F5LCBzbyBJJ20gd29uZGVyaW5nIGFib3V0IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBMTENQIChMb2dpY2FsIExpbmsgQ29udHJvbCBQcm90b2NvbCkgYW5kIE5GQy4gU3BlY2lmaWNhbGx5LCBkb2VzIGVuYWJsaW5nIE5GQyAqYXV0b21hdGljYWxseSogZW5hYmxlIExMQ1A/IEl0IHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIGFzc3VtcHRpb24sIGJ1dCBJIG5lZWQgdG8gY29uZmlybS4gVGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQsIG9mIGNvdXJzZSwgaXMgdGhlIHNvdXJjZSBjb2RlLiBMZXQncyBkaWcgaW50byB0aGUgYG5ldC9uZmMvTWFrZWZpbGVgIGZpbGUuIFRoYXQncyB1c3VhbGx5IHdoZXJlIHRoZSBidWlsZCBkZXBlbmRlbmNpZXMgYW5kIGNvcmUgY29uZmlndXJhdGlvbnMgcmVzaWRlLiBJdCBzaG91bGQgcXVpY2tseSByZXZlYWwgd2hldGhlciB0aGUgTExDUCBtb2R1bGUgaXMgY29uZGl0aW9uYWxseSBjb21waWxlZCBiYXNlZCBvbiB0aGUgTkZDIGNvbmZpZ3VyYXRpb24sIG9yIGlmIHRoZXJlJ3MgYW4gZXhwbGljaXQgZGVwZW5kZW5jeSBleHByZXNzZWQgdGhlcmUuIEhvcGVmdWxseSwgdGhpcydsbCBiZSBhIHF1aWNrIG9uZSFcblxuXG4iLCJJbnB1dFRva2VucyI6MTUyNjEsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwODo0OTowMS4wNDE4OTAyODNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNDY4OTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxsY3BcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL01ha2VmaWxlPTk9b2JqLSQoQ09ORklHX05GQ19ESUdJVEFMKSArPSBuZmNfZGlnaXRhbC5vXFxubmV0L25mYy9NYWtlZmlsZS0xMC1cXG5uZXQvbmZjL01ha2VmaWxlOjExOm5mYy1vYmpzIDo9IGNvcmUubyBuZXRsaW5rLm8gYWZfbmZjLm8gcmF3c29jay5vIGxsY3BfY29yZS5vIGxsY3BfY29tbWFuZHMubyBcXFxcXFxubmV0L25mYy9NYWtlZmlsZToxMjpcXHRcXHRsbGNwX3NvY2sub1xcbm5ldC9uZmMvTWFrZWZpbGUtMTMtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA4OjQ5OjAxLjA4NTM2NTE2MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDE2NjA0Njc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTkZDIExMQ1AgU29ja2V0IENoYW5nZXMqKlxuXG5Pa2F5LCBzbyBJIHNlZSB0aGF0IGBsbGNwX2NvcmUub2AgYW5kIGBsbGNwX3NvY2sub2AgYXJlIGluZGVlZCBidWlsdCB3aGVuIGBDT05GSUdfTkZDYCBpcyBlbmFibGVkLCB3aGljaCBpcyBleHBlY3RlZC4gVGhleSdyZSBwYXJ0IG9mIHRoYXQgYG5mYy1vYmpzYCBncm91cGluZy4gVGhlIHBhdGNoIHRhcmdldHMgcXVpdGUgYSBmZXcgY3J1Y2lhbCBmdW5jdGlvbnMsIG1haW5seSB0aGUgbGlmZWN5Y2xlIGFuZCBtYW5hZ2VtZW50IG9mIE5GQyBMTENQIHNvY2tldHMuIEknbSBzZWVpbmcgbW9kaWZpY2F0aW9ucyBpbiBgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2VgLCBgbmZjX2xsY3BfbG9jYWxfcHV0YCwgYG5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlYCwgYGxsY3Bfc29ja19hY2NlcHRgLCBhbmQgYGxsY3Bfc29ja19yZWxlYXNlYC4gVGhvc2UgYXJlIGFsbCBjb3JlIHRvIGhvdyB0aGUgTExDUCBzb2NrZXRzIG9wZXJhdGUuIE5vdywgbGV0J3MgZ2V0IGRvd24gdG8gc3BlY2lmaWNzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoZXNlIGNoYW5nZXMuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgdGhlIGtleSBzeW1ib2xzIHRoYXQgYXJlIGJlaW5nIG1vZGlmaWVkLiBJIGNhbiBzZWUgdGhhdCBgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2VgIGlzIHN0YXRpYywgc28gaXRzIHNjb3BlIGlzIGxpbWl0ZWQgdG8gdGhlIG1vZHVsZSBpdHNlbGYuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgYG5mY19sbGNwX2xvY2FsX3B1dGAgaXMgZXhwb3J0ZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCBpdHMgcG90ZW50aWFsIGltcGFjdCBvbiB0aGUgd2lkZXIga2VybmVsLiBUaGF0J3MgdGhlIG5leHQgY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1NTk5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA4OjQ5OjA2LjUwMTk3MTkyN1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcwMzE4MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZjX2xsY3BfbG9jYWxfcHV0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZmMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvbGxjcC5oPTIwND1zdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKm5mY19sbGNwX2ZpbmRfbG9jYWwoc3RydWN0IG5mY19kZXYgKmRldik7XFxubmV0L25mYy9sbGNwLmg6MjA1OmludCBuZmNfbGxjcF9sb2NhbF9wdXQoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCk7XFxubmV0L25mYy9sbGNwLmgtMjA2LXU4IG5mY19sbGNwX2dldF9zZHBfc3NhcChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmM9MzcxPWludCBuZmNfbGxjcF9zZW5kX3N5bW0oc3RydWN0IG5mY19kZXYgKmRldilcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb21tYW5kcy5jLTQwMS1vdXQ6XFxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmM6NDAyOlxcdG5mY19sbGNwX2xvY2FsX3B1dChsb2NhbCk7XFxubmV0L25mYy9sbGNwX2NvbW1hbmRzLmMtNDAzLVxcdHJldHVybiBlcnI7XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTIwMT1zdGF0aWMgdm9pZCBsb2NhbF9yZWxlYXNlKHN0cnVjdCBrcmVmICpyZWYpXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTIwOS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjIxMDppbnQgbmZjX2xsY3BfbG9jYWxfcHV0KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwpXFxubmV0L25mYy9sbGNwX2NvcmUuYy0yMTEte1xcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYz02NTU9dTggKm5mY19sbGNwX2dlbmVyYWxfYnl0ZXMoc3RydWN0IG5mY19kZXYgKmRldiwgc2l6ZV90ICpnZW5lcmFsX2J5dGVzX2xlbilcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtNjY4LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6NjY5OlxcdG5mY19sbGNwX2xvY2FsX3B1dChsb2NhbCk7XFxubmV0L25mYy9sbGNwX2NvcmUuYy02NzAtXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTY3ND1pbnQgbmZjX2xsY3Bfc2V0X3JlbW90ZV9nYihzdHJ1Y3QgbmZjX2RldiAqZGV2LCBjb25zdCB1OCAqZ2IsIHU4IGdiX2xlbilcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtNzAxLW91dDpcXG5uZXQvbmZjL2xsY3BfY29yZS5jOjcwMjpcXHRuZmNfbGxjcF9sb2NhbF9wdXQobG9jYWwpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtNzAzLVxcdHJldHVybiBlcnI7XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE2MzQ9aW50IG5mY19sbGNwX2RhdGFfcmVjZWl2ZWQoc3RydWN0IG5mY19kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY0NS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jOjE2NDY6XFx0bmZjX2xsY3BfbG9jYWxfcHV0KGxvY2FsKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2NDctXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE2NTE9dm9pZCBuZmNfbGxjcF9tYWNfaXNfZG93bihzdHJ1Y3QgbmZjX2RldiAqZGV2KVxcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNjY0LVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTY2NTpcXHRuZmNfbGxjcF9sb2NhbF9wdXQobG9jYWwpO1xcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTY2Ni19XFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jPTE2Njg9dm9pZCBuZmNfbGxjcF9tYWNfaXNfdXAoc3RydWN0IG5mY19kZXYgKmRldiwgdTMyIHRhcmdldF9pZHgsXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE2OTEtXFxubmV0L25mYy9sbGNwX2NvcmUuYzoxNjkyOlxcdG5mY19sbGNwX2xvY2FsX3B1dChsb2NhbCk7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNjkzLX1cXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmM9MTc1Mz12b2lkIG5mY19sbGNwX3VucmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBuZmNfZGV2ICpkZXYpXFxuLS1cXG5uZXQvbmZjL2xsY3BfY29yZS5jLTE3NjMtXFxubmV0L25mYy9sbGNwX2NvcmUuYzoxNzY0OlxcdG5mY19sbGNwX2xvY2FsX3B1dChsb2NhbCk7XFxubmV0L25mYy9sbGNwX2NvcmUuYy0xNzY1LX1cXG4tLVxcbm5ldC9uZmMvbGxjcF9zb2NrLmM9NTk9c3RhdGljIGludCBsbGNwX3NvY2tfYmluZChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2FkZHJfdW5zaXplZCAqYWRkciwgaW50IGFsZW4pXFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jLTEzNi1zb2NrX2xsY3BfcHV0X2xvY2FsOlxcbm5ldC9uZmMvbGxjcF9zb2NrLmM6MTM3OlxcdG5mY19sbGNwX2xvY2FsX3B1dChsbGNwX3NvY2stXFx1MDAzZWxvY2FsKTtcXG5uZXQvbmZjL2xsY3Bfc29jay5jLTEzOC1cXHRsbGNwX3NvY2stXFx1MDAzZWxvY2FsID0gTlVMTDtcXG4tLVxcbm5ldC9uZmMvbGxjcF9zb2NrLmM9Njg2PXN0YXRpYyBpbnQgbGxjcF9zb2NrX2Nvbm5lY3Qoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3Vuc2l6ZWQgKl9hZGRyLFxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYy03OTktc29ja19sbGNwX3B1dF9sb2NhbDpcXG5uZXQvbmZjL2xsY3Bfc29jay5jOjgwMDpcXHRuZmNfbGxjcF9sb2NhbF9wdXQobG9jYWwpO1xcbm5ldC9uZmMvbGxjcF9zb2NrLmMtODAxLVxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYz0xMDQ1PXZvaWQgbmZjX2xsY3Bfc29ja19mcmVlKHN0cnVjdCBuZmNfbGxjcF9zb2NrICpzb2NrKVxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYy0xMDU1LVxcbm5ldC9uZmMvbGxjcF9zb2NrLmM6MTA1NjpcXHRuZmNfbGxjcF9sb2NhbF9wdXQoc29jay1cXHUwMDNlbG9jYWwpO1xcbm5ldC9uZmMvbGxjcF9zb2NrLmMtMTA1Ny19XFxuLS1cXG5uZXQvbmZjL25ldGxpbmsuYz0xMDE3PXN0YXRpYyBpbnQgbmZjX2dlbmxfbGxjX2dldF9wYXJhbXMoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC9uZmMvbmV0bGluay5jLTEwNTAtcHV0X2xvY2FsOlxcbm5ldC9uZmMvbmV0bGluay5jOjEwNTE6XFx0bmZjX2xsY3BfbG9jYWxfcHV0KGxvY2FsKTtcXG5uZXQvbmZjL25ldGxpbmsuYy0xMDUyLVxcbi0tXFxubmV0L25mYy9uZXRsaW5rLmM9MTA2OD1zdGF0aWMgaW50IG5mY19nZW5sX2xsY19zZXRfcGFyYW1zKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxuLS1cXG5uZXQvbmZjL25ldGxpbmsuYy0xMTI2LXB1dF9sb2NhbDpcXG5uZXQvbmZjL25ldGxpbmsuYzoxMTI3OlxcdG5mY19sbGNwX2xvY2FsX3B1dChsb2NhbCk7XFxubmV0L25mYy9uZXRsaW5rLmMtMTEyOC1cXG4tLVxcbm5ldC9uZmMvbmV0bGluay5jPTExMzc9c3RhdGljIGludCBuZmNfZ2VubF9sbGNfc2RyZXEoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC9uZmMvbmV0bGluay5jLTEyMTgtcHV0X2xvY2FsOlxcbm5ldC9uZmMvbmV0bGluay5jOjEyMTk6XFx0bmZjX2xsY3BfbG9jYWxfcHV0KGxvY2FsKTtcXG5uZXQvbmZjL25ldGxpbmsuYy0xMjIwLVxcbi0tXFxubmV0L25mYy9uZmMuaD01ND1zdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKm5mY19sbGNwX2ZpbmRfbG9jYWwoc3RydWN0IG5mY19kZXYgKmRldik7XFxubmV0L25mYy9uZmMuaDo1NTppbnQgbmZjX2xsY3BfbG9jYWxfcHV0KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwpO1xcbm5ldC9uZmMvbmZjLmgtNTYtaW50IF9faW5pdCBuZmNfbGxjcF9pbml0KHZvaWQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwODo0OTowNi41NDkwMDgyMzZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkzMjEyNTk2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRm9jdXNpbmcgb24gTExDUCBTb2NrZXQgT3BlcmF0aW9ucyoqXG5cbk9rYXksIGBuZmNfbGxjcF9sb2NhbF9wdXRgIGxvb2tzIGxpa2UgYSBzb2xpZCBzdGFydGluZyBwb2ludCBmb3IgbXkgYW5hbHlzaXMuIEJ1dCB3YWl0LCB3aGF0IGFib3V0IGBsbGNwX3NvY2tfYWNjZXB0YCBhbmQgYGxsY3Bfc29ja19yZWxlYXNlYD8gVGhvc2UgZnVuY3Rpb25zIGFyZSBkZWZpbmVkIGFzIHN0YXRpYywgd2hpY2ggaXMgaW50ZXJlc3RpbmcsIGJ1dCB0aGV5IGFyZSBhbHNvIGFzc2lnbmVkIHRvIHRoZSBgc3RydWN0IHByb3RvX29wc2AuIFRoYXQgbWFrZXMgdGhlbSBpbXBvcnRhbnQuIEhtbSwgSSBzaG91bGQgY2hlY2sgd2hlcmUgdGhleSdyZSBkZWZpbmVkLiBMZXQncyBkaWcgaW50byBgbmV0L25mYy9sbGNwX3NvY2suY2AgYW5kIHNlZSB3aGF0IGBsbGNwX3NvY2tfYWNjZXB0YCBpcyBhbGwgYWJvdXQuIFRoaXMgc2VlbXMgbGlrZSBpdCB3aWxsIGJlIGEgZ29vZCBwbGFjZSB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzg5MCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA4OjQ5OjEwLjQ4MTEzNjc0OFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE0OTg3MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGxjcF9zb2NrX2FjY2VwdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL2xsY3Bfc29jay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZmMvbGxjcF9zb2NrLmM9NDE3PXN0cnVjdCBzb2NrICpuZmNfbGxjcF9hY2NlcHRfZGVxdWV1ZShzdHJ1Y3Qgc29jayAqcGFyZW50LFxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYy00NjUtXFxubmV0L25mYy9sbGNwX3NvY2suYzo0NjY6c3RhdGljIGludCBsbGNwX3NvY2tfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssXFxubmV0L25mYy9sbGNwX3NvY2suYy00NjctXFx0XFx0XFx0ICAgIHN0cnVjdCBwcm90b19hY2NlcHRfYXJnICphcmcpXFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jPTk1Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBsbGNwX3NvY2tfb3BzID0ge1xcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYy05NTgtXFx0LnNvY2tldHBhaXIgICAgID0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9uZmMvbGxjcF9zb2NrLmM6OTU5OlxcdC5hY2NlcHQgICAgICAgICA9IGxsY3Bfc29ja19hY2NlcHQsXFxubmV0L25mYy9sbGNwX3NvY2suYy05NjAtXFx0LmdldG5hbWUgICAgICAgID0gbGxjcF9zb2NrX2dldG5hbWUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA4OjQ5OjEwLjU0MjYzNzY2N1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTExODYwOTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkFuYWx5emluZyBMTENQIFNvY2tldCBBY2NlcHRhbmNlKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGBsbGNwX3NvY2tfYWNjZXB0YCBmdW5jdGlvbi4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgaXQncyBkZWNsYXJlZCBgc3RhdGljYC4gVGhhdCBpbW1lZGlhdGVseSBzdWdnZXN0cyBpdCdzIGludGVybmFsIHRvIHRoaXMgY29tcGlsYXRpb24gdW5pdCwgYW5kIG5vdCBtZWFudCB0byBiZSBjYWxsZWQgZnJvbSBhbnl3aGVyZSBlbHNlLiBHb29kIHRvIGtub3cuIEJ1dCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpcyBjb3JyZWN0LlxuXG5Ob3csIHdoYXQgYWJvdXQgYG5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlYD8gSG1tLCB0aGF0IG5hbWUgZmVlbHMgbGlrZSBpdCBzaG91bGQgYmUgcmVsYXRlZCwgYW5kIHBvc3NpYmx5IGV4cG9zZWQgZm9yIGV4dGVybmFsIHVzZS4gTGV0IG1lIHF1aWNrbHkgdmVyaWZ5IGlmIHRoaXMgb25lIGlzICphbHNvKiBzdGF0aWMgb3Igd2hldGhlciBpdCdzIGV4cG9ydGVkIGFuZCB2aXNpYmxlIHRvIG90aGVyIG1vZHVsZXMuIFRoYXQnbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIG92ZXJhbGwgZGVzaWduIGhlcmUuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgZnVuY3Rpb24gZGVjbGFyYXRpb24gdG8gYmUgc3VyZS4gVGhpcyBpcyBhbiBpbXBvcnRhbnQgZGlzdGluY3Rpb24gdG8gaWRlbnRpZnkgdGhlIGNvcnJlY3Qgc2NvcGUgb2YgdGhlIGZ1bmN0aW9uYWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NDI0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDk6MTYuNDU0NTAwNzU2WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MzgyMzI1NTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZjX2xsY3BfYWNjZXB0X2RlcXVldWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9sbGNwLmg9MjE4PXZvaWQgbmZjX2xsY3BfYWNjZXB0X2VucXVldWUoc3RydWN0IHNvY2sgKnBhcmVudCwgc3RydWN0IHNvY2sgKnNrKTtcXG5uZXQvbmZjL2xsY3AuaDoyMTk6c3RydWN0IHNvY2sgKm5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNvY2tldCAqbmV3c29jayk7XFxubmV0L25mYy9sbGNwLmgtMjIwLVxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYz00MDM9dm9pZCBuZmNfbGxjcF9hY2NlcHRfZW5xdWV1ZShzdHJ1Y3Qgc29jayAqcGFyZW50LCBzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jLTQxNi1cXG5uZXQvbmZjL2xsY3Bfc29jay5jOjQxNzpzdHJ1Y3Qgc29jayAqbmZjX2xsY3BfYWNjZXB0X2RlcXVldWUoc3RydWN0IHNvY2sgKnBhcmVudCxcXG5uZXQvbmZjL2xsY3Bfc29jay5jLTQxOC1cXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2spXFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jPTQ2Nj1zdGF0aWMgaW50IGxsY3Bfc29ja19hY2NlcHQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2tldCAqbmV3c29jayxcXG4tLVxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtNDg2LVxcdGFkZF93YWl0X3F1ZXVlX2V4Y2x1c2l2ZShza19zbGVlcChzayksIFxcdTAwMjZ3YWl0KTtcXG5uZXQvbmZjL2xsY3Bfc29jay5jOjQ4NzpcXHR3aGlsZSAoIShuZXdfc2sgPSBuZmNfbGxjcF9hY2NlcHRfZGVxdWV1ZShzaywgbmV3c29jaykpKSB7XFxubmV0L25mYy9sbGNwX3NvY2suYy00ODgtXFx0XFx0c2V0X2N1cnJlbnRfc3RhdGUoVEFTS19JTlRFUlJVUFRJQkxFKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDk6MTYuOTkyNzM2MzI5WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3OTY4MTc4NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIEkgYW5hbHl6ZSB0aGVzZSBmdW5jdGlvbnM6XG5cbioqRnVuY3Rpb24gU2NvcGUgSW5xdWlyeSoqXG5cbk9rYXksIHNvIGBuZmNfbGxjcF9hY2NlcHRfZGVxdWV1ZWAgaXNuJ3Qgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IGp1bXBzIG91dCBhdCBtZSDigJMgaXQgbWVhbnMgaXQncyBsaWtlbHkgYmVpbmcgY2FsbGVkIGZyb20gb3V0c2lkZSB0aGlzIHNwZWNpZmljIG1vZHVsZSBvciBmaWxlLiBUaGF0J3MgZ29vZCB0byBrbm93IGZvciB1bmRlcnN0YW5kaW5nIGRlcGVuZGVuY2llcyBhbmQgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4gTm93LCBJIG5lZWQgdG8gY2hlY2sgdGhlIG90aGVycyB0byBidWlsZCBhIGNsZWFyZXIgcGljdHVyZS5cblxuTGV0J3Mgc2Vl4oCmIGBuZmNfbGxjcF9zb2NrZXRfcmVsZWFzZWA/IEFoLCB0aGF0IG9uZSAqaXMqIHN0YXRpYy4gSW50ZXJlc3RpbmcuIEkgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoaXMgZGlmZmVyZW5jZSBiZWNhdXNlIGl0IGltbWVkaWF0ZWx5IGZsYWdzIHBvdGVudGlhbCBlbmNhcHN1bGF0aW9uIGlzc3Vlcy4gQSBzdGF0aWMgZnVuY3Rpb24gaXMsIGJ5IGRlZmluaXRpb24sIGludGVuZGVkIGZvciBpbnRlcm5hbCB1c2Ugb25seSB3aXRoaW4gaXRzIHRyYW5zbGF0aW9uIHVuaXQuIEl0cyBiZWhhdmlvciBzaG91bGRuJ3QgaW1wYWN0IGFueXRoaW5nIG91dHNpZGUgaXQuXG5cbkFscmlnaHQsIHdoYXQgZWxzZSBoYXMgYmVlbiBtb2RpZmllZD8gSSdtIG5vdyBnb2luZyB0byBxdWlja2x5IHNjYW4gZm9yIG90aGVyIG5vbi1zdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhpcyBMTENQIGltcGxlbWVudGF0aW9uLiBBbnkgZGV2aWF0aW9uIGZyb20gdGhlIGVzdGFibGlzaGVkIHBhdHRlcm4gd2FycmFudHMgY2xvc2VyIGluc3BlY3Rpb24uIGBuZmNfbGxjcF9zb2NrX2xpc3RfcG9wYCBhcHBlYXJzIHRvIGJlIHN0YXRpYywgY29uZmlybWluZyBpdHMgaW50ZW5kZWQgbG9jYWwgc2NvcGUuIFNhbWUgd2l0aCBgbG9jYWxfcmVsZWFzZV93b3JrYC4gT2theSwgdHdvIG1vcmUgc3RhdGljIGZ1bmN0aW9ucywgc29saWRpZnlpbmcgdGhlIGlkZWEgdGhhdCB0aGUgc3lzdGVtIGlzIHRyeWluZyB0byBrZWVwIHRoZSBpbm5lciB3b3JraW5ncyBvZiB0aGUgTExDUCBsYXllciBwcmV0dHkgY29udGFpbmVkLlxuXG5BaGEhIGBuZmNfbGxjcF9hY2NlcHRfdW5saW5rYCBpcyBhbHNvIG5vbi1zdGF0aWMsIGxpa2UgdGhlIGBuZmNfbGxjcF9hY2NlcHRfZGVxdWV1ZWAhIFRoaXMgc3VnZ2VzdHMgYSBicm9hZGVyIGV4dGVybmFsIGludGVyYWN0aW9uLiBUaGlzIHN1Z2dlc3RzIGEgcGF0dGVybiBlbWVyZ2luZywgbmFtZWx5IHRoYXQgdGhlcmUncyBhIHNwZWNpZmljIHJlYXNvbiBmb3Igc29tZSBmdW5jdGlvbnMgdG8gYmUgYWNjZXNzaWJsZSBvdXRzaWRlIG9mIHRoZWlyIGRlY2xhcmF0aW9uIGNvbnRleHQsIHByb2JhYmx5IHRvIG1hbmFnZSBleHRlcm5hbCBjb25uZWN0aW9ucy4gSXQncyB0aW1lIHRvIGRpZyBkZWVwZXIgb24gdGhlc2UgdHdvIGZ1bmN0aW9ucyBhbmQgc2VlIHdoYXQgdGhleSdyZSBhY3R1YWxseSAqZG9pbmcqLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhlc2UgcGFydGljdWxhciBmdW5jdGlvbnMgYXJlIGV4cG9zZWQgYW5kIHdoYXQgZGVwZW5kZW5jaWVzIHRoZXkgbWlnaHQgaW50cm9kdWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTA1NSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA4OjQ5OjIzLjc4OTU1NjQ5N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjE0NzQyODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZjX2xsY3BfYWNjZXB0X3VubGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL2xsY3AuaD0yMTY9dm9pZCBuZmNfbGxjcF9zb2NrX2ZyZWUoc3RydWN0IG5mY19sbGNwX3NvY2sgKnNvY2spO1xcbm5ldC9uZmMvbGxjcC5oOjIxNzp2b2lkIG5mY19sbGNwX2FjY2VwdF91bmxpbmsoc3RydWN0IHNvY2sgKnNrKTtcXG5uZXQvbmZjL2xsY3AuaC0yMTgtdm9pZCBuZmNfbGxjcF9hY2NlcHRfZW5xdWV1ZShzdHJ1Y3Qgc29jayAqcGFyZW50LCBzdHJ1Y3Qgc29jayAqc2spO1xcbi0tXFxubmV0L25mYy9sbGNwX2NvcmUuYz04Mz1zdGF0aWMgdm9pZCBuZmNfbGxjcF9zb2NrZXRfcmVsZWFzZShzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBib29sIGRldmljZSxcXG4tLVxcbm5ldC9uZmMvbGxjcF9jb3JlLmMtMTE0LVxcdFxcdFxcdFxcdGlmIChuZmNfbGxjcF9zb2NrKGFjY2VwdF9zayktXFx1MDAzZXBhcmVudCA9PSBzaykge1xcbm5ldC9uZmMvbGxjcF9jb3JlLmM6MTE1OlxcdFxcdFxcdFxcdFxcdG5mY19sbGNwX2FjY2VwdF91bmxpbmsoYWNjZXB0X3NrKTtcXG5uZXQvbmZjL2xsY3BfY29yZS5jLTExNi1cXHRcXHRcXHRcXHRcXHRuZmNfbGxjcF9zb2NrX3VubGluayhcXHUwMDI2bG9jYWwtXFx1MDAzZXNvY2tldHMsIGFjY2VwdF9zayk7XFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jPTMwND1zdGF0aWMgaW50IG5mY19sbGNwX2dldHNvY2tvcHQoc3RydWN0IHNvY2tldCAqc29jaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG4tLVxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtMzg4LVxcbm5ldC9uZmMvbGxjcF9zb2NrLmM6Mzg5OnZvaWQgbmZjX2xsY3BfYWNjZXB0X3VubGluayhzdHJ1Y3Qgc29jayAqc2spXFxubmV0L25mYy9sbGNwX3NvY2suYy0zOTAte1xcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYz00MTc9c3RydWN0IHNvY2sgKm5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlKHN0cnVjdCBzb2NrICpwYXJlbnQsXFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jLTQzNC1cXG5uZXQvbmZjL2xsY3Bfc29jay5jOjQzNTpcXHRcXHRcXHRuZmNfbGxjcF9hY2NlcHRfdW5saW5rKHNrKTtcXG5uZXQvbmZjL2xsY3Bfc29jay5jLTQzNi1cXHRcXHRcXHRpZiAobG9jYWwpXFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jPTYxNj1zdGF0aWMgaW50IGxsY3Bfc29ja19yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXFxuLS1cXG5uZXQvbmZjL2xsY3Bfc29jay5jLTY1Mi1cXHRcXHRcXHRcXHRuZmNfbGxjcF9zZW5kX2Rpc2Nvbm5lY3QobHNrKTtcXG5uZXQvbmZjL2xsY3Bfc29jay5jOjY1MzpcXHRcXHRcXHRcXHRuZmNfbGxjcF9hY2NlcHRfdW5saW5rKGFjY2VwdF9zayk7XFxubmV0L25mYy9sbGNwX3NvY2suYy02NTQtXFx0XFx0XFx0XFx0bmZjX2xsY3Bfc29ja191bmxpbmsoXFx1MDAyNmxvY2FsLVxcdTAwM2Vzb2NrZXRzLCBhY2NlcHRfc2spO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwODo0OToyMy44NTEwMzQ1MjZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ3NjIyOTgxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBORkMgTExDUCBDb2RlIGZvciBGdXp6aW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRoYXQgYG5mY19sbGNwX2FjY2VwdF91bmxpbmtgLCBgbmZjX2xsY3BfYWNjZXB0X2RlcXVldWVgLCBhbmQgYG5mY19sbGNwX2xvY2FsX3B1dGAgYXJlIHN0cm9uZyBjYW5kaWRhdGVzIGZvciBmdXp6aW5nIHRhcmdldHMgd2l0aGluIHRoaXMgTkZDIExMQ1AgaW1wbGVtZW50YXRpb24uIFRob3NlIGZ1bmN0aW9uIG5hbWVzIHNjcmVhbSBwb3RlbnRpYWwgZm9yIGlucHV0IGhhbmRsaW5nIHZ1bG5lcmFiaWxpdGllcy5cblxuTm93LCB0aGUgY29uZmlndXJhdGlvbiBhc3BlY3RzLiBJIHNlZSBgTkZDYCBhbmQgYE5GQ19TSU1gLiAqTkZDX1NJTSoganVtcHMgb3V0IGFzIHRoZSBzaW11bGF0b3IsIHdoaWNoIGlzIGlkZWFsIGZvciB0aGlzIGtpbmQgb2Ygd29yaywgYnV0IEkgbmVlZCB0byBlbnN1cmUgdGhlIGNvcmUgaXMgaW50YWN0LCBhbmQgdGhhdCBzZWVtcyB0byBiZSBlbmFibGVkIGJ5IGBORkNgLiBCdXQgaXMgYE5GQ19TSU1gIGFjdHVhbGx5IHBhcnQgb2YgdGhlIGNvcmUsIG9yIHNvbWV0aGluZyBlbHNlP1xuXG5BaGEsIGBORkNfU0lNYCBpcyBhICpkcml2ZXIqLCBidXQgdGhlIGNvZGUgSSdtIGxvb2tpbmcgYXQsIHNwZWNpZmljYWxseSBgbmV0L25mYy9sbGNwX2NvcmUuY2AsIGlzIGNvbXBpbGVkIHVuZGVyIHRoZSBgTkZDYCBmbGFnLiBUaGF0J3MgZ29vZC4gSXQgbWVhbnMgbXkgdGFyZ2V0IGNvZGUgaXMgcGFydCBvZiB0aGUgbWFpbiBzeXN0ZW0sIGFuZCBub3QgYSBzZXBhcmF0ZSBtb2R1bGUuXG5cblJpZ2h0LCBzbyB0byBtYWtlIHN1cmUgdGhlIGNvZGUgZ2V0cyBjb21waWxlZCwgYE5GQ2AgbmVlZHMgdG8gYmUgZW5hYmxlZC4gQnV0IHRvIHRlc3QgdGhlIExMQ1AgY29yZSwgSSBuZWVkIGFuIE5GQyBkZXZpY2UuICpCaW5nbyEqIGBORkNfU0lNYCBwcm92aWRlcyB0aGF0IHZpcnR1YWwgZGV2aWNlLiBJdCdzIGEgcGVyZmVjdCBzZXR1cCBmb3IgZnV6emluZyAtIEkgY2FuIHNpbXVsYXRlIGludGVyYWN0aW9ucyB3aXRob3V0IHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZS5cblxuSnVzdCB0byBiZSBjZXJ0YWluLCBJJ2xsIHF1aWNrbHkgY2hlY2sgaWYgYE5GQ19TSU1gIGhhcyBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgY291bGQgY29tcGxpY2F0ZSB0aGluZ3MuIEkgd2FudCB0byBrbm93IGlmIHRoZXJlIGFyZSBoaWRkZW4gZmFjdG9ycyBvciBsaW1pdGF0aW9ucyB0aGF0IG5lZWQgdG8gYmUgY29uc2lkZXJlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAxODAsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDk6MjkuMzI3MjY2NjlaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3Nzc3NjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORkNfU0lNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmZjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZmMvS2NvbmZpZz0yMT1jb25maWcgTkZDX01FSV9QSFlcXG4tLVxcbmRyaXZlcnMvbmZjL0tjb25maWctMzAtXFxuZHJpdmVycy9uZmMvS2NvbmZpZzozMTpjb25maWcgTkZDX1NJTVxcbmRyaXZlcnMvbmZjL0tjb25maWctMzItXFx0dHJpc3RhdGUgXFxcIk5GQyBoYXJkd2FyZSBzaW11bGF0b3IgZHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwODo0OToyOS4zNzUwNDc4MDlaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ5MzkzNDM1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIGRlcGVuZGVuY2llcyBvZiBgTkZDX1NJTWA6XG5cbioqRGVlcCBEaXZlIGludG8gTkZDX1NJTSBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBiZWZvcmUgSSBnZXQgdG9vIGZhciBkb3duIHRoZSByb2FkIHdpdGggdGhpcywgbGV0J3MgdGFrZSBhIGdvb2QsIGhhcmQgbG9vayBhdCB0aGUgZGVwZW5kZW5jaWVzIG9mIGBORkNfU0lNYC4gSSBuZWVkIHRvIGVuc3VyZSBhIHJvYnVzdCBhbmQgd2VsbC1kZWZpbmVkIGZvdW5kYXRpb24sIGFuZCB0aGF0IHN0YXJ0cyBoZXJlLiBJJ20gdGhpbmtpbmcgYmV5b25kIGp1c3QgdGhlIGltbWVkaWF0ZWx5IG9idmlvdXM7IHdoYXQgZXh0ZXJuYWwgbGlicmFyaWVzIGlzIGl0IHB1bGxpbmcgaW4/IFdoYXQgc3BlY2lmaWMgdmVyc2lvbnMgYXJlIHJlcXVpcmVkLCBhbmQgYXJlIHRob3NlIHZlcnNpb25zIHN0aWxsIGFjdGl2ZWx5IG1haW50YWluZWQ/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGNvbmZsaWN0cyBJIG5lZWQgdG8gYmUgYXdhcmUgb2Y/IEFyZSB0aGVyZSBhbnkgaW5kaXJlY3QgZGVwZW5kZW5jaWVzIOKAkyBkZXBlbmRlbmNpZXMgb2YgZGVwZW5kZW5jaWVzIOKAkyB0aGF0IG1pZ2h0IGludHJvZHVjZSB1bmV4cGVjdGVkIGNvbXBsZXhpdGllcyBkb3duIHRoZSBsaW5lP1xuXG5JJ20gYWxzbyBjb25zaWRlcmluZyB0aGUgYnVpbGQgZW52aXJvbm1lbnQgaXRzZWxmLiBXaGF0IGNvbXBpbGVyIHZlcnNpb25zIGFyZSBzdXBwb3J0ZWQ/IFdoYXQgb3BlcmF0aW5nIHN5c3RlbXMgYXJlIG9mZmljaWFsbHkgc3VwcG9ydGVkLCBhbmQgd2hhdCBhYm91dCBsZXNzIGNvbW1vbiBvbmVzPyBBcmUgdGhlcmUgYW55IHBsYXRmb3JtLXNwZWNpZmljIGRlcGVuZGVuY2llcyBJIG5lZWQgdG8gdGFrZSBpbnRvIGFjY291bnQ/IFRoaXMgaXMgY3J1Y2lhbCBmb3IgcG9ydGFiaWxpdHkuIEFuZCB3aGF0IGFib3V0IHRoZSB0ZXN0aW5nIGZyYW1ld29yaz8gQXJlIHRoZXJlIGFueSBwYXJ0aWN1bGFyIGxpYnJhcmllcyBvciB0b29scyBgTkZDX1NJTWAgcmVsaWVzIG9uIGZvciB1bml0IHRlc3RzLCBpbnRlZ3JhdGlvbiB0ZXN0cywgb3IgcGVyZm9ybWFuY2UgYmVuY2htYXJrcz8gSSdtIG5vdCBqdXN0IGNvbmNlcm5lZCB3aXRoIGdldHRpbmcgdGhlIGNvZGUgdG8gcnVuOyBJIHdhbnQgdG8gZW5zdXJlIGl0J3MgdGhvcm91Z2hseSB0ZXN0ZWQgYW5kIG1haW50YWluYWJsZS5cblxuRmluYWxseSwgSSdtIHRoaW5raW5nIGFib3V0IHRoZSBmdXR1cmUuIFdpbGwgYE5GQ19TSU1gIG5lZWQgdG8gaW50ZXJhY3Qgd2l0aCBhbnkgb3RoZXIgc3lzdGVtcyBvciBjb21wb25lbnRzIGRvd24gdGhlIGxpbmU/IEFyZSB0aGVyZSBhbnkgZW1lcmdpbmcgc3RhbmRhcmRzIG9yIHRlY2hub2xvZ2llcyB0aGF0IEkgbmVlZCB0byBrZWVwIGluIG1pbmQgd2hlbiBldmFsdWF0aW5nIHRoZXNlIGRlcGVuZGVuY2llcz8gQ2hvb3NpbmcgdGhlIHJpZ2h0IGRlcGVuZGVuY2llcyBub3cgY2FuIHNhdmUgYSBtYXNzaXZlIGhlYWRhY2hlIGxhdGVyLiBJdCdzIGFsbCBhYm91dCBwcm9hY3RpdmUgcmlzayBtaXRpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDgzNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA4OjQ5OjMzLjg2ODk4NDUzNVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTE1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25mYy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMwLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDMwOlxcdFxcbiAgMzE6XFx0Y29uZmlnIE5GQ19TSU1cXG4gIDMyOlxcdFxcdHRyaXN0YXRlIFxcXCJORkMgaGFyZHdhcmUgc2ltdWxhdG9yIGRyaXZlclxcXCJcXG4gIDMzOlxcdFxcdGRlcGVuZHMgb24gTkZDX0RJR0lUQUxcXG4gIDM0OlxcdFxcdGhlbHBcXG4gIDM1OlxcdFxcdCAgVGhpcyBkcml2ZXIgZGVjbGFyZXMgdHdvIHZpcnR1YWwgTkZDIGRldmljZXMgc3VwcG9ydGluZyBORkMtREVQXFxuICAzNjpcXHRcXHQgIHByb3RvY29sLiBBbiBMTENQIGNvbm5lY3Rpb24gY2FuIGJlIGVzdGFibGlzaGVkIGJldHdlZW4gdGhlbSBhbmRcXG4gIDM3OlxcdFxcdCAgYWxsIHBhY2tldHMgc2VudCBmcm9tIG9uZSBkZXZpY2UgaXMgc2VudCBiYWNrIHRvIHRoZSBvdGhlciwgYWN0aW5nIGFzXFxuICAzODpcXHRcXHQgIGxvb3BiYWNrIGRldmljZXMuXFxuICAzOTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDk6MzMuODY5MDM2ODQ1WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MTk1MDU0MzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIGEgZmlyc3QtcGVyc29uIHBlcnNwZWN0aXZlLCBhc3N1bWluZyBJJ20gd2VsbC12ZXJzZWQgaW4gdGhpcyBmaWVsZDpcblxuKipEZXBlbmRlbmN5IERlZXAgRGl2ZSoqXG5cbkFscmlnaHQsIEkgc2VlIGl0IGltbWVkaWF0ZWx5LiBgTkZDX1NJTWAgcmVsaWVzIG9uIGBORkNfRElHSVRBTGAuIFRoaXMgaXNuJ3QgdW5leHBlY3RlZCwgYnV0IGl0J3MgYSBjcml0aWNhbCBwb2ludCB0byBhY2tub3dsZWRnZSBiZWZvcmUgcHJvY2VlZGluZy4gTm93LCBiZWZvcmUgSSBnbyBhbnkgZnVydGhlciwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgYE5GQ19ESUdJVEFMYCdzIG93biBkZXBlbmRlbmNpZXMuIEl0J3MgdGltZSB0byB0cmFjZSBpdHMgZGVwZW5kZW5jeSB0cmVlLiBHb3R0YSBtYWtlIHN1cmUgSSBoYXZlIGEgc29saWQgdW5kZXJzdGFuZGluZyBvZiBldmVyeXRoaW5nIHRoYXQgZmVlZHMgaW50byBgTkZDX0RJR0lUQUxgIGJlY2F1c2UgdGhhdCBpbmV2aXRhYmx5IGltcGFjdHMgYE5GQ19TSU1gIGFuZCB0aGUgYnJvYWRlciBzeXN0ZW0ncyBiZWhhdmlvci4gVGltZSB0byBkaWcgaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMzQ1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwODo0OTozNy40ODg1NDQ2MTFaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1OTcyMzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORkNfRElHSVRBTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmZjL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25mYy9LY29uZmlnPTY9bWVudWNvbmZpZyBORkNcXG4tLVxcbm5ldC9uZmMvS2NvbmZpZy0xNi1cXG5uZXQvbmZjL0tjb25maWc6MTc6Y29uZmlnIE5GQ19ESUdJVEFMXFxubmV0L25mYy9LY29uZmlnLTE4LVxcdGRlcGVuZHMgb24gTkZDXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA4OjQ5OjM3LjU0NDUyMjY4WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0Mzk3NTIxMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGNvbmZpZ3VyYXRpb25zOlxuXG4qKkFuYWx5emluZyBORkMgQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGcm9tIHdoYXQgSSdtIHNlZWluZywgYE5GQ2AsIGBORkNfRElHSVRBTGAsIGFuZCBgTkZDX1NJTWAgYXJlIHRoZSBrZXkgY29uZmlndXJhdGlvbnMgaW4gcGxheSBoZXJlLiBCdXQgaG9sZCBvbiwgaXQgc2VlbXMgbGlrZSBgTkZDX1ZJUlRVQUxfTkNJYCAqbWlnaHQqIGJlIHJlbGV2YW50IHRvby4gSSBzaG91bGQgcmVhbGx5IGNoZWNrIHRoYXQgb25lIGFzIHdlbGwsIGp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIHNlZSBpZiBpdCBicmluZ3MgYW55dGhpbmcgbmV3IHRvIHRoZSB0YWJsZS4gV2UgbmVlZCB0byBjb25zaWRlciBhbGwgYW5nbGVzIHdoZW4gZGVhbGluZyB3aXRoIHRoZSBORkMgaW1wbGVtZW50YXRpb25zLiBJdCdzIGltcG9ydGFudCB0byBiZSBjb21wbGV0ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE2MzYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwODo0OTo0MC45ODQyNzcxMzhaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI2MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZmMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA1MSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA1MTpcXHRcXG4gIDUyOlxcdGNvbmZpZyBORkNfVklSVFVBTF9OQ0lcXG4gIDUzOlxcdFxcdHRyaXN0YXRlIFxcXCJOQ0kgZGV2aWNlIHNpbXVsYXRvciBkcml2ZXJcXFwiXFxuICA1NDpcXHRcXHRkZXBlbmRzIG9uIE5GQ19OQ0lcXG4gIDU1OlxcdFxcdGhlbHBcXG4gIDU2OlxcdFxcdCAgTkNJIHZpcnR1YWwgZGV2aWNlIHNpbXVsYXRlcyBhIE5DSSBkZXZpY2UgdG8gdGhlIHVzZXIuXFxuICA1NzpcXHRcXHQgIEl0IGNhbiBiZSB1c2VkIHRvIHZhbGlkYXRlIHRoZSBOQ0kgbW9kdWxlIGFuZCBhcHBsaWNhdGlvbnMuXFxuICA1ODpcXHRcXHQgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIGNvbW11bmljYXRpb24gYmV0d2VlbiB0aGUgdmlydHVhbCBOQ0kgZGV2aWNlIGFuZFxcbiAgNTk6XFx0XFx0ICBtb2R1bGUuXFxuICA2MDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDk6NDAuOTg0MzMxNDU4WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0MTMyMjI4NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgc3VtbWFyaXplZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6XG5cbioqRGVwZW5kZW5jeSBEZWVwIERpdmUqKlxuXG5BbHJpZ2h0LCBzbyBgTkZDX1ZJUlRVQUxfTkNJYCBpcyBjbGVhcmx5IGJ1aWx0IG9uIHRvcCBvZiBgTkZDX05DSWAuIFRoYXQncyBhIHByZXR0eSBzdGFuZGFyZCBsYXllcmluZyBhcHByb2FjaCwgYnV0IEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGUgZm91bmRhdGlvbiBpcyBzb2xpZCBiZWZvcmUgSSBnZXQgdG9vIGludmVzdGVkIGluIHRoZSB2aXJ0dWFsIGFzcGVjdHMuIFNvLCB0aGUgZmlyc3QgbG9naWNhbCBzdGVwIGlzIHRvIGRlbHZlIGludG8gdGhlIGRlcGVuZGVuY2llcyBvZiBgTkZDX05DSWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgaXQgcmVsaWVzIG9uLCB3aGF0IGl0cyBwb3RlbnRpYWwgd2VhayBwb2ludHMgYXJlLCBhbmQgaWYgYW55IHVwZGF0ZXMgb3IgY2hhbmdlcyB0aGVyZSBjb3VsZCByaXBwbGUgdXAgYW5kIGFmZmVjdCBgTkZDX1ZJUlRVQUxfTkNJYC4gR290IHRvIHRob3JvdWdobHkgdmV0IHRoZSBiYXNlIGJlZm9yZSBJIGJ1aWxkIG9uIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTk4NywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDk6NDQuMzk3NTU2NDc3WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTMzMjg3MDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GQ19OQ0lcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25mYy9uY2kvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmZjL25jaS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxubmV0L25mYy9uY2kvS2NvbmZpZzoyOmNvbmZpZyBORkNfTkNJXFxubmV0L25mYy9uY2kvS2NvbmZpZy0zLVxcdGRlcGVuZHMgb24gTkZDXFxuLS1cXG5uZXQvbmZjL25jaS9LY29uZmlnLTEyLVxcbm5ldC9uZmMvbmNpL0tjb25maWc6MTM6Y29uZmlnIE5GQ19OQ0lfU1BJXFxubmV0L25mYy9uY2kvS2NvbmZpZy0xNC1cXHRkZXBlbmRzIG9uIE5GQ19OQ0kgXFx1MDAyNlxcdTAwMjYgU1BJXFxuLS1cXG5uZXQvbmZjL25jaS9LY29uZmlnLTIzLVxcbm5ldC9uZmMvbmNpL0tjb25maWc6MjQ6Y29uZmlnIE5GQ19OQ0lfVUFSVFxcbm5ldC9uZmMvbmNpL0tjb25maWctMjUtXFx0ZGVwZW5kcyBvbiBORkNfTkNJIFxcdTAwMjZcXHUwMDI2IFRUWVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwODo0OTo0NS4xMTA4ODk1MThaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njk3Nzc3MjA5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFzc2Vzc21lbnQgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipORkMgVGVzdGluZyBhbmQgUG90ZW50aWFsIFZ1bG5lcmFiaWxpdGllcyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZywgYmV5b25kIHRoZSBjb3JlIGBORkNgIGNvbmZpZywgZW5hYmxpbmcgYE5GQ19WSVJUVUFMX05DSWAgYW5kIGBORkNfTkNJYCBzZWVtcyBsaWtlIGEgc29saWQgYXBwcm9hY2ggZm9yIGNvbXByZWhlbnNpdmUgTkZDIHRlc3RpbmcuIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhlIGNvcmUgY29uZmlndXJhdGlvbnMgb2YgYE5GQ2AsIGBORkNfRElHSVRBTGAsIGFuZCBgTkZDX1NJTWAuXG5cblRoaXMgcGF0Y2ggaXMgaW50ZXJlc3Rpbmcg4oCTIGl0J3MgYWRkcmVzc2luZyBhIHJhY2UgY29uZGl0aW9uIG9yIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBzaXR1YXRpb24gd2l0aGluIExMQ1Agc29ja2V0IHJlbGVhc2UuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgdGhpcyBhcyBzb21ldGhpbmcgdGhhdCB3YXJyYW50cyBmdXp6aW5nLiBJdCdzIGEgY2xhc3NpYyBhcmVhIGZvciBtZW1vcnkgY29ycnVwdGlvbiB2dWxuZXJhYmlsaXRpZXMsIGFuZCBMTENQIGJlaW5nIGEgbG93ZXItbGV2ZWwgcHJvdG9jb2wgbWFrZXMgaXQgYW4gZXZlbiBiZXR0ZXIgdGFyZ2V0LlxuXG5NeSBmb2N1cyBzaG91bGQgYmUgb24gdGhlc2Uga2V5IHN5bWJvbHM6IGBuZmNfbGxjcF9sb2NhbF9wdXRgLCBgbmZjX2xsY3BfYWNjZXB0X2RlcXVldWVgLCBhbmQgYG5mY19sbGNwX2FjY2VwdF91bmxpbmtgLiBUaGV5IGFyZSBsaWtlbHkgYXQgdGhlIGhlYXJ0IG9mIHRoZSBpc3N1ZSBhbmQgdW5kZXJzdGFuZGluZyB0aGVpciBiZWhhdmlvciB3aWxsIGJlIGNyaXRpY2FsIGZvciBlZmZlY3RpdmUgZnV6emluZy5cblxuQmVmb3JlIEkgY29tbWl0IHRvIHRoaXMsIEknbGwgcXVpY2tseSBzY2FuIHRoZSBleGlzdGluZyBjb25maWdzIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJ3Qgb3Zlcmxvb2tlZCBhbnkgb3RoZXIgcmVsZXZhbnQgb3B0aW9ucyB0aGF0IG1pZ2h0IGltcGFjdCB0aGUgdGVzdCBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI0MTcsIk91dHB1dFRva2VucyI6MTkyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDA4OjQ5OjUyLjA4ODY2NTE3NFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjczMzA3NDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19ESUdJVEFMXCIsXG4gICAgXCJORkNfU0lNXCIsXG4gICAgXCJORkNfTkNJXCIsXG4gICAgXCJORkNfVklSVFVBTF9OQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZmNfbGxjcF9sb2NhbF9wdXRcIixcbiAgICBcIm5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlXCIsXG4gICAgXCJuZmNfbGxjcF9hY2NlcHRfdW5saW5rXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbG9naWMgb2YgTkZDIExMQ1Agc29ja2V0cywgZml4aW5nIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIG9yIHVzZS1hZnRlci1mcmVlIGR1cmluZyBzb2NrZXQgcmVsZWFzZSBhbmQgYWNjZXB0IHF1ZXVlIGhhbmRsaW5nLiBJdCBpbnRyb2R1Y2VzIGEgd29ya3F1ZXVlIGZvciBsb2NhbCByZWxlYXNlIGFuZCBtb2RpZmllcyBzb2NrZXQgbG9ja2luZy4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHN0YW5kYXJkIHNvY2tldCBBUElzIHdoZW4gTkZDIGlzIGVuYWJsZWQuIFZpcnR1YWwgTkZDIGRldmljZXMgKE5GQ19TSU0sIE5GQ19WSVJUVUFMX05DSSkgY2FuIGJlIHVzZWQgdG8gdHJpZ2dlciB0aGlzIGNvZGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORkNcIixcbiAgICBcIk5GQ19ESUdJVEFMXCIsXG4gICAgXCJORkNfU0lNXCIsXG4gICAgXCJORkNfTkNJXCIsXG4gICAgXCJORkNfVklSVFVBTF9OQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZmNfbGxjcF9sb2NhbF9wdXRcIixcbiAgICBcIm5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlXCIsXG4gICAgXCJuZmNfbGxjcF9hY2NlcHRfdW5saW5rXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNvcmUgbG9naWMgb2YgTkZDIExMQ1Agc29ja2V0cywgZml4aW5nIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIG9yIHVzZS1hZnRlci1mcmVlIGR1cmluZyBzb2NrZXQgcmVsZWFzZSBhbmQgYWNjZXB0IHF1ZXVlIGhhbmRsaW5nLiBJdCBpbnRyb2R1Y2VzIGEgd29ya3F1ZXVlIGZvciBsb2NhbCByZWxlYXNlIGFuZCBtb2RpZmllcyBzb2NrZXQgbG9ja2luZy4gVGhpcyBpcyByZWFjaGFibGUgdmlhIHN0YW5kYXJkIHNvY2tldCBBUElzIHdoZW4gTkZDIGlzIGVuYWJsZWQuIFZpcnR1YWwgTkZDIGRldmljZXMgKE5GQ19TSU0sIE5GQ19WSVJUVUFMX05DSSkgY2FuIGJlIHVzZWQgdG8gdHJpZ2dlciB0aGlzIGNvZGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDk6NTIuMTYxOTc5NjMzWiIsIlNlcSI6MzEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5ODAzMzExMDUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NDk6NTIuMTYyNDM4MDczWiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjk4MDI4NDg5ODEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHJlc3NlcyBsb2NraW5nLCByZWZlcmVuY2UgY291bnRpbmcsIGFuZCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgaW4gdGhlIE5GQyBMTENQIHNvY2tldCBsYXllci4gSXQgaW50cm9kdWNlcyBhIHdvcmtxdWV1ZSBmb3IgZGVmZXJyZWQgY2xlYW51cCwgbW9kaWZpZXMgc29ja2V0IGxpc3QgcG9wcGluZyB0byBhdm9pZCBkZWFkbG9ja3Mgb3IgVUFGLCBhbmQgZml4ZXMgYWNjZXB0IHF1ZXVlIGhhbmRsaW5nLiBUaGVyZSBhcmUgbm8gY2hhbmdlcyB0byBkYXRhIHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMsIGFuZCBubyBtb2RpZmljYXRpb25zIHRvIGRhdGEgbGVuZ3RocyBvciBib3VuZHMgY2hlY2tzIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoZXNlIGNoYW5nZXMgKHN1Y2ggYXMgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBvciBkZWFkbG9ja3MpIHdvdWxkIGJlIGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgTE9DS0RFUC4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHJlcXVpcmVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDAxOTIwMzIzYjk1NDBmY2I2OGViOGUxZmFlZDAyNDQ3MDgyNjE2ZWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAyNiAwODo0ODozMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9uZmMvbGxjcC5oIGIvbmV0L25mYy9sbGNwLmhcbmluZGV4IGQ4MzQ1ZWQ1N2M5NTQuLjIzYWU3YTAxMTJkMzcgMTAwNjQ0XG4tLS0gYS9uZXQvbmZjL2xsY3AuaFxuKysrIGIvbmV0L25mYy9sbGNwLmhcbkBAIC05MSw2ICs5MSw3IEBAIHN0cnVjdCBuZmNfbGxjcF9sb2NhbCB7XG4gXHRzdHJ1Y3QgaGxpc3RfaGVhZCBwZW5kaW5nX3NkcmVxcztcbiBcdHN0cnVjdCB0aW1lcl9saXN0IHNkcmVxX3RpbWVyO1xuIFx0c3RydWN0IHdvcmtfc3RydWN0IHNkcmVxX3RpbWVvdXRfd29yaztcbitcdHN0cnVjdCB3b3JrX3N0cnVjdCByZWxlYXNlX3dvcms7XG4gXHR1OCBzZHJlcV9uZXh0X3RpZDtcbiBcbiBcdC8qIHNvY2tldHMgYXJyYXkgKi9cbmRpZmYgLS1naXQgYS9uZXQvbmZjL2xsY3BfY29yZS5jIGIvbmV0L25mYy9sbGNwX2NvcmUuY1xuaW5kZXggYmQ2MzYxZTJlZmE0Zi4uMmMyZGJjMTI1MzFlYyAxMDA2NDRcbi0tLSBhL25ldC9uZmMvbGxjcF9jb3JlLmNcbisrKyBiL25ldC9uZmMvbGxjcF9jb3JlLmNcbkBAIC0yMCw2ICsyMCw4IEBAIHN0YXRpYyBMSVNUX0hFQUQobGxjcF9kZXZpY2VzKTtcbiAvKiBQcm90ZWN0cyBsbGNwX2RldmljZXMgbGlzdCAqL1xuIHN0YXRpYyBERUZJTkVfU1BJTkxPQ0sobGxjcF9kZXZpY2VzX2xvY2spO1xuIFxuK3N0YXRpYyBzdHJ1Y3Qgd29ya3F1ZXVlX3N0cnVjdCAqbGxjcF93cTtcbitcbiBzdGF0aWMgdm9pZCBuZmNfbGxjcF9yeF9za2Ioc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG4gXG4gdm9pZCBuZmNfbGxjcF9zb2NrX2xpbmsoc3RydWN0IGxsY3Bfc29ja19saXN0ICpsLCBzdHJ1Y3Qgc29jayAqc2spXG5AQCAtNjMsMjEgKzY1LDMzIEBAIHN0YXRpYyB2b2lkIG5mY19sbGNwX3NvY2tldF9wdXJnZShzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqc29jaylcbiBcdH1cbiB9XG4gXG4rc3RhdGljIHN0cnVjdCBzb2NrICpuZmNfbGxjcF9zb2NrX2xpc3RfcG9wKHN0cnVjdCBsbGNwX3NvY2tfbGlzdCAqbClcbit7XG4rXHRzdHJ1Y3Qgc29jayAqc2s7XG4rXG4rXHR3cml0ZV9sb2NrKFx1MDAyNmwtXHUwMDNlbG9jayk7XG4rXHRzayA9IHNrX2hlYWQoXHUwMDI2bC1cdTAwM2VoZWFkKTtcbitcdGlmIChzaykge1xuK1x0XHRzb2NrX2hvbGQoc2spO1xuK1x0XHRza19kZWxfbm9kZV9pbml0KHNrKTtcbitcdH1cbitcdHdyaXRlX3VubG9jayhcdTAwMjZsLVx1MDAzZWxvY2spO1xuK1xuK1x0cmV0dXJuIHNrO1xuK31cbitcbiBzdGF0aWMgdm9pZCBuZmNfbGxjcF9zb2NrZXRfcmVsZWFzZShzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsLCBib29sIGRldmljZSxcbiBcdFx0XHRcdCAgICBpbnQgZXJyKVxuIHtcbiBcdHN0cnVjdCBzb2NrICpzaztcbi1cdHN0cnVjdCBobGlzdF9ub2RlICp0bXA7XG4gXHRzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqbGxjcF9zb2NrO1xuIFxuIFx0c2tiX3F1ZXVlX3B1cmdlKFx1MDAyNmxvY2FsLVx1MDAzZXR4X3F1ZXVlKTtcbiBcbi1cdHdyaXRlX2xvY2soXHUwMDI2bG9jYWwtXHUwMDNlc29ja2V0cy5sb2NrKTtcbi1cbi1cdHNrX2Zvcl9lYWNoX3NhZmUoc2ssIHRtcCwgXHUwMDI2bG9jYWwtXHUwMDNlc29ja2V0cy5oZWFkKSB7XG4rXHR3aGlsZSAoKHNrID0gbmZjX2xsY3Bfc29ja19saXN0X3BvcChcdTAwMjZsb2NhbC1cdTAwM2Vzb2NrZXRzKSkpIHtcbiBcdFx0bGxjcF9zb2NrID0gbmZjX2xsY3Bfc29jayhzayk7XG4gXG4tXHRcdGJoX2xvY2tfc29jayhzayk7XG4rXHRcdGxvY2tfc29jayhzayk7XG4gXG4gXHRcdG5mY19sbGNwX3NvY2tldF9wdXJnZShsbGNwX3NvY2spO1xuIFxuQEAgLTkxLDE3ICsxMDUsMjcgQEAgc3RhdGljIHZvaWQgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2Uoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCwgYm9vbCBkZXZpY2UsXG4gXHRcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGxzaywgbixcbiBcdFx0XHRcdFx0XHQgXHUwMDI2bGxjcF9zb2NrLVx1MDAzZWFjY2VwdF9xdWV1ZSxcbiBcdFx0XHRcdFx0XHQgYWNjZXB0X3F1ZXVlKSB7XG4tXHRcdFx0XHRhY2NlcHRfc2sgPSBcdTAwMjZsc2stXHUwMDNlc2s7XG4tXHRcdFx0XHRiaF9sb2NrX3NvY2soYWNjZXB0X3NrKTtcbi1cbi1cdFx0XHRcdG5mY19sbGNwX2FjY2VwdF91bmxpbmsoYWNjZXB0X3NrKTtcbitcdFx0XHRcdGJvb2wgcHV0X2NyZWF0aW9uID0gZmFsc2U7XG4gXG4tXHRcdFx0XHRpZiAoZXJyKVxuLVx0XHRcdFx0XHRhY2NlcHRfc2stXHUwMDNlc2tfZXJyID0gZXJyO1xuLVx0XHRcdFx0YWNjZXB0X3NrLVx1MDAzZXNrX3N0YXRlID0gTExDUF9DTE9TRUQ7XG4tXHRcdFx0XHRhY2NlcHRfc2stXHUwMDNlc2tfc3RhdGVfY2hhbmdlKHNrKTtcbitcdFx0XHRcdGFjY2VwdF9zayA9IFx1MDAyNmxzay1cdTAwM2VzaztcbitcdFx0XHRcdGxvY2tfc29ja19uZXN0ZWQoYWNjZXB0X3NrLFxuK1x0XHRcdFx0XHRcdCBTSU5HTEVfREVQVEhfTkVTVElORyk7XG4rXG4rXHRcdFx0XHRpZiAobmZjX2xsY3Bfc29jayhhY2NlcHRfc2spLVx1MDAzZXBhcmVudCA9PSBzaykge1xuK1x0XHRcdFx0XHRuZmNfbGxjcF9hY2NlcHRfdW5saW5rKGFjY2VwdF9zayk7XG4rXHRcdFx0XHRcdG5mY19sbGNwX3NvY2tfdW5saW5rKFx1MDAyNmxvY2FsLVx1MDAzZXNvY2tldHMsIGFjY2VwdF9zayk7XG4rXG4rXHRcdFx0XHRcdGlmIChlcnIpXG4rXHRcdFx0XHRcdFx0YWNjZXB0X3NrLVx1MDAzZXNrX2VyciA9IGVycjtcbitcdFx0XHRcdFx0YWNjZXB0X3NrLVx1MDAzZXNrX3N0YXRlID0gTExDUF9DTE9TRUQ7XG4rXHRcdFx0XHRcdGFjY2VwdF9zay1cdTAwM2Vza19zdGF0ZV9jaGFuZ2UoYWNjZXB0X3NrKTtcbitcdFx0XHRcdFx0c29ja19vcnBoYW4oYWNjZXB0X3NrKTtcbitcdFx0XHRcdFx0cHV0X2NyZWF0aW9uID0gdHJ1ZTtcbitcdFx0XHRcdH1cbiBcbi1cdFx0XHRcdGJoX3VubG9ja19zb2NrKGFjY2VwdF9zayk7XG4rXHRcdFx0XHRyZWxlYXNlX3NvY2soYWNjZXB0X3NrKTtcbitcdFx0XHRcdGlmIChwdXRfY3JlYXRpb24pXG4rXHRcdFx0XHRcdHNvY2tfcHV0KGFjY2VwdF9zayk7IC8qIGNyZWF0aW9uIHJlZiAqL1xuIFx0XHRcdH1cbiBcdFx0fVxuIFxuQEAgLTExMCwyMyArMTM0LDE4IEBAIHN0YXRpYyB2b2lkIG5mY19sbGNwX3NvY2tldF9yZWxlYXNlKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIGJvb2wgZGV2aWNlLFxuIFx0XHRzay1cdTAwM2Vza19zdGF0ZSA9IExMQ1BfQ0xPU0VEO1xuIFx0XHRzay1cdTAwM2Vza19zdGF0ZV9jaGFuZ2Uoc2spO1xuIFxuLVx0XHRiaF91bmxvY2tfc29jayhzayk7XG4tXG4tXHRcdHNrX2RlbF9ub2RlX2luaXQoc2spO1xuK1x0XHRyZWxlYXNlX3NvY2soc2spO1xuK1x0XHRzb2NrX3B1dChzayk7XG4gXHR9XG4gXG4tXHR3cml0ZV91bmxvY2soXHUwMDI2bG9jYWwtXHUwMDNlc29ja2V0cy5sb2NrKTtcbi1cbiBcdC8qIElmIHdlIHN0aWxsIGhhdmUgYSBkZXZpY2UsIHdlIGtlZXAgdGhlIFJBVyBzb2NrZXRzIGFsaXZlICovXG4gXHRpZiAoZGV2aWNlID09IHRydWUpXG4gXHRcdHJldHVybjtcbiBcbi1cdHdyaXRlX2xvY2soXHUwMDI2bG9jYWwtXHUwMDNlcmF3X3NvY2tldHMubG9jayk7XG4tXG4tXHRza19mb3JfZWFjaF9zYWZlKHNrLCB0bXAsIFx1MDAyNmxvY2FsLVx1MDAzZXJhd19zb2NrZXRzLmhlYWQpIHtcbitcdHdoaWxlICgoc2sgPSBuZmNfbGxjcF9zb2NrX2xpc3RfcG9wKFx1MDAyNmxvY2FsLVx1MDAzZXJhd19zb2NrZXRzKSkpIHtcbiBcdFx0bGxjcF9zb2NrID0gbmZjX2xsY3Bfc29jayhzayk7XG4gXG4tXHRcdGJoX2xvY2tfc29jayhzayk7XG4rXHRcdGxvY2tfc29jayhzayk7XG4gXG4gXHRcdG5mY19sbGNwX3NvY2tldF9wdXJnZShsbGNwX3NvY2spO1xuIFxuQEAgLTEzNSwyNiArMTU0LDIwIEBAIHN0YXRpYyB2b2lkIG5mY19sbGNwX3NvY2tldF9yZWxlYXNlKHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwsIGJvb2wgZGV2aWNlLFxuIFx0XHRzay1cdTAwM2Vza19zdGF0ZSA9IExMQ1BfQ0xPU0VEO1xuIFx0XHRzay1cdTAwM2Vza19zdGF0ZV9jaGFuZ2Uoc2spO1xuIFxuLVx0XHRiaF91bmxvY2tfc29jayhzayk7XG4tXG4tXHRcdHNrX2RlbF9ub2RlX2luaXQoc2spO1xuK1x0XHRyZWxlYXNlX3NvY2soc2spO1xuK1x0XHRzb2NrX3B1dChzayk7XG4gXHR9XG4tXG4tXHR3cml0ZV91bmxvY2soXHUwMDI2bG9jYWwtXHUwMDNlcmF3X3NvY2tldHMubG9jayk7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKm5mY19sbGNwX2xvY2FsX2dldChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsKVxuIHtcbi1cdC8qIFNpbmNlIHVzaW5nIG5mY19sbGNwX2xvY2FsIG1heSByZXN1bHQgaW4gdXNhZ2Ugb2YgbmZjX2Rldiwgd2hlbmV2ZXJcbi1cdCAqIHdlIGhvbGQgYSByZWZlcmVuY2UgdG8gbG9jYWwsIHdlIGFsc28gbmVlZCB0byBob2xkIGEgcmVmZXJlbmNlIHRvXG4tXHQgKiB0aGUgZGV2aWNlIHRvIGF2b2lkIFVBRi5cbi1cdCAqL1xuLVx0aWYgKCFuZmNfZ2V0X2RldmljZShsb2NhbC1cdTAwM2VkZXYtXHUwMDNlaWR4KSlcbitcdGlmICghbG9jYWwpXG4gXHRcdHJldHVybiBOVUxMO1xuIFxuLVx0a3JlZl9nZXQoXHUwMDI2bG9jYWwtXHUwMDNlcmVmKTtcbitcdGlmIChrcmVmX2dldF91bmxlc3NfemVybyhcdTAwMjZsb2NhbC1cdTAwM2VyZWYpKVxuK1x0XHRyZXR1cm4gbG9jYWw7XG4gXG4tXHRyZXR1cm4gbG9jYWw7XG4rXHRyZXR1cm4gTlVMTDtcbiB9XG4gXG4gc3RhdGljIHZvaWQgbG9jYWxfY2xlYW51cChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsKVxuQEAgLTE3MiwzMCArMTg1LDM0IEBAIHN0YXRpYyB2b2lkIGxvY2FsX2NsZWFudXAoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbClcbiBcdG5mY19sbGNwX2ZyZWVfc2RwX3Rsdl9saXN0KFx1MDAyNmxvY2FsLVx1MDAzZXBlbmRpbmdfc2RyZXFzKTtcbiB9XG4gXG4tc3RhdGljIHZvaWQgbG9jYWxfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqcmVmKVxuK3N0YXRpYyB2b2lkIGxvY2FsX3JlbGVhc2Vfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4ge1xuIFx0c3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbDtcbitcdHN0cnVjdCBuZmNfZGV2ICpkZXY7XG4gXG4tXHRsb2NhbCA9IGNvbnRhaW5lcl9vZihyZWYsIHN0cnVjdCBuZmNfbGxjcF9sb2NhbCwgcmVmKTtcbitcdGxvY2FsID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZmNfbGxjcF9sb2NhbCwgcmVsZWFzZV93b3JrKTtcbitcdGRldiA9IGxvY2FsLVx1MDAzZWRldjtcbiBcbiBcdGxvY2FsX2NsZWFudXAobG9jYWwpO1xuIFx0a2ZyZWUobG9jYWwpO1xuK1x0bmZjX3B1dF9kZXZpY2UoZGV2KTtcbiB9XG4gXG4taW50IG5mY19sbGNwX2xvY2FsX3B1dChzdHJ1Y3QgbmZjX2xsY3BfbG9jYWwgKmxvY2FsKVxuK3N0YXRpYyB2b2lkIGxvY2FsX3JlbGVhc2Uoc3RydWN0IGtyZWYgKnJlZilcbiB7XG4tXHRzdHJ1Y3QgbmZjX2RldiAqZGV2O1xuLVx0aW50IHJldDtcbitcdHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWw7XG4gXG4tXHRpZiAobG9jYWwgPT0gTlVMTClcbi1cdFx0cmV0dXJuIDA7XG4rXHRsb2NhbCA9IGNvbnRhaW5lcl9vZihyZWYsIHN0cnVjdCBuZmNfbGxjcF9sb2NhbCwgcmVmKTtcbiBcbi1cdGRldiA9IGxvY2FsLVx1MDAzZWRldjtcbitcdHF1ZXVlX3dvcmsobGxjcF93cSwgXHUwMDI2bG9jYWwtXHUwMDNlcmVsZWFzZV93b3JrKTtcbit9XG4gXG4tXHRyZXQgPSBrcmVmX3B1dChcdTAwMjZsb2NhbC1cdTAwM2VyZWYsIGxvY2FsX3JlbGVhc2UpO1xuLVx0bmZjX3B1dF9kZXZpY2UoZGV2KTtcbitpbnQgbmZjX2xsY3BfbG9jYWxfcHV0KHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWwpXG4re1xuK1x0aWYgKCFsb2NhbClcbitcdFx0cmV0dXJuIDA7XG4gXG4tXHRyZXR1cm4gcmV0O1xuK1x0cmV0dXJuIGtyZWZfcHV0KFx1MDAyNmxvY2FsLVx1MDAzZXJlZiwgbG9jYWxfcmVsZWFzZSk7XG4gfVxuIFxuIHN0YXRpYyBzdHJ1Y3QgbmZjX2xsY3Bfc29jayAqbmZjX2xsY3Bfc29ja19nZXQoc3RydWN0IG5mY19sbGNwX2xvY2FsICpsb2NhbCxcbkBAIC0xNzA1LDYgKzE3MjIsNyBAQCBpbnQgbmZjX2xsY3BfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBuZmNfZGV2ICpuZGV2KVxuIFx0SU5JVF9XT1JLKFx1MDAyNmxvY2FsLVx1MDAzZXJ4X3dvcmssIG5mY19sbGNwX3J4X3dvcmspO1xuIFxuIFx0SU5JVF9XT1JLKFx1MDAyNmxvY2FsLVx1MDAzZXRpbWVvdXRfd29yaywgbmZjX2xsY3BfdGltZW91dF93b3JrKTtcbitcdElOSVRfV09SSyhcdTAwMjZsb2NhbC1cdTAwM2VyZWxlYXNlX3dvcmssIGxvY2FsX3JlbGVhc2Vfd29yayk7XG4gXG4gXHRyd2xvY2tfaW5pdChcdTAwMjZsb2NhbC1cdTAwM2Vzb2NrZXRzLmxvY2spO1xuIFx0cndsb2NrX2luaXQoXHUwMDI2bG9jYWwtXHUwMDNlY29ubmVjdGluZ19zb2NrZXRzLmxvY2spO1xuQEAgLTE3NDgsMTAgKzE3NjYsMjMgQEAgdm9pZCBuZmNfbGxjcF91bnJlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbmZjX2RldiAqZGV2KVxuIFxuIGludCBfX2luaXQgbmZjX2xsY3BfaW5pdCh2b2lkKVxuIHtcbi1cdHJldHVybiBuZmNfbGxjcF9zb2NrX2luaXQoKTtcbitcdGludCByZXQ7XG4rXG4rXHRsbGNwX3dxID0gYWxsb2Nfd29ya3F1ZXVlKFwibmZjX2xsY3Bfd3FcIiwgMCwgMCk7XG4rXHRpZiAoIWxsY3Bfd3EpXG4rXHRcdHJldHVybiAtRU5PTUVNO1xuK1xuK1x0cmV0ID0gbmZjX2xsY3Bfc29ja19pbml0KCk7XG4rXHRpZiAocmV0KSB7XG4rXHRcdGRlc3Ryb3lfd29ya3F1ZXVlKGxsY3Bfd3EpO1xuK1x0XHRyZXR1cm4gcmV0O1xuK1x0fVxuK1xuK1x0cmV0dXJuIDA7XG4gfVxuIFxuIHZvaWQgbmZjX2xsY3BfZXhpdCh2b2lkKVxuIHtcbiBcdG5mY19sbGNwX3NvY2tfZXhpdCgpO1xuK1x0ZGVzdHJveV93b3JrcXVldWUobGxjcF93cSk7XG4gfVxuZGlmZiAtLWdpdCBhL25ldC9uZmMvbGxjcF9zb2NrLmMgYi9uZXQvbmZjL2xsY3Bfc29jay5jXG5pbmRleCA1NTU4ZDhhNGQ0OGIzLi5jZTY4NzVlYjU4ZmJjIDEwMDY0NFxuLS0tIGEvbmV0L25mYy9sbGNwX3NvY2suY1xuKysrIGIvbmV0L25mYy9sbGNwX3NvY2suY1xuQEAgLTM5MiwxMSArMzkyLDEyIEBAIHZvaWQgbmZjX2xsY3BfYWNjZXB0X3VubGluayhzdHJ1Y3Qgc29jayAqc2spXG4gXG4gXHRwcl9kZWJ1ZyhcInN0YXRlICVkXFxuXCIsIHNrLVx1MDAzZXNrX3N0YXRlKTtcbiBcbi1cdGxpc3RfZGVsX2luaXQoXHUwMDI2bGxjcF9zb2NrLVx1MDAzZWFjY2VwdF9xdWV1ZSk7XG4tXHRza19hY2NlcHRxX3JlbW92ZWQobGxjcF9zb2NrLVx1MDAzZXBhcmVudCk7XG4tXHRsbGNwX3NvY2stXHUwMDNlcGFyZW50ID0gTlVMTDtcbi1cbi1cdHNvY2tfcHV0KHNrKTtcbitcdGlmIChsbGNwX3NvY2stXHUwMDNlcGFyZW50KSB7XG4rXHRcdGxpc3RfZGVsX2luaXQoXHUwMDI2bGxjcF9zb2NrLVx1MDAzZWFjY2VwdF9xdWV1ZSk7XG4rXHRcdHNrX2FjY2VwdHFfcmVtb3ZlZChsbGNwX3NvY2stXHUwMDNlcGFyZW50KTtcbitcdFx0bGxjcF9zb2NrLVx1MDAzZXBhcmVudCA9IE5VTEw7XG4rXHRcdHNvY2tfcHV0KHNrKTtcbitcdH1cbiB9XG4gXG4gdm9pZCBuZmNfbGxjcF9hY2NlcHRfZW5xdWV1ZShzdHJ1Y3Qgc29jayAqcGFyZW50LCBzdHJ1Y3Qgc29jayAqc2spXG5AQCAtNDIzLDEyICs0MjQsMjAgQEAgc3RydWN0IHNvY2sgKm5mY19sbGNwX2FjY2VwdF9kZXF1ZXVlKHN0cnVjdCBzb2NrICpwYXJlbnQsXG4gXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobHNrLCBuLCBcdTAwMjZsbGNwX3BhcmVudC1cdTAwM2VhY2NlcHRfcXVldWUsXG4gXHRcdFx0XHQgYWNjZXB0X3F1ZXVlKSB7XG4rXHRcdHN0cnVjdCBuZmNfbGxjcF9sb2NhbCAqbG9jYWw7XG4rXG4gXHRcdHNrID0gXHUwMDI2bHNrLVx1MDAzZXNrO1xuLVx0XHRsb2NrX3NvY2soc2spO1xuK1x0XHRsb2NrX3NvY2tfbmVzdGVkKHNrLCBTSU5HTEVfREVQVEhfTkVTVElORyk7XG4gXG4gXHRcdGlmIChzay1cdTAwM2Vza19zdGF0ZSA9PSBMTENQX0NMT1NFRCkge1xuLVx0XHRcdHJlbGVhc2Vfc29jayhzayk7XG4rXHRcdFx0bG9jYWwgPSBuZmNfbGxjcF9zb2NrKHNrKS1cdTAwM2Vsb2NhbDtcbitcbiBcdFx0XHRuZmNfbGxjcF9hY2NlcHRfdW5saW5rKHNrKTtcbitcdFx0XHRpZiAobG9jYWwpXG4rXHRcdFx0XHRuZmNfbGxjcF9zb2NrX3VubGluayhcdTAwMjZsb2NhbC1cdTAwM2Vzb2NrZXRzLCBzayk7XG4rXHRcdFx0c29ja19vcnBoYW4oc2spO1xuK1x0XHRcdHJlbGVhc2Vfc29jayhzayk7XG4rXHRcdFx0c29ja19wdXQoc2spO1xuIFx0XHRcdGNvbnRpbnVlO1xuIFx0XHR9XG4gXG5AQCAtNDY0LDcgKzQ3Myw3IEBAIHN0YXRpYyBpbnQgbGxjcF9zb2NrX2FjY2VwdChzdHJ1Y3Qgc29ja2V0ICpzb2NrLCBzdHJ1Y3Qgc29ja2V0ICpuZXdzb2NrLFxuIFxuIFx0cHJfZGVidWcoXCJwYXJlbnQgJXBcXG5cIiwgc2spO1xuIFxuLVx0bG9ja19zb2NrX25lc3RlZChzaywgU0lOR0xFX0RFUFRIX05FU1RJTkcpO1xuK1x0bG9ja19zb2NrKHNrKTtcbiBcbiBcdGlmIChzay1cdTAwM2Vza19zdGF0ZSAhPSBMTENQX0xJU1RFTikge1xuIFx0XHRyZXQgPSAtRUJBREZEO1xuQEAgLTQ5MCw3ICs0OTksMTIgQEAgc3RhdGljIGludCBsbGNwX3NvY2tfYWNjZXB0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrZXQgKm5ld3NvY2ssXG4gXG4gXHRcdHJlbGVhc2Vfc29jayhzayk7XG4gXHRcdHRpbWVvID0gc2NoZWR1bGVfdGltZW91dCh0aW1lbyk7XG4tXHRcdGxvY2tfc29ja19uZXN0ZWQoc2ssIFNJTkdMRV9ERVBUSF9ORVNUSU5HKTtcbitcdFx0bG9ja19zb2NrKHNrKTtcbitcbitcdFx0aWYgKHNrLVx1MDAzZXNrX3N0YXRlICE9IExMQ1BfTElTVEVOKSB7XG4rXHRcdFx0cmV0ID0gLUVCQURGRDtcbitcdFx0XHRicmVhaztcbitcdFx0fVxuIFx0fVxuIFx0X19zZXRfY3VycmVudF9zdGF0ZShUQVNLX1JVTk5JTkcpO1xuIFx0cmVtb3ZlX3dhaXRfcXVldWUoc2tfc2xlZXAoc2spLCBcdTAwMjZ3YWl0KTtcbkBAIC02MjksMTMgKzY0MywyNCBAQCBzdGF0aWMgaW50IGxsY3Bfc29ja19yZWxlYXNlKHN0cnVjdCBzb2NrZXQgKnNvY2spXG4gXG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShsc2ssIG4sIFx1MDAyNmxsY3Bfc29jay1cdTAwM2VhY2NlcHRfcXVldWUsXG4gXHRcdFx0XHRcdCBhY2NlcHRfcXVldWUpIHtcbitcdFx0XHRib29sIHB1dF9jcmVhdGlvbiA9IGZhbHNlO1xuK1xuIFx0XHRcdGFjY2VwdF9zayA9IFx1MDAyNmxzay1cdTAwM2Vzaztcbi1cdFx0XHRsb2NrX3NvY2soYWNjZXB0X3NrKTtcbitcdFx0XHRsb2NrX3NvY2tfbmVzdGVkKGFjY2VwdF9zaywgU0lOR0xFX0RFUFRIX05FU1RJTkcpO1xuIFxuLVx0XHRcdG5mY19sbGNwX3NlbmRfZGlzY29ubmVjdChsc2spO1xuLVx0XHRcdG5mY19sbGNwX2FjY2VwdF91bmxpbmsoYWNjZXB0X3NrKTtcbitcdFx0XHRpZiAobmZjX2xsY3Bfc29jayhhY2NlcHRfc2spLVx1MDAzZXBhcmVudCA9PSBzaykge1xuK1x0XHRcdFx0bmZjX2xsY3Bfc2VuZF9kaXNjb25uZWN0KGxzayk7XG4rXHRcdFx0XHRuZmNfbGxjcF9hY2NlcHRfdW5saW5rKGFjY2VwdF9zayk7XG4rXHRcdFx0XHRuZmNfbGxjcF9zb2NrX3VubGluayhcdTAwMjZsb2NhbC1cdTAwM2Vzb2NrZXRzLCBhY2NlcHRfc2spO1xuK1xuK1x0XHRcdFx0YWNjZXB0X3NrLVx1MDAzZXNrX3N0YXRlID0gTExDUF9DTE9TRUQ7XG4rXHRcdFx0XHRzb2NrX29ycGhhbihhY2NlcHRfc2spO1xuK1x0XHRcdFx0cHV0X2NyZWF0aW9uID0gdHJ1ZTtcbitcdFx0XHR9XG4gXG4gXHRcdFx0cmVsZWFzZV9zb2NrKGFjY2VwdF9zayk7XG4rXHRcdFx0aWYgKHB1dF9jcmVhdGlvbilcbitcdFx0XHRcdHNvY2tfcHV0KGFjY2VwdF9zayk7IC8qIGNyZWF0aW9uIHJlZiAqL1xuIFx0XHR9XG4gXHR9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwODo0OTo1Mi4xNjI0MzkwMjNaIiwiU2VxIjozMywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTgwMjgyOTgxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBORkMgTExDUCBQYXRjaCoqXG5cbk9rYXksIHNvIEkndmUganVzdCByZXZpZXdlZCB0aGlzIHBhdGNoIGZvciB0aGUgTkZDIExMQ1Agc3Vic3lzdGVtLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdGhhdCBpdCdzIGZvY3VzZWQgb24gc29tZSBjcnVjaWFsLCBidXQgdmVyeSB0YXJnZXRlZCwgZml4ZXMuIEl0J3MgZXNzZW50aWFsbHkgYSBkZWVwIGRpdmUgaW50byBzb2NrZXQgbGlmZWN5Y2xlIG1hbmFnZW1lbnQsIHBhcnRpY3VsYXJseSBhcm91bmQgbG9ja2luZywgcmVmZXJlbmNlIGNvdW50aW5nLCBhbmQgY2xlYW51cCBwcm9jZWR1cmVzLiBJdCdzIHRvdWNoaW5nIGNvcmUgZnVuY3Rpb25zOiBgbmZjX2xsY3Bfc29ja2V0X3JlbGVhc2VgLCBgbmZjX2xsY3BfbG9jYWxfZ2V0YCwgYGxvY2FsX3JlbGVhc2Vfd29ya2AsIGBuZmNfbGxjcF9sb2NhbF9wdXRgLCAgYG5mY19sbGNwX2FjY2VwdF91bmxpbmtgLCBgbmZjX2xsY3BfYWNjZXB0X2RlcXVldWVgLCBgbGxjcF9zb2NrX2FjY2VwdGAsIGFuZCBgbGxjcF9zb2NrX3JlbGVhc2VgIChhbG9uZyB3aXRoIGBuZmNfbGxjcF9pbml0YCBhbmQgYG5mY19sbGNwX2V4aXRgKS4gSSBjYW4gc2VlIHRoYXQgdGhlcmUncyBhIGRlZmluaXRlIGZvY3VzIG9uIGltcHJvdmluZyBzb2NrZXQgc3RhdGUgaGFuZGxpbmcgYW5kIHByZXZlbnRpbmcgaXNzdWVzIGxpa2UgdXNlLWFmdGVyLWZyZWUgY29uZGl0aW9ucyBhbmQgcmFjZSBjb25kaXRpb25zLiBUaGUgaW50cm9kdWN0aW9uIG9mIGByZWxlYXNlX3dvcmtgIGFuZCBkZWZlcnJpbmcgdGhlIGxvY2FsIHJlbGVhc2UgdG8gYSB3b3JrcXVldWUgKGBsbGNwX3dxYCkgaXMgYSBrZXkgaW5kaWNhdG9yIG9mIHRoaXMgcmVmYWN0b3JpbmcuIEknbSBhbHNvIHNlZWluZyBzb21lIGltcHJvdmVtZW50cyB0byB0aGUgbG9ja2luZyBwcmltaXRpdmVzIGJlaW5nIHVzZWQsIHN1Y2ggYXMgYGxvY2tfc29ja2Agb3ZlciBgbG9ja19zb2NrX25lc3RlZGAgaW4gYGxsY3Bfc29ja19hY2NlcHRgLlxuXG5NeSBtYWluIGNvbmNlcm4sIGFzIGFsd2F5cywgaXMgd2hldGhlciB0aGVzZSBjaGFuZ2VzIGludHJvZHVjZSBhbnkgbmV3IHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcywgcGFydGljdWxhcmx5IHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkgZXhwb3N1cmUgb3IgaW5mb3JtYXRpb24gbGVha3MuIEhvd2V2ZXIsIGFmdGVyIGNhcmVmdWwgcmV2aWV3LCBJJ20gY29uZmlkZW50IHRoYXQgdGhlIGFuc3dlciBpcyBuby4gVGhpcyBwYXRjaCBkb2Vzbid0IGludm9sdmUgYW55IGNoYW5nZXMgdGhhdCBpbnZvbHZlIHNlbmRpbmcgbmV3IGRhdGEgc3RydWN0dXJlcyB0byB1c2VyIHNwYWNlLCBub3IgaXMgaXQgcmVhZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSwgb3IgYWxsb2NhdGluZyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aXRoIHVuaW5pdGlhbGl6ZWQgZmllbGRzLiBUaGVzZSBtb2RpZmljYXRpb25zIGFyZSBwdXJlbHkgY29udHJvbCBwbGFuZSBvcGVyYXRpb25zLCBjb25jZXJuZWQgd2l0aCB0aGUgbWFuYWdlbWVudCBvZiBzb2NrZXQgbGlmZWN5Y2xlLiBUaGVyZSdzIG5vIGRhdGEgY29weWluZyBvciBkaXJlY3QgaW50ZXJhY3Rpb24gd2l0aCB1c2VyIHNwYWNlIGRhdGEgdGhhdCB3b3VsZCBuZWNlc3NpdGF0ZSBLTVNBTi5cblxuU2luY2UgdGhlc2UgY2hhbmdlcyBhcmUgYWxsIGFib3V0IHNvY2tldCBzdGF0ZSwgbG9ja2luZywgYW5kIHJlZmVyZW5jZSBjb3VudGluZywgc3RhbmRhcmQgS0FTQU4sIExPQ0tERVAsIGFuZCBLQ1NBTiBzaG91bGQgYmUgcGVyZmVjdGx5IGFkZXF1YXRlIHRvIGNhdGNoIGFueSBwb3RlbnRpYWwgaXNzdWVzIOKAkyBzdWNoIGFzIFVBRiwgZGVhZGxvY2tzLCBvciBkYXRhIHJhY2VzLiBUaGVyZWZvcmUsIEknbSBjb21mb3J0YWJsZSBzZXR0aW5nIGBOZWVkc0tNU0FOPWZhbHNlYCBmb3IgdGhpcyBvbmUuIEkndmUgZG91YmxlLWNoZWNrZWQgdGhhdCBhbGwgb2YgdGhlIG1vZGlmaWVkIGZ1bmN0aW9ucywgaW5jbHVkaW5nIHRoZSBvbmVzIG1lbnRpb25lZCBhYm92ZSwgZG9uJ3QgZGVhbCB3aXRoIGNvcHlpbmcgZGF0YSB0byB1c2VyIHNwYWNlIG9yIHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoZXkgYXJlIGNsZWFybHkgZm9jdXNlZCBvbiBpbnRlcm5hbCBzb2NrZXQgc3RhdGUgbWFuYWdlbWVudCBhbmQgY2xlYW51cC4gU28sIEtNU0FOIGlzIG5vdCBuZWNlc3NhcnkgaGVyZS4gSSB0aGluayB0aGlzIHBhdGNoIGlzIGEgZ29vZCBzZXQgb2YgZml4ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2MzQsIk91dHB1dFRva2VucyI6MTU2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTU0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDg6NTA6MDEuOTY1MjcxNjQ0WiIsIlNlcSI6MzQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM4NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgbG9ja2luZywgcmVmZXJlbmNlIGNvdW50aW5nLCBhbmQgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGluIHRoZSBORkMgTExDUCBzb2NrZXQgbGF5ZXIuIEl0IGludHJvZHVjZXMgYSB3b3JrcXVldWUgZm9yIGRlZmVycmVkIGNsZWFudXAsIG1vZGlmaWVzIHNvY2tldCBsaXN0IHBvcHBpbmcgdG8gYXZvaWQgZGVhZGxvY2tzIG9yIFVBRiwgYW5kIGZpeGVzIGFjY2VwdCBxdWV1ZSBoYW5kbGluZy4gVGhlcmUgYXJlIG5vIGNoYW5nZXMgdG8gZGF0YSBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBubyBuZXcgYnVmZmVyIGFsbG9jYXRpb25zLCBhbmQgbm8gbW9kaWZpY2F0aW9ucyB0byBkYXRhIGxlbmd0aHMgb3IgYm91bmRzIGNoZWNrcyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgb3IgZGVhZGxvY2tzKSB3b3VsZCBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgbG9ja2luZywgcmVmZXJlbmNlIGNvdW50aW5nLCBhbmQgdXNlLWFmdGVyLWZyZWUgaXNzdWVzIGluIHRoZSBORkMgTExDUCBzb2NrZXQgbGF5ZXIuIEl0IGludHJvZHVjZXMgYSB3b3JrcXVldWUgZm9yIGRlZmVycmVkIGNsZWFudXAsIG1vZGlmaWVzIHNvY2tldCBsaXN0IHBvcHBpbmcgdG8gYXZvaWQgZGVhZGxvY2tzIG9yIFVBRiwgYW5kIGZpeGVzIGFjY2VwdCBxdWV1ZSBoYW5kbGluZy4gVGhlcmUgYXJlIG5vIGNoYW5nZXMgdG8gZGF0YSBzdHJ1Y3R1cmVzIGNvcGllZCB0byB1c2VyIHNwYWNlLCBubyBuZXcgYnVmZmVyIGFsbG9jYXRpb25zLCBhbmQgbm8gbW9kaWZpY2F0aW9ucyB0byBkYXRhIGxlbmd0aHMgb3IgYm91bmRzIGNoZWNrcyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIChzdWNoIGFzIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgb3IgZGVhZGxvY2tzKSB3b3VsZCBiZSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCByZXF1aXJlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowwxpms[1] Phase: Succeeded StartedAt: 2026-08-26 08:50:42 +0000 UTC FinishedAt: 2026-08-26 08:50:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwxpms[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-26 08:50:42 +0000 UTC FinishedAt: 2026-08-26 08:50:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwxpms[2] Phase: Succeeded StartedAt: 2026-08-26 08:50:42 +0000 UTC FinishedAt: 2026-08-26 10:01:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwxpms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"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":["nfc_llcp_local_put","nfc_llcp_accept_dequeue","nfc_llcp_accept_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6f4e9aed-2eea-44c2-8ef0-04ce578d399f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-08-26 08:50:42 +0000 UTC FinishedAt: 2026-08-26 10:01:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"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":["nfc_llcp_local_put","nfc_llcp_accept_dequeue","nfc_llcp_accept_unlink"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6f4e9aed-2eea-44c2-8ef0-04ce578d399f","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-workflowwxpms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"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":["nfc_llcp_local_put","nfc_llcp_accept_dequeue","nfc_llcp_accept_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6f4e9aed-2eea-44c2-8ef0-04ce578d399f","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-26 08:50:42 +0000 UTC FinishedAt: 2026-08-26 08:50:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwxpms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"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":["nfc_llcp_local_put","nfc_llcp_accept_dequeue","nfc_llcp_accept_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6f4e9aed-2eea-44c2-8ef0-04ce578d399f","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-26 08:50:42 +0000 UTC FinishedAt: 2026-08-26 08:50:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"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-workflowwxpms/series-workflowwxpms-convert-artifact-1578049744/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwxpms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"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":["nfc_llcp_local_put","nfc_llcp_accept_dequeue","nfc_llcp_accept_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6f4e9aed-2eea-44c2-8ef0-04ce578d399f","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-26 08:50:52 +0000 UTC FinishedAt: 2026-08-26 09:11:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwxpms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"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":["nfc_llcp_local_put","nfc_llcp_accept_dequeue","nfc_llcp_accept_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6f4e9aed-2eea-44c2-8ef0-04ce578d399f","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-26 08:50:52 +0000 UTC FinishedAt: 2026-08-26 09:11:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*dae54909-314f-45ba-be0d-9906660d28f6,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-workflowwxpms/series-workflowwxpms-convert-artifact-1578049744/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": "f1d1d714-d6b7-4469-bcc8-20bd93226d11", "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-workflowwxpms/series-workflowwxpms-build-action-2692878166/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwxpms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"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":["nfc_llcp_local_put","nfc_llcp_accept_dequeue","nfc_llcp_accept_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6f4e9aed-2eea-44c2-8ef0-04ce578d399f","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-26 08:50:52 +0000 UTC FinishedAt: 2026-08-26 09:10:42 +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:*dae54909-314f-45ba-be0d-9906660d28f6,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-workflowwxpms/series-workflowwxpms-convert-artifact-1578049744/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": "f1d1d714-d6b7-4469-bcc8-20bd93226d11", "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-workflowwxpms/series-workflowwxpms-build-action-2692878166/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwxpms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"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":["nfc_llcp_local_put","nfc_llcp_accept_dequeue","nfc_llcp_accept_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6f4e9aed-2eea-44c2-8ef0-04ce578d399f","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-26 09:11:07 +0000 UTC FinishedAt: 2026-08-26 09:11:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwxpms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"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":["nfc_llcp_local_put","nfc_llcp_accept_dequeue","nfc_llcp_accept_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6f4e9aed-2eea-44c2-8ef0-04ce578d399f","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-26 09:11:07 +0000 UTC FinishedAt: 2026-08-26 09:11:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwxpms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"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":["nfc_llcp_local_put","nfc_llcp_accept_dequeue","nfc_llcp_accept_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6f4e9aed-2eea-44c2-8ef0-04ce578d399f","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-26 09:11:07 +0000 UTC FinishedAt: 2026-08-26 09:11:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwxpms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"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":["nfc_llcp_local_put","nfc_llcp_accept_dequeue","nfc_llcp_accept_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6f4e9aed-2eea-44c2-8ef0-04ce578d399f","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-26 09:11:07 +0000 UTC FinishedAt: 2026-08-26 09:11:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6f4e9aed-2eea-44c2-8ef0-04ce578d399f","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-workflowwxpms/series-workflowwxpms-convert-artifact-2964643639/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwxpms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"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":["nfc_llcp_local_put","nfc_llcp_accept_dequeue","nfc_llcp_accept_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6f4e9aed-2eea-44c2-8ef0-04ce578d399f","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-26 09:11:17 +0000 UTC FinishedAt: 2026-08-26 09:13:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwxpms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"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":["nfc_llcp_local_put","nfc_llcp_accept_dequeue","nfc_llcp_accept_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6f4e9aed-2eea-44c2-8ef0-04ce578d399f","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-26 09:11:17 +0000 UTC FinishedAt: 2026-08-26 09:13:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f1d1d714-d6b7-4469-bcc8-20bd93226d11,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-workflowwxpms/series-workflowwxpms-build-action-2692878166/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-workflowwxpms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"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":["nfc_llcp_local_put","nfc_llcp_accept_dequeue","nfc_llcp_accept_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6f4e9aed-2eea-44c2-8ef0-04ce578d399f","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-26 09:13:46 +0000 UTC FinishedAt: 2026-08-26 09:13:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwxpms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"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":["nfc_llcp_local_put","nfc_llcp_accept_dequeue","nfc_llcp_accept_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6f4e9aed-2eea-44c2-8ef0-04ce578d399f","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-26 09:13:46 +0000 UTC FinishedAt: 2026-08-26 09:13:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwxpms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"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":["nfc_llcp_local_put","nfc_llcp_accept_dequeue","nfc_llcp_accept_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6f4e9aed-2eea-44c2-8ef0-04ce578d399f","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-26 09:13:46 +0000 UTC FinishedAt: 2026-08-26 09:30:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwxpms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"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":["nfc_llcp_local_put","nfc_llcp_accept_dequeue","nfc_llcp_accept_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6f4e9aed-2eea-44c2-8ef0-04ce578d399f","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-26 09:13:46 +0000 UTC FinishedAt: 2026-08-26 09:30:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*dae54909-314f-45ba-be0d-9906660d28f6,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-workflowwxpms/series-workflowwxpms-convert-artifact-2964643639/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": "3abfab5f-31c6-4773-9338-bbe1caeca14d", "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-workflowwxpms/series-workflowwxpms-build-action-438845179/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwxpms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"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":["nfc_llcp_local_put","nfc_llcp_accept_dequeue","nfc_llcp_accept_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6f4e9aed-2eea-44c2-8ef0-04ce578d399f","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-26 09:13:46 +0000 UTC FinishedAt: 2026-08-26 09:30:06 +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:*dae54909-314f-45ba-be0d-9906660d28f6,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-workflowwxpms/series-workflowwxpms-convert-artifact-2964643639/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": "3abfab5f-31c6-4773-9338-bbe1caeca14d", "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-workflowwxpms/series-workflowwxpms-build-action-438845179/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwxpms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"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":["nfc_llcp_local_put","nfc_llcp_accept_dequeue","nfc_llcp_accept_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6f4e9aed-2eea-44c2-8ef0-04ce578d399f","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-26 09:30:16 +0000 UTC FinishedAt: 2026-08-26 09:30:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwxpms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"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":["nfc_llcp_local_put","nfc_llcp_accept_dequeue","nfc_llcp_accept_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6f4e9aed-2eea-44c2-8ef0-04ce578d399f","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-26 09:30:16 +0000 UTC FinishedAt: 2026-08-26 09:30:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwxpms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"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":["nfc_llcp_local_put","nfc_llcp_accept_dequeue","nfc_llcp_accept_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6f4e9aed-2eea-44c2-8ef0-04ce578d399f","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-26 09:30:16 +0000 UTC FinishedAt: 2026-08-26 10:01:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwxpms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"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":["nfc_llcp_local_put","nfc_llcp_accept_dequeue","nfc_llcp_accept_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6f4e9aed-2eea-44c2-8ef0-04ce578d399f","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-26 09:30:16 +0000 UTC FinishedAt: 2026-08-26 10:01:23 +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:*3abfab5f-31c6-4773-9338-bbe1caeca14d,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-workflowwxpms/series-workflowwxpms-build-action-438845179/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": false },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-workflowwxpms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"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":["nfc_llcp_local_put","nfc_llcp_accept_dequeue","nfc_llcp_accept_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6f4e9aed-2eea-44c2-8ef0-04ce578d399f","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Failed StartedAt: 2026-08-26 10:01:33 +0000 UTC FinishedAt: 2026-08-26 10:01:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwxpms[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"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":["nfc_llcp_local_put","nfc_llcp_accept_dequeue","nfc_llcp_accept_unlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a8406e6c0b793ce0788019683837c40855b55995","config_name":"upstream-apparmor-kasan.config","enable_configs":["NFC","NFC_DIGITAL","NFC_SIM","NFC_NCI","NFC_VIRTUAL_NCI"],"series_id":"6f4e9aed-2eea-44c2-8ef0-04ce578d399f","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: Failed StartedAt: 2026-08-26 10:01:33 +0000 UTC FinishedAt: 2026-08-26 10:01:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}