Name: series-workflowzvvj2 Phase: Running StartedAt: 2026-08-27 21:20:22 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzvvj2[0] Phase: Succeeded StartedAt: 2026-08-27 21:20:22 +0000 UTC FinishedAt: 2026-08-27 21:58:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzvvj2[0].run-triage Phase: Succeeded StartedAt: 2026-08-27 21:20:22 +0000 UTC FinishedAt: 2026-08-27 21:58:37 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET", "NETDEVICES", "PHYLIB", "PHYLINK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET", "NETDEVICES", "PHYLIB", "PHYLINK" ], "series_id": "85e488c7-c7fc-48d4-9fdd-df7b38a617e6" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "phy_attach_direct", "phy_detach", "phylink_connect_phy", "phylink_disconnect_phy", "phylink_fwnode_phy_connect", "phylink_of_phy_connect" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVQmIzM0OywKICAgICYjMzQ7TkVUREVWSUNFUyYjMzQ7LAogICAgJiMzNDtQSFlMSUImIzM0OywKICAgICYjMzQ7UEhZTElOSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BoeV9hdHRhY2hfZGlyZWN0JiMzNDssCiAgICAmIzM0O3BoeV9kZXRhY2gmIzM0OywKICAgICYjMzQ7cGh5bGlua19jb25uZWN0X3BoeSYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgc3RhdGUgY2xlYW51cCBhbmQgSVJRIHJlc3RvcmF0aW9uIGluIFBIWSBhbmQgcGh5bGluayBkcml2ZXIgbGlmZWN5Y2xlcyAoc3BlY2lmaWNhbGx5IHJlc3RvcmluZyBwaHlkZXYtXHUwMDNlaXJxIHVwb24gZ2VuZXJpYyBQSFkgZHJpdmVyIGRldGFjaC9hdHRhY2ggZmFpbHVyZSBhbmQgY2xlYXJpbmcgcGwtXHUwMDNlcGh5ZGV2IG9uIHBoeWxpbmtfYnJpbmd1cF9waHkgZmFpbHVyZSkuIFxuXG5UaGVzZSBjaGFuZ2VzIGludm9sdmUgbWFuYWdpbmcgb2JqZWN0IGxpZmVjeWNsZXMsIHJlc2V0dGluZyBpbnRlcm5hbCBwb2ludGVycyB0byBOVUxMLCBhbmQgcmVzZXR0aW5nIGJvb2xlYW4gZmxhZ3MuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHJlYWRzLCBwYWRkaW5nIGxlYWtzLCBvciB1c2VyLXNwYWNlIGNvcGllcyAoY29weV90b191c2VyL25ldGxpbmspIGFyZSBpbnRyb2R1Y2VkIG9yIG1vZGlmaWVkLiBBbnkgbGlmZWN5Y2xlIG9yIGRhbmdsaW5nIHBvaW50ZXIgaXNzdWVzIGluIHRoaXMgY29kZSBwYXRoIGZhbGwgdW5kZXIgS0FTQU4gKHVzZS1hZnRlci1mcmVlIC8gaW52YWxpZCBhY2Nlc3MpIG9yIHN0YW5kYXJkIGtlcm5lbCBhc3NlcnRpb25zL0xPQ0tERVAsIG1ha2luZyBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIHVubmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFBIWSBsaWJyYXJ5IGFuZCBwaHlsaW5rIHN1YnN5c3RlbSBsb2dpYyBpbiBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGFuZCBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jLiBJdCBpbnRyb2R1Y2VzIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEgdG8gcHJvcGVybHkgcmVzdG9yZSBQSFkgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb25zIHdoZW4gZGV0YWNoaW5nIG9yIGZhaWxpbmcgdG8gYXR0YWNoIGEgZ2VuZXJpYyBQSFksIGFuZCBlbnN1cmVzIHBoeWxpbmtfY2xlYXJfcGh5ZGV2IGlzIGNhbGxlZCB0byBjbGVhbmx5IGRldGFjaCBhbmQgcmVzZXQgc3RhdGUgaWYgcGh5bGlua19icmluZ3VwX3BoeSBmYWlscy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgcmVhY2hhYmxlIG5ldHdvcmsgUEhZIHNldHVwL3RlYXJkb3duIGxvZ2ljIHVzZWQgYnkgZW11bGF0ZWQgbmV0d29yayBhZGFwdGVycyAoZS5nLiBVU0IgZXRoZXJuZXQgYWRhcHRlcnMgYW5kIERTQSBsb29wIGRldmljZXMpIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAyMTozNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDljOTkyMzVjNzg0ZDZjN2RiZjY0M2M4NWRiODYxOTU1MDE0YTYyYTRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyNyAyMTozNTo1MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuaW5kZXggOTRiMmU4NWUwMGEzNy4uYmU0YzM1ZGI4ZGU5OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbkBAIC0xNzM0LDYgJiM0MzsxNzM0LDE4IEBAIHN0YXRpYyBib29sIHBoeV9kcnZfc3VwcG9ydHNfaXJxKGNvbnN0IHN0cnVjdCBwaHlfZHJpdmVyICpwaHlkcnYpXG4gXHRyZXR1cm4gcGh5ZHJ2LVx1MDAzZWNvbmZpZ19pbnRyIFx1MDAyNlx1MDAyNiBwaHlkcnYtXHUwMDNlaGFuZGxlX2ludGVycnVwdDtcbiB9XG4gXG4mIzQzOy8qIEdpdmUgYmFjayB0aGUgaW50ZXJydXB0IHBoeV9wcm9iZSgpIHBhcmtlZCB3aGVuIGEgZHJpdmVyIHdpdGggbm8gaW50ZXJydXB0XG4mIzQzOyAqIGNhbGxiYWNrcyBib3VuZC4gbWRpb2J1c19hbGxvYygpIGRlZmF1bHRzIGJ1cy1cdTAwM2VpcnFbXSB0byBQSFlfUE9MTCBhbmQgdGhlXG4mIzQzOyAqIGJpbmQgY3ljbGUgZG9lcyBub3QgdG91Y2ggdGhlIHRhYmxlLCBzbyB3aGF0ZXZlciB0aGUgYnVzIHJlY29yZGVkIHRoZXJlXG4mIzQzOyAqIHN0aWxsIHN0YW5kcy4gT25seSB0aGUgcGFya2luZyBpcyB1bmRvbmU6IGFueSBvdGhlciB2YWx1ZSB0aGUgUEhZIGNhcnJpZXNcbiYjNDM7ICogd2FzIHB1dCB0aGVyZSBieSBzb21lb25lIGVsc2UuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgdm9pZCBwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3tcbiYjNDM7XHRpZiAocGh5ZGV2LVx1MDAzZWlycSA9PSBQSFlfUE9MTClcbiYjNDM7XHRcdHBoeWRldi1cdTAwM2VpcnEgPSBwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlaXJxW3BoeWRldi1cdTAwM2VtZGlvLmFkZHJdO1xuJiM0Mzt9XG4mIzQzO1xuIC8qKlxuICAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcbiAgKiBAZGV2OiBuZXR3b3JrIGRldmljZSB0byBhdHRhY2hcbkBAIC0xODk2LDYgJiM0MzsxOTA4LDcgQEAgaW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4gXG4gZXJyb3JfbW9kdWxlX3B1dDpcbiBcdG1vZHVsZV9wdXQoZC1cdTAwM2Vkcml2ZXItXHUwMDNlb3duZXIpO1xuJiM0MztcdHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEocGh5ZGV2KTtcbiBcdHBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcbiBcdGQtXHUwMDNlZHJpdmVyID0gTlVMTDtcbiBlcnJvcl9wdXRfZGV2aWNlOlxuQEAgLTE5NjUsNiAmIzQzOzE5NzgsNyBAQCB2b2lkIHBoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdCAqIHJlYWwgZHJpdmVyIGNvdWxkIGJlIGxvYWRlZFxuIFx0ICovXG4gXHRpZiAocGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4pIHtcbiYjNDM7XHRcdHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEocGh5ZGV2KTtcbiBcdFx0ZGV2aWNlX3JlbGVhc2VfZHJpdmVyKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldik7XG4gXHRcdHBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcbiBcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuaW5kZXggNWI4ZTk1NjkwMmZiNS4uYTU1ZTRhNjQwMjhmZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbkBAIC0yMDgzLDYgJiM0MzsyMDgzLDE4IEBAIHN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuIFx0cmV0dXJuIHBoeWxpbmtfdmFsaWRhdGUocGwsIHN1cHBvcnRlZCwgc3RhdGUpO1xuIH1cbiBcbiYjNDM7LyogRGlzYXNzb2NpYXRlIEBwaHkgZnJvbSBAcGwuIENhbGxlciBtdXN0IGhvbGQgcGwtXHUwMDNlcGh5ZGV2X211dGV4LiAqL1xuJiM0MztzdGF0aWMgdm9pZCBwaHlsaW5rX2NsZWFyX3BoeWRldihzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXG4mIzQzO3tcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnBoeS1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbiYjNDM7XHRwbC1cdTAwM2VwaHlkZXYgPSBOVUxMO1xuJiM0MztcdHBsLVx1MDAzZXBoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7XG4mIzQzO1x0cGwtXHUwMDNlbWFjX3R4X2Nsa19zdG9wID0gZmFsc2U7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4gXHRcdFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4ge1xuQEAgLTIxOTcsNiAmIzQzOzIyMDksMTIgQEAgc3RhdGljIGludCBwaHlsaW5rX2JyaW5ndXBfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcbiBcdGlmIChyZXQgPT0gMCBcdTAwMjZcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHkpKVxuIFx0XHRwaHlfcmVxdWVzdF9pbnRlcnJ1cHQocGh5KTtcbiBcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4mIzQzO1x0XHRwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTtcbiYjNDM7XHRcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbkBAIC0yMzQ3LDE1ICYjNDM7MjM2NSw4IEBAIHZvaWQgcGh5bGlua19kaXNjb25uZWN0X3BoeShzdHJ1Y3QgcGh5bGluayAqcGwpXG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4gXHRwaHkgPSBwbC1cdTAwM2VwaHlkZXY7XG4tXHRpZiAocGh5KSB7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbi1cdFx0cGwtXHUwMDNlcGh5ZGV2ID0gTlVMTDtcbi1cdFx0cGwtXHUwMDNlcGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTtcbi1cdFx0cGwtXHUwMDNlbWFjX3R4X2Nsa19zdG9wID0gZmFsc2U7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwaHktXHUwMDNlbG9jayk7XG4tXHR9XG4mIzQzO1x0aWYgKHBoeSlcbiYjNDM7XHRcdHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4gXG4gXHRpZiAocGh5KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6MzU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTltPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVCYjMzQ7LAogICAgJiMzNDtORVRERVZJQ0VTJiMzNDssCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtQSFlMSU5LJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5X2F0dGFjaF9kaXJlY3QmIzM0OywKICAgICYjMzQ7cGh5X2RldGFjaCYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2Nvbm5lY3RfcGh5JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfZGlzY29ubmVjdF9waHkmIzM0OywKICAgICYjMzQ7cGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7cGh5bGlua19vZl9waHlfY29ubmVjdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFBIWSBsaWJyYXJ5IGFuZCBwaHlsaW5rIHN1YnN5c3RlbSBsb2dpYyBpbiBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGFuZCBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jLiBJdCBpbnRyb2R1Y2VzIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEgdG8gcHJvcGVybHkgcmVzdG9yZSBQSFkgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb25zIHdoZW4gZGV0YWNoaW5nIG9yIGZhaWxpbmcgdG8gYXR0YWNoIGEgZ2VuZXJpYyBQSFksIGFuZCBlbnN1cmVzIHBoeWxpbmtfY2xlYXJfcGh5ZGV2IGlzIGNhbGxlZCB0byBjbGVhbmx5IGRldGFjaCBhbmQgcmVzZXQgc3RhdGUgaWYgcGh5bGlua19icmluZ3VwX3BoeSBmYWlscy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgcmVhY2hhYmxlIG5ldHdvcmsgUEhZIHNldHVwL3RlYXJkb3duIGxvZ2ljIHVzZWQgYnkgZW11bGF0ZWQgbmV0d29yayBhZGFwdGVycyAoZS5nLiBVU0IgZXRoZXJuZXQgYWRhcHRlcnMgYW5kIERTQSBsb29wIGRldmljZXMpIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDljOTkyMzVjNzg0ZDZjN2RiZjY0M2M4NWRiODYxOTU1MDE0YTYyYTQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAyNyAyMTozNTo1MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCmluZGV4IDk0YjJlODVlMDBhMzcuLmJlNGMzNWRiOGRlOTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwpAQCAtMTczNCw2ICYjNDM7MTczNCwxOCBAQCBzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KQogCXJldHVybiBwaHlkcnYtJmd0O2NvbmZpZ19pbnRyICZhbXA7JmFtcDsgcGh5ZHJ2LSZndDtoYW5kbGVfaW50ZXJydXB0OwogfQogCiYjNDM7LyogR2l2ZSBiYWNrIHRoZSBpbnRlcnJ1cHQgcGh5X3Byb2JlKCkgcGFya2VkIHdoZW4gYSBkcml2ZXIgd2l0aCBubyBpbnRlcnJ1cHQKJiM0MzsgKiBjYWxsYmFja3MgYm91bmQuIG1kaW9idXNfYWxsb2MoKSBkZWZhdWx0cyBidXMtJmd0O2lycVtdIHRvIFBIWV9QT0xMIGFuZCB0aGUKJiM0MzsgKiBiaW5kIGN5Y2xlIGRvZXMgbm90IHRvdWNoIHRoZSB0YWJsZSwgc28gd2hhdGV2ZXIgdGhlIGJ1cyByZWNvcmRlZCB0aGVyZQomIzQzOyAqIHN0aWxsIHN0YW5kcy4gT25seSB0aGUgcGFya2luZyBpcyB1bmRvbmU6IGFueSBvdGhlciB2YWx1ZSB0aGUgUEhZIGNhcnJpZXMKJiM0MzsgKiB3YXMgcHV0IHRoZXJlIGJ5IHNvbWVvbmUgZWxzZS4KJiM0MzsgKi8KJiM0MztzdGF0aWMgdm9pZCBwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7ewomIzQzOwlpZiAocGh5ZGV2LSZndDtpcnEgPT0gUEhZX1BPTEwpCiYjNDM7CQlwaHlkZXYtJmd0O2lycSA9IHBoeWRldi0mZ3Q7bWRpby5idXMtJmd0O2lycVtwaHlkZXYtJmd0O21kaW8uYWRkcl07CiYjNDM7fQomIzQzOwogLyoqCiAgKiBwaHlfYXR0YWNoX2RpcmVjdCAtIGF0dGFjaCBhIG5ldHdvcmsgZGV2aWNlIHRvIGEgZ2l2ZW4gUEhZIGRldmljZSBwb2ludGVyCiAgKiBAZGV2OiBuZXR3b3JrIGRldmljZSB0byBhdHRhY2gKQEAgLTE4OTYsNiAmIzQzOzE5MDgsNyBAQCBpbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwKIAogZXJyb3JfbW9kdWxlX3B1dDoKIAltb2R1bGVfcHV0KGQtJmd0O2RyaXZlci0mZ3Q7b3duZXIpOwomIzQzOwlwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHBoeWRldik7CiAJcGh5ZGV2LSZndDtpc19nZW5waHlfZHJpdmVuID0gMDsKIAlkLSZndDtkcml2ZXIgPSBOVUxMOwogZXJyb3JfcHV0X2RldmljZToKQEAgLTE5NjUsNiAmIzQzOzE5NzgsNyBAQCB2b2lkIHBoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAkgKiByZWFsIGRyaXZlciBjb3VsZCBiZSBsb2FkZWQKIAkgKi8KIAlpZiAocGh5ZGV2LSZndDtpc19nZW5waHlfZHJpdmVuKSB7CiYjNDM7CQlwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHBoeWRldik7CiAJCWRldmljZV9yZWxlYXNlX2RyaXZlcigmYW1wO3BoeWRldi0mZ3Q7bWRpby5kZXYpOwogCQlwaHlkZXYtJmd0O2lzX2dlbnBoeV9kcml2ZW4gPSAwOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jCmluZGV4IDViOGU5NTY5MDJmYjUuLmE1NWU0YTY0MDI4ZmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwpAQCAtMjA4Myw2ICYjNDM7MjA4MywxOCBAQCBzdGF0aWMgaW50IHBoeWxpbmtfdmFsaWRhdGVfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSwKIAlyZXR1cm4gcGh5bGlua192YWxpZGF0ZShwbCwgc3VwcG9ydGVkLCBzdGF0ZSk7CiB9CiAKJiM0MzsvKiBEaXNhc3NvY2lhdGUgQHBoeSBmcm9tIEBwbC4gQ2FsbGVyIG11c3QgaG9sZCBwbC0mZ3Q7cGh5ZGV2X211dGV4LiAqLwomIzQzO3N0YXRpYyB2b2lkIHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSkKJiM0Mzt7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtwaHktJmd0O2xvY2spOwomIzQzOwltdXRleF9sb2NrKCZhbXA7cGwtJmd0O3N0YXRlX211dGV4KTsKJiM0MzsJcGwtJmd0O3BoeWRldiA9IE5VTEw7CiYjNDM7CXBsLSZndDtwaHlfZW5hYmxlX3R4X2xwaSA9IGZhbHNlOwomIzQzOwlwbC0mZ3Q7bWFjX3R4X2Nsa19zdG9wID0gZmFsc2U7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3BsLSZndDtzdGF0ZV9tdXRleCk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3BoeS0mZ3Q7bG9jayk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBwaHlsaW5rX2JyaW5ndXBfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSwKIAkJCSAgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKQogewpAQCAtMjE5Nyw2ICYjNDM7MjIwOSwxMiBAQCBzdGF0aWMgaW50IHBoeWxpbmtfYnJpbmd1cF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LAogCWlmIChyZXQgPT0gMCAmYW1wOyZhbXA7IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5KSkKIAkJcGh5X3JlcXVlc3RfaW50ZXJydXB0KHBoeSk7CiAKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJbXV0ZXhfbG9jaygmYW1wO3BsLSZndDtwaHlkZXZfbXV0ZXgpOwomIzQzOwkJcGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSk7CiYjNDM7CQltdXRleF91bmxvY2soJmFtcDtwbC0mZ3Q7cGh5ZGV2X211dGV4KTsKJiM0MzsJfQomIzQzOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTIzNDcsMTUgJiM0MzsyMzY1LDggQEAgdm9pZCBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCkKIAogCW11dGV4X2xvY2soJmFtcDtwbC0mZ3Q7cGh5ZGV2X211dGV4KTsKIAlwaHkgPSBwbC0mZ3Q7cGh5ZGV2OwotCWlmIChwaHkpIHsKLQkJbXV0ZXhfbG9jaygmYW1wO3BoeS0mZ3Q7bG9jayk7Ci0JCW11dGV4X2xvY2soJmFtcDtwbC0mZ3Q7c3RhdGVfbXV0ZXgpOwotCQlwbC0mZ3Q7cGh5ZGV2ID0gTlVMTDsKLQkJcGwtJmd0O3BoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7Ci0JCXBsLSZndDttYWNfdHhfY2xrX3N0b3AgPSBmYWxzZTsKLQkJbXV0ZXhfdW5sb2NrKCZhbXA7cGwtJmd0O3N0YXRlX211dGV4KTsKLQkJbXV0ZXhfdW5sb2NrKCZhbXA7cGh5LSZndDtsb2NrKTsKLQl9CiYjNDM7CWlmIChwaHkpCiYjNDM7CQlwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTsKIAltdXRleF91bmxvY2soJmFtcDtwbC0mZ3Q7cGh5ZGV2X211dGV4KTsKIAogCWlmIChwaHkpIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjExbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMTkKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29yayBQSFkgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoIGFuZCBmaWd1cmUgb3V0IGlmIHRoZXJlJiMzOTtzIGFueXRoaW5nIGhlcmUgdGhhdCB3YXJyYW50cyBmdXp6aW5nIG9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBpbnRvIHJlYWNoYWJpbGl0eSBhbmQgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gaXNzdWVzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgZnVuY3Rpb25hbCBjaGFuZ2VzIGNsb3NlbHkuCgpGaXJzdCwgSSBzZWUgdGhlIGNoYW5nZXMgYXJlIGZvY3VzZWQgb24gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgIGFuZCBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AuIEluIGBwaHlfZGV2aWNlLmNgLCB0aGVyZSYjMzk7cyBhIG1vZGlmaWNhdGlvbiB0byBgcGh5X3Jlc3RvcmVfZ2VucGh5X2lycShwaHlkZXYpYC4gSXQgbG9va3MgbGlrZSBpdCByZXN0b3JlcyBgcGh5ZGV2LSZndDtpcnFgIHRvIGl0cyBwcmV2aW91cyB2YWx1ZSBpZiBpdCB3YXMgYFBIWV9QT0xMYCB3aGVuIGVycm9ycyBvY2N1ciBpbiBgcGh5X2F0dGFjaF9kaXJlY3RgIG9yIGBwaHlfZGV0YWNoYC4gTm90aGluZyBpbW1lZGlhdGVseSBhbGFybWluZywgYnV0IGVycm9yIHBhdGhzIGFyZSBhbHdheXMgaW50ZXJlc3RpbmcuCgpPdmVyIGluIGBwaHlsaW5rLmNgLCB3ZSBoYXZlIGEgcmVmYWN0b3Jpbmcgb2YgdGhlIGhlbHBlciBmdW5jdGlvbiBgcGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSlgLiBBbmQgaXQgYXBwZWFycyB0byBiZSB1c2VkIGluIGFuIGVycm9yIHBhdGggd2l0aGluIGBwaHlsaW5rX2JyaW5ndXBfcGh5YCwgc3BlY2lmaWNhbGx5IHdpdGhpbiBhIG11dGV4IGxvY2suIFJlZmFjdG9yaW5nIGlzIGdvb2QsIGFuZCB0aGUgZXJyb3IgaGFuZGxpbmcgYmVpbmcgaW1wcm92ZWQgaXMgYSBnb29kIHNpZ24sIGJ1dCBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0LgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGFyaXNlczogd2hlcmUgaXMgdGhpcyBidWlsdCwgYW5kIGhvdyBhcmUgUEhZIGRldmljZXMgYW5kIHBoeWxpbmsgdXNlZCBpbiBlbnZpcm9ubWVudHMgbGlrZSB2aXJ0dWFsaXplZCBzeXN0ZW1zLCBRRU1VLCBvciBldmVuIHNvZnR3YXJlIGRldmljZXM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXNlIGNoYW5nZXMgaGF2ZSBhbiBpbXBhY3QgYmV5b25kIHN0YW5kYXJkIGhhcmR3YXJlLiBDYW4gSSByZWFjaCB0aGVzZSBzcGVjaWZpYyBmdW5jdGlvbnMgYW5kIGNvbmZpZ3VyYXRpb25zIHdpdGhpbiB0aG9zZSBlbnZpcm9ubWVudHM/IFdhaXQgYSBtaW51dGUuIEFyZSBQSFkgZGV2aWNlcywgTURJTywgYW5kIHBoeWxpbmsgZXZlbiAqcmVhY2hhYmxlKiBpbiBRRU1VLCBzeXprYWxsZXIsIG9yIHNpbWlsYXIgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzPyBMZXQmIzM5O3MgYnJlYWsgb3V0IGdyZXAgYW5kIHNlZSBpZiB0aGVzZSBjb21wb25lbnRzIGFyZSBldmVuIGJlaW5nIHVzZWQgaW4gdGhvc2UgY29udGV4dHMuIFRoYXQgd2lsbCB0ZWxsIG1lIGEgbG90IGFib3V0IHRoZSBwb3RlbnRpYWwgc2NvcGUgb2YgdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAyMTo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlsaW5rXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTA2MDAgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jPTE1MjU9dm9pZCBiNTNfcG9ydF9ldmVudChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1MzItXHRsaW5rID0gISEoc3RzIFx1MDAyNiBCSVQocG9ydCkpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTUzMzpcdGRzYV9wb3J0X3BoeWxpbmtfbWFjX2NoYW5nZShkcywgcG9ydCwgbGluayk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTM0LX1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jPTE1MzU9RVhQT1JUX1NZTUJPTChiNTNfcG9ydF9ldmVudCk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTM2LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTUzNzpzdGF0aWMgdm9pZCBiNTNfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTUzODpcdFx0XHRcdCBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1Mzkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1NzUtXHQvKiBHZXQgdGhlIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIGNhcGFiaWxpdGllcyAqL1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU3NjpcdGlmIChkZXYtXHUwMDNlb3BzLVx1MDAzZXBoeWxpbmtfZ2V0X2NhcHMpXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoxNTc3Olx0XHRkZXYtXHUwMDNlb3BzLVx1MDAzZXBoeWxpbmtfZ2V0X2NhcHMoZGV2LCBwb3J0LCBjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU3OC19XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTc5LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU4MDpzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpiNTNfcGh5bGlua19tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1ODEtXHRcdFx0XHRcdFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1ODIte1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU4MzpcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTg0LVx0c3RydWN0IGI1M19kZXZpY2UgKmRldiA9IGRwLVx1MDAzZWRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTg1LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU4NjpcdGlmICghZGV2LVx1MDAzZW9wcy1cdTAwM2VwaHlsaW5rX21hY19zZWxlY3RfcGNzKVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU4Ny1cdFx0cmV0dXJuIE5VTEw7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTg4LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU4OTpcdHJldHVybiBkZXYtXHUwMDNlb3BzLVx1MDAzZXBoeWxpbmtfbWFjX3NlbGVjdF9wY3MoZGV2LCBkcC1cdTAwM2VpbmRleCwgaW50ZXJmYWNlKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1OTAtfVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU5MS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1OTI6c3RhdGljIHZvaWQgYjUzX3BoeWxpbmtfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1OTMtXHRcdFx0XHQgICB1bnNpZ25lZCBpbnQgbW9kZSxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1OTQ6XHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1OTUte1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU5NjpcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTk3LVx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZSA9IHN0YXRlLVx1MDAzZWludGVyZmFjZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNjE0LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTYxNTpzdGF0aWMgdm9pZCBiNTNfcGh5bGlua19tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTYxNi1cdFx0XHRcdCAgICAgIHVuc2lnbmVkIGludCBtb2RlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE2MTgte1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTYxOTpcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNjIwLVx0c3RydWN0IGI1M19kZXZpY2UgKmRldiA9IGRwLVx1MDAzZWRzLVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTYzOC1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE2Mzk6c3RhdGljIHZvaWQgYjUzX3BoeWxpbmtfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNjQwLVx0XHRcdFx0ICAgIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTY0NS17XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoxNjQ2Olx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE2NDctXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkcC1cdTAwM2Vkcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYz0yNjkyPUVYUE9SVF9TWU1CT0xfR1BMKGI1M19zZXRfYWdlaW5nX3RpbWUpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMjY5My1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjI2OTQ6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgYjUzX3BoeWxpbmtfbWFjX29wcyA9IHtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjI2OTU6XHQubWFjX3NlbGVjdF9wY3NcdD0gYjUzX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3MsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoyNjk2Olx0Lm1hY19jb25maWdcdD0gYjUzX3BoeWxpbmtfbWFjX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjI2OTc6XHQubWFjX2xpbmtfZG93blx0PSBiNTNfcGh5bGlua19tYWNfbGlua19kb3duLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MjY5ODpcdC5tYWNfbGlua191cFx0PSBiNTNfcGh5bGlua19tYWNfbGlua191cCxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTI2OTktfTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYz0yNzAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgYjUzX3N3aXRjaF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMjcxMC1cdC5waHlfd3JpdGVcdFx0PSBiNTNfcGh5X3dyaXRlMTYsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoyNzExOlx0LnBoeWxpbmtfZ2V0X2NhcHNcdD0gYjUzX3BoeWxpbmtfZ2V0X2NhcHMsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0yNzEyLVx0LnBvcnRfc2V0dXBcdFx0PSBiNTNfc2V0dXBfcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYz0zMTgzPXN0cnVjdCBiNTNfZGV2aWNlICpiNTNfc3dpdGNoX2FsbG9jKHN0cnVjdCBkZXZpY2UgKmJhc2UsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMzIwNi1cdGRzLVx1MDAzZW9wcyA9IFx1MDAyNmI1M19zd2l0Y2hfb3BzO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MzIwNzpcdGRzLVx1MDAzZXBoeWxpbmtfbWFjX29wcyA9IFx1MDAyNmI1M19waHlsaW5rX21hY19vcHM7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0zMjA4LVx0ZGV2LVx1MDAzZXZsYW5fZW5hYmxlZCA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oPTM0PXN0cnVjdCBiNTNfaW9fb3BzIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2LmgtNTAtXHR2b2lkICgqcGh5X2Rpc2FibGUpKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIGludCBwb3J0KTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaDo1MTpcdHZvaWQgKCpwaHlsaW5rX2dldF9jYXBzKShzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaDo1MjpcdFx0XHRcdCBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2Lmg6NTM6XHRzdHJ1Y3QgcGh5bGlua19wY3MgKigqcGh5bGlua19tYWNfc2VsZWN0X3Bjcykoc3RydWN0IGI1M19kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaC01NC1cdFx0XHRcdFx0XHQgICAgICBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2Lmg9MTExPXN0cnVjdCBiNTNfcGNzIHtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaDoxMTI6XHRzdHJ1Y3QgcGh5bGlua19wY3MgcGNzO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oLTExMy1cdHN0cnVjdCBiNTNfZGV2aWNlICpkZXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtMTktXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYzoyMDpzdGF0aWMgaW5saW5lIHN0cnVjdCBiNTNfcGNzICpwY3NfdG9fYjUzX3BjcyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTIxLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYz02MT1zdGF0aWMgdTE2IGI1M19zZXJkZXNfcmVhZChzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCB1OCBsYW5lLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTY3LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM6Njg6c3RhdGljIGludCBiNTNfc2VyZGVzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtNjktXHRcdFx0ICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTg4LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM6ODk6c3RhdGljIHZvaWQgYjUzX3NlcmRlc19hbl9yZXN0YXJ0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtOTAte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTEwMS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjEwMjpzdGF0aWMgdm9pZCBiNTNfc2VyZGVzX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM6MTAzOlx0XHRcdFx0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtMTA0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYz0xNTc9RVhQT1JUX1NZTUJPTChiNTNfc2VyZGVzX2xpbmtfc2V0KTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE1OC1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjE1OTpzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfcGNzX29wcyBiNTNfcGNzX29wcyA9IHtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE2MC1cdC5wY3NfZ2V0X3N0YXRlID0gYjUzX3NlcmRlc19nZXRfc3RhdGUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtMTY0LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM6MTY1OnZvaWQgYjUzX3NlcmRlc19waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM6MTY2Olx0XHRcdFx0IHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtMTY3LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy0xOTEtfVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM6MTkyOkVYUE9SVF9TWU1CT0woYjUzX3NlcmRlc19waHlsaW5rX2dldF9jYXBzKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE5My1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjE5NDpzdHJ1Y3QgcGh5bGlua19wY3MgKmI1M19zZXJkZXNfcGh5bGlua19tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtMTk1LVx0XHRcdFx0XHRcdCAgICAgIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTIwOS19XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYzoyMTA6RVhQT1JUX1NZTUJPTChiNTNfc2VyZGVzX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3MpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtMjExLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5oLTk5LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmg6MTAwOnN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGU7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaC0xMDEtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmg9MTEwPXZvaWQgYjUzX3NlcmRlc19saW5rX3NldChzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydCwgdW5zaWduZWQgaW50IG1vZGUsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaC0xMTEtXHRcdFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsIGJvb2wgbGlua191cCk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaDoxMTI6c3RydWN0IHBoeWxpbmtfcGNzICpiNTNfc2VyZGVzX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3Moc3RydWN0IGI1M19kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5oLTExMy1cdFx0XHRcdFx0XHQgICAgICBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5oLTExNC1cdFx0XHRcdFx0XHQgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5oOjExNTp2b2lkIGI1M19zZXJkZXNfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5oOjExNjpcdFx0XHRcdCBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaC0xMTctI2lmIElTX0VOQUJMRUQoQ09ORklHX0I1M19TRVJERVMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jPTQzNT1zdGF0aWMgdm9pZCBiNTNfc3JhYl9pcnFfZGlzYWJsZShzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydClcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtNDQ1LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jOjQ0NjpzdGF0aWMgdm9pZCBiNTNfc3JhYl9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jOjQ0NzpcdFx0XHRcdCAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ0OC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ1Ny1cdFx0ICovXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmM6NDU4Olx0XHRiNTNfc2VyZGVzX3BoeWxpbmtfZ2V0X2NhcHMoZGV2LCBwb3J0LCBjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ1OS0jZW5kaWZcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmM9NDc5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYjUzX2lvX29wcyBiNTNfc3JhYl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ5MS1cdC5pcnFfZGlzYWJsZSA9IGI1M19zcmFiX2lycV9kaXNhYmxlLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jOjQ5MjpcdC5waHlsaW5rX2dldF9jYXBzID0gYjUzX3NyYWJfcGh5bGlua19nZXRfY2FwcyxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy00OTMtI2lmIElTX0VOQUJMRUQoQ09ORklHX0I1M19TRVJERVMpXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmM6NDk0Olx0LnBoeWxpbmtfbWFjX3NlbGVjdF9wY3MgPSBiNTNfc2VyZGVzX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3MsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtNDk1LVx0LnNlcmRlc19tYXBfbGFuZSA9IGI1M19zcmFiX3NlcmRlc19tYXBfbGFuZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jPTQ1Mj1zdGF0aWMgaXJxcmV0dXJuX3QgYmNtX3NmMl9zd2l0Y2hfMV9pc3IoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNDYyLVx0XHRwcml2LVx1MDAzZXBvcnRfc3RzWzddLmxpbmsgPSB0cnVlO1xuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo0NjM6XHRcdGRzYV9wb3J0X3BoeWxpbmtfbWFjX2NoYW5nZShkcywgNywgdHJ1ZSk7XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTQ2NC1cdH1cbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTQ2Ni1cdFx0cHJpdi1cdTAwM2Vwb3J0X3N0c1s3XS5saW5rID0gZmFsc2U7XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjQ2NzpcdFx0ZHNhX3BvcnRfcGh5bGlua19tYWNfY2hhbmdlKGRzLCA3LCBmYWxzZSk7XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTQ2OC1cdH1cbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jPTcyND1zdGF0aWMgdm9pZCBiY21fc2YyX3N3X2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjcyNTpcdFx0XHRcdHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy03MjYte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNzQ0LVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo3NDU6c3RhdGljIHZvaWQgYmNtX3NmMl9zd19tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy03NDYtXHRcdFx0XHQgIHVuc2lnbmVkIGludCBtb2RlLFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo3NDc6XHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy03NDgte1xuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo3NDk6XHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy03NTAtXHR1MzIgaWRfbW9kZV9kaXMgPSAwLCBwb3J0X21vZGU7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz03OTQ9c3RhdGljIHZvaWQgYmNtX3NmMl9zd19tYWNfbGlua19zZXQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTgxNi1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6ODE3OnN0YXRpYyB2b2lkIGJjbV9zZjJfc3dfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtODE4LVx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTgyMC17XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjgyMTpcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTgyMi1cdHN0cnVjdCBiY21fc2YyX3ByaXYgKnByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy04MzctXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjgzODpzdGF0aWMgdm9pZCBiY21fc2YyX3N3X21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy04MzktXHRcdFx0XHQgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtODQ0LXtcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6ODQ1Olx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtODQ2LVx0c3RydWN0IGJjbV9zZjJfcHJpdiAqcHJpdjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jPTkwNj1zdGF0aWMgdm9pZCBiY21fc2YyX3N3X2ZpeGVkX3N0YXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjkwNzpcdFx0XHRcdCAgIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXR1cylcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtOTA4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jPTEyMDM9c3RhdGljIGludCBiY21fc2YyX3N3X2dldF9zc2V0X2NvdW50KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy0xMjE1LVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzoxMjE2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGJjbV9zZjJfcGh5bGlua19tYWNfb3BzID0ge1xuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy0xMjE3LVx0Lm1hY19jb25maWdcdD0gYmNtX3NmMl9zd19tYWNfY29uZmlnLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9MTIyMj1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGJjbV9zZjJfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtMTIzMC1cdC5nZXRfcGh5X2ZsYWdzXHRcdD0gYmNtX3NmMl9zd19nZXRfcGh5X2ZsYWdzLFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzoxMjMxOlx0LnBoeWxpbmtfZ2V0X2NhcHNcdD0gYmNtX3NmMl9zd19nZXRfY2FwcyxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6MTIzMjpcdC5waHlsaW5rX2ZpeGVkX3N0YXRlXHQ9IGJjbV9zZjJfc3dfZml4ZWRfc3RhdGUsXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTEyMzMtXHQuc3VzcGVuZFx0XHQ9IGJjbV9zZjJfc3dfc3VzcGVuZCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jPTEzNjU9c3RhdGljIGludCBiY21fc2YyX3N3X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy0xNDI2LVx0ZHMtXHUwMDNlb3BzID0gXHUwMDI2YmNtX3NmMl9vcHM7XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjE0Mjc6XHRkcy1cdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcdTAwMjZiY21fc2YyX3BoeWxpbmtfbWFjX29wcztcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtMTQyOC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0zMjE9c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X21heF9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjUtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHNhLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyNzpcdFx0XHRcdCAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0zMzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBkc2FfbG9vcF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzUxLVx0LnBvcnRfbWF4X210dVx0XHQ9IGRzYV9sb29wX3BvcnRfbWF4X210dSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MjpcdC5waHlsaW5rX2dldF9jYXBzXHQ9IGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTMtfTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYz0xNDU4PXN0YXRpYyB2b2lkIGhlbGxjcmVla190ZWFyZG93bihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTQ2My1cbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jOjE0NjQ6c3RhdGljIHZvaWQgaGVsbGNyZWVrX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jOjE0NjU6XHRcdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYy0xNDY2LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYz0xOTAwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgaGVsbGNyZWVrX2RzX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYy0xOTA2LVx0LmdldF90c19pbmZvXHQgICAgICAgPSBoZWxsY3JlZWtfZ2V0X3RzX2luZm8sXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYzoxOTA3Olx0LnBoeWxpbmtfZ2V0X2NhcHMgICAgICA9IGhlbGxjcmVla19waHlsaW5rX2dldF9jYXBzLFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTkwOC1cdC5wb3J0X2JyaWRnZV9mbGFncyAgICAgPSBoZWxsY3JlZWtfYnJpZGdlX2ZsYWdzLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYz00NDg9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo0NDk6a3M4OTk1X21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jOjQ1MDpcdFx0ICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy00NTEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYz00NTQ9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo0NTU6a3M4OTk1X21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTQ1Ni1cdFx0ICAgdW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTQ1OC17XG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NDU5Olx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy00NjAtXHRzdHJ1Y3Qga3M4OTk1X3N3aXRjaCAqa3MgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYz01MDg9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo1MDk6a3M4OTk1X21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTUxMC1cdFx0ICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTUxMS17XG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NTEyOlx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy01MTMtXHRzdHJ1Y3Qga3M4OTk1X3N3aXRjaCAqa3MgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy01MjMtXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NTI0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGtzODk5NV9waHlsaW5rX21hY19vcHMgPSB7XG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNTI1LVx0Lm1hY19jb25maWcgPSBrczg5OTVfbWFjX2NvbmZpZyxcbi0tXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM9NjAyPXN0YXRpYyB2b2lkIGtzODk5NV9wb3J0X3N0cF9zdGF0ZV9zZXQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgdTggc3RhdGUpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTY0OC1cbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo2NDk6c3RhdGljIHZvaWQga3M4OTk1X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzYSwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NjUwOlx0XHRcdFx0ICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTY1MS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jPTczMj1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGtzODk5NV9kc19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTc0MS1cdC5wb3J0X21heF9tdHUgPSBrczg5OTVfZ2V0X21heF9tdHUsXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NzQyOlx0LnBoeWxpbmtfZ2V0X2NhcHMgPSBrczg5OTVfcGh5bGlua19nZXRfY2FwcyxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy03NDMtfTtcbi0tXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM9NzQ2PXN0YXRpYyBpbnQga3M4OTk1X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTgyMC1cdGtzLVx1MDAzZWRzLVx1MDAzZW9wcyA9IFx1MDAyNmtzODk5NV9kc19vcHM7XG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6ODIxOlx0a3MtXHUwMDNlZHMtXHUwMDNlcGh5bGlua19tYWNfb3BzID0gXHUwMDI2a3M4OTk1X3BoeWxpbmtfbWFjX29wcztcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy04MjItXHRrcy1cdTAwM2Vkcy1cdTAwM2Vwcml2ID0ga3M7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jPTEyODM9c3RhdGljIGludCBsYW45MzAzX3BvcnRfbWRiX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMjk3LVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEyOTg6c3RhdGljIHZvaWQgbGFuOTMwM19waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTI5OTpcdFx0XHRcdCAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTMwMC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzMjMtXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTMyNDpzdGF0aWMgdm9pZCBsYW45MzAzX3BoeWxpbmtfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzI1LVx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCBtb2RlLFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEzMjY6XHRcdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTMyNy17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzMjktXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTMzMDpzdGF0aWMgdm9pZCBsYW45MzAzX3BoeWxpbmtfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzMxLVx0XHRcdFx0XHQgIHVuc2lnbmVkIGludCBtb2RlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzM1LVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEzMzY6c3RhdGljIHZvaWQgbGFuOTMwM19waHlsaW5rX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzMzctXHRcdFx0XHRcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzNDIte1xuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEzNDM6XHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzNDQtXHRzdHJ1Y3QgbGFuOTMwMyAqY2hpcCA9IGRwLVx1MDAzZWRzLVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzNzUtXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTM3NjpzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBsYW45MzAzX3BoeWxpbmtfbWFjX29wcyA9IHtcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxMzc3Olx0Lm1hY19jb25maWdcdD0gbGFuOTMwM19waHlsaW5rX21hY19jb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTM3ODpcdC5tYWNfbGlua19kb3duXHQ9IGxhbjkzMDNfcGh5bGlua19tYWNfbGlua19kb3duLFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEzNzk6XHQubWFjX2xpbmtfdXBcdD0gbGFuOTMwM19waHlsaW5rX21hY19saW5rX3VwLFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzODAtfTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM9MTM4Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGxhbjkzMDNfc3dpdGNoX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTM4Ny1cdC5waHlfd3JpdGVcdFx0PSBsYW45MzAzX3BoeV93cml0ZSxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxMzg4Olx0LnBoeWxpbmtfZ2V0X2NhcHNcdD0gbGFuOTMwM19waHlsaW5rX2dldF9jYXBzLFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzODktXHQuZ2V0X2V0aHRvb2xfc3RhdHNcdD0gbGFuOTMwM19nZXRfZXRodG9vbF9zdGF0cyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM9MTQwND1zdGF0aWMgaW50IGxhbjkzMDNfcmVnaXN0ZXJfc3dpdGNoKHN0cnVjdCBsYW45MzAzICpjaGlwKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xNDEzLVx0Y2hpcC1cdTAwM2Vkcy1cdTAwM2VvcHMgPSBcdTAwMjZsYW45MzAzX3N3aXRjaF9vcHM7XG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTQxNDpcdGNoaXAtXHUwMDNlZHMtXHUwMDNlcGh5bGlua19tYWNfb3BzID0gXHUwMDI2bGFuOTMwM19waHlsaW5rX21hY19vcHM7XG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTQxNS1cdGNoaXAtXHUwMDNlZHMtXHUwMDNlcGh5c19taWlfbWFzayA9IEdFTk1BU0soTEFOOTMwM19OVU1fUE9SVFMgLSAxLCAwKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jPTI3PXN0cnVjdCB4d2F5X2dwaHlfbWF0Y2hfZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy0zMS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmM6MzI6c3RhdGljIHZvaWQgZ3N3aXBfeHJ4MjAwX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmM6MzM6XHRcdFx0XHRcdCAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jLTM0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jLTYyLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYzo2MzpzdGF0aWMgdm9pZCBnc3dpcF94cngzMDBfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYzo2NDpcdFx0XHRcdFx0ICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmMtNjUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmM9NDU5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3N3aXBfaHdfaW5mbyBnc3dpcF94cngyMDAgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy00NzUtXHR9LFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYzo0NzY6XHQucGh5bGlua19nZXRfY2FwcyA9IGdzd2lwX3hyeDIwMF9waHlsaW5rX2dldF9jYXBzLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy00NzctXHQucGNlX21pY3JvY29kZSA9IFx1MDAyNmdzd2lwX3BjZV9taWNyb2NvZGUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYz00ODI9c3RhdGljIGNvbnN0IHN0cnVjdCBnc3dpcF9od19pbmZvIGdzd2lwX3hyeDMwMCA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jLTQ5Ni1cdH0sXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jOjQ5NzpcdC5waHlsaW5rX2dldF9jYXBzID0gZ3N3aXBfeHJ4MzAwX3BoeWxpbmtfZ2V0X2NhcHMsXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jLTQ5OC1cdC5wY2VfbWljcm9jb2RlID0gXHUwMDI2Z3N3aXBfcGNlX21pY3JvY29kZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5oPTI1NT1zdHJ1Y3QgZ3N3aXBfaHdfaW5mbyB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuaC0yNjMtXHRlbnVtIGRzYV90YWdfcHJvdG9jb2wgdGFnX3Byb3RvY29sO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuaDoyNjQ6XHR2b2lkICgqcGh5bGlua19nZXRfY2Fwcykoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmg6MjY1Olx0XHRcdFx0IHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmg6MjY2Olx0c3RydWN0IHBoeWxpbmtfcGNzICooKm1hY19zZWxlY3RfcGNzKShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmgtMjY3LVx0XHRcdFx0XHQgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xMjY2PXN0YXRpYyBpbnQgZ3N3aXBfcG9ydF9jaGFuZ2VfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCBuZXdfbXR1KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTEyOTEtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxMjkyOnN0YXRpYyB2b2lkIGdzd2lwX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjEyOTM6XHRcdFx0XHQgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTEyOTQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTEyOTYtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxMjk3Olx0cHJpdi1cdTAwM2Vod19pbmZvLVx1MDAzZXBoeWxpbmtfZ2V0X2NhcHMoZHMsIHBvcnQsIGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xMjk4LX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xMzc1PXN0YXRpYyB2b2lkIGdzd2lwX3BvcnRfc2V0X3BhdXNlKHN0cnVjdCBnc3dpcF9wcml2ICpwcml2LCBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDA0LVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTQwNTpzdGF0aWMgdm9pZCBnc3dpcF9waHlsaW5rX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDA2LVx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgbW9kZSxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE0MDc6XHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQwOC17XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNDA5Olx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0MTAtXHRzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiA9IGRwLVx1MDAzZWRzLVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQ1NS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE0NTY6c3RhdGljIHZvaWQgZ3N3aXBfcGh5bGlua19tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQ1Ny1cdFx0XHRcdFx0dW5zaWduZWQgaW50IG1vZGUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQ1OS17XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNDYwOlx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0NjEtXHRzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiA9IGRwLVx1MDAzZWRzLVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQ2OS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE0NzA6c3RhdGljIHZvaWQgZ3N3aXBfcGh5bGlua19tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0NzEtXHRcdFx0XHQgICAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0NzYte1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTQ3NzpcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDc4LVx0c3RydWN0IGdzd2lwX3ByaXYgKnByaXYgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jPTE1NTk9c3RhdGljIGludCBnc3dpcF9zZXRfbWFjX2VlZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE1NjctXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNTY4OnN0YXRpYyB2b2lkIGdzd2lwX3BoeWxpbmtfbWFjX2Rpc2FibGVfdHhfbHBpKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTU2OS17XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNTcwOlx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE1NzEtXHRzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiA9IGRwLVx1MDAzZWRzLVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTU3Ni1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE1Nzc6c3RhdGljIGludCBnc3dpcF9waHlsaW5rX21hY19lbmFibGVfdHhfbHBpKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTU3OC1cdFx0XHRcdFx0ICAgdTMyIHRpbWVyLCBib29sIHR4X2Nsb2NrX3N0b3ApXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNTc5LXtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE1ODA6XHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTU4MS1cdHN0cnVjdCBnc3dpcF9wcml2ICpwcml2ID0gZHAtXHUwMDNlZHMtXHUwMDNlcHJpdjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xNTkyPXN0YXRpYyBib29sIGdzd2lwX3N1cHBvcnRfZWVlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTYwMS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2MDI6c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqZ3N3aXBfcGh5bGlua19tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2MDMtXHRcdFx0XHRcdFx0XHRwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTYwNC17XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNjA1Olx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2MDYtXHRzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiA9IGRwLVx1MDAzZWRzLVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTYxMy1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2MTQ6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgZ3N3aXBfcGh5bGlua19tYWNfb3BzID0ge1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTYxNTpcdC5tYWNfY29uZmlnXHRcdD0gZ3N3aXBfcGh5bGlua19tYWNfY29uZmlnLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTYxNjpcdC5tYWNfbGlua19kb3duXHRcdD0gZ3N3aXBfcGh5bGlua19tYWNfbGlua19kb3duLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTYxNzpcdC5tYWNfbGlua191cFx0XHQ9IGdzd2lwX3BoeWxpbmtfbWFjX2xpbmtfdXAsXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNjE4Olx0Lm1hY19kaXNhYmxlX3R4X2xwaVx0PSBnc3dpcF9waHlsaW5rX21hY19kaXNhYmxlX3R4X2xwaSxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2MTk6XHQubWFjX2VuYWJsZV90eF9scGlcdD0gZ3N3aXBfcGh5bGlua19tYWNfZW5hYmxlX3R4X2xwaSxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2MjA6XHQubWFjX3NlbGVjdF9wY3NcdFx0PSBnc3dpcF9waHlsaW5rX21hY19zZWxlY3RfcGNzLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTYyMS19O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jPTE2MjM9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBnc3dpcF9zd2l0Y2hfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2NDMtXHQucG9ydF9tYXhfbXR1XHRcdD0gZ3N3aXBfcG9ydF9tYXhfbXR1LFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTY0NDpcdC5waHlsaW5rX2dldF9jYXBzXHQ9IGdzd2lwX3BoeWxpbmtfZ2V0X2NhcHMsXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNjQ1LVx0LmdldF9zdHJpbmdzXHRcdD0gZ3N3aXBfZ2V0X3N0cmluZ3MsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM9MTY3OD1pbnQgZ3N3aXBfcHJvYmVfY29tbW9uKHN0cnVjdCBnc3dpcF9wcml2ICpwcml2LCB1MzIgdmVyc2lvbilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNjkwLVx0cHJpdi1cdTAwM2Vkcy1cdTAwM2VvcHMgPSBcdTAwMjZnc3dpcF9zd2l0Y2hfb3BzO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTY5MTpcdHByaXYtXHUwMDNlZHMtXHUwMDNlcGh5bGlua19tYWNfb3BzID0gXHUwMDI2Z3N3aXBfcGh5bGlua19tYWNfb3BzO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTY5Mi1cdHByaXYtXHUwMDNlZHMtXHUwMDNlcHJpdiA9IHByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM9Mjg9c3RydWN0IGdzdzF4eF9wcml2IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0zNC1cdHN0cnVjdFx0XHRcdHJlZ21hcCAqc2hlbGw7XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzozNTpcdHN0cnVjdFx0XHRcdHBoeWxpbmtfcGNzIHBjcztcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTM2LVx0c3RydWN0IGRlbGF5ZWRfd29ya1x0Y2xlYXJfcmFuZWc7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM9MTI0PXN0YXRpYyB2b2lkIGdzdzF4eF9tZGlvX3JlZ21hcF91bmxvY2sodm9pZCAqbWRpb19sb2NrKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTEyOC1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjEyOTpzdGF0aWMgdW5zaWduZWQgaW50IGdzdzF4eF9wY3NfaW5iYW5kX2NhcHMoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xMzAtXHRcdFx0XHRcdCAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTM0LVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MTM1OnN0YXRpYyBzdHJ1Y3QgZ3N3MXh4X3ByaXYgKnBjc190b19nc3cxeHgoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xMzYte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTEzOS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjE0MDpzdGF0aWMgaW50IGdzdzF4eF9wY3NfZW5hYmxlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTQxLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xNDgtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzoxNDk6c3RhdGljIHZvaWQgZ3N3MXh4X3Bjc19kaXNhYmxlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTUwLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xNjEtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzoxNjI6c3RhdGljIHZvaWQgZ3N3MXh4X3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xNjMtXHRcdFx0XHQgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MTY0Olx0XHRcdFx0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTY1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYz0yMzQ9c3RhdGljIGludCBnc3cxeHhfcGNzX3Jlc2V0KHN0cnVjdCBnc3cxeHhfcHJpdiAqcHJpdiwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0zMzQtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzozMzU6c3RhdGljIGludCBnc3cxeHhfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMzM2LVx0XHRcdCAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0zNjktXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzozNzA6XHRzd2l0Y2ggKHBoeWxpbmtfZ2V0X2xpbmtfdGltZXJfbnMoaW50ZXJmYWNlKSkge1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMzcxLVx0Y2FzZSAxMDAwMDpcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0zOTMtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzozOTQ6XHR0eGFuZWcgPSBwaHlsaW5rX21paV9jMjJfcGNzX2VuY29kZV9hZHZlcnRpc2VtZW50KGludGVyZmFjZSwgYWR2ZXJ0aXNpbmcpO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMzk1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jPTQ1Mz1zdGF0aWMgdm9pZCBnc3cxeHhfcGNzX2NsZWFyX3JhbmVnKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy00NjEtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzo0NjI6c3RhdGljIHZvaWQgZ3N3MXh4X3Bjc19hbl9yZXN0YXJ0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtNDYzLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy00NzctXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzo0Nzg6c3RhdGljIHZvaWQgZ3N3MXh4X3Bjc19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtNDc5LVx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgyMDcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gUEhZIERldmljZSBDb25uZWN0aW9ucyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBQSFkgZGV2aWNlcyBhcmUgYmVpbmcgY29ubmVjdGVkIGFuZCBkaXNjb25uZWN0ZWQgd2l0aGluIHRoaXMgc3lzdGVtLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBwaHlfZGV2aWNlLmNgIGFuZCBgcGh5bGluay5jYC4gSSBuZWVkIGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhleSBpbnRlcmFjdC4KClRvIHRoYXQgZW5kLCBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGlkZW50aWZ5aW5nIGFsbCB0aGUgcG9pbnRzIG9mIGNvbnRhY3QuIEkmIzM5O20gdGhpbmtpbmcsIGEgdGhvcm91Z2ggc2VhcmNoIGZvciB0aGUgY2FsbHMgdG8gZnVuY3Rpb25zIHRoYXQgaGFuZGxlIFBIWSBtYW5hZ2VtZW50IHdpbGwgYmUgaW4gb3JkZXIuIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bGwgbmVlZCB0byB0cmFjayBkb3duIGNhbGxlcnMgb2YgY3J1Y2lhbCBmdW5jdGlvbnMgbGlrZSBgcGh5X2F0dGFjaF9kaXJlY3RgLCBgcGh5X2RldGFjaGAsIGBwaHlsaW5rX2JyaW5ndXBfcGh5YCwgYHBoeWxpbmtfZGlzY29ubmVjdF9waHlgLCBgcGh5X2Nvbm5lY3RgLCBhbmQgYHBoeV9hdHRhY2hgLiBUaGVzZSBhcmUgdGhlIGNvcmUgb3BlcmF0aW9ucywgdGhlIHBsYWNlcyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLCBzbyB0byBzcGVhaywgaW4gYXR0YWNoaW5nLCBkZXRhY2hpbmcsIGNvbm5lY3RpbmcsIGFuZCBkaXNjb25uZWN0aW5nIHRoZSBQSFlzLiBVbmRlcnN0YW5kaW5nIHRoZWlyIHVzYWdlIHBhdHRlcm5zIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgcGljdHVyZSBoZXJlLiBJIHN1c3BlY3QgdGhlcmUgd2lsbCBiZSBzb21lIGludGVyZXN0aW5nIGNvbm5lY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeV9hdHRhY2hfZGlyZWN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM9OTMxPXN0YXRpYyBpbnQgeGdiZV9waHlfZmluZF9waHlfZGV2aWNlKHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTk4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM6OTgzOlx0cmV0ID0gcGh5X2F0dGFjaF9kaXJlY3QocGRhdGEtXHUwMDNlbmV0ZGV2LCBwaHlkZXYsIHBoeWRldi1cdTAwM2VkZXZfZmxhZ3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTk4NC1cdFx0XHRcdFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTk4NS1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM6OTg2Olx0XHRuZXRkZXZfZXJyKHBkYXRhLVx1MDAzZW5ldGRldiwgXCYjMzQ7cGh5X2F0dGFjaF9kaXJlY3QgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtOTg3LVx0XHRwaHlfZGV2aWNlX3JlbW92ZShwaHlkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2VuZXQuYz0xMTU5PWludCBobnNfbmljX2luaXRfcGh5KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgaG5hZV9oYW5kbGUgKmgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jLTExODAtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jOjExODE6XHRcdHJldCA9IHBoeV9hdHRhY2hfZGlyZWN0KG5kZXYsIHBoeV9kZXYsIDAsIGgtXHUwMDNlcGh5X2lmKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2VuZXQuYy0xMTgyLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTIyNT1pbnQgcGh5X2Nvbm5lY3RfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMjMzLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMjM0Olx0cmMgPSBwaHlfYXR0YWNoX2RpcmVjdChkZXYsIHBoeWRldiwgcGh5ZGV2LVx1MDAzZWRldl9mbGFncywgaW50ZXJmYWNlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTIzNS1cdGlmIChyYylcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTE3NDM9c3RhdGljIHZvaWQgcGh5X3Jlc3RvcmVfZ2VucGh5X2lycShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTc0OS0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTc1MDogKiBwaHlfYXR0YWNoX2RpcmVjdCAtIGF0dGFjaCBhIG5ldHdvcmsgZGV2aWNlIHRvIGEgZ2l2ZW4gUEhZIGRldmljZSBwb2ludGVyXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE3NTEtICogQGRldjogbmV0d29yayBkZXZpY2UgdG8gYXR0YWNoXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xNzYzLSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxNzY0OmludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xNzY1LVx0XHQgICAgICB1MzIgZmxhZ3MsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xOTE5LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTkyMDpFWFBPUlRfU1lNQk9MKHBoeV9hdHRhY2hfZGlyZWN0KTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTkyMS1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE5MjYtICogVGhpcyBkZXRhY2hlcyB0aGUgcGh5IGRldmljZSBmcm9tIGl0cyBuZXR3b3JrIGRldmljZSBhbmQgdGhlIHBoeVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxOTI3OiAqIGRyaXZlciwgYW5kIGRyb3BzIHRoZSByZWZlcmVuY2UgY291bnQgdGFrZW4gaW4gcGh5X2F0dGFjaF9kaXJlY3QoKS5cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTkyOC0gKi9cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMjE9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIzNC1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjIzNTpcdHJldHVybiBwaHlfYXR0YWNoX2RpcmVjdChwbC1cdTAwM2VuZXRkZXYsIHBoeSwgZmxhZ3MsIGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyMzYtfVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI0My0gKiBDb25uZWN0IEBwaHkgdG8gdGhlIHBoeWxpbmsgaW5zdGFuY2Ugc3BlY2lmaWVkIGJ5IEBwbCBieSBjYWxsaW5nXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNDQ6ICogcGh5X2F0dGFjaF9kaXJlY3QoKS4gQ29uZmlndXJlIHRoZSBAcGh5IGFjY29yZGluZyB0byB0aGUgTUFDIGRyaXZlciYjMzk7c1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjQ1LSAqIGNhcGFiaWxpdGllcywgc3RhcnQgdGhlIFBIWUxJQiBzdGF0ZSBtYWNoaW5lIGFuZCBlbmFibGUgYW55IGludGVycnVwdHNcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzMDU9aW50IHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzMzgtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIzMzk6XHRyZXQgPSBwaHlfYXR0YWNoX2RpcmVjdChwbC1cdTAwM2VuZXRkZXYsIHBoeV9kZXYsIGZsYWdzLFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzQwLVx0XHRcdFx0cGwtXHUwMDNlbGlua19pbnRlcmZhY2UpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5ODQ2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgUEhZIERldmljZSBJbXBsZW1lbnRhdGlvbnMqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZHJpdmVycyBpbiB0aGUga2VybmVsIHV0aWxpemUgYHBoeWxpbmtgIG9yIGBwaHlfZGV2aWNlYCwgYW5kIG1vcmUgaW1wb3J0YW50bHksIHdoaWNoIG9mIHRoZW0gbWlnaHQgbGVuZCB0aGVtc2VsdmVzIHRvIHRlc3Rpbmcgd2l0aGluIGEgdmlydHVhbCBlbnZpcm9ubWVudC4gSSYjMzk7bSB0aGlua2luZyBRRU1VLCBtYXliZSBhIGR1bW15IHNldHVwLCBuZXRsaW5rLCBvciBldmVuIHN5emthbGxlciBjb3VsZCBiZSB1c2VmdWwgaGVyZS4gVGhlIGtleSBpcyBmaW5kaW5nIHRlc3RhYmxlIHRhcmdldHMuCgpGaXJzdCwgSSBzaG91bGQgY2hlY2sgZm9yIGFueSBleGlzdGluZyB2aXJ0dWFsIFBIWSBkZXZpY2VzLiBBcmUgdGhlcmUgYW55IGRyaXZlcnMgdGhhdCBzaW11bGF0ZSBhIFBIWT8gT3IgbWF5YmUgVVNCIG5ldHdvcmsgZHJpdmVycywgc29tZXRoaW5nIGxpa2UgYGNkY19uY21gIG9yIGB1c2JuZXRgPyBXaGF0IGFib3V0IGEgRFNBIGxvb3BiYWNrIG9yIG1vY2sgTURJTz8gQW5kLCBjcnVjaWFsbHksIGNhbiBJIGxldmVyYWdlIFFFTVUmIzM5O3MgZW11bGF0ZWQgaGFyZHdhcmUsIGxpa2UgdGhlIGBlMTAwMGAgb3IgYGlnYmAgZXRoZXJuZXQgY29udHJvbGxlcnM/IERvIHRob3NlIHVzZSBgcGh5bGlua2Agb3IgYHBoeWxpYmAgaW50ZXJuYWxseT8gVGhhdCYjMzk7cyBhIGh1Z2UgcXVlc3Rpb24gSSBuZWVkIHRvIGFuc3dlci4KClRvIG1ha2UgcHJvZ3Jlc3MsIEkmIzM5O2xsIHN0YXJ0IGJ5IHN5c3RlbWF0aWNhbGx5IHNlYXJjaGluZyBmb3IgdXNhZ2VzIG9mIGtleSBmdW5jdGlvbnMuIExldCYjMzk7cyBzZWUgd2hpY2ggZHJpdmVycyBhcmUgY2FsbGluZyBgcGh5X2Nvbm5lY3RgLCBgcGh5X2F0dGFjaGAsIGBwaHlsaW5rX2NyZWF0ZWAsIGBwaHlsaW5rX2Nvbm5lY3RfcGh5YCwgYW5kIGBtZGlvYnVzX3JlZ2lzdGVyYC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHdoaWNoIHBhcnRzIG9mIHRoZSBjb2RlYmFzZSBhcmUgbW9zdCByZWxldmFudCBhbmQgcG9pbnQgbWUgdG93YXJkcyBwb3RlbnRpYWwgY2FuZGlkYXRlcyBmb3IgdmlydHVhbGl6YXRpb24gYW5kIHRlc3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5bGlua19jcmVhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTExMjg9c3RhdGljIGludCBhbHRlcmFfdHNlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE0MTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MTQxNjpcdHByaXYtXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnByaXYtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTQxNy1cdFx0XHRcdCAgICAgICBvZl9md25vZGVfaGFuZGxlKHByaXYtXHUwMDNlZGV2aWNlLVx1MDAzZW9mX25vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9MTA3ND1zdGF0aWMgaW50IGFnNzF4eF9waHlsaW5rX3NldHVwKHN0cnVjdCBhZzcxeHggKmFnKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTEwOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTEwOTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZhZy1cdTAwM2VwaHlsaW5rX2NvbmZpZywgYWctXHUwMDNlcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMTEwLVx0XHRcdFx0IGFnLVx1MDAzZXBoeV9pZl9tb2RlLCBcdTAwMjZhZzcxeHhfcGh5bGlua19tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTEwMjM9c3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTA4NjpcdGJwLVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZicC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgYnAtXHUwMDNlcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDg3LVx0XHRcdFx0ICAgICBicC1cdTAwM2VwaHlfaW50ZXJmYWNlLCBcdTAwMjZtYWNiX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jPTIwMT1zdGF0aWMgaW50IGRwYWFfbmV0ZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldF9kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0yNzQtXHRtYWNfZGV2LVx1MDAzZXVwZGF0ZV9zcGVlZCA9IGRwYWFfZXRoX2Nncl9zZXRfc3BlZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jOjI3NTpcdG1hY19kZXYtXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNm1hY19kZXYtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI3Ni1cdFx0XHRcdFx0ICBkZXZfZndub2RlKG1hY19kZXYtXHUwMDNlZGV2KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM9NTYwPWludCBkcGFhMl9tYWNfY29ubmVjdChzdHJ1Y3QgZHBhYTJfbWFjICptYWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYzo2MjU6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNi1cdFx0XHRcdCBkcG1hY19ub2RlLCBtYWMtXHUwMDNlaWZfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9OTMxPXN0YXRpYyBpbnQgZW5ldGM0X2xpbmtfaW5pdChzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05NDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTUwOlx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXHUwMDI2ZW5ldGNfcGxfbWFjX29wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTUxLVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk1Mi1cdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBjcmVhdGUgcGh5bGlua1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTUzOlx0XHRnb3RvIGVycl9waHlsaW5rX2NyZWF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05NTQtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo5NTg6ZXJyX3BoeWxpbmtfY3JlYXRlOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk1OS1cdGVuZXRjX21kaW9idXNfZGVzdHJveShwZik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM9Nzk1PXN0YXRpYyBpbnQgZW5ldGNfcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtODc3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6ODc4Olx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXHUwMDI2ZW5ldGNfbWFjX3BoeWxpbmtfb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTg3OS1cdGlmIChlcnIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo4ODA6XHRcdGdvdG8gZXJyX3BoeWxpbmtfY3JlYXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtODgxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTg4OS1cdGVuZXRjX3BoeWxpbmtfZGVzdHJveShwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjg5MDplcnJfcGh5bGlua19jcmVhdGU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy04OTEtXHRlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kocGYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz00MTk9RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfbWRpb2J1c19kZXN0cm95KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy00MjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6NDIxOmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtNDIyLVx0XHRcdCBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpvcHMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTQ2MS1cdHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgPSBtYWNfY2FwcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzo0NjI6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cGYtXHUwMDNlcGh5bGlua19jb25maWcsIG9mX2Z3bm9kZV9oYW5kbGUobm9kZSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtNDYzLVx0XHRcdFx0IHBmLVx1MDAzZWlmX21vZGUsIG9wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTQ3Mi19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6NDczOkVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3BoeWxpbmtfY3JlYXRlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy00NzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oPTEyPXZvaWQgZW5ldGNfbWRpb2J1c19kZXN0cm95KHN0cnVjdCBlbmV0Y19wZiAqcGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oOjEzOmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmgtMTQtXHRcdFx0IGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgKm9wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmM9ODUzPXN0YXRpYyBpbnQgZnNfZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYy05MzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYzo5MzM6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2ZmVwLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKGZlcC1cdTAwM2VkZXYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmMtOTM0LVx0XHRcdFx0IHBoeV9tb2RlLCBcdTAwMjZmc19lbmV0X3BoeWxpbmtfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmM9MzQxOT1zdGF0aWMgaW50IHVjY19nZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UqIG9mZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jLTM1NzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGguYzozNTc0Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnVnZXRoLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKFx1MDAyNmRldi1cdTAwM2VkZXYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmMtMzU3NS1cdFx0XHRcdCBwaHlfaW50ZXJmYWNlLCBcdTAwMjZ1Z2V0aF9tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jPTU0ODA9c3RhdGljIGludCBtdm5ldGFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jLTU1OTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jOjU1OTk6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cHAtXHUwMDNlcGh5bGlua19jb25maWcsIHBkZXYtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmMtNTYwMC1cdFx0XHRcdCBwaHlfbW9kZSwgXHUwMDI2bXZuZXRhX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYz02ODQwPXN0YXRpYyBpbnQgbXZwcDJfcG9ydF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTcxNDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYzo3MTQ4Olx0XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cG9ydC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgcG9ydF9md25vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy03MTQ5LVx0XHRcdFx0XHQgcGh5X21vZGUsIFx1MDAyNm12cHAyX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYz0zNzA9c3RhdGljIGludCBwcmVzdGVyYV9wb3J0X3NmcF9iaW5kKHN0cnVjdCBwcmVzdGVyYV9wb3J0ICpwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jLTQxNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jOjQxNzpcdFx0cGh5X2xpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwb3J0LVx1MDAzZXBoeV9jb25maWcsIGZ3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jLTQxOC1cdFx0XHRcdFx0ICBQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYz00ODI0PXN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTQ5NjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjQ5Njk6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy00OTcwLVx0XHRcdFx0IG9mX2Z3bm9kZV9oYW5kbGUobWFjLVx1MDAzZW9mX25vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmM9NzQ2PXN0cnVjdCBuZXRfZGV2aWNlICpmYm5pY19uZXRkZXZfYWxsb2Moc3RydWN0IGZibmljX2RldiAqZmJkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYzo4MzU6XHRpZiAoZmJuaWNfcGh5bGlua19jcmVhdGUobmV0ZGV2KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy04MzYtXHRcdGZyZWVfbmV0ZGV2KG5ldGRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuaD0xMTE9aW50IGZibmljX3BoeWxpbmtfZ2V0X2ZlY3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oLTExMi1cdFx0XHQgICAgICAgc3RydWN0IGV0aHRvb2xfZmVjcGFyYW0gKmZlY3BhcmFtKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2Lmg6MTEzOmludCBmYm5pY19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmgtMTE0LXZvaWQgZmJuaWNfcGh5bGlua19kZXN0cm95KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jPTE3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBmYm5pY19waHlsaW5rX21hY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTg2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MTg3OiAqIGZibmljX3BoeWxpbmtfY3JlYXRlIC0gUGh5bGluayBkZXZpY2UgY3JlYXRpb25cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE4OC0gKiBAbmV0ZGV2OiBOZXR3b3JrIERldmljZSBzdHJ1Y3QgdG8gYXR0YWNoIHBoeWxpbmsgZGV2aWNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTk2LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jOjE5NzppbnQgZmJuaWNfcGh5bGlua19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE5OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMjMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MjMyOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNmZibi1cdTAwM2VwaHlsaW5rX2NvbmZpZywgTlVMTCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTIzMy1cdFx0XHRcdCBmYm5pY19waHlsaW5rX3NlbGVjdF9pbnRlcmZhY2UoZmJuLVx1MDAzZWF1aSksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTMxNTI9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgbGFuNzQzeF9waHlsaW5rX21hY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxNTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzE2MDpzdGF0aWMgaW50IGxhbjc0M3hfcGh5bGlua19jcmVhdGUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTYxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzIxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMjEyOlx0cGwgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZhZGFwdGVyLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBOVUxMLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMyMTMtXHRcdFx0ICAgIGFkYXB0ZXItXHUwMDNlcGh5X2ludGVyZmFjZSwgXHUwMDI2bGFuNzQzeF9waHlsaW5rX21hY19vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0zNjkxPXN0YXRpYyBpbnQgbGFuNzQzeF9wY2lkZXZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3NTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6Mzc1MTpcdHJldCA9IGxhbjc0M3hfcGh5bGlua19jcmVhdGUoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzc1Mi1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYz03OTE9c3RhdGljIGludCBsYW45NjZ4X3Byb2JlX3BvcnQoc3RydWN0IGxhbjk2NnggKmxhbjk2NngsIHUzMiBwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTg1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jOjg1NjpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwb3J0LVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmMtODU3LVx0XHRcdFx0IHBvcnRucCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM9MzEyPXN0YXRpYyBpbnQgc3Bhcng1X2NyZWF0ZV9wb3J0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMzg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jOjM4OTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZzcHg1X3BvcnQtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMzkwLVx0XHRcdFx0IG9mX2Z3bm9kZV9oYW5kbGUoY29uZmlnLVx1MDAzZW5vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jPTE3NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgb2NlbG90X3BoeWxpbmtfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYzoxNzgwOnN0YXRpYyBpbnQgb2NlbG90X3BvcnRfcGh5bGlua19jcmVhdGUoc3RydWN0IG9jZWxvdCAqb2NlbG90LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3ODEtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnRucClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTgyMTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTgyMi1cdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKHBvcnRucCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM9MTg0Mz1pbnQgb2NlbG90X3Byb2JlX3BvcnQoc3RydWN0IG9jZWxvdCAqb2NlbG90LCBpbnQgcG9ydCwgc3RydWN0IHJlZ21hcCAqdGFyZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYzoxODgwOlx0ZXJyID0gb2NlbG90X3BvcnRfcGh5bGlua19jcmVhdGUob2NlbG90LCBwb3J0LCBwb3J0bnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTg4MS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xMzc0PXN0YXRpYyBpbnQgc3RtbWFjX3BoeWxpbmtfc2V0dXAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTQ2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTQ2NjpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIGRldl9md25vZGUocHJpdi1cdTAwM2VkZXZpY2UpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNDY3LVx0XHRcdFx0IHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwaHlfaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jPTQ1PWludCB0bjQwX3BoeV9yZWdpc3RlcihzdHJ1Y3QgdG40MF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jLTYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmM6NjM6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBQSFlfSU5URVJGQUNFX01PREVfWEFVSSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jLTY0LVx0XHRcdFx0IFx1MDAyNnRuNDBfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYz0yNzU5PWFtNjVfY3Bzd19udXNzX2luaXRfcG9ydF9uZGV2KHN0cnVjdCBhbTY1X2Nwc3dfY29tbW9uICpjb21tb24sIHUzMiBwb3J0X2lkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jLTI4NDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jOjI4NDQ6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cG9ydC1cdTAwM2VzbGF2ZS5waHlsaW5rX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMjg0NS1cdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKHBvcnQtXHUwMDNlc2xhdmUucG9ydF9ucCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jPTEzMD1zdGF0aWMgaW50IG5nYmVfcGh5bGlua19pbml0KHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jLTE0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYzoxNTA6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBwaHlfbW9kZSwgXHUwMDI2bmdiZV9tYWNfb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYy0xNTEtXHRpZiAoSVNfRVJSKHBoeWxpbmspKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmM9NDgyPWludCB0eGdiZV9waHlsaW5rX2luaXRfYW1sKHN0cnVjdCB0eGdiZSAqdHhnYmUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYy01MTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jOjUxMzpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIE5VTEwsIHBoeV9tb2RlLCBcdTAwMjZ0eGdiZV9tYWNfb3BzX2FtbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jLTUxNC1cdGlmIChJU19FUlIocGh5bGluaykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYz0yNjg9c3RhdGljIGludCB0eGdiZV9waHlsaW5rX2luaXQoc3RydWN0IHR4Z2JlICp0eGdiZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTI5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmM6MjkzOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgZndub2RlLCBwaHlfbW9kZSwgXHUwMDI2dHhnYmVfbWFjX29wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTI5NC1cdGlmIChJU19FUlIocGh5bGluaykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz0yNzk1PXN0YXRpYyBpbnQgYXhpZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzEyMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzEyMTpcdGxwLVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZscC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTIyLVx0XHRcdFx0ICAgICBscC1cdTAwM2VwaHlfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjUtXHRcdHJldCA9IFBUUl9FUlIobHAtXHUwMDNlcGh5bGluayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMxMjY6XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O3BoeWxpbmtfY3JlYXRlIGVycm9yICglaSlcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjctXHRcdGdvdG8gY2xlYW51cF9tZGlvO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NTE1PXN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9tYWNfYW5kX3BjcyhzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzAtXHRpZiAocGNzKSB7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjUzMTpcdFx0LyogVGhlIFBDUywgaWYgcHJlc2VudCwgbXVzdCBiZSBzZXR1cCBiZWZvcmUgcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzItXHRcdCAqIGhhcyBiZWVuIGNhbGxlZC4gSWYgdGhlIG9wcyBpcyBub3QgaW5pdGlhbGlzZWQsIHByaW50IGFuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM4PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDcwLSAqIHBoeWxpbmtfcGNzX25lZ19tb2RlKCkgLSBoZWxwZXIgdG8gZGV0ZXJtaW5lIFBDUyBpbmJhbmQgbW9kZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDcxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNzItICogQHBjczogYSBwb2ludGVyIHRvIFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTc2OD1zdGF0aWMgaW50IHBoeWxpbmtfcmVnaXN0ZXJfc2ZwKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3OTItICogcGh5bGlua19zZXRfZml4ZWRfbGluaygpIC0gc2V0IHRoZSBmaXhlZCBsaW5rXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3OTM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc5NC0gKiBAc3RhdGU6IGEgcG9pbnRlciB0byBhIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xODMwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmspO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzMi0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgzMzogKiBwaHlsaW5rX2NyZWF0ZSgpIC0gY3JlYXRlIGEgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODM0LSAqIEBjb25maWc6IGEgcG9pbnRlciB0byB0aGUgdGFyZ2V0IFx1MDAyNnN0cnVjdCBwaHlsaW5rX2NvbmZpZ1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg0Ny0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTg0ODpzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NDktXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM1LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkzNjpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2NyZWF0ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MzctXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM5LSAqIHBoeWxpbmtfZGVzdHJveSgpIC0gY2xlYW51cCBhbmQgZGVzdHJveSB0aGUgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTQwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NDEtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE5NTY9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19kZXN0cm95KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NTktICogcGh5bGlua19leHBlY3RzX3BoeSgpIC0gRGV0ZXJtaW5lIGlmIHBoeWxpbmsgZXhwZWN0cyBhIHBoeSB0byBiZSBhdHRhY2hlZFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTYwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NjEtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMjE9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIzOS0gKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNDA6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI0MS0gKiBAcGh5OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5X2RldmljZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNzM9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19jb25uZWN0X3BoeSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjc2LSAqIHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoKSAtIGNvbm5lY3QgdGhlIFBIWSBzcGVjaWZpZWQgaW4gdGhlIERUIG1vZGUuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNzc6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI3OC0gKiBAZG46IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBkZXZpY2Vfbm9kZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyOTI9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19vZl9waHlfY29ubmVjdCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjk1LSAqIHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KCkgLSBjb25uZWN0IHRoZSBQSFkgc3BlY2lmaWVkIGluIHRoZSBmd25vZGUuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyOTY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI5Ny0gKiBAZndub2RlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZndub2RlX2hhbmRsZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzNTE9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM1NS0gKiAgIGluc3RhbmNlLlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzU2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNTctICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzNzk9c3RhdGljIHZvaWQgcGh5bGlua19saW5rX2NoYW5nZWQoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIHVwLCBjb25zdCBjaGFyICp3aGF0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM4OC0gKiBwaHlsaW5rX21hY19jaGFuZ2UoKSAtIG5vdGlmeSBwaHlsaW5rIG9mIGEgY2hhbmdlIGluIE1BQyBzdGF0ZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzg5OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzOTAtICogQHVwOiBpbmRpY2F0ZXMgd2hldGhlciB0aGUgbGluayBpcyBjdXJyZW50bHkgdXAuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDIxPXN0YXRpYyBpcnFyZXR1cm5fdCBwaHlsaW5rX2xpbmtfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQzMS0gKiBwaHlsaW5rX3N0YXJ0KCkgLSBzdGFydCBhIHBoeWxpbmsgaW5zdGFuY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjQzMjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDMzLSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDk0PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3RhcnQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ5Ny0gKiBwaHlsaW5rX3N0b3AoKSAtIHN0b3AgYSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0OTg6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ5OS0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjUyOD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N0b3ApO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUzMS0gKiBwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKCkgLSBibG9jayBQSFkgYWJpbGl0eSB0byBzdG9wIHJlY2VpdmUgY2xvY2sgaW4gTFBJXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI1MzI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUzMy0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjU1Nz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NjAtICogcGh5bGlua19yeF9jbGtfc3RvcF91bmJsb2NrKCkgLSB1bmJsb2NrIFBIWSBhYmlsaXR5IHRvIHN0b3AgcmVjZWl2ZSBjbG9ja1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTYxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NjItICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1OTk9c3RhdGljIGJvb2wgcGh5bGlua19waHlfcG1fc3BlZWRfY3RybChzdHJ1Y3QgcGh5bGluayAqcGwpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjA2LSAqIHBoeWxpbmtfc3VzcGVuZCgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2Ugc3VzcGVuZCBldmVudFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjA3OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MDgtICogQG1hY193b2w6IHRydWUgaWYgdGhlIE1BQyBuZWVkcyB0byByZWNlaXZlIHBhY2tldHMgZm9yIFdha2Utb24tTGFuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjU4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3VzcGVuZCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjYxLSAqIHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUoKSAtIHByZXBhcmUgdG8gcmVzdW1lIGEgbmV0d29yayBkZXZpY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjY2MjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjYzLSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjgzPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY4Ni0gKiBwaHlsaW5rX3Jlc3VtZSgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2UgcmVzdW1lIGV2ZW50XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2ODc6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY4OC0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjcyNj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Jlc3VtZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzI5LSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfd29sKCkgLSBnZXQgdGhlIHdha2Ugb24gbGFuIHBhcmFtZXRlcnMgZm9yIHRoZSBQSFlcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjczMDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzMxLSAqIEB3b2w6IGEgcG9pbnRlciB0byBcdTAwMjZzdHJ1Y3QgZXRodG9vbF93b2xpbmZvIHRvIGhvbGQgdGhlIHJlYWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjc2Mz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X3dvbCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzY2LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfd29sKCkgLSBzZXQgd2FrZSBvbiBsYW4gcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzY3OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3NjgtICogQHdvbDogYSBwb2ludGVyIHRvIFx1MDAyNnN0cnVjdCBldGh0b29sX3dvbGluZm8gZm9yIHRoZSBkZXNpcmVkIHBhcmFtZXRlcnNcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI4OTU9c3RhdGljIHZvaWQgcGh5bGlua19nZXRfa3NldHRpbmdzKGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjkxMC0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCgpIC0gZ2V0IHRoZSBjdXJyZW50IGxpbmsgc2V0dGluZ3NcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjkxMTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTEyLSAqIEBrc2V0OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyB0byBob2xkIGxpbmsgc2V0dGluZ3Ncbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI5NjM9c3RhdGljIGJvb2wgcGh5bGlua192YWxpZGF0ZV9wY3NfaW5iYW5kX2F1dG9uZWcoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk4NC0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCgpIC0gc2V0IHRoZSBsaW5rIHNldHRpbmdzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5ODU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk4Ni0gKiBAa3NldDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgZm9yIHRoZSBkZXNpcmVkIG1vZGVzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTUxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNTQtICogcGh5bGlua19ldGh0b29sX253YXlfcmVzZXQoKSAtIHJlc3RhcnQgbmVnb3RpYXRpb25cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE1NTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTU2LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTc2PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzktICogcGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKCkgLSBnZXQgdGhlIGN1cnJlbnQgcGF1c2UgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTgwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxODEtICogQHBhdXNlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTkyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTk1LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSgpIC0gc2V0IHRoZSBjdXJyZW50IHBhdXNlIHBhcmFtZXRlcnNcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE5NjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTk3LSAqIEBwYXVzZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI3OD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI4Mi0gKiAgIGNvdW50ZXJcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzI4MzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKS5cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI4NC0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzMwMT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2dldF9lZWVfZXJyKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMDQtICogcGh5bGlua19ldGh0b29sX2dldF9lZWUoKSAtIHJlYWQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMzA1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMDYtICogQGVlZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIHJlYWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzMyNz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X2VlZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzMwLSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfZWVlKCkgLSBzZXQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMzMxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMzItICogQGVlZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIGRlc2lyZWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzUwMT1zdGF0aWMgaW50IHBoeWxpbmtfbWlpX3dyaXRlKHN0cnVjdCBwaHlsaW5rICpwbCwgdW5zaWduZWQgaW50IHBoeV9pZCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MTktICogcGh5bGlua19taWlfaW9jdGwoKSAtIGdlbmVyaWMgbWlpIGlvY3RsIGludGVyZmFjZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTIwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MjEtICogQGlmcjogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGlmcmVxIGZvciBzb2NrZXQgaW9jdGxzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNTk0PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfbWlpX2lvY3RsKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1OTgtICogICBsaW5rIHBhcnRuZXJzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM1OTk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYwMC0gKiBAc3luYzogcGVyZm9ybSBhY3Rpb24gc3luY2hyb25vdXNseVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzYxOT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NwZWVkX2Rvd24pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYyMy0gKiAgIHBoeWxpbmtfc3BlZWRfZG93bigpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM2MjQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYyNS0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDM3OD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX21paV9jNDVfcGNzX2dldF9zdGF0ZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MzgyLSAqXHRcdFx0XHQgd2hpY2ggbG9zZXMgc3RhdGVcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDM4MzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzg0LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00Mzk5PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcmVwbGF5X2xpbmtfYmVnaW4pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDQwMy0gKlx0XHRcdCAgICAgICB3aGljaCBsb3N0IHN0YXRlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQ0MDQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDQwNS0gKlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz03OTk9c3RhdGljIGludCBheDg4NzcyX3BoeWxpbmtfc2V0dXAoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTktXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODIwOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnByaXYtXHUwMDNlcGh5bGlua19jb25maWcsIGRldi1cdTAwM2VuZXQtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MjEtXHRcdFx0XHQgcGh5X2lmX21vZGUsIFx1MDAyNmF4ODg3NzJfcGh5bGlua19tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTI3OTk9c3RhdGljIGludCBsYW43OHh4X3BoeWxpbmtfc2V0dXAoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODM4LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODM5Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKHBjLCBkZXYtXHUwMDNlbmV0LVx1MDAzZWRldi5md25vZGUsXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4NDAtXHRcdFx0XHQgZGV2LVx1MDAzZWludGVyZmFjZSwgXHUwMDI2bGFuNzh4eF9waHlsaW5rX21hY19vcHMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMjc0CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQW5hbHlzaXMgb2YgdGhlIE5ldHdvcmsgRHJpdmVyIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJJiMzOTttIHNlZWluZyBhIHBhdHRlcm4gaGVyZS4gTG9va2luZyBhdCB0aGVzZSBuZXR3b3JrIGRyaXZlciBpbXBsZW1lbnRhdGlvbnMg4oCTIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jYCwgYGxhbjc4eHguY2AsIGFuZCB0aGUgd2hvbGUgYGRyaXZlcnMvbmV0L2RzYS9gIGRpcmVjdG9yeSwgaW5jbHVkaW5nIHRoYXQgYGRzYV9sb29wLmNgIGV4YW1wbGUg4oCTIGl0JiMzOTtzIGNsZWFyIHRoZXkmIzM5O3JlIGxldmVyYWdpbmcgcGh5bGluay4gVGhhdCYjMzk7cyBhIHNvbGlkIGFyY2hpdGVjdHVyYWwgY2hvaWNlLCBhbmQgaXQmIzM5O3Mgc29tZXRoaW5nIEkmIzM5O3ZlIGJlZW4ga2VlcGluZyBhbiBleWUgb24uIEFuZCwgb2YgY291cnNlLCB0aGUgbWVudGlvbiBvZiBVU0IgZGV2aWNlcyB1c2luZyBnYWRnZXQgZW11bGF0aW9uIHRocm91Z2ggc3l6a2FsbGVyIG9wZW5zIHVwIHNvbWUgZmFzY2luYXRpbmcgdGVzdGluZyBwb3NzaWJpbGl0aWVzIHZpYSByYXctZ2FkZ2V0IGFuZCB2dXNiLgoKVGhlIG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGludG8gdGhlIHBhdGNoIGNoYW5nZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aHkqIHRoZXkgYWRvcHRlZCBwaHlsaW5rIGFuZCB3aGF0IHNwZWNpZmljIHByb2JsZW0gdGhleSB3ZXJlIGFkZHJlc3NpbmcsIG9yIHdoYXQgbmV3IGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gYWRkZWQuIFRoYXQgcmVxdWlyZXMgYSBjYXJlZnVsIGV4YW1pbmF0aW9uIG9mIHRoZSBkaWZmcy4KCk5vdywgdG8gZ2V0IGEgZGVlcGVyIGhhbmRsZSBvbiB0aGUgcGh5bGluayBpbnRlcm5hbHMgdGhlbXNlbHZlcywgSSBuZWVkIHRvIGJydXNoIHVwIG9uIG15IGtub3dsZWRnZSBvZiB0aGUgcGh5L3BoeWxpbmsgYXJjaGl0ZWN0dXJlLiBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AgZnJvbSBhcm91bmQgbGluZXMgMTczMCB0byAxOTgwIGFuZCBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AgZnJvbSBsaW5lcyAyMDgwIHRvIDIzNzAuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBncmFzcCBvZiB0aGUgY29yZSBjb25jZXB0cywgZGF0YSBzdHJ1Y3R1cmVzLCBhbmQgdGhlIGNvbW11bmljYXRpb24gZmxvdyBiZXR3ZWVuIHRoZSBQSFkgYW5kIHRoZSBuZXR3b3JrIGRyaXZlci4gVGhpcyBzaG91bGQgYWxsb3cgbWUgdG8gdW5kZXJzdGFuZCBob3cgdGhvc2UgZGV2aWNlIGRyaXZlcnMgYXJlIHVzaW5nIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAyMTo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNzMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDcwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE3MzA6XHR9XG4xNzMxOlx0XG4xNzMyOlx0c3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydilcbjE3MzM6XHR7XG4xNzM0Olx0XHRyZXR1cm4gcGh5ZHJ2LVx1MDAzZWNvbmZpZ19pbnRyIFx1MDAyNlx1MDAyNiBwaHlkcnYtXHUwMDNlaGFuZGxlX2ludGVycnVwdDtcbjE3MzU6XHR9XG4xNzM2Olx0XG4xNzM3Olx0LyogR2l2ZSBiYWNrIHRoZSBpbnRlcnJ1cHQgcGh5X3Byb2JlKCkgcGFya2VkIHdoZW4gYSBkcml2ZXIgd2l0aCBubyBpbnRlcnJ1cHRcbjE3Mzg6XHQgKiBjYWxsYmFja3MgYm91bmQuIG1kaW9idXNfYWxsb2MoKSBkZWZhdWx0cyBidXMtXHUwMDNlaXJxW10gdG8gUEhZX1BPTEwgYW5kIHRoZVxuMTczOTpcdCAqIGJpbmQgY3ljbGUgZG9lcyBub3QgdG91Y2ggdGhlIHRhYmxlLCBzbyB3aGF0ZXZlciB0aGUgYnVzIHJlY29yZGVkIHRoZXJlXG4xNzQwOlx0ICogc3RpbGwgc3RhbmRzLiBPbmx5IHRoZSBwYXJraW5nIGlzIHVuZG9uZTogYW55IG90aGVyIHZhbHVlIHRoZSBQSFkgY2Fycmllc1xuMTc0MTpcdCAqIHdhcyBwdXQgdGhlcmUgYnkgc29tZW9uZSBlbHNlLlxuMTc0MjpcdCAqL1xuMTc0MzpcdHN0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbjE3NDQ6XHR7XG4xNzQ1Olx0XHRpZiAocGh5ZGV2LVx1MDAzZWlycSA9PSBQSFlfUE9MTClcbjE3NDY6XHRcdFx0cGh5ZGV2LVx1MDAzZWlycSA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2VpcnFbcGh5ZGV2LVx1MDAzZW1kaW8uYWRkcl07XG4xNzQ3Olx0fVxuMTc0ODpcdFxuMTc0OTpcdC8qKlxuMTc1MDpcdCAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcbjE3NTE6XHQgKiBAZGV2OiBuZXR3b3JrIGRldmljZSB0byBhdHRhY2hcbjE3NTI6XHQgKiBAcGh5ZGV2OiBQb2ludGVyIHRvIHBoeV9kZXZpY2UgdG8gYXR0YWNoXG4xNzUzOlx0ICogQGZsYWdzOiBQSFkgZGV2aWNlJiMzOTtzIGRldl9mbGFnc1xuMTc1NDpcdCAqIEBpbnRlcmZhY2U6IFBIWSBkZXZpY2UmIzM5O3MgaW50ZXJmYWNlXG4xNzU1Olx0ICpcbjE3NTY6XHQgKiBEZXNjcmlwdGlvbjogQ2FsbGVkIGJ5IGRyaXZlcnMgdG8gYXR0YWNoIHRvIGEgcGFydGljdWxhciBQSFlcbjE3NTc6XHQgKiAgICAgZGV2aWNlLiBUaGUgcGh5X2RldmljZSBpcyBmb3VuZCwgYW5kIHByb3Blcmx5IGhvb2tlZCB1cFxuMTc1ODpcdCAqICAgICB0byB0aGUgcGh5X2RyaXZlci4gIElmIG5vIGRyaXZlciBpcyBhdHRhY2hlZCwgdGhlbiBhXG4xNzU5Olx0ICogICAgIGdlbmVyaWMgZHJpdmVyIGlzIHVzZWQuICBUaGUgcGh5X2RldmljZSBpcyBnaXZlbiBhIHB0ciB0b1xuMTc2MDpcdCAqICAgICB0aGUgYXR0YWNoaW5nIGRldmljZSwgYW5kIGdpdmVuIGEgY2FsbGJhY2sgZm9yIGxpbmsgc3RhdHVzXG4xNzYxOlx0ICogICAgIGNoYW5nZS4gIFRoZSBwaHlfZGV2aWNlIGlzIHJldHVybmVkIHRvIHRoZSBhdHRhY2hpbmcgZHJpdmVyLlxuMTc2MjpcdCAqICAgICBUaGlzIGZ1bmN0aW9uIHRha2VzIGEgcmVmZXJlbmNlIG9uIHRoZSBwaHkgZGV2aWNlLlxuMTc2MzpcdCAqL1xuMTc2NDpcdGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuMTc2NTpcdFx0XHQgICAgICB1MzIgZmxhZ3MsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4xNzY2Olx0e1xuMTc2NzpcdFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cztcbjE3Njg6XHRcdHN0cnVjdCBkZXZpY2UgKmQgPSBcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXY7XG4xNzY5Olx0XHRzdHJ1Y3QgbW9kdWxlICpuZGV2X293bmVyID0gTlVMTDtcbjE3NzA6XHRcdGludCBlcnI7XG4xNzcxOlx0XG4xNzcyOlx0XHQvKiBGb3IgRXRoZXJuZXQgZGV2aWNlIGRyaXZlcnMgdGhhdCByZWdpc3RlciB0aGVpciBvd24gTURJTyBidXMsIHdlXG4xNzczOlx0XHQgKiB3aWxsIGhhdmUgYnVzLVx1MDAzZW93bmVyIG1hdGNoIG5kZXZfbW9kLCBzbyB3ZSBkbyBub3Qgd2FudCB0byBpbmNyZW1lbnRcbjE3NzQ6XHRcdCAqIG91ciBvd24gbW9kdWxlLVx1MDAzZXJlZmNudCBoZXJlLCBvdGhlcndpc2Ugd2Ugd291bGQgbm90IGJlIGFibGUgdG9cbjE3NzU6XHRcdCAqIHVubG9hZCBsYXRlciBvbi5cbjE3NzY6XHRcdCAqL1xuMTc3NzpcdFx0aWYgKGRldilcbjE3Nzg6XHRcdFx0bmRldl9vd25lciA9IGRldi1cdTAwM2VkZXYucGFyZW50LVx1MDAzZWRyaXZlci1cdTAwM2Vvd25lcjtcbjE3Nzk6XHRcdGlmIChuZGV2X293bmVyICE9IGJ1cy1cdTAwM2Vvd25lciBcdTAwMjZcdTAwMjYgIXRyeV9tb2R1bGVfZ2V0KGJ1cy1cdTAwM2Vvd25lcikpIHtcbjE3ODA6XHRcdFx0cGh5ZGV2X2VycihwaHlkZXYsIFwmIzM0O2ZhaWxlZCB0byBnZXQgdGhlIGJ1cyBtb2R1bGVcXG5cJiMzNDspO1xuMTc4MTpcdFx0XHRyZXR1cm4gLUVJTztcbjE3ODI6XHRcdH1cbjE3ODM6XHRcbjE3ODQ6XHRcdGdldF9kZXZpY2UoZCk7XG4xNzg1Olx0XG4xNzg2Olx0XHQvKiBBc3N1bWUgdGhhdCBpZiB0aGVyZSBpcyBubyBkcml2ZXIsIHRoYXQgaXQgZG9lc24mIzM5O3RcbjE3ODc6XHRcdCAqIGV4aXN0LCBhbmQgd2Ugc2hvdWxkIHVzZSB0aGUgZ2VucGh5IGRyaXZlci5cbjE3ODg6XHRcdCAqL1xuMTc4OTpcdFx0aWYgKCFkLVx1MDAzZWRyaXZlcikge1xuMTc5MDpcdFx0XHRpZiAocGh5ZGV2LVx1MDAzZWlzX2M0NSlcbjE3OTE6XHRcdFx0XHRkLVx1MDAzZWRyaXZlciA9IFx1MDAyNmdlbnBoeV9jNDVfZHJpdmVyLm1kaW9kcnYuZHJpdmVyO1xuMTc5MjpcdFx0XHRlbHNlXG4xNzkzOlx0XHRcdFx0ZC1cdTAwM2Vkcml2ZXIgPSBcdTAwMjZnZW5waHlfZHJpdmVyLm1kaW9kcnYuZHJpdmVyO1xuMTc5NDpcdFxuMTc5NTpcdFx0XHRwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDE7XG4xNzk2Olx0XHR9XG4xNzk3Olx0XG4xNzk4Olx0XHRpZiAoIXRyeV9tb2R1bGVfZ2V0KGQtXHUwMDNlZHJpdmVyLVx1MDAzZW93bmVyKSkge1xuMTc5OTpcdFx0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCYjMzQ7ZmFpbGVkIHRvIGdldCB0aGUgZGV2aWNlIGRyaXZlciBtb2R1bGVcXG5cJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAyMTo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjk5MAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQgZGl2aW5nIGludG8gdGhlIGNvZGU6CgoqKkRlZXBlciBEaXZlIGludG8gUEhZIERyaXZlciBJbnRlcmFjdGlvbnMqKgoKQWxyaWdodCwgdGhlIGRpZmYgaXMgaW50ZXJlc3RpbmcsIGJ1dCBJIG5lZWQgYSBtb3JlIGNvbXBsZXRlIHBpY3R1cmUuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIGBwaHlfZGV2aWNlLmNgIGFuZCBgcGh5bGluay5jYC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG9uIHRoZSBjb2RlIGFyb3VuZCB0aGF0IGNoYW5nZS4gSSBrbm93IHRoZXNlIGZpbGVzIGludGltYXRlbHkg4oCTIHRoZXkmIzM5O3JlIHRoZSBoZWFydCBvZiBob3cgd2UgbWFuYWdlIHRoZSBwaHlzaWNhbCBsYXllciBpbnRlcmZhY2UgYW5kIGxpbmsgbmVnb3RpYXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoaXMgbW9kaWZpY2F0aW9uIGltcGFjdHMgdGhlIGludGVyYWN0aW9ucyBiZXR3ZWVuIHRoZXNlIHR3byBjb3JlIGNvbXBvbmVudHMuIFdoYXQgYXJlIHRoZSBkZXBlbmRlbmNpZXM/IFdoYXQgc2lkZSBlZmZlY3RzIG1pZ2h0IHRoaXMgaGF2ZT8gQSBjdXJzb3J5IGdsYW5jZSBhdCB0aGUgZGlmZiBpc24mIzM5O3QgZW5vdWdoOyBJIG5lZWQgdG8gc2VlIHRoZSBjb250ZXh0LCB0aGUgZnVuY3Rpb24gY2FsbHMsIHRoZSBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgbWFuaXB1bGF0ZWQuIFRoaXMgZGVlcGVyIGRpdmUgd2lsbCBnaXZlIG1lIHRoZSBpbnNpZ2h0IEkgcmVxdWlyZSB0byB2YWxpZGF0ZSB0aGUgY2hhbmdlIGFuZCB1bmRlcnN0YW5kIGFueSBwb3RlbnRpYWwgaW1wbGljYXRpb25zLiBJIHdhbnQgdG8gc2VlIHRoZSAqd2h5KiBhcyB3ZWxsIGFzIHRoZSAqd2hhdCouIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCB1bmRlcnN0YW5kIHRoaXMgZnVsbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4OTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE4OTA6XHRcbjE4OTE6XHRcdHBoeV9yZXN1bWUocGh5ZGV2KTtcbjE4OTI6XHRcbjE4OTM6XHRcdC8qKlxuMTg5NDpcdFx0ICogSWYgdGhlIGV4dGVybmFsIHBoeSB1c2VkIGJ5IGN1cnJlbnQgbWFjIGludGVyZmFjZSBpcyBtYW5hZ2VkIGJ5XG4xODk1Olx0XHQgKiBhbm90aGVyIG1hYyBpbnRlcmZhY2UsIHNvIHdlIHNob3VsZCBjcmVhdGUgYSBkZXZpY2UgbGluayBiZXR3ZWVuXG4xODk2Olx0XHQgKiBwaHkgZGV2IGFuZCBtYWMgZGV2LlxuMTg5NzpcdFx0ICovXG4xODk4Olx0XHRpZiAoZGV2IFx1MDAyNlx1MDAyNiBwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlcGFyZW50IFx1MDAyNlx1MDAyNiBkZXYtXHUwMDNlZGV2LnBhcmVudCAhPSBwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlcGFyZW50KVxuMTg5OTpcdFx0XHRwaHlkZXYtXHUwMDNlZGV2bGluayA9IGRldmljZV9saW5rX2FkZChkZXYtXHUwMDNlZGV2LnBhcmVudCwgXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2LFxuMTkwMDpcdFx0XHRcdFx0XHRcdCAgRExfRkxBR19QTV9SVU5USU1FIHwgRExfRkxBR19TVEFURUxFU1MpO1xuMTkwMTpcdFxuMTkwMjpcdFx0cmV0dXJuIGVycjtcbjE5MDM6XHRcbjE5MDQ6XHRlcnJvcjpcbjE5MDU6XHRcdC8qIHBoeV9kZXRhY2goKSBkb2VzIGFsbCBvZiB0aGUgY2xlYW51cCBiZWxvdyAqL1xuMTkwNjpcdFx0cGh5X2RldGFjaChwaHlkZXYpO1xuMTkwNzpcdFx0cmV0dXJuIGVycjtcbjE5MDg6XHRcbjE5MDk6XHRlcnJvcl9tb2R1bGVfcHV0OlxuMTkxMDpcdFx0bW9kdWxlX3B1dChkLVx1MDAzZWRyaXZlci1cdTAwM2Vvd25lcik7XG4xOTExOlx0XHRwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHBoeWRldik7XG4xOTEyOlx0XHRwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDA7XG4xOTEzOlx0XHRkLVx1MDAzZWRyaXZlciA9IE5VTEw7XG4xOTE0Olx0ZXJyb3JfcHV0X2RldmljZTpcbjE5MTU6XHRcdHB1dF9kZXZpY2UoZCk7XG4xOTE2Olx0XHRpZiAobmRldl9vd25lciAhPSBidXMtXHUwMDNlb3duZXIpXG4xOTE3Olx0XHRcdG1vZHVsZV9wdXQoYnVzLVx1MDAzZW93bmVyKTtcbjE5MTg6XHRcdHJldHVybiBlcnI7XG4xOTE5Olx0fVxuMTkyMDpcdEVYUE9SVF9TWU1CT0wocGh5X2F0dGFjaF9kaXJlY3QpO1xuMTkyMTpcdFxuMTkyMjpcdC8qKlxuMTkyMzpcdCAqIHBoeV9kZXRhY2ggLSBkZXRhY2ggYSBQSFkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlXG4xOTI0Olx0ICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0XG4xOTI1Olx0ICpcbjE5MjY6XHQgKiBUaGlzIGRldGFjaGVzIHRoZSBwaHkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlIGFuZCB0aGUgcGh5XG4xOTI3Olx0ICogZHJpdmVyLCBhbmQgZHJvcHMgdGhlIHJlZmVyZW5jZSBjb3VudCB0YWtlbiBpbiBwaHlfYXR0YWNoX2RpcmVjdCgpLlxuMTkyODpcdCAqL1xuMTkyOTpcdHZvaWQgcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuMTkzMDpcdHtcbjE5MzE6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2O1xuMTkzMjpcdFx0c3RydWN0IG1vZHVsZSAqbmRldl9vd25lciA9IE5VTEw7XG4xOTMzOlx0XHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuMTkzNDpcdFxuMTkzNTpcdFx0aWYgKHBoeWRldi1cdTAwM2VkZXZsaW5rKSB7XG4xOTM2Olx0XHRcdGRldmljZV9saW5rX2RlbChwaHlkZXYtXHUwMDNlZGV2bGluayk7XG4xOTM3Olx0XHRcdHBoeWRldi1cdTAwM2VkZXZsaW5rID0gTlVMTDtcbjE5Mzg6XHRcdH1cbjE5Mzk6XHRcbjE5NDA6XHRcdGlmIChwaHlkZXYtXHUwMDNlc3lzZnNfbGlua3MpIHtcbjE5NDE6XHRcdFx0aWYgKGRldilcbjE5NDI6XHRcdFx0XHRzeXNmc19yZW1vdmVfbGluayhcdTAwMjZkZXYtXHUwMDNlZGV2LmtvYmosIFwmIzM0O3BoeWRldlwmIzM0Oyk7XG4xOTQzOlx0XHRcdHN5c2ZzX3JlbW92ZV9saW5rKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldi5rb2JqLCBcJiMzNDthdHRhY2hlZF9kZXZcJiMzNDspO1xuMTk0NDpcdFx0fVxuMTk0NTpcdFxuMTk0NjpcdFx0aWYgKCFwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2KVxuMTk0NzpcdFx0XHRzeXNmc19yZW1vdmVfZmlsZShcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYua29iaixcbjE5NDg6XHRcdFx0XHRcdCAgXHUwMDI2ZGV2X2F0dHJfcGh5X3N0YW5kYWxvbmUuYXR0cik7XG4xOTQ5Olx0XG4xOTUwOlx0XHRwaHlfc3VzcGVuZChwaHlkZXYpO1xuMTk1MTpcdFx0aWYgKGRldikge1xuMTk1MjpcdFx0XHRzdHJ1Y3QgaHd0c3RhbXBfcHJvdmlkZXIgKmh3cHJvdjtcbjE5NTM6XHRcbjE5NTQ6XHRcdFx0LyogaHdwcm92IG1heSB0ZWNobmljYWxseSBiZSBwcm90ZWN0ZWQgYnkgb3BzIGxvY2sgYnV0XG4xOTU1Olx0XHRcdCAqIG5vdCBmb3IgZGV2aWNlcyB3aXRoIGEgcGh5ZGV2LCBzZWUgcGh5X2xpbmtfdG9wb19hZGRfcGh5KClcbjE5NTY6XHRcdFx0ICovXG4xOTU3Olx0XHRcdGh3cHJvdiA9IHJ0bmxfZGVyZWZlcmVuY2UoZGV2LVx1MDAzZWh3cHJvdik7XG4xOTU4Olx0XHRcdC8qIERpc2FibGUgdGltZXN0YW1wIGlmIGl0IGlzIHRoZSBvbmUgc2VsZWN0ZWQgKi9cbjE5NTk6XHRcdFx0aWYgKGh3cHJvdiBcdTAwMjZcdTAwMjYgaHdwcm92LVx1MDAzZXBoeWRldiA9PSBwaHlkZXYpIHtcbjE5NjA6XHRcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoZGV2LVx1MDAzZWh3cHJvdiwgTlVMTCk7XG4xOTYxOlx0XHRcdFx0a2ZyZWVfcmN1KGh3cHJvdiwgcmN1X2hlYWQpO1xuMTk2MjpcdFx0XHR9XG4xOTYzOlx0XG4xOTY0Olx0XHRcdHBoeWRldi1cdTAwM2VhdHRhY2hlZF9kZXYtXHUwMDNlcGh5ZGV2ID0gTlVMTDtcbjE5NjU6XHRcdFx0cGh5ZGV2LVx1MDAzZWF0dGFjaGVkX2RldiA9IE5VTEw7XG4xOTY2Olx0XHRcdHBoeV9saW5rX3RvcG9fZGVsX3BoeShkZXYsIHBoeWRldik7XG4xOTY3Olx0XHR9XG4xOTY4Olx0XG4xOTY5Olx0XHRwaHlkZXYtXHUwMDNlcGh5X2xpbmtfY2hhbmdlID0gTlVMTDtcbjE5NzA6XHRcdHBoeWRldi1cdTAwM2VwaHlsaW5rID0gTlVMTDtcbjE5NzE6XHRcbjE5NzI6XHRcdGlmIChwaHlkZXYtXHUwMDNlbWRpby5kZXYuZHJpdmVyKVxuMTk3MzpcdFx0XHRtb2R1bGVfcHV0KHBoeWRldi1cdTAwM2VtZGlvLmRldi5kcml2ZXItXHUwMDNlb3duZXIpO1xuMTk3NDpcdFxuMTk3NTpcdFx0LyogSWYgdGhlIGRldmljZSBoYWQgbm8gc3BlY2lmaWMgZHJpdmVyIGJlZm9yZSAoaS5lLiAtIGl0XG4xOTc2Olx0XHQgKiB3YXMgdXNpbmcgdGhlIGdlbmVyaWMgZHJpdmVyKSwgd2UgdW5iaW5kIHRoZSBkZXZpY2VcbjE5Nzc6XHRcdCAqIGZyb20gdGhlIGdlbmVyaWMgZHJpdmVyIHNvIHRoYXQgdGhlcmUmIzM5O3MgYSBjaGFuY2UgYVxuMTk3ODpcdFx0ICogcmVhbCBkcml2ZXIgY291bGQgYmUgbG9hZGVkXG4xOTc5Olx0XHQgKi9cbjE5ODA6XHRcdGlmIChwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbikge1xuMTk4MTpcdFx0XHRwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHBoeWRldik7XG4xOTgyOlx0XHRcdGRldmljZV9yZWxlYXNlX2RyaXZlcihcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYpO1xuMTk4MzpcdFx0XHRwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDA7XG4xOTg0Olx0XHR9XG4xOTg1Olx0XG4xOTg2Olx0XHQvKiBBc3NlcnQgdGhlIHJlc2V0IHNpZ25hbCAqL1xuMTk4NzpcdFx0cGh5X2RldmljZV9yZXNldChwaHlkZXYsIDEpO1xuMTk4ODpcdFxuMTk4OTpcdFx0LypcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ3NjUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkRpdmluZyBEZWVwIGludG8gUEhZTElOSyoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHplcm9pbmcgaW4gb24gdGhlIHNlY3Rpb24gYXJvdW5kIGxpbmVzIDIwODAgdG8gMjM3MC4gVGhpcyBhcmVhIGlzIGxpa2VseSB3aGVyZSBhIHNpZ25pZmljYW50IHBpZWNlIG9mIHRoZSBQSFlMSU5LIGZ1bmN0aW9uYWxpdHkgcmVzaWRlcywgcHJvYmFibHkgcmVsYXRlZCB0byBhIGNyaXRpY2FsIHBhcnQgb2YgdGhlIGxpbmsgbmVnb3RpYXRpb24gb3IgbWFuYWdlbWVudCBsb2dpYy4gR2l2ZW4gdGhlIHNpemUgb2YgdGhhdCBjb2RlIGJsb2NrLCBpdCYjMzk7cyBwcm9iYWJseSBkb2luZyBzb21lIGhlYXZ5IGxpZnRpbmcgaW4gaG93IHRoZSBQSFkgaW50ZXJhY3RzIHdpdGggdGhlIG5ldHdvcmsgc3RhY2suIEkgYW50aWNpcGF0ZSB0aGVyZSB3aWxsIGJlIGEgcmljaCBhbW91bnQgb2YgZGV0YWlsIHRoZXJlIGNvbmNlcm5pbmcgdGhlIG9wZXJhdGlvbmFsIGNvbnRyb2wgb2YgdGhlIFBIWS4gSXQmIzM5O3MgdGltZSB0byBnZXQgZG93biB0byBidXNpbmVzcyBhbmQgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjE5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMTkwOlx0XHRcdCAgICBfX0VUSFRPT0xfTElOS19NT0RFX01BU0tfTkJJVFMsIHBsLVx1MDAzZXN1cHBvcnRlZCxcbjIxOTE6XHRcdFx0ICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgcGh5LVx1MDAzZWFkdmVydGlzaW5nKTtcbjIxOTI6XHRcbjIxOTM6XHRcdGlmIChwbC1cdTAwM2Vjb25maWctXHUwMDNlbWFjX21hbmFnZWRfcG0pXG4yMTk0Olx0XHRcdHBoeS1cdTAwM2VtYWNfbWFuYWdlZF9wbSA9IHRydWU7XG4yMTk1Olx0XG4yMTk2Olx0XHQvKiBBbGxvdyB0aGUgTUFDIHRvIHN0b3AgaXRzIGNsb2NrIGlmIHRoZSBQSFkgaGFzIHRoZSBjYXBhYmlsaXR5ICovXG4yMTk3Olx0XHRwbC1cdTAwM2VtYWNfdHhfY2xrX3N0b3AgPSBwaHlfZWVlX3R4X2Nsb2NrX3N0b3BfY2FwYWJsZShwaHkpIFx1MDAzZSAwO1xuMjE5ODpcdFxuMjE5OTpcdFx0aWYgKHBsLVx1MDAzZW1hY19zdXBwb3J0c19lZWVfb3BzKSB7XG4yMjAwOlx0XHRcdC8qIEV4cGxpY2l0bHkgY29uZmlndXJlIHdoZXRoZXIgdGhlIFBIWSBpcyBhbGxvd2VkIHRvIHN0b3AgaXQmIzM5O3NcbjIyMDE6XHRcdFx0ICogcmVjZWl2ZSBjbG9jay5cbjIyMDI6XHRcdFx0ICovXG4yMjAzOlx0XHRcdHJldCA9IHBoeV9lZWVfcnhfY2xvY2tfc3RvcChwaHksXG4yMjA0Olx0XHRcdFx0XHRcdCAgICBwbC1cdTAwM2Vjb25maWctXHUwMDNlZWVlX3J4X2Nsa19zdG9wX2VuYWJsZSk7XG4yMjA1Olx0XHRcdGlmIChyZXQgPT0gLUVPUE5PVFNVUFApXG4yMjA2Olx0XHRcdFx0cmV0ID0gMDtcbjIyMDc6XHRcdH1cbjIyMDg6XHRcbjIyMDk6XHRcdGlmIChyZXQgPT0gMCBcdTAwMjZcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHkpKVxuMjIxMDpcdFx0XHRwaHlfcmVxdWVzdF9pbnRlcnJ1cHQocGh5KTtcbjIyMTE6XHRcbjIyMTI6XHRcdGlmIChyZXQpIHtcbjIyMTM6XHRcdFx0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuMjIxNDpcdFx0XHRwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTtcbjIyMTU6XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4yMjE2Olx0XHR9XG4yMjE3Olx0XG4yMjE4Olx0XHRyZXR1cm4gcmV0O1xuMjIxOTpcdH1cbjIyMjA6XHRcbjIyMjE6XHRzdGF0aWMgaW50IHBoeWxpbmtfYXR0YWNoX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4yMjIyOlx0XHRcdFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbjIyMjM6XHR7XG4yMjI0Olx0XHR1MzIgZmxhZ3MgPSAwO1xuMjIyNTpcdFxuMjIyNjpcdFx0aWYgKFdBUk5fT04ocGwtXHUwMDNlY2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQpKVxuMjIyNzpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjIyMjg6XHRcbjIyMjk6XHRcdGlmIChwbC1cdTAwM2VwaHlkZXYpXG4yMjMwOlx0XHRcdHJldHVybiAtRUJVU1k7XG4yMjMxOlx0XG4yMjMyOlx0XHRpZiAocGwtXHUwMDNlY29uZmlnLVx1MDAzZW1hY19yZXF1aXJlc19yeGMpXG4yMjMzOlx0XHRcdGZsYWdzIHw9IFBIWV9GX1JYQ19BTFdBWVNfT047XG4yMjM0Olx0XG4yMjM1Olx0XHRyZXR1cm4gcGh5X2F0dGFjaF9kaXJlY3QocGwtXHUwMDNlbmV0ZGV2LCBwaHksIGZsYWdzLCBpbnRlcmZhY2UpO1xuMjIzNjpcdH1cbjIyMzc6XHRcbjIyMzg6XHQvKipcbjIyMzk6XHQgKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXG4yMjQwOlx0ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbjIyNDE6XHQgKiBAcGh5OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5X2RldmljZS5cbjIyNDI6XHQgKlxuMjI0MzpcdCAqIENvbm5lY3QgQHBoeSB0byB0aGUgcGh5bGluayBpbnN0YW5jZSBzcGVjaWZpZWQgYnkgQHBsIGJ5IGNhbGxpbmdcbjIyNDQ6XHQgKiBwaHlfYXR0YWNoX2RpcmVjdCgpLiBDb25maWd1cmUgdGhlIEBwaHkgYWNjb3JkaW5nIHRvIHRoZSBNQUMgZHJpdmVyJiMzOTtzXG4yMjQ1Olx0ICogY2FwYWJpbGl0aWVzLCBzdGFydCB0aGUgUEhZTElCIHN0YXRlIG1hY2hpbmUgYW5kIGVuYWJsZSBhbnkgaW50ZXJydXB0c1xuMjI0NjpcdCAqIHRoYXQgdGhlIFBIWSBzdXBwb3J0cy5cbjIyNDc6XHQgKlxuMjI0ODpcdCAqIFRoaXMgdXBkYXRlcyB0aGUgcGh5bGluayYjMzk7cyBldGh0b29sIHN1cHBvcnRlZCBhbmQgYWR2ZXJ0aXNpbmcgbGluayBtb2RlXG4yMjQ5Olx0ICogbWFza3MuXG4yMjUwOlx0ICpcbjIyNTE6XHQgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm5vLlxuMjI1MjpcdCAqL1xuMjI1MzpcdGludCBwaHlsaW5rX2Nvbm5lY3RfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcbjIyNTQ6XHR7XG4yMjU1Olx0XHRpbnQgcmV0O1xuMjI1NjpcdFxuMjI1NzpcdFx0LyogVXNlIFBIWSBkZXZpY2UvZHJpdmVyIGludGVyZmFjZSAqL1xuMjI1ODpcdFx0aWYgKHBsLVx1MDAzZWxpbmtfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9OQSkge1xuMjI1OTpcdFx0XHRwbC1cdTAwM2VsaW5rX2ludGVyZmFjZSA9IHBoeS1cdTAwM2VpbnRlcmZhY2U7XG4yMjYwOlx0XHRcdHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSA9IHBsLVx1MDAzZWxpbmtfaW50ZXJmYWNlO1xuMjI2MTpcdFx0fVxuMjI2MjpcdFxuMjI2MzpcdFx0cmV0ID0gcGh5bGlua19hdHRhY2hfcGh5KHBsLCBwaHksIHBsLVx1MDAzZWxpbmtfaW50ZXJmYWNlKTtcbjIyNjQ6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4yMjY1Olx0XHRcdHJldHVybiByZXQ7XG4yMjY2Olx0XG4yMjY3Olx0XHRyZXQgPSBwaHlsaW5rX2JyaW5ndXBfcGh5KHBsLCBwaHksIHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSk7XG4yMjY4Olx0XHRpZiAocmV0KVxuMjI2OTpcdFx0XHRwaHlfZGV0YWNoKHBoeSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MjI5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUEhZIExpbmsgQ29ubmVjdGlvbiBQcm9jZXNzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEkgc2VlIHdlJiMzOTtyZSBsb29raW5nIGF0IGBwaHlsaW5rX2Nvbm5lY3RfcGh5YC4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgaW4gYHBoeWxpbmtfYXR0YWNoX3BoeWAgd2hpY2ggc2V0cyB0aGluZ3MgdXAsIHRoZW4gYHBoeWxpbmtfYnJpbmd1cF9waHlgIHdoaWNoIGFjdHVhbGx5IGdldHMgdGhlIFBIWSBvcGVyYXRpb25hbC4gSWYgYHBoeWxpbmtfYXR0YWNoX3BoeWAgZmFpbHMsIHdlIGp1c3QgcmV0dXJuIHRoZSBlcnJvciwgc2ltcGxlIGVub3VnaC4gQnV0IGlmIGBwaHlsaW5rX2JyaW5ndXBfcGh5YCBmYWlscywgd2UgZGV0YWNoIHRoZSBQSFkuIE1ha2VzIHNlbnNlLCBrZWVwIGl0IGNsZWFuLgoKTXkgbWluZCBpcyBub3cgemVyb2luZyBpbiBvbiBgcGh5bGlua19icmluZ3VwX3BoeWAuIEkgcmVjYWxsIHNvbWUgcG90ZW50aWFsIGlzc3VlcyBoZXJlLCB3aGljaCBpcyB3aHkgSSYjMzk7bSBmb2N1c2luZyBvbiBpdC4gSSBzZWVtIHRvIHJlY2FsbCB0aGF0IGJlZm9yZSBhIGNlcnRhaW4gcGF0Y2gsIHRoZSBgcGwtJmd0O3BoeWRldmAgYXNzaWdubWVudCBvY2N1cnMgc29tZXdoZXJlIGluIHRoYXQgZnVuY3Rpb24sIGFyb3VuZCB0aGUgMjExMCBtYXJrLCBvciBpbiB0aGF0IG5laWdoYm9yaG9vZC4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCByZWdpb24sIGFwcHJveGltYXRlbHkgbGluZXMgMjEwMCB0byAyMTkwIGluIHRoZSBjb2RlLCB0byBlbnN1cmUgdGhhdCB0aGUgdmFyaWFibGUgaXMgYXNzaWduZWQgd2hlbiByZXF1aXJlZC4gSSYjMzk7bGwgYmUgbG9va2luZyBhdCB0aGF0IHNlY3Rpb24gdmVyeSBjYXJlZnVsbHkuIFRoZSB0aW1pbmcgb2YgdGhlIGFzc2lnbm1lbnQgY291bGQgYmUgY3JpdGljYWwgZm9yIHRoZSBvdmVyYWxsIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwOTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjA5MDpcdFx0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4yMDkxOlx0XHRwbC1cdTAwM2VwaHlkZXYgPSBOVUxMO1xuMjA5MjpcdFx0cGwtXHUwMDNlcGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTtcbjIwOTM6XHRcdHBsLVx1MDAzZW1hY190eF9jbGtfc3RvcCA9IGZhbHNlO1xuMjA5NDpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbjIwOTU6XHRcdG11dGV4X3VubG9jayhcdTAwMjZwaHktXHUwMDNlbG9jayk7XG4yMDk2Olx0fVxuMjA5NzpcdFxuMjA5ODpcdHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4yMDk5Olx0XHRcdFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4yMTAwOlx0e1xuMjEwMTpcdFx0c3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSBjb25maWc7XG4yMTAyOlx0XHRfX0VUSFRPT0xfREVDTEFSRV9MSU5LX01PREVfTUFTSyhzdXBwb3J0ZWQpO1xuMjEwMzpcdFx0Y2hhciAqaXJxX3N0cjtcbjIxMDQ6XHRcdGludCByZXQ7XG4yMTA1Olx0XG4yMTA2Olx0XHQvKlxuMjEwNzpcdFx0ICogVGhpcyBpcyB0aGUgbmV3IHdheSBvZiBkZWFsaW5nIHdpdGggZmxvdyBjb250cm9sIGZvciBQSFlzLFxuMjEwODpcdFx0ICogYXMgZGVzY3JpYmVkIGJ5IFRpbXVyIFRhYmkgaW4gY29tbWl0IDUyOWVkMTI3NTI2MyAoXCYjMzQ7bmV0OiBwaHk6XG4yMTA5Olx0XHQgKiBwaHkgZHJpdmVycyBzaG91bGQgbm90IHNldCBTVVBQT1JURURfW0FzeW1fXVBhdXNlXCYjMzQ7KS4gTUFDIGRyaXZlcnNcbjIxMTA6XHRcdCAqIHNldCB0aGVpciBzdXBwb3J0IHVzaW5nIHRoZSBNQUNfU1lNX1BBVVNFIGFuZCBNQUNfQVNZTV9QQVVTRVxuMjExMTpcdFx0ICogY2FwYWJpbGl0aWVzIGFuZCBtdXN0IE5PVCBjaGFuZ2UgdGhlIHBoeSYjMzk7cyBwYXVzZSBzZXR0aW5ncyBkaXJlY3RseS5cbjIxMTI6XHRcdCAqL1xuMjExMzpcdFx0cGh5X3N1cHBvcnRfYXN5bV9wYXVzZShwaHkpO1xuMjExNDpcdFxuMjExNTpcdFx0bWVtc2V0KFx1MDAyNmNvbmZpZywgMCwgc2l6ZW9mKGNvbmZpZykpO1xuMjExNjpcdFx0bGlua21vZGVfY29weShzdXBwb3J0ZWQsIHBoeS1cdTAwM2VzdXBwb3J0ZWQpO1xuMjExNzpcdFx0bGlua21vZGVfY29weShjb25maWcuYWR2ZXJ0aXNpbmcsIHBoeS1cdTAwM2VhZHZlcnRpc2luZyk7XG4yMTE4Olx0XHRjb25maWcuaW50ZXJmYWNlID0gaW50ZXJmYWNlO1xuMjExOTpcdFxuMjEyMDpcdFx0cmV0ID0gcGh5bGlua192YWxpZGF0ZV9waHkocGwsIHBoeSwgc3VwcG9ydGVkLCBcdTAwMjZjb25maWcpO1xuMjEyMTpcdFx0aWYgKHJldCkge1xuMjEyMjpcdFx0XHRwaHlsaW5rX3dhcm4ocGwsIFwmIzM0O3ZhbGlkYXRpb24gb2YgJXMgd2l0aCBzdXBwb3J0ICUqcGIgYW5kIGFkdmVydGlzZW1lbnQgJSpwYiBmYWlsZWQ6ICVwZVxcblwmIzM0OyxcbjIxMjM6XHRcdFx0XHQgICAgIHBoeV9tb2Rlcyhjb25maWcuaW50ZXJmYWNlKSxcbjIxMjQ6XHRcdFx0XHQgICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgcGh5LVx1MDAzZXN1cHBvcnRlZCxcbjIxMjU6XHRcdFx0XHQgICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgY29uZmlnLmFkdmVydGlzaW5nLFxuMjEyNjpcdFx0XHRcdCAgICAgRVJSX1BUUihyZXQpKTtcbjIxMjc6XHRcdFx0cmV0dXJuIHJldDtcbjIxMjg6XHRcdH1cbjIxMjk6XHRcbjIxMzA6XHRcdHBoeS1cdTAwM2VwaHlsaW5rID0gcGw7XG4yMTMxOlx0XHRwaHktXHUwMDNlcGh5X2xpbmtfY2hhbmdlID0gcGh5bGlua19waHlfY2hhbmdlO1xuMjEzMjpcdFxuMjEzMzpcdFx0aXJxX3N0ciA9IHBoeV9hdHRhY2hlZF9pbmZvX2lycShwaHkpO1xuMjEzNDpcdFx0cGh5bGlua19pbmZvKHBsLFxuMjEzNTpcdFx0XHQgICAgIFwmIzM0O1BIWSBbJXNdIGRyaXZlciBbJXNdIChpcnE9JXMpXFxuXCYjMzQ7LFxuMjEzNjpcdFx0XHQgICAgIGRldl9uYW1lKFx1MDAyNnBoeS1cdTAwM2VtZGlvLmRldiksIHBoeS1cdTAwM2VkcnYtXHUwMDNlbmFtZSwgaXJxX3N0cik7XG4yMTM3Olx0XHRrZnJlZShpcnFfc3RyKTtcbjIxMzg6XHRcbjIxMzk6XHRcdG11dGV4X2xvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc1MTEKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgUGh5bGluayBDb2RlYmFzZSoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgcGh5bGluay5jYCBmaWxlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IHRoaXMgcGFydCBpbnRlcmFjdHMgd2l0aCB0aGUgb3ZlcmFsbCBwaHlsaW5rIHByb2Nlc3MsIHNvIEkmIzM5O2xsIGp1bXAgcmlnaHQgaW50byBsaW5lcyAyMTQwIHRvIDIxOTAuIEkmIzM5O20gZm9jdXNpbmcgc3BlY2lmaWNhbGx5IG9uIHRoaXMgc2VjdGlvbiBiZWNhdXNlIEkgcmVjYWxsIHdlIHdlcmUgc2VlaW5nIHNvbWUgb2RkIGJlaGF2aW9yIHJlbGF0ZWQgdG8gWyoqaW5zZXJ0IHNwZWNpZmljIHByb2JsZW0gdGhlIG9yaWdpbmFsIHVzZXIgd2FzIGhhdmluZyoqXSwgYW5kIEkgaGF2ZSBhIGh1bmNoIGl0IG1pZ2h0IGJlIHJvb3RlZCBoZXJlLgoKUmlnaHQsIHNvIGdsYW5jaW5nIGF0IHRoaXMgYmxvY2sgb2YgY29kZSwgSSYjMzk7bSBub3RpbmcgdGhlIGNvbmRpdGlvbmFsIGNoZWNrIG9uIFsqKnNwZWNpZmljIHZhcmlhYmxlIG9yIGNvbmRpdGlvbioqXS4gSXQgbG9va3MgbGlrZSB0aGlzIG1pZ2h0IGJlIHJlbGF0ZWQgdG8gdGhlIFsqKnNwZWNpZmljIHByb2Nlc3MvZnVuY3Rpb24qKl0gYW5kIGhvdyBpdCBoYW5kbGVzIFsqKnNwZWNpZmljIGRhdGEqKl0uIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgcmFjZSBjb25kaXRpb25zIHRoYXQgY291bGQgbGVhZCB0byBkYXRhIGNvcnJ1cHRpb24gaW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIG9yIHBvc3NpYmx5IGFueSBvZmYtYnktb25lIGVycm9ycy4gQWxzbywgaXMgdGhpcyBmdW5jdGlvbiByZS1lbnRyYW50LCBhbmQgaWYgbm90LCBob3cgbWlnaHQgaXQgYWZmZWN0IG90aGVyIHRocmVhZHM/IEnigJlsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayBhbnkgYXNzb2NpYXRlZCBtdXRleGVzIG9yIHNlbWFwaG9yZXMsIGp1c3QgdG8gYmUgc3VyZS4gSSYjMzk7bSBnb2luZyB0byBzY2FuIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGNoZWNrIGZvciB0aGUgYXNzaWdubWVudCBvZiBhbnkgcG90ZW50aWFsIG51bGwgcG9pbnRlcnMuIFBlcmhhcHMgdGhlcmUgbWlnaHQgYmUgc29tZSBtaXNzaW5nIGVycm9yIGNoZWNraW5nIGFyb3VuZCBbKipzcGVjaWZpYyBmdW5jdGlvbioqXS4gT2theSwgdGltZSB0byBjaGVjayB0aGUgbG9nZ2luZyBvdXRwdXQgcmVsYXRlZCB0byB0aGlzIGZ1bmN0aW9uIGNhbGwsIGp1c3QgaW4gY2FzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjEzOCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMTM4Olx0XG4yMTM5Olx0XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4yMTQwOlx0XHRtdXRleF9sb2NrKFx1MDAyNnBoeS1cdTAwM2Vsb2NrKTtcbjIxNDE6XHRcdG11dGV4X2xvY2soXHUwMDI2cGwtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuMjE0MjpcdFx0cGwtXHUwMDNlcGh5ZGV2ID0gcGh5O1xuMjE0MzpcdFx0cGwtXHUwMDNlcGh5X3N0YXRlLmludGVyZmFjZSA9IGludGVyZmFjZTtcbjIxNDQ6XHRcdHBsLVx1MDAzZXBoeV9zdGF0ZS5wYXVzZSA9IE1MT19QQVVTRV9OT05FO1xuMjE0NTpcdFx0cGwtXHUwMDNlcGh5X3N0YXRlLnNwZWVkID0gU1BFRURfVU5LTk9XTjtcbjIxNDY6XHRcdHBsLVx1MDAzZXBoeV9zdGF0ZS5kdXBsZXggPSBEVVBMRVhfVU5LTk9XTjtcbjIxNDc6XHRcdHBsLVx1MDAzZXBoeV9zdGF0ZS5yYXRlX21hdGNoaW5nID0gUkFURV9NQVRDSF9OT05FO1xuMjE0ODpcdFx0bGlua21vZGVfY29weShwbC1cdTAwM2VzdXBwb3J0ZWQsIHN1cHBvcnRlZCk7XG4yMTQ5Olx0XHRsaW5rbW9kZV9jb3B5KHBsLVx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nLCBjb25maWcuYWR2ZXJ0aXNpbmcpO1xuMjE1MDpcdFxuMjE1MTpcdFx0LyogUmVzdHJpY3QgdGhlIHBoeSBhZHZlcnRpc2VtZW50IGFjY29yZGluZyB0byB0aGUgTUFDIHN1cHBvcnQuICovXG4yMTUyOlx0XHRsaW5rbW9kZV9jb3B5KHBoeS1cdTAwM2VhZHZlcnRpc2luZywgY29uZmlnLmFkdmVydGlzaW5nKTtcbjIxNTM6XHRcbjIxNTQ6XHRcdC8qIElmIHRoZSBNQUMgc3VwcG9ydHMgcGh5bGluayBtYW5hZ2VkIEVFRSwgcmVzdHJpY3QgdGhlIEVFRVxuMjE1NTpcdFx0ICogYWR2ZXJ0aXNlbWVudCBhY2NvcmRpbmcgdG8gdGhlIE1BQyYjMzk7cyBMUEkgY2FwYWJpbGl0aWVzLlxuMjE1NjpcdFx0ICovXG4yMTU3Olx0XHRpZiAocGwtXHUwMDNlbWFjX3N1cHBvcnRzX2VlZSkge1xuMjE1ODpcdFx0XHQvKiBJZiBFRUUgaXMgZW5hYmxlZCwgdGhlbiB3ZSBuZWVkIHRvIGNhbGwgcGh5X3N1cHBvcnRfZWVlKClcbjIxNTk6XHRcdFx0ICogdG8gZW5zdXJlIHRoYXQgdGhlIGFkdmVydGlzaW5nIG1hc2sgaXMgYXBwcm9wcmlhdGVseSBzZXQuXG4yMTYwOlx0XHRcdCAqIFRoaXMgYWxzbyBlbmFibGVzIEVFRSBhdCB0aGUgUEhZLlxuMjE2MTpcdFx0XHQgKi9cbjIxNjI6XHRcdFx0aWYgKHBsLVx1MDAzZWVlZV9jZmcuZWVlX2VuYWJsZWQpXG4yMTYzOlx0XHRcdFx0cGh5X3N1cHBvcnRfZWVlKHBoeSk7XG4yMTY0Olx0XG4yMTY1Olx0XHRcdHBoeS1cdTAwM2VlZWVfY2ZnLnR4X2xwaV9lbmFibGVkID0gcGwtXHUwMDNlZWVlX2NmZy50eF9scGlfZW5hYmxlZDtcbjIxNjY6XHRcdFx0cGh5LVx1MDAzZWVlZV9jZmcudHhfbHBpX3RpbWVyID0gcGwtXHUwMDNlZWVlX2NmZy50eF9scGlfdGltZXI7XG4yMTY3Olx0XG4yMTY4Olx0XHRcdC8qIENvbnZlcnQgdGhlIE1BQyYjMzk7cyBMUEkgY2FwYWJpbGl0aWVzIHRvIGxpbmttb2RlcyAqL1xuMjE2OTpcdFx0XHRsaW5rbW9kZV96ZXJvKHBsLVx1MDAzZXN1cHBvcnRlZF9scGkpO1xuMjE3MDpcdFx0XHRwaHlsaW5rX2NhcHNfdG9fbGlua21vZGVzKHBsLVx1MDAzZXN1cHBvcnRlZF9scGksXG4yMTcxOlx0XHRcdFx0XHRcdCAgcGwtXHUwMDNlY29uZmlnLVx1MDAzZWxwaV9jYXBhYmlsaXRpZXMpO1xuMjE3MjpcdFxuMjE3MzpcdFx0XHQvKiBSZXN0cmljdCB0aGUgUEhZcyBFRUUgc3VwcG9ydC9hZHZlcnRpc2VtZW50IHRvIHRoZSBtb2Rlc1xuMjE3NDpcdFx0XHQgKiB0aGF0IHRoZSBNQUMgc3VwcG9ydHMuXG4yMTc1Olx0XHRcdCAqL1xuMjE3NjpcdFx0XHRsaW5rbW9kZV9hbmQocGh5LVx1MDAzZWFkdmVydGlzaW5nX2VlZSwgcGh5LVx1MDAzZWFkdmVydGlzaW5nX2VlZSxcbjIxNzc6XHRcdFx0XHQgICAgIHBsLVx1MDAzZXN1cHBvcnRlZF9scGkpO1xuMjE3ODpcdFx0fSBlbHNlIGlmIChwbC1cdTAwM2VtYWNfc3VwcG9ydHNfZWVlX29wcykge1xuMjE3OTpcdFx0XHQvKiBNQUMgc3VwcG9ydHMgcGh5bGluayBFRUUsIGJ1dCB3YW50cyBFRUUgYWx3YXlzIGRpc2FibGVkLiAqL1xuMjE4MDpcdFx0XHRwaHlfZGlzYWJsZV9lZWUocGh5KTtcbjIxODE6XHRcdH1cbjIxODI6XHRcbjIxODM6XHRcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4yMTg0Olx0XHRtdXRleF91bmxvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuMjE4NTpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4yMTg2Olx0XG4yMTg3Olx0XHRwaHlsaW5rX2RiZyhwbCxcbjIxODg6XHRcdFx0ICAgIFwmIzM0O3BoeTogJXMgc2V0dGluZyBzdXBwb3J0ZWQgJSpwYiBhZHZlcnRpc2luZyAlKnBiXFxuXCYjMzQ7LFxuMjE4OTpcdFx0XHQgICAgcGh5X21vZGVzKGludGVyZmFjZSksXG4yMTkwOlx0XHRcdCAgICBfX0VUSFRPT0xfTElOS19NT0RFX01BU0tfTkJJVFMsIHBsLVx1MDAzZXN1cHBvcnRlZCxcbjIxOTE6XHRcdFx0ICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgcGh5LVx1MDAzZWFkdmVydGlzaW5nKTtcbjIxOTI6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg4MzAKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUEhZIExpbmsgQnJpbmd1cCBJc3N1ZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQgYHBoeWxpbmtfYnJpbmd1cF9waHlgIGlzIHJlc3BvbnNpYmxlIGZvciBpbml0aWFsaXppbmcgdGhlIFBIWSBkZXZpY2Ugd2l0aGluIHRoZSBgcGxgIGRhdGEgc3RydWN0dXJlLiBTcGVjaWZpY2FsbHksIGl0IGFzc2lnbnMgdGhlIFBIWSBkZXZpY2UgKGBwaHlgKSB0byBgcGwtJmd0O3BoeWRldmAgYW5kIHNldHMgdXAgc29tZSBvdGhlciBpbnRlcm5hbCBzdGF0ZS4gVGhlIGNvcmUgb2YgdGhlIHByb2JsZW0gc2VlbXMgdG8gbGllIGFyb3VuZCBsaW5lIDIyMDMsIHdoZXJlIHRoZSBmdW5jdGlvbiBgcGh5X2VlZV9yeF9jbG9ja19zdG9wYCBpcyBjYWxsZWQuIENyaXRpY2FsbHksIGlmIGBwaHlfZWVlX3J4X2Nsb2NrX3N0b3BgIGZhaWxzLCB0aGUgYHBsLSZndDtwaHlkZXZgIGZpZWxkIGlzICpzdGlsbCogbGVmdCBub24tTlVMTC4gVGhpcyBjcmVhdGVzIGEgcmVhbGx5IG5hc3R5IHJhY2UgY29uZGl0aW9uLgoKSSBjYW4gc2VlIHRoYXQgaWYgYHBoeV9lZWVfcnhfY2xvY2tfc3RvcGAgcmV0dXJucyBhbiBlcnJvciwgYW55IHN1YnNlcXVlbnQgYXR0ZW1wdCB0byBhdHRhY2ggdGhlIFBIWSB3b3VsZCByZXR1cm4gLUVCVVNZLiBUaGF0JiMzOTtzIGJlY2F1c2UgdGhlIGBwaHlsaW5rX2F0dGFjaF9waHlgIGZ1bmN0aW9uIGNoZWNrcyBpZiBgcGwtJmd0O3BoeWRldmAgaXMgYWxyZWFkeSBhc3NpZ25lZCBhbmQgaW1tZWRpYXRlbHkgcmV0dXJucyAtRUJVU1kuIFRoaXMgaXMgd2hlcmUgdGhlIHBhdGNoIGtpY2tzIGluLiBJdCBpbnRyb2R1Y2VzIGEgY2hlY2ssIGFuZCBpZiB0aGUgYHJldGAgZnJvbSBgcGh5X2VlZV9yeF9jbG9ja19zdG9wYCBzaWduYWxzIGZhaWx1cmUsIHRoZSBjb2RlIG5vdyBpbmNsdWRlcyBhIG11dGV4LXByb3RlY3RlZCBjYWxsIHRvIGBwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KWAuIFRoYXQmIzM5O3Mgc21hcnQ7IGl0JiMzOTtzIHJlbGVhc2luZyB0aGUgcmVzb3VyY2UgYXBwcm9wcmlhdGVseSB3aGVuIHRoZSBQSFkgaW5pdGlhbGl6YXRpb24gZmFpbHMuCgpTbywgdGhlIG5ldyBjb2RlIGlzIGF0dGVtcHRpbmcgdG8gY2xlYW4gdXAgdGhlIHBhcnRpYWxseSBpbml0aWFsaXplZCBQSFkgaW4gY2FzZSBvZiBhbiBlcnJvci4gVGhlIGluY2x1c2lvbiBvZiB0aGUgbXV0ZXggaXMgY3JpdGljYWwgdG8gcHJldmVudCBhIHJhY2UgY29uZGl0aW9uIGR1cmluZyBQSFkgcmVzb3VyY2UgbWFuYWdlbWVudC4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHdpZGVyIGNvbnRleHQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGBwaHlfZGV2aWNlLmNgIGFuZCBgcGh5bGluay5jYCBhbmQgd2hlcmUgdGhleSBmaXQgaW50byB0aGUgbGFyZ2VyIFBIWSBkcml2ZXIgc3RydWN0dXJlLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYXQgd2hlcmUgYHBoeV9yZXN0b3JlX2dlbnBoeV9pcnFgIGlzIGNhbGxlZC4gSSBzZWUgaXQmIzM5O3MgY2FsbGVkIGluIGBlcnJvcl9tb2R1bGVfcHV0YCBhbmQgYHBoeV9kZXRhY2hgIGluIGBwaHlfZGV2aWNlLmNgLCBzbyBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHJlbGF0ZS4KCkkgbmVlZCB0byBjb25maXJtIHRoZSBidWlsZCBkZXBlbmRlbmNpZXMuIFdoZXJlIGFyZSBgcGh5X2RldmljZS5jYCBhbmQgYHBoeWxpbmsuY2AgYnVpbHQ/IEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgYW5kIE1ha2VmaWxlcyBpbiBgZHJpdmVycy9uZXQvcGh5L2AgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoaWNoIGNvbmZpZ3VyYXRpb25zIGluY2x1ZGUgdGhlc2UgZmlsZXMuIEdyZXBwaW5nIGZvciB0aGUgcmVsZXZhbnQgS2NvbmZpZyBhbmQgTWFrZWZpbGUgZW50cmllcyBzaG91bGQgZ2l2ZSBtZSBhIHF1aWNrIG92ZXJ2aWV3IG9mIHRoZSBidWlsZCBwcm9jZXNzIGZvciB0aGlzIHNlY3Rpb24gb2YgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X2RldmljZXxwaHlsaW5rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTQxNDIgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0zLVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjQ6bGlicGh5LXlcdFx0XHQ6PSBwaHkubyBwaHktYzQ1Lm8gcGh5LWNvcmUubyBwaHlfZGV2aWNlLm8gXFxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS01LVx0XHRcdFx0ICAgbGlua21vZGUubyBwaHlfbGlua190b3BvbG9neS5vIFxcXG4tLVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTE4PW9iai0kKENPTkZJR19QSFlMSUIpXHRcdCYjNDM7PSBtZGlvX2J1cy5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX1BIWUxJTkspXHRcdCYjNDM7PSBwaHlsaW5rLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0yMC1vYmotJChDT05GSUdfUEhZTElCKVx0XHQmIzQzOz0gbGlicGh5Lm9cbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jPTI0MD1zdGF0aWMgaW50IGFkaW5fbG9va3VwX3JlZ192YWx1ZShjb25zdCBzdHJ1Y3QgYWRpbl9jZmdfcmVnX21hcCAqdGJsLCBpbnQgY2ZnKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMjUxLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzoyNTI6c3RhdGljIHUzMiBhZGluX2dldF9yZWdfdmFsdWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMjUzLVx0XHRcdCAgICAgIGNvbnN0IGNoYXIgKnByb3BfbmFtZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTI3NC1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6Mjc1OnN0YXRpYyBpbnQgYWRpbl9jb25maWdfcmdtaWlfbW9kZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy0yNzYte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMzIwLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzozMjE6c3RhdGljIGludCBhZGluX2NvbmZpZ19ybWlpX21vZGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMzIyLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTM0Ny1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6MzQ4OnN0YXRpYyBpbnQgYWRpbl9nZXRfZG93bnNoaWZ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4ICpkYXRhKVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy0zNDkte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMzY3LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzozNjg6c3RhdGljIGludCBhZGluX3NldF9kb3duc2hpZnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggY250KVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy0zNjkte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMzkxLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzozOTI6c3RhdGljIGludCBhZGluX2dldF9lZHBkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiAqdHhfaW50ZXJ2YWwpXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTM5My17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy00MTItXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjQxMzpzdGF0aWMgaW50IGFkaW5fc2V0X2VkcGQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHR4X2ludGVydmFsKVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy00MTQte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNDM5LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo0NDA6c3RhdGljIGludCBhZGluX2dldF9mYXN0X2Rvd24oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggKm1zZWNzKVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy00NDEte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNDU1LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo0NTY6c3RhdGljIGludCBhZGluX3NldF9mYXN0X2Rvd24oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgY29uc3QgdTggKm1zZWNzKVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy00NTcte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNDcwLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo0NzE6c3RhdGljIGludCBhZGluX2dldF90dW5hYmxlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTQ3Mi1cdFx0XHQgICAgc3RydWN0IGV0aHRvb2xfdHVuYWJsZSAqdHVuYSwgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTQ4NS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6NDg2OnN0YXRpYyBpbnQgYWRpbl9zZXRfdHVuYWJsZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy00ODctXHRcdFx0ICAgIHN0cnVjdCBldGh0b29sX3R1bmFibGUgKnR1bmEsIGNvbnN0IHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy01MDAtXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjUwMTpzdGF0aWMgaW50IGFkaW5fY29uZmlnX2Nsa19vdXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNTAyLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTUyNy1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6NTI4OnN0YXRpYyBpbnQgYWRpbl9jb25maWdfenB0bTEwMChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy01Mjkte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNTQwLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo1NDE6c3RhdGljIGludCBhZGluX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTU0Mi17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy01NzYtXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjU3NzpzdGF0aWMgaW50IGFkaW5fcGh5X2Fja19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTU3OC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy01ODQtXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjU4NTpzdGF0aWMgaW50IGFkaW5fcGh5X2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTU4Ni17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy02MDctXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjYwODpzdGF0aWMgaXJxcmV0dXJuX3QgYWRpbl9waHlfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy02MDkte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNjI1LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo2MjY6c3RhdGljIGludCBhZGluX2NsNDVfdG9fYWRpbl9yZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldmFkLFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy02MjctXHRcdFx0XHQgdTE2IGNsNDVfcmVnbnVtKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNjQ3LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo2NDg6c3RhdGljIGludCBhZGluX3JlYWRfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZhZCwgdTE2IHJlZ251bSlcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNjQ5LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTY2Ni1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6NjY3OnN0YXRpYyBpbnQgYWRpbl93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldmFkLCB1MTYgcmVnbnVtLFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy02NjgtXHRcdFx0ICB1MTYgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNjg2LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo2ODc6c3RhdGljIGludCBhZGluX2NvbmZpZ19tZGl4KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTY4OC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy03MjMtXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjcyNDpzdGF0aWMgaW50IGFkaW5fY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNzI1LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTc0Mi1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6NzQzOnN0YXRpYyBpbnQgYWRpbl9tZGl4X3VwZGF0ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy03NDQte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNzgzLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo3ODQ6c3RhdGljIGludCBhZGluX3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTc4NS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy03OTQtXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjc5NTpzdGF0aWMgaW50IGFkaW5fc29mdF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy03OTYte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtODE0LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo4MTU6c3RhdGljIGludCBhZGluX2dldF9zc2V0X2NvdW50KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTgxNi17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy04MTktXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjgyMDpzdGF0aWMgdm9pZCBhZGluX2dldF9zdHJpbmdzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4ICpkYXRhKVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy04MjEte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtODI3LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo4Mjg6c3RhdGljIGludCBhZGluX3JlYWRfbW1kX3N0YXRfcmVncyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy04MjktXHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgYWRpbl9od19zdGF0ICpzdGF0LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtODUyLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo4NTM6c3RhdGljIHU2NCBhZGluX2dldF9zdGF0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpKVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy04NTQte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtODc1LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo4NzY6c3RhdGljIHZvaWQgYWRpbl9nZXRfc3RhdHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtODc3LVx0XHRcdCAgIHN0cnVjdCBldGh0b29sX3N0YXRzICpzdGF0cywgdTY0ICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtODg5LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo4OTA6c3RhdGljIGludCBhZGluX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTg5MS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy05MDMtXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjkwNDpzdGF0aWMgaW50IGFkaW5fY2FibGVfdGVzdF9zdGFydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy05MDUte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM9OTIzPXN0YXRpYyBpbnQgYWRpbl9jYWJsZV90ZXN0X3JlcG9ydF90cmFucyhpbnQgcmVzdWx0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtOTQ0LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo5NDU6c3RhdGljIGludCBhZGluX2NhYmxlX3Rlc3RfcmVwb3J0X3BhaXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtOTQ2LVx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCBwYWlyKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtOTc2LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo5Nzc6c3RhdGljIGludCBhZGluX2NhYmxlX3Rlc3RfcmVwb3J0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTk3OC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy05OTAtXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjk5MTpzdGF0aWMgaW50IGFkaW5fY2FibGVfdGVzdF9nZXRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTk5Mi1cdFx0XHRcdCAgICAgIGJvb2wgKmZpbmlzaGVkKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jPTcwPXN0cnVjdCBhZGluX3ByaXYge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTc1LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmM6NzY6c3RhdGljIGludCBhZGluX3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy03Ny17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtOTYtXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYzo5NzpzdGF0aWMgaW50IGFkaW5fY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTk4LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0xNDQtXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYzoxNDU6c3RhdGljIGludCBhZGluX3BoeV9hY2tfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMTQ2LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0xNTMtXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYzoxNTQ6c3RhdGljIGludCBhZGluX2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0xNTUte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTE3Mi1cbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jOjE3MzpzdGF0aWMgaXJxcmV0dXJuX3QgYWRpbl9waHlfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMTc0LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0xOTEtXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYzoxOTI6c3RhdGljIGludCBhZGluX3NldF9wb3dlcmRvd25fbW9kZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIGVuKVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMTkzLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0yMDYtXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYzoyMDc6c3RhdGljIGludCBhZGluX3N1c3BlbmQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTIwOC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMjExLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmM6MjEyOnN0YXRpYyBpbnQgYWRpbl9yZXN1bWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTIxMy17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMjE2LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmM6MjE3OnN0YXRpYyBpbnQgYWRpbl9zZXRfbG9vcGJhY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBlbmFibGUsIGludCBzcGVlZClcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTIxOC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMjMwLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmM6MjMxOnN0YXRpYyBpbnQgYWRpbl9zb2Z0X3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0yMzIte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTI0My1cbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jOjI0NDpzdGF0aWMgaW50IGFkaW5fZ2V0X2ZlYXR1cmVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0yNDUte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTI3OC1cbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jOjI3OTpzdGF0aWMgaW50IGFkaW5fZ2V0X3NxaShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMjgwLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0zMDMtXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYzozMDQ6c3RhdGljIGludCBhZGluX2dldF9zcWlfbWF4KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0zMDUte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTMwOC1cbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jOjMwOTpzdGF0aWMgaW50IGFkaW5fcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTMxMC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jLTE2LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jOjE3OnN0YXRpYyBpbnQgYWRpbjExNDBfY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTE0MC1waHkuYy0xOC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jLTI1LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jOjI2OnN0YXRpYyBpbnQgYWRpbjExNDBfbG9vcGJhY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBlbmFibGUsIGludCBzcGVlZClcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTE0MC1waHkuYy0yNy17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jLTM1LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jOjM2OnN0YXRpYyBpbnQgYWRpbjExNDBfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTE0MC1waHkuYy0zNy17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYz0yMDY9c3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgYW44ODAxcl9sZWRfdHJpZyA9IEJJVChUUklHR0VSX05FVERFVl9MSU5LKSB8XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0yMTMtXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjIxNDpzdGF0aWMgaW50IGFuODgwMV9idWNrcGJ1c19yZWdfcm13KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTIxNS1cdFx0XHRcdCAgIHUzMiBhZGRyLCB1MzIgbWFzaywgdTMyIHNldClcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTIyMS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6MjIyOnN0YXRpYyBpbnQgYW44ODAxX2J1Y2twYnVzX3JlZ19zZXRfYml0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0yMjMtXHRcdFx0XHRcdHUzMiBhZGRyLCB1MzIgbWFzaylcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTIyOS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6MjMwOnN0YXRpYyBpbnQgYW44ODAxX2J1Y2twYnVzX3JlZ19jbGVhcl9iaXRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTIzMS1cdFx0XHRcdFx0ICB1MzIgYWRkciwgdTMyIG1hc2spXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0yMzctXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjIzODpzdGF0aWMgaW50IGFuODgwMV9idWNrcGJ1c19yZWdfd3JpdGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIGFkZHIsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTIzOS1cdFx0XHRcdCAgICAgdTMyIGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0yNDUtXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjI0NjpzdGF0aWMgaW50IGFuODgwMV9idWNrcGJ1c19yZWdfcmVhZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MzIgYWRkcixcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMjQ3LVx0XHRcdFx0ICAgIHUzMiAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jPTI1ND1zdGF0aWMgdTMyIGFuODgwMXJfbGVkX2JsaW5rX21zX3RvX2h3KHVuc2lnbmVkIGxvbmcgcmVxX21zKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMjcxLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzoyNzI6c3RhdGljIGludCBhbjg4MDFyX2xlZF9ibGlua19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTI3My1cdFx0XHRcdCB1bnNpZ25lZCBsb25nICpkZWxheV9vbixcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTMzMi1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6MzMzOnN0YXRpYyBpbnQgYW44ODAxcl9sZWRfYnJpZ2h0bmVzc19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTMzNC1cdFx0XHRcdCAgICAgIGVudW0gbGVkX2JyaWdodG5lc3MgdmFsdWUpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0zNTYtXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjM1NzpzdGF0aWMgaW50IGFuODgwMXJfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0zNTgtXHRcdFx0XHQgICAgICB1bnNpZ25lZCBsb25nICpydWxlcylcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jPTQwMz1zdGF0aWMgaW50IGFuODgwMXJfbGVkX3RyaWdfdG9faHcodW5zaWduZWQgbG9uZyBydWxlcywgdTE2ICpvbiwgdTE2ICpibGluaylcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTQ0MS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6NDQyOnN0YXRpYyBpbnQgYW44ODAxcl9sZWRfaHdfaXNfc3VwcG9ydGVkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy00NDMtXHRcdFx0XHQgICAgICAgdW5zaWduZWQgbG9uZyBydWxlcylcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTQ1Mi1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6NDUzOnN0YXRpYyBpbnQgYW44ODAxcl9sZWRfaHdfY29udHJvbF9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTQ1NC1cdFx0XHRcdCAgICAgIHVuc2lnbmVkIGxvbmcgcnVsZXMpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy00NzktXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjQ4MDpzdGF0aWMgaW50IGFuODgwMXJfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTQ4MS1cdFx0XHRcdCAgICB1bnNpZ25lZCBsb25nIG1vZGVzKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtNTA0LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo1MDU6c3RhdGljIGludCBhbjg4MDFyX2xlZF9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4ICpsZWRfY2ZnKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy01MDYte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtNTYyLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo1NjM6c3RhdGljIGludCBhbjg4MDFyX3Jlc2V0X3dha2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtNTY0LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTYwMC1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6NjAxOnN0YXRpYyBpbnQgYW44ODAxcl9hY2tfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTYwMi17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy02MTQtXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjYxNTpzdGF0aWMgaW50IGFuODgwMXJfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtNjE2LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTY1MS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6NjUyOnN0YXRpYyBpcnFyZXR1cm5fdCBhbjg4MDFyX2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtNjUzLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTY3OS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6NjgwOnN0YXRpYyB2b2lkIGFuODgwMXJfZ2V0X3dvbChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy02ODEtXHRcdFx0ICAgIHN0cnVjdCBldGh0b29sX3dvbGluZm8gKndvbClcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTcwNy1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6NzA4OnN0YXRpYyBpbnQgYW44ODAxcl9zZXRfd29sKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTcwOS1cdFx0XHQgICBzdHJ1Y3QgZXRodG9vbF93b2xpbmZvICp3b2wpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy03ODItXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjc4MzpzdGF0aWMgaW50IGFuODgwMXJfb2ZfaW5pdF9sZWRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4ICpsZWRfY2ZnKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy03ODQte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtODI5LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo4MzA6c3RhdGljIGludCBhbjg4MDFyX3JnbWlpX3J4ZGVsYXkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBlbmFibGUsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTgzMS1cdFx0XHRcdCB1MTYgZGVsYXlfc3RlcHMpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy04NTEtXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjg1MjpzdGF0aWMgaW50IGFuODgwMXJfcmdtaWlfdHhkZWxheShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIGVuYWJsZSxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtODUzLVx0XHRcdFx0IHUxNiBkZWxheV9zdGVwcylcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTg3MC1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6ODcxOnN0YXRpYyBpbnQgYW44ODAxcl9yZ21paV9kZWxheV9jb25maWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtODcyLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTkwMS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6OTAyOnN0YXRpYyBpbnQgYW44ODAxcl9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05MDMte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTk4LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5OTk6c3RhdGljIGludCBhbjg4MDFyX3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTEwMDAte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMTAzMy1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6MTAzNDpzdGF0aWMgaW50IGFuODgwMXJfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMTAzNS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0xMDU5LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzoxMDYwOnN0YXRpYyBpbnQgYW44ODAxcl9zdXNwZW5kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTEwNjEte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMTA5MC1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6MTA5MTpzdGF0aWMgaW50IGFuODgwMXJfcmVzdW1lKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTEwOTIte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTE5Nz1zdHJ1Y3QgZW44ODExaF9wcml2IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yMDEtXHRzdHJ1Y3QgY2xrX2h3XHRcdGh3O1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjAyOlx0c3RydWN0IHBoeV9kZXZpY2VcdCpwaHlkZXY7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yMDMtXHR1bnNpZ25lZCBpbnRcdFx0Y2tvX2lzX2VuYWJsZWQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9MjQ4PXN0YXRpYyBpbnQgX19haXJfcGJ1c19yZWdfd3JpdGUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTI3Mi1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjI3MzpzdGF0aWMgaW50IF9fYWlyX3dyaXRlX2J1ZihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MzIgYWRkcmVzcyxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTI3NC1cdFx0XHQgICBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTMwOC1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjMwOTpzdGF0aWMgaW50IGFpcl93cml0ZV9idWYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIGFkZHJlc3MsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0zMTAtXHRcdFx0IGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzI2LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MzI3OnN0YXRpYyBpbnQgZW44ODExaF93YWl0X21jdV9yZWFkeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzI4LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0zNDgtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzozNDk6c3RhdGljIGludCBhbjg4MTFoYl9jaGVja19jcmMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIHNldDEsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0zNTAtXHRcdFx0ICAgICAgdTMyIG1vbjIsIHUzMiBtb24zKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTM4Ni1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjM4NzpzdGF0aWMgdm9pZCBlbjg4MTFoX3ByaW50X2Z3X3ZlcnNpb24oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTM4OC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzk2LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6Mzk3OnN0YXRpYyBpbnQgYW44ODExaGJfbG9hZF9maWxlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGNvbnN0IGNoYXIgKm5hbWUsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0zOTgtXHRcdFx0ICAgICAgdTMyIGFkZHJlc3MpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDEyLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDEzOnN0YXRpYyBpbnQgYW44ODExaGJfbWN1X2Fzc2VydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDE0LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy00MzYtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo0Mzc6c3RhdGljIGludCBhbjg4MTFoYl9tY3VfZGVhc3NlcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTQzOC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDYxLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDYyOnN0YXRpYyBpbnQgYW44ODExaGJfbG9hZF9maXJtd2FyZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDYzLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01MDEtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1MDI6c3RhdGljIGludCBlbjg4MTFoX2xvYWRfZmlybXdhcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTUwMy17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTU3LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTU4OnN0YXRpYyBpbnQgZW44ODExaF9yZXN0YXJ0X21jdShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTU5LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01NzktXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1ODA6c3RhdGljIGludCBhaXJfaHdfbGVkX29uX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCwgYm9vbCBvbilcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTU4MS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjA5LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NjEwOnN0YXRpYyBpbnQgYWlyX2h3X2xlZF9ibGlua19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02MTEtXHRcdFx0XHRib29sIGJsaW5raW5nKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTYzNi1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjYzNzpzdGF0aWMgaW50IGFpcl9sZWRfYmxpbmtfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjM4LVx0XHRcdCAgICAgdW5zaWduZWQgbG9uZyAqZGVsYXlfb24sXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjY5LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NjcwOnN0YXRpYyBpbnQgYWlyX2xlZF9icmlnaHRuZXNzX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTY3MS1cdFx0XHRcdCAgZW51bSBsZWRfYnJpZ2h0bmVzcyB2YWx1ZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02OTQtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo2OTU6c3RhdGljIGludCBhaXJfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjk2LVx0XHRcdFx0ICB1bnNpZ25lZCBsb25nICpydWxlcylcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03MDctXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3MDg6c3RhdGljIGludCBhaXJfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzA5LVx0XHRcdFx0ICB1bnNpZ25lZCBsb25nIHJ1bGVzKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc2OC1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc2OTpzdGF0aWMgaW50IGFpcl9sZWRfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCwgdTggc3RhdGUsIHU4IHBvbClcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc3MC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzk2LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6Nzk3OnN0YXRpYyBpbnQgYWlyX2xlZHNfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgbnVtLCBpbnQgZHVyLCBpbnQgbW9kZSlcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc5OC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODQ1LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6ODQ2OnN0YXRpYyBpbnQgZW44ODExaF9sZWRfaHdfaXNfc3VwcG9ydGVkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODQ3LVx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgcnVsZXMpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9ODU5PXN0YXRpYyB1bnNpZ25lZCBsb25nIGFuODgxMWhiX2Nsa19yZWNhbGNfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy04NjItXHRzdHJ1Y3QgZW44ODExaF9wcml2ICpwcml2ID0gY2xrX2h3X3RvX2VuODgxMWhfcHJpdihodyk7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4NjM6XHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gcHJpdi1cdTAwM2VwaHlkZXY7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy04NjQtXHR1MzIgcGJ1c192YWx1ZTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz04NzQ9c3RhdGljIGludCBhbjg4MTFoYl9jbGtfZW5hYmxlKHN0cnVjdCBjbGtfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTg3Ni1cdHN0cnVjdCBlbjg4MTFoX3ByaXYgKnByaXYgPSBjbGtfaHdfdG9fZW44ODExaF9wcml2KGh3KTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjg3NzpcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSBwcml2LVx1MDAzZXBoeWRldjtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTg3OC1cbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz04ODQ9c3RhdGljIHZvaWQgYW44ODExaGJfY2xrX2Rpc2FibGUoc3RydWN0IGNsa19odyAqaHcpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODg2LVx0c3RydWN0IGVuODgxMWhfcHJpdiAqcHJpdiA9IGNsa19od190b19lbjg4MTFoX3ByaXYoaHcpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6ODg3Olx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHByaXYtXHUwMDNlcGh5ZGV2O1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODg4LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTg5Mz1zdGF0aWMgaW50IGFuODgxMWhiX2Nsa19pc19lbmFibGVkKHN0cnVjdCBjbGtfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTg5NS1cdHN0cnVjdCBlbjg4MTFoX3ByaXYgKnByaXYgPSBjbGtfaHdfdG9fZW44ODExaF9wcml2KGh3KTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjg5NjpcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSBwcml2LVx1MDAzZXBoeWRldjtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTg5Ny1cdHUzMiBwYnVzX3ZhbHVlO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTk1OD1zdGF0aWMgdW5zaWduZWQgbG9uZyBlbjg4MTFoX2Nsa19yZWNhbGNfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy05NjEtXHRzdHJ1Y3QgZW44ODExaF9wcml2ICpwcml2ID0gY2xrX2h3X3RvX2VuODgxMWhfcHJpdihodyk7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo5NjI6XHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gcHJpdi1cdTAwM2VwaHlkZXY7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy05NjMtXHR1MzIgcGJ1c192YWx1ZTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz05NzM9c3RhdGljIGludCBlbjg4MTFoX2Nsa19lbmFibGUoc3RydWN0IGNsa19odyAqaHcpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtOTc1LVx0c3RydWN0IGVuODgxMWhfcHJpdiAqcHJpdiA9IGNsa19od190b19lbjg4MTFoX3ByaXYoaHcpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6OTc2Olx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHByaXYtXHUwMDNlcGh5ZGV2O1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtOTc3LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTk4Mz1zdGF0aWMgdm9pZCBlbjg4MTFoX2Nsa19kaXNhYmxlKHN0cnVjdCBjbGtfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTk4NS1cdHN0cnVjdCBlbjg4MTFoX3ByaXYgKnByaXYgPSBjbGtfaHdfdG9fZW44ODExaF9wcml2KGh3KTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjk4NjpcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSBwcml2LVx1MDAzZXBoeWRldjtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTk4Ny1cbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz05OTI9c3RhdGljIGludCBlbjg4MTFoX2Nsa19pc19lbmFibGVkKHN0cnVjdCBjbGtfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTk5NC1cdHN0cnVjdCBlbjg4MTFoX3ByaXYgKnByaXYgPSBjbGtfaHdfdG9fZW44ODExaF9wcml2KGh3KTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjk5NTpcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSBwcml2LVx1MDAzZXBoeWRldjtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTk5Ni1cdHUzMiBwYnVzX3ZhbHVlO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTEwMzI9c3RhdGljIGludCBlbjg4MTFoX2Nsa19wcm92aWRlcl9zZXR1cChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBjbGtfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEwNTYtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMDU3OnN0YXRpYyBpbnQgZW44ODExaF9sZWRzX3NldHVwKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMDU4LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMDczLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTA3NDpzdGF0aWMgaW50IGFuODgxMWhiX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMDc1LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMTQ0LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTE0NTpzdGF0aWMgaW50IGVuODgxMWhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTExNDYte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTExODUtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMTg2OnN0YXRpYyBpbnQgYW44ODExaGJfY29uZmlnX3NlcmRlc19wb2xhcml0eShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTE4Ny17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTIxNi1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEyMTc6c3RhdGljIGludCBlbjg4MTFoX2NvbmZpZ19zZXJkZXNfcG9sYXJpdHkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEyMTgte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEyNTMtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMjU0OnN0YXRpYyBpbnQgYW44ODExaGJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEyNTUte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEyODAtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMjgxOnN0YXRpYyBpbnQgZW44ODExaF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNjAzCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipLY29uZmlnIERpdmUqKgoKQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGBkcml2ZXJzL25ldC9waHkvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIFBIWSBkcml2ZXIgY29uZmlndXJhdGlvbnMgbGl2ZSwgYW5kIHRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgd2hvbGUgbmV0d29ya2luZyBQSFkgdGhpbmcgaXMgc2V0IHVwIHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbS4gSSYjMzk7bSB0aGlua2luZyBhYm91dCBkZXBlbmRlbmN5IGRlZmluaXRpb25zLCBmZWF0dXJlIGZsYWdzLCBhbmQgZGVmYXVsdCBzZWxlY3Rpb25z4oCUdGhlIHdob2xlIEtjb25maWcgZW5jaGlsYWRhLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW50YWwgbWFwIG9mIHdoaWNoIFBIWSBkcml2ZXJzIGFyZSBhdmFpbGFibGUsIHdoYXQgdGhlaXIga2V5IGNoYXJhY3RlcmlzdGljcyBhcmUgKGxpa2UgaWYgdGhleSYjMzk7cmUgZ2VuZXJpYyBvciBzcGVjaWZpYyB0byBjZXJ0YWluIGhhcmR3YXJlKSwgYW5kIGhvdyB0aGV5IHRpZSBpbnRvIHRoZSBicm9hZGVyIG5ldHdvcmsgc3Vic3lzdGVtLiBTbywgbGV0JiMzOTtzIHB1bGwgdXAgdGhhdCBmaWxlIGFuZCBnZXQgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFBIWSBMYXllciBDb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBQSFlMSU5LXG4gICA3Olx0XHR0cmlzdGF0ZVxuICAgODpcdFx0c2VsZWN0IFBIWUxJQlxuICAgOTpcdFx0c2VsZWN0IFNXUEhZXG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgIFBIWWxpbmsgbW9kZWxzIHRoZSBsaW5rIGJldHdlZW4gdGhlIFBIWSBhbmQgTUFDLCBhbGxvd2luZyBmaXhlZFxuICAxMjpcdFx0ICBjb25maWd1cmF0aW9uIGxpbmtzLCBQSFlzLCBhbmQgU2VyZGVzIGxpbmtzIHdpdGggTUFDIGxldmVsXG4gIDEzOlx0XHQgIGF1dG9uZWdvdGlhdGlvbiBtb2Rlcy5cbiAgMTQ6XHRcbiAgMTU6XHRtZW51Y29uZmlnIFBIWUxJQlxuICAxNjpcdFx0dHJpc3RhdGUgXCYjMzQ7UEhZIERldmljZSBzdXBwb3J0IGFuZCBpbmZyYXN0cnVjdHVyZVwmIzM0O1xuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBFdGhlcm5ldCBjb250cm9sbGVycyBhcmUgdXN1YWxseSBhdHRhY2hlZCB0byBQSFlcbiAgMTk6XHRcdCAgZGV2aWNlcy4gIFRoaXMgb3B0aW9uIHByb3ZpZGVzIGluZnJhc3RydWN0dXJlIGZvclxuICAyMDpcdFx0ICBtYW5hZ2luZyBQSFkgZGV2aWNlcy5cbiAgMjE6XHRcbiAgMjI6XHRpZiBQSFlMSUJcbiAgMjM6XHRcbiAgMjQ6XHRjb25maWcgU1dQSFlcbiAgMjU6XHRcdGJvb2xcbiAgMjY6XHRcbiAgMjc6XHRjb25maWcgUEhZX1BBQ0tBR0VcbiAgMjg6XHRcdCB0cmlzdGF0ZVxuICAyOTpcdFxuICAzMDpcdGNvbmZpZyBMRURfVFJJR0dFUl9QSFlcbiAgMzE6XHRcdGJvb2wgXCYjMzQ7U3VwcG9ydCBMRUQgdHJpZ2dlcnMgZm9yIHRyYWNraW5nIGxpbmsgc3RhdGVcJiMzNDtcbiAgMzI6XHRcdGRlcGVuZHMgb24gTEVEU19UUklHR0VSU1xuICAzMzpcdFx0aGVscFxuICAzNDpcdFx0ICBBZGRzIHN1cHBvcnQgZm9yIGEgc2V0IG9mIExFRCB0cmlnZ2VyIGV2ZW50cyBwZXItUEhZLiAgTGlua1xuICAzNTpcdFx0ICBzdGF0ZSBjaGFuZ2Ugd2lsbCB0cmlnZ2VyIHRoZSBldmVudHMsIGZvciBjb25zdW1wdGlvbiBieSBhblxuICAzNjpcdFx0ICBMRUQgY2xhc3MgZHJpdmVyLiAgVGhlcmUgYXJlIHRyaWdnZXJzIGZvciBlYWNoIGxpbmsgc3BlZWQgY3VycmVudGx5XG4gIDM3Olx0XHQgIHN1cHBvcnRlZCBieSB0aGUgUEhZIGFuZCBhbHNvIGEgb25lIGNvbW1vbiBcJiMzNDtsaW5rXCYjMzQ7IHRyaWdnZXIgYXMgYVxuICAzODpcdFx0ICBsb2dpY2FsLW9yIG9mIGFsbCB0aGUgbGluayBzcGVlZCBvbmVzLlxuICAzOTpcdFx0ICBBbGwgdGhlc2UgdHJpZ2dlcnMgYXJlIG5hbWVkIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIHBhdHRlcm46XG4gIDQwOlx0XHQgICAgICBcdTAwM2NtaWkgYnVzIGlkXHUwMDNlOlx1MDAzY3BoeVx1MDAzZTpcdTAwM2NzcGVlZFx1MDAzZVxuICA0MTpcdFxuICA0MjpcdFx0ICBXaGVyZSBzcGVlZCBpcyBpbiB0aGUgZm9ybTpcbiAgNDM6XHRcdFx0XHUwMDNjU3BlZWQgaW4gbWVnYWJpdHNcdTAwM2VNYnBzIE9SIFx1MDAzY1NwZWVkIGluIGdpZ2FiaXRzXHUwMDNlR2JwcyBPUiBsaW5rXG4gIDQ0Olx0XHRcdGZvciBhbnkgc3BlZWQga25vd24gdG8gdGhlIFBIWS5cbiAgNDU6XHRcbiAgNDY6XHRjb25maWcgT1BFTl9BTExJQU5DRV9IRUxQRVJTXG4gIDQ3Olx0XHRib29sXG4gIDQ4Olx0XG4gIDQ5Olx0Y29uZmlnIFBIWUxJQl9MRURTXG4gIDUwOlx0XHRkZWZfYm9vbCBPRlxuICA1MTpcdFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1QSFlMSUJcbiAgNTI6XHRcdGhlbHBcbiAgNTM6XHRcdCAgV2hlbiBMRUQgY2xhc3Mgc3VwcG9ydCBpcyBlbmFibGVkLCBwaHlsaWIgY2FuIGF1dG9tYXRpY2FsbHlcbiAgNTQ6XHRcdCAgcHJvYmUgTEVEIHNldHRpbmcgZnJvbSBkZXZpY2UgdHJlZS5cbiAgNTU6XHRcbiAgNTY6XHRjb25maWcgRklYRURfUEhZXG4gIDU3Olx0XHR0cmlzdGF0ZSBcJiMzNDtNRElPIEJ1cy9QSFkgZW11bGF0aW9uIHdpdGggZml4ZWQgc3BlZWQvbGluayBQSFlzXCYjMzQ7XG4gIDU4Olx0XHRzZWxlY3QgU1dQSFlcbiAgNTk6XHRcdGhlbHBcbiAgNjA6XHRcdCAgQWRkcyB0aGUgcGxhdGZvcm0gXCYjMzQ7Zml4ZWRcJiMzNDsgTURJTyBCdXMgdG8gY292ZXIgdGhlIGJvYXJkcyB0aGF0IHVzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAyMTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTU0OAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgUEhZTElOS2AgYW5kIGBQSFlMSUJgIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuIE15IGZvY3VzIGlzIG9uIHVuZGVyc3RhbmRpbmcgd2hhdCBzcGVjaWZpY2FsbHkgcHVsbHMgaW4gYFBIWUxJTktgIGFuZCBgUEhZTElCYC4gR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUga2VybmVsJiMzOTtzIG5ldHdvcmtpbmcgc3RhY2ssIHRoZSBmaXJzdCBwbGFjZSBJJiMzOTtsbCB0YXJnZXQgaXMgdGhlIGRldmljZSBkcml2ZXIgY29uZmlndXJhdGlvbi4gSSYjMzk7bSB0aGlua2luZyBkcml2ZXJzIHJlbGF0ZWQgdG8gbmV0d29yayBpbnRlcmZhY2VzIGFyZSB0aGUgbW9zdCBsaWtlbHkgY2FuZGlkYXRlcy4KCk15IHBsYW4gaXMgdG8gc3RhcnQgd2l0aCBhIGBncmVwYCB0aHJvdWdoIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzLiBUaGlzIG1lYW5zIGRpdmluZyBpbnRvIGBkcml2ZXJzL25ldC9LY29uZmlnYCBhbmQsIGRlcGVuZGluZyBvbiB0aGUgYXJjaGl0ZWN0dXJlIEkmIzM5O20gd29ya2luZyB3aXRoLCBwb3NzaWJseSBjaGVja2luZyB3aXRoaW4gYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCB0b28uIEkgZXhwZWN0IGBQSFlMSU5LYCBhbmQgYFBIWUxJQmAgd2lsbCBiZSBpbmNsdWRlZCwgYW5kIG15IGFpbSBpcyB0byBmaW5kICp3aGVyZSogaW4gdGhlIGhpZXJhcmNoeSB0aGVzZSBhcmUgc2VsZWN0ZWQsIGFuZCB1bmRlciB3aGF0IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLiBUaGF0IHNob3VsZCBpbGx1bWluYXRlIHRoZSB0cmlnZ2VyaW5nIGNvbmRpdGlvbnMgSSYjMzk7bSBpbnRlcmVzdGVkIGluIGFuZCB0aGVpciByb2xlIGluIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB0aGUgbmV0d29ya2luZyBzdWJzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBQSFlMSU5LJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9LY29uZmlnPTI9Y29uZmlnIEFMVEVSQV9UU0Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvS2NvbmZpZy02LVx0c2VsZWN0IFBIWUxJQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL0tjb25maWc6NzpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvS2NvbmZpZy04LVx0c2VsZWN0IFBDU19MWU5YXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9LY29uZmlnPTIwPWNvbmZpZyBBRzcxWFhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWctMjItXHRkZXBlbmRzIG9uIEFUSDc5IHx8IENPTVBJTEVfVEVTVFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9LY29uZmlnOjIzOlx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZy0yNC1cdGltcGx5IE5FVF9TRUxGVEVTVFNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc9MjI9Y29uZmlnIE1BQ0Jcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctMjUtXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc6MjY6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTI3LVx0c2VsZWN0IENSQzMyXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc9ODA9Y29uZmlnIFVDQ19HRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctODMtXHRzZWxlY3QgRlNMX1BRX01ESU9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjg0Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTg1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL0tjb25maWc9Mj1tZW51Y29uZmlnIEZTTF9EUEFBX0VUSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL0tjb25maWctNC1cdGRlcGVuZHMgb24gRlNMX0RQQUEgXHUwMDI2XHUwMDI2IEZTTF9GTUFOXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9LY29uZmlnOjU6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvS2NvbmZpZy02LVx0c2VsZWN0IFBDU19MWU5YXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWc9Mj1jb25maWcgRlNMX0RQQUEyX0VUSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIEZTTF9NQ19CVVMgXHUwMDI2XHUwMDI2IEZTTF9NQ19EUElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZzo1Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnLTYtXHRzZWxlY3QgUENTX0xZTlhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZz0zMz1jb25maWcgRlNMX0RQQUEyX1NXSVRDSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnLTM3LVx0ZGVwZW5kcyBvbiBGU0xfTUNfQlVTIFx1MDAyNlx1MDAyNiBGU0xfTUNfRFBJT1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWc6Mzg6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctMzktXHRzZWxlY3QgUENTX0xZTlhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZz0zMD1jb25maWcgRlNMX0VORVRDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctMzctXHRzZWxlY3QgTlhQX0VORVRDX1BGX0NPTU1PTlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc6Mzg6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctMzktXHRzZWxlY3QgUENTX0xZTlhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZz00OD1jb25maWcgTlhQX0VORVRDNFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnLTU1LVx0c2VsZWN0IE5YUF9OVE1QXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZzo1NjpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZy01Ny1cdHNlbGVjdCBESU1MSUJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZz02Nj1jb25maWcgRlNMX0VORVRDX1ZGXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctNzEtXHRzZWxlY3QgRlNMX0VORVRDX01ESU9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnOjcyOlx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnLTczLVx0c2VsZWN0IERJTUxJQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL0tjb25maWc9Mj1jb25maWcgRlNMX0ZNQU5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnLTUtXHRzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL0tjb25maWc6NjpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnLTctXHRzZWxlY3QgUENTX0xZTlhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9LY29uZmlnPTI9Y29uZmlnIEZTX0VORVRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9LY29uZmlnLTUtXHRzZWxlY3QgTUlJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9LY29uZmlnOjY6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvS2NvbmZpZy03LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZz01OT1jb25maWcgTVZORVRBXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTYyLVx0c2VsZWN0IE1WTURJT1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnOjYzOlx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy02NC1cdHNlbGVjdCBQQUdFX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc9ODY9Y29uZmlnIE1WUFAyXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTg5LVx0c2VsZWN0IE1WTURJT1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnOjkwOlx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy05MS1cdHNlbGVjdCBQQUdFX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWc9Nj1jb25maWcgUFJFU1RFUkFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWctMTAtXHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvS2NvbmZpZzoxMTpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWctMTItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZz0xND1jb25maWcgTkVUX01FRElBVEVLX1NPQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMTctXHRzZWxlY3QgUElOQ1RSTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZzoxODpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTE5LVx0c2VsZWN0IERJTUxJQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZz0yMD1jb25maWcgRkJOSUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMjktXHRzZWxlY3QgUENTX1hQQ1NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZzozMDpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMzEtXHRzZWxlY3QgUExETUZXXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWc9NDU9Y29uZmlnIExBTjc0M1hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZy01MS1cdHNlbGVjdCBDUkMzMlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWc6NTI6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWctNTMtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZz0xPWNvbmZpZyBMQU45NjZYX1NXSVRDSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWctNy1cdGRlcGVuZHMgb24gQlJJREdFIHx8IEJSSURHRT1uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnOjg6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy05LVx0c2VsZWN0IFBBR0VfUE9PTFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZz0xPWNvbmZpZyBTUEFSWDVfU1dJVENIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTgtXHRkZXBlbmRzIG9uIEJSSURHRSB8fCBCUklER0U9blxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnOjk6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTEwLVx0c2VsZWN0IFBIWV9TUEFSWDVfU0VSREVTXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9LY29uZmlnPTE1PWNvbmZpZyBNU0NDX09DRUxPVF9TV0lUQ0hfTElCXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9LY29uZmlnLTE5LVx0c2VsZWN0IFBBQ0tJTkdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2MvS2NvbmZpZzoyMDpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWctMjEtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZz00Mj1jb25maWcgUkVORVNBU19FVEhFUl9TV0lUQ0hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWctNDctXHRzZWxlY3QgTUlJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWc6NDg6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnLTQ5LVx0c2VsZWN0IFJFTkVTQVNfR0VONF9QVFBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI9Y29uZmlnIFNUTU1BQ19FVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTktXHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEwOlx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTEtXHRzZWxlY3QgQ1JDMzJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZz0yNj1jb25maWcgVEVIVVRJX1RONDBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZy0zMC1cdHNlbGVjdCBGV19MT0FERVJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnOjMxOlx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnLTMyLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9OTY9Y29uZmlnIFRJX0szX0FNNjVfQ1BTV19OVVNTXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0xMDAtXHRzZWxlY3QgVElfREFWSU5DSV9NRElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjEwMTpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTEwMi1cdHNlbGVjdCBQQUdFX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9MTk9Y29uZmlnIExJQldYXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTIzLVx0c2VsZWN0IERJTUxJQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjI0Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0yNS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZz0yNj1jb25maWcgWElMSU5YX0FYSV9FTUFDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWctMjktXHRkZXBlbmRzIG9uIFhJTElOWF9ETUFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnOjMwOlx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTMxLVx0c2VsZWN0IERJTUxJQlxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnPTg9Y29uZmlnIFBDU19YUENTXG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZy05LVx0dHJpc3RhdGUgXCYjMzQ7U3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBYUENTXCYjMzQ7XG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZzoxMDpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZy0xMS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0xMTM9Y29uZmlnIFVTQl9MQU43OFhYXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTE1LVx0c2VsZWN0IE1JSVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTE2Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTExNy1cdHNlbGVjdCBNSUNST0NISVBfUEhZXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MTY2PWNvbmZpZyBVU0JfTkVUX0FYODgxN1hcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNjktXHRzZWxlY3QgQ1JDMzJcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjE3MDpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNzEtXHRzZWxlY3QgQVg4ODc5NkJfUEhZXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0ODgzCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdC4KCioqRXRoZXJuZXQgRGV2aWNlIERyaXZlcnMgJmFtcDsgRW11bGF0aW9uIGZvciBUZXN0aW5nKioKClJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZXNlIFVTQiBFdGhlcm5ldCBkcml2ZXJzLCBgVVNCX0xBTjc4WFhgIGFuZCBgVVNCX05FVF9BWDg4MTdYYC4gU2VlbXMgbGlrZSB0aGV5IGJvdGggaG9vayBpbnRvIGBQSFlMSU5LYCBhbmQgYFBIWUxJQmAsIHdoaWNoIGlzIHN0YW5kYXJkIGZvciBoYW5kbGluZyB0aGUgcGh5c2ljYWwgbGF5ZXIgaW50ZXJmYWNlLiBUaGF0JiMzOTtzIGEgc29saWQgYXJjaGl0ZWN0dXJhbCBjaG9pY2UsIG5vdGhpbmcgc3VycHJpc2luZyB0aGVyZS4KClRoZSBleGNpdGluZyBwYXJ0IGlzIHRoYXQgSSBjYW4gZW11bGF0ZSB0aGVzZSBVU0IgRXRoZXJuZXQgZGV2aWNlcyB1c2luZyBVU0IgcmF3LWdhZGdldCBvciBkdW1teV9oY2Qgd2l0aGluIHN5emthbGxlciBvciBRRU1VISBJIGNhbiBsZXZlcmFnZSB0aGF0IHRvIHRlc3QgdGhlbSB0aG9yb3VnaGx5LgoKQWxzbywgSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgYE5FVF9EU0FgIGFsc28gc2VsZWN0cyBgUEhZTElOS2AuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgYG5ldC9kc2EvS2NvbmZpZ2AgZmlsZSB0byBjb25maXJtIGhvdyB0aGF0IHRpZXMgaW50byB0aGUgb3ZlcmFsbCBwaWN0dXJlLiBHb3R0YSBtYWtlIHN1cmUgSSYjMzk7bSBjb25zaWRlcmluZyBhbGwgcG90ZW50aWFsIGludGVyYWN0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGR1cmluZyBteSB0ZXN0aW5nIHN0cmF0ZWd5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSBhbiBleGhhdXN0aXZlIHRlc3QgcGxhbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UEhZTElOSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9kc2EvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9kc2EvS2NvbmZpZz0zPW1lbnVjb25maWcgTkVUX0RTQVxuLS1cbm5ldC9kc2EvS2NvbmZpZy05LVx0c2VsZWN0IE5FVF9TV0lUQ0hERVZcbm5ldC9kc2EvS2NvbmZpZzoxMDpcdHNlbGVjdCBQSFlMSU5LXG5uZXQvZHNhL0tjb25maWctMTEtXHRzZWxlY3QgTkVUX0RFVkxJTktcbi0tXG5uZXQvZHNhL3BvcnQuYz0xNjE3PWludCBkc2FfcG9ydF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZHNhX3BvcnQgKmRwKVxuLS1cbm5ldC9kc2EvcG9ydC5jLTE2NDktXHRpZiAoSVNfRVJSKHBsKSkge1xubmV0L2RzYS9wb3J0LmM6MTY1MDpcdFx0cHJfZXJyKFwmIzM0O2Vycm9yIGNyZWF0aW5nIFBIWUxJTks6ICVsZFxcblwmIzM0OywgUFRSX0VSUihwbCkpO1xubmV0L2RzYS9wb3J0LmMtMTY1MS1cdFx0cmV0dXJuIFBUUl9FUlIocGwpO1xuLS1cbm5ldC9kc2EvcG9ydC5jPTE2NjU9c3RhdGljIGludCBkc2Ffc2hhcmVkX3BvcnRfcGh5bGlua19yZWdpc3RlcihzdHJ1Y3QgZHNhX3BvcnQgKmRwKVxuLS1cbm5ldC9kc2EvcG9ydC5jLTE2NzEtXHRkcC1cdTAwM2VwbF9jb25maWcuZGV2ID0gZHMtXHUwMDNlZGV2O1xubmV0L2RzYS9wb3J0LmM6MTY3MjpcdGRwLVx1MDAzZXBsX2NvbmZpZy50eXBlID0gUEhZTElOS19ERVY7XG5uZXQvZHNhL3BvcnQuYy0xNjczLVxuLS1cbm5ldC9kc2EvdXNlci5jPTI2NTQ9c3RhdGljIGludCBkc2FfdXNlcl9waHlfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKnVzZXJfZGV2KVxuLS1cbm5ldC9kc2EvdXNlci5jLTI2NjItXHRkcC1cdTAwM2VwbF9jb25maWcuZGV2ID0gXHUwMDI2dXNlcl9kZXYtXHUwMDNlZGV2O1xubmV0L2RzYS91c2VyLmM6MjY2MzpcdGRwLVx1MDAzZXBsX2NvbmZpZy50eXBlID0gUEhZTElOS19ORVRERVY7XG5uZXQvZHNhL3VzZXIuYy0yNjY0LVxubmV0L2RzYS91c2VyLmMtMjY2NS1cdC8qIFRoZSBnZXRfZml4ZWRfc3RhdGUgY2FsbGJhY2sgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHBvbGxpbmcgdGhlXG5uZXQvZHNhL3VzZXIuYzoyNjY2Olx0ICogbGluayBHUElPIGluIFBIWUxJTksgKHNlZSBwaHlsaW5rX2dldF9maXhlZF9zdGF0ZSkuICBPbmx5IHNldFxubmV0L2RzYS91c2VyLmMtMjY2Ny1cdCAqIHRoaXMgaWYgdGhlIHN3aXRjaCBwcm92aWRlcyBzdWNoIGEgY2FsbGJhY2suXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1NzQxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgTmV0d29yayBQSFkvUEhZTGluayBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSYjMzk7bSBleGFtaW5pbmcgdGhpcyBwYXRjaCB0byBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBjaGFuZ2luZyB1bmRlciB0aGUgaG9vZC4gSXQgc2VlbXMgdG8gYmUgY2xlYW5pbmcgdXAgc29tZSBlcnJvciBwYXRocyBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudCBpbiB0aGUgUEhZIChQaHlzaWNhbCBMYXllcikgYW5kIFBIWUxpbmsgc3Vic3lzdGVtcy4gIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgYWJvdXQgaGFuZGxpbmcgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb25zIGFuZCBlbnN1cmluZyBwcm9wZXIgY2xlYW51cCBvZiBQSFkgZGV2aWNlIHBvaW50ZXJzLCBlc3BlY2lhbGx5IGR1cmluZyB0aGUgYnJpbmd1cC90ZWFyZG93biBjeWNsZXMuCgpUaGUgZmlyc3QgcGFydCBsb29rcyBhdCBgcGh5X3Jlc3RvcmVfZ2VucGh5X2lycWAuIFRoaXMgZnVuY3Rpb24gc2VlbXMgdG8gYmUgbWFraW5nIHN1cmUgdGhlIGludGVycnVwdCBjb25maWd1cmF0aW9uIGlzIGNvcnJlY3RseSByZXN0b3JlZCB3aGVuIHRoZSBnZW5lcmljIFBIWSBkcml2ZXIgaXMgdXNlZCwgcGFydGljdWxhcmx5IGFmdGVyIGFuIGVycm9yIG9yIGRldGFjaG1lbnQuICBJdCYjMzk7cyBjcml0aWNhbCBiZWNhdXNlIGluY29ycmVjdCBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbiBjb3VsZCBsZWFkIHRvIGJyb2tlbiBuZXR3b3JrIGNvbm5lY3Rpdml0eSBvciBpbnN0YWJpbGl0eSwgYW5kIGlzIHRyaWdnZXJlZCBvbiB0aGUgZXJyb3IgcGF0aHMuCgpUaGUgc2Vjb25kIHBhcnQgZGVhbHMgd2l0aCBgcGh5bGlua19jbGVhcl9waHlkZXZgLiAgVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiB0byBkaXNhc3NvY2lhdGUgYSBQSFkgZGV2aWNlIGZyb20gYSBQSFlMaW5rIGluc3RhbmNlLiBJdCYjMzk7cyBpbnZva2VkIGluIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YCBhbmQgYWxzbyBhcyBwYXJ0IG9mIGVycm9yIGhhbmRsaW5nIGluIGBwaHlsaW5rX2JyaW5ndXBfcGh5YCwgbWFraW5nIHN1cmUgYSBQSFkgZGV2aWNlIGlzbiYjMzk7dCBsZWFrZWQgb24gYnJpbmd1cCBmYWlsdXJlcy4gIFRoaXMgaXMgaW1wb3J0YW50IGZvciBwcmV2ZW50aW5nIHJlc291cmNlIGxlYWtzIGFuZCBlbnN1cmluZyBQSFkgZGV2aWNlcyBjYW4gYmUgY2xlYW5seSByZS1hdHRhY2hlZC4KCkZ1bmN0aW9uYWxseSwgSSBjYW4gc2VlIHRoYXQgdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIHJlYWwsIHBvdGVudGlhbGx5IHByb2JsZW1hdGljIHNjZW5hcmlvcy4gIEZhaWx1cmUgdG8gcHJvcGVybHkgY2xlYXIgdGhlIGBwaHlkZXZgIHBvaW50ZXIgY291bGQgbGVhZCB0byB0aGUgYC1FQlVTWWAgZXJyb3IgYW5kIHJldHJ5IGZhaWx1cmUuICBUaGUgaW50ZXJydXB0IHJlc3RvcmF0aW9uIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gZHVyaW5nIFBIWSBhdHRhY2guIEJvdGggYXJlIHdvcnRoIGludmVzdGlnYXRpbmcuCgpOb3csIGFjY29yZGluZyB0byB0aGUgZ3VpZGFuY2UsIEkgbmVlZCB0byBkZWNpZGUgaWYgdGhpcyB3YXJyYW50cyBmdXp6aW5nLiBJdCYjMzk7cyBub3QganVzdCBkb2N1bWVudGF0aW9uIG9yIGxvZ2dpbmcuICBJdCYjMzk7cyBtb2RpZnlpbmcgY29yZSBuZXR3b3JrIFBIWSBsb2dpYywgd2hpY2ggaXMgdXNlZCBhY3Jvc3MgbWFueSBkaWZmZXJlbnQgbmV0d29ya2luZyBkcml2ZXJzLiAgVGhlIGNoYW5nZXMgYXJlIGluIHJlYWNoYWJsZSBlcnJvciBwYXRocywgYW5kIG5vdCBzcGVjaWZpYyB0byBhbnkgcGFydGljdWxhciBoYXJkd2FyZS4gSXQmIzM5O3Mgbm90IHZlbmRvci1zcGVjaWZpYyBvciB0aWVkIHRvIGEgc3BlY2lhbGl6ZWQgUENJZSBjYXJkIHRoYXQgY2FuJiMzOTt0IGJlIGVtdWxhdGVkLiBUaGVyZWZvcmUsIGl0JiMzOTtzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4KCk15IG5leHQgc3RlcCBpcyB0byBpZGVudGlmeSBgRm9jdXNTeW1ib2xzYCBhbmQgYEVuYWJsZUNvbmZpZ3NgLiAgQmFzZWQgb24gdGhlIGluc3RydWN0aW9ucywgdGhlIGBGb2N1c1N5bWJvbHNgIGFyZSB0aGUgbm9uLXN0YXRpYywgZXhwb3J0ZWQgZW50cnkgcG9pbnRzIG1vZGlmaWVkIGJ5IG9yIGRpcmVjdGx5IGludm9sdmVkIGluIHRoZSBwYXRjaDogYHBoeV9hdHRhY2hfZGlyZWN0YCwgYHBoeV9kZXRhY2hgLCBgcGh5bGlua19jb25uZWN0X3BoeWAsIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YCwgYHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3RgLCBgcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3RgLgoKVGhlIHJlcXVpcmVkIGBFbmFibGVDb25maWdzYCBhcHBlYXIgdG8gYmUgYFBIWUxJQmAgYW5kIGBQSFlMSU5LYCBmcm9tIHRoZSBkcml2ZXImIzM5O3MgbWFrZWZpbGUuCgpTbywgaW4gc3VtbWFyeTogSSYjMzk7dmUgaWRlbnRpZmllZCBjcml0aWNhbCBsb2dpYywgcmVsZXZhbnQgc3ltYm9scywgYW5kIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgZnVydGhlciBmdXp6aW5nIGFuYWx5c2lzLiAgVGhpcyBwYXRjaCBtb2RpZmllcyByZWFjaGFibGUsIGNvcmUga2VybmVsIGxvZ2ljIGFuZCB3YXJyYW50cyBmdXJ0aGVyIGludmVzdGlnYXRpb24gdmlhIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZ1wmIzM0OyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTUxMj1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvaXBhL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWctNTEzLVxuZHJpdmVycy9uZXQvS2NvbmZpZzo1MTQ6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnLTUxNS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg0OTgKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlOgoKKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBkaXZlIGludG8gdGhpcy4gQmFzZWQgb24gd2hhdCBJJiMzOTttIGxvb2tpbmcgYXQsIG15IGluaXRpYWwgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gdGhlIGBkcml2ZXJzL25ldC9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGFyZSBjb250cm9sbGluZyB0aGlzIHBhcnRpY3VsYXIgYXNwZWN0IG9mIHRoZSBuZXR3b3JrIHN0YWNrLiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIHN0YXJ0IGJ5IHRha2luZyBhIGxvb2sgYXQgbGluZSA1MTQgYW5kLCBnZW5lcmFsbHkgc3BlYWtpbmcsIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGBkcml2ZXJzL25ldC9LY29uZmlnYCBmaWxlLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBicm9hZGVyIGNvbnRleHQgYW5kIGxpa2VseSBzb21lIGtleSBkZXBlbmRlbmNpZXMgb3IgcGFyZW50IG9wdGlvbnMgdGhhdCBpbmZsdWVuY2UgdGhlIGJlaGF2aW9yIEkmIzM5O20gc2VlaW5nLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBhbmQgSSBuZWVkIHRvIHNlZSB3aGF0JiMzOTtzIHNldCB1cCBoZXJlIGluIGBLY29uZmlnYC4gVGhpcyBzaG91bGQgbGVhZCBtZSB0byB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAyMTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBOZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgTkVUREVWSUNFU1xuICAgNzpcdFx0ZGVmYXVsdCB5IGlmIFVNTFxuICAgODpcdFx0ZGVwZW5kcyBvbiBORVRcbiAgIDk6XHRcdGJvb2wgXCYjMzQ7TmV0d29yayBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBZb3UgY2FuIHNheSBOIGhlcmUgaWYgeW91IGRvbiYjMzk7dCBpbnRlbmQgdG8gY29ubmVjdCB5b3VyIExpbnV4IGJveCB0b1xuICAxMjpcdFx0ICBhbnkgb3RoZXIgY29tcHV0ZXIgYXQgYWxsLlxuICAxMzpcdFxuICAxNDpcdFx0ICBZb3UmIzM5O2xsIGhhdmUgdG8gc2F5IFkgaWYgeW91ciBjb21wdXRlciBjb250YWlucyBhIG5ldHdvcmsgY2FyZCB0aGF0XG4gIDE1Olx0XHQgIHlvdSB3YW50IHRvIHVzZSB1bmRlciBMaW51eC4gSWYgeW91IGFyZSBnb2luZyB0byBydW4gU0xJUCBvciBQUFAgb3ZlclxuICAxNjpcdFx0ICB0ZWxlcGhvbmUgbGluZSBvciBudWxsIG1vZGVtIGNhYmxlIHlvdSBuZWVkIHNheSBZIGhlcmUuIENvbm5lY3RpbmdcbiAgMTc6XHRcdCAgdHdvIG1hY2hpbmVzIHdpdGggcGFyYWxsZWwgcG9ydHMgdXNpbmcgUExJUCBuZWVkcyB0aGlzLCBhcyB3ZWxsIGFzXG4gIDE4Olx0XHQgIEFYLjI1L0tJU1MgZm9yIHNlbmRpbmcgSW50ZXJuZXQgdHJhZmZpYyBvdmVyIGFtYXRldXIgcmFkaW8gbGlua3MuXG4gIDE5Olx0XG4gIDIwOlx0XHQgIFNlZSBhbHNvIFwmIzM0O1RoZSBMaW51eCBOZXR3b3JrIEFkbWluaXN0cmF0b3ImIzM5O3MgR3VpZGVcJiMzNDsgYnkgT2xhZiBLaXJjaCBhbmRcbiAgMjE6XHRcdCAgVGVycnkgRGF3c29uLiBBdmFpbGFibGUgYXQgXHUwMDNjaHR0cDovL3d3dy50bGRwLm9yZy9ndWlkZXMuaHRtbFx1MDAzZS5cbiAgMjI6XHRcbiAgMjM6XHRcdCAgSWYgdW5zdXJlLCBzYXkgWS5cbiAgMjQ6XHRcbiAgMjU6XHQjIEFsbCB0aGUgZm9sbG93aW5nIHN5bWJvbHMgYXJlIGRlcGVuZGVudCBvbiBORVRERVZJQ0VTIC0gZG8gbm90IHJlcGVhdFxuICAyNjpcdCMgdGhhdCBmb3IgZWFjaCBvZiB0aGUgc3ltYm9scy5cbiAgMjc6XHRpZiBORVRERVZJQ0VTXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnIE1JSVxuICAzMDpcdFx0dHJpc3RhdGVcbiAgMzE6XHRcbiAgMzI6XHRjb25maWcgTkVUX0NPUkVcbiAgMzM6XHRcdGRlZmF1bHQgeVxuICAzNDpcdFx0Ym9vbCBcJiMzNDtOZXR3b3JrIGNvcmUgZHJpdmVyIHN1cHBvcnRcJiMzNDtcbiAgMzU6XHRcdGhlbHBcbiAgMzY6XHRcdCAgWW91IGNhbiBzYXkgTiBoZXJlIGlmIHlvdSBkbyBub3QgaW50ZW5kIHRvIHVzZSBhbnkgb2YgdGhlXG4gIDM3Olx0XHQgIG5ldHdvcmtpbmcgY29yZSBkcml2ZXJzIChpLmUuIFZMQU4sIGJyaWRnaW5nLCBib25kaW5nLCBldGMuKVxuICAzODpcdFxuICAzOTpcdGlmIE5FVF9DT1JFXG4gIDQwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5MjM4CgkJCQkJCQlvdXRwdXQ6IDIzMgoJCQkJCQkJdGhvdWdodHM6IDM3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBQSFkgTGF5ZXIgYW5kIFBoeWxpbmsgU3Vic3lzdGVtIENoYW5nZXMqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCBiYXNlZCBvbiB0aGUgZGVwZW5kZW5jaWVzLCBoZXJlJiMzOTtzIHdoYXQgSSYjMzk7dmUgZ290LiBgTkVUREVWSUNFU2AgY2xlYXJseSBkZXBlbmRzIG9uIGBORVRgLCBhbmQgd2l0aGluIGBORVRERVZJQ0VTYCwgd2UgZmluZCBgUEhZTElCYC4gYFBIWUxJTktgIGlzIHRoZSBjb21wb25lbnQgdGhhdCBpbnRlcmFjdHMgd2l0aCBhbmQgc2VsZWN0cyBiZXR3ZWVuIGBQSFlMSUJgIGFuZCBgU1dQSFlgLiBUbyByZWFsbHkgdGVzdCB0aGlzLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O3ZlIGdvdCBhIHdheSB0byBleGVyY2lzZSBgcGh5bGlua2AgYW5kIGBwaHlsaWJgLiBJdCBsb29rcyBsaWtlIGRyaXZlcnMgbGlrZSBgTkVUX0RTQWAsIGBVU0JfTEFONzhYWGAsIGBVU0JfTkVUX0FYODgxN1hgLCBvciBgRklYRURfUEhZYCBjYW4gYmUgdXNlZCBmb3IgdGhhdC4gVGhlcmVmb3JlLCB0byBlbnN1cmUgSSBjYW4gYWN0dWFsbHkgdGVzdCB0aGVzZSBjaGFuZ2VzLCBJJiMzOTtsbCB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgZm9sbG93aW5nIGNvbmZpZ3MgYXJlIGVuYWJsZWQ6CgoqICAgYE5FVGAKKiAgIGBORVRERVZJQ0VTYAoqICAgYFBIWUxJQmAKKiAgIGBQSFlMSU5LYAoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bSBnb2luZyB0byBkb3VibGUtY2hlY2sgZXZlcnl0aGluZyBhbmQgbWFrZSBzdXJlIHRoZSBmb3JtYXR0aW5nIGlzIGFsbCBjb3JyZWN0IGJlZm9yZSBJIGNvbnRpbnVlLgoKVGhlIHBhdGNoIGZvY3VzZXMgb24gdGhlc2Uga2V5IGZ1bmN0aW9uczoKCiogICBgcGh5X2F0dGFjaF9kaXJlY3RgCiogICBgcGh5X2RldGFjaGAKKiAgIGBwaHlsaW5rX2Nvbm5lY3RfcGh5YAoqICAgYHBoeWxpbmtfZGlzY29ubmVjdF9waHlgCiogICBgcGh5bGlua19vZl9waHlfY29ubmVjdGAKKiAgIGBwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdGAKCkkgYWxzbyBub3RlIHRoZSBpbXBvcnRhbmNlIG9mIG1ha2luZyBzdXJlIHRoZXNlIGNvbmZpZ3VyYXRpb25zIGFyZSBzZXQsIGFzIG1lbnRpb25lZCBwcmV2aW91c2x5OgoKKiAgIGBORVRgCiogICBgTkVUREVWSUNFU2AKKiAgIGBQSFlMSUJgCiogICBgUEhZTElOS2AKCkxvb2tzIGxpa2UgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIFRoZSBjaGFuZ2VzIGFyZSBpbiBjb3JlIFBIWSBsYXllciBhbmQgcGh5bGluayBzdWJzeXN0ZW0gY29kZSAoYHBoeV9kZXZpY2UuY2AgYW5kIGBwaHlsaW5rLmNgKSwgc3BlY2lmaWNhbGx5IGFkZHJlc3NpbmcgZXJyb3IgaGFuZGxpbmcgYW5kIGNsZWFudXAuIFRoZSBwYXRjaCBlbnN1cmVzIHRoYXQgYHBsLSZndDtwaHlkZXZgIGlzIGNsZWFyZWQgd2hlbiB0aGVyZSBpcyBhIGZhaWx1cmUgZHVyaW5nIGBwaHlsaW5rX2JyaW5ndXBfcGh5YCwgcHJldmVudGluZyBzdGFsZSBwb2ludGVycyBhbmQgZW5zdXJpbmcgYSBzdWNjZXNzZnVsIGNvbm5lY3Rpb24uIEl0IGFsc28gcmVzdG9yZXMgZ2VuZXJpYyBQSFkgSVJRIGNvbmZpZ3VyYXRpb24gdXBvbiB1bmJpbmQgb3IgZXJyb3IgdXNpbmcgYHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoKWAuIEkgY2FuIHNlZSB0aGVzZSBjb2RlIHBhdGhzIGFyZSBhY3R1YWxseSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBlbXVsYXRlZCBVU0IgZXRoZXJuZXQgaGFyZHdhcmUsIGZvciBleGFtcGxlLCB0aGUgQVg4ODE3OSBvciBMQU43OHh4LCBvciBldmVuIERTQSBsb29wYmFjayBkZXZpY2VzLgoKQWxyaWdodCwgSSYjMzk7bSByZWFkeSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVQmIzM0OywKICAgICYjMzQ7TkVUREVWSUNFUyYjMzQ7LAogICAgJiMzNDtQSFlMSUImIzM0OywKICAgICYjMzQ7UEhZTElOSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BoeV9hdHRhY2hfZGlyZWN0JiMzNDssCiAgICAmIzM0O3BoeV9kZXRhY2gmIzM0OywKICAgICYjMzQ7cGh5bGlua19jb25uZWN0X3BoeSYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBQSFkgbGlicmFyeSBhbmQgcGh5bGluayBzdWJzeXN0ZW0gbG9naWMgaW4gZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyBhbmQgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy4gSXQgaW50cm9kdWNlcyBwaHlfcmVzdG9yZV9nZW5waHlfaXJxIHRvIHByb3Blcmx5IHJlc3RvcmUgUEhZIGludGVycnVwdCBjb25maWd1cmF0aW9ucyB3aGVuIGRldGFjaGluZyBvciBmYWlsaW5nIHRvIGF0dGFjaCBhIGdlbmVyaWMgUEhZLCBhbmQgZW5zdXJlcyBwaHlsaW5rX2NsZWFyX3BoeWRldiBpcyBjYWxsZWQgdG8gY2xlYW5seSBkZXRhY2ggYW5kIHJlc2V0IHN0YXRlIGlmIHBoeWxpbmtfYnJpbmd1cF9waHkgZmFpbHMuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHJlYWNoYWJsZSBuZXR3b3JrIFBIWSBzZXR1cC90ZWFyZG93biBsb2dpYyB1c2VkIGJ5IGVtdWxhdGVkIG5ldHdvcmsgYWRhcHRlcnMgKGUuZy4gVVNCIGV0aGVybmV0IGFkYXB0ZXJzIGFuZCBEU0EgbG9vcCBkZXZpY2VzKSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVCYjMzQ7LAogICAgJiMzNDtORVRERVZJQ0VTJiMzNDssCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtQSFlMSU5LJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5X2F0dGFjaF9kaXJlY3QmIzM0OywKICAgICYjMzQ7cGh5X2RldGFjaCYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2Nvbm5lY3RfcGh5JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfZGlzY29ubmVjdF9waHkmIzM0OywKICAgICYjMzQ7cGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7cGh5bGlua19vZl9waHlfY29ubmVjdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFBIWSBsaWJyYXJ5IGFuZCBwaHlsaW5rIHN1YnN5c3RlbSBsb2dpYyBpbiBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGFuZCBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jLiBJdCBpbnRyb2R1Y2VzIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEgdG8gcHJvcGVybHkgcmVzdG9yZSBQSFkgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb25zIHdoZW4gZGV0YWNoaW5nIG9yIGZhaWxpbmcgdG8gYXR0YWNoIGEgZ2VuZXJpYyBQSFksIGFuZCBlbnN1cmVzIHBoeWxpbmtfY2xlYXJfcGh5ZGV2IGlzIGNhbGxlZCB0byBjbGVhbmx5IGRldGFjaCBhbmQgcmVzZXQgc3RhdGUgaWYgcGh5bGlua19icmluZ3VwX3BoeSBmYWlscy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgcmVhY2hhYmxlIG5ldHdvcmsgUEhZIHNldHVwL3RlYXJkb3duIGxvZ2ljIHVzZWQgYnkgZW11bGF0ZWQgbmV0d29yayBhZGFwdGVycyAoZS5nLiBVU0IgZXRoZXJuZXQgYWRhcHRlcnMgYW5kIERTQSBsb29wIGRldmljZXMpIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6NTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAyMTo1NDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBzdGF0ZSBjbGVhbnVwIGFuZCBJUlEgcmVzdG9yYXRpb24gaW4gUEhZIGFuZCBwaHlsaW5rIGRyaXZlciBsaWZlY3ljbGVzIChzcGVjaWZpY2FsbHkgcmVzdG9yaW5nIHBoeWRldi1cdTAwM2VpcnEgdXBvbiBnZW5lcmljIFBIWSBkcml2ZXIgZGV0YWNoL2F0dGFjaCBmYWlsdXJlIGFuZCBjbGVhcmluZyBwbC1cdTAwM2VwaHlkZXYgb24gcGh5bGlua19icmluZ3VwX3BoeSBmYWlsdXJlKS4gXG5cblRoZXNlIGNoYW5nZXMgaW52b2x2ZSBtYW5hZ2luZyBvYmplY3QgbGlmZWN5Y2xlcywgcmVzZXR0aW5nIGludGVybmFsIHBvaW50ZXJzIHRvIE5VTEwsIGFuZCByZXNldHRpbmcgYm9vbGVhbiBmbGFncy4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgcmVhZHMsIHBhZGRpbmcgbGVha3MsIG9yIHVzZXItc3BhY2UgY29waWVzIChjb3B5X3RvX3VzZXIvbmV0bGluaykgYXJlIGludHJvZHVjZWQgb3IgbW9kaWZpZWQuIEFueSBsaWZlY3ljbGUgb3IgZGFuZ2xpbmcgcG9pbnRlciBpc3N1ZXMgaW4gdGhpcyBjb2RlIHBhdGggZmFsbCB1bmRlciBLQVNBTiAodXNlLWFmdGVyLWZyZWUgLyBpbnZhbGlkIGFjY2Vzcykgb3Igc3RhbmRhcmQga2VybmVsIGFzc2VydGlvbnMvTE9DS0RFUCwgbWFraW5nIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gdW5uZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDljOTkyMzVjNzg0ZDZjN2RiZjY0M2M4NWRiODYxOTU1MDE0YTYyYTQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAyNyAyMTozNTo1MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCmluZGV4IDk0YjJlODVlMDBhMzcuLmJlNGMzNWRiOGRlOTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwpAQCAtMTczNCw2ICYjNDM7MTczNCwxOCBAQCBzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KQogCXJldHVybiBwaHlkcnYtJmd0O2NvbmZpZ19pbnRyICZhbXA7JmFtcDsgcGh5ZHJ2LSZndDtoYW5kbGVfaW50ZXJydXB0OwogfQogCiYjNDM7LyogR2l2ZSBiYWNrIHRoZSBpbnRlcnJ1cHQgcGh5X3Byb2JlKCkgcGFya2VkIHdoZW4gYSBkcml2ZXIgd2l0aCBubyBpbnRlcnJ1cHQKJiM0MzsgKiBjYWxsYmFja3MgYm91bmQuIG1kaW9idXNfYWxsb2MoKSBkZWZhdWx0cyBidXMtJmd0O2lycVtdIHRvIFBIWV9QT0xMIGFuZCB0aGUKJiM0MzsgKiBiaW5kIGN5Y2xlIGRvZXMgbm90IHRvdWNoIHRoZSB0YWJsZSwgc28gd2hhdGV2ZXIgdGhlIGJ1cyByZWNvcmRlZCB0aGVyZQomIzQzOyAqIHN0aWxsIHN0YW5kcy4gT25seSB0aGUgcGFya2luZyBpcyB1bmRvbmU6IGFueSBvdGhlciB2YWx1ZSB0aGUgUEhZIGNhcnJpZXMKJiM0MzsgKiB3YXMgcHV0IHRoZXJlIGJ5IHNvbWVvbmUgZWxzZS4KJiM0MzsgKi8KJiM0MztzdGF0aWMgdm9pZCBwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7ewomIzQzOwlpZiAocGh5ZGV2LSZndDtpcnEgPT0gUEhZX1BPTEwpCiYjNDM7CQlwaHlkZXYtJmd0O2lycSA9IHBoeWRldi0mZ3Q7bWRpby5idXMtJmd0O2lycVtwaHlkZXYtJmd0O21kaW8uYWRkcl07CiYjNDM7fQomIzQzOwogLyoqCiAgKiBwaHlfYXR0YWNoX2RpcmVjdCAtIGF0dGFjaCBhIG5ldHdvcmsgZGV2aWNlIHRvIGEgZ2l2ZW4gUEhZIGRldmljZSBwb2ludGVyCiAgKiBAZGV2OiBuZXR3b3JrIGRldmljZSB0byBhdHRhY2gKQEAgLTE4OTYsNiAmIzQzOzE5MDgsNyBAQCBpbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwKIAogZXJyb3JfbW9kdWxlX3B1dDoKIAltb2R1bGVfcHV0KGQtJmd0O2RyaXZlci0mZ3Q7b3duZXIpOwomIzQzOwlwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHBoeWRldik7CiAJcGh5ZGV2LSZndDtpc19nZW5waHlfZHJpdmVuID0gMDsKIAlkLSZndDtkcml2ZXIgPSBOVUxMOwogZXJyb3JfcHV0X2RldmljZToKQEAgLTE5NjUsNiAmIzQzOzE5NzgsNyBAQCB2b2lkIHBoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAkgKiByZWFsIGRyaXZlciBjb3VsZCBiZSBsb2FkZWQKIAkgKi8KIAlpZiAocGh5ZGV2LSZndDtpc19nZW5waHlfZHJpdmVuKSB7CiYjNDM7CQlwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHBoeWRldik7CiAJCWRldmljZV9yZWxlYXNlX2RyaXZlcigmYW1wO3BoeWRldi0mZ3Q7bWRpby5kZXYpOwogCQlwaHlkZXYtJmd0O2lzX2dlbnBoeV9kcml2ZW4gPSAwOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jCmluZGV4IDViOGU5NTY5MDJmYjUuLmE1NWU0YTY0MDI4ZmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwpAQCAtMjA4Myw2ICYjNDM7MjA4MywxOCBAQCBzdGF0aWMgaW50IHBoeWxpbmtfdmFsaWRhdGVfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSwKIAlyZXR1cm4gcGh5bGlua192YWxpZGF0ZShwbCwgc3VwcG9ydGVkLCBzdGF0ZSk7CiB9CiAKJiM0MzsvKiBEaXNhc3NvY2lhdGUgQHBoeSBmcm9tIEBwbC4gQ2FsbGVyIG11c3QgaG9sZCBwbC0mZ3Q7cGh5ZGV2X211dGV4LiAqLwomIzQzO3N0YXRpYyB2b2lkIHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSkKJiM0Mzt7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtwaHktJmd0O2xvY2spOwomIzQzOwltdXRleF9sb2NrKCZhbXA7cGwtJmd0O3N0YXRlX211dGV4KTsKJiM0MzsJcGwtJmd0O3BoeWRldiA9IE5VTEw7CiYjNDM7CXBsLSZndDtwaHlfZW5hYmxlX3R4X2xwaSA9IGZhbHNlOwomIzQzOwlwbC0mZ3Q7bWFjX3R4X2Nsa19zdG9wID0gZmFsc2U7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3BsLSZndDtzdGF0ZV9tdXRleCk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3BoeS0mZ3Q7bG9jayk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBwaHlsaW5rX2JyaW5ndXBfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSwKIAkJCSAgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKQogewpAQCAtMjE5Nyw2ICYjNDM7MjIwOSwxMiBAQCBzdGF0aWMgaW50IHBoeWxpbmtfYnJpbmd1cF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LAogCWlmIChyZXQgPT0gMCAmYW1wOyZhbXA7IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5KSkKIAkJcGh5X3JlcXVlc3RfaW50ZXJydXB0KHBoeSk7CiAKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJbXV0ZXhfbG9jaygmYW1wO3BsLSZndDtwaHlkZXZfbXV0ZXgpOwomIzQzOwkJcGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSk7CiYjNDM7CQltdXRleF91bmxvY2soJmFtcDtwbC0mZ3Q7cGh5ZGV2X211dGV4KTsKJiM0MzsJfQomIzQzOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTIzNDcsMTUgJiM0MzsyMzY1LDggQEAgdm9pZCBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCkKIAogCW11dGV4X2xvY2soJmFtcDtwbC0mZ3Q7cGh5ZGV2X211dGV4KTsKIAlwaHkgPSBwbC0mZ3Q7cGh5ZGV2OwotCWlmIChwaHkpIHsKLQkJbXV0ZXhfbG9jaygmYW1wO3BoeS0mZ3Q7bG9jayk7Ci0JCW11dGV4X2xvY2soJmFtcDtwbC0mZ3Q7c3RhdGVfbXV0ZXgpOwotCQlwbC0mZ3Q7cGh5ZGV2ID0gTlVMTDsKLQkJcGwtJmd0O3BoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7Ci0JCXBsLSZndDttYWNfdHhfY2xrX3N0b3AgPSBmYWxzZTsKLQkJbXV0ZXhfdW5sb2NrKCZhbXA7cGwtJmd0O3N0YXRlX211dGV4KTsKLQkJbXV0ZXhfdW5sb2NrKCZhbXA7cGh5LSZndDtsb2NrKTsKLQl9CiYjNDM7CWlmIChwaHkpCiYjNDM7CQlwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTsKIAltdXRleF91bmxvY2soJmFtcDtwbC0mZ3Q7cGh5ZGV2X211dGV4KTsKIAogCWlmIChwaHkpIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMTYKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQSFkgRHJpdmVyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBiZWluZyBjaGFuZ2VkIGluIHRoZSBQSFkgZHJpdmVyLiBGaXJzdCwgSSBzZWUgbW9kaWZpY2F0aW9ucyBpbiBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AuIFNwZWNpZmljYWxseSwgdGhlcmUmIzM5O3MgYSBuZXcgZnVuY3Rpb24sIGBwaHlfcmVzdG9yZV9nZW5waHlfaXJxKClgLiAgVGhlIGNvZGUgc25pcHBldCB0aGVyZSBsb29rcyBsaWtlIGl0JiMzOTtzIHRyeWluZyB0byByZS1lc3RhYmxpc2ggdGhlIGludGVycnVwdCBjb25maWd1cmF0aW9uIGZvciBhIFBIWSBkZXZpY2UuICBJdCBzZWVtcyB0aGF0IGlmIHRoZSBpbnRlcnJ1cHQgbW9kZSAoYHBoeWRldi0mZ3Q7aXJxYCkgaXMgc2V0IHRvIGBQSFlfUE9MTGAsIGl0JiMzOTtzIHJlc3RvcmluZyBpdCB0byB0aGUgZGVmYXVsdCBpbnRlcnJ1cHQgc2V0dGluZywgbGlrZWx5IGRlcml2ZWQgZnJvbSB0aGUgTURJTyBidXMmIzM5O3MgSVJRIGluZm9ybWF0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCBpbiBlcnJvciBoYW5kbGluZyBwYXRocyB3aXRoaW4gYHBoeV9hdHRhY2hfZGlyZWN0YCBhbmQgZHVyaW5nIGBwaHlfZGV0YWNoYC4gVGhpcyB0ZWxscyBtZSB3ZSYjMzk7cmUgbG9va2luZyBhdCBhIHBvdGVudGlhbCBmaXggZm9yIGludGVycnVwdCBoYW5kbGluZyBkdXJpbmcgUEhZIGF0dGFjaG1lbnQgb3IgZGV0YWNobWVudCwgd2hpY2ggbWlnaHQgYmUgY3JpdGljYWwgZm9yIHJvYnVzdCBuZXR3b3JrIGRldmljZSBvcGVyYXRpb24uCgpOZXh0LCBJJiMzOTttIHNlZWluZyBjaGFuZ2VzIGluIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYC4gIFRoZXJlJiMzOTtzIGEgbmV3IGZ1bmN0aW9uLCBgcGh5bGlua19jbGVhcl9waHlkZXYoKWAuIFRoZSBjb2RlIGhlcmUgcmVzZXRzIHNldmVyYWwgZmllbGRzIHJlbGF0ZWQgdG8gdGhlIFBIWSBkZXZpY2Ugd2l0aGluIGEgYHBoeWxpbmtgIHN0cnVjdHVyZS4gVGhpcyBpbmNsdWRlcyBzZXR0aW5nIGBwbC0mZ3Q7cGh5ZGV2YCB0byBgTlVMTGAsIGFsb25nIHdpdGggY2xlYXJpbmcgYHBoeV9lbmFibGVfdHhfbHBpYCBhbmQgYG1hY190eF9jbGtfc3RvcGAuIFRoaXMgc21lbGxzIGxpa2UgcHJvcGVyIFBIWSBkZXZpY2UgY2xlYW51cCwgcHJvYmFibHkgb24gZGlzY29ubmVjdGlvbiBvciBpbiBlcnJvciBzY2VuYXJpb3MuIEl0IGxvb2tzIGxpa2UgYHBoeWxpbmtfY2xlYXJfcGh5ZGV2YCBpcyBiZWluZyBjYWxsZWQgaW4gYHBoeWxpbmtfYnJpbmd1cF9waHlgIGFzIHBhcnQgb2YgZXJyb3IgaGFuZGxpbmcsIGltcGx5aW5nIHRoYXQgaWYgdGhlIFBIWSBpbml0aWFsaXphdGlvbiBmYWlscywgdGhlIGxpbmsmIzM5O3MgUEhZIGRldmljZSBwb2ludGVyIGdldHMgY2xlYXJlZC4gQWxzbywgaXQgaGFzIGJlZW4gaW50cm9kdWNlZCBpbnRvIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YCBhcyB3ZWxsLiBUaGlzIG1ha2VzIHNlbnNlOyBpdCYjMzk7cyBjbGVhbiBhbmQgY29uc2lzdGVudC4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxhcmdlciBjb250ZXh0LiBJJiMzOTtsbCB1c2UgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIHRvIGZpbmQgdGhlIGNhbGxpbmcgc2l0ZXMgb2YgYHBoeV9hdHRhY2hfZGlyZWN0YCwgYHBoeV9kZXRhY2hgLCBgcGh5bGlua19icmluZ3VwX3BoeWAgYW5kIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YCB0byBncmFzcCBob3cgdGhlc2UgZnVuY3Rpb25zIGZpdCBpbnRvIHRoZSBvdmVyYWxsIFBIWSBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24gc2VxdWVuY2UuIFRoaXMgd2lsbCByZXZlYWwgdGhlIG1vdGl2YXRpb25zIG9mIHRoZSBwYXRjaCBhbmQgd2hlcmUgdGhlIHByb2JsZW0gbWlnaHQgaGF2ZSBleGlzdGVkLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgdGhlIGludGVycnVwdCByZXN0b3JhdGlvbiBhbmQgUEhZIGRldmljZSBjbGVhcmluZyBpbnRlcmFjdCwgcGFydGljdWxhcmx5IGluIGVycm9yIGNhc2VzLiBMZXQgbWUgZGlnIGludG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZGV0ZXJtaW5lIGhvdyB0aGlzIGFkZHJlc3NlcyBhIHBhcnRpY3VsYXIgZmFpbHVyZSBvciByYWNlIGNvbmRpdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTcyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNzI1Olx0XG4xNzI2Olx0XHRpZiAoIXJldCBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZXNmcF9idXMpXG4xNzI3Olx0XHRcdHJldCA9IHBoeV9zZXR1cF9zZnBfcG9ydChwaHlkZXYpO1xuMTcyODpcdFxuMTcyOTpcdFx0cmV0dXJuIHJldDtcbjE3MzA6XHR9XG4xNzMxOlx0XG4xNzMyOlx0c3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydilcbjE3MzM6XHR7XG4xNzM0Olx0XHRyZXR1cm4gcGh5ZHJ2LVx1MDAzZWNvbmZpZ19pbnRyIFx1MDAyNlx1MDAyNiBwaHlkcnYtXHUwMDNlaGFuZGxlX2ludGVycnVwdDtcbjE3MzU6XHR9XG4xNzM2Olx0XG4xNzM3Olx0LyogR2l2ZSBiYWNrIHRoZSBpbnRlcnJ1cHQgcGh5X3Byb2JlKCkgcGFya2VkIHdoZW4gYSBkcml2ZXIgd2l0aCBubyBpbnRlcnJ1cHRcbjE3Mzg6XHQgKiBjYWxsYmFja3MgYm91bmQuIG1kaW9idXNfYWxsb2MoKSBkZWZhdWx0cyBidXMtXHUwMDNlaXJxW10gdG8gUEhZX1BPTEwgYW5kIHRoZVxuMTczOTpcdCAqIGJpbmQgY3ljbGUgZG9lcyBub3QgdG91Y2ggdGhlIHRhYmxlLCBzbyB3aGF0ZXZlciB0aGUgYnVzIHJlY29yZGVkIHRoZXJlXG4xNzQwOlx0ICogc3RpbGwgc3RhbmRzLiBPbmx5IHRoZSBwYXJraW5nIGlzIHVuZG9uZTogYW55IG90aGVyIHZhbHVlIHRoZSBQSFkgY2Fycmllc1xuMTc0MTpcdCAqIHdhcyBwdXQgdGhlcmUgYnkgc29tZW9uZSBlbHNlLlxuMTc0MjpcdCAqL1xuMTc0MzpcdHN0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbjE3NDQ6XHR7XG4xNzQ1Olx0XHRpZiAocGh5ZGV2LVx1MDAzZWlycSA9PSBQSFlfUE9MTClcbjE3NDY6XHRcdFx0cGh5ZGV2LVx1MDAzZWlycSA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2VpcnFbcGh5ZGV2LVx1MDAzZW1kaW8uYWRkcl07XG4xNzQ3Olx0fVxuMTc0ODpcdFxuMTc0OTpcdC8qKlxuMTc1MDpcdCAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcbjE3NTE6XHQgKiBAZGV2OiBuZXR3b3JrIGRldmljZSB0byBhdHRhY2hcbjE3NTI6XHQgKiBAcGh5ZGV2OiBQb2ludGVyIHRvIHBoeV9kZXZpY2UgdG8gYXR0YWNoXG4xNzUzOlx0ICogQGZsYWdzOiBQSFkgZGV2aWNlJiMzOTtzIGRldl9mbGFnc1xuMTc1NDpcdCAqIEBpbnRlcmZhY2U6IFBIWSBkZXZpY2UmIzM5O3MgaW50ZXJmYWNlXG4xNzU1Olx0ICpcbjE3NTY6XHQgKiBEZXNjcmlwdGlvbjogQ2FsbGVkIGJ5IGRyaXZlcnMgdG8gYXR0YWNoIHRvIGEgcGFydGljdWxhciBQSFlcbjE3NTc6XHQgKiAgICAgZGV2aWNlLiBUaGUgcGh5X2RldmljZSBpcyBmb3VuZCwgYW5kIHByb3Blcmx5IGhvb2tlZCB1cFxuMTc1ODpcdCAqICAgICB0byB0aGUgcGh5X2RyaXZlci4gIElmIG5vIGRyaXZlciBpcyBhdHRhY2hlZCwgdGhlbiBhXG4xNzU5Olx0ICogICAgIGdlbmVyaWMgZHJpdmVyIGlzIHVzZWQuICBUaGUgcGh5X2RldmljZSBpcyBnaXZlbiBhIHB0ciB0b1xuMTc2MDpcdCAqICAgICB0aGUgYXR0YWNoaW5nIGRldmljZSwgYW5kIGdpdmVuIGEgY2FsbGJhY2sgZm9yIGxpbmsgc3RhdHVzXG4xNzYxOlx0ICogICAgIGNoYW5nZS4gIFRoZSBwaHlfZGV2aWNlIGlzIHJldHVybmVkIHRvIHRoZSBhdHRhY2hpbmcgZHJpdmVyLlxuMTc2MjpcdCAqICAgICBUaGlzIGZ1bmN0aW9uIHRha2VzIGEgcmVmZXJlbmNlIG9uIHRoZSBwaHkgZGV2aWNlLlxuMTc2MzpcdCAqL1xuMTc2NDpcdGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAyMTo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjYzCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsIE5ldHdvcmsgTGluayBJc3N1ZSoqCgpPa2F5LCBzbyB3ZSYjMzk7dmUgZ290IGEgbmV0d29ya2luZyBwcm9ibGVtLiBCYXNlZCBvbiB0aGUgY2x1ZXMsIEkgbmVlZCB0byB6b29tIGluIG9uIGEgc3BlY2lmaWMgYXJlYSB3aXRoaW4gdGhlIGRyaXZlci4gTXkgaW5pdGlhbCBpbnN0aW5jdCBwb2ludHMgbWUgdG93YXJkcyBgcGh5bGluay5jYC4gR2l2ZW4gdGhlIHNjb3BlIG9mIHRoZSBwb3RlbnRpYWwgcHJvYmxlbSwgSSB0aGluayB0aGUgcmVnaW9uIGFyb3VuZCBsaW5lcyAyMDgwIHRvIDIyMjAgaXMgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LiBUaGF0IHNlY3Rpb24gb2Z0ZW4gZGVhbHMgd2l0aCBbICppbnNlcnQgc3BlY2lmaWMgZnVuY3Rpb24gb3IgYXJlYSB0aGUgZXhwZXJ0IHdvdWxkIGtub3cgYmFzZWQgb24gYHBoeWxpbmsuY2AmIzM5O3MgZ2VuZXJhbCByb2xlLCBlLmcuLCAmIzM0O2xpbmsgc3RhdGUgZGV0ZWN0aW9uIGFuZCBQSFkgaW50ZXJhY3Rpb24sIG9yIHBlcmhhcHMgaW5pdGlhbCBsaW5rIG5lZ290aWF0aW9uLCBvciBtYXliZSBldmVuIGVycm9yIGhhbmRsaW5nIHJlbGF0ZWQgdG8gc3BlZWQgYW5kIGR1cGxleCBtaXNtYXRjaGVzLCBvciByZWdpc3RlciByZWFkcy93cml0ZXMgcmVsYXRlZCB0byBhdXRvbmVnb3RpYXRpb24mIzM0OypdLiBJJiMzOTtsbCBuZWVkIHRvIGNhcmVmdWxseSBleGFtaW5lIHRoZSBjb2RlIGluIHRoYXQgcmFuZ2UsIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gWyAqbGlzdCBzcGVjaWZpYyB0aGluZ3MgdGhhdCB0aGUgZXhwZXJ0IHdvdWxkIGxvb2sgZm9yLCBlLmcuICYjMzQ7ZXJyb3IgY29uZGl0aW9ucywgcmV0dXJuIHZhbHVlcywgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMsIGJ1ZmZlciBoYW5kbGluZyBvciBwb3NzaWJseSBpbnRlcnJ1cHQgaGFuZGxpbmcsIG9yIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIG1vZHVsZXMsIGV0Yy4mIzM0OyogXS4gSSYjMzk7bGwgc3RhcnQgYnkgbWFraW5nIHN1cmUgdGhlcmUmIzM5O3Mgbm8gb2J2aW91cyBsb2dpYyBmbGF3IGluIHRoYXQgc2VjdGlvbiwgdGhlbiBtYXliZSBJJiMzOTtsbCBkaWcgZG93biBpbnRvIHRoZSBpbnRlcmFjdGlvbnMgaWYgSSBuZWVkIHRvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAyMTo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMTcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzIxNzA6XHRcdFx0cGh5bGlua19jYXBzX3RvX2xpbmttb2RlcyhwbC1cdTAwM2VzdXBwb3J0ZWRfbHBpLFxuMjE3MTpcdFx0XHRcdFx0XHQgIHBsLVx1MDAzZWNvbmZpZy1cdTAwM2VscGlfY2FwYWJpbGl0aWVzKTtcbjIxNzI6XHRcbjIxNzM6XHRcdFx0LyogUmVzdHJpY3QgdGhlIFBIWXMgRUVFIHN1cHBvcnQvYWR2ZXJ0aXNlbWVudCB0byB0aGUgbW9kZXNcbjIxNzQ6XHRcdFx0ICogdGhhdCB0aGUgTUFDIHN1cHBvcnRzLlxuMjE3NTpcdFx0XHQgKi9cbjIxNzY6XHRcdFx0bGlua21vZGVfYW5kKHBoeS1cdTAwM2VhZHZlcnRpc2luZ19lZWUsIHBoeS1cdTAwM2VhZHZlcnRpc2luZ19lZWUsXG4yMTc3Olx0XHRcdFx0ICAgICBwbC1cdTAwM2VzdXBwb3J0ZWRfbHBpKTtcbjIxNzg6XHRcdH0gZWxzZSBpZiAocGwtXHUwMDNlbWFjX3N1cHBvcnRzX2VlZV9vcHMpIHtcbjIxNzk6XHRcdFx0LyogTUFDIHN1cHBvcnRzIHBoeWxpbmsgRUVFLCBidXQgd2FudHMgRUVFIGFsd2F5cyBkaXNhYmxlZC4gKi9cbjIxODA6XHRcdFx0cGh5X2Rpc2FibGVfZWVlKHBoeSk7XG4yMTgxOlx0XHR9XG4yMTgyOlx0XG4yMTgzOlx0XHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuMjE4NDpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeS1cdTAwM2Vsb2NrKTtcbjIxODU6XHRcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuMjE4NjpcdFxuMjE4NzpcdFx0cGh5bGlua19kYmcocGwsXG4yMTg4Olx0XHRcdCAgICBcJiMzNDtwaHk6ICVzIHNldHRpbmcgc3VwcG9ydGVkICUqcGIgYWR2ZXJ0aXNpbmcgJSpwYlxcblwmIzM0OyxcbjIxODk6XHRcdFx0ICAgIHBoeV9tb2RlcyhpbnRlcmZhY2UpLFxuMjE5MDpcdFx0XHQgICAgX19FVEhUT09MX0xJTktfTU9ERV9NQVNLX05CSVRTLCBwbC1cdTAwM2VzdXBwb3J0ZWQsXG4yMTkxOlx0XHRcdCAgICBfX0VUSFRPT0xfTElOS19NT0RFX01BU0tfTkJJVFMsIHBoeS1cdTAwM2VhZHZlcnRpc2luZyk7XG4yMTkyOlx0XG4yMTkzOlx0XHRpZiAocGwtXHUwMDNlY29uZmlnLVx1MDAzZW1hY19tYW5hZ2VkX3BtKVxuMjE5NDpcdFx0XHRwaHktXHUwMDNlbWFjX21hbmFnZWRfcG0gPSB0cnVlO1xuMjE5NTpcdFxuMjE5NjpcdFx0LyogQWxsb3cgdGhlIE1BQyB0byBzdG9wIGl0cyBjbG9jayBpZiB0aGUgUEhZIGhhcyB0aGUgY2FwYWJpbGl0eSAqL1xuMjE5NzpcdFx0cGwtXHUwMDNlbWFjX3R4X2Nsa19zdG9wID0gcGh5X2VlZV90eF9jbG9ja19zdG9wX2NhcGFibGUocGh5KSBcdTAwM2UgMDtcbjIxOTg6XHRcbjIxOTk6XHRcdGlmIChwbC1cdTAwM2VtYWNfc3VwcG9ydHNfZWVlX29wcykge1xuMjIwMDpcdFx0XHQvKiBFeHBsaWNpdGx5IGNvbmZpZ3VyZSB3aGV0aGVyIHRoZSBQSFkgaXMgYWxsb3dlZCB0byBzdG9wIGl0JiMzOTtzXG4yMjAxOlx0XHRcdCAqIHJlY2VpdmUgY2xvY2suXG4yMjAyOlx0XHRcdCAqL1xuMjIwMzpcdFx0XHRyZXQgPSBwaHlfZWVlX3J4X2Nsb2NrX3N0b3AocGh5LFxuMjIwNDpcdFx0XHRcdFx0XHQgICAgcGwtXHUwMDNlY29uZmlnLVx1MDAzZWVlZV9yeF9jbGtfc3RvcF9lbmFibGUpO1xuMjIwNTpcdFx0XHRpZiAocmV0ID09IC1FT1BOT1RTVVBQKVxuMjIwNjpcdFx0XHRcdHJldCA9IDA7XG4yMjA3Olx0XHR9XG4yMjA4Olx0XG4yMjA5Olx0XHRpZiAocmV0ID09IDAgXHUwMDI2XHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5KSlcbjIyMTA6XHRcdFx0cGh5X3JlcXVlc3RfaW50ZXJydXB0KHBoeSk7XG4yMjExOlx0XG4yMjEyOlx0XHRpZiAocmV0KSB7XG4yMjEzOlx0XHRcdG11dGV4X2xvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbjIyMTQ6XHRcdFx0cGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSk7XG4yMjE1Olx0XHRcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuMjIxNjpcdFx0fVxuMjIxNzpcdFxuMjIxODpcdFx0cmV0dXJuIHJldDtcbjIyMTk6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3ODQKCQkJCQkJCW91dHB1dDogMTcyCgkJCQkJCQl0aG91Z2h0czogNjYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIEtNU0FOIEltcGxpY2F0aW9ucyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgcGF0Y2gmIzM5O3MgYWN0aW9ucyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgcG90ZW50aWFsIEtNU0FOIChLZXJuZWwgTWVtb3J5IFNhbml0aXplcikgdnVsbmVyYWJpbGl0aWVzLiBJJiMzOTttIGZvY3VzaW5nIHNwZWNpZmljYWxseSBvbiB0aGUgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcywgcmVtZW1iZXJpbmcgdGhhdCBLQVNBTiAoS2VybmVsIEFkZHJlc3MgU2FuaXRpemVyKSBjb3ZlcnMgdGhlIG1vcmUgdHlwaWNhbCBtZW1vcnkgbGlmZWN5Y2xlIGlzc3VlcyBsaWtlIHVzZS1hZnRlci1mcmVlIGFuZCBkYW5nbGluZyBwb2ludGVycy4KCkZpcnN0LCBJIGxvb2tlZCBhdCB0aGUgZnVuY3Rpb25zIGludm9sdmVkLiBgcGh5X3Jlc3RvcmVfZ2VucGh5X2lycWAgaXMgaW50ZXJlc3RpbmcuIEl0IHJlc3RvcmVzIGBwaHlkZXYtJmd0O2lycWAgZnJvbSB0aGUgTURJTyBidXMmIzM5O3MgYGJ1cy0mZ3Q7aXJxYCBhcnJheS4gVGhpcyBoYXBwZW5zIGR1cmluZyBkZXRhY2ggb3IgZmFpbHVyZS4gYHBoeWxpbmtfY2xlYXJfcGh5ZGV2YCBjbGVhbnMgdXAgc3RhdGUgcG9pbnRlcnMsIGVzcGVjaWFsbHkgd2hlbiBwaHlsaW5rIGJyaW5ndXAgZmFpbHMuCgpJIHRoZW4gd2VudCB0aHJvdWdoIHRoZSBLTVNBTiBjcml0ZXJpYSBpbiBteSBoZWFkOgoKMS4gICoqS2VybmVsIGRhdGEgZXhwb3NlZCB0byB1c2Vyc3BhY2U6KiogTm9wZS4gTm90aGluZyBoZXJlIGludm9sdmVzIGBjb3B5X3RvX3VzZXJgLCBgcHV0X3VzZXJgLCBuZXRsaW5rLCBpb2N0bCwgb3IgYW55IHVzZXItc3BhY2UgaW50ZXJhY3Rpb24uCjIuICAqKkNvbmRpdGlvbmFsIGxvZ2ljIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YToqKiBOb3QgdGhhdCBJIGNhbiBzZWUuCjMuICAqKlVuaW5pdGlhbGl6ZWQgZGF0YSBzdHJ1Y3R1cmVzOioqIEkmIzM5O20gbm90IHNlZWluZyBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucyB0aGF0IHdvdWxkbiYjMzk7dCBoYXZlIGRlZmF1bHQgaW5pdGlhbGl6YXRpb24uCjQuICAqKkJvdW5kcyBjaGVja3MgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnk6KiogTm9wZS4KClNvLCBkaWdnaW5nIGRlZXBlciwgYGJ1cy0mZ3Q7aXJxYCBpcyBhbGxvY2F0ZWQgYW5kIGluaXRpYWxpemVkIGJ5IGBtZGlvYnVzX2FsbG9jKClgLiBTcGVjaWZpY2FsbHksIHRoZSBjb250ZW50cyBvZiB0aGUgYGJ1cy0mZ3Q7aXJxYCBhcnJheSBhcmUgaW5pdGlhbGl6ZWQgZWl0aGVyIHRvIFBIWV9QT0xMIG9yIHNwZWNpZmljIElSUSBudW1iZXJzLCBwcmV2ZW50aW5nIGFjY2lkZW50YWwgdXNlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBgcGh5bGlua19jbGVhcl9waHlkZXZgIHNldHMgZmllbGRzIHRvIE5VTEwgb3IgZmFsc2UsIHdoaWNoIGlzIHRoZSBjbGVhbnVwIHN0YWdlLiBUaGUgZXJyb3IgaGFuZGxpbmcgZW5zdXJlcyBgcGwtJmd0O3BoeWRldmAgaXMgc2V0IHRvIE5VTEwgb24gZmFpbHVyZSBpbiBgcGh5bGlua19icmluZ3VwX3BoeWAsIGVsaW1pbmF0aW5nIGEgZGFuZ2xpbmcgcG9pbnRlci4KCkNvbnNlcXVlbnRseSwgdGhpcyBzZWVtcyBsaWtlIHB1cmVseSBzdGF0ZSBjbGVhbnVwLCBsaWZlY3ljbGUgbWFuYWdlbWVudCwgYW5kIElSUSByZXN0b3JhdGlvbi4gS0FTQU4gaXMgdGhlIHJpZ2h0IHRvb2wgaGVyZSBmb3IgdXNlLWFmdGVyLWZyZWUgb3IgZGFuZ2xpbmcgcG9pbnRlcnMsIGFuZCBpdCB3aWxsIHBpY2sgdXAgdGhvc2UgaXNzdWVzLiBUaGlzIHBhdGNoLCBiYXNlZCBvbiBteSBhbmFseXNpcywgZG9lcyAqbm90KiBpbnRyb2R1Y2UgYW55IEtNU0FOIGNvbmNlcm5zLiBJIHNlZSBubyBhbGxvY2F0aW9uLCBjb3B5aW5nLCBvciBleHBvc3VyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4KCkZpbmFsbHksIGp1c3QgdG8gYmUgY29tcGxldGVseSBjbGVhciBpbiBteSByZWFzb25pbmcsIEkmIzM5O2xsIHNvbGlkaWZ5IHRoZSBjb21wYXJpc29uIG9mIEtBU0FOIGFuZCBLTVNBTi4gVGhpcyBwYXRjaCBmb2N1c2VzIG9uIGNsZWFuIGxpZmVjeWNsZSBtYW5hZ2VtZW50IHdpdGhpbiB0aGUga2VybmVsLCBtYWtpbmcgaXQgYSBLQVNBTiBpc3N1ZS4gS0FTQU4gd2lsbCBkZXRlY3QgZGFuZ2xpbmcgcG9pbnRlcnMgYW5kIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBpbiB0aGUgcGh5bGluay9waHlfZGV2aWNlIGF0dGFjaC9kZXRhY2ggcGF0aHMuIEtNU0FOIGRlYWxzIHdpdGggdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgbGVha3MgKnRvIHVzZXIgc3BhY2UqLiBUaGlzIHBhdGNoIGRvZXNuJiMzOTt0IGludm9sdmUgYW55IG9mIHRoYXQuIFRoZSByZXN0b3Jpbmcgb2YgYHBoeWRldi0mZ3Q7aXJxYCB1c2VzIGRhdGEgZnJvbSBhIGJ1cyB0aGF0IGlzIGluaXRpYWxpemVkIGJ5IGBtZGlvYnVzX2FsbG9jKClgLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBhbGxvY2F0ZWQsIHJlYWQsIG9yIGNvcGllZCB0byB1c2VyIHNwYWNlLgoKVGhlcmVmb3JlLCBJJiMzOTttIGNvbmZpZGVudCBpbiBjYWxsaW5nIHRoaXMgYE5lZWRzS01TQU5gIGFzIGBmYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBzdGF0ZSBjbGVhbnVwIGFuZCBJUlEgcmVzdG9yYXRpb24gaW4gUEhZIGFuZCBwaHlsaW5rIGRyaXZlciBsaWZlY3ljbGVzIChzcGVjaWZpY2FsbHkgcmVzdG9yaW5nIHBoeWRldi1cdTAwM2VpcnEgdXBvbiBnZW5lcmljIFBIWSBkcml2ZXIgZGV0YWNoL2F0dGFjaCBmYWlsdXJlIGFuZCBjbGVhcmluZyBwbC1cdTAwM2VwaHlkZXYgb24gcGh5bGlua19icmluZ3VwX3BoeSBmYWlsdXJlKS4gXG5cblRoZXNlIGNoYW5nZXMgaW52b2x2ZSBtYW5hZ2luZyBvYmplY3QgbGlmZWN5Y2xlcywgcmVzZXR0aW5nIGludGVybmFsIHBvaW50ZXJzIHRvIE5VTEwsIGFuZCByZXNldHRpbmcgYm9vbGVhbiBmbGFncy4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgcmVhZHMsIHBhZGRpbmcgbGVha3MsIG9yIHVzZXItc3BhY2UgY29waWVzIChjb3B5X3RvX3VzZXIvbmV0bGluaykgYXJlIGludHJvZHVjZWQgb3IgbW9kaWZpZWQuIEFueSBsaWZlY3ljbGUgb3IgZGFuZ2xpbmcgcG9pbnRlciBpc3N1ZXMgaW4gdGhpcyBjb2RlIHBhdGggZmFsbCB1bmRlciBLQVNBTiAodXNlLWFmdGVyLWZyZWUgLyBpbnZhbGlkIGFjY2Vzcykgb3Igc3RhbmRhcmQga2VybmVsIGFzc2VydGlvbnMvTE9DS0RFUCwgbWFraW5nIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gdW5uZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgc3RhdGUgY2xlYW51cCBhbmQgSVJRIHJlc3RvcmF0aW9uIGluIFBIWSBhbmQgcGh5bGluayBkcml2ZXIgbGlmZWN5Y2xlcyAoc3BlY2lmaWNhbGx5IHJlc3RvcmluZyBwaHlkZXYtXHUwMDNlaXJxIHVwb24gZ2VuZXJpYyBQSFkgZHJpdmVyIGRldGFjaC9hdHRhY2ggZmFpbHVyZSBhbmQgY2xlYXJpbmcgcGwtXHUwMDNlcGh5ZGV2IG9uIHBoeWxpbmtfYnJpbmd1cF9waHkgZmFpbHVyZSkuIFxuXG5UaGVzZSBjaGFuZ2VzIGludm9sdmUgbWFuYWdpbmcgb2JqZWN0IGxpZmVjeWNsZXMsIHJlc2V0dGluZyBpbnRlcm5hbCBwb2ludGVycyB0byBOVUxMLCBhbmQgcmVzZXR0aW5nIGJvb2xlYW4gZmxhZ3MuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHJlYWRzLCBwYWRkaW5nIGxlYWtzLCBvciB1c2VyLXNwYWNlIGNvcGllcyAoY29weV90b191c2VyL25ldGxpbmspIGFyZSBpbnRyb2R1Y2VkIG9yIG1vZGlmaWVkLiBBbnkgbGlmZWN5Y2xlIG9yIGRhbmdsaW5nIHBvaW50ZXIgaXNzdWVzIGluIHRoaXMgY29kZSBwYXRoIGZhbGwgdW5kZXIgS0FTQU4gKHVzZS1hZnRlci1mcmVlIC8gaW52YWxpZCBhY2Nlc3MpIG9yIHN0YW5kYXJkIGtlcm5lbCBhc3NlcnRpb25zL0xPQ0tERVAsIG1ha2luZyBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIHVubmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTozNTo1My4xMzc4MTEzNDdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzUzMDE0Njc2OTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVFwiLFxuICAgIFwiTkVUREVWSUNFU1wiLFxuICAgIFwiUEhZTElCXCIsXG4gICAgXCJQSFlMSU5LXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5X2F0dGFjaF9kaXJlY3RcIixcbiAgICBcInBoeV9kZXRhY2hcIixcbiAgICBcInBoeWxpbmtfY29ubmVjdF9waHlcIixcbiAgICBcInBoeWxpbmtfZGlzY29ubmVjdF9waHlcIixcbiAgICBcInBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0XCIsXG4gICAgXCJwaHlsaW5rX29mX3BoeV9jb25uZWN0XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgc3RhdGUgY2xlYW51cCBhbmQgSVJRIHJlc3RvcmF0aW9uIGluIFBIWSBhbmQgcGh5bGluayBkcml2ZXIgbGlmZWN5Y2xlcyAoc3BlY2lmaWNhbGx5IHJlc3RvcmluZyBwaHlkZXYtXFx1MDAzZWlycSB1cG9uIGdlbmVyaWMgUEhZIGRyaXZlciBkZXRhY2gvYXR0YWNoIGZhaWx1cmUgYW5kIGNsZWFyaW5nIHBsLVxcdTAwM2VwaHlkZXYgb24gcGh5bGlua19icmluZ3VwX3BoeSBmYWlsdXJlKS4gXFxuXFxuVGhlc2UgY2hhbmdlcyBpbnZvbHZlIG1hbmFnaW5nIG9iamVjdCBsaWZlY3ljbGVzLCByZXNldHRpbmcgaW50ZXJuYWwgcG9pbnRlcnMgdG8gTlVMTCwgYW5kIHJlc2V0dGluZyBib29sZWFuIGZsYWdzLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCByZWFkcywgcGFkZGluZyBsZWFrcywgb3IgdXNlci1zcGFjZSBjb3BpZXMgKGNvcHlfdG9fdXNlci9uZXRsaW5rKSBhcmUgaW50cm9kdWNlZCBvciBtb2RpZmllZC4gQW55IGxpZmVjeWNsZSBvciBkYW5nbGluZyBwb2ludGVyIGlzc3VlcyBpbiB0aGlzIGNvZGUgcGF0aCBmYWxsIHVuZGVyIEtBU0FOICh1c2UtYWZ0ZXItZnJlZSAvIGludmFsaWQgYWNjZXNzKSBvciBzdGFuZGFyZCBrZXJuZWwgYXNzZXJ0aW9ucy9MT0NLREVQLCBtYWtpbmcgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiB1bm5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFBIWSBsaWJyYXJ5IGFuZCBwaHlsaW5rIHN1YnN5c3RlbSBsb2dpYyBpbiBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGFuZCBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jLiBJdCBpbnRyb2R1Y2VzIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEgdG8gcHJvcGVybHkgcmVzdG9yZSBQSFkgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb25zIHdoZW4gZGV0YWNoaW5nIG9yIGZhaWxpbmcgdG8gYXR0YWNoIGEgZ2VuZXJpYyBQSFksIGFuZCBlbnN1cmVzIHBoeWxpbmtfY2xlYXJfcGh5ZGV2IGlzIGNhbGxlZCB0byBjbGVhbmx5IGRldGFjaCBhbmQgcmVzZXQgc3RhdGUgaWYgcGh5bGlua19icmluZ3VwX3BoeSBmYWlscy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgcmVhY2hhYmxlIG5ldHdvcmsgUEhZIHNldHVwL3RlYXJkb3duIGxvZ2ljIHVzZWQgYnkgZW11bGF0ZWQgbmV0d29yayBhZGFwdGVycyAoZS5nLiBVU0IgZXRoZXJuZXQgYWRhcHRlcnMgYW5kIERTQSBsb29wIGRldmljZXMpIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMjE6MzU6NTMuMTM3ODE2NjI3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTM2MzEwODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5Yzk5MjM1Yzc4NGQ2YzdkYmY2NDNjODVkYjg2MTk1NTAxNGE2MmE0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDI3IDIxOjM1OjUxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXFxuaW5kZXggOTRiMmU4NWUwMGEzNy4uYmU0YzM1ZGI4ZGU5OCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xcbkBAIC0xNzM0LDYgKzE3MzQsMTggQEAgc3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydilcXG4gXFx0cmV0dXJuIHBoeWRydi1cXHUwMDNlY29uZmlnX2ludHIgXFx1MDAyNlxcdTAwMjYgcGh5ZHJ2LVxcdTAwM2VoYW5kbGVfaW50ZXJydXB0O1xcbiB9XFxuIFxcbisvKiBHaXZlIGJhY2sgdGhlIGludGVycnVwdCBwaHlfcHJvYmUoKSBwYXJrZWQgd2hlbiBhIGRyaXZlciB3aXRoIG5vIGludGVycnVwdFxcbisgKiBjYWxsYmFja3MgYm91bmQuIG1kaW9idXNfYWxsb2MoKSBkZWZhdWx0cyBidXMtXFx1MDAzZWlycVtdIHRvIFBIWV9QT0xMIGFuZCB0aGVcXG4rICogYmluZCBjeWNsZSBkb2VzIG5vdCB0b3VjaCB0aGUgdGFibGUsIHNvIHdoYXRldmVyIHRoZSBidXMgcmVjb3JkZWQgdGhlcmVcXG4rICogc3RpbGwgc3RhbmRzLiBPbmx5IHRoZSBwYXJraW5nIGlzIHVuZG9uZTogYW55IG90aGVyIHZhbHVlIHRoZSBQSFkgY2Fycmllc1xcbisgKiB3YXMgcHV0IHRoZXJlIGJ5IHNvbWVvbmUgZWxzZS5cXG4rICovXFxuK3N0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRpZiAocGh5ZGV2LVxcdTAwM2VpcnEgPT0gUEhZX1BPTEwpXFxuK1xcdFxcdHBoeWRldi1cXHUwMDNlaXJxID0gcGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cy1cXHUwMDNlaXJxW3BoeWRldi1cXHUwMDNlbWRpby5hZGRyXTtcXG4rfVxcbitcXG4gLyoqXFxuICAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcXG4gICogQGRldjogbmV0d29yayBkZXZpY2UgdG8gYXR0YWNoXFxuQEAgLTE4OTYsNiArMTkwOCw3IEBAIGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbiBcXG4gZXJyb3JfbW9kdWxlX3B1dDpcXG4gXFx0bW9kdWxlX3B1dChkLVxcdTAwM2Vkcml2ZXItXFx1MDAzZW93bmVyKTtcXG4rXFx0cGh5X3Jlc3RvcmVfZ2VucGh5X2lycShwaHlkZXYpO1xcbiBcXHRwaHlkZXYtXFx1MDAzZWlzX2dlbnBoeV9kcml2ZW4gPSAwO1xcbiBcXHRkLVxcdTAwM2Vkcml2ZXIgPSBOVUxMO1xcbiBlcnJvcl9wdXRfZGV2aWNlOlxcbkBAIC0xOTY1LDYgKzE5NzgsNyBAQCB2b2lkIHBoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0ICogcmVhbCBkcml2ZXIgY291bGQgYmUgbG9hZGVkXFxuIFxcdCAqL1xcbiBcXHRpZiAocGh5ZGV2LVxcdTAwM2Vpc19nZW5waHlfZHJpdmVuKSB7XFxuK1xcdFxcdHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEocGh5ZGV2KTtcXG4gXFx0XFx0ZGV2aWNlX3JlbGVhc2VfZHJpdmVyKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2KTtcXG4gXFx0XFx0cGh5ZGV2LVxcdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcXG4gXFx0fVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbmluZGV4IDViOGU5NTY5MDJmYjUuLmE1NWU0YTY0MDI4ZmYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcXG5AQCAtMjA4Myw2ICsyMDgzLDE4IEBAIHN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbiBcXHRyZXR1cm4gcGh5bGlua192YWxpZGF0ZShwbCwgc3VwcG9ydGVkLCBzdGF0ZSk7XFxuIH1cXG4gXFxuKy8qIERpc2Fzc29jaWF0ZSBAcGh5IGZyb20gQHBsLiBDYWxsZXIgbXVzdCBob2xkIHBsLVxcdTAwM2VwaHlkZXZfbXV0ZXguICovXFxuK3N0YXRpYyB2b2lkIHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcXG4re1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZwaHktXFx1MDAzZWxvY2spO1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZwbC1cXHUwMDNlc3RhdGVfbXV0ZXgpO1xcbitcXHRwbC1cXHUwMDNlcGh5ZGV2ID0gTlVMTDtcXG4rXFx0cGwtXFx1MDAzZXBoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7XFxuK1xcdHBsLVxcdTAwM2VtYWNfdHhfY2xrX3N0b3AgPSBmYWxzZTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwbC1cXHUwMDNlc3RhdGVfbXV0ZXgpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnBoeS1cXHUwMDNlbG9jayk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXFxuIFxcdFxcdFxcdCAgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbiB7XFxuQEAgLTIxOTcsNiArMjIwOSwxMiBAQCBzdGF0aWMgaW50IHBoeWxpbmtfYnJpbmd1cF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbiBcXHRpZiAocmV0ID09IDAgXFx1MDAyNlxcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHkpKVxcbiBcXHRcXHRwaHlfcmVxdWVzdF9pbnRlcnJ1cHQocGh5KTtcXG4gXFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cGwtXFx1MDAzZXBoeWRldl9tdXRleCk7XFxuK1xcdFxcdHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpO1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBsLVxcdTAwM2VwaHlkZXZfbXV0ZXgpO1xcbitcXHR9XFxuK1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbkBAIC0yMzQ3LDE1ICsyMzY1LDggQEAgdm9pZCBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHN0cnVjdCBwaHlsaW5rICpwbClcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNnBsLVxcdTAwM2VwaHlkZXZfbXV0ZXgpO1xcbiBcXHRwaHkgPSBwbC1cXHUwMDNlcGh5ZGV2O1xcbi1cXHRpZiAocGh5KSB7XFxuLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBoeS1cXHUwMDNlbG9jayk7XFxuLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBsLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuLVxcdFxcdHBsLVxcdTAwM2VwaHlkZXYgPSBOVUxMO1xcbi1cXHRcXHRwbC1cXHUwMDNlcGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTtcXG4tXFx0XFx0cGwtXFx1MDAzZW1hY190eF9jbGtfc3RvcCA9IGZhbHNlO1xcbi1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBsLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cGh5LVxcdTAwM2Vsb2NrKTtcXG4tXFx0fVxcbitcXHRpZiAocGh5KVxcbitcXHRcXHRwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTtcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwbC1cXHUwMDNlcGh5ZGV2X211dGV4KTtcXG4gXFxuIFxcdGlmIChwaHkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMjE6MzU6NTMuNzUyMTQxODAxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxMTQ1MjI5MzI4MTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVFwiLFxuICAgIFwiTkVUREVWSUNFU1wiLFxuICAgIFwiUEhZTElCXCIsXG4gICAgXCJQSFlMSU5LXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5X2F0dGFjaF9kaXJlY3RcIixcbiAgICBcInBoeV9kZXRhY2hcIixcbiAgICBcInBoeWxpbmtfY29ubmVjdF9waHlcIixcbiAgICBcInBoeWxpbmtfZGlzY29ubmVjdF9waHlcIixcbiAgICBcInBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0XCIsXG4gICAgXCJwaHlsaW5rX29mX3BoeV9jb25uZWN0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBQSFkgbGlicmFyeSBhbmQgcGh5bGluayBzdWJzeXN0ZW0gbG9naWMgaW4gZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyBhbmQgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy4gSXQgaW50cm9kdWNlcyBwaHlfcmVzdG9yZV9nZW5waHlfaXJxIHRvIHByb3Blcmx5IHJlc3RvcmUgUEhZIGludGVycnVwdCBjb25maWd1cmF0aW9ucyB3aGVuIGRldGFjaGluZyBvciBmYWlsaW5nIHRvIGF0dGFjaCBhIGdlbmVyaWMgUEhZLCBhbmQgZW5zdXJlcyBwaHlsaW5rX2NsZWFyX3BoeWRldiBpcyBjYWxsZWQgdG8gY2xlYW5seSBkZXRhY2ggYW5kIHJlc2V0IHN0YXRlIGlmIHBoeWxpbmtfYnJpbmd1cF9waHkgZmFpbHMuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHJlYWNoYWJsZSBuZXR3b3JrIFBIWSBzZXR1cC90ZWFyZG93biBsb2dpYyB1c2VkIGJ5IGVtdWxhdGVkIG5ldHdvcmsgYWRhcHRlcnMgKGUuZy4gVVNCIGV0aGVybmV0IGFkYXB0ZXJzIGFuZCBEU0EgbG9vcCBkZXZpY2VzKSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDljOTkyMzVjNzg0ZDZjN2RiZjY0M2M4NWRiODYxOTU1MDE0YTYyYTRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyNyAyMTozNTo1MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5pbmRleCA5NGIyZTg1ZTAwYTM3Li5iZTRjMzVkYjhkZTk4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuQEAgLTE3MzQsNiArMTczNCwxOCBAQCBzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KVxuIFx0cmV0dXJuIHBoeWRydi1cdTAwM2Vjb25maWdfaW50ciBcdTAwMjZcdTAwMjYgcGh5ZHJ2LVx1MDAzZWhhbmRsZV9pbnRlcnJ1cHQ7XG4gfVxuIFxuKy8qIEdpdmUgYmFjayB0aGUgaW50ZXJydXB0IHBoeV9wcm9iZSgpIHBhcmtlZCB3aGVuIGEgZHJpdmVyIHdpdGggbm8gaW50ZXJydXB0XG4rICogY2FsbGJhY2tzIGJvdW5kLiBtZGlvYnVzX2FsbG9jKCkgZGVmYXVsdHMgYnVzLVx1MDAzZWlycVtdIHRvIFBIWV9QT0xMIGFuZCB0aGVcbisgKiBiaW5kIGN5Y2xlIGRvZXMgbm90IHRvdWNoIHRoZSB0YWJsZSwgc28gd2hhdGV2ZXIgdGhlIGJ1cyByZWNvcmRlZCB0aGVyZVxuKyAqIHN0aWxsIHN0YW5kcy4gT25seSB0aGUgcGFya2luZyBpcyB1bmRvbmU6IGFueSBvdGhlciB2YWx1ZSB0aGUgUEhZIGNhcnJpZXNcbisgKiB3YXMgcHV0IHRoZXJlIGJ5IHNvbWVvbmUgZWxzZS5cbisgKi9cbitzdGF0aWMgdm9pZCBwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4re1xuK1x0aWYgKHBoeWRldi1cdTAwM2VpcnEgPT0gUEhZX1BPTEwpXG4rXHRcdHBoeWRldi1cdTAwM2VpcnEgPSBwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlaXJxW3BoeWRldi1cdTAwM2VtZGlvLmFkZHJdO1xuK31cbitcbiAvKipcbiAgKiBwaHlfYXR0YWNoX2RpcmVjdCAtIGF0dGFjaCBhIG5ldHdvcmsgZGV2aWNlIHRvIGEgZ2l2ZW4gUEhZIGRldmljZSBwb2ludGVyXG4gICogQGRldjogbmV0d29yayBkZXZpY2UgdG8gYXR0YWNoXG5AQCAtMTg5Niw2ICsxOTA4LDcgQEAgaW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4gXG4gZXJyb3JfbW9kdWxlX3B1dDpcbiBcdG1vZHVsZV9wdXQoZC1cdTAwM2Vkcml2ZXItXHUwMDNlb3duZXIpO1xuK1x0cGh5X3Jlc3RvcmVfZ2VucGh5X2lycShwaHlkZXYpO1xuIFx0cGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4gPSAwO1xuIFx0ZC1cdTAwM2Vkcml2ZXIgPSBOVUxMO1xuIGVycm9yX3B1dF9kZXZpY2U6XG5AQCAtMTk2NSw2ICsxOTc4LDcgQEAgdm9pZCBwaHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHQgKiByZWFsIGRyaXZlciBjb3VsZCBiZSBsb2FkZWRcbiBcdCAqL1xuIFx0aWYgKHBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuKSB7XG4rXHRcdHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEocGh5ZGV2KTtcbiBcdFx0ZGV2aWNlX3JlbGVhc2VfZHJpdmVyKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldik7XG4gXHRcdHBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcbiBcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuaW5kZXggNWI4ZTk1NjkwMmZiNS4uYTU1ZTRhNjQwMjhmZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbkBAIC0yMDgzLDYgKzIwODMsMTggQEAgc3RhdGljIGludCBwaHlsaW5rX3ZhbGlkYXRlX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4gXHRyZXR1cm4gcGh5bGlua192YWxpZGF0ZShwbCwgc3VwcG9ydGVkLCBzdGF0ZSk7XG4gfVxuIFxuKy8qIERpc2Fzc29jaWF0ZSBAcGh5IGZyb20gQHBsLiBDYWxsZXIgbXVzdCBob2xkIHBsLVx1MDAzZXBoeWRldl9tdXRleC4gKi9cbitzdGF0aWMgdm9pZCBwaHlsaW5rX2NsZWFyX3BoeWRldihzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXG4re1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZwaHktXHUwMDNlbG9jayk7XG4rXHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbitcdHBsLVx1MDAzZXBoeWRldiA9IE5VTEw7XG4rXHRwbC1cdTAwM2VwaHlfZW5hYmxlX3R4X2xwaSA9IGZhbHNlO1xuK1x0cGwtXHUwMDNlbWFjX3R4X2Nsa19zdG9wID0gZmFsc2U7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeS1cdTAwM2Vsb2NrKTtcbit9XG4rXG4gc3RhdGljIGludCBwaHlsaW5rX2JyaW5ndXBfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcbiBcdFx0XHQgICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbiB7XG5AQCAtMjE5Nyw2ICsyMjA5LDEyIEBAIHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4gXHRpZiAocmV0ID09IDAgXHUwMDI2XHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5KSlcbiBcdFx0cGh5X3JlcXVlc3RfaW50ZXJydXB0KHBoeSk7XG4gXG4rXHRpZiAocmV0KSB7XG4rXHRcdG11dGV4X2xvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbitcdFx0cGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSk7XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuK1x0fVxuK1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG5AQCAtMjM0NywxNSArMjM2NSw4IEBAIHZvaWQgcGh5bGlua19kaXNjb25uZWN0X3BoeShzdHJ1Y3QgcGh5bGluayAqcGwpXG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4gXHRwaHkgPSBwbC1cdTAwM2VwaHlkZXY7XG4tXHRpZiAocGh5KSB7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbi1cdFx0cGwtXHUwMDNlcGh5ZGV2ID0gTlVMTDtcbi1cdFx0cGwtXHUwMDNlcGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTtcbi1cdFx0cGwtXHUwMDNlbWFjX3R4X2Nsa19zdG9wID0gZmFsc2U7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwaHktXHUwMDNlbG9jayk7XG4tXHR9XG4rXHRpZiAocGh5KVxuK1x0XHRwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuIFxuIFx0aWYgKHBoeSkge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMjE6MzU6NTMuNzUyMTQyOTgxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzExODMyNjg1Mzk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5ldHdvcmsgUEhZIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIGZpZ3VyZSBvdXQgaWYgdGhlcmUncyBhbnl0aGluZyBoZXJlIHRoYXQgd2FycmFudHMgZnV6emluZyBvciBmdXJ0aGVyIGludmVzdGlnYXRpb24gaW50byByZWFjaGFiaWxpdHkgYW5kIHBvdGVudGlhbCBjb25maWd1cmF0aW9uIGlzc3Vlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGV4YW1pbmUgdGhlIGZ1bmN0aW9uYWwgY2hhbmdlcyBjbG9zZWx5LlxuXG5GaXJzdCwgSSBzZWUgdGhlIGNoYW5nZXMgYXJlIGZvY3VzZWQgb24gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgIGFuZCBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AuIEluIGBwaHlfZGV2aWNlLmNgLCB0aGVyZSdzIGEgbW9kaWZpY2F0aW9uIHRvIGBwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHBoeWRldilgLiBJdCBsb29rcyBsaWtlIGl0IHJlc3RvcmVzIGBwaHlkZXYtXHUwMDNlaXJxYCB0byBpdHMgcHJldmlvdXMgdmFsdWUgaWYgaXQgd2FzIGBQSFlfUE9MTGAgd2hlbiBlcnJvcnMgb2NjdXIgaW4gYHBoeV9hdHRhY2hfZGlyZWN0YCBvciBgcGh5X2RldGFjaGAuIE5vdGhpbmcgaW1tZWRpYXRlbHkgYWxhcm1pbmcsIGJ1dCBlcnJvciBwYXRocyBhcmUgYWx3YXlzIGludGVyZXN0aW5nLlxuXG5PdmVyIGluIGBwaHlsaW5rLmNgLCB3ZSBoYXZlIGEgcmVmYWN0b3Jpbmcgb2YgdGhlIGhlbHBlciBmdW5jdGlvbiBgcGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSlgLiBBbmQgaXQgYXBwZWFycyB0byBiZSB1c2VkIGluIGFuIGVycm9yIHBhdGggd2l0aGluIGBwaHlsaW5rX2JyaW5ndXBfcGh5YCwgc3BlY2lmaWNhbGx5IHdpdGhpbiBhIG11dGV4IGxvY2suIFJlZmFjdG9yaW5nIGlzIGdvb2QsIGFuZCB0aGUgZXJyb3IgaGFuZGxpbmcgYmVpbmcgaW1wcm92ZWQgaXMgYSBnb29kIHNpZ24sIGJ1dCBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0LlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gYXJpc2VzOiB3aGVyZSBpcyB0aGlzIGJ1aWx0LCBhbmQgaG93IGFyZSBQSFkgZGV2aWNlcyBhbmQgcGh5bGluayB1c2VkIGluIGVudmlyb25tZW50cyBsaWtlIHZpcnR1YWxpemVkIHN5c3RlbXMsIFFFTVUsIG9yIGV2ZW4gc29mdHdhcmUgZGV2aWNlcz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlc2UgY2hhbmdlcyBoYXZlIGFuIGltcGFjdCBiZXlvbmQgc3RhbmRhcmQgaGFyZHdhcmUuIENhbiBJIHJlYWNoIHRoZXNlIHNwZWNpZmljIGZ1bmN0aW9ucyBhbmQgY29uZmlndXJhdGlvbnMgd2l0aGluIHRob3NlIGVudmlyb25tZW50cz8gV2FpdCBhIG1pbnV0ZS4gQXJlIFBIWSBkZXZpY2VzLCBNRElPLCBhbmQgcGh5bGluayBldmVuICpyZWFjaGFibGUqIGluIFFFTVUsIHN5emthbGxlciwgb3Igc2ltaWxhciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/IExldCdzIGJyZWFrIG91dCBncmVwIGFuZCBzZWUgaWYgdGhlc2UgY29tcG9uZW50cyBhcmUgZXZlbiBiZWluZyB1c2VkIGluIHRob3NlIGNvbnRleHRzLiBUaGF0IHdpbGwgdGVsbCBtZSBhIGxvdCBhYm91dCB0aGUgcG90ZW50aWFsIHNjb3BlIG9mIHRoaXMgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMTksIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo0Nzo0NS41ODQ4MzA3NDdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYzNzM0MjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeWxpbmtfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEwNjAwIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYz0xNTI1PXZvaWQgYjUzX3BvcnRfZXZlbnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1MzItXFx0bGluayA9ICEhKHN0cyBcXHUwMDI2IEJJVChwb3J0KSk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTUzMzpcXHRkc2FfcG9ydF9waHlsaW5rX21hY19jaGFuZ2UoZHMsIHBvcnQsIGxpbmspO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1MzQtfVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jPTE1MzU9RVhQT1JUX1NZTUJPTChiNTNfcG9ydF9ldmVudCk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTUzNi1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoxNTM3OnN0YXRpYyB2b2lkIGI1M19waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTUzODpcXHRcXHRcXHRcXHQgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTUzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTc1LVxcdC8qIEdldCB0aGUgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgY2FwYWJpbGl0aWVzICovXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU3NjpcXHRpZiAoZGV2LVxcdTAwM2VvcHMtXFx1MDAzZXBoeWxpbmtfZ2V0X2NhcHMpXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU3NzpcXHRcXHRkZXYtXFx1MDAzZW9wcy1cXHUwMDNlcGh5bGlua19nZXRfY2FwcyhkZXYsIHBvcnQsIGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU3OC19XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU3OS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoxNTgwOnN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKmI1M19waHlsaW5rX21hY19zZWxlY3RfcGNzKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1ODEtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTgyLXtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoxNTgzOlxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU4NC1cXHRzdHJ1Y3QgYjUzX2RldmljZSAqZGV2ID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1ODUtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU4NjpcXHRpZiAoIWRldi1cXHUwMDNlb3BzLVxcdTAwM2VwaHlsaW5rX21hY19zZWxlY3RfcGNzKVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1ODctXFx0XFx0cmV0dXJuIE5VTEw7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU4OC1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoxNTg5OlxcdHJldHVybiBkZXYtXFx1MDAzZW9wcy1cXHUwMDNlcGh5bGlua19tYWNfc2VsZWN0X3BjcyhkZXYsIGRwLVxcdTAwM2VpbmRleCwgaW50ZXJmYWNlKTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTkwLX1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTkxLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1OTI6c3RhdGljIHZvaWQgYjUzX3BoeWxpbmtfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTkzLVxcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBtb2RlLFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1OTQ6XFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU5NS17XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU5NjpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1OTctXFx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZSA9IHN0YXRlLVxcdTAwM2VpbnRlcmZhY2U7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNjE0LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE2MTU6c3RhdGljIHZvaWQgYjUzX3BoeWxpbmtfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNjE2LVxcdFxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGludCBtb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTYxOC17XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTYxOTpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE2MjAtXFx0c3RydWN0IGI1M19kZXZpY2UgKmRldiA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE2MzgtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTYzOTpzdGF0aWMgdm9pZCBiNTNfcGh5bGlua19tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNjQwLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTY0NS17XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTY0NjpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE2NDctXFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHAtXFx1MDAzZWRzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM9MjY5Mj1FWFBPUlRfU1lNQk9MX0dQTChiNTNfc2V0X2FnZWluZ190aW1lKTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0yNjkzLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjI2OTQ6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgYjUzX3BoeWxpbmtfbWFjX29wcyA9IHtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoyNjk1OlxcdC5tYWNfc2VsZWN0X3Bjc1xcdD0gYjUzX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3MsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MjY5NjpcXHQubWFjX2NvbmZpZ1xcdD0gYjUzX3BoeWxpbmtfbWFjX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoyNjk3OlxcdC5tYWNfbGlua19kb3duXFx0PSBiNTNfcGh5bGlua19tYWNfbGlua19kb3duLFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjI2OTg6XFx0Lm1hY19saW5rX3VwXFx0PSBiNTNfcGh5bGlua19tYWNfbGlua191cCxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0yNjk5LX07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYz0yNzAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgYjUzX3N3aXRjaF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0yNzEwLVxcdC5waHlfd3JpdGVcXHRcXHQ9IGI1M19waHlfd3JpdGUxNixcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoyNzExOlxcdC5waHlsaW5rX2dldF9jYXBzXFx0PSBiNTNfcGh5bGlua19nZXRfY2FwcyxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0yNzEyLVxcdC5wb3J0X3NldHVwXFx0XFx0PSBiNTNfc2V0dXBfcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jPTMxODM9c3RydWN0IGI1M19kZXZpY2UgKmI1M19zd2l0Y2hfYWxsb2Moc3RydWN0IGRldmljZSAqYmFzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTMyMDYtXFx0ZHMtXFx1MDAzZW9wcyA9IFxcdTAwMjZiNTNfc3dpdGNoX29wcztcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzozMjA3OlxcdGRzLVxcdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcXHUwMDI2YjUzX3BoeWxpbmtfbWFjX29wcztcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0zMjA4LVxcdGRldi1cXHUwMDNldmxhbl9lbmFibGVkID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaD0zND1zdHJ1Y3QgYjUzX2lvX29wcyB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2LmgtNTAtXFx0dm9pZCAoKnBoeV9kaXNhYmxlKShzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydCk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oOjUxOlxcdHZvaWQgKCpwaHlsaW5rX2dldF9jYXBzKShzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2Lmg6NTI6XFx0XFx0XFx0XFx0IHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2Lmg6NTM6XFx0c3RydWN0IHBoeWxpbmtfcGNzICooKnBoeWxpbmtfbWFjX3NlbGVjdF9wY3MpKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oLTU0LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oPTExMT1zdHJ1Y3QgYjUzX3BjcyB7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oOjExMjpcXHRzdHJ1Y3QgcGh5bGlua19wY3MgcGNzO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaC0xMTMtXFx0c3RydWN0IGI1M19kZXZpY2UgKmRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE5LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjIwOnN0YXRpYyBpbmxpbmUgc3RydWN0IGI1M19wY3MgKnBjc190b19iNTNfcGNzKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTIxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jPTYxPXN0YXRpYyB1MTYgYjUzX3NlcmRlc19yZWFkKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIHU4IGxhbmUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy02Ny1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYzo2ODpzdGF0aWMgaW50IGI1M19zZXJkZXNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtNjktXFx0XFx0XFx0ICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtODgtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM6ODk6c3RhdGljIHZvaWQgYjUzX3NlcmRlc19hbl9yZXN0YXJ0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTEwMS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYzoxMDI6c3RhdGljIHZvaWQgYjUzX3NlcmRlc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYzoxMDM6XFx0XFx0XFx0XFx0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTEwNC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYz0xNTc9RVhQT1JUX1NZTUJPTChiNTNfc2VyZGVzX2xpbmtfc2V0KTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy0xNTgtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM6MTU5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIGI1M19wY3Nfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE2MC1cXHQucGNzX2dldF9zdGF0ZSA9IGI1M19zZXJkZXNfZ2V0X3N0YXRlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtMTY0LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjE2NTp2b2lkIGI1M19zZXJkZXNfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYzoxNjY6XFx0XFx0XFx0XFx0IHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE2Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy0xOTEtfVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjE5MjpFWFBPUlRfU1lNQk9MKGI1M19zZXJkZXNfcGh5bGlua19nZXRfY2Fwcyk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtMTkzLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjE5NDpzdHJ1Y3QgcGh5bGlua19wY3MgKmI1M19zZXJkZXNfcGh5bGlua19tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE5NS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTIwOS19XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM6MjEwOkVYUE9SVF9TWU1CT0woYjUzX3NlcmRlc19waHlsaW5rX21hY19zZWxlY3RfcGNzKTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy0yMTEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaC05OS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaDoxMDA6c3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaC0xMDEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaD0xMTA9dm9pZCBiNTNfc2VyZGVzX2xpbmtfc2V0KHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIGludCBwb3J0LCB1bnNpZ25lZCBpbnQgbW9kZSxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaC0xMTEtXFx0XFx0XFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsIGJvb2wgbGlua191cCk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmg6MTEyOnN0cnVjdCBwaHlsaW5rX3BjcyAqYjUzX3NlcmRlc19waHlsaW5rX21hY19zZWxlY3RfcGNzKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmgtMTEzLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5oLTExNC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaDoxMTU6dm9pZCBiNTNfc2VyZGVzX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmg6MTE2OlxcdFxcdFxcdFxcdCBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmgtMTE3LSNpZiBJU19FTkFCTEVEKENPTkZJR19CNTNfU0VSREVTKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jPTQzNT1zdGF0aWMgdm9pZCBiNTNfc3JhYl9pcnFfZGlzYWJsZShzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy00NDUtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jOjQ0NjpzdGF0aWMgdm9pZCBiNTNfc3JhYl9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYzo0NDc6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ0OC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtNDU3LVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYzo0NTg6XFx0XFx0YjUzX3NlcmRlc19waHlsaW5rX2dldF9jYXBzKGRldiwgcG9ydCwgY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtNDU5LSNlbmRpZlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jPTQ3OT1zdGF0aWMgY29uc3Qgc3RydWN0IGI1M19pb19vcHMgYjUzX3NyYWJfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ5MS1cXHQuaXJxX2Rpc2FibGUgPSBiNTNfc3JhYl9pcnFfZGlzYWJsZSxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmM6NDkyOlxcdC5waHlsaW5rX2dldF9jYXBzID0gYjUzX3NyYWJfcGh5bGlua19nZXRfY2FwcyxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtNDkzLSNpZiBJU19FTkFCTEVEKENPTkZJR19CNTNfU0VSREVTKVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYzo0OTQ6XFx0LnBoeWxpbmtfbWFjX3NlbGVjdF9wY3MgPSBiNTNfc2VyZGVzX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3MsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ5NS1cXHQuc2VyZGVzX21hcF9sYW5lID0gYjUzX3NyYWJfc2VyZGVzX21hcF9sYW5lLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz00NTI9c3RhdGljIGlycXJldHVybl90IGJjbV9zZjJfc3dpdGNoXzFfaXNyKGludCBpcnEsIHZvaWQgKmRldl9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNDYyLVxcdFxcdHByaXYtXFx1MDAzZXBvcnRfc3RzWzddLmxpbmsgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NDYzOlxcdFxcdGRzYV9wb3J0X3BoeWxpbmtfbWFjX2NoYW5nZShkcywgNywgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy00NjQtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy00NjYtXFx0XFx0cHJpdi1cXHUwMDNlcG9ydF9zdHNbN10ubGluayA9IGZhbHNlO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NDY3OlxcdFxcdGRzYV9wb3J0X3BoeWxpbmtfbWFjX2NoYW5nZShkcywgNywgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNDY4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9NzI0PXN0YXRpYyB2b2lkIGJjbV9zZjJfc3dfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjcyNTpcXHRcXHRcXHRcXHRzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTcyNi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTc0NC1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjc0NTpzdGF0aWMgdm9pZCBiY21fc2YyX3N3X21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy03NDYtXFx0XFx0XFx0XFx0ICB1bnNpZ25lZCBpbnQgbW9kZSxcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjc0NzpcXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNzQ4LXtcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjc0OTpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNzUwLVxcdHUzMiBpZF9tb2RlX2RpcyA9IDAsIHBvcnRfbW9kZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9Nzk0PXN0YXRpYyB2b2lkIGJjbV9zZjJfc3dfbWFjX2xpbmtfc2V0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTgxNi1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjgxNzpzdGF0aWMgdm9pZCBiY21fc2YyX3N3X21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy04MTgtXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtODIwLXtcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjgyMTpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtODIyLVxcdHN0cnVjdCBiY21fc2YyX3ByaXYgKnByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTgzNy1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjgzODpzdGF0aWMgdm9pZCBiY21fc2YyX3N3X21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtODM5LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTg0NC17XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo4NDU6XFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTg0Ni1cXHRzdHJ1Y3QgYmNtX3NmMl9wcml2ICpwcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz05MDY9c3RhdGljIHZvaWQgYmNtX3NmMl9zd19maXhlZF9zdGF0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6OTA3OlxcdFxcdFxcdFxcdCAgIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXR1cylcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTkwOC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jPTEyMDM9c3RhdGljIGludCBiY21fc2YyX3N3X2dldF9zc2V0X2NvdW50KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTEyMTUtXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzoxMjE2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGJjbV9zZjJfcGh5bGlua19tYWNfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtMTIxNy1cXHQubWFjX2NvbmZpZ1xcdD0gYmNtX3NmMl9zd19tYWNfY29uZmlnLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz0xMjIyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgYmNtX3NmMl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTEyMzAtXFx0LmdldF9waHlfZmxhZ3NcXHRcXHQ9IGJjbV9zZjJfc3dfZ2V0X3BoeV9mbGFncyxcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjEyMzE6XFx0LnBoeWxpbmtfZ2V0X2NhcHNcXHQ9IGJjbV9zZjJfc3dfZ2V0X2NhcHMsXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzoxMjMyOlxcdC5waHlsaW5rX2ZpeGVkX3N0YXRlXFx0PSBiY21fc2YyX3N3X2ZpeGVkX3N0YXRlLFxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtMTIzMy1cXHQuc3VzcGVuZFxcdFxcdD0gYmNtX3NmMl9zd19zdXNwZW5kLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz0xMzY1PXN0YXRpYyBpbnQgYmNtX3NmMl9zd19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy0xNDI2LVxcdGRzLVxcdTAwM2VvcHMgPSBcXHUwMDI2YmNtX3NmMl9vcHM7XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzoxNDI3OlxcdGRzLVxcdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcXHUwMDI2YmNtX3NmMl9waHlsaW5rX21hY19vcHM7XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy0xNDI4LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MzIxPXN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9tYXhfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjUtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzI2OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzYSwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzI3OlxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyOC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0zMzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBkc2FfbG9vcF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTEtXFx0LnBvcnRfbWF4X210dVxcdFxcdD0gZHNhX2xvb3BfcG9ydF9tYXhfbXR1LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MjpcXHQucGh5bGlua19nZXRfY2Fwc1xcdD0gZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTMtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jPTE0NTg9c3RhdGljIHZvaWQgaGVsbGNyZWVrX3RlYXJkb3duKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jLTE0NjMtXFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM6MTQ2NDpzdGF0aWMgdm9pZCBoZWxsY3JlZWtfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jOjE0NjU6XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jLTE0NjYte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM9MTkwMD1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGhlbGxjcmVla19kc19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYy0xOTA2LVxcdC5nZXRfdHNfaW5mb1xcdCAgICAgICA9IGhlbGxjcmVla19nZXRfdHNfaW5mbyxcXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYzoxOTA3OlxcdC5waHlsaW5rX2dldF9jYXBzICAgICAgPSBoZWxsY3JlZWtfcGh5bGlua19nZXRfY2FwcyxcXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYy0xOTA4LVxcdC5wb3J0X2JyaWRnZV9mbGFncyAgICAgPSBoZWxsY3JlZWtfYnJpZGdlX2ZsYWdzLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jPTQ0OD1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo0NDk6a3M4OTk1X21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo0NTA6XFx0XFx0ICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNDUxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYz00NTQ9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NDU1OmtzODk5NV9tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNDU2LVxcdFxcdCAgIHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTQ1OC17XFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jOjQ1OTpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy00NjAtXFx0c3RydWN0IGtzODk5NV9zd2l0Y2ggKmtzID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jPTUwOD1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo1MDk6a3M4OTk1X21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy01MTAtXFx0XFx0ICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy01MTEte1xcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo1MTI6XFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNTEzLVxcdHN0cnVjdCBrczg5OTVfc3dpdGNoICprcyA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy01MjMtXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jOjUyNDpzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBrczg5OTVfcGh5bGlua19tYWNfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy01MjUtXFx0Lm1hY19jb25maWcgPSBrczg5OTVfbWFjX2NvbmZpZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYz02MDI9c3RhdGljIHZvaWQga3M4OTk1X3BvcnRfc3RwX3N0YXRlX3NldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCB1OCBzdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy02NDgtXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jOjY0OTpzdGF0aWMgdm9pZCBrczg5OTVfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHNhLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NjUwOlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNjUxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYz03MzI9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBrczg5OTVfZHNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTc0MS1cXHQucG9ydF9tYXhfbXR1ID0ga3M4OTk1X2dldF9tYXhfbXR1LFxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo3NDI6XFx0LnBoeWxpbmtfZ2V0X2NhcHMgPSBrczg5OTVfcGh5bGlua19nZXRfY2FwcyxcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNzQzLX07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM9NzQ2PXN0YXRpYyBpbnQga3M4OTk1X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtODIwLVxcdGtzLVxcdTAwM2Vkcy1cXHUwMDNlb3BzID0gXFx1MDAyNmtzODk5NV9kc19vcHM7XFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jOjgyMTpcXHRrcy1cXHUwMDNlZHMtXFx1MDAzZXBoeWxpbmtfbWFjX29wcyA9IFxcdTAwMjZrczg5OTVfcGh5bGlua19tYWNfb3BzO1xcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy04MjItXFx0a3MtXFx1MDAzZWRzLVxcdTAwM2Vwcml2ID0ga3M7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM9MTI4Mz1zdGF0aWMgaW50IGxhbjkzMDNfcG9ydF9tZGJfZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTI5Ny1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTI5ODpzdGF0aWMgdm9pZCBsYW45MzAzX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTI5OTpcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzAwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzIzLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxMzI0OnN0YXRpYyB2b2lkIGxhbjkzMDNfcGh5bGlua19tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzI1LVxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgbW9kZSxcXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTMyNjpcXHRcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzMjcte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzMjktXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEzMzA6c3RhdGljIHZvaWQgbGFuOTMwM19waHlsaW5rX21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzMzEtXFx0XFx0XFx0XFx0XFx0ICB1bnNpZ25lZCBpbnQgbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzM1LVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxMzM2OnN0YXRpYyB2b2lkIGxhbjkzMDNfcGh5bGlua19tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTMzNy1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzNDIte1xcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxMzQzOlxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzNDQtXFx0c3RydWN0IGxhbjkzMDMgKmNoaXAgPSBkcC1cXHUwMDNlZHMtXFx1MDAzZXByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTM3NS1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTM3NjpzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBsYW45MzAzX3BoeWxpbmtfbWFjX29wcyA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTM3NzpcXHQubWFjX2NvbmZpZ1xcdD0gbGFuOTMwM19waHlsaW5rX21hY19jb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEzNzg6XFx0Lm1hY19saW5rX2Rvd25cXHQ9IGxhbjkzMDNfcGh5bGlua19tYWNfbGlua19kb3duLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxMzc5OlxcdC5tYWNfbGlua191cFxcdD0gbGFuOTMwM19waHlsaW5rX21hY19saW5rX3VwLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzgwLX07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM9MTM4Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGxhbjkzMDNfc3dpdGNoX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzg3LVxcdC5waHlfd3JpdGVcXHRcXHQ9IGxhbjkzMDNfcGh5X3dyaXRlLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxMzg4OlxcdC5waHlsaW5rX2dldF9jYXBzXFx0PSBsYW45MzAzX3BoeWxpbmtfZ2V0X2NhcHMsXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzODktXFx0LmdldF9ldGh0b29sX3N0YXRzXFx0PSBsYW45MzAzX2dldF9ldGh0b29sX3N0YXRzLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jPTE0MDQ9c3RhdGljIGludCBsYW45MzAzX3JlZ2lzdGVyX3N3aXRjaChzdHJ1Y3QgbGFuOTMwMyAqY2hpcClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xNDEzLVxcdGNoaXAtXFx1MDAzZWRzLVxcdTAwM2VvcHMgPSBcXHUwMDI2bGFuOTMwM19zd2l0Y2hfb3BzO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxNDE0OlxcdGNoaXAtXFx1MDAzZWRzLVxcdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcXHUwMDI2bGFuOTMwM19waHlsaW5rX21hY19vcHM7XFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTE0MTUtXFx0Y2hpcC1cXHUwMDNlZHMtXFx1MDAzZXBoeXNfbWlpX21hc2sgPSBHRU5NQVNLKExBTjkzMDNfTlVNX1BPUlRTIC0gMSwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jPTI3PXN0cnVjdCB4d2F5X2dwaHlfbWF0Y2hfZGF0YSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jLTMxLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmM6MzI6c3RhdGljIHZvaWQgZ3N3aXBfeHJ4MjAwX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jOjMzOlxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy0zNC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jLTYyLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmM6NjM6c3RhdGljIHZvaWQgZ3N3aXBfeHJ4MzAwX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jOjY0OlxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy02NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jPTQ1OT1zdGF0aWMgY29uc3Qgc3RydWN0IGdzd2lwX2h3X2luZm8gZ3N3aXBfeHJ4MjAwID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy00NzUtXFx0fSxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jOjQ3NjpcXHQucGh5bGlua19nZXRfY2FwcyA9IGdzd2lwX3hyeDIwMF9waHlsaW5rX2dldF9jYXBzLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmMtNDc3LVxcdC5wY2VfbWljcm9jb2RlID0gXFx1MDAyNmdzd2lwX3BjZV9taWNyb2NvZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jPTQ4Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGdzd2lwX2h3X2luZm8gZ3N3aXBfeHJ4MzAwID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy00OTYtXFx0fSxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jOjQ5NzpcXHQucGh5bGlua19nZXRfY2FwcyA9IGdzd2lwX3hyeDMwMF9waHlsaW5rX2dldF9jYXBzLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmMtNDk4LVxcdC5wY2VfbWljcm9jb2RlID0gXFx1MDAyNmdzd2lwX3BjZV9taWNyb2NvZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5oPTI1NT1zdHJ1Y3QgZ3N3aXBfaHdfaW5mbyB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5oLTI2My1cXHRlbnVtIGRzYV90YWdfcHJvdG9jb2wgdGFnX3Byb3RvY29sO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmg6MjY0OlxcdHZvaWQgKCpwaHlsaW5rX2dldF9jYXBzKShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmg6MjY1OlxcdFxcdFxcdFxcdCBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuaDoyNjY6XFx0c3RydWN0IHBoeWxpbmtfcGNzICooKm1hY19zZWxlY3RfcGNzKShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5oLTI2Ny1cXHRcXHRcXHRcXHRcXHQgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jPTEyNjY9c3RhdGljIGludCBnc3dpcF9wb3J0X2NoYW5nZV9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IG5ld19tdHUpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xMjkxLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjEyOTI6c3RhdGljIHZvaWQgZ3N3aXBfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjEyOTM6XFx0XFx0XFx0XFx0ICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTI5NC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xMjk2LVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjEyOTc6XFx0cHJpdi1cXHUwMDNlaHdfaW5mby1cXHUwMDNlcGh5bGlua19nZXRfY2FwcyhkcywgcG9ydCwgY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xMjk4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jPTEzNzU9c3RhdGljIHZvaWQgZ3N3aXBfcG9ydF9zZXRfcGF1c2Uoc3RydWN0IGdzd2lwX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQwNC1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNDA1OnN0YXRpYyB2b2lkIGdzd2lwX3BoeWxpbmtfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDA2LVxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IG1vZGUsXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTQwNzpcXHRcXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0MDgte1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE0MDk6XFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDEwLVxcdHN0cnVjdCBnc3dpcF9wcml2ICpwcml2ID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQ1NS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNDU2OnN0YXRpYyB2b2lkIGdzd2lwX3BoeWxpbmtfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDU3LVxcdFxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBtb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQ1OS17XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTQ2MDpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0NjEtXFx0c3RydWN0IGdzd2lwX3ByaXYgKnByaXYgPSBkcC1cXHUwMDNlZHMtXFx1MDAzZXByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDY5LVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE0NzA6c3RhdGljIHZvaWQgZ3N3aXBfcGh5bGlua19tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDcxLVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDc2LXtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNDc3OlxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQ3OC1cXHRzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jPTE1NTk9c3RhdGljIGludCBnc3dpcF9zZXRfbWFjX2VlZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTU2Ny1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNTY4OnN0YXRpYyB2b2lkIGdzd2lwX3BoeWxpbmtfbWFjX2Rpc2FibGVfdHhfbHBpKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE1Njkte1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE1NzA6XFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNTcxLVxcdHN0cnVjdCBnc3dpcF9wcml2ICpwcml2ID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTU3Ni1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNTc3OnN0YXRpYyBpbnQgZ3N3aXBfcGh5bGlua19tYWNfZW5hYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNTc4LVxcdFxcdFxcdFxcdFxcdCAgIHUzMiB0aW1lciwgYm9vbCB0eF9jbG9ja19zdG9wKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE1Nzkte1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE1ODA6XFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNTgxLVxcdHN0cnVjdCBnc3dpcF9wcml2ICpwcml2ID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM9MTU5Mj1zdGF0aWMgYm9vbCBnc3dpcF9zdXBwb3J0X2VlZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTYwMS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNjAyOnN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKmdzd2lwX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3Moc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTYwMy1cXHRcXHRcXHRcXHRcXHRcXHRcXHRwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2MDQte1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2MDU6XFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNjA2LVxcdHN0cnVjdCBnc3dpcF9wcml2ICpwcml2ID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTYxMy1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNjE0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGdzd2lwX3BoeWxpbmtfbWFjX29wcyA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNjE1OlxcdC5tYWNfY29uZmlnXFx0XFx0PSBnc3dpcF9waHlsaW5rX21hY19jb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTYxNjpcXHQubWFjX2xpbmtfZG93blxcdFxcdD0gZ3N3aXBfcGh5bGlua19tYWNfbGlua19kb3duLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2MTc6XFx0Lm1hY19saW5rX3VwXFx0XFx0PSBnc3dpcF9waHlsaW5rX21hY19saW5rX3VwLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2MTg6XFx0Lm1hY19kaXNhYmxlX3R4X2xwaVxcdD0gZ3N3aXBfcGh5bGlua19tYWNfZGlzYWJsZV90eF9scGksXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTYxOTpcXHQubWFjX2VuYWJsZV90eF9scGlcXHQ9IGdzd2lwX3BoeWxpbmtfbWFjX2VuYWJsZV90eF9scGksXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTYyMDpcXHQubWFjX3NlbGVjdF9wY3NcXHRcXHQ9IGdzd2lwX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3MsXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTYyMS19O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM9MTYyMz1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGdzd2lwX3N3aXRjaF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNjQzLVxcdC5wb3J0X21heF9tdHVcXHRcXHQ9IGdzd2lwX3BvcnRfbWF4X210dSxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNjQ0OlxcdC5waHlsaW5rX2dldF9jYXBzXFx0PSBnc3dpcF9waHlsaW5rX2dldF9jYXBzLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2NDUtXFx0LmdldF9zdHJpbmdzXFx0XFx0PSBnc3dpcF9nZXRfc3RyaW5ncyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jPTE2Nzg9aW50IGdzd2lwX3Byb2JlX2NvbW1vbihzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiwgdTMyIHZlcnNpb24pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNjkwLVxcdHByaXYtXFx1MDAzZWRzLVxcdTAwM2VvcHMgPSBcXHUwMDI2Z3N3aXBfc3dpdGNoX29wcztcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNjkxOlxcdHByaXYtXFx1MDAzZWRzLVxcdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcXHUwMDI2Z3N3aXBfcGh5bGlua19tYWNfb3BzO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2OTItXFx0cHJpdi1cXHUwMDNlZHMtXFx1MDAzZXByaXYgPSBwcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM9Mjg9c3RydWN0IGdzdzF4eF9wcml2IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTM0LVxcdHN0cnVjdFxcdFxcdFxcdHJlZ21hcCAqc2hlbGw7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MzU6XFx0c3RydWN0XFx0XFx0XFx0cGh5bGlua19wY3MgcGNzO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTM2LVxcdHN0cnVjdCBkZWxheWVkX3dvcmtcXHRjbGVhcl9yYW5lZztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jPTEyND1zdGF0aWMgdm9pZCBnc3cxeHhfbWRpb19yZWdtYXBfdW5sb2NrKHZvaWQgKm1kaW9fbG9jaylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTEyOC1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzoxMjk6c3RhdGljIHVuc2lnbmVkIGludCBnc3cxeHhfcGNzX2luYmFuZF9jYXBzKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTEzMC1cXHRcXHRcXHRcXHRcXHQgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTM0LVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjEzNTpzdGF0aWMgc3RydWN0IGdzdzF4eF9wcml2ICpwY3NfdG9fZ3N3MXh4KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTEzNi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xMzktXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MTQwOnN0YXRpYyBpbnQgZ3N3MXh4X3Bjc19lbmFibGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTQxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTE0OC1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzoxNDk6c3RhdGljIHZvaWQgZ3N3MXh4X3Bjc19kaXNhYmxlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTE1MC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xNjEtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MTYyOnN0YXRpYyB2b2lkIGdzdzF4eF9wY3NfZ2V0X3N0YXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTE2My1cXHRcXHRcXHRcXHQgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjE2NDpcXHRcXHRcXHRcXHQgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTY1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jPTIzND1zdGF0aWMgaW50IGdzdzF4eF9wY3NfcmVzZXQoc3RydWN0IGdzdzF4eF9wcml2ICpwcml2LCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMzM0LVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjMzNTpzdGF0aWMgaW50IGdzdzF4eF9wY3NfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMzM2LVxcdFxcdFxcdCAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTM2OS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzozNzA6XFx0c3dpdGNoIChwaHlsaW5rX2dldF9saW5rX3RpbWVyX25zKGludGVyZmFjZSkpIHtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0zNzEtXFx0Y2FzZSAxMDAwMDpcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTM5My1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzozOTQ6XFx0dHhhbmVnID0gcGh5bGlua19taWlfYzIyX3Bjc19lbmNvZGVfYWR2ZXJ0aXNlbWVudChpbnRlcmZhY2UsIGFkdmVydGlzaW5nKTtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0zOTUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYz00NTM9c3RhdGljIHZvaWQgZ3N3MXh4X3Bjc19jbGVhcl9yYW5lZyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy00NjEtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6NDYyOnN0YXRpYyB2b2lkIGdzdzF4eF9wY3NfYW5fcmVzdGFydChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy00NjMte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtNDc3LVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjQ3ODpzdGF0aWMgdm9pZCBnc3cxeHhfcGNzX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtNDc5LVxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMjE6NDc6NDYuMTQ4NTcwNDE0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDg5NzY4ODQ4NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIFBIWSBEZXZpY2UgQ29ubmVjdGlvbnMqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIFBIWSBkZXZpY2VzIGFyZSBiZWluZyBjb25uZWN0ZWQgYW5kIGRpc2Nvbm5lY3RlZCB3aXRoaW4gdGhpcyBzeXN0ZW0uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYHBoeV9kZXZpY2UuY2AgYW5kIGBwaHlsaW5rLmNgLiBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGV5IGludGVyYWN0LlxuXG5UbyB0aGF0IGVuZCwgSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGlkZW50aWZ5aW5nIGFsbCB0aGUgcG9pbnRzIG9mIGNvbnRhY3QuIEknbSB0aGlua2luZywgYSB0aG9yb3VnaCBzZWFyY2ggZm9yIHRoZSBjYWxscyB0byBmdW5jdGlvbnMgdGhhdCBoYW5kbGUgUEhZIG1hbmFnZW1lbnQgd2lsbCBiZSBpbiBvcmRlci4gTGV0J3Mgc2VlLi4uIEknbGwgbmVlZCB0byB0cmFjayBkb3duIGNhbGxlcnMgb2YgY3J1Y2lhbCBmdW5jdGlvbnMgbGlrZSBgcGh5X2F0dGFjaF9kaXJlY3RgLCBgcGh5X2RldGFjaGAsIGBwaHlsaW5rX2JyaW5ndXBfcGh5YCwgYHBoeWxpbmtfZGlzY29ubmVjdF9waHlgLCBgcGh5X2Nvbm5lY3RgLCBhbmQgYHBoeV9hdHRhY2hgLiBUaGVzZSBhcmUgdGhlIGNvcmUgb3BlcmF0aW9ucywgdGhlIHBsYWNlcyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLCBzbyB0byBzcGVhaywgaW4gYXR0YWNoaW5nLCBkZXRhY2hpbmcsIGNvbm5lY3RpbmcsIGFuZCBkaXNjb25uZWN0aW5nIHRoZSBQSFlzLiBVbmRlcnN0YW5kaW5nIHRoZWlyIHVzYWdlIHBhdHRlcm5zIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgcGljdHVyZSBoZXJlLiBJIHN1c3BlY3QgdGhlcmUgd2lsbCBiZSBzb21lIGludGVyZXN0aW5nIGNvbm5lY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODIwNywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDIxOjQ4OjM1LjEyNTQ1ODQ1MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjU4NjMxNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X2F0dGFjaF9kaXJlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM9OTMxPXN0YXRpYyBpbnQgeGdiZV9waHlfZmluZF9waHlfZGV2aWNlKHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtOTgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM6OTgzOlxcdHJldCA9IHBoeV9hdHRhY2hfZGlyZWN0KHBkYXRhLVxcdTAwM2VuZXRkZXYsIHBoeWRldiwgcGh5ZGV2LVxcdTAwM2VkZXZfZmxhZ3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy05ODQtXFx0XFx0XFx0XFx0UEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTk4NS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYzo5ODY6XFx0XFx0bmV0ZGV2X2VycihwZGF0YS1cXHUwMDNlbmV0ZGV2LCBcXFwicGh5X2F0dGFjaF9kaXJlY3QgZmFpbGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTk4Ny1cXHRcXHRwaHlfZGV2aWNlX3JlbW92ZShwaHlkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jPTExNTk9aW50IGhuc19uaWNfaW5pdF9waHkoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBobmFlX2hhbmRsZSAqaClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2VuZXQuYy0xMTgwLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jOjExODE6XFx0XFx0cmV0ID0gcGh5X2F0dGFjaF9kaXJlY3QobmRldiwgcGh5X2RldiwgMCwgaC1cXHUwMDNlcGh5X2lmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19lbmV0LmMtMTE4Mi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTEyMjU9aW50IHBoeV9jb25uZWN0X2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMjMzLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTIzNDpcXHRyYyA9IHBoeV9hdHRhY2hfZGlyZWN0KGRldiwgcGh5ZGV2LCBwaHlkZXYtXFx1MDAzZWRldl9mbGFncywgaW50ZXJmYWNlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEyMzUtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xNzQzPXN0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTc0OS0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE3NTA6ICogcGh5X2F0dGFjaF9kaXJlY3QgLSBhdHRhY2ggYSBuZXR3b3JrIGRldmljZSB0byBhIGdpdmVuIFBIWSBkZXZpY2UgcG9pbnRlclxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTc1MS0gKiBAZGV2OiBuZXR3b3JrIGRldmljZSB0byBhdHRhY2hcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTc2My0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE3NjQ6aW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xNzY1LVxcdFxcdCAgICAgIHUzMiBmbGFncywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTkxOS19XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxOTIwOkVYUE9SVF9TWU1CT0wocGh5X2F0dGFjaF9kaXJlY3QpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTkyMS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTkyNi0gKiBUaGlzIGRldGFjaGVzIHRoZSBwaHkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlIGFuZCB0aGUgcGh5XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxOTI3OiAqIGRyaXZlciwgYW5kIGRyb3BzIHRoZSByZWZlcmVuY2UgY291bnQgdGFrZW4gaW4gcGh5X2F0dGFjaF9kaXJlY3QoKS5cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE5MjgtICovXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMjE9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjM0LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjIzNTpcXHRyZXR1cm4gcGh5X2F0dGFjaF9kaXJlY3QocGwtXFx1MDAzZW5ldGRldiwgcGh5LCBmbGFncywgaW50ZXJmYWNlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyMzYtfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjQzLSAqIENvbm5lY3QgQHBoeSB0byB0aGUgcGh5bGluayBpbnN0YW5jZSBzcGVjaWZpZWQgYnkgQHBsIGJ5IGNhbGxpbmdcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNDQ6ICogcGh5X2F0dGFjaF9kaXJlY3QoKS4gQ29uZmlndXJlIHRoZSBAcGh5IGFjY29yZGluZyB0byB0aGUgTUFDIGRyaXZlcidzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjQ1LSAqIGNhcGFiaWxpdGllcywgc3RhcnQgdGhlIFBIWUxJQiBzdGF0ZSBtYWNoaW5lIGFuZCBlbmFibGUgYW55IGludGVycnVwdHNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjMwNT1pbnQgcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3Qoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzM4LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjMzOTpcXHRyZXQgPSBwaHlfYXR0YWNoX2RpcmVjdChwbC1cXHUwMDNlbmV0ZGV2LCBwaHlfZGV2LCBmbGFncyxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNDAtXFx0XFx0XFx0XFx0cGwtXFx1MDAzZWxpbmtfaW50ZXJmYWNlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMjE6NDg6MzUuMjUxMzI2MDUyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTc3NzUwODgyNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBQSFkgRGV2aWNlIEltcGxlbWVudGF0aW9ucyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGRyaXZlcnMgaW4gdGhlIGtlcm5lbCB1dGlsaXplIGBwaHlsaW5rYCBvciBgcGh5X2RldmljZWAsIGFuZCBtb3JlIGltcG9ydGFudGx5LCB3aGljaCBvZiB0aGVtIG1pZ2h0IGxlbmQgdGhlbXNlbHZlcyB0byB0ZXN0aW5nIHdpdGhpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQuIEknbSB0aGlua2luZyBRRU1VLCBtYXliZSBhIGR1bW15IHNldHVwLCBuZXRsaW5rLCBvciBldmVuIHN5emthbGxlciBjb3VsZCBiZSB1c2VmdWwgaGVyZS4gVGhlIGtleSBpcyBmaW5kaW5nIHRlc3RhYmxlIHRhcmdldHMuXG5cbkZpcnN0LCBJIHNob3VsZCBjaGVjayBmb3IgYW55IGV4aXN0aW5nIHZpcnR1YWwgUEhZIGRldmljZXMuIEFyZSB0aGVyZSBhbnkgZHJpdmVycyB0aGF0IHNpbXVsYXRlIGEgUEhZPyBPciBtYXliZSBVU0IgbmV0d29yayBkcml2ZXJzLCBzb21ldGhpbmcgbGlrZSBgY2RjX25jbWAgb3IgYHVzYm5ldGA/IFdoYXQgYWJvdXQgYSBEU0EgbG9vcGJhY2sgb3IgbW9jayBNRElPPyBBbmQsIGNydWNpYWxseSwgY2FuIEkgbGV2ZXJhZ2UgUUVNVSdzIGVtdWxhdGVkIGhhcmR3YXJlLCBsaWtlIHRoZSBgZTEwMDBgIG9yIGBpZ2JgIGV0aGVybmV0IGNvbnRyb2xsZXJzPyBEbyB0aG9zZSB1c2UgYHBoeWxpbmtgIG9yIGBwaHlsaWJgIGludGVybmFsbHk/IFRoYXQncyBhIGh1Z2UgcXVlc3Rpb24gSSBuZWVkIHRvIGFuc3dlci5cblxuVG8gbWFrZSBwcm9ncmVzcywgSSdsbCBzdGFydCBieSBzeXN0ZW1hdGljYWxseSBzZWFyY2hpbmcgZm9yIHVzYWdlcyBvZiBrZXkgZnVuY3Rpb25zLiBMZXQncyBzZWUgd2hpY2ggZHJpdmVycyBhcmUgY2FsbGluZyBgcGh5X2Nvbm5lY3RgLCBgcGh5X2F0dGFjaGAsIGBwaHlsaW5rX2NyZWF0ZWAsIGBwaHlsaW5rX2Nvbm5lY3RfcGh5YCwgYW5kIGBtZGlvYnVzX3JlZ2lzdGVyYC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHdoaWNoIHBhcnRzIG9mIHRoZSBjb2RlYmFzZSBhcmUgbW9zdCByZWxldmFudCBhbmQgcG9pbnQgbWUgdG93YXJkcyBwb3RlbnRpYWwgY2FuZGlkYXRlcyBmb3IgdmlydHVhbGl6YXRpb24gYW5kIHRlc3RpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5ODQ2LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDIxOjQ5OjMzLjAyNjQxNjE2MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjU0MDc1ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5bGlua19jcmVhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYz0xMTI4PXN0YXRpYyBpbnQgYWx0ZXJhX3RzZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE0MTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jOjE0MTY6XFx0cHJpdi1cXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTQxNy1cXHRcXHRcXHRcXHQgICAgICAgb2ZfZndub2RlX2hhbmRsZShwcml2LVxcdTAwM2VkZXZpY2UtXFx1MDAzZW9mX25vZGUpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYz0xMDc0PXN0YXRpYyBpbnQgYWc3MXh4X3BoeWxpbmtfc2V0dXAoc3RydWN0IGFnNzF4eCAqYWcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTExMDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoxMTA5OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2YWctXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBhZy1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTExMTAtXFx0XFx0XFx0XFx0IGFnLVxcdTAwM2VwaHlfaWZfbW9kZSwgXFx1MDAyNmFnNzF4eF9waHlsaW5rX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMDIzPXN0YXRpYyBpbnQgbWFjYl9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEwODY6XFx0YnAtXFx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2YnAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBicC1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwODctXFx0XFx0XFx0XFx0ICAgICBicC1cXHUwMDNlcGh5X2ludGVyZmFjZSwgXFx1MDAyNm1hY2JfcGh5bGlua19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYz0yMDE9c3RhdGljIGludCBkcGFhX25ldGRldl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0yNzQtXFx0bWFjX2Rldi1cXHUwMDNldXBkYXRlX3NwZWVkID0gZHBhYV9ldGhfY2dyX3NldF9zcGVlZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jOjI3NTpcXHRtYWNfZGV2LVxcdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNm1hY19kZXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmMtMjc2LVxcdFxcdFxcdFxcdFxcdCAgZGV2X2Z3bm9kZShtYWNfZGV2LVxcdTAwM2VkZXYpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jPTU2MD1pbnQgZHBhYTJfbWFjX2Nvbm5lY3Qoc3RydWN0IGRwYWEyX21hYyAqbWFjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM6NjI1OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2bWFjLVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNjI2LVxcdFxcdFxcdFxcdCBkcG1hY19ub2RlLCBtYWMtXFx1MDAzZWlmX21vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9OTMxPXN0YXRpYyBpbnQgZW5ldGM0X2xpbmtfaW5pdChzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTUwOlxcdGVyciA9IGVuZXRjX3BoeWxpbmtfY3JlYXRlKHByaXYsIG5vZGUsIFxcdTAwMjZlbmV0Y19wbF9tYWNfb3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTUxLVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTUyLVxcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIGNyZWF0ZSBwaHlsaW5rXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTUzOlxcdFxcdGdvdG8gZXJyX3BoeWxpbmtfY3JlYXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05NTQtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTU4OmVycl9waHlsaW5rX2NyZWF0ZTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTU5LVxcdGVuZXRjX21kaW9idXNfZGVzdHJveShwZik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYz03OTU9c3RhdGljIGludCBlbmV0Y19wZl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTg3Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo4Nzg6XFx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXFx1MDAyNmVuZXRjX21hY19waHlsaW5rX29wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtODc5LVxcdGlmIChlcnIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6ODgwOlxcdFxcdGdvdG8gZXJyX3BoeWxpbmtfY3JlYXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTg4MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTg4OS1cXHRlbmV0Y19waHlsaW5rX2Rlc3Ryb3kocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6ODkwOmVycl9waHlsaW5rX2NyZWF0ZTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy04OTEtXFx0ZW5ldGNfbWRpb2J1c19kZXN0cm95KHBmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz00MTk9RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfbWRpb2J1c19kZXN0cm95KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtNDIwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzo0MjE6aW50IGVuZXRjX3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtNDIyLVxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpvcHMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtNDYxLVxcdHBmLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzID0gbWFjX2NhcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjQ2MjpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBmLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgb2ZfZndub2RlX2hhbmRsZShub2RlKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtNDYzLVxcdFxcdFxcdFxcdCBwZi1cXHUwMDNlaWZfbW9kZSwgb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy00NzItfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzo0NzM6RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfcGh5bGlua19jcmVhdGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy00NzQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmg9MTI9dm9pZCBlbmV0Y19tZGlvYnVzX2Rlc3Ryb3koc3RydWN0IGVuZXRjX3BmICpwZik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oOjEzOmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oLTE0LVxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpvcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmM9ODUzPXN0YXRpYyBpbnQgZnNfZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQtbWFpbi5jLTkzMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYzo5MzM6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZmZXAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKGZlcC1cXHUwMDNlZGV2KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYy05MzQtXFx0XFx0XFx0XFx0IHBoeV9tb2RlLCBcXHUwMDI2ZnNfZW5ldF9waHlsaW5rX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmM9MzQxOT1zdGF0aWMgaW50IHVjY19nZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UqIG9mZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmMtMzU3My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGguYzozNTc0OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2dWdldGgtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKFxcdTAwMjZkZXYtXFx1MDAzZWRldiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmMtMzU3NS1cXHRcXHRcXHRcXHQgcGh5X2ludGVyZmFjZSwgXFx1MDAyNnVnZXRoX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm5ldGEuYz01NDgwPXN0YXRpYyBpbnQgbXZuZXRhX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jLTU1OTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm5ldGEuYzo1NTk5OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBwZGV2LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmMtNTYwMC1cXHRcXHRcXHRcXHQgcGh5X21vZGUsIFxcdTAwMjZtdm5ldGFfcGh5bGlua19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmM9Njg0MD1zdGF0aWMgaW50IG12cHAyX3BvcnRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTcxNDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmM6NzE0ODpcXHRcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBvcnQtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBwb3J0X2Z3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy03MTQ5LVxcdFxcdFxcdFxcdFxcdCBwaHlfbW9kZSwgXFx1MDAyNm12cHAyX3BoeWxpbmtfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jPTM3MD1zdGF0aWMgaW50IHByZXN0ZXJhX3BvcnRfc2ZwX2JpbmQoc3RydWN0IHByZXN0ZXJhX3BvcnQgKnBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYy00MTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9tYWluLmM6NDE3OlxcdFxcdHBoeV9saW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBvcnQtXFx1MDAzZXBoeV9jb25maWcsIGZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYy00MTgtXFx0XFx0XFx0XFx0XFx0ICBQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jPTQ4MjQ9c3RhdGljIGludCBtdGtfYWRkX21hYyhzdHJ1Y3QgbXRrX2V0aCAqZXRoLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy00OTY4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM6NDk2OTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNm1hYy1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy00OTcwLVxcdFxcdFxcdFxcdCBvZl9md25vZGVfaGFuZGxlKG1hYy1cXHUwMDNlb2Zfbm9kZSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jPTc0Nj1zdHJ1Y3QgbmV0X2RldmljZSAqZmJuaWNfbmV0ZGV2X2FsbG9jKHN0cnVjdCBmYm5pY19kZXYgKmZiZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmM6ODM1OlxcdGlmIChmYm5pY19waHlsaW5rX2NyZWF0ZShuZXRkZXYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy04MzYtXFx0XFx0ZnJlZV9uZXRkZXYobmV0ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2Lmg9MTExPWludCBmYm5pY19waHlsaW5rX2dldF9mZWNwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmgtMTEyLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNwYXJhbSAqZmVjcGFyYW0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2Lmg6MTEzOmludCBmYm5pY19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oLTExNC12b2lkIGZibmljX3BoeWxpbmtfZGVzdHJveShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jPTE3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBmYm5pY19waHlsaW5rX21hY19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0xODYtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MTg3OiAqIGZibmljX3BoeWxpbmtfY3JlYXRlIC0gUGh5bGluayBkZXZpY2UgY3JlYXRpb25cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0xODgtICogQG5ldGRldjogTmV0d29yayBEZXZpY2Ugc3RydWN0IHRvIGF0dGFjaCBwaHlsaW5rIGRldmljZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTk2LSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYzoxOTc6aW50IGZibmljX3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTk4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTIzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYzoyMzI6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZmYm4tXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBOVUxMLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTIzMy1cXHRcXHRcXHRcXHQgZmJuaWNfcGh5bGlua19zZWxlY3RfaW50ZXJmYWNlKGZibi1cXHUwMDNlYXVpKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0zMTUyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGxhbjc0M3hfcGh5bGlua19tYWNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxNTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjMxNjA6c3RhdGljIGludCBsYW43NDN4X3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxNjEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMyMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjMyMTI6XFx0cGwgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2YWRhcHRlci1cXHUwMDNlcGh5bGlua19jb25maWcsIE5VTEwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMyMTMtXFx0XFx0XFx0ICAgIGFkYXB0ZXItXFx1MDAzZXBoeV9pbnRlcmZhY2UsIFxcdTAwMjZsYW43NDN4X3BoeWxpbmtfbWFjX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzY5MT1zdGF0aWMgaW50IGxhbjc0M3hfcGNpZGV2X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3NTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjM3NTE6XFx0cmV0ID0gbGFuNzQzeF9waHlsaW5rX2NyZWF0ZShhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzc1Mi1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmM9NzkxPXN0YXRpYyBpbnQgbGFuOTY2eF9wcm9iZV9wb3J0KHN0cnVjdCBsYW45NjZ4ICpsYW45NjZ4LCB1MzIgcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTg1NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYzo4NTY6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwb3J0LVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYy04NTctXFx0XFx0XFx0XFx0IHBvcnRucCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYz0zMTI9c3RhdGljIGludCBzcGFyeDVfY3JlYXRlX3BvcnQoc3RydWN0IHNwYXJ4NSAqc3Bhcng1LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jLTM4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM6Mzg5OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2c3B4NV9wb3J0LVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMzkwLVxcdFxcdFxcdFxcdCBvZl9md25vZGVfaGFuZGxlKGNvbmZpZy1cXHUwMDNlbm9kZSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYz0xNzc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIG9jZWxvdF9waHlsaW5rX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3NzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTc4MDpzdGF0aWMgaW50IG9jZWxvdF9wb3J0X3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdCwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTc4MS1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnRucClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4MjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTgyMTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnByaXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4MjItXFx0XFx0XFx0XFx0IG9mX2Z3bm9kZV9oYW5kbGUocG9ydG5wKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jPTE4NDM9aW50IG9jZWxvdF9wcm9iZV9wb3J0KHN0cnVjdCBvY2Vsb3QgKm9jZWxvdCwgaW50IHBvcnQsIHN0cnVjdCByZWdtYXAgKnRhcmdldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4NzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTg4MDpcXHRlcnIgPSBvY2Vsb3RfcG9ydF9waHlsaW5rX2NyZWF0ZShvY2Vsb3QsIHBvcnQsIHBvcnRucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTg4MS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xMzc0PXN0YXRpYyBpbnQgc3RtbWFjX3BoeWxpbmtfc2V0dXAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNDY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTQ2NjpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBkZXZfZndub2RlKHByaXYtXFx1MDAzZWRldmljZSksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNDY3LVxcdFxcdFxcdFxcdCBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VwaHlfaW50ZXJmYWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmM9NDU9aW50IHRuNDBfcGh5X3JlZ2lzdGVyKHN0cnVjdCB0bjQwX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MF9waHkuYy02Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MF9waHkuYzo2MzpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBQSFlfSU5URVJGQUNFX01PREVfWEFVSSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MF9waHkuYy02NC1cXHRcXHRcXHRcXHQgXFx1MDAyNnRuNDBfbWFjX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jPTI3NTk9YW02NV9jcHN3X251c3NfaW5pdF9wb3J0X25kZXYoc3RydWN0IGFtNjVfY3Bzd19jb21tb24gKmNvbW1vbiwgdTMyIHBvcnRfaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYy0yODQzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmM6Mjg0NDpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBvcnQtXFx1MDAzZXNsYXZlLnBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMjg0NS1cXHRcXHRcXHRcXHQgb2ZfZndub2RlX2hhbmRsZShwb3J0LVxcdTAwM2VzbGF2ZS5wb3J0X25wKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYz0xMzA9c3RhdGljIGludCBuZ2JlX3BoeWxpbmtfaW5pdChzdHJ1Y3Qgd3ggKnd4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jLTE0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tZGlvLmM6MTUwOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIE5VTEwsIHBoeV9tb2RlLCBcXHUwMDI2bmdiZV9tYWNfb3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tZGlvLmMtMTUxLVxcdGlmIChJU19FUlIocGh5bGluaykpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jPTQ4Mj1pbnQgdHhnYmVfcGh5bGlua19pbml0X2FtbChzdHJ1Y3QgdHhnYmUgKnR4Z2JlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYy01MTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYzo1MTM6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgTlVMTCwgcGh5X21vZGUsIFxcdTAwMjZ0eGdiZV9tYWNfb3BzX2FtbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYy01MTQtXFx0aWYgKElTX0VSUihwaHlsaW5rKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmM9MjY4PXN0YXRpYyBpbnQgdHhnYmVfcGh5bGlua19pbml0KHN0cnVjdCB0eGdiZSAqdHhnYmUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTI5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jOjI5MzpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBmd25vZGUsIHBoeV9tb2RlLCBcXHUwMDI2dHhnYmVfbWFjX29wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYy0yOTQtXFx0aWYgKElTX0VSUihwaHlsaW5rKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM9Mjc5NT1zdGF0aWMgaW50IGF4aWVuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzEyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMxMjE6XFx0bHAtXFx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2bHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBwZGV2LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzEyMi1cXHRcXHRcXHRcXHQgICAgIGxwLVxcdTAwM2VwaHlfbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzEyNS1cXHRcXHRyZXQgPSBQVFJfRVJSKGxwLVxcdTAwM2VwaHlsaW5rKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMxMjY6XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwicGh5bGlua19jcmVhdGUgZXJyb3IgKCVpKVxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjctXFx0XFx0Z290byBjbGVhbnVwX21kaW87XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTUxNT1zdGF0aWMgaW50IHBoeWxpbmtfdmFsaWRhdGVfbWFjX2FuZF9wY3Moc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzAtXFx0aWYgKHBjcykge1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NTMxOlxcdFxcdC8qIFRoZSBQQ1MsIGlmIHByZXNlbnQsIG11c3QgYmUgc2V0dXAgYmVmb3JlIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTUzMi1cXHRcXHQgKiBoYXMgYmVlbiBjYWxsZWQuIElmIHRoZSBvcHMgaXMgbm90IGluaXRpYWxpc2VkLCBwcmludCBhblxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM4PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNzAtICogcGh5bGlua19wY3NfbmVnX21vZGUoKSAtIGhlbHBlciB0byBkZXRlcm1pbmUgUENTIGluYmFuZCBtb2RlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDcxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA3Mi0gKiBAcGNzOiBhIHBvaW50ZXIgdG8gXFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xNzY4PXN0YXRpYyBpbnQgcGh5bGlua19yZWdpc3Rlcl9zZnAoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzkyLSAqIHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmsoKSAtIHNldCB0aGUgZml4ZWQgbGlua1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTc5MzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3OTQtICogQHN0YXRlOiBhIHBvaW50ZXIgdG8gYSBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xODMwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmspO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODMyLS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgzMzogKiBwaHlsaW5rX2NyZWF0ZSgpIC0gY3JlYXRlIGEgcGh5bGluayBpbnN0YW5jZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzNC0gKiBAY29uZmlnOiBhIHBvaW50ZXIgdG8gdGhlIHRhcmdldCBcXHUwMDI2c3RydWN0IHBoeWxpbmtfY29uZmlnXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NDctICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODQ4OnN0cnVjdCBwaHlsaW5rICpwaHlsaW5rX2NyZWF0ZShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NDktXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MzUtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkzNjpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2NyZWF0ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM3LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM5LSAqIHBoeWxpbmtfZGVzdHJveSgpIC0gY2xlYW51cCBhbmQgZGVzdHJveSB0aGUgcGh5bGluayBpbnN0YW5jZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTk0MDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NDEtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTk1Nj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2Rlc3Ryb3kpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTU5LSAqIHBoeWxpbmtfZXhwZWN0c19waHkoKSAtIERldGVybWluZSBpZiBwaHlsaW5rIGV4cGVjdHMgYSBwaHkgdG8gYmUgYXR0YWNoZWRcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5NjA6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTYxLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMjE9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjM5LSAqIHBoeWxpbmtfY29ubmVjdF9waHkoKSAtIGNvbm5lY3QgYSBQSFkgdG8gdGhlIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNDA6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjQxLSAqIEBwaHk6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5X2RldmljZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjI3Mz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2Nvbm5lY3RfcGh5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI3Ni0gKiBwaHlsaW5rX29mX3BoeV9jb25uZWN0KCkgLSBjb25uZWN0IHRoZSBQSFkgc3BlY2lmaWVkIGluIHRoZSBEVCBtb2RlLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI3NzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNzgtICogQGRuOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGRldmljZV9ub2RlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMjkyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjk1LSAqIHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KCkgLSBjb25uZWN0IHRoZSBQSFkgc3BlY2lmaWVkIGluIHRoZSBmd25vZGUuXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjk2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI5Ny0gKiBAZndub2RlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGZ3bm9kZV9oYW5kbGUuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzNTE9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzU1LSAqICAgaW5zdGFuY2UuXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzU2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM1Ny0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzc5PXN0YXRpYyB2b2lkIHBoeWxpbmtfbGlua19jaGFuZ2VkKHN0cnVjdCBwaHlsaW5rICpwbCwgYm9vbCB1cCwgY29uc3QgY2hhciAqd2hhdClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM4OC0gKiBwaHlsaW5rX21hY19jaGFuZ2UoKSAtIG5vdGlmeSBwaHlsaW5rIG9mIGEgY2hhbmdlIGluIE1BQyBzdGF0ZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjM4OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzOTAtICogQHVwOiBpbmRpY2F0ZXMgd2hldGhlciB0aGUgbGluayBpcyBjdXJyZW50bHkgdXAuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0MjE9c3RhdGljIGlycXJldHVybl90IHBoeWxpbmtfbGlua19oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0MzEtICogcGh5bGlua19zdGFydCgpIC0gc3RhcnQgYSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNDMyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQzMy0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDk0PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3RhcnQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDk3LSAqIHBoeWxpbmtfc3RvcCgpIC0gc3RvcCBhIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0OTg6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDk5LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1Mjg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zdG9wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUzMS0gKiBwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKCkgLSBibG9jayBQSFkgYWJpbGl0eSB0byBzdG9wIHJlY2VpdmUgY2xvY2sgaW4gTFBJXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTMyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUzMy0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNTU3PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTYwLSAqIHBoeWxpbmtfcnhfY2xrX3N0b3BfdW5ibG9jaygpIC0gdW5ibG9jayBQSFkgYWJpbGl0eSB0byBzdG9wIHJlY2VpdmUgY2xvY2tcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI1NjE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTYyLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1OTk9c3RhdGljIGJvb2wgcGh5bGlua19waHlfcG1fc3BlZWRfY3RybChzdHJ1Y3QgcGh5bGluayAqcGwpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MDYtICogcGh5bGlua19zdXNwZW5kKCkgLSBoYW5kbGUgYSBuZXR3b3JrIGRldmljZSBzdXNwZW5kIGV2ZW50XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjA3OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjYwOC0gKiBAbWFjX3dvbDogdHJ1ZSBpZiB0aGUgTUFDIG5lZWRzIHRvIHJlY2VpdmUgcGFja2V0cyBmb3IgV2FrZS1vbi1MYW5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjY1OD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N1c3BlbmQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjYxLSAqIHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUoKSAtIHByZXBhcmUgdG8gcmVzdW1lIGEgbmV0d29yayBkZXZpY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2NjI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjYzLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI2ODM9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19wcmVwYXJlX3Jlc3VtZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2ODYtICogcGh5bGlua19yZXN1bWUoKSAtIGhhbmRsZSBhIG5ldHdvcmsgZGV2aWNlIHJlc3VtZSBldmVudFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjY4NzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2ODgtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjcyNj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Jlc3VtZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3MjktICogcGh5bGlua19ldGh0b29sX2dldF93b2woKSAtIGdldCB0aGUgd2FrZSBvbiBsYW4gcGFyYW1ldGVycyBmb3IgdGhlIFBIWVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjczMDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3MzEtICogQHdvbDogYSBwb2ludGVyIHRvIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF93b2xpbmZvIHRvIGhvbGQgdGhlIHJlYWQgcGFyYW1ldGVyc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNzYzPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfd29sKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjc2Ni0gKiBwaHlsaW5rX2V0aHRvb2xfc2V0X3dvbCgpIC0gc2V0IHdha2Ugb24gbGFuIHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI3Njc6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzY4LSAqIEB3b2w6IGEgcG9pbnRlciB0byBcXHUwMDI2c3RydWN0IGV0aHRvb2xfd29saW5mbyBmb3IgdGhlIGRlc2lyZWQgcGFyYW1ldGVyc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yODk1PXN0YXRpYyB2b2lkIHBoeWxpbmtfZ2V0X2tzZXR0aW5ncyhjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjkxMC0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCgpIC0gZ2V0IHRoZSBjdXJyZW50IGxpbmsgc2V0dGluZ3NcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5MTE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTEyLSAqIEBrc2V0OiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgdG8gaG9sZCBsaW5rIHNldHRpbmdzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI5NjM9c3RhdGljIGJvb2wgcGh5bGlua192YWxpZGF0ZV9wY3NfaW5iYW5kX2F1dG9uZWcoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTg0LSAqIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KCkgLSBzZXQgdGhlIGxpbmsgc2V0dGluZ3NcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5ODU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTg2LSAqIEBrc2V0OiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgZm9yIHRoZSBkZXNpcmVkIG1vZGVzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMxNTE9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTU0LSAqIHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KCkgLSByZXN0YXJ0IG5lZ290aWF0aW9uXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTU1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE1Ni0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTc2PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE3OS0gKiBwaHlsaW5rX2V0aHRvb2xfZ2V0X3BhdXNlcGFyYW0oKSAtIGdldCB0aGUgY3VycmVudCBwYXVzZSBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTgwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE4MS0gKiBAcGF1c2U6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMxOTI9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE5NS0gKiBwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0oKSAtIHNldCB0aGUgY3VycmVudCBwYXVzZSBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTk2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE5Ny0gKiBAcGF1c2U6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMyNzg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI4Mi0gKiAgIGNvdW50ZXJcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMyODM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI4NC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMzAxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZ2V0X2VlZV9lcnIpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzA0LSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfZWVlKCkgLSByZWFkIHRoZSBlbmVyZ3kgZWZmaWNpZW50IGV0aGVybmV0IHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMzMDU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzA2LSAqIEBlZWU6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9rZWVlIGZvciB0aGUgcmVhZCBwYXJhbWV0ZXJzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMzMjc9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2dldF9lZWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzMwLSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfZWVlKCkgLSBzZXQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzMzMTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMzItICogQGVlZTogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX2tlZWUgZm9yIHRoZSBkZXNpcmVkIHBhcmFtZXRlcnNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzUwMT1zdGF0aWMgaW50IHBoeWxpbmtfbWlpX3dyaXRlKHN0cnVjdCBwaHlsaW5rICpwbCwgdW5zaWduZWQgaW50IHBoeV9pZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzUxOS0gKiBwaHlsaW5rX21paV9pb2N0bCgpIC0gZ2VuZXJpYyBtaWkgaW9jdGwgaW50ZXJmYWNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTIwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzUyMS0gKiBAaWZyOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGlmcmVxIGZvciBzb2NrZXQgaW9jdGxzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM1OTQ9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19taWlfaW9jdGwpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTk4LSAqICAgbGluayBwYXJ0bmVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzU5OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM2MDAtICogQHN5bmM6IHBlcmZvcm0gYWN0aW9uIHN5bmNocm9ub3VzbHlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzYxOT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NwZWVkX2Rvd24pO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNjIzLSAqICAgcGh5bGlua19zcGVlZF9kb3duKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM2MjQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNjI1LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTQzNzg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19taWlfYzQ1X3Bjc19nZXRfc3RhdGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MzgyLSAqXFx0XFx0XFx0XFx0IHdoaWNoIGxvc2VzIHN0YXRlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0MzgzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM4NC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00Mzk5PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcmVwbGF5X2xpbmtfYmVnaW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00NDAzLSAqXFx0XFx0XFx0ICAgICAgIHdoaWNoIGxvc3Qgc3RhdGVcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQ0MDQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00NDA1LSAqXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9Nzk5PXN0YXRpYyBpbnQgYXg4ODc3Ml9waHlsaW5rX3NldHVwKHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTktXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgyMDpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnByaXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXYtXFx1MDAzZW5ldC1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODIxLVxcdFxcdFxcdFxcdCBwaHlfaWZfbW9kZSwgXFx1MDAyNmF4ODg3NzJfcGh5bGlua19tYWNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9Mjc5OT1zdGF0aWMgaW50IGxhbjc4eHhfcGh5bGlua19zZXR1cChzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjgzOC1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4Mzk6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKHBjLCBkZXYtXFx1MDAzZW5ldC1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4NDAtXFx0XFx0XFx0XFx0IGRldi1cXHUwMDNlaW50ZXJmYWNlLCBcXHUwMDI2bGFuNzh4eF9waHlsaW5rX21hY19vcHMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo0OTozMy42OTE4Mjk4NDJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNDIyOTYxNzU2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFuYWx5c2lzIG9mIHRoZSBOZXR3b3JrIERyaXZlciBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJJ20gc2VlaW5nIGEgcGF0dGVybiBoZXJlLiBMb29raW5nIGF0IHRoZXNlIG5ldHdvcmsgZHJpdmVyIGltcGxlbWVudGF0aW9ucyDigJMgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmNgLCBgbGFuNzh4eC5jYCwgYW5kIHRoZSB3aG9sZSBgZHJpdmVycy9uZXQvZHNhL2AgZGlyZWN0b3J5LCBpbmNsdWRpbmcgdGhhdCBgZHNhX2xvb3AuY2AgZXhhbXBsZSDigJMgaXQncyBjbGVhciB0aGV5J3JlIGxldmVyYWdpbmcgcGh5bGluay4gVGhhdCdzIGEgc29saWQgYXJjaGl0ZWN0dXJhbCBjaG9pY2UsIGFuZCBpdCdzIHNvbWV0aGluZyBJJ3ZlIGJlZW4ga2VlcGluZyBhbiBleWUgb24uIEFuZCwgb2YgY291cnNlLCB0aGUgbWVudGlvbiBvZiBVU0IgZGV2aWNlcyB1c2luZyBnYWRnZXQgZW11bGF0aW9uIHRocm91Z2ggc3l6a2FsbGVyIG9wZW5zIHVwIHNvbWUgZmFzY2luYXRpbmcgdGVzdGluZyBwb3NzaWJpbGl0aWVzIHZpYSByYXctZ2FkZ2V0IGFuZCB2dXNiLlxuXG5UaGUgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGRvd24gaW50byB0aGUgcGF0Y2ggY2hhbmdlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoeSogdGhleSBhZG9wdGVkIHBoeWxpbmsgYW5kIHdoYXQgc3BlY2lmaWMgcHJvYmxlbSB0aGV5IHdlcmUgYWRkcmVzc2luZywgb3Igd2hhdCBuZXcgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiBhZGRlZC4gVGhhdCByZXF1aXJlcyBhIGNhcmVmdWwgZXhhbWluYXRpb24gb2YgdGhlIGRpZmZzLlxuXG5Ob3csIHRvIGdldCBhIGRlZXBlciBoYW5kbGUgb24gdGhlIHBoeWxpbmsgaW50ZXJuYWxzIHRoZW1zZWx2ZXMsIEkgbmVlZCB0byBicnVzaCB1cCBvbiBteSBrbm93bGVkZ2Ugb2YgdGhlIHBoeS9waHlsaW5rIGFyY2hpdGVjdHVyZS4gSSdtIGdvaW5nIHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AgZnJvbSBhcm91bmQgbGluZXMgMTczMCB0byAxOTgwIGFuZCBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AgZnJvbSBsaW5lcyAyMDgwIHRvIDIzNzAuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBncmFzcCBvZiB0aGUgY29yZSBjb25jZXB0cywgZGF0YSBzdHJ1Y3R1cmVzLCBhbmQgdGhlIGNvbW11bmljYXRpb24gZmxvdyBiZXR3ZWVuIHRoZSBQSFkgYW5kIHRoZSBuZXR3b3JrIGRyaXZlci4gVGhpcyBzaG91bGQgYWxsb3cgbWUgdG8gdW5kZXJzdGFuZCBob3cgdGhvc2UgZGV2aWNlIGRyaXZlcnMgYXJlIHVzaW5nIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTI3NCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo1MDowNy45MjE0NDk4MDJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc0ODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTczMCxcbiAgXCJMaW5lQ291bnRcIjogNzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTczMDpcXHR9XFxuMTczMTpcXHRcXG4xNzMyOlxcdHN0YXRpYyBib29sIHBoeV9kcnZfc3VwcG9ydHNfaXJxKGNvbnN0IHN0cnVjdCBwaHlfZHJpdmVyICpwaHlkcnYpXFxuMTczMzpcXHR7XFxuMTczNDpcXHRcXHRyZXR1cm4gcGh5ZHJ2LVxcdTAwM2Vjb25maWdfaW50ciBcXHUwMDI2XFx1MDAyNiBwaHlkcnYtXFx1MDAzZWhhbmRsZV9pbnRlcnJ1cHQ7XFxuMTczNTpcXHR9XFxuMTczNjpcXHRcXG4xNzM3OlxcdC8qIEdpdmUgYmFjayB0aGUgaW50ZXJydXB0IHBoeV9wcm9iZSgpIHBhcmtlZCB3aGVuIGEgZHJpdmVyIHdpdGggbm8gaW50ZXJydXB0XFxuMTczODpcXHQgKiBjYWxsYmFja3MgYm91bmQuIG1kaW9idXNfYWxsb2MoKSBkZWZhdWx0cyBidXMtXFx1MDAzZWlycVtdIHRvIFBIWV9QT0xMIGFuZCB0aGVcXG4xNzM5OlxcdCAqIGJpbmQgY3ljbGUgZG9lcyBub3QgdG91Y2ggdGhlIHRhYmxlLCBzbyB3aGF0ZXZlciB0aGUgYnVzIHJlY29yZGVkIHRoZXJlXFxuMTc0MDpcXHQgKiBzdGlsbCBzdGFuZHMuIE9ubHkgdGhlIHBhcmtpbmcgaXMgdW5kb25lOiBhbnkgb3RoZXIgdmFsdWUgdGhlIFBIWSBjYXJyaWVzXFxuMTc0MTpcXHQgKiB3YXMgcHV0IHRoZXJlIGJ5IHNvbWVvbmUgZWxzZS5cXG4xNzQyOlxcdCAqL1xcbjE3NDM6XFx0c3RhdGljIHZvaWQgcGh5X3Jlc3RvcmVfZ2VucGh5X2lycShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbjE3NDQ6XFx0e1xcbjE3NDU6XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlaXJxID09IFBIWV9QT0xMKVxcbjE3NDY6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VpcnEgPSBwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLVxcdTAwM2VpcnFbcGh5ZGV2LVxcdTAwM2VtZGlvLmFkZHJdO1xcbjE3NDc6XFx0fVxcbjE3NDg6XFx0XFxuMTc0OTpcXHQvKipcXG4xNzUwOlxcdCAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcXG4xNzUxOlxcdCAqIEBkZXY6IG5ldHdvcmsgZGV2aWNlIHRvIGF0dGFjaFxcbjE3NTI6XFx0ICogQHBoeWRldjogUG9pbnRlciB0byBwaHlfZGV2aWNlIHRvIGF0dGFjaFxcbjE3NTM6XFx0ICogQGZsYWdzOiBQSFkgZGV2aWNlJ3MgZGV2X2ZsYWdzXFxuMTc1NDpcXHQgKiBAaW50ZXJmYWNlOiBQSFkgZGV2aWNlJ3MgaW50ZXJmYWNlXFxuMTc1NTpcXHQgKlxcbjE3NTY6XFx0ICogRGVzY3JpcHRpb246IENhbGxlZCBieSBkcml2ZXJzIHRvIGF0dGFjaCB0byBhIHBhcnRpY3VsYXIgUEhZXFxuMTc1NzpcXHQgKiAgICAgZGV2aWNlLiBUaGUgcGh5X2RldmljZSBpcyBmb3VuZCwgYW5kIHByb3Blcmx5IGhvb2tlZCB1cFxcbjE3NTg6XFx0ICogICAgIHRvIHRoZSBwaHlfZHJpdmVyLiAgSWYgbm8gZHJpdmVyIGlzIGF0dGFjaGVkLCB0aGVuIGFcXG4xNzU5OlxcdCAqICAgICBnZW5lcmljIGRyaXZlciBpcyB1c2VkLiAgVGhlIHBoeV9kZXZpY2UgaXMgZ2l2ZW4gYSBwdHIgdG9cXG4xNzYwOlxcdCAqICAgICB0aGUgYXR0YWNoaW5nIGRldmljZSwgYW5kIGdpdmVuIGEgY2FsbGJhY2sgZm9yIGxpbmsgc3RhdHVzXFxuMTc2MTpcXHQgKiAgICAgY2hhbmdlLiAgVGhlIHBoeV9kZXZpY2UgaXMgcmV0dXJuZWQgdG8gdGhlIGF0dGFjaGluZyBkcml2ZXIuXFxuMTc2MjpcXHQgKiAgICAgVGhpcyBmdW5jdGlvbiB0YWtlcyBhIHJlZmVyZW5jZSBvbiB0aGUgcGh5IGRldmljZS5cXG4xNzYzOlxcdCAqL1xcbjE3NjQ6XFx0aW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuMTc2NTpcXHRcXHRcXHQgICAgICB1MzIgZmxhZ3MsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuMTc2NjpcXHR7XFxuMTc2NzpcXHRcXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cztcXG4xNzY4OlxcdFxcdHN0cnVjdCBkZXZpY2UgKmQgPSBcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmRldjtcXG4xNzY5OlxcdFxcdHN0cnVjdCBtb2R1bGUgKm5kZXZfb3duZXIgPSBOVUxMO1xcbjE3NzA6XFx0XFx0aW50IGVycjtcXG4xNzcxOlxcdFxcbjE3NzI6XFx0XFx0LyogRm9yIEV0aGVybmV0IGRldmljZSBkcml2ZXJzIHRoYXQgcmVnaXN0ZXIgdGhlaXIgb3duIE1ESU8gYnVzLCB3ZVxcbjE3NzM6XFx0XFx0ICogd2lsbCBoYXZlIGJ1cy1cXHUwMDNlb3duZXIgbWF0Y2ggbmRldl9tb2QsIHNvIHdlIGRvIG5vdCB3YW50IHRvIGluY3JlbWVudFxcbjE3NzQ6XFx0XFx0ICogb3VyIG93biBtb2R1bGUtXFx1MDAzZXJlZmNudCBoZXJlLCBvdGhlcndpc2Ugd2Ugd291bGQgbm90IGJlIGFibGUgdG9cXG4xNzc1OlxcdFxcdCAqIHVubG9hZCBsYXRlciBvbi5cXG4xNzc2OlxcdFxcdCAqL1xcbjE3Nzc6XFx0XFx0aWYgKGRldilcXG4xNzc4OlxcdFxcdFxcdG5kZXZfb3duZXIgPSBkZXYtXFx1MDAzZWRldi5wYXJlbnQtXFx1MDAzZWRyaXZlci1cXHUwMDNlb3duZXI7XFxuMTc3OTpcXHRcXHRpZiAobmRldl9vd25lciAhPSBidXMtXFx1MDAzZW93bmVyIFxcdTAwMjZcXHUwMDI2ICF0cnlfbW9kdWxlX2dldChidXMtXFx1MDAzZW93bmVyKSkge1xcbjE3ODA6XFx0XFx0XFx0cGh5ZGV2X2VycihwaHlkZXYsIFxcXCJmYWlsZWQgdG8gZ2V0IHRoZSBidXMgbW9kdWxlXFxcXG5cXFwiKTtcXG4xNzgxOlxcdFxcdFxcdHJldHVybiAtRUlPO1xcbjE3ODI6XFx0XFx0fVxcbjE3ODM6XFx0XFxuMTc4NDpcXHRcXHRnZXRfZGV2aWNlKGQpO1xcbjE3ODU6XFx0XFxuMTc4NjpcXHRcXHQvKiBBc3N1bWUgdGhhdCBpZiB0aGVyZSBpcyBubyBkcml2ZXIsIHRoYXQgaXQgZG9lc24ndFxcbjE3ODc6XFx0XFx0ICogZXhpc3QsIGFuZCB3ZSBzaG91bGQgdXNlIHRoZSBnZW5waHkgZHJpdmVyLlxcbjE3ODg6XFx0XFx0ICovXFxuMTc4OTpcXHRcXHRpZiAoIWQtXFx1MDAzZWRyaXZlcikge1xcbjE3OTA6XFx0XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlaXNfYzQ1KVxcbjE3OTE6XFx0XFx0XFx0XFx0ZC1cXHUwMDNlZHJpdmVyID0gXFx1MDAyNmdlbnBoeV9jNDVfZHJpdmVyLm1kaW9kcnYuZHJpdmVyO1xcbjE3OTI6XFx0XFx0XFx0ZWxzZVxcbjE3OTM6XFx0XFx0XFx0XFx0ZC1cXHUwMDNlZHJpdmVyID0gXFx1MDAyNmdlbnBoeV9kcml2ZXIubWRpb2Rydi5kcml2ZXI7XFxuMTc5NDpcXHRcXG4xNzk1OlxcdFxcdFxcdHBoeWRldi1cXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDE7XFxuMTc5NjpcXHRcXHR9XFxuMTc5NzpcXHRcXG4xNzk4OlxcdFxcdGlmICghdHJ5X21vZHVsZV9nZXQoZC1cXHUwMDNlZHJpdmVyLVxcdTAwM2Vvd25lcikpIHtcXG4xNzk5OlxcdFxcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwiZmFpbGVkIHRvIGdldCB0aGUgZGV2aWNlIGRyaXZlciBtb2R1bGVcXFxcblxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo1MDowNy45MjE2Mjc2MjJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mzc2OTI5NjkxNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0IGRpdmluZyBpbnRvIHRoZSBjb2RlOlxuXG4qKkRlZXBlciBEaXZlIGludG8gUEhZIERyaXZlciBJbnRlcmFjdGlvbnMqKlxuXG5BbHJpZ2h0LCB0aGUgZGlmZiBpcyBpbnRlcmVzdGluZywgYnV0IEkgbmVlZCBhIG1vcmUgY29tcGxldGUgcGljdHVyZS4gSSdtIGdvaW5nIHRvIHN0YXJ0IGRpZ2dpbmcgaW50byBgcGh5X2RldmljZS5jYCBhbmQgYHBoeWxpbmsuY2AuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGZvY3VzIG9uIHRoZSBjb2RlIGFyb3VuZCB0aGF0IGNoYW5nZS4gSSBrbm93IHRoZXNlIGZpbGVzIGludGltYXRlbHkg4oCTIHRoZXkncmUgdGhlIGhlYXJ0IG9mIGhvdyB3ZSBtYW5hZ2UgdGhlIHBoeXNpY2FsIGxheWVyIGludGVyZmFjZSBhbmQgbGluayBuZWdvdGlhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhpcyBtb2RpZmljYXRpb24gaW1wYWN0cyB0aGUgaW50ZXJhY3Rpb25zIGJldHdlZW4gdGhlc2UgdHdvIGNvcmUgY29tcG9uZW50cy4gV2hhdCBhcmUgdGhlIGRlcGVuZGVuY2llcz8gV2hhdCBzaWRlIGVmZmVjdHMgbWlnaHQgdGhpcyBoYXZlPyBBIGN1cnNvcnkgZ2xhbmNlIGF0IHRoZSBkaWZmIGlzbid0IGVub3VnaDsgSSBuZWVkIHRvIHNlZSB0aGUgY29udGV4dCwgdGhlIGZ1bmN0aW9uIGNhbGxzLCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIG1hbmlwdWxhdGVkLiBUaGlzIGRlZXBlciBkaXZlIHdpbGwgZ2l2ZSBtZSB0aGUgaW5zaWdodCBJIHJlcXVpcmUgdG8gdmFsaWRhdGUgdGhlIGNoYW5nZSBhbmQgdW5kZXJzdGFuZCBhbnkgcG90ZW50aWFsIGltcGxpY2F0aW9ucy4gSSB3YW50IHRvIHNlZSB0aGUgKndoeSogYXMgd2VsbCBhcyB0aGUgKndoYXQqLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgdW5kZXJzdGFuZCB0aGlzIGZ1bGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjk5MCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMjE6NTA6NDUuNjE0NTk5MzgyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjExMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4OTAsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxODkwOlxcdFxcbjE4OTE6XFx0XFx0cGh5X3Jlc3VtZShwaHlkZXYpO1xcbjE4OTI6XFx0XFxuMTg5MzpcXHRcXHQvKipcXG4xODk0OlxcdFxcdCAqIElmIHRoZSBleHRlcm5hbCBwaHkgdXNlZCBieSBjdXJyZW50IG1hYyBpbnRlcmZhY2UgaXMgbWFuYWdlZCBieVxcbjE4OTU6XFx0XFx0ICogYW5vdGhlciBtYWMgaW50ZXJmYWNlLCBzbyB3ZSBzaG91bGQgY3JlYXRlIGEgZGV2aWNlIGxpbmsgYmV0d2VlblxcbjE4OTY6XFx0XFx0ICogcGh5IGRldiBhbmQgbWFjIGRldi5cXG4xODk3OlxcdFxcdCAqL1xcbjE4OTg6XFx0XFx0aWYgKGRldiBcXHUwMDI2XFx1MDAyNiBwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLVxcdTAwM2VwYXJlbnQgXFx1MDAyNlxcdTAwMjYgZGV2LVxcdTAwM2VkZXYucGFyZW50ICE9IHBoeWRldi1cXHUwMDNlbWRpby5idXMtXFx1MDAzZXBhcmVudClcXG4xODk5OlxcdFxcdFxcdHBoeWRldi1cXHUwMDNlZGV2bGluayA9IGRldmljZV9saW5rX2FkZChkZXYtXFx1MDAzZWRldi5wYXJlbnQsIFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LFxcbjE5MDA6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBETF9GTEFHX1BNX1JVTlRJTUUgfCBETF9GTEFHX1NUQVRFTEVTUyk7XFxuMTkwMTpcXHRcXG4xOTAyOlxcdFxcdHJldHVybiBlcnI7XFxuMTkwMzpcXHRcXG4xOTA0OlxcdGVycm9yOlxcbjE5MDU6XFx0XFx0LyogcGh5X2RldGFjaCgpIGRvZXMgYWxsIG9mIHRoZSBjbGVhbnVwIGJlbG93ICovXFxuMTkwNjpcXHRcXHRwaHlfZGV0YWNoKHBoeWRldik7XFxuMTkwNzpcXHRcXHRyZXR1cm4gZXJyO1xcbjE5MDg6XFx0XFxuMTkwOTpcXHRlcnJvcl9tb2R1bGVfcHV0OlxcbjE5MTA6XFx0XFx0bW9kdWxlX3B1dChkLVxcdTAwM2Vkcml2ZXItXFx1MDAzZW93bmVyKTtcXG4xOTExOlxcdFxcdHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEocGh5ZGV2KTtcXG4xOTEyOlxcdFxcdHBoeWRldi1cXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDA7XFxuMTkxMzpcXHRcXHRkLVxcdTAwM2Vkcml2ZXIgPSBOVUxMO1xcbjE5MTQ6XFx0ZXJyb3JfcHV0X2RldmljZTpcXG4xOTE1OlxcdFxcdHB1dF9kZXZpY2UoZCk7XFxuMTkxNjpcXHRcXHRpZiAobmRldl9vd25lciAhPSBidXMtXFx1MDAzZW93bmVyKVxcbjE5MTc6XFx0XFx0XFx0bW9kdWxlX3B1dChidXMtXFx1MDAzZW93bmVyKTtcXG4xOTE4OlxcdFxcdHJldHVybiBlcnI7XFxuMTkxOTpcXHR9XFxuMTkyMDpcXHRFWFBPUlRfU1lNQk9MKHBoeV9hdHRhY2hfZGlyZWN0KTtcXG4xOTIxOlxcdFxcbjE5MjI6XFx0LyoqXFxuMTkyMzpcXHQgKiBwaHlfZGV0YWNoIC0gZGV0YWNoIGEgUEhZIGRldmljZSBmcm9tIGl0cyBuZXR3b3JrIGRldmljZVxcbjE5MjQ6XFx0ICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0XFxuMTkyNTpcXHQgKlxcbjE5MjY6XFx0ICogVGhpcyBkZXRhY2hlcyB0aGUgcGh5IGRldmljZSBmcm9tIGl0cyBuZXR3b3JrIGRldmljZSBhbmQgdGhlIHBoeVxcbjE5Mjc6XFx0ICogZHJpdmVyLCBhbmQgZHJvcHMgdGhlIHJlZmVyZW5jZSBjb3VudCB0YWtlbiBpbiBwaHlfYXR0YWNoX2RpcmVjdCgpLlxcbjE5Mjg6XFx0ICovXFxuMTkyOTpcXHR2b2lkIHBoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4xOTMwOlxcdHtcXG4xOTMxOlxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBwaHlkZXYtXFx1MDAzZWF0dGFjaGVkX2RldjtcXG4xOTMyOlxcdFxcdHN0cnVjdCBtb2R1bGUgKm5kZXZfb3duZXIgPSBOVUxMO1xcbjE5MzM6XFx0XFx0c3RydWN0IG1paV9idXMgKmJ1cztcXG4xOTM0OlxcdFxcbjE5MzU6XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlZGV2bGluaykge1xcbjE5MzY6XFx0XFx0XFx0ZGV2aWNlX2xpbmtfZGVsKHBoeWRldi1cXHUwMDNlZGV2bGluayk7XFxuMTkzNzpcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWRldmxpbmsgPSBOVUxMO1xcbjE5Mzg6XFx0XFx0fVxcbjE5Mzk6XFx0XFxuMTk0MDpcXHRcXHRpZiAocGh5ZGV2LVxcdTAwM2VzeXNmc19saW5rcykge1xcbjE5NDE6XFx0XFx0XFx0aWYgKGRldilcXG4xOTQyOlxcdFxcdFxcdFxcdHN5c2ZzX3JlbW92ZV9saW5rKFxcdTAwMjZkZXYtXFx1MDAzZWRldi5rb2JqLCBcXFwicGh5ZGV2XFxcIik7XFxuMTk0MzpcXHRcXHRcXHRzeXNmc19yZW1vdmVfbGluayhcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmRldi5rb2JqLCBcXFwiYXR0YWNoZWRfZGV2XFxcIik7XFxuMTk0NDpcXHRcXHR9XFxuMTk0NTpcXHRcXG4xOTQ2OlxcdFxcdGlmICghcGh5ZGV2LVxcdTAwM2VhdHRhY2hlZF9kZXYpXFxuMTk0NzpcXHRcXHRcXHRzeXNmc19yZW1vdmVfZmlsZShcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmRldi5rb2JqLFxcbjE5NDg6XFx0XFx0XFx0XFx0XFx0ICBcXHUwMDI2ZGV2X2F0dHJfcGh5X3N0YW5kYWxvbmUuYXR0cik7XFxuMTk0OTpcXHRcXG4xOTUwOlxcdFxcdHBoeV9zdXNwZW5kKHBoeWRldik7XFxuMTk1MTpcXHRcXHRpZiAoZGV2KSB7XFxuMTk1MjpcXHRcXHRcXHRzdHJ1Y3QgaHd0c3RhbXBfcHJvdmlkZXIgKmh3cHJvdjtcXG4xOTUzOlxcdFxcbjE5NTQ6XFx0XFx0XFx0LyogaHdwcm92IG1heSB0ZWNobmljYWxseSBiZSBwcm90ZWN0ZWQgYnkgb3BzIGxvY2sgYnV0XFxuMTk1NTpcXHRcXHRcXHQgKiBub3QgZm9yIGRldmljZXMgd2l0aCBhIHBoeWRldiwgc2VlIHBoeV9saW5rX3RvcG9fYWRkX3BoeSgpXFxuMTk1NjpcXHRcXHRcXHQgKi9cXG4xOTU3OlxcdFxcdFxcdGh3cHJvdiA9IHJ0bmxfZGVyZWZlcmVuY2UoZGV2LVxcdTAwM2Vod3Byb3YpO1xcbjE5NTg6XFx0XFx0XFx0LyogRGlzYWJsZSB0aW1lc3RhbXAgaWYgaXQgaXMgdGhlIG9uZSBzZWxlY3RlZCAqL1xcbjE5NTk6XFx0XFx0XFx0aWYgKGh3cHJvdiBcXHUwMDI2XFx1MDAyNiBod3Byb3YtXFx1MDAzZXBoeWRldiA9PSBwaHlkZXYpIHtcXG4xOTYwOlxcdFxcdFxcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihkZXYtXFx1MDAzZWh3cHJvdiwgTlVMTCk7XFxuMTk2MTpcXHRcXHRcXHRcXHRrZnJlZV9yY3UoaHdwcm92LCByY3VfaGVhZCk7XFxuMTk2MjpcXHRcXHRcXHR9XFxuMTk2MzpcXHRcXG4xOTY0OlxcdFxcdFxcdHBoeWRldi1cXHUwMDNlYXR0YWNoZWRfZGV2LVxcdTAwM2VwaHlkZXYgPSBOVUxMO1xcbjE5NjU6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VhdHRhY2hlZF9kZXYgPSBOVUxMO1xcbjE5NjY6XFx0XFx0XFx0cGh5X2xpbmtfdG9wb19kZWxfcGh5KGRldiwgcGh5ZGV2KTtcXG4xOTY3OlxcdFxcdH1cXG4xOTY4OlxcdFxcbjE5Njk6XFx0XFx0cGh5ZGV2LVxcdTAwM2VwaHlfbGlua19jaGFuZ2UgPSBOVUxMO1xcbjE5NzA6XFx0XFx0cGh5ZGV2LVxcdTAwM2VwaHlsaW5rID0gTlVMTDtcXG4xOTcxOlxcdFxcbjE5NzI6XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlbWRpby5kZXYuZHJpdmVyKVxcbjE5NzM6XFx0XFx0XFx0bW9kdWxlX3B1dChwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LmRyaXZlci1cXHUwMDNlb3duZXIpO1xcbjE5NzQ6XFx0XFxuMTk3NTpcXHRcXHQvKiBJZiB0aGUgZGV2aWNlIGhhZCBubyBzcGVjaWZpYyBkcml2ZXIgYmVmb3JlIChpLmUuIC0gaXRcXG4xOTc2OlxcdFxcdCAqIHdhcyB1c2luZyB0aGUgZ2VuZXJpYyBkcml2ZXIpLCB3ZSB1bmJpbmQgdGhlIGRldmljZVxcbjE5Nzc6XFx0XFx0ICogZnJvbSB0aGUgZ2VuZXJpYyBkcml2ZXIgc28gdGhhdCB0aGVyZSdzIGEgY2hhbmNlIGFcXG4xOTc4OlxcdFxcdCAqIHJlYWwgZHJpdmVyIGNvdWxkIGJlIGxvYWRlZFxcbjE5Nzk6XFx0XFx0ICovXFxuMTk4MDpcXHRcXHRpZiAocGh5ZGV2LVxcdTAwM2Vpc19nZW5waHlfZHJpdmVuKSB7XFxuMTk4MTpcXHRcXHRcXHRwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHBoeWRldik7XFxuMTk4MjpcXHRcXHRcXHRkZXZpY2VfcmVsZWFzZV9kcml2ZXIoXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYpO1xcbjE5ODM6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcXG4xOTg0OlxcdFxcdH1cXG4xOTg1OlxcdFxcbjE5ODY6XFx0XFx0LyogQXNzZXJ0IHRoZSByZXNldCBzaWduYWwgKi9cXG4xOTg3OlxcdFxcdHBoeV9kZXZpY2VfcmVzZXQocGh5ZGV2LCAxKTtcXG4xOTg4OlxcdFxcbjE5ODk6XFx0XFx0LypcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMjE6NTA6NDUuNjE0NzYzMTIyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM3ODAwNzgwNzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkRpdmluZyBEZWVwIGludG8gUEhZTElOSyoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYCBmaWxlLiBTcGVjaWZpY2FsbHksIEknbSB6ZXJvaW5nIGluIG9uIHRoZSBzZWN0aW9uIGFyb3VuZCBsaW5lcyAyMDgwIHRvIDIzNzAuIFRoaXMgYXJlYSBpcyBsaWtlbHkgd2hlcmUgYSBzaWduaWZpY2FudCBwaWVjZSBvZiB0aGUgUEhZTElOSyBmdW5jdGlvbmFsaXR5IHJlc2lkZXMsIHByb2JhYmx5IHJlbGF0ZWQgdG8gYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSBsaW5rIG5lZ290aWF0aW9uIG9yIG1hbmFnZW1lbnQgbG9naWMuIEdpdmVuIHRoZSBzaXplIG9mIHRoYXQgY29kZSBibG9jaywgaXQncyBwcm9iYWJseSBkb2luZyBzb21lIGhlYXZ5IGxpZnRpbmcgaW4gaG93IHRoZSBQSFkgaW50ZXJhY3RzIHdpdGggdGhlIG5ldHdvcmsgc3RhY2suIEkgYW50aWNpcGF0ZSB0aGVyZSB3aWxsIGJlIGEgcmljaCBhbW91bnQgb2YgZGV0YWlsIHRoZXJlIGNvbmNlcm5pbmcgdGhlIG9wZXJhdGlvbmFsIGNvbnRyb2wgb2YgdGhlIFBIWS4gSXQncyB0aW1lIHRvIGdldCBkb3duIHRvIGJ1c2luZXNzIGFuZCBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NzY1LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo1MToyMy40MTU1NDYyODJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcyOTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjE5MCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjE5MDpcXHRcXHRcXHQgICAgX19FVEhUT09MX0xJTktfTU9ERV9NQVNLX05CSVRTLCBwbC1cXHUwMDNlc3VwcG9ydGVkLFxcbjIxOTE6XFx0XFx0XFx0ICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgcGh5LVxcdTAwM2VhZHZlcnRpc2luZyk7XFxuMjE5MjpcXHRcXG4yMTkzOlxcdFxcdGlmIChwbC1cXHUwMDNlY29uZmlnLVxcdTAwM2VtYWNfbWFuYWdlZF9wbSlcXG4yMTk0OlxcdFxcdFxcdHBoeS1cXHUwMDNlbWFjX21hbmFnZWRfcG0gPSB0cnVlO1xcbjIxOTU6XFx0XFxuMjE5NjpcXHRcXHQvKiBBbGxvdyB0aGUgTUFDIHRvIHN0b3AgaXRzIGNsb2NrIGlmIHRoZSBQSFkgaGFzIHRoZSBjYXBhYmlsaXR5ICovXFxuMjE5NzpcXHRcXHRwbC1cXHUwMDNlbWFjX3R4X2Nsa19zdG9wID0gcGh5X2VlZV90eF9jbG9ja19zdG9wX2NhcGFibGUocGh5KSBcXHUwMDNlIDA7XFxuMjE5ODpcXHRcXG4yMTk5OlxcdFxcdGlmIChwbC1cXHUwMDNlbWFjX3N1cHBvcnRzX2VlZV9vcHMpIHtcXG4yMjAwOlxcdFxcdFxcdC8qIEV4cGxpY2l0bHkgY29uZmlndXJlIHdoZXRoZXIgdGhlIFBIWSBpcyBhbGxvd2VkIHRvIHN0b3AgaXQnc1xcbjIyMDE6XFx0XFx0XFx0ICogcmVjZWl2ZSBjbG9jay5cXG4yMjAyOlxcdFxcdFxcdCAqL1xcbjIyMDM6XFx0XFx0XFx0cmV0ID0gcGh5X2VlZV9yeF9jbG9ja19zdG9wKHBoeSxcXG4yMjA0OlxcdFxcdFxcdFxcdFxcdFxcdCAgICBwbC1cXHUwMDNlY29uZmlnLVxcdTAwM2VlZWVfcnhfY2xrX3N0b3BfZW5hYmxlKTtcXG4yMjA1OlxcdFxcdFxcdGlmIChyZXQgPT0gLUVPUE5PVFNVUFApXFxuMjIwNjpcXHRcXHRcXHRcXHRyZXQgPSAwO1xcbjIyMDc6XFx0XFx0fVxcbjIyMDg6XFx0XFxuMjIwOTpcXHRcXHRpZiAocmV0ID09IDAgXFx1MDAyNlxcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHkpKVxcbjIyMTA6XFx0XFx0XFx0cGh5X3JlcXVlc3RfaW50ZXJydXB0KHBoeSk7XFxuMjIxMTpcXHRcXG4yMjEyOlxcdFxcdGlmIChyZXQpIHtcXG4yMjEzOlxcdFxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBsLVxcdTAwM2VwaHlkZXZfbXV0ZXgpO1xcbjIyMTQ6XFx0XFx0XFx0cGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSk7XFxuMjIxNTpcXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBsLVxcdTAwM2VwaHlkZXZfbXV0ZXgpO1xcbjIyMTY6XFx0XFx0fVxcbjIyMTc6XFx0XFxuMjIxODpcXHRcXHRyZXR1cm4gcmV0O1xcbjIyMTk6XFx0fVxcbjIyMjA6XFx0XFxuMjIyMTpcXHRzdGF0aWMgaW50IHBoeWxpbmtfYXR0YWNoX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXFxuMjIyMjpcXHRcXHRcXHRcXHQgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbjIyMjM6XFx0e1xcbjIyMjQ6XFx0XFx0dTMyIGZsYWdzID0gMDtcXG4yMjI1OlxcdFxcbjIyMjY6XFx0XFx0aWYgKFdBUk5fT04ocGwtXFx1MDAzZWNmZ19saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEKSlcXG4yMjI3OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjIyMjg6XFx0XFxuMjIyOTpcXHRcXHRpZiAocGwtXFx1MDAzZXBoeWRldilcXG4yMjMwOlxcdFxcdFxcdHJldHVybiAtRUJVU1k7XFxuMjIzMTpcXHRcXG4yMjMyOlxcdFxcdGlmIChwbC1cXHUwMDNlY29uZmlnLVxcdTAwM2VtYWNfcmVxdWlyZXNfcnhjKVxcbjIyMzM6XFx0XFx0XFx0ZmxhZ3MgfD0gUEhZX0ZfUlhDX0FMV0FZU19PTjtcXG4yMjM0OlxcdFxcbjIyMzU6XFx0XFx0cmV0dXJuIHBoeV9hdHRhY2hfZGlyZWN0KHBsLVxcdTAwM2VuZXRkZXYsIHBoeSwgZmxhZ3MsIGludGVyZmFjZSk7XFxuMjIzNjpcXHR9XFxuMjIzNzpcXHRcXG4yMjM4OlxcdC8qKlxcbjIyMzk6XFx0ICogcGh5bGlua19jb25uZWN0X3BoeSgpIC0gY29ubmVjdCBhIFBIWSB0byB0aGUgcGh5bGluayBpbnN0YW5jZVxcbjIyNDA6XFx0ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuMjI0MTpcXHQgKiBAcGh5OiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeV9kZXZpY2UuXFxuMjI0MjpcXHQgKlxcbjIyNDM6XFx0ICogQ29ubmVjdCBAcGh5IHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlIHNwZWNpZmllZCBieSBAcGwgYnkgY2FsbGluZ1xcbjIyNDQ6XFx0ICogcGh5X2F0dGFjaF9kaXJlY3QoKS4gQ29uZmlndXJlIHRoZSBAcGh5IGFjY29yZGluZyB0byB0aGUgTUFDIGRyaXZlcidzXFxuMjI0NTpcXHQgKiBjYXBhYmlsaXRpZXMsIHN0YXJ0IHRoZSBQSFlMSUIgc3RhdGUgbWFjaGluZSBhbmQgZW5hYmxlIGFueSBpbnRlcnJ1cHRzXFxuMjI0NjpcXHQgKiB0aGF0IHRoZSBQSFkgc3VwcG9ydHMuXFxuMjI0NzpcXHQgKlxcbjIyNDg6XFx0ICogVGhpcyB1cGRhdGVzIHRoZSBwaHlsaW5rJ3MgZXRodG9vbCBzdXBwb3J0ZWQgYW5kIGFkdmVydGlzaW5nIGxpbmsgbW9kZVxcbjIyNDk6XFx0ICogbWFza3MuXFxuMjI1MDpcXHQgKlxcbjIyNTE6XFx0ICogUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJuby5cXG4yMjUyOlxcdCAqL1xcbjIyNTM6XFx0aW50IHBoeWxpbmtfY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxcbjIyNTQ6XFx0e1xcbjIyNTU6XFx0XFx0aW50IHJldDtcXG4yMjU2OlxcdFxcbjIyNTc6XFx0XFx0LyogVXNlIFBIWSBkZXZpY2UvZHJpdmVyIGludGVyZmFjZSAqL1xcbjIyNTg6XFx0XFx0aWYgKHBsLVxcdTAwM2VsaW5rX2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfTkEpIHtcXG4yMjU5OlxcdFxcdFxcdHBsLVxcdTAwM2VsaW5rX2ludGVyZmFjZSA9IHBoeS1cXHUwMDNlaW50ZXJmYWNlO1xcbjIyNjA6XFx0XFx0XFx0cGwtXFx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSA9IHBsLVxcdTAwM2VsaW5rX2ludGVyZmFjZTtcXG4yMjYxOlxcdFxcdH1cXG4yMjYyOlxcdFxcbjIyNjM6XFx0XFx0cmV0ID0gcGh5bGlua19hdHRhY2hfcGh5KHBsLCBwaHksIHBsLVxcdTAwM2VsaW5rX2ludGVyZmFjZSk7XFxuMjI2NDpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4yMjY1OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMjI2NjpcXHRcXG4yMjY3OlxcdFxcdHJldCA9IHBoeWxpbmtfYnJpbmd1cF9waHkocGwsIHBoeSwgcGwtXFx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSk7XFxuMjI2ODpcXHRcXHRpZiAocmV0KVxcbjIyNjk6XFx0XFx0XFx0cGh5X2RldGFjaChwaHkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo1MToyMy40MTU4MjEyNzJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE1MDk0MzA1MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQSFkgTGluayBDb25uZWN0aW9uIFByb2Nlc3MqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEkgc2VlIHdlJ3JlIGxvb2tpbmcgYXQgYHBoeWxpbmtfY29ubmVjdF9waHlgLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBpbiBgcGh5bGlua19hdHRhY2hfcGh5YCB3aGljaCBzZXRzIHRoaW5ncyB1cCwgdGhlbiBgcGh5bGlua19icmluZ3VwX3BoeWAgd2hpY2ggYWN0dWFsbHkgZ2V0cyB0aGUgUEhZIG9wZXJhdGlvbmFsLiBJZiBgcGh5bGlua19hdHRhY2hfcGh5YCBmYWlscywgd2UganVzdCByZXR1cm4gdGhlIGVycm9yLCBzaW1wbGUgZW5vdWdoLiBCdXQgaWYgYHBoeWxpbmtfYnJpbmd1cF9waHlgIGZhaWxzLCB3ZSBkZXRhY2ggdGhlIFBIWS4gTWFrZXMgc2Vuc2UsIGtlZXAgaXQgY2xlYW4uXG5cbk15IG1pbmQgaXMgbm93IHplcm9pbmcgaW4gb24gYHBoeWxpbmtfYnJpbmd1cF9waHlgLiBJIHJlY2FsbCBzb21lIHBvdGVudGlhbCBpc3N1ZXMgaGVyZSwgd2hpY2ggaXMgd2h5IEknbSBmb2N1c2luZyBvbiBpdC4gSSBzZWVtIHRvIHJlY2FsbCB0aGF0IGJlZm9yZSBhIGNlcnRhaW4gcGF0Y2gsIHRoZSBgcGwtXHUwMDNlcGh5ZGV2YCBhc3NpZ25tZW50IG9jY3VycyBzb21ld2hlcmUgaW4gdGhhdCBmdW5jdGlvbiwgYXJvdW5kIHRoZSAyMTEwIG1hcmssIG9yIGluIHRoYXQgbmVpZ2hib3Job29kLiBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgcmVnaW9uLCBhcHByb3hpbWF0ZWx5IGxpbmVzIDIxMDAgdG8gMjE5MCBpbiB0aGUgY29kZSwgdG8gZW5zdXJlIHRoYXQgdGhlIHZhcmlhYmxlIGlzIGFzc2lnbmVkIHdoZW4gcmVxdWlyZWQuIEknbGwgYmUgbG9va2luZyBhdCB0aGF0IHNlY3Rpb24gdmVyeSBjYXJlZnVsbHkuIFRoZSB0aW1pbmcgb2YgdGhlIGFzc2lnbm1lbnQgY291bGQgYmUgY3JpdGljYWwgZm9yIHRoZSBvdmVyYWxsIHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MjI5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMjE6NTE6NDQuOTI1MjU0NzQ1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1ODEyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwOTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjIwOTA6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cGwtXFx1MDAzZXN0YXRlX211dGV4KTtcXG4yMDkxOlxcdFxcdHBsLVxcdTAwM2VwaHlkZXYgPSBOVUxMO1xcbjIwOTI6XFx0XFx0cGwtXFx1MDAzZXBoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7XFxuMjA5MzpcXHRcXHRwbC1cXHUwMDNlbWFjX3R4X2Nsa19zdG9wID0gZmFsc2U7XFxuMjA5NDpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBsLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuMjA5NTpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBoeS1cXHUwMDNlbG9jayk7XFxuMjA5NjpcXHR9XFxuMjA5NzpcXHRcXG4yMDk4OlxcdHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXFxuMjA5OTpcXHRcXHRcXHRcXHQgICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4yMTAwOlxcdHtcXG4yMTAxOlxcdFxcdHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgY29uZmlnO1xcbjIxMDI6XFx0XFx0X19FVEhUT09MX0RFQ0xBUkVfTElOS19NT0RFX01BU0soc3VwcG9ydGVkKTtcXG4yMTAzOlxcdFxcdGNoYXIgKmlycV9zdHI7XFxuMjEwNDpcXHRcXHRpbnQgcmV0O1xcbjIxMDU6XFx0XFxuMjEwNjpcXHRcXHQvKlxcbjIxMDc6XFx0XFx0ICogVGhpcyBpcyB0aGUgbmV3IHdheSBvZiBkZWFsaW5nIHdpdGggZmxvdyBjb250cm9sIGZvciBQSFlzLFxcbjIxMDg6XFx0XFx0ICogYXMgZGVzY3JpYmVkIGJ5IFRpbXVyIFRhYmkgaW4gY29tbWl0IDUyOWVkMTI3NTI2MyAoXFxcIm5ldDogcGh5OlxcbjIxMDk6XFx0XFx0ICogcGh5IGRyaXZlcnMgc2hvdWxkIG5vdCBzZXQgU1VQUE9SVEVEX1tBc3ltX11QYXVzZVxcXCIpLiBNQUMgZHJpdmVyc1xcbjIxMTA6XFx0XFx0ICogc2V0IHRoZWlyIHN1cHBvcnQgdXNpbmcgdGhlIE1BQ19TWU1fUEFVU0UgYW5kIE1BQ19BU1lNX1BBVVNFXFxuMjExMTpcXHRcXHQgKiBjYXBhYmlsaXRpZXMgYW5kIG11c3QgTk9UIGNoYW5nZSB0aGUgcGh5J3MgcGF1c2Ugc2V0dGluZ3MgZGlyZWN0bHkuXFxuMjExMjpcXHRcXHQgKi9cXG4yMTEzOlxcdFxcdHBoeV9zdXBwb3J0X2FzeW1fcGF1c2UocGh5KTtcXG4yMTE0OlxcdFxcbjIxMTU6XFx0XFx0bWVtc2V0KFxcdTAwMjZjb25maWcsIDAsIHNpemVvZihjb25maWcpKTtcXG4yMTE2OlxcdFxcdGxpbmttb2RlX2NvcHkoc3VwcG9ydGVkLCBwaHktXFx1MDAzZXN1cHBvcnRlZCk7XFxuMjExNzpcXHRcXHRsaW5rbW9kZV9jb3B5KGNvbmZpZy5hZHZlcnRpc2luZywgcGh5LVxcdTAwM2VhZHZlcnRpc2luZyk7XFxuMjExODpcXHRcXHRjb25maWcuaW50ZXJmYWNlID0gaW50ZXJmYWNlO1xcbjIxMTk6XFx0XFxuMjEyMDpcXHRcXHRyZXQgPSBwaHlsaW5rX3ZhbGlkYXRlX3BoeShwbCwgcGh5LCBzdXBwb3J0ZWQsIFxcdTAwMjZjb25maWcpO1xcbjIxMjE6XFx0XFx0aWYgKHJldCkge1xcbjIxMjI6XFx0XFx0XFx0cGh5bGlua193YXJuKHBsLCBcXFwidmFsaWRhdGlvbiBvZiAlcyB3aXRoIHN1cHBvcnQgJSpwYiBhbmQgYWR2ZXJ0aXNlbWVudCAlKnBiIGZhaWxlZDogJXBlXFxcXG5cXFwiLFxcbjIxMjM6XFx0XFx0XFx0XFx0ICAgICBwaHlfbW9kZXMoY29uZmlnLmludGVyZmFjZSksXFxuMjEyNDpcXHRcXHRcXHRcXHQgICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgcGh5LVxcdTAwM2VzdXBwb3J0ZWQsXFxuMjEyNTpcXHRcXHRcXHRcXHQgICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgY29uZmlnLmFkdmVydGlzaW5nLFxcbjIxMjY6XFx0XFx0XFx0XFx0ICAgICBFUlJfUFRSKHJldCkpO1xcbjIxMjc6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yMTI4OlxcdFxcdH1cXG4yMTI5OlxcdFxcbjIxMzA6XFx0XFx0cGh5LVxcdTAwM2VwaHlsaW5rID0gcGw7XFxuMjEzMTpcXHRcXHRwaHktXFx1MDAzZXBoeV9saW5rX2NoYW5nZSA9IHBoeWxpbmtfcGh5X2NoYW5nZTtcXG4yMTMyOlxcdFxcbjIxMzM6XFx0XFx0aXJxX3N0ciA9IHBoeV9hdHRhY2hlZF9pbmZvX2lycShwaHkpO1xcbjIxMzQ6XFx0XFx0cGh5bGlua19pbmZvKHBsLFxcbjIxMzU6XFx0XFx0XFx0ICAgICBcXFwiUEhZIFslc10gZHJpdmVyIFslc10gKGlycT0lcylcXFxcblxcXCIsXFxuMjEzNjpcXHRcXHRcXHQgICAgIGRldl9uYW1lKFxcdTAwMjZwaHktXFx1MDAzZW1kaW8uZGV2KSwgcGh5LVxcdTAwM2VkcnYtXFx1MDAzZW5hbWUsIGlycV9zdHIpO1xcbjIxMzc6XFx0XFx0a2ZyZWUoaXJxX3N0cik7XFxuMjEzODpcXHRcXG4yMTM5OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBsLVxcdTAwM2VwaHlkZXZfbXV0ZXgpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo1MTo0NC45MjU2MTQ2MDVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzM3MTg0MjU5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIFBoeWxpbmsgQ29kZWJhc2UqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhlIGBwaHlsaW5rLmNgIGZpbGUuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhpcyBwYXJ0IGludGVyYWN0cyB3aXRoIHRoZSBvdmVyYWxsIHBoeWxpbmsgcHJvY2Vzcywgc28gSSdsbCBqdW1wIHJpZ2h0IGludG8gbGluZXMgMjE0MCB0byAyMTkwLiBJJ20gZm9jdXNpbmcgc3BlY2lmaWNhbGx5IG9uIHRoaXMgc2VjdGlvbiBiZWNhdXNlIEkgcmVjYWxsIHdlIHdlcmUgc2VlaW5nIHNvbWUgb2RkIGJlaGF2aW9yIHJlbGF0ZWQgdG8gWyoqaW5zZXJ0IHNwZWNpZmljIHByb2JsZW0gdGhlIG9yaWdpbmFsIHVzZXIgd2FzIGhhdmluZyoqXSwgYW5kIEkgaGF2ZSBhIGh1bmNoIGl0IG1pZ2h0IGJlIHJvb3RlZCBoZXJlLlxuXG5SaWdodCwgc28gZ2xhbmNpbmcgYXQgdGhpcyBibG9jayBvZiBjb2RlLCBJJ20gbm90aW5nIHRoZSBjb25kaXRpb25hbCBjaGVjayBvbiBbKipzcGVjaWZpYyB2YXJpYWJsZSBvciBjb25kaXRpb24qKl0uIEl0IGxvb2tzIGxpa2UgdGhpcyBtaWdodCBiZSByZWxhdGVkIHRvIHRoZSBbKipzcGVjaWZpYyBwcm9jZXNzL2Z1bmN0aW9uKipdIGFuZCBob3cgaXQgaGFuZGxlcyBbKipzcGVjaWZpYyBkYXRhKipdLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIHJhY2UgY29uZGl0aW9ucyB0aGF0IGNvdWxkIGxlYWQgdG8gZGF0YSBjb3JydXB0aW9uIGluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCBvciBwb3NzaWJseSBhbnkgb2ZmLWJ5LW9uZSBlcnJvcnMuIEFsc28sIGlzIHRoaXMgZnVuY3Rpb24gcmUtZW50cmFudCwgYW5kIGlmIG5vdCwgaG93IG1pZ2h0IGl0IGFmZmVjdCBvdGhlciB0aHJlYWRzPyBJ4oCZbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgYW55IGFzc29jaWF0ZWQgbXV0ZXhlcyBvciBzZW1hcGhvcmVzLCBqdXN0IHRvIGJlIHN1cmUuIEknbSBnb2luZyB0byBzY2FuIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGNoZWNrIGZvciB0aGUgYXNzaWdubWVudCBvZiBhbnkgcG90ZW50aWFsIG51bGwgcG9pbnRlcnMuIFBlcmhhcHMgdGhlcmUgbWlnaHQgYmUgc29tZSBtaXNzaW5nIGVycm9yIGNoZWNraW5nIGFyb3VuZCBbKipzcGVjaWZpYyBmdW5jdGlvbioqXS4gT2theSwgdGltZSB0byBjaGVjayB0aGUgbG9nZ2luZyBvdXRwdXQgcmVsYXRlZCB0byB0aGlzIGZ1bmN0aW9uIGNhbGwsIGp1c3QgaW4gY2FzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc1MTEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDIxOjUxOjUyLjI5NzQ2MDQwN1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDMwMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMTM4LFxuICBcIkxpbmVDb3VudFwiOiA1NVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMTM4OlxcdFxcbjIxMzk6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cGwtXFx1MDAzZXBoeWRldl9tdXRleCk7XFxuMjE0MDpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwaHktXFx1MDAzZWxvY2spO1xcbjIxNDE6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cGwtXFx1MDAzZXN0YXRlX211dGV4KTtcXG4yMTQyOlxcdFxcdHBsLVxcdTAwM2VwaHlkZXYgPSBwaHk7XFxuMjE0MzpcXHRcXHRwbC1cXHUwMDNlcGh5X3N0YXRlLmludGVyZmFjZSA9IGludGVyZmFjZTtcXG4yMTQ0OlxcdFxcdHBsLVxcdTAwM2VwaHlfc3RhdGUucGF1c2UgPSBNTE9fUEFVU0VfTk9ORTtcXG4yMTQ1OlxcdFxcdHBsLVxcdTAwM2VwaHlfc3RhdGUuc3BlZWQgPSBTUEVFRF9VTktOT1dOO1xcbjIxNDY6XFx0XFx0cGwtXFx1MDAzZXBoeV9zdGF0ZS5kdXBsZXggPSBEVVBMRVhfVU5LTk9XTjtcXG4yMTQ3OlxcdFxcdHBsLVxcdTAwM2VwaHlfc3RhdGUucmF0ZV9tYXRjaGluZyA9IFJBVEVfTUFUQ0hfTk9ORTtcXG4yMTQ4OlxcdFxcdGxpbmttb2RlX2NvcHkocGwtXFx1MDAzZXN1cHBvcnRlZCwgc3VwcG9ydGVkKTtcXG4yMTQ5OlxcdFxcdGxpbmttb2RlX2NvcHkocGwtXFx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nLCBjb25maWcuYWR2ZXJ0aXNpbmcpO1xcbjIxNTA6XFx0XFxuMjE1MTpcXHRcXHQvKiBSZXN0cmljdCB0aGUgcGh5IGFkdmVydGlzZW1lbnQgYWNjb3JkaW5nIHRvIHRoZSBNQUMgc3VwcG9ydC4gKi9cXG4yMTUyOlxcdFxcdGxpbmttb2RlX2NvcHkocGh5LVxcdTAwM2VhZHZlcnRpc2luZywgY29uZmlnLmFkdmVydGlzaW5nKTtcXG4yMTUzOlxcdFxcbjIxNTQ6XFx0XFx0LyogSWYgdGhlIE1BQyBzdXBwb3J0cyBwaHlsaW5rIG1hbmFnZWQgRUVFLCByZXN0cmljdCB0aGUgRUVFXFxuMjE1NTpcXHRcXHQgKiBhZHZlcnRpc2VtZW50IGFjY29yZGluZyB0byB0aGUgTUFDJ3MgTFBJIGNhcGFiaWxpdGllcy5cXG4yMTU2OlxcdFxcdCAqL1xcbjIxNTc6XFx0XFx0aWYgKHBsLVxcdTAwM2VtYWNfc3VwcG9ydHNfZWVlKSB7XFxuMjE1ODpcXHRcXHRcXHQvKiBJZiBFRUUgaXMgZW5hYmxlZCwgdGhlbiB3ZSBuZWVkIHRvIGNhbGwgcGh5X3N1cHBvcnRfZWVlKClcXG4yMTU5OlxcdFxcdFxcdCAqIHRvIGVuc3VyZSB0aGF0IHRoZSBhZHZlcnRpc2luZyBtYXNrIGlzIGFwcHJvcHJpYXRlbHkgc2V0LlxcbjIxNjA6XFx0XFx0XFx0ICogVGhpcyBhbHNvIGVuYWJsZXMgRUVFIGF0IHRoZSBQSFkuXFxuMjE2MTpcXHRcXHRcXHQgKi9cXG4yMTYyOlxcdFxcdFxcdGlmIChwbC1cXHUwMDNlZWVlX2NmZy5lZWVfZW5hYmxlZClcXG4yMTYzOlxcdFxcdFxcdFxcdHBoeV9zdXBwb3J0X2VlZShwaHkpO1xcbjIxNjQ6XFx0XFxuMjE2NTpcXHRcXHRcXHRwaHktXFx1MDAzZWVlZV9jZmcudHhfbHBpX2VuYWJsZWQgPSBwbC1cXHUwMDNlZWVlX2NmZy50eF9scGlfZW5hYmxlZDtcXG4yMTY2OlxcdFxcdFxcdHBoeS1cXHUwMDNlZWVlX2NmZy50eF9scGlfdGltZXIgPSBwbC1cXHUwMDNlZWVlX2NmZy50eF9scGlfdGltZXI7XFxuMjE2NzpcXHRcXG4yMTY4OlxcdFxcdFxcdC8qIENvbnZlcnQgdGhlIE1BQydzIExQSSBjYXBhYmlsaXRpZXMgdG8gbGlua21vZGVzICovXFxuMjE2OTpcXHRcXHRcXHRsaW5rbW9kZV96ZXJvKHBsLVxcdTAwM2VzdXBwb3J0ZWRfbHBpKTtcXG4yMTcwOlxcdFxcdFxcdHBoeWxpbmtfY2Fwc190b19saW5rbW9kZXMocGwtXFx1MDAzZXN1cHBvcnRlZF9scGksXFxuMjE3MTpcXHRcXHRcXHRcXHRcXHRcXHQgIHBsLVxcdTAwM2Vjb25maWctXFx1MDAzZWxwaV9jYXBhYmlsaXRpZXMpO1xcbjIxNzI6XFx0XFxuMjE3MzpcXHRcXHRcXHQvKiBSZXN0cmljdCB0aGUgUEhZcyBFRUUgc3VwcG9ydC9hZHZlcnRpc2VtZW50IHRvIHRoZSBtb2Rlc1xcbjIxNzQ6XFx0XFx0XFx0ICogdGhhdCB0aGUgTUFDIHN1cHBvcnRzLlxcbjIxNzU6XFx0XFx0XFx0ICovXFxuMjE3NjpcXHRcXHRcXHRsaW5rbW9kZV9hbmQocGh5LVxcdTAwM2VhZHZlcnRpc2luZ19lZWUsIHBoeS1cXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlLFxcbjIxNzc6XFx0XFx0XFx0XFx0ICAgICBwbC1cXHUwMDNlc3VwcG9ydGVkX2xwaSk7XFxuMjE3ODpcXHRcXHR9IGVsc2UgaWYgKHBsLVxcdTAwM2VtYWNfc3VwcG9ydHNfZWVlX29wcykge1xcbjIxNzk6XFx0XFx0XFx0LyogTUFDIHN1cHBvcnRzIHBoeWxpbmsgRUVFLCBidXQgd2FudHMgRUVFIGFsd2F5cyBkaXNhYmxlZC4gKi9cXG4yMTgwOlxcdFxcdFxcdHBoeV9kaXNhYmxlX2VlZShwaHkpO1xcbjIxODE6XFx0XFx0fVxcbjIxODI6XFx0XFxuMjE4MzpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBsLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuMjE4NDpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBoeS1cXHUwMDNlbG9jayk7XFxuMjE4NTpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBsLVxcdTAwM2VwaHlkZXZfbXV0ZXgpO1xcbjIxODY6XFx0XFxuMjE4NzpcXHRcXHRwaHlsaW5rX2RiZyhwbCxcXG4yMTg4OlxcdFxcdFxcdCAgICBcXFwicGh5OiAlcyBzZXR0aW5nIHN1cHBvcnRlZCAlKnBiIGFkdmVydGlzaW5nICUqcGJcXFxcblxcXCIsXFxuMjE4OTpcXHRcXHRcXHQgICAgcGh5X21vZGVzKGludGVyZmFjZSksXFxuMjE5MDpcXHRcXHRcXHQgICAgX19FVEhUT09MX0xJTktfTU9ERV9NQVNLX05CSVRTLCBwbC1cXHUwMDNlc3VwcG9ydGVkLFxcbjIxOTE6XFx0XFx0XFx0ICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgcGh5LVxcdTAwM2VhZHZlcnRpc2luZyk7XFxuMjE5MjpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMjE6NTE6NTIuMjk3NjY2MjM3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUyNjg4ODI5ODA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBIWSBMaW5rIEJyaW5ndXAgSXNzdWUqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCBgcGh5bGlua19icmluZ3VwX3BoeWAgaXMgcmVzcG9uc2libGUgZm9yIGluaXRpYWxpemluZyB0aGUgUEhZIGRldmljZSB3aXRoaW4gdGhlIGBwbGAgZGF0YSBzdHJ1Y3R1cmUuIFNwZWNpZmljYWxseSwgaXQgYXNzaWducyB0aGUgUEhZIGRldmljZSAoYHBoeWApIHRvIGBwbC1cdTAwM2VwaHlkZXZgIGFuZCBzZXRzIHVwIHNvbWUgb3RoZXIgaW50ZXJuYWwgc3RhdGUuIFRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtIHNlZW1zIHRvIGxpZSBhcm91bmQgbGluZSAyMjAzLCB3aGVyZSB0aGUgZnVuY3Rpb24gYHBoeV9lZWVfcnhfY2xvY2tfc3RvcGAgaXMgY2FsbGVkLiBDcml0aWNhbGx5LCBpZiBgcGh5X2VlZV9yeF9jbG9ja19zdG9wYCBmYWlscywgdGhlIGBwbC1cdTAwM2VwaHlkZXZgIGZpZWxkIGlzICpzdGlsbCogbGVmdCBub24tTlVMTC4gVGhpcyBjcmVhdGVzIGEgcmVhbGx5IG5hc3R5IHJhY2UgY29uZGl0aW9uLlxuXG5JIGNhbiBzZWUgdGhhdCBpZiBgcGh5X2VlZV9yeF9jbG9ja19zdG9wYCByZXR1cm5zIGFuIGVycm9yLCBhbnkgc3Vic2VxdWVudCBhdHRlbXB0IHRvIGF0dGFjaCB0aGUgUEhZIHdvdWxkIHJldHVybiAtRUJVU1kuIFRoYXQncyBiZWNhdXNlIHRoZSBgcGh5bGlua19hdHRhY2hfcGh5YCBmdW5jdGlvbiBjaGVja3MgaWYgYHBsLVx1MDAzZXBoeWRldmAgaXMgYWxyZWFkeSBhc3NpZ25lZCBhbmQgaW1tZWRpYXRlbHkgcmV0dXJucyAtRUJVU1kuIFRoaXMgaXMgd2hlcmUgdGhlIHBhdGNoIGtpY2tzIGluLiBJdCBpbnRyb2R1Y2VzIGEgY2hlY2ssIGFuZCBpZiB0aGUgYHJldGAgZnJvbSBgcGh5X2VlZV9yeF9jbG9ja19zdG9wYCBzaWduYWxzIGZhaWx1cmUsIHRoZSBjb2RlIG5vdyBpbmNsdWRlcyBhIG11dGV4LXByb3RlY3RlZCBjYWxsIHRvIGBwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KWAuIFRoYXQncyBzbWFydDsgaXQncyByZWxlYXNpbmcgdGhlIHJlc291cmNlIGFwcHJvcHJpYXRlbHkgd2hlbiB0aGUgUEhZIGluaXRpYWxpemF0aW9uIGZhaWxzLlxuXG5TbywgdGhlIG5ldyBjb2RlIGlzIGF0dGVtcHRpbmcgdG8gY2xlYW4gdXAgdGhlIHBhcnRpYWxseSBpbml0aWFsaXplZCBQSFkgaW4gY2FzZSBvZiBhbiBlcnJvci4gVGhlIGluY2x1c2lvbiBvZiB0aGUgbXV0ZXggaXMgY3JpdGljYWwgdG8gcHJldmVudCBhIHJhY2UgY29uZGl0aW9uIGR1cmluZyBQSFkgcmVzb3VyY2UgbWFuYWdlbWVudC5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgd2lkZXIgY29udGV4dC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gYHBoeV9kZXZpY2UuY2AgYW5kIGBwaHlsaW5rLmNgIGFuZCB3aGVyZSB0aGV5IGZpdCBpbnRvIHRoZSBsYXJnZXIgUEhZIGRyaXZlciBzdHJ1Y3R1cmUuIEknbSBnb2luZyB0byBsb29rIGF0IHdoZXJlIGBwaHlfcmVzdG9yZV9nZW5waHlfaXJxYCBpcyBjYWxsZWQuIEkgc2VlIGl0J3MgY2FsbGVkIGluIGBlcnJvcl9tb2R1bGVfcHV0YCBhbmQgYHBoeV9kZXRhY2hgIGluIGBwaHlfZGV2aWNlLmNgLCBzbyBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgcmVsYXRlLlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGUgYnVpbGQgZGVwZW5kZW5jaWVzLiBXaGVyZSBhcmUgYHBoeV9kZXZpY2UuY2AgYW5kIGBwaHlsaW5rLmNgIGJ1aWx0PyBJJ2xsIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgYW5kIE1ha2VmaWxlcyBpbiBgZHJpdmVycy9uZXQvcGh5L2AgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoaWNoIGNvbmZpZ3VyYXRpb25zIGluY2x1ZGUgdGhlc2UgZmlsZXMuIEdyZXBwaW5nIGZvciB0aGUgcmVsZXZhbnQgS2NvbmZpZyBhbmQgTWFrZWZpbGUgZW50cmllcyBzaG91bGQgZ2l2ZSBtZSBhIHF1aWNrIG92ZXJ2aWV3IG9mIHRoZSBidWlsZCBwcm9jZXNzIGZvciB0aGlzIHNlY3Rpb24gb2YgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg4MzAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo1Mjo0NC45ODY0OTg5MDZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1OTM2NjIyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfZGV2aWNlfHBoeWxpbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE0MTQyIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMy1cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NDpsaWJwaHkteVxcdFxcdFxcdDo9IHBoeS5vIHBoeS1jNDUubyBwaHktY29yZS5vIHBoeV9kZXZpY2UubyBcXFxcXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTUtXFx0XFx0XFx0XFx0ICAgbGlua21vZGUubyBwaHlfbGlua190b3BvbG9neS5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT0xOD1vYmotJChDT05GSUdfUEhZTElCKVxcdFxcdCs9IG1kaW9fYnVzLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX1BIWUxJTkspXFx0XFx0Kz0gcGh5bGluay5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTIwLW9iai0kKENPTkZJR19QSFlMSUIpXFx0XFx0Kz0gbGlicGh5Lm9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM9MjQwPXN0YXRpYyBpbnQgYWRpbl9sb29rdXBfcmVnX3ZhbHVlKGNvbnN0IHN0cnVjdCBhZGluX2NmZ19yZWdfbWFwICp0YmwsIGludCBjZmcpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTI1MS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjI1MjpzdGF0aWMgdTMyIGFkaW5fZ2V0X3JlZ192YWx1ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMjUzLVxcdFxcdFxcdCAgICAgIGNvbnN0IGNoYXIgKnByb3BfbmFtZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMjc0LVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6Mjc1OnN0YXRpYyBpbnQgYWRpbl9jb25maWdfcmdtaWlfbW9kZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMjc2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMzIwLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6MzIxOnN0YXRpYyBpbnQgYWRpbl9jb25maWdfcm1paV9tb2RlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy0zMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy0zNDctXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzozNDg6c3RhdGljIGludCBhZGluX2dldF9kb3duc2hpZnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggKmRhdGEpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy0zNDkte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy0zNjctXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzozNjg6c3RhdGljIGludCBhZGluX3NldF9kb3duc2hpZnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggY250KVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMzY5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMzkxLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6MzkyOnN0YXRpYyBpbnQgYWRpbl9nZXRfZWRwZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgKnR4X2ludGVydmFsKVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMzkzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNDEyLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6NDEzOnN0YXRpYyBpbnQgYWRpbl9zZXRfZWRwZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgdHhfaW50ZXJ2YWwpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy00MTQte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy00MzktXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo0NDA6c3RhdGljIGludCBhZGluX2dldF9mYXN0X2Rvd24oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggKm1zZWNzKVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNDQxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNDU1LVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6NDU2OnN0YXRpYyBpbnQgYWRpbl9zZXRfZmFzdF9kb3duKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGNvbnN0IHU4ICptc2VjcylcXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTQ1Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTQ3MC1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjQ3MTpzdGF0aWMgaW50IGFkaW5fZ2V0X3R1bmFibGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTQ3Mi1cXHRcXHRcXHQgICAgc3RydWN0IGV0aHRvb2xfdHVuYWJsZSAqdHVuYSwgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNDg1LVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6NDg2OnN0YXRpYyBpbnQgYWRpbl9zZXRfdHVuYWJsZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNDg3LVxcdFxcdFxcdCAgICBzdHJ1Y3QgZXRodG9vbF90dW5hYmxlICp0dW5hLCBjb25zdCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy01MDAtXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo1MDE6c3RhdGljIGludCBhZGluX2NvbmZpZ19jbGtfb3V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy01MDIte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy01MjctXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo1Mjg6c3RhdGljIGludCBhZGluX2NvbmZpZ196cHRtMTAwKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy01Mjkte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy01NDAtXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo1NDE6c3RhdGljIGludCBhZGluX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy01NDIte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy01NzYtXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo1Nzc6c3RhdGljIGludCBhZGluX3BoeV9hY2tfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNTc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNTg0LVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6NTg1OnN0YXRpYyBpbnQgYWRpbl9waHlfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTU4Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTYwNy1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjYwODpzdGF0aWMgaXJxcmV0dXJuX3QgYWRpbl9waHlfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNjA5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNjI1LVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6NjI2OnN0YXRpYyBpbnQgYWRpbl9jbDQ1X3RvX2FkaW5fcmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZhZCxcXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTYyNy1cXHRcXHRcXHRcXHQgdTE2IGNsNDVfcmVnbnVtKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy02NDctXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo2NDg6c3RhdGljIGludCBhZGluX3JlYWRfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZhZCwgdTE2IHJlZ251bSlcXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTY0OS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTY2Ni1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjY2NzpzdGF0aWMgaW50IGFkaW5fd3JpdGVfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZhZCwgdTE2IHJlZ251bSxcXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTY2OC1cXHRcXHRcXHQgIHUxNiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTY4Ni1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjY4NzpzdGF0aWMgaW50IGFkaW5fY29uZmlnX21kaXgoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTY4OC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTcyMy1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjcyNDpzdGF0aWMgaW50IGFkaW5fY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTcyNS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTc0Mi1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjc0MzpzdGF0aWMgaW50IGFkaW5fbWRpeF91cGRhdGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTc0NC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTc4My1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjc4NDpzdGF0aWMgaW50IGFkaW5fcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTc4NS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTc5NC1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjc5NTpzdGF0aWMgaW50IGFkaW5fc29mdF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNzk2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtODE0LVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6ODE1OnN0YXRpYyBpbnQgYWRpbl9nZXRfc3NldF9jb3VudChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtODE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtODE5LVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6ODIwOnN0YXRpYyB2b2lkIGFkaW5fZ2V0X3N0cmluZ3Moc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggKmRhdGEpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy04MjEte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy04MjctXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo4Mjg6c3RhdGljIGludCBhZGluX3JlYWRfbW1kX3N0YXRfcmVncyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtODI5LVxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBhZGluX2h3X3N0YXQgKnN0YXQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTg1Mi1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjg1MzpzdGF0aWMgdTY0IGFkaW5fZ2V0X3N0YXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGkpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy04NTQte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy04NzUtXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo4NzY6c3RhdGljIHZvaWQgYWRpbl9nZXRfc3RhdHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTg3Ny1cXHRcXHRcXHQgICBzdHJ1Y3QgZXRodG9vbF9zdGF0cyAqc3RhdHMsIHU2NCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtODg5LVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6ODkwOnN0YXRpYyBpbnQgYWRpbl9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtODkxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtOTAzLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6OTA0OnN0YXRpYyBpbnQgYWRpbl9jYWJsZV90ZXN0X3N0YXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy05MDUte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYz05MjM9c3RhdGljIGludCBhZGluX2NhYmxlX3Rlc3RfcmVwb3J0X3RyYW5zKGludCByZXN1bHQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTk0NC1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjk0NTpzdGF0aWMgaW50IGFkaW5fY2FibGVfdGVzdF9yZXBvcnRfcGFpcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtOTQ2LVxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgcGFpcilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtOTc2LVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6OTc3OnN0YXRpYyBpbnQgYWRpbl9jYWJsZV90ZXN0X3JlcG9ydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtOTc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtOTkwLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6OTkxOnN0YXRpYyBpbnQgYWRpbl9jYWJsZV90ZXN0X2dldF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTk5Mi1cXHRcXHRcXHRcXHQgICAgICBib29sICpmaW5pc2hlZClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jPTcwPXN0cnVjdCBhZGluX3ByaXYge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtNzUtXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmM6NzY6c3RhdGljIGludCBhZGluX3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtNzcte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtOTYtXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmM6OTc6c3RhdGljIGludCBhZGluX2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtOTgte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMTQ0LVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jOjE0NTpzdGF0aWMgaW50IGFkaW5fcGh5X2Fja19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMTQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTE1My1cXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYzoxNTQ6c3RhdGljIGludCBhZGluX2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMTU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTE3Mi1cXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYzoxNzM6c3RhdGljIGlycXJldHVybl90IGFkaW5fcGh5X2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0xNzQte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMTkxLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jOjE5MjpzdGF0aWMgaW50IGFkaW5fc2V0X3Bvd2VyZG93bl9tb2RlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgZW4pXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMTkzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTIwNi1cXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYzoyMDc6c3RhdGljIGludCBhZGluX3N1c3BlbmQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0yMDgte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMjExLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jOjIxMjpzdGF0aWMgaW50IGFkaW5fcmVzdW1lKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMjEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTIxNi1cXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYzoyMTc6c3RhdGljIGludCBhZGluX3NldF9sb29wYmFjayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIGVuYWJsZSwgaW50IHNwZWVkKVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTIxOC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0yMzAtXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmM6MjMxOnN0YXRpYyBpbnQgYWRpbl9zb2Z0X3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMjMyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTI0My1cXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYzoyNDQ6c3RhdGljIGludCBhZGluX2dldF9mZWF0dXJlcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTI0NS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0yNzgtXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmM6Mjc5OnN0YXRpYyBpbnQgYWRpbl9nZXRfc3FpKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMjgwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTMwMy1cXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYzozMDQ6c3RhdGljIGludCBhZGluX2dldF9zcWlfbWF4KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMzA1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTMwOC1cXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYzozMDk6c3RhdGljIGludCBhZGluX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMzEwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTE0MC1waHkuYy0xNi1cXG5kcml2ZXJzL25ldC9waHkvYWRpbjExNDAtcGh5LmM6MTc6c3RhdGljIGludCBhZGluMTE0MF9jb25maWdfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTE0MC1waHkuYy0xOC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbjExNDAtcGh5LmMtMjUtXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jOjI2OnN0YXRpYyBpbnQgYWRpbjExNDBfbG9vcGJhY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBlbmFibGUsIGludCBzcGVlZClcXG5kcml2ZXJzL25ldC9waHkvYWRpbjExNDAtcGh5LmMtMjcte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jLTM1LVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTE0MC1waHkuYzozNjpzdGF0aWMgaW50IGFkaW4xMTQwX3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jLTM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM9MjA2PXN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb25nIGFuODgwMXJfbGVkX3RyaWcgPSBCSVQoVFJJR0dFUl9ORVRERVZfTElOSykgfFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0yMTMtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzoyMTQ6c3RhdGljIGludCBhbjg4MDFfYnVja3BidXNfcmVnX3JtdyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMjE1LVxcdFxcdFxcdFxcdCAgIHUzMiBhZGRyLCB1MzIgbWFzaywgdTMyIHNldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMjIxLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6MjIyOnN0YXRpYyBpbnQgYW44ODAxX2J1Y2twYnVzX3JlZ19zZXRfYml0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMjIzLVxcdFxcdFxcdFxcdFxcdHUzMiBhZGRyLCB1MzIgbWFzaylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMjI5LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6MjMwOnN0YXRpYyBpbnQgYW44ODAxX2J1Y2twYnVzX3JlZ19jbGVhcl9iaXRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0yMzEtXFx0XFx0XFx0XFx0XFx0ICB1MzIgYWRkciwgdTMyIG1hc2spXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTIzNy1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjIzODpzdGF0aWMgaW50IGFuODgwMV9idWNrcGJ1c19yZWdfd3JpdGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIGFkZHIsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0yMzktXFx0XFx0XFx0XFx0ICAgICB1MzIgZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMjQ1LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6MjQ2OnN0YXRpYyBpbnQgYW44ODAxX2J1Y2twYnVzX3JlZ19yZWFkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUzMiBhZGRyLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMjQ3LVxcdFxcdFxcdFxcdCAgICB1MzIgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jPTI1ND1zdGF0aWMgdTMyIGFuODgwMXJfbGVkX2JsaW5rX21zX3RvX2h3KHVuc2lnbmVkIGxvbmcgcmVxX21zKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0yNzEtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzoyNzI6c3RhdGljIGludCBhbjg4MDFyX2xlZF9ibGlua19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0yNzMtXFx0XFx0XFx0XFx0IHVuc2lnbmVkIGxvbmcgKmRlbGF5X29uLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0zMzItXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzozMzM6c3RhdGljIGludCBhbjg4MDFyX2xlZF9icmlnaHRuZXNzX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTMzNC1cXHRcXHRcXHRcXHQgICAgICBlbnVtIGxlZF9icmlnaHRuZXNzIHZhbHVlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0zNTYtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzozNTc6c3RhdGljIGludCBhbjg4MDFyX2xlZF9od19jb250cm9sX2dldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTM1OC1cXHRcXHRcXHRcXHQgICAgICB1bnNpZ25lZCBsb25nICpydWxlcylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM9NDAzPXN0YXRpYyBpbnQgYW44ODAxcl9sZWRfdHJpZ190b19odyh1bnNpZ25lZCBsb25nIHJ1bGVzLCB1MTYgKm9uLCB1MTYgKmJsaW5rKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy00NDEtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo0NDI6c3RhdGljIGludCBhbjg4MDFyX2xlZF9od19pc19zdXBwb3J0ZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy00NDMtXFx0XFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgcnVsZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTQ1Mi1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjQ1MzpzdGF0aWMgaW50IGFuODgwMXJfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtNDU0LVxcdFxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGxvbmcgcnVsZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTQ3OS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjQ4MDpzdGF0aWMgaW50IGFuODgwMXJfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy00ODEtXFx0XFx0XFx0XFx0ICAgIHVuc2lnbmVkIGxvbmcgbW9kZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTUwNC1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjUwNTpzdGF0aWMgaW50IGFuODgwMXJfbGVkX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggKmxlZF9jZmcpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy01MDYte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy01NjItXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo1NjM6c3RhdGljIGludCBhbjg4MDFyX3Jlc2V0X3dha2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTU2NC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTYwMC1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjYwMTpzdGF0aWMgaW50IGFuODgwMXJfYWNrX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtNjAyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtNjE0LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6NjE1OnN0YXRpYyBpbnQgYW44ODAxcl9jb25maWdfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtNjE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtNjUxLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6NjUyOnN0YXRpYyBpcnFyZXR1cm5fdCBhbjg4MDFyX2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTY1My17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTY3OS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjY4MDpzdGF0aWMgdm9pZCBhbjg4MDFyX2dldF93b2woc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTY4MS1cXHRcXHRcXHQgICAgc3RydWN0IGV0aHRvb2xfd29saW5mbyAqd29sKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy03MDctXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo3MDg6c3RhdGljIGludCBhbjg4MDFyX3NldF93b2woc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTcwOS1cXHRcXHRcXHQgICBzdHJ1Y3QgZXRodG9vbF93b2xpbmZvICp3b2wpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTc4Mi1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjc4MzpzdGF0aWMgaW50IGFuODgwMXJfb2ZfaW5pdF9sZWRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4ICpsZWRfY2ZnKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtNzg0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtODI5LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6ODMwOnN0YXRpYyBpbnQgYW44ODAxcl9yZ21paV9yeGRlbGF5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgZW5hYmxlLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtODMxLVxcdFxcdFxcdFxcdCB1MTYgZGVsYXlfc3RlcHMpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTg1MS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjg1MjpzdGF0aWMgaW50IGFuODgwMXJfcmdtaWlfdHhkZWxheShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIGVuYWJsZSxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTg1My1cXHRcXHRcXHRcXHQgdTE2IGRlbGF5X3N0ZXBzKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy04NzAtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo4NzE6c3RhdGljIGludCBhbjg4MDFyX3JnbWlpX2RlbGF5X2NvbmZpZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtODcyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTAxLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6OTAyOnN0YXRpYyBpbnQgYW44ODAxcl9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTAzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTk4LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6OTk5OnN0YXRpYyBpbnQgYW44ODAxcl9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMTAwMC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTEwMzMtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzoxMDM0OnN0YXRpYyBpbnQgYW44ODAxcl9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMTAzNS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTEwNTktXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzoxMDYwOnN0YXRpYyBpbnQgYW44ODAxcl9zdXNwZW5kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0xMDYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMTA5MC1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjEwOTE6c3RhdGljIGludCBhbjg4MDFyX3Jlc3VtZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMTA5Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0xOTc9c3RydWN0IGVuODgxMWhfcHJpdiB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yMDEtXFx0c3RydWN0IGNsa19od1xcdFxcdGh3O1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjIwMjpcXHRzdHJ1Y3QgcGh5X2RldmljZVxcdCpwaHlkZXY7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjAzLVxcdHVuc2lnbmVkIGludFxcdFxcdGNrb19pc19lbmFibGVkO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9MjQ4PXN0YXRpYyBpbnQgX19haXJfcGJ1c19yZWdfd3JpdGUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjcyLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjI3MzpzdGF0aWMgaW50IF9fYWlyX3dyaXRlX2J1ZihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MzIgYWRkcmVzcyxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yNzQtXFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTMwOC1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzozMDk6c3RhdGljIGludCBhaXJfd3JpdGVfYnVmKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUzMiBhZGRyZXNzLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTMxMC1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTMyNi1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzozMjc6c3RhdGljIGludCBlbjg4MTFoX3dhaXRfbWN1X3JlYWR5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTM0OC1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzozNDk6c3RhdGljIGludCBhbjg4MTFoYl9jaGVja19jcmMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIHNldDEsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzUwLVxcdFxcdFxcdCAgICAgIHUzMiBtb24yLCB1MzIgbW9uMylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTM4Ni1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzozODc6c3RhdGljIHZvaWQgZW44ODExaF9wcmludF9md192ZXJzaW9uKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzg4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTM5Ni1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzozOTc6c3RhdGljIGludCBhbjg4MTFoYl9sb2FkX2ZpbGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgY29uc3QgY2hhciAqbmFtZSxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0zOTgtXFx0XFx0XFx0ICAgICAgdTMyIGFkZHJlc3MpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy00MTItXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDEzOnN0YXRpYyBpbnQgYW44ODExaGJfbWN1X2Fzc2VydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTQxNC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy00MzYtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDM3OnN0YXRpYyBpbnQgYW44ODExaGJfbWN1X2RlYXNzZXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDM4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTQ2MS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo0NjI6c3RhdGljIGludCBhbjg4MTFoYl9sb2FkX2Zpcm13YXJlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDYzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTUwMS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1MDI6c3RhdGljIGludCBlbjg4MTFoX2xvYWRfZmlybXdhcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01MDMte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTU3LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjU1ODpzdGF0aWMgaW50IGVuODgxMWhfcmVzdGFydF9tY3Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01NTkte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTc5LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjU4MDpzdGF0aWMgaW50IGFpcl9od19sZWRfb25fc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LCBib29sIG9uKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTU4MS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02MDktXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NjEwOnN0YXRpYyBpbnQgYWlyX2h3X2xlZF9ibGlua19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjExLVxcdFxcdFxcdFxcdGJvb2wgYmxpbmtpbmcpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02MzYtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NjM3OnN0YXRpYyBpbnQgYWlyX2xlZF9ibGlua19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjM4LVxcdFxcdFxcdCAgICAgdW5zaWduZWQgbG9uZyAqZGVsYXlfb24sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02NjktXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NjcwOnN0YXRpYyBpbnQgYWlyX2xlZF9icmlnaHRuZXNzX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02NzEtXFx0XFx0XFx0XFx0ICBlbnVtIGxlZF9icmlnaHRuZXNzIHZhbHVlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjk0LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjY5NTpzdGF0aWMgaW50IGFpcl9sZWRfaHdfY29udHJvbF9nZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjk2LVxcdFxcdFxcdFxcdCAgdW5zaWduZWQgbG9uZyAqcnVsZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03MDctXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NzA4OnN0YXRpYyBpbnQgYWlyX2xlZF9od19jb250cm9sX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03MDktXFx0XFx0XFx0XFx0ICB1bnNpZ25lZCBsb25nIHJ1bGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzY4LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc2OTpzdGF0aWMgaW50IGFpcl9sZWRfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCwgdTggc3RhdGUsIHU4IHBvbClcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03NzAte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzk2LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc5NzpzdGF0aWMgaW50IGFpcl9sZWRzX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IG51bSwgaW50IGR1ciwgaW50IG1vZGUpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzk4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTg0NS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4NDY6c3RhdGljIGludCBlbjg4MTFoX2xlZF9od19pc19zdXBwb3J0ZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODQ3LVxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBsb25nIHJ1bGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9ODU5PXN0YXRpYyB1bnNpZ25lZCBsb25nIGFuODgxMWhiX2Nsa19yZWNhbGNfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTg2Mi1cXHRzdHJ1Y3QgZW44ODExaF9wcml2ICpwcml2ID0gY2xrX2h3X3RvX2VuODgxMWhfcHJpdihodyk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6ODYzOlxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSBwcml2LVxcdTAwM2VwaHlkZXY7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODY0LVxcdHUzMiBwYnVzX3ZhbHVlO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9ODc0PXN0YXRpYyBpbnQgYW44ODExaGJfY2xrX2VuYWJsZShzdHJ1Y3QgY2xrX2h3ICpodylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTg3Ni1cXHRzdHJ1Y3QgZW44ODExaF9wcml2ICpwcml2ID0gY2xrX2h3X3RvX2VuODgxMWhfcHJpdihodyk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6ODc3OlxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSBwcml2LVxcdTAwM2VwaHlkZXY7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODc4LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9ODg0PXN0YXRpYyB2b2lkIGFuODgxMWhiX2Nsa19kaXNhYmxlKHN0cnVjdCBjbGtfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODg2LVxcdHN0cnVjdCBlbjg4MTFoX3ByaXYgKnByaXYgPSBjbGtfaHdfdG9fZW44ODExaF9wcml2KGh3KTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4ODc6XFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHByaXYtXFx1MDAzZXBoeWRldjtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy04ODgtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz04OTM9c3RhdGljIGludCBhbjg4MTFoYl9jbGtfaXNfZW5hYmxlZChzdHJ1Y3QgY2xrX2h3ICpodylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTg5NS1cXHRzdHJ1Y3QgZW44ODExaF9wcml2ICpwcml2ID0gY2xrX2h3X3RvX2VuODgxMWhfcHJpdihodyk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6ODk2OlxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSBwcml2LVxcdTAwM2VwaHlkZXY7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODk3LVxcdHUzMiBwYnVzX3ZhbHVlO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9OTU4PXN0YXRpYyB1bnNpZ25lZCBsb25nIGVuODgxMWhfY2xrX3JlY2FsY19yYXRlKHN0cnVjdCBjbGtfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtOTYxLVxcdHN0cnVjdCBlbjg4MTFoX3ByaXYgKnByaXYgPSBjbGtfaHdfdG9fZW44ODExaF9wcml2KGh3KTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo5NjI6XFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHByaXYtXFx1MDAzZXBoeWRldjtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy05NjMtXFx0dTMyIHBidXNfdmFsdWU7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz05NzM9c3RhdGljIGludCBlbjg4MTFoX2Nsa19lbmFibGUoc3RydWN0IGNsa19odyAqaHcpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy05NzUtXFx0c3RydWN0IGVuODgxMWhfcHJpdiAqcHJpdiA9IGNsa19od190b19lbjg4MTFoX3ByaXYoaHcpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjk3NjpcXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gcHJpdi1cXHUwMDNlcGh5ZGV2O1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTk3Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTk4Mz1zdGF0aWMgdm9pZCBlbjg4MTFoX2Nsa19kaXNhYmxlKHN0cnVjdCBjbGtfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtOTg1LVxcdHN0cnVjdCBlbjg4MTFoX3ByaXYgKnByaXYgPSBjbGtfaHdfdG9fZW44ODExaF9wcml2KGh3KTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo5ODY6XFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHByaXYtXFx1MDAzZXBoeWRldjtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy05ODctXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz05OTI9c3RhdGljIGludCBlbjg4MTFoX2Nsa19pc19lbmFibGVkKHN0cnVjdCBjbGtfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtOTk0LVxcdHN0cnVjdCBlbjg4MTFoX3ByaXYgKnByaXYgPSBjbGtfaHdfdG9fZW44ODExaF9wcml2KGh3KTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo5OTU6XFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHByaXYtXFx1MDAzZXBoeWRldjtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy05OTYtXFx0dTMyIHBidXNfdmFsdWU7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0xMDMyPXN0YXRpYyBpbnQgZW44ODExaF9jbGtfcHJvdmlkZXJfc2V0dXAoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgY2xrX2h3ICpodylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEwNTYtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTA1NzpzdGF0aWMgaW50IGVuODgxMWhfbGVkc19zZXR1cChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEwNTgte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTA3My1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMDc0OnN0YXRpYyBpbnQgYW44ODExaGJfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMDc1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTExNDQtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTE0NTpzdGF0aWMgaW50IGVuODgxMWhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMTQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTExODUtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTE4NjpzdGF0aWMgaW50IGFuODgxMWhiX2NvbmZpZ19zZXJkZXNfcG9sYXJpdHkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMTg3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEyMTYtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTIxNzpzdGF0aWMgaW50IGVuODgxMWhfY29uZmlnX3NlcmRlc19wb2xhcml0eShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEyMTgte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTI1My1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMjU0OnN0YXRpYyBpbnQgYW44ODExaGJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMjU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEyODAtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTI4MTpzdGF0aWMgaW50IGVuODgxMWhfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMjE6NTI6NDUuMzQ1ODcwMDM5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwNDg0MDk0MDA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgRGl2ZSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgdGhlIFBIWSBkcml2ZXIgY29uZmlndXJhdGlvbnMgbGl2ZSwgYW5kIHRoYXQncyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyB3aG9sZSBuZXR3b3JraW5nIFBIWSB0aGluZyBpcyBzZXQgdXAgd2l0aGluIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtLiBJJ20gdGhpbmtpbmcgYWJvdXQgZGVwZW5kZW5jeSBkZWZpbml0aW9ucywgZmVhdHVyZSBmbGFncywgYW5kIGRlZmF1bHQgc2VsZWN0aW9uc+KAlHRoZSB3aG9sZSBLY29uZmlnIGVuY2hpbGFkYS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVudGFsIG1hcCBvZiB3aGljaCBQSFkgZHJpdmVycyBhcmUgYXZhaWxhYmxlLCB3aGF0IHRoZWlyIGtleSBjaGFyYWN0ZXJpc3RpY3MgYXJlIChsaWtlIGlmIHRoZXkncmUgZ2VuZXJpYyBvciBzcGVjaWZpYyB0byBjZXJ0YWluIGhhcmR3YXJlKSwgYW5kIGhvdyB0aGV5IHRpZSBpbnRvIHRoZSBicm9hZGVyIG5ldHdvcmsgc3Vic3lzdGVtLiBTbywgbGV0J3MgcHVsbCB1cCB0aGF0IGZpbGUgYW5kIGdldCB0byB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDYwMywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDIxOjUyOjU1LjgyOTk2NjEzM1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NzM2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBQSFkgTGF5ZXIgQ29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgUEhZTElOS1xcbiAgIDc6XFx0XFx0dHJpc3RhdGVcXG4gICA4OlxcdFxcdHNlbGVjdCBQSFlMSUJcXG4gICA5OlxcdFxcdHNlbGVjdCBTV1BIWVxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBQSFlsaW5rIG1vZGVscyB0aGUgbGluayBiZXR3ZWVuIHRoZSBQSFkgYW5kIE1BQywgYWxsb3dpbmcgZml4ZWRcXG4gIDEyOlxcdFxcdCAgY29uZmlndXJhdGlvbiBsaW5rcywgUEhZcywgYW5kIFNlcmRlcyBsaW5rcyB3aXRoIE1BQyBsZXZlbFxcbiAgMTM6XFx0XFx0ICBhdXRvbmVnb3RpYXRpb24gbW9kZXMuXFxuICAxNDpcXHRcXG4gIDE1OlxcdG1lbnVjb25maWcgUEhZTElCXFxuICAxNjpcXHRcXHR0cmlzdGF0ZSBcXFwiUEhZIERldmljZSBzdXBwb3J0IGFuZCBpbmZyYXN0cnVjdHVyZVxcXCJcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgRXRoZXJuZXQgY29udHJvbGxlcnMgYXJlIHVzdWFsbHkgYXR0YWNoZWQgdG8gUEhZXFxuICAxOTpcXHRcXHQgIGRldmljZXMuICBUaGlzIG9wdGlvbiBwcm92aWRlcyBpbmZyYXN0cnVjdHVyZSBmb3JcXG4gIDIwOlxcdFxcdCAgbWFuYWdpbmcgUEhZIGRldmljZXMuXFxuICAyMTpcXHRcXG4gIDIyOlxcdGlmIFBIWUxJQlxcbiAgMjM6XFx0XFxuICAyNDpcXHRjb25maWcgU1dQSFlcXG4gIDI1OlxcdFxcdGJvb2xcXG4gIDI2OlxcdFxcbiAgMjc6XFx0Y29uZmlnIFBIWV9QQUNLQUdFXFxuICAyODpcXHRcXHQgdHJpc3RhdGVcXG4gIDI5OlxcdFxcbiAgMzA6XFx0Y29uZmlnIExFRF9UUklHR0VSX1BIWVxcbiAgMzE6XFx0XFx0Ym9vbCBcXFwiU3VwcG9ydCBMRUQgdHJpZ2dlcnMgZm9yIHRyYWNraW5nIGxpbmsgc3RhdGVcXFwiXFxuICAzMjpcXHRcXHRkZXBlbmRzIG9uIExFRFNfVFJJR0dFUlNcXG4gIDMzOlxcdFxcdGhlbHBcXG4gIDM0OlxcdFxcdCAgQWRkcyBzdXBwb3J0IGZvciBhIHNldCBvZiBMRUQgdHJpZ2dlciBldmVudHMgcGVyLVBIWS4gIExpbmtcXG4gIDM1OlxcdFxcdCAgc3RhdGUgY2hhbmdlIHdpbGwgdHJpZ2dlciB0aGUgZXZlbnRzLCBmb3IgY29uc3VtcHRpb24gYnkgYW5cXG4gIDM2OlxcdFxcdCAgTEVEIGNsYXNzIGRyaXZlci4gIFRoZXJlIGFyZSB0cmlnZ2VycyBmb3IgZWFjaCBsaW5rIHNwZWVkIGN1cnJlbnRseVxcbiAgMzc6XFx0XFx0ICBzdXBwb3J0ZWQgYnkgdGhlIFBIWSBhbmQgYWxzbyBhIG9uZSBjb21tb24gXFxcImxpbmtcXFwiIHRyaWdnZXIgYXMgYVxcbiAgMzg6XFx0XFx0ICBsb2dpY2FsLW9yIG9mIGFsbCB0aGUgbGluayBzcGVlZCBvbmVzLlxcbiAgMzk6XFx0XFx0ICBBbGwgdGhlc2UgdHJpZ2dlcnMgYXJlIG5hbWVkIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIHBhdHRlcm46XFxuICA0MDpcXHRcXHQgICAgICBcXHUwMDNjbWlpIGJ1cyBpZFxcdTAwM2U6XFx1MDAzY3BoeVxcdTAwM2U6XFx1MDAzY3NwZWVkXFx1MDAzZVxcbiAgNDE6XFx0XFxuICA0MjpcXHRcXHQgIFdoZXJlIHNwZWVkIGlzIGluIHRoZSBmb3JtOlxcbiAgNDM6XFx0XFx0XFx0XFx1MDAzY1NwZWVkIGluIG1lZ2FiaXRzXFx1MDAzZU1icHMgT1IgXFx1MDAzY1NwZWVkIGluIGdpZ2FiaXRzXFx1MDAzZUdicHMgT1IgbGlua1xcbiAgNDQ6XFx0XFx0XFx0Zm9yIGFueSBzcGVlZCBrbm93biB0byB0aGUgUEhZLlxcbiAgNDU6XFx0XFxuICA0NjpcXHRjb25maWcgT1BFTl9BTExJQU5DRV9IRUxQRVJTXFxuICA0NzpcXHRcXHRib29sXFxuICA0ODpcXHRcXG4gIDQ5OlxcdGNvbmZpZyBQSFlMSUJfTEVEU1xcbiAgNTA6XFx0XFx0ZGVmX2Jvb2wgT0ZcXG4gIDUxOlxcdFxcdGRlcGVuZHMgb24gTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9UEhZTElCXFxuICA1MjpcXHRcXHRoZWxwXFxuICA1MzpcXHRcXHQgIFdoZW4gTEVEIGNsYXNzIHN1cHBvcnQgaXMgZW5hYmxlZCwgcGh5bGliIGNhbiBhdXRvbWF0aWNhbGx5XFxuICA1NDpcXHRcXHQgIHByb2JlIExFRCBzZXR0aW5nIGZyb20gZGV2aWNlIHRyZWUuXFxuICA1NTpcXHRcXG4gIDU2OlxcdGNvbmZpZyBGSVhFRF9QSFlcXG4gIDU3OlxcdFxcdHRyaXN0YXRlIFxcXCJNRElPIEJ1cy9QSFkgZW11bGF0aW9uIHdpdGggZml4ZWQgc3BlZWQvbGluayBQSFlzXFxcIlxcbiAgNTg6XFx0XFx0c2VsZWN0IFNXUEhZXFxuICA1OTpcXHRcXHRoZWxwXFxuICA2MDpcXHRcXHQgIEFkZHMgdGhlIHBsYXRmb3JtIFxcXCJmaXhlZFxcXCIgTURJTyBCdXMgdG8gY292ZXIgdGhlIGJvYXJkcyB0aGF0IHVzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo1Mjo1NS44MzAwNTQ5ODNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTQ3OTQ5MTc1MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBQSFlMSU5LYCBhbmQgYFBIWUxJQmAgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBNeSBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nIHdoYXQgc3BlY2lmaWNhbGx5IHB1bGxzIGluIGBQSFlMSU5LYCBhbmQgYFBIWUxJQmAuIEdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGtlcm5lbCdzIG5ldHdvcmtpbmcgc3RhY2ssIHRoZSBmaXJzdCBwbGFjZSBJJ2xsIHRhcmdldCBpcyB0aGUgZGV2aWNlIGRyaXZlciBjb25maWd1cmF0aW9uLiBJJ20gdGhpbmtpbmcgZHJpdmVycyByZWxhdGVkIHRvIG5ldHdvcmsgaW50ZXJmYWNlcyBhcmUgdGhlIG1vc3QgbGlrZWx5IGNhbmRpZGF0ZXMuXG5cbk15IHBsYW4gaXMgdG8gc3RhcnQgd2l0aCBhIGBncmVwYCB0aHJvdWdoIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzLiBUaGlzIG1lYW5zIGRpdmluZyBpbnRvIGBkcml2ZXJzL25ldC9LY29uZmlnYCBhbmQsIGRlcGVuZGluZyBvbiB0aGUgYXJjaGl0ZWN0dXJlIEknbSB3b3JraW5nIHdpdGgsIHBvc3NpYmx5IGNoZWNraW5nIHdpdGhpbiBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgIHRvby4gSSBleHBlY3QgYFBIWUxJTktgIGFuZCBgUEhZTElCYCB3aWxsIGJlIGluY2x1ZGVkLCBhbmQgbXkgYWltIGlzIHRvIGZpbmQgKndoZXJlKiBpbiB0aGUgaGllcmFyY2h5IHRoZXNlIGFyZSBzZWxlY3RlZCwgYW5kIHVuZGVyIHdoYXQgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMuIFRoYXQgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIHRyaWdnZXJpbmcgY29uZGl0aW9ucyBJJ20gaW50ZXJlc3RlZCBpbiBhbmQgdGhlaXIgcm9sZSBpbiB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgdGhlIG5ldHdvcmtpbmcgc3Vic3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTU0OCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMjE6NTM6MTAuNjI0OTc2MTA2WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjY2MDE0ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IFBIWUxJTktcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9LY29uZmlnPTI9Y29uZmlnIEFMVEVSQV9UU0VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9LY29uZmlnLTYtXFx0c2VsZWN0IFBIWUxJQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9LY29uZmlnOjc6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvS2NvbmZpZy04LVxcdHNlbGVjdCBQQ1NfTFlOWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9LY29uZmlnPTIwPWNvbmZpZyBBRzcxWFhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZy0yMi1cXHRkZXBlbmRzIG9uIEFUSDc5IHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZzoyMzpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZy0yNC1cXHRpbXBseSBORVRfU0VMRlRFU1RTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc9MjI9Y29uZmlnIE1BQ0JcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0yNS1cXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnOjI2OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTI3LVxcdHNlbGVjdCBDUkMzMlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc9ODA9Y29uZmlnIFVDQ19HRVRIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy04My1cXHRzZWxlY3QgRlNMX1BRX01ESU9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzo4NDpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTg1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL0tjb25maWc9Mj1tZW51Y29uZmlnIEZTTF9EUEFBX0VUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvS2NvbmZpZy00LVxcdGRlcGVuZHMgb24gRlNMX0RQQUEgXFx1MDAyNlxcdTAwMjYgRlNMX0ZNQU5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9LY29uZmlnOjU6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9LY29uZmlnLTYtXFx0c2VsZWN0IFBDU19MWU5YXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZz0yPWNvbmZpZyBGU0xfRFBBQTJfRVRIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy00LVxcdGRlcGVuZHMgb24gRlNMX01DX0JVUyBcXHUwMDI2XFx1MDAyNiBGU0xfTUNfRFBJT1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnOjU6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy02LVxcdHNlbGVjdCBQQ1NfTFlOWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWc9MzM9Y29uZmlnIEZTTF9EUEFBMl9TV0lUQ0hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnLTM3LVxcdGRlcGVuZHMgb24gRlNMX01DX0JVUyBcXHUwMDI2XFx1MDAyNiBGU0xfTUNfRFBJT1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnOjM4OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctMzktXFx0c2VsZWN0IFBDU19MWU5YXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZz0zMD1jb25maWcgRlNMX0VORVRDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZy0zNy1cXHRzZWxlY3QgTlhQX0VORVRDX1BGX0NPTU1PTlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnOjM4OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctMzktXFx0c2VsZWN0IFBDU19MWU5YXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZz00OD1jb25maWcgTlhQX0VORVRDNFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctNTUtXFx0c2VsZWN0IE5YUF9OVE1QXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc6NTY6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZy01Ny1cXHRzZWxlY3QgRElNTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZz02Nj1jb25maWcgRlNMX0VORVRDX1ZGXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZy03MS1cXHRzZWxlY3QgRlNMX0VORVRDX01ESU9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZzo3MjpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnLTczLVxcdHNlbGVjdCBESU1MSUJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL0tjb25maWc9Mj1jb25maWcgRlNMX0ZNQU5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL0tjb25maWctNS1cXHRzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnOjY6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnLTctXFx0c2VsZWN0IFBDU19MWU5YXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9LY29uZmlnPTI9Y29uZmlnIEZTX0VORVRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L0tjb25maWctNS1cXHRzZWxlY3QgTUlJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvS2NvbmZpZzo2OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvS2NvbmZpZy03LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnPTU5PWNvbmZpZyBNVk5FVEFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy02Mi1cXHRzZWxlY3QgTVZNRElPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnOjYzOlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTY0LVxcdHNlbGVjdCBQQUdFX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZz04Nj1jb25maWcgTVZQUDJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy04OS1cXHRzZWxlY3QgTVZNRElPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnOjkwOlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTkxLVxcdHNlbGVjdCBQQUdFX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvS2NvbmZpZz02PWNvbmZpZyBQUkVTVEVSQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9LY29uZmlnLTEwLVxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvS2NvbmZpZzoxMTpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvS2NvbmZpZy0xMi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnPTE0PWNvbmZpZyBORVRfTUVESUFURUtfU09DXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTE3LVxcdHNlbGVjdCBQSU5DVFJMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZzoxODpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMTktXFx0c2VsZWN0IERJTUxJQlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnPTIwPWNvbmZpZyBGQk5JQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTI5LVxcdHNlbGVjdCBQQ1NfWFBDU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZzozMDpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0zMS1cXHRzZWxlY3QgUExETUZXXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZz00NT1jb25maWcgTEFONzQzWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWctNTEtXFx0c2VsZWN0IENSQzMyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWc6NTI6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZy01My1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnPTE9Y29uZmlnIExBTjk2NlhfU1dJVENIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnLTctXFx0ZGVwZW5kcyBvbiBCUklER0UgfHwgQlJJREdFPW5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnOjg6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnLTktXFx0c2VsZWN0IFBBR0VfUE9PTFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnPTE9Y29uZmlnIFNQQVJYNV9TV0lUQ0hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZy04LVxcdGRlcGVuZHMgb24gQlJJREdFIHx8IEJSSURHRT1uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnOjk6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctMTAtXFx0c2VsZWN0IFBIWV9TUEFSWDVfU0VSREVTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWc9MTU9Y29uZmlnIE1TQ0NfT0NFTE9UX1NXSVRDSF9MSUJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2MvS2NvbmZpZy0xOS1cXHRzZWxlY3QgUEFDS0lOR1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2MvS2NvbmZpZzoyMDpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2MvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnPTQyPWNvbmZpZyBSRU5FU0FTX0VUSEVSX1NXSVRDSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnLTQ3LVxcdHNlbGVjdCBNSUlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWc6NDg6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWctNDktXFx0c2VsZWN0IFJFTkVTQVNfR0VONF9QVFBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mj1jb25maWcgU1RNTUFDX0VUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy05LVxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEwOlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMS1cXHRzZWxlY3QgQ1JDMzJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnPTI2PWNvbmZpZyBURUhVVElfVE40MFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWctMzAtXFx0c2VsZWN0IEZXX0xPQURFUlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnOjMxOlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWctMzItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz05Nj1jb25maWcgVElfSzNfQU02NV9DUFNXX05VU1NcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTAwLVxcdHNlbGVjdCBUSV9EQVZJTkNJX01ESU9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjEwMTpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTAyLVxcdHNlbGVjdCBQQUdFX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz0xOT1jb25maWcgTElCV1hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0yMy1cXHRzZWxlY3QgRElNTElCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjI0OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTI1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnPTI2PWNvbmZpZyBYSUxJTlhfQVhJX0VNQUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTI5LVxcdGRlcGVuZHMgb24gWElMSU5YX0RNQVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnOjMwOlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWctMzEtXFx0c2VsZWN0IERJTUxJQlxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL0tjb25maWc9OD1jb25maWcgUENTX1hQQ1NcXG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZy05LVxcdHRyaXN0YXRlIFxcXCJTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IFhQQ1NcXFwiXFxuZHJpdmVycy9uZXQvcGNzL0tjb25maWc6MTA6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZy0xMS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0xMTM9Y29uZmlnIFVTQl9MQU43OFhYXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMTUtXFx0c2VsZWN0IE1JSVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjExNjpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTExNy1cXHRzZWxlY3QgTUlDUk9DSElQX1BIWVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MTY2PWNvbmZpZyBVU0JfTkVUX0FYODgxN1hcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTE2OS1cXHRzZWxlY3QgQ1JDMzJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxNzA6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNzEtXFx0c2VsZWN0IEFYODg3OTZCX1BIWVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo1MzoxMC43NTE1ODI3MTZaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTYwMDQ1ODEzOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0LlxuXG4qKkV0aGVybmV0IERldmljZSBEcml2ZXJzIFx1MDAyNiBFbXVsYXRpb24gZm9yIFRlc3RpbmcqKlxuXG5SaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoZXNlIFVTQiBFdGhlcm5ldCBkcml2ZXJzLCBgVVNCX0xBTjc4WFhgIGFuZCBgVVNCX05FVF9BWDg4MTdYYC4gU2VlbXMgbGlrZSB0aGV5IGJvdGggaG9vayBpbnRvIGBQSFlMSU5LYCBhbmQgYFBIWUxJQmAsIHdoaWNoIGlzIHN0YW5kYXJkIGZvciBoYW5kbGluZyB0aGUgcGh5c2ljYWwgbGF5ZXIgaW50ZXJmYWNlLiBUaGF0J3MgYSBzb2xpZCBhcmNoaXRlY3R1cmFsIGNob2ljZSwgbm90aGluZyBzdXJwcmlzaW5nIHRoZXJlLlxuXG5UaGUgZXhjaXRpbmcgcGFydCBpcyB0aGF0IEkgY2FuIGVtdWxhdGUgdGhlc2UgVVNCIEV0aGVybmV0IGRldmljZXMgdXNpbmcgVVNCIHJhdy1nYWRnZXQgb3IgZHVtbXlfaGNkIHdpdGhpbiBzeXprYWxsZXIgb3IgUUVNVSEgSSBjYW4gbGV2ZXJhZ2UgdGhhdCB0byB0ZXN0IHRoZW0gdGhvcm91Z2hseS5cblxuQWxzbywgSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgYE5FVF9EU0FgIGFsc28gc2VsZWN0cyBgUEhZTElOS2AuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgYG5ldC9kc2EvS2NvbmZpZ2AgZmlsZSB0byBjb25maXJtIGhvdyB0aGF0IHRpZXMgaW50byB0aGUgb3ZlcmFsbCBwaWN0dXJlLiBHb3R0YSBtYWtlIHN1cmUgSSdtIGNvbnNpZGVyaW5nIGFsbCBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIGFuZCBkZXBlbmRlbmNpZXMgZHVyaW5nIG15IHRlc3Rpbmcgc3RyYXRlZ3kuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIGFuIGV4aGF1c3RpdmUgdGVzdCBwbGFuLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDg4MywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDIxOjUzOjI2Ljc1NjE2NjAyNloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg3ODc5MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUEhZTElOS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvZHNhL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvZHNhL0tjb25maWc9Mz1tZW51Y29uZmlnIE5FVF9EU0FcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy05LVxcdHNlbGVjdCBORVRfU1dJVENIREVWXFxubmV0L2RzYS9LY29uZmlnOjEwOlxcdHNlbGVjdCBQSFlMSU5LXFxubmV0L2RzYS9LY29uZmlnLTExLVxcdHNlbGVjdCBORVRfREVWTElOS1xcbi0tXFxubmV0L2RzYS9wb3J0LmM9MTYxNz1pbnQgZHNhX3BvcnRfcGh5bGlua19jcmVhdGUoc3RydWN0IGRzYV9wb3J0ICpkcClcXG4tLVxcbm5ldC9kc2EvcG9ydC5jLTE2NDktXFx0aWYgKElTX0VSUihwbCkpIHtcXG5uZXQvZHNhL3BvcnQuYzoxNjUwOlxcdFxcdHByX2VycihcXFwiZXJyb3IgY3JlYXRpbmcgUEhZTElOSzogJWxkXFxcXG5cXFwiLCBQVFJfRVJSKHBsKSk7XFxubmV0L2RzYS9wb3J0LmMtMTY1MS1cXHRcXHRyZXR1cm4gUFRSX0VSUihwbCk7XFxuLS1cXG5uZXQvZHNhL3BvcnQuYz0xNjY1PXN0YXRpYyBpbnQgZHNhX3NoYXJlZF9wb3J0X3BoeWxpbmtfcmVnaXN0ZXIoc3RydWN0IGRzYV9wb3J0ICpkcClcXG4tLVxcbm5ldC9kc2EvcG9ydC5jLTE2NzEtXFx0ZHAtXFx1MDAzZXBsX2NvbmZpZy5kZXYgPSBkcy1cXHUwMDNlZGV2O1xcbm5ldC9kc2EvcG9ydC5jOjE2NzI6XFx0ZHAtXFx1MDAzZXBsX2NvbmZpZy50eXBlID0gUEhZTElOS19ERVY7XFxubmV0L2RzYS9wb3J0LmMtMTY3My1cXG4tLVxcbm5ldC9kc2EvdXNlci5jPTI2NTQ9c3RhdGljIGludCBkc2FfdXNlcl9waHlfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKnVzZXJfZGV2KVxcbi0tXFxubmV0L2RzYS91c2VyLmMtMjY2Mi1cXHRkcC1cXHUwMDNlcGxfY29uZmlnLmRldiA9IFxcdTAwMjZ1c2VyX2Rldi1cXHUwMDNlZGV2O1xcbm5ldC9kc2EvdXNlci5jOjI2NjM6XFx0ZHAtXFx1MDAzZXBsX2NvbmZpZy50eXBlID0gUEhZTElOS19ORVRERVY7XFxubmV0L2RzYS91c2VyLmMtMjY2NC1cXG5uZXQvZHNhL3VzZXIuYy0yNjY1LVxcdC8qIFRoZSBnZXRfZml4ZWRfc3RhdGUgY2FsbGJhY2sgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHBvbGxpbmcgdGhlXFxubmV0L2RzYS91c2VyLmM6MjY2NjpcXHQgKiBsaW5rIEdQSU8gaW4gUEhZTElOSyAoc2VlIHBoeWxpbmtfZ2V0X2ZpeGVkX3N0YXRlKS4gIE9ubHkgc2V0XFxubmV0L2RzYS91c2VyLmMtMjY2Ny1cXHQgKiB0aGlzIGlmIHRoZSBzd2l0Y2ggcHJvdmlkZXMgc3VjaCBhIGNhbGxiYWNrLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo1MzoyNi44MDQ5NTc1MjJaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDYzNTcwNjQ3OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIE5ldHdvcmsgUEhZL1BIWUxpbmsgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJJ20gZXhhbWluaW5nIHRoaXMgcGF0Y2ggdG8gc2VlIHdoYXQncyBhY3R1YWxseSBjaGFuZ2luZyB1bmRlciB0aGUgaG9vZC4gSXQgc2VlbXMgdG8gYmUgY2xlYW5pbmcgdXAgc29tZSBlcnJvciBwYXRocyBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudCBpbiB0aGUgUEhZIChQaHlzaWNhbCBMYXllcikgYW5kIFBIWUxpbmsgc3Vic3lzdGVtcy4gIFNwZWNpZmljYWxseSwgaXQncyBhYm91dCBoYW5kbGluZyBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbnMgYW5kIGVuc3VyaW5nIHByb3BlciBjbGVhbnVwIG9mIFBIWSBkZXZpY2UgcG9pbnRlcnMsIGVzcGVjaWFsbHkgZHVyaW5nIHRoZSBicmluZ3VwL3RlYXJkb3duIGN5Y2xlcy5cblxuVGhlIGZpcnN0IHBhcnQgbG9va3MgYXQgYHBoeV9yZXN0b3JlX2dlbnBoeV9pcnFgLiBUaGlzIGZ1bmN0aW9uIHNlZW1zIHRvIGJlIG1ha2luZyBzdXJlIHRoZSBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbiBpcyBjb3JyZWN0bHkgcmVzdG9yZWQgd2hlbiB0aGUgZ2VuZXJpYyBQSFkgZHJpdmVyIGlzIHVzZWQsIHBhcnRpY3VsYXJseSBhZnRlciBhbiBlcnJvciBvciBkZXRhY2htZW50LiAgSXQncyBjcml0aWNhbCBiZWNhdXNlIGluY29ycmVjdCBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbiBjb3VsZCBsZWFkIHRvIGJyb2tlbiBuZXR3b3JrIGNvbm5lY3Rpdml0eSBvciBpbnN0YWJpbGl0eSwgYW5kIGlzIHRyaWdnZXJlZCBvbiB0aGUgZXJyb3IgcGF0aHMuXG5cblRoZSBzZWNvbmQgcGFydCBkZWFscyB3aXRoIGBwaHlsaW5rX2NsZWFyX3BoeWRldmAuICBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIHRvIGRpc2Fzc29jaWF0ZSBhIFBIWSBkZXZpY2UgZnJvbSBhIFBIWUxpbmsgaW5zdGFuY2UuIEl0J3MgaW52b2tlZCBpbiBgcGh5bGlua19kaXNjb25uZWN0X3BoeWAgYW5kIGFsc28gYXMgcGFydCBvZiBlcnJvciBoYW5kbGluZyBpbiBgcGh5bGlua19icmluZ3VwX3BoeWAsIG1ha2luZyBzdXJlIGEgUEhZIGRldmljZSBpc24ndCBsZWFrZWQgb24gYnJpbmd1cCBmYWlsdXJlcy4gIFRoaXMgaXMgaW1wb3J0YW50IGZvciBwcmV2ZW50aW5nIHJlc291cmNlIGxlYWtzIGFuZCBlbnN1cmluZyBQSFkgZGV2aWNlcyBjYW4gYmUgY2xlYW5seSByZS1hdHRhY2hlZC5cblxuRnVuY3Rpb25hbGx5LCBJIGNhbiBzZWUgdGhhdCB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgcmVhbCwgcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgc2NlbmFyaW9zLiAgRmFpbHVyZSB0byBwcm9wZXJseSBjbGVhciB0aGUgYHBoeWRldmAgcG9pbnRlciBjb3VsZCBsZWFkIHRvIHRoZSBgLUVCVVNZYCBlcnJvciBhbmQgcmV0cnkgZmFpbHVyZS4gIFRoZSBpbnRlcnJ1cHQgcmVzdG9yYXRpb24gZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBkdXJpbmcgUEhZIGF0dGFjaC4gQm90aCBhcmUgd29ydGggaW52ZXN0aWdhdGluZy5cblxuTm93LCBhY2NvcmRpbmcgdG8gdGhlIGd1aWRhbmNlLCBJIG5lZWQgdG8gZGVjaWRlIGlmIHRoaXMgd2FycmFudHMgZnV6emluZy4gSXQncyBub3QganVzdCBkb2N1bWVudGF0aW9uIG9yIGxvZ2dpbmcuICBJdCdzIG1vZGlmeWluZyBjb3JlIG5ldHdvcmsgUEhZIGxvZ2ljLCB3aGljaCBpcyB1c2VkIGFjcm9zcyBtYW55IGRpZmZlcmVudCBuZXR3b3JraW5nIGRyaXZlcnMuICBUaGUgY2hhbmdlcyBhcmUgaW4gcmVhY2hhYmxlIGVycm9yIHBhdGhzLCBhbmQgbm90IHNwZWNpZmljIHRvIGFueSBwYXJ0aWN1bGFyIGhhcmR3YXJlLiBJdCdzIG5vdCB2ZW5kb3Itc3BlY2lmaWMgb3IgdGllZCB0byBhIHNwZWNpYWxpemVkIFBDSWUgY2FyZCB0aGF0IGNhbid0IGJlIGVtdWxhdGVkLiBUaGVyZWZvcmUsIGl0J3MgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gaWRlbnRpZnkgYEZvY3VzU3ltYm9sc2AgYW5kIGBFbmFibGVDb25maWdzYC4gIEJhc2VkIG9uIHRoZSBpbnN0cnVjdGlvbnMsIHRoZSBgRm9jdXNTeW1ib2xzYCBhcmUgdGhlIG5vbi1zdGF0aWMsIGV4cG9ydGVkIGVudHJ5IHBvaW50cyBtb2RpZmllZCBieSBvciBkaXJlY3RseSBpbnZvbHZlZCBpbiB0aGUgcGF0Y2g6IGBwaHlfYXR0YWNoX2RpcmVjdGAsIGBwaHlfZGV0YWNoYCwgYHBoeWxpbmtfY29ubmVjdF9waHlgLCBgcGh5bGlua19kaXNjb25uZWN0X3BoeWAsIGBwaHlsaW5rX29mX3BoeV9jb25uZWN0YCwgYHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0YC5cblxuVGhlIHJlcXVpcmVkIGBFbmFibGVDb25maWdzYCBhcHBlYXIgdG8gYmUgYFBIWUxJQmAgYW5kIGBQSFlMSU5LYCBmcm9tIHRoZSBkcml2ZXIncyBtYWtlZmlsZS5cblxuU28sIGluIHN1bW1hcnk6IEkndmUgaWRlbnRpZmllZCBjcml0aWNhbCBsb2dpYywgcmVsZXZhbnQgc3ltYm9scywgYW5kIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgZnVydGhlciBmdXp6aW5nIGFuYWx5c2lzLiAgVGhpcyBwYXRjaCBtb2RpZmllcyByZWFjaGFibGUsIGNvcmUga2VybmVsIGxvZ2ljIGFuZCB3YXJyYW50cyBmdXJ0aGVyIGludmVzdGlnYXRpb24gdmlhIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NzQxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo1NDoxMy4xNjIwMjUwMzdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NTEyNTAwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnXFxcIlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz01MTI9c291cmNlIFxcXCJkcml2ZXJzL25ldC9pcGEvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnLTUxMy1cXG5kcml2ZXJzL25ldC9LY29uZmlnOjUxNDpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWctNTE1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo1NDoxMy44MDcxNTQ5MjhaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjcxNDcwMDI4OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlOlxuXG4qKkludmVzdGlnYXRpbmcgTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMuIEJhc2VkIG9uIHdoYXQgSSdtIGxvb2tpbmcgYXQsIG15IGluaXRpYWwgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gdGhlIGBkcml2ZXJzL25ldC9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGFyZSBjb250cm9sbGluZyB0aGlzIHBhcnRpY3VsYXIgYXNwZWN0IG9mIHRoZSBuZXR3b3JrIHN0YWNrLiBTcGVjaWZpY2FsbHksIEknbGwgc3RhcnQgYnkgdGFraW5nIGEgbG9vayBhdCBsaW5lIDUxNCBhbmQsIGdlbmVyYWxseSBzcGVha2luZywgdGhlIGJlZ2lubmluZyBvZiB0aGUgYGRyaXZlcnMvbmV0L0tjb25maWdgIGZpbGUuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGJyb2FkZXIgY29udGV4dCBhbmQgbGlrZWx5IHNvbWUga2V5IGRlcGVuZGVuY2llcyBvciBwYXJlbnQgb3B0aW9ucyB0aGF0IGluZmx1ZW5jZSB0aGUgYmVoYXZpb3IgSSdtIHNlZWluZy4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgYW5kIEkgbmVlZCB0byBzZWUgd2hhdCdzIHNldCB1cCBoZXJlIGluIGBLY29uZmlnYC4gVGhpcyBzaG91bGQgbGVhZCBtZSB0byB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODQ5OCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDIxOjU0OjQwLjk1NDE2MDYyOVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDkwMzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBOZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG1lbnVjb25maWcgTkVUREVWSUNFU1xcbiAgIDc6XFx0XFx0ZGVmYXVsdCB5IGlmIFVNTFxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBORVRcXG4gICA5OlxcdFxcdGJvb2wgXFxcIk5ldHdvcmsgZGV2aWNlIHN1cHBvcnRcXFwiXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFlvdSBjYW4gc2F5IE4gaGVyZSBpZiB5b3UgZG9uJ3QgaW50ZW5kIHRvIGNvbm5lY3QgeW91ciBMaW51eCBib3ggdG9cXG4gIDEyOlxcdFxcdCAgYW55IG90aGVyIGNvbXB1dGVyIGF0IGFsbC5cXG4gIDEzOlxcdFxcbiAgMTQ6XFx0XFx0ICBZb3UnbGwgaGF2ZSB0byBzYXkgWSBpZiB5b3VyIGNvbXB1dGVyIGNvbnRhaW5zIGEgbmV0d29yayBjYXJkIHRoYXRcXG4gIDE1OlxcdFxcdCAgeW91IHdhbnQgdG8gdXNlIHVuZGVyIExpbnV4LiBJZiB5b3UgYXJlIGdvaW5nIHRvIHJ1biBTTElQIG9yIFBQUCBvdmVyXFxuICAxNjpcXHRcXHQgIHRlbGVwaG9uZSBsaW5lIG9yIG51bGwgbW9kZW0gY2FibGUgeW91IG5lZWQgc2F5IFkgaGVyZS4gQ29ubmVjdGluZ1xcbiAgMTc6XFx0XFx0ICB0d28gbWFjaGluZXMgd2l0aCBwYXJhbGxlbCBwb3J0cyB1c2luZyBQTElQIG5lZWRzIHRoaXMsIGFzIHdlbGwgYXNcXG4gIDE4OlxcdFxcdCAgQVguMjUvS0lTUyBmb3Igc2VuZGluZyBJbnRlcm5ldCB0cmFmZmljIG92ZXIgYW1hdGV1ciByYWRpbyBsaW5rcy5cXG4gIDE5OlxcdFxcbiAgMjA6XFx0XFx0ICBTZWUgYWxzbyBcXFwiVGhlIExpbnV4IE5ldHdvcmsgQWRtaW5pc3RyYXRvcidzIEd1aWRlXFxcIiBieSBPbGFmIEtpcmNoIGFuZFxcbiAgMjE6XFx0XFx0ICBUZXJyeSBEYXdzb24uIEF2YWlsYWJsZSBhdCBcXHUwMDNjaHR0cDovL3d3dy50bGRwLm9yZy9ndWlkZXMuaHRtbFxcdTAwM2UuXFxuICAyMjpcXHRcXG4gIDIzOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWS5cXG4gIDI0OlxcdFxcbiAgMjU6XFx0IyBBbGwgdGhlIGZvbGxvd2luZyBzeW1ib2xzIGFyZSBkZXBlbmRlbnQgb24gTkVUREVWSUNFUyAtIGRvIG5vdCByZXBlYXRcXG4gIDI2OlxcdCMgdGhhdCBmb3IgZWFjaCBvZiB0aGUgc3ltYm9scy5cXG4gIDI3OlxcdGlmIE5FVERFVklDRVNcXG4gIDI4OlxcdFxcbiAgMjk6XFx0Y29uZmlnIE1JSVxcbiAgMzA6XFx0XFx0dHJpc3RhdGVcXG4gIDMxOlxcdFxcbiAgMzI6XFx0Y29uZmlnIE5FVF9DT1JFXFxuICAzMzpcXHRcXHRkZWZhdWx0IHlcXG4gIDM0OlxcdFxcdGJvb2wgXFxcIk5ldHdvcmsgY29yZSBkcml2ZXIgc3VwcG9ydFxcXCJcXG4gIDM1OlxcdFxcdGhlbHBcXG4gIDM2OlxcdFxcdCAgWW91IGNhbiBzYXkgTiBoZXJlIGlmIHlvdSBkbyBub3QgaW50ZW5kIHRvIHVzZSBhbnkgb2YgdGhlXFxuICAzNzpcXHRcXHQgIG5ldHdvcmtpbmcgY29yZSBkcml2ZXJzIChpLmUuIFZMQU4sIGJyaWRnaW5nLCBib25kaW5nLCBldGMuKVxcbiAgMzg6XFx0XFxuICAzOTpcXHRpZiBORVRfQ09SRVxcbiAgNDA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDIxOjU0OjQwLjk1NDQxNzM0WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE3OTUxNDQ2MDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFBIWSBMYXllciBhbmQgUGh5bGluayBTdWJzeXN0ZW0gQ2hhbmdlcyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCBiYXNlZCBvbiB0aGUgZGVwZW5kZW5jaWVzLCBoZXJlJ3Mgd2hhdCBJJ3ZlIGdvdC4gYE5FVERFVklDRVNgIGNsZWFybHkgZGVwZW5kcyBvbiBgTkVUYCwgYW5kIHdpdGhpbiBgTkVUREVWSUNFU2AsIHdlIGZpbmQgYFBIWUxJQmAuIGBQSFlMSU5LYCBpcyB0aGUgY29tcG9uZW50IHRoYXQgaW50ZXJhY3RzIHdpdGggYW5kIHNlbGVjdHMgYmV0d2VlbiBgUEhZTElCYCBhbmQgYFNXUEhZYC4gVG8gcmVhbGx5IHRlc3QgdGhpcywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ3ZlIGdvdCBhIHdheSB0byBleGVyY2lzZSBgcGh5bGlua2AgYW5kIGBwaHlsaWJgLiBJdCBsb29rcyBsaWtlIGRyaXZlcnMgbGlrZSBgTkVUX0RTQWAsIGBVU0JfTEFONzhYWGAsIGBVU0JfTkVUX0FYODgxN1hgLCBvciBgRklYRURfUEhZYCBjYW4gYmUgdXNlZCBmb3IgdGhhdC4gVGhlcmVmb3JlLCB0byBlbnN1cmUgSSBjYW4gYWN0dWFsbHkgdGVzdCB0aGVzZSBjaGFuZ2VzLCBJJ2xsIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBmb2xsb3dpbmcgY29uZmlncyBhcmUgZW5hYmxlZDpcblxuKiAgIGBORVRgXG4qICAgYE5FVERFVklDRVNgXG4qICAgYFBIWUxJQmBcbiogICBgUEhZTElOS2BcblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSdtIGdvaW5nIHRvIGRvdWJsZS1jaGVjayBldmVyeXRoaW5nIGFuZCBtYWtlIHN1cmUgdGhlIGZvcm1hdHRpbmcgaXMgYWxsIGNvcnJlY3QgYmVmb3JlIEkgY29udGludWUuXG5cblRoZSBwYXRjaCBmb2N1c2VzIG9uIHRoZXNlIGtleSBmdW5jdGlvbnM6XG5cbiogICBgcGh5X2F0dGFjaF9kaXJlY3RgXG4qICAgYHBoeV9kZXRhY2hgXG4qICAgYHBoeWxpbmtfY29ubmVjdF9waHlgXG4qICAgYHBoeWxpbmtfZGlzY29ubmVjdF9waHlgXG4qICAgYHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3RgXG4qICAgYHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0YFxuXG5JIGFsc28gbm90ZSB0aGUgaW1wb3J0YW5jZSBvZiBtYWtpbmcgc3VyZSB0aGVzZSBjb25maWd1cmF0aW9ucyBhcmUgc2V0LCBhcyBtZW50aW9uZWQgcHJldmlvdXNseTpcblxuKiAgIGBORVRgXG4qICAgYE5FVERFVklDRVNgXG4qICAgYFBIWUxJQmBcbiogICBgUEhZTElOS2BcblxuTG9va3MgbGlrZSB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gVGhlIGNoYW5nZXMgYXJlIGluIGNvcmUgUEhZIGxheWVyIGFuZCBwaHlsaW5rIHN1YnN5c3RlbSBjb2RlIChgcGh5X2RldmljZS5jYCBhbmQgYHBoeWxpbmsuY2ApLCBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyBlcnJvciBoYW5kbGluZyBhbmQgY2xlYW51cC4gVGhlIHBhdGNoIGVuc3VyZXMgdGhhdCBgcGwtXHUwMDNlcGh5ZGV2YCBpcyBjbGVhcmVkIHdoZW4gdGhlcmUgaXMgYSBmYWlsdXJlIGR1cmluZyBgcGh5bGlua19icmluZ3VwX3BoeWAsIHByZXZlbnRpbmcgc3RhbGUgcG9pbnRlcnMgYW5kIGVuc3VyaW5nIGEgc3VjY2Vzc2Z1bCBjb25uZWN0aW9uLiBJdCBhbHNvIHJlc3RvcmVzIGdlbmVyaWMgUEhZIElSUSBjb25maWd1cmF0aW9uIHVwb24gdW5iaW5kIG9yIGVycm9yIHVzaW5nIGBwaHlfcmVzdG9yZV9nZW5waHlfaXJxKClgLiBJIGNhbiBzZWUgdGhlc2UgY29kZSBwYXRocyBhcmUgYWN0dWFsbHkgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgZW11bGF0ZWQgVVNCIGV0aGVybmV0IGhhcmR3YXJlLCBmb3IgZXhhbXBsZSwgdGhlIEFYODgxNzkgb3IgTEFONzh4eCwgb3IgZXZlbiBEU0EgbG9vcGJhY2sgZGV2aWNlcy5cblxuQWxyaWdodCwgSSdtIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTkyMzgsIk91dHB1dFRva2VucyI6MjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzczLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMjE6NTQ6NTguOTA1ODY2NjRaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTYwMDM3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUXCIsXG4gICAgXCJORVRERVZJQ0VTXCIsXG4gICAgXCJQSFlMSUJcIixcbiAgICBcIlBIWUxJTktcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwaHlfYXR0YWNoX2RpcmVjdFwiLFxuICAgIFwicGh5X2RldGFjaFwiLFxuICAgIFwicGh5bGlua19jb25uZWN0X3BoeVwiLFxuICAgIFwicGh5bGlua19kaXNjb25uZWN0X3BoeVwiLFxuICAgIFwicGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3RcIixcbiAgICBcInBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3RcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFBIWSBsaWJyYXJ5IGFuZCBwaHlsaW5rIHN1YnN5c3RlbSBsb2dpYyBpbiBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGFuZCBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jLiBJdCBpbnRyb2R1Y2VzIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEgdG8gcHJvcGVybHkgcmVzdG9yZSBQSFkgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb25zIHdoZW4gZGV0YWNoaW5nIG9yIGZhaWxpbmcgdG8gYXR0YWNoIGEgZ2VuZXJpYyBQSFksIGFuZCBlbnN1cmVzIHBoeWxpbmtfY2xlYXJfcGh5ZGV2IGlzIGNhbGxlZCB0byBjbGVhbmx5IGRldGFjaCBhbmQgcmVzZXQgc3RhdGUgaWYgcGh5bGlua19icmluZ3VwX3BoeSBmYWlscy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgcmVhY2hhYmxlIG5ldHdvcmsgUEhZIHNldHVwL3RlYXJkb3duIGxvZ2ljIHVzZWQgYnkgZW11bGF0ZWQgbmV0d29yayBhZGFwdGVycyAoZS5nLiBVU0IgZXRoZXJuZXQgYWRhcHRlcnMgYW5kIERTQSBsb29wIGRldmljZXMpIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRcIixcbiAgICBcIk5FVERFVklDRVNcIixcbiAgICBcIlBIWUxJQlwiLFxuICAgIFwiUEhZTElOS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBoeV9hdHRhY2hfZGlyZWN0XCIsXG4gICAgXCJwaHlfZGV0YWNoXCIsXG4gICAgXCJwaHlsaW5rX2Nvbm5lY3RfcGh5XCIsXG4gICAgXCJwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5XCIsXG4gICAgXCJwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdFwiLFxuICAgIFwicGh5bGlua19vZl9waHlfY29ubmVjdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgUEhZIGxpYnJhcnkgYW5kIHBoeWxpbmsgc3Vic3lzdGVtIGxvZ2ljIGluIGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYW5kIGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMuIEl0IGludHJvZHVjZXMgcGh5X3Jlc3RvcmVfZ2VucGh5X2lycSB0byBwcm9wZXJseSByZXN0b3JlIFBIWSBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbnMgd2hlbiBkZXRhY2hpbmcgb3IgZmFpbGluZyB0byBhdHRhY2ggYSBnZW5lcmljIFBIWSwgYW5kIGVuc3VyZXMgcGh5bGlua19jbGVhcl9waHlkZXYgaXMgY2FsbGVkIHRvIGNsZWFubHkgZGV0YWNoIGFuZCByZXNldCBzdGF0ZSBpZiBwaHlsaW5rX2JyaW5ndXBfcGh5IGZhaWxzLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCByZWFjaGFibGUgbmV0d29yayBQSFkgc2V0dXAvdGVhcmRvd24gbG9naWMgdXNlZCBieSBlbXVsYXRlZCBuZXR3b3JrIGFkYXB0ZXJzIChlLmcuIFVTQiBldGhlcm5ldCBhZGFwdGVycyBhbmQgRFNBIGxvb3AgZGV2aWNlcykgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo1NDo1OC45ODE0NzQ3MDRaIiwiU2VxIjozMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNzE3MTAwNDE0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDIxOjU0OjU4Ljk4MTkxODY5NFoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjIwNzE3MDU1NTk5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIHN0YXRlIGNsZWFudXAgYW5kIElSUSByZXN0b3JhdGlvbiBpbiBQSFkgYW5kIHBoeWxpbmsgZHJpdmVyIGxpZmVjeWNsZXMgKHNwZWNpZmljYWxseSByZXN0b3JpbmcgcGh5ZGV2LVxcdTAwM2VpcnEgdXBvbiBnZW5lcmljIFBIWSBkcml2ZXIgZGV0YWNoL2F0dGFjaCBmYWlsdXJlIGFuZCBjbGVhcmluZyBwbC1cXHUwMDNlcGh5ZGV2IG9uIHBoeWxpbmtfYnJpbmd1cF9waHkgZmFpbHVyZSkuIFxcblxcblRoZXNlIGNoYW5nZXMgaW52b2x2ZSBtYW5hZ2luZyBvYmplY3QgbGlmZWN5Y2xlcywgcmVzZXR0aW5nIGludGVybmFsIHBvaW50ZXJzIHRvIE5VTEwsIGFuZCByZXNldHRpbmcgYm9vbGVhbiBmbGFncy4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgcmVhZHMsIHBhZGRpbmcgbGVha3MsIG9yIHVzZXItc3BhY2UgY29waWVzIChjb3B5X3RvX3VzZXIvbmV0bGluaykgYXJlIGludHJvZHVjZWQgb3IgbW9kaWZpZWQuIEFueSBsaWZlY3ljbGUgb3IgZGFuZ2xpbmcgcG9pbnRlciBpc3N1ZXMgaW4gdGhpcyBjb2RlIHBhdGggZmFsbCB1bmRlciBLQVNBTiAodXNlLWFmdGVyLWZyZWUgLyBpbnZhbGlkIGFjY2Vzcykgb3Igc3RhbmRhcmQga2VybmVsIGFzc2VydGlvbnMvTE9DS0RFUCwgbWFraW5nIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gdW5uZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOWM5OTIzNWM3ODRkNmM3ZGJmNjQzYzg1ZGI4NjE5NTUwMTRhNjJhNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDI3IDIxOjM1OjUxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbmluZGV4IDk0YjJlODVlMDBhMzcuLmJlNGMzNWRiOGRlOTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5AQCAtMTczNCw2ICsxNzM0LDE4IEBAIHN0YXRpYyBib29sIHBoeV9kcnZfc3VwcG9ydHNfaXJxKGNvbnN0IHN0cnVjdCBwaHlfZHJpdmVyICpwaHlkcnYpXG4gXHRyZXR1cm4gcGh5ZHJ2LVx1MDAzZWNvbmZpZ19pbnRyIFx1MDAyNlx1MDAyNiBwaHlkcnYtXHUwMDNlaGFuZGxlX2ludGVycnVwdDtcbiB9XG4gXG4rLyogR2l2ZSBiYWNrIHRoZSBpbnRlcnJ1cHQgcGh5X3Byb2JlKCkgcGFya2VkIHdoZW4gYSBkcml2ZXIgd2l0aCBubyBpbnRlcnJ1cHRcbisgKiBjYWxsYmFja3MgYm91bmQuIG1kaW9idXNfYWxsb2MoKSBkZWZhdWx0cyBidXMtXHUwMDNlaXJxW10gdG8gUEhZX1BPTEwgYW5kIHRoZVxuKyAqIGJpbmQgY3ljbGUgZG9lcyBub3QgdG91Y2ggdGhlIHRhYmxlLCBzbyB3aGF0ZXZlciB0aGUgYnVzIHJlY29yZGVkIHRoZXJlXG4rICogc3RpbGwgc3RhbmRzLiBPbmx5IHRoZSBwYXJraW5nIGlzIHVuZG9uZTogYW55IG90aGVyIHZhbHVlIHRoZSBQSFkgY2Fycmllc1xuKyAqIHdhcyBwdXQgdGhlcmUgYnkgc29tZW9uZSBlbHNlLlxuKyAqL1xuK3N0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHRpZiAocGh5ZGV2LVx1MDAzZWlycSA9PSBQSFlfUE9MTClcbitcdFx0cGh5ZGV2LVx1MDAzZWlycSA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2VpcnFbcGh5ZGV2LVx1MDAzZW1kaW8uYWRkcl07XG4rfVxuK1xuIC8qKlxuICAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcbiAgKiBAZGV2OiBuZXR3b3JrIGRldmljZSB0byBhdHRhY2hcbkBAIC0xODk2LDYgKzE5MDgsNyBAQCBpbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbiBcbiBlcnJvcl9tb2R1bGVfcHV0OlxuIFx0bW9kdWxlX3B1dChkLVx1MDAzZWRyaXZlci1cdTAwM2Vvd25lcik7XG4rXHRwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHBoeWRldik7XG4gXHRwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDA7XG4gXHRkLVx1MDAzZWRyaXZlciA9IE5VTEw7XG4gZXJyb3JfcHV0X2RldmljZTpcbkBAIC0xOTY1LDYgKzE5NzgsNyBAQCB2b2lkIHBoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdCAqIHJlYWwgZHJpdmVyIGNvdWxkIGJlIGxvYWRlZFxuIFx0ICovXG4gXHRpZiAocGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4pIHtcbitcdFx0cGh5X3Jlc3RvcmVfZ2VucGh5X2lycShwaHlkZXYpO1xuIFx0XHRkZXZpY2VfcmVsZWFzZV9kcml2ZXIoXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2KTtcbiBcdFx0cGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4gPSAwO1xuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5pbmRleCA1YjhlOTU2OTAyZmI1Li5hNTVlNGE2NDAyOGZmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuQEAgLTIwODMsNiArMjA4MywxOCBAQCBzdGF0aWMgaW50IHBoeWxpbmtfdmFsaWRhdGVfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcbiBcdHJldHVybiBwaHlsaW5rX3ZhbGlkYXRlKHBsLCBzdXBwb3J0ZWQsIHN0YXRlKTtcbiB9XG4gXG4rLyogRGlzYXNzb2NpYXRlIEBwaHkgZnJvbSBAcGwuIENhbGxlciBtdXN0IGhvbGQgcGwtXHUwMDNlcGh5ZGV2X211dGV4LiAqL1xuK3N0YXRpYyB2b2lkIHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcbit7XG4rXHRtdXRleF9sb2NrKFx1MDAyNnBoeS1cdTAwM2Vsb2NrKTtcbitcdG11dGV4X2xvY2soXHUwMDI2cGwtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuK1x0cGwtXHUwMDNlcGh5ZGV2ID0gTlVMTDtcbitcdHBsLVx1MDAzZXBoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7XG4rXHRwbC1cdTAwM2VtYWNfdHhfY2xrX3N0b3AgPSBmYWxzZTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuK31cbitcbiBzdGF0aWMgaW50IHBoeWxpbmtfYnJpbmd1cF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuIFx0XHRcdCAgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuIHtcbkBAIC0yMTk3LDYgKzIyMDksMTIgQEAgc3RhdGljIGludCBwaHlsaW5rX2JyaW5ndXBfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcbiBcdGlmIChyZXQgPT0gMCBcdTAwMjZcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHkpKVxuIFx0XHRwaHlfcmVxdWVzdF9pbnRlcnJ1cHQocGh5KTtcbiBcbitcdGlmIChyZXQpIHtcbitcdFx0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuK1x0XHRwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTtcbitcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4rXHR9XG4rXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbkBAIC0yMzQ3LDE1ICsyMzY1LDggQEAgdm9pZCBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHN0cnVjdCBwaHlsaW5rICpwbClcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbiBcdHBoeSA9IHBsLVx1MDAzZXBoeWRldjtcbi1cdGlmIChwaHkpIHtcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZwaHktXHUwMDNlbG9jayk7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2cGwtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuLVx0XHRwbC1cdTAwM2VwaHlkZXYgPSBOVUxMO1xuLVx0XHRwbC1cdTAwM2VwaHlfZW5hYmxlX3R4X2xwaSA9IGZhbHNlO1xuLVx0XHRwbC1cdTAwM2VtYWNfdHhfY2xrX3N0b3AgPSBmYWxzZTtcbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeS1cdTAwM2Vsb2NrKTtcbi1cdH1cbitcdGlmIChwaHkpXG4rXHRcdHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4gXG4gXHRpZiAocGh5KSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo1NDo1OC45ODE5MTk0MzRaIiwiU2VxIjozNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjU1OTQwMTAwNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQSFkgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBiZWluZyBjaGFuZ2VkIGluIHRoZSBQSFkgZHJpdmVyLiBGaXJzdCwgSSBzZWUgbW9kaWZpY2F0aW9ucyBpbiBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AuIFNwZWNpZmljYWxseSwgdGhlcmUncyBhIG5ldyBmdW5jdGlvbiwgYHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoKWAuICBUaGUgY29kZSBzbmlwcGV0IHRoZXJlIGxvb2tzIGxpa2UgaXQncyB0cnlpbmcgdG8gcmUtZXN0YWJsaXNoIHRoZSBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbiBmb3IgYSBQSFkgZGV2aWNlLiAgSXQgc2VlbXMgdGhhdCBpZiB0aGUgaW50ZXJydXB0IG1vZGUgKGBwaHlkZXYtXHUwMDNlaXJxYCkgaXMgc2V0IHRvIGBQSFlfUE9MTGAsIGl0J3MgcmVzdG9yaW5nIGl0IHRvIHRoZSBkZWZhdWx0IGludGVycnVwdCBzZXR0aW5nLCBsaWtlbHkgZGVyaXZlZCBmcm9tIHRoZSBNRElPIGJ1cydzIElSUSBpbmZvcm1hdGlvbi4gVGhpcyBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQgaW4gZXJyb3IgaGFuZGxpbmcgcGF0aHMgd2l0aGluIGBwaHlfYXR0YWNoX2RpcmVjdGAgYW5kIGR1cmluZyBgcGh5X2RldGFjaGAuIFRoaXMgdGVsbHMgbWUgd2UncmUgbG9va2luZyBhdCBhIHBvdGVudGlhbCBmaXggZm9yIGludGVycnVwdCBoYW5kbGluZyBkdXJpbmcgUEhZIGF0dGFjaG1lbnQgb3IgZGV0YWNobWVudCwgd2hpY2ggbWlnaHQgYmUgY3JpdGljYWwgZm9yIHJvYnVzdCBuZXR3b3JrIGRldmljZSBvcGVyYXRpb24uXG5cbk5leHQsIEknbSBzZWVpbmcgY2hhbmdlcyBpbiBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AuICBUaGVyZSdzIGEgbmV3IGZ1bmN0aW9uLCBgcGh5bGlua19jbGVhcl9waHlkZXYoKWAuIFRoZSBjb2RlIGhlcmUgcmVzZXRzIHNldmVyYWwgZmllbGRzIHJlbGF0ZWQgdG8gdGhlIFBIWSBkZXZpY2Ugd2l0aGluIGEgYHBoeWxpbmtgIHN0cnVjdHVyZS4gVGhpcyBpbmNsdWRlcyBzZXR0aW5nIGBwbC1cdTAwM2VwaHlkZXZgIHRvIGBOVUxMYCwgYWxvbmcgd2l0aCBjbGVhcmluZyBgcGh5X2VuYWJsZV90eF9scGlgIGFuZCBgbWFjX3R4X2Nsa19zdG9wYC4gVGhpcyBzbWVsbHMgbGlrZSBwcm9wZXIgUEhZIGRldmljZSBjbGVhbnVwLCBwcm9iYWJseSBvbiBkaXNjb25uZWN0aW9uIG9yIGluIGVycm9yIHNjZW5hcmlvcy4gSXQgbG9va3MgbGlrZSBgcGh5bGlua19jbGVhcl9waHlkZXZgIGlzIGJlaW5nIGNhbGxlZCBpbiBgcGh5bGlua19icmluZ3VwX3BoeWAgYXMgcGFydCBvZiBlcnJvciBoYW5kbGluZywgaW1wbHlpbmcgdGhhdCBpZiB0aGUgUEhZIGluaXRpYWxpemF0aW9uIGZhaWxzLCB0aGUgbGluaydzIFBIWSBkZXZpY2UgcG9pbnRlciBnZXRzIGNsZWFyZWQuIEFsc28sIGl0IGhhcyBiZWVuIGludHJvZHVjZWQgaW50byBgcGh5bGlua19kaXNjb25uZWN0X3BoeWAgYXMgd2VsbC4gVGhpcyBtYWtlcyBzZW5zZTsgaXQncyBjbGVhbiBhbmQgY29uc2lzdGVudC5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGFyZ2VyIGNvbnRleHQuIEknbGwgdXNlIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCB0byBmaW5kIHRoZSBjYWxsaW5nIHNpdGVzIG9mIGBwaHlfYXR0YWNoX2RpcmVjdGAsIGBwaHlfZGV0YWNoYCwgYHBoeWxpbmtfYnJpbmd1cF9waHlgIGFuZCBgcGh5bGlua19kaXNjb25uZWN0X3BoeWAgdG8gZ3Jhc3AgaG93IHRoZXNlIGZ1bmN0aW9ucyBmaXQgaW50byB0aGUgb3ZlcmFsbCBQSFkgaW5pdGlhbGl6YXRpb24gYW5kIHRlYXJkb3duIHNlcXVlbmNlLiBUaGlzIHdpbGwgcmV2ZWFsIHRoZSBtb3RpdmF0aW9ucyBvZiB0aGUgcGF0Y2ggYW5kIHdoZXJlIHRoZSBwcm9ibGVtIG1pZ2h0IGhhdmUgZXhpc3RlZC4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgdGhlIGludGVycnVwdCByZXN0b3JhdGlvbiBhbmQgUEhZIGRldmljZSBjbGVhcmluZyBpbnRlcmFjdCwgcGFydGljdWxhcmx5IGluIGVycm9yIGNhc2VzLiBMZXQgbWUgZGlnIGludG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZGV0ZXJtaW5lIGhvdyB0aGlzIGFkZHJlc3NlcyBhIHBhcnRpY3VsYXIgZmFpbHVyZSBvciByYWNlIGNvbmRpdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzExNiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDIxOjU2OjA0LjU3NTkzMzAxNloiLCJTZXEiOjM2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTAzODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNzI1LFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNzI1OlxcdFxcbjE3MjY6XFx0XFx0aWYgKCFyZXQgXFx1MDAyNlxcdTAwMjYgcGh5ZGV2LVxcdTAwM2VzZnBfYnVzKVxcbjE3Mjc6XFx0XFx0XFx0cmV0ID0gcGh5X3NldHVwX3NmcF9wb3J0KHBoeWRldik7XFxuMTcyODpcXHRcXG4xNzI5OlxcdFxcdHJldHVybiByZXQ7XFxuMTczMDpcXHR9XFxuMTczMTpcXHRcXG4xNzMyOlxcdHN0YXRpYyBib29sIHBoeV9kcnZfc3VwcG9ydHNfaXJxKGNvbnN0IHN0cnVjdCBwaHlfZHJpdmVyICpwaHlkcnYpXFxuMTczMzpcXHR7XFxuMTczNDpcXHRcXHRyZXR1cm4gcGh5ZHJ2LVxcdTAwM2Vjb25maWdfaW50ciBcXHUwMDI2XFx1MDAyNiBwaHlkcnYtXFx1MDAzZWhhbmRsZV9pbnRlcnJ1cHQ7XFxuMTczNTpcXHR9XFxuMTczNjpcXHRcXG4xNzM3OlxcdC8qIEdpdmUgYmFjayB0aGUgaW50ZXJydXB0IHBoeV9wcm9iZSgpIHBhcmtlZCB3aGVuIGEgZHJpdmVyIHdpdGggbm8gaW50ZXJydXB0XFxuMTczODpcXHQgKiBjYWxsYmFja3MgYm91bmQuIG1kaW9idXNfYWxsb2MoKSBkZWZhdWx0cyBidXMtXFx1MDAzZWlycVtdIHRvIFBIWV9QT0xMIGFuZCB0aGVcXG4xNzM5OlxcdCAqIGJpbmQgY3ljbGUgZG9lcyBub3QgdG91Y2ggdGhlIHRhYmxlLCBzbyB3aGF0ZXZlciB0aGUgYnVzIHJlY29yZGVkIHRoZXJlXFxuMTc0MDpcXHQgKiBzdGlsbCBzdGFuZHMuIE9ubHkgdGhlIHBhcmtpbmcgaXMgdW5kb25lOiBhbnkgb3RoZXIgdmFsdWUgdGhlIFBIWSBjYXJyaWVzXFxuMTc0MTpcXHQgKiB3YXMgcHV0IHRoZXJlIGJ5IHNvbWVvbmUgZWxzZS5cXG4xNzQyOlxcdCAqL1xcbjE3NDM6XFx0c3RhdGljIHZvaWQgcGh5X3Jlc3RvcmVfZ2VucGh5X2lycShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbjE3NDQ6XFx0e1xcbjE3NDU6XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlaXJxID09IFBIWV9QT0xMKVxcbjE3NDY6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VpcnEgPSBwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLVxcdTAwM2VpcnFbcGh5ZGV2LVxcdTAwM2VtZGlvLmFkZHJdO1xcbjE3NDc6XFx0fVxcbjE3NDg6XFx0XFxuMTc0OTpcXHQvKipcXG4xNzUwOlxcdCAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcXG4xNzUxOlxcdCAqIEBkZXY6IG5ldHdvcmsgZGV2aWNlIHRvIGF0dGFjaFxcbjE3NTI6XFx0ICogQHBoeWRldjogUG9pbnRlciB0byBwaHlfZGV2aWNlIHRvIGF0dGFjaFxcbjE3NTM6XFx0ICogQGZsYWdzOiBQSFkgZGV2aWNlJ3MgZGV2X2ZsYWdzXFxuMTc1NDpcXHQgKiBAaW50ZXJmYWNlOiBQSFkgZGV2aWNlJ3MgaW50ZXJmYWNlXFxuMTc1NTpcXHQgKlxcbjE3NTY6XFx0ICogRGVzY3JpcHRpb246IENhbGxlZCBieSBkcml2ZXJzIHRvIGF0dGFjaCB0byBhIHBhcnRpY3VsYXIgUEhZXFxuMTc1NzpcXHQgKiAgICAgZGV2aWNlLiBUaGUgcGh5X2RldmljZSBpcyBmb3VuZCwgYW5kIHByb3Blcmx5IGhvb2tlZCB1cFxcbjE3NTg6XFx0ICogICAgIHRvIHRoZSBwaHlfZHJpdmVyLiAgSWYgbm8gZHJpdmVyIGlzIGF0dGFjaGVkLCB0aGVuIGFcXG4xNzU5OlxcdCAqICAgICBnZW5lcmljIGRyaXZlciBpcyB1c2VkLiAgVGhlIHBoeV9kZXZpY2UgaXMgZ2l2ZW4gYSBwdHIgdG9cXG4xNzYwOlxcdCAqICAgICB0aGUgYXR0YWNoaW5nIGRldmljZSwgYW5kIGdpdmVuIGEgY2FsbGJhY2sgZm9yIGxpbmsgc3RhdHVzXFxuMTc2MTpcXHQgKiAgICAgY2hhbmdlLiAgVGhlIHBoeV9kZXZpY2UgaXMgcmV0dXJuZWQgdG8gdGhlIGF0dGFjaGluZyBkcml2ZXIuXFxuMTc2MjpcXHQgKiAgICAgVGhpcyBmdW5jdGlvbiB0YWtlcyBhIHJlZmVyZW5jZSBvbiB0aGUgcGh5IGRldmljZS5cXG4xNzYzOlxcdCAqL1xcbjE3NjQ6XFx0aW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDIxOjU2OjA0LjU3NjI0ODAzNloiLCJTZXEiOjM3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MDQ0NTI5MDAzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsIE5ldHdvcmsgTGluayBJc3N1ZSoqXG5cbk9rYXksIHNvIHdlJ3ZlIGdvdCBhIG5ldHdvcmtpbmcgcHJvYmxlbS4gQmFzZWQgb24gdGhlIGNsdWVzLCBJIG5lZWQgdG8gem9vbSBpbiBvbiBhIHNwZWNpZmljIGFyZWEgd2l0aGluIHRoZSBkcml2ZXIuIE15IGluaXRpYWwgaW5zdGluY3QgcG9pbnRzIG1lIHRvd2FyZHMgYHBoeWxpbmsuY2AuIEdpdmVuIHRoZSBzY29wZSBvZiB0aGUgcG90ZW50aWFsIHByb2JsZW0sIEkgdGhpbmsgdGhlIHJlZ2lvbiBhcm91bmQgbGluZXMgMjA4MCB0byAyMjIwIGlzIGEgZ29vZCBwbGFjZSB0byBzdGFydC4gVGhhdCBzZWN0aW9uIG9mdGVuIGRlYWxzIHdpdGggWyAqaW5zZXJ0IHNwZWNpZmljIGZ1bmN0aW9uIG9yIGFyZWEgdGhlIGV4cGVydCB3b3VsZCBrbm93IGJhc2VkIG9uIGBwaHlsaW5rLmNgJ3MgZ2VuZXJhbCByb2xlLCBlLmcuLCBcImxpbmsgc3RhdGUgZGV0ZWN0aW9uIGFuZCBQSFkgaW50ZXJhY3Rpb24sIG9yIHBlcmhhcHMgaW5pdGlhbCBsaW5rIG5lZ290aWF0aW9uLCBvciBtYXliZSBldmVuIGVycm9yIGhhbmRsaW5nIHJlbGF0ZWQgdG8gc3BlZWQgYW5kIGR1cGxleCBtaXNtYXRjaGVzLCBvciByZWdpc3RlciByZWFkcy93cml0ZXMgcmVsYXRlZCB0byBhdXRvbmVnb3RpYXRpb25cIipdLiBJJ2xsIG5lZWQgdG8gY2FyZWZ1bGx5IGV4YW1pbmUgdGhlIGNvZGUgaW4gdGhhdCByYW5nZSwgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBbICpsaXN0IHNwZWNpZmljIHRoaW5ncyB0aGF0IHRoZSBleHBlcnQgd291bGQgbG9vayBmb3IsIGUuZy4gXCJlcnJvciBjb25kaXRpb25zLCByZXR1cm4gdmFsdWVzLCBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgYnVmZmVyIGhhbmRsaW5nIG9yIHBvc3NpYmx5IGludGVycnVwdCBoYW5kbGluZywgb3IgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgbW9kdWxlcywgZXRjLlwiKiBdLiBJJ2xsIHN0YXJ0IGJ5IG1ha2luZyBzdXJlIHRoZXJlJ3Mgbm8gb2J2aW91cyBsb2dpYyBmbGF3IGluIHRoYXQgc2VjdGlvbiwgdGhlbiBtYXliZSBJJ2xsIGRpZyBkb3duIGludG8gdGhlIGludGVyYWN0aW9ucyBpZiBJIG5lZWQgdG8uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2NjMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDIxOjU2OjU1LjAyMTU0MTA1NVoiLCJTZXEiOjM4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg2MDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjE3MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjE3MDpcXHRcXHRcXHRwaHlsaW5rX2NhcHNfdG9fbGlua21vZGVzKHBsLVxcdTAwM2VzdXBwb3J0ZWRfbHBpLFxcbjIxNzE6XFx0XFx0XFx0XFx0XFx0XFx0ICBwbC1cXHUwMDNlY29uZmlnLVxcdTAwM2VscGlfY2FwYWJpbGl0aWVzKTtcXG4yMTcyOlxcdFxcbjIxNzM6XFx0XFx0XFx0LyogUmVzdHJpY3QgdGhlIFBIWXMgRUVFIHN1cHBvcnQvYWR2ZXJ0aXNlbWVudCB0byB0aGUgbW9kZXNcXG4yMTc0OlxcdFxcdFxcdCAqIHRoYXQgdGhlIE1BQyBzdXBwb3J0cy5cXG4yMTc1OlxcdFxcdFxcdCAqL1xcbjIxNzY6XFx0XFx0XFx0bGlua21vZGVfYW5kKHBoeS1cXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlLCBwaHktXFx1MDAzZWFkdmVydGlzaW5nX2VlZSxcXG4yMTc3OlxcdFxcdFxcdFxcdCAgICAgcGwtXFx1MDAzZXN1cHBvcnRlZF9scGkpO1xcbjIxNzg6XFx0XFx0fSBlbHNlIGlmIChwbC1cXHUwMDNlbWFjX3N1cHBvcnRzX2VlZV9vcHMpIHtcXG4yMTc5OlxcdFxcdFxcdC8qIE1BQyBzdXBwb3J0cyBwaHlsaW5rIEVFRSwgYnV0IHdhbnRzIEVFRSBhbHdheXMgZGlzYWJsZWQuICovXFxuMjE4MDpcXHRcXHRcXHRwaHlfZGlzYWJsZV9lZWUocGh5KTtcXG4yMTgxOlxcdFxcdH1cXG4yMTgyOlxcdFxcbjIxODM6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwbC1cXHUwMDNlc3RhdGVfbXV0ZXgpO1xcbjIxODQ6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwaHktXFx1MDAzZWxvY2spO1xcbjIxODU6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwbC1cXHUwMDNlcGh5ZGV2X211dGV4KTtcXG4yMTg2OlxcdFxcbjIxODc6XFx0XFx0cGh5bGlua19kYmcocGwsXFxuMjE4ODpcXHRcXHRcXHQgICAgXFxcInBoeTogJXMgc2V0dGluZyBzdXBwb3J0ZWQgJSpwYiBhZHZlcnRpc2luZyAlKnBiXFxcXG5cXFwiLFxcbjIxODk6XFx0XFx0XFx0ICAgIHBoeV9tb2RlcyhpbnRlcmZhY2UpLFxcbjIxOTA6XFx0XFx0XFx0ICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgcGwtXFx1MDAzZXN1cHBvcnRlZCxcXG4yMTkxOlxcdFxcdFxcdCAgICBfX0VUSFRPT0xfTElOS19NT0RFX01BU0tfTkJJVFMsIHBoeS1cXHUwMDNlYWR2ZXJ0aXNpbmcpO1xcbjIxOTI6XFx0XFxuMjE5MzpcXHRcXHRpZiAocGwtXFx1MDAzZWNvbmZpZy1cXHUwMDNlbWFjX21hbmFnZWRfcG0pXFxuMjE5NDpcXHRcXHRcXHRwaHktXFx1MDAzZW1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcXG4yMTk1OlxcdFxcbjIxOTY6XFx0XFx0LyogQWxsb3cgdGhlIE1BQyB0byBzdG9wIGl0cyBjbG9jayBpZiB0aGUgUEhZIGhhcyB0aGUgY2FwYWJpbGl0eSAqL1xcbjIxOTc6XFx0XFx0cGwtXFx1MDAzZW1hY190eF9jbGtfc3RvcCA9IHBoeV9lZWVfdHhfY2xvY2tfc3RvcF9jYXBhYmxlKHBoeSkgXFx1MDAzZSAwO1xcbjIxOTg6XFx0XFxuMjE5OTpcXHRcXHRpZiAocGwtXFx1MDAzZW1hY19zdXBwb3J0c19lZWVfb3BzKSB7XFxuMjIwMDpcXHRcXHRcXHQvKiBFeHBsaWNpdGx5IGNvbmZpZ3VyZSB3aGV0aGVyIHRoZSBQSFkgaXMgYWxsb3dlZCB0byBzdG9wIGl0J3NcXG4yMjAxOlxcdFxcdFxcdCAqIHJlY2VpdmUgY2xvY2suXFxuMjIwMjpcXHRcXHRcXHQgKi9cXG4yMjAzOlxcdFxcdFxcdHJldCA9IHBoeV9lZWVfcnhfY2xvY2tfc3RvcChwaHksXFxuMjIwNDpcXHRcXHRcXHRcXHRcXHRcXHQgICAgcGwtXFx1MDAzZWNvbmZpZy1cXHUwMDNlZWVlX3J4X2Nsa19zdG9wX2VuYWJsZSk7XFxuMjIwNTpcXHRcXHRcXHRpZiAocmV0ID09IC1FT1BOT1RTVVBQKVxcbjIyMDY6XFx0XFx0XFx0XFx0cmV0ID0gMDtcXG4yMjA3OlxcdFxcdH1cXG4yMjA4OlxcdFxcbjIyMDk6XFx0XFx0aWYgKHJldCA9PSAwIFxcdTAwMjZcXHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5KSlcXG4yMjEwOlxcdFxcdFxcdHBoeV9yZXF1ZXN0X2ludGVycnVwdChwaHkpO1xcbjIyMTE6XFx0XFxuMjIxMjpcXHRcXHRpZiAocmV0KSB7XFxuMjIxMzpcXHRcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwbC1cXHUwMDNlcGh5ZGV2X211dGV4KTtcXG4yMjE0OlxcdFxcdFxcdHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpO1xcbjIyMTU6XFx0XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwbC1cXHUwMDNlcGh5ZGV2X211dGV4KTtcXG4yMjE2OlxcdFxcdH1cXG4yMjE3OlxcdFxcbjIyMTg6XFx0XFx0cmV0dXJuIHJldDtcXG4yMjE5OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMjE6NTY6NTUuMDIyNjMwNTg0WiIsIlNlcSI6MzksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjkxMTI5ODIzMTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgS01TQU4gSW1wbGljYXRpb25zKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgcGF0Y2gncyBhY3Rpb25zIHdpdGhpbiB0aGUgY29udGV4dCBvZiBwb3RlbnRpYWwgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKSB2dWxuZXJhYmlsaXRpZXMuIEknbSBmb2N1c2luZyBzcGVjaWZpY2FsbHkgb24gdGhlIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MsIHJlbWVtYmVyaW5nIHRoYXQgS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgY292ZXJzIHRoZSBtb3JlIHR5cGljYWwgbWVtb3J5IGxpZmVjeWNsZSBpc3N1ZXMgbGlrZSB1c2UtYWZ0ZXItZnJlZSBhbmQgZGFuZ2xpbmcgcG9pbnRlcnMuXG5cbkZpcnN0LCBJIGxvb2tlZCBhdCB0aGUgZnVuY3Rpb25zIGludm9sdmVkLiBgcGh5X3Jlc3RvcmVfZ2VucGh5X2lycWAgaXMgaW50ZXJlc3RpbmcuIEl0IHJlc3RvcmVzIGBwaHlkZXYtXHUwMDNlaXJxYCBmcm9tIHRoZSBNRElPIGJ1cydzIGBidXMtXHUwMDNlaXJxYCBhcnJheS4gVGhpcyBoYXBwZW5zIGR1cmluZyBkZXRhY2ggb3IgZmFpbHVyZS4gYHBoeWxpbmtfY2xlYXJfcGh5ZGV2YCBjbGVhbnMgdXAgc3RhdGUgcG9pbnRlcnMsIGVzcGVjaWFsbHkgd2hlbiBwaHlsaW5rIGJyaW5ndXAgZmFpbHMuXG5cbkkgdGhlbiB3ZW50IHRocm91Z2ggdGhlIEtNU0FOIGNyaXRlcmlhIGluIG15IGhlYWQ6XG5cbjEuICAqKktlcm5lbCBkYXRhIGV4cG9zZWQgdG8gdXNlcnNwYWNlOioqIE5vcGUuIE5vdGhpbmcgaGVyZSBpbnZvbHZlcyBgY29weV90b191c2VyYCwgYHB1dF91c2VyYCwgbmV0bGluaywgaW9jdGwsIG9yIGFueSB1c2VyLXNwYWNlIGludGVyYWN0aW9uLlxuMi4gICoqQ29uZGl0aW9uYWwgbG9naWMgb24gdW5pbml0aWFsaXplZCBkYXRhOioqIE5vdCB0aGF0IEkgY2FuIHNlZS5cbjMuICAqKlVuaW5pdGlhbGl6ZWQgZGF0YSBzdHJ1Y3R1cmVzOioqIEknbSBub3Qgc2VlaW5nIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIHRoYXQgd291bGRuJ3QgaGF2ZSBkZWZhdWx0IGluaXRpYWxpemF0aW9uLlxuNC4gICoqQm91bmRzIGNoZWNrcyBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeToqKiBOb3BlLlxuXG5TbywgZGlnZ2luZyBkZWVwZXIsIGBidXMtXHUwMDNlaXJxYCBpcyBhbGxvY2F0ZWQgYW5kIGluaXRpYWxpemVkIGJ5IGBtZGlvYnVzX2FsbG9jKClgLiBTcGVjaWZpY2FsbHksIHRoZSBjb250ZW50cyBvZiB0aGUgYGJ1cy1cdTAwM2VpcnFgIGFycmF5IGFyZSBpbml0aWFsaXplZCBlaXRoZXIgdG8gUEhZX1BPTEwgb3Igc3BlY2lmaWMgSVJRIG51bWJlcnMsIHByZXZlbnRpbmcgYWNjaWRlbnRhbCB1c2Ugb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuIGBwaHlsaW5rX2NsZWFyX3BoeWRldmAgc2V0cyBmaWVsZHMgdG8gTlVMTCBvciBmYWxzZSwgd2hpY2ggaXMgdGhlIGNsZWFudXAgc3RhZ2UuIFRoZSBlcnJvciBoYW5kbGluZyBlbnN1cmVzIGBwbC1cdTAwM2VwaHlkZXZgIGlzIHNldCB0byBOVUxMIG9uIGZhaWx1cmUgaW4gYHBoeWxpbmtfYnJpbmd1cF9waHlgLCBlbGltaW5hdGluZyBhIGRhbmdsaW5nIHBvaW50ZXIuXG5cbkNvbnNlcXVlbnRseSwgdGhpcyBzZWVtcyBsaWtlIHB1cmVseSBzdGF0ZSBjbGVhbnVwLCBsaWZlY3ljbGUgbWFuYWdlbWVudCwgYW5kIElSUSByZXN0b3JhdGlvbi4gS0FTQU4gaXMgdGhlIHJpZ2h0IHRvb2wgaGVyZSBmb3IgdXNlLWFmdGVyLWZyZWUgb3IgZGFuZ2xpbmcgcG9pbnRlcnMsIGFuZCBpdCB3aWxsIHBpY2sgdXAgdGhvc2UgaXNzdWVzLiBUaGlzIHBhdGNoLCBiYXNlZCBvbiBteSBhbmFseXNpcywgZG9lcyAqbm90KiBpbnRyb2R1Y2UgYW55IEtNU0FOIGNvbmNlcm5zLiBJIHNlZSBubyBhbGxvY2F0aW9uLCBjb3B5aW5nLCBvciBleHBvc3VyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS5cblxuRmluYWxseSwganVzdCB0byBiZSBjb21wbGV0ZWx5IGNsZWFyIGluIG15IHJlYXNvbmluZywgSSdsbCBzb2xpZGlmeSB0aGUgY29tcGFyaXNvbiBvZiBLQVNBTiBhbmQgS01TQU4uIFRoaXMgcGF0Y2ggZm9jdXNlcyBvbiBjbGVhbiBsaWZlY3ljbGUgbWFuYWdlbWVudCB3aXRoaW4gdGhlIGtlcm5lbCwgbWFraW5nIGl0IGEgS0FTQU4gaXNzdWUuIEtBU0FOIHdpbGwgZGV0ZWN0IGRhbmdsaW5nIHBvaW50ZXJzIGFuZCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgaW4gdGhlIHBoeWxpbmsvcGh5X2RldmljZSBhdHRhY2gvZGV0YWNoIHBhdGhzLiBLTVNBTiBkZWFscyB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGxlYWtzICp0byB1c2VyIHNwYWNlKi4gVGhpcyBwYXRjaCBkb2Vzbid0IGludm9sdmUgYW55IG9mIHRoYXQuIFRoZSByZXN0b3Jpbmcgb2YgYHBoeWRldi1cdTAwM2VpcnFgIHVzZXMgZGF0YSBmcm9tIGEgYnVzIHRoYXQgaXMgaW5pdGlhbGl6ZWQgYnkgYG1kaW9idXNfYWxsb2MoKWAuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGFsbG9jYXRlZCwgcmVhZCwgb3IgY29waWVkIHRvIHVzZXIgc3BhY2UuXG5cblRoZXJlZm9yZSwgSSdtIGNvbmZpZGVudCBpbiBjYWxsaW5nIHRoaXMgYE5lZWRzS01TQU5gIGFzIGBmYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3ODQsIk91dHB1dFRva2VucyI6MTcyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMjE6NTg6MjYuMTUyNDU3MDc2WiIsIlNlcSI6NDAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU5NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgc3RhdGUgY2xlYW51cCBhbmQgSVJRIHJlc3RvcmF0aW9uIGluIFBIWSBhbmQgcGh5bGluayBkcml2ZXIgbGlmZWN5Y2xlcyAoc3BlY2lmaWNhbGx5IHJlc3RvcmluZyBwaHlkZXYtXFx1MDAzZWlycSB1cG9uIGdlbmVyaWMgUEhZIGRyaXZlciBkZXRhY2gvYXR0YWNoIGZhaWx1cmUgYW5kIGNsZWFyaW5nIHBsLVxcdTAwM2VwaHlkZXYgb24gcGh5bGlua19icmluZ3VwX3BoeSBmYWlsdXJlKS4gXFxuXFxuVGhlc2UgY2hhbmdlcyBpbnZvbHZlIG1hbmFnaW5nIG9iamVjdCBsaWZlY3ljbGVzLCByZXNldHRpbmcgaW50ZXJuYWwgcG9pbnRlcnMgdG8gTlVMTCwgYW5kIHJlc2V0dGluZyBib29sZWFuIGZsYWdzLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCByZWFkcywgcGFkZGluZyBsZWFrcywgb3IgdXNlci1zcGFjZSBjb3BpZXMgKGNvcHlfdG9fdXNlci9uZXRsaW5rKSBhcmUgaW50cm9kdWNlZCBvciBtb2RpZmllZC4gQW55IGxpZmVjeWNsZSBvciBkYW5nbGluZyBwb2ludGVyIGlzc3VlcyBpbiB0aGlzIGNvZGUgcGF0aCBmYWxsIHVuZGVyIEtBU0FOICh1c2UtYWZ0ZXItZnJlZSAvIGludmFsaWQgYWNjZXNzKSBvciBzdGFuZGFyZCBrZXJuZWwgYXNzZXJ0aW9ucy9MT0NLREVQLCBtYWtpbmcgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiB1bm5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgc3RhdGUgY2xlYW51cCBhbmQgSVJRIHJlc3RvcmF0aW9uIGluIFBIWSBhbmQgcGh5bGluayBkcml2ZXIgbGlmZWN5Y2xlcyAoc3BlY2lmaWNhbGx5IHJlc3RvcmluZyBwaHlkZXYtXFx1MDAzZWlycSB1cG9uIGdlbmVyaWMgUEhZIGRyaXZlciBkZXRhY2gvYXR0YWNoIGZhaWx1cmUgYW5kIGNsZWFyaW5nIHBsLVxcdTAwM2VwaHlkZXYgb24gcGh5bGlua19icmluZ3VwX3BoeSBmYWlsdXJlKS4gXFxuXFxuVGhlc2UgY2hhbmdlcyBpbnZvbHZlIG1hbmFnaW5nIG9iamVjdCBsaWZlY3ljbGVzLCByZXNldHRpbmcgaW50ZXJuYWwgcG9pbnRlcnMgdG8gTlVMTCwgYW5kIHJlc2V0dGluZyBib29sZWFuIGZsYWdzLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCByZWFkcywgcGFkZGluZyBsZWFrcywgb3IgdXNlci1zcGFjZSBjb3BpZXMgKGNvcHlfdG9fdXNlci9uZXRsaW5rKSBhcmUgaW50cm9kdWNlZCBvciBtb2RpZmllZC4gQW55IGxpZmVjeWNsZSBvciBkYW5nbGluZyBwb2ludGVyIGlzc3VlcyBpbiB0aGlzIGNvZGUgcGF0aCBmYWxsIHVuZGVyIEtBU0FOICh1c2UtYWZ0ZXItZnJlZSAvIGludmFsaWQgYWNjZXNzKSBvciBzdGFuZGFyZCBrZXJuZWwgYXNzZXJ0aW9ucy9MT0NLREVQLCBtYWtpbmcgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiB1bm5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowzvvj2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-27 21:20:22 +0000 UTC FinishedAt: 2026-08-27 21:58:28 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET", "NETDEVICES", "PHYLIB", "PHYLINK" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET", "NETDEVICES", "PHYLIB", "PHYLINK" ], "series_id": "85e488c7-c7fc-48d4-9fdd-df7b38a617e6" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "phy_attach_direct", "phy_detach", "phylink_connect_phy", "phylink_disconnect_phy", "phylink_fwnode_phy_connect", "phylink_of_phy_connect" ], "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+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVQmIzM0OywKICAgICYjMzQ7TkVUREVWSUNFUyYjMzQ7LAogICAgJiMzNDtQSFlMSUImIzM0OywKICAgICYjMzQ7UEhZTElOSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BoeV9hdHRhY2hfZGlyZWN0JiMzNDssCiAgICAmIzM0O3BoeV9kZXRhY2gmIzM0OywKICAgICYjMzQ7cGh5bGlua19jb25uZWN0X3BoeSYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgc3RhdGUgY2xlYW51cCBhbmQgSVJRIHJlc3RvcmF0aW9uIGluIFBIWSBhbmQgcGh5bGluayBkcml2ZXIgbGlmZWN5Y2xlcyAoc3BlY2lmaWNhbGx5IHJlc3RvcmluZyBwaHlkZXYtXHUwMDNlaXJxIHVwb24gZ2VuZXJpYyBQSFkgZHJpdmVyIGRldGFjaC9hdHRhY2ggZmFpbHVyZSBhbmQgY2xlYXJpbmcgcGwtXHUwMDNlcGh5ZGV2IG9uIHBoeWxpbmtfYnJpbmd1cF9waHkgZmFpbHVyZSkuIFxuXG5UaGVzZSBjaGFuZ2VzIGludm9sdmUgbWFuYWdpbmcgb2JqZWN0IGxpZmVjeWNsZXMsIHJlc2V0dGluZyBpbnRlcm5hbCBwb2ludGVycyB0byBOVUxMLCBhbmQgcmVzZXR0aW5nIGJvb2xlYW4gZmxhZ3MuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHJlYWRzLCBwYWRkaW5nIGxlYWtzLCBvciB1c2VyLXNwYWNlIGNvcGllcyAoY29weV90b191c2VyL25ldGxpbmspIGFyZSBpbnRyb2R1Y2VkIG9yIG1vZGlmaWVkLiBBbnkgbGlmZWN5Y2xlIG9yIGRhbmdsaW5nIHBvaW50ZXIgaXNzdWVzIGluIHRoaXMgY29kZSBwYXRoIGZhbGwgdW5kZXIgS0FTQU4gKHVzZS1hZnRlci1mcmVlIC8gaW52YWxpZCBhY2Nlc3MpIG9yIHN0YW5kYXJkIGtlcm5lbCBhc3NlcnRpb25zL0xPQ0tERVAsIG1ha2luZyBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIHVubmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFBIWSBsaWJyYXJ5IGFuZCBwaHlsaW5rIHN1YnN5c3RlbSBsb2dpYyBpbiBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGFuZCBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jLiBJdCBpbnRyb2R1Y2VzIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEgdG8gcHJvcGVybHkgcmVzdG9yZSBQSFkgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb25zIHdoZW4gZGV0YWNoaW5nIG9yIGZhaWxpbmcgdG8gYXR0YWNoIGEgZ2VuZXJpYyBQSFksIGFuZCBlbnN1cmVzIHBoeWxpbmtfY2xlYXJfcGh5ZGV2IGlzIGNhbGxlZCB0byBjbGVhbmx5IGRldGFjaCBhbmQgcmVzZXQgc3RhdGUgaWYgcGh5bGlua19icmluZ3VwX3BoeSBmYWlscy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgcmVhY2hhYmxlIG5ldHdvcmsgUEhZIHNldHVwL3RlYXJkb3duIGxvZ2ljIHVzZWQgYnkgZW11bGF0ZWQgbmV0d29yayBhZGFwdGVycyAoZS5nLiBVU0IgZXRoZXJuZXQgYWRhcHRlcnMgYW5kIERTQSBsb29wIGRldmljZXMpIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAyMTozNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDljOTkyMzVjNzg0ZDZjN2RiZjY0M2M4NWRiODYxOTU1MDE0YTYyYTRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyNyAyMTozNTo1MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuaW5kZXggOTRiMmU4NWUwMGEzNy4uYmU0YzM1ZGI4ZGU5OCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbkBAIC0xNzM0LDYgJiM0MzsxNzM0LDE4IEBAIHN0YXRpYyBib29sIHBoeV9kcnZfc3VwcG9ydHNfaXJxKGNvbnN0IHN0cnVjdCBwaHlfZHJpdmVyICpwaHlkcnYpXG4gXHRyZXR1cm4gcGh5ZHJ2LVx1MDAzZWNvbmZpZ19pbnRyIFx1MDAyNlx1MDAyNiBwaHlkcnYtXHUwMDNlaGFuZGxlX2ludGVycnVwdDtcbiB9XG4gXG4mIzQzOy8qIEdpdmUgYmFjayB0aGUgaW50ZXJydXB0IHBoeV9wcm9iZSgpIHBhcmtlZCB3aGVuIGEgZHJpdmVyIHdpdGggbm8gaW50ZXJydXB0XG4mIzQzOyAqIGNhbGxiYWNrcyBib3VuZC4gbWRpb2J1c19hbGxvYygpIGRlZmF1bHRzIGJ1cy1cdTAwM2VpcnFbXSB0byBQSFlfUE9MTCBhbmQgdGhlXG4mIzQzOyAqIGJpbmQgY3ljbGUgZG9lcyBub3QgdG91Y2ggdGhlIHRhYmxlLCBzbyB3aGF0ZXZlciB0aGUgYnVzIHJlY29yZGVkIHRoZXJlXG4mIzQzOyAqIHN0aWxsIHN0YW5kcy4gT25seSB0aGUgcGFya2luZyBpcyB1bmRvbmU6IGFueSBvdGhlciB2YWx1ZSB0aGUgUEhZIGNhcnJpZXNcbiYjNDM7ICogd2FzIHB1dCB0aGVyZSBieSBzb21lb25lIGVsc2UuXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgdm9pZCBwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4mIzQzO3tcbiYjNDM7XHRpZiAocGh5ZGV2LVx1MDAzZWlycSA9PSBQSFlfUE9MTClcbiYjNDM7XHRcdHBoeWRldi1cdTAwM2VpcnEgPSBwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlaXJxW3BoeWRldi1cdTAwM2VtZGlvLmFkZHJdO1xuJiM0Mzt9XG4mIzQzO1xuIC8qKlxuICAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcbiAgKiBAZGV2OiBuZXR3b3JrIGRldmljZSB0byBhdHRhY2hcbkBAIC0xODk2LDYgJiM0MzsxOTA4LDcgQEAgaW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4gXG4gZXJyb3JfbW9kdWxlX3B1dDpcbiBcdG1vZHVsZV9wdXQoZC1cdTAwM2Vkcml2ZXItXHUwMDNlb3duZXIpO1xuJiM0MztcdHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEocGh5ZGV2KTtcbiBcdHBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcbiBcdGQtXHUwMDNlZHJpdmVyID0gTlVMTDtcbiBlcnJvcl9wdXRfZGV2aWNlOlxuQEAgLTE5NjUsNiAmIzQzOzE5NzgsNyBAQCB2b2lkIHBoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdCAqIHJlYWwgZHJpdmVyIGNvdWxkIGJlIGxvYWRlZFxuIFx0ICovXG4gXHRpZiAocGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4pIHtcbiYjNDM7XHRcdHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEocGh5ZGV2KTtcbiBcdFx0ZGV2aWNlX3JlbGVhc2VfZHJpdmVyKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldik7XG4gXHRcdHBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcbiBcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuaW5kZXggNWI4ZTk1NjkwMmZiNS4uYTU1ZTRhNjQwMjhmZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbkBAIC0yMDgzLDYgJiM0MzsyMDgzLDE4IEBAIHN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuIFx0cmV0dXJuIHBoeWxpbmtfdmFsaWRhdGUocGwsIHN1cHBvcnRlZCwgc3RhdGUpO1xuIH1cbiBcbiYjNDM7LyogRGlzYXNzb2NpYXRlIEBwaHkgZnJvbSBAcGwuIENhbGxlciBtdXN0IGhvbGQgcGwtXHUwMDNlcGh5ZGV2X211dGV4LiAqL1xuJiM0MztzdGF0aWMgdm9pZCBwaHlsaW5rX2NsZWFyX3BoeWRldihzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXG4mIzQzO3tcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnBoeS1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbiYjNDM7XHRwbC1cdTAwM2VwaHlkZXYgPSBOVUxMO1xuJiM0MztcdHBsLVx1MDAzZXBoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7XG4mIzQzO1x0cGwtXHUwMDNlbWFjX3R4X2Nsa19zdG9wID0gZmFsc2U7XG4mIzQzO1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbiYjNDM7XHRtdXRleF91bmxvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4gXHRcdFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4ge1xuQEAgLTIxOTcsNiAmIzQzOzIyMDksMTIgQEAgc3RhdGljIGludCBwaHlsaW5rX2JyaW5ndXBfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcbiBcdGlmIChyZXQgPT0gMCBcdTAwMjZcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHkpKVxuIFx0XHRwaHlfcmVxdWVzdF9pbnRlcnJ1cHQocGh5KTtcbiBcbiYjNDM7XHRpZiAocmV0KSB7XG4mIzQzO1x0XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4mIzQzO1x0XHRwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTtcbiYjNDM7XHRcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbkBAIC0yMzQ3LDE1ICYjNDM7MjM2NSw4IEBAIHZvaWQgcGh5bGlua19kaXNjb25uZWN0X3BoeShzdHJ1Y3QgcGh5bGluayAqcGwpXG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4gXHRwaHkgPSBwbC1cdTAwM2VwaHlkZXY7XG4tXHRpZiAocGh5KSB7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbi1cdFx0cGwtXHUwMDNlcGh5ZGV2ID0gTlVMTDtcbi1cdFx0cGwtXHUwMDNlcGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTtcbi1cdFx0cGwtXHUwMDNlbWFjX3R4X2Nsa19zdG9wID0gZmFsc2U7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwaHktXHUwMDNlbG9jayk7XG4tXHR9XG4mIzQzO1x0aWYgKHBoeSlcbiYjNDM7XHRcdHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4gXG4gXHRpZiAocGh5KSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6MzU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MTltPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVCYjMzQ7LAogICAgJiMzNDtORVRERVZJQ0VTJiMzNDssCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtQSFlMSU5LJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5X2F0dGFjaF9kaXJlY3QmIzM0OywKICAgICYjMzQ7cGh5X2RldGFjaCYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2Nvbm5lY3RfcGh5JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfZGlzY29ubmVjdF9waHkmIzM0OywKICAgICYjMzQ7cGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7cGh5bGlua19vZl9waHlfY29ubmVjdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFBIWSBsaWJyYXJ5IGFuZCBwaHlsaW5rIHN1YnN5c3RlbSBsb2dpYyBpbiBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGFuZCBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jLiBJdCBpbnRyb2R1Y2VzIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEgdG8gcHJvcGVybHkgcmVzdG9yZSBQSFkgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb25zIHdoZW4gZGV0YWNoaW5nIG9yIGZhaWxpbmcgdG8gYXR0YWNoIGEgZ2VuZXJpYyBQSFksIGFuZCBlbnN1cmVzIHBoeWxpbmtfY2xlYXJfcGh5ZGV2IGlzIGNhbGxlZCB0byBjbGVhbmx5IGRldGFjaCBhbmQgcmVzZXQgc3RhdGUgaWYgcGh5bGlua19icmluZ3VwX3BoeSBmYWlscy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgcmVhY2hhYmxlIG5ldHdvcmsgUEhZIHNldHVwL3RlYXJkb3duIGxvZ2ljIHVzZWQgYnkgZW11bGF0ZWQgbmV0d29yayBhZGFwdGVycyAoZS5nLiBVU0IgZXRoZXJuZXQgYWRhcHRlcnMgYW5kIERTQSBsb29wIGRldmljZXMpIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDljOTkyMzVjNzg0ZDZjN2RiZjY0M2M4NWRiODYxOTU1MDE0YTYyYTQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAyNyAyMTozNTo1MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCmluZGV4IDk0YjJlODVlMDBhMzcuLmJlNGMzNWRiOGRlOTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwpAQCAtMTczNCw2ICYjNDM7MTczNCwxOCBAQCBzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KQogCXJldHVybiBwaHlkcnYtJmd0O2NvbmZpZ19pbnRyICZhbXA7JmFtcDsgcGh5ZHJ2LSZndDtoYW5kbGVfaW50ZXJydXB0OwogfQogCiYjNDM7LyogR2l2ZSBiYWNrIHRoZSBpbnRlcnJ1cHQgcGh5X3Byb2JlKCkgcGFya2VkIHdoZW4gYSBkcml2ZXIgd2l0aCBubyBpbnRlcnJ1cHQKJiM0MzsgKiBjYWxsYmFja3MgYm91bmQuIG1kaW9idXNfYWxsb2MoKSBkZWZhdWx0cyBidXMtJmd0O2lycVtdIHRvIFBIWV9QT0xMIGFuZCB0aGUKJiM0MzsgKiBiaW5kIGN5Y2xlIGRvZXMgbm90IHRvdWNoIHRoZSB0YWJsZSwgc28gd2hhdGV2ZXIgdGhlIGJ1cyByZWNvcmRlZCB0aGVyZQomIzQzOyAqIHN0aWxsIHN0YW5kcy4gT25seSB0aGUgcGFya2luZyBpcyB1bmRvbmU6IGFueSBvdGhlciB2YWx1ZSB0aGUgUEhZIGNhcnJpZXMKJiM0MzsgKiB3YXMgcHV0IHRoZXJlIGJ5IHNvbWVvbmUgZWxzZS4KJiM0MzsgKi8KJiM0MztzdGF0aWMgdm9pZCBwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7ewomIzQzOwlpZiAocGh5ZGV2LSZndDtpcnEgPT0gUEhZX1BPTEwpCiYjNDM7CQlwaHlkZXYtJmd0O2lycSA9IHBoeWRldi0mZ3Q7bWRpby5idXMtJmd0O2lycVtwaHlkZXYtJmd0O21kaW8uYWRkcl07CiYjNDM7fQomIzQzOwogLyoqCiAgKiBwaHlfYXR0YWNoX2RpcmVjdCAtIGF0dGFjaCBhIG5ldHdvcmsgZGV2aWNlIHRvIGEgZ2l2ZW4gUEhZIGRldmljZSBwb2ludGVyCiAgKiBAZGV2OiBuZXR3b3JrIGRldmljZSB0byBhdHRhY2gKQEAgLTE4OTYsNiAmIzQzOzE5MDgsNyBAQCBpbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwKIAogZXJyb3JfbW9kdWxlX3B1dDoKIAltb2R1bGVfcHV0KGQtJmd0O2RyaXZlci0mZ3Q7b3duZXIpOwomIzQzOwlwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHBoeWRldik7CiAJcGh5ZGV2LSZndDtpc19nZW5waHlfZHJpdmVuID0gMDsKIAlkLSZndDtkcml2ZXIgPSBOVUxMOwogZXJyb3JfcHV0X2RldmljZToKQEAgLTE5NjUsNiAmIzQzOzE5NzgsNyBAQCB2b2lkIHBoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAkgKiByZWFsIGRyaXZlciBjb3VsZCBiZSBsb2FkZWQKIAkgKi8KIAlpZiAocGh5ZGV2LSZndDtpc19nZW5waHlfZHJpdmVuKSB7CiYjNDM7CQlwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHBoeWRldik7CiAJCWRldmljZV9yZWxlYXNlX2RyaXZlcigmYW1wO3BoeWRldi0mZ3Q7bWRpby5kZXYpOwogCQlwaHlkZXYtJmd0O2lzX2dlbnBoeV9kcml2ZW4gPSAwOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jCmluZGV4IDViOGU5NTY5MDJmYjUuLmE1NWU0YTY0MDI4ZmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwpAQCAtMjA4Myw2ICYjNDM7MjA4MywxOCBAQCBzdGF0aWMgaW50IHBoeWxpbmtfdmFsaWRhdGVfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSwKIAlyZXR1cm4gcGh5bGlua192YWxpZGF0ZShwbCwgc3VwcG9ydGVkLCBzdGF0ZSk7CiB9CiAKJiM0MzsvKiBEaXNhc3NvY2lhdGUgQHBoeSBmcm9tIEBwbC4gQ2FsbGVyIG11c3QgaG9sZCBwbC0mZ3Q7cGh5ZGV2X211dGV4LiAqLwomIzQzO3N0YXRpYyB2b2lkIHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSkKJiM0Mzt7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtwaHktJmd0O2xvY2spOwomIzQzOwltdXRleF9sb2NrKCZhbXA7cGwtJmd0O3N0YXRlX211dGV4KTsKJiM0MzsJcGwtJmd0O3BoeWRldiA9IE5VTEw7CiYjNDM7CXBsLSZndDtwaHlfZW5hYmxlX3R4X2xwaSA9IGZhbHNlOwomIzQzOwlwbC0mZ3Q7bWFjX3R4X2Nsa19zdG9wID0gZmFsc2U7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3BsLSZndDtzdGF0ZV9tdXRleCk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3BoeS0mZ3Q7bG9jayk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBwaHlsaW5rX2JyaW5ndXBfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSwKIAkJCSAgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKQogewpAQCAtMjE5Nyw2ICYjNDM7MjIwOSwxMiBAQCBzdGF0aWMgaW50IHBoeWxpbmtfYnJpbmd1cF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LAogCWlmIChyZXQgPT0gMCAmYW1wOyZhbXA7IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5KSkKIAkJcGh5X3JlcXVlc3RfaW50ZXJydXB0KHBoeSk7CiAKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJbXV0ZXhfbG9jaygmYW1wO3BsLSZndDtwaHlkZXZfbXV0ZXgpOwomIzQzOwkJcGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSk7CiYjNDM7CQltdXRleF91bmxvY2soJmFtcDtwbC0mZ3Q7cGh5ZGV2X211dGV4KTsKJiM0MzsJfQomIzQzOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTIzNDcsMTUgJiM0MzsyMzY1LDggQEAgdm9pZCBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCkKIAogCW11dGV4X2xvY2soJmFtcDtwbC0mZ3Q7cGh5ZGV2X211dGV4KTsKIAlwaHkgPSBwbC0mZ3Q7cGh5ZGV2OwotCWlmIChwaHkpIHsKLQkJbXV0ZXhfbG9jaygmYW1wO3BoeS0mZ3Q7bG9jayk7Ci0JCW11dGV4X2xvY2soJmFtcDtwbC0mZ3Q7c3RhdGVfbXV0ZXgpOwotCQlwbC0mZ3Q7cGh5ZGV2ID0gTlVMTDsKLQkJcGwtJmd0O3BoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7Ci0JCXBsLSZndDttYWNfdHhfY2xrX3N0b3AgPSBmYWxzZTsKLQkJbXV0ZXhfdW5sb2NrKCZhbXA7cGwtJmd0O3N0YXRlX211dGV4KTsKLQkJbXV0ZXhfdW5sb2NrKCZhbXA7cGh5LSZndDtsb2NrKTsKLQl9CiYjNDM7CWlmIChwaHkpCiYjNDM7CQlwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTsKIAltdXRleF91bmxvY2soJmFtcDtwbC0mZ3Q7cGh5ZGV2X211dGV4KTsKIAogCWlmIChwaHkpIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjExbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMTkKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyODUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29yayBQSFkgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoIGFuZCBmaWd1cmUgb3V0IGlmIHRoZXJlJiMzOTtzIGFueXRoaW5nIGhlcmUgdGhhdCB3YXJyYW50cyBmdXp6aW5nIG9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBpbnRvIHJlYWNoYWJpbGl0eSBhbmQgcG90ZW50aWFsIGNvbmZpZ3VyYXRpb24gaXNzdWVzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgZnVuY3Rpb25hbCBjaGFuZ2VzIGNsb3NlbHkuCgpGaXJzdCwgSSBzZWUgdGhlIGNoYW5nZXMgYXJlIGZvY3VzZWQgb24gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgIGFuZCBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AuIEluIGBwaHlfZGV2aWNlLmNgLCB0aGVyZSYjMzk7cyBhIG1vZGlmaWNhdGlvbiB0byBgcGh5X3Jlc3RvcmVfZ2VucGh5X2lycShwaHlkZXYpYC4gSXQgbG9va3MgbGlrZSBpdCByZXN0b3JlcyBgcGh5ZGV2LSZndDtpcnFgIHRvIGl0cyBwcmV2aW91cyB2YWx1ZSBpZiBpdCB3YXMgYFBIWV9QT0xMYCB3aGVuIGVycm9ycyBvY2N1ciBpbiBgcGh5X2F0dGFjaF9kaXJlY3RgIG9yIGBwaHlfZGV0YWNoYC4gTm90aGluZyBpbW1lZGlhdGVseSBhbGFybWluZywgYnV0IGVycm9yIHBhdGhzIGFyZSBhbHdheXMgaW50ZXJlc3RpbmcuCgpPdmVyIGluIGBwaHlsaW5rLmNgLCB3ZSBoYXZlIGEgcmVmYWN0b3Jpbmcgb2YgdGhlIGhlbHBlciBmdW5jdGlvbiBgcGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSlgLiBBbmQgaXQgYXBwZWFycyB0byBiZSB1c2VkIGluIGFuIGVycm9yIHBhdGggd2l0aGluIGBwaHlsaW5rX2JyaW5ndXBfcGh5YCwgc3BlY2lmaWNhbGx5IHdpdGhpbiBhIG11dGV4IGxvY2suIFJlZmFjdG9yaW5nIGlzIGdvb2QsIGFuZCB0aGUgZXJyb3IgaGFuZGxpbmcgYmVpbmcgaW1wcm92ZWQgaXMgYSBnb29kIHNpZ24sIGJ1dCBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0LgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uIGFyaXNlczogd2hlcmUgaXMgdGhpcyBidWlsdCwgYW5kIGhvdyBhcmUgUEhZIGRldmljZXMgYW5kIHBoeWxpbmsgdXNlZCBpbiBlbnZpcm9ubWVudHMgbGlrZSB2aXJ0dWFsaXplZCBzeXN0ZW1zLCBRRU1VLCBvciBldmVuIHNvZnR3YXJlIGRldmljZXM/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZXNlIGNoYW5nZXMgaGF2ZSBhbiBpbXBhY3QgYmV5b25kIHN0YW5kYXJkIGhhcmR3YXJlLiBDYW4gSSByZWFjaCB0aGVzZSBzcGVjaWZpYyBmdW5jdGlvbnMgYW5kIGNvbmZpZ3VyYXRpb25zIHdpdGhpbiB0aG9zZSBlbnZpcm9ubWVudHM/IFdhaXQgYSBtaW51dGUuIEFyZSBQSFkgZGV2aWNlcywgTURJTywgYW5kIHBoeWxpbmsgZXZlbiAqcmVhY2hhYmxlKiBpbiBRRU1VLCBzeXprYWxsZXIsIG9yIHNpbWlsYXIgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzPyBMZXQmIzM5O3MgYnJlYWsgb3V0IGdyZXAgYW5kIHNlZSBpZiB0aGVzZSBjb21wb25lbnRzIGFyZSBldmVuIGJlaW5nIHVzZWQgaW4gdGhvc2UgY29udGV4dHMuIFRoYXQgd2lsbCB0ZWxsIG1lIGEgbG90IGFib3V0IHRoZSBwb3RlbnRpYWwgc2NvcGUgb2YgdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAyMTo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwaHlsaW5rXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTA2MDAgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jPTE1MjU9dm9pZCBiNTNfcG9ydF9ldmVudChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1MzItXHRsaW5rID0gISEoc3RzIFx1MDAyNiBCSVQocG9ydCkpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTUzMzpcdGRzYV9wb3J0X3BoeWxpbmtfbWFjX2NoYW5nZShkcywgcG9ydCwgbGluayk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTM0LX1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jPTE1MzU9RVhQT1JUX1NZTUJPTChiNTNfcG9ydF9ldmVudCk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTM2LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTUzNzpzdGF0aWMgdm9pZCBiNTNfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTUzODpcdFx0XHRcdCBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1Mzkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1NzUtXHQvKiBHZXQgdGhlIGltcGxlbWVudGF0aW9uIHNwZWNpZmljIGNhcGFiaWxpdGllcyAqL1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU3NjpcdGlmIChkZXYtXHUwMDNlb3BzLVx1MDAzZXBoeWxpbmtfZ2V0X2NhcHMpXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoxNTc3Olx0XHRkZXYtXHUwMDNlb3BzLVx1MDAzZXBoeWxpbmtfZ2V0X2NhcHMoZGV2LCBwb3J0LCBjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU3OC19XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTc5LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU4MDpzdGF0aWMgc3RydWN0IHBoeWxpbmtfcGNzICpiNTNfcGh5bGlua19tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1ODEtXHRcdFx0XHRcdFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1ODIte1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU4MzpcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTg0LVx0c3RydWN0IGI1M19kZXZpY2UgKmRldiA9IGRwLVx1MDAzZWRzLVx1MDAzZXByaXY7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTg1LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU4NjpcdGlmICghZGV2LVx1MDAzZW9wcy1cdTAwM2VwaHlsaW5rX21hY19zZWxlY3RfcGNzKVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU4Ny1cdFx0cmV0dXJuIE5VTEw7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTg4LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU4OTpcdHJldHVybiBkZXYtXHUwMDNlb3BzLVx1MDAzZXBoeWxpbmtfbWFjX3NlbGVjdF9wY3MoZGV2LCBkcC1cdTAwM2VpbmRleCwgaW50ZXJmYWNlKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1OTAtfVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU5MS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1OTI6c3RhdGljIHZvaWQgYjUzX3BoeWxpbmtfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1OTMtXHRcdFx0XHQgICB1bnNpZ25lZCBpbnQgbW9kZSxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1OTQ6XHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1OTUte1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU5NjpcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTk3LVx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZSA9IHN0YXRlLVx1MDAzZWludGVyZmFjZTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNjE0LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTYxNTpzdGF0aWMgdm9pZCBiNTNfcGh5bGlua19tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTYxNi1cdFx0XHRcdCAgICAgIHVuc2lnbmVkIGludCBtb2RlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE2MTgte1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTYxOTpcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNjIwLVx0c3RydWN0IGI1M19kZXZpY2UgKmRldiA9IGRwLVx1MDAzZWRzLVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTYzOC1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE2Mzk6c3RhdGljIHZvaWQgYjUzX3BoeWxpbmtfbWFjX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNjQwLVx0XHRcdFx0ICAgIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTY0NS17XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoxNjQ2Olx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE2NDctXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBkcC1cdTAwM2Vkcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYz0yNjkyPUVYUE9SVF9TWU1CT0xfR1BMKGI1M19zZXRfYWdlaW5nX3RpbWUpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMjY5My1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjI2OTQ6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgYjUzX3BoeWxpbmtfbWFjX29wcyA9IHtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjI2OTU6XHQubWFjX3NlbGVjdF9wY3NcdD0gYjUzX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3MsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoyNjk2Olx0Lm1hY19jb25maWdcdD0gYjUzX3BoeWxpbmtfbWFjX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjI2OTc6XHQubWFjX2xpbmtfZG93blx0PSBiNTNfcGh5bGlua19tYWNfbGlua19kb3duLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MjY5ODpcdC5tYWNfbGlua191cFx0PSBiNTNfcGh5bGlua19tYWNfbGlua191cCxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTI2OTktfTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYz0yNzAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgYjUzX3N3aXRjaF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMjcxMC1cdC5waHlfd3JpdGVcdFx0PSBiNTNfcGh5X3dyaXRlMTYsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoyNzExOlx0LnBoeWxpbmtfZ2V0X2NhcHNcdD0gYjUzX3BoeWxpbmtfZ2V0X2NhcHMsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0yNzEyLVx0LnBvcnRfc2V0dXBcdFx0PSBiNTNfc2V0dXBfcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYz0zMTgzPXN0cnVjdCBiNTNfZGV2aWNlICpiNTNfc3dpdGNoX2FsbG9jKHN0cnVjdCBkZXZpY2UgKmJhc2UsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMzIwNi1cdGRzLVx1MDAzZW9wcyA9IFx1MDAyNmI1M19zd2l0Y2hfb3BzO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MzIwNzpcdGRzLVx1MDAzZXBoeWxpbmtfbWFjX29wcyA9IFx1MDAyNmI1M19waHlsaW5rX21hY19vcHM7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0zMjA4LVx0ZGV2LVx1MDAzZXZsYW5fZW5hYmxlZCA9IHRydWU7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oPTM0PXN0cnVjdCBiNTNfaW9fb3BzIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2LmgtNTAtXHR2b2lkICgqcGh5X2Rpc2FibGUpKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIGludCBwb3J0KTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaDo1MTpcdHZvaWQgKCpwaHlsaW5rX2dldF9jYXBzKShzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaDo1MjpcdFx0XHRcdCBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2Lmg6NTM6XHRzdHJ1Y3QgcGh5bGlua19wY3MgKigqcGh5bGlua19tYWNfc2VsZWN0X3Bjcykoc3RydWN0IGI1M19kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaC01NC1cdFx0XHRcdFx0XHQgICAgICBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2Lmg9MTExPXN0cnVjdCBiNTNfcGNzIHtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaDoxMTI6XHRzdHJ1Y3QgcGh5bGlua19wY3MgcGNzO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oLTExMy1cdHN0cnVjdCBiNTNfZGV2aWNlICpkZXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtMTktXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYzoyMDpzdGF0aWMgaW5saW5lIHN0cnVjdCBiNTNfcGNzICpwY3NfdG9fYjUzX3BjcyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTIxLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYz02MT1zdGF0aWMgdTE2IGI1M19zZXJkZXNfcmVhZChzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCB1OCBsYW5lLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTY3LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM6Njg6c3RhdGljIGludCBiNTNfc2VyZGVzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtNjktXHRcdFx0ICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTg4LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM6ODk6c3RhdGljIHZvaWQgYjUzX3NlcmRlc19hbl9yZXN0YXJ0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtOTAte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTEwMS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjEwMjpzdGF0aWMgdm9pZCBiNTNfc2VyZGVzX2dldF9zdGF0ZShzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM6MTAzOlx0XHRcdFx0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtMTA0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYz0xNTc9RVhQT1JUX1NZTUJPTChiNTNfc2VyZGVzX2xpbmtfc2V0KTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE1OC1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjE1OTpzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfcGNzX29wcyBiNTNfcGNzX29wcyA9IHtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE2MC1cdC5wY3NfZ2V0X3N0YXRlID0gYjUzX3NlcmRlc19nZXRfc3RhdGUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtMTY0LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM6MTY1OnZvaWQgYjUzX3NlcmRlc19waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM6MTY2Olx0XHRcdFx0IHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtMTY3LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy0xOTEtfVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM6MTkyOkVYUE9SVF9TWU1CT0woYjUzX3NlcmRlc19waHlsaW5rX2dldF9jYXBzKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE5My1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjE5NDpzdHJ1Y3QgcGh5bGlua19wY3MgKmI1M19zZXJkZXNfcGh5bGlua19tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtMTk1LVx0XHRcdFx0XHRcdCAgICAgIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTIwOS19XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYzoyMTA6RVhQT1JUX1NZTUJPTChiNTNfc2VyZGVzX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3MpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtMjExLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5oLTk5LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmg6MTAwOnN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGU7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaC0xMDEtXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmg9MTEwPXZvaWQgYjUzX3NlcmRlc19saW5rX3NldChzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydCwgdW5zaWduZWQgaW50IG1vZGUsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaC0xMTEtXHRcdFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsIGJvb2wgbGlua191cCk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaDoxMTI6c3RydWN0IHBoeWxpbmtfcGNzICpiNTNfc2VyZGVzX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3Moc3RydWN0IGI1M19kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5oLTExMy1cdFx0XHRcdFx0XHQgICAgICBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5oLTExNC1cdFx0XHRcdFx0XHQgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKTtcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5oOjExNTp2b2lkIGI1M19zZXJkZXNfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5oOjExNjpcdFx0XHRcdCBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaC0xMTctI2lmIElTX0VOQUJMRUQoQ09ORklHX0I1M19TRVJERVMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jPTQzNT1zdGF0aWMgdm9pZCBiNTNfc3JhYl9pcnFfZGlzYWJsZShzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydClcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtNDQ1LVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jOjQ0NjpzdGF0aWMgdm9pZCBiNTNfc3JhYl9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jOjQ0NzpcdFx0XHRcdCAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ0OC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ1Ny1cdFx0ICovXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmM6NDU4Olx0XHRiNTNfc2VyZGVzX3BoeWxpbmtfZ2V0X2NhcHMoZGV2LCBwb3J0LCBjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ1OS0jZW5kaWZcbi0tXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmM9NDc5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYjUzX2lvX29wcyBiNTNfc3JhYl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ5MS1cdC5pcnFfZGlzYWJsZSA9IGI1M19zcmFiX2lycV9kaXNhYmxlLFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jOjQ5MjpcdC5waHlsaW5rX2dldF9jYXBzID0gYjUzX3NyYWJfcGh5bGlua19nZXRfY2FwcyxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy00OTMtI2lmIElTX0VOQUJMRUQoQ09ORklHX0I1M19TRVJERVMpXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmM6NDk0Olx0LnBoeWxpbmtfbWFjX3NlbGVjdF9wY3MgPSBiNTNfc2VyZGVzX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3MsXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtNDk1LVx0LnNlcmRlc19tYXBfbGFuZSA9IGI1M19zcmFiX3NlcmRlc19tYXBfbGFuZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jPTQ1Mj1zdGF0aWMgaXJxcmV0dXJuX3QgYmNtX3NmMl9zd2l0Y2hfMV9pc3IoaW50IGlycSwgdm9pZCAqZGV2X2lkKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNDYyLVx0XHRwcml2LVx1MDAzZXBvcnRfc3RzWzddLmxpbmsgPSB0cnVlO1xuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo0NjM6XHRcdGRzYV9wb3J0X3BoeWxpbmtfbWFjX2NoYW5nZShkcywgNywgdHJ1ZSk7XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTQ2NC1cdH1cbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTQ2Ni1cdFx0cHJpdi1cdTAwM2Vwb3J0X3N0c1s3XS5saW5rID0gZmFsc2U7XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjQ2NzpcdFx0ZHNhX3BvcnRfcGh5bGlua19tYWNfY2hhbmdlKGRzLCA3LCBmYWxzZSk7XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTQ2OC1cdH1cbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jPTcyND1zdGF0aWMgdm9pZCBiY21fc2YyX3N3X2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjcyNTpcdFx0XHRcdHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy03MjYte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNzQ0LVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo3NDU6c3RhdGljIHZvaWQgYmNtX3NmMl9zd19tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy03NDYtXHRcdFx0XHQgIHVuc2lnbmVkIGludCBtb2RlLFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo3NDc6XHRcdFx0XHQgIGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy03NDgte1xuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo3NDk6XHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy03NTAtXHR1MzIgaWRfbW9kZV9kaXMgPSAwLCBwb3J0X21vZGU7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz03OTQ9c3RhdGljIHZvaWQgYmNtX3NmMl9zd19tYWNfbGlua19zZXQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTgxNi1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6ODE3OnN0YXRpYyB2b2lkIGJjbV9zZjJfc3dfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtODE4LVx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTgyMC17XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjgyMTpcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTgyMi1cdHN0cnVjdCBiY21fc2YyX3ByaXYgKnByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy04MzctXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjgzODpzdGF0aWMgdm9pZCBiY21fc2YyX3N3X21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy04MzktXHRcdFx0XHQgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtODQ0LXtcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6ODQ1Olx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtODQ2LVx0c3RydWN0IGJjbV9zZjJfcHJpdiAqcHJpdjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jPTkwNj1zdGF0aWMgdm9pZCBiY21fc2YyX3N3X2ZpeGVkX3N0YXRlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjkwNzpcdFx0XHRcdCAgIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXR1cylcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtOTA4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jPTEyMDM9c3RhdGljIGludCBiY21fc2YyX3N3X2dldF9zc2V0X2NvdW50KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy0xMjE1LVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzoxMjE2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGJjbV9zZjJfcGh5bGlua19tYWNfb3BzID0ge1xuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy0xMjE3LVx0Lm1hY19jb25maWdcdD0gYmNtX3NmMl9zd19tYWNfY29uZmlnLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9MTIyMj1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGJjbV9zZjJfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtMTIzMC1cdC5nZXRfcGh5X2ZsYWdzXHRcdD0gYmNtX3NmMl9zd19nZXRfcGh5X2ZsYWdzLFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzoxMjMxOlx0LnBoeWxpbmtfZ2V0X2NhcHNcdD0gYmNtX3NmMl9zd19nZXRfY2FwcyxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6MTIzMjpcdC5waHlsaW5rX2ZpeGVkX3N0YXRlXHQ9IGJjbV9zZjJfc3dfZml4ZWRfc3RhdGUsXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTEyMzMtXHQuc3VzcGVuZFx0XHQ9IGJjbV9zZjJfc3dfc3VzcGVuZCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jPTEzNjU9c3RhdGljIGludCBiY21fc2YyX3N3X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy0xNDI2LVx0ZHMtXHUwMDNlb3BzID0gXHUwMDI2YmNtX3NmMl9vcHM7XG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjE0Mjc6XHRkcy1cdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcdTAwMjZiY21fc2YyX3BoeWxpbmtfbWFjX29wcztcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtMTQyOC1cbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0zMjE9c3RhdGljIGludCBkc2FfbG9vcF9wb3J0X21heF9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjUtXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYzozMjY6c3RhdGljIHZvaWQgZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHNhLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjMyNzpcdFx0XHRcdCAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzI4LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0zMzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBkc2FfbG9vcF9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtMzUxLVx0LnBvcnRfbWF4X210dVx0XHQ9IGRzYV9sb29wX3BvcnRfbWF4X210dSxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MjpcdC5waHlsaW5rX2dldF9jYXBzXHQ9IGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMsXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTMtfTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYz0xNDU4PXN0YXRpYyB2b2lkIGhlbGxjcmVla190ZWFyZG93bihzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTQ2My1cbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jOjE0NjQ6c3RhdGljIHZvaWQgaGVsbGNyZWVrX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jOjE0NjU6XHRcdFx0XHQgICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYy0xNDY2LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYz0xOTAwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgaGVsbGNyZWVrX2RzX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYy0xOTA2LVx0LmdldF90c19pbmZvXHQgICAgICAgPSBoZWxsY3JlZWtfZ2V0X3RzX2luZm8sXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYzoxOTA3Olx0LnBoeWxpbmtfZ2V0X2NhcHMgICAgICA9IGhlbGxjcmVla19waHlsaW5rX2dldF9jYXBzLFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmMtMTkwOC1cdC5wb3J0X2JyaWRnZV9mbGFncyAgICAgPSBoZWxsY3JlZWtfYnJpZGdlX2ZsYWdzLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYz00NDg9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo0NDk6a3M4OTk1X21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jOjQ1MDpcdFx0ICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy00NTEte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYz00NTQ9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo0NTU6a3M4OTk1X21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTQ1Ni1cdFx0ICAgdW5zaWduZWQgaW50IG1vZGUsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTQ1OC17XG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NDU5Olx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy00NjAtXHRzdHJ1Y3Qga3M4OTk1X3N3aXRjaCAqa3MgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYz01MDg9c3RhdGljIHZvaWRcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo1MDk6a3M4OTk1X21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTUxMC1cdFx0ICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTUxMS17XG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NTEyOlx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy01MTMtXHRzdHJ1Y3Qga3M4OTk1X3N3aXRjaCAqa3MgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy01MjMtXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NTI0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGtzODk5NV9waHlsaW5rX21hY19vcHMgPSB7XG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNTI1LVx0Lm1hY19jb25maWcgPSBrczg5OTVfbWFjX2NvbmZpZyxcbi0tXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM9NjAyPXN0YXRpYyB2b2lkIGtzODk5NV9wb3J0X3N0cF9zdGF0ZV9zZXQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgdTggc3RhdGUpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTY0OC1cbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo2NDk6c3RhdGljIHZvaWQga3M4OTk1X3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzYSwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NjUwOlx0XHRcdFx0ICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTY1MS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jPTczMj1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGtzODk5NV9kc19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTc0MS1cdC5wb3J0X21heF9tdHUgPSBrczg5OTVfZ2V0X21heF9tdHUsXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NzQyOlx0LnBoeWxpbmtfZ2V0X2NhcHMgPSBrczg5OTVfcGh5bGlua19nZXRfY2FwcyxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy03NDMtfTtcbi0tXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM9NzQ2PXN0YXRpYyBpbnQga3M4OTk1X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTgyMC1cdGtzLVx1MDAzZWRzLVx1MDAzZW9wcyA9IFx1MDAyNmtzODk5NV9kc19vcHM7XG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6ODIxOlx0a3MtXHUwMDNlZHMtXHUwMDNlcGh5bGlua19tYWNfb3BzID0gXHUwMDI2a3M4OTk1X3BoeWxpbmtfbWFjX29wcztcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy04MjItXHRrcy1cdTAwM2Vkcy1cdTAwM2Vwcml2ID0ga3M7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jPTEyODM9c3RhdGljIGludCBsYW45MzAzX3BvcnRfbWRiX2RlbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMjk3LVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEyOTg6c3RhdGljIHZvaWQgbGFuOTMwM19waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTI5OTpcdFx0XHRcdCAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTMwMC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzMjMtXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTMyNDpzdGF0aWMgdm9pZCBsYW45MzAzX3BoeWxpbmtfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzI1LVx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCBtb2RlLFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEzMjY6XHRcdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTMyNy17XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzMjktXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTMzMDpzdGF0aWMgdm9pZCBsYW45MzAzX3BoeWxpbmtfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzMxLVx0XHRcdFx0XHQgIHVuc2lnbmVkIGludCBtb2RlLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzM1LVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEzMzY6c3RhdGljIHZvaWQgbGFuOTMwM19waHlsaW5rX21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzMzctXHRcdFx0XHRcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzNDIte1xuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEzNDM6XHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzNDQtXHRzdHJ1Y3QgbGFuOTMwMyAqY2hpcCA9IGRwLVx1MDAzZWRzLVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzNzUtXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTM3NjpzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBsYW45MzAzX3BoeWxpbmtfbWFjX29wcyA9IHtcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxMzc3Olx0Lm1hY19jb25maWdcdD0gbGFuOTMwM19waHlsaW5rX21hY19jb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTM3ODpcdC5tYWNfbGlua19kb3duXHQ9IGxhbjkzMDNfcGh5bGlua19tYWNfbGlua19kb3duLFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEzNzk6XHQubWFjX2xpbmtfdXBcdD0gbGFuOTMwM19waHlsaW5rX21hY19saW5rX3VwLFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzODAtfTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM9MTM4Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGxhbjkzMDNfc3dpdGNoX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTM4Ny1cdC5waHlfd3JpdGVcdFx0PSBsYW45MzAzX3BoeV93cml0ZSxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxMzg4Olx0LnBoeWxpbmtfZ2V0X2NhcHNcdD0gbGFuOTMwM19waHlsaW5rX2dldF9jYXBzLFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzODktXHQuZ2V0X2V0aHRvb2xfc3RhdHNcdD0gbGFuOTMwM19nZXRfZXRodG9vbF9zdGF0cyxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM9MTQwND1zdGF0aWMgaW50IGxhbjkzMDNfcmVnaXN0ZXJfc3dpdGNoKHN0cnVjdCBsYW45MzAzICpjaGlwKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xNDEzLVx0Y2hpcC1cdTAwM2Vkcy1cdTAwM2VvcHMgPSBcdTAwMjZsYW45MzAzX3N3aXRjaF9vcHM7XG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTQxNDpcdGNoaXAtXHUwMDNlZHMtXHUwMDNlcGh5bGlua19tYWNfb3BzID0gXHUwMDI2bGFuOTMwM19waHlsaW5rX21hY19vcHM7XG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTQxNS1cdGNoaXAtXHUwMDNlZHMtXHUwMDNlcGh5c19taWlfbWFzayA9IEdFTk1BU0soTEFOOTMwM19OVU1fUE9SVFMgLSAxLCAwKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jPTI3PXN0cnVjdCB4d2F5X2dwaHlfbWF0Y2hfZGF0YSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy0zMS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmM6MzI6c3RhdGljIHZvaWQgZ3N3aXBfeHJ4MjAwX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmM6MzM6XHRcdFx0XHRcdCAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jLTM0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jLTYyLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYzo2MzpzdGF0aWMgdm9pZCBnc3dpcF94cngzMDBfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYzo2NDpcdFx0XHRcdFx0ICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmMtNjUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmM9NDU5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZ3N3aXBfaHdfaW5mbyBnc3dpcF94cngyMDAgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy00NzUtXHR9LFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYzo0NzY6XHQucGh5bGlua19nZXRfY2FwcyA9IGdzd2lwX3hyeDIwMF9waHlsaW5rX2dldF9jYXBzLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy00NzctXHQucGNlX21pY3JvY29kZSA9IFx1MDAyNmdzd2lwX3BjZV9taWNyb2NvZGUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYz00ODI9c3RhdGljIGNvbnN0IHN0cnVjdCBnc3dpcF9od19pbmZvIGdzd2lwX3hyeDMwMCA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jLTQ5Ni1cdH0sXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jOjQ5NzpcdC5waHlsaW5rX2dldF9jYXBzID0gZ3N3aXBfeHJ4MzAwX3BoeWxpbmtfZ2V0X2NhcHMsXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jLTQ5OC1cdC5wY2VfbWljcm9jb2RlID0gXHUwMDI2Z3N3aXBfcGNlX21pY3JvY29kZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5oPTI1NT1zdHJ1Y3QgZ3N3aXBfaHdfaW5mbyB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuaC0yNjMtXHRlbnVtIGRzYV90YWdfcHJvdG9jb2wgdGFnX3Byb3RvY29sO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuaDoyNjQ6XHR2b2lkICgqcGh5bGlua19nZXRfY2Fwcykoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmg6MjY1Olx0XHRcdFx0IHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmg6MjY2Olx0c3RydWN0IHBoeWxpbmtfcGNzICooKm1hY19zZWxlY3RfcGNzKShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmgtMjY3LVx0XHRcdFx0XHQgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xMjY2PXN0YXRpYyBpbnQgZ3N3aXBfcG9ydF9jaGFuZ2VfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsIGludCBuZXdfbXR1KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTEyOTEtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxMjkyOnN0YXRpYyB2b2lkIGdzd2lwX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjEyOTM6XHRcdFx0XHQgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTEyOTQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTEyOTYtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxMjk3Olx0cHJpdi1cdTAwM2Vod19pbmZvLVx1MDAzZXBoeWxpbmtfZ2V0X2NhcHMoZHMsIHBvcnQsIGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xMjk4LX1cbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xMzc1PXN0YXRpYyB2b2lkIGdzd2lwX3BvcnRfc2V0X3BhdXNlKHN0cnVjdCBnc3dpcF9wcml2ICpwcml2LCBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDA0LVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTQwNTpzdGF0aWMgdm9pZCBnc3dpcF9waHlsaW5rX21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDA2LVx0XHRcdFx0ICAgICB1bnNpZ25lZCBpbnQgbW9kZSxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE0MDc6XHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQwOC17XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNDA5Olx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0MTAtXHRzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiA9IGRwLVx1MDAzZWRzLVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQ1NS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE0NTY6c3RhdGljIHZvaWQgZ3N3aXBfcGh5bGlua19tYWNfbGlua19kb3duKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQ1Ny1cdFx0XHRcdFx0dW5zaWduZWQgaW50IG1vZGUsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQ1OS17XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNDYwOlx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0NjEtXHRzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiA9IGRwLVx1MDAzZWRzLVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQ2OS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE0NzA6c3RhdGljIHZvaWQgZ3N3aXBfcGh5bGlua19tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0NzEtXHRcdFx0XHQgICAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0NzYte1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTQ3NzpcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDc4LVx0c3RydWN0IGdzd2lwX3ByaXYgKnByaXYgPSBkcC1cdTAwM2Vkcy1cdTAwM2Vwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jPTE1NTk9c3RhdGljIGludCBnc3dpcF9zZXRfbWFjX2VlZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE1NjctXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNTY4OnN0YXRpYyB2b2lkIGdzd2lwX3BoeWxpbmtfbWFjX2Rpc2FibGVfdHhfbHBpKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTU2OS17XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNTcwOlx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE1NzEtXHRzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiA9IGRwLVx1MDAzZWRzLVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTU3Ni1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE1Nzc6c3RhdGljIGludCBnc3dpcF9waHlsaW5rX21hY19lbmFibGVfdHhfbHBpKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTU3OC1cdFx0XHRcdFx0ICAgdTMyIHRpbWVyLCBib29sIHR4X2Nsb2NrX3N0b3ApXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNTc5LXtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE1ODA6XHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTU4MS1cdHN0cnVjdCBnc3dpcF9wcml2ICpwcml2ID0gZHAtXHUwMDNlZHMtXHUwMDNlcHJpdjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYz0xNTkyPXN0YXRpYyBib29sIGdzd2lwX3N1cHBvcnRfZWVlKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTYwMS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2MDI6c3RhdGljIHN0cnVjdCBwaHlsaW5rX3BjcyAqZ3N3aXBfcGh5bGlua19tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2MDMtXHRcdFx0XHRcdFx0XHRwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTYwNC17XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNjA1Olx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2MDYtXHRzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiA9IGRwLVx1MDAzZWRzLVx1MDAzZXByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTYxMy1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2MTQ6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgZ3N3aXBfcGh5bGlua19tYWNfb3BzID0ge1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTYxNTpcdC5tYWNfY29uZmlnXHRcdD0gZ3N3aXBfcGh5bGlua19tYWNfY29uZmlnLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTYxNjpcdC5tYWNfbGlua19kb3duXHRcdD0gZ3N3aXBfcGh5bGlua19tYWNfbGlua19kb3duLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTYxNzpcdC5tYWNfbGlua191cFx0XHQ9IGdzd2lwX3BoeWxpbmtfbWFjX2xpbmtfdXAsXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNjE4Olx0Lm1hY19kaXNhYmxlX3R4X2xwaVx0PSBnc3dpcF9waHlsaW5rX21hY19kaXNhYmxlX3R4X2xwaSxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2MTk6XHQubWFjX2VuYWJsZV90eF9scGlcdD0gZ3N3aXBfcGh5bGlua19tYWNfZW5hYmxlX3R4X2xwaSxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2MjA6XHQubWFjX3NlbGVjdF9wY3NcdFx0PSBnc3dpcF9waHlsaW5rX21hY19zZWxlY3RfcGNzLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTYyMS19O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jPTE2MjM9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBnc3dpcF9zd2l0Y2hfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2NDMtXHQucG9ydF9tYXhfbXR1XHRcdD0gZ3N3aXBfcG9ydF9tYXhfbXR1LFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTY0NDpcdC5waHlsaW5rX2dldF9jYXBzXHQ9IGdzd2lwX3BoeWxpbmtfZ2V0X2NhcHMsXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNjQ1LVx0LmdldF9zdHJpbmdzXHRcdD0gZ3N3aXBfZ2V0X3N0cmluZ3MsXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM9MTY3OD1pbnQgZ3N3aXBfcHJvYmVfY29tbW9uKHN0cnVjdCBnc3dpcF9wcml2ICpwcml2LCB1MzIgdmVyc2lvbilcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNjkwLVx0cHJpdi1cdTAwM2Vkcy1cdTAwM2VvcHMgPSBcdTAwMjZnc3dpcF9zd2l0Y2hfb3BzO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTY5MTpcdHByaXYtXHUwMDNlZHMtXHUwMDNlcGh5bGlua19tYWNfb3BzID0gXHUwMDI2Z3N3aXBfcGh5bGlua19tYWNfb3BzO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTY5Mi1cdHByaXYtXHUwMDNlZHMtXHUwMDNlcHJpdiA9IHByaXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM9Mjg9c3RydWN0IGdzdzF4eF9wcml2IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0zNC1cdHN0cnVjdFx0XHRcdHJlZ21hcCAqc2hlbGw7XG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzozNTpcdHN0cnVjdFx0XHRcdHBoeWxpbmtfcGNzIHBjcztcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTM2LVx0c3RydWN0IGRlbGF5ZWRfd29ya1x0Y2xlYXJfcmFuZWc7XG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM9MTI0PXN0YXRpYyB2b2lkIGdzdzF4eF9tZGlvX3JlZ21hcF91bmxvY2sodm9pZCAqbWRpb19sb2NrKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTEyOC1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjEyOTpzdGF0aWMgdW5zaWduZWQgaW50IGdzdzF4eF9wY3NfaW5iYW5kX2NhcHMoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xMzAtXHRcdFx0XHRcdCAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTM0LVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MTM1OnN0YXRpYyBzdHJ1Y3QgZ3N3MXh4X3ByaXYgKnBjc190b19nc3cxeHgoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xMzYte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTEzOS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjE0MDpzdGF0aWMgaW50IGdzdzF4eF9wY3NfZW5hYmxlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTQxLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xNDgtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzoxNDk6c3RhdGljIHZvaWQgZ3N3MXh4X3Bjc19kaXNhYmxlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTUwLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xNjEtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzoxNjI6c3RhdGljIHZvaWQgZ3N3MXh4X3Bjc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xNjMtXHRcdFx0XHQgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MTY0Olx0XHRcdFx0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTY1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYz0yMzQ9c3RhdGljIGludCBnc3cxeHhfcGNzX3Jlc2V0KHN0cnVjdCBnc3cxeHhfcHJpdiAqcHJpdiwgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0zMzQtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzozMzU6c3RhdGljIGludCBnc3cxeHhfcGNzX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcywgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMzM2LVx0XHRcdCAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0zNjktXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzozNzA6XHRzd2l0Y2ggKHBoeWxpbmtfZ2V0X2xpbmtfdGltZXJfbnMoaW50ZXJmYWNlKSkge1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMzcxLVx0Y2FzZSAxMDAwMDpcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0zOTMtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzozOTQ6XHR0eGFuZWcgPSBwaHlsaW5rX21paV9jMjJfcGNzX2VuY29kZV9hZHZlcnRpc2VtZW50KGludGVyZmFjZSwgYWR2ZXJ0aXNpbmcpO1xuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMzk1LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jPTQ1Mz1zdGF0aWMgdm9pZCBnc3cxeHhfcGNzX2NsZWFyX3JhbmVnKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy00NjEtXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzo0NjI6c3RhdGljIHZvaWQgZ3N3MXh4X3Bjc19hbl9yZXN0YXJ0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtNDYzLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy00NzctXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzo0Nzg6c3RhdGljIHZvaWQgZ3N3MXh4X3Bjc19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtNDc5LVx0XHRcdCAgICAgICB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgyMDcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA2OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gUEhZIERldmljZSBDb25uZWN0aW9ucyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBQSFkgZGV2aWNlcyBhcmUgYmVpbmcgY29ubmVjdGVkIGFuZCBkaXNjb25uZWN0ZWQgd2l0aGluIHRoaXMgc3lzdGVtLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBwaHlfZGV2aWNlLmNgIGFuZCBgcGh5bGluay5jYC4gSSBuZWVkIGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhleSBpbnRlcmFjdC4KClRvIHRoYXQgZW5kLCBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGlkZW50aWZ5aW5nIGFsbCB0aGUgcG9pbnRzIG9mIGNvbnRhY3QuIEkmIzM5O20gdGhpbmtpbmcsIGEgdGhvcm91Z2ggc2VhcmNoIGZvciB0aGUgY2FsbHMgdG8gZnVuY3Rpb25zIHRoYXQgaGFuZGxlIFBIWSBtYW5hZ2VtZW50IHdpbGwgYmUgaW4gb3JkZXIuIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bGwgbmVlZCB0byB0cmFjayBkb3duIGNhbGxlcnMgb2YgY3J1Y2lhbCBmdW5jdGlvbnMgbGlrZSBgcGh5X2F0dGFjaF9kaXJlY3RgLCBgcGh5X2RldGFjaGAsIGBwaHlsaW5rX2JyaW5ndXBfcGh5YCwgYHBoeWxpbmtfZGlzY29ubmVjdF9waHlgLCBgcGh5X2Nvbm5lY3RgLCBhbmQgYHBoeV9hdHRhY2hgLiBUaGVzZSBhcmUgdGhlIGNvcmUgb3BlcmF0aW9ucywgdGhlIHBsYWNlcyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLCBzbyB0byBzcGVhaywgaW4gYXR0YWNoaW5nLCBkZXRhY2hpbmcsIGNvbm5lY3RpbmcsIGFuZCBkaXNjb25uZWN0aW5nIHRoZSBQSFlzLiBVbmRlcnN0YW5kaW5nIHRoZWlyIHVzYWdlIHBhdHRlcm5zIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgcGljdHVyZSBoZXJlLiBJIHN1c3BlY3QgdGhlcmUgd2lsbCBiZSBzb21lIGludGVyZXN0aW5nIGNvbm5lY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BoeV9hdHRhY2hfZGlyZWN0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM9OTMxPXN0YXRpYyBpbnQgeGdiZV9waHlfZmluZF9waHlfZGV2aWNlKHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTk4Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM6OTgzOlx0cmV0ID0gcGh5X2F0dGFjaF9kaXJlY3QocGRhdGEtXHUwMDNlbmV0ZGV2LCBwaHlkZXYsIHBoeWRldi1cdTAwM2VkZXZfZmxhZ3MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTk4NC1cdFx0XHRcdFBIWV9JTlRFUkZBQ0VfTU9ERV9TR01JSSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTk4NS1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM6OTg2Olx0XHRuZXRkZXZfZXJyKHBkYXRhLVx1MDAzZW5ldGRldiwgXCYjMzQ7cGh5X2F0dGFjaF9kaXJlY3QgZmFpbGVkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtOTg3LVx0XHRwaHlfZGV2aWNlX3JlbW92ZShwaHlkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2VuZXQuYz0xMTU5PWludCBobnNfbmljX2luaXRfcGh5KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgaG5hZV9oYW5kbGUgKmgpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jLTExODAtXHR9IGVsc2Uge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jOjExODE6XHRcdHJldCA9IHBoeV9hdHRhY2hfZGlyZWN0KG5kZXYsIHBoeV9kZXYsIDAsIGgtXHUwMDNlcGh5X2lmKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2VuZXQuYy0xMTgyLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM9MTIyNT1pbnQgcGh5X2Nvbm5lY3RfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMjMzLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxMjM0Olx0cmMgPSBwaHlfYXR0YWNoX2RpcmVjdChkZXYsIHBoeWRldiwgcGh5ZGV2LVx1MDAzZWRldl9mbGFncywgaW50ZXJmYWNlKTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTIzNS1cdGlmIChyYylcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTE3NDM9c3RhdGljIHZvaWQgcGh5X3Jlc3RvcmVfZ2VucGh5X2lycShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTc0OS0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTc1MDogKiBwaHlfYXR0YWNoX2RpcmVjdCAtIGF0dGFjaCBhIG5ldHdvcmsgZGV2aWNlIHRvIGEgZ2l2ZW4gUEhZIGRldmljZSBwb2ludGVyXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE3NTEtICogQGRldjogbmV0d29yayBkZXZpY2UgdG8gYXR0YWNoXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xNzYzLSAqL1xuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxNzY0OmludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xNzY1LVx0XHQgICAgICB1MzIgZmxhZ3MsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xOTE5LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTkyMDpFWFBPUlRfU1lNQk9MKHBoeV9hdHRhY2hfZGlyZWN0KTtcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTkyMS1cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE5MjYtICogVGhpcyBkZXRhY2hlcyB0aGUgcGh5IGRldmljZSBmcm9tIGl0cyBuZXR3b3JrIGRldmljZSBhbmQgdGhlIHBoeVxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxOTI3OiAqIGRyaXZlciwgYW5kIGRyb3BzIHRoZSByZWZlcmVuY2UgY291bnQgdGFrZW4gaW4gcGh5X2F0dGFjaF9kaXJlY3QoKS5cbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTkyOC0gKi9cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMjE9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIzNC1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjIzNTpcdHJldHVybiBwaHlfYXR0YWNoX2RpcmVjdChwbC1cdTAwM2VuZXRkZXYsIHBoeSwgZmxhZ3MsIGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyMzYtfVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI0My0gKiBDb25uZWN0IEBwaHkgdG8gdGhlIHBoeWxpbmsgaW5zdGFuY2Ugc3BlY2lmaWVkIGJ5IEBwbCBieSBjYWxsaW5nXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNDQ6ICogcGh5X2F0dGFjaF9kaXJlY3QoKS4gQ29uZmlndXJlIHRoZSBAcGh5IGFjY29yZGluZyB0byB0aGUgTUFDIGRyaXZlciYjMzk7c1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjQ1LSAqIGNhcGFiaWxpdGllcywgc3RhcnQgdGhlIFBIWUxJQiBzdGF0ZSBtYWNoaW5lIGFuZCBlbmFibGUgYW55IGludGVycnVwdHNcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzMDU9aW50IHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzMzgtXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIzMzk6XHRyZXQgPSBwaHlfYXR0YWNoX2RpcmVjdChwbC1cdTAwM2VuZXRkZXYsIHBoeV9kZXYsIGZsYWdzLFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzQwLVx0XHRcdFx0cGwtXHUwMDNlbGlua19pbnRlcmZhY2UpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5ODQ2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgUEhZIERldmljZSBJbXBsZW1lbnRhdGlvbnMqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2ggZHJpdmVycyBpbiB0aGUga2VybmVsIHV0aWxpemUgYHBoeWxpbmtgIG9yIGBwaHlfZGV2aWNlYCwgYW5kIG1vcmUgaW1wb3J0YW50bHksIHdoaWNoIG9mIHRoZW0gbWlnaHQgbGVuZCB0aGVtc2VsdmVzIHRvIHRlc3Rpbmcgd2l0aGluIGEgdmlydHVhbCBlbnZpcm9ubWVudC4gSSYjMzk7bSB0aGlua2luZyBRRU1VLCBtYXliZSBhIGR1bW15IHNldHVwLCBuZXRsaW5rLCBvciBldmVuIHN5emthbGxlciBjb3VsZCBiZSB1c2VmdWwgaGVyZS4gVGhlIGtleSBpcyBmaW5kaW5nIHRlc3RhYmxlIHRhcmdldHMuCgpGaXJzdCwgSSBzaG91bGQgY2hlY2sgZm9yIGFueSBleGlzdGluZyB2aXJ0dWFsIFBIWSBkZXZpY2VzLiBBcmUgdGhlcmUgYW55IGRyaXZlcnMgdGhhdCBzaW11bGF0ZSBhIFBIWT8gT3IgbWF5YmUgVVNCIG5ldHdvcmsgZHJpdmVycywgc29tZXRoaW5nIGxpa2UgYGNkY19uY21gIG9yIGB1c2JuZXRgPyBXaGF0IGFib3V0IGEgRFNBIGxvb3BiYWNrIG9yIG1vY2sgTURJTz8gQW5kLCBjcnVjaWFsbHksIGNhbiBJIGxldmVyYWdlIFFFTVUmIzM5O3MgZW11bGF0ZWQgaGFyZHdhcmUsIGxpa2UgdGhlIGBlMTAwMGAgb3IgYGlnYmAgZXRoZXJuZXQgY29udHJvbGxlcnM/IERvIHRob3NlIHVzZSBgcGh5bGlua2Agb3IgYHBoeWxpYmAgaW50ZXJuYWxseT8gVGhhdCYjMzk7cyBhIGh1Z2UgcXVlc3Rpb24gSSBuZWVkIHRvIGFuc3dlci4KClRvIG1ha2UgcHJvZ3Jlc3MsIEkmIzM5O2xsIHN0YXJ0IGJ5IHN5c3RlbWF0aWNhbGx5IHNlYXJjaGluZyBmb3IgdXNhZ2VzIG9mIGtleSBmdW5jdGlvbnMuIExldCYjMzk7cyBzZWUgd2hpY2ggZHJpdmVycyBhcmUgY2FsbGluZyBgcGh5X2Nvbm5lY3RgLCBgcGh5X2F0dGFjaGAsIGBwaHlsaW5rX2NyZWF0ZWAsIGBwaHlsaW5rX2Nvbm5lY3RfcGh5YCwgYW5kIGBtZGlvYnVzX3JlZ2lzdGVyYC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHdoaWNoIHBhcnRzIG9mIHRoZSBjb2RlYmFzZSBhcmUgbW9zdCByZWxldmFudCBhbmQgcG9pbnQgbWUgdG93YXJkcyBwb3RlbnRpYWwgY2FuZGlkYXRlcyBmb3IgdmlydHVhbGl6YXRpb24gYW5kIHRlc3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6NDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5bGlua19jcmVhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jPTExMjg9c3RhdGljIGludCBhbHRlcmFfdHNlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE0MTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmM6MTQxNjpcdHByaXYtXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnByaXYtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTQxNy1cdFx0XHRcdCAgICAgICBvZl9md25vZGVfaGFuZGxlKHByaXYtXHUwMDNlZGV2aWNlLVx1MDAzZW9mX25vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM9MTA3ND1zdGF0aWMgaW50IGFnNzF4eF9waHlsaW5rX3NldHVwKHN0cnVjdCBhZzcxeHggKmFnKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmMtMTEwOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvYWc3MXh4LmM6MTEwOTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZhZy1cdTAwM2VwaHlsaW5rX2NvbmZpZywgYWctXHUwMDNlcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYy0xMTEwLVx0XHRcdFx0IGFnLVx1MDAzZXBoeV9pZl9tb2RlLCBcdTAwMjZhZzcxeHhfcGh5bGlua19tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jPTEwMjM9c3RhdGljIGludCBtYWNiX21paV9wcm9iZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA4NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmM6MTA4NjpcdGJwLVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZicC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgYnAtXHUwMDNlcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYy0xMDg3LVx0XHRcdFx0ICAgICBicC1cdTAwM2VwaHlfaW50ZXJmYWNlLCBcdTAwMjZtYWNiX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jPTIwMT1zdGF0aWMgaW50IGRwYWFfbmV0ZGV2X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldF9kZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0yNzQtXHRtYWNfZGV2LVx1MDAzZXVwZGF0ZV9zcGVlZCA9IGRwYWFfZXRoX2Nncl9zZXRfc3BlZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jOjI3NTpcdG1hY19kZXYtXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNm1hY19kZXYtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jLTI3Ni1cdFx0XHRcdFx0ICBkZXZfZndub2RlKG1hY19kZXYtXHUwMDNlZGV2KSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM9NTYwPWludCBkcGFhMl9tYWNfY29ubmVjdChzdHJ1Y3QgZHBhYTJfbWFjICptYWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9kcGFhMi1tYWMuYzo2MjU6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNi1cdFx0XHRcdCBkcG1hY19ub2RlLCBtYWMtXHUwMDNlaWZfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9OTMxPXN0YXRpYyBpbnQgZW5ldGM0X2xpbmtfaW5pdChzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05NDktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTUwOlx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXHUwMDI2ZW5ldGNfcGxfbWFjX29wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTUxLVx0aWYgKGVycikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk1Mi1cdFx0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byBjcmVhdGUgcGh5bGlua1xcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTUzOlx0XHRnb3RvIGVycl9waHlsaW5rX2NyZWF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05NTQtXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk1Ny1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYzo5NTg6ZXJyX3BoeWxpbmtfY3JlYXRlOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk1OS1cdGVuZXRjX21kaW9idXNfZGVzdHJveShwZik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM9Nzk1PXN0YXRpYyBpbnQgZW5ldGNfcGZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtODc3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6ODc4Olx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXHUwMDI2ZW5ldGNfbWFjX3BoeWxpbmtfb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTg3OS1cdGlmIChlcnIpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo4ODA6XHRcdGdvdG8gZXJyX3BoeWxpbmtfY3JlYXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtODgxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTg4OS1cdGVuZXRjX3BoeWxpbmtfZGVzdHJveShwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jOjg5MDplcnJfcGh5bGlua19jcmVhdGU6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy04OTEtXHRlbmV0Y19tZGlvYnVzX2Rlc3Ryb3kocGYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz00MTk9RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfbWRpb2J1c19kZXN0cm95KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy00MjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6NDIxOmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtNDIyLVx0XHRcdCBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpvcHMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTQ2MS1cdHBmLVx1MDAzZXBoeWxpbmtfY29uZmlnLm1hY19jYXBhYmlsaXRpZXMgPSBtYWNfY2FwcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzo0NjI6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cGYtXHUwMDNlcGh5bGlua19jb25maWcsIG9mX2Z3bm9kZV9oYW5kbGUobm9kZSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtNDYzLVx0XHRcdFx0IHBmLVx1MDAzZWlmX21vZGUsIG9wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jLTQ3Mi19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmM6NDczOkVYUE9SVF9TWU1CT0xfR1BMKGVuZXRjX3BoeWxpbmtfY3JlYXRlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy00NzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oPTEyPXZvaWQgZW5ldGNfbWRpb2J1c19kZXN0cm95KHN0cnVjdCBlbmV0Y19wZiAqcGYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oOjEzOmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmgtMTQtXHRcdFx0IGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgKm9wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmM9ODUzPXN0YXRpYyBpbnQgZnNfZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYy05MzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYzo5MzM6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2ZmVwLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKGZlcC1cdTAwM2VkZXYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmMtOTM0LVx0XHRcdFx0IHBoeV9tb2RlLCBcdTAwMjZmc19lbmV0X3BoeWxpbmtfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmM9MzQxOT1zdGF0aWMgaW50IHVjY19nZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UqIG9mZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS91Y2NfZ2V0aC5jLTM1NzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGguYzozNTc0Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnVnZXRoLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKFx1MDAyNmRldi1cdTAwM2VkZXYpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmMtMzU3NS1cdFx0XHRcdCBwaHlfaW50ZXJmYWNlLCBcdTAwMjZ1Z2V0aF9tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jPTU0ODA9c3RhdGljIGludCBtdm5ldGFfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jLTU1OTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jOjU1OTk6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cHAtXHUwMDNlcGh5bGlua19jb25maWcsIHBkZXYtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmMtNTYwMC1cdFx0XHRcdCBwaHlfbW9kZSwgXHUwMDI2bXZuZXRhX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYz02ODQwPXN0YXRpYyBpbnQgbXZwcDJfcG9ydF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTcxNDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYzo3MTQ4Olx0XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cG9ydC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgcG9ydF9md25vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy03MTQ5LVx0XHRcdFx0XHQgcGh5X21vZGUsIFx1MDAyNm12cHAyX3BoeWxpbmtfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYz0zNzA9c3RhdGljIGludCBwcmVzdGVyYV9wb3J0X3NmcF9iaW5kKHN0cnVjdCBwcmVzdGVyYV9wb3J0ICpwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jLTQxNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jOjQxNzpcdFx0cGh5X2xpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwb3J0LVx1MDAzZXBoeV9jb25maWcsIGZ3bm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jLTQxOC1cdFx0XHRcdFx0ICBQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYz00ODI0PXN0YXRpYyBpbnQgbXRrX2FkZF9tYWMoc3RydWN0IG10a19ldGggKmV0aCwgc3RydWN0IGRldmljZV9ub2RlICpucClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jLTQ5NjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jOjQ5Njk6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2bWFjLVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy00OTcwLVx0XHRcdFx0IG9mX2Z3bm9kZV9oYW5kbGUobWFjLVx1MDAzZW9mX25vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmM9NzQ2PXN0cnVjdCBuZXRfZGV2aWNlICpmYm5pY19uZXRkZXZfYWxsb2Moc3RydWN0IGZibmljX2RldiAqZmJkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODM0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYzo4MzU6XHRpZiAoZmJuaWNfcGh5bGlua19jcmVhdGUobmV0ZGV2KSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy04MzYtXHRcdGZyZWVfbmV0ZGV2KG5ldGRldik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuaD0xMTE9aW50IGZibmljX3BoeWxpbmtfZ2V0X2ZlY3BhcmFtKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oLTExMi1cdFx0XHQgICAgICAgc3RydWN0IGV0aHRvb2xfZmVjcGFyYW0gKmZlY3BhcmFtKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2Lmg6MTEzOmludCBmYm5pY19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmgtMTE0LXZvaWQgZmJuaWNfcGh5bGlua19kZXN0cm95KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jPTE3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBmYm5pY19waHlsaW5rX21hY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTg2LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MTg3OiAqIGZibmljX3BoeWxpbmtfY3JlYXRlIC0gUGh5bGluayBkZXZpY2UgY3JlYXRpb25cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE4OC0gKiBAbmV0ZGV2OiBOZXR3b3JrIERldmljZSBzdHJ1Y3QgdG8gYXR0YWNoIHBoeWxpbmsgZGV2aWNlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTk2LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jOjE5NzppbnQgZmJuaWNfcGh5bGlua19jcmVhdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTE5OC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMjMxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MjMyOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNmZibi1cdTAwM2VwaHlsaW5rX2NvbmZpZywgTlVMTCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTIzMy1cdFx0XHRcdCBmYm5pY19waHlsaW5rX3NlbGVjdF9pbnRlcmZhY2UoZmJuLVx1MDAzZWF1aSksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jPTMxNTI9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgbGFuNzQzeF9waHlsaW5rX21hY19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxNTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6MzE2MDpzdGF0aWMgaW50IGxhbjc0M3hfcGh5bGlua19jcmVhdGUoc3RydWN0IGxhbjc0M3hfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYy0zMTYxLXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzIxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYzozMjEyOlx0cGwgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZhZGFwdGVyLVx1MDAzZXBoeWxpbmtfY29uZmlnLCBOVUxMLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMyMTMtXHRcdFx0ICAgIGFkYXB0ZXItXHUwMDNlcGh5X2ludGVyZmFjZSwgXHUwMDI2bGFuNzQzeF9waHlsaW5rX21hY19vcHMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0zNjkxPXN0YXRpYyBpbnQgbGFuNzQzeF9wY2lkZXZfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3NTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM6Mzc1MTpcdHJldCA9IGxhbjc0M3hfcGh5bGlua19jcmVhdGUoYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzc1Mi1cdGlmIChyZXQgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYz03OTE9c3RhdGljIGludCBsYW45NjZ4X3Byb2JlX3BvcnQoc3RydWN0IGxhbjk2NnggKmxhbjk2NngsIHUzMiBwLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTg1NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jOjg1NjpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwb3J0LVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmMtODU3LVx0XHRcdFx0IHBvcnRucCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM9MzEyPXN0YXRpYyBpbnQgc3Bhcng1X2NyZWF0ZV9wb3J0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMzg4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jOjM4OTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZzcHg1X3BvcnQtXHUwMDNlcGh5bGlua19jb25maWcsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMzkwLVx0XHRcdFx0IG9mX2Z3bm9kZV9oYW5kbGUoY29uZmlnLVx1MDAzZW5vZGUpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jPTE3NzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgb2NlbG90X3BoeWxpbmtfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYzoxNzgwOnN0YXRpYyBpbnQgb2NlbG90X3BvcnRfcGh5bGlua19jcmVhdGUoc3RydWN0IG9jZWxvdCAqb2NlbG90LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3ODEtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnRucClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYy0xODIwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTgyMTpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZwcml2LVx1MDAzZXBoeWxpbmtfY29uZmlnLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTgyMi1cdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKHBvcnRucCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM9MTg0Mz1pbnQgb2NlbG90X3Byb2JlX3BvcnQoc3RydWN0IG9jZWxvdCAqb2NlbG90LCBpbnQgcG9ydCwgc3RydWN0IHJlZ21hcCAqdGFyZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4NzktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYzoxODgwOlx0ZXJyID0gb2NlbG90X3BvcnRfcGh5bGlua19jcmVhdGUob2NlbG90LCBwb3J0LCBwb3J0bnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTg4MS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xMzc0PXN0YXRpYyBpbnQgc3RtbWFjX3BoeWxpbmtfc2V0dXAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMTQ2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTQ2NjpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIGRldl9md25vZGUocHJpdi1cdTAwM2VkZXZpY2UpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNDY3LVx0XHRcdFx0IHByaXYtXHUwMDNlcGxhdC1cdTAwM2VwaHlfaW50ZXJmYWNlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jPTQ1PWludCB0bjQwX3BoeV9yZWdpc3RlcihzdHJ1Y3QgdG40MF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jLTYyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmM6NjM6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBQSFlfSU5URVJGQUNFX01PREVfWEFVSSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS90bjQwX3BoeS5jLTY0LVx0XHRcdFx0IFx1MDAyNnRuNDBfbWFjX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYz0yNzU5PWFtNjVfY3Bzd19udXNzX2luaXRfcG9ydF9uZGV2KHN0cnVjdCBhbTY1X2Nwc3dfY29tbW9uICpjb21tb24sIHUzMiBwb3J0X2lkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jLTI4NDMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jOjI4NDQ6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXHUwMDI2cG9ydC1cdTAwM2VzbGF2ZS5waHlsaW5rX2NvbmZpZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMjg0NS1cdFx0XHRcdCBvZl9md25vZGVfaGFuZGxlKHBvcnQtXHUwMDNlc2xhdmUucG9ydF9ucCksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jPTEzMD1zdGF0aWMgaW50IG5nYmVfcGh5bGlua19pbml0KHN0cnVjdCB3eCAqd3gpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jLTE0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYzoxNTA6XHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBwaHlfbW9kZSwgXHUwMDI2bmdiZV9tYWNfb3BzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYy0xNTEtXHRpZiAoSVNfRVJSKHBoeWxpbmspKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfYW1sLmM9NDgyPWludCB0eGdiZV9waHlsaW5rX2luaXRfYW1sKHN0cnVjdCB0eGdiZSAqdHhnYmUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYy01MTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jOjUxMzpcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIE5VTEwsIHBoeV9tb2RlLCBcdTAwMjZ0eGdiZV9tYWNfb3BzX2FtbCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jLTUxNC1cdGlmIChJU19FUlIocGh5bGluaykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYz0yNjg9c3RhdGljIGludCB0eGdiZV9waHlsaW5rX2luaXQoc3RydWN0IHR4Z2JlICp0eGdiZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTI5Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmM6MjkzOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgZndub2RlLCBwaHlfbW9kZSwgXHUwMDI2dHhnYmVfbWFjX29wcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTI5NC1cdGlmIChJU19FUlIocGh5bGluaykpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYz0yNzk1PXN0YXRpYyBpbnQgYXhpZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzEyMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM6MzEyMTpcdGxwLVx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcdTAwMjZscC1cdTAwM2VwaHlsaW5rX2NvbmZpZywgcGRldi1cdTAwM2VkZXYuZndub2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L3hpbGlueF9heGllbmV0X21haW4uYy0zMTIyLVx0XHRcdFx0ICAgICBscC1cdTAwM2VwaHlfbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjUtXHRcdHJldCA9IFBUUl9FUlIobHAtXHUwMDNlcGh5bGluayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMxMjY6XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O3BoeWxpbmtfY3JlYXRlIGVycm9yICglaSlcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjctXHRcdGdvdG8gY2xlYW51cF9tZGlvO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NTE1PXN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9tYWNfYW5kX3BjcyhzdHJ1Y3QgcGh5bGluayAqcGwsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzAtXHRpZiAocGNzKSB7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjUzMTpcdFx0LyogVGhlIFBDUywgaWYgcHJlc2VudCwgbXVzdCBiZSBzZXR1cCBiZWZvcmUgcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzItXHRcdCAqIGhhcyBiZWVuIGNhbGxlZC4gSWYgdGhlIG9wcyBpcyBub3QgaW5pdGlhbGlzZWQsIHByaW50IGFuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM4PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xMDcwLSAqIHBoeWxpbmtfcGNzX25lZ19tb2RlKCkgLSBoZWxwZXIgdG8gZGV0ZXJtaW5lIFBDUyBpbmJhbmQgbW9kZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDcxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNzItICogQHBjczogYSBwb2ludGVyIHRvIFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTc2OD1zdGF0aWMgaW50IHBoeWxpbmtfcmVnaXN0ZXJfc2ZwKHN0cnVjdCBwaHlsaW5rICpwbCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3OTItICogcGh5bGlua19zZXRfZml4ZWRfbGluaygpIC0gc2V0IHRoZSBmaXhlZCBsaW5rXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE3OTM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTc5NC0gKiBAc3RhdGU6IGEgcG9pbnRlciB0byBhIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xODMwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmspO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzMi0vKipcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgzMzogKiBwaHlsaW5rX2NyZWF0ZSgpIC0gY3JlYXRlIGEgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODM0LSAqIEBjb25maWc6IGEgcG9pbnRlciB0byB0aGUgdGFyZ2V0IFx1MDAyNnN0cnVjdCBwaHlsaW5rX2NvbmZpZ1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTg0Ny0gKi9cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTg0ODpzdHJ1Y3QgcGh5bGluayAqcGh5bGlua19jcmVhdGUoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NDktXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM1LX1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkzNjpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2NyZWF0ZSk7XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MzctXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM5LSAqIHBoeWxpbmtfZGVzdHJveSgpIC0gY2xlYW51cCBhbmQgZGVzdHJveSB0aGUgcGh5bGluayBpbnN0YW5jZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTQwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NDEtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTE5NTY9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19kZXN0cm95KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NTktICogcGh5bGlua19leHBlY3RzX3BoeSgpIC0gRGV0ZXJtaW5lIGlmIHBoeWxpbmsgZXhwZWN0cyBhIHBoeSB0byBiZSBhdHRhY2hlZFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxOTYwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NjEtICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMjE9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjIzOS0gKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNDA6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI0MS0gKiBAcGh5OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5X2RldmljZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyNzM9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19jb25uZWN0X3BoeSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjc2LSAqIHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QoKSAtIGNvbm5lY3QgdGhlIFBIWSBzcGVjaWZpZWQgaW4gdGhlIERUIG1vZGUuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNzc6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI3OC0gKiBAZG46IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBkZXZpY2Vfbm9kZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyOTI9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19vZl9waHlfY29ubmVjdCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjk1LSAqIHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KCkgLSBjb25uZWN0IHRoZSBQSFkgc3BlY2lmaWVkIGluIHRoZSBmd25vZGUuXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyOTY6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI5Ny0gKiBAZndub2RlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZndub2RlX2hhbmRsZS5cbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzNTE9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM1NS0gKiAgIGluc3RhbmNlLlxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzU2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNTctICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzNzk9c3RhdGljIHZvaWQgcGh5bGlua19saW5rX2NoYW5nZWQoc3RydWN0IHBoeWxpbmsgKnBsLCBib29sIHVwLCBjb25zdCBjaGFyICp3aGF0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM4OC0gKiBwaHlsaW5rX21hY19jaGFuZ2UoKSAtIG5vdGlmeSBwaHlsaW5rIG9mIGEgY2hhbmdlIGluIE1BQyBzdGF0ZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzg5OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzOTAtICogQHVwOiBpbmRpY2F0ZXMgd2hldGhlciB0aGUgbGluayBpcyBjdXJyZW50bHkgdXAuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDIxPXN0YXRpYyBpcnFyZXR1cm5fdCBwaHlsaW5rX2xpbmtfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQzMS0gKiBwaHlsaW5rX3N0YXJ0KCkgLSBzdGFydCBhIHBoeWxpbmsgaW5zdGFuY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjQzMjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDMzLSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDk0PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3RhcnQpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ5Ny0gKiBwaHlsaW5rX3N0b3AoKSAtIHN0b3AgYSBwaHlsaW5rIGluc3RhbmNlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0OTg6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQ5OS0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjUyOD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N0b3ApO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUzMS0gKiBwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKCkgLSBibG9jayBQSFkgYWJpbGl0eSB0byBzdG9wIHJlY2VpdmUgY2xvY2sgaW4gTFBJXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI1MzI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUzMy0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjU1Nz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NjAtICogcGh5bGlua19yeF9jbGtfc3RvcF91bmJsb2NrKCkgLSB1bmJsb2NrIFBIWSBhYmlsaXR5IHRvIHN0b3AgcmVjZWl2ZSBjbG9ja1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTYxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI1NjItICpcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1OTk9c3RhdGljIGJvb2wgcGh5bGlua19waHlfcG1fc3BlZWRfY3RybChzdHJ1Y3QgcGh5bGluayAqcGwpXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjA2LSAqIHBoeWxpbmtfc3VzcGVuZCgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2Ugc3VzcGVuZCBldmVudFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjA3OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MDgtICogQG1hY193b2w6IHRydWUgaWYgdGhlIE1BQyBuZWVkcyB0byByZWNlaXZlIHBhY2tldHMgZm9yIFdha2Utb24tTGFuXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjU4PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3VzcGVuZCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjYxLSAqIHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUoKSAtIHByZXBhcmUgdG8gcmVzdW1lIGEgbmV0d29yayBkZXZpY2VcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjY2MjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjYzLSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNjgzPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUpO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY4Ni0gKiBwaHlsaW5rX3Jlc3VtZSgpIC0gaGFuZGxlIGEgbmV0d29yayBkZXZpY2UgcmVzdW1lIGV2ZW50XG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2ODc6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjY4OC0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjcyNj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Jlc3VtZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzI5LSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfd29sKCkgLSBnZXQgdGhlIHdha2Ugb24gbGFuIHBhcmFtZXRlcnMgZm9yIHRoZSBQSFlcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjczMDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzMxLSAqIEB3b2w6IGEgcG9pbnRlciB0byBcdTAwMjZzdHJ1Y3QgZXRodG9vbF93b2xpbmZvIHRvIGhvbGQgdGhlIHJlYWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9Mjc2Mz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X3dvbCk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzY2LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfd29sKCkgLSBzZXQgd2FrZSBvbiBsYW4gcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNzY3OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3NjgtICogQHdvbDogYSBwb2ludGVyIHRvIFx1MDAyNnN0cnVjdCBldGh0b29sX3dvbGluZm8gZm9yIHRoZSBkZXNpcmVkIHBhcmFtZXRlcnNcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI4OTU9c3RhdGljIHZvaWQgcGh5bGlua19nZXRfa3NldHRpbmdzKGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjkxMC0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCgpIC0gZ2V0IHRoZSBjdXJyZW50IGxpbmsgc2V0dGluZ3NcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjkxMTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTEyLSAqIEBrc2V0OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9saW5rX2tzZXR0aW5ncyB0byBob2xkIGxpbmsgc2V0dGluZ3Ncbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI5NjM9c3RhdGljIGJvb2wgcGh5bGlua192YWxpZGF0ZV9wY3NfaW5iYW5kX2F1dG9uZWcoc3RydWN0IHBoeWxpbmsgKnBsLFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk4NC0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX3NldCgpIC0gc2V0IHRoZSBsaW5rIHNldHRpbmdzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5ODU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjk4Ni0gKiBAa3NldDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgZm9yIHRoZSBkZXNpcmVkIG1vZGVzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTUxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNTQtICogcGh5bGlua19ldGh0b29sX253YXlfcmVzZXQoKSAtIHJlc3RhcnQgbmVnb3RpYXRpb25cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE1NTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTU2LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTc2PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxNzktICogcGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKCkgLSBnZXQgdGhlIGN1cnJlbnQgcGF1c2UgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTgwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMxODEtICogQHBhdXNlOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTkyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfcGF1c2VwYXJhbSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTk1LSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfcGF1c2VwYXJhbSgpIC0gc2V0IHRoZSBjdXJyZW50IHBhdXNlIHBhcmFtZXRlcnNcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzE5NjogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTk3LSAqIEBwYXVzZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfcGF1c2VwYXJhbVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzI3OD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI4Mi0gKiAgIGNvdW50ZXJcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzI4MzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKS5cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI4NC0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzMwMT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2dldF9lZWVfZXJyKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMDQtICogcGh5bGlua19ldGh0b29sX2dldF9lZWUoKSAtIHJlYWQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMzA1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMDYtICogQGVlZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIHJlYWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzMyNz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2V0aHRvb2xfZ2V0X2VlZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzMwLSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfZWVlKCkgLSBzZXQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMzMxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMzItICogQGVlZTogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGV0aHRvb2xfa2VlZSBmb3IgdGhlIGRlc2lyZWQgcGFyYW1ldGVyc1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzUwMT1zdGF0aWMgaW50IHBoeWxpbmtfbWlpX3dyaXRlKHN0cnVjdCBwaHlsaW5rICpwbCwgdW5zaWduZWQgaW50IHBoeV9pZCxcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MTktICogcGh5bGlua19taWlfaW9jdGwoKSAtIGdlbmVyaWMgbWlpIGlvY3RsIGludGVyZmFjZVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTIwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1MjEtICogQGlmcjogYSBwb2ludGVyIHRvIGEgXHUwMDI2c3RydWN0IGlmcmVxIGZvciBzb2NrZXQgaW9jdGxzXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zNTk0PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfbWlpX2lvY3RsKTtcbi0tXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM1OTgtICogICBsaW5rIHBhcnRuZXJzXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM1OTk6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYwMC0gKiBAc3luYzogcGVyZm9ybSBhY3Rpb24gc3luY2hyb25vdXNseVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzYxOT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NwZWVkX2Rvd24pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYyMy0gKiAgIHBoeWxpbmtfc3BlZWRfZG93bigpXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM2MjQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzYyNS0gKlxuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9NDM3OD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX21paV9jNDVfcGNzX2dldF9zdGF0ZSk7XG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MzgyLSAqXHRcdFx0XHQgd2hpY2ggbG9zZXMgc3RhdGVcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NDM4MzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00Mzg0LSAqXG4tLVxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00Mzk5PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcmVwbGF5X2xpbmtfYmVnaW4pO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDQwMy0gKlx0XHRcdCAgICAgICB3aGljaCBsb3N0IHN0YXRlXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQ0MDQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDQwNS0gKlxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYz03OTk9c3RhdGljIGludCBheDg4NzcyX3BoeWxpbmtfc2V0dXAoc3RydWN0IHVzYm5ldCAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTktXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM6ODIwOlx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFx1MDAyNnByaXYtXHUwMDNlcGh5bGlua19jb25maWcsIGRldi1cdTAwM2VuZXQtXHUwMDNlZGV2LmZ3bm9kZSxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MjEtXHRcdFx0XHQgcGh5X2lmX21vZGUsIFx1MDAyNmF4ODg3NzJfcGh5bGlua19tYWNfb3BzKTtcbi0tXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jPTI3OTk9c3RhdGljIGludCBsYW43OHh4X3BoeWxpbmtfc2V0dXAoc3RydWN0IGxhbjc4eHhfbmV0ICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYy0yODM4LVxuZHJpdmVycy9uZXQvdXNiL2xhbjc4eHguYzoyODM5Olx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKHBjLCBkZXYtXHUwMDNlbmV0LVx1MDAzZWRldi5md25vZGUsXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4NDAtXHRcdFx0XHQgZGV2LVx1MDAzZWludGVyZmFjZSwgXHUwMDI2bGFuNzh4eF9waHlsaW5rX21hY19vcHMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMjc0CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMTY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEluaXRpYWwgQW5hbHlzaXMgb2YgdGhlIE5ldHdvcmsgRHJpdmVyIExhbmRzY2FwZSoqCgpPa2F5LCBzbyBJJiMzOTttIHNlZWluZyBhIHBhdHRlcm4gaGVyZS4gTG9va2luZyBhdCB0aGVzZSBuZXR3b3JrIGRyaXZlciBpbXBsZW1lbnRhdGlvbnMg4oCTIHNwZWNpZmljYWxseSBgZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jYCwgYGxhbjc4eHguY2AsIGFuZCB0aGUgd2hvbGUgYGRyaXZlcnMvbmV0L2RzYS9gIGRpcmVjdG9yeSwgaW5jbHVkaW5nIHRoYXQgYGRzYV9sb29wLmNgIGV4YW1wbGUg4oCTIGl0JiMzOTtzIGNsZWFyIHRoZXkmIzM5O3JlIGxldmVyYWdpbmcgcGh5bGluay4gVGhhdCYjMzk7cyBhIHNvbGlkIGFyY2hpdGVjdHVyYWwgY2hvaWNlLCBhbmQgaXQmIzM5O3Mgc29tZXRoaW5nIEkmIzM5O3ZlIGJlZW4ga2VlcGluZyBhbiBleWUgb24uIEFuZCwgb2YgY291cnNlLCB0aGUgbWVudGlvbiBvZiBVU0IgZGV2aWNlcyB1c2luZyBnYWRnZXQgZW11bGF0aW9uIHRocm91Z2ggc3l6a2FsbGVyIG9wZW5zIHVwIHNvbWUgZmFzY2luYXRpbmcgdGVzdGluZyBwb3NzaWJpbGl0aWVzIHZpYSByYXctZ2FkZ2V0IGFuZCB2dXNiLgoKVGhlIG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGludG8gdGhlIHBhdGNoIGNoYW5nZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kICp3aHkqIHRoZXkgYWRvcHRlZCBwaHlsaW5rIGFuZCB3aGF0IHNwZWNpZmljIHByb2JsZW0gdGhleSB3ZXJlIGFkZHJlc3NpbmcsIG9yIHdoYXQgbmV3IGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gYWRkZWQuIFRoYXQgcmVxdWlyZXMgYSBjYXJlZnVsIGV4YW1pbmF0aW9uIG9mIHRoZSBkaWZmcy4KCk5vdywgdG8gZ2V0IGEgZGVlcGVyIGhhbmRsZSBvbiB0aGUgcGh5bGluayBpbnRlcm5hbHMgdGhlbXNlbHZlcywgSSBuZWVkIHRvIGJydXNoIHVwIG9uIG15IGtub3dsZWRnZSBvZiB0aGUgcGh5L3BoeWxpbmsgYXJjaGl0ZWN0dXJlLiBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AgZnJvbSBhcm91bmQgbGluZXMgMTczMCB0byAxOTgwIGFuZCBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AgZnJvbSBsaW5lcyAyMDgwIHRvIDIzNzAuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBncmFzcCBvZiB0aGUgY29yZSBjb25jZXB0cywgZGF0YSBzdHJ1Y3R1cmVzLCBhbmQgdGhlIGNvbW11bmljYXRpb24gZmxvdyBiZXR3ZWVuIHRoZSBQSFkgYW5kIHRoZSBuZXR3b3JrIGRyaXZlci4gVGhpcyBzaG91bGQgYWxsb3cgbWUgdG8gdW5kZXJzdGFuZCBob3cgdGhvc2UgZGV2aWNlIGRyaXZlcnMgYXJlIHVzaW5nIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAyMTo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNzMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDcwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE3MzA6XHR9XG4xNzMxOlx0XG4xNzMyOlx0c3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydilcbjE3MzM6XHR7XG4xNzM0Olx0XHRyZXR1cm4gcGh5ZHJ2LVx1MDAzZWNvbmZpZ19pbnRyIFx1MDAyNlx1MDAyNiBwaHlkcnYtXHUwMDNlaGFuZGxlX2ludGVycnVwdDtcbjE3MzU6XHR9XG4xNzM2Olx0XG4xNzM3Olx0LyogR2l2ZSBiYWNrIHRoZSBpbnRlcnJ1cHQgcGh5X3Byb2JlKCkgcGFya2VkIHdoZW4gYSBkcml2ZXIgd2l0aCBubyBpbnRlcnJ1cHRcbjE3Mzg6XHQgKiBjYWxsYmFja3MgYm91bmQuIG1kaW9idXNfYWxsb2MoKSBkZWZhdWx0cyBidXMtXHUwMDNlaXJxW10gdG8gUEhZX1BPTEwgYW5kIHRoZVxuMTczOTpcdCAqIGJpbmQgY3ljbGUgZG9lcyBub3QgdG91Y2ggdGhlIHRhYmxlLCBzbyB3aGF0ZXZlciB0aGUgYnVzIHJlY29yZGVkIHRoZXJlXG4xNzQwOlx0ICogc3RpbGwgc3RhbmRzLiBPbmx5IHRoZSBwYXJraW5nIGlzIHVuZG9uZTogYW55IG90aGVyIHZhbHVlIHRoZSBQSFkgY2Fycmllc1xuMTc0MTpcdCAqIHdhcyBwdXQgdGhlcmUgYnkgc29tZW9uZSBlbHNlLlxuMTc0MjpcdCAqL1xuMTc0MzpcdHN0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbjE3NDQ6XHR7XG4xNzQ1Olx0XHRpZiAocGh5ZGV2LVx1MDAzZWlycSA9PSBQSFlfUE9MTClcbjE3NDY6XHRcdFx0cGh5ZGV2LVx1MDAzZWlycSA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2VpcnFbcGh5ZGV2LVx1MDAzZW1kaW8uYWRkcl07XG4xNzQ3Olx0fVxuMTc0ODpcdFxuMTc0OTpcdC8qKlxuMTc1MDpcdCAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcbjE3NTE6XHQgKiBAZGV2OiBuZXR3b3JrIGRldmljZSB0byBhdHRhY2hcbjE3NTI6XHQgKiBAcGh5ZGV2OiBQb2ludGVyIHRvIHBoeV9kZXZpY2UgdG8gYXR0YWNoXG4xNzUzOlx0ICogQGZsYWdzOiBQSFkgZGV2aWNlJiMzOTtzIGRldl9mbGFnc1xuMTc1NDpcdCAqIEBpbnRlcmZhY2U6IFBIWSBkZXZpY2UmIzM5O3MgaW50ZXJmYWNlXG4xNzU1Olx0ICpcbjE3NTY6XHQgKiBEZXNjcmlwdGlvbjogQ2FsbGVkIGJ5IGRyaXZlcnMgdG8gYXR0YWNoIHRvIGEgcGFydGljdWxhciBQSFlcbjE3NTc6XHQgKiAgICAgZGV2aWNlLiBUaGUgcGh5X2RldmljZSBpcyBmb3VuZCwgYW5kIHByb3Blcmx5IGhvb2tlZCB1cFxuMTc1ODpcdCAqICAgICB0byB0aGUgcGh5X2RyaXZlci4gIElmIG5vIGRyaXZlciBpcyBhdHRhY2hlZCwgdGhlbiBhXG4xNzU5Olx0ICogICAgIGdlbmVyaWMgZHJpdmVyIGlzIHVzZWQuICBUaGUgcGh5X2RldmljZSBpcyBnaXZlbiBhIHB0ciB0b1xuMTc2MDpcdCAqICAgICB0aGUgYXR0YWNoaW5nIGRldmljZSwgYW5kIGdpdmVuIGEgY2FsbGJhY2sgZm9yIGxpbmsgc3RhdHVzXG4xNzYxOlx0ICogICAgIGNoYW5nZS4gIFRoZSBwaHlfZGV2aWNlIGlzIHJldHVybmVkIHRvIHRoZSBhdHRhY2hpbmcgZHJpdmVyLlxuMTc2MjpcdCAqICAgICBUaGlzIGZ1bmN0aW9uIHRha2VzIGEgcmVmZXJlbmNlIG9uIHRoZSBwaHkgZGV2aWNlLlxuMTc2MzpcdCAqL1xuMTc2NDpcdGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuMTc2NTpcdFx0XHQgICAgICB1MzIgZmxhZ3MsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4xNzY2Olx0e1xuMTc2NzpcdFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cztcbjE3Njg6XHRcdHN0cnVjdCBkZXZpY2UgKmQgPSBcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXY7XG4xNzY5Olx0XHRzdHJ1Y3QgbW9kdWxlICpuZGV2X293bmVyID0gTlVMTDtcbjE3NzA6XHRcdGludCBlcnI7XG4xNzcxOlx0XG4xNzcyOlx0XHQvKiBGb3IgRXRoZXJuZXQgZGV2aWNlIGRyaXZlcnMgdGhhdCByZWdpc3RlciB0aGVpciBvd24gTURJTyBidXMsIHdlXG4xNzczOlx0XHQgKiB3aWxsIGhhdmUgYnVzLVx1MDAzZW93bmVyIG1hdGNoIG5kZXZfbW9kLCBzbyB3ZSBkbyBub3Qgd2FudCB0byBpbmNyZW1lbnRcbjE3NzQ6XHRcdCAqIG91ciBvd24gbW9kdWxlLVx1MDAzZXJlZmNudCBoZXJlLCBvdGhlcndpc2Ugd2Ugd291bGQgbm90IGJlIGFibGUgdG9cbjE3NzU6XHRcdCAqIHVubG9hZCBsYXRlciBvbi5cbjE3NzY6XHRcdCAqL1xuMTc3NzpcdFx0aWYgKGRldilcbjE3Nzg6XHRcdFx0bmRldl9vd25lciA9IGRldi1cdTAwM2VkZXYucGFyZW50LVx1MDAzZWRyaXZlci1cdTAwM2Vvd25lcjtcbjE3Nzk6XHRcdGlmIChuZGV2X293bmVyICE9IGJ1cy1cdTAwM2Vvd25lciBcdTAwMjZcdTAwMjYgIXRyeV9tb2R1bGVfZ2V0KGJ1cy1cdTAwM2Vvd25lcikpIHtcbjE3ODA6XHRcdFx0cGh5ZGV2X2VycihwaHlkZXYsIFwmIzM0O2ZhaWxlZCB0byBnZXQgdGhlIGJ1cyBtb2R1bGVcXG5cJiMzNDspO1xuMTc4MTpcdFx0XHRyZXR1cm4gLUVJTztcbjE3ODI6XHRcdH1cbjE3ODM6XHRcbjE3ODQ6XHRcdGdldF9kZXZpY2UoZCk7XG4xNzg1Olx0XG4xNzg2Olx0XHQvKiBBc3N1bWUgdGhhdCBpZiB0aGVyZSBpcyBubyBkcml2ZXIsIHRoYXQgaXQgZG9lc24mIzM5O3RcbjE3ODc6XHRcdCAqIGV4aXN0LCBhbmQgd2Ugc2hvdWxkIHVzZSB0aGUgZ2VucGh5IGRyaXZlci5cbjE3ODg6XHRcdCAqL1xuMTc4OTpcdFx0aWYgKCFkLVx1MDAzZWRyaXZlcikge1xuMTc5MDpcdFx0XHRpZiAocGh5ZGV2LVx1MDAzZWlzX2M0NSlcbjE3OTE6XHRcdFx0XHRkLVx1MDAzZWRyaXZlciA9IFx1MDAyNmdlbnBoeV9jNDVfZHJpdmVyLm1kaW9kcnYuZHJpdmVyO1xuMTc5MjpcdFx0XHRlbHNlXG4xNzkzOlx0XHRcdFx0ZC1cdTAwM2Vkcml2ZXIgPSBcdTAwMjZnZW5waHlfZHJpdmVyLm1kaW9kcnYuZHJpdmVyO1xuMTc5NDpcdFxuMTc5NTpcdFx0XHRwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDE7XG4xNzk2Olx0XHR9XG4xNzk3Olx0XG4xNzk4Olx0XHRpZiAoIXRyeV9tb2R1bGVfZ2V0KGQtXHUwMDNlZHJpdmVyLVx1MDAzZW93bmVyKSkge1xuMTc5OTpcdFx0XHRwaHlkZXZfZXJyKHBoeWRldiwgXCYjMzQ7ZmFpbGVkIHRvIGdldCB0aGUgZGV2aWNlIGRyaXZlciBtb2R1bGVcXG5cJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAyMTo1MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjk5MAoJCQkJCQkJb3V0cHV0OiA0MQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQgZGl2aW5nIGludG8gdGhlIGNvZGU6CgoqKkRlZXBlciBEaXZlIGludG8gUEhZIERyaXZlciBJbnRlcmFjdGlvbnMqKgoKQWxyaWdodCwgdGhlIGRpZmYgaXMgaW50ZXJlc3RpbmcsIGJ1dCBJIG5lZWQgYSBtb3JlIGNvbXBsZXRlIHBpY3R1cmUuIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgZGlnZ2luZyBpbnRvIGBwaHlfZGV2aWNlLmNgIGFuZCBgcGh5bGluay5jYC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG9uIHRoZSBjb2RlIGFyb3VuZCB0aGF0IGNoYW5nZS4gSSBrbm93IHRoZXNlIGZpbGVzIGludGltYXRlbHkg4oCTIHRoZXkmIzM5O3JlIHRoZSBoZWFydCBvZiBob3cgd2UgbWFuYWdlIHRoZSBwaHlzaWNhbCBsYXllciBpbnRlcmZhY2UgYW5kIGxpbmsgbmVnb3RpYXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoaXMgbW9kaWZpY2F0aW9uIGltcGFjdHMgdGhlIGludGVyYWN0aW9ucyBiZXR3ZWVuIHRoZXNlIHR3byBjb3JlIGNvbXBvbmVudHMuIFdoYXQgYXJlIHRoZSBkZXBlbmRlbmNpZXM/IFdoYXQgc2lkZSBlZmZlY3RzIG1pZ2h0IHRoaXMgaGF2ZT8gQSBjdXJzb3J5IGdsYW5jZSBhdCB0aGUgZGlmZiBpc24mIzM5O3QgZW5vdWdoOyBJIG5lZWQgdG8gc2VlIHRoZSBjb250ZXh0LCB0aGUgZnVuY3Rpb24gY2FsbHMsIHRoZSBkYXRhIHN0cnVjdHVyZXMgYmVpbmcgbWFuaXB1bGF0ZWQuIFRoaXMgZGVlcGVyIGRpdmUgd2lsbCBnaXZlIG1lIHRoZSBpbnNpZ2h0IEkgcmVxdWlyZSB0byB2YWxpZGF0ZSB0aGUgY2hhbmdlIGFuZCB1bmRlcnN0YW5kIGFueSBwb3RlbnRpYWwgaW1wbGljYXRpb25zLiBJIHdhbnQgdG8gc2VlIHRoZSAqd2h5KiBhcyB3ZWxsIGFzIHRoZSAqd2hhdCouIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCB1bmRlcnN0YW5kIHRoaXMgZnVsbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjUwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4OTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE4OTA6XHRcbjE4OTE6XHRcdHBoeV9yZXN1bWUocGh5ZGV2KTtcbjE4OTI6XHRcbjE4OTM6XHRcdC8qKlxuMTg5NDpcdFx0ICogSWYgdGhlIGV4dGVybmFsIHBoeSB1c2VkIGJ5IGN1cnJlbnQgbWFjIGludGVyZmFjZSBpcyBtYW5hZ2VkIGJ5XG4xODk1Olx0XHQgKiBhbm90aGVyIG1hYyBpbnRlcmZhY2UsIHNvIHdlIHNob3VsZCBjcmVhdGUgYSBkZXZpY2UgbGluayBiZXR3ZWVuXG4xODk2Olx0XHQgKiBwaHkgZGV2IGFuZCBtYWMgZGV2LlxuMTg5NzpcdFx0ICovXG4xODk4Olx0XHRpZiAoZGV2IFx1MDAyNlx1MDAyNiBwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlcGFyZW50IFx1MDAyNlx1MDAyNiBkZXYtXHUwMDNlZGV2LnBhcmVudCAhPSBwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlcGFyZW50KVxuMTg5OTpcdFx0XHRwaHlkZXYtXHUwMDNlZGV2bGluayA9IGRldmljZV9saW5rX2FkZChkZXYtXHUwMDNlZGV2LnBhcmVudCwgXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2LFxuMTkwMDpcdFx0XHRcdFx0XHRcdCAgRExfRkxBR19QTV9SVU5USU1FIHwgRExfRkxBR19TVEFURUxFU1MpO1xuMTkwMTpcdFxuMTkwMjpcdFx0cmV0dXJuIGVycjtcbjE5MDM6XHRcbjE5MDQ6XHRlcnJvcjpcbjE5MDU6XHRcdC8qIHBoeV9kZXRhY2goKSBkb2VzIGFsbCBvZiB0aGUgY2xlYW51cCBiZWxvdyAqL1xuMTkwNjpcdFx0cGh5X2RldGFjaChwaHlkZXYpO1xuMTkwNzpcdFx0cmV0dXJuIGVycjtcbjE5MDg6XHRcbjE5MDk6XHRlcnJvcl9tb2R1bGVfcHV0OlxuMTkxMDpcdFx0bW9kdWxlX3B1dChkLVx1MDAzZWRyaXZlci1cdTAwM2Vvd25lcik7XG4xOTExOlx0XHRwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHBoeWRldik7XG4xOTEyOlx0XHRwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDA7XG4xOTEzOlx0XHRkLVx1MDAzZWRyaXZlciA9IE5VTEw7XG4xOTE0Olx0ZXJyb3JfcHV0X2RldmljZTpcbjE5MTU6XHRcdHB1dF9kZXZpY2UoZCk7XG4xOTE2Olx0XHRpZiAobmRldl9vd25lciAhPSBidXMtXHUwMDNlb3duZXIpXG4xOTE3Olx0XHRcdG1vZHVsZV9wdXQoYnVzLVx1MDAzZW93bmVyKTtcbjE5MTg6XHRcdHJldHVybiBlcnI7XG4xOTE5Olx0fVxuMTkyMDpcdEVYUE9SVF9TWU1CT0wocGh5X2F0dGFjaF9kaXJlY3QpO1xuMTkyMTpcdFxuMTkyMjpcdC8qKlxuMTkyMzpcdCAqIHBoeV9kZXRhY2ggLSBkZXRhY2ggYSBQSFkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlXG4xOTI0Olx0ICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0XG4xOTI1Olx0ICpcbjE5MjY6XHQgKiBUaGlzIGRldGFjaGVzIHRoZSBwaHkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlIGFuZCB0aGUgcGh5XG4xOTI3Olx0ICogZHJpdmVyLCBhbmQgZHJvcHMgdGhlIHJlZmVyZW5jZSBjb3VudCB0YWtlbiBpbiBwaHlfYXR0YWNoX2RpcmVjdCgpLlxuMTkyODpcdCAqL1xuMTkyOTpcdHZvaWQgcGh5X2RldGFjaChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuMTkzMDpcdHtcbjE5MzE6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2O1xuMTkzMjpcdFx0c3RydWN0IG1vZHVsZSAqbmRldl9vd25lciA9IE5VTEw7XG4xOTMzOlx0XHRzdHJ1Y3QgbWlpX2J1cyAqYnVzO1xuMTkzNDpcdFxuMTkzNTpcdFx0aWYgKHBoeWRldi1cdTAwM2VkZXZsaW5rKSB7XG4xOTM2Olx0XHRcdGRldmljZV9saW5rX2RlbChwaHlkZXYtXHUwMDNlZGV2bGluayk7XG4xOTM3Olx0XHRcdHBoeWRldi1cdTAwM2VkZXZsaW5rID0gTlVMTDtcbjE5Mzg6XHRcdH1cbjE5Mzk6XHRcbjE5NDA6XHRcdGlmIChwaHlkZXYtXHUwMDNlc3lzZnNfbGlua3MpIHtcbjE5NDE6XHRcdFx0aWYgKGRldilcbjE5NDI6XHRcdFx0XHRzeXNmc19yZW1vdmVfbGluayhcdTAwMjZkZXYtXHUwMDNlZGV2LmtvYmosIFwmIzM0O3BoeWRldlwmIzM0Oyk7XG4xOTQzOlx0XHRcdHN5c2ZzX3JlbW92ZV9saW5rKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldi5rb2JqLCBcJiMzNDthdHRhY2hlZF9kZXZcJiMzNDspO1xuMTk0NDpcdFx0fVxuMTk0NTpcdFxuMTk0NjpcdFx0aWYgKCFwaHlkZXYtXHUwMDNlYXR0YWNoZWRfZGV2KVxuMTk0NzpcdFx0XHRzeXNmc19yZW1vdmVfZmlsZShcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYua29iaixcbjE5NDg6XHRcdFx0XHRcdCAgXHUwMDI2ZGV2X2F0dHJfcGh5X3N0YW5kYWxvbmUuYXR0cik7XG4xOTQ5Olx0XG4xOTUwOlx0XHRwaHlfc3VzcGVuZChwaHlkZXYpO1xuMTk1MTpcdFx0aWYgKGRldikge1xuMTk1MjpcdFx0XHRzdHJ1Y3QgaHd0c3RhbXBfcHJvdmlkZXIgKmh3cHJvdjtcbjE5NTM6XHRcbjE5NTQ6XHRcdFx0LyogaHdwcm92IG1heSB0ZWNobmljYWxseSBiZSBwcm90ZWN0ZWQgYnkgb3BzIGxvY2sgYnV0XG4xOTU1Olx0XHRcdCAqIG5vdCBmb3IgZGV2aWNlcyB3aXRoIGEgcGh5ZGV2LCBzZWUgcGh5X2xpbmtfdG9wb19hZGRfcGh5KClcbjE5NTY6XHRcdFx0ICovXG4xOTU3Olx0XHRcdGh3cHJvdiA9IHJ0bmxfZGVyZWZlcmVuY2UoZGV2LVx1MDAzZWh3cHJvdik7XG4xOTU4Olx0XHRcdC8qIERpc2FibGUgdGltZXN0YW1wIGlmIGl0IGlzIHRoZSBvbmUgc2VsZWN0ZWQgKi9cbjE5NTk6XHRcdFx0aWYgKGh3cHJvdiBcdTAwMjZcdTAwMjYgaHdwcm92LVx1MDAzZXBoeWRldiA9PSBwaHlkZXYpIHtcbjE5NjA6XHRcdFx0XHRyY3VfYXNzaWduX3BvaW50ZXIoZGV2LVx1MDAzZWh3cHJvdiwgTlVMTCk7XG4xOTYxOlx0XHRcdFx0a2ZyZWVfcmN1KGh3cHJvdiwgcmN1X2hlYWQpO1xuMTk2MjpcdFx0XHR9XG4xOTYzOlx0XG4xOTY0Olx0XHRcdHBoeWRldi1cdTAwM2VhdHRhY2hlZF9kZXYtXHUwMDNlcGh5ZGV2ID0gTlVMTDtcbjE5NjU6XHRcdFx0cGh5ZGV2LVx1MDAzZWF0dGFjaGVkX2RldiA9IE5VTEw7XG4xOTY2Olx0XHRcdHBoeV9saW5rX3RvcG9fZGVsX3BoeShkZXYsIHBoeWRldik7XG4xOTY3Olx0XHR9XG4xOTY4Olx0XG4xOTY5Olx0XHRwaHlkZXYtXHUwMDNlcGh5X2xpbmtfY2hhbmdlID0gTlVMTDtcbjE5NzA6XHRcdHBoeWRldi1cdTAwM2VwaHlsaW5rID0gTlVMTDtcbjE5NzE6XHRcbjE5NzI6XHRcdGlmIChwaHlkZXYtXHUwMDNlbWRpby5kZXYuZHJpdmVyKVxuMTk3MzpcdFx0XHRtb2R1bGVfcHV0KHBoeWRldi1cdTAwM2VtZGlvLmRldi5kcml2ZXItXHUwMDNlb3duZXIpO1xuMTk3NDpcdFxuMTk3NTpcdFx0LyogSWYgdGhlIGRldmljZSBoYWQgbm8gc3BlY2lmaWMgZHJpdmVyIGJlZm9yZSAoaS5lLiAtIGl0XG4xOTc2Olx0XHQgKiB3YXMgdXNpbmcgdGhlIGdlbmVyaWMgZHJpdmVyKSwgd2UgdW5iaW5kIHRoZSBkZXZpY2VcbjE5Nzc6XHRcdCAqIGZyb20gdGhlIGdlbmVyaWMgZHJpdmVyIHNvIHRoYXQgdGhlcmUmIzM5O3MgYSBjaGFuY2UgYVxuMTk3ODpcdFx0ICogcmVhbCBkcml2ZXIgY291bGQgYmUgbG9hZGVkXG4xOTc5Olx0XHQgKi9cbjE5ODA6XHRcdGlmIChwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbikge1xuMTk4MTpcdFx0XHRwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHBoeWRldik7XG4xOTgyOlx0XHRcdGRldmljZV9yZWxlYXNlX2RyaXZlcihcdTAwMjZwaHlkZXYtXHUwMDNlbWRpby5kZXYpO1xuMTk4MzpcdFx0XHRwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDA7XG4xOTg0Olx0XHR9XG4xOTg1Olx0XG4xOTg2Olx0XHQvKiBBc3NlcnQgdGhlIHJlc2V0IHNpZ25hbCAqL1xuMTk4NzpcdFx0cGh5X2RldmljZV9yZXNldChwaHlkZXYsIDEpO1xuMTk4ODpcdFxuMTk4OTpcdFx0LypcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ3NjUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6CgoqKkRpdmluZyBEZWVwIGludG8gUEhZTElOSyoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AgZmlsZS4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHplcm9pbmcgaW4gb24gdGhlIHNlY3Rpb24gYXJvdW5kIGxpbmVzIDIwODAgdG8gMjM3MC4gVGhpcyBhcmVhIGlzIGxpa2VseSB3aGVyZSBhIHNpZ25pZmljYW50IHBpZWNlIG9mIHRoZSBQSFlMSU5LIGZ1bmN0aW9uYWxpdHkgcmVzaWRlcywgcHJvYmFibHkgcmVsYXRlZCB0byBhIGNyaXRpY2FsIHBhcnQgb2YgdGhlIGxpbmsgbmVnb3RpYXRpb24gb3IgbWFuYWdlbWVudCBsb2dpYy4gR2l2ZW4gdGhlIHNpemUgb2YgdGhhdCBjb2RlIGJsb2NrLCBpdCYjMzk7cyBwcm9iYWJseSBkb2luZyBzb21lIGhlYXZ5IGxpZnRpbmcgaW4gaG93IHRoZSBQSFkgaW50ZXJhY3RzIHdpdGggdGhlIG5ldHdvcmsgc3RhY2suIEkgYW50aWNpcGF0ZSB0aGVyZSB3aWxsIGJlIGEgcmljaCBhbW91bnQgb2YgZGV0YWlsIHRoZXJlIGNvbmNlcm5pbmcgdGhlIG9wZXJhdGlvbmFsIGNvbnRyb2wgb2YgdGhlIFBIWS4gSXQmIzM5O3MgdGltZSB0byBnZXQgZG93biB0byBidXNpbmVzcyBhbmQgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjE5MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA4MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMTkwOlx0XHRcdCAgICBfX0VUSFRPT0xfTElOS19NT0RFX01BU0tfTkJJVFMsIHBsLVx1MDAzZXN1cHBvcnRlZCxcbjIxOTE6XHRcdFx0ICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgcGh5LVx1MDAzZWFkdmVydGlzaW5nKTtcbjIxOTI6XHRcbjIxOTM6XHRcdGlmIChwbC1cdTAwM2Vjb25maWctXHUwMDNlbWFjX21hbmFnZWRfcG0pXG4yMTk0Olx0XHRcdHBoeS1cdTAwM2VtYWNfbWFuYWdlZF9wbSA9IHRydWU7XG4yMTk1Olx0XG4yMTk2Olx0XHQvKiBBbGxvdyB0aGUgTUFDIHRvIHN0b3AgaXRzIGNsb2NrIGlmIHRoZSBQSFkgaGFzIHRoZSBjYXBhYmlsaXR5ICovXG4yMTk3Olx0XHRwbC1cdTAwM2VtYWNfdHhfY2xrX3N0b3AgPSBwaHlfZWVlX3R4X2Nsb2NrX3N0b3BfY2FwYWJsZShwaHkpIFx1MDAzZSAwO1xuMjE5ODpcdFxuMjE5OTpcdFx0aWYgKHBsLVx1MDAzZW1hY19zdXBwb3J0c19lZWVfb3BzKSB7XG4yMjAwOlx0XHRcdC8qIEV4cGxpY2l0bHkgY29uZmlndXJlIHdoZXRoZXIgdGhlIFBIWSBpcyBhbGxvd2VkIHRvIHN0b3AgaXQmIzM5O3NcbjIyMDE6XHRcdFx0ICogcmVjZWl2ZSBjbG9jay5cbjIyMDI6XHRcdFx0ICovXG4yMjAzOlx0XHRcdHJldCA9IHBoeV9lZWVfcnhfY2xvY2tfc3RvcChwaHksXG4yMjA0Olx0XHRcdFx0XHRcdCAgICBwbC1cdTAwM2Vjb25maWctXHUwMDNlZWVlX3J4X2Nsa19zdG9wX2VuYWJsZSk7XG4yMjA1Olx0XHRcdGlmIChyZXQgPT0gLUVPUE5PVFNVUFApXG4yMjA2Olx0XHRcdFx0cmV0ID0gMDtcbjIyMDc6XHRcdH1cbjIyMDg6XHRcbjIyMDk6XHRcdGlmIChyZXQgPT0gMCBcdTAwMjZcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHkpKVxuMjIxMDpcdFx0XHRwaHlfcmVxdWVzdF9pbnRlcnJ1cHQocGh5KTtcbjIyMTE6XHRcbjIyMTI6XHRcdGlmIChyZXQpIHtcbjIyMTM6XHRcdFx0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuMjIxNDpcdFx0XHRwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTtcbjIyMTU6XHRcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4yMjE2Olx0XHR9XG4yMjE3Olx0XG4yMjE4Olx0XHRyZXR1cm4gcmV0O1xuMjIxOTpcdH1cbjIyMjA6XHRcbjIyMjE6XHRzdGF0aWMgaW50IHBoeWxpbmtfYXR0YWNoX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4yMjIyOlx0XHRcdFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbjIyMjM6XHR7XG4yMjI0Olx0XHR1MzIgZmxhZ3MgPSAwO1xuMjIyNTpcdFxuMjIyNjpcdFx0aWYgKFdBUk5fT04ocGwtXHUwMDNlY2ZnX2xpbmtfYW5fbW9kZSA9PSBNTE9fQU5fRklYRUQpKVxuMjIyNzpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjIyMjg6XHRcbjIyMjk6XHRcdGlmIChwbC1cdTAwM2VwaHlkZXYpXG4yMjMwOlx0XHRcdHJldHVybiAtRUJVU1k7XG4yMjMxOlx0XG4yMjMyOlx0XHRpZiAocGwtXHUwMDNlY29uZmlnLVx1MDAzZW1hY19yZXF1aXJlc19yeGMpXG4yMjMzOlx0XHRcdGZsYWdzIHw9IFBIWV9GX1JYQ19BTFdBWVNfT047XG4yMjM0Olx0XG4yMjM1Olx0XHRyZXR1cm4gcGh5X2F0dGFjaF9kaXJlY3QocGwtXHUwMDNlbmV0ZGV2LCBwaHksIGZsYWdzLCBpbnRlcmZhY2UpO1xuMjIzNjpcdH1cbjIyMzc6XHRcbjIyMzg6XHQvKipcbjIyMzk6XHQgKiBwaHlsaW5rX2Nvbm5lY3RfcGh5KCkgLSBjb25uZWN0IGEgUEhZIHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlXG4yMjQwOlx0ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcbjIyNDE6XHQgKiBAcGh5OiBhIHBvaW50ZXIgdG8gYSBcdTAwMjZzdHJ1Y3QgcGh5X2RldmljZS5cbjIyNDI6XHQgKlxuMjI0MzpcdCAqIENvbm5lY3QgQHBoeSB0byB0aGUgcGh5bGluayBpbnN0YW5jZSBzcGVjaWZpZWQgYnkgQHBsIGJ5IGNhbGxpbmdcbjIyNDQ6XHQgKiBwaHlfYXR0YWNoX2RpcmVjdCgpLiBDb25maWd1cmUgdGhlIEBwaHkgYWNjb3JkaW5nIHRvIHRoZSBNQUMgZHJpdmVyJiMzOTtzXG4yMjQ1Olx0ICogY2FwYWJpbGl0aWVzLCBzdGFydCB0aGUgUEhZTElCIHN0YXRlIG1hY2hpbmUgYW5kIGVuYWJsZSBhbnkgaW50ZXJydXB0c1xuMjI0NjpcdCAqIHRoYXQgdGhlIFBIWSBzdXBwb3J0cy5cbjIyNDc6XHQgKlxuMjI0ODpcdCAqIFRoaXMgdXBkYXRlcyB0aGUgcGh5bGluayYjMzk7cyBldGh0b29sIHN1cHBvcnRlZCBhbmQgYWR2ZXJ0aXNpbmcgbGluayBtb2RlXG4yMjQ5Olx0ICogbWFza3MuXG4yMjUwOlx0ICpcbjIyNTE6XHQgKiBSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm5vLlxuMjI1MjpcdCAqL1xuMjI1MzpcdGludCBwaHlsaW5rX2Nvbm5lY3RfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcbjIyNTQ6XHR7XG4yMjU1Olx0XHRpbnQgcmV0O1xuMjI1NjpcdFxuMjI1NzpcdFx0LyogVXNlIFBIWSBkZXZpY2UvZHJpdmVyIGludGVyZmFjZSAqL1xuMjI1ODpcdFx0aWYgKHBsLVx1MDAzZWxpbmtfaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV9OQSkge1xuMjI1OTpcdFx0XHRwbC1cdTAwM2VsaW5rX2ludGVyZmFjZSA9IHBoeS1cdTAwM2VpbnRlcmZhY2U7XG4yMjYwOlx0XHRcdHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSA9IHBsLVx1MDAzZWxpbmtfaW50ZXJmYWNlO1xuMjI2MTpcdFx0fVxuMjI2MjpcdFxuMjI2MzpcdFx0cmV0ID0gcGh5bGlua19hdHRhY2hfcGh5KHBsLCBwaHksIHBsLVx1MDAzZWxpbmtfaW50ZXJmYWNlKTtcbjIyNjQ6XHRcdGlmIChyZXQgXHUwMDNjIDApXG4yMjY1Olx0XHRcdHJldHVybiByZXQ7XG4yMjY2Olx0XG4yMjY3Olx0XHRyZXQgPSBwaHlsaW5rX2JyaW5ndXBfcGh5KHBsLCBwaHksIHBsLVx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSk7XG4yMjY4Olx0XHRpZiAocmV0KVxuMjI2OTpcdFx0XHRwaHlfZGV0YWNoKHBoeSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjUxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MjI5CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUEhZIExpbmsgQ29ubmVjdGlvbiBQcm9jZXNzKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEkgc2VlIHdlJiMzOTtyZSBsb29raW5nIGF0IGBwaHlsaW5rX2Nvbm5lY3RfcGh5YC4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgaW4gYHBoeWxpbmtfYXR0YWNoX3BoeWAgd2hpY2ggc2V0cyB0aGluZ3MgdXAsIHRoZW4gYHBoeWxpbmtfYnJpbmd1cF9waHlgIHdoaWNoIGFjdHVhbGx5IGdldHMgdGhlIFBIWSBvcGVyYXRpb25hbC4gSWYgYHBoeWxpbmtfYXR0YWNoX3BoeWAgZmFpbHMsIHdlIGp1c3QgcmV0dXJuIHRoZSBlcnJvciwgc2ltcGxlIGVub3VnaC4gQnV0IGlmIGBwaHlsaW5rX2JyaW5ndXBfcGh5YCBmYWlscywgd2UgZGV0YWNoIHRoZSBQSFkuIE1ha2VzIHNlbnNlLCBrZWVwIGl0IGNsZWFuLgoKTXkgbWluZCBpcyBub3cgemVyb2luZyBpbiBvbiBgcGh5bGlua19icmluZ3VwX3BoeWAuIEkgcmVjYWxsIHNvbWUgcG90ZW50aWFsIGlzc3VlcyBoZXJlLCB3aGljaCBpcyB3aHkgSSYjMzk7bSBmb2N1c2luZyBvbiBpdC4gSSBzZWVtIHRvIHJlY2FsbCB0aGF0IGJlZm9yZSBhIGNlcnRhaW4gcGF0Y2gsIHRoZSBgcGwtJmd0O3BoeWRldmAgYXNzaWdubWVudCBvY2N1cnMgc29tZXdoZXJlIGluIHRoYXQgZnVuY3Rpb24sIGFyb3VuZCB0aGUgMjExMCBtYXJrLCBvciBpbiB0aGF0IG5laWdoYm9yaG9vZC4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCByZWdpb24sIGFwcHJveGltYXRlbHkgbGluZXMgMjEwMCB0byAyMTkwIGluIHRoZSBjb2RlLCB0byBlbnN1cmUgdGhhdCB0aGUgdmFyaWFibGUgaXMgYXNzaWduZWQgd2hlbiByZXF1aXJlZC4gSSYjMzk7bGwgYmUgbG9va2luZyBhdCB0aGF0IHNlY3Rpb24gdmVyeSBjYXJlZnVsbHkuIFRoZSB0aW1pbmcgb2YgdGhlIGFzc2lnbm1lbnQgY291bGQgYmUgY3JpdGljYWwgZm9yIHRoZSBvdmVyYWxsIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDIwOTAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MjA5MDpcdFx0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4yMDkxOlx0XHRwbC1cdTAwM2VwaHlkZXYgPSBOVUxMO1xuMjA5MjpcdFx0cGwtXHUwMDNlcGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTtcbjIwOTM6XHRcdHBsLVx1MDAzZW1hY190eF9jbGtfc3RvcCA9IGZhbHNlO1xuMjA5NDpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbjIwOTU6XHRcdG11dGV4X3VubG9jayhcdTAwMjZwaHktXHUwMDNlbG9jayk7XG4yMDk2Olx0fVxuMjA5NzpcdFxuMjA5ODpcdHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4yMDk5Olx0XHRcdFx0ICAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG4yMTAwOlx0e1xuMjEwMTpcdFx0c3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSBjb25maWc7XG4yMTAyOlx0XHRfX0VUSFRPT0xfREVDTEFSRV9MSU5LX01PREVfTUFTSyhzdXBwb3J0ZWQpO1xuMjEwMzpcdFx0Y2hhciAqaXJxX3N0cjtcbjIxMDQ6XHRcdGludCByZXQ7XG4yMTA1Olx0XG4yMTA2Olx0XHQvKlxuMjEwNzpcdFx0ICogVGhpcyBpcyB0aGUgbmV3IHdheSBvZiBkZWFsaW5nIHdpdGggZmxvdyBjb250cm9sIGZvciBQSFlzLFxuMjEwODpcdFx0ICogYXMgZGVzY3JpYmVkIGJ5IFRpbXVyIFRhYmkgaW4gY29tbWl0IDUyOWVkMTI3NTI2MyAoXCYjMzQ7bmV0OiBwaHk6XG4yMTA5Olx0XHQgKiBwaHkgZHJpdmVycyBzaG91bGQgbm90IHNldCBTVVBQT1JURURfW0FzeW1fXVBhdXNlXCYjMzQ7KS4gTUFDIGRyaXZlcnNcbjIxMTA6XHRcdCAqIHNldCB0aGVpciBzdXBwb3J0IHVzaW5nIHRoZSBNQUNfU1lNX1BBVVNFIGFuZCBNQUNfQVNZTV9QQVVTRVxuMjExMTpcdFx0ICogY2FwYWJpbGl0aWVzIGFuZCBtdXN0IE5PVCBjaGFuZ2UgdGhlIHBoeSYjMzk7cyBwYXVzZSBzZXR0aW5ncyBkaXJlY3RseS5cbjIxMTI6XHRcdCAqL1xuMjExMzpcdFx0cGh5X3N1cHBvcnRfYXN5bV9wYXVzZShwaHkpO1xuMjExNDpcdFxuMjExNTpcdFx0bWVtc2V0KFx1MDAyNmNvbmZpZywgMCwgc2l6ZW9mKGNvbmZpZykpO1xuMjExNjpcdFx0bGlua21vZGVfY29weShzdXBwb3J0ZWQsIHBoeS1cdTAwM2VzdXBwb3J0ZWQpO1xuMjExNzpcdFx0bGlua21vZGVfY29weShjb25maWcuYWR2ZXJ0aXNpbmcsIHBoeS1cdTAwM2VhZHZlcnRpc2luZyk7XG4yMTE4Olx0XHRjb25maWcuaW50ZXJmYWNlID0gaW50ZXJmYWNlO1xuMjExOTpcdFxuMjEyMDpcdFx0cmV0ID0gcGh5bGlua192YWxpZGF0ZV9waHkocGwsIHBoeSwgc3VwcG9ydGVkLCBcdTAwMjZjb25maWcpO1xuMjEyMTpcdFx0aWYgKHJldCkge1xuMjEyMjpcdFx0XHRwaHlsaW5rX3dhcm4ocGwsIFwmIzM0O3ZhbGlkYXRpb24gb2YgJXMgd2l0aCBzdXBwb3J0ICUqcGIgYW5kIGFkdmVydGlzZW1lbnQgJSpwYiBmYWlsZWQ6ICVwZVxcblwmIzM0OyxcbjIxMjM6XHRcdFx0XHQgICAgIHBoeV9tb2Rlcyhjb25maWcuaW50ZXJmYWNlKSxcbjIxMjQ6XHRcdFx0XHQgICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgcGh5LVx1MDAzZXN1cHBvcnRlZCxcbjIxMjU6XHRcdFx0XHQgICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgY29uZmlnLmFkdmVydGlzaW5nLFxuMjEyNjpcdFx0XHRcdCAgICAgRVJSX1BUUihyZXQpKTtcbjIxMjc6XHRcdFx0cmV0dXJuIHJldDtcbjIxMjg6XHRcdH1cbjIxMjk6XHRcbjIxMzA6XHRcdHBoeS1cdTAwM2VwaHlsaW5rID0gcGw7XG4yMTMxOlx0XHRwaHktXHUwMDNlcGh5X2xpbmtfY2hhbmdlID0gcGh5bGlua19waHlfY2hhbmdlO1xuMjEzMjpcdFxuMjEzMzpcdFx0aXJxX3N0ciA9IHBoeV9hdHRhY2hlZF9pbmZvX2lycShwaHkpO1xuMjEzNDpcdFx0cGh5bGlua19pbmZvKHBsLFxuMjEzNTpcdFx0XHQgICAgIFwmIzM0O1BIWSBbJXNdIGRyaXZlciBbJXNdIChpcnE9JXMpXFxuXCYjMzQ7LFxuMjEzNjpcdFx0XHQgICAgIGRldl9uYW1lKFx1MDAyNnBoeS1cdTAwM2VtZGlvLmRldiksIHBoeS1cdTAwM2VkcnYtXHUwMDNlbmFtZSwgaXJxX3N0cik7XG4yMTM3Olx0XHRrZnJlZShpcnFfc3RyKTtcbjIxMzg6XHRcbjIxMzk6XHRcdG11dGV4X2xvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzc1MTEKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgUGh5bGluayBDb2RlYmFzZSoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBgcGh5bGluay5jYCBmaWxlLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gaG93IHRoaXMgcGFydCBpbnRlcmFjdHMgd2l0aCB0aGUgb3ZlcmFsbCBwaHlsaW5rIHByb2Nlc3MsIHNvIEkmIzM5O2xsIGp1bXAgcmlnaHQgaW50byBsaW5lcyAyMTQwIHRvIDIxOTAuIEkmIzM5O20gZm9jdXNpbmcgc3BlY2lmaWNhbGx5IG9uIHRoaXMgc2VjdGlvbiBiZWNhdXNlIEkgcmVjYWxsIHdlIHdlcmUgc2VlaW5nIHNvbWUgb2RkIGJlaGF2aW9yIHJlbGF0ZWQgdG8gWyoqaW5zZXJ0IHNwZWNpZmljIHByb2JsZW0gdGhlIG9yaWdpbmFsIHVzZXIgd2FzIGhhdmluZyoqXSwgYW5kIEkgaGF2ZSBhIGh1bmNoIGl0IG1pZ2h0IGJlIHJvb3RlZCBoZXJlLgoKUmlnaHQsIHNvIGdsYW5jaW5nIGF0IHRoaXMgYmxvY2sgb2YgY29kZSwgSSYjMzk7bSBub3RpbmcgdGhlIGNvbmRpdGlvbmFsIGNoZWNrIG9uIFsqKnNwZWNpZmljIHZhcmlhYmxlIG9yIGNvbmRpdGlvbioqXS4gSXQgbG9va3MgbGlrZSB0aGlzIG1pZ2h0IGJlIHJlbGF0ZWQgdG8gdGhlIFsqKnNwZWNpZmljIHByb2Nlc3MvZnVuY3Rpb24qKl0gYW5kIGhvdyBpdCBoYW5kbGVzIFsqKnNwZWNpZmljIGRhdGEqKl0uIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgcmFjZSBjb25kaXRpb25zIHRoYXQgY291bGQgbGVhZCB0byBkYXRhIGNvcnJ1cHRpb24gaW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIG9yIHBvc3NpYmx5IGFueSBvZmYtYnktb25lIGVycm9ycy4gQWxzbywgaXMgdGhpcyBmdW5jdGlvbiByZS1lbnRyYW50LCBhbmQgaWYgbm90LCBob3cgbWlnaHQgaXQgYWZmZWN0IG90aGVyIHRocmVhZHM/IEnigJlsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayBhbnkgYXNzb2NpYXRlZCBtdXRleGVzIG9yIHNlbWFwaG9yZXMsIGp1c3QgdG8gYmUgc3VyZS4gSSYjMzk7bSBnb2luZyB0byBzY2FuIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGNoZWNrIGZvciB0aGUgYXNzaWdubWVudCBvZiBhbnkgcG90ZW50aWFsIG51bGwgcG9pbnRlcnMuIFBlcmhhcHMgdGhlcmUgbWlnaHQgYmUgc29tZSBtaXNzaW5nIGVycm9yIGNoZWNraW5nIGFyb3VuZCBbKipzcGVjaWZpYyBmdW5jdGlvbioqXS4gT2theSwgdGltZSB0byBjaGVjayB0aGUgbG9nZ2luZyBvdXRwdXQgcmVsYXRlZCB0byB0aGlzIGZ1bmN0aW9uIGNhbGwsIGp1c3QgaW4gY2FzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5bGluay5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjEzOCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1NQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsyMTM4Olx0XG4yMTM5Olx0XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4yMTQwOlx0XHRtdXRleF9sb2NrKFx1MDAyNnBoeS1cdTAwM2Vsb2NrKTtcbjIxNDE6XHRcdG11dGV4X2xvY2soXHUwMDI2cGwtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuMjE0MjpcdFx0cGwtXHUwMDNlcGh5ZGV2ID0gcGh5O1xuMjE0MzpcdFx0cGwtXHUwMDNlcGh5X3N0YXRlLmludGVyZmFjZSA9IGludGVyZmFjZTtcbjIxNDQ6XHRcdHBsLVx1MDAzZXBoeV9zdGF0ZS5wYXVzZSA9IE1MT19QQVVTRV9OT05FO1xuMjE0NTpcdFx0cGwtXHUwMDNlcGh5X3N0YXRlLnNwZWVkID0gU1BFRURfVU5LTk9XTjtcbjIxNDY6XHRcdHBsLVx1MDAzZXBoeV9zdGF0ZS5kdXBsZXggPSBEVVBMRVhfVU5LTk9XTjtcbjIxNDc6XHRcdHBsLVx1MDAzZXBoeV9zdGF0ZS5yYXRlX21hdGNoaW5nID0gUkFURV9NQVRDSF9OT05FO1xuMjE0ODpcdFx0bGlua21vZGVfY29weShwbC1cdTAwM2VzdXBwb3J0ZWQsIHN1cHBvcnRlZCk7XG4yMTQ5Olx0XHRsaW5rbW9kZV9jb3B5KHBsLVx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nLCBjb25maWcuYWR2ZXJ0aXNpbmcpO1xuMjE1MDpcdFxuMjE1MTpcdFx0LyogUmVzdHJpY3QgdGhlIHBoeSBhZHZlcnRpc2VtZW50IGFjY29yZGluZyB0byB0aGUgTUFDIHN1cHBvcnQuICovXG4yMTUyOlx0XHRsaW5rbW9kZV9jb3B5KHBoeS1cdTAwM2VhZHZlcnRpc2luZywgY29uZmlnLmFkdmVydGlzaW5nKTtcbjIxNTM6XHRcbjIxNTQ6XHRcdC8qIElmIHRoZSBNQUMgc3VwcG9ydHMgcGh5bGluayBtYW5hZ2VkIEVFRSwgcmVzdHJpY3QgdGhlIEVFRVxuMjE1NTpcdFx0ICogYWR2ZXJ0aXNlbWVudCBhY2NvcmRpbmcgdG8gdGhlIE1BQyYjMzk7cyBMUEkgY2FwYWJpbGl0aWVzLlxuMjE1NjpcdFx0ICovXG4yMTU3Olx0XHRpZiAocGwtXHUwMDNlbWFjX3N1cHBvcnRzX2VlZSkge1xuMjE1ODpcdFx0XHQvKiBJZiBFRUUgaXMgZW5hYmxlZCwgdGhlbiB3ZSBuZWVkIHRvIGNhbGwgcGh5X3N1cHBvcnRfZWVlKClcbjIxNTk6XHRcdFx0ICogdG8gZW5zdXJlIHRoYXQgdGhlIGFkdmVydGlzaW5nIG1hc2sgaXMgYXBwcm9wcmlhdGVseSBzZXQuXG4yMTYwOlx0XHRcdCAqIFRoaXMgYWxzbyBlbmFibGVzIEVFRSBhdCB0aGUgUEhZLlxuMjE2MTpcdFx0XHQgKi9cbjIxNjI6XHRcdFx0aWYgKHBsLVx1MDAzZWVlZV9jZmcuZWVlX2VuYWJsZWQpXG4yMTYzOlx0XHRcdFx0cGh5X3N1cHBvcnRfZWVlKHBoeSk7XG4yMTY0Olx0XG4yMTY1Olx0XHRcdHBoeS1cdTAwM2VlZWVfY2ZnLnR4X2xwaV9lbmFibGVkID0gcGwtXHUwMDNlZWVlX2NmZy50eF9scGlfZW5hYmxlZDtcbjIxNjY6XHRcdFx0cGh5LVx1MDAzZWVlZV9jZmcudHhfbHBpX3RpbWVyID0gcGwtXHUwMDNlZWVlX2NmZy50eF9scGlfdGltZXI7XG4yMTY3Olx0XG4yMTY4Olx0XHRcdC8qIENvbnZlcnQgdGhlIE1BQyYjMzk7cyBMUEkgY2FwYWJpbGl0aWVzIHRvIGxpbmttb2RlcyAqL1xuMjE2OTpcdFx0XHRsaW5rbW9kZV96ZXJvKHBsLVx1MDAzZXN1cHBvcnRlZF9scGkpO1xuMjE3MDpcdFx0XHRwaHlsaW5rX2NhcHNfdG9fbGlua21vZGVzKHBsLVx1MDAzZXN1cHBvcnRlZF9scGksXG4yMTcxOlx0XHRcdFx0XHRcdCAgcGwtXHUwMDNlY29uZmlnLVx1MDAzZWxwaV9jYXBhYmlsaXRpZXMpO1xuMjE3MjpcdFxuMjE3MzpcdFx0XHQvKiBSZXN0cmljdCB0aGUgUEhZcyBFRUUgc3VwcG9ydC9hZHZlcnRpc2VtZW50IHRvIHRoZSBtb2Rlc1xuMjE3NDpcdFx0XHQgKiB0aGF0IHRoZSBNQUMgc3VwcG9ydHMuXG4yMTc1Olx0XHRcdCAqL1xuMjE3NjpcdFx0XHRsaW5rbW9kZV9hbmQocGh5LVx1MDAzZWFkdmVydGlzaW5nX2VlZSwgcGh5LVx1MDAzZWFkdmVydGlzaW5nX2VlZSxcbjIxNzc6XHRcdFx0XHQgICAgIHBsLVx1MDAzZXN1cHBvcnRlZF9scGkpO1xuMjE3ODpcdFx0fSBlbHNlIGlmIChwbC1cdTAwM2VtYWNfc3VwcG9ydHNfZWVlX29wcykge1xuMjE3OTpcdFx0XHQvKiBNQUMgc3VwcG9ydHMgcGh5bGluayBFRUUsIGJ1dCB3YW50cyBFRUUgYWx3YXlzIGRpc2FibGVkLiAqL1xuMjE4MDpcdFx0XHRwaHlfZGlzYWJsZV9lZWUocGh5KTtcbjIxODE6XHRcdH1cbjIxODI6XHRcbjIxODM6XHRcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4yMTg0Olx0XHRtdXRleF91bmxvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuMjE4NTpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4yMTg2Olx0XG4yMTg3Olx0XHRwaHlsaW5rX2RiZyhwbCxcbjIxODg6XHRcdFx0ICAgIFwmIzM0O3BoeTogJXMgc2V0dGluZyBzdXBwb3J0ZWQgJSpwYiBhZHZlcnRpc2luZyAlKnBiXFxuXCYjMzQ7LFxuMjE4OTpcdFx0XHQgICAgcGh5X21vZGVzKGludGVyZmFjZSksXG4yMTkwOlx0XHRcdCAgICBfX0VUSFRPT0xfTElOS19NT0RFX01BU0tfTkJJVFMsIHBsLVx1MDAzZXN1cHBvcnRlZCxcbjIxOTE6XHRcdFx0ICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgcGh5LVx1MDAzZWFkdmVydGlzaW5nKTtcbjIxOTI6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg4MzAKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAzMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUEhZIExpbmsgQnJpbmd1cCBJc3N1ZSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQgYHBoeWxpbmtfYnJpbmd1cF9waHlgIGlzIHJlc3BvbnNpYmxlIGZvciBpbml0aWFsaXppbmcgdGhlIFBIWSBkZXZpY2Ugd2l0aGluIHRoZSBgcGxgIGRhdGEgc3RydWN0dXJlLiBTcGVjaWZpY2FsbHksIGl0IGFzc2lnbnMgdGhlIFBIWSBkZXZpY2UgKGBwaHlgKSB0byBgcGwtJmd0O3BoeWRldmAgYW5kIHNldHMgdXAgc29tZSBvdGhlciBpbnRlcm5hbCBzdGF0ZS4gVGhlIGNvcmUgb2YgdGhlIHByb2JsZW0gc2VlbXMgdG8gbGllIGFyb3VuZCBsaW5lIDIyMDMsIHdoZXJlIHRoZSBmdW5jdGlvbiBgcGh5X2VlZV9yeF9jbG9ja19zdG9wYCBpcyBjYWxsZWQuIENyaXRpY2FsbHksIGlmIGBwaHlfZWVlX3J4X2Nsb2NrX3N0b3BgIGZhaWxzLCB0aGUgYHBsLSZndDtwaHlkZXZgIGZpZWxkIGlzICpzdGlsbCogbGVmdCBub24tTlVMTC4gVGhpcyBjcmVhdGVzIGEgcmVhbGx5IG5hc3R5IHJhY2UgY29uZGl0aW9uLgoKSSBjYW4gc2VlIHRoYXQgaWYgYHBoeV9lZWVfcnhfY2xvY2tfc3RvcGAgcmV0dXJucyBhbiBlcnJvciwgYW55IHN1YnNlcXVlbnQgYXR0ZW1wdCB0byBhdHRhY2ggdGhlIFBIWSB3b3VsZCByZXR1cm4gLUVCVVNZLiBUaGF0JiMzOTtzIGJlY2F1c2UgdGhlIGBwaHlsaW5rX2F0dGFjaF9waHlgIGZ1bmN0aW9uIGNoZWNrcyBpZiBgcGwtJmd0O3BoeWRldmAgaXMgYWxyZWFkeSBhc3NpZ25lZCBhbmQgaW1tZWRpYXRlbHkgcmV0dXJucyAtRUJVU1kuIFRoaXMgaXMgd2hlcmUgdGhlIHBhdGNoIGtpY2tzIGluLiBJdCBpbnRyb2R1Y2VzIGEgY2hlY2ssIGFuZCBpZiB0aGUgYHJldGAgZnJvbSBgcGh5X2VlZV9yeF9jbG9ja19zdG9wYCBzaWduYWxzIGZhaWx1cmUsIHRoZSBjb2RlIG5vdyBpbmNsdWRlcyBhIG11dGV4LXByb3RlY3RlZCBjYWxsIHRvIGBwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KWAuIFRoYXQmIzM5O3Mgc21hcnQ7IGl0JiMzOTtzIHJlbGVhc2luZyB0aGUgcmVzb3VyY2UgYXBwcm9wcmlhdGVseSB3aGVuIHRoZSBQSFkgaW5pdGlhbGl6YXRpb24gZmFpbHMuCgpTbywgdGhlIG5ldyBjb2RlIGlzIGF0dGVtcHRpbmcgdG8gY2xlYW4gdXAgdGhlIHBhcnRpYWxseSBpbml0aWFsaXplZCBQSFkgaW4gY2FzZSBvZiBhbiBlcnJvci4gVGhlIGluY2x1c2lvbiBvZiB0aGUgbXV0ZXggaXMgY3JpdGljYWwgdG8gcHJldmVudCBhIHJhY2UgY29uZGl0aW9uIGR1cmluZyBQSFkgcmVzb3VyY2UgbWFuYWdlbWVudC4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHdpZGVyIGNvbnRleHQuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIGBwaHlfZGV2aWNlLmNgIGFuZCBgcGh5bGluay5jYCBhbmQgd2hlcmUgdGhleSBmaXQgaW50byB0aGUgbGFyZ2VyIFBIWSBkcml2ZXIgc3RydWN0dXJlLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYXQgd2hlcmUgYHBoeV9yZXN0b3JlX2dlbnBoeV9pcnFgIGlzIGNhbGxlZC4gSSBzZWUgaXQmIzM5O3MgY2FsbGVkIGluIGBlcnJvcl9tb2R1bGVfcHV0YCBhbmQgYHBoeV9kZXRhY2hgIGluIGBwaHlfZGV2aWNlLmNgLCBzbyBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIHJlbGF0ZS4KCkkgbmVlZCB0byBjb25maXJtIHRoZSBidWlsZCBkZXBlbmRlbmNpZXMuIFdoZXJlIGFyZSBgcGh5X2RldmljZS5jYCBhbmQgYHBoeWxpbmsuY2AgYnVpbHQ/IEkmIzM5O2xsIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgYW5kIE1ha2VmaWxlcyBpbiBgZHJpdmVycy9uZXQvcGh5L2AgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoaWNoIGNvbmZpZ3VyYXRpb25zIGluY2x1ZGUgdGhlc2UgZmlsZXMuIEdyZXBwaW5nIGZvciB0aGUgcmVsZXZhbnQgS2NvbmZpZyBhbmQgTWFrZWZpbGUgZW50cmllcyBzaG91bGQgZ2l2ZSBtZSBhIHF1aWNrIG92ZXJ2aWV3IG9mIHRoZSBidWlsZCBwcm9jZXNzIGZvciB0aGlzIHNlY3Rpb24gb2YgY29kZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGh5X2RldmljZXxwaHlsaW5rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTQxNDIgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0zLVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlOjQ6bGlicGh5LXlcdFx0XHQ6PSBwaHkubyBwaHktYzQ1Lm8gcGh5LWNvcmUubyBwaHlfZGV2aWNlLm8gXFxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS01LVx0XHRcdFx0ICAgbGlua21vZGUubyBwaHlfbGlua190b3BvbG9neS5vIFxcXG4tLVxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTE4PW9iai0kKENPTkZJR19QSFlMSUIpXHRcdCYjNDM7PSBtZGlvX2J1cy5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX1BIWUxJTkspXHRcdCYjNDM7PSBwaHlsaW5rLm9cbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS0yMC1vYmotJChDT05GSUdfUEhZTElCKVx0XHQmIzQzOz0gbGlicGh5Lm9cbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jPTI0MD1zdGF0aWMgaW50IGFkaW5fbG9va3VwX3JlZ192YWx1ZShjb25zdCBzdHJ1Y3QgYWRpbl9jZmdfcmVnX21hcCAqdGJsLCBpbnQgY2ZnKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMjUxLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzoyNTI6c3RhdGljIHUzMiBhZGluX2dldF9yZWdfdmFsdWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMjUzLVx0XHRcdCAgICAgIGNvbnN0IGNoYXIgKnByb3BfbmFtZSxcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTI3NC1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6Mjc1OnN0YXRpYyBpbnQgYWRpbl9jb25maWdfcmdtaWlfbW9kZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy0yNzYte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMzIwLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzozMjE6c3RhdGljIGludCBhZGluX2NvbmZpZ19ybWlpX21vZGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMzIyLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTM0Ny1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6MzQ4OnN0YXRpYyBpbnQgYWRpbl9nZXRfZG93bnNoaWZ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4ICpkYXRhKVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy0zNDkte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMzY3LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzozNjg6c3RhdGljIGludCBhZGluX3NldF9kb3duc2hpZnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggY250KVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy0zNjkte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMzkxLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzozOTI6c3RhdGljIGludCBhZGluX2dldF9lZHBkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUxNiAqdHhfaW50ZXJ2YWwpXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTM5My17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy00MTItXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjQxMzpzdGF0aWMgaW50IGFkaW5fc2V0X2VkcGQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTE2IHR4X2ludGVydmFsKVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy00MTQte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNDM5LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo0NDA6c3RhdGljIGludCBhZGluX2dldF9mYXN0X2Rvd24oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggKm1zZWNzKVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy00NDEte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNDU1LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo0NTY6c3RhdGljIGludCBhZGluX3NldF9mYXN0X2Rvd24oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgY29uc3QgdTggKm1zZWNzKVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy00NTcte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNDcwLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo0NzE6c3RhdGljIGludCBhZGluX2dldF90dW5hYmxlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTQ3Mi1cdFx0XHQgICAgc3RydWN0IGV0aHRvb2xfdHVuYWJsZSAqdHVuYSwgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTQ4NS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6NDg2OnN0YXRpYyBpbnQgYWRpbl9zZXRfdHVuYWJsZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy00ODctXHRcdFx0ICAgIHN0cnVjdCBldGh0b29sX3R1bmFibGUgKnR1bmEsIGNvbnN0IHZvaWQgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy01MDAtXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjUwMTpzdGF0aWMgaW50IGFkaW5fY29uZmlnX2Nsa19vdXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNTAyLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTUyNy1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6NTI4OnN0YXRpYyBpbnQgYWRpbl9jb25maWdfenB0bTEwMChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy01Mjkte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNTQwLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo1NDE6c3RhdGljIGludCBhZGluX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTU0Mi17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy01NzYtXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjU3NzpzdGF0aWMgaW50IGFkaW5fcGh5X2Fja19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTU3OC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy01ODQtXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjU4NTpzdGF0aWMgaW50IGFkaW5fcGh5X2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTU4Ni17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy02MDctXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjYwODpzdGF0aWMgaXJxcmV0dXJuX3QgYWRpbl9waHlfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy02MDkte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNjI1LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo2MjY6c3RhdGljIGludCBhZGluX2NsNDVfdG9fYWRpbl9yZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldmFkLFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy02MjctXHRcdFx0XHQgdTE2IGNsNDVfcmVnbnVtKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNjQ3LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo2NDg6c3RhdGljIGludCBhZGluX3JlYWRfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZhZCwgdTE2IHJlZ251bSlcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNjQ5LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTY2Ni1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6NjY3OnN0YXRpYyBpbnQgYWRpbl93cml0ZV9tbWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGRldmFkLCB1MTYgcmVnbnVtLFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy02NjgtXHRcdFx0ICB1MTYgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNjg2LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo2ODc6c3RhdGljIGludCBhZGluX2NvbmZpZ19tZGl4KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTY4OC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy03MjMtXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjcyNDpzdGF0aWMgaW50IGFkaW5fY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNzI1LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTc0Mi1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6NzQzOnN0YXRpYyBpbnQgYWRpbl9tZGl4X3VwZGF0ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy03NDQte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNzgzLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo3ODQ6c3RhdGljIGludCBhZGluX3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTc4NS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy03OTQtXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjc5NTpzdGF0aWMgaW50IGFkaW5fc29mdF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy03OTYte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtODE0LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo4MTU6c3RhdGljIGludCBhZGluX2dldF9zc2V0X2NvdW50KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTgxNi17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy04MTktXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjgyMDpzdGF0aWMgdm9pZCBhZGluX2dldF9zdHJpbmdzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4ICpkYXRhKVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy04MjEte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtODI3LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo4Mjg6c3RhdGljIGludCBhZGluX3JlYWRfbW1kX3N0YXRfcmVncyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy04MjktXHRcdFx0XHQgICBjb25zdCBzdHJ1Y3QgYWRpbl9od19zdGF0ICpzdGF0LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtODUyLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo4NTM6c3RhdGljIHU2NCBhZGluX2dldF9zdGF0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBpKVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy04NTQte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtODc1LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo4NzY6c3RhdGljIHZvaWQgYWRpbl9nZXRfc3RhdHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtODc3LVx0XHRcdCAgIHN0cnVjdCBldGh0b29sX3N0YXRzICpzdGF0cywgdTY0ICpkYXRhKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtODg5LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo4OTA6c3RhdGljIGludCBhZGluX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTg5MS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy05MDMtXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjkwNDpzdGF0aWMgaW50IGFkaW5fY2FibGVfdGVzdF9zdGFydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy05MDUte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM9OTIzPXN0YXRpYyBpbnQgYWRpbl9jYWJsZV90ZXN0X3JlcG9ydF90cmFucyhpbnQgcmVzdWx0KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtOTQ0LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo5NDU6c3RhdGljIGludCBhZGluX2NhYmxlX3Rlc3RfcmVwb3J0X3BhaXIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtOTQ2LVx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGludCBwYWlyKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtOTc2LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo5Nzc6c3RhdGljIGludCBhZGluX2NhYmxlX3Rlc3RfcmVwb3J0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTk3OC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy05OTAtXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjk5MTpzdGF0aWMgaW50IGFkaW5fY2FibGVfdGVzdF9nZXRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTk5Mi1cdFx0XHRcdCAgICAgIGJvb2wgKmZpbmlzaGVkKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jPTcwPXN0cnVjdCBhZGluX3ByaXYge1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTc1LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmM6NzY6c3RhdGljIGludCBhZGluX3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy03Ny17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtOTYtXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYzo5NzpzdGF0aWMgaW50IGFkaW5fY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTk4LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0xNDQtXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYzoxNDU6c3RhdGljIGludCBhZGluX3BoeV9hY2tfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMTQ2LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0xNTMtXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYzoxNTQ6c3RhdGljIGludCBhZGluX2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0xNTUte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTE3Mi1cbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jOjE3MzpzdGF0aWMgaXJxcmV0dXJuX3QgYWRpbl9waHlfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMTc0LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0xOTEtXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYzoxOTI6c3RhdGljIGludCBhZGluX3NldF9wb3dlcmRvd25fbW9kZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIGVuKVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMTkzLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0yMDYtXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYzoyMDc6c3RhdGljIGludCBhZGluX3N1c3BlbmQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTIwOC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMjExLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmM6MjEyOnN0YXRpYyBpbnQgYWRpbl9yZXN1bWUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTIxMy17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMjE2LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmM6MjE3OnN0YXRpYyBpbnQgYWRpbl9zZXRfbG9vcGJhY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBlbmFibGUsIGludCBzcGVlZClcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTIxOC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMjMwLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmM6MjMxOnN0YXRpYyBpbnQgYWRpbl9zb2Z0X3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0yMzIte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTI0My1cbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jOjI0NDpzdGF0aWMgaW50IGFkaW5fZ2V0X2ZlYXR1cmVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0yNDUte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTI3OC1cbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jOjI3OTpzdGF0aWMgaW50IGFkaW5fZ2V0X3NxaShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMjgwLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0zMDMtXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYzozMDQ6c3RhdGljIGludCBhZGluX2dldF9zcWlfbWF4KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0zMDUte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTMwOC1cbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jOjMwOTpzdGF0aWMgaW50IGFkaW5fcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTMxMC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jLTE2LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jOjE3OnN0YXRpYyBpbnQgYWRpbjExNDBfY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTE0MC1waHkuYy0xOC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jLTI1LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jOjI2OnN0YXRpYyBpbnQgYWRpbjExNDBfbG9vcGJhY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBlbmFibGUsIGludCBzcGVlZClcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTE0MC1waHkuYy0yNy17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jLTM1LVxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jOjM2OnN0YXRpYyBpbnQgYWRpbjExNDBfcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTE0MC1waHkuYy0zNy17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYz0yMDY9c3RhdGljIGNvbnN0IHVuc2lnbmVkIGxvbmcgYW44ODAxcl9sZWRfdHJpZyA9IEJJVChUUklHR0VSX05FVERFVl9MSU5LKSB8XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0yMTMtXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjIxNDpzdGF0aWMgaW50IGFuODgwMV9idWNrcGJ1c19yZWdfcm13KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTIxNS1cdFx0XHRcdCAgIHUzMiBhZGRyLCB1MzIgbWFzaywgdTMyIHNldClcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTIyMS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6MjIyOnN0YXRpYyBpbnQgYW44ODAxX2J1Y2twYnVzX3JlZ19zZXRfYml0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0yMjMtXHRcdFx0XHRcdHUzMiBhZGRyLCB1MzIgbWFzaylcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTIyOS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6MjMwOnN0YXRpYyBpbnQgYW44ODAxX2J1Y2twYnVzX3JlZ19jbGVhcl9iaXRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTIzMS1cdFx0XHRcdFx0ICB1MzIgYWRkciwgdTMyIG1hc2spXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0yMzctXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjIzODpzdGF0aWMgaW50IGFuODgwMV9idWNrcGJ1c19yZWdfd3JpdGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIGFkZHIsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTIzOS1cdFx0XHRcdCAgICAgdTMyIGRhdGEpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0yNDUtXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjI0NjpzdGF0aWMgaW50IGFuODgwMV9idWNrcGJ1c19yZWdfcmVhZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MzIgYWRkcixcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMjQ3LVx0XHRcdFx0ICAgIHUzMiAqZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jPTI1ND1zdGF0aWMgdTMyIGFuODgwMXJfbGVkX2JsaW5rX21zX3RvX2h3KHVuc2lnbmVkIGxvbmcgcmVxX21zKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMjcxLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzoyNzI6c3RhdGljIGludCBhbjg4MDFyX2xlZF9ibGlua19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTI3My1cdFx0XHRcdCB1bnNpZ25lZCBsb25nICpkZWxheV9vbixcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTMzMi1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6MzMzOnN0YXRpYyBpbnQgYW44ODAxcl9sZWRfYnJpZ2h0bmVzc19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTMzNC1cdFx0XHRcdCAgICAgIGVudW0gbGVkX2JyaWdodG5lc3MgdmFsdWUpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0zNTYtXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjM1NzpzdGF0aWMgaW50IGFuODgwMXJfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0zNTgtXHRcdFx0XHQgICAgICB1bnNpZ25lZCBsb25nICpydWxlcylcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jPTQwMz1zdGF0aWMgaW50IGFuODgwMXJfbGVkX3RyaWdfdG9faHcodW5zaWduZWQgbG9uZyBydWxlcywgdTE2ICpvbiwgdTE2ICpibGluaylcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTQ0MS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6NDQyOnN0YXRpYyBpbnQgYW44ODAxcl9sZWRfaHdfaXNfc3VwcG9ydGVkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy00NDMtXHRcdFx0XHQgICAgICAgdW5zaWduZWQgbG9uZyBydWxlcylcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTQ1Mi1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6NDUzOnN0YXRpYyBpbnQgYW44ODAxcl9sZWRfaHdfY29udHJvbF9zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTQ1NC1cdFx0XHRcdCAgICAgIHVuc2lnbmVkIGxvbmcgcnVsZXMpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy00NzktXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjQ4MDpzdGF0aWMgaW50IGFuODgwMXJfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTQ4MS1cdFx0XHRcdCAgICB1bnNpZ25lZCBsb25nIG1vZGVzKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtNTA0LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo1MDU6c3RhdGljIGludCBhbjg4MDFyX2xlZF9pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4ICpsZWRfY2ZnKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy01MDYte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtNTYyLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo1NjM6c3RhdGljIGludCBhbjg4MDFyX3Jlc2V0X3dha2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtNTY0LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTYwMC1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6NjAxOnN0YXRpYyBpbnQgYW44ODAxcl9hY2tfaW50ZXJydXB0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTYwMi17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy02MTQtXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjYxNTpzdGF0aWMgaW50IGFuODgwMXJfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtNjE2LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTY1MS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6NjUyOnN0YXRpYyBpcnFyZXR1cm5fdCBhbjg4MDFyX2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtNjUzLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTY3OS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6NjgwOnN0YXRpYyB2b2lkIGFuODgwMXJfZ2V0X3dvbChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy02ODEtXHRcdFx0ICAgIHN0cnVjdCBldGh0b29sX3dvbGluZm8gKndvbClcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTcwNy1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6NzA4OnN0YXRpYyBpbnQgYW44ODAxcl9zZXRfd29sKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTcwOS1cdFx0XHQgICBzdHJ1Y3QgZXRodG9vbF93b2xpbmZvICp3b2wpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy03ODItXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjc4MzpzdGF0aWMgaW50IGFuODgwMXJfb2ZfaW5pdF9sZWRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4ICpsZWRfY2ZnKVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy03ODQte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtODI5LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo4MzA6c3RhdGljIGludCBhbjg4MDFyX3JnbWlpX3J4ZGVsYXkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBlbmFibGUsXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTgzMS1cdFx0XHRcdCB1MTYgZGVsYXlfc3RlcHMpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy04NTEtXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjg1MjpzdGF0aWMgaW50IGFuODgwMXJfcmdtaWlfdHhkZWxheShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIGVuYWJsZSxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtODUzLVx0XHRcdFx0IHUxNiBkZWxheV9zdGVwcylcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTg3MC1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6ODcxOnN0YXRpYyBpbnQgYW44ODAxcl9yZ21paV9kZWxheV9jb25maWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtODcyLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTkwMS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6OTAyOnN0YXRpYyBpbnQgYW44ODAxcl9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy05MDMte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTk4LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo5OTk6c3RhdGljIGludCBhbjg4MDFyX3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTEwMDAte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMTAzMy1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6MTAzNDpzdGF0aWMgaW50IGFuODgwMXJfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMTAzNS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0xMDU5LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzoxMDYwOnN0YXRpYyBpbnQgYW44ODAxcl9zdXNwZW5kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTEwNjEte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMTA5MC1cbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6MTA5MTpzdGF0aWMgaW50IGFuODgwMXJfcmVzdW1lKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTEwOTIte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTE5Nz1zdHJ1Y3QgZW44ODExaF9wcml2IHtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yMDEtXHRzdHJ1Y3QgY2xrX2h3XHRcdGh3O1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MjAyOlx0c3RydWN0IHBoeV9kZXZpY2VcdCpwaHlkZXY7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yMDMtXHR1bnNpZ25lZCBpbnRcdFx0Y2tvX2lzX2VuYWJsZWQ7XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9MjQ4PXN0YXRpYyBpbnQgX19haXJfcGJ1c19yZWdfd3JpdGUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTI3Mi1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjI3MzpzdGF0aWMgaW50IF9fYWlyX3dyaXRlX2J1ZihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MzIgYWRkcmVzcyxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTI3NC1cdFx0XHQgICBjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTMwOC1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjMwOTpzdGF0aWMgaW50IGFpcl93cml0ZV9idWYoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIGFkZHJlc3MsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0zMTAtXHRcdFx0IGNvbnN0IHN0cnVjdCBmaXJtd2FyZSAqZncpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzI2LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MzI3OnN0YXRpYyBpbnQgZW44ODExaF93YWl0X21jdV9yZWFkeShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzI4LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0zNDgtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzozNDk6c3RhdGljIGludCBhbjg4MTFoYl9jaGVja19jcmMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIHNldDEsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0zNTAtXHRcdFx0ICAgICAgdTMyIG1vbjIsIHUzMiBtb24zKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTM4Ni1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjM4NzpzdGF0aWMgdm9pZCBlbjg4MTFoX3ByaW50X2Z3X3ZlcnNpb24oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTM4OC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzk2LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6Mzk3OnN0YXRpYyBpbnQgYW44ODExaGJfbG9hZF9maWxlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGNvbnN0IGNoYXIgKm5hbWUsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0zOTgtXHRcdFx0ICAgICAgdTMyIGFkZHJlc3MpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDEyLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDEzOnN0YXRpYyBpbnQgYW44ODExaGJfbWN1X2Fzc2VydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDE0LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy00MzYtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo0Mzc6c3RhdGljIGludCBhbjg4MTFoYl9tY3VfZGVhc3NlcnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTQzOC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDYxLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDYyOnN0YXRpYyBpbnQgYW44ODExaGJfbG9hZF9maXJtd2FyZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDYzLXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01MDEtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1MDI6c3RhdGljIGludCBlbjg4MTFoX2xvYWRfZmlybXdhcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTUwMy17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTU3LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NTU4OnN0YXRpYyBpbnQgZW44ODExaF9yZXN0YXJ0X21jdShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTU5LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01NzktXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1ODA6c3RhdGljIGludCBhaXJfaHdfbGVkX29uX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCwgYm9vbCBvbilcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTU4MS17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjA5LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NjEwOnN0YXRpYyBpbnQgYWlyX2h3X2xlZF9ibGlua19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02MTEtXHRcdFx0XHRib29sIGJsaW5raW5nKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTYzNi1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjYzNzpzdGF0aWMgaW50IGFpcl9sZWRfYmxpbmtfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjM4LVx0XHRcdCAgICAgdW5zaWduZWQgbG9uZyAqZGVsYXlfb24sXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjY5LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NjcwOnN0YXRpYyBpbnQgYWlyX2xlZF9icmlnaHRuZXNzX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTY3MS1cdFx0XHRcdCAgZW51bSBsZWRfYnJpZ2h0bmVzcyB2YWx1ZSlcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02OTQtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo2OTU6c3RhdGljIGludCBhaXJfbGVkX2h3X2NvbnRyb2xfZ2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjk2LVx0XHRcdFx0ICB1bnNpZ25lZCBsb25nICpydWxlcylcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03MDctXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo3MDg6c3RhdGljIGludCBhaXJfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzA5LVx0XHRcdFx0ICB1bnNpZ25lZCBsb25nIHJ1bGVzKVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc2OC1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc2OTpzdGF0aWMgaW50IGFpcl9sZWRfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCwgdTggc3RhdGUsIHU4IHBvbClcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc3MC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzk2LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6Nzk3OnN0YXRpYyBpbnQgYWlyX2xlZHNfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgbnVtLCBpbnQgZHVyLCBpbnQgbW9kZSlcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTc5OC17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODQ1LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6ODQ2OnN0YXRpYyBpbnQgZW44ODExaF9sZWRfaHdfaXNfc3VwcG9ydGVkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODQ3LVx0XHRcdFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgcnVsZXMpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9ODU5PXN0YXRpYyB1bnNpZ25lZCBsb25nIGFuODgxMWhiX2Nsa19yZWNhbGNfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy04NjItXHRzdHJ1Y3QgZW44ODExaF9wcml2ICpwcml2ID0gY2xrX2h3X3RvX2VuODgxMWhfcHJpdihodyk7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4NjM6XHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gcHJpdi1cdTAwM2VwaHlkZXY7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy04NjQtXHR1MzIgcGJ1c192YWx1ZTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz04NzQ9c3RhdGljIGludCBhbjg4MTFoYl9jbGtfZW5hYmxlKHN0cnVjdCBjbGtfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTg3Ni1cdHN0cnVjdCBlbjg4MTFoX3ByaXYgKnByaXYgPSBjbGtfaHdfdG9fZW44ODExaF9wcml2KGh3KTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjg3NzpcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSBwcml2LVx1MDAzZXBoeWRldjtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTg3OC1cbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz04ODQ9c3RhdGljIHZvaWQgYW44ODExaGJfY2xrX2Rpc2FibGUoc3RydWN0IGNsa19odyAqaHcpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODg2LVx0c3RydWN0IGVuODgxMWhfcHJpdiAqcHJpdiA9IGNsa19od190b19lbjg4MTFoX3ByaXYoaHcpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6ODg3Olx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHByaXYtXHUwMDNlcGh5ZGV2O1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODg4LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTg5Mz1zdGF0aWMgaW50IGFuODgxMWhiX2Nsa19pc19lbmFibGVkKHN0cnVjdCBjbGtfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTg5NS1cdHN0cnVjdCBlbjg4MTFoX3ByaXYgKnByaXYgPSBjbGtfaHdfdG9fZW44ODExaF9wcml2KGh3KTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjg5NjpcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSBwcml2LVx1MDAzZXBoeWRldjtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTg5Ny1cdHUzMiBwYnVzX3ZhbHVlO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTk1OD1zdGF0aWMgdW5zaWduZWQgbG9uZyBlbjg4MTFoX2Nsa19yZWNhbGNfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodyxcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy05NjEtXHRzdHJ1Y3QgZW44ODExaF9wcml2ICpwcml2ID0gY2xrX2h3X3RvX2VuODgxMWhfcHJpdihodyk7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo5NjI6XHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gcHJpdi1cdTAwM2VwaHlkZXY7XG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy05NjMtXHR1MzIgcGJ1c192YWx1ZTtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz05NzM9c3RhdGljIGludCBlbjg4MTFoX2Nsa19lbmFibGUoc3RydWN0IGNsa19odyAqaHcpXG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtOTc1LVx0c3RydWN0IGVuODgxMWhfcHJpdiAqcHJpdiA9IGNsa19od190b19lbjg4MTFoX3ByaXYoaHcpO1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6OTc2Olx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHByaXYtXHUwMDNlcGh5ZGV2O1xuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtOTc3LVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTk4Mz1zdGF0aWMgdm9pZCBlbjg4MTFoX2Nsa19kaXNhYmxlKHN0cnVjdCBjbGtfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTk4NS1cdHN0cnVjdCBlbjg4MTFoX3ByaXYgKnByaXYgPSBjbGtfaHdfdG9fZW44ODExaF9wcml2KGh3KTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjk4NjpcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSBwcml2LVx1MDAzZXBoeWRldjtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTk4Ny1cbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz05OTI9c3RhdGljIGludCBlbjg4MTFoX2Nsa19pc19lbmFibGVkKHN0cnVjdCBjbGtfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTk5NC1cdHN0cnVjdCBlbjg4MTFoX3ByaXYgKnByaXYgPSBjbGtfaHdfdG9fZW44ODExaF9wcml2KGh3KTtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjk5NTpcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSBwcml2LVx1MDAzZXBoeWRldjtcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTk5Ni1cdHUzMiBwYnVzX3ZhbHVlO1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTEwMzI9c3RhdGljIGludCBlbjg4MTFoX2Nsa19wcm92aWRlcl9zZXR1cChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBjbGtfaHcgKmh3KVxuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEwNTYtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMDU3OnN0YXRpYyBpbnQgZW44ODExaF9sZWRzX3NldHVwKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMDU4LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMDczLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTA3NDpzdGF0aWMgaW50IGFuODgxMWhiX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMDc1LXtcbi0tXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMTQ0LVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTE0NTpzdGF0aWMgaW50IGVuODgxMWhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTExNDYte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTExODUtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMTg2OnN0YXRpYyBpbnQgYW44ODExaGJfY29uZmlnX3NlcmRlc19wb2xhcml0eShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTE4Ny17XG4tLVxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTIxNi1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjEyMTc6c3RhdGljIGludCBlbjg4MTFoX2NvbmZpZ19zZXJkZXNfcG9sYXJpdHkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEyMTgte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEyNTMtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMjU0OnN0YXRpYyBpbnQgYW44ODExaGJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEyNTUte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEyODAtXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMjgxOnN0YXRpYyBpbnQgZW44ODExaF9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNjAzCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipLY29uZmlnIERpdmUqKgoKQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIGBkcml2ZXJzL25ldC9waHkvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIFBIWSBkcml2ZXIgY29uZmlndXJhdGlvbnMgbGl2ZSwgYW5kIHRoYXQmIzM5O3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgd2hvbGUgbmV0d29ya2luZyBQSFkgdGhpbmcgaXMgc2V0IHVwIHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbS4gSSYjMzk7bSB0aGlua2luZyBhYm91dCBkZXBlbmRlbmN5IGRlZmluaXRpb25zLCBmZWF0dXJlIGZsYWdzLCBhbmQgZGVmYXVsdCBzZWxlY3Rpb25z4oCUdGhlIHdob2xlIEtjb25maWcgZW5jaGlsYWRhLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW50YWwgbWFwIG9mIHdoaWNoIFBIWSBkcml2ZXJzIGFyZSBhdmFpbGFibGUsIHdoYXQgdGhlaXIga2V5IGNoYXJhY3RlcmlzdGljcyBhcmUgKGxpa2UgaWYgdGhleSYjMzk7cmUgZ2VuZXJpYyBvciBzcGVjaWZpYyB0byBjZXJ0YWluIGhhcmR3YXJlKSwgYW5kIGhvdyB0aGV5IHRpZSBpbnRvIHRoZSBicm9hZGVyIG5ldHdvcmsgc3Vic3lzdGVtLiBTbywgbGV0JiMzOTtzIHB1bGwgdXAgdGhhdCBmaWxlIGFuZCBnZXQgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIFBIWSBMYXllciBDb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdGNvbmZpZyBQSFlMSU5LXG4gICA3Olx0XHR0cmlzdGF0ZVxuICAgODpcdFx0c2VsZWN0IFBIWUxJQlxuICAgOTpcdFx0c2VsZWN0IFNXUEhZXG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgIFBIWWxpbmsgbW9kZWxzIHRoZSBsaW5rIGJldHdlZW4gdGhlIFBIWSBhbmQgTUFDLCBhbGxvd2luZyBmaXhlZFxuICAxMjpcdFx0ICBjb25maWd1cmF0aW9uIGxpbmtzLCBQSFlzLCBhbmQgU2VyZGVzIGxpbmtzIHdpdGggTUFDIGxldmVsXG4gIDEzOlx0XHQgIGF1dG9uZWdvdGlhdGlvbiBtb2Rlcy5cbiAgMTQ6XHRcbiAgMTU6XHRtZW51Y29uZmlnIFBIWUxJQlxuICAxNjpcdFx0dHJpc3RhdGUgXCYjMzQ7UEhZIERldmljZSBzdXBwb3J0IGFuZCBpbmZyYXN0cnVjdHVyZVwmIzM0O1xuICAxNzpcdFx0aGVscFxuICAxODpcdFx0ICBFdGhlcm5ldCBjb250cm9sbGVycyBhcmUgdXN1YWxseSBhdHRhY2hlZCB0byBQSFlcbiAgMTk6XHRcdCAgZGV2aWNlcy4gIFRoaXMgb3B0aW9uIHByb3ZpZGVzIGluZnJhc3RydWN0dXJlIGZvclxuICAyMDpcdFx0ICBtYW5hZ2luZyBQSFkgZGV2aWNlcy5cbiAgMjE6XHRcbiAgMjI6XHRpZiBQSFlMSUJcbiAgMjM6XHRcbiAgMjQ6XHRjb25maWcgU1dQSFlcbiAgMjU6XHRcdGJvb2xcbiAgMjY6XHRcbiAgMjc6XHRjb25maWcgUEhZX1BBQ0tBR0VcbiAgMjg6XHRcdCB0cmlzdGF0ZVxuICAyOTpcdFxuICAzMDpcdGNvbmZpZyBMRURfVFJJR0dFUl9QSFlcbiAgMzE6XHRcdGJvb2wgXCYjMzQ7U3VwcG9ydCBMRUQgdHJpZ2dlcnMgZm9yIHRyYWNraW5nIGxpbmsgc3RhdGVcJiMzNDtcbiAgMzI6XHRcdGRlcGVuZHMgb24gTEVEU19UUklHR0VSU1xuICAzMzpcdFx0aGVscFxuICAzNDpcdFx0ICBBZGRzIHN1cHBvcnQgZm9yIGEgc2V0IG9mIExFRCB0cmlnZ2VyIGV2ZW50cyBwZXItUEhZLiAgTGlua1xuICAzNTpcdFx0ICBzdGF0ZSBjaGFuZ2Ugd2lsbCB0cmlnZ2VyIHRoZSBldmVudHMsIGZvciBjb25zdW1wdGlvbiBieSBhblxuICAzNjpcdFx0ICBMRUQgY2xhc3MgZHJpdmVyLiAgVGhlcmUgYXJlIHRyaWdnZXJzIGZvciBlYWNoIGxpbmsgc3BlZWQgY3VycmVudGx5XG4gIDM3Olx0XHQgIHN1cHBvcnRlZCBieSB0aGUgUEhZIGFuZCBhbHNvIGEgb25lIGNvbW1vbiBcJiMzNDtsaW5rXCYjMzQ7IHRyaWdnZXIgYXMgYVxuICAzODpcdFx0ICBsb2dpY2FsLW9yIG9mIGFsbCB0aGUgbGluayBzcGVlZCBvbmVzLlxuICAzOTpcdFx0ICBBbGwgdGhlc2UgdHJpZ2dlcnMgYXJlIG5hbWVkIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIHBhdHRlcm46XG4gIDQwOlx0XHQgICAgICBcdTAwM2NtaWkgYnVzIGlkXHUwMDNlOlx1MDAzY3BoeVx1MDAzZTpcdTAwM2NzcGVlZFx1MDAzZVxuICA0MTpcdFxuICA0MjpcdFx0ICBXaGVyZSBzcGVlZCBpcyBpbiB0aGUgZm9ybTpcbiAgNDM6XHRcdFx0XHUwMDNjU3BlZWQgaW4gbWVnYWJpdHNcdTAwM2VNYnBzIE9SIFx1MDAzY1NwZWVkIGluIGdpZ2FiaXRzXHUwMDNlR2JwcyBPUiBsaW5rXG4gIDQ0Olx0XHRcdGZvciBhbnkgc3BlZWQga25vd24gdG8gdGhlIFBIWS5cbiAgNDU6XHRcbiAgNDY6XHRjb25maWcgT1BFTl9BTExJQU5DRV9IRUxQRVJTXG4gIDQ3Olx0XHRib29sXG4gIDQ4Olx0XG4gIDQ5Olx0Y29uZmlnIFBIWUxJQl9MRURTXG4gIDUwOlx0XHRkZWZfYm9vbCBPRlxuICA1MTpcdFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1QSFlMSUJcbiAgNTI6XHRcdGhlbHBcbiAgNTM6XHRcdCAgV2hlbiBMRUQgY2xhc3Mgc3VwcG9ydCBpcyBlbmFibGVkLCBwaHlsaWIgY2FuIGF1dG9tYXRpY2FsbHlcbiAgNTQ6XHRcdCAgcHJvYmUgTEVEIHNldHRpbmcgZnJvbSBkZXZpY2UgdHJlZS5cbiAgNTU6XHRcbiAgNTY6XHRjb25maWcgRklYRURfUEhZXG4gIDU3Olx0XHR0cmlzdGF0ZSBcJiMzNDtNRElPIEJ1cy9QSFkgZW11bGF0aW9uIHdpdGggZml4ZWQgc3BlZWQvbGluayBQSFlzXCYjMzQ7XG4gIDU4Olx0XHRzZWxlY3QgU1dQSFlcbiAgNTk6XHRcdGhlbHBcbiAgNjA6XHRcdCAgQWRkcyB0aGUgcGxhdGZvcm0gXCYjMzQ7Zml4ZWRcJiMzNDsgTURJTyBCdXMgdG8gY292ZXIgdGhlIGJvYXJkcyB0aGF0IHVzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAyMTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTU0OAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBgUEhZTElOS2AgYW5kIGBQSFlMSUJgIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuIE15IGZvY3VzIGlzIG9uIHVuZGVyc3RhbmRpbmcgd2hhdCBzcGVjaWZpY2FsbHkgcHVsbHMgaW4gYFBIWUxJTktgIGFuZCBgUEhZTElCYC4gR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUga2VybmVsJiMzOTtzIG5ldHdvcmtpbmcgc3RhY2ssIHRoZSBmaXJzdCBwbGFjZSBJJiMzOTtsbCB0YXJnZXQgaXMgdGhlIGRldmljZSBkcml2ZXIgY29uZmlndXJhdGlvbi4gSSYjMzk7bSB0aGlua2luZyBkcml2ZXJzIHJlbGF0ZWQgdG8gbmV0d29yayBpbnRlcmZhY2VzIGFyZSB0aGUgbW9zdCBsaWtlbHkgY2FuZGlkYXRlcy4KCk15IHBsYW4gaXMgdG8gc3RhcnQgd2l0aCBhIGBncmVwYCB0aHJvdWdoIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzLiBUaGlzIG1lYW5zIGRpdmluZyBpbnRvIGBkcml2ZXJzL25ldC9LY29uZmlnYCBhbmQsIGRlcGVuZGluZyBvbiB0aGUgYXJjaGl0ZWN0dXJlIEkmIzM5O20gd29ya2luZyB3aXRoLCBwb3NzaWJseSBjaGVja2luZyB3aXRoaW4gYGRyaXZlcnMvbmV0L3VzYi9LY29uZmlnYCB0b28uIEkgZXhwZWN0IGBQSFlMSU5LYCBhbmQgYFBIWUxJQmAgd2lsbCBiZSBpbmNsdWRlZCwgYW5kIG15IGFpbSBpcyB0byBmaW5kICp3aGVyZSogaW4gdGhlIGhpZXJhcmNoeSB0aGVzZSBhcmUgc2VsZWN0ZWQsIGFuZCB1bmRlciB3aGF0IHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zLiBUaGF0IHNob3VsZCBpbGx1bWluYXRlIHRoZSB0cmlnZ2VyaW5nIGNvbmRpdGlvbnMgSSYjMzk7bSBpbnRlcmVzdGVkIGluIGFuZCB0aGVpciByb2xlIGluIHRoZSBiaWdnZXIgcGljdHVyZSBvZiB0aGUgbmV0d29ya2luZyBzdWJzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NlbGVjdCBQSFlMSU5LJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9LY29uZmlnPTI9Y29uZmlnIEFMVEVSQV9UU0Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvS2NvbmZpZy02LVx0c2VsZWN0IFBIWUxJQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL0tjb25maWc6NzpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvS2NvbmZpZy04LVx0c2VsZWN0IFBDU19MWU5YXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9LY29uZmlnPTIwPWNvbmZpZyBBRzcxWFhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL0tjb25maWctMjItXHRkZXBlbmRzIG9uIEFUSDc5IHx8IENPTVBJTEVfVEVTVFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9LY29uZmlnOjIzOlx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZy0yNC1cdGltcGx5IE5FVF9TRUxGVEVTVFNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc9MjI9Y29uZmlnIE1BQ0Jcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWctMjUtXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc6MjY6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTI3LVx0c2VsZWN0IENSQzMyXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc9ODA9Y29uZmlnIFVDQ19HRVRIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctODMtXHRzZWxlY3QgRlNMX1BRX01ESU9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjg0Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTg1LVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL0tjb25maWc9Mj1tZW51Y29uZmlnIEZTTF9EUEFBX0VUSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL0tjb25maWctNC1cdGRlcGVuZHMgb24gRlNMX0RQQUEgXHUwMDI2XHUwMDI2IEZTTF9GTUFOXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9LY29uZmlnOjU6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvS2NvbmZpZy02LVx0c2VsZWN0IFBDU19MWU5YXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWc9Mj1jb25maWcgRlNMX0RQQUEyX0VUSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIEZTTF9NQ19CVVMgXHUwMDI2XHUwMDI2IEZTTF9NQ19EUElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZzo1Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnLTYtXHRzZWxlY3QgUENTX0xZTlhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZz0zMz1jb25maWcgRlNMX0RQQUEyX1NXSVRDSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnLTM3LVx0ZGVwZW5kcyBvbiBGU0xfTUNfQlVTIFx1MDAyNlx1MDAyNiBGU0xfTUNfRFBJT1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWc6Mzg6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctMzktXHRzZWxlY3QgUENTX0xZTlhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZz0zMD1jb25maWcgRlNMX0VORVRDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctMzctXHRzZWxlY3QgTlhQX0VORVRDX1BGX0NPTU1PTlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc6Mzg6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctMzktXHRzZWxlY3QgUENTX0xZTlhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZz00OD1jb25maWcgTlhQX0VORVRDNFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnLTU1LVx0c2VsZWN0IE5YUF9OVE1QXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZzo1NjpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZy01Ny1cdHNlbGVjdCBESU1MSUJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZz02Nj1jb25maWcgRlNMX0VORVRDX1ZGXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctNzEtXHRzZWxlY3QgRlNMX0VORVRDX01ESU9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnOjcyOlx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnLTczLVx0c2VsZWN0IERJTUxJQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL0tjb25maWc9Mj1jb25maWcgRlNMX0ZNQU5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnLTUtXHRzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1JcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL0tjb25maWc6NjpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnLTctXHRzZWxlY3QgUENTX0xZTlhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9LY29uZmlnPTI9Y29uZmlnIEZTX0VORVRcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9LY29uZmlnLTUtXHRzZWxlY3QgTUlJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9LY29uZmlnOjY6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvS2NvbmZpZy03LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZz01OT1jb25maWcgTVZORVRBXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTYyLVx0c2VsZWN0IE1WTURJT1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnOjYzOlx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy02NC1cdHNlbGVjdCBQQUdFX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL0tjb25maWc9ODY9Y29uZmlnIE1WUFAyXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTg5LVx0c2VsZWN0IE1WTURJT1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnOjkwOlx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy05MS1cdHNlbGVjdCBQQUdFX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWc9Nj1jb25maWcgUFJFU1RFUkFcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWctMTAtXHRzZWxlY3QgTkVUX0RFVkxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvS2NvbmZpZzoxMTpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL0tjb25maWctMTItXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZz0xND1jb25maWcgTkVUX01FRElBVEVLX1NPQ1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMTctXHRzZWxlY3QgUElOQ1RSTFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZzoxODpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTE5LVx0c2VsZWN0IERJTUxJQlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZz0yMD1jb25maWcgRkJOSUNcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMjktXHRzZWxlY3QgUENTX1hQQ1NcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZzozMDpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL0tjb25maWctMzEtXHRzZWxlY3QgUExETUZXXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWc9NDU9Y29uZmlnIExBTjc0M1hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZy01MS1cdHNlbGVjdCBDUkMzMlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWc6NTI6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWctNTMtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZz0xPWNvbmZpZyBMQU45NjZYX1NXSVRDSFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L0tjb25maWctNy1cdGRlcGVuZHMgb24gQlJJREdFIHx8IEJSSURHRT1uXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnOjg6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvS2NvbmZpZy05LVx0c2VsZWN0IFBBR0VfUE9PTFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZz0xPWNvbmZpZyBTUEFSWDVfU1dJVENIXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTgtXHRkZXBlbmRzIG9uIEJSSURHRSB8fCBCUklER0U9blxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnOjk6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnLTEwLVx0c2VsZWN0IFBIWV9TUEFSWDVfU0VSREVTXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9LY29uZmlnPTE1PWNvbmZpZyBNU0NDX09DRUxPVF9TV0lUQ0hfTElCXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9LY29uZmlnLTE5LVx0c2VsZWN0IFBBQ0tJTkdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2MvS2NvbmZpZzoyMDpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWctMjEtXHR0cmlzdGF0ZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvS2NvbmZpZz00Mj1jb25maWcgUkVORVNBU19FVEhFUl9TV0lUQ0hcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWctNDctXHRzZWxlY3QgTUlJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWc6NDg6XHRzZWxlY3QgUEhZTElOS1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnLTQ5LVx0c2VsZWN0IFJFTkVTQVNfR0VONF9QVFBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTI9Y29uZmlnIFNUTU1BQ19FVEhcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTktXHRzZWxlY3QgUEFHRV9QT09MXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEwOlx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTEtXHRzZWxlY3QgQ1JDMzJcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZz0yNj1jb25maWcgVEVIVVRJX1RONDBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvS2NvbmZpZy0zMC1cdHNlbGVjdCBGV19MT0FERVJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnOjMxOlx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnLTMyLVx0aGVscFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWc9OTY9Y29uZmlnIFRJX0szX0FNNjVfQ1BTV19OVVNTXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZy0xMDAtXHRzZWxlY3QgVElfREFWSU5DSV9NRElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjEwMTpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnLTEwMi1cdHNlbGVjdCBQQUdFX1BPT0xcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL0tjb25maWc9MTk9Y29uZmlnIExJQldYXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTIzLVx0c2VsZWN0IERJTUxJQlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjI0Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0yNS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngvS2NvbmZpZz0yNj1jb25maWcgWElMSU5YX0FYSV9FTUFDXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWctMjktXHRkZXBlbmRzIG9uIFhJTElOWF9ETUFcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnOjMwOlx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTMxLVx0c2VsZWN0IERJTUxJQlxuLS1cbmRyaXZlcnMvbmV0L3Bjcy9LY29uZmlnPTg9Y29uZmlnIFBDU19YUENTXG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZy05LVx0dHJpc3RhdGUgXCYjMzQ7U3lub3BzeXMgRGVzaWduV2FyZSBFdGhlcm5ldCBYUENTXCYjMzQ7XG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZzoxMDpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZy0xMS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0xMTM9Y29uZmlnIFVTQl9MQU43OFhYXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWctMTE1LVx0c2VsZWN0IE1JSVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc6MTE2Olx0c2VsZWN0IFBIWUxJTktcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTExNy1cdHNlbGVjdCBNSUNST0NISVBfUEhZXG4tLVxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MTY2PWNvbmZpZyBVU0JfTkVUX0FYODgxN1hcbi0tXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNjktXHRzZWxlY3QgQ1JDMzJcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjE3MDpcdHNlbGVjdCBQSFlMSU5LXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNzEtXHRzZWxlY3QgQVg4ODc5NkJfUEhZXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0ODgzCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdC4KCioqRXRoZXJuZXQgRGV2aWNlIERyaXZlcnMgJmFtcDsgRW11bGF0aW9uIGZvciBUZXN0aW5nKioKClJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZXNlIFVTQiBFdGhlcm5ldCBkcml2ZXJzLCBgVVNCX0xBTjc4WFhgIGFuZCBgVVNCX05FVF9BWDg4MTdYYC4gU2VlbXMgbGlrZSB0aGV5IGJvdGggaG9vayBpbnRvIGBQSFlMSU5LYCBhbmQgYFBIWUxJQmAsIHdoaWNoIGlzIHN0YW5kYXJkIGZvciBoYW5kbGluZyB0aGUgcGh5c2ljYWwgbGF5ZXIgaW50ZXJmYWNlLiBUaGF0JiMzOTtzIGEgc29saWQgYXJjaGl0ZWN0dXJhbCBjaG9pY2UsIG5vdGhpbmcgc3VycHJpc2luZyB0aGVyZS4KClRoZSBleGNpdGluZyBwYXJ0IGlzIHRoYXQgSSBjYW4gZW11bGF0ZSB0aGVzZSBVU0IgRXRoZXJuZXQgZGV2aWNlcyB1c2luZyBVU0IgcmF3LWdhZGdldCBvciBkdW1teV9oY2Qgd2l0aGluIHN5emthbGxlciBvciBRRU1VISBJIGNhbiBsZXZlcmFnZSB0aGF0IHRvIHRlc3QgdGhlbSB0aG9yb3VnaGx5LgoKQWxzbywgSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgYE5FVF9EU0FgIGFsc28gc2VsZWN0cyBgUEhZTElOS2AuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgYG5ldC9kc2EvS2NvbmZpZ2AgZmlsZSB0byBjb25maXJtIGhvdyB0aGF0IHRpZXMgaW50byB0aGUgb3ZlcmFsbCBwaWN0dXJlLiBHb3R0YSBtYWtlIHN1cmUgSSYjMzk7bSBjb25zaWRlcmluZyBhbGwgcG90ZW50aWFsIGludGVyYWN0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGR1cmluZyBteSB0ZXN0aW5nIHN0cmF0ZWd5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSBhbiBleGhhdXN0aXZlIHRlc3QgcGxhbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UEhZTElOSyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9kc2EvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9kc2EvS2NvbmZpZz0zPW1lbnVjb25maWcgTkVUX0RTQVxuLS1cbm5ldC9kc2EvS2NvbmZpZy05LVx0c2VsZWN0IE5FVF9TV0lUQ0hERVZcbm5ldC9kc2EvS2NvbmZpZzoxMDpcdHNlbGVjdCBQSFlMSU5LXG5uZXQvZHNhL0tjb25maWctMTEtXHRzZWxlY3QgTkVUX0RFVkxJTktcbi0tXG5uZXQvZHNhL3BvcnQuYz0xNjE3PWludCBkc2FfcG9ydF9waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZHNhX3BvcnQgKmRwKVxuLS1cbm5ldC9kc2EvcG9ydC5jLTE2NDktXHRpZiAoSVNfRVJSKHBsKSkge1xubmV0L2RzYS9wb3J0LmM6MTY1MDpcdFx0cHJfZXJyKFwmIzM0O2Vycm9yIGNyZWF0aW5nIFBIWUxJTks6ICVsZFxcblwmIzM0OywgUFRSX0VSUihwbCkpO1xubmV0L2RzYS9wb3J0LmMtMTY1MS1cdFx0cmV0dXJuIFBUUl9FUlIocGwpO1xuLS1cbm5ldC9kc2EvcG9ydC5jPTE2NjU9c3RhdGljIGludCBkc2Ffc2hhcmVkX3BvcnRfcGh5bGlua19yZWdpc3RlcihzdHJ1Y3QgZHNhX3BvcnQgKmRwKVxuLS1cbm5ldC9kc2EvcG9ydC5jLTE2NzEtXHRkcC1cdTAwM2VwbF9jb25maWcuZGV2ID0gZHMtXHUwMDNlZGV2O1xubmV0L2RzYS9wb3J0LmM6MTY3MjpcdGRwLVx1MDAzZXBsX2NvbmZpZy50eXBlID0gUEhZTElOS19ERVY7XG5uZXQvZHNhL3BvcnQuYy0xNjczLVxuLS1cbm5ldC9kc2EvdXNlci5jPTI2NTQ9c3RhdGljIGludCBkc2FfdXNlcl9waHlfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKnVzZXJfZGV2KVxuLS1cbm5ldC9kc2EvdXNlci5jLTI2NjItXHRkcC1cdTAwM2VwbF9jb25maWcuZGV2ID0gXHUwMDI2dXNlcl9kZXYtXHUwMDNlZGV2O1xubmV0L2RzYS91c2VyLmM6MjY2MzpcdGRwLVx1MDAzZXBsX2NvbmZpZy50eXBlID0gUEhZTElOS19ORVRERVY7XG5uZXQvZHNhL3VzZXIuYy0yNjY0LVxubmV0L2RzYS91c2VyLmMtMjY2NS1cdC8qIFRoZSBnZXRfZml4ZWRfc3RhdGUgY2FsbGJhY2sgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHBvbGxpbmcgdGhlXG5uZXQvZHNhL3VzZXIuYzoyNjY2Olx0ICogbGluayBHUElPIGluIFBIWUxJTksgKHNlZSBwaHlsaW5rX2dldF9maXhlZF9zdGF0ZSkuICBPbmx5IHNldFxubmV0L2RzYS91c2VyLmMtMjY2Ny1cdCAqIHRoaXMgaWYgdGhlIHN3aXRjaCBwcm92aWRlcyBzdWNoIGEgY2FsbGJhY2suXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1NzQxCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgTmV0d29yayBQSFkvUEhZTGluayBQYXRjaCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSYjMzk7bSBleGFtaW5pbmcgdGhpcyBwYXRjaCB0byBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSBjaGFuZ2luZyB1bmRlciB0aGUgaG9vZC4gSXQgc2VlbXMgdG8gYmUgY2xlYW5pbmcgdXAgc29tZSBlcnJvciBwYXRocyBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudCBpbiB0aGUgUEhZIChQaHlzaWNhbCBMYXllcikgYW5kIFBIWUxpbmsgc3Vic3lzdGVtcy4gIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgYWJvdXQgaGFuZGxpbmcgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb25zIGFuZCBlbnN1cmluZyBwcm9wZXIgY2xlYW51cCBvZiBQSFkgZGV2aWNlIHBvaW50ZXJzLCBlc3BlY2lhbGx5IGR1cmluZyB0aGUgYnJpbmd1cC90ZWFyZG93biBjeWNsZXMuCgpUaGUgZmlyc3QgcGFydCBsb29rcyBhdCBgcGh5X3Jlc3RvcmVfZ2VucGh5X2lycWAuIFRoaXMgZnVuY3Rpb24gc2VlbXMgdG8gYmUgbWFraW5nIHN1cmUgdGhlIGludGVycnVwdCBjb25maWd1cmF0aW9uIGlzIGNvcnJlY3RseSByZXN0b3JlZCB3aGVuIHRoZSBnZW5lcmljIFBIWSBkcml2ZXIgaXMgdXNlZCwgcGFydGljdWxhcmx5IGFmdGVyIGFuIGVycm9yIG9yIGRldGFjaG1lbnQuICBJdCYjMzk7cyBjcml0aWNhbCBiZWNhdXNlIGluY29ycmVjdCBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbiBjb3VsZCBsZWFkIHRvIGJyb2tlbiBuZXR3b3JrIGNvbm5lY3Rpdml0eSBvciBpbnN0YWJpbGl0eSwgYW5kIGlzIHRyaWdnZXJlZCBvbiB0aGUgZXJyb3IgcGF0aHMuCgpUaGUgc2Vjb25kIHBhcnQgZGVhbHMgd2l0aCBgcGh5bGlua19jbGVhcl9waHlkZXZgLiAgVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiB0byBkaXNhc3NvY2lhdGUgYSBQSFkgZGV2aWNlIGZyb20gYSBQSFlMaW5rIGluc3RhbmNlLiBJdCYjMzk7cyBpbnZva2VkIGluIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YCBhbmQgYWxzbyBhcyBwYXJ0IG9mIGVycm9yIGhhbmRsaW5nIGluIGBwaHlsaW5rX2JyaW5ndXBfcGh5YCwgbWFraW5nIHN1cmUgYSBQSFkgZGV2aWNlIGlzbiYjMzk7dCBsZWFrZWQgb24gYnJpbmd1cCBmYWlsdXJlcy4gIFRoaXMgaXMgaW1wb3J0YW50IGZvciBwcmV2ZW50aW5nIHJlc291cmNlIGxlYWtzIGFuZCBlbnN1cmluZyBQSFkgZGV2aWNlcyBjYW4gYmUgY2xlYW5seSByZS1hdHRhY2hlZC4KCkZ1bmN0aW9uYWxseSwgSSBjYW4gc2VlIHRoYXQgdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIHJlYWwsIHBvdGVudGlhbGx5IHByb2JsZW1hdGljIHNjZW5hcmlvcy4gIEZhaWx1cmUgdG8gcHJvcGVybHkgY2xlYXIgdGhlIGBwaHlkZXZgIHBvaW50ZXIgY291bGQgbGVhZCB0byB0aGUgYC1FQlVTWWAgZXJyb3IgYW5kIHJldHJ5IGZhaWx1cmUuICBUaGUgaW50ZXJydXB0IHJlc3RvcmF0aW9uIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gZHVyaW5nIFBIWSBhdHRhY2guIEJvdGggYXJlIHdvcnRoIGludmVzdGlnYXRpbmcuCgpOb3csIGFjY29yZGluZyB0byB0aGUgZ3VpZGFuY2UsIEkgbmVlZCB0byBkZWNpZGUgaWYgdGhpcyB3YXJyYW50cyBmdXp6aW5nLiBJdCYjMzk7cyBub3QganVzdCBkb2N1bWVudGF0aW9uIG9yIGxvZ2dpbmcuICBJdCYjMzk7cyBtb2RpZnlpbmcgY29yZSBuZXR3b3JrIFBIWSBsb2dpYywgd2hpY2ggaXMgdXNlZCBhY3Jvc3MgbWFueSBkaWZmZXJlbnQgbmV0d29ya2luZyBkcml2ZXJzLiAgVGhlIGNoYW5nZXMgYXJlIGluIHJlYWNoYWJsZSBlcnJvciBwYXRocywgYW5kIG5vdCBzcGVjaWZpYyB0byBhbnkgcGFydGljdWxhciBoYXJkd2FyZS4gSXQmIzM5O3Mgbm90IHZlbmRvci1zcGVjaWZpYyBvciB0aWVkIHRvIGEgc3BlY2lhbGl6ZWQgUENJZSBjYXJkIHRoYXQgY2FuJiMzOTt0IGJlIGVtdWxhdGVkLiBUaGVyZWZvcmUsIGl0JiMzOTtzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4KCk15IG5leHQgc3RlcCBpcyB0byBpZGVudGlmeSBgRm9jdXNTeW1ib2xzYCBhbmQgYEVuYWJsZUNvbmZpZ3NgLiAgQmFzZWQgb24gdGhlIGluc3RydWN0aW9ucywgdGhlIGBGb2N1c1N5bWJvbHNgIGFyZSB0aGUgbm9uLXN0YXRpYywgZXhwb3J0ZWQgZW50cnkgcG9pbnRzIG1vZGlmaWVkIGJ5IG9yIGRpcmVjdGx5IGludm9sdmVkIGluIHRoZSBwYXRjaDogYHBoeV9hdHRhY2hfZGlyZWN0YCwgYHBoeV9kZXRhY2hgLCBgcGh5bGlua19jb25uZWN0X3BoeWAsIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YCwgYHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3RgLCBgcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3RgLgoKVGhlIHJlcXVpcmVkIGBFbmFibGVDb25maWdzYCBhcHBlYXIgdG8gYmUgYFBIWUxJQmAgYW5kIGBQSFlMSU5LYCBmcm9tIHRoZSBkcml2ZXImIzM5O3MgbWFrZWZpbGUuCgpTbywgaW4gc3VtbWFyeTogSSYjMzk7dmUgaWRlbnRpZmllZCBjcml0aWNhbCBsb2dpYywgcmVsZXZhbnQgc3ltYm9scywgYW5kIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgZnVydGhlciBmdXp6aW5nIGFuYWx5c2lzLiAgVGhpcyBwYXRjaCBtb2RpZmllcyByZWFjaGFibGUsIGNvcmUga2VybmVsIGxvZ2ljIGFuZCB3YXJyYW50cyBmdXJ0aGVyIGludmVzdGlnYXRpb24gdmlhIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZ1wmIzM0OyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTUxMj1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvaXBhL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWctNTEzLVxuZHJpdmVycy9uZXQvS2NvbmZpZzo1MTQ6c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L3BoeS9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnLTUxNS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTg0OTgKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlOgoKKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgdGltZSB0byBkaXZlIGludG8gdGhpcy4gQmFzZWQgb24gd2hhdCBJJiMzOTttIGxvb2tpbmcgYXQsIG15IGluaXRpYWwgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gdGhlIGBkcml2ZXJzL25ldC9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGFyZSBjb250cm9sbGluZyB0aGlzIHBhcnRpY3VsYXIgYXNwZWN0IG9mIHRoZSBuZXR3b3JrIHN0YWNrLiBTcGVjaWZpY2FsbHksIEkmIzM5O2xsIHN0YXJ0IGJ5IHRha2luZyBhIGxvb2sgYXQgbGluZSA1MTQgYW5kLCBnZW5lcmFsbHkgc3BlYWtpbmcsIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGBkcml2ZXJzL25ldC9LY29uZmlnYCBmaWxlLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBicm9hZGVyIGNvbnRleHQgYW5kIGxpa2VseSBzb21lIGtleSBkZXBlbmRlbmNpZXMgb3IgcGFyZW50IG9wdGlvbnMgdGhhdCBpbmZsdWVuY2UgdGhlIGJlaGF2aW9yIEkmIzM5O20gc2VlaW5nLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBhbmQgSSBuZWVkIHRvIHNlZSB3aGF0JiMzOTtzIHNldCB1cCBoZXJlIGluIGBLY29uZmlnYC4gVGhpcyBzaG91bGQgbGVhZCBtZSB0byB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAyMTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDQwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBOZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgTkVUREVWSUNFU1xuICAgNzpcdFx0ZGVmYXVsdCB5IGlmIFVNTFxuICAgODpcdFx0ZGVwZW5kcyBvbiBORVRcbiAgIDk6XHRcdGJvb2wgXCYjMzQ7TmV0d29yayBkZXZpY2Ugc3VwcG9ydFwmIzM0O1xuICAxMDpcdFx0aGVscFxuICAxMTpcdFx0ICBZb3UgY2FuIHNheSBOIGhlcmUgaWYgeW91IGRvbiYjMzk7dCBpbnRlbmQgdG8gY29ubmVjdCB5b3VyIExpbnV4IGJveCB0b1xuICAxMjpcdFx0ICBhbnkgb3RoZXIgY29tcHV0ZXIgYXQgYWxsLlxuICAxMzpcdFxuICAxNDpcdFx0ICBZb3UmIzM5O2xsIGhhdmUgdG8gc2F5IFkgaWYgeW91ciBjb21wdXRlciBjb250YWlucyBhIG5ldHdvcmsgY2FyZCB0aGF0XG4gIDE1Olx0XHQgIHlvdSB3YW50IHRvIHVzZSB1bmRlciBMaW51eC4gSWYgeW91IGFyZSBnb2luZyB0byBydW4gU0xJUCBvciBQUFAgb3ZlclxuICAxNjpcdFx0ICB0ZWxlcGhvbmUgbGluZSBvciBudWxsIG1vZGVtIGNhYmxlIHlvdSBuZWVkIHNheSBZIGhlcmUuIENvbm5lY3RpbmdcbiAgMTc6XHRcdCAgdHdvIG1hY2hpbmVzIHdpdGggcGFyYWxsZWwgcG9ydHMgdXNpbmcgUExJUCBuZWVkcyB0aGlzLCBhcyB3ZWxsIGFzXG4gIDE4Olx0XHQgIEFYLjI1L0tJU1MgZm9yIHNlbmRpbmcgSW50ZXJuZXQgdHJhZmZpYyBvdmVyIGFtYXRldXIgcmFkaW8gbGlua3MuXG4gIDE5Olx0XG4gIDIwOlx0XHQgIFNlZSBhbHNvIFwmIzM0O1RoZSBMaW51eCBOZXR3b3JrIEFkbWluaXN0cmF0b3ImIzM5O3MgR3VpZGVcJiMzNDsgYnkgT2xhZiBLaXJjaCBhbmRcbiAgMjE6XHRcdCAgVGVycnkgRGF3c29uLiBBdmFpbGFibGUgYXQgXHUwMDNjaHR0cDovL3d3dy50bGRwLm9yZy9ndWlkZXMuaHRtbFx1MDAzZS5cbiAgMjI6XHRcbiAgMjM6XHRcdCAgSWYgdW5zdXJlLCBzYXkgWS5cbiAgMjQ6XHRcbiAgMjU6XHQjIEFsbCB0aGUgZm9sbG93aW5nIHN5bWJvbHMgYXJlIGRlcGVuZGVudCBvbiBORVRERVZJQ0VTIC0gZG8gbm90IHJlcGVhdFxuICAyNjpcdCMgdGhhdCBmb3IgZWFjaCBvZiB0aGUgc3ltYm9scy5cbiAgMjc6XHRpZiBORVRERVZJQ0VTXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnIE1JSVxuICAzMDpcdFx0dHJpc3RhdGVcbiAgMzE6XHRcbiAgMzI6XHRjb25maWcgTkVUX0NPUkVcbiAgMzM6XHRcdGRlZmF1bHQgeVxuICAzNDpcdFx0Ym9vbCBcJiMzNDtOZXR3b3JrIGNvcmUgZHJpdmVyIHN1cHBvcnRcJiMzNDtcbiAgMzU6XHRcdGhlbHBcbiAgMzY6XHRcdCAgWW91IGNhbiBzYXkgTiBoZXJlIGlmIHlvdSBkbyBub3QgaW50ZW5kIHRvIHVzZSBhbnkgb2YgdGhlXG4gIDM3Olx0XHQgIG5ldHdvcmtpbmcgY29yZSBkcml2ZXJzIChpLmUuIFZMQU4sIGJyaWRnaW5nLCBib25kaW5nLCBldGMuKVxuICAzODpcdFxuICAzOTpcdGlmIE5FVF9DT1JFXG4gIDQwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5MjM4CgkJCQkJCQlvdXRwdXQ6IDIzMgoJCQkJCQkJdGhvdWdodHM6IDM3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBQSFkgTGF5ZXIgYW5kIFBoeWxpbmsgU3Vic3lzdGVtIENoYW5nZXMqKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCBiYXNlZCBvbiB0aGUgZGVwZW5kZW5jaWVzLCBoZXJlJiMzOTtzIHdoYXQgSSYjMzk7dmUgZ290LiBgTkVUREVWSUNFU2AgY2xlYXJseSBkZXBlbmRzIG9uIGBORVRgLCBhbmQgd2l0aGluIGBORVRERVZJQ0VTYCwgd2UgZmluZCBgUEhZTElCYC4gYFBIWUxJTktgIGlzIHRoZSBjb21wb25lbnQgdGhhdCBpbnRlcmFjdHMgd2l0aCBhbmQgc2VsZWN0cyBiZXR3ZWVuIGBQSFlMSUJgIGFuZCBgU1dQSFlgLiBUbyByZWFsbHkgdGVzdCB0aGlzLCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkmIzM5O3ZlIGdvdCBhIHdheSB0byBleGVyY2lzZSBgcGh5bGlua2AgYW5kIGBwaHlsaWJgLiBJdCBsb29rcyBsaWtlIGRyaXZlcnMgbGlrZSBgTkVUX0RTQWAsIGBVU0JfTEFONzhYWGAsIGBVU0JfTkVUX0FYODgxN1hgLCBvciBgRklYRURfUEhZYCBjYW4gYmUgdXNlZCBmb3IgdGhhdC4gVGhlcmVmb3JlLCB0byBlbnN1cmUgSSBjYW4gYWN0dWFsbHkgdGVzdCB0aGVzZSBjaGFuZ2VzLCBJJiMzOTtsbCB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgZm9sbG93aW5nIGNvbmZpZ3MgYXJlIGVuYWJsZWQ6CgoqICAgYE5FVGAKKiAgIGBORVRERVZJQ0VTYAoqICAgYFBIWUxJQmAKKiAgIGBQSFlMSU5LYAoKSnVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bSBnb2luZyB0byBkb3VibGUtY2hlY2sgZXZlcnl0aGluZyBhbmQgbWFrZSBzdXJlIHRoZSBmb3JtYXR0aW5nIGlzIGFsbCBjb3JyZWN0IGJlZm9yZSBJIGNvbnRpbnVlLgoKVGhlIHBhdGNoIGZvY3VzZXMgb24gdGhlc2Uga2V5IGZ1bmN0aW9uczoKCiogICBgcGh5X2F0dGFjaF9kaXJlY3RgCiogICBgcGh5X2RldGFjaGAKKiAgIGBwaHlsaW5rX2Nvbm5lY3RfcGh5YAoqICAgYHBoeWxpbmtfZGlzY29ubmVjdF9waHlgCiogICBgcGh5bGlua19vZl9waHlfY29ubmVjdGAKKiAgIGBwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdGAKCkkgYWxzbyBub3RlIHRoZSBpbXBvcnRhbmNlIG9mIG1ha2luZyBzdXJlIHRoZXNlIGNvbmZpZ3VyYXRpb25zIGFyZSBzZXQsIGFzIG1lbnRpb25lZCBwcmV2aW91c2x5OgoKKiAgIGBORVRgCiogICBgTkVUREVWSUNFU2AKKiAgIGBQSFlMSUJgCiogICBgUEhZTElOS2AKCkxvb2tzIGxpa2UgdGhpcyBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuIFRoZSBjaGFuZ2VzIGFyZSBpbiBjb3JlIFBIWSBsYXllciBhbmQgcGh5bGluayBzdWJzeXN0ZW0gY29kZSAoYHBoeV9kZXZpY2UuY2AgYW5kIGBwaHlsaW5rLmNgKSwgc3BlY2lmaWNhbGx5IGFkZHJlc3NpbmcgZXJyb3IgaGFuZGxpbmcgYW5kIGNsZWFudXAuIFRoZSBwYXRjaCBlbnN1cmVzIHRoYXQgYHBsLSZndDtwaHlkZXZgIGlzIGNsZWFyZWQgd2hlbiB0aGVyZSBpcyBhIGZhaWx1cmUgZHVyaW5nIGBwaHlsaW5rX2JyaW5ndXBfcGh5YCwgcHJldmVudGluZyBzdGFsZSBwb2ludGVycyBhbmQgZW5zdXJpbmcgYSBzdWNjZXNzZnVsIGNvbm5lY3Rpb24uIEl0IGFsc28gcmVzdG9yZXMgZ2VuZXJpYyBQSFkgSVJRIGNvbmZpZ3VyYXRpb24gdXBvbiB1bmJpbmQgb3IgZXJyb3IgdXNpbmcgYHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoKWAuIEkgY2FuIHNlZSB0aGVzZSBjb2RlIHBhdGhzIGFyZSBhY3R1YWxseSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBlbXVsYXRlZCBVU0IgZXRoZXJuZXQgaGFyZHdhcmUsIGZvciBleGFtcGxlLCB0aGUgQVg4ODE3OSBvciBMQU43OHh4LCBvciBldmVuIERTQSBsb29wYmFjayBkZXZpY2VzLgoKQWxyaWdodCwgSSYjMzk7bSByZWFkeSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVQmIzM0OywKICAgICYjMzQ7TkVUREVWSUNFUyYjMzQ7LAogICAgJiMzNDtQSFlMSUImIzM0OywKICAgICYjMzQ7UEhZTElOSyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BoeV9hdHRhY2hfZGlyZWN0JiMzNDssCiAgICAmIzM0O3BoeV9kZXRhY2gmIzM0OywKICAgICYjMzQ7cGh5bGlua19jb25uZWN0X3BoeSYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBQSFkgbGlicmFyeSBhbmQgcGh5bGluayBzdWJzeXN0ZW0gbG9naWMgaW4gZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyBhbmQgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy4gSXQgaW50cm9kdWNlcyBwaHlfcmVzdG9yZV9nZW5waHlfaXJxIHRvIHByb3Blcmx5IHJlc3RvcmUgUEhZIGludGVycnVwdCBjb25maWd1cmF0aW9ucyB3aGVuIGRldGFjaGluZyBvciBmYWlsaW5nIHRvIGF0dGFjaCBhIGdlbmVyaWMgUEhZLCBhbmQgZW5zdXJlcyBwaHlsaW5rX2NsZWFyX3BoeWRldiBpcyBjYWxsZWQgdG8gY2xlYW5seSBkZXRhY2ggYW5kIHJlc2V0IHN0YXRlIGlmIHBoeWxpbmtfYnJpbmd1cF9waHkgZmFpbHMuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHJlYWNoYWJsZSBuZXR3b3JrIFBIWSBzZXR1cC90ZWFyZG93biBsb2dpYyB1c2VkIGJ5IGVtdWxhdGVkIG5ldHdvcmsgYWRhcHRlcnMgKGUuZy4gVVNCIGV0aGVybmV0IGFkYXB0ZXJzIGFuZCBEU0EgbG9vcCBkZXZpY2VzKSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVCYjMzQ7LAogICAgJiMzNDtORVRERVZJQ0VTJiMzNDssCiAgICAmIzM0O1BIWUxJQiYjMzQ7LAogICAgJiMzNDtQSFlMSU5LJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGh5X2F0dGFjaF9kaXJlY3QmIzM0OywKICAgICYjMzQ7cGh5X2RldGFjaCYjMzQ7LAogICAgJiMzNDtwaHlsaW5rX2Nvbm5lY3RfcGh5JiMzNDssCiAgICAmIzM0O3BoeWxpbmtfZGlzY29ubmVjdF9waHkmIzM0OywKICAgICYjMzQ7cGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7cGh5bGlua19vZl9waHlfY29ubmVjdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFBIWSBsaWJyYXJ5IGFuZCBwaHlsaW5rIHN1YnN5c3RlbSBsb2dpYyBpbiBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGFuZCBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jLiBJdCBpbnRyb2R1Y2VzIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEgdG8gcHJvcGVybHkgcmVzdG9yZSBQSFkgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb25zIHdoZW4gZGV0YWNoaW5nIG9yIGZhaWxpbmcgdG8gYXR0YWNoIGEgZ2VuZXJpYyBQSFksIGFuZCBlbnN1cmVzIHBoeWxpbmtfY2xlYXJfcGh5ZGV2IGlzIGNhbGxlZCB0byBjbGVhbmx5IGRldGFjaCBhbmQgcmVzZXQgc3RhdGUgaWYgcGh5bGlua19icmluZ3VwX3BoeSBmYWlscy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgcmVhY2hhYmxlIG5ldHdvcmsgUEhZIHNldHVwL3RlYXJkb3duIGxvZ2ljIHVzZWQgYnkgZW11bGF0ZWQgbmV0d29yayBhZGFwdGVycyAoZS5nLiBVU0IgZXRoZXJuZXQgYWRhcHRlcnMgYW5kIERTQSBsb29wIGRldmljZXMpIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6NTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAyMTo1NDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4zbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBzdGF0ZSBjbGVhbnVwIGFuZCBJUlEgcmVzdG9yYXRpb24gaW4gUEhZIGFuZCBwaHlsaW5rIGRyaXZlciBsaWZlY3ljbGVzIChzcGVjaWZpY2FsbHkgcmVzdG9yaW5nIHBoeWRldi1cdTAwM2VpcnEgdXBvbiBnZW5lcmljIFBIWSBkcml2ZXIgZGV0YWNoL2F0dGFjaCBmYWlsdXJlIGFuZCBjbGVhcmluZyBwbC1cdTAwM2VwaHlkZXYgb24gcGh5bGlua19icmluZ3VwX3BoeSBmYWlsdXJlKS4gXG5cblRoZXNlIGNoYW5nZXMgaW52b2x2ZSBtYW5hZ2luZyBvYmplY3QgbGlmZWN5Y2xlcywgcmVzZXR0aW5nIGludGVybmFsIHBvaW50ZXJzIHRvIE5VTEwsIGFuZCByZXNldHRpbmcgYm9vbGVhbiBmbGFncy4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgcmVhZHMsIHBhZGRpbmcgbGVha3MsIG9yIHVzZXItc3BhY2UgY29waWVzIChjb3B5X3RvX3VzZXIvbmV0bGluaykgYXJlIGludHJvZHVjZWQgb3IgbW9kaWZpZWQuIEFueSBsaWZlY3ljbGUgb3IgZGFuZ2xpbmcgcG9pbnRlciBpc3N1ZXMgaW4gdGhpcyBjb2RlIHBhdGggZmFsbCB1bmRlciBLQVNBTiAodXNlLWFmdGVyLWZyZWUgLyBpbnZhbGlkIGFjY2Vzcykgb3Igc3RhbmRhcmQga2VybmVsIGFzc2VydGlvbnMvTE9DS0RFUCwgbWFraW5nIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gdW5uZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDljOTkyMzVjNzg0ZDZjN2RiZjY0M2M4NWRiODYxOTU1MDE0YTYyYTQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IEF1ZyAyNyAyMTozNTo1MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCmluZGV4IDk0YjJlODVlMDBhMzcuLmJlNGMzNWRiOGRlOTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwpAQCAtMTczNCw2ICYjNDM7MTczNCwxOCBAQCBzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KQogCXJldHVybiBwaHlkcnYtJmd0O2NvbmZpZ19pbnRyICZhbXA7JmFtcDsgcGh5ZHJ2LSZndDtoYW5kbGVfaW50ZXJydXB0OwogfQogCiYjNDM7LyogR2l2ZSBiYWNrIHRoZSBpbnRlcnJ1cHQgcGh5X3Byb2JlKCkgcGFya2VkIHdoZW4gYSBkcml2ZXIgd2l0aCBubyBpbnRlcnJ1cHQKJiM0MzsgKiBjYWxsYmFja3MgYm91bmQuIG1kaW9idXNfYWxsb2MoKSBkZWZhdWx0cyBidXMtJmd0O2lycVtdIHRvIFBIWV9QT0xMIGFuZCB0aGUKJiM0MzsgKiBiaW5kIGN5Y2xlIGRvZXMgbm90IHRvdWNoIHRoZSB0YWJsZSwgc28gd2hhdGV2ZXIgdGhlIGJ1cyByZWNvcmRlZCB0aGVyZQomIzQzOyAqIHN0aWxsIHN0YW5kcy4gT25seSB0aGUgcGFya2luZyBpcyB1bmRvbmU6IGFueSBvdGhlciB2YWx1ZSB0aGUgUEhZIGNhcnJpZXMKJiM0MzsgKiB3YXMgcHV0IHRoZXJlIGJ5IHNvbWVvbmUgZWxzZS4KJiM0MzsgKi8KJiM0MztzdGF0aWMgdm9pZCBwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpCiYjNDM7ewomIzQzOwlpZiAocGh5ZGV2LSZndDtpcnEgPT0gUEhZX1BPTEwpCiYjNDM7CQlwaHlkZXYtJmd0O2lycSA9IHBoeWRldi0mZ3Q7bWRpby5idXMtJmd0O2lycVtwaHlkZXYtJmd0O21kaW8uYWRkcl07CiYjNDM7fQomIzQzOwogLyoqCiAgKiBwaHlfYXR0YWNoX2RpcmVjdCAtIGF0dGFjaCBhIG5ldHdvcmsgZGV2aWNlIHRvIGEgZ2l2ZW4gUEhZIGRldmljZSBwb2ludGVyCiAgKiBAZGV2OiBuZXR3b3JrIGRldmljZSB0byBhdHRhY2gKQEAgLTE4OTYsNiAmIzQzOzE5MDgsNyBAQCBpbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwKIAogZXJyb3JfbW9kdWxlX3B1dDoKIAltb2R1bGVfcHV0KGQtJmd0O2RyaXZlci0mZ3Q7b3duZXIpOwomIzQzOwlwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHBoeWRldik7CiAJcGh5ZGV2LSZndDtpc19nZW5waHlfZHJpdmVuID0gMDsKIAlkLSZndDtkcml2ZXIgPSBOVUxMOwogZXJyb3JfcHV0X2RldmljZToKQEAgLTE5NjUsNiAmIzQzOzE5NzgsNyBAQCB2b2lkIHBoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldikKIAkgKiByZWFsIGRyaXZlciBjb3VsZCBiZSBsb2FkZWQKIAkgKi8KIAlpZiAocGh5ZGV2LSZndDtpc19nZW5waHlfZHJpdmVuKSB7CiYjNDM7CQlwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHBoeWRldik7CiAJCWRldmljZV9yZWxlYXNlX2RyaXZlcigmYW1wO3BoeWRldi0mZ3Q7bWRpby5kZXYpOwogCQlwaHlkZXYtJmd0O2lzX2dlbnBoeV9kcml2ZW4gPSAwOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jCmluZGV4IDViOGU5NTY5MDJmYjUuLmE1NWU0YTY0MDI4ZmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYwpAQCAtMjA4Myw2ICYjNDM7MjA4MywxOCBAQCBzdGF0aWMgaW50IHBoeWxpbmtfdmFsaWRhdGVfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSwKIAlyZXR1cm4gcGh5bGlua192YWxpZGF0ZShwbCwgc3VwcG9ydGVkLCBzdGF0ZSk7CiB9CiAKJiM0MzsvKiBEaXNhc3NvY2lhdGUgQHBoeSBmcm9tIEBwbC4gQ2FsbGVyIG11c3QgaG9sZCBwbC0mZ3Q7cGh5ZGV2X211dGV4LiAqLwomIzQzO3N0YXRpYyB2b2lkIHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSkKJiM0Mzt7CiYjNDM7CW11dGV4X2xvY2soJmFtcDtwaHktJmd0O2xvY2spOwomIzQzOwltdXRleF9sb2NrKCZhbXA7cGwtJmd0O3N0YXRlX211dGV4KTsKJiM0MzsJcGwtJmd0O3BoeWRldiA9IE5VTEw7CiYjNDM7CXBsLSZndDtwaHlfZW5hYmxlX3R4X2xwaSA9IGZhbHNlOwomIzQzOwlwbC0mZ3Q7bWFjX3R4X2Nsa19zdG9wID0gZmFsc2U7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3BsLSZndDtzdGF0ZV9tdXRleCk7CiYjNDM7CW11dGV4X3VubG9jaygmYW1wO3BoeS0mZ3Q7bG9jayk7CiYjNDM7fQomIzQzOwogc3RhdGljIGludCBwaHlsaW5rX2JyaW5ndXBfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSwKIAkJCSAgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKQogewpAQCAtMjE5Nyw2ICYjNDM7MjIwOSwxMiBAQCBzdGF0aWMgaW50IHBoeWxpbmtfYnJpbmd1cF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LAogCWlmIChyZXQgPT0gMCAmYW1wOyZhbXA7IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5KSkKIAkJcGh5X3JlcXVlc3RfaW50ZXJydXB0KHBoeSk7CiAKJiM0MzsJaWYgKHJldCkgewomIzQzOwkJbXV0ZXhfbG9jaygmYW1wO3BsLSZndDtwaHlkZXZfbXV0ZXgpOwomIzQzOwkJcGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSk7CiYjNDM7CQltdXRleF91bmxvY2soJmFtcDtwbC0mZ3Q7cGh5ZGV2X211dGV4KTsKJiM0MzsJfQomIzQzOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTIzNDcsMTUgJiM0MzsyMzY1LDggQEAgdm9pZCBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCkKIAogCW11dGV4X2xvY2soJmFtcDtwbC0mZ3Q7cGh5ZGV2X211dGV4KTsKIAlwaHkgPSBwbC0mZ3Q7cGh5ZGV2OwotCWlmIChwaHkpIHsKLQkJbXV0ZXhfbG9jaygmYW1wO3BoeS0mZ3Q7bG9jayk7Ci0JCW11dGV4X2xvY2soJmFtcDtwbC0mZ3Q7c3RhdGVfbXV0ZXgpOwotCQlwbC0mZ3Q7cGh5ZGV2ID0gTlVMTDsKLQkJcGwtJmd0O3BoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7Ci0JCXBsLSZndDttYWNfdHhfY2xrX3N0b3AgPSBmYWxzZTsKLQkJbXV0ZXhfdW5sb2NrKCZhbXA7cGwtJmd0O3N0YXRlX211dGV4KTsKLQkJbXV0ZXhfdW5sb2NrKCZhbXA7cGh5LSZndDtsb2NrKTsKLQl9CiYjNDM7CWlmIChwaHkpCiYjNDM7CQlwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTsKIAltdXRleF91bmxvY2soJmFtcDtwbC0mZ3Q7cGh5ZGV2X211dGV4KTsKIAogCWlmIChwaHkpIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMTYKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQSFkgRHJpdmVyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBiZWluZyBjaGFuZ2VkIGluIHRoZSBQSFkgZHJpdmVyLiBGaXJzdCwgSSBzZWUgbW9kaWZpY2F0aW9ucyBpbiBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AuIFNwZWNpZmljYWxseSwgdGhlcmUmIzM5O3MgYSBuZXcgZnVuY3Rpb24sIGBwaHlfcmVzdG9yZV9nZW5waHlfaXJxKClgLiAgVGhlIGNvZGUgc25pcHBldCB0aGVyZSBsb29rcyBsaWtlIGl0JiMzOTtzIHRyeWluZyB0byByZS1lc3RhYmxpc2ggdGhlIGludGVycnVwdCBjb25maWd1cmF0aW9uIGZvciBhIFBIWSBkZXZpY2UuICBJdCBzZWVtcyB0aGF0IGlmIHRoZSBpbnRlcnJ1cHQgbW9kZSAoYHBoeWRldi0mZ3Q7aXJxYCkgaXMgc2V0IHRvIGBQSFlfUE9MTGAsIGl0JiMzOTtzIHJlc3RvcmluZyBpdCB0byB0aGUgZGVmYXVsdCBpbnRlcnJ1cHQgc2V0dGluZywgbGlrZWx5IGRlcml2ZWQgZnJvbSB0aGUgTURJTyBidXMmIzM5O3MgSVJRIGluZm9ybWF0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCBpbiBlcnJvciBoYW5kbGluZyBwYXRocyB3aXRoaW4gYHBoeV9hdHRhY2hfZGlyZWN0YCBhbmQgZHVyaW5nIGBwaHlfZGV0YWNoYC4gVGhpcyB0ZWxscyBtZSB3ZSYjMzk7cmUgbG9va2luZyBhdCBhIHBvdGVudGlhbCBmaXggZm9yIGludGVycnVwdCBoYW5kbGluZyBkdXJpbmcgUEhZIGF0dGFjaG1lbnQgb3IgZGV0YWNobWVudCwgd2hpY2ggbWlnaHQgYmUgY3JpdGljYWwgZm9yIHJvYnVzdCBuZXR3b3JrIGRldmljZSBvcGVyYXRpb24uCgpOZXh0LCBJJiMzOTttIHNlZWluZyBjaGFuZ2VzIGluIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYC4gIFRoZXJlJiMzOTtzIGEgbmV3IGZ1bmN0aW9uLCBgcGh5bGlua19jbGVhcl9waHlkZXYoKWAuIFRoZSBjb2RlIGhlcmUgcmVzZXRzIHNldmVyYWwgZmllbGRzIHJlbGF0ZWQgdG8gdGhlIFBIWSBkZXZpY2Ugd2l0aGluIGEgYHBoeWxpbmtgIHN0cnVjdHVyZS4gVGhpcyBpbmNsdWRlcyBzZXR0aW5nIGBwbC0mZ3Q7cGh5ZGV2YCB0byBgTlVMTGAsIGFsb25nIHdpdGggY2xlYXJpbmcgYHBoeV9lbmFibGVfdHhfbHBpYCBhbmQgYG1hY190eF9jbGtfc3RvcGAuIFRoaXMgc21lbGxzIGxpa2UgcHJvcGVyIFBIWSBkZXZpY2UgY2xlYW51cCwgcHJvYmFibHkgb24gZGlzY29ubmVjdGlvbiBvciBpbiBlcnJvciBzY2VuYXJpb3MuIEl0IGxvb2tzIGxpa2UgYHBoeWxpbmtfY2xlYXJfcGh5ZGV2YCBpcyBiZWluZyBjYWxsZWQgaW4gYHBoeWxpbmtfYnJpbmd1cF9waHlgIGFzIHBhcnQgb2YgZXJyb3IgaGFuZGxpbmcsIGltcGx5aW5nIHRoYXQgaWYgdGhlIFBIWSBpbml0aWFsaXphdGlvbiBmYWlscywgdGhlIGxpbmsmIzM5O3MgUEhZIGRldmljZSBwb2ludGVyIGdldHMgY2xlYXJlZC4gQWxzbywgaXQgaGFzIGJlZW4gaW50cm9kdWNlZCBpbnRvIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YCBhcyB3ZWxsLiBUaGlzIG1ha2VzIHNlbnNlOyBpdCYjMzk7cyBjbGVhbiBhbmQgY29uc2lzdGVudC4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxhcmdlciBjb250ZXh0LiBJJiMzOTtsbCB1c2UgYHJlYWQtZmlsZWAgb3IgYGdyZXBwZXJgIHRvIGZpbmQgdGhlIGNhbGxpbmcgc2l0ZXMgb2YgYHBoeV9hdHRhY2hfZGlyZWN0YCwgYHBoeV9kZXRhY2hgLCBgcGh5bGlua19icmluZ3VwX3BoeWAgYW5kIGBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5YCB0byBncmFzcCBob3cgdGhlc2UgZnVuY3Rpb25zIGZpdCBpbnRvIHRoZSBvdmVyYWxsIFBIWSBpbml0aWFsaXphdGlvbiBhbmQgdGVhcmRvd24gc2VxdWVuY2UuIFRoaXMgd2lsbCByZXZlYWwgdGhlIG1vdGl2YXRpb25zIG9mIHRoZSBwYXRjaCBhbmQgd2hlcmUgdGhlIHByb2JsZW0gbWlnaHQgaGF2ZSBleGlzdGVkLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgdGhlIGludGVycnVwdCByZXN0b3JhdGlvbiBhbmQgUEhZIGRldmljZSBjbGVhcmluZyBpbnRlcmFjdCwgcGFydGljdWxhcmx5IGluIGVycm9yIGNhc2VzLiBMZXQgbWUgZGlnIGludG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZGV0ZXJtaW5lIGhvdyB0aGlzIGFkZHJlc3NlcyBhIHBhcnRpY3VsYXIgZmFpbHVyZSBvciByYWNlIGNvbmRpdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjcgMjE6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTcyNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNzI1Olx0XG4xNzI2Olx0XHRpZiAoIXJldCBcdTAwMjZcdTAwMjYgcGh5ZGV2LVx1MDAzZXNmcF9idXMpXG4xNzI3Olx0XHRcdHJldCA9IHBoeV9zZXR1cF9zZnBfcG9ydChwaHlkZXYpO1xuMTcyODpcdFxuMTcyOTpcdFx0cmV0dXJuIHJldDtcbjE3MzA6XHR9XG4xNzMxOlx0XG4xNzMyOlx0c3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydilcbjE3MzM6XHR7XG4xNzM0Olx0XHRyZXR1cm4gcGh5ZHJ2LVx1MDAzZWNvbmZpZ19pbnRyIFx1MDAyNlx1MDAyNiBwaHlkcnYtXHUwMDNlaGFuZGxlX2ludGVycnVwdDtcbjE3MzU6XHR9XG4xNzM2Olx0XG4xNzM3Olx0LyogR2l2ZSBiYWNrIHRoZSBpbnRlcnJ1cHQgcGh5X3Byb2JlKCkgcGFya2VkIHdoZW4gYSBkcml2ZXIgd2l0aCBubyBpbnRlcnJ1cHRcbjE3Mzg6XHQgKiBjYWxsYmFja3MgYm91bmQuIG1kaW9idXNfYWxsb2MoKSBkZWZhdWx0cyBidXMtXHUwMDNlaXJxW10gdG8gUEhZX1BPTEwgYW5kIHRoZVxuMTczOTpcdCAqIGJpbmQgY3ljbGUgZG9lcyBub3QgdG91Y2ggdGhlIHRhYmxlLCBzbyB3aGF0ZXZlciB0aGUgYnVzIHJlY29yZGVkIHRoZXJlXG4xNzQwOlx0ICogc3RpbGwgc3RhbmRzLiBPbmx5IHRoZSBwYXJraW5nIGlzIHVuZG9uZTogYW55IG90aGVyIHZhbHVlIHRoZSBQSFkgY2Fycmllc1xuMTc0MTpcdCAqIHdhcyBwdXQgdGhlcmUgYnkgc29tZW9uZSBlbHNlLlxuMTc0MjpcdCAqL1xuMTc0MzpcdHN0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbjE3NDQ6XHR7XG4xNzQ1Olx0XHRpZiAocGh5ZGV2LVx1MDAzZWlycSA9PSBQSFlfUE9MTClcbjE3NDY6XHRcdFx0cGh5ZGV2LVx1MDAzZWlycSA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2VpcnFbcGh5ZGV2LVx1MDAzZW1kaW8uYWRkcl07XG4xNzQ3Olx0fVxuMTc0ODpcdFxuMTc0OTpcdC8qKlxuMTc1MDpcdCAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcbjE3NTE6XHQgKiBAZGV2OiBuZXR3b3JrIGRldmljZSB0byBhdHRhY2hcbjE3NTI6XHQgKiBAcGh5ZGV2OiBQb2ludGVyIHRvIHBoeV9kZXZpY2UgdG8gYXR0YWNoXG4xNzUzOlx0ICogQGZsYWdzOiBQSFkgZGV2aWNlJiMzOTtzIGRldl9mbGFnc1xuMTc1NDpcdCAqIEBpbnRlcmZhY2U6IFBIWSBkZXZpY2UmIzM5O3MgaW50ZXJmYWNlXG4xNzU1Olx0ICpcbjE3NTY6XHQgKiBEZXNjcmlwdGlvbjogQ2FsbGVkIGJ5IGRyaXZlcnMgdG8gYXR0YWNoIHRvIGEgcGFydGljdWxhciBQSFlcbjE3NTc6XHQgKiAgICAgZGV2aWNlLiBUaGUgcGh5X2RldmljZSBpcyBmb3VuZCwgYW5kIHByb3Blcmx5IGhvb2tlZCB1cFxuMTc1ODpcdCAqICAgICB0byB0aGUgcGh5X2RyaXZlci4gIElmIG5vIGRyaXZlciBpcyBhdHRhY2hlZCwgdGhlbiBhXG4xNzU5Olx0ICogICAgIGdlbmVyaWMgZHJpdmVyIGlzIHVzZWQuICBUaGUgcGh5X2RldmljZSBpcyBnaXZlbiBhIHB0ciB0b1xuMTc2MDpcdCAqICAgICB0aGUgYXR0YWNoaW5nIGRldmljZSwgYW5kIGdpdmVuIGEgY2FsbGJhY2sgZm9yIGxpbmsgc3RhdHVzXG4xNzYxOlx0ICogICAgIGNoYW5nZS4gIFRoZSBwaHlfZGV2aWNlIGlzIHJldHVybmVkIHRvIHRoZSBhdHRhY2hpbmcgZHJpdmVyLlxuMTc2MjpcdCAqICAgICBUaGlzIGZ1bmN0aW9uIHRha2VzIGEgcmVmZXJlbmNlIG9uIHRoZSBwaHkgZGV2aWNlLlxuMTc2MzpcdCAqL1xuMTc2NDpcdGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAyMTo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NjYzCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsIE5ldHdvcmsgTGluayBJc3N1ZSoqCgpPa2F5LCBzbyB3ZSYjMzk7dmUgZ290IGEgbmV0d29ya2luZyBwcm9ibGVtLiBCYXNlZCBvbiB0aGUgY2x1ZXMsIEkgbmVlZCB0byB6b29tIGluIG9uIGEgc3BlY2lmaWMgYXJlYSB3aXRoaW4gdGhlIGRyaXZlci4gTXkgaW5pdGlhbCBpbnN0aW5jdCBwb2ludHMgbWUgdG93YXJkcyBgcGh5bGluay5jYC4gR2l2ZW4gdGhlIHNjb3BlIG9mIHRoZSBwb3RlbnRpYWwgcHJvYmxlbSwgSSB0aGluayB0aGUgcmVnaW9uIGFyb3VuZCBsaW5lcyAyMDgwIHRvIDIyMjAgaXMgYSBnb29kIHBsYWNlIHRvIHN0YXJ0LiBUaGF0IHNlY3Rpb24gb2Z0ZW4gZGVhbHMgd2l0aCBbICppbnNlcnQgc3BlY2lmaWMgZnVuY3Rpb24gb3IgYXJlYSB0aGUgZXhwZXJ0IHdvdWxkIGtub3cgYmFzZWQgb24gYHBoeWxpbmsuY2AmIzM5O3MgZ2VuZXJhbCByb2xlLCBlLmcuLCAmIzM0O2xpbmsgc3RhdGUgZGV0ZWN0aW9uIGFuZCBQSFkgaW50ZXJhY3Rpb24sIG9yIHBlcmhhcHMgaW5pdGlhbCBsaW5rIG5lZ290aWF0aW9uLCBvciBtYXliZSBldmVuIGVycm9yIGhhbmRsaW5nIHJlbGF0ZWQgdG8gc3BlZWQgYW5kIGR1cGxleCBtaXNtYXRjaGVzLCBvciByZWdpc3RlciByZWFkcy93cml0ZXMgcmVsYXRlZCB0byBhdXRvbmVnb3RpYXRpb24mIzM0OypdLiBJJiMzOTtsbCBuZWVkIHRvIGNhcmVmdWxseSBleGFtaW5lIHRoZSBjb2RlIGluIHRoYXQgcmFuZ2UsIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gWyAqbGlzdCBzcGVjaWZpYyB0aGluZ3MgdGhhdCB0aGUgZXhwZXJ0IHdvdWxkIGxvb2sgZm9yLCBlLmcuICYjMzQ7ZXJyb3IgY29uZGl0aW9ucywgcmV0dXJuIHZhbHVlcywgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMsIGJ1ZmZlciBoYW5kbGluZyBvciBwb3NzaWJseSBpbnRlcnJ1cHQgaGFuZGxpbmcsIG9yIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIG1vZHVsZXMsIGV0Yy4mIzM0OyogXS4gSSYjMzk7bGwgc3RhcnQgYnkgbWFraW5nIHN1cmUgdGhlcmUmIzM5O3Mgbm8gb2J2aW91cyBsb2dpYyBmbGF3IGluIHRoYXQgc2VjdGlvbiwgdGhlbiBtYXliZSBJJiMzOTtsbCBkaWcgZG93biBpbnRvIHRoZSBpbnRlcmFjdGlvbnMgaWYgSSBuZWVkIHRvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNyAyMTo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMTcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzIxNzA6XHRcdFx0cGh5bGlua19jYXBzX3RvX2xpbmttb2RlcyhwbC1cdTAwM2VzdXBwb3J0ZWRfbHBpLFxuMjE3MTpcdFx0XHRcdFx0XHQgIHBsLVx1MDAzZWNvbmZpZy1cdTAwM2VscGlfY2FwYWJpbGl0aWVzKTtcbjIxNzI6XHRcbjIxNzM6XHRcdFx0LyogUmVzdHJpY3QgdGhlIFBIWXMgRUVFIHN1cHBvcnQvYWR2ZXJ0aXNlbWVudCB0byB0aGUgbW9kZXNcbjIxNzQ6XHRcdFx0ICogdGhhdCB0aGUgTUFDIHN1cHBvcnRzLlxuMjE3NTpcdFx0XHQgKi9cbjIxNzY6XHRcdFx0bGlua21vZGVfYW5kKHBoeS1cdTAwM2VhZHZlcnRpc2luZ19lZWUsIHBoeS1cdTAwM2VhZHZlcnRpc2luZ19lZWUsXG4yMTc3Olx0XHRcdFx0ICAgICBwbC1cdTAwM2VzdXBwb3J0ZWRfbHBpKTtcbjIxNzg6XHRcdH0gZWxzZSBpZiAocGwtXHUwMDNlbWFjX3N1cHBvcnRzX2VlZV9vcHMpIHtcbjIxNzk6XHRcdFx0LyogTUFDIHN1cHBvcnRzIHBoeWxpbmsgRUVFLCBidXQgd2FudHMgRUVFIGFsd2F5cyBkaXNhYmxlZC4gKi9cbjIxODA6XHRcdFx0cGh5X2Rpc2FibGVfZWVlKHBoeSk7XG4yMTgxOlx0XHR9XG4yMTgyOlx0XG4yMTgzOlx0XHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuMjE4NDpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeS1cdTAwM2Vsb2NrKTtcbjIxODU6XHRcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuMjE4NjpcdFxuMjE4NzpcdFx0cGh5bGlua19kYmcocGwsXG4yMTg4Olx0XHRcdCAgICBcJiMzNDtwaHk6ICVzIHNldHRpbmcgc3VwcG9ydGVkICUqcGIgYWR2ZXJ0aXNpbmcgJSpwYlxcblwmIzM0OyxcbjIxODk6XHRcdFx0ICAgIHBoeV9tb2RlcyhpbnRlcmZhY2UpLFxuMjE5MDpcdFx0XHQgICAgX19FVEhUT09MX0xJTktfTU9ERV9NQVNLX05CSVRTLCBwbC1cdTAwM2VzdXBwb3J0ZWQsXG4yMTkxOlx0XHRcdCAgICBfX0VUSFRPT0xfTElOS19NT0RFX01BU0tfTkJJVFMsIHBoeS1cdTAwM2VhZHZlcnRpc2luZyk7XG4yMTkyOlx0XG4yMTkzOlx0XHRpZiAocGwtXHUwMDNlY29uZmlnLVx1MDAzZW1hY19tYW5hZ2VkX3BtKVxuMjE5NDpcdFx0XHRwaHktXHUwMDNlbWFjX21hbmFnZWRfcG0gPSB0cnVlO1xuMjE5NTpcdFxuMjE5NjpcdFx0LyogQWxsb3cgdGhlIE1BQyB0byBzdG9wIGl0cyBjbG9jayBpZiB0aGUgUEhZIGhhcyB0aGUgY2FwYWJpbGl0eSAqL1xuMjE5NzpcdFx0cGwtXHUwMDNlbWFjX3R4X2Nsa19zdG9wID0gcGh5X2VlZV90eF9jbG9ja19zdG9wX2NhcGFibGUocGh5KSBcdTAwM2UgMDtcbjIxOTg6XHRcbjIxOTk6XHRcdGlmIChwbC1cdTAwM2VtYWNfc3VwcG9ydHNfZWVlX29wcykge1xuMjIwMDpcdFx0XHQvKiBFeHBsaWNpdGx5IGNvbmZpZ3VyZSB3aGV0aGVyIHRoZSBQSFkgaXMgYWxsb3dlZCB0byBzdG9wIGl0JiMzOTtzXG4yMjAxOlx0XHRcdCAqIHJlY2VpdmUgY2xvY2suXG4yMjAyOlx0XHRcdCAqL1xuMjIwMzpcdFx0XHRyZXQgPSBwaHlfZWVlX3J4X2Nsb2NrX3N0b3AocGh5LFxuMjIwNDpcdFx0XHRcdFx0XHQgICAgcGwtXHUwMDNlY29uZmlnLVx1MDAzZWVlZV9yeF9jbGtfc3RvcF9lbmFibGUpO1xuMjIwNTpcdFx0XHRpZiAocmV0ID09IC1FT1BOT1RTVVBQKVxuMjIwNjpcdFx0XHRcdHJldCA9IDA7XG4yMjA3Olx0XHR9XG4yMjA4Olx0XG4yMjA5Olx0XHRpZiAocmV0ID09IDAgXHUwMDI2XHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5KSlcbjIyMTA6XHRcdFx0cGh5X3JlcXVlc3RfaW50ZXJydXB0KHBoeSk7XG4yMjExOlx0XG4yMjEyOlx0XHRpZiAocmV0KSB7XG4yMjEzOlx0XHRcdG11dGV4X2xvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbjIyMTQ6XHRcdFx0cGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSk7XG4yMjE1Olx0XHRcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuMjIxNjpcdFx0fVxuMjIxNzpcdFxuMjIxODpcdFx0cmV0dXJuIHJldDtcbjIyMTk6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU3ODQKCQkJCQkJCW91dHB1dDogMTcyCgkJCQkJCQl0aG91Z2h0czogNjYxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIEtNU0FOIEltcGxpY2F0aW9ucyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgcGF0Y2gmIzM5O3MgYWN0aW9ucyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgcG90ZW50aWFsIEtNU0FOIChLZXJuZWwgTWVtb3J5IFNhbml0aXplcikgdnVsbmVyYWJpbGl0aWVzLiBJJiMzOTttIGZvY3VzaW5nIHNwZWNpZmljYWxseSBvbiB0aGUgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvcm1hdGlvbiBsZWFrcywgcmVtZW1iZXJpbmcgdGhhdCBLQVNBTiAoS2VybmVsIEFkZHJlc3MgU2FuaXRpemVyKSBjb3ZlcnMgdGhlIG1vcmUgdHlwaWNhbCBtZW1vcnkgbGlmZWN5Y2xlIGlzc3VlcyBsaWtlIHVzZS1hZnRlci1mcmVlIGFuZCBkYW5nbGluZyBwb2ludGVycy4KCkZpcnN0LCBJIGxvb2tlZCBhdCB0aGUgZnVuY3Rpb25zIGludm9sdmVkLiBgcGh5X3Jlc3RvcmVfZ2VucGh5X2lycWAgaXMgaW50ZXJlc3RpbmcuIEl0IHJlc3RvcmVzIGBwaHlkZXYtJmd0O2lycWAgZnJvbSB0aGUgTURJTyBidXMmIzM5O3MgYGJ1cy0mZ3Q7aXJxYCBhcnJheS4gVGhpcyBoYXBwZW5zIGR1cmluZyBkZXRhY2ggb3IgZmFpbHVyZS4gYHBoeWxpbmtfY2xlYXJfcGh5ZGV2YCBjbGVhbnMgdXAgc3RhdGUgcG9pbnRlcnMsIGVzcGVjaWFsbHkgd2hlbiBwaHlsaW5rIGJyaW5ndXAgZmFpbHMuCgpJIHRoZW4gd2VudCB0aHJvdWdoIHRoZSBLTVNBTiBjcml0ZXJpYSBpbiBteSBoZWFkOgoKMS4gICoqS2VybmVsIGRhdGEgZXhwb3NlZCB0byB1c2Vyc3BhY2U6KiogTm9wZS4gTm90aGluZyBoZXJlIGludm9sdmVzIGBjb3B5X3RvX3VzZXJgLCBgcHV0X3VzZXJgLCBuZXRsaW5rLCBpb2N0bCwgb3IgYW55IHVzZXItc3BhY2UgaW50ZXJhY3Rpb24uCjIuICAqKkNvbmRpdGlvbmFsIGxvZ2ljIG9uIHVuaW5pdGlhbGl6ZWQgZGF0YToqKiBOb3QgdGhhdCBJIGNhbiBzZWUuCjMuICAqKlVuaW5pdGlhbGl6ZWQgZGF0YSBzdHJ1Y3R1cmVzOioqIEkmIzM5O20gbm90IHNlZWluZyBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucyB0aGF0IHdvdWxkbiYjMzk7dCBoYXZlIGRlZmF1bHQgaW5pdGlhbGl6YXRpb24uCjQuICAqKkJvdW5kcyBjaGVja3MgZXhwb3NpbmcgdW5pbml0aWFsaXplZCBtZW1vcnk6KiogTm9wZS4KClNvLCBkaWdnaW5nIGRlZXBlciwgYGJ1cy0mZ3Q7aXJxYCBpcyBhbGxvY2F0ZWQgYW5kIGluaXRpYWxpemVkIGJ5IGBtZGlvYnVzX2FsbG9jKClgLiBTcGVjaWZpY2FsbHksIHRoZSBjb250ZW50cyBvZiB0aGUgYGJ1cy0mZ3Q7aXJxYCBhcnJheSBhcmUgaW5pdGlhbGl6ZWQgZWl0aGVyIHRvIFBIWV9QT0xMIG9yIHNwZWNpZmljIElSUSBudW1iZXJzLCBwcmV2ZW50aW5nIGFjY2lkZW50YWwgdXNlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBgcGh5bGlua19jbGVhcl9waHlkZXZgIHNldHMgZmllbGRzIHRvIE5VTEwgb3IgZmFsc2UsIHdoaWNoIGlzIHRoZSBjbGVhbnVwIHN0YWdlLiBUaGUgZXJyb3IgaGFuZGxpbmcgZW5zdXJlcyBgcGwtJmd0O3BoeWRldmAgaXMgc2V0IHRvIE5VTEwgb24gZmFpbHVyZSBpbiBgcGh5bGlua19icmluZ3VwX3BoeWAsIGVsaW1pbmF0aW5nIGEgZGFuZ2xpbmcgcG9pbnRlci4KCkNvbnNlcXVlbnRseSwgdGhpcyBzZWVtcyBsaWtlIHB1cmVseSBzdGF0ZSBjbGVhbnVwLCBsaWZlY3ljbGUgbWFuYWdlbWVudCwgYW5kIElSUSByZXN0b3JhdGlvbi4gS0FTQU4gaXMgdGhlIHJpZ2h0IHRvb2wgaGVyZSBmb3IgdXNlLWFmdGVyLWZyZWUgb3IgZGFuZ2xpbmcgcG9pbnRlcnMsIGFuZCBpdCB3aWxsIHBpY2sgdXAgdGhvc2UgaXNzdWVzLiBUaGlzIHBhdGNoLCBiYXNlZCBvbiBteSBhbmFseXNpcywgZG9lcyAqbm90KiBpbnRyb2R1Y2UgYW55IEtNU0FOIGNvbmNlcm5zLiBJIHNlZSBubyBhbGxvY2F0aW9uLCBjb3B5aW5nLCBvciBleHBvc3VyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4KCkZpbmFsbHksIGp1c3QgdG8gYmUgY29tcGxldGVseSBjbGVhciBpbiBteSByZWFzb25pbmcsIEkmIzM5O2xsIHNvbGlkaWZ5IHRoZSBjb21wYXJpc29uIG9mIEtBU0FOIGFuZCBLTVNBTi4gVGhpcyBwYXRjaCBmb2N1c2VzIG9uIGNsZWFuIGxpZmVjeWNsZSBtYW5hZ2VtZW50IHdpdGhpbiB0aGUga2VybmVsLCBtYWtpbmcgaXQgYSBLQVNBTiBpc3N1ZS4gS0FTQU4gd2lsbCBkZXRlY3QgZGFuZ2xpbmcgcG9pbnRlcnMgYW5kIHVzZS1hZnRlci1mcmVlIGlzc3VlcyBpbiB0aGUgcGh5bGluay9waHlfZGV2aWNlIGF0dGFjaC9kZXRhY2ggcGF0aHMuIEtNU0FOIGRlYWxzIHdpdGggdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgbGVha3MgKnRvIHVzZXIgc3BhY2UqLiBUaGlzIHBhdGNoIGRvZXNuJiMzOTt0IGludm9sdmUgYW55IG9mIHRoYXQuIFRoZSByZXN0b3Jpbmcgb2YgYHBoeWRldi0mZ3Q7aXJxYCB1c2VzIGRhdGEgZnJvbSBhIGJ1cyB0aGF0IGlzIGluaXRpYWxpemVkIGJ5IGBtZGlvYnVzX2FsbG9jKClgLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBhbGxvY2F0ZWQsIHJlYWQsIG9yIGNvcGllZCB0byB1c2VyIHNwYWNlLgoKVGhlcmVmb3JlLCBJJiMzOTttIGNvbmZpZGVudCBpbiBjYWxsaW5nIHRoaXMgYE5lZWRzS01TQU5gIGFzIGBmYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI3IDIxOjU4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHJlc3NlcyBzdGF0ZSBjbGVhbnVwIGFuZCBJUlEgcmVzdG9yYXRpb24gaW4gUEhZIGFuZCBwaHlsaW5rIGRyaXZlciBsaWZlY3ljbGVzIChzcGVjaWZpY2FsbHkgcmVzdG9yaW5nIHBoeWRldi1cdTAwM2VpcnEgdXBvbiBnZW5lcmljIFBIWSBkcml2ZXIgZGV0YWNoL2F0dGFjaCBmYWlsdXJlIGFuZCBjbGVhcmluZyBwbC1cdTAwM2VwaHlkZXYgb24gcGh5bGlua19icmluZ3VwX3BoeSBmYWlsdXJlKS4gXG5cblRoZXNlIGNoYW5nZXMgaW52b2x2ZSBtYW5hZ2luZyBvYmplY3QgbGlmZWN5Y2xlcywgcmVzZXR0aW5nIGludGVybmFsIHBvaW50ZXJzIHRvIE5VTEwsIGFuZCByZXNldHRpbmcgYm9vbGVhbiBmbGFncy4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgcmVhZHMsIHBhZGRpbmcgbGVha3MsIG9yIHVzZXItc3BhY2UgY29waWVzIChjb3B5X3RvX3VzZXIvbmV0bGluaykgYXJlIGludHJvZHVjZWQgb3IgbW9kaWZpZWQuIEFueSBsaWZlY3ljbGUgb3IgZGFuZ2xpbmcgcG9pbnRlciBpc3N1ZXMgaW4gdGhpcyBjb2RlIHBhdGggZmFsbCB1bmRlciBLQVNBTiAodXNlLWFmdGVyLWZyZWUgLyBpbnZhbGlkIGFjY2Vzcykgb3Igc3RhbmRhcmQga2VybmVsIGFzc2VydGlvbnMvTE9DS0RFUCwgbWFraW5nIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gdW5uZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRyZXNzZXMgc3RhdGUgY2xlYW51cCBhbmQgSVJRIHJlc3RvcmF0aW9uIGluIFBIWSBhbmQgcGh5bGluayBkcml2ZXIgbGlmZWN5Y2xlcyAoc3BlY2lmaWNhbGx5IHJlc3RvcmluZyBwaHlkZXYtXHUwMDNlaXJxIHVwb24gZ2VuZXJpYyBQSFkgZHJpdmVyIGRldGFjaC9hdHRhY2ggZmFpbHVyZSBhbmQgY2xlYXJpbmcgcGwtXHUwMDNlcGh5ZGV2IG9uIHBoeWxpbmtfYnJpbmd1cF9waHkgZmFpbHVyZSkuIFxuXG5UaGVzZSBjaGFuZ2VzIGludm9sdmUgbWFuYWdpbmcgb2JqZWN0IGxpZmVjeWNsZXMsIHJlc2V0dGluZyBpbnRlcm5hbCBwb2ludGVycyB0byBOVUxMLCBhbmQgcmVzZXR0aW5nIGJvb2xlYW4gZmxhZ3MuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHJlYWRzLCBwYWRkaW5nIGxlYWtzLCBvciB1c2VyLXNwYWNlIGNvcGllcyAoY29weV90b191c2VyL25ldGxpbmspIGFyZSBpbnRyb2R1Y2VkIG9yIG1vZGlmaWVkLiBBbnkgbGlmZWN5Y2xlIG9yIGRhbmdsaW5nIHBvaW50ZXIgaXNzdWVzIGluIHRoaXMgY29kZSBwYXRoIGZhbGwgdW5kZXIgS0FTQU4gKHVzZS1hZnRlci1mcmVlIC8gaW52YWxpZCBhY2Nlc3MpIG9yIHN0YW5kYXJkIGtlcm5lbCBhc3NlcnRpb25zL0xPQ0tERVAsIG1ha2luZyBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIHVubmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTozNTo1My4xMzc4MTEzNDdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzUzMDE0Njc2OTk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVFwiLFxuICAgIFwiTkVUREVWSUNFU1wiLFxuICAgIFwiUEhZTElCXCIsXG4gICAgXCJQSFlMSU5LXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5X2F0dGFjaF9kaXJlY3RcIixcbiAgICBcInBoeV9kZXRhY2hcIixcbiAgICBcInBoeWxpbmtfY29ubmVjdF9waHlcIixcbiAgICBcInBoeWxpbmtfZGlzY29ubmVjdF9waHlcIixcbiAgICBcInBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0XCIsXG4gICAgXCJwaHlsaW5rX29mX3BoeV9jb25uZWN0XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgc3RhdGUgY2xlYW51cCBhbmQgSVJRIHJlc3RvcmF0aW9uIGluIFBIWSBhbmQgcGh5bGluayBkcml2ZXIgbGlmZWN5Y2xlcyAoc3BlY2lmaWNhbGx5IHJlc3RvcmluZyBwaHlkZXYtXFx1MDAzZWlycSB1cG9uIGdlbmVyaWMgUEhZIGRyaXZlciBkZXRhY2gvYXR0YWNoIGZhaWx1cmUgYW5kIGNsZWFyaW5nIHBsLVxcdTAwM2VwaHlkZXYgb24gcGh5bGlua19icmluZ3VwX3BoeSBmYWlsdXJlKS4gXFxuXFxuVGhlc2UgY2hhbmdlcyBpbnZvbHZlIG1hbmFnaW5nIG9iamVjdCBsaWZlY3ljbGVzLCByZXNldHRpbmcgaW50ZXJuYWwgcG9pbnRlcnMgdG8gTlVMTCwgYW5kIHJlc2V0dGluZyBib29sZWFuIGZsYWdzLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCByZWFkcywgcGFkZGluZyBsZWFrcywgb3IgdXNlci1zcGFjZSBjb3BpZXMgKGNvcHlfdG9fdXNlci9uZXRsaW5rKSBhcmUgaW50cm9kdWNlZCBvciBtb2RpZmllZC4gQW55IGxpZmVjeWNsZSBvciBkYW5nbGluZyBwb2ludGVyIGlzc3VlcyBpbiB0aGlzIGNvZGUgcGF0aCBmYWxsIHVuZGVyIEtBU0FOICh1c2UtYWZ0ZXItZnJlZSAvIGludmFsaWQgYWNjZXNzKSBvciBzdGFuZGFyZCBrZXJuZWwgYXNzZXJ0aW9ucy9MT0NLREVQLCBtYWtpbmcgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiB1bm5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFBIWSBsaWJyYXJ5IGFuZCBwaHlsaW5rIHN1YnN5c3RlbSBsb2dpYyBpbiBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGFuZCBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jLiBJdCBpbnRyb2R1Y2VzIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEgdG8gcHJvcGVybHkgcmVzdG9yZSBQSFkgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb25zIHdoZW4gZGV0YWNoaW5nIG9yIGZhaWxpbmcgdG8gYXR0YWNoIGEgZ2VuZXJpYyBQSFksIGFuZCBlbnN1cmVzIHBoeWxpbmtfY2xlYXJfcGh5ZGV2IGlzIGNhbGxlZCB0byBjbGVhbmx5IGRldGFjaCBhbmQgcmVzZXQgc3RhdGUgaWYgcGh5bGlua19icmluZ3VwX3BoeSBmYWlscy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgcmVhY2hhYmxlIG5ldHdvcmsgUEhZIHNldHVwL3RlYXJkb3duIGxvZ2ljIHVzZWQgYnkgZW11bGF0ZWQgbmV0d29yayBhZGFwdGVycyAoZS5nLiBVU0IgZXRoZXJuZXQgYWRhcHRlcnMgYW5kIERTQSBsb29wIGRldmljZXMpIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMjE6MzU6NTMuMTM3ODE2NjI3WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MTM2MzEwODMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA5Yzk5MjM1Yzc4NGQ2YzdkYmY2NDNjODVkYjg2MTk1NTAxNGE2MmE0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDI3IDIxOjM1OjUxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXFxuaW5kZXggOTRiMmU4NWUwMGEzNy4uYmU0YzM1ZGI4ZGU5OCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXFxuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xcbkBAIC0xNzM0LDYgKzE3MzQsMTggQEAgc3RhdGljIGJvb2wgcGh5X2Rydl9zdXBwb3J0c19pcnEoY29uc3Qgc3RydWN0IHBoeV9kcml2ZXIgKnBoeWRydilcXG4gXFx0cmV0dXJuIHBoeWRydi1cXHUwMDNlY29uZmlnX2ludHIgXFx1MDAyNlxcdTAwMjYgcGh5ZHJ2LVxcdTAwM2VoYW5kbGVfaW50ZXJydXB0O1xcbiB9XFxuIFxcbisvKiBHaXZlIGJhY2sgdGhlIGludGVycnVwdCBwaHlfcHJvYmUoKSBwYXJrZWQgd2hlbiBhIGRyaXZlciB3aXRoIG5vIGludGVycnVwdFxcbisgKiBjYWxsYmFja3MgYm91bmQuIG1kaW9idXNfYWxsb2MoKSBkZWZhdWx0cyBidXMtXFx1MDAzZWlycVtdIHRvIFBIWV9QT0xMIGFuZCB0aGVcXG4rICogYmluZCBjeWNsZSBkb2VzIG5vdCB0b3VjaCB0aGUgdGFibGUsIHNvIHdoYXRldmVyIHRoZSBidXMgcmVjb3JkZWQgdGhlcmVcXG4rICogc3RpbGwgc3RhbmRzLiBPbmx5IHRoZSBwYXJraW5nIGlzIHVuZG9uZTogYW55IG90aGVyIHZhbHVlIHRoZSBQSFkgY2Fycmllc1xcbisgKiB3YXMgcHV0IHRoZXJlIGJ5IHNvbWVvbmUgZWxzZS5cXG4rICovXFxuK3N0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4re1xcbitcXHRpZiAocGh5ZGV2LVxcdTAwM2VpcnEgPT0gUEhZX1BPTEwpXFxuK1xcdFxcdHBoeWRldi1cXHUwMDNlaXJxID0gcGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cy1cXHUwMDNlaXJxW3BoeWRldi1cXHUwMDNlbWRpby5hZGRyXTtcXG4rfVxcbitcXG4gLyoqXFxuICAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcXG4gICogQGRldjogbmV0d29yayBkZXZpY2UgdG8gYXR0YWNoXFxuQEAgLTE4OTYsNiArMTkwOCw3IEBAIGludCBwaHlfYXR0YWNoX2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbiBcXG4gZXJyb3JfbW9kdWxlX3B1dDpcXG4gXFx0bW9kdWxlX3B1dChkLVxcdTAwM2Vkcml2ZXItXFx1MDAzZW93bmVyKTtcXG4rXFx0cGh5X3Jlc3RvcmVfZ2VucGh5X2lycShwaHlkZXYpO1xcbiBcXHRwaHlkZXYtXFx1MDAzZWlzX2dlbnBoeV9kcml2ZW4gPSAwO1xcbiBcXHRkLVxcdTAwM2Vkcml2ZXIgPSBOVUxMO1xcbiBlcnJvcl9wdXRfZGV2aWNlOlxcbkBAIC0xOTY1LDYgKzE5NzgsNyBAQCB2b2lkIHBoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4gXFx0ICogcmVhbCBkcml2ZXIgY291bGQgYmUgbG9hZGVkXFxuIFxcdCAqL1xcbiBcXHRpZiAocGh5ZGV2LVxcdTAwM2Vpc19nZW5waHlfZHJpdmVuKSB7XFxuK1xcdFxcdHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEocGh5ZGV2KTtcXG4gXFx0XFx0ZGV2aWNlX3JlbGVhc2VfZHJpdmVyKFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2KTtcXG4gXFx0XFx0cGh5ZGV2LVxcdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcXG4gXFx0fVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbmluZGV4IDViOGU5NTY5MDJmYjUuLmE1NWU0YTY0MDI4ZmYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcXG5AQCAtMjA4Myw2ICsyMDgzLDE4IEBAIHN0YXRpYyBpbnQgcGh5bGlua192YWxpZGF0ZV9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbiBcXHRyZXR1cm4gcGh5bGlua192YWxpZGF0ZShwbCwgc3VwcG9ydGVkLCBzdGF0ZSk7XFxuIH1cXG4gXFxuKy8qIERpc2Fzc29jaWF0ZSBAcGh5IGZyb20gQHBsLiBDYWxsZXIgbXVzdCBob2xkIHBsLVxcdTAwM2VwaHlkZXZfbXV0ZXguICovXFxuK3N0YXRpYyB2b2lkIHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcXG4re1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZwaHktXFx1MDAzZWxvY2spO1xcbitcXHRtdXRleF9sb2NrKFxcdTAwMjZwbC1cXHUwMDNlc3RhdGVfbXV0ZXgpO1xcbitcXHRwbC1cXHUwMDNlcGh5ZGV2ID0gTlVMTDtcXG4rXFx0cGwtXFx1MDAzZXBoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7XFxuK1xcdHBsLVxcdTAwM2VtYWNfdHhfY2xrX3N0b3AgPSBmYWxzZTtcXG4rXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwbC1cXHUwMDNlc3RhdGVfbXV0ZXgpO1xcbitcXHRtdXRleF91bmxvY2soXFx1MDAyNnBoeS1cXHUwMDNlbG9jayk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXFxuIFxcdFxcdFxcdCAgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbiB7XFxuQEAgLTIxOTcsNiArMjIwOSwxMiBAQCBzdGF0aWMgaW50IHBoeWxpbmtfYnJpbmd1cF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbiBcXHRpZiAocmV0ID09IDAgXFx1MDAyNlxcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHkpKVxcbiBcXHRcXHRwaHlfcmVxdWVzdF9pbnRlcnJ1cHQocGh5KTtcXG4gXFxuK1xcdGlmIChyZXQpIHtcXG4rXFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cGwtXFx1MDAzZXBoeWRldl9tdXRleCk7XFxuK1xcdFxcdHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpO1xcbitcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBsLVxcdTAwM2VwaHlkZXZfbXV0ZXgpO1xcbitcXHR9XFxuK1xcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbkBAIC0yMzQ3LDE1ICsyMzY1LDggQEAgdm9pZCBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHN0cnVjdCBwaHlsaW5rICpwbClcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNnBsLVxcdTAwM2VwaHlkZXZfbXV0ZXgpO1xcbiBcXHRwaHkgPSBwbC1cXHUwMDNlcGh5ZGV2O1xcbi1cXHRpZiAocGh5KSB7XFxuLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBoeS1cXHUwMDNlbG9jayk7XFxuLVxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBsLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuLVxcdFxcdHBsLVxcdTAwM2VwaHlkZXYgPSBOVUxMO1xcbi1cXHRcXHRwbC1cXHUwMDNlcGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTtcXG4tXFx0XFx0cGwtXFx1MDAzZW1hY190eF9jbGtfc3RvcCA9IGZhbHNlO1xcbi1cXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBsLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuLVxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2cGh5LVxcdTAwM2Vsb2NrKTtcXG4tXFx0fVxcbitcXHRpZiAocGh5KVxcbitcXHRcXHRwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTtcXG4gXFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwbC1cXHUwMDNlcGh5ZGV2X211dGV4KTtcXG4gXFxuIFxcdGlmIChwaHkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMjE6MzU6NTMuNzUyMTQxODAxWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoxMTQ1MjI5MzI4MTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVFwiLFxuICAgIFwiTkVUREVWSUNFU1wiLFxuICAgIFwiUEhZTElCXCIsXG4gICAgXCJQSFlMSU5LXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGh5X2F0dGFjaF9kaXJlY3RcIixcbiAgICBcInBoeV9kZXRhY2hcIixcbiAgICBcInBoeWxpbmtfY29ubmVjdF9waHlcIixcbiAgICBcInBoeWxpbmtfZGlzY29ubmVjdF9waHlcIixcbiAgICBcInBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0XCIsXG4gICAgXCJwaHlsaW5rX29mX3BoeV9jb25uZWN0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBQSFkgbGlicmFyeSBhbmQgcGh5bGluayBzdWJzeXN0ZW0gbG9naWMgaW4gZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyBhbmQgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy4gSXQgaW50cm9kdWNlcyBwaHlfcmVzdG9yZV9nZW5waHlfaXJxIHRvIHByb3Blcmx5IHJlc3RvcmUgUEhZIGludGVycnVwdCBjb25maWd1cmF0aW9ucyB3aGVuIGRldGFjaGluZyBvciBmYWlsaW5nIHRvIGF0dGFjaCBhIGdlbmVyaWMgUEhZLCBhbmQgZW5zdXJlcyBwaHlsaW5rX2NsZWFyX3BoeWRldiBpcyBjYWxsZWQgdG8gY2xlYW5seSBkZXRhY2ggYW5kIHJlc2V0IHN0YXRlIGlmIHBoeWxpbmtfYnJpbmd1cF9waHkgZmFpbHMuIFRoZXNlIGNoYW5nZXMgYWZmZWN0IHJlYWNoYWJsZSBuZXR3b3JrIFBIWSBzZXR1cC90ZWFyZG93biBsb2dpYyB1c2VkIGJ5IGVtdWxhdGVkIG5ldHdvcmsgYWRhcHRlcnMgKGUuZy4gVVNCIGV0aGVybmV0IGFkYXB0ZXJzIGFuZCBEU0EgbG9vcCBkZXZpY2VzKSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDljOTkyMzVjNzg0ZDZjN2RiZjY0M2M4NWRiODYxOTU1MDE0YTYyYTRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IEF1ZyAyNyAyMTozNTo1MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5pbmRleCA5NGIyZTg1ZTAwYTM3Li5iZTRjMzVkYjhkZTk4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1xuQEAgLTE3MzQsNiArMTczNCwxOCBAQCBzdGF0aWMgYm9vbCBwaHlfZHJ2X3N1cHBvcnRzX2lycShjb25zdCBzdHJ1Y3QgcGh5X2RyaXZlciAqcGh5ZHJ2KVxuIFx0cmV0dXJuIHBoeWRydi1cdTAwM2Vjb25maWdfaW50ciBcdTAwMjZcdTAwMjYgcGh5ZHJ2LVx1MDAzZWhhbmRsZV9pbnRlcnJ1cHQ7XG4gfVxuIFxuKy8qIEdpdmUgYmFjayB0aGUgaW50ZXJydXB0IHBoeV9wcm9iZSgpIHBhcmtlZCB3aGVuIGEgZHJpdmVyIHdpdGggbm8gaW50ZXJydXB0XG4rICogY2FsbGJhY2tzIGJvdW5kLiBtZGlvYnVzX2FsbG9jKCkgZGVmYXVsdHMgYnVzLVx1MDAzZWlycVtdIHRvIFBIWV9QT0xMIGFuZCB0aGVcbisgKiBiaW5kIGN5Y2xlIGRvZXMgbm90IHRvdWNoIHRoZSB0YWJsZSwgc28gd2hhdGV2ZXIgdGhlIGJ1cyByZWNvcmRlZCB0aGVyZVxuKyAqIHN0aWxsIHN0YW5kcy4gT25seSB0aGUgcGFya2luZyBpcyB1bmRvbmU6IGFueSBvdGhlciB2YWx1ZSB0aGUgUEhZIGNhcnJpZXNcbisgKiB3YXMgcHV0IHRoZXJlIGJ5IHNvbWVvbmUgZWxzZS5cbisgKi9cbitzdGF0aWMgdm9pZCBwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4re1xuK1x0aWYgKHBoeWRldi1cdTAwM2VpcnEgPT0gUEhZX1BPTEwpXG4rXHRcdHBoeWRldi1cdTAwM2VpcnEgPSBwaHlkZXYtXHUwMDNlbWRpby5idXMtXHUwMDNlaXJxW3BoeWRldi1cdTAwM2VtZGlvLmFkZHJdO1xuK31cbitcbiAvKipcbiAgKiBwaHlfYXR0YWNoX2RpcmVjdCAtIGF0dGFjaCBhIG5ldHdvcmsgZGV2aWNlIHRvIGEgZ2l2ZW4gUEhZIGRldmljZSBwb2ludGVyXG4gICogQGRldjogbmV0d29yayBkZXZpY2UgdG8gYXR0YWNoXG5AQCAtMTg5Niw2ICsxOTA4LDcgQEAgaW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXG4gXG4gZXJyb3JfbW9kdWxlX3B1dDpcbiBcdG1vZHVsZV9wdXQoZC1cdTAwM2Vkcml2ZXItXHUwMDNlb3duZXIpO1xuK1x0cGh5X3Jlc3RvcmVfZ2VucGh5X2lycShwaHlkZXYpO1xuIFx0cGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4gPSAwO1xuIFx0ZC1cdTAwM2Vkcml2ZXIgPSBOVUxMO1xuIGVycm9yX3B1dF9kZXZpY2U6XG5AQCAtMTk2NSw2ICsxOTc4LDcgQEAgdm9pZCBwaHlfZGV0YWNoKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXG4gXHQgKiByZWFsIGRyaXZlciBjb3VsZCBiZSBsb2FkZWRcbiBcdCAqL1xuIFx0aWYgKHBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuKSB7XG4rXHRcdHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEocGh5ZGV2KTtcbiBcdFx0ZGV2aWNlX3JlbGVhc2VfZHJpdmVyKFx1MDAyNnBoeWRldi1cdTAwM2VtZGlvLmRldik7XG4gXHRcdHBoeWRldi1cdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcbiBcdH1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuaW5kZXggNWI4ZTk1NjkwMmZiNS4uYTU1ZTRhNjQwMjhmZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbisrKyBiL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcbkBAIC0yMDgzLDYgKzIwODMsMTggQEAgc3RhdGljIGludCBwaHlsaW5rX3ZhbGlkYXRlX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4gXHRyZXR1cm4gcGh5bGlua192YWxpZGF0ZShwbCwgc3VwcG9ydGVkLCBzdGF0ZSk7XG4gfVxuIFxuKy8qIERpc2Fzc29jaWF0ZSBAcGh5IGZyb20gQHBsLiBDYWxsZXIgbXVzdCBob2xkIHBsLVx1MDAzZXBoeWRldl9tdXRleC4gKi9cbitzdGF0aWMgdm9pZCBwaHlsaW5rX2NsZWFyX3BoeWRldihzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHkpXG4re1xuK1x0bXV0ZXhfbG9jayhcdTAwMjZwaHktXHUwMDNlbG9jayk7XG4rXHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbitcdHBsLVx1MDAzZXBoeWRldiA9IE5VTEw7XG4rXHRwbC1cdTAwM2VwaHlfZW5hYmxlX3R4X2xwaSA9IGZhbHNlO1xuK1x0cGwtXHUwMDNlbWFjX3R4X2Nsa19zdG9wID0gZmFsc2U7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2cGwtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuK1x0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeS1cdTAwM2Vsb2NrKTtcbit9XG4rXG4gc3RhdGljIGludCBwaHlsaW5rX2JyaW5ndXBfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcbiBcdFx0XHQgICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcbiB7XG5AQCAtMjE5Nyw2ICsyMjA5LDEyIEBAIHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXG4gXHRpZiAocmV0ID09IDAgXHUwMDI2XHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5KSlcbiBcdFx0cGh5X3JlcXVlc3RfaW50ZXJydXB0KHBoeSk7XG4gXG4rXHRpZiAocmV0KSB7XG4rXHRcdG11dGV4X2xvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbitcdFx0cGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSk7XG4rXHRcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuK1x0fVxuK1xuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG5AQCAtMjM0NywxNSArMjM2NSw4IEBAIHZvaWQgcGh5bGlua19kaXNjb25uZWN0X3BoeShzdHJ1Y3QgcGh5bGluayAqcGwpXG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4gXHRwaHkgPSBwbC1cdTAwM2VwaHlkZXY7XG4tXHRpZiAocGh5KSB7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuLVx0XHRtdXRleF9sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbi1cdFx0cGwtXHUwMDNlcGh5ZGV2ID0gTlVMTDtcbi1cdFx0cGwtXHUwMDNlcGh5X2VuYWJsZV90eF9scGkgPSBmYWxzZTtcbi1cdFx0cGwtXHUwMDNlbWFjX3R4X2Nsa19zdG9wID0gZmFsc2U7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4tXHRcdG11dGV4X3VubG9jayhcdTAwMjZwaHktXHUwMDNlbG9jayk7XG4tXHR9XG4rXHRpZiAocGh5KVxuK1x0XHRwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTtcbiBcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuIFxuIFx0aWYgKHBoeSkge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMjE6MzU6NTMuNzUyMTQyOTgxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzExODMyNjg1Mzk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5ldHdvcmsgUEhZIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIGZpZ3VyZSBvdXQgaWYgdGhlcmUncyBhbnl0aGluZyBoZXJlIHRoYXQgd2FycmFudHMgZnV6emluZyBvciBmdXJ0aGVyIGludmVzdGlnYXRpb24gaW50byByZWFjaGFiaWxpdHkgYW5kIHBvdGVudGlhbCBjb25maWd1cmF0aW9uIGlzc3Vlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGV4YW1pbmUgdGhlIGZ1bmN0aW9uYWwgY2hhbmdlcyBjbG9zZWx5LlxuXG5GaXJzdCwgSSBzZWUgdGhlIGNoYW5nZXMgYXJlIGZvY3VzZWQgb24gYGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNgIGFuZCBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AuIEluIGBwaHlfZGV2aWNlLmNgLCB0aGVyZSdzIGEgbW9kaWZpY2F0aW9uIHRvIGBwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHBoeWRldilgLiBJdCBsb29rcyBsaWtlIGl0IHJlc3RvcmVzIGBwaHlkZXYtXHUwMDNlaXJxYCB0byBpdHMgcHJldmlvdXMgdmFsdWUgaWYgaXQgd2FzIGBQSFlfUE9MTGAgd2hlbiBlcnJvcnMgb2NjdXIgaW4gYHBoeV9hdHRhY2hfZGlyZWN0YCBvciBgcGh5X2RldGFjaGAuIE5vdGhpbmcgaW1tZWRpYXRlbHkgYWxhcm1pbmcsIGJ1dCBlcnJvciBwYXRocyBhcmUgYWx3YXlzIGludGVyZXN0aW5nLlxuXG5PdmVyIGluIGBwaHlsaW5rLmNgLCB3ZSBoYXZlIGEgcmVmYWN0b3Jpbmcgb2YgdGhlIGhlbHBlciBmdW5jdGlvbiBgcGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSlgLiBBbmQgaXQgYXBwZWFycyB0byBiZSB1c2VkIGluIGFuIGVycm9yIHBhdGggd2l0aGluIGBwaHlsaW5rX2JyaW5ndXBfcGh5YCwgc3BlY2lmaWNhbGx5IHdpdGhpbiBhIG11dGV4IGxvY2suIFJlZmFjdG9yaW5nIGlzIGdvb2QsIGFuZCB0aGUgZXJyb3IgaGFuZGxpbmcgYmVpbmcgaW1wcm92ZWQgaXMgYSBnb29kIHNpZ24sIGJ1dCBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0LlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb24gYXJpc2VzOiB3aGVyZSBpcyB0aGlzIGJ1aWx0LCBhbmQgaG93IGFyZSBQSFkgZGV2aWNlcyBhbmQgcGh5bGluayB1c2VkIGluIGVudmlyb25tZW50cyBsaWtlIHZpcnR1YWxpemVkIHN5c3RlbXMsIFFFTVUsIG9yIGV2ZW4gc29mdHdhcmUgZGV2aWNlcz8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaWYgdGhlc2UgY2hhbmdlcyBoYXZlIGFuIGltcGFjdCBiZXlvbmQgc3RhbmRhcmQgaGFyZHdhcmUuIENhbiBJIHJlYWNoIHRoZXNlIHNwZWNpZmljIGZ1bmN0aW9ucyBhbmQgY29uZmlndXJhdGlvbnMgd2l0aGluIHRob3NlIGVudmlyb25tZW50cz8gV2FpdCBhIG1pbnV0ZS4gQXJlIFBIWSBkZXZpY2VzLCBNRElPLCBhbmQgcGh5bGluayBldmVuICpyZWFjaGFibGUqIGluIFFFTVUsIHN5emthbGxlciwgb3Igc2ltaWxhciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHM/IExldCdzIGJyZWFrIG91dCBncmVwIGFuZCBzZWUgaWYgdGhlc2UgY29tcG9uZW50cyBhcmUgZXZlbiBiZWluZyB1c2VkIGluIHRob3NlIGNvbnRleHRzLiBUaGF0IHdpbGwgdGVsbCBtZSBhIGxvdCBhYm91dCB0aGUgcG90ZW50aWFsIHNjb3BlIG9mIHRoaXMgcGF0Y2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxMTksIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo0Nzo0NS41ODQ4MzA3NDdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYzNzM0MjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBoeWxpbmtfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDEwNjAwIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYz0xNTI1PXZvaWQgYjUzX3BvcnRfZXZlbnQoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1MzItXFx0bGluayA9ICEhKHN0cyBcXHUwMDI2IEJJVChwb3J0KSk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTUzMzpcXHRkc2FfcG9ydF9waHlsaW5rX21hY19jaGFuZ2UoZHMsIHBvcnQsIGxpbmspO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1MzQtfVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jPTE1MzU9RVhQT1JUX1NZTUJPTChiNTNfcG9ydF9ldmVudCk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTUzNi1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoxNTM3OnN0YXRpYyB2b2lkIGI1M19waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTUzODpcXHRcXHRcXHRcXHQgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTUzOS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTc1LVxcdC8qIEdldCB0aGUgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgY2FwYWJpbGl0aWVzICovXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU3NjpcXHRpZiAoZGV2LVxcdTAwM2VvcHMtXFx1MDAzZXBoeWxpbmtfZ2V0X2NhcHMpXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU3NzpcXHRcXHRkZXYtXFx1MDAzZW9wcy1cXHUwMDNlcGh5bGlua19nZXRfY2FwcyhkZXYsIHBvcnQsIGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU3OC19XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU3OS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoxNTgwOnN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKmI1M19waHlsaW5rX21hY19zZWxlY3RfcGNzKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1ODEtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTgyLXtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoxNTgzOlxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU4NC1cXHRzdHJ1Y3QgYjUzX2RldmljZSAqZGV2ID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1ODUtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU4NjpcXHRpZiAoIWRldi1cXHUwMDNlb3BzLVxcdTAwM2VwaHlsaW5rX21hY19zZWxlY3RfcGNzKVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1ODctXFx0XFx0cmV0dXJuIE5VTEw7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU4OC1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoxNTg5OlxcdHJldHVybiBkZXYtXFx1MDAzZW9wcy1cXHUwMDNlcGh5bGlua19tYWNfc2VsZWN0X3BjcyhkZXYsIGRwLVxcdTAwM2VpbmRleCwgaW50ZXJmYWNlKTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTkwLX1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTkxLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1OTI6c3RhdGljIHZvaWQgYjUzX3BoeWxpbmtfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNTkzLVxcdFxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBtb2RlLFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE1OTQ6XFx0XFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTU5NS17XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTU5NjpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE1OTctXFx0cGh5X2ludGVyZmFjZV90IGludGVyZmFjZSA9IHN0YXRlLVxcdTAwM2VpbnRlcmZhY2U7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNjE0LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjE2MTU6c3RhdGljIHZvaWQgYjUzX3BoeWxpbmtfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNjE2LVxcdFxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGludCBtb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTYxOC17XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTYxOTpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE2MjAtXFx0c3RydWN0IGI1M19kZXZpY2UgKmRldiA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE2MzgtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTYzOTpzdGF0aWMgdm9pZCBiNTNfcGh5bGlua19tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0xNjQwLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmMtMTY0NS17XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MTY0NjpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTE2NDctXFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gZHAtXFx1MDAzZWRzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM9MjY5Mj1FWFBPUlRfU1lNQk9MX0dQTChiNTNfc2V0X2FnZWluZ190aW1lKTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0yNjkzLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjI2OTQ6c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgYjUzX3BoeWxpbmtfbWFjX29wcyA9IHtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoyNjk1OlxcdC5tYWNfc2VsZWN0X3Bjc1xcdD0gYjUzX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3MsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfY29tbW9uLmM6MjY5NjpcXHQubWFjX2NvbmZpZ1xcdD0gYjUzX3BoeWxpbmtfbWFjX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoyNjk3OlxcdC5tYWNfbGlua19kb3duXFx0PSBiNTNfcGh5bGlua19tYWNfbGlua19kb3duLFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jOjI2OTg6XFx0Lm1hY19saW5rX3VwXFx0PSBiNTNfcGh5bGlua19tYWNfbGlua191cCxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0yNjk5LX07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYz0yNzAxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgYjUzX3N3aXRjaF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0yNzEwLVxcdC5waHlfd3JpdGVcXHRcXHQ9IGI1M19waHlfd3JpdGUxNixcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzoyNzExOlxcdC5waHlsaW5rX2dldF9jYXBzXFx0PSBiNTNfcGh5bGlua19nZXRfY2FwcyxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0yNzEyLVxcdC5wb3J0X3NldHVwXFx0XFx0PSBiNTNfc2V0dXBfcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jPTMxODM9c3RydWN0IGI1M19kZXZpY2UgKmI1M19zd2l0Y2hfYWxsb2Moc3RydWN0IGRldmljZSAqYmFzZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX2NvbW1vbi5jLTMyMDYtXFx0ZHMtXFx1MDAzZW9wcyA9IFxcdTAwMjZiNTNfc3dpdGNoX29wcztcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYzozMjA3OlxcdGRzLVxcdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcXHUwMDI2YjUzX3BoeWxpbmtfbWFjX29wcztcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19jb21tb24uYy0zMjA4LVxcdGRldi1cXHUwMDNldmxhbl9lbmFibGVkID0gdHJ1ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaD0zND1zdHJ1Y3QgYjUzX2lvX29wcyB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2LmgtNTAtXFx0dm9pZCAoKnBoeV9kaXNhYmxlKShzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydCk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oOjUxOlxcdHZvaWQgKCpwaHlsaW5rX2dldF9jYXBzKShzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2Lmg6NTI6XFx0XFx0XFx0XFx0IHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19wcml2Lmg6NTM6XFx0c3RydWN0IHBoeWxpbmtfcGNzICooKnBoeWxpbmtfbWFjX3NlbGVjdF9wY3MpKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oLTU0LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oPTExMT1zdHJ1Y3QgYjUzX3BjcyB7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfcHJpdi5oOjExMjpcXHRzdHJ1Y3QgcGh5bGlua19wY3MgcGNzO1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3ByaXYuaC0xMTMtXFx0c3RydWN0IGI1M19kZXZpY2UgKmRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE5LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjIwOnN0YXRpYyBpbmxpbmUgc3RydWN0IGI1M19wY3MgKnBjc190b19iNTNfcGNzKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTIxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jPTYxPXN0YXRpYyB1MTYgYjUzX3NlcmRlc19yZWFkKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIHU4IGxhbmUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy02Ny1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYzo2ODpzdGF0aWMgaW50IGI1M19zZXJkZXNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtNjktXFx0XFx0XFx0ICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtODgtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM6ODk6c3RhdGljIHZvaWQgYjUzX3NlcmRlc19hbl9yZXN0YXJ0KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTkwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTEwMS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYzoxMDI6c3RhdGljIHZvaWQgYjUzX3NlcmRlc19nZXRfc3RhdGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYzoxMDM6XFx0XFx0XFx0XFx0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTEwNC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYz0xNTc9RVhQT1JUX1NZTUJPTChiNTNfc2VyZGVzX2xpbmtfc2V0KTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy0xNTgtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM6MTU5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19wY3Nfb3BzIGI1M19wY3Nfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE2MC1cXHQucGNzX2dldF9zdGF0ZSA9IGI1M19zZXJkZXNfZ2V0X3N0YXRlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtMTY0LVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjE2NTp2b2lkIGI1M19zZXJkZXNfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYzoxNjY6XFx0XFx0XFx0XFx0IHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE2Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy0xOTEtfVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjE5MjpFWFBPUlRfU1lNQk9MKGI1M19zZXJkZXNfcGh5bGlua19nZXRfY2Fwcyk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmMtMTkzLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jOjE5NDpzdHJ1Y3QgcGh5bGlua19wY3MgKmI1M19zZXJkZXNfcGh5bGlua19tYWNfc2VsZWN0X3BjcyhzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTE5NS1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICBpbnQgcG9ydCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5jLTIwOS19XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmM6MjEwOkVYUE9SVF9TWU1CT0woYjUzX3NlcmRlc19waHlsaW5rX21hY19zZWxlY3RfcGNzKTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuYy0yMTEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaC05OS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaDoxMDA6c3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaC0xMDEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaD0xMTA9dm9pZCBiNTNfc2VyZGVzX2xpbmtfc2V0KHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIGludCBwb3J0LCB1bnNpZ25lZCBpbnQgbW9kZSxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaC0xMTEtXFx0XFx0XFx0IHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsIGJvb2wgbGlua191cCk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmg6MTEyOnN0cnVjdCBwaHlsaW5rX3BjcyAqYjUzX3NlcmRlc19waHlsaW5rX21hY19zZWxlY3RfcGNzKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmgtMTEzLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NlcmRlcy5oLTExNC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zZXJkZXMuaDoxMTU6dm9pZCBiNTNfc2VyZGVzX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGI1M19kZXZpY2UgKmRldiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmg6MTE2OlxcdFxcdFxcdFxcdCBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc2VyZGVzLmgtMTE3LSNpZiBJU19FTkFCTEVEKENPTkZJR19CNTNfU0VSREVTKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jPTQzNT1zdGF0aWMgdm9pZCBiNTNfc3JhYl9pcnFfZGlzYWJsZShzdHJ1Y3QgYjUzX2RldmljZSAqZGV2LCBpbnQgcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYy00NDUtXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jOjQ0NjpzdGF0aWMgdm9pZCBiNTNfc3JhYl9waHlsaW5rX2dldF9jYXBzKHN0cnVjdCBiNTNfZGV2aWNlICpkZXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYzo0NDc6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ0OC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtNDU3LVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYzo0NTg6XFx0XFx0YjUzX3NlcmRlc19waHlsaW5rX2dldF9jYXBzKGRldiwgcG9ydCwgY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtNDU5LSNlbmRpZlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jPTQ3OT1zdGF0aWMgY29uc3Qgc3RydWN0IGI1M19pb19vcHMgYjUzX3NyYWJfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ5MS1cXHQuaXJxX2Rpc2FibGUgPSBiNTNfc3JhYl9pcnFfZGlzYWJsZSxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmM6NDkyOlxcdC5waHlsaW5rX2dldF9jYXBzID0gYjUzX3NyYWJfcGh5bGlua19nZXRfY2FwcyxcXG5kcml2ZXJzL25ldC9kc2EvYjUzL2I1M19zcmFiLmMtNDkzLSNpZiBJU19FTkFCTEVEKENPTkZJR19CNTNfU0VSREVTKVxcbmRyaXZlcnMvbmV0L2RzYS9iNTMvYjUzX3NyYWIuYzo0OTQ6XFx0LnBoeWxpbmtfbWFjX3NlbGVjdF9wY3MgPSBiNTNfc2VyZGVzX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3MsXFxuZHJpdmVycy9uZXQvZHNhL2I1My9iNTNfc3JhYi5jLTQ5NS1cXHQuc2VyZGVzX21hcF9sYW5lID0gYjUzX3NyYWJfc2VyZGVzX21hcF9sYW5lLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz00NTI9c3RhdGljIGlycXJldHVybl90IGJjbV9zZjJfc3dpdGNoXzFfaXNyKGludCBpcnEsIHZvaWQgKmRldl9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNDYyLVxcdFxcdHByaXYtXFx1MDAzZXBvcnRfc3RzWzddLmxpbmsgPSB0cnVlO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NDYzOlxcdFxcdGRzYV9wb3J0X3BoeWxpbmtfbWFjX2NoYW5nZShkcywgNywgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy00NjQtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy00NjYtXFx0XFx0cHJpdi1cXHUwMDNlcG9ydF9zdHNbN10ubGluayA9IGZhbHNlO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6NDY3OlxcdFxcdGRzYV9wb3J0X3BoeWxpbmtfbWFjX2NoYW5nZShkcywgNywgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNDY4LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9NzI0PXN0YXRpYyB2b2lkIGJjbV9zZjJfc3dfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjcyNTpcXHRcXHRcXHRcXHRzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTcyNi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTc0NC1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjc0NTpzdGF0aWMgdm9pZCBiY21fc2YyX3N3X21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy03NDYtXFx0XFx0XFx0XFx0ICB1bnNpZ25lZCBpbnQgbW9kZSxcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjc0NzpcXHRcXHRcXHRcXHQgIGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNzQ4LXtcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjc0OTpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtNzUwLVxcdHUzMiBpZF9tb2RlX2RpcyA9IDAsIHBvcnRfbW9kZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM9Nzk0PXN0YXRpYyB2b2lkIGJjbV9zZjJfc3dfbWFjX2xpbmtfc2V0KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTgxNi1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjgxNzpzdGF0aWMgdm9pZCBiY21fc2YyX3N3X21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy04MTgtXFx0XFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtODIwLXtcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjgyMTpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtODIyLVxcdHN0cnVjdCBiY21fc2YyX3ByaXYgKnByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTgzNy1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjgzODpzdGF0aWMgdm9pZCBiY21fc2YyX3N3X21hY19saW5rX3VwKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtODM5LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTg0NC17XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzo4NDU6XFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTg0Ni1cXHRzdHJ1Y3QgYmNtX3NmMl9wcml2ICpwcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz05MDY9c3RhdGljIHZvaWQgYmNtX3NmMl9zd19maXhlZF9zdGF0ZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmM6OTA3OlxcdFxcdFxcdFxcdCAgIHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXR1cylcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTkwOC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jPTEyMDM9c3RhdGljIGludCBiY21fc2YyX3N3X2dldF9zc2V0X2NvdW50KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTEyMTUtXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzoxMjE2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGJjbV9zZjJfcGh5bGlua19tYWNfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtMTIxNy1cXHQubWFjX2NvbmZpZ1xcdD0gYmNtX3NmMl9zd19tYWNfY29uZmlnLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz0xMjIyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHNhX3N3aXRjaF9vcHMgYmNtX3NmMl9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jLTEyMzAtXFx0LmdldF9waHlfZmxhZ3NcXHRcXHQ9IGJjbV9zZjJfc3dfZ2V0X3BoeV9mbGFncyxcXG5kcml2ZXJzL25ldC9kc2EvYmNtX3NmMi5jOjEyMzE6XFx0LnBoeWxpbmtfZ2V0X2NhcHNcXHQ9IGJjbV9zZjJfc3dfZ2V0X2NhcHMsXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzoxMjMyOlxcdC5waHlsaW5rX2ZpeGVkX3N0YXRlXFx0PSBiY21fc2YyX3N3X2ZpeGVkX3N0YXRlLFxcbmRyaXZlcnMvbmV0L2RzYS9iY21fc2YyLmMtMTIzMy1cXHQuc3VzcGVuZFxcdFxcdD0gYmNtX3NmMl9zd19zdXNwZW5kLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYz0xMzY1PXN0YXRpYyBpbnQgYmNtX3NmMl9zd19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy0xNDI2LVxcdGRzLVxcdTAwM2VvcHMgPSBcXHUwMDI2YmNtX3NmMl9vcHM7XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYzoxNDI3OlxcdGRzLVxcdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcXHUwMDI2YmNtX3NmMl9waHlsaW5rX21hY19vcHM7XFxuZHJpdmVycy9uZXQvZHNhL2JjbV9zZjIuYy0xNDI4LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM9MzIxPXN0YXRpYyBpbnQgZHNhX2xvb3BfcG9ydF9tYXhfbXR1KHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zMjUtXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzI2OnN0YXRpYyB2b2lkIGRzYV9sb29wX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzYSwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6MzI3OlxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jLTMyOC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz0zMzQ9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBkc2FfbG9vcF9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTEtXFx0LnBvcnRfbWF4X210dVxcdFxcdD0gZHNhX2xvb3BfcG9ydF9tYXhfbXR1LFxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjM1MjpcXHQucGh5bGlua19nZXRfY2Fwc1xcdD0gZHNhX2xvb3BfcGh5bGlua19nZXRfY2FwcyxcXG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy0zNTMtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jPTE0NTg9c3RhdGljIHZvaWQgaGVsbGNyZWVrX3RlYXJkb3duKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jLTE0NjMtXFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM6MTQ2NDpzdGF0aWMgdm9pZCBoZWxsY3JlZWtfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jOjE0NjU6XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbmRyaXZlcnMvbmV0L2RzYS9oaXJzY2htYW5uL2hlbGxjcmVlay5jLTE0NjYte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2hpcnNjaG1hbm4vaGVsbGNyZWVrLmM9MTkwMD1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGhlbGxjcmVla19kc19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYy0xOTA2LVxcdC5nZXRfdHNfaW5mb1xcdCAgICAgICA9IGhlbGxjcmVla19nZXRfdHNfaW5mbyxcXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYzoxOTA3OlxcdC5waHlsaW5rX2dldF9jYXBzICAgICAgPSBoZWxsY3JlZWtfcGh5bGlua19nZXRfY2FwcyxcXG5kcml2ZXJzL25ldC9kc2EvaGlyc2NobWFubi9oZWxsY3JlZWsuYy0xOTA4LVxcdC5wb3J0X2JyaWRnZV9mbGFncyAgICAgPSBoZWxsY3JlZWtfYnJpZGdlX2ZsYWdzLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jPTQ0OD1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo0NDk6a3M4OTk1X21hY19jb25maWcoc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo0NTA6XFx0XFx0ICBjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSlcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNDUxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYz00NTQ9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NDU1OmtzODk5NV9tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZywgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNDU2LVxcdFxcdCAgIHVuc2lnbmVkIGludCBtb2RlLCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTQ1OC17XFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jOjQ1OTpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy00NjAtXFx0c3RydWN0IGtzODk5NV9zd2l0Y2ggKmtzID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jPTUwOD1zdGF0aWMgdm9pZFxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo1MDk6a3M4OTk1X21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsIHVuc2lnbmVkIGludCBtb2RlLFxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy01MTAtXFx0XFx0ICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy01MTEte1xcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo1MTI6XFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNTEzLVxcdHN0cnVjdCBrczg5OTVfc3dpdGNoICprcyA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy01MjMtXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jOjUyNDpzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBrczg5OTVfcGh5bGlua19tYWNfb3BzID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy01MjUtXFx0Lm1hY19jb25maWcgPSBrczg5OTVfbWFjX2NvbmZpZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYz02MDI9c3RhdGljIHZvaWQga3M4OTk1X3BvcnRfc3RwX3N0YXRlX3NldChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LCB1OCBzdGF0ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy02NDgtXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jOjY0OTpzdGF0aWMgdm9pZCBrczg5OTVfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHNhLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM6NjUwOlxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZylcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNjUxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYz03MzI9c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBrczg5OTVfZHNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jLTc0MS1cXHQucG9ydF9tYXhfbXR1ID0ga3M4OTk1X2dldF9tYXhfbXR1LFxcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYzo3NDI6XFx0LnBoeWxpbmtfZ2V0X2NhcHMgPSBrczg5OTVfcGh5bGlua19nZXRfY2FwcyxcXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtNzQzLX07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmM9NzQ2PXN0YXRpYyBpbnQga3M4OTk1X3Byb2JlKHN0cnVjdCBzcGlfZGV2aWNlICpzcGkpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2Eva3M4OTk1LmMtODIwLVxcdGtzLVxcdTAwM2Vkcy1cXHUwMDNlb3BzID0gXFx1MDAyNmtzODk5NV9kc19vcHM7XFxuZHJpdmVycy9uZXQvZHNhL2tzODk5NS5jOjgyMTpcXHRrcy1cXHUwMDNlZHMtXFx1MDAzZXBoeWxpbmtfbWFjX29wcyA9IFxcdTAwMjZrczg5OTVfcGh5bGlua19tYWNfb3BzO1xcbmRyaXZlcnMvbmV0L2RzYS9rczg5OTUuYy04MjItXFx0a3MtXFx1MDAzZWRzLVxcdTAwM2Vwcml2ID0ga3M7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM9MTI4Mz1zdGF0aWMgaW50IGxhbjkzMDNfcG9ydF9tZGJfZGVsKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTI5Ny1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTI5ODpzdGF0aWMgdm9pZCBsYW45MzAzX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTI5OTpcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzAwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzIzLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxMzI0OnN0YXRpYyB2b2lkIGxhbjkzMDNfcGh5bGlua19tYWNfY29uZmlnKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzI1LVxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgbW9kZSxcXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTMyNjpcXHRcXHRcXHRcXHQgICAgICAgY29uc3Qgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzMjcte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzMjktXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEzMzA6c3RhdGljIHZvaWQgbGFuOTMwM19waHlsaW5rX21hY19saW5rX2Rvd24oc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzMzEtXFx0XFx0XFx0XFx0XFx0ICB1bnNpZ25lZCBpbnQgbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzM1LVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxMzM2OnN0YXRpYyB2b2lkIGxhbjkzMDNfcGh5bGlua19tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTMzNy1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzNDIte1xcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxMzQzOlxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzNDQtXFx0c3RydWN0IGxhbjkzMDMgKmNoaXAgPSBkcC1cXHUwMDNlZHMtXFx1MDAzZXByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmMtMTM3NS1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTM3NjpzdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBsYW45MzAzX3BoeWxpbmtfbWFjX29wcyA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM6MTM3NzpcXHQubWFjX2NvbmZpZ1xcdD0gbGFuOTMwM19waHlsaW5rX21hY19jb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jOjEzNzg6XFx0Lm1hY19saW5rX2Rvd25cXHQ9IGxhbjkzMDNfcGh5bGlua19tYWNfbGlua19kb3duLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxMzc5OlxcdC5tYWNfbGlua191cFxcdD0gbGFuOTMwM19waHlsaW5rX21hY19saW5rX3VwLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzgwLX07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFuOTMwMy1jb3JlLmM9MTM4Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGxhbjkzMDNfc3dpdGNoX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xMzg3LVxcdC5waHlfd3JpdGVcXHRcXHQ9IGxhbjkzMDNfcGh5X3dyaXRlLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxMzg4OlxcdC5waHlsaW5rX2dldF9jYXBzXFx0PSBsYW45MzAzX3BoeWxpbmtfZ2V0X2NhcHMsXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTEzODktXFx0LmdldF9ldGh0b29sX3N0YXRzXFx0PSBsYW45MzAzX2dldF9ldGh0b29sX3N0YXRzLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jPTE0MDQ9c3RhdGljIGludCBsYW45MzAzX3JlZ2lzdGVyX3N3aXRjaChzdHJ1Y3QgbGFuOTMwMyAqY2hpcClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYy0xNDEzLVxcdGNoaXAtXFx1MDAzZWRzLVxcdTAwM2VvcHMgPSBcXHUwMDI2bGFuOTMwM19zd2l0Y2hfb3BzO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW45MzAzLWNvcmUuYzoxNDE0OlxcdGNoaXAtXFx1MDAzZWRzLVxcdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcXHUwMDI2bGFuOTMwM19waHlsaW5rX21hY19vcHM7XFxuZHJpdmVycy9uZXQvZHNhL2xhbjkzMDMtY29yZS5jLTE0MTUtXFx0Y2hpcC1cXHUwMDNlZHMtXFx1MDAzZXBoeXNfbWlpX21hc2sgPSBHRU5NQVNLKExBTjkzMDNfTlVNX1BPUlRTIC0gMSwgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jPTI3PXN0cnVjdCB4d2F5X2dwaHlfbWF0Y2hfZGF0YSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jLTMxLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmM6MzI6c3RhdGljIHZvaWQgZ3N3aXBfeHJ4MjAwX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jOjMzOlxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy0zNC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jLTYyLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmM6NjM6c3RhdGljIHZvaWQgZ3N3aXBfeHJ4MzAwX3BoeWxpbmtfZ2V0X2NhcHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jOjY0OlxcdFxcdFxcdFxcdFxcdCAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy02NS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jPTQ1OT1zdGF0aWMgY29uc3Qgc3RydWN0IGdzd2lwX2h3X2luZm8gZ3N3aXBfeHJ4MjAwID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy00NzUtXFx0fSxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jOjQ3NjpcXHQucGh5bGlua19nZXRfY2FwcyA9IGdzd2lwX3hyeDIwMF9waHlsaW5rX2dldF9jYXBzLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmMtNDc3LVxcdC5wY2VfbWljcm9jb2RlID0gXFx1MDAyNmdzd2lwX3BjZV9taWNyb2NvZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jPTQ4Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGdzd2lwX2h3X2luZm8gZ3N3aXBfeHJ4MzAwID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuYy00OTYtXFx0fSxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5jOjQ5NzpcXHQucGh5bGlua19nZXRfY2FwcyA9IGdzd2lwX3hyeDMwMF9waHlsaW5rX2dldF9jYXBzLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmMtNDk4LVxcdC5wY2VfbWljcm9jb2RlID0gXFx1MDAyNmdzd2lwX3BjZV9taWNyb2NvZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5oPTI1NT1zdHJ1Y3QgZ3N3aXBfaHdfaW5mbyB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5oLTI2My1cXHRlbnVtIGRzYV90YWdfcHJvdG9jb2wgdGFnX3Byb3RvY29sO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmg6MjY0OlxcdHZvaWQgKCpwaHlsaW5rX2dldF9jYXBzKShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwLmg6MjY1OlxcdFxcdFxcdFxcdCBzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXAuaDoyNjY6XFx0c3RydWN0IHBoeWxpbmtfcGNzICooKm1hY19zZWxlY3RfcGNzKShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcC5oLTI2Ny1cXHRcXHRcXHRcXHRcXHQgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jPTEyNjY9c3RhdGljIGludCBnc3dpcF9wb3J0X2NoYW5nZV9tdHUoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgaW50IG5ld19tdHUpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xMjkxLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjEyOTI6c3RhdGljIHZvaWQgZ3N3aXBfcGh5bGlua19nZXRfY2FwcyhzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjEyOTM6XFx0XFx0XFx0XFx0ICAgc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcpXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTI5NC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xMjk2LVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjEyOTc6XFx0cHJpdi1cXHUwMDNlaHdfaW5mby1cXHUwMDNlcGh5bGlua19nZXRfY2FwcyhkcywgcG9ydCwgY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xMjk4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jPTEzNzU9c3RhdGljIHZvaWQgZ3N3aXBfcG9ydF9zZXRfcGF1c2Uoc3RydWN0IGdzd2lwX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQwNC1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNDA1OnN0YXRpYyB2b2lkIGdzd2lwX3BoeWxpbmtfbWFjX2NvbmZpZyhzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDA2LVxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IG1vZGUsXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTQwNzpcXHRcXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgKnN0YXRlKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0MDgte1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE0MDk6XFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDEwLVxcdHN0cnVjdCBnc3dpcF9wcml2ICpwcml2ID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQ1NS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNDU2OnN0YXRpYyB2b2lkIGdzd2lwX3BoeWxpbmtfbWFjX2xpbmtfZG93bihzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDU3LVxcdFxcdFxcdFxcdFxcdHVuc2lnbmVkIGludCBtb2RlLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQ1OS17XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTQ2MDpcXHRzdHJ1Y3QgZHNhX3BvcnQgKmRwID0gZHNhX3BoeWxpbmtfdG9fcG9ydChjb25maWcpO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE0NjEtXFx0c3RydWN0IGdzd2lwX3ByaXYgKnByaXYgPSBkcC1cXHUwMDNlZHMtXFx1MDAzZXByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDY5LVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE0NzA6c3RhdGljIHZvaWQgZ3N3aXBfcGh5bGlua19tYWNfbGlua191cChzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDcxLVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNDc2LXtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNDc3OlxcdHN0cnVjdCBkc2FfcG9ydCAqZHAgPSBkc2FfcGh5bGlua190b19wb3J0KGNvbmZpZyk7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTQ3OC1cXHRzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiA9IGRwLVxcdTAwM2Vkcy1cXHUwMDNlcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jPTE1NTk9c3RhdGljIGludCBnc3dpcF9zZXRfbWFjX2VlZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTU2Ny1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNTY4OnN0YXRpYyB2b2lkIGdzd2lwX3BoeWxpbmtfbWFjX2Rpc2FibGVfdHhfbHBpKHN0cnVjdCBwaHlsaW5rX2NvbmZpZyAqY29uZmlnKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE1Njkte1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE1NzA6XFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNTcxLVxcdHN0cnVjdCBnc3dpcF9wcml2ICpwcml2ID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTU3Ni1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNTc3OnN0YXRpYyBpbnQgZ3N3aXBfcGh5bGlua19tYWNfZW5hYmxlX3R4X2xwaShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNTc4LVxcdFxcdFxcdFxcdFxcdCAgIHUzMiB0aW1lciwgYm9vbCB0eF9jbG9ja19zdG9wKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE1Nzkte1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE1ODA6XFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNTgxLVxcdHN0cnVjdCBnc3dpcF9wcml2ICpwcml2ID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM9MTU5Mj1zdGF0aWMgYm9vbCBnc3dpcF9zdXBwb3J0X2VlZShzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTYwMS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNjAyOnN0YXRpYyBzdHJ1Y3QgcGh5bGlua19wY3MgKmdzd2lwX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3Moc3RydWN0IHBoeWxpbmtfY29uZmlnICpjb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTYwMy1cXHRcXHRcXHRcXHRcXHRcXHRcXHRwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2MDQte1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2MDU6XFx0c3RydWN0IGRzYV9wb3J0ICpkcCA9IGRzYV9waHlsaW5rX3RvX3BvcnQoY29uZmlnKTtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNjA2LVxcdHN0cnVjdCBnc3dpcF9wcml2ICpwcml2ID0gZHAtXFx1MDAzZWRzLVxcdTAwM2Vwcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTYxMy1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNjE0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGdzd2lwX3BoeWxpbmtfbWFjX29wcyA9IHtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNjE1OlxcdC5tYWNfY29uZmlnXFx0XFx0PSBnc3dpcF9waHlsaW5rX21hY19jb25maWcsXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTYxNjpcXHQubWFjX2xpbmtfZG93blxcdFxcdD0gZ3N3aXBfcGh5bGlua19tYWNfbGlua19kb3duLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2MTc6XFx0Lm1hY19saW5rX3VwXFx0XFx0PSBnc3dpcF9waHlsaW5rX21hY19saW5rX3VwLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jOjE2MTg6XFx0Lm1hY19kaXNhYmxlX3R4X2xwaVxcdD0gZ3N3aXBfcGh5bGlua19tYWNfZGlzYWJsZV90eF9scGksXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTYxOTpcXHQubWFjX2VuYWJsZV90eF9scGlcXHQ9IGdzd2lwX3BoeWxpbmtfbWFjX2VuYWJsZV90eF9scGksXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM6MTYyMDpcXHQubWFjX3NlbGVjdF9wY3NcXHRcXHQ9IGdzd2lwX3BoeWxpbmtfbWFjX3NlbGVjdF9wY3MsXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmMtMTYyMS19O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9sYW50aXFfZ3N3aXBfY29tbW9uLmM9MTYyMz1zdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIGdzd2lwX3N3aXRjaF9vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNjQzLVxcdC5wb3J0X21heF9tdHVcXHRcXHQ9IGdzd2lwX3BvcnRfbWF4X210dSxcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNjQ0OlxcdC5waHlsaW5rX2dldF9jYXBzXFx0PSBnc3dpcF9waHlsaW5rX2dldF9jYXBzLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2NDUtXFx0LmdldF9zdHJpbmdzXFx0XFx0PSBnc3dpcF9nZXRfc3RyaW5ncyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jPTE2Nzg9aW50IGdzd2lwX3Byb2JlX2NvbW1vbihzdHJ1Y3QgZ3N3aXBfcHJpdiAqcHJpdiwgdTMyIHZlcnNpb24pXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYy0xNjkwLVxcdHByaXYtXFx1MDAzZWRzLVxcdTAwM2VvcHMgPSBcXHUwMDI2Z3N3aXBfc3dpdGNoX29wcztcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL2xhbnRpcV9nc3dpcF9jb21tb24uYzoxNjkxOlxcdHByaXYtXFx1MDAzZWRzLVxcdTAwM2VwaHlsaW5rX21hY19vcHMgPSBcXHUwMDI2Z3N3aXBfcGh5bGlua19tYWNfb3BzO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbGFudGlxX2dzd2lwX2NvbW1vbi5jLTE2OTItXFx0cHJpdi1cXHUwMDNlZHMtXFx1MDAzZXByaXYgPSBwcml2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM9Mjg9c3RydWN0IGdzdzF4eF9wcml2IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTM0LVxcdHN0cnVjdFxcdFxcdFxcdHJlZ21hcCAqc2hlbGw7XFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MzU6XFx0c3RydWN0XFx0XFx0XFx0cGh5bGlua19wY3MgcGNzO1xcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTM2LVxcdHN0cnVjdCBkZWxheWVkX3dvcmtcXHRjbGVhcl9yYW5lZztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jPTEyND1zdGF0aWMgdm9pZCBnc3cxeHhfbWRpb19yZWdtYXBfdW5sb2NrKHZvaWQgKm1kaW9fbG9jaylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTEyOC1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzoxMjk6c3RhdGljIHVuc2lnbmVkIGludCBnc3cxeHhfcGNzX2luYmFuZF9jYXBzKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTEzMC1cXHRcXHRcXHRcXHRcXHQgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTM0LVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjEzNTpzdGF0aWMgc3RydWN0IGdzdzF4eF9wcml2ICpwY3NfdG9fZ3N3MXh4KHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTEzNi17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xMzktXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MTQwOnN0YXRpYyBpbnQgZ3N3MXh4X3Bjc19lbmFibGUoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MpXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTQxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTE0OC1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzoxNDk6c3RhdGljIHZvaWQgZ3N3MXh4X3Bjc19kaXNhYmxlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzKVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTE1MC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0xNjEtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6MTYyOnN0YXRpYyB2b2lkIGdzdzF4eF9wY3NfZ2V0X3N0YXRlKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTE2My1cXHRcXHRcXHRcXHQgdW5zaWduZWQgaW50IG5lZ19tb2RlLFxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjE2NDpcXHRcXHRcXHRcXHQgc3RydWN0IHBoeWxpbmtfbGlua19zdGF0ZSAqc3RhdGUpXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMTY1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jPTIzND1zdGF0aWMgaW50IGdzdzF4eF9wY3NfcmVzZXQoc3RydWN0IGdzdzF4eF9wcml2ICpwcml2LCBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMzM0LVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjMzNTpzdGF0aWMgaW50IGdzdzF4eF9wY3NfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtMzM2LVxcdFxcdFxcdCAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTM2OS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzozNzA6XFx0c3dpdGNoIChwaHlsaW5rX2dldF9saW5rX3RpbWVyX25zKGludGVyZmFjZSkpIHtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0zNzEtXFx0Y2FzZSAxMDAwMDpcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jLTM5My1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYzozOTQ6XFx0dHhhbmVnID0gcGh5bGlua19taWlfYzIyX3Bjc19lbmNvZGVfYWR2ZXJ0aXNlbWVudChpbnRlcmZhY2UsIGFkdmVydGlzaW5nKTtcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy0zOTUtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYz00NTM9c3RhdGljIHZvaWQgZ3N3MXh4X3Bjc19jbGVhcl9yYW5lZyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy00NjEtXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmM6NDYyOnN0YXRpYyB2b2lkIGdzdzF4eF9wY3NfYW5fcmVzdGFydChzdHJ1Y3QgcGh5bGlua19wY3MgKnBjcylcXG5kcml2ZXJzL25ldC9kc2EvbGFudGlxL214bC1nc3cxeHguYy00NjMte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtNDc3LVxcbmRyaXZlcnMvbmV0L2RzYS9sYW50aXEvbXhsLWdzdzF4eC5jOjQ3ODpzdGF0aWMgdm9pZCBnc3cxeHhfcGNzX2xpbmtfdXAoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsXFxuZHJpdmVycy9uZXQvZHNhL2xhbnRpcS9teGwtZ3N3MXh4LmMtNDc5LVxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXFxuLS1cXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMjE6NDc6NDYuMTQ4NTcwNDE0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDg5NzY4ODQ4NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIFBIWSBEZXZpY2UgQ29ubmVjdGlvbnMqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIFBIWSBkZXZpY2VzIGFyZSBiZWluZyBjb25uZWN0ZWQgYW5kIGRpc2Nvbm5lY3RlZCB3aXRoaW4gdGhpcyBzeXN0ZW0uIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYHBoeV9kZXZpY2UuY2AgYW5kIGBwaHlsaW5rLmNgLiBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGV5IGludGVyYWN0LlxuXG5UbyB0aGF0IGVuZCwgSSdtIGdvaW5nIHRvIHN0YXJ0IGJ5IGlkZW50aWZ5aW5nIGFsbCB0aGUgcG9pbnRzIG9mIGNvbnRhY3QuIEknbSB0aGlua2luZywgYSB0aG9yb3VnaCBzZWFyY2ggZm9yIHRoZSBjYWxscyB0byBmdW5jdGlvbnMgdGhhdCBoYW5kbGUgUEhZIG1hbmFnZW1lbnQgd2lsbCBiZSBpbiBvcmRlci4gTGV0J3Mgc2VlLi4uIEknbGwgbmVlZCB0byB0cmFjayBkb3duIGNhbGxlcnMgb2YgY3J1Y2lhbCBmdW5jdGlvbnMgbGlrZSBgcGh5X2F0dGFjaF9kaXJlY3RgLCBgcGh5X2RldGFjaGAsIGBwaHlsaW5rX2JyaW5ndXBfcGh5YCwgYHBoeWxpbmtfZGlzY29ubmVjdF9waHlgLCBgcGh5X2Nvbm5lY3RgLCBhbmQgYHBoeV9hdHRhY2hgLiBUaGVzZSBhcmUgdGhlIGNvcmUgb3BlcmF0aW9ucywgdGhlIHBsYWNlcyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLCBzbyB0byBzcGVhaywgaW4gYXR0YWNoaW5nLCBkZXRhY2hpbmcsIGNvbm5lY3RpbmcsIGFuZCBkaXNjb25uZWN0aW5nIHRoZSBQSFlzLiBVbmRlcnN0YW5kaW5nIHRoZWlyIHVzYWdlIHBhdHRlcm5zIHdpbGwgYmUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgcGljdHVyZSBoZXJlLiBJIHN1c3BlY3QgdGhlcmUgd2lsbCBiZSBzb21lIGludGVyZXN0aW5nIGNvbm5lY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODIwNywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDIxOjQ4OjM1LjEyNTQ1ODQ1MloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjU4NjMxNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5X2F0dGFjaF9kaXJlY3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM9OTMxPXN0YXRpYyBpbnQgeGdiZV9waHlfZmluZF9waHlfZGV2aWNlKHN0cnVjdCB4Z2JlX3Bydl9kYXRhICpwZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmMtOTgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtZC94Z2JlL3hnYmUtcGh5LXYyLmM6OTgzOlxcdHJldCA9IHBoeV9hdHRhY2hfZGlyZWN0KHBkYXRhLVxcdTAwM2VuZXRkZXYsIHBoeWRldiwgcGh5ZGV2LVxcdTAwM2VkZXZfZmxhZ3MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYy05ODQtXFx0XFx0XFx0XFx0UEhZX0lOVEVSRkFDRV9NT0RFX1NHTUlJKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTk4NS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1kL3hnYmUveGdiZS1waHktdjIuYzo5ODY6XFx0XFx0bmV0ZGV2X2VycihwZGF0YS1cXHUwMDNlbmV0ZGV2LCBcXFwicGh5X2F0dGFjaF9kaXJlY3QgZmFpbGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWQveGdiZS94Z2JlLXBoeS12Mi5jLTk4Ny1cXHRcXHRwaHlfZGV2aWNlX3JlbW92ZShwaHlkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jPTExNTk9aW50IGhuc19uaWNfaW5pdF9waHkoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBobmFlX2hhbmRsZSAqaClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9obnMvaG5zX2VuZXQuYy0xMTgwLVxcdH0gZWxzZSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hucy9obnNfZW5ldC5jOjExODE6XFx0XFx0cmV0ID0gcGh5X2F0dGFjaF9kaXJlY3QobmRldiwgcGh5X2RldiwgMCwgaC1cXHUwMDNlcGh5X2lmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaG5zL2huc19lbmV0LmMtMTE4Mi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jPTEyMjU9aW50IHBoeV9jb25uZWN0X2RpcmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xMjMzLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmM6MTIzNDpcXHRyYyA9IHBoeV9hdHRhY2hfZGlyZWN0KGRldiwgcGh5ZGV2LCBwaHlkZXYtXFx1MDAzZWRldl9mbGFncywgaW50ZXJmYWNlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTEyMzUtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYz0xNzQzPXN0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTc0OS0vKipcXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE3NTA6ICogcGh5X2F0dGFjaF9kaXJlY3QgLSBhdHRhY2ggYSBuZXR3b3JrIGRldmljZSB0byBhIGdpdmVuIFBIWSBkZXZpY2UgcG9pbnRlclxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTc1MS0gKiBAZGV2OiBuZXR3b3JrIGRldmljZSB0byBhdHRhY2hcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTc2My0gKi9cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jOjE3NjQ6aW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYy0xNzY1LVxcdFxcdCAgICAgIHUzMiBmbGFncywgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTkxOS19XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxOTIwOkVYUE9SVF9TWU1CT0wocGh5X2F0dGFjaF9kaXJlY3QpO1xcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTkyMS1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMtMTkyNi0gKiBUaGlzIGRldGFjaGVzIHRoZSBwaHkgZGV2aWNlIGZyb20gaXRzIG5ldHdvcmsgZGV2aWNlIGFuZCB0aGUgcGh5XFxuZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYzoxOTI3OiAqIGRyaXZlciwgYW5kIGRyb3BzIHRoZSByZWZlcmVuY2UgY291bnQgdGFrZW4gaW4gcGh5X2F0dGFjaF9kaXJlY3QoKS5cXG5kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jLTE5MjgtICovXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMjE9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjM0LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjIzNTpcXHRyZXR1cm4gcGh5X2F0dGFjaF9kaXJlY3QocGwtXFx1MDAzZW5ldGRldiwgcGh5LCBmbGFncywgaW50ZXJmYWNlKTtcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyMzYtfVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjQzLSAqIENvbm5lY3QgQHBoeSB0byB0aGUgcGh5bGluayBpbnN0YW5jZSBzcGVjaWZpZWQgYnkgQHBsIGJ5IGNhbGxpbmdcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNDQ6ICogcGh5X2F0dGFjaF9kaXJlY3QoKS4gQ29uZmlndXJlIHRoZSBAcGh5IGFjY29yZGluZyB0byB0aGUgTUFDIGRyaXZlcidzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjQ1LSAqIGNhcGFiaWxpdGllcywgc3RhcnQgdGhlIFBIWUxJQiBzdGF0ZSBtYWNoaW5lIGFuZCBlbmFibGUgYW55IGludGVycnVwdHNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjMwNT1pbnQgcGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3Qoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzM4LVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjMzOTpcXHRyZXQgPSBwaHlfYXR0YWNoX2RpcmVjdChwbC1cXHUwMDNlbmV0ZGV2LCBwaHlfZGV2LCBmbGFncyxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzNDAtXFx0XFx0XFx0XFx0cGwtXFx1MDAzZWxpbmtfaW50ZXJmYWNlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMjE6NDg6MzUuMjUxMzI2MDUyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTc3NzUwODgyNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBQSFkgRGV2aWNlIEltcGxlbWVudGF0aW9ucyoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGRyaXZlcnMgaW4gdGhlIGtlcm5lbCB1dGlsaXplIGBwaHlsaW5rYCBvciBgcGh5X2RldmljZWAsIGFuZCBtb3JlIGltcG9ydGFudGx5LCB3aGljaCBvZiB0aGVtIG1pZ2h0IGxlbmQgdGhlbXNlbHZlcyB0byB0ZXN0aW5nIHdpdGhpbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQuIEknbSB0aGlua2luZyBRRU1VLCBtYXliZSBhIGR1bW15IHNldHVwLCBuZXRsaW5rLCBvciBldmVuIHN5emthbGxlciBjb3VsZCBiZSB1c2VmdWwgaGVyZS4gVGhlIGtleSBpcyBmaW5kaW5nIHRlc3RhYmxlIHRhcmdldHMuXG5cbkZpcnN0LCBJIHNob3VsZCBjaGVjayBmb3IgYW55IGV4aXN0aW5nIHZpcnR1YWwgUEhZIGRldmljZXMuIEFyZSB0aGVyZSBhbnkgZHJpdmVycyB0aGF0IHNpbXVsYXRlIGEgUEhZPyBPciBtYXliZSBVU0IgbmV0d29yayBkcml2ZXJzLCBzb21ldGhpbmcgbGlrZSBgY2RjX25jbWAgb3IgYHVzYm5ldGA/IFdoYXQgYWJvdXQgYSBEU0EgbG9vcGJhY2sgb3IgbW9jayBNRElPPyBBbmQsIGNydWNpYWxseSwgY2FuIEkgbGV2ZXJhZ2UgUUVNVSdzIGVtdWxhdGVkIGhhcmR3YXJlLCBsaWtlIHRoZSBgZTEwMDBgIG9yIGBpZ2JgIGV0aGVybmV0IGNvbnRyb2xsZXJzPyBEbyB0aG9zZSB1c2UgYHBoeWxpbmtgIG9yIGBwaHlsaWJgIGludGVybmFsbHk/IFRoYXQncyBhIGh1Z2UgcXVlc3Rpb24gSSBuZWVkIHRvIGFuc3dlci5cblxuVG8gbWFrZSBwcm9ncmVzcywgSSdsbCBzdGFydCBieSBzeXN0ZW1hdGljYWxseSBzZWFyY2hpbmcgZm9yIHVzYWdlcyBvZiBrZXkgZnVuY3Rpb25zLiBMZXQncyBzZWUgd2hpY2ggZHJpdmVycyBhcmUgY2FsbGluZyBgcGh5X2Nvbm5lY3RgLCBgcGh5X2F0dGFjaGAsIGBwaHlsaW5rX2NyZWF0ZWAsIGBwaHlsaW5rX2Nvbm5lY3RfcGh5YCwgYW5kIGBtZGlvYnVzX3JlZ2lzdGVyYC4gVGhpcyBzaG91bGQgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHdoaWNoIHBhcnRzIG9mIHRoZSBjb2RlYmFzZSBhcmUgbW9zdCByZWxldmFudCBhbmQgcG9pbnQgbWUgdG93YXJkcyBwb3RlbnRpYWwgY2FuZGlkYXRlcyBmb3IgdmlydHVhbGl6YXRpb24gYW5kIHRlc3RpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5ODQ2LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDIxOjQ5OjMzLjAyNjQxNjE2MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjU0MDc1ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGh5bGlua19jcmVhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9hbHRlcmFfdHNlX21haW4uYz0xMTI4PXN0YXRpYyBpbnQgYWx0ZXJhX3RzZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jLTE0MTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWx0ZXJhL2FsdGVyYV90c2VfbWFpbi5jOjE0MTY6XFx0cHJpdi1cXHUwMDNlcGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwcml2LVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvYWx0ZXJhX3RzZV9tYWluLmMtMTQxNy1cXHRcXHRcXHRcXHQgICAgICAgb2ZfZndub2RlX2hhbmRsZShwcml2LVxcdTAwM2VkZXZpY2UtXFx1MDAzZW9mX25vZGUpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYz0xMDc0PXN0YXRpYyBpbnQgYWc3MXh4X3BoeWxpbmtfc2V0dXAoc3RydWN0IGFnNzF4eCAqYWcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTExMDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9hZzcxeHguYzoxMTA5OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2YWctXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBhZy1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hdGhlcm9zL2FnNzF4eC5jLTExMTAtXFx0XFx0XFx0XFx0IGFnLVxcdTAwM2VwaHlfaWZfbW9kZSwgXFx1MDAyNmFnNzF4eF9waHlsaW5rX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9tYWNiX21haW4uYz0xMDIzPXN0YXRpYyBpbnQgbWFjYl9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvbWFjYl9tYWluLmMtMTA4NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jOjEwODY6XFx0YnAtXFx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2YnAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBicC1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL21hY2JfbWFpbi5jLTEwODctXFx0XFx0XFx0XFx0ICAgICBicC1cXHUwMDNlcGh5X2ludGVyZmFjZSwgXFx1MDAyNm1hY2JfcGh5bGlua19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYz0yMDE9c3RhdGljIGludCBkcGFhX25ldGRldl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRfZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvZHBhYV9ldGguYy0yNzQtXFx0bWFjX2Rldi1cXHUwMDNldXBkYXRlX3NwZWVkID0gZHBhYV9ldGhfY2dyX3NldF9zcGVlZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9kcGFhX2V0aC5jOjI3NTpcXHRtYWNfZGV2LVxcdTAwM2VwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNm1hY19kZXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL2RwYWFfZXRoLmMtMjc2LVxcdFxcdFxcdFxcdFxcdCAgZGV2X2Z3bm9kZShtYWNfZGV2LVxcdTAwM2VkZXYpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jPTU2MD1pbnQgZHBhYTJfbWFjX2Nvbm5lY3Qoc3RydWN0IGRwYWEyX21hYyAqbWFjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL2RwYWEyLW1hYy5jLTYyNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmM6NjI1OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2bWFjLVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvZHBhYTItbWFjLmMtNjI2LVxcdFxcdFxcdFxcdCBkcG1hY19ub2RlLCBtYWMtXFx1MDAzZWlmX21vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM9OTMxPXN0YXRpYyBpbnQgZW5ldGM0X2xpbmtfaW5pdChzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTUwOlxcdGVyciA9IGVuZXRjX3BoeWxpbmtfY3JlYXRlKHByaXYsIG5vZGUsIFxcdTAwMjZlbmV0Y19wbF9tYWNfb3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTUxLVxcdGlmIChlcnIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTUyLVxcdFxcdGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIGNyZWF0ZSBwaHlsaW5rXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTUzOlxcdFxcdGdvdG8gZXJyX3BoeWxpbmtfY3JlYXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0YzRfcGYuYy05NTQtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjNF9wZi5jLTk1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmM6OTU4OmVycl9waHlsaW5rX2NyZWF0ZTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGM0X3BmLmMtOTU5LVxcdGVuZXRjX21kaW9idXNfZGVzdHJveShwZik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYz03OTU9c3RhdGljIGludCBlbmV0Y19wZl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTg3Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYzo4Nzg6XFx0ZXJyID0gZW5ldGNfcGh5bGlua19jcmVhdGUocHJpdiwgbm9kZSwgXFx1MDAyNmVuZXRjX21hY19waHlsaW5rX29wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmMtODc5LVxcdGlmIChlcnIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6ODgwOlxcdFxcdGdvdG8gZXJyX3BoeWxpbmtfY3JlYXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTg4MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZi5jLTg4OS1cXHRlbmV0Y19waHlsaW5rX2Rlc3Ryb3kocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmLmM6ODkwOmVycl9waHlsaW5rX2NyZWF0ZTpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGYuYy04OTEtXFx0ZW5ldGNfbWRpb2J1c19kZXN0cm95KHBmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYz00MTk9RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfbWRpb2J1c19kZXN0cm95KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtNDIwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzo0MjE6aW50IGVuZXRjX3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBlbmV0Y19uZGV2X3ByaXYgKnByaXYsIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtNDIyLVxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpvcHMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtNDYxLVxcdHBmLVxcdTAwM2VwaHlsaW5rX2NvbmZpZy5tYWNfY2FwYWJpbGl0aWVzID0gbWFjX2NhcHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5jOjQ2MjpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBmLVxcdTAwM2VwaHlsaW5rX2NvbmZpZywgb2ZfZndub2RlX2hhbmRsZShub2RlKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmMtNDYzLVxcdFxcdFxcdFxcdCBwZi1cXHUwMDNlaWZfbW9kZSwgb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy00NzItfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYzo0NzM6RVhQT1JUX1NZTUJPTF9HUEwoZW5ldGNfcGh5bGlua19jcmVhdGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9lbmV0Y19wZl9jb21tb24uYy00NzQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvZW5ldGNfcGZfY29tbW9uLmg9MTI9dm9pZCBlbmV0Y19tZGlvYnVzX2Rlc3Ryb3koc3RydWN0IGVuZXRjX3BmICpwZik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oOjEzOmludCBlbmV0Y19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgZW5ldGNfbmRldl9wcml2ICpwcml2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL2VuZXRjX3BmX2NvbW1vbi5oLTE0LVxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpvcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvZnNfZW5ldC1tYWluLmM9ODUzPXN0YXRpYyBpbnQgZnNfZW5ldF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpvZmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L2ZzX2VuZXQtbWFpbi5jLTkzMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYzo5MzM6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZmZXAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKGZlcC1cXHUwMDNlZGV2KSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9mc19lbmV0LW1haW4uYy05MzQtXFx0XFx0XFx0XFx0IHBoeV9tb2RlLCBcXHUwMDI2ZnNfZW5ldF9waHlsaW5rX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmM9MzQxOT1zdGF0aWMgaW50IHVjY19nZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UqIG9mZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmMtMzU3My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvdWNjX2dldGguYzozNTc0OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2dWdldGgtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXZfZndub2RlKFxcdTAwMjZkZXYtXFx1MDAzZWRldiksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL3VjY19nZXRoLmMtMzU3NS1cXHRcXHRcXHRcXHQgcGh5X2ludGVyZmFjZSwgXFx1MDAyNnVnZXRoX21hY19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm5ldGEuYz01NDgwPXN0YXRpYyBpbnQgbXZuZXRhX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212bmV0YS5jLTU1OTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdm5ldGEuYzo1NTk5OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2cHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBwZGV2LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZuZXRhLmMtNTYwMC1cXHRcXHRcXHRcXHQgcGh5X21vZGUsIFxcdTAwMjZtdm5ldGFfcGh5bGlua19vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmM9Njg0MD1zdGF0aWMgaW50IG12cHAyX3BvcnRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvbXZwcDIvbXZwcDJfbWFpbi5jLTcxNDctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9tdnBwMi9tdnBwMl9tYWluLmM6NzE0ODpcXHRcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBvcnQtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBwb3J0X2Z3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL212cHAyL212cHAyX21haW4uYy03MTQ5LVxcdFxcdFxcdFxcdFxcdCBwaHlfbW9kZSwgXFx1MDAyNm12cHAyX3BoeWxpbmtfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvcHJlc3RlcmFfbWFpbi5jPTM3MD1zdGF0aWMgaW50IHByZXN0ZXJhX3BvcnRfc2ZwX2JpbmQoc3RydWN0IHByZXN0ZXJhX3BvcnQgKnBvcnQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYy00MTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9wcmVzdGVyYV9tYWluLmM6NDE3OlxcdFxcdHBoeV9saW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBvcnQtXFx1MDAzZXBoeV9jb25maWcsIGZ3bm9kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL3ByZXN0ZXJhL3ByZXN0ZXJhX21haW4uYy00MTgtXFx0XFx0XFx0XFx0XFx0ICBQSFlfSU5URVJGQUNFX01PREVfSU5URVJOQUwsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfZXRoX3NvYy5jPTQ4MjQ9c3RhdGljIGludCBtdGtfYWRkX21hYyhzdHJ1Y3QgbXRrX2V0aCAqZXRoLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy00OTY4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19ldGhfc29jLmM6NDk2OTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNm1hYy1cXHUwMDNlcGh5bGlua19jb25maWcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX2V0aF9zb2MuYy00OTcwLVxcdFxcdFxcdFxcdCBvZl9md25vZGVfaGFuZGxlKG1hYy1cXHUwMDNlb2Zfbm9kZSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5jPTc0Nj1zdHJ1Y3QgbmV0X2RldmljZSAqZmJuaWNfbmV0ZGV2X2FsbG9jKHN0cnVjdCBmYm5pY19kZXYgKmZiZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmMtODM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmM6ODM1OlxcdGlmIChmYm5pY19waHlsaW5rX2NyZWF0ZShuZXRkZXYpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19uZXRkZXYuYy04MzYtXFx0XFx0ZnJlZV9uZXRkZXYobmV0ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2Lmg9MTExPWludCBmYm5pY19waHlsaW5rX2dldF9mZWNwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2LmgtMTEyLVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZXRodG9vbF9mZWNwYXJhbSAqZmVjcGFyYW0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfbmV0ZGV2Lmg6MTEzOmludCBmYm5pY19waHlsaW5rX2NyZWF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX25ldGRldi5oLTExNC12b2lkIGZibmljX3BoeWxpbmtfZGVzdHJveShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jPTE3Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHBoeWxpbmtfbWFjX29wcyBmYm5pY19waHlsaW5rX21hY19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0xODYtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmM6MTg3OiAqIGZibmljX3BoeWxpbmtfY3JlYXRlIC0gUGh5bGluayBkZXZpY2UgY3JlYXRpb25cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYy0xODgtICogQG5ldGRldjogTmV0d29yayBEZXZpY2Ugc3RydWN0IHRvIGF0dGFjaCBwaHlsaW5rIGRldmljZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTk2LSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYzoxOTc6aW50IGZibmljX3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY19waHlsaW5rLmMtMTk4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTIzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3BoeWxpbmsuYzoyMzI6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZmYm4tXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBOVUxMLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfcGh5bGluay5jLTIzMy1cXHRcXHRcXHRcXHQgZmJuaWNfcGh5bGlua19zZWxlY3RfaW50ZXJmYWNlKGZibi1cXHUwMDNlYXVpKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW43NDN4X21haW4uYz0zMTUyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIGxhbjc0M3hfcGh5bGlua19tYWNfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxNTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjMxNjA6c3RhdGljIGludCBsYW43NDN4X3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBsYW43NDN4X2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMxNjEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMyMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjMyMTI6XFx0cGwgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2YWRhcHRlci1cXHUwMDNlcGh5bGlua19jb25maWcsIE5VTEwsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTMyMTMtXFx0XFx0XFx0ICAgIGFkYXB0ZXItXFx1MDAzZXBoeV9pbnRlcmZhY2UsIFxcdTAwMjZsYW43NDN4X3BoeWxpbmtfbWFjX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmM9MzY5MT1zdGF0aWMgaW50IGxhbjc0M3hfcGNpZGV2X3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jLTM3NTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjc0M3hfbWFpbi5jOjM3NTE6XFx0cmV0ID0gbGFuNzQzeF9waHlsaW5rX2NyZWF0ZShhZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuNzQzeF9tYWluLmMtMzc1Mi1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL2xhbjk2NngvbGFuOTY2eF9tYWluLmM9NzkxPXN0YXRpYyBpbnQgbGFuOTY2eF9wcm9iZV9wb3J0KHN0cnVjdCBsYW45NjZ4ICpsYW45NjZ4LCB1MzIgcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9sYW45NjZ4L2xhbjk2NnhfbWFpbi5jLTg1NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYzo4NTY6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKFxcdTAwMjZwb3J0LVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9sYW45NjZ4X21haW4uYy04NTctXFx0XFx0XFx0XFx0IHBvcnRucCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvc3Bhcng1X21haW4uYz0zMTI9c3RhdGljIGludCBzcGFyeDVfY3JlYXRlX3BvcnQoc3RydWN0IHNwYXJ4NSAqc3Bhcng1LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFyeDVfbWFpbi5jLTM4OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmM6Mzg5OlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2c3B4NV9wb3J0LVxcdTAwM2VwaHlsaW5rX2NvbmZpZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4NV9tYWluLmMtMzkwLVxcdFxcdFxcdFxcdCBvZl9md25vZGVfaGFuZGxlKGNvbmZpZy1cXHUwMDNlbm9kZSksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL29jZWxvdF9uZXQuYz0xNzc0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIG9jZWxvdF9waHlsaW5rX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE3NzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTc4MDpzdGF0aWMgaW50IG9jZWxvdF9wb3J0X3BoeWxpbmtfY3JlYXRlKHN0cnVjdCBvY2Vsb3QgKm9jZWxvdCwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTc4MS1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKnBvcnRucClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4MjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTgyMTpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnByaXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4MjItXFx0XFx0XFx0XFx0IG9mX2Z3bm9kZV9oYW5kbGUocG9ydG5wKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jPTE4NDM9aW50IG9jZWxvdF9wcm9iZV9wb3J0KHN0cnVjdCBvY2Vsb3QgKm9jZWxvdCwgaW50IHBvcnQsIHN0cnVjdCByZWdtYXAgKnRhcmdldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2Mvb2NlbG90X25ldC5jLTE4NzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmM6MTg4MDpcXHRlcnIgPSBvY2Vsb3RfcG9ydF9waHlsaW5rX2NyZWF0ZShvY2Vsb3QsIHBvcnQsIHBvcnRucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbXNjYy9vY2Vsb3RfbmV0LmMtMTg4MS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz0xMzc0PXN0YXRpYyBpbnQgc3RtbWFjX3BoeWxpbmtfc2V0dXAoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNDY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6MTQ2NjpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBkZXZfZndub2RlKHByaXYtXFx1MDAzZWRldmljZSksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0xNDY3LVxcdFxcdFxcdFxcdCBwcml2LVxcdTAwM2VwbGF0LVxcdTAwM2VwaHlfaW50ZXJmYWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL3RuNDBfcGh5LmM9NDU9aW50IHRuNDBfcGh5X3JlZ2lzdGVyKHN0cnVjdCB0bjQwX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MF9waHkuYy02Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MF9waHkuYzo2MzpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBOVUxMLCBQSFlfSU5URVJGQUNFX01PREVfWEFVSSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90ZWh1dGkvdG40MF9waHkuYy02NC1cXHRcXHRcXHRcXHQgXFx1MDAyNnRuNDBfbWFjX29wcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9hbTY1LWNwc3ctbnVzcy5jPTI3NTk9YW02NV9jcHN3X251c3NfaW5pdF9wb3J0X25kZXYoc3RydWN0IGFtNjVfY3Bzd19jb21tb24gKmNvbW1vbiwgdTMyIHBvcnRfaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvYW02NS1jcHN3LW51c3MuYy0yODQzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmM6Mjg0NDpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnBvcnQtXFx1MDAzZXNsYXZlLnBoeWxpbmtfY29uZmlnLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2FtNjUtY3Bzdy1udXNzLmMtMjg0NS1cXHRcXHRcXHRcXHQgb2ZfZndub2RlX2hhbmRsZShwb3J0LVxcdTAwM2VzbGF2ZS5wb3J0X25wKSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vbmdiZS9uZ2JlX21kaW8uYz0xMzA9c3RhdGljIGludCBuZ2JlX3BoeWxpbmtfaW5pdChzdHJ1Y3Qgd3ggKnd4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9uZ2JlL25nYmVfbWRpby5jLTE0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tZGlvLmM6MTUwOlxcdHBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShjb25maWcsIE5VTEwsIHBoeV9tb2RlLCBcXHUwMDI2bmdiZV9tYWNfb3BzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL25nYmUvbmdiZV9tZGlvLmMtMTUxLVxcdGlmIChJU19FUlIocGh5bGluaykpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX2FtbC5jPTQ4Mj1pbnQgdHhnYmVfcGh5bGlua19pbml0X2FtbChzdHJ1Y3QgdHhnYmUgKnR4Z2JlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYy01MTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYzo1MTM6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKGNvbmZpZywgTlVMTCwgcGh5X21vZGUsIFxcdTAwMjZ0eGdiZV9tYWNfb3BzX2FtbCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9hbWwuYy01MTQtXFx0aWYgKElTX0VSUihwaHlsaW5rKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vdHhnYmUvdHhnYmVfcGh5LmM9MjY4PXN0YXRpYyBpbnQgdHhnYmVfcGh5bGlua19pbml0KHN0cnVjdCB0eGdiZSAqdHhnYmUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jLTI5Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC93YW5neHVuL3R4Z2JlL3R4Z2JlX3BoeS5jOjI5MzpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoY29uZmlnLCBmd25vZGUsIHBoeV9tb2RlLCBcXHUwMDI2dHhnYmVfbWFjX29wcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi90eGdiZS90eGdiZV9waHkuYy0yOTQtXFx0aWYgKElTX0VSUihwaHlsaW5rKSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmM9Mjc5NT1zdGF0aWMgaW50IGF4aWVuZXRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzEyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMxMjE6XFx0bHAtXFx1MDAzZXBoeWxpbmsgPSBwaHlsaW5rX2NyZWF0ZShcXHUwMDI2bHAtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBwZGV2LVxcdTAwM2VkZXYuZndub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzEyMi1cXHRcXHRcXHRcXHQgICAgIGxwLVxcdTAwM2VwaHlfbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC94aWxpbnhfYXhpZW5ldF9tYWluLmMtMzEyNS1cXHRcXHRyZXQgPSBQVFJfRVJSKGxwLVxcdTAwM2VwaHlsaW5rKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jOjMxMjY6XFx0XFx0ZGV2X2VycihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwicGh5bGlua19jcmVhdGUgZXJyb3IgKCVpKVxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94aWxpbngveGlsaW54X2F4aWVuZXRfbWFpbi5jLTMxMjctXFx0XFx0Z290byBjbGVhbnVwX21kaW87XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTUxNT1zdGF0aWMgaW50IHBoeWxpbmtfdmFsaWRhdGVfbWFjX2FuZF9wY3Moc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy01MzAtXFx0aWYgKHBjcykge1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6NTMxOlxcdFxcdC8qIFRoZSBQQ1MsIGlmIHByZXNlbnQsIG11c3QgYmUgc2V0dXAgYmVmb3JlIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTUzMi1cXHRcXHQgKiBoYXMgYmVlbiBjYWxsZWQuIElmIHRoZSBvcHMgaXMgbm90IGluaXRpYWxpc2VkLCBwcmludCBhblxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xMDM4PXN0YXRpYyBlbnVtIGluYmFuZF90eXBlIHBoeWxpbmtfZ2V0X2luYmFuZF90eXBlKHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTEwNzAtICogcGh5bGlua19wY3NfbmVnX21vZGUoKSAtIGhlbHBlciB0byBkZXRlcm1pbmUgUENTIGluYmFuZCBtb2RlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxMDcxOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTA3Mi0gKiBAcGNzOiBhIHBvaW50ZXIgdG8gXFx1MDAyNnN0cnVjdCBwaHlsaW5rX3Bjc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xNzY4PXN0YXRpYyBpbnQgcGh5bGlua19yZWdpc3Rlcl9zZnAoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xNzkyLSAqIHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmsoKSAtIHNldCB0aGUgZml4ZWQgbGlua1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTc5MzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE3OTQtICogQHN0YXRlOiBhIHBvaW50ZXIgdG8gYSBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0xODMwPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc2V0X2ZpeGVkX2xpbmspO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xODMyLS8qKlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTgzMzogKiBwaHlsaW5rX2NyZWF0ZSgpIC0gY3JlYXRlIGEgcGh5bGluayBpbnN0YW5jZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMTgzNC0gKiBAY29uZmlnOiBhIHBvaW50ZXIgdG8gdGhlIHRhcmdldCBcXHUwMDI2c3RydWN0IHBoeWxpbmtfY29uZmlnXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NDctICovXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoxODQ4OnN0cnVjdCBwaHlsaW5rICpwaHlsaW5rX2NyZWF0ZShzdHJ1Y3QgcGh5bGlua19jb25maWcgKmNvbmZpZyxcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE4NDktXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBmd25vZGVfaGFuZGxlICpmd25vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5MzUtfVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTkzNjpFWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2NyZWF0ZSk7XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM3LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTM5LSAqIHBoeWxpbmtfZGVzdHJveSgpIC0gY2xlYW51cCBhbmQgZGVzdHJveSB0aGUgcGh5bGluayBpbnN0YW5jZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MTk0MDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTE5NDEtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MTk1Nj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2Rlc3Ryb3kpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTU5LSAqIHBoeWxpbmtfZXhwZWN0c19waHkoKSAtIERldGVybWluZSBpZiBwaHlsaW5rIGV4cGVjdHMgYSBwaHkgdG8gYmUgYXR0YWNoZWRcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjE5NjA6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0xOTYxLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIyMjE9c3RhdGljIGludCBwaHlsaW5rX2F0dGFjaF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjM5LSAqIHBoeWxpbmtfY29ubmVjdF9waHkoKSAtIGNvbm5lY3QgYSBQSFkgdG8gdGhlIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjIyNDA6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjQxLSAqIEBwaHk6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5X2RldmljZS5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjI3Mz1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX2Nvbm5lY3RfcGh5KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI3Ni0gKiBwaHlsaW5rX29mX3BoeV9jb25uZWN0KCkgLSBjb25uZWN0IHRoZSBQSFkgc3BlY2lmaWVkIGluIHRoZSBEVCBtb2RlLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjI3NzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIyNzgtICogQGRuOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGRldmljZV9ub2RlLlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMjkyPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3QpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMjk1LSAqIHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0KCkgLSBjb25uZWN0IHRoZSBQSFkgc3BlY2lmaWVkIGluIHRoZSBmd25vZGUuXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMjk2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjI5Ny0gKiBAZndub2RlOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGZ3bm9kZV9oYW5kbGUuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTIzNTE9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3QpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yMzU1LSAqICAgaW5zdGFuY2UuXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyMzU2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM1Ny0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yMzc5PXN0YXRpYyB2b2lkIHBoeWxpbmtfbGlua19jaGFuZ2VkKHN0cnVjdCBwaHlsaW5rICpwbCwgYm9vbCB1cCwgY29uc3QgY2hhciAqd2hhdClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjM4OC0gKiBwaHlsaW5rX21hY19jaGFuZ2UoKSAtIG5vdGlmeSBwaHlsaW5rIG9mIGEgY2hhbmdlIGluIE1BQyBzdGF0ZVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjM4OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTIzOTAtICogQHVwOiBpbmRpY2F0ZXMgd2hldGhlciB0aGUgbGluayBpcyBjdXJyZW50bHkgdXAuXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI0MjE9c3RhdGljIGlycXJldHVybl90IHBoeWxpbmtfbGlua19oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI0MzEtICogcGh5bGlua19zdGFydCgpIC0gc3RhcnQgYSBwaHlsaW5rIGluc3RhbmNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNDMyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjQzMy0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNDk0PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfc3RhcnQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDk3LSAqIHBoeWxpbmtfc3RvcCgpIC0gc3RvcCBhIHBoeWxpbmsgaW5zdGFuY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI0OTg6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNDk5LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1Mjg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19zdG9wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUzMS0gKiBwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKCkgLSBibG9jayBQSFkgYWJpbGl0eSB0byBzdG9wIHJlY2VpdmUgY2xvY2sgaW4gTFBJXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNTMyOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjUzMy0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNTU3PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2spO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTYwLSAqIHBoeWxpbmtfcnhfY2xrX3N0b3BfdW5ibG9jaygpIC0gdW5ibG9jayBQSFkgYWJpbGl0eSB0byBzdG9wIHJlY2VpdmUgY2xvY2tcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI1NjE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNTYyLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI1OTk9c3RhdGljIGJvb2wgcGh5bGlua19waHlfcG1fc3BlZWRfY3RybChzdHJ1Y3QgcGh5bGluayAqcGwpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2MDYtICogcGh5bGlua19zdXNwZW5kKCkgLSBoYW5kbGUgYSBuZXR3b3JrIGRldmljZSBzdXNwZW5kIGV2ZW50XFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzoyNjA3OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjYwOC0gKiBAbWFjX3dvbDogdHJ1ZSBpZiB0aGUgTUFDIG5lZWRzIHRvIHJlY2VpdmUgcGFja2V0cyBmb3IgV2FrZS1vbi1MYW5cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjY1OD1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3N1c3BlbmQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjYxLSAqIHBoeWxpbmtfcHJlcGFyZV9yZXN1bWUoKSAtIHByZXBhcmUgdG8gcmVzdW1lIGEgbmV0d29yayBkZXZpY2VcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI2NjI6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNjYzLSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI2ODM9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19wcmVwYXJlX3Jlc3VtZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2ODYtICogcGh5bGlua19yZXN1bWUoKSAtIGhhbmRsZSBhIG5ldHdvcmsgZGV2aWNlIHJlc3VtZSBldmVudFxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjY4NzogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI2ODgtICpcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MjcyNj1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3Jlc3VtZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3MjktICogcGh5bGlua19ldGh0b29sX2dldF93b2woKSAtIGdldCB0aGUgd2FrZSBvbiBsYW4gcGFyYW1ldGVycyBmb3IgdGhlIFBIWVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MjczMDogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTI3MzEtICogQHdvbDogYSBwb2ludGVyIHRvIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF93b2xpbmZvIHRvIGhvbGQgdGhlIHJlYWQgcGFyYW1ldGVyc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yNzYzPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9nZXRfd29sKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjc2Ni0gKiBwaHlsaW5rX2V0aHRvb2xfc2V0X3dvbCgpIC0gc2V0IHdha2Ugb24gbGFuIHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI3Njc6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yNzY4LSAqIEB3b2w6IGEgcG9pbnRlciB0byBcXHUwMDI2c3RydWN0IGV0aHRvb2xfd29saW5mbyBmb3IgdGhlIGRlc2lyZWQgcGFyYW1ldGVyc1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0yODk1PXN0YXRpYyB2b2lkIHBoeWxpbmtfZ2V0X2tzZXR0aW5ncyhjb25zdCBzdHJ1Y3QgcGh5bGlua19saW5rX3N0YXRlICpzdGF0ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMjkxMC0gKiBwaHlsaW5rX2V0aHRvb2xfa3NldHRpbmdzX2dldCgpIC0gZ2V0IHRoZSBjdXJyZW50IGxpbmsgc2V0dGluZ3NcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5MTE6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTEyLSAqIEBrc2V0OiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgdG8gaG9sZCBsaW5rIHNldHRpbmdzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTI5NjM9c3RhdGljIGJvb2wgcGh5bGlua192YWxpZGF0ZV9wY3NfaW5iYW5kX2F1dG9uZWcoc3RydWN0IHBoeWxpbmsgKnBsLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTg0LSAqIHBoeWxpbmtfZXRodG9vbF9rc2V0dGluZ3Nfc2V0KCkgLSBzZXQgdGhlIGxpbmsgc2V0dGluZ3NcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjI5ODU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0yOTg2LSAqIEBrc2V0OiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGV0aHRvb2xfbGlua19rc2V0dGluZ3MgZm9yIHRoZSBkZXNpcmVkIG1vZGVzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMxNTE9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2tzZXR0aW5nc19zZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMTU0LSAqIHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KCkgLSByZXN0YXJ0IG5lZ290aWF0aW9uXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTU1OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE1Ni0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMTc2PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZXRodG9vbF9ud2F5X3Jlc2V0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE3OS0gKiBwaHlsaW5rX2V0aHRvb2xfZ2V0X3BhdXNlcGFyYW0oKSAtIGdldCB0aGUgY3VycmVudCBwYXVzZSBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTgwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE4MS0gKiBAcGF1c2U6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMxOTI9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2dldF9wYXVzZXBhcmFtKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE5NS0gKiBwaHlsaW5rX2V0aHRvb2xfc2V0X3BhdXNlcGFyYW0oKSAtIHNldCB0aGUgY3VycmVudCBwYXVzZSBwYXJhbWV0ZXJzXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozMTk2OiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzE5Ny0gKiBAcGF1c2U6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9wYXVzZXBhcmFtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMyNzg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX3NldF9wYXVzZXBhcmFtKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI4Mi0gKiAgIGNvdW50ZXJcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMyODM6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpLlxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzI4NC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz0zMzAxPUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfZ2V0X2VlZV9lcnIpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzA0LSAqIHBoeWxpbmtfZXRodG9vbF9nZXRfZWVlKCkgLSByZWFkIHRoZSBlbmVyZ3kgZWZmaWNpZW50IGV0aGVybmV0IHBhcmFtZXRlcnNcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjMzMDU6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzA2LSAqIEBlZWU6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgZXRodG9vbF9rZWVlIGZvciB0aGUgcmVhZCBwYXJhbWV0ZXJzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTMzMjc9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19ldGh0b29sX2dldF9lZWUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zMzMwLSAqIHBoeWxpbmtfZXRodG9vbF9zZXRfZWVlKCkgLSBzZXQgdGhlIGVuZXJneSBlZmZpY2llbnQgZXRoZXJuZXQgcGFyYW1ldGVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzMzMTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTMzMzItICogQGVlZTogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBldGh0b29sX2tlZWUgZm9yIHRoZSBkZXNpcmVkIHBhcmFtZXRlcnNcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzUwMT1zdGF0aWMgaW50IHBoeWxpbmtfbWlpX3dyaXRlKHN0cnVjdCBwaHlsaW5rICpwbCwgdW5zaWduZWQgaW50IHBoeV9pZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzUxOS0gKiBwaHlsaW5rX21paV9pb2N0bCgpIC0gZ2VuZXJpYyBtaWkgaW9jdGwgaW50ZXJmYWNlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzozNTIwOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtMzUyMS0gKiBAaWZyOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IGlmcmVxIGZvciBzb2NrZXQgaW9jdGxzXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTM1OTQ9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19taWlfaW9jdGwpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNTk4LSAqICAgbGluayBwYXJ0bmVyc1xcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM6MzU5OTogKiBAcGw6IGEgcG9pbnRlciB0byBhIFxcdTAwMjZzdHJ1Y3QgcGh5bGluayByZXR1cm5lZCBmcm9tIHBoeWxpbmtfY3JlYXRlKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jLTM2MDAtICogQHN5bmM6IHBlcmZvcm0gYWN0aW9uIHN5bmNocm9ub3VzbHlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmM9MzYxOT1FWFBPUlRfU1lNQk9MX0dQTChwaHlsaW5rX3NwZWVkX2Rvd24pO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNjIzLSAqICAgcGh5bGlua19zcGVlZF9kb3duKClcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjM2MjQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy0zNjI1LSAqXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jPTQzNzg9RVhQT1JUX1NZTUJPTF9HUEwocGh5bGlua19taWlfYzQ1X3Bjc19nZXRfc3RhdGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00MzgyLSAqXFx0XFx0XFx0XFx0IHdoaWNoIGxvc2VzIHN0YXRlXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYzo0MzgzOiAqIEBwbDogYSBwb2ludGVyIHRvIGEgXFx1MDAyNnN0cnVjdCBwaHlsaW5rIHJldHVybmVkIGZyb20gcGh5bGlua19jcmVhdGUoKVxcbmRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMtNDM4NC0gKlxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYz00Mzk5PUVYUE9SVF9TWU1CT0xfR1BMKHBoeWxpbmtfcmVwbGF5X2xpbmtfYmVnaW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00NDAzLSAqXFx0XFx0XFx0ICAgICAgIHdoaWNoIGxvc3Qgc3RhdGVcXG5kcml2ZXJzL25ldC9waHkvcGh5bGluay5jOjQ0MDQ6ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuYy00NDA1LSAqXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmM9Nzk5PXN0YXRpYyBpbnQgYXg4ODc3Ml9waHlsaW5rX3NldHVwKHN0cnVjdCB1c2JuZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9hc2l4X2RldmljZXMuYy04MTktXFxuZHJpdmVycy9uZXQvdXNiL2FzaXhfZGV2aWNlcy5jOjgyMDpcXHRwaHlsaW5rID0gcGh5bGlua19jcmVhdGUoXFx1MDAyNnByaXYtXFx1MDAzZXBoeWxpbmtfY29uZmlnLCBkZXYtXFx1MDAzZW5ldC1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmMtODIxLVxcdFxcdFxcdFxcdCBwaHlfaWZfbW9kZSwgXFx1MDAyNmF4ODg3NzJfcGh5bGlua19tYWNfb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmM9Mjc5OT1zdGF0aWMgaW50IGxhbjc4eHhfcGh5bGlua19zZXR1cChzdHJ1Y3QgbGFuNzh4eF9uZXQgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9sYW43OHh4LmMtMjgzOC1cXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jOjI4Mzk6XFx0cGh5bGluayA9IHBoeWxpbmtfY3JlYXRlKHBjLCBkZXYtXFx1MDAzZW5ldC1cXHUwMDNlZGV2LmZ3bm9kZSxcXG5kcml2ZXJzL25ldC91c2IvbGFuNzh4eC5jLTI4NDAtXFx0XFx0XFx0XFx0IGRldi1cXHUwMDNlaW50ZXJmYWNlLCBcXHUwMDI2bGFuNzh4eF9waHlsaW5rX21hY19vcHMpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo0OTozMy42OTE4Mjk4NDJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNDIyOTYxNzU2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFuYWx5c2lzIG9mIHRoZSBOZXR3b3JrIERyaXZlciBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJJ20gc2VlaW5nIGEgcGF0dGVybiBoZXJlLiBMb29raW5nIGF0IHRoZXNlIG5ldHdvcmsgZHJpdmVyIGltcGxlbWVudGF0aW9ucyDigJMgc3BlY2lmaWNhbGx5IGBkcml2ZXJzL25ldC91c2IvYXNpeF9kZXZpY2VzLmNgLCBgbGFuNzh4eC5jYCwgYW5kIHRoZSB3aG9sZSBgZHJpdmVycy9uZXQvZHNhL2AgZGlyZWN0b3J5LCBpbmNsdWRpbmcgdGhhdCBgZHNhX2xvb3AuY2AgZXhhbXBsZSDigJMgaXQncyBjbGVhciB0aGV5J3JlIGxldmVyYWdpbmcgcGh5bGluay4gVGhhdCdzIGEgc29saWQgYXJjaGl0ZWN0dXJhbCBjaG9pY2UsIGFuZCBpdCdzIHNvbWV0aGluZyBJJ3ZlIGJlZW4ga2VlcGluZyBhbiBleWUgb24uIEFuZCwgb2YgY291cnNlLCB0aGUgbWVudGlvbiBvZiBVU0IgZGV2aWNlcyB1c2luZyBnYWRnZXQgZW11bGF0aW9uIHRocm91Z2ggc3l6a2FsbGVyIG9wZW5zIHVwIHNvbWUgZmFzY2luYXRpbmcgdGVzdGluZyBwb3NzaWJpbGl0aWVzIHZpYSByYXctZ2FkZ2V0IGFuZCB2dXNiLlxuXG5UaGUgbmV4dCBzdGVwIGlzIHRvIGRyaWxsIGRvd24gaW50byB0aGUgcGF0Y2ggY2hhbmdlcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgKndoeSogdGhleSBhZG9wdGVkIHBoeWxpbmsgYW5kIHdoYXQgc3BlY2lmaWMgcHJvYmxlbSB0aGV5IHdlcmUgYWRkcmVzc2luZywgb3Igd2hhdCBuZXcgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiBhZGRlZC4gVGhhdCByZXF1aXJlcyBhIGNhcmVmdWwgZXhhbWluYXRpb24gb2YgdGhlIGRpZmZzLlxuXG5Ob3csIHRvIGdldCBhIGRlZXBlciBoYW5kbGUgb24gdGhlIHBoeWxpbmsgaW50ZXJuYWxzIHRoZW1zZWx2ZXMsIEkgbmVlZCB0byBicnVzaCB1cCBvbiBteSBrbm93bGVkZ2Ugb2YgdGhlIHBoeS9waHlsaW5rIGFyY2hpdGVjdHVyZS4gSSdtIGdvaW5nIHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AgZnJvbSBhcm91bmQgbGluZXMgMTczMCB0byAxOTgwIGFuZCBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AgZnJvbSBsaW5lcyAyMDgwIHRvIDIzNzAuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBzb2xpZCBncmFzcCBvZiB0aGUgY29yZSBjb25jZXB0cywgZGF0YSBzdHJ1Y3R1cmVzLCBhbmQgdGhlIGNvbW11bmljYXRpb24gZmxvdyBiZXR3ZWVuIHRoZSBQSFkgYW5kIHRoZSBuZXR3b3JrIGRyaXZlci4gVGhpcyBzaG91bGQgYWxsb3cgbWUgdG8gdW5kZXJzdGFuZCBob3cgdGhvc2UgZGV2aWNlIGRyaXZlcnMgYXJlIHVzaW5nIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTI3NCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo1MDowNy45MjE0NDk4MDJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc0ODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTczMCxcbiAgXCJMaW5lQ291bnRcIjogNzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTczMDpcXHR9XFxuMTczMTpcXHRcXG4xNzMyOlxcdHN0YXRpYyBib29sIHBoeV9kcnZfc3VwcG9ydHNfaXJxKGNvbnN0IHN0cnVjdCBwaHlfZHJpdmVyICpwaHlkcnYpXFxuMTczMzpcXHR7XFxuMTczNDpcXHRcXHRyZXR1cm4gcGh5ZHJ2LVxcdTAwM2Vjb25maWdfaW50ciBcXHUwMDI2XFx1MDAyNiBwaHlkcnYtXFx1MDAzZWhhbmRsZV9pbnRlcnJ1cHQ7XFxuMTczNTpcXHR9XFxuMTczNjpcXHRcXG4xNzM3OlxcdC8qIEdpdmUgYmFjayB0aGUgaW50ZXJydXB0IHBoeV9wcm9iZSgpIHBhcmtlZCB3aGVuIGEgZHJpdmVyIHdpdGggbm8gaW50ZXJydXB0XFxuMTczODpcXHQgKiBjYWxsYmFja3MgYm91bmQuIG1kaW9idXNfYWxsb2MoKSBkZWZhdWx0cyBidXMtXFx1MDAzZWlycVtdIHRvIFBIWV9QT0xMIGFuZCB0aGVcXG4xNzM5OlxcdCAqIGJpbmQgY3ljbGUgZG9lcyBub3QgdG91Y2ggdGhlIHRhYmxlLCBzbyB3aGF0ZXZlciB0aGUgYnVzIHJlY29yZGVkIHRoZXJlXFxuMTc0MDpcXHQgKiBzdGlsbCBzdGFuZHMuIE9ubHkgdGhlIHBhcmtpbmcgaXMgdW5kb25lOiBhbnkgb3RoZXIgdmFsdWUgdGhlIFBIWSBjYXJyaWVzXFxuMTc0MTpcXHQgKiB3YXMgcHV0IHRoZXJlIGJ5IHNvbWVvbmUgZWxzZS5cXG4xNzQyOlxcdCAqL1xcbjE3NDM6XFx0c3RhdGljIHZvaWQgcGh5X3Jlc3RvcmVfZ2VucGh5X2lycShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbjE3NDQ6XFx0e1xcbjE3NDU6XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlaXJxID09IFBIWV9QT0xMKVxcbjE3NDY6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VpcnEgPSBwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLVxcdTAwM2VpcnFbcGh5ZGV2LVxcdTAwM2VtZGlvLmFkZHJdO1xcbjE3NDc6XFx0fVxcbjE3NDg6XFx0XFxuMTc0OTpcXHQvKipcXG4xNzUwOlxcdCAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcXG4xNzUxOlxcdCAqIEBkZXY6IG5ldHdvcmsgZGV2aWNlIHRvIGF0dGFjaFxcbjE3NTI6XFx0ICogQHBoeWRldjogUG9pbnRlciB0byBwaHlfZGV2aWNlIHRvIGF0dGFjaFxcbjE3NTM6XFx0ICogQGZsYWdzOiBQSFkgZGV2aWNlJ3MgZGV2X2ZsYWdzXFxuMTc1NDpcXHQgKiBAaW50ZXJmYWNlOiBQSFkgZGV2aWNlJ3MgaW50ZXJmYWNlXFxuMTc1NTpcXHQgKlxcbjE3NTY6XFx0ICogRGVzY3JpcHRpb246IENhbGxlZCBieSBkcml2ZXJzIHRvIGF0dGFjaCB0byBhIHBhcnRpY3VsYXIgUEhZXFxuMTc1NzpcXHQgKiAgICAgZGV2aWNlLiBUaGUgcGh5X2RldmljZSBpcyBmb3VuZCwgYW5kIHByb3Blcmx5IGhvb2tlZCB1cFxcbjE3NTg6XFx0ICogICAgIHRvIHRoZSBwaHlfZHJpdmVyLiAgSWYgbm8gZHJpdmVyIGlzIGF0dGFjaGVkLCB0aGVuIGFcXG4xNzU5OlxcdCAqICAgICBnZW5lcmljIGRyaXZlciBpcyB1c2VkLiAgVGhlIHBoeV9kZXZpY2UgaXMgZ2l2ZW4gYSBwdHIgdG9cXG4xNzYwOlxcdCAqICAgICB0aGUgYXR0YWNoaW5nIGRldmljZSwgYW5kIGdpdmVuIGEgY2FsbGJhY2sgZm9yIGxpbmsgc3RhdHVzXFxuMTc2MTpcXHQgKiAgICAgY2hhbmdlLiAgVGhlIHBoeV9kZXZpY2UgaXMgcmV0dXJuZWQgdG8gdGhlIGF0dGFjaGluZyBkcml2ZXIuXFxuMTc2MjpcXHQgKiAgICAgVGhpcyBmdW5jdGlvbiB0YWtlcyBhIHJlZmVyZW5jZSBvbiB0aGUgcGh5IGRldmljZS5cXG4xNzYzOlxcdCAqL1xcbjE3NjQ6XFx0aW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuMTc2NTpcXHRcXHRcXHQgICAgICB1MzIgZmxhZ3MsIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXFxuMTc2NjpcXHR7XFxuMTc2NzpcXHRcXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcGh5ZGV2LVxcdTAwM2VtZGlvLmJ1cztcXG4xNzY4OlxcdFxcdHN0cnVjdCBkZXZpY2UgKmQgPSBcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmRldjtcXG4xNzY5OlxcdFxcdHN0cnVjdCBtb2R1bGUgKm5kZXZfb3duZXIgPSBOVUxMO1xcbjE3NzA6XFx0XFx0aW50IGVycjtcXG4xNzcxOlxcdFxcbjE3NzI6XFx0XFx0LyogRm9yIEV0aGVybmV0IGRldmljZSBkcml2ZXJzIHRoYXQgcmVnaXN0ZXIgdGhlaXIgb3duIE1ESU8gYnVzLCB3ZVxcbjE3NzM6XFx0XFx0ICogd2lsbCBoYXZlIGJ1cy1cXHUwMDNlb3duZXIgbWF0Y2ggbmRldl9tb2QsIHNvIHdlIGRvIG5vdCB3YW50IHRvIGluY3JlbWVudFxcbjE3NzQ6XFx0XFx0ICogb3VyIG93biBtb2R1bGUtXFx1MDAzZXJlZmNudCBoZXJlLCBvdGhlcndpc2Ugd2Ugd291bGQgbm90IGJlIGFibGUgdG9cXG4xNzc1OlxcdFxcdCAqIHVubG9hZCBsYXRlciBvbi5cXG4xNzc2OlxcdFxcdCAqL1xcbjE3Nzc6XFx0XFx0aWYgKGRldilcXG4xNzc4OlxcdFxcdFxcdG5kZXZfb3duZXIgPSBkZXYtXFx1MDAzZWRldi5wYXJlbnQtXFx1MDAzZWRyaXZlci1cXHUwMDNlb3duZXI7XFxuMTc3OTpcXHRcXHRpZiAobmRldl9vd25lciAhPSBidXMtXFx1MDAzZW93bmVyIFxcdTAwMjZcXHUwMDI2ICF0cnlfbW9kdWxlX2dldChidXMtXFx1MDAzZW93bmVyKSkge1xcbjE3ODA6XFx0XFx0XFx0cGh5ZGV2X2VycihwaHlkZXYsIFxcXCJmYWlsZWQgdG8gZ2V0IHRoZSBidXMgbW9kdWxlXFxcXG5cXFwiKTtcXG4xNzgxOlxcdFxcdFxcdHJldHVybiAtRUlPO1xcbjE3ODI6XFx0XFx0fVxcbjE3ODM6XFx0XFxuMTc4NDpcXHRcXHRnZXRfZGV2aWNlKGQpO1xcbjE3ODU6XFx0XFxuMTc4NjpcXHRcXHQvKiBBc3N1bWUgdGhhdCBpZiB0aGVyZSBpcyBubyBkcml2ZXIsIHRoYXQgaXQgZG9lc24ndFxcbjE3ODc6XFx0XFx0ICogZXhpc3QsIGFuZCB3ZSBzaG91bGQgdXNlIHRoZSBnZW5waHkgZHJpdmVyLlxcbjE3ODg6XFx0XFx0ICovXFxuMTc4OTpcXHRcXHRpZiAoIWQtXFx1MDAzZWRyaXZlcikge1xcbjE3OTA6XFx0XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlaXNfYzQ1KVxcbjE3OTE6XFx0XFx0XFx0XFx0ZC1cXHUwMDNlZHJpdmVyID0gXFx1MDAyNmdlbnBoeV9jNDVfZHJpdmVyLm1kaW9kcnYuZHJpdmVyO1xcbjE3OTI6XFx0XFx0XFx0ZWxzZVxcbjE3OTM6XFx0XFx0XFx0XFx0ZC1cXHUwMDNlZHJpdmVyID0gXFx1MDAyNmdlbnBoeV9kcml2ZXIubWRpb2Rydi5kcml2ZXI7XFxuMTc5NDpcXHRcXG4xNzk1OlxcdFxcdFxcdHBoeWRldi1cXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDE7XFxuMTc5NjpcXHRcXHR9XFxuMTc5NzpcXHRcXG4xNzk4OlxcdFxcdGlmICghdHJ5X21vZHVsZV9nZXQoZC1cXHUwMDNlZHJpdmVyLVxcdTAwM2Vvd25lcikpIHtcXG4xNzk5OlxcdFxcdFxcdHBoeWRldl9lcnIocGh5ZGV2LCBcXFwiZmFpbGVkIHRvIGdldCB0aGUgZGV2aWNlIGRyaXZlciBtb2R1bGVcXFxcblxcXCIpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo1MDowNy45MjE2Mjc2MjJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mzc2OTI5NjkxNjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0IGRpdmluZyBpbnRvIHRoZSBjb2RlOlxuXG4qKkRlZXBlciBEaXZlIGludG8gUEhZIERyaXZlciBJbnRlcmFjdGlvbnMqKlxuXG5BbHJpZ2h0LCB0aGUgZGlmZiBpcyBpbnRlcmVzdGluZywgYnV0IEkgbmVlZCBhIG1vcmUgY29tcGxldGUgcGljdHVyZS4gSSdtIGdvaW5nIHRvIHN0YXJ0IGRpZ2dpbmcgaW50byBgcGh5X2RldmljZS5jYCBhbmQgYHBoeWxpbmsuY2AuIFNwZWNpZmljYWxseSwgSSdtIGdvaW5nIHRvIGZvY3VzIG9uIHRoZSBjb2RlIGFyb3VuZCB0aGF0IGNoYW5nZS4gSSBrbm93IHRoZXNlIGZpbGVzIGludGltYXRlbHkg4oCTIHRoZXkncmUgdGhlIGhlYXJ0IG9mIGhvdyB3ZSBtYW5hZ2UgdGhlIHBoeXNpY2FsIGxheWVyIGludGVyZmFjZSBhbmQgbGluayBuZWdvdGlhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhpcyBtb2RpZmljYXRpb24gaW1wYWN0cyB0aGUgaW50ZXJhY3Rpb25zIGJldHdlZW4gdGhlc2UgdHdvIGNvcmUgY29tcG9uZW50cy4gV2hhdCBhcmUgdGhlIGRlcGVuZGVuY2llcz8gV2hhdCBzaWRlIGVmZmVjdHMgbWlnaHQgdGhpcyBoYXZlPyBBIGN1cnNvcnkgZ2xhbmNlIGF0IHRoZSBkaWZmIGlzbid0IGVub3VnaDsgSSBuZWVkIHRvIHNlZSB0aGUgY29udGV4dCwgdGhlIGZ1bmN0aW9uIGNhbGxzLCB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGJlaW5nIG1hbmlwdWxhdGVkLiBUaGlzIGRlZXBlciBkaXZlIHdpbGwgZ2l2ZSBtZSB0aGUgaW5zaWdodCBJIHJlcXVpcmUgdG8gdmFsaWRhdGUgdGhlIGNoYW5nZSBhbmQgdW5kZXJzdGFuZCBhbnkgcG90ZW50aWFsIGltcGxpY2F0aW9ucy4gSSB3YW50IHRvIHNlZSB0aGUgKndoeSogYXMgd2VsbCBhcyB0aGUgKndoYXQqLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eSBhbmQgdW5kZXJzdGFuZCB0aGlzIGZ1bGx5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjk5MCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMjE6NTA6NDUuNjE0NTk5MzgyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2MjExMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4OTAsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxODkwOlxcdFxcbjE4OTE6XFx0XFx0cGh5X3Jlc3VtZShwaHlkZXYpO1xcbjE4OTI6XFx0XFxuMTg5MzpcXHRcXHQvKipcXG4xODk0OlxcdFxcdCAqIElmIHRoZSBleHRlcm5hbCBwaHkgdXNlZCBieSBjdXJyZW50IG1hYyBpbnRlcmZhY2UgaXMgbWFuYWdlZCBieVxcbjE4OTU6XFx0XFx0ICogYW5vdGhlciBtYWMgaW50ZXJmYWNlLCBzbyB3ZSBzaG91bGQgY3JlYXRlIGEgZGV2aWNlIGxpbmsgYmV0d2VlblxcbjE4OTY6XFx0XFx0ICogcGh5IGRldiBhbmQgbWFjIGRldi5cXG4xODk3OlxcdFxcdCAqL1xcbjE4OTg6XFx0XFx0aWYgKGRldiBcXHUwMDI2XFx1MDAyNiBwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLVxcdTAwM2VwYXJlbnQgXFx1MDAyNlxcdTAwMjYgZGV2LVxcdTAwM2VkZXYucGFyZW50ICE9IHBoeWRldi1cXHUwMDNlbWRpby5idXMtXFx1MDAzZXBhcmVudClcXG4xODk5OlxcdFxcdFxcdHBoeWRldi1cXHUwMDNlZGV2bGluayA9IGRldmljZV9saW5rX2FkZChkZXYtXFx1MDAzZWRldi5wYXJlbnQsIFxcdTAwMjZwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LFxcbjE5MDA6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBETF9GTEFHX1BNX1JVTlRJTUUgfCBETF9GTEFHX1NUQVRFTEVTUyk7XFxuMTkwMTpcXHRcXG4xOTAyOlxcdFxcdHJldHVybiBlcnI7XFxuMTkwMzpcXHRcXG4xOTA0OlxcdGVycm9yOlxcbjE5MDU6XFx0XFx0LyogcGh5X2RldGFjaCgpIGRvZXMgYWxsIG9mIHRoZSBjbGVhbnVwIGJlbG93ICovXFxuMTkwNjpcXHRcXHRwaHlfZGV0YWNoKHBoeWRldik7XFxuMTkwNzpcXHRcXHRyZXR1cm4gZXJyO1xcbjE5MDg6XFx0XFxuMTkwOTpcXHRlcnJvcl9tb2R1bGVfcHV0OlxcbjE5MTA6XFx0XFx0bW9kdWxlX3B1dChkLVxcdTAwM2Vkcml2ZXItXFx1MDAzZW93bmVyKTtcXG4xOTExOlxcdFxcdHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEocGh5ZGV2KTtcXG4xOTEyOlxcdFxcdHBoeWRldi1cXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDA7XFxuMTkxMzpcXHRcXHRkLVxcdTAwM2Vkcml2ZXIgPSBOVUxMO1xcbjE5MTQ6XFx0ZXJyb3JfcHV0X2RldmljZTpcXG4xOTE1OlxcdFxcdHB1dF9kZXZpY2UoZCk7XFxuMTkxNjpcXHRcXHRpZiAobmRldl9vd25lciAhPSBidXMtXFx1MDAzZW93bmVyKVxcbjE5MTc6XFx0XFx0XFx0bW9kdWxlX3B1dChidXMtXFx1MDAzZW93bmVyKTtcXG4xOTE4OlxcdFxcdHJldHVybiBlcnI7XFxuMTkxOTpcXHR9XFxuMTkyMDpcXHRFWFBPUlRfU1lNQk9MKHBoeV9hdHRhY2hfZGlyZWN0KTtcXG4xOTIxOlxcdFxcbjE5MjI6XFx0LyoqXFxuMTkyMzpcXHQgKiBwaHlfZGV0YWNoIC0gZGV0YWNoIGEgUEhZIGRldmljZSBmcm9tIGl0cyBuZXR3b3JrIGRldmljZVxcbjE5MjQ6XFx0ICogQHBoeWRldjogdGFyZ2V0IHBoeV9kZXZpY2Ugc3RydWN0XFxuMTkyNTpcXHQgKlxcbjE5MjY6XFx0ICogVGhpcyBkZXRhY2hlcyB0aGUgcGh5IGRldmljZSBmcm9tIGl0cyBuZXR3b3JrIGRldmljZSBhbmQgdGhlIHBoeVxcbjE5Mjc6XFx0ICogZHJpdmVyLCBhbmQgZHJvcHMgdGhlIHJlZmVyZW5jZSBjb3VudCB0YWtlbiBpbiBwaHlfYXR0YWNoX2RpcmVjdCgpLlxcbjE5Mjg6XFx0ICovXFxuMTkyOTpcXHR2b2lkIHBoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG4xOTMwOlxcdHtcXG4xOTMxOlxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBwaHlkZXYtXFx1MDAzZWF0dGFjaGVkX2RldjtcXG4xOTMyOlxcdFxcdHN0cnVjdCBtb2R1bGUgKm5kZXZfb3duZXIgPSBOVUxMO1xcbjE5MzM6XFx0XFx0c3RydWN0IG1paV9idXMgKmJ1cztcXG4xOTM0OlxcdFxcbjE5MzU6XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlZGV2bGluaykge1xcbjE5MzY6XFx0XFx0XFx0ZGV2aWNlX2xpbmtfZGVsKHBoeWRldi1cXHUwMDNlZGV2bGluayk7XFxuMTkzNzpcXHRcXHRcXHRwaHlkZXYtXFx1MDAzZWRldmxpbmsgPSBOVUxMO1xcbjE5Mzg6XFx0XFx0fVxcbjE5Mzk6XFx0XFxuMTk0MDpcXHRcXHRpZiAocGh5ZGV2LVxcdTAwM2VzeXNmc19saW5rcykge1xcbjE5NDE6XFx0XFx0XFx0aWYgKGRldilcXG4xOTQyOlxcdFxcdFxcdFxcdHN5c2ZzX3JlbW92ZV9saW5rKFxcdTAwMjZkZXYtXFx1MDAzZWRldi5rb2JqLCBcXFwicGh5ZGV2XFxcIik7XFxuMTk0MzpcXHRcXHRcXHRzeXNmc19yZW1vdmVfbGluayhcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmRldi5rb2JqLCBcXFwiYXR0YWNoZWRfZGV2XFxcIik7XFxuMTk0NDpcXHRcXHR9XFxuMTk0NTpcXHRcXG4xOTQ2OlxcdFxcdGlmICghcGh5ZGV2LVxcdTAwM2VhdHRhY2hlZF9kZXYpXFxuMTk0NzpcXHRcXHRcXHRzeXNmc19yZW1vdmVfZmlsZShcXHUwMDI2cGh5ZGV2LVxcdTAwM2VtZGlvLmRldi5rb2JqLFxcbjE5NDg6XFx0XFx0XFx0XFx0XFx0ICBcXHUwMDI2ZGV2X2F0dHJfcGh5X3N0YW5kYWxvbmUuYXR0cik7XFxuMTk0OTpcXHRcXG4xOTUwOlxcdFxcdHBoeV9zdXNwZW5kKHBoeWRldik7XFxuMTk1MTpcXHRcXHRpZiAoZGV2KSB7XFxuMTk1MjpcXHRcXHRcXHRzdHJ1Y3QgaHd0c3RhbXBfcHJvdmlkZXIgKmh3cHJvdjtcXG4xOTUzOlxcdFxcbjE5NTQ6XFx0XFx0XFx0LyogaHdwcm92IG1heSB0ZWNobmljYWxseSBiZSBwcm90ZWN0ZWQgYnkgb3BzIGxvY2sgYnV0XFxuMTk1NTpcXHRcXHRcXHQgKiBub3QgZm9yIGRldmljZXMgd2l0aCBhIHBoeWRldiwgc2VlIHBoeV9saW5rX3RvcG9fYWRkX3BoeSgpXFxuMTk1NjpcXHRcXHRcXHQgKi9cXG4xOTU3OlxcdFxcdFxcdGh3cHJvdiA9IHJ0bmxfZGVyZWZlcmVuY2UoZGV2LVxcdTAwM2Vod3Byb3YpO1xcbjE5NTg6XFx0XFx0XFx0LyogRGlzYWJsZSB0aW1lc3RhbXAgaWYgaXQgaXMgdGhlIG9uZSBzZWxlY3RlZCAqL1xcbjE5NTk6XFx0XFx0XFx0aWYgKGh3cHJvdiBcXHUwMDI2XFx1MDAyNiBod3Byb3YtXFx1MDAzZXBoeWRldiA9PSBwaHlkZXYpIHtcXG4xOTYwOlxcdFxcdFxcdFxcdHJjdV9hc3NpZ25fcG9pbnRlcihkZXYtXFx1MDAzZWh3cHJvdiwgTlVMTCk7XFxuMTk2MTpcXHRcXHRcXHRcXHRrZnJlZV9yY3UoaHdwcm92LCByY3VfaGVhZCk7XFxuMTk2MjpcXHRcXHRcXHR9XFxuMTk2MzpcXHRcXG4xOTY0OlxcdFxcdFxcdHBoeWRldi1cXHUwMDNlYXR0YWNoZWRfZGV2LVxcdTAwM2VwaHlkZXYgPSBOVUxMO1xcbjE5NjU6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VhdHRhY2hlZF9kZXYgPSBOVUxMO1xcbjE5NjY6XFx0XFx0XFx0cGh5X2xpbmtfdG9wb19kZWxfcGh5KGRldiwgcGh5ZGV2KTtcXG4xOTY3OlxcdFxcdH1cXG4xOTY4OlxcdFxcbjE5Njk6XFx0XFx0cGh5ZGV2LVxcdTAwM2VwaHlfbGlua19jaGFuZ2UgPSBOVUxMO1xcbjE5NzA6XFx0XFx0cGh5ZGV2LVxcdTAwM2VwaHlsaW5rID0gTlVMTDtcXG4xOTcxOlxcdFxcbjE5NzI6XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlbWRpby5kZXYuZHJpdmVyKVxcbjE5NzM6XFx0XFx0XFx0bW9kdWxlX3B1dChwaHlkZXYtXFx1MDAzZW1kaW8uZGV2LmRyaXZlci1cXHUwMDNlb3duZXIpO1xcbjE5NzQ6XFx0XFxuMTk3NTpcXHRcXHQvKiBJZiB0aGUgZGV2aWNlIGhhZCBubyBzcGVjaWZpYyBkcml2ZXIgYmVmb3JlIChpLmUuIC0gaXRcXG4xOTc2OlxcdFxcdCAqIHdhcyB1c2luZyB0aGUgZ2VuZXJpYyBkcml2ZXIpLCB3ZSB1bmJpbmQgdGhlIGRldmljZVxcbjE5Nzc6XFx0XFx0ICogZnJvbSB0aGUgZ2VuZXJpYyBkcml2ZXIgc28gdGhhdCB0aGVyZSdzIGEgY2hhbmNlIGFcXG4xOTc4OlxcdFxcdCAqIHJlYWwgZHJpdmVyIGNvdWxkIGJlIGxvYWRlZFxcbjE5Nzk6XFx0XFx0ICovXFxuMTk4MDpcXHRcXHRpZiAocGh5ZGV2LVxcdTAwM2Vpc19nZW5waHlfZHJpdmVuKSB7XFxuMTk4MTpcXHRcXHRcXHRwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHBoeWRldik7XFxuMTk4MjpcXHRcXHRcXHRkZXZpY2VfcmVsZWFzZV9kcml2ZXIoXFx1MDAyNnBoeWRldi1cXHUwMDNlbWRpby5kZXYpO1xcbjE5ODM6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2Vpc19nZW5waHlfZHJpdmVuID0gMDtcXG4xOTg0OlxcdFxcdH1cXG4xOTg1OlxcdFxcbjE5ODY6XFx0XFx0LyogQXNzZXJ0IHRoZSByZXNldCBzaWduYWwgKi9cXG4xOTg3OlxcdFxcdHBoeV9kZXZpY2VfcmVzZXQocGh5ZGV2LCAxKTtcXG4xOTg4OlxcdFxcbjE5ODk6XFx0XFx0LypcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMjE6NTA6NDUuNjE0NzYzMTIyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjM3ODAwNzgwNzgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgaWYgSSB3ZXJlIHRoaW5raW5nIHRoZXNlIHRob3VnaHRzOlxuXG4qKkRpdmluZyBEZWVwIGludG8gUEhZTElOSyoqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIGBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jYCBmaWxlLiBTcGVjaWZpY2FsbHksIEknbSB6ZXJvaW5nIGluIG9uIHRoZSBzZWN0aW9uIGFyb3VuZCBsaW5lcyAyMDgwIHRvIDIzNzAuIFRoaXMgYXJlYSBpcyBsaWtlbHkgd2hlcmUgYSBzaWduaWZpY2FudCBwaWVjZSBvZiB0aGUgUEhZTElOSyBmdW5jdGlvbmFsaXR5IHJlc2lkZXMsIHByb2JhYmx5IHJlbGF0ZWQgdG8gYSBjcml0aWNhbCBwYXJ0IG9mIHRoZSBsaW5rIG5lZ290aWF0aW9uIG9yIG1hbmFnZW1lbnQgbG9naWMuIEdpdmVuIHRoZSBzaXplIG9mIHRoYXQgY29kZSBibG9jaywgaXQncyBwcm9iYWJseSBkb2luZyBzb21lIGhlYXZ5IGxpZnRpbmcgaW4gaG93IHRoZSBQSFkgaW50ZXJhY3RzIHdpdGggdGhlIG5ldHdvcmsgc3RhY2suIEkgYW50aWNpcGF0ZSB0aGVyZSB3aWxsIGJlIGEgcmljaCBhbW91bnQgb2YgZGV0YWlsIHRoZXJlIGNvbmNlcm5pbmcgdGhlIG9wZXJhdGlvbmFsIGNvbnRyb2wgb2YgdGhlIFBIWS4gSXQncyB0aW1lIHRvIGdldCBkb3duIHRvIGJ1c2luZXNzIGFuZCBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NzY1LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo1MToyMy40MTU1NDYyODJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcyOTgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjE5MCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjE5MDpcXHRcXHRcXHQgICAgX19FVEhUT09MX0xJTktfTU9ERV9NQVNLX05CSVRTLCBwbC1cXHUwMDNlc3VwcG9ydGVkLFxcbjIxOTE6XFx0XFx0XFx0ICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgcGh5LVxcdTAwM2VhZHZlcnRpc2luZyk7XFxuMjE5MjpcXHRcXG4yMTkzOlxcdFxcdGlmIChwbC1cXHUwMDNlY29uZmlnLVxcdTAwM2VtYWNfbWFuYWdlZF9wbSlcXG4yMTk0OlxcdFxcdFxcdHBoeS1cXHUwMDNlbWFjX21hbmFnZWRfcG0gPSB0cnVlO1xcbjIxOTU6XFx0XFxuMjE5NjpcXHRcXHQvKiBBbGxvdyB0aGUgTUFDIHRvIHN0b3AgaXRzIGNsb2NrIGlmIHRoZSBQSFkgaGFzIHRoZSBjYXBhYmlsaXR5ICovXFxuMjE5NzpcXHRcXHRwbC1cXHUwMDNlbWFjX3R4X2Nsa19zdG9wID0gcGh5X2VlZV90eF9jbG9ja19zdG9wX2NhcGFibGUocGh5KSBcXHUwMDNlIDA7XFxuMjE5ODpcXHRcXG4yMTk5OlxcdFxcdGlmIChwbC1cXHUwMDNlbWFjX3N1cHBvcnRzX2VlZV9vcHMpIHtcXG4yMjAwOlxcdFxcdFxcdC8qIEV4cGxpY2l0bHkgY29uZmlndXJlIHdoZXRoZXIgdGhlIFBIWSBpcyBhbGxvd2VkIHRvIHN0b3AgaXQnc1xcbjIyMDE6XFx0XFx0XFx0ICogcmVjZWl2ZSBjbG9jay5cXG4yMjAyOlxcdFxcdFxcdCAqL1xcbjIyMDM6XFx0XFx0XFx0cmV0ID0gcGh5X2VlZV9yeF9jbG9ja19zdG9wKHBoeSxcXG4yMjA0OlxcdFxcdFxcdFxcdFxcdFxcdCAgICBwbC1cXHUwMDNlY29uZmlnLVxcdTAwM2VlZWVfcnhfY2xrX3N0b3BfZW5hYmxlKTtcXG4yMjA1OlxcdFxcdFxcdGlmIChyZXQgPT0gLUVPUE5PVFNVUFApXFxuMjIwNjpcXHRcXHRcXHRcXHRyZXQgPSAwO1xcbjIyMDc6XFx0XFx0fVxcbjIyMDg6XFx0XFxuMjIwOTpcXHRcXHRpZiAocmV0ID09IDAgXFx1MDAyNlxcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHkpKVxcbjIyMTA6XFx0XFx0XFx0cGh5X3JlcXVlc3RfaW50ZXJydXB0KHBoeSk7XFxuMjIxMTpcXHRcXG4yMjEyOlxcdFxcdGlmIChyZXQpIHtcXG4yMjEzOlxcdFxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBsLVxcdTAwM2VwaHlkZXZfbXV0ZXgpO1xcbjIyMTQ6XFx0XFx0XFx0cGh5bGlua19jbGVhcl9waHlkZXYocGwsIHBoeSk7XFxuMjIxNTpcXHRcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBsLVxcdTAwM2VwaHlkZXZfbXV0ZXgpO1xcbjIyMTY6XFx0XFx0fVxcbjIyMTc6XFx0XFxuMjIxODpcXHRcXHRyZXR1cm4gcmV0O1xcbjIyMTk6XFx0fVxcbjIyMjA6XFx0XFxuMjIyMTpcXHRzdGF0aWMgaW50IHBoeWxpbmtfYXR0YWNoX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXFxuMjIyMjpcXHRcXHRcXHRcXHQgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxcbjIyMjM6XFx0e1xcbjIyMjQ6XFx0XFx0dTMyIGZsYWdzID0gMDtcXG4yMjI1OlxcdFxcbjIyMjY6XFx0XFx0aWYgKFdBUk5fT04ocGwtXFx1MDAzZWNmZ19saW5rX2FuX21vZGUgPT0gTUxPX0FOX0ZJWEVEKSlcXG4yMjI3OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjIyMjg6XFx0XFxuMjIyOTpcXHRcXHRpZiAocGwtXFx1MDAzZXBoeWRldilcXG4yMjMwOlxcdFxcdFxcdHJldHVybiAtRUJVU1k7XFxuMjIzMTpcXHRcXG4yMjMyOlxcdFxcdGlmIChwbC1cXHUwMDNlY29uZmlnLVxcdTAwM2VtYWNfcmVxdWlyZXNfcnhjKVxcbjIyMzM6XFx0XFx0XFx0ZmxhZ3MgfD0gUEhZX0ZfUlhDX0FMV0FZU19PTjtcXG4yMjM0OlxcdFxcbjIyMzU6XFx0XFx0cmV0dXJuIHBoeV9hdHRhY2hfZGlyZWN0KHBsLVxcdTAwM2VuZXRkZXYsIHBoeSwgZmxhZ3MsIGludGVyZmFjZSk7XFxuMjIzNjpcXHR9XFxuMjIzNzpcXHRcXG4yMjM4OlxcdC8qKlxcbjIyMzk6XFx0ICogcGh5bGlua19jb25uZWN0X3BoeSgpIC0gY29ubmVjdCBhIFBIWSB0byB0aGUgcGh5bGluayBpbnN0YW5jZVxcbjIyNDA6XFx0ICogQHBsOiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeWxpbmsgcmV0dXJuZWQgZnJvbSBwaHlsaW5rX2NyZWF0ZSgpXFxuMjI0MTpcXHQgKiBAcGh5OiBhIHBvaW50ZXIgdG8gYSBcXHUwMDI2c3RydWN0IHBoeV9kZXZpY2UuXFxuMjI0MjpcXHQgKlxcbjIyNDM6XFx0ICogQ29ubmVjdCBAcGh5IHRvIHRoZSBwaHlsaW5rIGluc3RhbmNlIHNwZWNpZmllZCBieSBAcGwgYnkgY2FsbGluZ1xcbjIyNDQ6XFx0ICogcGh5X2F0dGFjaF9kaXJlY3QoKS4gQ29uZmlndXJlIHRoZSBAcGh5IGFjY29yZGluZyB0byB0aGUgTUFDIGRyaXZlcidzXFxuMjI0NTpcXHQgKiBjYXBhYmlsaXRpZXMsIHN0YXJ0IHRoZSBQSFlMSUIgc3RhdGUgbWFjaGluZSBhbmQgZW5hYmxlIGFueSBpbnRlcnJ1cHRzXFxuMjI0NjpcXHQgKiB0aGF0IHRoZSBQSFkgc3VwcG9ydHMuXFxuMjI0NzpcXHQgKlxcbjIyNDg6XFx0ICogVGhpcyB1cGRhdGVzIHRoZSBwaHlsaW5rJ3MgZXRodG9vbCBzdXBwb3J0ZWQgYW5kIGFkdmVydGlzaW5nIGxpbmsgbW9kZVxcbjIyNDk6XFx0ICogbWFza3MuXFxuMjI1MDpcXHQgKlxcbjIyNTE6XFx0ICogUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJuby5cXG4yMjUyOlxcdCAqL1xcbjIyNTM6XFx0aW50IHBoeWxpbmtfY29ubmVjdF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5KVxcbjIyNTQ6XFx0e1xcbjIyNTU6XFx0XFx0aW50IHJldDtcXG4yMjU2OlxcdFxcbjIyNTc6XFx0XFx0LyogVXNlIFBIWSBkZXZpY2UvZHJpdmVyIGludGVyZmFjZSAqL1xcbjIyNTg6XFx0XFx0aWYgKHBsLVxcdTAwM2VsaW5rX2ludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfTkEpIHtcXG4yMjU5OlxcdFxcdFxcdHBsLVxcdTAwM2VsaW5rX2ludGVyZmFjZSA9IHBoeS1cXHUwMDNlaW50ZXJmYWNlO1xcbjIyNjA6XFx0XFx0XFx0cGwtXFx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSA9IHBsLVxcdTAwM2VsaW5rX2ludGVyZmFjZTtcXG4yMjYxOlxcdFxcdH1cXG4yMjYyOlxcdFxcbjIyNjM6XFx0XFx0cmV0ID0gcGh5bGlua19hdHRhY2hfcGh5KHBsLCBwaHksIHBsLVxcdTAwM2VsaW5rX2ludGVyZmFjZSk7XFxuMjI2NDpcXHRcXHRpZiAocmV0IFxcdTAwM2MgMClcXG4yMjY1OlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMjI2NjpcXHRcXG4yMjY3OlxcdFxcdHJldCA9IHBoeWxpbmtfYnJpbmd1cF9waHkocGwsIHBoeSwgcGwtXFx1MDAzZWxpbmtfY29uZmlnLmludGVyZmFjZSk7XFxuMjI2ODpcXHRcXHRpZiAocmV0KVxcbjIyNjk6XFx0XFx0XFx0cGh5X2RldGFjaChwaHkpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo1MToyMy40MTU4MjEyNzJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjE1MDk0MzA1MDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQSFkgTGluayBDb25uZWN0aW9uIFByb2Nlc3MqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEkgc2VlIHdlJ3JlIGxvb2tpbmcgYXQgYHBoeWxpbmtfY29ubmVjdF9waHlgLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBpbiBgcGh5bGlua19hdHRhY2hfcGh5YCB3aGljaCBzZXRzIHRoaW5ncyB1cCwgdGhlbiBgcGh5bGlua19icmluZ3VwX3BoeWAgd2hpY2ggYWN0dWFsbHkgZ2V0cyB0aGUgUEhZIG9wZXJhdGlvbmFsLiBJZiBgcGh5bGlua19hdHRhY2hfcGh5YCBmYWlscywgd2UganVzdCByZXR1cm4gdGhlIGVycm9yLCBzaW1wbGUgZW5vdWdoLiBCdXQgaWYgYHBoeWxpbmtfYnJpbmd1cF9waHlgIGZhaWxzLCB3ZSBkZXRhY2ggdGhlIFBIWS4gTWFrZXMgc2Vuc2UsIGtlZXAgaXQgY2xlYW4uXG5cbk15IG1pbmQgaXMgbm93IHplcm9pbmcgaW4gb24gYHBoeWxpbmtfYnJpbmd1cF9waHlgLiBJIHJlY2FsbCBzb21lIHBvdGVudGlhbCBpc3N1ZXMgaGVyZSwgd2hpY2ggaXMgd2h5IEknbSBmb2N1c2luZyBvbiBpdC4gSSBzZWVtIHRvIHJlY2FsbCB0aGF0IGJlZm9yZSBhIGNlcnRhaW4gcGF0Y2gsIHRoZSBgcGwtXHUwMDNlcGh5ZGV2YCBhc3NpZ25tZW50IG9jY3VycyBzb21ld2hlcmUgaW4gdGhhdCBmdW5jdGlvbiwgYXJvdW5kIHRoZSAyMTEwIG1hcmssIG9yIGluIHRoYXQgbmVpZ2hib3Job29kLiBJJ2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgcmVnaW9uLCBhcHByb3hpbWF0ZWx5IGxpbmVzIDIxMDAgdG8gMjE5MCBpbiB0aGUgY29kZSwgdG8gZW5zdXJlIHRoYXQgdGhlIHZhcmlhYmxlIGlzIGFzc2lnbmVkIHdoZW4gcmVxdWlyZWQuIEknbGwgYmUgbG9va2luZyBhdCB0aGF0IHNlY3Rpb24gdmVyeSBjYXJlZnVsbHkuIFRoZSB0aW1pbmcgb2YgdGhlIGFzc2lnbm1lbnQgY291bGQgYmUgY3JpdGljYWwgZm9yIHRoZSBvdmVyYWxsIHByb2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MjI5LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMjE6NTE6NDQuOTI1MjU0NzQ1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1ODEyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvcGh5bGluay5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwOTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjIwOTA6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cGwtXFx1MDAzZXN0YXRlX211dGV4KTtcXG4yMDkxOlxcdFxcdHBsLVxcdTAwM2VwaHlkZXYgPSBOVUxMO1xcbjIwOTI6XFx0XFx0cGwtXFx1MDAzZXBoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7XFxuMjA5MzpcXHRcXHRwbC1cXHUwMDNlbWFjX3R4X2Nsa19zdG9wID0gZmFsc2U7XFxuMjA5NDpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBsLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuMjA5NTpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBoeS1cXHUwMDNlbG9jayk7XFxuMjA5NjpcXHR9XFxuMjA5NzpcXHRcXG4yMDk4OlxcdHN0YXRpYyBpbnQgcGh5bGlua19icmluZ3VwX3BoeShzdHJ1Y3QgcGh5bGluayAqcGwsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHksXFxuMjA5OTpcXHRcXHRcXHRcXHQgICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG4yMTAwOlxcdHtcXG4yMTAxOlxcdFxcdHN0cnVjdCBwaHlsaW5rX2xpbmtfc3RhdGUgY29uZmlnO1xcbjIxMDI6XFx0XFx0X19FVEhUT09MX0RFQ0xBUkVfTElOS19NT0RFX01BU0soc3VwcG9ydGVkKTtcXG4yMTAzOlxcdFxcdGNoYXIgKmlycV9zdHI7XFxuMjEwNDpcXHRcXHRpbnQgcmV0O1xcbjIxMDU6XFx0XFxuMjEwNjpcXHRcXHQvKlxcbjIxMDc6XFx0XFx0ICogVGhpcyBpcyB0aGUgbmV3IHdheSBvZiBkZWFsaW5nIHdpdGggZmxvdyBjb250cm9sIGZvciBQSFlzLFxcbjIxMDg6XFx0XFx0ICogYXMgZGVzY3JpYmVkIGJ5IFRpbXVyIFRhYmkgaW4gY29tbWl0IDUyOWVkMTI3NTI2MyAoXFxcIm5ldDogcGh5OlxcbjIxMDk6XFx0XFx0ICogcGh5IGRyaXZlcnMgc2hvdWxkIG5vdCBzZXQgU1VQUE9SVEVEX1tBc3ltX11QYXVzZVxcXCIpLiBNQUMgZHJpdmVyc1xcbjIxMTA6XFx0XFx0ICogc2V0IHRoZWlyIHN1cHBvcnQgdXNpbmcgdGhlIE1BQ19TWU1fUEFVU0UgYW5kIE1BQ19BU1lNX1BBVVNFXFxuMjExMTpcXHRcXHQgKiBjYXBhYmlsaXRpZXMgYW5kIG11c3QgTk9UIGNoYW5nZSB0aGUgcGh5J3MgcGF1c2Ugc2V0dGluZ3MgZGlyZWN0bHkuXFxuMjExMjpcXHRcXHQgKi9cXG4yMTEzOlxcdFxcdHBoeV9zdXBwb3J0X2FzeW1fcGF1c2UocGh5KTtcXG4yMTE0OlxcdFxcbjIxMTU6XFx0XFx0bWVtc2V0KFxcdTAwMjZjb25maWcsIDAsIHNpemVvZihjb25maWcpKTtcXG4yMTE2OlxcdFxcdGxpbmttb2RlX2NvcHkoc3VwcG9ydGVkLCBwaHktXFx1MDAzZXN1cHBvcnRlZCk7XFxuMjExNzpcXHRcXHRsaW5rbW9kZV9jb3B5KGNvbmZpZy5hZHZlcnRpc2luZywgcGh5LVxcdTAwM2VhZHZlcnRpc2luZyk7XFxuMjExODpcXHRcXHRjb25maWcuaW50ZXJmYWNlID0gaW50ZXJmYWNlO1xcbjIxMTk6XFx0XFxuMjEyMDpcXHRcXHRyZXQgPSBwaHlsaW5rX3ZhbGlkYXRlX3BoeShwbCwgcGh5LCBzdXBwb3J0ZWQsIFxcdTAwMjZjb25maWcpO1xcbjIxMjE6XFx0XFx0aWYgKHJldCkge1xcbjIxMjI6XFx0XFx0XFx0cGh5bGlua193YXJuKHBsLCBcXFwidmFsaWRhdGlvbiBvZiAlcyB3aXRoIHN1cHBvcnQgJSpwYiBhbmQgYWR2ZXJ0aXNlbWVudCAlKnBiIGZhaWxlZDogJXBlXFxcXG5cXFwiLFxcbjIxMjM6XFx0XFx0XFx0XFx0ICAgICBwaHlfbW9kZXMoY29uZmlnLmludGVyZmFjZSksXFxuMjEyNDpcXHRcXHRcXHRcXHQgICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgcGh5LVxcdTAwM2VzdXBwb3J0ZWQsXFxuMjEyNTpcXHRcXHRcXHRcXHQgICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgY29uZmlnLmFkdmVydGlzaW5nLFxcbjIxMjY6XFx0XFx0XFx0XFx0ICAgICBFUlJfUFRSKHJldCkpO1xcbjIxMjc6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4yMTI4OlxcdFxcdH1cXG4yMTI5OlxcdFxcbjIxMzA6XFx0XFx0cGh5LVxcdTAwM2VwaHlsaW5rID0gcGw7XFxuMjEzMTpcXHRcXHRwaHktXFx1MDAzZXBoeV9saW5rX2NoYW5nZSA9IHBoeWxpbmtfcGh5X2NoYW5nZTtcXG4yMTMyOlxcdFxcbjIxMzM6XFx0XFx0aXJxX3N0ciA9IHBoeV9hdHRhY2hlZF9pbmZvX2lycShwaHkpO1xcbjIxMzQ6XFx0XFx0cGh5bGlua19pbmZvKHBsLFxcbjIxMzU6XFx0XFx0XFx0ICAgICBcXFwiUEhZIFslc10gZHJpdmVyIFslc10gKGlycT0lcylcXFxcblxcXCIsXFxuMjEzNjpcXHRcXHRcXHQgICAgIGRldl9uYW1lKFxcdTAwMjZwaHktXFx1MDAzZW1kaW8uZGV2KSwgcGh5LVxcdTAwM2VkcnYtXFx1MDAzZW5hbWUsIGlycV9zdHIpO1xcbjIxMzc6XFx0XFx0a2ZyZWUoaXJxX3N0cik7XFxuMjEzODpcXHRcXG4yMTM5OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNnBsLVxcdTAwM2VwaHlkZXZfbXV0ZXgpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo1MTo0NC45MjU2MTQ2MDVaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzM3MTg0MjU5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIFBoeWxpbmsgQ29kZWJhc2UqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhlIGBwaHlsaW5rLmNgIGZpbGUuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhpcyBwYXJ0IGludGVyYWN0cyB3aXRoIHRoZSBvdmVyYWxsIHBoeWxpbmsgcHJvY2Vzcywgc28gSSdsbCBqdW1wIHJpZ2h0IGludG8gbGluZXMgMjE0MCB0byAyMTkwLiBJJ20gZm9jdXNpbmcgc3BlY2lmaWNhbGx5IG9uIHRoaXMgc2VjdGlvbiBiZWNhdXNlIEkgcmVjYWxsIHdlIHdlcmUgc2VlaW5nIHNvbWUgb2RkIGJlaGF2aW9yIHJlbGF0ZWQgdG8gWyoqaW5zZXJ0IHNwZWNpZmljIHByb2JsZW0gdGhlIG9yaWdpbmFsIHVzZXIgd2FzIGhhdmluZyoqXSwgYW5kIEkgaGF2ZSBhIGh1bmNoIGl0IG1pZ2h0IGJlIHJvb3RlZCBoZXJlLlxuXG5SaWdodCwgc28gZ2xhbmNpbmcgYXQgdGhpcyBibG9jayBvZiBjb2RlLCBJJ20gbm90aW5nIHRoZSBjb25kaXRpb25hbCBjaGVjayBvbiBbKipzcGVjaWZpYyB2YXJpYWJsZSBvciBjb25kaXRpb24qKl0uIEl0IGxvb2tzIGxpa2UgdGhpcyBtaWdodCBiZSByZWxhdGVkIHRvIHRoZSBbKipzcGVjaWZpYyBwcm9jZXNzL2Z1bmN0aW9uKipdIGFuZCBob3cgaXQgaGFuZGxlcyBbKipzcGVjaWZpYyBkYXRhKipdLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIHJhY2UgY29uZGl0aW9ucyB0aGF0IGNvdWxkIGxlYWQgdG8gZGF0YSBjb3JydXB0aW9uIGluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCBvciBwb3NzaWJseSBhbnkgb2ZmLWJ5LW9uZSBlcnJvcnMuIEFsc28sIGlzIHRoaXMgZnVuY3Rpb24gcmUtZW50cmFudCwgYW5kIGlmIG5vdCwgaG93IG1pZ2h0IGl0IGFmZmVjdCBvdGhlciB0aHJlYWRzPyBJ4oCZbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgYW55IGFzc29jaWF0ZWQgbXV0ZXhlcyBvciBzZW1hcGhvcmVzLCBqdXN0IHRvIGJlIHN1cmUuIEknbSBnb2luZyB0byBzY2FuIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRvIGNoZWNrIGZvciB0aGUgYXNzaWdubWVudCBvZiBhbnkgcG90ZW50aWFsIG51bGwgcG9pbnRlcnMuIFBlcmhhcHMgdGhlcmUgbWlnaHQgYmUgc29tZSBtaXNzaW5nIGVycm9yIGNoZWNraW5nIGFyb3VuZCBbKipzcGVjaWZpYyBmdW5jdGlvbioqXS4gT2theSwgdGltZSB0byBjaGVjayB0aGUgbG9nZ2luZyBvdXRwdXQgcmVsYXRlZCB0byB0aGlzIGZ1bmN0aW9uIGNhbGwsIGp1c3QgaW4gY2FzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc1MTEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDIxOjUxOjUyLjI5NzQ2MDQwN1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDMwMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAyMTM4LFxuICBcIkxpbmVDb3VudFwiOiA1NVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIyMTM4OlxcdFxcbjIxMzk6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cGwtXFx1MDAzZXBoeWRldl9tdXRleCk7XFxuMjE0MDpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwaHktXFx1MDAzZWxvY2spO1xcbjIxNDE6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2cGwtXFx1MDAzZXN0YXRlX211dGV4KTtcXG4yMTQyOlxcdFxcdHBsLVxcdTAwM2VwaHlkZXYgPSBwaHk7XFxuMjE0MzpcXHRcXHRwbC1cXHUwMDNlcGh5X3N0YXRlLmludGVyZmFjZSA9IGludGVyZmFjZTtcXG4yMTQ0OlxcdFxcdHBsLVxcdTAwM2VwaHlfc3RhdGUucGF1c2UgPSBNTE9fUEFVU0VfTk9ORTtcXG4yMTQ1OlxcdFxcdHBsLVxcdTAwM2VwaHlfc3RhdGUuc3BlZWQgPSBTUEVFRF9VTktOT1dOO1xcbjIxNDY6XFx0XFx0cGwtXFx1MDAzZXBoeV9zdGF0ZS5kdXBsZXggPSBEVVBMRVhfVU5LTk9XTjtcXG4yMTQ3OlxcdFxcdHBsLVxcdTAwM2VwaHlfc3RhdGUucmF0ZV9tYXRjaGluZyA9IFJBVEVfTUFUQ0hfTk9ORTtcXG4yMTQ4OlxcdFxcdGxpbmttb2RlX2NvcHkocGwtXFx1MDAzZXN1cHBvcnRlZCwgc3VwcG9ydGVkKTtcXG4yMTQ5OlxcdFxcdGxpbmttb2RlX2NvcHkocGwtXFx1MDAzZWxpbmtfY29uZmlnLmFkdmVydGlzaW5nLCBjb25maWcuYWR2ZXJ0aXNpbmcpO1xcbjIxNTA6XFx0XFxuMjE1MTpcXHRcXHQvKiBSZXN0cmljdCB0aGUgcGh5IGFkdmVydGlzZW1lbnQgYWNjb3JkaW5nIHRvIHRoZSBNQUMgc3VwcG9ydC4gKi9cXG4yMTUyOlxcdFxcdGxpbmttb2RlX2NvcHkocGh5LVxcdTAwM2VhZHZlcnRpc2luZywgY29uZmlnLmFkdmVydGlzaW5nKTtcXG4yMTUzOlxcdFxcbjIxNTQ6XFx0XFx0LyogSWYgdGhlIE1BQyBzdXBwb3J0cyBwaHlsaW5rIG1hbmFnZWQgRUVFLCByZXN0cmljdCB0aGUgRUVFXFxuMjE1NTpcXHRcXHQgKiBhZHZlcnRpc2VtZW50IGFjY29yZGluZyB0byB0aGUgTUFDJ3MgTFBJIGNhcGFiaWxpdGllcy5cXG4yMTU2OlxcdFxcdCAqL1xcbjIxNTc6XFx0XFx0aWYgKHBsLVxcdTAwM2VtYWNfc3VwcG9ydHNfZWVlKSB7XFxuMjE1ODpcXHRcXHRcXHQvKiBJZiBFRUUgaXMgZW5hYmxlZCwgdGhlbiB3ZSBuZWVkIHRvIGNhbGwgcGh5X3N1cHBvcnRfZWVlKClcXG4yMTU5OlxcdFxcdFxcdCAqIHRvIGVuc3VyZSB0aGF0IHRoZSBhZHZlcnRpc2luZyBtYXNrIGlzIGFwcHJvcHJpYXRlbHkgc2V0LlxcbjIxNjA6XFx0XFx0XFx0ICogVGhpcyBhbHNvIGVuYWJsZXMgRUVFIGF0IHRoZSBQSFkuXFxuMjE2MTpcXHRcXHRcXHQgKi9cXG4yMTYyOlxcdFxcdFxcdGlmIChwbC1cXHUwMDNlZWVlX2NmZy5lZWVfZW5hYmxlZClcXG4yMTYzOlxcdFxcdFxcdFxcdHBoeV9zdXBwb3J0X2VlZShwaHkpO1xcbjIxNjQ6XFx0XFxuMjE2NTpcXHRcXHRcXHRwaHktXFx1MDAzZWVlZV9jZmcudHhfbHBpX2VuYWJsZWQgPSBwbC1cXHUwMDNlZWVlX2NmZy50eF9scGlfZW5hYmxlZDtcXG4yMTY2OlxcdFxcdFxcdHBoeS1cXHUwMDNlZWVlX2NmZy50eF9scGlfdGltZXIgPSBwbC1cXHUwMDNlZWVlX2NmZy50eF9scGlfdGltZXI7XFxuMjE2NzpcXHRcXG4yMTY4OlxcdFxcdFxcdC8qIENvbnZlcnQgdGhlIE1BQydzIExQSSBjYXBhYmlsaXRpZXMgdG8gbGlua21vZGVzICovXFxuMjE2OTpcXHRcXHRcXHRsaW5rbW9kZV96ZXJvKHBsLVxcdTAwM2VzdXBwb3J0ZWRfbHBpKTtcXG4yMTcwOlxcdFxcdFxcdHBoeWxpbmtfY2Fwc190b19saW5rbW9kZXMocGwtXFx1MDAzZXN1cHBvcnRlZF9scGksXFxuMjE3MTpcXHRcXHRcXHRcXHRcXHRcXHQgIHBsLVxcdTAwM2Vjb25maWctXFx1MDAzZWxwaV9jYXBhYmlsaXRpZXMpO1xcbjIxNzI6XFx0XFxuMjE3MzpcXHRcXHRcXHQvKiBSZXN0cmljdCB0aGUgUEhZcyBFRUUgc3VwcG9ydC9hZHZlcnRpc2VtZW50IHRvIHRoZSBtb2Rlc1xcbjIxNzQ6XFx0XFx0XFx0ICogdGhhdCB0aGUgTUFDIHN1cHBvcnRzLlxcbjIxNzU6XFx0XFx0XFx0ICovXFxuMjE3NjpcXHRcXHRcXHRsaW5rbW9kZV9hbmQocGh5LVxcdTAwM2VhZHZlcnRpc2luZ19lZWUsIHBoeS1cXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlLFxcbjIxNzc6XFx0XFx0XFx0XFx0ICAgICBwbC1cXHUwMDNlc3VwcG9ydGVkX2xwaSk7XFxuMjE3ODpcXHRcXHR9IGVsc2UgaWYgKHBsLVxcdTAwM2VtYWNfc3VwcG9ydHNfZWVlX29wcykge1xcbjIxNzk6XFx0XFx0XFx0LyogTUFDIHN1cHBvcnRzIHBoeWxpbmsgRUVFLCBidXQgd2FudHMgRUVFIGFsd2F5cyBkaXNhYmxlZC4gKi9cXG4yMTgwOlxcdFxcdFxcdHBoeV9kaXNhYmxlX2VlZShwaHkpO1xcbjIxODE6XFx0XFx0fVxcbjIxODI6XFx0XFxuMjE4MzpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBsLVxcdTAwM2VzdGF0ZV9tdXRleCk7XFxuMjE4NDpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBoeS1cXHUwMDNlbG9jayk7XFxuMjE4NTpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNnBsLVxcdTAwM2VwaHlkZXZfbXV0ZXgpO1xcbjIxODY6XFx0XFxuMjE4NzpcXHRcXHRwaHlsaW5rX2RiZyhwbCxcXG4yMTg4OlxcdFxcdFxcdCAgICBcXFwicGh5OiAlcyBzZXR0aW5nIHN1cHBvcnRlZCAlKnBiIGFkdmVydGlzaW5nICUqcGJcXFxcblxcXCIsXFxuMjE4OTpcXHRcXHRcXHQgICAgcGh5X21vZGVzKGludGVyZmFjZSksXFxuMjE5MDpcXHRcXHRcXHQgICAgX19FVEhUT09MX0xJTktfTU9ERV9NQVNLX05CSVRTLCBwbC1cXHUwMDNlc3VwcG9ydGVkLFxcbjIxOTE6XFx0XFx0XFx0ICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgcGh5LVxcdTAwM2VhZHZlcnRpc2luZyk7XFxuMjE5MjpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMjE6NTE6NTIuMjk3NjY2MjM3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjUyNjg4ODI5ODA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBIWSBMaW5rIEJyaW5ndXAgSXNzdWUqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCBgcGh5bGlua19icmluZ3VwX3BoeWAgaXMgcmVzcG9uc2libGUgZm9yIGluaXRpYWxpemluZyB0aGUgUEhZIGRldmljZSB3aXRoaW4gdGhlIGBwbGAgZGF0YSBzdHJ1Y3R1cmUuIFNwZWNpZmljYWxseSwgaXQgYXNzaWducyB0aGUgUEhZIGRldmljZSAoYHBoeWApIHRvIGBwbC1cdTAwM2VwaHlkZXZgIGFuZCBzZXRzIHVwIHNvbWUgb3RoZXIgaW50ZXJuYWwgc3RhdGUuIFRoZSBjb3JlIG9mIHRoZSBwcm9ibGVtIHNlZW1zIHRvIGxpZSBhcm91bmQgbGluZSAyMjAzLCB3aGVyZSB0aGUgZnVuY3Rpb24gYHBoeV9lZWVfcnhfY2xvY2tfc3RvcGAgaXMgY2FsbGVkLiBDcml0aWNhbGx5LCBpZiBgcGh5X2VlZV9yeF9jbG9ja19zdG9wYCBmYWlscywgdGhlIGBwbC1cdTAwM2VwaHlkZXZgIGZpZWxkIGlzICpzdGlsbCogbGVmdCBub24tTlVMTC4gVGhpcyBjcmVhdGVzIGEgcmVhbGx5IG5hc3R5IHJhY2UgY29uZGl0aW9uLlxuXG5JIGNhbiBzZWUgdGhhdCBpZiBgcGh5X2VlZV9yeF9jbG9ja19zdG9wYCByZXR1cm5zIGFuIGVycm9yLCBhbnkgc3Vic2VxdWVudCBhdHRlbXB0IHRvIGF0dGFjaCB0aGUgUEhZIHdvdWxkIHJldHVybiAtRUJVU1kuIFRoYXQncyBiZWNhdXNlIHRoZSBgcGh5bGlua19hdHRhY2hfcGh5YCBmdW5jdGlvbiBjaGVja3MgaWYgYHBsLVx1MDAzZXBoeWRldmAgaXMgYWxyZWFkeSBhc3NpZ25lZCBhbmQgaW1tZWRpYXRlbHkgcmV0dXJucyAtRUJVU1kuIFRoaXMgaXMgd2hlcmUgdGhlIHBhdGNoIGtpY2tzIGluLiBJdCBpbnRyb2R1Y2VzIGEgY2hlY2ssIGFuZCBpZiB0aGUgYHJldGAgZnJvbSBgcGh5X2VlZV9yeF9jbG9ja19zdG9wYCBzaWduYWxzIGZhaWx1cmUsIHRoZSBjb2RlIG5vdyBpbmNsdWRlcyBhIG11dGV4LXByb3RlY3RlZCBjYWxsIHRvIGBwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KWAuIFRoYXQncyBzbWFydDsgaXQncyByZWxlYXNpbmcgdGhlIHJlc291cmNlIGFwcHJvcHJpYXRlbHkgd2hlbiB0aGUgUEhZIGluaXRpYWxpemF0aW9uIGZhaWxzLlxuXG5TbywgdGhlIG5ldyBjb2RlIGlzIGF0dGVtcHRpbmcgdG8gY2xlYW4gdXAgdGhlIHBhcnRpYWxseSBpbml0aWFsaXplZCBQSFkgaW4gY2FzZSBvZiBhbiBlcnJvci4gVGhlIGluY2x1c2lvbiBvZiB0aGUgbXV0ZXggaXMgY3JpdGljYWwgdG8gcHJldmVudCBhIHJhY2UgY29uZGl0aW9uIGR1cmluZyBQSFkgcmVzb3VyY2UgbWFuYWdlbWVudC5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgd2lkZXIgY29udGV4dC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gYHBoeV9kZXZpY2UuY2AgYW5kIGBwaHlsaW5rLmNgIGFuZCB3aGVyZSB0aGV5IGZpdCBpbnRvIHRoZSBsYXJnZXIgUEhZIGRyaXZlciBzdHJ1Y3R1cmUuIEknbSBnb2luZyB0byBsb29rIGF0IHdoZXJlIGBwaHlfcmVzdG9yZV9nZW5waHlfaXJxYCBpcyBjYWxsZWQuIEkgc2VlIGl0J3MgY2FsbGVkIGluIGBlcnJvcl9tb2R1bGVfcHV0YCBhbmQgYHBoeV9kZXRhY2hgIGluIGBwaHlfZGV2aWNlLmNgLCBzbyBJJ2xsIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgcmVsYXRlLlxuXG5JIG5lZWQgdG8gY29uZmlybSB0aGUgYnVpbGQgZGVwZW5kZW5jaWVzLiBXaGVyZSBhcmUgYHBoeV9kZXZpY2UuY2AgYW5kIGBwaHlsaW5rLmNgIGJ1aWx0PyBJJ2xsIHF1aWNrbHkgY2hlY2sgdGhlIEtjb25maWcgYW5kIE1ha2VmaWxlcyBpbiBgZHJpdmVycy9uZXQvcGh5L2AgdG8gdW5kZXJzdGFuZCBleGFjdGx5IHdoaWNoIGNvbmZpZ3VyYXRpb25zIGluY2x1ZGUgdGhlc2UgZmlsZXMuIEdyZXBwaW5nIGZvciB0aGUgcmVsZXZhbnQgS2NvbmZpZyBhbmQgTWFrZWZpbGUgZW50cmllcyBzaG91bGQgZ2l2ZSBtZSBhIHF1aWNrIG92ZXJ2aWV3IG9mIHRoZSBidWlsZCBwcm9jZXNzIGZvciB0aGlzIHNlY3Rpb24gb2YgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg4MzAsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo1Mjo0NC45ODY0OTg5MDZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1OTM2NjIyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwaHlfZGV2aWNlfHBoeWxpbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE0MTQyIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtMy1cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NDpsaWJwaHkteVxcdFxcdFxcdDo9IHBoeS5vIHBoeS1jNDUubyBwaHktY29yZS5vIHBoeV9kZXZpY2UubyBcXFxcXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTUtXFx0XFx0XFx0XFx0ICAgbGlua21vZGUubyBwaHlfbGlua190b3BvbG9neS5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZT0xOD1vYmotJChDT05GSUdfUEhZTElCKVxcdFxcdCs9IG1kaW9fYnVzLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6MTk6b2JqLSQoQ09ORklHX1BIWUxJTkspXFx0XFx0Kz0gcGh5bGluay5vXFxuZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlLTIwLW9iai0kKENPTkZJR19QSFlMSUIpXFx0XFx0Kz0gbGlicGh5Lm9cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM9MjQwPXN0YXRpYyBpbnQgYWRpbl9sb29rdXBfcmVnX3ZhbHVlKGNvbnN0IHN0cnVjdCBhZGluX2NmZ19yZWdfbWFwICp0YmwsIGludCBjZmcpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTI1MS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjI1MjpzdGF0aWMgdTMyIGFkaW5fZ2V0X3JlZ192YWx1ZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMjUzLVxcdFxcdFxcdCAgICAgIGNvbnN0IGNoYXIgKnByb3BfbmFtZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMjc0LVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6Mjc1OnN0YXRpYyBpbnQgYWRpbl9jb25maWdfcmdtaWlfbW9kZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMjc2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMzIwLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6MzIxOnN0YXRpYyBpbnQgYWRpbl9jb25maWdfcm1paV9tb2RlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy0zMjIte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy0zNDctXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzozNDg6c3RhdGljIGludCBhZGluX2dldF9kb3duc2hpZnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggKmRhdGEpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy0zNDkte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy0zNjctXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzozNjg6c3RhdGljIGludCBhZGluX3NldF9kb3duc2hpZnQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggY250KVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMzY5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMzkxLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6MzkyOnN0YXRpYyBpbnQgYWRpbl9nZXRfZWRwZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgKnR4X2ludGVydmFsKVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtMzkzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNDEyLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6NDEzOnN0YXRpYyBpbnQgYWRpbl9zZXRfZWRwZChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MTYgdHhfaW50ZXJ2YWwpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy00MTQte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy00MzktXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo0NDA6c3RhdGljIGludCBhZGluX2dldF9mYXN0X2Rvd24oc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggKm1zZWNzKVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNDQxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNDU1LVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6NDU2OnN0YXRpYyBpbnQgYWRpbl9zZXRfZmFzdF9kb3duKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGNvbnN0IHU4ICptc2VjcylcXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTQ1Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTQ3MC1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjQ3MTpzdGF0aWMgaW50IGFkaW5fZ2V0X3R1bmFibGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTQ3Mi1cXHRcXHRcXHQgICAgc3RydWN0IGV0aHRvb2xfdHVuYWJsZSAqdHVuYSwgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNDg1LVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6NDg2OnN0YXRpYyBpbnQgYWRpbl9zZXRfdHVuYWJsZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNDg3LVxcdFxcdFxcdCAgICBzdHJ1Y3QgZXRodG9vbF90dW5hYmxlICp0dW5hLCBjb25zdCB2b2lkICpkYXRhKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy01MDAtXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo1MDE6c3RhdGljIGludCBhZGluX2NvbmZpZ19jbGtfb3V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy01MDIte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy01MjctXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo1Mjg6c3RhdGljIGludCBhZGluX2NvbmZpZ196cHRtMTAwKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy01Mjkte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy01NDAtXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo1NDE6c3RhdGljIGludCBhZGluX2NvbmZpZ19pbml0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy01NDIte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy01NzYtXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo1Nzc6c3RhdGljIGludCBhZGluX3BoeV9hY2tfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNTc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNTg0LVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6NTg1OnN0YXRpYyBpbnQgYWRpbl9waHlfY29uZmlnX2ludHIoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTU4Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTYwNy1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjYwODpzdGF0aWMgaXJxcmV0dXJuX3QgYWRpbl9waHlfaGFuZGxlX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNjA5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNjI1LVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6NjI2OnN0YXRpYyBpbnQgYWRpbl9jbDQ1X3RvX2FkaW5fcmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZhZCxcXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTYyNy1cXHRcXHRcXHRcXHQgdTE2IGNsNDVfcmVnbnVtKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy02NDctXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo2NDg6c3RhdGljIGludCBhZGluX3JlYWRfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZhZCwgdTE2IHJlZ251bSlcXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTY0OS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTY2Ni1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjY2NzpzdGF0aWMgaW50IGFkaW5fd3JpdGVfbW1kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGludCBkZXZhZCwgdTE2IHJlZ251bSxcXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTY2OC1cXHRcXHRcXHQgIHUxNiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTY4Ni1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjY4NzpzdGF0aWMgaW50IGFkaW5fY29uZmlnX21kaXgoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTY4OC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTcyMy1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjcyNDpzdGF0aWMgaW50IGFkaW5fY29uZmlnX2FuZWcoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTcyNS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTc0Mi1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjc0MzpzdGF0aWMgaW50IGFkaW5fbWRpeF91cGRhdGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTc0NC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTc4My1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjc4NDpzdGF0aWMgaW50IGFkaW5fcmVhZF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTc4NS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTc5NC1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjc5NTpzdGF0aWMgaW50IGFkaW5fc29mdF9yZXNldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtNzk2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtODE0LVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6ODE1OnN0YXRpYyBpbnQgYWRpbl9nZXRfc3NldF9jb3VudChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtODE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtODE5LVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6ODIwOnN0YXRpYyB2b2lkIGFkaW5fZ2V0X3N0cmluZ3Moc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggKmRhdGEpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy04MjEte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy04MjctXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo4Mjg6c3RhdGljIGludCBhZGluX3JlYWRfbW1kX3N0YXRfcmVncyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtODI5LVxcdFxcdFxcdFxcdCAgIGNvbnN0IHN0cnVjdCBhZGluX2h3X3N0YXQgKnN0YXQsXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTg1Mi1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjg1MzpzdGF0aWMgdTY0IGFkaW5fZ2V0X3N0YXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IGkpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy04NTQte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy04NzUtXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYzo4NzY6c3RhdGljIHZvaWQgYWRpbl9nZXRfc3RhdHMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTg3Ny1cXHRcXHRcXHQgICBzdHJ1Y3QgZXRodG9vbF9zdGF0cyAqc3RhdHMsIHU2NCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtODg5LVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6ODkwOnN0YXRpYyBpbnQgYWRpbl9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtODkxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtOTAzLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6OTA0OnN0YXRpYyBpbnQgYWRpbl9jYWJsZV90ZXN0X3N0YXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYy05MDUte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4uYz05MjM9c3RhdGljIGludCBhZGluX2NhYmxlX3Rlc3RfcmVwb3J0X3RyYW5zKGludCByZXN1bHQpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTk0NC1cXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jOjk0NTpzdGF0aWMgaW50IGFkaW5fY2FibGVfdGVzdF9yZXBvcnRfcGFpcihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtOTQ2LVxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBpbnQgcGFpcilcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtOTc2LVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6OTc3OnN0YXRpYyBpbnQgYWRpbl9jYWJsZV90ZXN0X3JlcG9ydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtOTc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmMtOTkwLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluLmM6OTkxOnN0YXRpYyBpbnQgYWRpbl9jYWJsZV90ZXN0X2dldF9zdGF0dXMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvYWRpbi5jLTk5Mi1cXHRcXHRcXHRcXHQgICAgICBib29sICpmaW5pc2hlZClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jPTcwPXN0cnVjdCBhZGluX3ByaXYge1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtNzUtXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmM6NzY6c3RhdGljIGludCBhZGluX3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtNzcte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtOTYtXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmM6OTc6c3RhdGljIGludCBhZGluX2NvbmZpZ19hbmVnKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtOTgte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMTQ0LVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jOjE0NTpzdGF0aWMgaW50IGFkaW5fcGh5X2Fja19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMTQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTE1My1cXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYzoxNTQ6c3RhdGljIGludCBhZGluX2NvbmZpZ19pbnRyKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMTU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTE3Mi1cXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYzoxNzM6c3RhdGljIGlycXJldHVybl90IGFkaW5fcGh5X2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0xNzQte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMTkxLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jOjE5MjpzdGF0aWMgaW50IGFkaW5fc2V0X3Bvd2VyZG93bl9tb2RlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgZW4pXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMTkzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTIwNi1cXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYzoyMDc6c3RhdGljIGludCBhZGluX3N1c3BlbmQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0yMDgte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMjExLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jOjIxMjpzdGF0aWMgaW50IGFkaW5fcmVzdW1lKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMjEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTIxNi1cXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYzoyMTc6c3RhdGljIGludCBhZGluX3NldF9sb29wYmFjayhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIGVuYWJsZSwgaW50IHNwZWVkKVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTIxOC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0yMzAtXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmM6MjMxOnN0YXRpYyBpbnQgYWRpbl9zb2Z0X3Jlc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMjMyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTI0My1cXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYzoyNDQ6c3RhdGljIGludCBhZGluX2dldF9mZWF0dXJlcyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTI0NS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYy0yNzgtXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmM6Mjc5OnN0YXRpYyBpbnQgYWRpbl9nZXRfc3FpKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMjgwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTMwMy1cXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYzozMDQ6c3RhdGljIGludCBhZGluX2dldF9zcWlfbWF4KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMzA1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTEwMC5jLTMwOC1cXG5kcml2ZXJzL25ldC9waHkvYWRpbjExMDAuYzozMDk6c3RhdGljIGludCBhZGluX3Byb2JlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTAwLmMtMzEwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTE0MC1waHkuYy0xNi1cXG5kcml2ZXJzL25ldC9waHkvYWRpbjExNDAtcGh5LmM6MTc6c3RhdGljIGludCBhZGluMTE0MF9jb25maWdfYW5lZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTE0MC1waHkuYy0xOC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWRpbjExNDAtcGh5LmMtMjUtXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jOjI2OnN0YXRpYyBpbnQgYWRpbjExNDBfbG9vcGJhY2soc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgYm9vbCBlbmFibGUsIGludCBzcGVlZClcXG5kcml2ZXJzL25ldC9waHkvYWRpbjExNDAtcGh5LmMtMjcte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jLTM1LVxcbmRyaXZlcnMvbmV0L3BoeS9hZGluMTE0MC1waHkuYzozNjpzdGF0aWMgaW50IGFkaW4xMTQwX3JlYWRfc3RhdHVzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2FkaW4xMTQwLXBoeS5jLTM3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM9MjA2PXN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb25nIGFuODgwMXJfbGVkX3RyaWcgPSBCSVQoVFJJR0dFUl9ORVRERVZfTElOSykgfFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0yMTMtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzoyMTQ6c3RhdGljIGludCBhbjg4MDFfYnVja3BidXNfcmVnX3JtdyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMjE1LVxcdFxcdFxcdFxcdCAgIHUzMiBhZGRyLCB1MzIgbWFzaywgdTMyIHNldClcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMjIxLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6MjIyOnN0YXRpYyBpbnQgYW44ODAxX2J1Y2twYnVzX3JlZ19zZXRfYml0cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMjIzLVxcdFxcdFxcdFxcdFxcdHUzMiBhZGRyLCB1MzIgbWFzaylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMjI5LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6MjMwOnN0YXRpYyBpbnQgYW44ODAxX2J1Y2twYnVzX3JlZ19jbGVhcl9iaXRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0yMzEtXFx0XFx0XFx0XFx0XFx0ICB1MzIgYWRkciwgdTMyIG1hc2spXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTIzNy1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjIzODpzdGF0aWMgaW50IGFuODgwMV9idWNrcGJ1c19yZWdfd3JpdGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIGFkZHIsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0yMzktXFx0XFx0XFx0XFx0ICAgICB1MzIgZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMjQ1LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6MjQ2OnN0YXRpYyBpbnQgYW44ODAxX2J1Y2twYnVzX3JlZ19yZWFkKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUzMiBhZGRyLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMjQ3LVxcdFxcdFxcdFxcdCAgICB1MzIgKmRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jPTI1ND1zdGF0aWMgdTMyIGFuODgwMXJfbGVkX2JsaW5rX21zX3RvX2h3KHVuc2lnbmVkIGxvbmcgcmVxX21zKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0yNzEtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzoyNzI6c3RhdGljIGludCBhbjg4MDFyX2xlZF9ibGlua19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0yNzMtXFx0XFx0XFx0XFx0IHVuc2lnbmVkIGxvbmcgKmRlbGF5X29uLFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0zMzItXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzozMzM6c3RhdGljIGludCBhbjg4MDFyX2xlZF9icmlnaHRuZXNzX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTMzNC1cXHRcXHRcXHRcXHQgICAgICBlbnVtIGxlZF9icmlnaHRuZXNzIHZhbHVlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0zNTYtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzozNTc6c3RhdGljIGludCBhbjg4MDFyX2xlZF9od19jb250cm9sX2dldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTM1OC1cXHRcXHRcXHRcXHQgICAgICB1bnNpZ25lZCBsb25nICpydWxlcylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM9NDAzPXN0YXRpYyBpbnQgYW44ODAxcl9sZWRfdHJpZ190b19odyh1bnNpZ25lZCBsb25nIHJ1bGVzLCB1MTYgKm9uLCB1MTYgKmJsaW5rKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy00NDEtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo0NDI6c3RhdGljIGludCBhbjg4MDFyX2xlZF9od19pc19zdXBwb3J0ZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy00NDMtXFx0XFx0XFx0XFx0ICAgICAgIHVuc2lnbmVkIGxvbmcgcnVsZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTQ1Mi1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjQ1MzpzdGF0aWMgaW50IGFuODgwMXJfbGVkX2h3X2NvbnRyb2xfc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtNDU0LVxcdFxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGxvbmcgcnVsZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTQ3OS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjQ4MDpzdGF0aWMgaW50IGFuODgwMXJfbGVkX3BvbGFyaXR5X3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBpbnQgaW5kZXgsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy00ODEtXFx0XFx0XFx0XFx0ICAgIHVuc2lnbmVkIGxvbmcgbW9kZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTUwNC1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjUwNTpzdGF0aWMgaW50IGFuODgwMXJfbGVkX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggKmxlZF9jZmcpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy01MDYte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy01NjItXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo1NjM6c3RhdGljIGludCBhbjg4MDFyX3Jlc2V0X3dha2Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTU2NC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTYwMC1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjYwMTpzdGF0aWMgaW50IGFuODgwMXJfYWNrX2ludGVycnVwdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtNjAyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtNjE0LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6NjE1OnN0YXRpYyBpbnQgYW44ODAxcl9jb25maWdfaW50cihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtNjE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtNjUxLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6NjUyOnN0YXRpYyBpcnFyZXR1cm5fdCBhbjg4MDFyX2hhbmRsZV9pbnRlcnJ1cHQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTY1My17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTY3OS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjY4MDpzdGF0aWMgdm9pZCBhbjg4MDFyX2dldF93b2woc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTY4MS1cXHRcXHRcXHQgICAgc3RydWN0IGV0aHRvb2xfd29saW5mbyAqd29sKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy03MDctXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo3MDg6c3RhdGljIGludCBhbjg4MDFyX3NldF93b2woc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTcwOS1cXHRcXHRcXHQgICBzdHJ1Y3QgZXRodG9vbF93b2xpbmZvICp3b2wpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTc4Mi1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjc4MzpzdGF0aWMgaW50IGFuODgwMXJfb2ZfaW5pdF9sZWRzKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4ICpsZWRfY2ZnKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtNzg0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtODI5LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6ODMwOnN0YXRpYyBpbnQgYW44ODAxcl9yZ21paV9yeGRlbGF5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIGJvb2wgZW5hYmxlLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtODMxLVxcdFxcdFxcdFxcdCB1MTYgZGVsYXlfc3RlcHMpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTg1MS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjg1MjpzdGF0aWMgaW50IGFuODgwMXJfcmdtaWlfdHhkZWxheShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCBib29sIGVuYWJsZSxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTg1My1cXHRcXHRcXHRcXHQgdTE2IGRlbGF5X3N0ZXBzKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy04NzAtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzo4NzE6c3RhdGljIGludCBhbjg4MDFyX3JnbWlpX2RlbGF5X2NvbmZpZyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtODcyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTAxLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6OTAyOnN0YXRpYyBpbnQgYW44ODAxcl9jb25maWdfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTAzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtOTk4LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmM6OTk5OnN0YXRpYyBpbnQgYW44ODAxcl9yZWFkX3N0YXR1cyhzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMTAwMC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTEwMzMtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzoxMDM0OnN0YXRpYyBpbnQgYW44ODAxcl9wcm9iZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMTAzNS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jLTEwNTktXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYzoxMDYwOnN0YXRpYyBpbnQgYW44ODAxcl9zdXNwZW5kKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9hbjg4MDEuYy0xMDYxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMTA5MC1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2FuODgwMS5jOjEwOTE6c3RhdGljIGludCBhbjg4MDFyX3Jlc3VtZShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfYW44ODAxLmMtMTA5Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0xOTc9c3RydWN0IGVuODgxMWhfcHJpdiB7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yMDEtXFx0c3RydWN0IGNsa19od1xcdFxcdGh3O1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjIwMjpcXHRzdHJ1Y3QgcGh5X2RldmljZVxcdCpwaHlkZXY7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjAzLVxcdHVuc2lnbmVkIGludFxcdFxcdGNrb19pc19lbmFibGVkO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9MjQ4PXN0YXRpYyBpbnQgX19haXJfcGJ1c19yZWdfd3JpdGUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMjcyLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjI3MzpzdGF0aWMgaW50IF9fYWlyX3dyaXRlX2J1ZihzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1MzIgYWRkcmVzcyxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0yNzQtXFx0XFx0XFx0ICAgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTMwOC1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzozMDk6c3RhdGljIGludCBhaXJfd3JpdGVfYnVmKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHUzMiBhZGRyZXNzLFxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTMxMC1cXHRcXHRcXHQgY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTMyNi1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzozMjc6c3RhdGljIGludCBlbjg4MTFoX3dhaXRfbWN1X3JlYWR5KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTM0OC1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzozNDk6c3RhdGljIGludCBhbjg4MTFoYl9jaGVja19jcmMoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTMyIHNldDEsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzUwLVxcdFxcdFxcdCAgICAgIHUzMiBtb24yLCB1MzIgbW9uMylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTM4Ni1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzozODc6c3RhdGljIHZvaWQgZW44ODExaF9wcmludF9md192ZXJzaW9uKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMzg4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTM5Ni1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzozOTc6c3RhdGljIGludCBhbjg4MTFoYl9sb2FkX2ZpbGUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgY29uc3QgY2hhciAqbmFtZSxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0zOTgtXFx0XFx0XFx0ICAgICAgdTMyIGFkZHJlc3MpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy00MTItXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDEzOnN0YXRpYyBpbnQgYW44ODExaGJfbWN1X2Fzc2VydChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTQxNC17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy00MzYtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NDM3OnN0YXRpYyBpbnQgYW44ODExaGJfbWN1X2RlYXNzZXJ0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDM4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTQ2MS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo0NjI6c3RhdGljIGludCBhbjg4MTFoYl9sb2FkX2Zpcm13YXJlKHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNDYzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTUwMS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo1MDI6c3RhdGljIGludCBlbjg4MTFoX2xvYWRfZmlybXdhcmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01MDMte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTU3LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjU1ODpzdGF0aWMgaW50IGVuODgxMWhfcmVzdGFydF9tY3Uoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy01NTkte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNTc5LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjU4MDpzdGF0aWMgaW50IGFpcl9od19sZWRfb25fc2V0KHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsIHU4IGluZGV4LCBib29sIG9uKVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTU4MS17XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02MDktXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NjEwOnN0YXRpYyBpbnQgYWlyX2h3X2xlZF9ibGlua19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjExLVxcdFxcdFxcdFxcdGJvb2wgYmxpbmtpbmcpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02MzYtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NjM3OnN0YXRpYyBpbnQgYWlyX2xlZF9ibGlua19zZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjM4LVxcdFxcdFxcdCAgICAgdW5zaWduZWQgbG9uZyAqZGVsYXlfb24sXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02NjktXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NjcwOnN0YXRpYyBpbnQgYWlyX2xlZF9icmlnaHRuZXNzX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy02NzEtXFx0XFx0XFx0XFx0ICBlbnVtIGxlZF9icmlnaHRuZXNzIHZhbHVlKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjk0LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjY5NTpzdGF0aWMgaW50IGFpcl9sZWRfaHdfY29udHJvbF9nZXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNjk2LVxcdFxcdFxcdFxcdCAgdW5zaWduZWQgbG9uZyAqcnVsZXMpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03MDctXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6NzA4OnN0YXRpYyBpbnQgYWlyX2xlZF9od19jb250cm9sX3NldChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCxcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03MDktXFx0XFx0XFx0XFx0ICB1bnNpZ25lZCBsb25nIHJ1bGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzY4LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc2OTpzdGF0aWMgaW50IGFpcl9sZWRfaW5pdChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2LCB1OCBpbmRleCwgdTggc3RhdGUsIHU4IHBvbClcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy03NzAte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzk2LVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjc5NzpzdGF0aWMgaW50IGFpcl9sZWRzX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgaW50IG51bSwgaW50IGR1ciwgaW50IG1vZGUpXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtNzk4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTg0NS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4NDY6c3RhdGljIGludCBlbjg4MTFoX2xlZF9od19pc19zdXBwb3J0ZWQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiwgdTggaW5kZXgsXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODQ3LVxcdFxcdFxcdFxcdCAgICAgICB1bnNpZ25lZCBsb25nIHJ1bGVzKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9ODU5PXN0YXRpYyB1bnNpZ25lZCBsb25nIGFuODgxMWhiX2Nsa19yZWNhbGNfcmF0ZShzdHJ1Y3QgY2xrX2h3ICpodyxcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTg2Mi1cXHRzdHJ1Y3QgZW44ODExaF9wcml2ICpwcml2ID0gY2xrX2h3X3RvX2VuODgxMWhfcHJpdihodyk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6ODYzOlxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSBwcml2LVxcdTAwM2VwaHlkZXY7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODY0LVxcdHUzMiBwYnVzX3ZhbHVlO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9ODc0PXN0YXRpYyBpbnQgYW44ODExaGJfY2xrX2VuYWJsZShzdHJ1Y3QgY2xrX2h3ICpodylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTg3Ni1cXHRzdHJ1Y3QgZW44ODExaF9wcml2ICpwcml2ID0gY2xrX2h3X3RvX2VuODgxMWhfcHJpdihodyk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6ODc3OlxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSBwcml2LVxcdTAwM2VwaHlkZXY7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODc4LVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9ODg0PXN0YXRpYyB2b2lkIGFuODgxMWhiX2Nsa19kaXNhYmxlKHN0cnVjdCBjbGtfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODg2LVxcdHN0cnVjdCBlbjg4MTFoX3ByaXYgKnByaXYgPSBjbGtfaHdfdG9fZW44ODExaF9wcml2KGh3KTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo4ODc6XFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHByaXYtXFx1MDAzZXBoeWRldjtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy04ODgtXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz04OTM9c3RhdGljIGludCBhbjg4MTFoYl9jbGtfaXNfZW5hYmxlZChzdHJ1Y3QgY2xrX2h3ICpodylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTg5NS1cXHRzdHJ1Y3QgZW44ODExaF9wcml2ICpwcml2ID0gY2xrX2h3X3RvX2VuODgxMWhfcHJpdihodyk7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6ODk2OlxcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYgPSBwcml2LVxcdTAwM2VwaHlkZXY7XFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtODk3LVxcdHUzMiBwYnVzX3ZhbHVlO1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM9OTU4PXN0YXRpYyB1bnNpZ25lZCBsb25nIGVuODgxMWhfY2xrX3JlY2FsY19yYXRlKHN0cnVjdCBjbGtfaHcgKmh3LFxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtOTYxLVxcdHN0cnVjdCBlbjg4MTFoX3ByaXYgKnByaXYgPSBjbGtfaHdfdG9fZW44ODExaF9wcml2KGh3KTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo5NjI6XFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHByaXYtXFx1MDAzZXBoeWRldjtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy05NjMtXFx0dTMyIHBidXNfdmFsdWU7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz05NzM9c3RhdGljIGludCBlbjg4MTFoX2Nsa19lbmFibGUoc3RydWN0IGNsa19odyAqaHcpXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy05NzUtXFx0c3RydWN0IGVuODgxMWhfcHJpdiAqcHJpdiA9IGNsa19od190b19lbjg4MTFoX3ByaXYoaHcpO1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jOjk3NjpcXHRzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2ID0gcHJpdi1cXHUwMDNlcGh5ZGV2O1xcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTk3Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jPTk4Mz1zdGF0aWMgdm9pZCBlbjg4MTFoX2Nsa19kaXNhYmxlKHN0cnVjdCBjbGtfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtOTg1LVxcdHN0cnVjdCBlbjg4MTFoX3ByaXYgKnByaXYgPSBjbGtfaHdfdG9fZW44ODExaF9wcml2KGh3KTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo5ODY6XFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHByaXYtXFx1MDAzZXBoeWRldjtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy05ODctXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz05OTI9c3RhdGljIGludCBlbjg4MTFoX2Nsa19pc19lbmFibGVkKHN0cnVjdCBjbGtfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtOTk0LVxcdHN0cnVjdCBlbjg4MTFoX3ByaXYgKnByaXYgPSBjbGtfaHdfdG9fZW44ODExaF9wcml2KGh3KTtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzo5OTU6XFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldiA9IHByaXYtXFx1MDAzZXBoeWRldjtcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy05OTYtXFx0dTMyIHBidXNfdmFsdWU7XFxuLS1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYz0xMDMyPXN0YXRpYyBpbnQgZW44ODExaF9jbGtfcHJvdmlkZXJfc2V0dXAoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgY2xrX2h3ICpodylcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEwNTYtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTA1NzpzdGF0aWMgaW50IGVuODgxMWhfbGVkc19zZXR1cChzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEwNTgte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTA3My1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMDc0OnN0YXRpYyBpbnQgYW44ODExaGJfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMDc1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTExNDQtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTE0NTpzdGF0aWMgaW50IGVuODgxMWhfcHJvYmUoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMTQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTExODUtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTE4NjpzdGF0aWMgaW50IGFuODgxMWhiX2NvbmZpZ19zZXJkZXNfcG9sYXJpdHkoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMTg3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEyMTYtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTIxNzpzdGF0aWMgaW50IGVuODgxMWhfY29uZmlnX3NlcmRlc19wb2xhcml0eShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEyMTgte1xcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmMtMTI1My1cXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYzoxMjU0OnN0YXRpYyBpbnQgYW44ODExaGJfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5kcml2ZXJzL25ldC9waHkvYWlyX2VuODgxMWguYy0xMjU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9haXJfZW44ODExaC5jLTEyODAtXFxuZHJpdmVycy9uZXQvcGh5L2Fpcl9lbjg4MTFoLmM6MTI4MTpzdGF0aWMgaW50IGVuODgxMWhfY29uZmlnX2luaXQoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMjE6NTI6NDUuMzQ1ODcwMDM5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwNDg0MDk0MDA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgRGl2ZSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiBgZHJpdmVycy9uZXQvcGh5L0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgdGhlIFBIWSBkcml2ZXIgY29uZmlndXJhdGlvbnMgbGl2ZSwgYW5kIHRoYXQncyB0aGUgbG9naWNhbCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyB3aG9sZSBuZXR3b3JraW5nIFBIWSB0aGluZyBpcyBzZXQgdXAgd2l0aGluIHRoZSBrZXJuZWwgYnVpbGQgc3lzdGVtLiBJJ20gdGhpbmtpbmcgYWJvdXQgZGVwZW5kZW5jeSBkZWZpbml0aW9ucywgZmVhdHVyZSBmbGFncywgYW5kIGRlZmF1bHQgc2VsZWN0aW9uc+KAlHRoZSB3aG9sZSBLY29uZmlnIGVuY2hpbGFkYS4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVudGFsIG1hcCBvZiB3aGljaCBQSFkgZHJpdmVycyBhcmUgYXZhaWxhYmxlLCB3aGF0IHRoZWlyIGtleSBjaGFyYWN0ZXJpc3RpY3MgYXJlIChsaWtlIGlmIHRoZXkncmUgZ2VuZXJpYyBvciBzcGVjaWZpYyB0byBjZXJ0YWluIGhhcmR3YXJlKSwgYW5kIGhvdyB0aGV5IHRpZSBpbnRvIHRoZSBicm9hZGVyIG5ldHdvcmsgc3Vic3lzdGVtLiBTbywgbGV0J3MgcHVsbCB1cCB0aGF0IGZpbGUgYW5kIGdldCB0byB3b3JrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDYwMywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDIxOjUyOjU1LjgyOTk2NjEzM1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NzM2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9waHkvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBQSFkgTGF5ZXIgQ29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgUEhZTElOS1xcbiAgIDc6XFx0XFx0dHJpc3RhdGVcXG4gICA4OlxcdFxcdHNlbGVjdCBQSFlMSUJcXG4gICA5OlxcdFxcdHNlbGVjdCBTV1BIWVxcbiAgMTA6XFx0XFx0aGVscFxcbiAgMTE6XFx0XFx0ICBQSFlsaW5rIG1vZGVscyB0aGUgbGluayBiZXR3ZWVuIHRoZSBQSFkgYW5kIE1BQywgYWxsb3dpbmcgZml4ZWRcXG4gIDEyOlxcdFxcdCAgY29uZmlndXJhdGlvbiBsaW5rcywgUEhZcywgYW5kIFNlcmRlcyBsaW5rcyB3aXRoIE1BQyBsZXZlbFxcbiAgMTM6XFx0XFx0ICBhdXRvbmVnb3RpYXRpb24gbW9kZXMuXFxuICAxNDpcXHRcXG4gIDE1OlxcdG1lbnVjb25maWcgUEhZTElCXFxuICAxNjpcXHRcXHR0cmlzdGF0ZSBcXFwiUEhZIERldmljZSBzdXBwb3J0IGFuZCBpbmZyYXN0cnVjdHVyZVxcXCJcXG4gIDE3OlxcdFxcdGhlbHBcXG4gIDE4OlxcdFxcdCAgRXRoZXJuZXQgY29udHJvbGxlcnMgYXJlIHVzdWFsbHkgYXR0YWNoZWQgdG8gUEhZXFxuICAxOTpcXHRcXHQgIGRldmljZXMuICBUaGlzIG9wdGlvbiBwcm92aWRlcyBpbmZyYXN0cnVjdHVyZSBmb3JcXG4gIDIwOlxcdFxcdCAgbWFuYWdpbmcgUEhZIGRldmljZXMuXFxuICAyMTpcXHRcXG4gIDIyOlxcdGlmIFBIWUxJQlxcbiAgMjM6XFx0XFxuICAyNDpcXHRjb25maWcgU1dQSFlcXG4gIDI1OlxcdFxcdGJvb2xcXG4gIDI2OlxcdFxcbiAgMjc6XFx0Y29uZmlnIFBIWV9QQUNLQUdFXFxuICAyODpcXHRcXHQgdHJpc3RhdGVcXG4gIDI5OlxcdFxcbiAgMzA6XFx0Y29uZmlnIExFRF9UUklHR0VSX1BIWVxcbiAgMzE6XFx0XFx0Ym9vbCBcXFwiU3VwcG9ydCBMRUQgdHJpZ2dlcnMgZm9yIHRyYWNraW5nIGxpbmsgc3RhdGVcXFwiXFxuICAzMjpcXHRcXHRkZXBlbmRzIG9uIExFRFNfVFJJR0dFUlNcXG4gIDMzOlxcdFxcdGhlbHBcXG4gIDM0OlxcdFxcdCAgQWRkcyBzdXBwb3J0IGZvciBhIHNldCBvZiBMRUQgdHJpZ2dlciBldmVudHMgcGVyLVBIWS4gIExpbmtcXG4gIDM1OlxcdFxcdCAgc3RhdGUgY2hhbmdlIHdpbGwgdHJpZ2dlciB0aGUgZXZlbnRzLCBmb3IgY29uc3VtcHRpb24gYnkgYW5cXG4gIDM2OlxcdFxcdCAgTEVEIGNsYXNzIGRyaXZlci4gIFRoZXJlIGFyZSB0cmlnZ2VycyBmb3IgZWFjaCBsaW5rIHNwZWVkIGN1cnJlbnRseVxcbiAgMzc6XFx0XFx0ICBzdXBwb3J0ZWQgYnkgdGhlIFBIWSBhbmQgYWxzbyBhIG9uZSBjb21tb24gXFxcImxpbmtcXFwiIHRyaWdnZXIgYXMgYVxcbiAgMzg6XFx0XFx0ICBsb2dpY2FsLW9yIG9mIGFsbCB0aGUgbGluayBzcGVlZCBvbmVzLlxcbiAgMzk6XFx0XFx0ICBBbGwgdGhlc2UgdHJpZ2dlcnMgYXJlIG5hbWVkIGFjY29yZGluZyB0byB0aGUgZm9sbG93aW5nIHBhdHRlcm46XFxuICA0MDpcXHRcXHQgICAgICBcXHUwMDNjbWlpIGJ1cyBpZFxcdTAwM2U6XFx1MDAzY3BoeVxcdTAwM2U6XFx1MDAzY3NwZWVkXFx1MDAzZVxcbiAgNDE6XFx0XFxuICA0MjpcXHRcXHQgIFdoZXJlIHNwZWVkIGlzIGluIHRoZSBmb3JtOlxcbiAgNDM6XFx0XFx0XFx0XFx1MDAzY1NwZWVkIGluIG1lZ2FiaXRzXFx1MDAzZU1icHMgT1IgXFx1MDAzY1NwZWVkIGluIGdpZ2FiaXRzXFx1MDAzZUdicHMgT1IgbGlua1xcbiAgNDQ6XFx0XFx0XFx0Zm9yIGFueSBzcGVlZCBrbm93biB0byB0aGUgUEhZLlxcbiAgNDU6XFx0XFxuICA0NjpcXHRjb25maWcgT1BFTl9BTExJQU5DRV9IRUxQRVJTXFxuICA0NzpcXHRcXHRib29sXFxuICA0ODpcXHRcXG4gIDQ5OlxcdGNvbmZpZyBQSFlMSUJfTEVEU1xcbiAgNTA6XFx0XFx0ZGVmX2Jvb2wgT0ZcXG4gIDUxOlxcdFxcdGRlcGVuZHMgb24gTEVEU19DTEFTUz15IHx8IExFRFNfQ0xBU1M9UEhZTElCXFxuICA1MjpcXHRcXHRoZWxwXFxuICA1MzpcXHRcXHQgIFdoZW4gTEVEIGNsYXNzIHN1cHBvcnQgaXMgZW5hYmxlZCwgcGh5bGliIGNhbiBhdXRvbWF0aWNhbGx5XFxuICA1NDpcXHRcXHQgIHByb2JlIExFRCBzZXR0aW5nIGZyb20gZGV2aWNlIHRyZWUuXFxuICA1NTpcXHRcXG4gIDU2OlxcdGNvbmZpZyBGSVhFRF9QSFlcXG4gIDU3OlxcdFxcdHRyaXN0YXRlIFxcXCJNRElPIEJ1cy9QSFkgZW11bGF0aW9uIHdpdGggZml4ZWQgc3BlZWQvbGluayBQSFlzXFxcIlxcbiAgNTg6XFx0XFx0c2VsZWN0IFNXUEhZXFxuICA1OTpcXHRcXHRoZWxwXFxuICA2MDpcXHRcXHQgIEFkZHMgdGhlIHBsYXRmb3JtIFxcXCJmaXhlZFxcXCIgTURJTyBCdXMgdG8gY292ZXIgdGhlIGJvYXJkcyB0aGF0IHVzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo1Mjo1NS44MzAwNTQ5ODNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTQ3OTQ5MTc1MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBQSFlMSU5LYCBhbmQgYFBIWUxJQmAgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLiBNeSBmb2N1cyBpcyBvbiB1bmRlcnN0YW5kaW5nIHdoYXQgc3BlY2lmaWNhbGx5IHB1bGxzIGluIGBQSFlMSU5LYCBhbmQgYFBIWUxJQmAuIEdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIGtlcm5lbCdzIG5ldHdvcmtpbmcgc3RhY2ssIHRoZSBmaXJzdCBwbGFjZSBJJ2xsIHRhcmdldCBpcyB0aGUgZGV2aWNlIGRyaXZlciBjb25maWd1cmF0aW9uLiBJJ20gdGhpbmtpbmcgZHJpdmVycyByZWxhdGVkIHRvIG5ldHdvcmsgaW50ZXJmYWNlcyBhcmUgdGhlIG1vc3QgbGlrZWx5IGNhbmRpZGF0ZXMuXG5cbk15IHBsYW4gaXMgdG8gc3RhcnQgd2l0aCBhIGBncmVwYCB0aHJvdWdoIHRoZSByZWxldmFudCBLY29uZmlnIGZpbGVzLiBUaGlzIG1lYW5zIGRpdmluZyBpbnRvIGBkcml2ZXJzL25ldC9LY29uZmlnYCBhbmQsIGRlcGVuZGluZyBvbiB0aGUgYXJjaGl0ZWN0dXJlIEknbSB3b3JraW5nIHdpdGgsIHBvc3NpYmx5IGNoZWNraW5nIHdpdGhpbiBgZHJpdmVycy9uZXQvdXNiL0tjb25maWdgIHRvby4gSSBleHBlY3QgYFBIWUxJTktgIGFuZCBgUEhZTElCYCB3aWxsIGJlIGluY2x1ZGVkLCBhbmQgbXkgYWltIGlzIHRvIGZpbmQgKndoZXJlKiBpbiB0aGUgaGllcmFyY2h5IHRoZXNlIGFyZSBzZWxlY3RlZCwgYW5kIHVuZGVyIHdoYXQgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMuIFRoYXQgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIHRyaWdnZXJpbmcgY29uZGl0aW9ucyBJJ20gaW50ZXJlc3RlZCBpbiBhbmQgdGhlaXIgcm9sZSBpbiB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgdGhlIG5ldHdvcmtpbmcgc3Vic3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTU0OCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMjE6NTM6MTAuNjI0OTc2MTA2WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjY2MDE0ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IFBIWUxJTktcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9LY29uZmlnPTI9Y29uZmlnIEFMVEVSQV9UU0VcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9LY29uZmlnLTYtXFx0c2VsZWN0IFBIWUxJQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FsdGVyYS9LY29uZmlnOjc6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbHRlcmEvS2NvbmZpZy04LVxcdHNlbGVjdCBQQ1NfTFlOWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYXRoZXJvcy9LY29uZmlnPTIwPWNvbmZpZyBBRzcxWFhcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZy0yMi1cXHRkZXBlbmRzIG9uIEFUSDc5IHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZzoyMzpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2F0aGVyb3MvS2NvbmZpZy0yNC1cXHRpbXBseSBORVRfU0VMRlRFU1RTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jYWRlbmNlL0tjb25maWc9MjI9Y29uZmlnIE1BQ0JcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2NhZGVuY2UvS2NvbmZpZy0yNS1cXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnOjI2OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY2FkZW5jZS9LY29uZmlnLTI3LVxcdHNlbGVjdCBDUkMzMlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc9ODA9Y29uZmlnIFVDQ19HRVRIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy04My1cXHRzZWxlY3QgRlNMX1BRX01ESU9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzo4NDpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTg1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhL0tjb25maWc9Mj1tZW51Y29uZmlnIEZTTF9EUEFBX0VUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEvS2NvbmZpZy00LVxcdGRlcGVuZHMgb24gRlNMX0RQQUEgXFx1MDAyNlxcdTAwMjYgRlNMX0ZNQU5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9LY29uZmlnOjU6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYS9LY29uZmlnLTYtXFx0c2VsZWN0IFBDU19MWU5YXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZz0yPWNvbmZpZyBGU0xfRFBBQTJfRVRIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy00LVxcdGRlcGVuZHMgb24gRlNMX01DX0JVUyBcXHUwMDI2XFx1MDAyNiBGU0xfTUNfRFBJT1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnOjU6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZHBhYTIvS2NvbmZpZy02LVxcdHNlbGVjdCBQQ1NfTFlOWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWc9MzM9Y29uZmlnIEZTTF9EUEFBMl9TV0lUQ0hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnLTM3LVxcdGRlcGVuZHMgb24gRlNMX01DX0JVUyBcXHUwMDI2XFx1MDAyNiBGU0xfTUNfRFBJT1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9kcGFhMi9LY29uZmlnOjM4OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2RwYWEyL0tjb25maWctMzktXFx0c2VsZWN0IFBDU19MWU5YXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZz0zMD1jb25maWcgRlNMX0VORVRDXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZy0zNy1cXHRzZWxlY3QgTlhQX0VORVRDX1BGX0NPTU1PTlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnOjM4OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctMzktXFx0c2VsZWN0IFBDU19MWU5YXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZz00OD1jb25maWcgTlhQX0VORVRDNFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWctNTUtXFx0c2VsZWN0IE5YUF9OVE1QXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2VuZXRjL0tjb25maWc6NTY6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZy01Ny1cXHRzZWxlY3QgRElNTElCXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZz02Nj1jb25maWcgRlNMX0VORVRDX1ZGXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZy03MS1cXHRzZWxlY3QgRlNMX0VORVRDX01ESU9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZW5ldGMvS2NvbmZpZzo3MjpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9lbmV0Yy9LY29uZmlnLTczLVxcdHNlbGVjdCBESU1MSUJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL0tjb25maWc9Mj1jb25maWcgRlNMX0ZNQU5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mbWFuL0tjb25maWctNS1cXHRzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1JcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnOjY6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZm1hbi9LY29uZmlnLTctXFx0c2VsZWN0IFBDU19MWU5YXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZnNfZW5ldC9LY29uZmlnPTI9Y29uZmlnIEZTX0VORVRcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mc19lbmV0L0tjb25maWctNS1cXHRzZWxlY3QgTUlJXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvS2NvbmZpZzo2OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZzX2VuZXQvS2NvbmZpZy03LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnPTU5PWNvbmZpZyBNVk5FVEFcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy02Mi1cXHRzZWxlY3QgTVZNRElPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnOjYzOlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTY0LVxcdHNlbGVjdCBQQUdFX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZz04Nj1jb25maWcgTVZQUDJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvS2NvbmZpZy04OS1cXHRzZWxlY3QgTVZNRElPXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnOjkwOlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9LY29uZmlnLTkxLVxcdHNlbGVjdCBQQUdFX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvS2NvbmZpZz02PWNvbmZpZyBQUkVTVEVSQVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9wcmVzdGVyYS9LY29uZmlnLTEwLVxcdHNlbGVjdCBORVRfREVWTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvS2NvbmZpZzoxMTpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvcHJlc3RlcmEvS2NvbmZpZy0xMi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnPTE0PWNvbmZpZyBORVRfTUVESUFURUtfU09DXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9LY29uZmlnLTE3LVxcdHNlbGVjdCBQSU5DVFJMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvS2NvbmZpZzoxODpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL0tjb25maWctMTktXFx0c2VsZWN0IERJTUxJQlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnPTIwPWNvbmZpZyBGQk5JQ1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9LY29uZmlnLTI5LVxcdHNlbGVjdCBQQ1NfWFBDU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZzozMDpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvS2NvbmZpZy0zMS1cXHRzZWxlY3QgUExETUZXXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZz00NT1jb25maWcgTEFONzQzWFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWctNTEtXFx0c2VsZWN0IENSQzMyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL0tjb25maWc6NTI6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvS2NvbmZpZy01My1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnPTE9Y29uZmlnIExBTjk2NlhfU1dJVENIXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnLTctXFx0ZGVwZW5kcyBvbiBCUklER0UgfHwgQlJJREdFPW5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnOjg6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvbGFuOTY2eC9LY29uZmlnLTktXFx0c2VsZWN0IFBBR0VfUE9PTFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnPTE9Y29uZmlnIFNQQVJYNV9TV0lUQ0hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC9zcGFyeDUvS2NvbmZpZy04LVxcdGRlcGVuZHMgb24gQlJJREdFIHx8IEJSSURHRT1uXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9LY29uZmlnOjk6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvc3Bhcng1L0tjb25maWctMTAtXFx0c2VsZWN0IFBIWV9TUEFSWDVfU0VSREVTXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tc2NjL0tjb25maWc9MTU9Y29uZmlnIE1TQ0NfT0NFTE9UX1NXSVRDSF9MSUJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2MvS2NvbmZpZy0xOS1cXHRzZWxlY3QgUEFDS0lOR1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2MvS2NvbmZpZzoyMDpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21zY2MvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnPTQyPWNvbmZpZyBSRU5FU0FTX0VUSEVSX1NXSVRDSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9LY29uZmlnLTQ3LVxcdHNlbGVjdCBNSUlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWc6NDg6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL0tjb25maWctNDktXFx0c2VsZWN0IFJFTkVTQVNfR0VONF9QVFBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9Mj1jb25maWcgU1RNTUFDX0VUSFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy05LVxcdHNlbGVjdCBQQUdFX1BPT0xcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjEwOlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xMS1cXHRzZWxlY3QgQ1JDMzJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnPTI2PWNvbmZpZyBURUhVVElfVE40MFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWctMzAtXFx0c2VsZWN0IEZXX0xPQURFUlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RlaHV0aS9LY29uZmlnOjMxOlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGVodXRpL0tjb25maWctMzItXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvS2NvbmZpZz05Nj1jb25maWcgVElfSzNfQU02NV9DUFNXX05VU1NcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTAwLVxcdHNlbGVjdCBUSV9EQVZJTkNJX01ESU9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9LY29uZmlnOjEwMTpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL0tjb25maWctMTAyLVxcdHNlbGVjdCBQQUdFX1BPT0xcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZz0xOT1jb25maWcgTElCV1hcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3dhbmd4dW4vS2NvbmZpZy0yMy1cXHRzZWxlY3QgRElNTElCXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnOjI0OlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvd2FuZ3h1bi9LY29uZmlnLTI1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnPTI2PWNvbmZpZyBYSUxJTlhfQVhJX0VNQUNcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnLTI5LVxcdGRlcGVuZHMgb24gWElMSU5YX0RNQVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hpbGlueC9LY29uZmlnOjMwOlxcdHNlbGVjdCBQSFlMSU5LXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQveGlsaW54L0tjb25maWctMzEtXFx0c2VsZWN0IERJTUxJQlxcbi0tXFxuZHJpdmVycy9uZXQvcGNzL0tjb25maWc9OD1jb25maWcgUENTX1hQQ1NcXG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZy05LVxcdHRyaXN0YXRlIFxcXCJTeW5vcHN5cyBEZXNpZ25XYXJlIEV0aGVybmV0IFhQQ1NcXFwiXFxuZHJpdmVycy9uZXQvcGNzL0tjb25maWc6MTA6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC9wY3MvS2NvbmZpZy0xMS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZz0xMTM9Y29uZmlnIFVTQl9MQU43OFhYXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xMTUtXFx0c2VsZWN0IE1JSVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnOjExNjpcXHRzZWxlY3QgUEhZTElOS1xcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTExNy1cXHRzZWxlY3QgTUlDUk9DSElQX1BIWVxcbi0tXFxuZHJpdmVycy9uZXQvdXNiL0tjb25maWc9MTY2PWNvbmZpZyBVU0JfTkVUX0FYODgxN1hcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9LY29uZmlnLTE2OS1cXHRzZWxlY3QgQ1JDMzJcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZzoxNzA6XFx0c2VsZWN0IFBIWUxJTktcXG5kcml2ZXJzL25ldC91c2IvS2NvbmZpZy0xNzEtXFx0c2VsZWN0IEFYODg3OTZCX1BIWVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo1MzoxMC43NTE1ODI3MTZaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTYwMDQ1ODEzOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0LlxuXG4qKkV0aGVybmV0IERldmljZSBEcml2ZXJzIFx1MDAyNiBFbXVsYXRpb24gZm9yIFRlc3RpbmcqKlxuXG5SaWdodCwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoZXNlIFVTQiBFdGhlcm5ldCBkcml2ZXJzLCBgVVNCX0xBTjc4WFhgIGFuZCBgVVNCX05FVF9BWDg4MTdYYC4gU2VlbXMgbGlrZSB0aGV5IGJvdGggaG9vayBpbnRvIGBQSFlMSU5LYCBhbmQgYFBIWUxJQmAsIHdoaWNoIGlzIHN0YW5kYXJkIGZvciBoYW5kbGluZyB0aGUgcGh5c2ljYWwgbGF5ZXIgaW50ZXJmYWNlLiBUaGF0J3MgYSBzb2xpZCBhcmNoaXRlY3R1cmFsIGNob2ljZSwgbm90aGluZyBzdXJwcmlzaW5nIHRoZXJlLlxuXG5UaGUgZXhjaXRpbmcgcGFydCBpcyB0aGF0IEkgY2FuIGVtdWxhdGUgdGhlc2UgVVNCIEV0aGVybmV0IGRldmljZXMgdXNpbmcgVVNCIHJhdy1nYWRnZXQgb3IgZHVtbXlfaGNkIHdpdGhpbiBzeXprYWxsZXIgb3IgUUVNVSEgSSBjYW4gbGV2ZXJhZ2UgdGhhdCB0byB0ZXN0IHRoZW0gdGhvcm91Z2hseS5cblxuQWxzbywgSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgYE5FVF9EU0FgIGFsc28gc2VsZWN0cyBgUEhZTElOS2AuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgYG5ldC9kc2EvS2NvbmZpZ2AgZmlsZSB0byBjb25maXJtIGhvdyB0aGF0IHRpZXMgaW50byB0aGUgb3ZlcmFsbCBwaWN0dXJlLiBHb3R0YSBtYWtlIHN1cmUgSSdtIGNvbnNpZGVyaW5nIGFsbCBwb3RlbnRpYWwgaW50ZXJhY3Rpb25zIGFuZCBkZXBlbmRlbmNpZXMgZHVyaW5nIG15IHRlc3Rpbmcgc3RyYXRlZ3kuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIGFuIGV4aGF1c3RpdmUgdGVzdCBwbGFuLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NDg4MywiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjkwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDIxOjUzOjI2Ljc1NjE2NjAyNloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg3ODc5MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUEhZTElOS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvZHNhL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvZHNhL0tjb25maWc9Mz1tZW51Y29uZmlnIE5FVF9EU0FcXG4tLVxcbm5ldC9kc2EvS2NvbmZpZy05LVxcdHNlbGVjdCBORVRfU1dJVENIREVWXFxubmV0L2RzYS9LY29uZmlnOjEwOlxcdHNlbGVjdCBQSFlMSU5LXFxubmV0L2RzYS9LY29uZmlnLTExLVxcdHNlbGVjdCBORVRfREVWTElOS1xcbi0tXFxubmV0L2RzYS9wb3J0LmM9MTYxNz1pbnQgZHNhX3BvcnRfcGh5bGlua19jcmVhdGUoc3RydWN0IGRzYV9wb3J0ICpkcClcXG4tLVxcbm5ldC9kc2EvcG9ydC5jLTE2NDktXFx0aWYgKElTX0VSUihwbCkpIHtcXG5uZXQvZHNhL3BvcnQuYzoxNjUwOlxcdFxcdHByX2VycihcXFwiZXJyb3IgY3JlYXRpbmcgUEhZTElOSzogJWxkXFxcXG5cXFwiLCBQVFJfRVJSKHBsKSk7XFxubmV0L2RzYS9wb3J0LmMtMTY1MS1cXHRcXHRyZXR1cm4gUFRSX0VSUihwbCk7XFxuLS1cXG5uZXQvZHNhL3BvcnQuYz0xNjY1PXN0YXRpYyBpbnQgZHNhX3NoYXJlZF9wb3J0X3BoeWxpbmtfcmVnaXN0ZXIoc3RydWN0IGRzYV9wb3J0ICpkcClcXG4tLVxcbm5ldC9kc2EvcG9ydC5jLTE2NzEtXFx0ZHAtXFx1MDAzZXBsX2NvbmZpZy5kZXYgPSBkcy1cXHUwMDNlZGV2O1xcbm5ldC9kc2EvcG9ydC5jOjE2NzI6XFx0ZHAtXFx1MDAzZXBsX2NvbmZpZy50eXBlID0gUEhZTElOS19ERVY7XFxubmV0L2RzYS9wb3J0LmMtMTY3My1cXG4tLVxcbm5ldC9kc2EvdXNlci5jPTI2NTQ9c3RhdGljIGludCBkc2FfdXNlcl9waHlfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKnVzZXJfZGV2KVxcbi0tXFxubmV0L2RzYS91c2VyLmMtMjY2Mi1cXHRkcC1cXHUwMDNlcGxfY29uZmlnLmRldiA9IFxcdTAwMjZ1c2VyX2Rldi1cXHUwMDNlZGV2O1xcbm5ldC9kc2EvdXNlci5jOjI2NjM6XFx0ZHAtXFx1MDAzZXBsX2NvbmZpZy50eXBlID0gUEhZTElOS19ORVRERVY7XFxubmV0L2RzYS91c2VyLmMtMjY2NC1cXG5uZXQvZHNhL3VzZXIuYy0yNjY1LVxcdC8qIFRoZSBnZXRfZml4ZWRfc3RhdGUgY2FsbGJhY2sgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHBvbGxpbmcgdGhlXFxubmV0L2RzYS91c2VyLmM6MjY2NjpcXHQgKiBsaW5rIEdQSU8gaW4gUEhZTElOSyAoc2VlIHBoeWxpbmtfZ2V0X2ZpeGVkX3N0YXRlKS4gIE9ubHkgc2V0XFxubmV0L2RzYS91c2VyLmMtMjY2Ny1cXHQgKiB0aGlzIGlmIHRoZSBzd2l0Y2ggcHJvdmlkZXMgc3VjaCBhIGNhbGxiYWNrLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo1MzoyNi44MDQ5NTc1MjJaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDYzNTcwNjQ3OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgdGhlIE5ldHdvcmsgUEhZL1BIWUxpbmsgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJJ20gZXhhbWluaW5nIHRoaXMgcGF0Y2ggdG8gc2VlIHdoYXQncyBhY3R1YWxseSBjaGFuZ2luZyB1bmRlciB0aGUgaG9vZC4gSXQgc2VlbXMgdG8gYmUgY2xlYW5pbmcgdXAgc29tZSBlcnJvciBwYXRocyBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudCBpbiB0aGUgUEhZIChQaHlzaWNhbCBMYXllcikgYW5kIFBIWUxpbmsgc3Vic3lzdGVtcy4gIFNwZWNpZmljYWxseSwgaXQncyBhYm91dCBoYW5kbGluZyBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbnMgYW5kIGVuc3VyaW5nIHByb3BlciBjbGVhbnVwIG9mIFBIWSBkZXZpY2UgcG9pbnRlcnMsIGVzcGVjaWFsbHkgZHVyaW5nIHRoZSBicmluZ3VwL3RlYXJkb3duIGN5Y2xlcy5cblxuVGhlIGZpcnN0IHBhcnQgbG9va3MgYXQgYHBoeV9yZXN0b3JlX2dlbnBoeV9pcnFgLiBUaGlzIGZ1bmN0aW9uIHNlZW1zIHRvIGJlIG1ha2luZyBzdXJlIHRoZSBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbiBpcyBjb3JyZWN0bHkgcmVzdG9yZWQgd2hlbiB0aGUgZ2VuZXJpYyBQSFkgZHJpdmVyIGlzIHVzZWQsIHBhcnRpY3VsYXJseSBhZnRlciBhbiBlcnJvciBvciBkZXRhY2htZW50LiAgSXQncyBjcml0aWNhbCBiZWNhdXNlIGluY29ycmVjdCBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbiBjb3VsZCBsZWFkIHRvIGJyb2tlbiBuZXR3b3JrIGNvbm5lY3Rpdml0eSBvciBpbnN0YWJpbGl0eSwgYW5kIGlzIHRyaWdnZXJlZCBvbiB0aGUgZXJyb3IgcGF0aHMuXG5cblRoZSBzZWNvbmQgcGFydCBkZWFscyB3aXRoIGBwaHlsaW5rX2NsZWFyX3BoeWRldmAuICBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIHRvIGRpc2Fzc29jaWF0ZSBhIFBIWSBkZXZpY2UgZnJvbSBhIFBIWUxpbmsgaW5zdGFuY2UuIEl0J3MgaW52b2tlZCBpbiBgcGh5bGlua19kaXNjb25uZWN0X3BoeWAgYW5kIGFsc28gYXMgcGFydCBvZiBlcnJvciBoYW5kbGluZyBpbiBgcGh5bGlua19icmluZ3VwX3BoeWAsIG1ha2luZyBzdXJlIGEgUEhZIGRldmljZSBpc24ndCBsZWFrZWQgb24gYnJpbmd1cCBmYWlsdXJlcy4gIFRoaXMgaXMgaW1wb3J0YW50IGZvciBwcmV2ZW50aW5nIHJlc291cmNlIGxlYWtzIGFuZCBlbnN1cmluZyBQSFkgZGV2aWNlcyBjYW4gYmUgY2xlYW5seSByZS1hdHRhY2hlZC5cblxuRnVuY3Rpb25hbGx5LCBJIGNhbiBzZWUgdGhhdCB0aGlzIHBhdGNoIGlzIGFkZHJlc3NpbmcgcmVhbCwgcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgc2NlbmFyaW9zLiAgRmFpbHVyZSB0byBwcm9wZXJseSBjbGVhciB0aGUgYHBoeWRldmAgcG9pbnRlciBjb3VsZCBsZWFkIHRvIHRoZSBgLUVCVVNZYCBlcnJvciBhbmQgcmV0cnkgZmFpbHVyZS4gIFRoZSBpbnRlcnJ1cHQgcmVzdG9yYXRpb24gZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBkdXJpbmcgUEhZIGF0dGFjaC4gQm90aCBhcmUgd29ydGggaW52ZXN0aWdhdGluZy5cblxuTm93LCBhY2NvcmRpbmcgdG8gdGhlIGd1aWRhbmNlLCBJIG5lZWQgdG8gZGVjaWRlIGlmIHRoaXMgd2FycmFudHMgZnV6emluZy4gSXQncyBub3QganVzdCBkb2N1bWVudGF0aW9uIG9yIGxvZ2dpbmcuICBJdCdzIG1vZGlmeWluZyBjb3JlIG5ldHdvcmsgUEhZIGxvZ2ljLCB3aGljaCBpcyB1c2VkIGFjcm9zcyBtYW55IGRpZmZlcmVudCBuZXR3b3JraW5nIGRyaXZlcnMuICBUaGUgY2hhbmdlcyBhcmUgaW4gcmVhY2hhYmxlIGVycm9yIHBhdGhzLCBhbmQgbm90IHNwZWNpZmljIHRvIGFueSBwYXJ0aWN1bGFyIGhhcmR3YXJlLiBJdCdzIG5vdCB2ZW5kb3Itc3BlY2lmaWMgb3IgdGllZCB0byBhIHNwZWNpYWxpemVkIFBDSWUgY2FyZCB0aGF0IGNhbid0IGJlIGVtdWxhdGVkLiBUaGVyZWZvcmUsIGl0J3MgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gaWRlbnRpZnkgYEZvY3VzU3ltYm9sc2AgYW5kIGBFbmFibGVDb25maWdzYC4gIEJhc2VkIG9uIHRoZSBpbnN0cnVjdGlvbnMsIHRoZSBgRm9jdXNTeW1ib2xzYCBhcmUgdGhlIG5vbi1zdGF0aWMsIGV4cG9ydGVkIGVudHJ5IHBvaW50cyBtb2RpZmllZCBieSBvciBkaXJlY3RseSBpbnZvbHZlZCBpbiB0aGUgcGF0Y2g6IGBwaHlfYXR0YWNoX2RpcmVjdGAsIGBwaHlfZGV0YWNoYCwgYHBoeWxpbmtfY29ubmVjdF9waHlgLCBgcGh5bGlua19kaXNjb25uZWN0X3BoeWAsIGBwaHlsaW5rX29mX3BoeV9jb25uZWN0YCwgYHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0YC5cblxuVGhlIHJlcXVpcmVkIGBFbmFibGVDb25maWdzYCBhcHBlYXIgdG8gYmUgYFBIWUxJQmAgYW5kIGBQSFlMSU5LYCBmcm9tIHRoZSBkcml2ZXIncyBtYWtlZmlsZS5cblxuU28sIGluIHN1bW1hcnk6IEkndmUgaWRlbnRpZmllZCBjcml0aWNhbCBsb2dpYywgcmVsZXZhbnQgc3ltYm9scywgYW5kIHJlcXVpcmVkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgZnVydGhlciBmdXp6aW5nIGFuYWx5c2lzLiAgVGhpcyBwYXRjaCBtb2RpZmllcyByZWFjaGFibGUsIGNvcmUga2VybmVsIGxvZ2ljIGFuZCB3YXJyYW50cyBmdXJ0aGVyIGludmVzdGlnYXRpb24gdmlhIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NzQxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjA1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo1NDoxMy4xNjIwMjUwMzdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0NTEyNTAwMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnXFxcIlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz01MTI9c291cmNlIFxcXCJkcml2ZXJzL25ldC9pcGEvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9LY29uZmlnLTUxMy1cXG5kcml2ZXJzL25ldC9LY29uZmlnOjUxNDpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L3BoeS9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L0tjb25maWctNTE1LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo1NDoxMy44MDcxNTQ5MjhaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjcxNDcwMDI4OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlOlxuXG4qKkludmVzdGlnYXRpbmcgTmV0d29yayBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoaXMuIEJhc2VkIG9uIHdoYXQgSSdtIGxvb2tpbmcgYXQsIG15IGluaXRpYWwgZm9jdXMgaXMgZ29pbmcgdG8gYmUgb24gdGhlIGBkcml2ZXJzL25ldC9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0aGF0IGFyZSBjb250cm9sbGluZyB0aGlzIHBhcnRpY3VsYXIgYXNwZWN0IG9mIHRoZSBuZXR3b3JrIHN0YWNrLiBTcGVjaWZpY2FsbHksIEknbGwgc3RhcnQgYnkgdGFraW5nIGEgbG9vayBhdCBsaW5lIDUxNCBhbmQsIGdlbmVyYWxseSBzcGVha2luZywgdGhlIGJlZ2lubmluZyBvZiB0aGUgYGRyaXZlcnMvbmV0L0tjb25maWdgIGZpbGUuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGJyb2FkZXIgY29udGV4dCBhbmQgbGlrZWx5IHNvbWUga2V5IGRlcGVuZGVuY2llcyBvciBwYXJlbnQgb3B0aW9ucyB0aGF0IGluZmx1ZW5jZSB0aGUgYmVoYXZpb3IgSSdtIHNlZWluZy4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgaGFwcGVucywgYW5kIEkgbmVlZCB0byBzZWUgd2hhdCdzIHNldCB1cCBoZXJlIGluIGBLY29uZmlnYC4gVGhpcyBzaG91bGQgbGVhZCBtZSB0byB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODQ5OCwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDIxOjU0OjQwLjk1NDE2MDYyOVoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDkwMzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBOZXR3b3JrIGRldmljZSBjb25maWd1cmF0aW9uXFxuICAgNDpcXHQjXFxuICAgNTpcXHRcXG4gICA2OlxcdG1lbnVjb25maWcgTkVUREVWSUNFU1xcbiAgIDc6XFx0XFx0ZGVmYXVsdCB5IGlmIFVNTFxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBORVRcXG4gICA5OlxcdFxcdGJvb2wgXFxcIk5ldHdvcmsgZGV2aWNlIHN1cHBvcnRcXFwiXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFlvdSBjYW4gc2F5IE4gaGVyZSBpZiB5b3UgZG9uJ3QgaW50ZW5kIHRvIGNvbm5lY3QgeW91ciBMaW51eCBib3ggdG9cXG4gIDEyOlxcdFxcdCAgYW55IG90aGVyIGNvbXB1dGVyIGF0IGFsbC5cXG4gIDEzOlxcdFxcbiAgMTQ6XFx0XFx0ICBZb3UnbGwgaGF2ZSB0byBzYXkgWSBpZiB5b3VyIGNvbXB1dGVyIGNvbnRhaW5zIGEgbmV0d29yayBjYXJkIHRoYXRcXG4gIDE1OlxcdFxcdCAgeW91IHdhbnQgdG8gdXNlIHVuZGVyIExpbnV4LiBJZiB5b3UgYXJlIGdvaW5nIHRvIHJ1biBTTElQIG9yIFBQUCBvdmVyXFxuICAxNjpcXHRcXHQgIHRlbGVwaG9uZSBsaW5lIG9yIG51bGwgbW9kZW0gY2FibGUgeW91IG5lZWQgc2F5IFkgaGVyZS4gQ29ubmVjdGluZ1xcbiAgMTc6XFx0XFx0ICB0d28gbWFjaGluZXMgd2l0aCBwYXJhbGxlbCBwb3J0cyB1c2luZyBQTElQIG5lZWRzIHRoaXMsIGFzIHdlbGwgYXNcXG4gIDE4OlxcdFxcdCAgQVguMjUvS0lTUyBmb3Igc2VuZGluZyBJbnRlcm5ldCB0cmFmZmljIG92ZXIgYW1hdGV1ciByYWRpbyBsaW5rcy5cXG4gIDE5OlxcdFxcbiAgMjA6XFx0XFx0ICBTZWUgYWxzbyBcXFwiVGhlIExpbnV4IE5ldHdvcmsgQWRtaW5pc3RyYXRvcidzIEd1aWRlXFxcIiBieSBPbGFmIEtpcmNoIGFuZFxcbiAgMjE6XFx0XFx0ICBUZXJyeSBEYXdzb24uIEF2YWlsYWJsZSBhdCBcXHUwMDNjaHR0cDovL3d3dy50bGRwLm9yZy9ndWlkZXMuaHRtbFxcdTAwM2UuXFxuICAyMjpcXHRcXG4gIDIzOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgWS5cXG4gIDI0OlxcdFxcbiAgMjU6XFx0IyBBbGwgdGhlIGZvbGxvd2luZyBzeW1ib2xzIGFyZSBkZXBlbmRlbnQgb24gTkVUREVWSUNFUyAtIGRvIG5vdCByZXBlYXRcXG4gIDI2OlxcdCMgdGhhdCBmb3IgZWFjaCBvZiB0aGUgc3ltYm9scy5cXG4gIDI3OlxcdGlmIE5FVERFVklDRVNcXG4gIDI4OlxcdFxcbiAgMjk6XFx0Y29uZmlnIE1JSVxcbiAgMzA6XFx0XFx0dHJpc3RhdGVcXG4gIDMxOlxcdFxcbiAgMzI6XFx0Y29uZmlnIE5FVF9DT1JFXFxuICAzMzpcXHRcXHRkZWZhdWx0IHlcXG4gIDM0OlxcdFxcdGJvb2wgXFxcIk5ldHdvcmsgY29yZSBkcml2ZXIgc3VwcG9ydFxcXCJcXG4gIDM1OlxcdFxcdGhlbHBcXG4gIDM2OlxcdFxcdCAgWW91IGNhbiBzYXkgTiBoZXJlIGlmIHlvdSBkbyBub3QgaW50ZW5kIHRvIHVzZSBhbnkgb2YgdGhlXFxuICAzNzpcXHRcXHQgIG5ldHdvcmtpbmcgY29yZSBkcml2ZXJzIChpLmUuIFZMQU4sIGJyaWRnaW5nLCBib25kaW5nLCBldGMuKVxcbiAgMzg6XFx0XFxuICAzOTpcXHRpZiBORVRfQ09SRVxcbiAgNDA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDIxOjU0OjQwLjk1NDQxNzM0WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE3OTUxNDQ2MDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFBIWSBMYXllciBhbmQgUGh5bGluayBTdWJzeXN0ZW0gQ2hhbmdlcyoqXG5cbk9rYXksIHNvIEkndmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCBiYXNlZCBvbiB0aGUgZGVwZW5kZW5jaWVzLCBoZXJlJ3Mgd2hhdCBJJ3ZlIGdvdC4gYE5FVERFVklDRVNgIGNsZWFybHkgZGVwZW5kcyBvbiBgTkVUYCwgYW5kIHdpdGhpbiBgTkVUREVWSUNFU2AsIHdlIGZpbmQgYFBIWUxJQmAuIGBQSFlMSU5LYCBpcyB0aGUgY29tcG9uZW50IHRoYXQgaW50ZXJhY3RzIHdpdGggYW5kIHNlbGVjdHMgYmV0d2VlbiBgUEhZTElCYCBhbmQgYFNXUEhZYC4gVG8gcmVhbGx5IHRlc3QgdGhpcywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJ3ZlIGdvdCBhIHdheSB0byBleGVyY2lzZSBgcGh5bGlua2AgYW5kIGBwaHlsaWJgLiBJdCBsb29rcyBsaWtlIGRyaXZlcnMgbGlrZSBgTkVUX0RTQWAsIGBVU0JfTEFONzhYWGAsIGBVU0JfTkVUX0FYODgxN1hgLCBvciBgRklYRURfUEhZYCBjYW4gYmUgdXNlZCBmb3IgdGhhdC4gVGhlcmVmb3JlLCB0byBlbnN1cmUgSSBjYW4gYWN0dWFsbHkgdGVzdCB0aGVzZSBjaGFuZ2VzLCBJJ2xsIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBmb2xsb3dpbmcgY29uZmlncyBhcmUgZW5hYmxlZDpcblxuKiAgIGBORVRgXG4qICAgYE5FVERFVklDRVNgXG4qICAgYFBIWUxJQmBcbiogICBgUEhZTElOS2BcblxuSnVzdCB0byBiZSB0aG9yb3VnaCwgSSdtIGdvaW5nIHRvIGRvdWJsZS1jaGVjayBldmVyeXRoaW5nIGFuZCBtYWtlIHN1cmUgdGhlIGZvcm1hdHRpbmcgaXMgYWxsIGNvcnJlY3QgYmVmb3JlIEkgY29udGludWUuXG5cblRoZSBwYXRjaCBmb2N1c2VzIG9uIHRoZXNlIGtleSBmdW5jdGlvbnM6XG5cbiogICBgcGh5X2F0dGFjaF9kaXJlY3RgXG4qICAgYHBoeV9kZXRhY2hgXG4qICAgYHBoeWxpbmtfY29ubmVjdF9waHlgXG4qICAgYHBoeWxpbmtfZGlzY29ubmVjdF9waHlgXG4qICAgYHBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3RgXG4qICAgYHBoeWxpbmtfZndub2RlX3BoeV9jb25uZWN0YFxuXG5JIGFsc28gbm90ZSB0aGUgaW1wb3J0YW5jZSBvZiBtYWtpbmcgc3VyZSB0aGVzZSBjb25maWd1cmF0aW9ucyBhcmUgc2V0LCBhcyBtZW50aW9uZWQgcHJldmlvdXNseTpcblxuKiAgIGBORVRgXG4qICAgYE5FVERFVklDRVNgXG4qICAgYFBIWUxJQmBcbiogICBgUEhZTElOS2BcblxuTG9va3MgbGlrZSB0aGlzIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4gVGhlIGNoYW5nZXMgYXJlIGluIGNvcmUgUEhZIGxheWVyIGFuZCBwaHlsaW5rIHN1YnN5c3RlbSBjb2RlIChgcGh5X2RldmljZS5jYCBhbmQgYHBoeWxpbmsuY2ApLCBzcGVjaWZpY2FsbHkgYWRkcmVzc2luZyBlcnJvciBoYW5kbGluZyBhbmQgY2xlYW51cC4gVGhlIHBhdGNoIGVuc3VyZXMgdGhhdCBgcGwtXHUwMDNlcGh5ZGV2YCBpcyBjbGVhcmVkIHdoZW4gdGhlcmUgaXMgYSBmYWlsdXJlIGR1cmluZyBgcGh5bGlua19icmluZ3VwX3BoeWAsIHByZXZlbnRpbmcgc3RhbGUgcG9pbnRlcnMgYW5kIGVuc3VyaW5nIGEgc3VjY2Vzc2Z1bCBjb25uZWN0aW9uLiBJdCBhbHNvIHJlc3RvcmVzIGdlbmVyaWMgUEhZIElSUSBjb25maWd1cmF0aW9uIHVwb24gdW5iaW5kIG9yIGVycm9yIHVzaW5nIGBwaHlfcmVzdG9yZV9nZW5waHlfaXJxKClgLiBJIGNhbiBzZWUgdGhlc2UgY29kZSBwYXRocyBhcmUgYWN0dWFsbHkgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgZW11bGF0ZWQgVVNCIGV0aGVybmV0IGhhcmR3YXJlLCBmb3IgZXhhbXBsZSwgdGhlIEFYODgxNzkgb3IgTEFONzh4eCwgb3IgZXZlbiBEU0EgbG9vcGJhY2sgZGV2aWNlcy5cblxuQWxyaWdodCwgSSdtIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTkyMzgsIk91dHB1dFRva2VucyI6MjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzczLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMjE6NTQ6NTguOTA1ODY2NjRaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTYwMDM3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUXCIsXG4gICAgXCJORVRERVZJQ0VTXCIsXG4gICAgXCJQSFlMSUJcIixcbiAgICBcIlBIWUxJTktcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwaHlfYXR0YWNoX2RpcmVjdFwiLFxuICAgIFwicGh5X2RldGFjaFwiLFxuICAgIFwicGh5bGlua19jb25uZWN0X3BoeVwiLFxuICAgIFwicGh5bGlua19kaXNjb25uZWN0X3BoeVwiLFxuICAgIFwicGh5bGlua19md25vZGVfcGh5X2Nvbm5lY3RcIixcbiAgICBcInBoeWxpbmtfb2ZfcGh5X2Nvbm5lY3RcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIFBIWSBsaWJyYXJ5IGFuZCBwaHlsaW5rIHN1YnN5c3RlbSBsb2dpYyBpbiBkcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jIGFuZCBkcml2ZXJzL25ldC9waHkvcGh5bGluay5jLiBJdCBpbnRyb2R1Y2VzIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEgdG8gcHJvcGVybHkgcmVzdG9yZSBQSFkgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb25zIHdoZW4gZGV0YWNoaW5nIG9yIGZhaWxpbmcgdG8gYXR0YWNoIGEgZ2VuZXJpYyBQSFksIGFuZCBlbnN1cmVzIHBoeWxpbmtfY2xlYXJfcGh5ZGV2IGlzIGNhbGxlZCB0byBjbGVhbmx5IGRldGFjaCBhbmQgcmVzZXQgc3RhdGUgaWYgcGh5bGlua19icmluZ3VwX3BoeSBmYWlscy4gVGhlc2UgY2hhbmdlcyBhZmZlY3QgcmVhY2hhYmxlIG5ldHdvcmsgUEhZIHNldHVwL3RlYXJkb3duIGxvZ2ljIHVzZWQgYnkgZW11bGF0ZWQgbmV0d29yayBhZGFwdGVycyAoZS5nLiBVU0IgZXRoZXJuZXQgYWRhcHRlcnMgYW5kIERTQSBsb29wIGRldmljZXMpIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRcIixcbiAgICBcIk5FVERFVklDRVNcIixcbiAgICBcIlBIWUxJQlwiLFxuICAgIFwiUEhZTElOS1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBoeV9hdHRhY2hfZGlyZWN0XCIsXG4gICAgXCJwaHlfZGV0YWNoXCIsXG4gICAgXCJwaHlsaW5rX2Nvbm5lY3RfcGh5XCIsXG4gICAgXCJwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5XCIsXG4gICAgXCJwaHlsaW5rX2Z3bm9kZV9waHlfY29ubmVjdFwiLFxuICAgIFwicGh5bGlua19vZl9waHlfY29ubmVjdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgUEhZIGxpYnJhcnkgYW5kIHBoeWxpbmsgc3Vic3lzdGVtIGxvZ2ljIGluIGRyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYW5kIGRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMuIEl0IGludHJvZHVjZXMgcGh5X3Jlc3RvcmVfZ2VucGh5X2lycSB0byBwcm9wZXJseSByZXN0b3JlIFBIWSBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbnMgd2hlbiBkZXRhY2hpbmcgb3IgZmFpbGluZyB0byBhdHRhY2ggYSBnZW5lcmljIFBIWSwgYW5kIGVuc3VyZXMgcGh5bGlua19jbGVhcl9waHlkZXYgaXMgY2FsbGVkIHRvIGNsZWFubHkgZGV0YWNoIGFuZCByZXNldCBzdGF0ZSBpZiBwaHlsaW5rX2JyaW5ndXBfcGh5IGZhaWxzLiBUaGVzZSBjaGFuZ2VzIGFmZmVjdCByZWFjaGFibGUgbmV0d29yayBQSFkgc2V0dXAvdGVhcmRvd24gbG9naWMgdXNlZCBieSBlbXVsYXRlZCBuZXR3b3JrIGFkYXB0ZXJzIChlLmcuIFVTQiBldGhlcm5ldCBhZGFwdGVycyBhbmQgRFNBIGxvb3AgZGV2aWNlcykgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo1NDo1OC45ODE0NzQ3MDRaIiwiU2VxIjozMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwNzE3MTAwNDE0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDIxOjU0OjU4Ljk4MTkxODY5NFoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjIwNzE3MDU1NTk5MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcmVzc2VzIHN0YXRlIGNsZWFudXAgYW5kIElSUSByZXN0b3JhdGlvbiBpbiBQSFkgYW5kIHBoeWxpbmsgZHJpdmVyIGxpZmVjeWNsZXMgKHNwZWNpZmljYWxseSByZXN0b3JpbmcgcGh5ZGV2LVxcdTAwM2VpcnEgdXBvbiBnZW5lcmljIFBIWSBkcml2ZXIgZGV0YWNoL2F0dGFjaCBmYWlsdXJlIGFuZCBjbGVhcmluZyBwbC1cXHUwMDNlcGh5ZGV2IG9uIHBoeWxpbmtfYnJpbmd1cF9waHkgZmFpbHVyZSkuIFxcblxcblRoZXNlIGNoYW5nZXMgaW52b2x2ZSBtYW5hZ2luZyBvYmplY3QgbGlmZWN5Y2xlcywgcmVzZXR0aW5nIGludGVybmFsIHBvaW50ZXJzIHRvIE5VTEwsIGFuZCByZXNldHRpbmcgYm9vbGVhbiBmbGFncy4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgcmVhZHMsIHBhZGRpbmcgbGVha3MsIG9yIHVzZXItc3BhY2UgY29waWVzIChjb3B5X3RvX3VzZXIvbmV0bGluaykgYXJlIGludHJvZHVjZWQgb3IgbW9kaWZpZWQuIEFueSBsaWZlY3ljbGUgb3IgZGFuZ2xpbmcgcG9pbnRlciBpc3N1ZXMgaW4gdGhpcyBjb2RlIHBhdGggZmFsbCB1bmRlciBLQVNBTiAodXNlLWFmdGVyLWZyZWUgLyBpbnZhbGlkIGFjY2Vzcykgb3Igc3RhbmRhcmQga2VybmVsIGFzc2VydGlvbnMvTE9DS0RFUCwgbWFraW5nIGEgZGVkaWNhdGVkIEtNU0FOIHNlc3Npb24gdW5uZWNlc3NhcnkuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOWM5OTIzNWM3ODRkNmM3ZGJmNjQzYzg1ZGI4NjE5NTUwMTRhNjJhNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDI3IDIxOjM1OjUxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYyBiL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmNcbmluZGV4IDk0YjJlODVlMDBhMzcuLmJlNGMzNWRiOGRlOTggMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG4rKysgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jXG5AQCAtMTczNCw2ICsxNzM0LDE4IEBAIHN0YXRpYyBib29sIHBoeV9kcnZfc3VwcG9ydHNfaXJxKGNvbnN0IHN0cnVjdCBwaHlfZHJpdmVyICpwaHlkcnYpXG4gXHRyZXR1cm4gcGh5ZHJ2LVx1MDAzZWNvbmZpZ19pbnRyIFx1MDAyNlx1MDAyNiBwaHlkcnYtXHUwMDNlaGFuZGxlX2ludGVycnVwdDtcbiB9XG4gXG4rLyogR2l2ZSBiYWNrIHRoZSBpbnRlcnJ1cHQgcGh5X3Byb2JlKCkgcGFya2VkIHdoZW4gYSBkcml2ZXIgd2l0aCBubyBpbnRlcnJ1cHRcbisgKiBjYWxsYmFja3MgYm91bmQuIG1kaW9idXNfYWxsb2MoKSBkZWZhdWx0cyBidXMtXHUwMDNlaXJxW10gdG8gUEhZX1BPTEwgYW5kIHRoZVxuKyAqIGJpbmQgY3ljbGUgZG9lcyBub3QgdG91Y2ggdGhlIHRhYmxlLCBzbyB3aGF0ZXZlciB0aGUgYnVzIHJlY29yZGVkIHRoZXJlXG4rICogc3RpbGwgc3RhbmRzLiBPbmx5IHRoZSBwYXJraW5nIGlzIHVuZG9uZTogYW55IG90aGVyIHZhbHVlIHRoZSBQSFkgY2Fycmllc1xuKyAqIHdhcyBwdXQgdGhlcmUgYnkgc29tZW9uZSBlbHNlLlxuKyAqL1xuK3N0YXRpYyB2b2lkIHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbit7XG4rXHRpZiAocGh5ZGV2LVx1MDAzZWlycSA9PSBQSFlfUE9MTClcbitcdFx0cGh5ZGV2LVx1MDAzZWlycSA9IHBoeWRldi1cdTAwM2VtZGlvLmJ1cy1cdTAwM2VpcnFbcGh5ZGV2LVx1MDAzZW1kaW8uYWRkcl07XG4rfVxuK1xuIC8qKlxuICAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcbiAgKiBAZGV2OiBuZXR3b3JrIGRldmljZSB0byBhdHRhY2hcbkBAIC0xODk2LDYgKzE5MDgsNyBAQCBpbnQgcGh5X2F0dGFjaF9kaXJlY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldixcbiBcbiBlcnJvcl9tb2R1bGVfcHV0OlxuIFx0bW9kdWxlX3B1dChkLVx1MDAzZWRyaXZlci1cdTAwM2Vvd25lcik7XG4rXHRwaHlfcmVzdG9yZV9nZW5waHlfaXJxKHBoeWRldik7XG4gXHRwaHlkZXYtXHUwMDNlaXNfZ2VucGh5X2RyaXZlbiA9IDA7XG4gXHRkLVx1MDAzZWRyaXZlciA9IE5VTEw7XG4gZXJyb3JfcHV0X2RldmljZTpcbkBAIC0xOTY1LDYgKzE5NzgsNyBAQCB2b2lkIHBoeV9kZXRhY2goc3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldilcbiBcdCAqIHJlYWwgZHJpdmVyIGNvdWxkIGJlIGxvYWRlZFxuIFx0ICovXG4gXHRpZiAocGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4pIHtcbitcdFx0cGh5X3Jlc3RvcmVfZ2VucGh5X2lycShwaHlkZXYpO1xuIFx0XHRkZXZpY2VfcmVsZWFzZV9kcml2ZXIoXHUwMDI2cGh5ZGV2LVx1MDAzZW1kaW8uZGV2KTtcbiBcdFx0cGh5ZGV2LVx1MDAzZWlzX2dlbnBoeV9kcml2ZW4gPSAwO1xuIFx0fVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5bGluay5jXG5pbmRleCA1YjhlOTU2OTAyZmI1Li5hNTVlNGE2NDAyOGZmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY1xuQEAgLTIwODMsNiArMjA4MywxOCBAQCBzdGF0aWMgaW50IHBoeWxpbmtfdmFsaWRhdGVfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcbiBcdHJldHVybiBwaHlsaW5rX3ZhbGlkYXRlKHBsLCBzdXBwb3J0ZWQsIHN0YXRlKTtcbiB9XG4gXG4rLyogRGlzYXNzb2NpYXRlIEBwaHkgZnJvbSBAcGwuIENhbGxlciBtdXN0IGhvbGQgcGwtXHUwMDNlcGh5ZGV2X211dGV4LiAqL1xuK3N0YXRpYyB2b2lkIHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSlcbit7XG4rXHRtdXRleF9sb2NrKFx1MDAyNnBoeS1cdTAwM2Vsb2NrKTtcbitcdG11dGV4X2xvY2soXHUwMDI2cGwtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuK1x0cGwtXHUwMDNlcGh5ZGV2ID0gTlVMTDtcbitcdHBsLVx1MDAzZXBoeV9lbmFibGVfdHhfbHBpID0gZmFsc2U7XG4rXHRwbC1cdTAwM2VtYWNfdHhfY2xrX3N0b3AgPSBmYWxzZTtcbitcdG11dGV4X3VubG9jayhcdTAwMjZwbC1cdTAwM2VzdGF0ZV9tdXRleCk7XG4rXHRtdXRleF91bmxvY2soXHUwMDI2cGh5LVx1MDAzZWxvY2spO1xuK31cbitcbiBzdGF0aWMgaW50IHBoeWxpbmtfYnJpbmd1cF9waHkoc3RydWN0IHBoeWxpbmsgKnBsLCBzdHJ1Y3QgcGh5X2RldmljZSAqcGh5LFxuIFx0XHRcdCAgICAgICBwaHlfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKVxuIHtcbkBAIC0yMTk3LDYgKzIyMDksMTIgQEAgc3RhdGljIGludCBwaHlsaW5rX2JyaW5ndXBfcGh5KHN0cnVjdCBwaHlsaW5rICpwbCwgc3RydWN0IHBoeV9kZXZpY2UgKnBoeSxcbiBcdGlmIChyZXQgPT0gMCBcdTAwMjZcdTAwMjYgcGh5X2ludGVycnVwdF9pc192YWxpZChwaHkpKVxuIFx0XHRwaHlfcmVxdWVzdF9pbnRlcnJ1cHQocGh5KTtcbiBcbitcdGlmIChyZXQpIHtcbitcdFx0bXV0ZXhfbG9jayhcdTAwMjZwbC1cdTAwM2VwaHlkZXZfbXV0ZXgpO1xuK1x0XHRwaHlsaW5rX2NsZWFyX3BoeWRldihwbCwgcGh5KTtcbitcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4rXHR9XG4rXG4gXHRyZXR1cm4gcmV0O1xuIH1cbiBcbkBAIC0yMzQ3LDE1ICsyMzY1LDggQEAgdm9pZCBwaHlsaW5rX2Rpc2Nvbm5lY3RfcGh5KHN0cnVjdCBwaHlsaW5rICpwbClcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2cGwtXHUwMDNlcGh5ZGV2X211dGV4KTtcbiBcdHBoeSA9IHBsLVx1MDAzZXBoeWRldjtcbi1cdGlmIChwaHkpIHtcbi1cdFx0bXV0ZXhfbG9jayhcdTAwMjZwaHktXHUwMDNlbG9jayk7XG4tXHRcdG11dGV4X2xvY2soXHUwMDI2cGwtXHUwMDNlc3RhdGVfbXV0ZXgpO1xuLVx0XHRwbC1cdTAwM2VwaHlkZXYgPSBOVUxMO1xuLVx0XHRwbC1cdTAwM2VwaHlfZW5hYmxlX3R4X2xwaSA9IGZhbHNlO1xuLVx0XHRwbC1cdTAwM2VtYWNfdHhfY2xrX3N0b3AgPSBmYWxzZTtcbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXN0YXRlX211dGV4KTtcbi1cdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBoeS1cdTAwM2Vsb2NrKTtcbi1cdH1cbitcdGlmIChwaHkpXG4rXHRcdHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpO1xuIFx0bXV0ZXhfdW5sb2NrKFx1MDAyNnBsLVx1MDAzZXBoeWRldl9tdXRleCk7XG4gXG4gXHRpZiAocGh5KSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yN1QyMTo1NDo1OC45ODE5MTk0MzRaIiwiU2VxIjozNSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjU1OTQwMTAwNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBQSFkgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBiZWluZyBjaGFuZ2VkIGluIHRoZSBQSFkgZHJpdmVyLiBGaXJzdCwgSSBzZWUgbW9kaWZpY2F0aW9ucyBpbiBgZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY2AuIFNwZWNpZmljYWxseSwgdGhlcmUncyBhIG5ldyBmdW5jdGlvbiwgYHBoeV9yZXN0b3JlX2dlbnBoeV9pcnEoKWAuICBUaGUgY29kZSBzbmlwcGV0IHRoZXJlIGxvb2tzIGxpa2UgaXQncyB0cnlpbmcgdG8gcmUtZXN0YWJsaXNoIHRoZSBpbnRlcnJ1cHQgY29uZmlndXJhdGlvbiBmb3IgYSBQSFkgZGV2aWNlLiAgSXQgc2VlbXMgdGhhdCBpZiB0aGUgaW50ZXJydXB0IG1vZGUgKGBwaHlkZXYtXHUwMDNlaXJxYCkgaXMgc2V0IHRvIGBQSFlfUE9MTGAsIGl0J3MgcmVzdG9yaW5nIGl0IHRvIHRoZSBkZWZhdWx0IGludGVycnVwdCBzZXR0aW5nLCBsaWtlbHkgZGVyaXZlZCBmcm9tIHRoZSBNRElPIGJ1cydzIElSUSBpbmZvcm1hdGlvbi4gVGhpcyBmdW5jdGlvbiBpcyBiZWluZyBjYWxsZWQgaW4gZXJyb3IgaGFuZGxpbmcgcGF0aHMgd2l0aGluIGBwaHlfYXR0YWNoX2RpcmVjdGAgYW5kIGR1cmluZyBgcGh5X2RldGFjaGAuIFRoaXMgdGVsbHMgbWUgd2UncmUgbG9va2luZyBhdCBhIHBvdGVudGlhbCBmaXggZm9yIGludGVycnVwdCBoYW5kbGluZyBkdXJpbmcgUEhZIGF0dGFjaG1lbnQgb3IgZGV0YWNobWVudCwgd2hpY2ggbWlnaHQgYmUgY3JpdGljYWwgZm9yIHJvYnVzdCBuZXR3b3JrIGRldmljZSBvcGVyYXRpb24uXG5cbk5leHQsIEknbSBzZWVpbmcgY2hhbmdlcyBpbiBgZHJpdmVycy9uZXQvcGh5L3BoeWxpbmsuY2AuICBUaGVyZSdzIGEgbmV3IGZ1bmN0aW9uLCBgcGh5bGlua19jbGVhcl9waHlkZXYoKWAuIFRoZSBjb2RlIGhlcmUgcmVzZXRzIHNldmVyYWwgZmllbGRzIHJlbGF0ZWQgdG8gdGhlIFBIWSBkZXZpY2Ugd2l0aGluIGEgYHBoeWxpbmtgIHN0cnVjdHVyZS4gVGhpcyBpbmNsdWRlcyBzZXR0aW5nIGBwbC1cdTAwM2VwaHlkZXZgIHRvIGBOVUxMYCwgYWxvbmcgd2l0aCBjbGVhcmluZyBgcGh5X2VuYWJsZV90eF9scGlgIGFuZCBgbWFjX3R4X2Nsa19zdG9wYC4gVGhpcyBzbWVsbHMgbGlrZSBwcm9wZXIgUEhZIGRldmljZSBjbGVhbnVwLCBwcm9iYWJseSBvbiBkaXNjb25uZWN0aW9uIG9yIGluIGVycm9yIHNjZW5hcmlvcy4gSXQgbG9va3MgbGlrZSBgcGh5bGlua19jbGVhcl9waHlkZXZgIGlzIGJlaW5nIGNhbGxlZCBpbiBgcGh5bGlua19icmluZ3VwX3BoeWAgYXMgcGFydCBvZiBlcnJvciBoYW5kbGluZywgaW1wbHlpbmcgdGhhdCBpZiB0aGUgUEhZIGluaXRpYWxpemF0aW9uIGZhaWxzLCB0aGUgbGluaydzIFBIWSBkZXZpY2UgcG9pbnRlciBnZXRzIGNsZWFyZWQuIEFsc28sIGl0IGhhcyBiZWVuIGludHJvZHVjZWQgaW50byBgcGh5bGlua19kaXNjb25uZWN0X3BoeWAgYXMgd2VsbC4gVGhpcyBtYWtlcyBzZW5zZTsgaXQncyBjbGVhbiBhbmQgY29uc2lzdGVudC5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbGFyZ2VyIGNvbnRleHQuIEknbGwgdXNlIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCB0byBmaW5kIHRoZSBjYWxsaW5nIHNpdGVzIG9mIGBwaHlfYXR0YWNoX2RpcmVjdGAsIGBwaHlfZGV0YWNoYCwgYHBoeWxpbmtfYnJpbmd1cF9waHlgIGFuZCBgcGh5bGlua19kaXNjb25uZWN0X3BoeWAgdG8gZ3Jhc3AgaG93IHRoZXNlIGZ1bmN0aW9ucyBmaXQgaW50byB0aGUgb3ZlcmFsbCBQSFkgaW5pdGlhbGl6YXRpb24gYW5kIHRlYXJkb3duIHNlcXVlbmNlLiBUaGlzIHdpbGwgcmV2ZWFsIHRoZSBtb3RpdmF0aW9ucyBvZiB0aGUgcGF0Y2ggYW5kIHdoZXJlIHRoZSBwcm9ibGVtIG1pZ2h0IGhhdmUgZXhpc3RlZC4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgdGhlIGludGVycnVwdCByZXN0b3JhdGlvbiBhbmQgUEhZIGRldmljZSBjbGVhcmluZyBpbnRlcmFjdCwgcGFydGljdWxhcmx5IGluIGVycm9yIGNhc2VzLiBMZXQgbWUgZGlnIGludG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUgdG8gZGV0ZXJtaW5lIGhvdyB0aGlzIGFkZHJlc3NlcyBhIHBhcnRpY3VsYXIgZmFpbHVyZSBvciByYWNlIGNvbmRpdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzExNiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwMiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDIxOjU2OjA0LjU3NTkzMzAxNloiLCJTZXEiOjM2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTAzODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNzI1LFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNzI1OlxcdFxcbjE3MjY6XFx0XFx0aWYgKCFyZXQgXFx1MDAyNlxcdTAwMjYgcGh5ZGV2LVxcdTAwM2VzZnBfYnVzKVxcbjE3Mjc6XFx0XFx0XFx0cmV0ID0gcGh5X3NldHVwX3NmcF9wb3J0KHBoeWRldik7XFxuMTcyODpcXHRcXG4xNzI5OlxcdFxcdHJldHVybiByZXQ7XFxuMTczMDpcXHR9XFxuMTczMTpcXHRcXG4xNzMyOlxcdHN0YXRpYyBib29sIHBoeV9kcnZfc3VwcG9ydHNfaXJxKGNvbnN0IHN0cnVjdCBwaHlfZHJpdmVyICpwaHlkcnYpXFxuMTczMzpcXHR7XFxuMTczNDpcXHRcXHRyZXR1cm4gcGh5ZHJ2LVxcdTAwM2Vjb25maWdfaW50ciBcXHUwMDI2XFx1MDAyNiBwaHlkcnYtXFx1MDAzZWhhbmRsZV9pbnRlcnJ1cHQ7XFxuMTczNTpcXHR9XFxuMTczNjpcXHRcXG4xNzM3OlxcdC8qIEdpdmUgYmFjayB0aGUgaW50ZXJydXB0IHBoeV9wcm9iZSgpIHBhcmtlZCB3aGVuIGEgZHJpdmVyIHdpdGggbm8gaW50ZXJydXB0XFxuMTczODpcXHQgKiBjYWxsYmFja3MgYm91bmQuIG1kaW9idXNfYWxsb2MoKSBkZWZhdWx0cyBidXMtXFx1MDAzZWlycVtdIHRvIFBIWV9QT0xMIGFuZCB0aGVcXG4xNzM5OlxcdCAqIGJpbmQgY3ljbGUgZG9lcyBub3QgdG91Y2ggdGhlIHRhYmxlLCBzbyB3aGF0ZXZlciB0aGUgYnVzIHJlY29yZGVkIHRoZXJlXFxuMTc0MDpcXHQgKiBzdGlsbCBzdGFuZHMuIE9ubHkgdGhlIHBhcmtpbmcgaXMgdW5kb25lOiBhbnkgb3RoZXIgdmFsdWUgdGhlIFBIWSBjYXJyaWVzXFxuMTc0MTpcXHQgKiB3YXMgcHV0IHRoZXJlIGJ5IHNvbWVvbmUgZWxzZS5cXG4xNzQyOlxcdCAqL1xcbjE3NDM6XFx0c3RhdGljIHZvaWQgcGh5X3Jlc3RvcmVfZ2VucGh5X2lycShzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2KVxcbjE3NDQ6XFx0e1xcbjE3NDU6XFx0XFx0aWYgKHBoeWRldi1cXHUwMDNlaXJxID09IFBIWV9QT0xMKVxcbjE3NDY6XFx0XFx0XFx0cGh5ZGV2LVxcdTAwM2VpcnEgPSBwaHlkZXYtXFx1MDAzZW1kaW8uYnVzLVxcdTAwM2VpcnFbcGh5ZGV2LVxcdTAwM2VtZGlvLmFkZHJdO1xcbjE3NDc6XFx0fVxcbjE3NDg6XFx0XFxuMTc0OTpcXHQvKipcXG4xNzUwOlxcdCAqIHBoeV9hdHRhY2hfZGlyZWN0IC0gYXR0YWNoIGEgbmV0d29yayBkZXZpY2UgdG8gYSBnaXZlbiBQSFkgZGV2aWNlIHBvaW50ZXJcXG4xNzUxOlxcdCAqIEBkZXY6IG5ldHdvcmsgZGV2aWNlIHRvIGF0dGFjaFxcbjE3NTI6XFx0ICogQHBoeWRldjogUG9pbnRlciB0byBwaHlfZGV2aWNlIHRvIGF0dGFjaFxcbjE3NTM6XFx0ICogQGZsYWdzOiBQSFkgZGV2aWNlJ3MgZGV2X2ZsYWdzXFxuMTc1NDpcXHQgKiBAaW50ZXJmYWNlOiBQSFkgZGV2aWNlJ3MgaW50ZXJmYWNlXFxuMTc1NTpcXHQgKlxcbjE3NTY6XFx0ICogRGVzY3JpcHRpb246IENhbGxlZCBieSBkcml2ZXJzIHRvIGF0dGFjaCB0byBhIHBhcnRpY3VsYXIgUEhZXFxuMTc1NzpcXHQgKiAgICAgZGV2aWNlLiBUaGUgcGh5X2RldmljZSBpcyBmb3VuZCwgYW5kIHByb3Blcmx5IGhvb2tlZCB1cFxcbjE3NTg6XFx0ICogICAgIHRvIHRoZSBwaHlfZHJpdmVyLiAgSWYgbm8gZHJpdmVyIGlzIGF0dGFjaGVkLCB0aGVuIGFcXG4xNzU5OlxcdCAqICAgICBnZW5lcmljIGRyaXZlciBpcyB1c2VkLiAgVGhlIHBoeV9kZXZpY2UgaXMgZ2l2ZW4gYSBwdHIgdG9cXG4xNzYwOlxcdCAqICAgICB0aGUgYXR0YWNoaW5nIGRldmljZSwgYW5kIGdpdmVuIGEgY2FsbGJhY2sgZm9yIGxpbmsgc3RhdHVzXFxuMTc2MTpcXHQgKiAgICAgY2hhbmdlLiAgVGhlIHBoeV9kZXZpY2UgaXMgcmV0dXJuZWQgdG8gdGhlIGF0dGFjaGluZyBkcml2ZXIuXFxuMTc2MjpcXHQgKiAgICAgVGhpcyBmdW5jdGlvbiB0YWtlcyBhIHJlZmVyZW5jZSBvbiB0aGUgcGh5IGRldmljZS5cXG4xNzYzOlxcdCAqL1xcbjE3NjQ6XFx0aW50IHBoeV9hdHRhY2hfZGlyZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXYsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDIxOjU2OjA0LjU3NjI0ODAzNloiLCJTZXEiOjM3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MDQ0NTI5MDAzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGEgUG90ZW50aWFsIE5ldHdvcmsgTGluayBJc3N1ZSoqXG5cbk9rYXksIHNvIHdlJ3ZlIGdvdCBhIG5ldHdvcmtpbmcgcHJvYmxlbS4gQmFzZWQgb24gdGhlIGNsdWVzLCBJIG5lZWQgdG8gem9vbSBpbiBvbiBhIHNwZWNpZmljIGFyZWEgd2l0aGluIHRoZSBkcml2ZXIuIE15IGluaXRpYWwgaW5zdGluY3QgcG9pbnRzIG1lIHRvd2FyZHMgYHBoeWxpbmsuY2AuIEdpdmVuIHRoZSBzY29wZSBvZiB0aGUgcG90ZW50aWFsIHByb2JsZW0sIEkgdGhpbmsgdGhlIHJlZ2lvbiBhcm91bmQgbGluZXMgMjA4MCB0byAyMjIwIGlzIGEgZ29vZCBwbGFjZSB0byBzdGFydC4gVGhhdCBzZWN0aW9uIG9mdGVuIGRlYWxzIHdpdGggWyAqaW5zZXJ0IHNwZWNpZmljIGZ1bmN0aW9uIG9yIGFyZWEgdGhlIGV4cGVydCB3b3VsZCBrbm93IGJhc2VkIG9uIGBwaHlsaW5rLmNgJ3MgZ2VuZXJhbCByb2xlLCBlLmcuLCBcImxpbmsgc3RhdGUgZGV0ZWN0aW9uIGFuZCBQSFkgaW50ZXJhY3Rpb24sIG9yIHBlcmhhcHMgaW5pdGlhbCBsaW5rIG5lZ290aWF0aW9uLCBvciBtYXliZSBldmVuIGVycm9yIGhhbmRsaW5nIHJlbGF0ZWQgdG8gc3BlZWQgYW5kIGR1cGxleCBtaXNtYXRjaGVzLCBvciByZWdpc3RlciByZWFkcy93cml0ZXMgcmVsYXRlZCB0byBhdXRvbmVnb3RpYXRpb25cIipdLiBJJ2xsIG5lZWQgdG8gY2FyZWZ1bGx5IGV4YW1pbmUgdGhlIGNvZGUgaW4gdGhhdCByYW5nZSwgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBbICpsaXN0IHNwZWNpZmljIHRoaW5ncyB0aGF0IHRoZSBleHBlcnQgd291bGQgbG9vayBmb3IsIGUuZy4gXCJlcnJvciBjb25kaXRpb25zLCByZXR1cm4gdmFsdWVzLCBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucywgYnVmZmVyIGhhbmRsaW5nIG9yIHBvc3NpYmx5IGludGVycnVwdCBoYW5kbGluZywgb3IgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgbW9kdWxlcywgZXRjLlwiKiBdLiBJJ2xsIHN0YXJ0IGJ5IG1ha2luZyBzdXJlIHRoZXJlJ3Mgbm8gb2J2aW91cyBsb2dpYyBmbGF3IGluIHRoYXQgc2VjdGlvbiwgdGhlbiBtYXliZSBJJ2xsIGRpZyBkb3duIGludG8gdGhlIGludGVyYWN0aW9ucyBpZiBJIG5lZWQgdG8uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ2NjMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI3VDIxOjU2OjU1LjAyMTU0MTA1NVoiLCJTZXEiOjM4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDg2MDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3BoeS9waHlsaW5rLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjE3MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjE3MDpcXHRcXHRcXHRwaHlsaW5rX2NhcHNfdG9fbGlua21vZGVzKHBsLVxcdTAwM2VzdXBwb3J0ZWRfbHBpLFxcbjIxNzE6XFx0XFx0XFx0XFx0XFx0XFx0ICBwbC1cXHUwMDNlY29uZmlnLVxcdTAwM2VscGlfY2FwYWJpbGl0aWVzKTtcXG4yMTcyOlxcdFxcbjIxNzM6XFx0XFx0XFx0LyogUmVzdHJpY3QgdGhlIFBIWXMgRUVFIHN1cHBvcnQvYWR2ZXJ0aXNlbWVudCB0byB0aGUgbW9kZXNcXG4yMTc0OlxcdFxcdFxcdCAqIHRoYXQgdGhlIE1BQyBzdXBwb3J0cy5cXG4yMTc1OlxcdFxcdFxcdCAqL1xcbjIxNzY6XFx0XFx0XFx0bGlua21vZGVfYW5kKHBoeS1cXHUwMDNlYWR2ZXJ0aXNpbmdfZWVlLCBwaHktXFx1MDAzZWFkdmVydGlzaW5nX2VlZSxcXG4yMTc3OlxcdFxcdFxcdFxcdCAgICAgcGwtXFx1MDAzZXN1cHBvcnRlZF9scGkpO1xcbjIxNzg6XFx0XFx0fSBlbHNlIGlmIChwbC1cXHUwMDNlbWFjX3N1cHBvcnRzX2VlZV9vcHMpIHtcXG4yMTc5OlxcdFxcdFxcdC8qIE1BQyBzdXBwb3J0cyBwaHlsaW5rIEVFRSwgYnV0IHdhbnRzIEVFRSBhbHdheXMgZGlzYWJsZWQuICovXFxuMjE4MDpcXHRcXHRcXHRwaHlfZGlzYWJsZV9lZWUocGh5KTtcXG4yMTgxOlxcdFxcdH1cXG4yMTgyOlxcdFxcbjIxODM6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwbC1cXHUwMDNlc3RhdGVfbXV0ZXgpO1xcbjIxODQ6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwaHktXFx1MDAzZWxvY2spO1xcbjIxODU6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwbC1cXHUwMDNlcGh5ZGV2X211dGV4KTtcXG4yMTg2OlxcdFxcbjIxODc6XFx0XFx0cGh5bGlua19kYmcocGwsXFxuMjE4ODpcXHRcXHRcXHQgICAgXFxcInBoeTogJXMgc2V0dGluZyBzdXBwb3J0ZWQgJSpwYiBhZHZlcnRpc2luZyAlKnBiXFxcXG5cXFwiLFxcbjIxODk6XFx0XFx0XFx0ICAgIHBoeV9tb2RlcyhpbnRlcmZhY2UpLFxcbjIxOTA6XFx0XFx0XFx0ICAgIF9fRVRIVE9PTF9MSU5LX01PREVfTUFTS19OQklUUywgcGwtXFx1MDAzZXN1cHBvcnRlZCxcXG4yMTkxOlxcdFxcdFxcdCAgICBfX0VUSFRPT0xfTElOS19NT0RFX01BU0tfTkJJVFMsIHBoeS1cXHUwMDNlYWR2ZXJ0aXNpbmcpO1xcbjIxOTI6XFx0XFxuMjE5MzpcXHRcXHRpZiAocGwtXFx1MDAzZWNvbmZpZy1cXHUwMDNlbWFjX21hbmFnZWRfcG0pXFxuMjE5NDpcXHRcXHRcXHRwaHktXFx1MDAzZW1hY19tYW5hZ2VkX3BtID0gdHJ1ZTtcXG4yMTk1OlxcdFxcbjIxOTY6XFx0XFx0LyogQWxsb3cgdGhlIE1BQyB0byBzdG9wIGl0cyBjbG9jayBpZiB0aGUgUEhZIGhhcyB0aGUgY2FwYWJpbGl0eSAqL1xcbjIxOTc6XFx0XFx0cGwtXFx1MDAzZW1hY190eF9jbGtfc3RvcCA9IHBoeV9lZWVfdHhfY2xvY2tfc3RvcF9jYXBhYmxlKHBoeSkgXFx1MDAzZSAwO1xcbjIxOTg6XFx0XFxuMjE5OTpcXHRcXHRpZiAocGwtXFx1MDAzZW1hY19zdXBwb3J0c19lZWVfb3BzKSB7XFxuMjIwMDpcXHRcXHRcXHQvKiBFeHBsaWNpdGx5IGNvbmZpZ3VyZSB3aGV0aGVyIHRoZSBQSFkgaXMgYWxsb3dlZCB0byBzdG9wIGl0J3NcXG4yMjAxOlxcdFxcdFxcdCAqIHJlY2VpdmUgY2xvY2suXFxuMjIwMjpcXHRcXHRcXHQgKi9cXG4yMjAzOlxcdFxcdFxcdHJldCA9IHBoeV9lZWVfcnhfY2xvY2tfc3RvcChwaHksXFxuMjIwNDpcXHRcXHRcXHRcXHRcXHRcXHQgICAgcGwtXFx1MDAzZWNvbmZpZy1cXHUwMDNlZWVlX3J4X2Nsa19zdG9wX2VuYWJsZSk7XFxuMjIwNTpcXHRcXHRcXHRpZiAocmV0ID09IC1FT1BOT1RTVVBQKVxcbjIyMDY6XFx0XFx0XFx0XFx0cmV0ID0gMDtcXG4yMjA3OlxcdFxcdH1cXG4yMjA4OlxcdFxcbjIyMDk6XFx0XFx0aWYgKHJldCA9PSAwIFxcdTAwMjZcXHUwMDI2IHBoeV9pbnRlcnJ1cHRfaXNfdmFsaWQocGh5KSlcXG4yMjEwOlxcdFxcdFxcdHBoeV9yZXF1ZXN0X2ludGVycnVwdChwaHkpO1xcbjIyMTE6XFx0XFxuMjIxMjpcXHRcXHRpZiAocmV0KSB7XFxuMjIxMzpcXHRcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwbC1cXHUwMDNlcGh5ZGV2X211dGV4KTtcXG4yMjE0OlxcdFxcdFxcdHBoeWxpbmtfY2xlYXJfcGh5ZGV2KHBsLCBwaHkpO1xcbjIyMTU6XFx0XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwbC1cXHUwMDNlcGh5ZGV2X211dGV4KTtcXG4yMjE2OlxcdFxcdH1cXG4yMjE3OlxcdFxcbjIyMTg6XFx0XFx0cmV0dXJuIHJldDtcXG4yMjE5OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMjE6NTY6NTUuMDIyNjMwNTg0WiIsIlNlcSI6MzksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjkxMTI5ODIzMTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgS01TQU4gSW1wbGljYXRpb25zKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZXhhbWluZSB0aGUgcGF0Y2gncyBhY3Rpb25zIHdpdGhpbiB0aGUgY29udGV4dCBvZiBwb3RlbnRpYWwgS01TQU4gKEtlcm5lbCBNZW1vcnkgU2FuaXRpemVyKSB2dWxuZXJhYmlsaXRpZXMuIEknbSBmb2N1c2luZyBzcGVjaWZpY2FsbHkgb24gdGhlIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mb3JtYXRpb24gbGVha3MsIHJlbWVtYmVyaW5nIHRoYXQgS0FTQU4gKEtlcm5lbCBBZGRyZXNzIFNhbml0aXplcikgY292ZXJzIHRoZSBtb3JlIHR5cGljYWwgbWVtb3J5IGxpZmVjeWNsZSBpc3N1ZXMgbGlrZSB1c2UtYWZ0ZXItZnJlZSBhbmQgZGFuZ2xpbmcgcG9pbnRlcnMuXG5cbkZpcnN0LCBJIGxvb2tlZCBhdCB0aGUgZnVuY3Rpb25zIGludm9sdmVkLiBgcGh5X3Jlc3RvcmVfZ2VucGh5X2lycWAgaXMgaW50ZXJlc3RpbmcuIEl0IHJlc3RvcmVzIGBwaHlkZXYtXHUwMDNlaXJxYCBmcm9tIHRoZSBNRElPIGJ1cydzIGBidXMtXHUwMDNlaXJxYCBhcnJheS4gVGhpcyBoYXBwZW5zIGR1cmluZyBkZXRhY2ggb3IgZmFpbHVyZS4gYHBoeWxpbmtfY2xlYXJfcGh5ZGV2YCBjbGVhbnMgdXAgc3RhdGUgcG9pbnRlcnMsIGVzcGVjaWFsbHkgd2hlbiBwaHlsaW5rIGJyaW5ndXAgZmFpbHMuXG5cbkkgdGhlbiB3ZW50IHRocm91Z2ggdGhlIEtNU0FOIGNyaXRlcmlhIGluIG15IGhlYWQ6XG5cbjEuICAqKktlcm5lbCBkYXRhIGV4cG9zZWQgdG8gdXNlcnNwYWNlOioqIE5vcGUuIE5vdGhpbmcgaGVyZSBpbnZvbHZlcyBgY29weV90b191c2VyYCwgYHB1dF91c2VyYCwgbmV0bGluaywgaW9jdGwsIG9yIGFueSB1c2VyLXNwYWNlIGludGVyYWN0aW9uLlxuMi4gICoqQ29uZGl0aW9uYWwgbG9naWMgb24gdW5pbml0aWFsaXplZCBkYXRhOioqIE5vdCB0aGF0IEkgY2FuIHNlZS5cbjMuICAqKlVuaW5pdGlhbGl6ZWQgZGF0YSBzdHJ1Y3R1cmVzOioqIEknbSBub3Qgc2VlaW5nIGFueSBuZXcgbWVtb3J5IGFsbG9jYXRpb25zIHRoYXQgd291bGRuJ3QgaGF2ZSBkZWZhdWx0IGluaXRpYWxpemF0aW9uLlxuNC4gICoqQm91bmRzIGNoZWNrcyBleHBvc2luZyB1bmluaXRpYWxpemVkIG1lbW9yeToqKiBOb3BlLlxuXG5TbywgZGlnZ2luZyBkZWVwZXIsIGBidXMtXHUwMDNlaXJxYCBpcyBhbGxvY2F0ZWQgYW5kIGluaXRpYWxpemVkIGJ5IGBtZGlvYnVzX2FsbG9jKClgLiBTcGVjaWZpY2FsbHksIHRoZSBjb250ZW50cyBvZiB0aGUgYGJ1cy1cdTAwM2VpcnFgIGFycmF5IGFyZSBpbml0aWFsaXplZCBlaXRoZXIgdG8gUEhZX1BPTEwgb3Igc3BlY2lmaWMgSVJRIG51bWJlcnMsIHByZXZlbnRpbmcgYWNjaWRlbnRhbCB1c2Ugb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuIGBwaHlsaW5rX2NsZWFyX3BoeWRldmAgc2V0cyBmaWVsZHMgdG8gTlVMTCBvciBmYWxzZSwgd2hpY2ggaXMgdGhlIGNsZWFudXAgc3RhZ2UuIFRoZSBlcnJvciBoYW5kbGluZyBlbnN1cmVzIGBwbC1cdTAwM2VwaHlkZXZgIGlzIHNldCB0byBOVUxMIG9uIGZhaWx1cmUgaW4gYHBoeWxpbmtfYnJpbmd1cF9waHlgLCBlbGltaW5hdGluZyBhIGRhbmdsaW5nIHBvaW50ZXIuXG5cbkNvbnNlcXVlbnRseSwgdGhpcyBzZWVtcyBsaWtlIHB1cmVseSBzdGF0ZSBjbGVhbnVwLCBsaWZlY3ljbGUgbWFuYWdlbWVudCwgYW5kIElSUSByZXN0b3JhdGlvbi4gS0FTQU4gaXMgdGhlIHJpZ2h0IHRvb2wgaGVyZSBmb3IgdXNlLWFmdGVyLWZyZWUgb3IgZGFuZ2xpbmcgcG9pbnRlcnMsIGFuZCBpdCB3aWxsIHBpY2sgdXAgdGhvc2UgaXNzdWVzLiBUaGlzIHBhdGNoLCBiYXNlZCBvbiBteSBhbmFseXNpcywgZG9lcyAqbm90KiBpbnRyb2R1Y2UgYW55IEtNU0FOIGNvbmNlcm5zLiBJIHNlZSBubyBhbGxvY2F0aW9uLCBjb3B5aW5nLCBvciBleHBvc3VyZSBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS5cblxuRmluYWxseSwganVzdCB0byBiZSBjb21wbGV0ZWx5IGNsZWFyIGluIG15IHJlYXNvbmluZywgSSdsbCBzb2xpZGlmeSB0aGUgY29tcGFyaXNvbiBvZiBLQVNBTiBhbmQgS01TQU4uIFRoaXMgcGF0Y2ggZm9jdXNlcyBvbiBjbGVhbiBsaWZlY3ljbGUgbWFuYWdlbWVudCB3aXRoaW4gdGhlIGtlcm5lbCwgbWFraW5nIGl0IGEgS0FTQU4gaXNzdWUuIEtBU0FOIHdpbGwgZGV0ZWN0IGRhbmdsaW5nIHBvaW50ZXJzIGFuZCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMgaW4gdGhlIHBoeWxpbmsvcGh5X2RldmljZSBhdHRhY2gvZGV0YWNoIHBhdGhzLiBLTVNBTiBkZWFscyB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGxlYWtzICp0byB1c2VyIHNwYWNlKi4gVGhpcyBwYXRjaCBkb2Vzbid0IGludm9sdmUgYW55IG9mIHRoYXQuIFRoZSByZXN0b3Jpbmcgb2YgYHBoeWRldi1cdTAwM2VpcnFgIHVzZXMgZGF0YSBmcm9tIGEgYnVzIHRoYXQgaXMgaW5pdGlhbGl6ZWQgYnkgYG1kaW9idXNfYWxsb2MoKWAuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGFsbG9jYXRlZCwgcmVhZCwgb3IgY29waWVkIHRvIHVzZXIgc3BhY2UuXG5cblRoZXJlZm9yZSwgSSdtIGNvbmZpZGVudCBpbiBjYWxsaW5nIHRoaXMgYE5lZWRzS01TQU5gIGFzIGBmYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3ODQsIk91dHB1dFRva2VucyI6MTcyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjdUMjE6NTg6MjYuMTUyNDU3MDc2WiIsIlNlcSI6NDAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU5NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgc3RhdGUgY2xlYW51cCBhbmQgSVJRIHJlc3RvcmF0aW9uIGluIFBIWSBhbmQgcGh5bGluayBkcml2ZXIgbGlmZWN5Y2xlcyAoc3BlY2lmaWNhbGx5IHJlc3RvcmluZyBwaHlkZXYtXFx1MDAzZWlycSB1cG9uIGdlbmVyaWMgUEhZIGRyaXZlciBkZXRhY2gvYXR0YWNoIGZhaWx1cmUgYW5kIGNsZWFyaW5nIHBsLVxcdTAwM2VwaHlkZXYgb24gcGh5bGlua19icmluZ3VwX3BoeSBmYWlsdXJlKS4gXFxuXFxuVGhlc2UgY2hhbmdlcyBpbnZvbHZlIG1hbmFnaW5nIG9iamVjdCBsaWZlY3ljbGVzLCByZXNldHRpbmcgaW50ZXJuYWwgcG9pbnRlcnMgdG8gTlVMTCwgYW5kIHJlc2V0dGluZyBib29sZWFuIGZsYWdzLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCByZWFkcywgcGFkZGluZyBsZWFrcywgb3IgdXNlci1zcGFjZSBjb3BpZXMgKGNvcHlfdG9fdXNlci9uZXRsaW5rKSBhcmUgaW50cm9kdWNlZCBvciBtb2RpZmllZC4gQW55IGxpZmVjeWNsZSBvciBkYW5nbGluZyBwb2ludGVyIGlzc3VlcyBpbiB0aGlzIGNvZGUgcGF0aCBmYWxsIHVuZGVyIEtBU0FOICh1c2UtYWZ0ZXItZnJlZSAvIGludmFsaWQgYWNjZXNzKSBvciBzdGFuZGFyZCBrZXJuZWwgYXNzZXJ0aW9ucy9MT0NLREVQLCBtYWtpbmcgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiB1bm5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRyZXNzZXMgc3RhdGUgY2xlYW51cCBhbmQgSVJRIHJlc3RvcmF0aW9uIGluIFBIWSBhbmQgcGh5bGluayBkcml2ZXIgbGlmZWN5Y2xlcyAoc3BlY2lmaWNhbGx5IHJlc3RvcmluZyBwaHlkZXYtXFx1MDAzZWlycSB1cG9uIGdlbmVyaWMgUEhZIGRyaXZlciBkZXRhY2gvYXR0YWNoIGZhaWx1cmUgYW5kIGNsZWFyaW5nIHBsLVxcdTAwM2VwaHlkZXYgb24gcGh5bGlua19icmluZ3VwX3BoeSBmYWlsdXJlKS4gXFxuXFxuVGhlc2UgY2hhbmdlcyBpbnZvbHZlIG1hbmFnaW5nIG9iamVjdCBsaWZlY3ljbGVzLCByZXNldHRpbmcgaW50ZXJuYWwgcG9pbnRlcnMgdG8gTlVMTCwgYW5kIHJlc2V0dGluZyBib29sZWFuIGZsYWdzLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCByZWFkcywgcGFkZGluZyBsZWFrcywgb3IgdXNlci1zcGFjZSBjb3BpZXMgKGNvcHlfdG9fdXNlci9uZXRsaW5rKSBhcmUgaW50cm9kdWNlZCBvciBtb2RpZmllZC4gQW55IGxpZmVjeWNsZSBvciBkYW5nbGluZyBwb2ludGVyIGlzc3VlcyBpbiB0aGlzIGNvZGUgcGF0aCBmYWxsIHVuZGVyIEtBU0FOICh1c2UtYWZ0ZXItZnJlZSAvIGludmFsaWQgYWNjZXNzKSBvciBzdGFuZGFyZCBrZXJuZWwgYXNzZXJ0aW9ucy9MT0NLREVQLCBtYWtpbmcgYSBkZWRpY2F0ZWQgS01TQU4gc2Vzc2lvbiB1bm5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowzvvj2[1] Phase: Succeeded StartedAt: 2026-08-27 21:58:37 +0000 UTC FinishedAt: 2026-08-27 21:58:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzvvj2[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-27 21:58:37 +0000 UTC FinishedAt: 2026-08-27 21:58:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzvvj2[2] Phase: Running StartedAt: 2026-08-27 21:58:37 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzvvj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","NETDEVICES","PHYLIB","PHYLINK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy","phylink_fwnode_phy_connect","phylink_of_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","NETDEVICES","PHYLIB","PHYLINK"],"series_id":"85e488c7-c7fc-48d4-9fdd-df7b38a617e6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Running StartedAt: 2026-08-27 21:58:37 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","NETDEVICES","PHYLIB","PHYLINK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy","phylink_fwnode_phy_connect","phylink_of_phy_connect"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","NETDEVICES","PHYLIB","PHYLINK"],"series_id":"85e488c7-c7fc-48d4-9fdd-df7b38a617e6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowzvvj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","NETDEVICES","PHYLIB","PHYLINK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy","phylink_fwnode_phy_connect","phylink_of_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","NETDEVICES","PHYLIB","PHYLINK"],"series_id":"85e488c7-c7fc-48d4-9fdd-df7b38a617e6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-27 21:58:37 +0000 UTC FinishedAt: 2026-08-27 21:58:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzvvj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","NETDEVICES","PHYLIB","PHYLINK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy","phylink_fwnode_phy_connect","phylink_of_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","NETDEVICES","PHYLIB","PHYLINK"],"series_id":"85e488c7-c7fc-48d4-9fdd-df7b38a617e6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-27 21:58:37 +0000 UTC FinishedAt: 2026-08-27 21:58:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","NETDEVICES","PHYLIB","PHYLINK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzvvj2/series-workflowzvvj2-convert-artifact-2058339453/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzvvj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","NETDEVICES","PHYLIB","PHYLINK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy","phylink_fwnode_phy_connect","phylink_of_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","NETDEVICES","PHYLIB","PHYLINK"],"series_id":"85e488c7-c7fc-48d4-9fdd-df7b38a617e6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Running StartedAt: 2026-08-27 21:58:47 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzvvj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","NETDEVICES","PHYLIB","PHYLINK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy","phylink_fwnode_phy_connect","phylink_of_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","NETDEVICES","PHYLIB","PHYLINK"],"series_id":"85e488c7-c7fc-48d4-9fdd-df7b38a617e6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Running StartedAt: 2026-08-27 21:58:47 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +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:*2dfb79e7-9272-4f07-b493-6a932ea528f7,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-workflowzvvj2/series-workflowzvvj2-convert-artifact-2058339453/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowzvvj2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","NETDEVICES","PHYLIB","PHYLINK"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["phy_attach_direct","phy_detach","phylink_connect_phy","phylink_disconnect_phy","phylink_fwnode_phy_connect","phylink_of_phy_connect"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","NETDEVICES","PHYLIB","PHYLINK"],"series_id":"85e488c7-c7fc-48d4-9fdd-df7b38a617e6","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Running StartedAt: 2026-08-27 21:58:47 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +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:*2dfb79e7-9272-4f07-b493-6a932ea528f7,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-workflowzvvj2/series-workflowzvvj2-convert-artifact-2058339453/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}