Name: series-workflowmh2gd Phase: Succeeded StartedAt: 2026-08-05 09:20:39 +0000 UTC FinishedAt: 2026-08-05 13:10:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh2gd[0] Phase: Succeeded StartedAt: 2026-08-05 09:20:39 +0000 UTC FinishedAt: 2026-08-05 09:26:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh2gd[0].run-triage Phase: Succeeded StartedAt: 2026-08-05 09:20:39 +0000 UTC FinishedAt: 2026-08-05 09:26:28 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "a23b36233d4103def55dc8cf65698106d0bd1e62", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_FLOW_TABLE", "NFT_FLOW_OFFLOAD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "a23b36233d4103def55dc8cf65698106d0bd1e62", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_FLOW_TABLE", "NFT_FLOW_OFFLOAD" ], "series_id": "4170c13e-d494-448c-acf0-51f7e8ae5ff2" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "dev_fill_forward_path", "nft_flow_route" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0ZMT1dfVEFCTEUmIzM0OywKICAgICYjMzQ7TkZUX0ZMT1dfT0ZGTE9BRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Rldl9maWxsX2ZvcndhcmRfcGF0aCYjMzQ7LAogICAgJiMzNDtuZnRfZmxvd19yb3V0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgc2lnbmF0dXJlIGFuZCBpbXBsZW1lbnRhdGlvbiBvZiBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrLCBjaGFuZ2luZyBob3cgdGhlIGBuZXRfZGV2aWNlX3BhdGhfY3R4YCBpcyBwYXNzZWQgYW5kIGFjY2Vzc2VkLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgdGhlIG5ldGZpbHRlciBmbG93IG9mZmxvYWQgc3Vic3lzdGVtIChgbmZ0X2Zsb3dfcm91dGVgIC1cdTAwM2UgYG5mdF9kZXZfZm9yd2FyZF9wYXRoYCAtXHUwMDNlIGBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCkuIFNpbmNlIGl0IGFsdGVycyBjb3JlIG5ldHdvcmtpbmcgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MjQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlOWIzNGY5NDNiNjNjMTdlZTBjZTUzYWEzZmRhMzMzMGY0NDBkMmE3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgNSAwOToyNDoyMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuY1xuaW5kZXggMzNkZGYwZDA3ODU1My4uNTMxODNhMTMyMTAwNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmNcbkBAIC0yODMsMTQgJiM0MzsyODMsMTkgQEAgc3RhdGljIGludCBhaXJvaGFfcHBlX2dldF93ZG1hX2luZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmFkZHIsXG4gXHRcdFx0XHQgICAgc3RydWN0IGFpcm9oYV93ZG1hX2luZm8gKmluZm8pXG4ge1xuIFx0c3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayBzdGFjaztcbiYjNDM7XHRzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX2N0eCBjdHggPSB7XG4mIzQzO1x0XHQuZGV2ID0gZGV2LFxuJiM0MztcdH07XG4gXHRzdHJ1Y3QgbmV0X2RldmljZV9wYXRoICpwYXRoO1xuIFx0aW50IGVycjtcbiBcbiBcdGlmICghZGV2KVxuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcbiYjNDM7XHRldGhlcl9hZGRyX2NvcHkoY3R4LmRhZGRyLCBhZGRyKTtcbiYjNDM7XG4gXHRyY3VfcmVhZF9sb2NrKCk7XG4tXHRlcnIgPSBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoZGV2LCBhZGRyLCBcdTAwMjZzdGFjayk7XG4mIzQzO1x0ZXJyID0gZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKFx1MDAyNmN0eCwgXHUwMDI2c3RhY2spO1xuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmNcbmluZGV4IGNjOGM0ZWY4MDM4ZjMuLjFlYzQ2Nzg0ZjAxODcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfcHBlX29mZmxvYWQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmNcbkBAIC05Miw2ICYjNDM7OTIsOSBAQCBzdGF0aWMgaW50XG4gbXRrX2Zsb3dfZ2V0X3dkbWFfaW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqYWRkciwgc3RydWN0IG10a193ZG1hX2luZm8gKmluZm8pXG4ge1xuIFx0c3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayBzdGFjaztcbiYjNDM7XHRzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX2N0eCBjdHggPSB7XG4mIzQzO1x0XHQuZGV2ID0gZGV2LFxuJiM0MztcdH07XG4gXHRzdHJ1Y3QgbmV0X2RldmljZV9wYXRoICpwYXRoO1xuIFx0aW50IGVycjtcbiBcbkBAIC0xMDEsOCAmIzQzOzEwNCwxMCBAQCBtdGtfZmxvd19nZXRfd2RtYV9pbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICphZGRyLCBzdHJ1Y3QgbXRrX3dkbWFfaVxuIFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCkpXG4gXHRcdHJldHVybiAtMTtcbiBcbiYjNDM7XHRldGhlcl9hZGRyX2NvcHkoY3R4LmRhZGRyLCBhZGRyKTtcbiYjNDM7XG4gXHRyY3VfcmVhZF9sb2NrKCk7XG4tXHRlcnIgPSBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoZGV2LCBhZGRyLCBcdTAwMjZzdGFjayk7XG4mIzQzO1x0ZXJyID0gZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKFx1MDAyNmN0eCwgXHUwMDI2c3RhY2spO1xuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmggYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXG5pbmRleCA4ZGIyNWI3OTU3M2UzLi5kMmY1NDUwMTZmN2Y2IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaFxuQEAgLTM0MjUsNyAmIzQzOzM0MjUsNyBAQCB2b2lkIGRldl9yZW1vdmVfb2ZmbG9hZChzdHJ1Y3QgcGFja2V0X29mZmxvYWQgKnBvKTtcbiBcbiBpbnQgZGV2X2dldF9pZmxpbmsoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG4gaW50IGRldl9maWxsX21ldGFkYXRhX2RzdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbi1pbnQgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICpkYWRkcixcbiYjNDM7aW50IGRldl9maWxsX2ZvcndhcmRfcGF0aChzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX2N0eCAqY3R4LFxuIFx0XHRcdCAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayAqc3RhY2spO1xuIHN0cnVjdCBuZXRfZGV2aWNlICpkZXZfZ2V0X2J5X25hbWUoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBjaGFyICpuYW1lKTtcbiBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2X2dldF9ieV9uYW1lX3JjdShzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IGNoYXIgKm5hbWUpO1xuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5jIGIvbmV0L2NvcmUvZGV2LmNcbmluZGV4IGMxYzFiZTFhNjk2MmYuLmUyYzlmZTNmN2E3YmEgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9kZXYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUvZGV2LmNcbkBAIC03NTAsNDEgJiM0Mzs3NTAsMzcgQEAgc3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlX3BhdGggKmRldl9md2RfcGF0aChzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX3N0YWNrICpzdGFjaylcbiBcdHJldHVybiBcdTAwMjZzdGFjay1cdTAwM2VwYXRoW2tdO1xuIH1cbiBcbi1pbnQgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICpkYWRkcixcbiYjNDM7aW50IGRldl9maWxsX2ZvcndhcmRfcGF0aChzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX2N0eCAqY3R4LFxuIFx0XHRcdCAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayAqc3RhY2spXG4ge1xuIFx0Y29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmxhc3RfZGV2O1xuLVx0c3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggY3R4ID0ge1xuLVx0XHQuZGV2XHQ9IGRldixcbi1cdH07XG4gXHRzdHJ1Y3QgbmV0X2RldmljZV9wYXRoICpwYXRoO1xuIFx0aW50IHJldCA9IDA7XG4gXG4tXHRtZW1jcHkoY3R4LmRhZGRyLCBkYWRkciwgc2l6ZW9mKGN0eC5kYWRkcikpO1xuIFx0c3RhY2stXHUwMDNlbnVtX3BhdGhzID0gMDtcbi1cdHdoaWxlIChjdHguZGV2IFx1MDAyNlx1MDAyNiBjdHguZGV2LVx1MDAzZW5ldGRldl9vcHMtXHUwMDNlbmRvX2ZpbGxfZm9yd2FyZF9wYXRoKSB7XG4tXHRcdGxhc3RfZGV2ID0gY3R4LmRldjtcbiYjNDM7XHR3aGlsZSAoY3R4LVx1MDAzZWRldiBcdTAwMjZcdTAwMjYgY3R4LVx1MDAzZWRldi1cdTAwM2VuZXRkZXZfb3BzLVx1MDAzZW5kb19maWxsX2ZvcndhcmRfcGF0aCkge1xuJiM0MztcdFx0bGFzdF9kZXYgPSBjdHgtXHUwMDNlZGV2O1xuIFx0XHRwYXRoID0gZGV2X2Z3ZF9wYXRoKHN0YWNrKTtcbiBcdFx0aWYgKCFwYXRoKVxuIFx0XHRcdHJldHVybiAtMTtcbiBcbiBcdFx0bWVtc2V0KHBhdGgsIDAsIHNpemVvZihzdHJ1Y3QgbmV0X2RldmljZV9wYXRoKSk7XG4tXHRcdHJldCA9IGN0eC5kZXYtXHUwMDNlbmV0ZGV2X29wcy1cdTAwM2VuZG9fZmlsbF9mb3J3YXJkX3BhdGgoXHUwMDI2Y3R4LCBwYXRoKTtcbiYjNDM7XHRcdHJldCA9IGN0eC1cdTAwM2VkZXYtXHUwMDNlbmV0ZGV2X29wcy1cdTAwM2VuZG9fZmlsbF9mb3J3YXJkX3BhdGgoY3R4LCBwYXRoKTtcbiBcdFx0aWYgKHJldCBcdTAwM2MgMClcbiBcdFx0XHRyZXR1cm4gLTE7XG4gXG4tXHRcdGlmIChXQVJOX09OX09OQ0UobGFzdF9kZXYgPT0gY3R4LmRldikpXG4mIzQzO1x0XHRpZiAoV0FSTl9PTl9PTkNFKGxhc3RfZGV2ID09IGN0eC1cdTAwM2VkZXYpKVxuIFx0XHRcdHJldHVybiAtMTtcbiBcdH1cbiBcbi1cdGlmICghY3R4LmRldilcbiYjNDM7XHRpZiAoIWN0eC1cdTAwM2VkZXYpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4gXHRwYXRoID0gZGV2X2Z3ZF9wYXRoKHN0YWNrKTtcbiBcdGlmICghcGF0aClcbiBcdFx0cmV0dXJuIC0xO1xuIFx0cGF0aC1cdTAwM2V0eXBlID0gREVWX1BBVEhfRVRIRVJORVQ7XG4tXHRwYXRoLVx1MDAzZWRldiA9IGN0eC5kZXY7XG4mIzQzO1x0cGF0aC1cdTAwM2VkZXYgPSBjdHgtXHUwMDNlZGV2O1xuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYyBiL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmNcbmluZGV4IDk4YzAzYjQ4N2Y1MjEuLmI5ZGY3NDUzZjc2MjAgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jXG5AQCAtNTAsNiAmIzQzOzUwLDkgQEAgc3RhdGljIGludCBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKGNvbnN0IHN0cnVjdCBuZl9mbG93X3JvdXRlICpyb3V0ZSxcbiB7XG4gXHRjb25zdCB2b2lkICpkYWRkciA9IFx1MDAyNmN0LVx1MDAzZXR1cGxlaGFzaFshZGlyXS50dXBsZS5zcmMudTM7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gZHN0X2NhY2hlLVx1MDAzZWRldjtcbiYjNDM7XHRzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX2N0eCBjdHggPSB7XG4mIzQzO1x0XHQuZGV2ID0gZGV2LFxuJiM0MztcdH07XG4gXHRzdHJ1Y3QgbmVpZ2hib3VyICpuO1xuIFx0dTggbnVkX3N0YXRlO1xuIFxuQEAgLTcyLDcgJiM0Mzs3NSw5IEBAIHN0YXRpYyBpbnQgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmZfZmxvd19yb3V0ZSAqcm91dGUsXG4gXHRcdHJldHVybiAtMTtcbiBcbiBvdXQ6XG4tXHRyZXR1cm4gZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKGRldiwgaGEsIHN0YWNrKTtcbiYjNDM7XHRldGhlcl9hZGRyX2NvcHkoY3R4LmRhZGRyLCBoYSk7XG4mIzQzO1xuJiM0MztcdHJldHVybiBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoXHUwMDI2Y3R4LCBzdGFjayk7XG4gfVxuIFxuIHN0cnVjdCBuZnRfZm9yd2FyZF9pbmZvIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToyNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfRkxPV19UQUJMRSYjMzQ7LAogICAgJiMzNDtORlRfRkxPV19PRkZMT0FEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGV2X2ZpbGxfZm9yd2FyZF9wYXRoJiMzNDssCiAgICAmIzM0O25mdF9mbG93X3JvdXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzaWduYXR1cmUgYW5kIGltcGxlbWVudGF0aW9uIG9mIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2ssIGNoYW5naW5nIGhvdyB0aGUgYG5ldF9kZXZpY2VfcGF0aF9jdHhgIGlzIHBhc3NlZCBhbmQgYWNjZXNzZWQuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSB0aGUgbmV0ZmlsdGVyIGZsb3cgb2ZmbG9hZCBzdWJzeXN0ZW0gKGBuZnRfZmxvd19yb3V0ZWAgLVx1MDAzZSBgbmZ0X2Rldl9mb3J3YXJkX3BhdGhgIC1cdTAwM2UgYG5mdF9kZXZfZmlsbF9mb3J3YXJkX3BhdGhgKS4gU2luY2UgaXQgYWx0ZXJzIGNvcmUgbmV0d29ya2luZyBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgaXQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGU5YjM0Zjk0M2I2M2MxN2VlMGNlNTNhYTNmZGEzMzMwZjQ0MGQyYTcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyA1IDA5OjI0OjIyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMKaW5kZXggMzNkZGYwZDA3ODU1My4uNTMxODNhMTMyMTAwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jCkBAIC0yODMsMTQgJiM0MzsyODMsMTkgQEAgc3RhdGljIGludCBhaXJvaGFfcHBlX2dldF93ZG1hX2luZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmFkZHIsCiAJCQkJICAgIHN0cnVjdCBhaXJvaGFfd2RtYV9pbmZvICppbmZvKQogewogCXN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfc3RhY2sgc3RhY2s7CiYjNDM7CXN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4IGN0eCA9IHsKJiM0MzsJCS5kZXYgPSBkZXYsCiYjNDM7CX07CiAJc3RydWN0IG5ldF9kZXZpY2VfcGF0aCAqcGF0aDsKIAlpbnQgZXJyOwogCiAJaWYgKCFkZXYpCiAJCXJldHVybiAtRU5PREVWOwogCiYjNDM7CWV0aGVyX2FkZHJfY29weShjdHguZGFkZHIsIGFkZHIpOwomIzQzOwogCXJjdV9yZWFkX2xvY2soKTsKLQllcnIgPSBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoZGV2LCBhZGRyLCAmYW1wO3N0YWNrKTsKJiM0MzsJZXJyID0gZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKCZhbXA7Y3R4LCAmYW1wO3N0YWNrKTsKIAlyY3VfcmVhZF91bmxvY2soKTsKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfcHBlX29mZmxvYWQuYwppbmRleCBjYzhjNGVmODAzOGYzLi4xZWM0Njc4NGYwMTg3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfcHBlX29mZmxvYWQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfcHBlX29mZmxvYWQuYwpAQCAtOTIsNiAmIzQzOzkyLDkgQEAgc3RhdGljIGludAogbXRrX2Zsb3dfZ2V0X3dkbWFfaW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqYWRkciwgc3RydWN0IG10a193ZG1hX2luZm8gKmluZm8pCiB7CiAJc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayBzdGFjazsKJiM0MzsJc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggY3R4ID0gewomIzQzOwkJLmRldiA9IGRldiwKJiM0MzsJfTsKIAlzdHJ1Y3QgbmV0X2RldmljZV9wYXRoICpwYXRoOwogCWludCBlcnI7CiAKQEAgLTEwMSw4ICYjNDM7MTA0LDEwIEBAIG10a19mbG93X2dldF93ZG1hX2luZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmFkZHIsIHN0cnVjdCBtdGtfd2RtYV9pCiAJaWYgKCFJU19FTkFCTEVEKENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCkpCiAJCXJldHVybiAtMTsKIAomIzQzOwlldGhlcl9hZGRyX2NvcHkoY3R4LmRhZGRyLCBhZGRyKTsKJiM0MzsKIAlyY3VfcmVhZF9sb2NrKCk7Ci0JZXJyID0gZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKGRldiwgYWRkciwgJmFtcDtzdGFjayk7CiYjNDM7CWVyciA9IGRldl9maWxsX2ZvcndhcmRfcGF0aCgmYW1wO2N0eCwgJmFtcDtzdGFjayk7CiAJcmN1X3JlYWRfdW5sb2NrKCk7CiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmggYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oCmluZGV4IDhkYjI1Yjc5NTczZTMuLmQyZjU0NTAxNmY3ZjYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaApAQCAtMzQyNSw3ICYjNDM7MzQyNSw3IEBAIHZvaWQgZGV2X3JlbW92ZV9vZmZsb2FkKHN0cnVjdCBwYWNrZXRfb2ZmbG9hZCAqcG8pOwogCiBpbnQgZGV2X2dldF9pZmxpbmsoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CiBpbnQgZGV2X2ZpbGxfbWV0YWRhdGFfZHN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpOwotaW50IGRldl9maWxsX2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqZGFkZHIsCiYjNDM7aW50IGRldl9maWxsX2ZvcndhcmRfcGF0aChzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX2N0eCAqY3R4LAogCQkJICBzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX3N0YWNrICpzdGFjayk7CiBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2X2dldF9ieV9uYW1lKHN0cnVjdCBuZXQgKm5ldCwgY29uc3QgY2hhciAqbmFtZSk7CiBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2X2dldF9ieV9uYW1lX3JjdShzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IGNoYXIgKm5hbWUpOwpkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZGV2LmMgYi9uZXQvY29yZS9kZXYuYwppbmRleCBjMWMxYmUxYTY5NjJmLi5lMmM5ZmUzZjdhN2JhIDEwMDY0NAotLS0gYS9uZXQvY29yZS9kZXYuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9kZXYuYwpAQCAtNzUwLDQxICYjNDM7NzUwLDM3IEBAIHN0YXRpYyBzdHJ1Y3QgbmV0X2RldmljZV9wYXRoICpkZXZfZndkX3BhdGgoc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayAqc3RhY2spCiAJcmV0dXJuICZhbXA7c3RhY2stJmd0O3BhdGhba107CiB9CiAKLWludCBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmRhZGRyLAomIzQzO2ludCBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggKmN0eCwKIAkJCSAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayAqc3RhY2spCiB7CiAJY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmxhc3RfZGV2OwotCXN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4IGN0eCA9IHsKLQkJLmRldgk9IGRldiwKLQl9OwogCXN0cnVjdCBuZXRfZGV2aWNlX3BhdGggKnBhdGg7CiAJaW50IHJldCA9IDA7CiAKLQltZW1jcHkoY3R4LmRhZGRyLCBkYWRkciwgc2l6ZW9mKGN0eC5kYWRkcikpOwogCXN0YWNrLSZndDtudW1fcGF0aHMgPSAwOwotCXdoaWxlIChjdHguZGV2ICZhbXA7JmFtcDsgY3R4LmRldi0mZ3Q7bmV0ZGV2X29wcy0mZ3Q7bmRvX2ZpbGxfZm9yd2FyZF9wYXRoKSB7Ci0JCWxhc3RfZGV2ID0gY3R4LmRldjsKJiM0MzsJd2hpbGUgKGN0eC0mZ3Q7ZGV2ICZhbXA7JmFtcDsgY3R4LSZndDtkZXYtJmd0O25ldGRldl9vcHMtJmd0O25kb19maWxsX2ZvcndhcmRfcGF0aCkgewomIzQzOwkJbGFzdF9kZXYgPSBjdHgtJmd0O2RldjsKIAkJcGF0aCA9IGRldl9md2RfcGF0aChzdGFjayk7CiAJCWlmICghcGF0aCkKIAkJCXJldHVybiAtMTsKIAogCQltZW1zZXQocGF0aCwgMCwgc2l6ZW9mKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGgpKTsKLQkJcmV0ID0gY3R4LmRldi0mZ3Q7bmV0ZGV2X29wcy0mZ3Q7bmRvX2ZpbGxfZm9yd2FyZF9wYXRoKCZhbXA7Y3R4LCBwYXRoKTsKJiM0MzsJCXJldCA9IGN0eC0mZ3Q7ZGV2LSZndDtuZXRkZXZfb3BzLSZndDtuZG9fZmlsbF9mb3J3YXJkX3BhdGgoY3R4LCBwYXRoKTsKIAkJaWYgKHJldCAmbHQ7IDApCiAJCQlyZXR1cm4gLTE7CiAKLQkJaWYgKFdBUk5fT05fT05DRShsYXN0X2RldiA9PSBjdHguZGV2KSkKJiM0MzsJCWlmIChXQVJOX09OX09OQ0UobGFzdF9kZXYgPT0gY3R4LSZndDtkZXYpKQogCQkJcmV0dXJuIC0xOwogCX0KIAotCWlmICghY3R4LmRldikKJiM0MzsJaWYgKCFjdHgtJmd0O2RldikKIAkJcmV0dXJuIHJldDsKIAogCXBhdGggPSBkZXZfZndkX3BhdGgoc3RhY2spOwogCWlmICghcGF0aCkKIAkJcmV0dXJuIC0xOwogCXBhdGgtJmd0O3R5cGUgPSBERVZfUEFUSF9FVEhFUk5FVDsKLQlwYXRoLSZndDtkZXYgPSBjdHguZGV2OwomIzQzOwlwYXRoLSZndDtkZXYgPSBjdHgtJmd0O2RldjsKIAogCXJldHVybiByZXQ7CiB9CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jIGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYwppbmRleCA5OGMwM2I0ODdmNTIxLi5iOWRmNzQ1M2Y3NjIwIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMKQEAgLTUwLDYgJiM0Mzs1MCw5IEBAIHN0YXRpYyBpbnQgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmZfZmxvd19yb3V0ZSAqcm91dGUsCiB7CiAJY29uc3Qgdm9pZCAqZGFkZHIgPSAmYW1wO2N0LSZndDt0dXBsZWhhc2hbIWRpcl0udHVwbGUuc3JjLnUzOwogCXN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBkc3RfY2FjaGUtJmd0O2RldjsKJiM0MzsJc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggY3R4ID0gewomIzQzOwkJLmRldiA9IGRldiwKJiM0MzsJfTsKIAlzdHJ1Y3QgbmVpZ2hib3VyICpuOwogCXU4IG51ZF9zdGF0ZTsKIApAQCAtNzIsNyAmIzQzOzc1LDkgQEAgc3RhdGljIGludCBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKGNvbnN0IHN0cnVjdCBuZl9mbG93X3JvdXRlICpyb3V0ZSwKIAkJcmV0dXJuIC0xOwogCiBvdXQ6Ci0JcmV0dXJuIGRldl9maWxsX2ZvcndhcmRfcGF0aChkZXYsIGhhLCBzdGFjayk7CiYjNDM7CWV0aGVyX2FkZHJfY29weShjdHguZGFkZHIsIGhhKTsKJiM0MzsKJiM0MzsJcmV0dXJuIGRldl9maWxsX2ZvcndhcmRfcGF0aCgmYW1wO2N0eCwgc3RhY2spOwogfQogCiBzdHJ1Y3QgbmZ0X2ZvcndhcmRfaW5mbyB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NTQKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAzODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVmYWN0b3JpbmcgYGRldl9maWxsX2ZvcndhcmRfcGF0aGAgLSBXb3J0aHkgRnV6emluZyBUYXJnZXQ/KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGNoYW5naW5nIHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgb2YgYGRldl9maWxsX2ZvcndhcmRfcGF0aGAuIFByZXZpb3VzbHksIGl0IHdhcyB0YWtpbmcgdGhlIGRldmljZSBhbmQgZGVzdGluYXRpb24gYWRkcmVzcyBkaXJlY3RseTogYChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqZGFkZHIsIHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfc3RhY2sgKnN0YWNrKWAuIE5vdywgaXQmIzM5O3MgYmVlbiB1cGRhdGVkIHRvIHRha2UgYSBjb250ZXh0IHN0cnVjdDogYChzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX2N0eCAqY3R4LCBzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX3N0YWNrICpzdGFjaylgLiBUaGUgY2FsbGVycyBhcmUgYWxsIHVwZGF0ZWQgdG8gaW5pdGlhbGl6ZSB0aGlzIGBuZXRfZGV2aWNlX3BhdGhfY3R4YCBhbmQgcGFzcyBpdCBhbG9uZy4KClRoZSBhZmZlY3RlZCBjYWxsZXJzIEkgc2VlIGFyZSBgYWlyb2hhX3BwZV9nZXRfd2RtYV9pbmZvYCBpbiB0aGUgQWlyb2hhIEV0aGVybmV0IGRyaXZlciwgYG10a19mbG93X2dldF93ZG1hX2luZm9gIGluIHRoZSBNZWRpYVRlayBkcml2ZXIsIGFuZCBgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aGAsIHdoaWNoIHNlZW1zIHRvIGJlIGNvbm5lY3RlZCB0byBuZXRmaWx0ZXIgZmxvdyB0YWJsZSBvZmZsb2FkLiBUaGlzIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgIGZ1bmN0aW9uIGl0c2VsZiBsaXZlcyBpbiBgbmV0L2NvcmUvZGV2LmNgLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBldmVuIHdvcnRoIGZ1enppbmcuIEl0JiMzOTtzIHJlYWxseSBqdXN0IGEgcmVmYWN0b3JpbmcsIHJpZ2h0PyBUaGUgY29yZSBsb2dpYyBvZiBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBzZWVtcyB0byBoYXZlIG9ubHkgYmVlbiAqc2xpZ2h0bHkqIGFkanVzdGVkIHRvIHVzZSBgY3R4LSZndDtkZXZgIGluc3RlYWQgb2YgdGhlIG9yaWdpbmFsLiBBbGwgdGhlIGNhbGxlcnMgbm93IHBhc3MgdGhpcyBuZXdseSBkZWZpbmVkIGFuZCBpbml0aWFsaXplZCBgY3R4YCBzdHJ1Y3QuCgpCdXQsIGlzIGl0IHJlYWNoYWJsZT8gWWVzLCBhbmQgdGhhdCYjMzk7cyB0aGUga2V5LiBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBpcyByZWFjaGFibGUgdmlhIGBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCwgd2hpY2ggaXMgcGFydCBvZiB0aGUgbmV0ZmlsdGVyIGZsb3cgdGFibGUgb2ZmbG9hZC4gVGhhdCBtYWtlcyB0aGlzIGEgdmlhYmxlIHRhcmdldCBmb3IgZnV6emluZy4KCk15IG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGEgYml0IGFuZCB0cmFjZSBob3cgYG5mdF9kZXZfZmlsbF9mb3J3YXJkX3BhdGhgIGlzIGNhbGxlZC4gSXQmIzM5O3MgaW4gdGhlIGBuZl9mbG93X3RhYmxlX3BhdGguY2AgZmlsZSwgc28gdGhlIG5leHQgbGV2ZWwgb2YgYW5hbHlzaXMgd2lsbCBzdGFydCB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9MzY9c3RhdGljIGJvb2wgbmZ0X2lzX3ZhbGlkX2V0aGVyX2RldmljZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtNDQtXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjQ1OnN0YXRpYyBpbnQgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmZfZmxvd19yb3V0ZSAqcm91dGUsXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTQ2LVx0XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3RfY2FjaGUsXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYz0yNTE9c3RhdGljIGludCBuZnRfZGV2X2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTI2Mi1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM6MjYzOlx0aWYgKG5mdF9kZXZfZmlsbF9mb3J3YXJkX3BhdGgocm91dGUsIGRzdCwgY3QsIGRpciwgaGEsIFx1MDAyNnN0YWNrKSBcdTAwM2MgMCB8fFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0yNjQtXHQgICAgbmZ0X2Rldl9wYXRoX2luZm8oXHUwMDI2c3RhY2ssIFx1MDAyNmluZm8sIGhhLCBcdTAwMjZmdC1cdTAwM2VkYXRhKSBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTk1CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkludmVzdGlnYXRpbmcgdGhlIG5mdF9kZXZfZm9yd2FyZF9wYXRoIENhbGwgQ2hhaW4qKgoKUmlnaHQsIHNvIGBuZnRfZGV2X2ZvcndhcmRfcGF0aGAgaXMgYmVpbmcgaW52b2tlZCBmcm9tIHdpdGhpbiBgbmZfZmxvd190YWJsZV9wYXRoLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtPa2F5LCBsZXQmIzM5O3MgdHJhY2UgdGhpcyBjYWxsIHBhdGggYW5kIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuJiMzNDsgSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgYWxsIHRoZSBwbGFjZXMgd2hlcmUgYG5mdF9kZXZfZm9yd2FyZF9wYXRoYCBpcyBhY3R1YWxseSBiZWluZyAqY2FsbGVkKiBmcm9tIHdpdGhpbiB0aGUga2VybmVsLiBVbmRlcnN0YW5kaW5nIHRoZSBmdWxsIGNhbGwgZ3JhcGggaXMgY3J1Y2lhbCB0byBncmFzcCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgdGhlIE5ldGZpbHRlciBmbG93IHRhYmxlIGFuZCwgc3BlY2lmaWNhbGx5LCBob3cgZGV2aWNlLWJhc2VkIGZvcndhcmRpbmcgZGVjaXNpb25zIGFyZSBiZWluZyBtYWRlIHdpdGhpbiB0aGUgbmZ0YWJsZXMgZnJhbWV3b3JrLiBUaGlzIGluaXRpYWwgc3RlcCBpcyBhIHByZXJlcXVpc2l0ZSBmb3IgYW55IGRlZXBlciBhbmFseXNpcyBJJiMzOTttIHBsYW5uaW5nIHRvIHBlcmZvcm0sIHN1Y2ggYXMgZGVidWdnaW5nIGEgZm9yd2FyZGluZyBpc3N1ZSBvciB0cnlpbmcgdG8gb3B0aW1pemUgdGhlIHRhYmxlIHBlcmZvcm1hbmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mdF9kZXZfZm9yd2FyZF9wYXRoJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9MjEzPXN0YXRpYyBpbnQgbmZ0X2Zsb3dfdHVubmVsX3VwZGF0ZV9yb3V0ZShjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTI1MC1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM6MjUxOnN0YXRpYyBpbnQgbmZ0X2Rldl9mb3J3YXJkX3BhdGgoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTI1Mi1cdFx0XHRcdHN0cnVjdCBuZl9mbG93X3JvdXRlICpyb3V0ZSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jPTMwMD1pbnQgbmZ0X2Zsb3dfcm91dGUoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsIGNvbnN0IHN0cnVjdCBuZl9jb25uICpjdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTM0Mi1cdGlmIChyb3V0ZS1cdTAwM2V0dXBsZVtkaXJdLnhtaXRfdHlwZVx0PT0gRkxPV19PRkZMT0FEX1hNSVRfTkVJR0ggXHUwMDI2XHUwMDI2XG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjM0MzpcdCAgICBuZnRfZGV2X2ZvcndhcmRfcGF0aChwa3QsIHJvdXRlLCBjdCwgZGlyLCBmdCkgXHUwMDNjIDApXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTM0NC1cdFx0Z290byBlcnJfZHN0X3JlbGVhc2U7XG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0zNDYtXHRpZiAocm91dGUtXHUwMDNldHVwbGVbIWRpcl0ueG1pdF90eXBlID09IEZMT1dfT0ZGTE9BRF9YTUlUX05FSUdIIFx1MDAyNlx1MDAyNlxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYzozNDc6XHQgICAgbmZ0X2Rldl9mb3J3YXJkX3BhdGgocGt0LCByb3V0ZSwgY3QsICFkaXIsIGZ0KSBcdTAwM2MgMClcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMzQ4LVx0XHRnb3RvIGVycl9kc3RfcmVsZWFzZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Njc1CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgcXVlc3Rpb246CgoqKkRlY29uc3RydWN0aW5nIHRoZSBgbmZ0X2Zsb3dfcm91dGVgIENhbGwqKgoKT2theSwgc28gc29tZW9uZSB3YW50cyB0byBrbm93IHdoZXJlIHRoZSBgbmZ0X2Zsb3dfcm91dGVgIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tLiBUaGF0JiMzOTtzIGEgZnVuZGFtZW50YWwgZGVidWdnaW5nIG9yIGNvZGUgYW5hbHlzaXMgcXVlc3Rpb24sIGlzbiYjMzk7dCBpdD8gTGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBrbm93IHRoZSBjb250ZXh0LiBJcyB0aGlzIGluIGEgc3BlY2lmaWMgY29kZWJhc2U/IElzIHRoaXMgYSByZXNlYXJjaCBwcm9qZWN0LCBvciBhIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQ/IFRoYXQgbGV2ZWwgb2YgZGV0YWlsIGRyYXN0aWNhbGx5IGNoYW5nZXMgbXkgYXBwcm9hY2guCgpQcmVzdW1pbmcgSSBkb24mIzM5O3QgaGF2ZSB0aGF0IGluZm9ybWF0aW9uLCBJJiMzOTtkIGltbWVkaWF0ZWx5IGp1bXAgdG8gc29tZSB0ZWNobmlxdWVzLgoKKiAgICoqU3RhdGljIEFuYWx5c2lzOioqIEkmIzM5O2QgcmVhY2ggZm9yIHRvb2xzIGxpa2UgZ3JlcCwgb3IgYSBtb3JlIHNvcGhpc3RpY2F0ZWQgY29kZSBzZWFyY2ggdG9vbCBpZiBpdCYjMzk7cyBhIGxhcmdlciBwcm9qZWN0IGFuZCBJIGtub3cgdGhlIGxhbmd1YWdlLiBJJiMzOTtkIGJlIGxvb2tpbmcgZm9yIGFsbCBvY2N1cnJlbmNlcyBvZiAmIzM0O25mdFxfZmxvd1xfcm91dGUmIzM0OyAoY2FzZS1zZW5zaXRpdmUgYXMgbmVlZGVkKSB0byBmaW5kIHBvdGVudGlhbCBjYWxsIHNpdGVzLiBBcmUgdGhlcmUgc2ltaWxhciBmdW5jdGlvbnMgdGhhdCBhbHNvIGNhbGwgaXQ/CiogICAqKkR5bmFtaWMgQW5hbHlzaXM6KiogSWYgdGhlIGNvZGUgaXMgcnVubmluZywgYSBkZWJ1Z2dlciBvciBwcm9maWxlciBiZWNvbWVzIG15IGZyaWVuZC4gSSYjMzk7ZCBzZXQgYSBicmVha3BvaW50IGF0IHRoZSBlbnRyeSBvZiBgbmZ0X2Zsb3dfcm91dGVgIGFuZCB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGggYmFjayB0byBzZWUgZXhhY3RseSB3aGljaCBmdW5jdGlvbnMgYXJlIGNhbGxpbmcgaXQuIFRoaXMgZ2l2ZXMgbWUgYSByZWFsLXRpbWUsIGNvbmNyZXRlIHZpZXcuCiogICAqKkNvZGUgRG9jdW1lbnRhdGlvbjoqKiBCZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBJIHdvdWxkIGNoZWNrIGlmIGFueSBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZS4gSGFzIHRoaXMgZnVuY3Rpb24gYmVlbiBkZXNjcmliZWQsIGFsb25nIHdpdGggaXRzIGZ1bmN0aW9uIG9yIHB1cnBvc2U/IFNvbWV0aW1lcywgY29tbWVudHMgYW5kIGRvY3VtZW50YXRpb24gaG9sZCB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdXNhZ2UgcGF0dGVybnMuCiogICAqKkRlcGVuZGVuY3kgSW5qZWN0aW9uL0ZyYW1ld29ya3M6KiogSWYgdGhpcyBmdW5jdGlvbiBpcyBwYXJ0IG9mIGEgbGFyZ2VyIGZyYW1ld29yayBvciB1c2VzIGRlcGVuZGVuY3kgaW5qZWN0aW9uLCB0aGF0IGltcGFjdHMgdGhlIHNlYXJjaC4gSSBtaWdodCBuZWVkIHRvIGNvbnNpZGVyIGhvdyB0aGUgZnJhbWV3b3JrIGhhbmRsZXMgZnVuY3Rpb24gY2FsbHMgb3Igd2hhdCBjb25maWd1cmF0aW9uIGZpbGVzIGFyZSBwcmVzZW50LgoqICAgKipSZXZlcnNlIEVuZ2luZWVyaW5nIChJZiBOZWNlc3NhcnkpOioqIElmIHRoZSBjb2RlIGlzIG9iZnVzY2F0ZWQgb3IgaWYgdGhlcmUmIzM5O3Mgbm8gc291cmNlIGNvZGUgYXZhaWxhYmxlLCBJIG1pZ2h0IG5lZWQgdG8gcmV2ZXJzZSBlbmdpbmVlci4gVGhpcyBpcyBtb3JlIHRpbWUgY29uc3VtaW5nLCBidXQgdGhlIGlkZWEgd291bGQgYmUgdG8gYW5hbHl6ZSB0aGUgY29tcGlsZWQgY29kZSAoZGlzYXNzZW1ibHksIGV0Yy4pIHRvIGZpZ3VyZSBvdXQgdGhlIGNhbGxpbmcgaGllcmFyY2h5LgoKVGhlIGtleSBpcyBtZXRob2RpY2FsIGVsaW1pbmF0aW9uLiBTdGFydCB3aXRoIHRoZSBzaW1wbGVzdCwgbW9zdCBkaXJlY3QgbWV0aG9kcyAoc3RhdGljIGFuYWx5c2lzKSBhbmQgZ3JhZHVhbGx5IG1vdmUgdG8gbW9yZSBpbnZvbHZlZCB0ZWNobmlxdWVzIGlmIG5lZWRlZC4gVGhlIGdvYWwgaXMgdG8gZXN0YWJsaXNoIHRoZSBjYWxsIHN0YWNrLCBzbyBJIGNhbiB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGFuZCBpbnRlbnQgb2YgdGhlIGBuZnRfZmxvd19yb3V0ZWAgY2FsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZnRfZmxvd19yb3V0ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZS5oPTI0Nz1zdHJ1Y3QgbmZ0X3BrdGluZm87XG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZS5oOjI0ODppbnQgbmZ0X2Zsb3dfcm91dGUoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsIGNvbnN0IHN0cnVjdCBuZl9jb25uICpjdCxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlLmgtMjQ5LVx0XHQgICBzdHJ1Y3QgbmZfZmxvd19yb3V0ZSAqcm91dGUsIGVudW0gaXBfY29ubnRyYWNrX2RpciBkaXIsXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYz0yNTE9c3RhdGljIGludCBuZnRfZGV2X2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTI5OS1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM6MzAwOmludCBuZnRfZmxvd19yb3V0ZShjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCwgY29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0LFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0zMDEtXHRcdCAgIHN0cnVjdCBuZl9mbG93X3JvdXRlICpyb3V0ZSwgZW51bSBpcF9jb25udHJhY2tfZGlyIGRpcixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTM1Ni19XG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjM1NzpFWFBPUlRfU1lNQk9MX0dQTChuZnRfZmxvd19yb3V0ZSk7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmM9NTA9c3RhdGljIHZvaWQgbmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9mbG93X29mZmxvYWQuYy0xMDgtXHRkaXIgPSBDVElORk8yRElSKGN0aW5mbyk7XG5uZXQvbmV0ZmlsdGVyL25mdF9mbG93X29mZmxvYWQuYzoxMDk6XHRpZiAobmZ0X2Zsb3dfcm91dGUocGt0LCBjdCwgXHUwMDI2cm91dGUsIGRpciwgcHJpdi1cdTAwM2VmbG93dGFibGUpIFx1MDAzYyAwKVxubmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmMtMTEwLVx0XHRnb3RvIGVycl9mbG93X3JvdXRlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2NjAKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqRXZhbHVhdGluZyBuZnRfZmxvd19vZmZsb2FkJiMzOTtzIEZ1enppbmcgUG90ZW50aWFsKioKClJpZ2h0LCBzbyBgbmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsYCBpcyB0aGUgZXZhbHVhdGlvbiBmdW5jdGlvbiBmb3IgdGhlIGBmbG93X29mZmxvYWRgIGV4cHJlc3Npb24gaW4gbmZ0YWJsZXMuIEdpdmVuIGl0cyByb2xlIGluIHN1Y2ggYSBrZXkgYXJlYSwgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoaXMgaXMgYSAqcHJpbWUqIHRhcmdldCBmb3IgZnV6emluZy4gRGVmaW5pdGVseSByZWFjaGFibGUsIGFuZCBkZWZpbml0ZWx5IHdvcnRoIGRpZ2dpbmcgaW50by4KCk5vdywgd2hpY2ggZnVuY3Rpb25zIGFyZSBtb2RpZmllZD8gQWhhLCBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBhbmQgYG5mdF9kZXZfZmlsbF9mb3J3YXJkX3BhdGhgLiBUaGVzZSBuZWVkIGNhcmVmdWwgc2NydXRpbnkuIExldCYjMzk7cyBzdGFydCB3aXRoIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgLiBXZSYjMzk7bGwgc2VlIHdoYXQga2luZCBvZiBpbnB1dHMgaXQgaGFuZGxlcywgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBicm9hZGVyIGNvbnRleHQsIGFuZCBsb29rIGZvciBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2X2ZpbGxfZm9yd2FyZF9wYXRoJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM9MjgyPXN0YXRpYyBpbnQgYWlyb2hhX3BwZV9nZXRfd2RtYV9pbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICphZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMjk3LVx0cmN1X3JlYWRfbG9jaygpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzoyOTg6XHRlcnIgPSBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoXHUwMDI2Y3R4LCBcdTAwMjZzdGFjayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTI5OS1cdHJjdV9yZWFkX3VubG9jaygpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jPTkyPW10a19mbG93X2dldF93ZG1hX2luZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmFkZHIsIHN0cnVjdCBtdGtfd2RtYV9pbmZvICppbmZvKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jLTEwOS1cdHJjdV9yZWFkX2xvY2soKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jOjExMDpcdGVyciA9IGRldl9maWxsX2ZvcndhcmRfcGF0aChcdTAwMjZjdHgsIFx1MDAyNnN0YWNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jLTExMS1cdHJjdV9yZWFkX3VubG9jaygpO1xuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MzQyNz1pbnQgZGV2X2ZpbGxfbWV0YWRhdGFfZHN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpO1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDozNDI4OmludCBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggKmN0eCxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMzQyOS1cdFx0XHQgIHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfc3RhY2sgKnN0YWNrKTtcbi0tXG5uZXQvODAyMXEvdmxhbl9kZXYuYz03NTY9c3RhdGljIGludCB2bGFuX2Rldl9nZXRfaWZsaW5rKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0LzgwMjFxL3ZsYW5fZGV2LmMtNzYyLVxubmV0LzgwMjFxL3ZsYW5fZGV2LmM6NzYzOnN0YXRpYyBpbnQgdmxhbl9kZXZfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggKmN0eCxcbm5ldC84MDIxcS92bGFuX2Rldi5jLTc2NC1cdFx0XHRcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlX3BhdGggKnBhdGgpXG4tLVxubmV0LzgwMjFxL3ZsYW5fZGV2LmM9MTA3OD1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHZsYW5fbmV0ZGV2X29wcyA9IHtcbi0tXG5uZXQvODAyMXEvdmxhbl9kZXYuYy0xMTA5LVx0Lm5kb19nZXRfaWZsaW5rXHRcdD0gdmxhbl9kZXZfZ2V0X2lmbGluayxcbm5ldC84MDIxcS92bGFuX2Rldi5jOjExMTA6XHQubmRvX2ZpbGxfZm9yd2FyZF9wYXRoXHQ9IHZsYW5fZGV2X2ZpbGxfZm9yd2FyZF9wYXRoLFxubmV0LzgwMjFxL3ZsYW5fZGV2LmMtMTExMS1cdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IHZsYW5faHd0c3RhbXBfZ2V0LFxuLS1cbm5ldC9jb3JlL2Rldi5jPTc0Mz1zdGF0aWMgc3RydWN0IG5ldF9kZXZpY2VfcGF0aCAqZGV2X2Z3ZF9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfc3RhY2sgKnN0YWNrKVxuLS1cbm5ldC9jb3JlL2Rldi5jLTc1Mi1cbm5ldC9jb3JlL2Rldi5jOjc1MzppbnQgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4ICpjdHgsXG5uZXQvY29yZS9kZXYuYy03NTQtXHRcdFx0ICBzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX3N0YWNrICpzdGFjaylcbi0tXG5uZXQvY29yZS9kZXYuYy03ODYtfVxubmV0L2NvcmUvZGV2LmM6Nzg3OkVYUE9SVF9TWU1CT0xfR1BMKGRldl9maWxsX2ZvcndhcmRfcGF0aCk7XG5uZXQvY29yZS9kZXYuYy03ODgtXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9OTc5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaWVlZTgwMjExX21vbml0b3JpZl9vcHMgPSB7XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtOTg4LVxubmV0L21hYzgwMjExL2lmYWNlLmM6OTg5OnN0YXRpYyBpbnQgaWVlZTgwMjExX25ldGRldl9maWxsX2ZvcndhcmRfcGF0aChzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX2N0eCAqY3R4LFxubmV0L21hYzgwMjExL2lmYWNlLmMtOTkwLVx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgbmV0X2RldmljZV9wYXRoICpwYXRoKVxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTEwNDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpZWVlODAyMTFfZGF0YWlmXzgwMjNfb3BzID0ge1xuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTEwNTMtXHQubmRvX3NldF9tYWNfYWRkcmVzc1x0PSBpZWVlODAyMTFfY2hhbmdlX21hYyxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjEwNTQ6XHQubmRvX2ZpbGxfZm9yd2FyZF9wYXRoXHQ9IGllZWU4MDIxMV9uZXRkZXZfZmlsbF9mb3J3YXJkX3BhdGgsXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMDU1LVx0Lm5kb19zZXR1cF90Y1x0XHQ9IGllZWU4MDIxMV9uZXRkZXZfc2V0dXBfdGMsXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYz0zNj1zdGF0aWMgYm9vbCBuZnRfaXNfdmFsaWRfZXRoZXJfZGV2aWNlKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy00NC1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM6NDU6c3RhdGljIGludCBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKGNvbnN0IHN0cnVjdCBuZl9mbG93X3JvdXRlICpyb3V0ZSxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtNDYtXHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdF9jYWNoZSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTc5LVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYzo4MDpcdHJldHVybiBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoXHUwMDI2Y3R4LCBzdGFjayk7XG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTgxLX1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jPTI1MT1zdGF0aWMgaW50IG5mdF9kZXZfZm9yd2FyZF9wYXRoKGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMjYyLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYzoyNjM6XHRpZiAobmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aChyb3V0ZSwgZHN0LCBjdCwgZGlyLCBoYSwgXHUwMDI2c3RhY2spIFx1MDAzYyAwIHx8XG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTI2NC1cdCAgICBuZnRfZGV2X3BhdGhfaW5mbyhcdTAwMjZzdGFjaywgXHUwMDI2aW5mbywgaGEsIFx1MDAyNmZ0LVx1MDAzZWRhdGEpIFx1MDAzYyAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTM0CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMjIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIEZvcndhcmQgUGF0aCBGdW5jdGlvbmFsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBtb2RpZnlpbmcgYGRldl9maWxsX2ZvcndhcmRfcGF0aGAgYW5kIGEgZmV3IGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQ6IGBhaXJvaGFfcHBlX2dldF93ZG1hX2luZm9gLCBgbXRrX2Zsb3dfZ2V0X3dkbWFfaW5mb2AsIGFuZCBgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aGAuIFJpZ2h0IGF3YXksIEkgc2VlIHRoaXMgdG91Y2hlcyBzb21lIHByZXR0eSBjb3JlIG5ldHdvcmsgZnVuY3Rpb25hbGl0eSwgcGFydGljdWxhcmx5IG5ldGZpbHRlciBmbG93IG9mZmxvYWQgYW5kIGhhcmR3YXJlIG9mZmxvYWQgcGF0aHMuIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgIGl0c2VsZiBsaXZlcyBpbiBgbmV0L2NvcmUvZGV2LmNgLgoKR2l2ZW4gaXRzIHBvc2l0aW9uIGFuZCB0aGUgbmF0dXJlIG9mIHRoZSBjYWxsZXJzLCB0aGlzIGxvb2tzIGxpa2UgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEl0JiMzOTtzIGludGltYXRlbHkgaW52b2x2ZWQgd2l0aCBob3cgbmV0d29yayB0cmFmZmljIGlzIHJvdXRlZCwgZXNwZWNpYWxseSB3aXRoIG9mZmxvYWRpbmcuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGRhdGEgc3RydWN0dXJlcyBhbmQgaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggdGhlIHZhcmlvdXMgb2ZmbG9hZCBtZWNoYW5pc21zLCBhbmQgSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgZWRnZSBjYXNlcyBhcmUgd2VsbCB0ZXN0ZWQuCgpOb3csIGBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBpcyBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCYjMzk7cyBsaW5rZWQgdG8gYG5mdF9mbG93X29mZmxvYWRfZXZhbGAsIHdoaWNoIGlzIHRoZSB3b3JraG9yc2UgYmVoaW5kIHRoZSBgZmxvd19vZmZsb2FkYCBleHByZXNzaW9uIGluIG5mdGFibGVzLiBUaGlzIHN1Z2dlc3RzIHRoYXQgYW55IGlzc3VlcyBoZXJlIGNvdWxkIHBvdGVudGlhbGx5IGxlYWQgdG8gc2VyaW91cyBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMgd2l0aGluIG5mdGFibGVzIGNvbmZpZ3VyYXRpb25zIGlmIHNvbWVvbmUgdXNlcyB0aGUgYGZsb3dfb2ZmbG9hZGAgZXhwcmVzc2lvbi4KCkJlZm9yZSBJIGRpZyBpbiBkZWVwZXIsIEkgd2FudCB0byB2ZXJpZnkgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBCYXNlZCBvbiBteSB1bmRlcnN0YW5kaW5nLCBgQ09ORklHX05GX0ZMT1dfVEFCTEVgIGlzIHByb2JhYmx5IHJlcXVpcmVkIGZvciBhbnkgY29kZSByZWxhdGVkIHRvIGBuZl9mbG93X3RhYmxlX3BhdGguY2AsIGFuZCBgQ09ORklHX05GVF9GTE9XX09GRkxPQURgIGlzIG5lZWRlZCBmb3IgYG5mdF9mbG93X29mZmxvYWRfZXZhbGAuIExldCBtZSBqdXN0IGRvdWJsZSBjaGVjayB0aG9zZSBjb25maWd1cmF0aW9ucyByZWFsIHF1aWNrLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSB0aGUgcmlnaHQgdGVzdGluZyBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jPTQxPXN0YXRpYyB2b2lkIGZsb3dfb2ZmbG9hZF9jdF90Y3Aoc3RydWN0IG5mX2Nvbm4gKmN0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jLTQ5LVxubmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmM6NTA6c3RhdGljIHZvaWQgbmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcbm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jLTUxLVx0XHRcdFx0ICBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmM9MjE4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZ0X2V4cHJfb3BzIG5mdF9mbG93X29mZmxvYWRfb3BzID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jLTIyMC1cdC5zaXplXHRcdD0gTkZUX0VYUFJfU0laRShzaXplb2Yoc3RydWN0IG5mdF9mbG93X29mZmxvYWQpKSxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jOjIyMTpcdC5ldmFsXHRcdD0gbmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsLFxubmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmMtMjIyLVx0LmluaXRcdFx0PSBuZnRfZmxvd19vZmZsb2FkX2luaXQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0MzEKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBJbnNwZWN0aW9uIGZvciBuZnRfZmxvd19vZmZsb2FkLmMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIEZpcnN0IG9yZGVyIG9mIGJ1c2luZXNzOiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIEtjb25maWcgZmlsZSBmb3IgYG5mdF9mbG93X29mZmxvYWQuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMsIHRoZSBidWlsZCBjb25maWd1cmF0aW9ucywgYW5kIHdoYXQgdHJpZ2dlcnMgdGhpcyBtb2R1bGUgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGtlcm5lbC4gVGhpcyBpcyBmb3VuZGF0aW9uYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgbmV0ZmlsdGVyIGZsb3cgb2ZmbG9hZCBpbXBsZW1lbnRhdGlvbi4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIGludHJpY2FjaWVzIG9mIGl0cyBkZXBlbmRlbmNpZXMgYW5kIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzLiBBcmUgdGhlcmUgYW55IGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBkZXBlbmRlbmNpZXM/IEFyZSB0aGVyZSBzcGVjaWZpYyBOSUMgZHJpdmVycyBpdCByZWxpZXMgdXBvbj8gS25vd2luZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpbGwgcXVpY2tseSBpbGx1bWluYXRlIHRoZSBzY29wZSBvZiB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb25hbGl0eSBhbmQgd2hldGhlciBvciBub3QgaXQgcGxheXMgbmljZWx5IHdpdGggb3RoZXIgbmV0d29ya2luZyBmZWF0dXJlcy4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mdF9mbG93X29mZmxvYWRcXC5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTEyPW9iai0kKENPTkZJR19ORlRfQ1QpXHRcdCYjNDM7PSBuZnRfY3Qub1xubmV0L25ldGZpbHRlci9NYWtlZmlsZToxMTM6b2JqLSQoQ09ORklHX05GVF9GTE9XX09GRkxPQUQpXHQmIzQzOz0gbmZ0X2Zsb3dfb2ZmbG9hZC5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTExNC1vYmotJChDT05GSUdfTkZUX0xJTUlUKVx0XHQmIzQzOz0gbmZ0X2xpbWl0Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTc0MwoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipLY29uZmlnIERpdmUgZm9yIG5mX2Zsb3dfdGFibGVfcGF0aC5vKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIGBuZl9mbG93X3RhYmxlX3BhdGgub2AuIFJpZ2h0LCBmaXJzdCBzdGVwLCBhcyBhbHdheXMsIGlzIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHNlYXJjaCB0aHJvdWdoIHRoZSByZWxldmFudCBLY29uZmlnIHRyZWVzLCBzdGFydGluZyB3aXRoIHRoZSBuZXR3b3JraW5nIGNvcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGRpcmVjdGx5IGNvbnRyb2wgdGhlIGluY2x1c2lvbiBvZiB0aGlzIG9iamVjdCBmaWxlLiBJcyBpdCB0aWVkIHRvIGEgc3BlY2lmaWMgZmVhdHVyZSwgYSBnZW5lcmFsIG5ldHdvcmtpbmcgc3Vic3lzdGVtLCBvciBzb21ldGhpbmcgbW9yZSBncmFudWxhcj8gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYGNvbmZpZ2Agc3ltYm9scyB0aGF0IG1pZ2h0IGRpcmVjdGx5IG1lbnRpb24gYG5mX2Zsb3dfdGFibGVfcGF0aGAsIG9yLCBtb3JlIGxpa2VseSwgc3ltYm9scyB0aGF0IGNvbnRyb2wgYSBicm9hZGVyIGZlYXR1cmUgc2V0IHdpdGhpbiB3aGljaCB0aGlzIG1vZHVsZSByZXNpZGVzLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmNpZXMgdXAgdGhlIEtjb25maWcgdHJlZSBpZiBpdCYjMzk7cyBub3QgaW1tZWRpYXRlbHkgb2J2aW91cy4gS25vd2luZyB0aGlzIHdpbGwgaW5mb3JtIGlmIGl0JiMzOTtzIGNvbmZpZ3VyYWJsZSBvciBpZiBpdCBjb21lcyBvbiBhcyBhIHNpZGUgZWZmZWN0LiBUaGVuIEkgY2FuIGNyZWF0ZSBhIG1vcmUgaW5mb3JtZWQgcGxhbiBhbmQgZGV0ZXJtaW5lIGlmIG15IGVmZm9ydHMgYXJlIGdvaW5nIHRvIHlpZWxkIG1vcmUgaW5zaWdodHMuIEnigJlsbCBtYWtlIHN1cmUgdG8gbm90ZSB0aGUgcmVsZXZhbnQgS2NvbmZpZyBzbmlwcGV0cyBhbmQgYW55IHJlbGV2YW50IGRlcGVuZGVuY2llcyBJIGVuY291bnRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfZmxvd190YWJsZV9wYXRoXFwubyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTE0Mz1uZl9mbG93X3RhYmxlLW9ianNcdFx0Oj0gbmZfZmxvd190YWJsZV9jb3JlLm8gbmZfZmxvd190YWJsZV9pcC5vIFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjE0NDpcdFx0XHRcdCAgIG5mX2Zsb3dfdGFibGVfcGF0aC5vIFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTE0NS1cdFx0XHRcdCAgIG5mX2Zsb3dfdGFibGVfb2ZmbG9hZC5vIG5mX2Zsb3dfdGFibGVfeGRwLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxNDUKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhcyBpZiBpdCB3ZXJlIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE5ldGZpbHRlciBNYWtlZmlsZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBuZl9mbG93X3RhYmxlLW9ianNgIGFuZCB0aGUgYnJvYWRlciBOZXRmaWx0ZXIgZnJhbWV3b3JrLiBNeSBmaXJzdCBtb3ZlIGlzIHRvIGhlYWQgc3RyYWlnaHQgaW50byB0aGUgYG5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVgLiBUaGlzIGZpbGUgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGVzZSBvYmplY3QgZmlsZXMgYXJlIGNvbXBpbGVkLCBsaW5rZWQsIGFuZCB1bHRpbWF0ZWx5IGludGVncmF0ZWQgaW50byB0aGUga2VybmVsIG1vZHVsZSBzeXN0ZW0uIEl04oCZbGwgcmV2ZWFsIHRoZSBkZXBlbmRlbmNpZXMsIHRoZSBidWlsZCBmbGFncyB1c2VkLCBhbmQgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRoYXQmIzM5O3MgZ29pbmcgb24uIEkmIzM5O20gaG9waW5nIHRvIGdldCBhIHF1aWNrIG92ZXJ2aWV3IGFuZCBpZGVudGlmeSBhbnkgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4gb3Igb3Bwb3J0dW5pdGllcyBmb3Igb3B0aW1pemF0aW9uIHdpdGhpbiB0aGUgZmxvdyB0YWJsZSBpbXBsZW1lbnRhdGlvbi4gSXQmIzM5O3MgdGltZSB0byB0cmFjZSB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgc2VlIGhvdyB0aGUgZmxvdyB0YWJsZSBmaXRzIGludG8gdGhlIGxhcmdlciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9mbG93X3RhYmxlLW9ianMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZT0xNDI9b2JqLSQoQ09ORklHX05GX0ZMT1dfVEFCTEUpXHQmIzQzOz0gbmZfZmxvd190YWJsZS5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjE0MzpuZl9mbG93X3RhYmxlLW9ianNcdFx0Oj0gbmZfZmxvd190YWJsZV9jb3JlLm8gbmZfZmxvd190YWJsZV9pcC5vIFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTE0NC1cdFx0XHRcdCAgIG5mX2Zsb3dfdGFibGVfcGF0aC5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDczCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmtpbmcgUGF0Y2ggZm9yIFBvdGVudGlhbCBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgbWluZCBob25lcyBpbiBvbiB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbnZvbHZlZDogYENPTkZJR19ORl9GTE9XX1RBQkxFYCBhbmQgYENPTkZJR19ORlRfRkxPV19PRkZMT0FEYC4gVGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIEJ1dCwgd2hhdCBhYm91dCB0aGUgY29yZSBmdW5jdGlvbiBpdHNlbGYsIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgPyBJdCYjMzk7cyBpbiBgbmV0L2NvcmUvZGV2LmNgLCBzbyBpdCYjMzk7cyBhbHdheXMgY29tcGlsZWQgaW4uIFRoZSBwYXRjaCBzZWVtcyB0byBiZSBjaGFuZ2luZyBob3cgaXQgYWNjZXNzZXMgdGhlIGBkZXZgIGZpZWxkIHdpdGhpbiBhIGNvbnRleHQgc3RydWN0dXJlLCB1c2luZyBgY3R4LSZndDtkZXZgIGluc3RlYWQgb2YgdGhlIG9sZCBgY3R4LmRldmAg4oCTIHR5cGljYWwgcG9pbnRlciB2cy4gdmFsdWUgYWNjZXNzIGNvcnJlY3Rpb24uIFRoZXnigJl2ZSB1cGRhdGVkIGFsbCB0aGUgY2FsbCBzaXRlcywgd2hpY2ggaXMgZ29vZC4KClRoZSByZWFsIHF1ZXN0aW9uIGlzOiBpcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz8gQWJzb2x1dGVseSEgQW55IGZ1bmN0aW9uYWwgY2hhbmdlIGRlZXAgd2l0aGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2sgaXMgcmlwZSBmb3IgZnV6emluZy4gVGhlIHBvdGVudGlhbCBpbXBhY3QgaXMgdG9vIHNpZ25pZmljYW50IHRvIGlnbm9yZS4KClRoZXJlZm9yZSwgdGhlIG1haW4gZnVuY3Rpb25zIHRvIHB1dCB1bmRlciB0aGUgbWljcm9zY29wZSBhcmUgYGRldl9maWxsX2ZvcndhcmRfcGF0aGAsIGBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCwgYG5mdF9mbG93X3JvdXRlYCwgYW5kIGBuZnRfZmxvd19vZmZsb2FkX2V2YWxgLiBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGVzZSBmb3IgZm9jdXNlZCB0ZXN0aW5nLiBBbmQgSSBzaG91bGQgcHJvYmFibHkgdmVyaWZ5IGlmIGBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBpcyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCBjb3VsZCBpbXBhY3QgaG93IGVhc2lseSBpdCBjYW4gYmUgcmVhY2hlZCBpbiBteSBmdXp6aW5nIHNldHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9MzY9c3RhdGljIGJvb2wgbmZ0X2lzX3ZhbGlkX2V0aGVyX2RldmljZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtNDQtXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjQ1OnN0YXRpYyBpbnQgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmZfZmxvd19yb3V0ZSAqcm91dGUsXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTQ2LVx0XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3RfY2FjaGUsXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYz0yNTE9c3RhdGljIGludCBuZnRfZGV2X2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTI2Mi1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM6MjYzOlx0aWYgKG5mdF9kZXZfZmlsbF9mb3J3YXJkX3BhdGgocm91dGUsIGRzdCwgY3QsIGRpciwgaGEsIFx1MDAyNnN0YWNrKSBcdTAwM2MgMCB8fFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0yNjQtXHQgICAgbmZ0X2Rldl9wYXRoX2luZm8oXHUwMDI2c3RhY2ssIFx1MDAyNmluZm8sIGhhLCBcdTAwMjZmdC1cdTAwM2VkYXRhKSBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyNzEKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqQXNzZXNzaW5nIFBvdGVudGlhbCBTdGF0aWMgRnVuY3Rpb25zIHdpdGhpbiB0aGUgTmV0ZmlsdGVyIEZyYW1ld29yayoqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIE5ldGZpbHRlciBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIGZ1bmN0aW9uIGBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYC4gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgb25lIGlzIGluZGVlZCBzdGF0aWNhbGx5IGRlZmluZWQuIE5vdywgSSBuZWVkIHRvIGV4cGFuZCBteSBzZWFyY2guIFRoZSBjcnVjaWFsIHF1ZXN0aW9uIGF0IGhhbmQgbm93IGlzOiB3aGF0IGFib3V0IGBuZnRfZmxvd19yb3V0ZWA/IElzIHRoYXQgb25lIGFsc28gYSBzdGF0aWMgZnVuY3Rpb24/IEl0JiMzOTtzIGltcG9ydGFudCB0byBmaWd1cmUgdGhpcyBvdXQsIGFzIGtub3dpbmcgdGhpcyB3aWxsIHRlbGwgbWUgYSBnb29kIGRlYWwgYWJvdXQgaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZ0X2Zsb3dfcm91dGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGUuaD0yNDc9c3RydWN0IG5mdF9wa3RpbmZvO1xuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGUuaDoyNDg6aW50IG5mdF9mbG93X3JvdXRlKGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0LCBjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZS5oLTI0OS1cdFx0ICAgc3RydWN0IG5mX2Zsb3dfcm91dGUgKnJvdXRlLCBlbnVtIGlwX2Nvbm50cmFja19kaXIgZGlyLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9MjUxPXN0YXRpYyBpbnQgbmZ0X2Rldl9mb3J3YXJkX3BhdGgoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0yOTktXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjMwMDppbnQgbmZ0X2Zsb3dfcm91dGUoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsIGNvbnN0IHN0cnVjdCBuZl9jb25uICpjdCxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMzAxLVx0XHQgICBzdHJ1Y3QgbmZfZmxvd19yb3V0ZSAqcm91dGUsIGVudW0gaXBfY29ubnRyYWNrX2RpciBkaXIsXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0zNTYtfVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYzozNTc6RVhQT1JUX1NZTUJPTF9HUEwobmZ0X2Zsb3dfcm91dGUpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jPTUwPXN0YXRpYyB2b2lkIG5mdF9mbG93X29mZmxvYWRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmMtMTA4LVx0ZGlyID0gQ1RJTkZPMkRJUihjdGluZm8pO1xubmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmM6MTA5Olx0aWYgKG5mdF9mbG93X3JvdXRlKHBrdCwgY3QsIFx1MDAyNnJvdXRlLCBkaXIsIHByaXYtXHUwMDNlZmxvd3RhYmxlKSBcdTAwM2MgMClcbm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jLTExMC1cdFx0Z290byBlcnJfZmxvd19yb3V0ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE5MTEKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgTmV0d29yayBGbG93IE9mZmxvYWRpbmcgQ29kZSoqCgpBbHJpZ2h0LCBzbyBgbmZ0X2Zsb3dfcm91dGVgIGFuZCBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBhcmUgYm90aCBleHBvcnRlZCwgbWVhbmluZyB0aGV5JiMzOTtyZSBhY2Nlc3NpYmxlIGZ1bmN0aW9ucy4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cg4oCTIGl0IHRlbGxzIG1lIHdoZXJlIHRoZXkmIzM5O3JlIGJlaW5nIHVzZWQgKmZyb20qLiBJIGltbWVkaWF0ZWx5IG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQgd2hlbiB0cmFjaW5nIGV4ZWN1dGlvbi4gQW5kLCBoZXksIGBuZnRfZmxvd19vZmZsb2FkX2V2YWxgIGlzIGRlY2xhcmVkIGFzICpzdGF0aWMqLiBSaWdodCwgc28gaXQmIzM5O3Mgb25seSB2aXNpYmxlIHdpdGhpbiBpdHMgb3duIGNvbXBpbGF0aW9uIHVuaXQuIE5vIGV4dGVybmFsIGRpcmVjdCBjYWxscyB0aGVyZSwgd2hpY2ggYWN0dWFsbHkgaGVscHMgcmVkdWNlIHRoZSBzY29wZSB0byBzZWFyY2ggZnJvbS4gTm93LCBsZXQmIzM5O3Mgc2VlLCB0aGUgbmV4dCB0aGluZyBJJiMzOTttIGdvaW5nIHRvIGRvIGlzIGRvdWJsZS1jaGVjayAqd2hvKiBpcyBjYWxsaW5nIHRoYXQgYGRldl9maWxsX2ZvcndhcmRfcGF0aGAgZnVuY3Rpb24uIEkgKm5lZWQqIHRvIHVuZGVyc3RhbmQgaXRzIHVzYWdlIHRvIGFjY3VyYXRlbHkgdHJhY2sgZG93biBob3cgaXQgZml0cyBpbnRvIHRoZSB3aG9sZSBmcmFtZXdvcmsuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGxvb2tpbmcgYXQgYWxsIGNhbGwgc2l0ZXMgZm9yIGl0LCBmcm9tIHdoZXJlIEkmIzM5O2xsIGdldCBhbiBhY2N1cmF0ZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXZfZmlsbF9mb3J3YXJkX3BhdGgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYz0yODI9c3RhdGljIGludCBhaXJvaGFfcHBlX2dldF93ZG1hX2luZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmFkZHIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0yOTctXHRyY3VfcmVhZF9sb2NrKCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjI5ODpcdGVyciA9IGRldl9maWxsX2ZvcndhcmRfcGF0aChcdTAwMjZjdHgsIFx1MDAyNnN0YWNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMjk5LVx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmM9OTI9bXRrX2Zsb3dfZ2V0X3dkbWFfaW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqYWRkciwgc3RydWN0IG10a193ZG1hX2luZm8gKmluZm8pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmMtMTA5LVx0cmN1X3JlYWRfbG9jaygpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmM6MTEwOlx0ZXJyID0gZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKFx1MDAyNmN0eCwgXHUwMDI2c3RhY2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmMtMTExLVx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0zNDI3PWludCBkZXZfZmlsbF9tZXRhZGF0YV9kc3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjM0Mjg6aW50IGRldl9maWxsX2ZvcndhcmRfcGF0aChzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX2N0eCAqY3R4LFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0zNDI5LVx0XHRcdCAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayAqc3RhY2spO1xuLS1cbm5ldC84MDIxcS92bGFuX2Rldi5jPTc1Nj1zdGF0aWMgaW50IHZsYW5fZGV2X2dldF9pZmxpbmsoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvODAyMXEvdmxhbl9kZXYuYy03NjItXG5uZXQvODAyMXEvdmxhbl9kZXYuYzo3NjM6c3RhdGljIGludCB2bGFuX2Rldl9maWxsX2ZvcndhcmRfcGF0aChzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX2N0eCAqY3R4LFxubmV0LzgwMjFxL3ZsYW5fZGV2LmMtNzY0LVx0XHRcdFx0ICAgICAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aCAqcGF0aClcbi0tXG5uZXQvODAyMXEvdmxhbl9kZXYuYz0xMDc4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgdmxhbl9uZXRkZXZfb3BzID0ge1xuLS1cbm5ldC84MDIxcS92bGFuX2Rldi5jLTExMDktXHQubmRvX2dldF9pZmxpbmtcdFx0PSB2bGFuX2Rldl9nZXRfaWZsaW5rLFxubmV0LzgwMjFxL3ZsYW5fZGV2LmM6MTExMDpcdC5uZG9fZmlsbF9mb3J3YXJkX3BhdGhcdD0gdmxhbl9kZXZfZmlsbF9mb3J3YXJkX3BhdGgsXG5uZXQvODAyMXEvdmxhbl9kZXYuYy0xMTExLVx0Lm5kb19od3RzdGFtcF9nZXRcdD0gdmxhbl9od3RzdGFtcF9nZXQsXG4tLVxubmV0L2NvcmUvZGV2LmM9NzQzPXN0YXRpYyBzdHJ1Y3QgbmV0X2RldmljZV9wYXRoICpkZXZfZndkX3BhdGgoc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayAqc3RhY2spXG4tLVxubmV0L2NvcmUvZGV2LmMtNzUyLVxubmV0L2NvcmUvZGV2LmM6NzUzOmludCBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggKmN0eCxcbm5ldC9jb3JlL2Rldi5jLTc1NC1cdFx0XHQgIHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfc3RhY2sgKnN0YWNrKVxuLS1cbm5ldC9jb3JlL2Rldi5jLTc4Ni19XG5uZXQvY29yZS9kZXYuYzo3ODc6RVhQT1JUX1NZTUJPTF9HUEwoZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKTtcbm5ldC9jb3JlL2Rldi5jLTc4OC1cbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz05Nzk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpZWVlODAyMTFfbW9uaXRvcmlmX29wcyA9IHtcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy05ODgtXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo5ODk6c3RhdGljIGludCBpZWVlODAyMTFfbmV0ZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4ICpjdHgsXG5uZXQvbWFjODAyMTEvaWZhY2UuYy05OTAtXHRcdFx0XHRcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlX3BhdGggKnBhdGgpXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MTA0Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGllZWU4MDIxMV9kYXRhaWZfODAyM19vcHMgPSB7XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMTA1My1cdC5uZG9fc2V0X21hY19hZGRyZXNzXHQ9IGllZWU4MDIxMV9jaGFuZ2VfbWFjLFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTA1NDpcdC5uZG9fZmlsbF9mb3J3YXJkX3BhdGhcdD0gaWVlZTgwMjExX25ldGRldl9maWxsX2ZvcndhcmRfcGF0aCxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTEwNTUtXHQubmRvX3NldHVwX3RjXHRcdD0gaWVlZTgwMjExX25ldGRldl9zZXR1cF90Yyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jPTM2PXN0YXRpYyBib29sIG5mdF9pc192YWxpZF9ldGhlcl9kZXZpY2UoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTQ0LVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYzo0NTpzdGF0aWMgaW50IG5mdF9kZXZfZmlsbF9mb3J3YXJkX3BhdGgoY29uc3Qgc3RydWN0IG5mX2Zsb3dfcm91dGUgKnJvdXRlLFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy00Ni1cdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IGRzdF9lbnRyeSAqZHN0X2NhY2hlLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtNzktXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjgwOlx0cmV0dXJuIGRldl9maWxsX2ZvcndhcmRfcGF0aChcdTAwMjZjdHgsIHN0YWNrKTtcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtODEtfVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9MjUxPXN0YXRpYyBpbnQgbmZ0X2Rldl9mb3J3YXJkX3BhdGgoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0yNjItXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjI2MzpcdGlmIChuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKHJvdXRlLCBkc3QsIGN0LCBkaXIsIGhhLCBcdTAwMjZzdGFjaykgXHUwMDNjIDAgfHxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMjY0LVx0ICAgIG5mdF9kZXZfcGF0aF9pbmZvKFx1MDAyNnN0YWNrLCBcdTAwMjZpbmZvLCBoYSwgXHUwMDI2ZnQtXHUwMDNlZGF0YSkgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzODE4CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBBbmFseXNpcyBvZiB0aGUgTmV0ZmlsdGVyIEZsb3cgT2ZmbG9hZCBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoZSBOZXRmaWx0ZXIgZmxvdyBvZmZsb2FkLCBhbmQgbXkgZm9jdXMgbmVlZHMgdG8gYmUgbGFzZXItc2hhcnAuIFJpZ2h0IG5vdywgSSBiZWxpZXZlIHRoZSBrZXkgZnVuY3Rpb25zIHRvIGV4YW1pbmUgYXJlIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgIGFuZCBgbmZ0X2Zsb3dfcm91dGVgLiBJIGFsc28gbmVlZCB0byBrZWVwIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYE5GX0ZMT1dfVEFCTEVgIGFuZCBgTkZUX0ZMT1dfT0ZGTE9BRGAgaW4gbWluZCwgYXMgdGhleSYjMzk7bGwgb2J2aW91c2x5IHNoYXBlIHRoZSBiZWhhdmlvci4KCkZpcnN0LCBhIHF1aWNrIHNhbml0eSBjaGVjazogSSBuZWVkIHRvIGVuc3VyZSB0aGF0IGBORlRfRkxPV19PRkZMT0FEYCBkZXBlbmRzIG9uIGBORl9UQUJMRVNgLiBUaGlzIGlzIG5ldGZpbHRlci1yZWxhdGVkLCBzbyBpdCYjMzk7cyBhIGNyaXRpY2FsIGRlcGVuZGVuY3kgdG8gY29uZmlybS4gSG1tLCB5ZXAsIHRoYXQmIzM5O3Mgd2hhdCBJIHRob3VnaHQuIEl0JiMzOTtzIGZ1bmRhbWVudGFsbHkgdGllZCB0byB0aGUgTmV0ZmlsdGVyIGluZnJhc3RydWN0dXJlLgoKTm93LCBsZXQgbWUgZ28gc3RyYWlnaHQgdG8gYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgdG8gcGluIGRvd24gdGhlIGRldGFpbHMgc3Vycm91bmRpbmcgYE5GVF9GTE9XX09GRkxPQURgLiBUaGlzIEtjb25maWcgZmlsZSB3aWxsIGJlIHRoZSBtb3N0IGF1dGhvcml0YXRpdmUgc291cmNlIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgdmFsdWVzLCBhbmQgdGhlIGNvbmRpdGlvbmFsIGJ1aWxkIGxvZ2ljIGludm9sdmVkLiBGcm9tIHRoZXJlLCBJIGNhbiB1bmRlcnN0YW5kIGhvdyB0aGlzIGFsbCBmaXRzIHRvZ2V0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZUX0ZMT1dfT0ZGTE9BRCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDk4PWNvbmZpZyBORlRfRVhUSERSX0RDQ1Bcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNTAzLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjUwNDpjb25maWcgTkZUX0ZMT1dfT0ZGTE9BRFxubmV0L25ldGZpbHRlci9LY29uZmlnLTUwNS1cdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLIFx1MDAyNlx1MDAyNiBORl9GTE9XX1RBQkxFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MjcwCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBjb25zaWRlcmF0aW9ucywgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIHdobyB1bmRlcnN0YW5kcyB0aGUgaW50cmljYWNpZXMgb2YgbmV0d29yayB0cmFmZmljIG1hbmFnZW1lbnQ6CgoqKk5ldHdvcmsgVHJhZmZpYyBDb25zaWRlcmF0aW9ucyoqCgpSaWdodCwgc28gdG8gbWFrZSB0aGlzIHdvcmssIGl0JiMzOTtzIGNsZWFyIHdlJiMzOTtyZSBnb2luZyB0byBuZWVkIGEgc3BlY2lmaWMgc2V0IG9mIGtlcm5lbCBtb2R1bGVzIGluIHBsYWNlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB3ZSYjMzk7bGwgYmUgcmVseWluZyBvbiBgTkZfQ09OTlRSQUNLYCwgYE5GX0ZMT1dfVEFCTEVgLCBhbmQgYE5GVF9GTE9XX09GRkxPQURgLiBUaGVzZSBhcmUgdGhlIGNvcmUgYnVpbGRpbmcgYmxvY2tzIGZvciBzdGF0ZWZ1bCBpbnNwZWN0aW9uLCBhbmQgb2ZmbG9hZGluZy4KCk5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIGFib3V0IGBORl9GTE9XX1RBQkxFYCDigJMgaXQmIzM5O3MgYSBjcml0aWNhbCBjb21wb25lbnQgaGVyZS4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgaG93IHRoaXMgbW9kdWxlIG9wZXJhdGVzLCBhbmQgd2hhdCBhcmUgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORl9GTE9XX1RBQkxFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz03MDE9ZW5kaWYgIyBORl9UQUJMRVNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MDItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzAzOmNvbmZpZyBORl9GTE9XX1RBQkxFX0lORVRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MDQtXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgZmxvdyB0YWJsZSBtaXhlZCBJUHY0L0lQdjYgbW9kdWxlXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTcxMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3MTE6Y29uZmlnIE5GX0ZMT1dfVEFCTEVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MTItXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgZmxvdyB0YWJsZSBtb2R1bGVcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzIwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjcyMTpjb25maWcgTkZfRkxPV19UQUJMRV9QUk9DRlNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MjItXHRib29sIFwmIzM0O1N1cHBseSBmbG93IHRhYmxlIHN0YXRpc3RpY3MgaW4gcHJvY2ZzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0Njk1CgkJCQkJCQlvdXRwdXQ6IDE2NgoJCQkJCQkJdGhvdWdodHM6IDIwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aCBGdXp6aW5nIC0gQSBRdWljayBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoIGFuZCwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgaXQmIzM5O3MgZGVmaW5pdGVseSBzb21ldGhpbmcgd2Ugc2hvdWxkIHByaW9yaXRpemUgZm9yIGZ1enppbmcuIFRoZSBrZXkgY29uZmlndXJhdGlvbnMgaGVyZSBhcmUgYE5GX0ZMT1dfVEFCTEVgIGFuZCBgTkZUX0ZMT1dfT0ZGTE9BRGAg4oCTIHRob3NlIGFyZSB0aGUgZ2F0ZWtlZXBlcnMuCgpGdW5jdGlvbmFsbHksIHRoaXMgcGF0Y2ggbG9va3Mgc29saWQ7IGl04oCZcyBtYWtpbmcgY2hhbmdlcyB0byBzb21lIGNydWNpYWwgcGFydHMgb2YgdGhlIGtlcm5lbC4gSXTigJlzIG1vZGlmeWluZyB0aGUgY29yZSBuZXR3b3JraW5nIGFuZCBuZXRmaWx0ZXIgbG9naWMsIGFuZCBzcGVjaWZpY2FsbHksIEkmIzM5O20gbm90aW5nIHRoZSB1cGRhdGVzIHRvIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgLCBhcyB3ZWxsIGFzIGhvdyBpdCBpbXBhY3RzIHRoZSBgbmV0X2RldmljZV9wYXRoX2N0eGAuIFRoZSByZWFjaGFiaWxpdHkgaGVyZSBpcyBjbGVhcjogdGhlIHBhdGggZ29lcyBmcm9tIGBuZnRfZmxvd19yb3V0ZWAgdG8gYG5mdF9kZXZfZm9yd2FyZF9wYXRoYCwgYW5kIHRoZW4gZGlyZWN0bHkgaW50byBgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aGAsIGluZGljYXRpbmcgYSBzb2xpZCBwYXRoIGZvciBmdXp6ZXIgaW50ZXJhY3Rpb24uCgpTaW5jZSB0aGUgcGF0Y2ggdG91Y2hlcyBvbiBjb3JlIG5ldHdvcmtpbmcgcHJpbmNpcGxlcyBhbmQgSSBjYW4gc2VlIGEgY2xlYXIgcGF0aCBpbnRvIHRoZSBmdW5jdGlvbiBpdCBhbHRlcnMsIHBsdXMgdGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBhbGwgcmVhY2hhYmxlIGluIHN0YW5kYXJkIGVudmlyb25tZW50cywgaXQmIzM5O3MgYSB3b3J0aHdoaWxlIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gV29ydGhGdXp6aW5nPXRydWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9GTE9XX1RBQkxFJiMzNDssCiAgICAmIzM0O05GVF9GTE9XX09GRkxPQUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkZXZfZmlsbF9mb3J3YXJkX3BhdGgmIzM0OywKICAgICYjMzQ7bmZ0X2Zsb3dfcm91dGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHNpZ25hdHVyZSBhbmQgaW1wbGVtZW50YXRpb24gb2YgYGRldl9maWxsX2ZvcndhcmRfcGF0aGAgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjaywgY2hhbmdpbmcgaG93IHRoZSBgbmV0X2RldmljZV9wYXRoX2N0eGAgaXMgcGFzc2VkIGFuZCBhY2Nlc3NlZC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBuZXRmaWx0ZXIgZmxvdyBvZmZsb2FkIHN1YnN5c3RlbSAoYG5mdF9mbG93X3JvdXRlYCAtXHUwMDNlIGBuZnRfZGV2X2ZvcndhcmRfcGF0aGAgLVx1MDAzZSBgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aGApLiBTaW5jZSBpdCBhbHRlcnMgY29yZSBuZXR3b3JraW5nIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBpdCBpcyB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9GTE9XX1RBQkxFJiMzNDssCiAgICAmIzM0O05GVF9GTE9XX09GRkxPQUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkZXZfZmlsbF9mb3J3YXJkX3BhdGgmIzM0OywKICAgICYjMzQ7bmZ0X2Zsb3dfcm91dGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHNpZ25hdHVyZSBhbmQgaW1wbGVtZW50YXRpb24gb2YgYGRldl9maWxsX2ZvcndhcmRfcGF0aGAgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjaywgY2hhbmdpbmcgaG93IHRoZSBgbmV0X2RldmljZV9wYXRoX2N0eGAgaXMgcGFzc2VkIGFuZCBhY2Nlc3NlZC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBuZXRmaWx0ZXIgZmxvdyBvZmZsb2FkIHN1YnN5c3RlbSAoYG5mdF9mbG93X3JvdXRlYCAtXHUwMDNlIGBuZnRfZGV2X2ZvcndhcmRfcGF0aGAgLVx1MDAzZSBgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aGApLiBTaW5jZSBpdCBhbHRlcnMgY29yZSBuZXR3b3JraW5nIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBpdCBpcyB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MjQ6MjQuMTQwNTM1NDY4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyMzc0Nzk2ODU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0ZMT1dfVEFCTEVcIixcbiAgICBcIk5GVF9GTE9XX09GRkxPQURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkZXZfZmlsbF9mb3J3YXJkX3BhdGhcIixcbiAgICBcIm5mdF9mbG93X3JvdXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHNpZ25hdHVyZSBhbmQgaW1wbGVtZW50YXRpb24gb2YgYGRldl9maWxsX2ZvcndhcmRfcGF0aGAgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjaywgY2hhbmdpbmcgaG93IHRoZSBgbmV0X2RldmljZV9wYXRoX2N0eGAgaXMgcGFzc2VkIGFuZCBhY2Nlc3NlZC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBuZXRmaWx0ZXIgZmxvdyBvZmZsb2FkIHN1YnN5c3RlbSAoYG5mdF9mbG93X3JvdXRlYCAtXFx1MDAzZSBgbmZ0X2Rldl9mb3J3YXJkX3BhdGhgIC1cXHUwMDNlIGBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCkuIFNpbmNlIGl0IGFsdGVycyBjb3JlIG5ldHdvcmtpbmcgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGl0IGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI0OjI0LjE0MDU2MDc3OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4ODEwMTA2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGU5YjM0Zjk0M2I2M2MxN2VlMGNlNTNhYTNmZGEzMzMwZjQ0MGQyYTdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgNSAwOToyNDoyMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuY1xcbmluZGV4IDMzZGRmMGQwNzg1NTMuLjUzMTgzYTEzMjEwMDYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmNcXG5AQCAtMjgzLDE0ICsyODMsMTkgQEAgc3RhdGljIGludCBhaXJvaGFfcHBlX2dldF93ZG1hX2luZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmFkZHIsXFxuIFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgYWlyb2hhX3dkbWFfaW5mbyAqaW5mbylcXG4ge1xcbiBcXHRzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX3N0YWNrIHN0YWNrO1xcbitcXHRzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX2N0eCBjdHggPSB7XFxuK1xcdFxcdC5kZXYgPSBkZXYsXFxuK1xcdH07XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlX3BhdGggKnBhdGg7XFxuIFxcdGludCBlcnI7XFxuIFxcbiBcXHRpZiAoIWRldilcXG4gXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuIFxcbitcXHRldGhlcl9hZGRyX2NvcHkoY3R4LmRhZGRyLCBhZGRyKTtcXG4rXFxuIFxcdHJjdV9yZWFkX2xvY2soKTtcXG4tXFx0ZXJyID0gZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKGRldiwgYWRkciwgXFx1MDAyNnN0YWNrKTtcXG4rXFx0ZXJyID0gZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKFxcdTAwMjZjdHgsIFxcdTAwMjZzdGFjayk7XFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfcHBlX29mZmxvYWQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jXFxuaW5kZXggY2M4YzRlZjgwMzhmMy4uMWVjNDY3ODRmMDE4NyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfcHBlX29mZmxvYWQuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jXFxuQEAgLTkyLDYgKzkyLDkgQEAgc3RhdGljIGludFxcbiBtdGtfZmxvd19nZXRfd2RtYV9pbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICphZGRyLCBzdHJ1Y3QgbXRrX3dkbWFfaW5mbyAqaW5mbylcXG4ge1xcbiBcXHRzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX3N0YWNrIHN0YWNrO1xcbitcXHRzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX2N0eCBjdHggPSB7XFxuK1xcdFxcdC5kZXYgPSBkZXYsXFxuK1xcdH07XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlX3BhdGggKnBhdGg7XFxuIFxcdGludCBlcnI7XFxuIFxcbkBAIC0xMDEsOCArMTA0LDEwIEBAIG10a19mbG93X2dldF93ZG1hX2luZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmFkZHIsIHN0cnVjdCBtdGtfd2RtYV9pXFxuIFxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRUQpKVxcbiBcXHRcXHRyZXR1cm4gLTE7XFxuIFxcbitcXHRldGhlcl9hZGRyX2NvcHkoY3R4LmRhZGRyLCBhZGRyKTtcXG4rXFxuIFxcdHJjdV9yZWFkX2xvY2soKTtcXG4tXFx0ZXJyID0gZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKGRldiwgYWRkciwgXFx1MDAyNnN0YWNrKTtcXG4rXFx0ZXJyID0gZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKFxcdTAwMjZjdHgsIFxcdTAwMjZzdGFjayk7XFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oIGIvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaFxcbmluZGV4IDhkYjI1Yjc5NTczZTMuLmQyZjU0NTAxNmY3ZjYgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcXG5AQCAtMzQyNSw3ICszNDI1LDcgQEAgdm9pZCBkZXZfcmVtb3ZlX29mZmxvYWQoc3RydWN0IHBhY2tldF9vZmZsb2FkICpwbyk7XFxuIFxcbiBpbnQgZGV2X2dldF9pZmxpbmsoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxuIGludCBkZXZfZmlsbF9tZXRhZGF0YV9kc3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuLWludCBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmRhZGRyLFxcbitpbnQgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4ICpjdHgsXFxuIFxcdFxcdFxcdCAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayAqc3RhY2spO1xcbiBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2X2dldF9ieV9uYW1lKHN0cnVjdCBuZXQgKm5ldCwgY29uc3QgY2hhciAqbmFtZSk7XFxuIHN0cnVjdCBuZXRfZGV2aWNlICpkZXZfZ2V0X2J5X25hbWVfcmN1KHN0cnVjdCBuZXQgKm5ldCwgY29uc3QgY2hhciAqbmFtZSk7XFxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5jIGIvbmV0L2NvcmUvZGV2LmNcXG5pbmRleCBjMWMxYmUxYTY5NjJmLi5lMmM5ZmUzZjdhN2JhIDEwMDY0NFxcbi0tLSBhL25ldC9jb3JlL2Rldi5jXFxuKysrIGIvbmV0L2NvcmUvZGV2LmNcXG5AQCAtNzUwLDQxICs3NTAsMzcgQEAgc3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlX3BhdGggKmRldl9md2RfcGF0aChzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX3N0YWNrICpzdGFjaylcXG4gXFx0cmV0dXJuIFxcdTAwMjZzdGFjay1cXHUwMDNlcGF0aFtrXTtcXG4gfVxcbiBcXG4taW50IGRldl9maWxsX2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqZGFkZHIsXFxuK2ludCBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggKmN0eCxcXG4gXFx0XFx0XFx0ICBzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX3N0YWNrICpzdGFjaylcXG4ge1xcbiBcXHRjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqbGFzdF9kZXY7XFxuLVxcdHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4IGN0eCA9IHtcXG4tXFx0XFx0LmRldlxcdD0gZGV2LFxcbi1cXHR9O1xcbiBcXHRzdHJ1Y3QgbmV0X2RldmljZV9wYXRoICpwYXRoO1xcbiBcXHRpbnQgcmV0ID0gMDtcXG4gXFxuLVxcdG1lbWNweShjdHguZGFkZHIsIGRhZGRyLCBzaXplb2YoY3R4LmRhZGRyKSk7XFxuIFxcdHN0YWNrLVxcdTAwM2VudW1fcGF0aHMgPSAwO1xcbi1cXHR3aGlsZSAoY3R4LmRldiBcXHUwMDI2XFx1MDAyNiBjdHguZGV2LVxcdTAwM2VuZXRkZXZfb3BzLVxcdTAwM2VuZG9fZmlsbF9mb3J3YXJkX3BhdGgpIHtcXG4tXFx0XFx0bGFzdF9kZXYgPSBjdHguZGV2O1xcbitcXHR3aGlsZSAoY3R4LVxcdTAwM2VkZXYgXFx1MDAyNlxcdTAwMjYgY3R4LVxcdTAwM2VkZXYtXFx1MDAzZW5ldGRldl9vcHMtXFx1MDAzZW5kb19maWxsX2ZvcndhcmRfcGF0aCkge1xcbitcXHRcXHRsYXN0X2RldiA9IGN0eC1cXHUwMDNlZGV2O1xcbiBcXHRcXHRwYXRoID0gZGV2X2Z3ZF9wYXRoKHN0YWNrKTtcXG4gXFx0XFx0aWYgKCFwYXRoKVxcbiBcXHRcXHRcXHRyZXR1cm4gLTE7XFxuIFxcbiBcXHRcXHRtZW1zZXQocGF0aCwgMCwgc2l6ZW9mKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGgpKTtcXG4tXFx0XFx0cmV0ID0gY3R4LmRldi1cXHUwMDNlbmV0ZGV2X29wcy1cXHUwMDNlbmRvX2ZpbGxfZm9yd2FyZF9wYXRoKFxcdTAwMjZjdHgsIHBhdGgpO1xcbitcXHRcXHRyZXQgPSBjdHgtXFx1MDAzZWRldi1cXHUwMDNlbmV0ZGV2X29wcy1cXHUwMDNlbmRvX2ZpbGxfZm9yd2FyZF9wYXRoKGN0eCwgcGF0aCk7XFxuIFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiBcXHRcXHRcXHRyZXR1cm4gLTE7XFxuIFxcbi1cXHRcXHRpZiAoV0FSTl9PTl9PTkNFKGxhc3RfZGV2ID09IGN0eC5kZXYpKVxcbitcXHRcXHRpZiAoV0FSTl9PTl9PTkNFKGxhc3RfZGV2ID09IGN0eC1cXHUwMDNlZGV2KSlcXG4gXFx0XFx0XFx0cmV0dXJuIC0xO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoIWN0eC5kZXYpXFxuK1xcdGlmICghY3R4LVxcdTAwM2VkZXYpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbiBcXHRwYXRoID0gZGV2X2Z3ZF9wYXRoKHN0YWNrKTtcXG4gXFx0aWYgKCFwYXRoKVxcbiBcXHRcXHRyZXR1cm4gLTE7XFxuIFxcdHBhdGgtXFx1MDAzZXR5cGUgPSBERVZfUEFUSF9FVEhFUk5FVDtcXG4tXFx0cGF0aC1cXHUwMDNlZGV2ID0gY3R4LmRldjtcXG4rXFx0cGF0aC1cXHUwMDNlZGV2ID0gY3R4LVxcdTAwM2VkZXY7XFxuIFxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jXFxuaW5kZXggOThjMDNiNDg3ZjUyMS4uYjlkZjc0NTNmNzYyMCAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguY1xcbkBAIC01MCw2ICs1MCw5IEBAIHN0YXRpYyBpbnQgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmZfZmxvd19yb3V0ZSAqcm91dGUsXFxuIHtcXG4gXFx0Y29uc3Qgdm9pZCAqZGFkZHIgPSBcXHUwMDI2Y3QtXFx1MDAzZXR1cGxlaGFzaFshZGlyXS50dXBsZS5zcmMudTM7XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBkc3RfY2FjaGUtXFx1MDAzZWRldjtcXG4rXFx0c3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggY3R4ID0ge1xcbitcXHRcXHQuZGV2ID0gZGV2LFxcbitcXHR9O1xcbiBcXHRzdHJ1Y3QgbmVpZ2hib3VyICpuO1xcbiBcXHR1OCBudWRfc3RhdGU7XFxuIFxcbkBAIC03Miw3ICs3NSw5IEBAIHN0YXRpYyBpbnQgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmZfZmxvd19yb3V0ZSAqcm91dGUsXFxuIFxcdFxcdHJldHVybiAtMTtcXG4gXFxuIG91dDpcXG4tXFx0cmV0dXJuIGRldl9maWxsX2ZvcndhcmRfcGF0aChkZXYsIGhhLCBzdGFjayk7XFxuK1xcdGV0aGVyX2FkZHJfY29weShjdHguZGFkZHIsIGhhKTtcXG4rXFxuK1xcdHJldHVybiBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoXFx1MDAyNmN0eCwgc3RhY2spO1xcbiB9XFxuIFxcbiBzdHJ1Y3QgbmZ0X2ZvcndhcmRfaW5mbyB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI0OjI1LjYzMTE5MzE2NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjExMDg4NDEyODc3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9GTE9XX1RBQkxFXCIsXG4gICAgXCJORlRfRkxPV19PRkZMT0FEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGV2X2ZpbGxfZm9yd2FyZF9wYXRoXCIsXG4gICAgXCJuZnRfZmxvd19yb3V0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzaWduYXR1cmUgYW5kIGltcGxlbWVudGF0aW9uIG9mIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2ssIGNoYW5naW5nIGhvdyB0aGUgYG5ldF9kZXZpY2VfcGF0aF9jdHhgIGlzIHBhc3NlZCBhbmQgYWNjZXNzZWQuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSB0aGUgbmV0ZmlsdGVyIGZsb3cgb2ZmbG9hZCBzdWJzeXN0ZW0gKGBuZnRfZmxvd19yb3V0ZWAgLVxcdTAwM2UgYG5mdF9kZXZfZm9yd2FyZF9wYXRoYCAtXFx1MDAzZSBgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aGApLiBTaW5jZSBpdCBhbHRlcnMgY29yZSBuZXR3b3JraW5nIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBpdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlOWIzNGY5NDNiNjNjMTdlZTBjZTUzYWEzZmRhMzMzMGY0NDBkMmE3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgNSAwOToyNDoyMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jXG5pbmRleCAzM2RkZjBkMDc4NTUzLi41MzE4M2ExMzIxMDA2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuY1xuQEAgLTI4MywxNCArMjgzLDE5IEBAIHN0YXRpYyBpbnQgYWlyb2hhX3BwZV9nZXRfd2RtYV9pbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICphZGRyLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBhaXJvaGFfd2RtYV9pbmZvICppbmZvKVxuIHtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfc3RhY2sgc3RhY2s7XG4rXHRzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX2N0eCBjdHggPSB7XG4rXHRcdC5kZXYgPSBkZXYsXG4rXHR9O1xuIFx0c3RydWN0IG5ldF9kZXZpY2VfcGF0aCAqcGF0aDtcbiBcdGludCBlcnI7XG4gXG4gXHRpZiAoIWRldilcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXG4rXHRldGhlcl9hZGRyX2NvcHkoY3R4LmRhZGRyLCBhZGRyKTtcbitcbiBcdHJjdV9yZWFkX2xvY2soKTtcbi1cdGVyciA9IGRldl9maWxsX2ZvcndhcmRfcGF0aChkZXYsIGFkZHIsIFx1MDAyNnN0YWNrKTtcbitcdGVyciA9IGRldl9maWxsX2ZvcndhcmRfcGF0aChcdTAwMjZjdHgsIFx1MDAyNnN0YWNrKTtcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfcHBlX29mZmxvYWQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jXG5pbmRleCBjYzhjNGVmODAzOGYzLi4xZWM0Njc4NGYwMTg3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jXG5AQCAtOTIsNiArOTIsOSBAQCBzdGF0aWMgaW50XG4gbXRrX2Zsb3dfZ2V0X3dkbWFfaW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqYWRkciwgc3RydWN0IG10a193ZG1hX2luZm8gKmluZm8pXG4ge1xuIFx0c3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayBzdGFjaztcbitcdHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4IGN0eCA9IHtcbitcdFx0LmRldiA9IGRldixcbitcdH07XG4gXHRzdHJ1Y3QgbmV0X2RldmljZV9wYXRoICpwYXRoO1xuIFx0aW50IGVycjtcbiBcbkBAIC0xMDEsOCArMTA0LDEwIEBAIG10a19mbG93X2dldF93ZG1hX2luZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmFkZHIsIHN0cnVjdCBtdGtfd2RtYV9pXG4gXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKSlcbiBcdFx0cmV0dXJuIC0xO1xuIFxuK1x0ZXRoZXJfYWRkcl9jb3B5KGN0eC5kYWRkciwgYWRkcik7XG4rXG4gXHRyY3VfcmVhZF9sb2NrKCk7XG4tXHRlcnIgPSBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoZGV2LCBhZGRyLCBcdTAwMjZzdGFjayk7XG4rXHRlcnIgPSBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoXHUwMDI2Y3R4LCBcdTAwMjZzdGFjayk7XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcbmluZGV4IDhkYjI1Yjc5NTczZTMuLmQyZjU0NTAxNmY3ZjYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXG5AQCAtMzQyNSw3ICszNDI1LDcgQEAgdm9pZCBkZXZfcmVtb3ZlX29mZmxvYWQoc3RydWN0IHBhY2tldF9vZmZsb2FkICpwbyk7XG4gXG4gaW50IGRldl9nZXRfaWZsaW5rKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xuIGludCBkZXZfZmlsbF9tZXRhZGF0YV9kc3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG4taW50IGRldl9maWxsX2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqZGFkZHIsXG4raW50IGRldl9maWxsX2ZvcndhcmRfcGF0aChzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX2N0eCAqY3R4LFxuIFx0XHRcdCAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayAqc3RhY2spO1xuIHN0cnVjdCBuZXRfZGV2aWNlICpkZXZfZ2V0X2J5X25hbWUoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBjaGFyICpuYW1lKTtcbiBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2X2dldF9ieV9uYW1lX3JjdShzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IGNoYXIgKm5hbWUpO1xuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5jIGIvbmV0L2NvcmUvZGV2LmNcbmluZGV4IGMxYzFiZTFhNjk2MmYuLmUyYzlmZTNmN2E3YmEgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9kZXYuY1xuKysrIGIvbmV0L2NvcmUvZGV2LmNcbkBAIC03NTAsNDEgKzc1MCwzNyBAQCBzdGF0aWMgc3RydWN0IG5ldF9kZXZpY2VfcGF0aCAqZGV2X2Z3ZF9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfc3RhY2sgKnN0YWNrKVxuIFx0cmV0dXJuIFx1MDAyNnN0YWNrLVx1MDAzZXBhdGhba107XG4gfVxuIFxuLWludCBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmRhZGRyLFxuK2ludCBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggKmN0eCxcbiBcdFx0XHQgIHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfc3RhY2sgKnN0YWNrKVxuIHtcbiBcdGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpsYXN0X2Rldjtcbi1cdHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4IGN0eCA9IHtcbi1cdFx0LmRldlx0PSBkZXYsXG4tXHR9O1xuIFx0c3RydWN0IG5ldF9kZXZpY2VfcGF0aCAqcGF0aDtcbiBcdGludCByZXQgPSAwO1xuIFxuLVx0bWVtY3B5KGN0eC5kYWRkciwgZGFkZHIsIHNpemVvZihjdHguZGFkZHIpKTtcbiBcdHN0YWNrLVx1MDAzZW51bV9wYXRocyA9IDA7XG4tXHR3aGlsZSAoY3R4LmRldiBcdTAwMjZcdTAwMjYgY3R4LmRldi1cdTAwM2VuZXRkZXZfb3BzLVx1MDAzZW5kb19maWxsX2ZvcndhcmRfcGF0aCkge1xuLVx0XHRsYXN0X2RldiA9IGN0eC5kZXY7XG4rXHR3aGlsZSAoY3R4LVx1MDAzZWRldiBcdTAwMjZcdTAwMjYgY3R4LVx1MDAzZWRldi1cdTAwM2VuZXRkZXZfb3BzLVx1MDAzZW5kb19maWxsX2ZvcndhcmRfcGF0aCkge1xuK1x0XHRsYXN0X2RldiA9IGN0eC1cdTAwM2VkZXY7XG4gXHRcdHBhdGggPSBkZXZfZndkX3BhdGgoc3RhY2spO1xuIFx0XHRpZiAoIXBhdGgpXG4gXHRcdFx0cmV0dXJuIC0xO1xuIFxuIFx0XHRtZW1zZXQocGF0aCwgMCwgc2l6ZW9mKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGgpKTtcbi1cdFx0cmV0ID0gY3R4LmRldi1cdTAwM2VuZXRkZXZfb3BzLVx1MDAzZW5kb19maWxsX2ZvcndhcmRfcGF0aChcdTAwMjZjdHgsIHBhdGgpO1xuK1x0XHRyZXQgPSBjdHgtXHUwMDNlZGV2LVx1MDAzZW5ldGRldl9vcHMtXHUwMDNlbmRvX2ZpbGxfZm9yd2FyZF9wYXRoKGN0eCwgcGF0aCk7XG4gXHRcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdFx0cmV0dXJuIC0xO1xuIFxuLVx0XHRpZiAoV0FSTl9PTl9PTkNFKGxhc3RfZGV2ID09IGN0eC5kZXYpKVxuK1x0XHRpZiAoV0FSTl9PTl9PTkNFKGxhc3RfZGV2ID09IGN0eC1cdTAwM2VkZXYpKVxuIFx0XHRcdHJldHVybiAtMTtcbiBcdH1cbiBcbi1cdGlmICghY3R4LmRldilcbitcdGlmICghY3R4LVx1MDAzZWRldilcbiBcdFx0cmV0dXJuIHJldDtcbiBcbiBcdHBhdGggPSBkZXZfZndkX3BhdGgoc3RhY2spO1xuIFx0aWYgKCFwYXRoKVxuIFx0XHRyZXR1cm4gLTE7XG4gXHRwYXRoLVx1MDAzZXR5cGUgPSBERVZfUEFUSF9FVEhFUk5FVDtcbi1cdHBhdGgtXHUwMDNlZGV2ID0gY3R4LmRldjtcbitcdHBhdGgtXHUwMDNlZGV2ID0gY3R4LVx1MDAzZWRldjtcbiBcbiBcdHJldHVybiByZXQ7XG4gfVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jXG5pbmRleCA5OGMwM2I0ODdmNTIxLi5iOWRmNzQ1M2Y3NjIwIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguY1xuQEAgLTUwLDYgKzUwLDkgQEAgc3RhdGljIGludCBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKGNvbnN0IHN0cnVjdCBuZl9mbG93X3JvdXRlICpyb3V0ZSxcbiB7XG4gXHRjb25zdCB2b2lkICpkYWRkciA9IFx1MDAyNmN0LVx1MDAzZXR1cGxlaGFzaFshZGlyXS50dXBsZS5zcmMudTM7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gZHN0X2NhY2hlLVx1MDAzZWRldjtcbitcdHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4IGN0eCA9IHtcbitcdFx0LmRldiA9IGRldixcbitcdH07XG4gXHRzdHJ1Y3QgbmVpZ2hib3VyICpuO1xuIFx0dTggbnVkX3N0YXRlO1xuIFxuQEAgLTcyLDcgKzc1LDkgQEAgc3RhdGljIGludCBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKGNvbnN0IHN0cnVjdCBuZl9mbG93X3JvdXRlICpyb3V0ZSxcbiBcdFx0cmV0dXJuIC0xO1xuIFxuIG91dDpcbi1cdHJldHVybiBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoZGV2LCBoYSwgc3RhY2spO1xuK1x0ZXRoZXJfYWRkcl9jb3B5KGN0eC5kYWRkciwgaGEpO1xuK1xuK1x0cmV0dXJuIGRldl9maWxsX2ZvcndhcmRfcGF0aChcdTAwMjZjdHgsIHN0YWNrKTtcbiB9XG4gXG4gc3RydWN0IG5mdF9mb3J3YXJkX2luZm8ge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MjQ6MjUuNjMxMTk1MjU0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA3NjE1OTYyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWZhY3RvcmluZyBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCAtIFdvcnRoeSBGdXp6aW5nIFRhcmdldD8qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGNoYW5naW5nIHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgb2YgYGRldl9maWxsX2ZvcndhcmRfcGF0aGAuIFByZXZpb3VzbHksIGl0IHdhcyB0YWtpbmcgdGhlIGRldmljZSBhbmQgZGVzdGluYXRpb24gYWRkcmVzcyBkaXJlY3RseTogYChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqZGFkZHIsIHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfc3RhY2sgKnN0YWNrKWAuIE5vdywgaXQncyBiZWVuIHVwZGF0ZWQgdG8gdGFrZSBhIGNvbnRleHQgc3RydWN0OiBgKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4ICpjdHgsIHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfc3RhY2sgKnN0YWNrKWAuIFRoZSBjYWxsZXJzIGFyZSBhbGwgdXBkYXRlZCB0byBpbml0aWFsaXplIHRoaXMgYG5ldF9kZXZpY2VfcGF0aF9jdHhgIGFuZCBwYXNzIGl0IGFsb25nLlxuXG5UaGUgYWZmZWN0ZWQgY2FsbGVycyBJIHNlZSBhcmUgYGFpcm9oYV9wcGVfZ2V0X3dkbWFfaW5mb2AgaW4gdGhlIEFpcm9oYSBFdGhlcm5ldCBkcml2ZXIsIGBtdGtfZmxvd19nZXRfd2RtYV9pbmZvYCBpbiB0aGUgTWVkaWFUZWsgZHJpdmVyLCBhbmQgYG5mdF9kZXZfZmlsbF9mb3J3YXJkX3BhdGhgLCB3aGljaCBzZWVtcyB0byBiZSBjb25uZWN0ZWQgdG8gbmV0ZmlsdGVyIGZsb3cgdGFibGUgb2ZmbG9hZC4gVGhpcyBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBmdW5jdGlvbiBpdHNlbGYgbGl2ZXMgaW4gYG5ldC9jb3JlL2Rldi5jYC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBldmVuIHdvcnRoIGZ1enppbmcuIEl0J3MgcmVhbGx5IGp1c3QgYSByZWZhY3RvcmluZywgcmlnaHQ/IFRoZSBjb3JlIGxvZ2ljIG9mIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgIHNlZW1zIHRvIGhhdmUgb25seSBiZWVuICpzbGlnaHRseSogYWRqdXN0ZWQgdG8gdXNlIGBjdHgtXHUwMDNlZGV2YCBpbnN0ZWFkIG9mIHRoZSBvcmlnaW5hbC4gQWxsIHRoZSBjYWxsZXJzIG5vdyBwYXNzIHRoaXMgbmV3bHkgZGVmaW5lZCBhbmQgaW5pdGlhbGl6ZWQgYGN0eGAgc3RydWN0LlxuXG5CdXQsIGlzIGl0IHJlYWNoYWJsZT8gWWVzLCBhbmQgdGhhdCdzIHRoZSBrZXkuIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgIGlzIHJlYWNoYWJsZSB2aWEgYG5mdF9kZXZfZmlsbF9mb3J3YXJkX3BhdGhgLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBuZXRmaWx0ZXIgZmxvdyB0YWJsZSBvZmZsb2FkLiBUaGF0IG1ha2VzIHRoaXMgYSB2aWFibGUgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gZHJpbGwgZG93biBhIGJpdCBhbmQgdHJhY2UgaG93IGBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBpcyBjYWxsZWQuIEl0J3MgaW4gdGhlIGBuZl9mbG93X3RhYmxlX3BhdGguY2AgZmlsZSwgc28gdGhlIG5leHQgbGV2ZWwgb2YgYW5hbHlzaXMgd2lsbCBzdGFydCB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg1NCwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI0OjMyLjcwNzM1NzU3MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjg4MzcyODIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mdF9kZXZfZmlsbF9mb3J3YXJkX3BhdGhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYz0zNj1zdGF0aWMgYm9vbCBuZnRfaXNfdmFsaWRfZXRoZXJfZGV2aWNlKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTQ0LVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM6NDU6c3RhdGljIGludCBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKGNvbnN0IHN0cnVjdCBuZl9mbG93X3JvdXRlICpyb3V0ZSxcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTQ2LVxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IGRzdF9lbnRyeSAqZHN0X2NhY2hlLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYz0yNTE9c3RhdGljIGludCBuZnRfZGV2X2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMjYyLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM6MjYzOlxcdGlmIChuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKHJvdXRlLCBkc3QsIGN0LCBkaXIsIGhhLCBcXHUwMDI2c3RhY2spIFxcdTAwM2MgMCB8fFxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMjY0LVxcdCAgICBuZnRfZGV2X3BhdGhfaW5mbyhcXHUwMDI2c3RhY2ssIFxcdTAwMjZpbmZvLCBoYSwgXFx1MDAyNmZ0LVxcdTAwM2VkYXRhKSBcXHUwMDNjIDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI0OjM0Ljk5NTczNzAxMloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5OTQ2NDQ4NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBuZnRfZGV2X2ZvcndhcmRfcGF0aCBDYWxsIENoYWluKipcblxuUmlnaHQsIHNvIGBuZnRfZGV2X2ZvcndhcmRfcGF0aGAgaXMgYmVpbmcgaW52b2tlZCBmcm9tIHdpdGhpbiBgbmZfZmxvd190YWJsZV9wYXRoLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJPa2F5LCBsZXQncyB0cmFjZSB0aGlzIGNhbGwgcGF0aCBhbmQgdW5kZXJzdGFuZCBpdHMgY29udGV4dC5cIiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSBhbGwgdGhlIHBsYWNlcyB3aGVyZSBgbmZ0X2Rldl9mb3J3YXJkX3BhdGhgIGlzIGFjdHVhbGx5IGJlaW5nICpjYWxsZWQqIGZyb20gd2l0aGluIHRoZSBrZXJuZWwuIFVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgY2FsbCBncmFwaCBpcyBjcnVjaWFsIHRvIGdyYXNwIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZSBvZiB0aGUgTmV0ZmlsdGVyIGZsb3cgdGFibGUgYW5kLCBzcGVjaWZpY2FsbHksIGhvdyBkZXZpY2UtYmFzZWQgZm9yd2FyZGluZyBkZWNpc2lvbnMgYXJlIGJlaW5nIG1hZGUgd2l0aGluIHRoZSBuZnRhYmxlcyBmcmFtZXdvcmsuIFRoaXMgaW5pdGlhbCBzdGVwIGlzIGEgcHJlcmVxdWlzaXRlIGZvciBhbnkgZGVlcGVyIGFuYWx5c2lzIEknbSBwbGFubmluZyB0byBwZXJmb3JtLCBzdWNoIGFzIGRlYnVnZ2luZyBhIGZvcndhcmRpbmcgaXNzdWUgb3IgdHJ5aW5nIHRvIG9wdGltaXplIHRoZSB0YWJsZSBwZXJmb3JtYW5jZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk5NSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI0OjQwLjk5MDM4Mzg3NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzE4Mzg2NzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mdF9kZXZfZm9yd2FyZF9wYXRoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9MjEzPXN0YXRpYyBpbnQgbmZ0X2Zsb3dfdHVubmVsX3VwZGF0ZV9yb3V0ZShjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMjUwLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM6MjUxOnN0YXRpYyBpbnQgbmZ0X2Rldl9mb3J3YXJkX3BhdGgoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0yNTItXFx0XFx0XFx0XFx0c3RydWN0IG5mX2Zsb3dfcm91dGUgKnJvdXRlLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYz0zMDA9aW50IG5mdF9mbG93X3JvdXRlKGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0LCBjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3QsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTM0Mi1cXHRpZiAocm91dGUtXFx1MDAzZXR1cGxlW2Rpcl0ueG1pdF90eXBlXFx0PT0gRkxPV19PRkZMT0FEX1hNSVRfTkVJR0ggXFx1MDAyNlxcdTAwMjZcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjM0MzpcXHQgICAgbmZ0X2Rldl9mb3J3YXJkX3BhdGgocGt0LCByb3V0ZSwgY3QsIGRpciwgZnQpIFxcdTAwM2MgMClcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTM0NC1cXHRcXHRnb3RvIGVycl9kc3RfcmVsZWFzZTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMzQ2LVxcdGlmIChyb3V0ZS1cXHUwMDNldHVwbGVbIWRpcl0ueG1pdF90eXBlID09IEZMT1dfT0ZGTE9BRF9YTUlUX05FSUdIIFxcdTAwMjZcXHUwMDI2XFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYzozNDc6XFx0ICAgIG5mdF9kZXZfZm9yd2FyZF9wYXRoKHBrdCwgcm91dGUsIGN0LCAhZGlyLCBmdCkgXFx1MDAzYyAwKVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMzQ4LVxcdFxcdGdvdG8gZXJyX2RzdF9yZWxlYXNlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToyNDo0My4zMDg3NzUyMDNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzY2Njc0MjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgcXVlc3Rpb246XG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIGBuZnRfZmxvd19yb3V0ZWAgQ2FsbCoqXG5cbk9rYXksIHNvIHNvbWVvbmUgd2FudHMgdG8ga25vdyB3aGVyZSB0aGUgYG5mdF9mbG93X3JvdXRlYCBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbS4gVGhhdCdzIGEgZnVuZGFtZW50YWwgZGVidWdnaW5nIG9yIGNvZGUgYW5hbHlzaXMgcXVlc3Rpb24sIGlzbid0IGl0PyBMZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8ga25vdyB0aGUgY29udGV4dC4gSXMgdGhpcyBpbiBhIHNwZWNpZmljIGNvZGViYXNlPyBJcyB0aGlzIGEgcmVzZWFyY2ggcHJvamVjdCwgb3IgYSBwcm9kdWN0aW9uIGVudmlyb25tZW50PyBUaGF0IGxldmVsIG9mIGRldGFpbCBkcmFzdGljYWxseSBjaGFuZ2VzIG15IGFwcHJvYWNoLlxuXG5QcmVzdW1pbmcgSSBkb24ndCBoYXZlIHRoYXQgaW5mb3JtYXRpb24sIEknZCBpbW1lZGlhdGVseSBqdW1wIHRvIHNvbWUgdGVjaG5pcXVlcy5cblxuKiAgICoqU3RhdGljIEFuYWx5c2lzOioqIEknZCByZWFjaCBmb3IgdG9vbHMgbGlrZSBncmVwLCBvciBhIG1vcmUgc29waGlzdGljYXRlZCBjb2RlIHNlYXJjaCB0b29sIGlmIGl0J3MgYSBsYXJnZXIgcHJvamVjdCBhbmQgSSBrbm93IHRoZSBsYW5ndWFnZS4gSSdkIGJlIGxvb2tpbmcgZm9yIGFsbCBvY2N1cnJlbmNlcyBvZiBcIm5mdFxcX2Zsb3dcXF9yb3V0ZVwiIChjYXNlLXNlbnNpdGl2ZSBhcyBuZWVkZWQpIHRvIGZpbmQgcG90ZW50aWFsIGNhbGwgc2l0ZXMuIEFyZSB0aGVyZSBzaW1pbGFyIGZ1bmN0aW9ucyB0aGF0IGFsc28gY2FsbCBpdD9cbiogICAqKkR5bmFtaWMgQW5hbHlzaXM6KiogSWYgdGhlIGNvZGUgaXMgcnVubmluZywgYSBkZWJ1Z2dlciBvciBwcm9maWxlciBiZWNvbWVzIG15IGZyaWVuZC4gSSdkIHNldCBhIGJyZWFrcG9pbnQgYXQgdGhlIGVudHJ5IG9mIGBuZnRfZmxvd19yb3V0ZWAgYW5kIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBiYWNrIHRvIHNlZSBleGFjdGx5IHdoaWNoIGZ1bmN0aW9ucyBhcmUgY2FsbGluZyBpdC4gVGhpcyBnaXZlcyBtZSBhIHJlYWwtdGltZSwgY29uY3JldGUgdmlldy5cbiogICAqKkNvZGUgRG9jdW1lbnRhdGlvbjoqKiBCZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBJIHdvdWxkIGNoZWNrIGlmIGFueSBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZS4gSGFzIHRoaXMgZnVuY3Rpb24gYmVlbiBkZXNjcmliZWQsIGFsb25nIHdpdGggaXRzIGZ1bmN0aW9uIG9yIHB1cnBvc2U/IFNvbWV0aW1lcywgY29tbWVudHMgYW5kIGRvY3VtZW50YXRpb24gaG9sZCB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdXNhZ2UgcGF0dGVybnMuXG4qICAgKipEZXBlbmRlbmN5IEluamVjdGlvbi9GcmFtZXdvcmtzOioqIElmIHRoaXMgZnVuY3Rpb24gaXMgcGFydCBvZiBhIGxhcmdlciBmcmFtZXdvcmsgb3IgdXNlcyBkZXBlbmRlbmN5IGluamVjdGlvbiwgdGhhdCBpbXBhY3RzIHRoZSBzZWFyY2guIEkgbWlnaHQgbmVlZCB0byBjb25zaWRlciBob3cgdGhlIGZyYW1ld29yayBoYW5kbGVzIGZ1bmN0aW9uIGNhbGxzIG9yIHdoYXQgY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgcHJlc2VudC5cbiogICAqKlJldmVyc2UgRW5naW5lZXJpbmcgKElmIE5lY2Vzc2FyeSk6KiogSWYgdGhlIGNvZGUgaXMgb2JmdXNjYXRlZCBvciBpZiB0aGVyZSdzIG5vIHNvdXJjZSBjb2RlIGF2YWlsYWJsZSwgSSBtaWdodCBuZWVkIHRvIHJldmVyc2UgZW5naW5lZXIuIFRoaXMgaXMgbW9yZSB0aW1lIGNvbnN1bWluZywgYnV0IHRoZSBpZGVhIHdvdWxkIGJlIHRvIGFuYWx5emUgdGhlIGNvbXBpbGVkIGNvZGUgKGRpc2Fzc2VtYmx5LCBldGMuKSB0byBmaWd1cmUgb3V0IHRoZSBjYWxsaW5nIGhpZXJhcmNoeS5cblxuVGhlIGtleSBpcyBtZXRob2RpY2FsIGVsaW1pbmF0aW9uLiBTdGFydCB3aXRoIHRoZSBzaW1wbGVzdCwgbW9zdCBkaXJlY3QgbWV0aG9kcyAoc3RhdGljIGFuYWx5c2lzKSBhbmQgZ3JhZHVhbGx5IG1vdmUgdG8gbW9yZSBpbnZvbHZlZCB0ZWNobmlxdWVzIGlmIG5lZWRlZC4gVGhlIGdvYWwgaXMgdG8gZXN0YWJsaXNoIHRoZSBjYWxsIHN0YWNrLCBzbyBJIGNhbiB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGFuZCBpbnRlbnQgb2YgdGhlIGBuZnRfZmxvd19yb3V0ZWAgY2FsbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY3NSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI0OjUwLjA3NTQ1MTYxM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTg4NTMxMTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mdF9mbG93X3JvdXRlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlLmg9MjQ3PXN0cnVjdCBuZnRfcGt0aW5mbztcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZS5oOjI0ODppbnQgbmZ0X2Zsb3dfcm91dGUoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsIGNvbnN0IHN0cnVjdCBuZl9jb25uICpjdCxcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZS5oLTI0OS1cXHRcXHQgICBzdHJ1Y3QgbmZfZmxvd19yb3V0ZSAqcm91dGUsIGVudW0gaXBfY29ubnRyYWNrX2RpciBkaXIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jPTI1MT1zdGF0aWMgaW50IG5mdF9kZXZfZm9yd2FyZF9wYXRoKGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0yOTktXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYzozMDA6aW50IG5mdF9mbG93X3JvdXRlKGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0LCBjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3QsXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0zMDEtXFx0XFx0ICAgc3RydWN0IG5mX2Zsb3dfcm91dGUgKnJvdXRlLCBlbnVtIGlwX2Nvbm50cmFja19kaXIgZGlyLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0zNTYtfVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM6MzU3OkVYUE9SVF9TWU1CT0xfR1BMKG5mdF9mbG93X3JvdXRlKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jPTUwPXN0YXRpYyB2b2lkIG5mdF9mbG93X29mZmxvYWRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9mbG93X29mZmxvYWQuYy0xMDgtXFx0ZGlyID0gQ1RJTkZPMkRJUihjdGluZm8pO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jOjEwOTpcXHRpZiAobmZ0X2Zsb3dfcm91dGUocGt0LCBjdCwgXFx1MDAyNnJvdXRlLCBkaXIsIHByaXYtXFx1MDAzZWZsb3d0YWJsZSkgXFx1MDAzYyAwKVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jLTExMC1cXHRcXHRnb3RvIGVycl9mbG93X3JvdXRlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToyNDo1Mi4yNjM5ODc0ODFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjY4NDAyNDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqRXZhbHVhdGluZyBuZnRfZmxvd19vZmZsb2FkJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5SaWdodCwgc28gYG5mdF9mbG93X29mZmxvYWRfZXZhbGAgaXMgdGhlIGV2YWx1YXRpb24gZnVuY3Rpb24gZm9yIHRoZSBgZmxvd19vZmZsb2FkYCBleHByZXNzaW9uIGluIG5mdGFibGVzLiBHaXZlbiBpdHMgcm9sZSBpbiBzdWNoIGEga2V5IGFyZWEsIGl0J3MgcHJldHR5IGNsZWFyIHRoaXMgaXMgYSAqcHJpbWUqIHRhcmdldCBmb3IgZnV6emluZy4gRGVmaW5pdGVseSByZWFjaGFibGUsIGFuZCBkZWZpbml0ZWx5IHdvcnRoIGRpZ2dpbmcgaW50by5cblxuTm93LCB3aGljaCBmdW5jdGlvbnMgYXJlIG1vZGlmaWVkPyBBaGEsIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgIGFuZCBgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aGAuIFRoZXNlIG5lZWQgY2FyZWZ1bCBzY3J1dGlueS4gTGV0J3Mgc3RhcnQgd2l0aCBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYC4gV2UnbGwgc2VlIHdoYXQga2luZCBvZiBpbnB1dHMgaXQgaGFuZGxlcywgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBicm9hZGVyIGNvbnRleHQsIGFuZCBsb29rIGZvciBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjY2MCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI0OjU1LjkzMjM5OTkzNloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE4NzIyMjY2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZfZmlsbF9mb3J3YXJkX3BhdGhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYz0yODI9c3RhdGljIGludCBhaXJvaGFfcHBlX2dldF93ZG1hX2luZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmFkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTI5Ny1cXHRyY3VfcmVhZF9sb2NrKCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzoyOTg6XFx0ZXJyID0gZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKFxcdTAwMjZjdHgsIFxcdTAwMjZzdGFjayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0yOTktXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfcHBlX29mZmxvYWQuYz05Mj1tdGtfZmxvd19nZXRfd2RtYV9pbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICphZGRyLCBzdHJ1Y3QgbXRrX3dkbWFfaW5mbyAqaW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jLTEwOS1cXHRyY3VfcmVhZF9sb2NrKCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmM6MTEwOlxcdGVyciA9IGRldl9maWxsX2ZvcndhcmRfcGF0aChcXHUwMDI2Y3R4LCBcXHUwMDI2c3RhY2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jLTExMS1cXHRyY3VfcmVhZF91bmxvY2soKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MzQyNz1pbnQgZGV2X2ZpbGxfbWV0YWRhdGFfZHN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpO1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MzQyODppbnQgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4ICpjdHgsXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0zNDI5LVxcdFxcdFxcdCAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayAqc3RhY2spO1xcbi0tXFxubmV0LzgwMjFxL3ZsYW5fZGV2LmM9NzU2PXN0YXRpYyBpbnQgdmxhbl9kZXZfZ2V0X2lmbGluayhjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0LzgwMjFxL3ZsYW5fZGV2LmMtNzYyLVxcbm5ldC84MDIxcS92bGFuX2Rldi5jOjc2MzpzdGF0aWMgaW50IHZsYW5fZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4ICpjdHgsXFxubmV0LzgwMjFxL3ZsYW5fZGV2LmMtNzY0LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlX3BhdGggKnBhdGgpXFxuLS1cXG5uZXQvODAyMXEvdmxhbl9kZXYuYz0xMDc4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgdmxhbl9uZXRkZXZfb3BzID0ge1xcbi0tXFxubmV0LzgwMjFxL3ZsYW5fZGV2LmMtMTEwOS1cXHQubmRvX2dldF9pZmxpbmtcXHRcXHQ9IHZsYW5fZGV2X2dldF9pZmxpbmssXFxubmV0LzgwMjFxL3ZsYW5fZGV2LmM6MTExMDpcXHQubmRvX2ZpbGxfZm9yd2FyZF9wYXRoXFx0PSB2bGFuX2Rldl9maWxsX2ZvcndhcmRfcGF0aCxcXG5uZXQvODAyMXEvdmxhbl9kZXYuYy0xMTExLVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSB2bGFuX2h3dHN0YW1wX2dldCxcXG4tLVxcbm5ldC9jb3JlL2Rldi5jPTc0Mz1zdGF0aWMgc3RydWN0IG5ldF9kZXZpY2VfcGF0aCAqZGV2X2Z3ZF9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfc3RhY2sgKnN0YWNrKVxcbi0tXFxubmV0L2NvcmUvZGV2LmMtNzUyLVxcbm5ldC9jb3JlL2Rldi5jOjc1MzppbnQgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4ICpjdHgsXFxubmV0L2NvcmUvZGV2LmMtNzU0LVxcdFxcdFxcdCAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayAqc3RhY2spXFxuLS1cXG5uZXQvY29yZS9kZXYuYy03ODYtfVxcbm5ldC9jb3JlL2Rldi5jOjc4NzpFWFBPUlRfU1lNQk9MX0dQTChkZXZfZmlsbF9mb3J3YXJkX3BhdGgpO1xcbm5ldC9jb3JlL2Rldi5jLTc4OC1cXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTk3OT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGllZWU4MDIxMV9tb25pdG9yaWZfb3BzID0ge1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtOTg4LVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjk4OTpzdGF0aWMgaW50IGllZWU4MDIxMV9uZXRkZXZfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggKmN0eCxcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy05OTAtXFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aCAqcGF0aClcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTEwNDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpZWVlODAyMTFfZGF0YWlmXzgwMjNfb3BzID0ge1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTA1My1cXHQubmRvX3NldF9tYWNfYWRkcmVzc1xcdD0gaWVlZTgwMjExX2NoYW5nZV9tYWMsXFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTA1NDpcXHQubmRvX2ZpbGxfZm9yd2FyZF9wYXRoXFx0PSBpZWVlODAyMTFfbmV0ZGV2X2ZpbGxfZm9yd2FyZF9wYXRoLFxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTEwNTUtXFx0Lm5kb19zZXR1cF90Y1xcdFxcdD0gaWVlZTgwMjExX25ldGRldl9zZXR1cF90YyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9MzY9c3RhdGljIGJvb2wgbmZ0X2lzX3ZhbGlkX2V0aGVyX2RldmljZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy00NC1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjQ1OnN0YXRpYyBpbnQgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmZfZmxvd19yb3V0ZSAqcm91dGUsXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy00Ni1cXHRcXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdF9jYWNoZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtNzktXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYzo4MDpcXHRyZXR1cm4gZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKFxcdTAwMjZjdHgsIHN0YWNrKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTgxLX1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9MjUxPXN0YXRpYyBpbnQgbmZ0X2Rldl9mb3J3YXJkX3BhdGgoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTI2Mi1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjI2MzpcXHRpZiAobmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aChyb3V0ZSwgZHN0LCBjdCwgZGlyLCBoYSwgXFx1MDAyNnN0YWNrKSBcXHUwMDNjIDAgfHxcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTI2NC1cXHQgICAgbmZ0X2Rldl9wYXRoX2luZm8oXFx1MDAyNnN0YWNrLCBcXHUwMDI2aW5mbywgaGEsIFxcdTAwMjZmdC1cXHUwMDNlZGF0YSkgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToyNDo1OC4xMTk2Mjk2OTNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc4NTk3NzA0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBGb3J3YXJkIFBhdGggRnVuY3Rpb25hbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgbW9kaWZ5aW5nIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgIGFuZCBhIGZldyBmdW5jdGlvbnMgdGhhdCBjYWxsIGl0OiBgYWlyb2hhX3BwZV9nZXRfd2RtYV9pbmZvYCwgYG10a19mbG93X2dldF93ZG1hX2luZm9gLCBhbmQgYG5mdF9kZXZfZmlsbF9mb3J3YXJkX3BhdGhgLiBSaWdodCBhd2F5LCBJIHNlZSB0aGlzIHRvdWNoZXMgc29tZSBwcmV0dHkgY29yZSBuZXR3b3JrIGZ1bmN0aW9uYWxpdHksIHBhcnRpY3VsYXJseSBuZXRmaWx0ZXIgZmxvdyBvZmZsb2FkIGFuZCBoYXJkd2FyZSBvZmZsb2FkIHBhdGhzLiBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBpdHNlbGYgbGl2ZXMgaW4gYG5ldC9jb3JlL2Rldi5jYC5cblxuR2l2ZW4gaXRzIHBvc2l0aW9uIGFuZCB0aGUgbmF0dXJlIG9mIHRoZSBjYWxsZXJzLCB0aGlzIGxvb2tzIGxpa2UgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEl0J3MgaW50aW1hdGVseSBpbnZvbHZlZCB3aXRoIGhvdyBuZXR3b3JrIHRyYWZmaWMgaXMgcm91dGVkLCBlc3BlY2lhbGx5IHdpdGggb2ZmbG9hZGluZy4gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBkYXRhIHN0cnVjdHVyZXMgYW5kIGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHRoZSB2YXJpb3VzIG9mZmxvYWQgbWVjaGFuaXNtcywgYW5kIEkgd2FudCB0byBtYWtlIHN1cmUgdGhlIGVkZ2UgY2FzZXMgYXJlIHdlbGwgdGVzdGVkLlxuXG5Ob3csIGBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBpcyBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCdzIGxpbmtlZCB0byBgbmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsYCwgd2hpY2ggaXMgdGhlIHdvcmtob3JzZSBiZWhpbmQgdGhlIGBmbG93X29mZmxvYWRgIGV4cHJlc3Npb24gaW4gbmZ0YWJsZXMuIFRoaXMgc3VnZ2VzdHMgdGhhdCBhbnkgaXNzdWVzIGhlcmUgY291bGQgcG90ZW50aWFsbHkgbGVhZCB0byBzZXJpb3VzIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcyB3aXRoaW4gbmZ0YWJsZXMgY29uZmlndXJhdGlvbnMgaWYgc29tZW9uZSB1c2VzIHRoZSBgZmxvd19vZmZsb2FkYCBleHByZXNzaW9uLlxuXG5CZWZvcmUgSSBkaWcgaW4gZGVlcGVyLCBJIHdhbnQgdG8gdmVyaWZ5IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgYENPTkZJR19ORl9GTE9XX1RBQkxFYCBpcyBwcm9iYWJseSByZXF1aXJlZCBmb3IgYW55IGNvZGUgcmVsYXRlZCB0byBgbmZfZmxvd190YWJsZV9wYXRoLmNgLCBhbmQgYENPTkZJR19ORlRfRkxPV19PRkZMT0FEYCBpcyBuZWVkZWQgZm9yIGBuZnRfZmxvd19vZmZsb2FkX2V2YWxgLiBMZXQgbWUganVzdCBkb3VibGUgY2hlY2sgdGhvc2UgY29uZmlndXJhdGlvbnMgcmVhbCBxdWljay4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmUgdGhlIHJpZ2h0IHRlc3RpbmcgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg1MzQsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MjU6MDMuOTA1NjA4NjlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwOTIwNzgyNjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jPTQxPXN0YXRpYyB2b2lkIGZsb3dfb2ZmbG9hZF9jdF90Y3Aoc3RydWN0IG5mX2Nvbm4gKmN0KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmMtNDktXFxubmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmM6NTA6c3RhdGljIHZvaWQgbmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcXG5uZXQvbmV0ZmlsdGVyL25mdF9mbG93X29mZmxvYWQuYy01MS1cXHRcXHRcXHRcXHQgIHN0cnVjdCBuZnRfcmVncyAqcmVncyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jPTIxOD1zdGF0aWMgY29uc3Qgc3RydWN0IG5mdF9leHByX29wcyBuZnRfZmxvd19vZmZsb2FkX29wcyA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jLTIyMC1cXHQuc2l6ZVxcdFxcdD0gTkZUX0VYUFJfU0laRShzaXplb2Yoc3RydWN0IG5mdF9mbG93X29mZmxvYWQpKSxcXG5uZXQvbmV0ZmlsdGVyL25mdF9mbG93X29mZmxvYWQuYzoyMjE6XFx0LmV2YWxcXHRcXHQ9IG5mdF9mbG93X29mZmxvYWRfZXZhbCxcXG5uZXQvbmV0ZmlsdGVyL25mdF9mbG93X29mZmxvYWQuYy0yMjItXFx0LmluaXRcXHRcXHQ9IG5mdF9mbG93X29mZmxvYWRfaW5pdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MjU6MDUuOTk3NjkxMTc0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NzU3MzEwNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipLY29uZmlnIEluc3BlY3Rpb24gZm9yIG5mdF9mbG93X29mZmxvYWQuYyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIEZpcnN0IG9yZGVyIG9mIGJ1c2luZXNzOiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIEtjb25maWcgZmlsZSBmb3IgYG5mdF9mbG93X29mZmxvYWQuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMsIHRoZSBidWlsZCBjb25maWd1cmF0aW9ucywgYW5kIHdoYXQgdHJpZ2dlcnMgdGhpcyBtb2R1bGUgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGtlcm5lbC4gVGhpcyBpcyBmb3VuZGF0aW9uYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgbmV0ZmlsdGVyIGZsb3cgb2ZmbG9hZCBpbXBsZW1lbnRhdGlvbi4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB0aGUgaW50cmljYWNpZXMgb2YgaXRzIGRlcGVuZGVuY2llcyBhbmQgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMuIEFyZSB0aGVyZSBhbnkgaGFyZHdhcmUgYWNjZWxlcmF0aW9uIGRlcGVuZGVuY2llcz8gQXJlIHRoZXJlIHNwZWNpZmljIE5JQyBkcml2ZXJzIGl0IHJlbGllcyB1cG9uPyBLbm93aW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2lsbCBxdWlja2x5IGlsbHVtaW5hdGUgdGhlIHNjb3BlIG9mIHRoaXMgcGFydGljdWxhciBmdW5jdGlvbmFsaXR5IGFuZCB3aGV0aGVyIG9yIG5vdCBpdCBwbGF5cyBuaWNlbHkgd2l0aCBvdGhlciBuZXR3b3JraW5nIGZlYXR1cmVzLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDMxLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MjU6MDkuNjczNDI1OTM5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjYxNTM3ODU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mdF9mbG93X29mZmxvYWRcXFxcLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT0xMTI9b2JqLSQoQ09ORklHX05GVF9DVClcXHRcXHQrPSBuZnRfY3Qub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTEzOm9iai0kKENPTkZJR19ORlRfRkxPV19PRkZMT0FEKVxcdCs9IG5mdF9mbG93X29mZmxvYWQub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTE0LW9iai0kKENPTkZJR19ORlRfTElNSVQpXFx0XFx0Kz0gbmZ0X2xpbWl0Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MjU6MTIuMzM0OTY5OTM0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNDA3NTQ2NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipLY29uZmlnIERpdmUgZm9yIG5mX2Zsb3dfdGFibGVfcGF0aC5vKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gYG5mX2Zsb3dfdGFibGVfcGF0aC5vYC4gUmlnaHQsIGZpcnN0IHN0ZXAsIGFzIGFsd2F5cywgaXMgdG8gZGl2ZSBpbnRvIHRoZSBLY29uZmlnIGZpbGVzLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBzZWFyY2ggdGhyb3VnaCB0aGUgcmVsZXZhbnQgS2NvbmZpZyB0cmVlcywgc3RhcnRpbmcgd2l0aCB0aGUgbmV0d29ya2luZyBjb3JlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBkaXJlY3RseSBjb250cm9sIHRoZSBpbmNsdXNpb24gb2YgdGhpcyBvYmplY3QgZmlsZS4gSXMgaXQgdGllZCB0byBhIHNwZWNpZmljIGZlYXR1cmUsIGEgZ2VuZXJhbCBuZXR3b3JraW5nIHN1YnN5c3RlbSwgb3Igc29tZXRoaW5nIG1vcmUgZ3JhbnVsYXI/IEknbGwgYmUgbG9va2luZyBmb3IgYGNvbmZpZ2Agc3ltYm9scyB0aGF0IG1pZ2h0IGRpcmVjdGx5IG1lbnRpb24gYG5mX2Zsb3dfdGFibGVfcGF0aGAsIG9yLCBtb3JlIGxpa2VseSwgc3ltYm9scyB0aGF0IGNvbnRyb2wgYSBicm9hZGVyIGZlYXR1cmUgc2V0IHdpdGhpbiB3aGljaCB0aGlzIG1vZHVsZSByZXNpZGVzLiBJJ2xsIG5lZWQgdG8gdHJhY2UgdGhlIGRlcGVuZGVuY2llcyB1cCB0aGUgS2NvbmZpZyB0cmVlIGlmIGl0J3Mgbm90IGltbWVkaWF0ZWx5IG9idmlvdXMuIEtub3dpbmcgdGhpcyB3aWxsIGluZm9ybSBpZiBpdCdzIGNvbmZpZ3VyYWJsZSBvciBpZiBpdCBjb21lcyBvbiBhcyBhIHNpZGUgZWZmZWN0LiBUaGVuIEkgY2FuIGNyZWF0ZSBhIG1vcmUgaW5mb3JtZWQgcGxhbiBhbmQgZGV0ZXJtaW5lIGlmIG15IGVmZm9ydHMgYXJlIGdvaW5nIHRvIHlpZWxkIG1vcmUgaW5zaWdodHMuIEnigJlsbCBtYWtlIHN1cmUgdG8gbm90ZSB0aGUgcmVsZXZhbnQgS2NvbmZpZyBzbmlwcGV0cyBhbmQgYW55IHJlbGV2YW50IGRlcGVuZGVuY2llcyBJIGVuY291bnRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6OTc0MywiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI1OjE2LjY3NTcyNzYxMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcwMDA1MDk3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9mbG93X3RhYmxlX3BhdGhcXFxcLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT0xNDM9bmZfZmxvd190YWJsZS1vYmpzXFx0XFx0Oj0gbmZfZmxvd190YWJsZV9jb3JlLm8gbmZfZmxvd190YWJsZV9pcC5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjE0NDpcXHRcXHRcXHRcXHQgICBuZl9mbG93X3RhYmxlX3BhdGgubyBcXFxcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xNDUtXFx0XFx0XFx0XFx0ICAgbmZfZmxvd190YWJsZV9vZmZsb2FkLm8gbmZfZmxvd190YWJsZV94ZHAub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToyNToxOS4zNzU3ODQzMjNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAxNTY2MzEzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFzIGlmIGl0IHdlcmUgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBOZXRmaWx0ZXIgTWFrZWZpbGUqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBuZl9mbG93X3RhYmxlLW9ianNgIGFuZCB0aGUgYnJvYWRlciBOZXRmaWx0ZXIgZnJhbWV3b3JrLiBNeSBmaXJzdCBtb3ZlIGlzIHRvIGhlYWQgc3RyYWlnaHQgaW50byB0aGUgYG5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVgLiBUaGlzIGZpbGUgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGVzZSBvYmplY3QgZmlsZXMgYXJlIGNvbXBpbGVkLCBsaW5rZWQsIGFuZCB1bHRpbWF0ZWx5IGludGVncmF0ZWQgaW50byB0aGUga2VybmVsIG1vZHVsZSBzeXN0ZW0uIEl04oCZbGwgcmV2ZWFsIHRoZSBkZXBlbmRlbmNpZXMsIHRoZSBidWlsZCBmbGFncyB1c2VkLCBhbmQgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRoYXQncyBnb2luZyBvbi4gSSdtIGhvcGluZyB0byBnZXQgYSBxdWljayBvdmVydmlldyBhbmQgaWRlbnRpZnkgYW55IHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuIG9yIG9wcG9ydHVuaXRpZXMgZm9yIG9wdGltaXphdGlvbiB3aXRoaW4gdGhlIGZsb3cgdGFibGUgaW1wbGVtZW50YXRpb24uIEl0J3MgdGltZSB0byB0cmFjZSB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgc2VlIGhvdyB0aGUgZmxvdyB0YWJsZSBmaXRzIGludG8gdGhlIGxhcmdlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDE0NSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI1OjIzLjM5MTQ0OTc2NFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIwMDUwMjY1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9mbG93X3RhYmxlLW9ianNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT0xNDI9b2JqLSQoQ09ORklHX05GX0ZMT1dfVEFCTEUpXFx0Kz0gbmZfZmxvd190YWJsZS5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZToxNDM6bmZfZmxvd190YWJsZS1vYmpzXFx0XFx0Oj0gbmZfZmxvd190YWJsZV9jb3JlLm8gbmZfZmxvd190YWJsZV9pcC5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTE0NC1cXHRcXHRcXHRcXHQgICBuZl9mbG93X3RhYmxlX3BhdGgubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI1OjI1LjU5MTk2MzJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA4NTI1Njc4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JraW5nIFBhdGNoIGZvciBQb3RlbnRpYWwgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBtaW5kIGhvbmVzIGluIG9uIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb25zIGludm9sdmVkOiBgQ09ORklHX05GX0ZMT1dfVEFCTEVgIGFuZCBgQ09ORklHX05GVF9GTE9XX09GRkxPQURgLiBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBCdXQsIHdoYXQgYWJvdXQgdGhlIGNvcmUgZnVuY3Rpb24gaXRzZWxmLCBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYD8gSXQncyBpbiBgbmV0L2NvcmUvZGV2LmNgLCBzbyBpdCdzIGFsd2F5cyBjb21waWxlZCBpbi4gVGhlIHBhdGNoIHNlZW1zIHRvIGJlIGNoYW5naW5nIGhvdyBpdCBhY2Nlc3NlcyB0aGUgYGRldmAgZmllbGQgd2l0aGluIGEgY29udGV4dCBzdHJ1Y3R1cmUsIHVzaW5nIGBjdHgtXHUwMDNlZGV2YCBpbnN0ZWFkIG9mIHRoZSBvbGQgYGN0eC5kZXZgIOKAkyB0eXBpY2FsIHBvaW50ZXIgdnMuIHZhbHVlIGFjY2VzcyBjb3JyZWN0aW9uLiBUaGV54oCZdmUgdXBkYXRlZCBhbGwgdGhlIGNhbGwgc2l0ZXMsIHdoaWNoIGlzIGdvb2QuXG5cblRoZSByZWFsIHF1ZXN0aW9uIGlzOiBpcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz8gQWJzb2x1dGVseSEgQW55IGZ1bmN0aW9uYWwgY2hhbmdlIGRlZXAgd2l0aGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2sgaXMgcmlwZSBmb3IgZnV6emluZy4gVGhlIHBvdGVudGlhbCBpbXBhY3QgaXMgdG9vIHNpZ25pZmljYW50IHRvIGlnbm9yZS5cblxuVGhlcmVmb3JlLCB0aGUgbWFpbiBmdW5jdGlvbnMgdG8gcHV0IHVuZGVyIHRoZSBtaWNyb3Njb3BlIGFyZSBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCwgYG5mdF9kZXZfZmlsbF9mb3J3YXJkX3BhdGhgLCBgbmZ0X2Zsb3dfcm91dGVgLCBhbmQgYG5mdF9mbG93X29mZmxvYWRfZXZhbGAuIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZXNlIGZvciBmb2N1c2VkIHRlc3RpbmcuIEFuZCBJIHNob3VsZCBwcm9iYWJseSB2ZXJpZnkgaWYgYG5mdF9kZXZfZmlsbF9mb3J3YXJkX3BhdGhgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IGNvdWxkIGltcGFjdCBob3cgZWFzaWx5IGl0IGNhbiBiZSByZWFjaGVkIGluIG15IGZ1enppbmcgc2V0dXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNDczLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI1OjMxLjY3NzIyNDE4OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIzMjczNDg4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9MzY9c3RhdGljIGJvb2wgbmZ0X2lzX3ZhbGlkX2V0aGVyX2RldmljZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy00NC1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjQ1OnN0YXRpYyBpbnQgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmZfZmxvd19yb3V0ZSAqcm91dGUsXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy00Ni1cXHRcXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdF9jYWNoZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9MjUxPXN0YXRpYyBpbnQgbmZ0X2Rldl9mb3J3YXJkX3BhdGgoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTI2Mi1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjI2MzpcXHRpZiAobmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aChyb3V0ZSwgZHN0LCBjdCwgZGlyLCBoYSwgXFx1MDAyNnN0YWNrKSBcXHUwMDNjIDAgfHxcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTI2NC1cXHQgICAgbmZ0X2Rldl9wYXRoX2luZm8oXFx1MDAyNnN0YWNrLCBcXHUwMDI2aW5mbywgaGEsIFxcdTAwMjZmdC1cXHUwMDNlZGF0YSkgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToyNTozMy45MDk5NjU3NzNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU5MTY1NDc5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkFzc2Vzc2luZyBQb3RlbnRpYWwgU3RhdGljIEZ1bmN0aW9ucyB3aXRoaW4gdGhlIE5ldGZpbHRlciBGcmFtZXdvcmsqKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gTmV0ZmlsdGVyIGNvZGUsIHNwZWNpZmljYWxseSB0aGUgZnVuY3Rpb24gYG5mdF9kZXZfZmlsbF9mb3J3YXJkX3BhdGhgLiBJJ3ZlIGNvbmZpcm1lZCB0aGF0IG9uZSBpcyBpbmRlZWQgc3RhdGljYWxseSBkZWZpbmVkLiBOb3csIEkgbmVlZCB0byBleHBhbmQgbXkgc2VhcmNoLiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBhdCBoYW5kIG5vdyBpczogd2hhdCBhYm91dCBgbmZ0X2Zsb3dfcm91dGVgPyBJcyB0aGF0IG9uZSBhbHNvIGEgc3RhdGljIGZ1bmN0aW9uPyBJdCdzIGltcG9ydGFudCB0byBmaWd1cmUgdGhpcyBvdXQsIGFzIGtub3dpbmcgdGhpcyB3aWxsIHRlbGwgbWUgYSBnb29kIGRlYWwgYWJvdXQgaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyNzEsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToyNTozNy41MDE2MjMzNTNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMDI5MjkzNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZ0X2Zsb3dfcm91dGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGUuaD0yNDc9c3RydWN0IG5mdF9wa3RpbmZvO1xcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlLmg6MjQ4OmludCBuZnRfZmxvd19yb3V0ZShjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCwgY29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlLmgtMjQ5LVxcdFxcdCAgIHN0cnVjdCBuZl9mbG93X3JvdXRlICpyb3V0ZSwgZW51bSBpcF9jb25udHJhY2tfZGlyIGRpcixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9MjUxPXN0YXRpYyBpbnQgbmZ0X2Rldl9mb3J3YXJkX3BhdGgoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTI5OS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjMwMDppbnQgbmZ0X2Zsb3dfcm91dGUoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsIGNvbnN0IHN0cnVjdCBuZl9jb25uICpjdCxcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTMwMS1cXHRcXHQgICBzdHJ1Y3QgbmZfZmxvd19yb3V0ZSAqcm91dGUsIGVudW0gaXBfY29ubnRyYWNrX2RpciBkaXIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTM1Ni19XFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYzozNTc6RVhQT1JUX1NZTUJPTF9HUEwobmZ0X2Zsb3dfcm91dGUpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmM9NTA9c3RhdGljIHZvaWQgbmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jLTEwOC1cXHRkaXIgPSBDVElORk8yRElSKGN0aW5mbyk7XFxubmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmM6MTA5OlxcdGlmIChuZnRfZmxvd19yb3V0ZShwa3QsIGN0LCBcXHUwMDI2cm91dGUsIGRpciwgcHJpdi1cXHUwMDNlZmxvd3RhYmxlKSBcXHUwMDNjIDApXFxubmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmMtMTEwLVxcdFxcdGdvdG8gZXJyX2Zsb3dfcm91dGU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI1OjM5LjgwNDU1NjkzMloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODMxMDgxMTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgTmV0d29yayBGbG93IE9mZmxvYWRpbmcgQ29kZSoqXG5cbkFscmlnaHQsIHNvIGBuZnRfZmxvd19yb3V0ZWAgYW5kIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgIGFyZSBib3RoIGV4cG9ydGVkLCBtZWFuaW5nIHRoZXkncmUgYWNjZXNzaWJsZSBmdW5jdGlvbnMuIFRoYXQncyBnb29kIHRvIGtub3cg4oCTIGl0IHRlbGxzIG1lIHdoZXJlIHRoZXkncmUgYmVpbmcgdXNlZCAqZnJvbSouIEkgaW1tZWRpYXRlbHkgbmVlZCB0byBrZWVwIHRoYXQgaW4gbWluZCB3aGVuIHRyYWNpbmcgZXhlY3V0aW9uLiBBbmQsIGhleSwgYG5mdF9mbG93X29mZmxvYWRfZXZhbGAgaXMgZGVjbGFyZWQgYXMgKnN0YXRpYyouIFJpZ2h0LCBzbyBpdCdzIG9ubHkgdmlzaWJsZSB3aXRoaW4gaXRzIG93biBjb21waWxhdGlvbiB1bml0LiBObyBleHRlcm5hbCBkaXJlY3QgY2FsbHMgdGhlcmUsIHdoaWNoIGFjdHVhbGx5IGhlbHBzIHJlZHVjZSB0aGUgc2NvcGUgdG8gc2VhcmNoIGZyb20uIE5vdywgbGV0J3Mgc2VlLCB0aGUgbmV4dCB0aGluZyBJJ20gZ29pbmcgdG8gZG8gaXMgZG91YmxlLWNoZWNrICp3aG8qIGlzIGNhbGxpbmcgdGhhdCBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBmdW5jdGlvbi4gSSAqbmVlZCogdG8gdW5kZXJzdGFuZCBpdHMgdXNhZ2UgdG8gYWNjdXJhdGVseSB0cmFjayBkb3duIGhvdyBpdCBmaXRzIGludG8gdGhlIHdob2xlIGZyYW1ld29yay4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBsb29raW5nIGF0IGFsbCBjYWxsIHNpdGVzIGZvciBpdCwgZnJvbSB3aGVyZSBJJ2xsIGdldCBhbiBhY2N1cmF0ZSBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTkxMSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI1OjQ2LjYzNTY0MTI5N1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMxMTMxMjkxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZfZmlsbF9mb3J3YXJkX3BhdGhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYz0yODI9c3RhdGljIGludCBhaXJvaGFfcHBlX2dldF93ZG1hX2luZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmFkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTI5Ny1cXHRyY3VfcmVhZF9sb2NrKCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzoyOTg6XFx0ZXJyID0gZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKFxcdTAwMjZjdHgsIFxcdTAwMjZzdGFjayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0yOTktXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfcHBlX29mZmxvYWQuYz05Mj1tdGtfZmxvd19nZXRfd2RtYV9pbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICphZGRyLCBzdHJ1Y3QgbXRrX3dkbWFfaW5mbyAqaW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jLTEwOS1cXHRyY3VfcmVhZF9sb2NrKCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmM6MTEwOlxcdGVyciA9IGRldl9maWxsX2ZvcndhcmRfcGF0aChcXHUwMDI2Y3R4LCBcXHUwMDI2c3RhY2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jLTExMS1cXHRyY3VfcmVhZF91bmxvY2soKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MzQyNz1pbnQgZGV2X2ZpbGxfbWV0YWRhdGFfZHN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpO1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MzQyODppbnQgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4ICpjdHgsXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0zNDI5LVxcdFxcdFxcdCAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayAqc3RhY2spO1xcbi0tXFxubmV0LzgwMjFxL3ZsYW5fZGV2LmM9NzU2PXN0YXRpYyBpbnQgdmxhbl9kZXZfZ2V0X2lmbGluayhjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0LzgwMjFxL3ZsYW5fZGV2LmMtNzYyLVxcbm5ldC84MDIxcS92bGFuX2Rldi5jOjc2MzpzdGF0aWMgaW50IHZsYW5fZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4ICpjdHgsXFxubmV0LzgwMjFxL3ZsYW5fZGV2LmMtNzY0LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlX3BhdGggKnBhdGgpXFxuLS1cXG5uZXQvODAyMXEvdmxhbl9kZXYuYz0xMDc4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgdmxhbl9uZXRkZXZfb3BzID0ge1xcbi0tXFxubmV0LzgwMjFxL3ZsYW5fZGV2LmMtMTEwOS1cXHQubmRvX2dldF9pZmxpbmtcXHRcXHQ9IHZsYW5fZGV2X2dldF9pZmxpbmssXFxubmV0LzgwMjFxL3ZsYW5fZGV2LmM6MTExMDpcXHQubmRvX2ZpbGxfZm9yd2FyZF9wYXRoXFx0PSB2bGFuX2Rldl9maWxsX2ZvcndhcmRfcGF0aCxcXG5uZXQvODAyMXEvdmxhbl9kZXYuYy0xMTExLVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSB2bGFuX2h3dHN0YW1wX2dldCxcXG4tLVxcbm5ldC9jb3JlL2Rldi5jPTc0Mz1zdGF0aWMgc3RydWN0IG5ldF9kZXZpY2VfcGF0aCAqZGV2X2Z3ZF9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfc3RhY2sgKnN0YWNrKVxcbi0tXFxubmV0L2NvcmUvZGV2LmMtNzUyLVxcbm5ldC9jb3JlL2Rldi5jOjc1MzppbnQgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4ICpjdHgsXFxubmV0L2NvcmUvZGV2LmMtNzU0LVxcdFxcdFxcdCAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayAqc3RhY2spXFxuLS1cXG5uZXQvY29yZS9kZXYuYy03ODYtfVxcbm5ldC9jb3JlL2Rldi5jOjc4NzpFWFBPUlRfU1lNQk9MX0dQTChkZXZfZmlsbF9mb3J3YXJkX3BhdGgpO1xcbm5ldC9jb3JlL2Rldi5jLTc4OC1cXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTk3OT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGllZWU4MDIxMV9tb25pdG9yaWZfb3BzID0ge1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtOTg4LVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjk4OTpzdGF0aWMgaW50IGllZWU4MDIxMV9uZXRkZXZfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggKmN0eCxcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy05OTAtXFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aCAqcGF0aClcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTEwNDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpZWVlODAyMTFfZGF0YWlmXzgwMjNfb3BzID0ge1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTA1My1cXHQubmRvX3NldF9tYWNfYWRkcmVzc1xcdD0gaWVlZTgwMjExX2NoYW5nZV9tYWMsXFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTA1NDpcXHQubmRvX2ZpbGxfZm9yd2FyZF9wYXRoXFx0PSBpZWVlODAyMTFfbmV0ZGV2X2ZpbGxfZm9yd2FyZF9wYXRoLFxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTEwNTUtXFx0Lm5kb19zZXR1cF90Y1xcdFxcdD0gaWVlZTgwMjExX25ldGRldl9zZXR1cF90YyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9MzY9c3RhdGljIGJvb2wgbmZ0X2lzX3ZhbGlkX2V0aGVyX2RldmljZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy00NC1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjQ1OnN0YXRpYyBpbnQgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmZfZmxvd19yb3V0ZSAqcm91dGUsXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy00Ni1cXHRcXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdF9jYWNoZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtNzktXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYzo4MDpcXHRyZXR1cm4gZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKFxcdTAwMjZjdHgsIHN0YWNrKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTgxLX1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9MjUxPXN0YXRpYyBpbnQgbmZ0X2Rldl9mb3J3YXJkX3BhdGgoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTI2Mi1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjI2MzpcXHRpZiAobmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aChyb3V0ZSwgZHN0LCBjdCwgZGlyLCBoYSwgXFx1MDAyNnN0YWNrKSBcXHUwMDNjIDAgfHxcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTI2NC1cXHQgICAgbmZ0X2Rldl9wYXRoX2luZm8oXFx1MDAyNnN0YWNrLCBcXHUwMDI2aW5mbywgaGEsIFxcdTAwMjZmdC1cXHUwMDNlZGF0YSkgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToyNTo0OC45NDY5NTk4NjZaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODc2ODMyMTQwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDdXJyZW50IEFuYWx5c2lzIG9mIHRoZSBOZXRmaWx0ZXIgRmxvdyBPZmZsb2FkIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoZSBOZXRmaWx0ZXIgZmxvdyBvZmZsb2FkLCBhbmQgbXkgZm9jdXMgbmVlZHMgdG8gYmUgbGFzZXItc2hhcnAuIFJpZ2h0IG5vdywgSSBiZWxpZXZlIHRoZSBrZXkgZnVuY3Rpb25zIHRvIGV4YW1pbmUgYXJlIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgIGFuZCBgbmZ0X2Zsb3dfcm91dGVgLiBJIGFsc28gbmVlZCB0byBrZWVwIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYE5GX0ZMT1dfVEFCTEVgIGFuZCBgTkZUX0ZMT1dfT0ZGTE9BRGAgaW4gbWluZCwgYXMgdGhleSdsbCBvYnZpb3VzbHkgc2hhcGUgdGhlIGJlaGF2aW9yLlxuXG5GaXJzdCwgYSBxdWljayBzYW5pdHkgY2hlY2s6IEkgbmVlZCB0byBlbnN1cmUgdGhhdCBgTkZUX0ZMT1dfT0ZGTE9BRGAgZGVwZW5kcyBvbiBgTkZfVEFCTEVTYC4gVGhpcyBpcyBuZXRmaWx0ZXItcmVsYXRlZCwgc28gaXQncyBhIGNyaXRpY2FsIGRlcGVuZGVuY3kgdG8gY29uZmlybS4gSG1tLCB5ZXAsIHRoYXQncyB3aGF0IEkgdGhvdWdodC4gSXQncyBmdW5kYW1lbnRhbGx5IHRpZWQgdG8gdGhlIE5ldGZpbHRlciBpbmZyYXN0cnVjdHVyZS5cblxuTm93LCBsZXQgbWUgZ28gc3RyYWlnaHQgdG8gYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgdG8gcGluIGRvd24gdGhlIGRldGFpbHMgc3Vycm91bmRpbmcgYE5GVF9GTE9XX09GRkxPQURgLiBUaGlzIEtjb25maWcgZmlsZSB3aWxsIGJlIHRoZSBtb3N0IGF1dGhvcml0YXRpdmUgc291cmNlIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgdmFsdWVzLCBhbmQgdGhlIGNvbmRpdGlvbmFsIGJ1aWxkIGxvZ2ljIGludm9sdmVkLiBGcm9tIHRoZXJlLCBJIGNhbiB1bmRlcnN0YW5kIGhvdyB0aGlzIGFsbCBmaXRzIHRvZ2V0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzgxOCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI1OjU3LjcxNTI4MzkxNloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI5MTgwOTA4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZUX0ZMT1dfT0ZGTE9BRFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDk4PWNvbmZpZyBORlRfRVhUSERSX0RDQ1BcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01MDMtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjUwNDpjb25maWcgTkZUX0ZMT1dfT0ZGTE9BRFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01MDUtXFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXFx1MDAyNlxcdTAwMjYgTkZfRkxPV19UQUJMRVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToyNjowMC4wMDcwOTc0ODdaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM4NTExODUxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgY29uc2lkZXJhdGlvbnMsIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSB3aG8gdW5kZXJzdGFuZHMgdGhlIGludHJpY2FjaWVzIG9mIG5ldHdvcmsgdHJhZmZpYyBtYW5hZ2VtZW50OlxuXG4qKk5ldHdvcmsgVHJhZmZpYyBDb25zaWRlcmF0aW9ucyoqXG5cblJpZ2h0LCBzbyB0byBtYWtlIHRoaXMgd29yaywgaXQncyBjbGVhciB3ZSdyZSBnb2luZyB0byBuZWVkIGEgc3BlY2lmaWMgc2V0IG9mIGtlcm5lbCBtb2R1bGVzIGluIHBsYWNlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB3ZSdsbCBiZSByZWx5aW5nIG9uIGBORl9DT05OVFJBQ0tgLCBgTkZfRkxPV19UQUJMRWAsIGFuZCBgTkZUX0ZMT1dfT0ZGTE9BRGAuIFRoZXNlIGFyZSB0aGUgY29yZSBidWlsZGluZyBibG9ja3MgZm9yIHN0YXRlZnVsIGluc3BlY3Rpb24sIGFuZCBvZmZsb2FkaW5nLlxuXG5Ob3csIGxldCdzIGp1c3QgbWFrZSBzdXJlIGFib3V0IGBORl9GTE9XX1RBQkxFYCDigJMgaXQncyBhIGNyaXRpY2FsIGNvbXBvbmVudCBoZXJlLiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGhvdyB0aGlzIG1vZHVsZSBvcGVyYXRlcywgYW5kIHdoYXQgYXJlIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDI3MCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI2OjA0LjM5MjIyNDQ4MVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2ODc3NjA1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfRkxPV19UQUJMRVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NzAxPWVuZGlmICMgTkZfVEFCTEVTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTcwMi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzAzOmNvbmZpZyBORl9GTE9XX1RBQkxFX0lORVRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzA0LVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgZmxvdyB0YWJsZSBtaXhlZCBJUHY0L0lQdjYgbW9kdWxlXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTcxMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzExOmNvbmZpZyBORl9GTE9XX1RBQkxFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTcxMi1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIGZsb3cgdGFibGUgbW9kdWxlXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTcyMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzIxOmNvbmZpZyBORl9GTE9XX1RBQkxFX1BST0NGU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MjItXFx0Ym9vbCBcXFwiU3VwcGx5IGZsb3cgdGFibGUgc3RhdGlzdGljcyBpbiBwcm9jZnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI2OjA2LjQ2MTAwNjg4N1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5OTMxNjYzNDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoIEZ1enppbmcgLSBBIFF1aWNrIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoIGFuZCwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgaXQncyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSBzaG91bGQgcHJpb3JpdGl6ZSBmb3IgZnV6emluZy4gVGhlIGtleSBjb25maWd1cmF0aW9ucyBoZXJlIGFyZSBgTkZfRkxPV19UQUJMRWAgYW5kIGBORlRfRkxPV19PRkZMT0FEYCDigJMgdGhvc2UgYXJlIHRoZSBnYXRla2VlcGVycy5cblxuRnVuY3Rpb25hbGx5LCB0aGlzIHBhdGNoIGxvb2tzIHNvbGlkOyBpdOKAmXMgbWFraW5nIGNoYW5nZXMgdG8gc29tZSBjcnVjaWFsIHBhcnRzIG9mIHRoZSBrZXJuZWwuIEl04oCZcyBtb2RpZnlpbmcgdGhlIGNvcmUgbmV0d29ya2luZyBhbmQgbmV0ZmlsdGVyIGxvZ2ljLCBhbmQgc3BlY2lmaWNhbGx5LCBJJ20gbm90aW5nIHRoZSB1cGRhdGVzIHRvIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgLCBhcyB3ZWxsIGFzIGhvdyBpdCBpbXBhY3RzIHRoZSBgbmV0X2RldmljZV9wYXRoX2N0eGAuIFRoZSByZWFjaGFiaWxpdHkgaGVyZSBpcyBjbGVhcjogdGhlIHBhdGggZ29lcyBmcm9tIGBuZnRfZmxvd19yb3V0ZWAgdG8gYG5mdF9kZXZfZm9yd2FyZF9wYXRoYCwgYW5kIHRoZW4gZGlyZWN0bHkgaW50byBgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aGAsIGluZGljYXRpbmcgYSBzb2xpZCBwYXRoIGZvciBmdXp6ZXIgaW50ZXJhY3Rpb24uXG5cblNpbmNlIHRoZSBwYXRjaCB0b3VjaGVzIG9uIGNvcmUgbmV0d29ya2luZyBwcmluY2lwbGVzIGFuZCBJIGNhbiBzZWUgYSBjbGVhciBwYXRoIGludG8gdGhlIGZ1bmN0aW9uIGl0IGFsdGVycywgcGx1cyB0aGUgZmFjdCB0aGF0IGl0J3MgYWxsIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCBlbnZpcm9ubWVudHMsIGl0J3MgYSB3b3J0aHdoaWxlIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gV29ydGhGdXp6aW5nPXRydWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0Njk1LCJPdXRwdXRUb2tlbnMiOjE2NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToyNjoxNi4zOTI2NzM5MjVaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjI2NDUwNTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0ZMT1dfVEFCTEVcIixcbiAgICBcIk5GVF9GTE9XX09GRkxPQURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkZXZfZmlsbF9mb3J3YXJkX3BhdGhcIixcbiAgICBcIm5mdF9mbG93X3JvdXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHNpZ25hdHVyZSBhbmQgaW1wbGVtZW50YXRpb24gb2YgYGRldl9maWxsX2ZvcndhcmRfcGF0aGAgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjaywgY2hhbmdpbmcgaG93IHRoZSBgbmV0X2RldmljZV9wYXRoX2N0eGAgaXMgcGFzc2VkIGFuZCBhY2Nlc3NlZC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBuZXRmaWx0ZXIgZmxvdyBvZmZsb2FkIHN1YnN5c3RlbSAoYG5mdF9mbG93X3JvdXRlYCAtXFx1MDAzZSBgbmZ0X2Rldl9mb3J3YXJkX3BhdGhgIC1cXHUwMDNlIGBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCkuIFNpbmNlIGl0IGFsdGVycyBjb3JlIG5ldHdvcmtpbmcgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGl0IGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfRkxPV19UQUJMRVwiLFxuICAgIFwiTkZUX0ZMT1dfT0ZGTE9BRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRldl9maWxsX2ZvcndhcmRfcGF0aFwiLFxuICAgIFwibmZ0X2Zsb3dfcm91dGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgc2lnbmF0dXJlIGFuZCBpbXBsZW1lbnRhdGlvbiBvZiBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrLCBjaGFuZ2luZyBob3cgdGhlIGBuZXRfZGV2aWNlX3BhdGhfY3R4YCBpcyBwYXNzZWQgYW5kIGFjY2Vzc2VkLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgdGhlIG5ldGZpbHRlciBmbG93IG9mZmxvYWQgc3Vic3lzdGVtIChgbmZ0X2Zsb3dfcm91dGVgIC1cXHUwMDNlIGBuZnRfZGV2X2ZvcndhcmRfcGF0aGAgLVxcdTAwM2UgYG5mdF9kZXZfZmlsbF9mb3J3YXJkX3BhdGhgKS4gU2luY2UgaXQgYWx0ZXJzIGNvcmUgbmV0d29ya2luZyBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgaXQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmh2gd[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-05 09:20:39 +0000 UTC FinishedAt: 2026-08-05 09:26:18 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "a23b36233d4103def55dc8cf65698106d0bd1e62", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_FLOW_TABLE", "NFT_FLOW_OFFLOAD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "a23b36233d4103def55dc8cf65698106d0bd1e62", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_FLOW_TABLE", "NFT_FLOW_OFFLOAD" ], "series_id": "4170c13e-d494-448c-acf0-51f7e8ae5ff2" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "dev_fill_forward_path", "nft_flow_route" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjI0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0ZMT1dfVEFCTEUmIzM0OywKICAgICYjMzQ7TkZUX0ZMT1dfT0ZGTE9BRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2Rldl9maWxsX2ZvcndhcmRfcGF0aCYjMzQ7LAogICAgJiMzNDtuZnRfZmxvd19yb3V0ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgc2lnbmF0dXJlIGFuZCBpbXBsZW1lbnRhdGlvbiBvZiBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrLCBjaGFuZ2luZyBob3cgdGhlIGBuZXRfZGV2aWNlX3BhdGhfY3R4YCBpcyBwYXNzZWQgYW5kIGFjY2Vzc2VkLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgdGhlIG5ldGZpbHRlciBmbG93IG9mZmxvYWQgc3Vic3lzdGVtIChgbmZ0X2Zsb3dfcm91dGVgIC1cdTAwM2UgYG5mdF9kZXZfZm9yd2FyZF9wYXRoYCAtXHUwMDNlIGBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCkuIFNpbmNlIGl0IGFsdGVycyBjb3JlIG5ldHdvcmtpbmcgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MjQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBlOWIzNGY5NDNiNjNjMTdlZTBjZTUzYWEzZmRhMzMzMGY0NDBkMmE3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgNSAwOToyNDoyMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuY1xuaW5kZXggMzNkZGYwZDA3ODU1My4uNTMxODNhMTMyMTAwNiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmNcbkBAIC0yODMsMTQgJiM0MzsyODMsMTkgQEAgc3RhdGljIGludCBhaXJvaGFfcHBlX2dldF93ZG1hX2luZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmFkZHIsXG4gXHRcdFx0XHQgICAgc3RydWN0IGFpcm9oYV93ZG1hX2luZm8gKmluZm8pXG4ge1xuIFx0c3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayBzdGFjaztcbiYjNDM7XHRzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX2N0eCBjdHggPSB7XG4mIzQzO1x0XHQuZGV2ID0gZGV2LFxuJiM0MztcdH07XG4gXHRzdHJ1Y3QgbmV0X2RldmljZV9wYXRoICpwYXRoO1xuIFx0aW50IGVycjtcbiBcbiBcdGlmICghZGV2KVxuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcbiYjNDM7XHRldGhlcl9hZGRyX2NvcHkoY3R4LmRhZGRyLCBhZGRyKTtcbiYjNDM7XG4gXHRyY3VfcmVhZF9sb2NrKCk7XG4tXHRlcnIgPSBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoZGV2LCBhZGRyLCBcdTAwMjZzdGFjayk7XG4mIzQzO1x0ZXJyID0gZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKFx1MDAyNmN0eCwgXHUwMDI2c3RhY2spO1xuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmNcbmluZGV4IGNjOGM0ZWY4MDM4ZjMuLjFlYzQ2Nzg0ZjAxODcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfcHBlX29mZmxvYWQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmNcbkBAIC05Miw2ICYjNDM7OTIsOSBAQCBzdGF0aWMgaW50XG4gbXRrX2Zsb3dfZ2V0X3dkbWFfaW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqYWRkciwgc3RydWN0IG10a193ZG1hX2luZm8gKmluZm8pXG4ge1xuIFx0c3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayBzdGFjaztcbiYjNDM7XHRzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX2N0eCBjdHggPSB7XG4mIzQzO1x0XHQuZGV2ID0gZGV2LFxuJiM0MztcdH07XG4gXHRzdHJ1Y3QgbmV0X2RldmljZV9wYXRoICpwYXRoO1xuIFx0aW50IGVycjtcbiBcbkBAIC0xMDEsOCAmIzQzOzEwNCwxMCBAQCBtdGtfZmxvd19nZXRfd2RtYV9pbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICphZGRyLCBzdHJ1Y3QgbXRrX3dkbWFfaVxuIFx0aWYgKCFJU19FTkFCTEVEKENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCkpXG4gXHRcdHJldHVybiAtMTtcbiBcbiYjNDM7XHRldGhlcl9hZGRyX2NvcHkoY3R4LmRhZGRyLCBhZGRyKTtcbiYjNDM7XG4gXHRyY3VfcmVhZF9sb2NrKCk7XG4tXHRlcnIgPSBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoZGV2LCBhZGRyLCBcdTAwMjZzdGFjayk7XG4mIzQzO1x0ZXJyID0gZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKFx1MDAyNmN0eCwgXHUwMDI2c3RhY2spO1xuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gXHRpZiAoZXJyKVxuIFx0XHRyZXR1cm4gZXJyO1xuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmggYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXG5pbmRleCA4ZGIyNWI3OTU3M2UzLi5kMmY1NDUwMTZmN2Y2IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaFxuQEAgLTM0MjUsNyAmIzQzOzM0MjUsNyBAQCB2b2lkIGRldl9yZW1vdmVfb2ZmbG9hZChzdHJ1Y3QgcGFja2V0X29mZmxvYWQgKnBvKTtcbiBcbiBpbnQgZGV2X2dldF9pZmxpbmsoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG4gaW50IGRldl9maWxsX21ldGFkYXRhX2RzdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbi1pbnQgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICpkYWRkcixcbiYjNDM7aW50IGRldl9maWxsX2ZvcndhcmRfcGF0aChzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX2N0eCAqY3R4LFxuIFx0XHRcdCAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayAqc3RhY2spO1xuIHN0cnVjdCBuZXRfZGV2aWNlICpkZXZfZ2V0X2J5X25hbWUoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBjaGFyICpuYW1lKTtcbiBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2X2dldF9ieV9uYW1lX3JjdShzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IGNoYXIgKm5hbWUpO1xuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5jIGIvbmV0L2NvcmUvZGV2LmNcbmluZGV4IGMxYzFiZTFhNjk2MmYuLmUyYzlmZTNmN2E3YmEgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9kZXYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NvcmUvZGV2LmNcbkBAIC03NTAsNDEgJiM0Mzs3NTAsMzcgQEAgc3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlX3BhdGggKmRldl9md2RfcGF0aChzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX3N0YWNrICpzdGFjaylcbiBcdHJldHVybiBcdTAwMjZzdGFjay1cdTAwM2VwYXRoW2tdO1xuIH1cbiBcbi1pbnQgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICpkYWRkcixcbiYjNDM7aW50IGRldl9maWxsX2ZvcndhcmRfcGF0aChzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX2N0eCAqY3R4LFxuIFx0XHRcdCAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayAqc3RhY2spXG4ge1xuIFx0Y29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmxhc3RfZGV2O1xuLVx0c3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggY3R4ID0ge1xuLVx0XHQuZGV2XHQ9IGRldixcbi1cdH07XG4gXHRzdHJ1Y3QgbmV0X2RldmljZV9wYXRoICpwYXRoO1xuIFx0aW50IHJldCA9IDA7XG4gXG4tXHRtZW1jcHkoY3R4LmRhZGRyLCBkYWRkciwgc2l6ZW9mKGN0eC5kYWRkcikpO1xuIFx0c3RhY2stXHUwMDNlbnVtX3BhdGhzID0gMDtcbi1cdHdoaWxlIChjdHguZGV2IFx1MDAyNlx1MDAyNiBjdHguZGV2LVx1MDAzZW5ldGRldl9vcHMtXHUwMDNlbmRvX2ZpbGxfZm9yd2FyZF9wYXRoKSB7XG4tXHRcdGxhc3RfZGV2ID0gY3R4LmRldjtcbiYjNDM7XHR3aGlsZSAoY3R4LVx1MDAzZWRldiBcdTAwMjZcdTAwMjYgY3R4LVx1MDAzZWRldi1cdTAwM2VuZXRkZXZfb3BzLVx1MDAzZW5kb19maWxsX2ZvcndhcmRfcGF0aCkge1xuJiM0MztcdFx0bGFzdF9kZXYgPSBjdHgtXHUwMDNlZGV2O1xuIFx0XHRwYXRoID0gZGV2X2Z3ZF9wYXRoKHN0YWNrKTtcbiBcdFx0aWYgKCFwYXRoKVxuIFx0XHRcdHJldHVybiAtMTtcbiBcbiBcdFx0bWVtc2V0KHBhdGgsIDAsIHNpemVvZihzdHJ1Y3QgbmV0X2RldmljZV9wYXRoKSk7XG4tXHRcdHJldCA9IGN0eC5kZXYtXHUwMDNlbmV0ZGV2X29wcy1cdTAwM2VuZG9fZmlsbF9mb3J3YXJkX3BhdGgoXHUwMDI2Y3R4LCBwYXRoKTtcbiYjNDM7XHRcdHJldCA9IGN0eC1cdTAwM2VkZXYtXHUwMDNlbmV0ZGV2X29wcy1cdTAwM2VuZG9fZmlsbF9mb3J3YXJkX3BhdGgoY3R4LCBwYXRoKTtcbiBcdFx0aWYgKHJldCBcdTAwM2MgMClcbiBcdFx0XHRyZXR1cm4gLTE7XG4gXG4tXHRcdGlmIChXQVJOX09OX09OQ0UobGFzdF9kZXYgPT0gY3R4LmRldikpXG4mIzQzO1x0XHRpZiAoV0FSTl9PTl9PTkNFKGxhc3RfZGV2ID09IGN0eC1cdTAwM2VkZXYpKVxuIFx0XHRcdHJldHVybiAtMTtcbiBcdH1cbiBcbi1cdGlmICghY3R4LmRldilcbiYjNDM7XHRpZiAoIWN0eC1cdTAwM2VkZXYpXG4gXHRcdHJldHVybiByZXQ7XG4gXG4gXHRwYXRoID0gZGV2X2Z3ZF9wYXRoKHN0YWNrKTtcbiBcdGlmICghcGF0aClcbiBcdFx0cmV0dXJuIC0xO1xuIFx0cGF0aC1cdTAwM2V0eXBlID0gREVWX1BBVEhfRVRIRVJORVQ7XG4tXHRwYXRoLVx1MDAzZWRldiA9IGN0eC5kZXY7XG4mIzQzO1x0cGF0aC1cdTAwM2VkZXYgPSBjdHgtXHUwMDNlZGV2O1xuIFxuIFx0cmV0dXJuIHJldDtcbiB9XG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYyBiL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmNcbmluZGV4IDk4YzAzYjQ4N2Y1MjEuLmI5ZGY3NDUzZjc2MjAgMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jXG5AQCAtNTAsNiAmIzQzOzUwLDkgQEAgc3RhdGljIGludCBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKGNvbnN0IHN0cnVjdCBuZl9mbG93X3JvdXRlICpyb3V0ZSxcbiB7XG4gXHRjb25zdCB2b2lkICpkYWRkciA9IFx1MDAyNmN0LVx1MDAzZXR1cGxlaGFzaFshZGlyXS50dXBsZS5zcmMudTM7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gZHN0X2NhY2hlLVx1MDAzZWRldjtcbiYjNDM7XHRzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX2N0eCBjdHggPSB7XG4mIzQzO1x0XHQuZGV2ID0gZGV2LFxuJiM0MztcdH07XG4gXHRzdHJ1Y3QgbmVpZ2hib3VyICpuO1xuIFx0dTggbnVkX3N0YXRlO1xuIFxuQEAgLTcyLDcgJiM0Mzs3NSw5IEBAIHN0YXRpYyBpbnQgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmZfZmxvd19yb3V0ZSAqcm91dGUsXG4gXHRcdHJldHVybiAtMTtcbiBcbiBvdXQ6XG4tXHRyZXR1cm4gZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKGRldiwgaGEsIHN0YWNrKTtcbiYjNDM7XHRldGhlcl9hZGRyX2NvcHkoY3R4LmRhZGRyLCBoYSk7XG4mIzQzO1xuJiM0MztcdHJldHVybiBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoXHUwMDI2Y3R4LCBzdGFjayk7XG4gfVxuIFxuIHN0cnVjdCBuZnRfZm9yd2FyZF9pbmZvIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToyNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkZfRkxPV19UQUJMRSYjMzQ7LAogICAgJiMzNDtORlRfRkxPV19PRkZMT0FEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGV2X2ZpbGxfZm9yd2FyZF9wYXRoJiMzNDssCiAgICAmIzM0O25mdF9mbG93X3JvdXRlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzaWduYXR1cmUgYW5kIGltcGxlbWVudGF0aW9uIG9mIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2ssIGNoYW5naW5nIGhvdyB0aGUgYG5ldF9kZXZpY2VfcGF0aF9jdHhgIGlzIHBhc3NlZCBhbmQgYWNjZXNzZWQuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSB0aGUgbmV0ZmlsdGVyIGZsb3cgb2ZmbG9hZCBzdWJzeXN0ZW0gKGBuZnRfZmxvd19yb3V0ZWAgLVx1MDAzZSBgbmZ0X2Rldl9mb3J3YXJkX3BhdGhgIC1cdTAwM2UgYG5mdF9kZXZfZmlsbF9mb3J3YXJkX3BhdGhgKS4gU2luY2UgaXQgYWx0ZXJzIGNvcmUgbmV0d29ya2luZyBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgaXQgaXMgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGU5YjM0Zjk0M2I2M2MxN2VlMGNlNTNhYTNmZGEzMzMwZjQ0MGQyYTcKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyA1IDA5OjI0OjIyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMKaW5kZXggMzNkZGYwZDA3ODU1My4uNTMxODNhMTMyMTAwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jCkBAIC0yODMsMTQgJiM0MzsyODMsMTkgQEAgc3RhdGljIGludCBhaXJvaGFfcHBlX2dldF93ZG1hX2luZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmFkZHIsCiAJCQkJICAgIHN0cnVjdCBhaXJvaGFfd2RtYV9pbmZvICppbmZvKQogewogCXN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfc3RhY2sgc3RhY2s7CiYjNDM7CXN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4IGN0eCA9IHsKJiM0MzsJCS5kZXYgPSBkZXYsCiYjNDM7CX07CiAJc3RydWN0IG5ldF9kZXZpY2VfcGF0aCAqcGF0aDsKIAlpbnQgZXJyOwogCiAJaWYgKCFkZXYpCiAJCXJldHVybiAtRU5PREVWOwogCiYjNDM7CWV0aGVyX2FkZHJfY29weShjdHguZGFkZHIsIGFkZHIpOwomIzQzOwogCXJjdV9yZWFkX2xvY2soKTsKLQllcnIgPSBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoZGV2LCBhZGRyLCAmYW1wO3N0YWNrKTsKJiM0MzsJZXJyID0gZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKCZhbXA7Y3R4LCAmYW1wO3N0YWNrKTsKIAlyY3VfcmVhZF91bmxvY2soKTsKIAlpZiAoZXJyKQogCQlyZXR1cm4gZXJyOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfcHBlX29mZmxvYWQuYwppbmRleCBjYzhjNGVmODAzOGYzLi4xZWM0Njc4NGYwMTg3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfcHBlX29mZmxvYWQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfcHBlX29mZmxvYWQuYwpAQCAtOTIsNiAmIzQzOzkyLDkgQEAgc3RhdGljIGludAogbXRrX2Zsb3dfZ2V0X3dkbWFfaW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqYWRkciwgc3RydWN0IG10a193ZG1hX2luZm8gKmluZm8pCiB7CiAJc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayBzdGFjazsKJiM0MzsJc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggY3R4ID0gewomIzQzOwkJLmRldiA9IGRldiwKJiM0MzsJfTsKIAlzdHJ1Y3QgbmV0X2RldmljZV9wYXRoICpwYXRoOwogCWludCBlcnI7CiAKQEAgLTEwMSw4ICYjNDM7MTA0LDEwIEBAIG10a19mbG93X2dldF93ZG1hX2luZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmFkZHIsIHN0cnVjdCBtdGtfd2RtYV9pCiAJaWYgKCFJU19FTkFCTEVEKENPTkZJR19ORVRfTUVESUFURUtfU09DX1dFRCkpCiAJCXJldHVybiAtMTsKIAomIzQzOwlldGhlcl9hZGRyX2NvcHkoY3R4LmRhZGRyLCBhZGRyKTsKJiM0MzsKIAlyY3VfcmVhZF9sb2NrKCk7Ci0JZXJyID0gZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKGRldiwgYWRkciwgJmFtcDtzdGFjayk7CiYjNDM7CWVyciA9IGRldl9maWxsX2ZvcndhcmRfcGF0aCgmYW1wO2N0eCwgJmFtcDtzdGFjayk7CiAJcmN1X3JlYWRfdW5sb2NrKCk7CiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmggYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oCmluZGV4IDhkYjI1Yjc5NTczZTMuLmQyZjU0NTAxNmY3ZjYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaApAQCAtMzQyNSw3ICYjNDM7MzQyNSw3IEBAIHZvaWQgZGV2X3JlbW92ZV9vZmZsb2FkKHN0cnVjdCBwYWNrZXRfb2ZmbG9hZCAqcG8pOwogCiBpbnQgZGV2X2dldF9pZmxpbmsoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CiBpbnQgZGV2X2ZpbGxfbWV0YWRhdGFfZHN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpOwotaW50IGRldl9maWxsX2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqZGFkZHIsCiYjNDM7aW50IGRldl9maWxsX2ZvcndhcmRfcGF0aChzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX2N0eCAqY3R4LAogCQkJICBzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX3N0YWNrICpzdGFjayk7CiBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2X2dldF9ieV9uYW1lKHN0cnVjdCBuZXQgKm5ldCwgY29uc3QgY2hhciAqbmFtZSk7CiBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2X2dldF9ieV9uYW1lX3JjdShzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IGNoYXIgKm5hbWUpOwpkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZGV2LmMgYi9uZXQvY29yZS9kZXYuYwppbmRleCBjMWMxYmUxYTY5NjJmLi5lMmM5ZmUzZjdhN2JhIDEwMDY0NAotLS0gYS9uZXQvY29yZS9kZXYuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvY29yZS9kZXYuYwpAQCAtNzUwLDQxICYjNDM7NzUwLDM3IEBAIHN0YXRpYyBzdHJ1Y3QgbmV0X2RldmljZV9wYXRoICpkZXZfZndkX3BhdGgoc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayAqc3RhY2spCiAJcmV0dXJuICZhbXA7c3RhY2stJmd0O3BhdGhba107CiB9CiAKLWludCBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmRhZGRyLAomIzQzO2ludCBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggKmN0eCwKIAkJCSAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayAqc3RhY2spCiB7CiAJY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmxhc3RfZGV2OwotCXN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4IGN0eCA9IHsKLQkJLmRldgk9IGRldiwKLQl9OwogCXN0cnVjdCBuZXRfZGV2aWNlX3BhdGggKnBhdGg7CiAJaW50IHJldCA9IDA7CiAKLQltZW1jcHkoY3R4LmRhZGRyLCBkYWRkciwgc2l6ZW9mKGN0eC5kYWRkcikpOwogCXN0YWNrLSZndDtudW1fcGF0aHMgPSAwOwotCXdoaWxlIChjdHguZGV2ICZhbXA7JmFtcDsgY3R4LmRldi0mZ3Q7bmV0ZGV2X29wcy0mZ3Q7bmRvX2ZpbGxfZm9yd2FyZF9wYXRoKSB7Ci0JCWxhc3RfZGV2ID0gY3R4LmRldjsKJiM0MzsJd2hpbGUgKGN0eC0mZ3Q7ZGV2ICZhbXA7JmFtcDsgY3R4LSZndDtkZXYtJmd0O25ldGRldl9vcHMtJmd0O25kb19maWxsX2ZvcndhcmRfcGF0aCkgewomIzQzOwkJbGFzdF9kZXYgPSBjdHgtJmd0O2RldjsKIAkJcGF0aCA9IGRldl9md2RfcGF0aChzdGFjayk7CiAJCWlmICghcGF0aCkKIAkJCXJldHVybiAtMTsKIAogCQltZW1zZXQocGF0aCwgMCwgc2l6ZW9mKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGgpKTsKLQkJcmV0ID0gY3R4LmRldi0mZ3Q7bmV0ZGV2X29wcy0mZ3Q7bmRvX2ZpbGxfZm9yd2FyZF9wYXRoKCZhbXA7Y3R4LCBwYXRoKTsKJiM0MzsJCXJldCA9IGN0eC0mZ3Q7ZGV2LSZndDtuZXRkZXZfb3BzLSZndDtuZG9fZmlsbF9mb3J3YXJkX3BhdGgoY3R4LCBwYXRoKTsKIAkJaWYgKHJldCAmbHQ7IDApCiAJCQlyZXR1cm4gLTE7CiAKLQkJaWYgKFdBUk5fT05fT05DRShsYXN0X2RldiA9PSBjdHguZGV2KSkKJiM0MzsJCWlmIChXQVJOX09OX09OQ0UobGFzdF9kZXYgPT0gY3R4LSZndDtkZXYpKQogCQkJcmV0dXJuIC0xOwogCX0KIAotCWlmICghY3R4LmRldikKJiM0MzsJaWYgKCFjdHgtJmd0O2RldikKIAkJcmV0dXJuIHJldDsKIAogCXBhdGggPSBkZXZfZndkX3BhdGgoc3RhY2spOwogCWlmICghcGF0aCkKIAkJcmV0dXJuIC0xOwogCXBhdGgtJmd0O3R5cGUgPSBERVZfUEFUSF9FVEhFUk5FVDsKLQlwYXRoLSZndDtkZXYgPSBjdHguZGV2OwomIzQzOwlwYXRoLSZndDtkZXYgPSBjdHgtJmd0O2RldjsKIAogCXJldHVybiByZXQ7CiB9CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jIGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYwppbmRleCA5OGMwM2I0ODdmNTIxLi5iOWRmNzQ1M2Y3NjIwIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMKQEAgLTUwLDYgJiM0Mzs1MCw5IEBAIHN0YXRpYyBpbnQgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmZfZmxvd19yb3V0ZSAqcm91dGUsCiB7CiAJY29uc3Qgdm9pZCAqZGFkZHIgPSAmYW1wO2N0LSZndDt0dXBsZWhhc2hbIWRpcl0udHVwbGUuc3JjLnUzOwogCXN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBkc3RfY2FjaGUtJmd0O2RldjsKJiM0MzsJc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggY3R4ID0gewomIzQzOwkJLmRldiA9IGRldiwKJiM0MzsJfTsKIAlzdHJ1Y3QgbmVpZ2hib3VyICpuOwogCXU4IG51ZF9zdGF0ZTsKIApAQCAtNzIsNyAmIzQzOzc1LDkgQEAgc3RhdGljIGludCBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKGNvbnN0IHN0cnVjdCBuZl9mbG93X3JvdXRlICpyb3V0ZSwKIAkJcmV0dXJuIC0xOwogCiBvdXQ6Ci0JcmV0dXJuIGRldl9maWxsX2ZvcndhcmRfcGF0aChkZXYsIGhhLCBzdGFjayk7CiYjNDM7CWV0aGVyX2FkZHJfY29weShjdHguZGFkZHIsIGhhKTsKJiM0MzsKJiM0MzsJcmV0dXJuIGRldl9maWxsX2ZvcndhcmRfcGF0aCgmYW1wO2N0eCwgc3RhY2spOwogfQogCiBzdHJ1Y3QgbmZ0X2ZvcndhcmRfaW5mbyB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4NTQKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAzODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVmYWN0b3JpbmcgYGRldl9maWxsX2ZvcndhcmRfcGF0aGAgLSBXb3J0aHkgRnV6emluZyBUYXJnZXQ/KioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGNoYW5naW5nIHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgb2YgYGRldl9maWxsX2ZvcndhcmRfcGF0aGAuIFByZXZpb3VzbHksIGl0IHdhcyB0YWtpbmcgdGhlIGRldmljZSBhbmQgZGVzdGluYXRpb24gYWRkcmVzcyBkaXJlY3RseTogYChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqZGFkZHIsIHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfc3RhY2sgKnN0YWNrKWAuIE5vdywgaXQmIzM5O3MgYmVlbiB1cGRhdGVkIHRvIHRha2UgYSBjb250ZXh0IHN0cnVjdDogYChzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX2N0eCAqY3R4LCBzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX3N0YWNrICpzdGFjaylgLiBUaGUgY2FsbGVycyBhcmUgYWxsIHVwZGF0ZWQgdG8gaW5pdGlhbGl6ZSB0aGlzIGBuZXRfZGV2aWNlX3BhdGhfY3R4YCBhbmQgcGFzcyBpdCBhbG9uZy4KClRoZSBhZmZlY3RlZCBjYWxsZXJzIEkgc2VlIGFyZSBgYWlyb2hhX3BwZV9nZXRfd2RtYV9pbmZvYCBpbiB0aGUgQWlyb2hhIEV0aGVybmV0IGRyaXZlciwgYG10a19mbG93X2dldF93ZG1hX2luZm9gIGluIHRoZSBNZWRpYVRlayBkcml2ZXIsIGFuZCBgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aGAsIHdoaWNoIHNlZW1zIHRvIGJlIGNvbm5lY3RlZCB0byBuZXRmaWx0ZXIgZmxvdyB0YWJsZSBvZmZsb2FkLiBUaGlzIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgIGZ1bmN0aW9uIGl0c2VsZiBsaXZlcyBpbiBgbmV0L2NvcmUvZGV2LmNgLgoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBldmVuIHdvcnRoIGZ1enppbmcuIEl0JiMzOTtzIHJlYWxseSBqdXN0IGEgcmVmYWN0b3JpbmcsIHJpZ2h0PyBUaGUgY29yZSBsb2dpYyBvZiBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBzZWVtcyB0byBoYXZlIG9ubHkgYmVlbiAqc2xpZ2h0bHkqIGFkanVzdGVkIHRvIHVzZSBgY3R4LSZndDtkZXZgIGluc3RlYWQgb2YgdGhlIG9yaWdpbmFsLiBBbGwgdGhlIGNhbGxlcnMgbm93IHBhc3MgdGhpcyBuZXdseSBkZWZpbmVkIGFuZCBpbml0aWFsaXplZCBgY3R4YCBzdHJ1Y3QuCgpCdXQsIGlzIGl0IHJlYWNoYWJsZT8gWWVzLCBhbmQgdGhhdCYjMzk7cyB0aGUga2V5LiBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBpcyByZWFjaGFibGUgdmlhIGBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCwgd2hpY2ggaXMgcGFydCBvZiB0aGUgbmV0ZmlsdGVyIGZsb3cgdGFibGUgb2ZmbG9hZC4gVGhhdCBtYWtlcyB0aGlzIGEgdmlhYmxlIHRhcmdldCBmb3IgZnV6emluZy4KCk15IG5leHQgc3RlcCBpcyB0byBkcmlsbCBkb3duIGEgYml0IGFuZCB0cmFjZSBob3cgYG5mdF9kZXZfZmlsbF9mb3J3YXJkX3BhdGhgIGlzIGNhbGxlZC4gSXQmIzM5O3MgaW4gdGhlIGBuZl9mbG93X3RhYmxlX3BhdGguY2AgZmlsZSwgc28gdGhlIG5leHQgbGV2ZWwgb2YgYW5hbHlzaXMgd2lsbCBzdGFydCB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9MzY9c3RhdGljIGJvb2wgbmZ0X2lzX3ZhbGlkX2V0aGVyX2RldmljZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtNDQtXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjQ1OnN0YXRpYyBpbnQgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmZfZmxvd19yb3V0ZSAqcm91dGUsXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTQ2LVx0XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3RfY2FjaGUsXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYz0yNTE9c3RhdGljIGludCBuZnRfZGV2X2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTI2Mi1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM6MjYzOlx0aWYgKG5mdF9kZXZfZmlsbF9mb3J3YXJkX3BhdGgocm91dGUsIGRzdCwgY3QsIGRpciwgaGEsIFx1MDAyNnN0YWNrKSBcdTAwM2MgMCB8fFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0yNjQtXHQgICAgbmZ0X2Rldl9wYXRoX2luZm8oXHUwMDI2c3RhY2ssIFx1MDAyNmluZm8sIGhhLCBcdTAwMjZmdC1cdTAwM2VkYXRhKSBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTk1CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkludmVzdGlnYXRpbmcgdGhlIG5mdF9kZXZfZm9yd2FyZF9wYXRoIENhbGwgQ2hhaW4qKgoKUmlnaHQsIHNvIGBuZnRfZGV2X2ZvcndhcmRfcGF0aGAgaXMgYmVpbmcgaW52b2tlZCBmcm9tIHdpdGhpbiBgbmZfZmxvd190YWJsZV9wYXRoLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtPa2F5LCBsZXQmIzM5O3MgdHJhY2UgdGhpcyBjYWxsIHBhdGggYW5kIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuJiMzNDsgSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgYWxsIHRoZSBwbGFjZXMgd2hlcmUgYG5mdF9kZXZfZm9yd2FyZF9wYXRoYCBpcyBhY3R1YWxseSBiZWluZyAqY2FsbGVkKiBmcm9tIHdpdGhpbiB0aGUga2VybmVsLiBVbmRlcnN0YW5kaW5nIHRoZSBmdWxsIGNhbGwgZ3JhcGggaXMgY3J1Y2lhbCB0byBncmFzcCBob3cgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgdGhlIE5ldGZpbHRlciBmbG93IHRhYmxlIGFuZCwgc3BlY2lmaWNhbGx5LCBob3cgZGV2aWNlLWJhc2VkIGZvcndhcmRpbmcgZGVjaXNpb25zIGFyZSBiZWluZyBtYWRlIHdpdGhpbiB0aGUgbmZ0YWJsZXMgZnJhbWV3b3JrLiBUaGlzIGluaXRpYWwgc3RlcCBpcyBhIHByZXJlcXVpc2l0ZSBmb3IgYW55IGRlZXBlciBhbmFseXNpcyBJJiMzOTttIHBsYW5uaW5nIHRvIHBlcmZvcm0sIHN1Y2ggYXMgZGVidWdnaW5nIGEgZm9yd2FyZGluZyBpc3N1ZSBvciB0cnlpbmcgdG8gb3B0aW1pemUgdGhlIHRhYmxlIHBlcmZvcm1hbmNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mdF9kZXZfZm9yd2FyZF9wYXRoJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9MjEzPXN0YXRpYyBpbnQgbmZ0X2Zsb3dfdHVubmVsX3VwZGF0ZV9yb3V0ZShjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTI1MC1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM6MjUxOnN0YXRpYyBpbnQgbmZ0X2Rldl9mb3J3YXJkX3BhdGgoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTI1Mi1cdFx0XHRcdHN0cnVjdCBuZl9mbG93X3JvdXRlICpyb3V0ZSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jPTMwMD1pbnQgbmZ0X2Zsb3dfcm91dGUoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsIGNvbnN0IHN0cnVjdCBuZl9jb25uICpjdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTM0Mi1cdGlmIChyb3V0ZS1cdTAwM2V0dXBsZVtkaXJdLnhtaXRfdHlwZVx0PT0gRkxPV19PRkZMT0FEX1hNSVRfTkVJR0ggXHUwMDI2XHUwMDI2XG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjM0MzpcdCAgICBuZnRfZGV2X2ZvcndhcmRfcGF0aChwa3QsIHJvdXRlLCBjdCwgZGlyLCBmdCkgXHUwMDNjIDApXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTM0NC1cdFx0Z290byBlcnJfZHN0X3JlbGVhc2U7XG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0zNDYtXHRpZiAocm91dGUtXHUwMDNldHVwbGVbIWRpcl0ueG1pdF90eXBlID09IEZMT1dfT0ZGTE9BRF9YTUlUX05FSUdIIFx1MDAyNlx1MDAyNlxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYzozNDc6XHQgICAgbmZ0X2Rldl9mb3J3YXJkX3BhdGgocGt0LCByb3V0ZSwgY3QsICFkaXIsIGZ0KSBcdTAwM2MgMClcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMzQ4LVx0XHRnb3RvIGVycl9kc3RfcmVsZWFzZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Njc1CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgcXVlc3Rpb246CgoqKkRlY29uc3RydWN0aW5nIHRoZSBgbmZ0X2Zsb3dfcm91dGVgIENhbGwqKgoKT2theSwgc28gc29tZW9uZSB3YW50cyB0byBrbm93IHdoZXJlIHRoZSBgbmZ0X2Zsb3dfcm91dGVgIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tLiBUaGF0JiMzOTtzIGEgZnVuZGFtZW50YWwgZGVidWdnaW5nIG9yIGNvZGUgYW5hbHlzaXMgcXVlc3Rpb24sIGlzbiYjMzk7dCBpdD8gTGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byBrbm93IHRoZSBjb250ZXh0LiBJcyB0aGlzIGluIGEgc3BlY2lmaWMgY29kZWJhc2U/IElzIHRoaXMgYSByZXNlYXJjaCBwcm9qZWN0LCBvciBhIHByb2R1Y3Rpb24gZW52aXJvbm1lbnQ/IFRoYXQgbGV2ZWwgb2YgZGV0YWlsIGRyYXN0aWNhbGx5IGNoYW5nZXMgbXkgYXBwcm9hY2guCgpQcmVzdW1pbmcgSSBkb24mIzM5O3QgaGF2ZSB0aGF0IGluZm9ybWF0aW9uLCBJJiMzOTtkIGltbWVkaWF0ZWx5IGp1bXAgdG8gc29tZSB0ZWNobmlxdWVzLgoKKiAgICoqU3RhdGljIEFuYWx5c2lzOioqIEkmIzM5O2QgcmVhY2ggZm9yIHRvb2xzIGxpa2UgZ3JlcCwgb3IgYSBtb3JlIHNvcGhpc3RpY2F0ZWQgY29kZSBzZWFyY2ggdG9vbCBpZiBpdCYjMzk7cyBhIGxhcmdlciBwcm9qZWN0IGFuZCBJIGtub3cgdGhlIGxhbmd1YWdlLiBJJiMzOTtkIGJlIGxvb2tpbmcgZm9yIGFsbCBvY2N1cnJlbmNlcyBvZiAmIzM0O25mdFxfZmxvd1xfcm91dGUmIzM0OyAoY2FzZS1zZW5zaXRpdmUgYXMgbmVlZGVkKSB0byBmaW5kIHBvdGVudGlhbCBjYWxsIHNpdGVzLiBBcmUgdGhlcmUgc2ltaWxhciBmdW5jdGlvbnMgdGhhdCBhbHNvIGNhbGwgaXQ/CiogICAqKkR5bmFtaWMgQW5hbHlzaXM6KiogSWYgdGhlIGNvZGUgaXMgcnVubmluZywgYSBkZWJ1Z2dlciBvciBwcm9maWxlciBiZWNvbWVzIG15IGZyaWVuZC4gSSYjMzk7ZCBzZXQgYSBicmVha3BvaW50IGF0IHRoZSBlbnRyeSBvZiBgbmZ0X2Zsb3dfcm91dGVgIGFuZCB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGggYmFjayB0byBzZWUgZXhhY3RseSB3aGljaCBmdW5jdGlvbnMgYXJlIGNhbGxpbmcgaXQuIFRoaXMgZ2l2ZXMgbWUgYSByZWFsLXRpbWUsIGNvbmNyZXRlIHZpZXcuCiogICAqKkNvZGUgRG9jdW1lbnRhdGlvbjoqKiBCZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBJIHdvdWxkIGNoZWNrIGlmIGFueSBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZS4gSGFzIHRoaXMgZnVuY3Rpb24gYmVlbiBkZXNjcmliZWQsIGFsb25nIHdpdGggaXRzIGZ1bmN0aW9uIG9yIHB1cnBvc2U/IFNvbWV0aW1lcywgY29tbWVudHMgYW5kIGRvY3VtZW50YXRpb24gaG9sZCB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdXNhZ2UgcGF0dGVybnMuCiogICAqKkRlcGVuZGVuY3kgSW5qZWN0aW9uL0ZyYW1ld29ya3M6KiogSWYgdGhpcyBmdW5jdGlvbiBpcyBwYXJ0IG9mIGEgbGFyZ2VyIGZyYW1ld29yayBvciB1c2VzIGRlcGVuZGVuY3kgaW5qZWN0aW9uLCB0aGF0IGltcGFjdHMgdGhlIHNlYXJjaC4gSSBtaWdodCBuZWVkIHRvIGNvbnNpZGVyIGhvdyB0aGUgZnJhbWV3b3JrIGhhbmRsZXMgZnVuY3Rpb24gY2FsbHMgb3Igd2hhdCBjb25maWd1cmF0aW9uIGZpbGVzIGFyZSBwcmVzZW50LgoqICAgKipSZXZlcnNlIEVuZ2luZWVyaW5nIChJZiBOZWNlc3NhcnkpOioqIElmIHRoZSBjb2RlIGlzIG9iZnVzY2F0ZWQgb3IgaWYgdGhlcmUmIzM5O3Mgbm8gc291cmNlIGNvZGUgYXZhaWxhYmxlLCBJIG1pZ2h0IG5lZWQgdG8gcmV2ZXJzZSBlbmdpbmVlci4gVGhpcyBpcyBtb3JlIHRpbWUgY29uc3VtaW5nLCBidXQgdGhlIGlkZWEgd291bGQgYmUgdG8gYW5hbHl6ZSB0aGUgY29tcGlsZWQgY29kZSAoZGlzYXNzZW1ibHksIGV0Yy4pIHRvIGZpZ3VyZSBvdXQgdGhlIGNhbGxpbmcgaGllcmFyY2h5LgoKVGhlIGtleSBpcyBtZXRob2RpY2FsIGVsaW1pbmF0aW9uLiBTdGFydCB3aXRoIHRoZSBzaW1wbGVzdCwgbW9zdCBkaXJlY3QgbWV0aG9kcyAoc3RhdGljIGFuYWx5c2lzKSBhbmQgZ3JhZHVhbGx5IG1vdmUgdG8gbW9yZSBpbnZvbHZlZCB0ZWNobmlxdWVzIGlmIG5lZWRlZC4gVGhlIGdvYWwgaXMgdG8gZXN0YWJsaXNoIHRoZSBjYWxsIHN0YWNrLCBzbyBJIGNhbiB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGFuZCBpbnRlbnQgb2YgdGhlIGBuZnRfZmxvd19yb3V0ZWAgY2FsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZnRfZmxvd19yb3V0ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZS5oPTI0Nz1zdHJ1Y3QgbmZ0X3BrdGluZm87XG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZS5oOjI0ODppbnQgbmZ0X2Zsb3dfcm91dGUoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsIGNvbnN0IHN0cnVjdCBuZl9jb25uICpjdCxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlLmgtMjQ5LVx0XHQgICBzdHJ1Y3QgbmZfZmxvd19yb3V0ZSAqcm91dGUsIGVudW0gaXBfY29ubnRyYWNrX2RpciBkaXIsXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYz0yNTE9c3RhdGljIGludCBuZnRfZGV2X2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTI5OS1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM6MzAwOmludCBuZnRfZmxvd19yb3V0ZShjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCwgY29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0LFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0zMDEtXHRcdCAgIHN0cnVjdCBuZl9mbG93X3JvdXRlICpyb3V0ZSwgZW51bSBpcF9jb25udHJhY2tfZGlyIGRpcixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTM1Ni19XG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjM1NzpFWFBPUlRfU1lNQk9MX0dQTChuZnRfZmxvd19yb3V0ZSk7XG4tLVxubmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmM9NTA9c3RhdGljIHZvaWQgbmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcbi0tXG5uZXQvbmV0ZmlsdGVyL25mdF9mbG93X29mZmxvYWQuYy0xMDgtXHRkaXIgPSBDVElORk8yRElSKGN0aW5mbyk7XG5uZXQvbmV0ZmlsdGVyL25mdF9mbG93X29mZmxvYWQuYzoxMDk6XHRpZiAobmZ0X2Zsb3dfcm91dGUocGt0LCBjdCwgXHUwMDI2cm91dGUsIGRpciwgcHJpdi1cdTAwM2VmbG93dGFibGUpIFx1MDAzYyAwKVxubmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmMtMTEwLVx0XHRnb3RvIGVycl9mbG93X3JvdXRlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2NjAKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqRXZhbHVhdGluZyBuZnRfZmxvd19vZmZsb2FkJiMzOTtzIEZ1enppbmcgUG90ZW50aWFsKioKClJpZ2h0LCBzbyBgbmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsYCBpcyB0aGUgZXZhbHVhdGlvbiBmdW5jdGlvbiBmb3IgdGhlIGBmbG93X29mZmxvYWRgIGV4cHJlc3Npb24gaW4gbmZ0YWJsZXMuIEdpdmVuIGl0cyByb2xlIGluIHN1Y2ggYSBrZXkgYXJlYSwgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoaXMgaXMgYSAqcHJpbWUqIHRhcmdldCBmb3IgZnV6emluZy4gRGVmaW5pdGVseSByZWFjaGFibGUsIGFuZCBkZWZpbml0ZWx5IHdvcnRoIGRpZ2dpbmcgaW50by4KCk5vdywgd2hpY2ggZnVuY3Rpb25zIGFyZSBtb2RpZmllZD8gQWhhLCBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBhbmQgYG5mdF9kZXZfZmlsbF9mb3J3YXJkX3BhdGhgLiBUaGVzZSBuZWVkIGNhcmVmdWwgc2NydXRpbnkuIExldCYjMzk7cyBzdGFydCB3aXRoIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgLiBXZSYjMzk7bGwgc2VlIHdoYXQga2luZCBvZiBpbnB1dHMgaXQgaGFuZGxlcywgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBicm9hZGVyIGNvbnRleHQsIGFuZCBsb29rIGZvciBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGV2X2ZpbGxfZm9yd2FyZF9wYXRoJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmM9MjgyPXN0YXRpYyBpbnQgYWlyb2hhX3BwZV9nZXRfd2RtYV9pbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICphZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMjk3LVx0cmN1X3JlYWRfbG9jaygpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzoyOTg6XHRlcnIgPSBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoXHUwMDI2Y3R4LCBcdTAwMjZzdGFjayk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTI5OS1cdHJjdV9yZWFkX3VubG9jaygpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jPTkyPW10a19mbG93X2dldF93ZG1hX2luZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmFkZHIsIHN0cnVjdCBtdGtfd2RtYV9pbmZvICppbmZvKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jLTEwOS1cdHJjdV9yZWFkX2xvY2soKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jOjExMDpcdGVyciA9IGRldl9maWxsX2ZvcndhcmRfcGF0aChcdTAwMjZjdHgsIFx1MDAyNnN0YWNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jLTExMS1cdHJjdV9yZWFkX3VubG9jaygpO1xuLS1cbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MzQyNz1pbnQgZGV2X2ZpbGxfbWV0YWRhdGFfZHN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpO1xuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaDozNDI4OmludCBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggKmN0eCxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMzQyOS1cdFx0XHQgIHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfc3RhY2sgKnN0YWNrKTtcbi0tXG5uZXQvODAyMXEvdmxhbl9kZXYuYz03NTY9c3RhdGljIGludCB2bGFuX2Rldl9nZXRfaWZsaW5rKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0LzgwMjFxL3ZsYW5fZGV2LmMtNzYyLVxubmV0LzgwMjFxL3ZsYW5fZGV2LmM6NzYzOnN0YXRpYyBpbnQgdmxhbl9kZXZfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggKmN0eCxcbm5ldC84MDIxcS92bGFuX2Rldi5jLTc2NC1cdFx0XHRcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlX3BhdGggKnBhdGgpXG4tLVxubmV0LzgwMjFxL3ZsYW5fZGV2LmM9MTA3OD1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHZsYW5fbmV0ZGV2X29wcyA9IHtcbi0tXG5uZXQvODAyMXEvdmxhbl9kZXYuYy0xMTA5LVx0Lm5kb19nZXRfaWZsaW5rXHRcdD0gdmxhbl9kZXZfZ2V0X2lmbGluayxcbm5ldC84MDIxcS92bGFuX2Rldi5jOjExMTA6XHQubmRvX2ZpbGxfZm9yd2FyZF9wYXRoXHQ9IHZsYW5fZGV2X2ZpbGxfZm9yd2FyZF9wYXRoLFxubmV0LzgwMjFxL3ZsYW5fZGV2LmMtMTExMS1cdC5uZG9faHd0c3RhbXBfZ2V0XHQ9IHZsYW5faHd0c3RhbXBfZ2V0LFxuLS1cbm5ldC9jb3JlL2Rldi5jPTc0Mz1zdGF0aWMgc3RydWN0IG5ldF9kZXZpY2VfcGF0aCAqZGV2X2Z3ZF9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfc3RhY2sgKnN0YWNrKVxuLS1cbm5ldC9jb3JlL2Rldi5jLTc1Mi1cbm5ldC9jb3JlL2Rldi5jOjc1MzppbnQgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4ICpjdHgsXG5uZXQvY29yZS9kZXYuYy03NTQtXHRcdFx0ICBzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX3N0YWNrICpzdGFjaylcbi0tXG5uZXQvY29yZS9kZXYuYy03ODYtfVxubmV0L2NvcmUvZGV2LmM6Nzg3OkVYUE9SVF9TWU1CT0xfR1BMKGRldl9maWxsX2ZvcndhcmRfcGF0aCk7XG5uZXQvY29yZS9kZXYuYy03ODgtXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9OTc5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaWVlZTgwMjExX21vbml0b3JpZl9vcHMgPSB7XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtOTg4LVxubmV0L21hYzgwMjExL2lmYWNlLmM6OTg5OnN0YXRpYyBpbnQgaWVlZTgwMjExX25ldGRldl9maWxsX2ZvcndhcmRfcGF0aChzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX2N0eCAqY3R4LFxubmV0L21hYzgwMjExL2lmYWNlLmMtOTkwLVx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgbmV0X2RldmljZV9wYXRoICpwYXRoKVxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTEwNDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpZWVlODAyMTFfZGF0YWlmXzgwMjNfb3BzID0ge1xuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTEwNTMtXHQubmRvX3NldF9tYWNfYWRkcmVzc1x0PSBpZWVlODAyMTFfY2hhbmdlX21hYyxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjEwNTQ6XHQubmRvX2ZpbGxfZm9yd2FyZF9wYXRoXHQ9IGllZWU4MDIxMV9uZXRkZXZfZmlsbF9mb3J3YXJkX3BhdGgsXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xMDU1LVx0Lm5kb19zZXR1cF90Y1x0XHQ9IGllZWU4MDIxMV9uZXRkZXZfc2V0dXBfdGMsXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYz0zNj1zdGF0aWMgYm9vbCBuZnRfaXNfdmFsaWRfZXRoZXJfZGV2aWNlKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy00NC1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM6NDU6c3RhdGljIGludCBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKGNvbnN0IHN0cnVjdCBuZl9mbG93X3JvdXRlICpyb3V0ZSxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtNDYtXHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdF9jYWNoZSxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTc5LVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYzo4MDpcdHJldHVybiBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoXHUwMDI2Y3R4LCBzdGFjayk7XG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTgxLX1cbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jPTI1MT1zdGF0aWMgaW50IG5mdF9kZXZfZm9yd2FyZF9wYXRoKGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMjYyLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYzoyNjM6XHRpZiAobmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aChyb3V0ZSwgZHN0LCBjdCwgZGlyLCBoYSwgXHUwMDI2c3RhY2spIFx1MDAzYyAwIHx8XG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTI2NC1cdCAgICBuZnRfZGV2X3BhdGhfaW5mbyhcdTAwMjZzdGFjaywgXHUwMDI2aW5mbywgaGEsIFx1MDAyNmZ0LVx1MDAzZWRhdGEpIFx1MDAzYyAwKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NTM0CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMjIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIEZvcndhcmQgUGF0aCBGdW5jdGlvbmFsaXR5KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCYjMzk7cyBtb2RpZnlpbmcgYGRldl9maWxsX2ZvcndhcmRfcGF0aGAgYW5kIGEgZmV3IGZ1bmN0aW9ucyB0aGF0IGNhbGwgaXQ6IGBhaXJvaGFfcHBlX2dldF93ZG1hX2luZm9gLCBgbXRrX2Zsb3dfZ2V0X3dkbWFfaW5mb2AsIGFuZCBgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aGAuIFJpZ2h0IGF3YXksIEkgc2VlIHRoaXMgdG91Y2hlcyBzb21lIHByZXR0eSBjb3JlIG5ldHdvcmsgZnVuY3Rpb25hbGl0eSwgcGFydGljdWxhcmx5IG5ldGZpbHRlciBmbG93IG9mZmxvYWQgYW5kIGhhcmR3YXJlIG9mZmxvYWQgcGF0aHMuIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgIGl0c2VsZiBsaXZlcyBpbiBgbmV0L2NvcmUvZGV2LmNgLgoKR2l2ZW4gaXRzIHBvc2l0aW9uIGFuZCB0aGUgbmF0dXJlIG9mIHRoZSBjYWxsZXJzLCB0aGlzIGxvb2tzIGxpa2UgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEl0JiMzOTtzIGludGltYXRlbHkgaW52b2x2ZWQgd2l0aCBob3cgbmV0d29yayB0cmFmZmljIGlzIHJvdXRlZCwgZXNwZWNpYWxseSB3aXRoIG9mZmxvYWRpbmcuIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIGRhdGEgc3RydWN0dXJlcyBhbmQgaG93IHRoaXMgaW50ZXJhY3RzIHdpdGggdGhlIHZhcmlvdXMgb2ZmbG9hZCBtZWNoYW5pc21zLCBhbmQgSSB3YW50IHRvIG1ha2Ugc3VyZSB0aGUgZWRnZSBjYXNlcyBhcmUgd2VsbCB0ZXN0ZWQuCgpOb3csIGBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBpcyBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCYjMzk7cyBsaW5rZWQgdG8gYG5mdF9mbG93X29mZmxvYWRfZXZhbGAsIHdoaWNoIGlzIHRoZSB3b3JraG9yc2UgYmVoaW5kIHRoZSBgZmxvd19vZmZsb2FkYCBleHByZXNzaW9uIGluIG5mdGFibGVzLiBUaGlzIHN1Z2dlc3RzIHRoYXQgYW55IGlzc3VlcyBoZXJlIGNvdWxkIHBvdGVudGlhbGx5IGxlYWQgdG8gc2VyaW91cyBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMgd2l0aGluIG5mdGFibGVzIGNvbmZpZ3VyYXRpb25zIGlmIHNvbWVvbmUgdXNlcyB0aGUgYGZsb3dfb2ZmbG9hZGAgZXhwcmVzc2lvbi4KCkJlZm9yZSBJIGRpZyBpbiBkZWVwZXIsIEkgd2FudCB0byB2ZXJpZnkgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBCYXNlZCBvbiBteSB1bmRlcnN0YW5kaW5nLCBgQ09ORklHX05GX0ZMT1dfVEFCTEVgIGlzIHByb2JhYmx5IHJlcXVpcmVkIGZvciBhbnkgY29kZSByZWxhdGVkIHRvIGBuZl9mbG93X3RhYmxlX3BhdGguY2AsIGFuZCBgQ09ORklHX05GVF9GTE9XX09GRkxPQURgIGlzIG5lZWRlZCBmb3IgYG5mdF9mbG93X29mZmxvYWRfZXZhbGAuIExldCBtZSBqdXN0IGRvdWJsZSBjaGVjayB0aG9zZSBjb25maWd1cmF0aW9ucyByZWFsIHF1aWNrLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSB0aGUgcmlnaHQgdGVzdGluZyBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jPTQxPXN0YXRpYyB2b2lkIGZsb3dfb2ZmbG9hZF9jdF90Y3Aoc3RydWN0IG5mX2Nvbm4gKmN0KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jLTQ5LVxubmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmM6NTA6c3RhdGljIHZvaWQgbmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcbm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jLTUxLVx0XHRcdFx0ICBzdHJ1Y3QgbmZ0X3JlZ3MgKnJlZ3MsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmM9MjE4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmZ0X2V4cHJfb3BzIG5mdF9mbG93X29mZmxvYWRfb3BzID0ge1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jLTIyMC1cdC5zaXplXHRcdD0gTkZUX0VYUFJfU0laRShzaXplb2Yoc3RydWN0IG5mdF9mbG93X29mZmxvYWQpKSxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jOjIyMTpcdC5ldmFsXHRcdD0gbmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsLFxubmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmMtMjIyLVx0LmluaXRcdFx0PSBuZnRfZmxvd19vZmZsb2FkX2luaXQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk0MzEKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqS2NvbmZpZyBJbnNwZWN0aW9uIGZvciBuZnRfZmxvd19vZmZsb2FkLmMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW4uIEZpcnN0IG9yZGVyIG9mIGJ1c2luZXNzOiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIEtjb25maWcgZmlsZSBmb3IgYG5mdF9mbG93X29mZmxvYWQuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMsIHRoZSBidWlsZCBjb25maWd1cmF0aW9ucywgYW5kIHdoYXQgdHJpZ2dlcnMgdGhpcyBtb2R1bGUgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGtlcm5lbC4gVGhpcyBpcyBmb3VuZGF0aW9uYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgbmV0ZmlsdGVyIGZsb3cgb2ZmbG9hZCBpbXBsZW1lbnRhdGlvbi4gSSYjMzk7bSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhlIGludHJpY2FjaWVzIG9mIGl0cyBkZXBlbmRlbmNpZXMgYW5kIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBkaXJlY3RpdmVzLiBBcmUgdGhlcmUgYW55IGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBkZXBlbmRlbmNpZXM/IEFyZSB0aGVyZSBzcGVjaWZpYyBOSUMgZHJpdmVycyBpdCByZWxpZXMgdXBvbj8gS25vd2luZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHdpbGwgcXVpY2tseSBpbGx1bWluYXRlIHRoZSBzY29wZSBvZiB0aGlzIHBhcnRpY3VsYXIgZnVuY3Rpb25hbGl0eSBhbmQgd2hldGhlciBvciBub3QgaXQgcGxheXMgbmljZWx5IHdpdGggb3RoZXIgbmV0d29ya2luZyBmZWF0dXJlcy4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF0JiMzOTtzIHdoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25mdF9mbG93X29mZmxvYWRcXC5vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTEyPW9iai0kKENPTkZJR19ORlRfQ1QpXHRcdCYjNDM7PSBuZnRfY3Qub1xubmV0L25ldGZpbHRlci9NYWtlZmlsZToxMTM6b2JqLSQoQ09ORklHX05GVF9GTE9XX09GRkxPQUQpXHQmIzQzOz0gbmZ0X2Zsb3dfb2ZmbG9hZC5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTExNC1vYmotJChDT05GSUdfTkZUX0xJTUlUKVx0XHQmIzQzOz0gbmZ0X2xpbWl0Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTc0MwoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgbXlzZWxmOgoKKipLY29uZmlnIERpdmUgZm9yIG5mX2Zsb3dfdGFibGVfcGF0aC5vKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIGBuZl9mbG93X3RhYmxlX3BhdGgub2AuIFJpZ2h0LCBmaXJzdCBzdGVwLCBhcyBhbHdheXMsIGlzIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHNlYXJjaCB0aHJvdWdoIHRoZSByZWxldmFudCBLY29uZmlnIHRyZWVzLCBzdGFydGluZyB3aXRoIHRoZSBuZXR3b3JraW5nIGNvcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgY29uZmlndXJhdGlvbiBvcHRpb25zIGRpcmVjdGx5IGNvbnRyb2wgdGhlIGluY2x1c2lvbiBvZiB0aGlzIG9iamVjdCBmaWxlLiBJcyBpdCB0aWVkIHRvIGEgc3BlY2lmaWMgZmVhdHVyZSwgYSBnZW5lcmFsIG5ldHdvcmtpbmcgc3Vic3lzdGVtLCBvciBzb21ldGhpbmcgbW9yZSBncmFudWxhcj8gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYGNvbmZpZ2Agc3ltYm9scyB0aGF0IG1pZ2h0IGRpcmVjdGx5IG1lbnRpb24gYG5mX2Zsb3dfdGFibGVfcGF0aGAsIG9yLCBtb3JlIGxpa2VseSwgc3ltYm9scyB0aGF0IGNvbnRyb2wgYSBicm9hZGVyIGZlYXR1cmUgc2V0IHdpdGhpbiB3aGljaCB0aGlzIG1vZHVsZSByZXNpZGVzLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmNpZXMgdXAgdGhlIEtjb25maWcgdHJlZSBpZiBpdCYjMzk7cyBub3QgaW1tZWRpYXRlbHkgb2J2aW91cy4gS25vd2luZyB0aGlzIHdpbGwgaW5mb3JtIGlmIGl0JiMzOTtzIGNvbmZpZ3VyYWJsZSBvciBpZiBpdCBjb21lcyBvbiBhcyBhIHNpZGUgZWZmZWN0LiBUaGVuIEkgY2FuIGNyZWF0ZSBhIG1vcmUgaW5mb3JtZWQgcGxhbiBhbmQgZGV0ZXJtaW5lIGlmIG15IGVmZm9ydHMgYXJlIGdvaW5nIHRvIHlpZWxkIG1vcmUgaW5zaWdodHMuIEnigJlsbCBtYWtlIHN1cmUgdG8gbm90ZSB0aGUgcmVsZXZhbnQgS2NvbmZpZyBzbmlwcGV0cyBhbmQgYW55IHJlbGV2YW50IGRlcGVuZGVuY2llcyBJIGVuY291bnRlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfZmxvd190YWJsZV9wYXRoXFwubyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTE0Mz1uZl9mbG93X3RhYmxlLW9ianNcdFx0Oj0gbmZfZmxvd190YWJsZV9jb3JlLm8gbmZfZmxvd190YWJsZV9pcC5vIFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjE0NDpcdFx0XHRcdCAgIG5mX2Zsb3dfdGFibGVfcGF0aC5vIFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTE0NS1cdFx0XHRcdCAgIG5mX2Zsb3dfdGFibGVfb2ZmbG9hZC5vIG5mX2Zsb3dfdGFibGVfeGRwLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAxNDUKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhcyBpZiBpdCB3ZXJlIG15IHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE5ldGZpbHRlciBNYWtlZmlsZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBuZl9mbG93X3RhYmxlLW9ianNgIGFuZCB0aGUgYnJvYWRlciBOZXRmaWx0ZXIgZnJhbWV3b3JrLiBNeSBmaXJzdCBtb3ZlIGlzIHRvIGhlYWQgc3RyYWlnaHQgaW50byB0aGUgYG5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVgLiBUaGlzIGZpbGUgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGVzZSBvYmplY3QgZmlsZXMgYXJlIGNvbXBpbGVkLCBsaW5rZWQsIGFuZCB1bHRpbWF0ZWx5IGludGVncmF0ZWQgaW50byB0aGUga2VybmVsIG1vZHVsZSBzeXN0ZW0uIEl04oCZbGwgcmV2ZWFsIHRoZSBkZXBlbmRlbmNpZXMsIHRoZSBidWlsZCBmbGFncyB1c2VkLCBhbmQgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRoYXQmIzM5O3MgZ29pbmcgb24uIEkmIzM5O20gaG9waW5nIHRvIGdldCBhIHF1aWNrIG92ZXJ2aWV3IGFuZCBpZGVudGlmeSBhbnkgcG90ZW50aWFsIGFyZWFzIG9mIGNvbmNlcm4gb3Igb3Bwb3J0dW5pdGllcyBmb3Igb3B0aW1pemF0aW9uIHdpdGhpbiB0aGUgZmxvdyB0YWJsZSBpbXBsZW1lbnRhdGlvbi4gSXQmIzM5O3MgdGltZSB0byB0cmFjZSB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgc2VlIGhvdyB0aGUgZmxvdyB0YWJsZSBmaXRzIGludG8gdGhlIGxhcmdlciBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9mbG93X3RhYmxlLW9ianMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZT0xNDI9b2JqLSQoQ09ORklHX05GX0ZMT1dfVEFCTEUpXHQmIzQzOz0gbmZfZmxvd190YWJsZS5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjE0MzpuZl9mbG93X3RhYmxlLW9ianNcdFx0Oj0gbmZfZmxvd190YWJsZV9jb3JlLm8gbmZfZmxvd190YWJsZV9pcC5vIFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTE0NC1cdFx0XHRcdCAgIG5mX2Zsb3dfdGFibGVfcGF0aC5vIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDczCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmtpbmcgUGF0Y2ggZm9yIFBvdGVudGlhbCBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgbWluZCBob25lcyBpbiBvbiB0aGUga2V5IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBpbnZvbHZlZDogYENPTkZJR19ORl9GTE9XX1RBQkxFYCBhbmQgYENPTkZJR19ORlRfRkxPV19PRkZMT0FEYC4gVGhhdCYjMzk7cyB0aGUgc3RhcnRpbmcgcG9pbnQuIEJ1dCwgd2hhdCBhYm91dCB0aGUgY29yZSBmdW5jdGlvbiBpdHNlbGYsIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgPyBJdCYjMzk7cyBpbiBgbmV0L2NvcmUvZGV2LmNgLCBzbyBpdCYjMzk7cyBhbHdheXMgY29tcGlsZWQgaW4uIFRoZSBwYXRjaCBzZWVtcyB0byBiZSBjaGFuZ2luZyBob3cgaXQgYWNjZXNzZXMgdGhlIGBkZXZgIGZpZWxkIHdpdGhpbiBhIGNvbnRleHQgc3RydWN0dXJlLCB1c2luZyBgY3R4LSZndDtkZXZgIGluc3RlYWQgb2YgdGhlIG9sZCBgY3R4LmRldmAg4oCTIHR5cGljYWwgcG9pbnRlciB2cy4gdmFsdWUgYWNjZXNzIGNvcnJlY3Rpb24uIFRoZXnigJl2ZSB1cGRhdGVkIGFsbCB0aGUgY2FsbCBzaXRlcywgd2hpY2ggaXMgZ29vZC4KClRoZSByZWFsIHF1ZXN0aW9uIGlzOiBpcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz8gQWJzb2x1dGVseSEgQW55IGZ1bmN0aW9uYWwgY2hhbmdlIGRlZXAgd2l0aGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2sgaXMgcmlwZSBmb3IgZnV6emluZy4gVGhlIHBvdGVudGlhbCBpbXBhY3QgaXMgdG9vIHNpZ25pZmljYW50IHRvIGlnbm9yZS4KClRoZXJlZm9yZSwgdGhlIG1haW4gZnVuY3Rpb25zIHRvIHB1dCB1bmRlciB0aGUgbWljcm9zY29wZSBhcmUgYGRldl9maWxsX2ZvcndhcmRfcGF0aGAsIGBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCwgYG5mdF9mbG93X3JvdXRlYCwgYW5kIGBuZnRfZmxvd19vZmZsb2FkX2V2YWxgLiBJIG5lZWQgdG8gemVybyBpbiBvbiB0aGVzZSBmb3IgZm9jdXNlZCB0ZXN0aW5nLiBBbmQgSSBzaG91bGQgcHJvYmFibHkgdmVyaWZ5IGlmIGBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBpcyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCBjb3VsZCBpbXBhY3QgaG93IGVhc2lseSBpdCBjYW4gYmUgcmVhY2hlZCBpbiBteSBmdXp6aW5nIHNldHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9MzY9c3RhdGljIGJvb2wgbmZ0X2lzX3ZhbGlkX2V0aGVyX2RldmljZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtNDQtXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjQ1OnN0YXRpYyBpbnQgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmZfZmxvd19yb3V0ZSAqcm91dGUsXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTQ2LVx0XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3RfY2FjaGUsXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYz0yNTE9c3RhdGljIGludCBuZnRfZGV2X2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTI2Mi1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM6MjYzOlx0aWYgKG5mdF9kZXZfZmlsbF9mb3J3YXJkX3BhdGgocm91dGUsIGRzdCwgY3QsIGRpciwgaGEsIFx1MDAyNnN0YWNrKSBcdTAwM2MgMCB8fFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0yNjQtXHQgICAgbmZ0X2Rldl9wYXRoX2luZm8oXHUwMDI2c3RhY2ssIFx1MDAyNmluZm8sIGhhLCBcdTAwMjZmdC1cdTAwM2VkYXRhKSBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEyNzEKCQkJCQkJCW91dHB1dDogMTkKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqQXNzZXNzaW5nIFBvdGVudGlhbCBTdGF0aWMgRnVuY3Rpb25zIHdpdGhpbiB0aGUgTmV0ZmlsdGVyIEZyYW1ld29yayoqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIE5ldGZpbHRlciBjb2RlLCBzcGVjaWZpY2FsbHkgdGhlIGZ1bmN0aW9uIGBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYC4gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgb25lIGlzIGluZGVlZCBzdGF0aWNhbGx5IGRlZmluZWQuIE5vdywgSSBuZWVkIHRvIGV4cGFuZCBteSBzZWFyY2guIFRoZSBjcnVjaWFsIHF1ZXN0aW9uIGF0IGhhbmQgbm93IGlzOiB3aGF0IGFib3V0IGBuZnRfZmxvd19yb3V0ZWA/IElzIHRoYXQgb25lIGFsc28gYSBzdGF0aWMgZnVuY3Rpb24/IEl0JiMzOTtzIGltcG9ydGFudCB0byBmaWd1cmUgdGhpcyBvdXQsIGFzIGtub3dpbmcgdGhpcyB3aWxsIHRlbGwgbWUgYSBnb29kIGRlYWwgYWJvdXQgaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZ0X2Zsb3dfcm91dGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7aW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGUuaD0yNDc9c3RydWN0IG5mdF9wa3RpbmZvO1xuaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGUuaDoyNDg6aW50IG5mdF9mbG93X3JvdXRlKGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0LCBjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3QsXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZS5oLTI0OS1cdFx0ICAgc3RydWN0IG5mX2Zsb3dfcm91dGUgKnJvdXRlLCBlbnVtIGlwX2Nvbm50cmFja19kaXIgZGlyLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9MjUxPXN0YXRpYyBpbnQgbmZ0X2Rldl9mb3J3YXJkX3BhdGgoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0yOTktXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjMwMDppbnQgbmZ0X2Zsb3dfcm91dGUoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsIGNvbnN0IHN0cnVjdCBuZl9jb25uICpjdCxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMzAxLVx0XHQgICBzdHJ1Y3QgbmZfZmxvd19yb3V0ZSAqcm91dGUsIGVudW0gaXBfY29ubnRyYWNrX2RpciBkaXIsXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0zNTYtfVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYzozNTc6RVhQT1JUX1NZTUJPTF9HUEwobmZ0X2Zsb3dfcm91dGUpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jPTUwPXN0YXRpYyB2b2lkIG5mdF9mbG93X29mZmxvYWRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXG4tLVxubmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmMtMTA4LVx0ZGlyID0gQ1RJTkZPMkRJUihjdGluZm8pO1xubmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmM6MTA5Olx0aWYgKG5mdF9mbG93X3JvdXRlKHBrdCwgY3QsIFx1MDAyNnJvdXRlLCBkaXIsIHByaXYtXHUwMDNlZmxvd3RhYmxlKSBcdTAwM2MgMClcbm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jLTExMC1cdFx0Z290byBlcnJfZmxvd19yb3V0ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDk6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE5MTEKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipBbmFseXppbmcgTmV0d29yayBGbG93IE9mZmxvYWRpbmcgQ29kZSoqCgpBbHJpZ2h0LCBzbyBgbmZ0X2Zsb3dfcm91dGVgIGFuZCBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBhcmUgYm90aCBleHBvcnRlZCwgbWVhbmluZyB0aGV5JiMzOTtyZSBhY2Nlc3NpYmxlIGZ1bmN0aW9ucy4gVGhhdCYjMzk7cyBnb29kIHRvIGtub3cg4oCTIGl0IHRlbGxzIG1lIHdoZXJlIHRoZXkmIzM5O3JlIGJlaW5nIHVzZWQgKmZyb20qLiBJIGltbWVkaWF0ZWx5IG5lZWQgdG8ga2VlcCB0aGF0IGluIG1pbmQgd2hlbiB0cmFjaW5nIGV4ZWN1dGlvbi4gQW5kLCBoZXksIGBuZnRfZmxvd19vZmZsb2FkX2V2YWxgIGlzIGRlY2xhcmVkIGFzICpzdGF0aWMqLiBSaWdodCwgc28gaXQmIzM5O3Mgb25seSB2aXNpYmxlIHdpdGhpbiBpdHMgb3duIGNvbXBpbGF0aW9uIHVuaXQuIE5vIGV4dGVybmFsIGRpcmVjdCBjYWxscyB0aGVyZSwgd2hpY2ggYWN0dWFsbHkgaGVscHMgcmVkdWNlIHRoZSBzY29wZSB0byBzZWFyY2ggZnJvbS4gTm93LCBsZXQmIzM5O3Mgc2VlLCB0aGUgbmV4dCB0aGluZyBJJiMzOTttIGdvaW5nIHRvIGRvIGlzIGRvdWJsZS1jaGVjayAqd2hvKiBpcyBjYWxsaW5nIHRoYXQgYGRldl9maWxsX2ZvcndhcmRfcGF0aGAgZnVuY3Rpb24uIEkgKm5lZWQqIHRvIHVuZGVyc3RhbmQgaXRzIHVzYWdlIHRvIGFjY3VyYXRlbHkgdHJhY2sgZG93biBob3cgaXQgZml0cyBpbnRvIHRoZSB3aG9sZSBmcmFtZXdvcmsuIEkmIzM5O20gZXNwZWNpYWxseSBpbnRlcmVzdGVkIGluIGxvb2tpbmcgYXQgYWxsIGNhbGwgc2l0ZXMgZm9yIGl0LCBmcm9tIHdoZXJlIEkmIzM5O2xsIGdldCBhbiBhY2N1cmF0ZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXZfZmlsbF9mb3J3YXJkX3BhdGgmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYz0yODI9c3RhdGljIGludCBhaXJvaGFfcHBlX2dldF93ZG1hX2luZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmFkZHIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0yOTctXHRyY3VfcmVhZF9sb2NrKCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jOjI5ODpcdGVyciA9IGRldl9maWxsX2ZvcndhcmRfcGF0aChcdTAwMjZjdHgsIFx1MDAyNnN0YWNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMtMjk5LVx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmM9OTI9bXRrX2Zsb3dfZ2V0X3dkbWFfaW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqYWRkciwgc3RydWN0IG10a193ZG1hX2luZm8gKmluZm8pXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmMtMTA5LVx0cmN1X3JlYWRfbG9jaygpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmM6MTEwOlx0ZXJyID0gZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKFx1MDAyNmN0eCwgXHUwMDI2c3RhY2spO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmMtMTExLVx0cmN1X3JlYWRfdW5sb2NrKCk7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0zNDI3PWludCBkZXZfZmlsbF9tZXRhZGF0YV9kc3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjM0Mjg6aW50IGRldl9maWxsX2ZvcndhcmRfcGF0aChzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX2N0eCAqY3R4LFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0zNDI5LVx0XHRcdCAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayAqc3RhY2spO1xuLS1cbm5ldC84MDIxcS92bGFuX2Rldi5jPTc1Nj1zdGF0aWMgaW50IHZsYW5fZGV2X2dldF9pZmxpbmsoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvODAyMXEvdmxhbl9kZXYuYy03NjItXG5uZXQvODAyMXEvdmxhbl9kZXYuYzo3NjM6c3RhdGljIGludCB2bGFuX2Rldl9maWxsX2ZvcndhcmRfcGF0aChzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX2N0eCAqY3R4LFxubmV0LzgwMjFxL3ZsYW5fZGV2LmMtNzY0LVx0XHRcdFx0ICAgICAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aCAqcGF0aClcbi0tXG5uZXQvODAyMXEvdmxhbl9kZXYuYz0xMDc4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgdmxhbl9uZXRkZXZfb3BzID0ge1xuLS1cbm5ldC84MDIxcS92bGFuX2Rldi5jLTExMDktXHQubmRvX2dldF9pZmxpbmtcdFx0PSB2bGFuX2Rldl9nZXRfaWZsaW5rLFxubmV0LzgwMjFxL3ZsYW5fZGV2LmM6MTExMDpcdC5uZG9fZmlsbF9mb3J3YXJkX3BhdGhcdD0gdmxhbl9kZXZfZmlsbF9mb3J3YXJkX3BhdGgsXG5uZXQvODAyMXEvdmxhbl9kZXYuYy0xMTExLVx0Lm5kb19od3RzdGFtcF9nZXRcdD0gdmxhbl9od3RzdGFtcF9nZXQsXG4tLVxubmV0L2NvcmUvZGV2LmM9NzQzPXN0YXRpYyBzdHJ1Y3QgbmV0X2RldmljZV9wYXRoICpkZXZfZndkX3BhdGgoc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayAqc3RhY2spXG4tLVxubmV0L2NvcmUvZGV2LmMtNzUyLVxubmV0L2NvcmUvZGV2LmM6NzUzOmludCBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggKmN0eCxcbm5ldC9jb3JlL2Rldi5jLTc1NC1cdFx0XHQgIHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfc3RhY2sgKnN0YWNrKVxuLS1cbm5ldC9jb3JlL2Rldi5jLTc4Ni19XG5uZXQvY29yZS9kZXYuYzo3ODc6RVhQT1JUX1NZTUJPTF9HUEwoZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKTtcbm5ldC9jb3JlL2Rldi5jLTc4OC1cbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz05Nzk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpZWVlODAyMTFfbW9uaXRvcmlmX29wcyA9IHtcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy05ODgtXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo5ODk6c3RhdGljIGludCBpZWVlODAyMTFfbmV0ZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4ICpjdHgsXG5uZXQvbWFjODAyMTEvaWZhY2UuYy05OTAtXHRcdFx0XHRcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlX3BhdGggKnBhdGgpXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9MTA0Nz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGllZWU4MDIxMV9kYXRhaWZfODAyM19vcHMgPSB7XG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtMTA1My1cdC5uZG9fc2V0X21hY19hZGRyZXNzXHQ9IGllZWU4MDIxMV9jaGFuZ2VfbWFjLFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTA1NDpcdC5uZG9fZmlsbF9mb3J3YXJkX3BhdGhcdD0gaWVlZTgwMjExX25ldGRldl9maWxsX2ZvcndhcmRfcGF0aCxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTEwNTUtXHQubmRvX3NldHVwX3RjXHRcdD0gaWVlZTgwMjExX25ldGRldl9zZXR1cF90Yyxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jPTM2PXN0YXRpYyBib29sIG5mdF9pc192YWxpZF9ldGhlcl9kZXZpY2UoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTQ0LVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYzo0NTpzdGF0aWMgaW50IG5mdF9kZXZfZmlsbF9mb3J3YXJkX3BhdGgoY29uc3Qgc3RydWN0IG5mX2Zsb3dfcm91dGUgKnJvdXRlLFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy00Ni1cdFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IGRzdF9lbnRyeSAqZHN0X2NhY2hlLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtNzktXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjgwOlx0cmV0dXJuIGRldl9maWxsX2ZvcndhcmRfcGF0aChcdTAwMjZjdHgsIHN0YWNrKTtcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtODEtfVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9MjUxPXN0YXRpYyBpbnQgbmZ0X2Rldl9mb3J3YXJkX3BhdGgoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXG4tLVxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0yNjItXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjI2MzpcdGlmIChuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKHJvdXRlLCBkc3QsIGN0LCBkaXIsIGhhLCBcdTAwMjZzdGFjaykgXHUwMDNjIDAgfHxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMjY0LVx0ICAgIG5mdF9kZXZfcGF0aF9pbmZvKFx1MDAyNnN0YWNrLCBcdTAwMjZpbmZvLCBoYSwgXHUwMDI2ZnQtXHUwMDNlZGF0YSkgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzODE4CgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBBbmFseXNpcyBvZiB0aGUgTmV0ZmlsdGVyIEZsb3cgT2ZmbG9hZCBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoZSBOZXRmaWx0ZXIgZmxvdyBvZmZsb2FkLCBhbmQgbXkgZm9jdXMgbmVlZHMgdG8gYmUgbGFzZXItc2hhcnAuIFJpZ2h0IG5vdywgSSBiZWxpZXZlIHRoZSBrZXkgZnVuY3Rpb25zIHRvIGV4YW1pbmUgYXJlIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgIGFuZCBgbmZ0X2Zsb3dfcm91dGVgLiBJIGFsc28gbmVlZCB0byBrZWVwIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYE5GX0ZMT1dfVEFCTEVgIGFuZCBgTkZUX0ZMT1dfT0ZGTE9BRGAgaW4gbWluZCwgYXMgdGhleSYjMzk7bGwgb2J2aW91c2x5IHNoYXBlIHRoZSBiZWhhdmlvci4KCkZpcnN0LCBhIHF1aWNrIHNhbml0eSBjaGVjazogSSBuZWVkIHRvIGVuc3VyZSB0aGF0IGBORlRfRkxPV19PRkZMT0FEYCBkZXBlbmRzIG9uIGBORl9UQUJMRVNgLiBUaGlzIGlzIG5ldGZpbHRlci1yZWxhdGVkLCBzbyBpdCYjMzk7cyBhIGNyaXRpY2FsIGRlcGVuZGVuY3kgdG8gY29uZmlybS4gSG1tLCB5ZXAsIHRoYXQmIzM5O3Mgd2hhdCBJIHRob3VnaHQuIEl0JiMzOTtzIGZ1bmRhbWVudGFsbHkgdGllZCB0byB0aGUgTmV0ZmlsdGVyIGluZnJhc3RydWN0dXJlLgoKTm93LCBsZXQgbWUgZ28gc3RyYWlnaHQgdG8gYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgdG8gcGluIGRvd24gdGhlIGRldGFpbHMgc3Vycm91bmRpbmcgYE5GVF9GTE9XX09GRkxPQURgLiBUaGlzIEtjb25maWcgZmlsZSB3aWxsIGJlIHRoZSBtb3N0IGF1dGhvcml0YXRpdmUgc291cmNlIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgdmFsdWVzLCBhbmQgdGhlIGNvbmRpdGlvbmFsIGJ1aWxkIGxvZ2ljIGludm9sdmVkLiBGcm9tIHRoZXJlLCBJIGNhbiB1bmRlcnN0YW5kIGhvdyB0aGlzIGFsbCBmaXRzIHRvZ2V0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwOToyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkZUX0ZMT1dfT0ZGTE9BRCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDk4PWNvbmZpZyBORlRfRVhUSERSX0RDQ1Bcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNTAzLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjUwNDpjb25maWcgTkZUX0ZMT1dfT0ZGTE9BRFxubmV0L25ldGZpbHRlci9LY29uZmlnLTUwNS1cdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLIFx1MDAyNlx1MDAyNiBORl9GTE9XX1RBQkxFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MjcwCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMzcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBjb25zaWRlcmF0aW9ucywgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBzb21lb25lIHdobyB1bmRlcnN0YW5kcyB0aGUgaW50cmljYWNpZXMgb2YgbmV0d29yayB0cmFmZmljIG1hbmFnZW1lbnQ6CgoqKk5ldHdvcmsgVHJhZmZpYyBDb25zaWRlcmF0aW9ucyoqCgpSaWdodCwgc28gdG8gbWFrZSB0aGlzIHdvcmssIGl0JiMzOTtzIGNsZWFyIHdlJiMzOTtyZSBnb2luZyB0byBuZWVkIGEgc3BlY2lmaWMgc2V0IG9mIGtlcm5lbCBtb2R1bGVzIGluIHBsYWNlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB3ZSYjMzk7bGwgYmUgcmVseWluZyBvbiBgTkZfQ09OTlRSQUNLYCwgYE5GX0ZMT1dfVEFCTEVgLCBhbmQgYE5GVF9GTE9XX09GRkxPQURgLiBUaGVzZSBhcmUgdGhlIGNvcmUgYnVpbGRpbmcgYmxvY2tzIGZvciBzdGF0ZWZ1bCBpbnNwZWN0aW9uLCBhbmQgb2ZmbG9hZGluZy4KCk5vdywgbGV0JiMzOTtzIGp1c3QgbWFrZSBzdXJlIGFib3V0IGBORl9GTE9XX1RBQkxFYCDigJMgaXQmIzM5O3MgYSBjcml0aWNhbCBjb21wb25lbnQgaGVyZS4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgaG93IHRoaXMgbW9kdWxlIG9wZXJhdGVzLCBhbmQgd2hhdCBhcmUgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORl9GTE9XX1RBQkxFJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZz03MDE9ZW5kaWYgIyBORl9UQUJMRVNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MDItXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzAzOmNvbmZpZyBORl9GTE9XX1RBQkxFX0lORVRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MDQtXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgZmxvdyB0YWJsZSBtaXhlZCBJUHY0L0lQdjYgbW9kdWxlXCYjMzQ7XG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTcxMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzo3MTE6Y29uZmlnIE5GX0ZMT1dfVEFCTEVcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MTItXHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgZmxvdyB0YWJsZSBtb2R1bGVcJiMzNDtcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzIwLVxubmV0L25ldGZpbHRlci9LY29uZmlnOjcyMTpjb25maWcgTkZfRkxPV19UQUJMRV9QUk9DRlNcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MjItXHRib29sIFwmIzM0O1N1cHBseSBmbG93IHRhYmxlIHN0YXRpc3RpY3MgaW4gcHJvY2ZzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjI2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0Njk1CgkJCQkJCQlvdXRwdXQ6IDE2NgoJCQkJCQkJdGhvdWdodHM6IDIwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aCBGdXp6aW5nIC0gQSBRdWljayBBc3Nlc3NtZW50KioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoIGFuZCwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgaXQmIzM5O3MgZGVmaW5pdGVseSBzb21ldGhpbmcgd2Ugc2hvdWxkIHByaW9yaXRpemUgZm9yIGZ1enppbmcuIFRoZSBrZXkgY29uZmlndXJhdGlvbnMgaGVyZSBhcmUgYE5GX0ZMT1dfVEFCTEVgIGFuZCBgTkZUX0ZMT1dfT0ZGTE9BRGAg4oCTIHRob3NlIGFyZSB0aGUgZ2F0ZWtlZXBlcnMuCgpGdW5jdGlvbmFsbHksIHRoaXMgcGF0Y2ggbG9va3Mgc29saWQ7IGl04oCZcyBtYWtpbmcgY2hhbmdlcyB0byBzb21lIGNydWNpYWwgcGFydHMgb2YgdGhlIGtlcm5lbC4gSXTigJlzIG1vZGlmeWluZyB0aGUgY29yZSBuZXR3b3JraW5nIGFuZCBuZXRmaWx0ZXIgbG9naWMsIGFuZCBzcGVjaWZpY2FsbHksIEkmIzM5O20gbm90aW5nIHRoZSB1cGRhdGVzIHRvIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgLCBhcyB3ZWxsIGFzIGhvdyBpdCBpbXBhY3RzIHRoZSBgbmV0X2RldmljZV9wYXRoX2N0eGAuIFRoZSByZWFjaGFiaWxpdHkgaGVyZSBpcyBjbGVhcjogdGhlIHBhdGggZ29lcyBmcm9tIGBuZnRfZmxvd19yb3V0ZWAgdG8gYG5mdF9kZXZfZm9yd2FyZF9wYXRoYCwgYW5kIHRoZW4gZGlyZWN0bHkgaW50byBgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aGAsIGluZGljYXRpbmcgYSBzb2xpZCBwYXRoIGZvciBmdXp6ZXIgaW50ZXJhY3Rpb24uCgpTaW5jZSB0aGUgcGF0Y2ggdG91Y2hlcyBvbiBjb3JlIG5ldHdvcmtpbmcgcHJpbmNpcGxlcyBhbmQgSSBjYW4gc2VlIGEgY2xlYXIgcGF0aCBpbnRvIHRoZSBmdW5jdGlvbiBpdCBhbHRlcnMsIHBsdXMgdGhlIGZhY3QgdGhhdCBpdCYjMzk7cyBhbGwgcmVhY2hhYmxlIGluIHN0YW5kYXJkIGVudmlyb25tZW50cywgaXQmIzM5O3MgYSB3b3J0aHdoaWxlIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gV29ydGhGdXp6aW5nPXRydWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDA5OjI2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9GTE9XX1RBQkxFJiMzNDssCiAgICAmIzM0O05GVF9GTE9XX09GRkxPQUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkZXZfZmlsbF9mb3J3YXJkX3BhdGgmIzM0OywKICAgICYjMzQ7bmZ0X2Zsb3dfcm91dGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHNpZ25hdHVyZSBhbmQgaW1wbGVtZW50YXRpb24gb2YgYGRldl9maWxsX2ZvcndhcmRfcGF0aGAgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjaywgY2hhbmdpbmcgaG93IHRoZSBgbmV0X2RldmljZV9wYXRoX2N0eGAgaXMgcGFzc2VkIGFuZCBhY2Nlc3NlZC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBuZXRmaWx0ZXIgZmxvdyBvZmZsb2FkIHN1YnN5c3RlbSAoYG5mdF9mbG93X3JvdXRlYCAtXHUwMDNlIGBuZnRfZGV2X2ZvcndhcmRfcGF0aGAgLVx1MDAzZSBgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aGApLiBTaW5jZSBpdCBhbHRlcnMgY29yZSBuZXR3b3JraW5nIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBpdCBpcyB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORl9GTE9XX1RBQkxFJiMzNDssCiAgICAmIzM0O05GVF9GTE9XX09GRkxPQUQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkZXZfZmlsbF9mb3J3YXJkX3BhdGgmIzM0OywKICAgICYjMzQ7bmZ0X2Zsb3dfcm91dGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHNpZ25hdHVyZSBhbmQgaW1wbGVtZW50YXRpb24gb2YgYGRldl9maWxsX2ZvcndhcmRfcGF0aGAgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjaywgY2hhbmdpbmcgaG93IHRoZSBgbmV0X2RldmljZV9wYXRoX2N0eGAgaXMgcGFzc2VkIGFuZCBhY2Nlc3NlZC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBuZXRmaWx0ZXIgZmxvdyBvZmZsb2FkIHN1YnN5c3RlbSAoYG5mdF9mbG93X3JvdXRlYCAtXHUwMDNlIGBuZnRfZGV2X2ZvcndhcmRfcGF0aGAgLVx1MDAzZSBgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aGApLiBTaW5jZSBpdCBhbHRlcnMgY29yZSBuZXR3b3JraW5nIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBpdCBpcyB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MjQ6MjQuMTQwNTM1NDY4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyMzc0Nzk2ODU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0ZMT1dfVEFCTEVcIixcbiAgICBcIk5GVF9GTE9XX09GRkxPQURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkZXZfZmlsbF9mb3J3YXJkX3BhdGhcIixcbiAgICBcIm5mdF9mbG93X3JvdXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHNpZ25hdHVyZSBhbmQgaW1wbGVtZW50YXRpb24gb2YgYGRldl9maWxsX2ZvcndhcmRfcGF0aGAgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjaywgY2hhbmdpbmcgaG93IHRoZSBgbmV0X2RldmljZV9wYXRoX2N0eGAgaXMgcGFzc2VkIGFuZCBhY2Nlc3NlZC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBuZXRmaWx0ZXIgZmxvdyBvZmZsb2FkIHN1YnN5c3RlbSAoYG5mdF9mbG93X3JvdXRlYCAtXFx1MDAzZSBgbmZ0X2Rldl9mb3J3YXJkX3BhdGhgIC1cXHUwMDNlIGBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCkuIFNpbmNlIGl0IGFsdGVycyBjb3JlIG5ldHdvcmtpbmcgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGl0IGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI0OjI0LjE0MDU2MDc3OFoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4ODEwMTA2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGU5YjM0Zjk0M2I2M2MxN2VlMGNlNTNhYTNmZGEzMzMwZjQ0MGQyYTdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgNSAwOToyNDoyMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuY1xcbmluZGV4IDMzZGRmMGQwNzg1NTMuLjUzMTgzYTEzMjEwMDYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmNcXG5AQCAtMjgzLDE0ICsyODMsMTkgQEAgc3RhdGljIGludCBhaXJvaGFfcHBlX2dldF93ZG1hX2luZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmFkZHIsXFxuIFxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgYWlyb2hhX3dkbWFfaW5mbyAqaW5mbylcXG4ge1xcbiBcXHRzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX3N0YWNrIHN0YWNrO1xcbitcXHRzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX2N0eCBjdHggPSB7XFxuK1xcdFxcdC5kZXYgPSBkZXYsXFxuK1xcdH07XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlX3BhdGggKnBhdGg7XFxuIFxcdGludCBlcnI7XFxuIFxcbiBcXHRpZiAoIWRldilcXG4gXFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuIFxcbitcXHRldGhlcl9hZGRyX2NvcHkoY3R4LmRhZGRyLCBhZGRyKTtcXG4rXFxuIFxcdHJjdV9yZWFkX2xvY2soKTtcXG4tXFx0ZXJyID0gZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKGRldiwgYWRkciwgXFx1MDAyNnN0YWNrKTtcXG4rXFx0ZXJyID0gZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKFxcdTAwMjZjdHgsIFxcdTAwMjZzdGFjayk7XFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfcHBlX29mZmxvYWQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jXFxuaW5kZXggY2M4YzRlZjgwMzhmMy4uMWVjNDY3ODRmMDE4NyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfcHBlX29mZmxvYWQuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jXFxuQEAgLTkyLDYgKzkyLDkgQEAgc3RhdGljIGludFxcbiBtdGtfZmxvd19nZXRfd2RtYV9pbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICphZGRyLCBzdHJ1Y3QgbXRrX3dkbWFfaW5mbyAqaW5mbylcXG4ge1xcbiBcXHRzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX3N0YWNrIHN0YWNrO1xcbitcXHRzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX2N0eCBjdHggPSB7XFxuK1xcdFxcdC5kZXYgPSBkZXYsXFxuK1xcdH07XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlX3BhdGggKnBhdGg7XFxuIFxcdGludCBlcnI7XFxuIFxcbkBAIC0xMDEsOCArMTA0LDEwIEBAIG10a19mbG93X2dldF93ZG1hX2luZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmFkZHIsIHN0cnVjdCBtdGtfd2RtYV9pXFxuIFxcdGlmICghSVNfRU5BQkxFRChDT05GSUdfTkVUX01FRElBVEVLX1NPQ19XRUQpKVxcbiBcXHRcXHRyZXR1cm4gLTE7XFxuIFxcbitcXHRldGhlcl9hZGRyX2NvcHkoY3R4LmRhZGRyLCBhZGRyKTtcXG4rXFxuIFxcdHJjdV9yZWFkX2xvY2soKTtcXG4tXFx0ZXJyID0gZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKGRldiwgYWRkciwgXFx1MDAyNnN0YWNrKTtcXG4rXFx0ZXJyID0gZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKFxcdTAwMjZjdHgsIFxcdTAwMjZzdGFjayk7XFxuIFxcdHJjdV9yZWFkX3VubG9jaygpO1xcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRyZXR1cm4gZXJyO1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oIGIvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaFxcbmluZGV4IDhkYjI1Yjc5NTczZTMuLmQyZjU0NTAxNmY3ZjYgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcXG5AQCAtMzQyNSw3ICszNDI1LDcgQEAgdm9pZCBkZXZfcmVtb3ZlX29mZmxvYWQoc3RydWN0IHBhY2tldF9vZmZsb2FkICpwbyk7XFxuIFxcbiBpbnQgZGV2X2dldF9pZmxpbmsoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxuIGludCBkZXZfZmlsbF9tZXRhZGF0YV9kc3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuLWludCBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmRhZGRyLFxcbitpbnQgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4ICpjdHgsXFxuIFxcdFxcdFxcdCAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayAqc3RhY2spO1xcbiBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2X2dldF9ieV9uYW1lKHN0cnVjdCBuZXQgKm5ldCwgY29uc3QgY2hhciAqbmFtZSk7XFxuIHN0cnVjdCBuZXRfZGV2aWNlICpkZXZfZ2V0X2J5X25hbWVfcmN1KHN0cnVjdCBuZXQgKm5ldCwgY29uc3QgY2hhciAqbmFtZSk7XFxuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5jIGIvbmV0L2NvcmUvZGV2LmNcXG5pbmRleCBjMWMxYmUxYTY5NjJmLi5lMmM5ZmUzZjdhN2JhIDEwMDY0NFxcbi0tLSBhL25ldC9jb3JlL2Rldi5jXFxuKysrIGIvbmV0L2NvcmUvZGV2LmNcXG5AQCAtNzUwLDQxICs3NTAsMzcgQEAgc3RhdGljIHN0cnVjdCBuZXRfZGV2aWNlX3BhdGggKmRldl9md2RfcGF0aChzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX3N0YWNrICpzdGFjaylcXG4gXFx0cmV0dXJuIFxcdTAwMjZzdGFjay1cXHUwMDNlcGF0aFtrXTtcXG4gfVxcbiBcXG4taW50IGRldl9maWxsX2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqZGFkZHIsXFxuK2ludCBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggKmN0eCxcXG4gXFx0XFx0XFx0ICBzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX3N0YWNrICpzdGFjaylcXG4ge1xcbiBcXHRjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqbGFzdF9kZXY7XFxuLVxcdHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4IGN0eCA9IHtcXG4tXFx0XFx0LmRldlxcdD0gZGV2LFxcbi1cXHR9O1xcbiBcXHRzdHJ1Y3QgbmV0X2RldmljZV9wYXRoICpwYXRoO1xcbiBcXHRpbnQgcmV0ID0gMDtcXG4gXFxuLVxcdG1lbWNweShjdHguZGFkZHIsIGRhZGRyLCBzaXplb2YoY3R4LmRhZGRyKSk7XFxuIFxcdHN0YWNrLVxcdTAwM2VudW1fcGF0aHMgPSAwO1xcbi1cXHR3aGlsZSAoY3R4LmRldiBcXHUwMDI2XFx1MDAyNiBjdHguZGV2LVxcdTAwM2VuZXRkZXZfb3BzLVxcdTAwM2VuZG9fZmlsbF9mb3J3YXJkX3BhdGgpIHtcXG4tXFx0XFx0bGFzdF9kZXYgPSBjdHguZGV2O1xcbitcXHR3aGlsZSAoY3R4LVxcdTAwM2VkZXYgXFx1MDAyNlxcdTAwMjYgY3R4LVxcdTAwM2VkZXYtXFx1MDAzZW5ldGRldl9vcHMtXFx1MDAzZW5kb19maWxsX2ZvcndhcmRfcGF0aCkge1xcbitcXHRcXHRsYXN0X2RldiA9IGN0eC1cXHUwMDNlZGV2O1xcbiBcXHRcXHRwYXRoID0gZGV2X2Z3ZF9wYXRoKHN0YWNrKTtcXG4gXFx0XFx0aWYgKCFwYXRoKVxcbiBcXHRcXHRcXHRyZXR1cm4gLTE7XFxuIFxcbiBcXHRcXHRtZW1zZXQocGF0aCwgMCwgc2l6ZW9mKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGgpKTtcXG4tXFx0XFx0cmV0ID0gY3R4LmRldi1cXHUwMDNlbmV0ZGV2X29wcy1cXHUwMDNlbmRvX2ZpbGxfZm9yd2FyZF9wYXRoKFxcdTAwMjZjdHgsIHBhdGgpO1xcbitcXHRcXHRyZXQgPSBjdHgtXFx1MDAzZWRldi1cXHUwMDNlbmV0ZGV2X29wcy1cXHUwMDNlbmRvX2ZpbGxfZm9yd2FyZF9wYXRoKGN0eCwgcGF0aCk7XFxuIFxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbiBcXHRcXHRcXHRyZXR1cm4gLTE7XFxuIFxcbi1cXHRcXHRpZiAoV0FSTl9PTl9PTkNFKGxhc3RfZGV2ID09IGN0eC5kZXYpKVxcbitcXHRcXHRpZiAoV0FSTl9PTl9PTkNFKGxhc3RfZGV2ID09IGN0eC1cXHUwMDNlZGV2KSlcXG4gXFx0XFx0XFx0cmV0dXJuIC0xO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoIWN0eC5kZXYpXFxuK1xcdGlmICghY3R4LVxcdTAwM2VkZXYpXFxuIFxcdFxcdHJldHVybiByZXQ7XFxuIFxcbiBcXHRwYXRoID0gZGV2X2Z3ZF9wYXRoKHN0YWNrKTtcXG4gXFx0aWYgKCFwYXRoKVxcbiBcXHRcXHRyZXR1cm4gLTE7XFxuIFxcdHBhdGgtXFx1MDAzZXR5cGUgPSBERVZfUEFUSF9FVEhFUk5FVDtcXG4tXFx0cGF0aC1cXHUwMDNlZGV2ID0gY3R4LmRldjtcXG4rXFx0cGF0aC1cXHUwMDNlZGV2ID0gY3R4LVxcdTAwM2VkZXY7XFxuIFxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jXFxuaW5kZXggOThjMDNiNDg3ZjUyMS4uYjlkZjc0NTNmNzYyMCAxMDA2NDRcXG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jXFxuKysrIGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguY1xcbkBAIC01MCw2ICs1MCw5IEBAIHN0YXRpYyBpbnQgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmZfZmxvd19yb3V0ZSAqcm91dGUsXFxuIHtcXG4gXFx0Y29uc3Qgdm9pZCAqZGFkZHIgPSBcXHUwMDI2Y3QtXFx1MDAzZXR1cGxlaGFzaFshZGlyXS50dXBsZS5zcmMudTM7XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpkZXYgPSBkc3RfY2FjaGUtXFx1MDAzZWRldjtcXG4rXFx0c3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggY3R4ID0ge1xcbitcXHRcXHQuZGV2ID0gZGV2LFxcbitcXHR9O1xcbiBcXHRzdHJ1Y3QgbmVpZ2hib3VyICpuO1xcbiBcXHR1OCBudWRfc3RhdGU7XFxuIFxcbkBAIC03Miw3ICs3NSw5IEBAIHN0YXRpYyBpbnQgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmZfZmxvd19yb3V0ZSAqcm91dGUsXFxuIFxcdFxcdHJldHVybiAtMTtcXG4gXFxuIG91dDpcXG4tXFx0cmV0dXJuIGRldl9maWxsX2ZvcndhcmRfcGF0aChkZXYsIGhhLCBzdGFjayk7XFxuK1xcdGV0aGVyX2FkZHJfY29weShjdHguZGFkZHIsIGhhKTtcXG4rXFxuK1xcdHJldHVybiBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoXFx1MDAyNmN0eCwgc3RhY2spO1xcbiB9XFxuIFxcbiBzdHJ1Y3QgbmZ0X2ZvcndhcmRfaW5mbyB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI0OjI1LjYzMTE5MzE2NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjExMDg4NDEyODc3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9GTE9XX1RBQkxFXCIsXG4gICAgXCJORlRfRkxPV19PRkZMT0FEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGV2X2ZpbGxfZm9yd2FyZF9wYXRoXCIsXG4gICAgXCJuZnRfZmxvd19yb3V0ZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBzaWduYXR1cmUgYW5kIGltcGxlbWVudGF0aW9uIG9mIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgIGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2ssIGNoYW5naW5nIGhvdyB0aGUgYG5ldF9kZXZpY2VfcGF0aF9jdHhgIGlzIHBhc3NlZCBhbmQgYWNjZXNzZWQuIFRoaXMgZnVuY3Rpb24gaXMgcmVhY2hhYmxlIHZpYSB0aGUgbmV0ZmlsdGVyIGZsb3cgb2ZmbG9hZCBzdWJzeXN0ZW0gKGBuZnRfZmxvd19yb3V0ZWAgLVxcdTAwM2UgYG5mdF9kZXZfZm9yd2FyZF9wYXRoYCAtXFx1MDAzZSBgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aGApLiBTaW5jZSBpdCBhbHRlcnMgY29yZSBuZXR3b3JraW5nIGxvZ2ljIGFuZCBpcyByZWFjaGFibGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBpdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBlOWIzNGY5NDNiNjNjMTdlZTBjZTUzYWEzZmRhMzMzMGY0NDBkMmE3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgNSAwOToyNDoyMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Fpcm9oYS9haXJvaGFfcHBlLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jXG5pbmRleCAzM2RkZjBkMDc4NTUzLi41MzE4M2ExMzIxMDA2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuY1xuQEAgLTI4MywxNCArMjgzLDE5IEBAIHN0YXRpYyBpbnQgYWlyb2hhX3BwZV9nZXRfd2RtYV9pbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICphZGRyLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBhaXJvaGFfd2RtYV9pbmZvICppbmZvKVxuIHtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfc3RhY2sgc3RhY2s7XG4rXHRzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX2N0eCBjdHggPSB7XG4rXHRcdC5kZXYgPSBkZXYsXG4rXHR9O1xuIFx0c3RydWN0IG5ldF9kZXZpY2VfcGF0aCAqcGF0aDtcbiBcdGludCBlcnI7XG4gXG4gXHRpZiAoIWRldilcbiBcdFx0cmV0dXJuIC1FTk9ERVY7XG4gXG4rXHRldGhlcl9hZGRyX2NvcHkoY3R4LmRhZGRyLCBhZGRyKTtcbitcbiBcdHJjdV9yZWFkX2xvY2soKTtcbi1cdGVyciA9IGRldl9maWxsX2ZvcndhcmRfcGF0aChkZXYsIGFkZHIsIFx1MDAyNnN0YWNrKTtcbitcdGVyciA9IGRldl9maWxsX2ZvcndhcmRfcGF0aChcdTAwMjZjdHgsIFx1MDAyNnN0YWNrKTtcbiBcdHJjdV9yZWFkX3VubG9jaygpO1xuIFx0aWYgKGVycilcbiBcdFx0cmV0dXJuIGVycjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfcHBlX29mZmxvYWQuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jXG5pbmRleCBjYzhjNGVmODAzOGYzLi4xZWM0Njc4NGYwMTg3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jXG5AQCAtOTIsNiArOTIsOSBAQCBzdGF0aWMgaW50XG4gbXRrX2Zsb3dfZ2V0X3dkbWFfaW5mbyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqYWRkciwgc3RydWN0IG10a193ZG1hX2luZm8gKmluZm8pXG4ge1xuIFx0c3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayBzdGFjaztcbitcdHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4IGN0eCA9IHtcbitcdFx0LmRldiA9IGRldixcbitcdH07XG4gXHRzdHJ1Y3QgbmV0X2RldmljZV9wYXRoICpwYXRoO1xuIFx0aW50IGVycjtcbiBcbkBAIC0xMDEsOCArMTA0LDEwIEBAIG10a19mbG93X2dldF93ZG1hX2luZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmFkZHIsIHN0cnVjdCBtdGtfd2RtYV9pXG4gXHRpZiAoIUlTX0VOQUJMRUQoQ09ORklHX05FVF9NRURJQVRFS19TT0NfV0VEKSlcbiBcdFx0cmV0dXJuIC0xO1xuIFxuK1x0ZXRoZXJfYWRkcl9jb3B5KGN0eC5kYWRkciwgYWRkcik7XG4rXG4gXHRyY3VfcmVhZF9sb2NrKCk7XG4tXHRlcnIgPSBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoZGV2LCBhZGRyLCBcdTAwMjZzdGFjayk7XG4rXHRlcnIgPSBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoXHUwMDI2Y3R4LCBcdTAwMjZzdGFjayk7XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiBcdGlmIChlcnIpXG4gXHRcdHJldHVybiBlcnI7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCBiL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmhcbmluZGV4IDhkYjI1Yjc5NTczZTMuLmQyZjU0NTAxNmY3ZjYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oXG5AQCAtMzQyNSw3ICszNDI1LDcgQEAgdm9pZCBkZXZfcmVtb3ZlX29mZmxvYWQoc3RydWN0IHBhY2tldF9vZmZsb2FkICpwbyk7XG4gXG4gaW50IGRldl9nZXRfaWZsaW5rKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xuIGludCBkZXZfZmlsbF9tZXRhZGF0YV9kc3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG4taW50IGRldl9maWxsX2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqZGFkZHIsXG4raW50IGRldl9maWxsX2ZvcndhcmRfcGF0aChzdHJ1Y3QgbmV0X2RldmljZV9wYXRoX2N0eCAqY3R4LFxuIFx0XHRcdCAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayAqc3RhY2spO1xuIHN0cnVjdCBuZXRfZGV2aWNlICpkZXZfZ2V0X2J5X25hbWUoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBjaGFyICpuYW1lKTtcbiBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2X2dldF9ieV9uYW1lX3JjdShzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IGNoYXIgKm5hbWUpO1xuZGlmZiAtLWdpdCBhL25ldC9jb3JlL2Rldi5jIGIvbmV0L2NvcmUvZGV2LmNcbmluZGV4IGMxYzFiZTFhNjk2MmYuLmUyYzlmZTNmN2E3YmEgMTAwNjQ0XG4tLS0gYS9uZXQvY29yZS9kZXYuY1xuKysrIGIvbmV0L2NvcmUvZGV2LmNcbkBAIC03NTAsNDEgKzc1MCwzNyBAQCBzdGF0aWMgc3RydWN0IG5ldF9kZXZpY2VfcGF0aCAqZGV2X2Z3ZF9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfc3RhY2sgKnN0YWNrKVxuIFx0cmV0dXJuIFx1MDAyNnN0YWNrLVx1MDAzZXBhdGhba107XG4gfVxuIFxuLWludCBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmRhZGRyLFxuK2ludCBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggKmN0eCxcbiBcdFx0XHQgIHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfc3RhY2sgKnN0YWNrKVxuIHtcbiBcdGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpsYXN0X2Rldjtcbi1cdHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4IGN0eCA9IHtcbi1cdFx0LmRldlx0PSBkZXYsXG4tXHR9O1xuIFx0c3RydWN0IG5ldF9kZXZpY2VfcGF0aCAqcGF0aDtcbiBcdGludCByZXQgPSAwO1xuIFxuLVx0bWVtY3B5KGN0eC5kYWRkciwgZGFkZHIsIHNpemVvZihjdHguZGFkZHIpKTtcbiBcdHN0YWNrLVx1MDAzZW51bV9wYXRocyA9IDA7XG4tXHR3aGlsZSAoY3R4LmRldiBcdTAwMjZcdTAwMjYgY3R4LmRldi1cdTAwM2VuZXRkZXZfb3BzLVx1MDAzZW5kb19maWxsX2ZvcndhcmRfcGF0aCkge1xuLVx0XHRsYXN0X2RldiA9IGN0eC5kZXY7XG4rXHR3aGlsZSAoY3R4LVx1MDAzZWRldiBcdTAwMjZcdTAwMjYgY3R4LVx1MDAzZWRldi1cdTAwM2VuZXRkZXZfb3BzLVx1MDAzZW5kb19maWxsX2ZvcndhcmRfcGF0aCkge1xuK1x0XHRsYXN0X2RldiA9IGN0eC1cdTAwM2VkZXY7XG4gXHRcdHBhdGggPSBkZXZfZndkX3BhdGgoc3RhY2spO1xuIFx0XHRpZiAoIXBhdGgpXG4gXHRcdFx0cmV0dXJuIC0xO1xuIFxuIFx0XHRtZW1zZXQocGF0aCwgMCwgc2l6ZW9mKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGgpKTtcbi1cdFx0cmV0ID0gY3R4LmRldi1cdTAwM2VuZXRkZXZfb3BzLVx1MDAzZW5kb19maWxsX2ZvcndhcmRfcGF0aChcdTAwMjZjdHgsIHBhdGgpO1xuK1x0XHRyZXQgPSBjdHgtXHUwMDNlZGV2LVx1MDAzZW5ldGRldl9vcHMtXHUwMDNlbmRvX2ZpbGxfZm9yd2FyZF9wYXRoKGN0eCwgcGF0aCk7XG4gXHRcdGlmIChyZXQgXHUwMDNjIDApXG4gXHRcdFx0cmV0dXJuIC0xO1xuIFxuLVx0XHRpZiAoV0FSTl9PTl9PTkNFKGxhc3RfZGV2ID09IGN0eC5kZXYpKVxuK1x0XHRpZiAoV0FSTl9PTl9PTkNFKGxhc3RfZGV2ID09IGN0eC1cdTAwM2VkZXYpKVxuIFx0XHRcdHJldHVybiAtMTtcbiBcdH1cbiBcbi1cdGlmICghY3R4LmRldilcbitcdGlmICghY3R4LVx1MDAzZWRldilcbiBcdFx0cmV0dXJuIHJldDtcbiBcbiBcdHBhdGggPSBkZXZfZndkX3BhdGgoc3RhY2spO1xuIFx0aWYgKCFwYXRoKVxuIFx0XHRyZXR1cm4gLTE7XG4gXHRwYXRoLVx1MDAzZXR5cGUgPSBERVZfUEFUSF9FVEhFUk5FVDtcbi1cdHBhdGgtXHUwMDNlZGV2ID0gY3R4LmRldjtcbitcdHBhdGgtXHUwMDNlZGV2ID0gY3R4LVx1MDAzZWRldjtcbiBcbiBcdHJldHVybiByZXQ7XG4gfVxuZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jXG5pbmRleCA5OGMwM2I0ODdmNTIxLi5iOWRmNzQ1M2Y3NjIwIDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguY1xuKysrIGIvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguY1xuQEAgLTUwLDYgKzUwLDkgQEAgc3RhdGljIGludCBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKGNvbnN0IHN0cnVjdCBuZl9mbG93X3JvdXRlICpyb3V0ZSxcbiB7XG4gXHRjb25zdCB2b2lkICpkYWRkciA9IFx1MDAyNmN0LVx1MDAzZXR1cGxlaGFzaFshZGlyXS50dXBsZS5zcmMudTM7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqZGV2ID0gZHN0X2NhY2hlLVx1MDAzZWRldjtcbitcdHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4IGN0eCA9IHtcbitcdFx0LmRldiA9IGRldixcbitcdH07XG4gXHRzdHJ1Y3QgbmVpZ2hib3VyICpuO1xuIFx0dTggbnVkX3N0YXRlO1xuIFxuQEAgLTcyLDcgKzc1LDkgQEAgc3RhdGljIGludCBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKGNvbnN0IHN0cnVjdCBuZl9mbG93X3JvdXRlICpyb3V0ZSxcbiBcdFx0cmV0dXJuIC0xO1xuIFxuIG91dDpcbi1cdHJldHVybiBkZXZfZmlsbF9mb3J3YXJkX3BhdGgoZGV2LCBoYSwgc3RhY2spO1xuK1x0ZXRoZXJfYWRkcl9jb3B5KGN0eC5kYWRkciwgaGEpO1xuK1xuK1x0cmV0dXJuIGRldl9maWxsX2ZvcndhcmRfcGF0aChcdTAwMjZjdHgsIHN0YWNrKTtcbiB9XG4gXG4gc3RydWN0IG5mdF9mb3J3YXJkX2luZm8ge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MjQ6MjUuNjMxMTk1MjU0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA3NjE1OTYyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWZhY3RvcmluZyBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCAtIFdvcnRoeSBGdXp6aW5nIFRhcmdldD8qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGNoYW5naW5nIHRoZSBmdW5jdGlvbiBzaWduYXR1cmUgb2YgYGRldl9maWxsX2ZvcndhcmRfcGF0aGAuIFByZXZpb3VzbHksIGl0IHdhcyB0YWtpbmcgdGhlIGRldmljZSBhbmQgZGVzdGluYXRpb24gYWRkcmVzcyBkaXJlY3RseTogYChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBjb25zdCB1OCAqZGFkZHIsIHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfc3RhY2sgKnN0YWNrKWAuIE5vdywgaXQncyBiZWVuIHVwZGF0ZWQgdG8gdGFrZSBhIGNvbnRleHQgc3RydWN0OiBgKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4ICpjdHgsIHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfc3RhY2sgKnN0YWNrKWAuIFRoZSBjYWxsZXJzIGFyZSBhbGwgdXBkYXRlZCB0byBpbml0aWFsaXplIHRoaXMgYG5ldF9kZXZpY2VfcGF0aF9jdHhgIGFuZCBwYXNzIGl0IGFsb25nLlxuXG5UaGUgYWZmZWN0ZWQgY2FsbGVycyBJIHNlZSBhcmUgYGFpcm9oYV9wcGVfZ2V0X3dkbWFfaW5mb2AgaW4gdGhlIEFpcm9oYSBFdGhlcm5ldCBkcml2ZXIsIGBtdGtfZmxvd19nZXRfd2RtYV9pbmZvYCBpbiB0aGUgTWVkaWFUZWsgZHJpdmVyLCBhbmQgYG5mdF9kZXZfZmlsbF9mb3J3YXJkX3BhdGhgLCB3aGljaCBzZWVtcyB0byBiZSBjb25uZWN0ZWQgdG8gbmV0ZmlsdGVyIGZsb3cgdGFibGUgb2ZmbG9hZC4gVGhpcyBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBmdW5jdGlvbiBpdHNlbGYgbGl2ZXMgaW4gYG5ldC9jb3JlL2Rldi5jYC5cblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyBpcyBldmVuIHdvcnRoIGZ1enppbmcuIEl0J3MgcmVhbGx5IGp1c3QgYSByZWZhY3RvcmluZywgcmlnaHQ/IFRoZSBjb3JlIGxvZ2ljIG9mIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgIHNlZW1zIHRvIGhhdmUgb25seSBiZWVuICpzbGlnaHRseSogYWRqdXN0ZWQgdG8gdXNlIGBjdHgtXHUwMDNlZGV2YCBpbnN0ZWFkIG9mIHRoZSBvcmlnaW5hbC4gQWxsIHRoZSBjYWxsZXJzIG5vdyBwYXNzIHRoaXMgbmV3bHkgZGVmaW5lZCBhbmQgaW5pdGlhbGl6ZWQgYGN0eGAgc3RydWN0LlxuXG5CdXQsIGlzIGl0IHJlYWNoYWJsZT8gWWVzLCBhbmQgdGhhdCdzIHRoZSBrZXkuIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgIGlzIHJlYWNoYWJsZSB2aWEgYG5mdF9kZXZfZmlsbF9mb3J3YXJkX3BhdGhgLCB3aGljaCBpcyBwYXJ0IG9mIHRoZSBuZXRmaWx0ZXIgZmxvdyB0YWJsZSBvZmZsb2FkLiBUaGF0IG1ha2VzIHRoaXMgYSB2aWFibGUgdGFyZ2V0IGZvciBmdXp6aW5nLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gZHJpbGwgZG93biBhIGJpdCBhbmQgdHJhY2UgaG93IGBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBpcyBjYWxsZWQuIEl0J3MgaW4gdGhlIGBuZl9mbG93X3RhYmxlX3BhdGguY2AgZmlsZSwgc28gdGhlIG5leHQgbGV2ZWwgb2YgYW5hbHlzaXMgd2lsbCBzdGFydCB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg1NCwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI0OjMyLjcwNzM1NzU3MloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjg4MzcyODIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mdF9kZXZfZmlsbF9mb3J3YXJkX3BhdGhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYz0zNj1zdGF0aWMgYm9vbCBuZnRfaXNfdmFsaWRfZXRoZXJfZGV2aWNlKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTQ0LVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM6NDU6c3RhdGljIGludCBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKGNvbnN0IHN0cnVjdCBuZl9mbG93X3JvdXRlICpyb3V0ZSxcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTQ2LVxcdFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IGRzdF9lbnRyeSAqZHN0X2NhY2hlLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYz0yNTE9c3RhdGljIGludCBuZnRfZGV2X2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMjYyLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM6MjYzOlxcdGlmIChuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKHJvdXRlLCBkc3QsIGN0LCBkaXIsIGhhLCBcXHUwMDI2c3RhY2spIFxcdTAwM2MgMCB8fFxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMjY0LVxcdCAgICBuZnRfZGV2X3BhdGhfaW5mbyhcXHUwMDI2c3RhY2ssIFxcdTAwMjZpbmZvLCBoYSwgXFx1MDAyNmZ0LVxcdTAwM2VkYXRhKSBcXHUwMDNjIDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI0OjM0Ljk5NTczNzAxMloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5OTQ2NDQ4NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBuZnRfZGV2X2ZvcndhcmRfcGF0aCBDYWxsIENoYWluKipcblxuUmlnaHQsIHNvIGBuZnRfZGV2X2ZvcndhcmRfcGF0aGAgaXMgYmVpbmcgaW52b2tlZCBmcm9tIHdpdGhpbiBgbmZfZmxvd190YWJsZV9wYXRoLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJPa2F5LCBsZXQncyB0cmFjZSB0aGlzIGNhbGwgcGF0aCBhbmQgdW5kZXJzdGFuZCBpdHMgY29udGV4dC5cIiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSBhbGwgdGhlIHBsYWNlcyB3aGVyZSBgbmZ0X2Rldl9mb3J3YXJkX3BhdGhgIGlzIGFjdHVhbGx5IGJlaW5nICpjYWxsZWQqIGZyb20gd2l0aGluIHRoZSBrZXJuZWwuIFVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgY2FsbCBncmFwaCBpcyBjcnVjaWFsIHRvIGdyYXNwIGhvdyBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZSBvZiB0aGUgTmV0ZmlsdGVyIGZsb3cgdGFibGUgYW5kLCBzcGVjaWZpY2FsbHksIGhvdyBkZXZpY2UtYmFzZWQgZm9yd2FyZGluZyBkZWNpc2lvbnMgYXJlIGJlaW5nIG1hZGUgd2l0aGluIHRoZSBuZnRhYmxlcyBmcmFtZXdvcmsuIFRoaXMgaW5pdGlhbCBzdGVwIGlzIGEgcHJlcmVxdWlzaXRlIGZvciBhbnkgZGVlcGVyIGFuYWx5c2lzIEknbSBwbGFubmluZyB0byBwZXJmb3JtLCBzdWNoIGFzIGRlYnVnZ2luZyBhIGZvcndhcmRpbmcgaXNzdWUgb3IgdHJ5aW5nIHRvIG9wdGltaXplIHRoZSB0YWJsZSBwZXJmb3JtYW5jZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk5NSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI0OjQwLjk5MDM4Mzg3NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzE4Mzg2NzQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mdF9kZXZfZm9yd2FyZF9wYXRoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9MjEzPXN0YXRpYyBpbnQgbmZ0X2Zsb3dfdHVubmVsX3VwZGF0ZV9yb3V0ZShjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMjUwLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM6MjUxOnN0YXRpYyBpbnQgbmZ0X2Rldl9mb3J3YXJkX3BhdGgoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0yNTItXFx0XFx0XFx0XFx0c3RydWN0IG5mX2Zsb3dfcm91dGUgKnJvdXRlLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYz0zMDA9aW50IG5mdF9mbG93X3JvdXRlKGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0LCBjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3QsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTM0Mi1cXHRpZiAocm91dGUtXFx1MDAzZXR1cGxlW2Rpcl0ueG1pdF90eXBlXFx0PT0gRkxPV19PRkZMT0FEX1hNSVRfTkVJR0ggXFx1MDAyNlxcdTAwMjZcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjM0MzpcXHQgICAgbmZ0X2Rldl9mb3J3YXJkX3BhdGgocGt0LCByb3V0ZSwgY3QsIGRpciwgZnQpIFxcdTAwM2MgMClcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTM0NC1cXHRcXHRnb3RvIGVycl9kc3RfcmVsZWFzZTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMzQ2LVxcdGlmIChyb3V0ZS1cXHUwMDNldHVwbGVbIWRpcl0ueG1pdF90eXBlID09IEZMT1dfT0ZGTE9BRF9YTUlUX05FSUdIIFxcdTAwMjZcXHUwMDI2XFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYzozNDc6XFx0ICAgIG5mdF9kZXZfZm9yd2FyZF9wYXRoKHBrdCwgcm91dGUsIGN0LCAhZGlyLCBmdCkgXFx1MDAzYyAwKVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtMzQ4LVxcdFxcdGdvdG8gZXJyX2RzdF9yZWxlYXNlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToyNDo0My4zMDg3NzUyMDNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzY2Njc0MjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIHRoYXQgcXVlc3Rpb246XG5cbioqRGVjb25zdHJ1Y3RpbmcgdGhlIGBuZnRfZmxvd19yb3V0ZWAgQ2FsbCoqXG5cbk9rYXksIHNvIHNvbWVvbmUgd2FudHMgdG8ga25vdyB3aGVyZSB0aGUgYG5mdF9mbG93X3JvdXRlYCBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbS4gVGhhdCdzIGEgZnVuZGFtZW50YWwgZGVidWdnaW5nIG9yIGNvZGUgYW5hbHlzaXMgcXVlc3Rpb24sIGlzbid0IGl0PyBMZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJIG5lZWQgdG8ga25vdyB0aGUgY29udGV4dC4gSXMgdGhpcyBpbiBhIHNwZWNpZmljIGNvZGViYXNlPyBJcyB0aGlzIGEgcmVzZWFyY2ggcHJvamVjdCwgb3IgYSBwcm9kdWN0aW9uIGVudmlyb25tZW50PyBUaGF0IGxldmVsIG9mIGRldGFpbCBkcmFzdGljYWxseSBjaGFuZ2VzIG15IGFwcHJvYWNoLlxuXG5QcmVzdW1pbmcgSSBkb24ndCBoYXZlIHRoYXQgaW5mb3JtYXRpb24sIEknZCBpbW1lZGlhdGVseSBqdW1wIHRvIHNvbWUgdGVjaG5pcXVlcy5cblxuKiAgICoqU3RhdGljIEFuYWx5c2lzOioqIEknZCByZWFjaCBmb3IgdG9vbHMgbGlrZSBncmVwLCBvciBhIG1vcmUgc29waGlzdGljYXRlZCBjb2RlIHNlYXJjaCB0b29sIGlmIGl0J3MgYSBsYXJnZXIgcHJvamVjdCBhbmQgSSBrbm93IHRoZSBsYW5ndWFnZS4gSSdkIGJlIGxvb2tpbmcgZm9yIGFsbCBvY2N1cnJlbmNlcyBvZiBcIm5mdFxcX2Zsb3dcXF9yb3V0ZVwiIChjYXNlLXNlbnNpdGl2ZSBhcyBuZWVkZWQpIHRvIGZpbmQgcG90ZW50aWFsIGNhbGwgc2l0ZXMuIEFyZSB0aGVyZSBzaW1pbGFyIGZ1bmN0aW9ucyB0aGF0IGFsc28gY2FsbCBpdD9cbiogICAqKkR5bmFtaWMgQW5hbHlzaXM6KiogSWYgdGhlIGNvZGUgaXMgcnVubmluZywgYSBkZWJ1Z2dlciBvciBwcm9maWxlciBiZWNvbWVzIG15IGZyaWVuZC4gSSdkIHNldCBhIGJyZWFrcG9pbnQgYXQgdGhlIGVudHJ5IG9mIGBuZnRfZmxvd19yb3V0ZWAgYW5kIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBiYWNrIHRvIHNlZSBleGFjdGx5IHdoaWNoIGZ1bmN0aW9ucyBhcmUgY2FsbGluZyBpdC4gVGhpcyBnaXZlcyBtZSBhIHJlYWwtdGltZSwgY29uY3JldGUgdmlldy5cbiogICAqKkNvZGUgRG9jdW1lbnRhdGlvbjoqKiBCZWZvcmUgZGl2aW5nIHRvbyBkZWVwLCBJIHdvdWxkIGNoZWNrIGlmIGFueSBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZS4gSGFzIHRoaXMgZnVuY3Rpb24gYmVlbiBkZXNjcmliZWQsIGFsb25nIHdpdGggaXRzIGZ1bmN0aW9uIG9yIHB1cnBvc2U/IFNvbWV0aW1lcywgY29tbWVudHMgYW5kIGRvY3VtZW50YXRpb24gaG9sZCB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdXNhZ2UgcGF0dGVybnMuXG4qICAgKipEZXBlbmRlbmN5IEluamVjdGlvbi9GcmFtZXdvcmtzOioqIElmIHRoaXMgZnVuY3Rpb24gaXMgcGFydCBvZiBhIGxhcmdlciBmcmFtZXdvcmsgb3IgdXNlcyBkZXBlbmRlbmN5IGluamVjdGlvbiwgdGhhdCBpbXBhY3RzIHRoZSBzZWFyY2guIEkgbWlnaHQgbmVlZCB0byBjb25zaWRlciBob3cgdGhlIGZyYW1ld29yayBoYW5kbGVzIGZ1bmN0aW9uIGNhbGxzIG9yIHdoYXQgY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgcHJlc2VudC5cbiogICAqKlJldmVyc2UgRW5naW5lZXJpbmcgKElmIE5lY2Vzc2FyeSk6KiogSWYgdGhlIGNvZGUgaXMgb2JmdXNjYXRlZCBvciBpZiB0aGVyZSdzIG5vIHNvdXJjZSBjb2RlIGF2YWlsYWJsZSwgSSBtaWdodCBuZWVkIHRvIHJldmVyc2UgZW5naW5lZXIuIFRoaXMgaXMgbW9yZSB0aW1lIGNvbnN1bWluZywgYnV0IHRoZSBpZGVhIHdvdWxkIGJlIHRvIGFuYWx5emUgdGhlIGNvbXBpbGVkIGNvZGUgKGRpc2Fzc2VtYmx5LCBldGMuKSB0byBmaWd1cmUgb3V0IHRoZSBjYWxsaW5nIGhpZXJhcmNoeS5cblxuVGhlIGtleSBpcyBtZXRob2RpY2FsIGVsaW1pbmF0aW9uLiBTdGFydCB3aXRoIHRoZSBzaW1wbGVzdCwgbW9zdCBkaXJlY3QgbWV0aG9kcyAoc3RhdGljIGFuYWx5c2lzKSBhbmQgZ3JhZHVhbGx5IG1vdmUgdG8gbW9yZSBpbnZvbHZlZCB0ZWNobmlxdWVzIGlmIG5lZWRlZC4gVGhlIGdvYWwgaXMgdG8gZXN0YWJsaXNoIHRoZSBjYWxsIHN0YWNrLCBzbyBJIGNhbiB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IGFuZCBpbnRlbnQgb2YgdGhlIGBuZnRfZmxvd19yb3V0ZWAgY2FsbC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTY3NSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI0OjUwLjA3NTQ1MTYxM1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTg4NTMxMTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mdF9mbG93X3JvdXRlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlLmg9MjQ3PXN0cnVjdCBuZnRfcGt0aW5mbztcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZS5oOjI0ODppbnQgbmZ0X2Zsb3dfcm91dGUoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsIGNvbnN0IHN0cnVjdCBuZl9jb25uICpjdCxcXG5pbmNsdWRlL25ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZS5oLTI0OS1cXHRcXHQgICBzdHJ1Y3QgbmZfZmxvd19yb3V0ZSAqcm91dGUsIGVudW0gaXBfY29ubnRyYWNrX2RpciBkaXIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jPTI1MT1zdGF0aWMgaW50IG5mdF9kZXZfZm9yd2FyZF9wYXRoKGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0yOTktXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYzozMDA6aW50IG5mdF9mbG93X3JvdXRlKGNvbnN0IHN0cnVjdCBuZnRfcGt0aW5mbyAqcGt0LCBjb25zdCBzdHJ1Y3QgbmZfY29ubiAqY3QsXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0zMDEtXFx0XFx0ICAgc3RydWN0IG5mX2Zsb3dfcm91dGUgKnJvdXRlLCBlbnVtIGlwX2Nvbm50cmFja19kaXIgZGlyLFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy0zNTYtfVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM6MzU3OkVYUE9SVF9TWU1CT0xfR1BMKG5mdF9mbG93X3JvdXRlKTtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jPTUwPXN0YXRpYyB2b2lkIG5mdF9mbG93X29mZmxvYWRfZXZhbChjb25zdCBzdHJ1Y3QgbmZ0X2V4cHIgKmV4cHIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mdF9mbG93X29mZmxvYWQuYy0xMDgtXFx0ZGlyID0gQ1RJTkZPMkRJUihjdGluZm8pO1xcbm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jOjEwOTpcXHRpZiAobmZ0X2Zsb3dfcm91dGUocGt0LCBjdCwgXFx1MDAyNnJvdXRlLCBkaXIsIHByaXYtXFx1MDAzZWZsb3d0YWJsZSkgXFx1MDAzYyAwKVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jLTExMC1cXHRcXHRnb3RvIGVycl9mbG93X3JvdXRlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToyNDo1Mi4yNjM5ODc0ODFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjY4NDAyNDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqRXZhbHVhdGluZyBuZnRfZmxvd19vZmZsb2FkJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5SaWdodCwgc28gYG5mdF9mbG93X29mZmxvYWRfZXZhbGAgaXMgdGhlIGV2YWx1YXRpb24gZnVuY3Rpb24gZm9yIHRoZSBgZmxvd19vZmZsb2FkYCBleHByZXNzaW9uIGluIG5mdGFibGVzLiBHaXZlbiBpdHMgcm9sZSBpbiBzdWNoIGEga2V5IGFyZWEsIGl0J3MgcHJldHR5IGNsZWFyIHRoaXMgaXMgYSAqcHJpbWUqIHRhcmdldCBmb3IgZnV6emluZy4gRGVmaW5pdGVseSByZWFjaGFibGUsIGFuZCBkZWZpbml0ZWx5IHdvcnRoIGRpZ2dpbmcgaW50by5cblxuTm93LCB3aGljaCBmdW5jdGlvbnMgYXJlIG1vZGlmaWVkPyBBaGEsIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgIGFuZCBgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aGAuIFRoZXNlIG5lZWQgY2FyZWZ1bCBzY3J1dGlueS4gTGV0J3Mgc3RhcnQgd2l0aCBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYC4gV2UnbGwgc2VlIHdoYXQga2luZCBvZiBpbnB1dHMgaXQgaGFuZGxlcywgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBicm9hZGVyIGNvbnRleHQsIGFuZCBsb29rIGZvciBhbnkgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjY2MCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI0OjU1LjkzMjM5OTkzNloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE4NzIyMjY2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZfZmlsbF9mb3J3YXJkX3BhdGhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYz0yODI9c3RhdGljIGludCBhaXJvaGFfcHBlX2dldF93ZG1hX2luZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmFkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTI5Ny1cXHRyY3VfcmVhZF9sb2NrKCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzoyOTg6XFx0ZXJyID0gZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKFxcdTAwMjZjdHgsIFxcdTAwMjZzdGFjayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0yOTktXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfcHBlX29mZmxvYWQuYz05Mj1tdGtfZmxvd19nZXRfd2RtYV9pbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICphZGRyLCBzdHJ1Y3QgbXRrX3dkbWFfaW5mbyAqaW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jLTEwOS1cXHRyY3VfcmVhZF9sb2NrKCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmM6MTEwOlxcdGVyciA9IGRldl9maWxsX2ZvcndhcmRfcGF0aChcXHUwMDI2Y3R4LCBcXHUwMDI2c3RhY2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jLTExMS1cXHRyY3VfcmVhZF91bmxvY2soKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MzQyNz1pbnQgZGV2X2ZpbGxfbWV0YWRhdGFfZHN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpO1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MzQyODppbnQgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4ICpjdHgsXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0zNDI5LVxcdFxcdFxcdCAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayAqc3RhY2spO1xcbi0tXFxubmV0LzgwMjFxL3ZsYW5fZGV2LmM9NzU2PXN0YXRpYyBpbnQgdmxhbl9kZXZfZ2V0X2lmbGluayhjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0LzgwMjFxL3ZsYW5fZGV2LmMtNzYyLVxcbm5ldC84MDIxcS92bGFuX2Rldi5jOjc2MzpzdGF0aWMgaW50IHZsYW5fZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4ICpjdHgsXFxubmV0LzgwMjFxL3ZsYW5fZGV2LmMtNzY0LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlX3BhdGggKnBhdGgpXFxuLS1cXG5uZXQvODAyMXEvdmxhbl9kZXYuYz0xMDc4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgdmxhbl9uZXRkZXZfb3BzID0ge1xcbi0tXFxubmV0LzgwMjFxL3ZsYW5fZGV2LmMtMTEwOS1cXHQubmRvX2dldF9pZmxpbmtcXHRcXHQ9IHZsYW5fZGV2X2dldF9pZmxpbmssXFxubmV0LzgwMjFxL3ZsYW5fZGV2LmM6MTExMDpcXHQubmRvX2ZpbGxfZm9yd2FyZF9wYXRoXFx0PSB2bGFuX2Rldl9maWxsX2ZvcndhcmRfcGF0aCxcXG5uZXQvODAyMXEvdmxhbl9kZXYuYy0xMTExLVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSB2bGFuX2h3dHN0YW1wX2dldCxcXG4tLVxcbm5ldC9jb3JlL2Rldi5jPTc0Mz1zdGF0aWMgc3RydWN0IG5ldF9kZXZpY2VfcGF0aCAqZGV2X2Z3ZF9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfc3RhY2sgKnN0YWNrKVxcbi0tXFxubmV0L2NvcmUvZGV2LmMtNzUyLVxcbm5ldC9jb3JlL2Rldi5jOjc1MzppbnQgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4ICpjdHgsXFxubmV0L2NvcmUvZGV2LmMtNzU0LVxcdFxcdFxcdCAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayAqc3RhY2spXFxuLS1cXG5uZXQvY29yZS9kZXYuYy03ODYtfVxcbm5ldC9jb3JlL2Rldi5jOjc4NzpFWFBPUlRfU1lNQk9MX0dQTChkZXZfZmlsbF9mb3J3YXJkX3BhdGgpO1xcbm5ldC9jb3JlL2Rldi5jLTc4OC1cXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTk3OT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGllZWU4MDIxMV9tb25pdG9yaWZfb3BzID0ge1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtOTg4LVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjk4OTpzdGF0aWMgaW50IGllZWU4MDIxMV9uZXRkZXZfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggKmN0eCxcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy05OTAtXFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aCAqcGF0aClcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTEwNDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpZWVlODAyMTFfZGF0YWlmXzgwMjNfb3BzID0ge1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTA1My1cXHQubmRvX3NldF9tYWNfYWRkcmVzc1xcdD0gaWVlZTgwMjExX2NoYW5nZV9tYWMsXFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTA1NDpcXHQubmRvX2ZpbGxfZm9yd2FyZF9wYXRoXFx0PSBpZWVlODAyMTFfbmV0ZGV2X2ZpbGxfZm9yd2FyZF9wYXRoLFxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTEwNTUtXFx0Lm5kb19zZXR1cF90Y1xcdFxcdD0gaWVlZTgwMjExX25ldGRldl9zZXR1cF90YyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9MzY9c3RhdGljIGJvb2wgbmZ0X2lzX3ZhbGlkX2V0aGVyX2RldmljZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy00NC1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjQ1OnN0YXRpYyBpbnQgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmZfZmxvd19yb3V0ZSAqcm91dGUsXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy00Ni1cXHRcXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdF9jYWNoZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtNzktXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYzo4MDpcXHRyZXR1cm4gZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKFxcdTAwMjZjdHgsIHN0YWNrKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTgxLX1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9MjUxPXN0YXRpYyBpbnQgbmZ0X2Rldl9mb3J3YXJkX3BhdGgoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTI2Mi1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjI2MzpcXHRpZiAobmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aChyb3V0ZSwgZHN0LCBjdCwgZGlyLCBoYSwgXFx1MDAyNnN0YWNrKSBcXHUwMDNjIDAgfHxcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTI2NC1cXHQgICAgbmZ0X2Rldl9wYXRoX2luZm8oXFx1MDAyNnN0YWNrLCBcXHUwMDI2aW5mbywgaGEsIFxcdTAwMjZmdC1cXHUwMDNlZGF0YSkgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToyNDo1OC4xMTk2Mjk2OTNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTc4NTk3NzA0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBGb3J3YXJkIFBhdGggRnVuY3Rpb25hbGl0eSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0J3MgbW9kaWZ5aW5nIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgIGFuZCBhIGZldyBmdW5jdGlvbnMgdGhhdCBjYWxsIGl0OiBgYWlyb2hhX3BwZV9nZXRfd2RtYV9pbmZvYCwgYG10a19mbG93X2dldF93ZG1hX2luZm9gLCBhbmQgYG5mdF9kZXZfZmlsbF9mb3J3YXJkX3BhdGhgLiBSaWdodCBhd2F5LCBJIHNlZSB0aGlzIHRvdWNoZXMgc29tZSBwcmV0dHkgY29yZSBuZXR3b3JrIGZ1bmN0aW9uYWxpdHksIHBhcnRpY3VsYXJseSBuZXRmaWx0ZXIgZmxvdyBvZmZsb2FkIGFuZCBoYXJkd2FyZSBvZmZsb2FkIHBhdGhzLiBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBpdHNlbGYgbGl2ZXMgaW4gYG5ldC9jb3JlL2Rldi5jYC5cblxuR2l2ZW4gaXRzIHBvc2l0aW9uIGFuZCB0aGUgbmF0dXJlIG9mIHRoZSBjYWxsZXJzLCB0aGlzIGxvb2tzIGxpa2UgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEl0J3MgaW50aW1hdGVseSBpbnZvbHZlZCB3aXRoIGhvdyBuZXR3b3JrIHRyYWZmaWMgaXMgcm91dGVkLCBlc3BlY2lhbGx5IHdpdGggb2ZmbG9hZGluZy4gSSdtIHRoaW5raW5nIGFib3V0IHRoZSBkYXRhIHN0cnVjdHVyZXMgYW5kIGhvdyB0aGlzIGludGVyYWN0cyB3aXRoIHRoZSB2YXJpb3VzIG9mZmxvYWQgbWVjaGFuaXNtcywgYW5kIEkgd2FudCB0byBtYWtlIHN1cmUgdGhlIGVkZ2UgY2FzZXMgYXJlIHdlbGwgdGVzdGVkLlxuXG5Ob3csIGBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBpcyBwYXJ0aWN1bGFybHkgaW50ZXJlc3RpbmcgYmVjYXVzZSBpdCdzIGxpbmtlZCB0byBgbmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsYCwgd2hpY2ggaXMgdGhlIHdvcmtob3JzZSBiZWhpbmQgdGhlIGBmbG93X29mZmxvYWRgIGV4cHJlc3Npb24gaW4gbmZ0YWJsZXMuIFRoaXMgc3VnZ2VzdHMgdGhhdCBhbnkgaXNzdWVzIGhlcmUgY291bGQgcG90ZW50aWFsbHkgbGVhZCB0byBzZXJpb3VzIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcyB3aXRoaW4gbmZ0YWJsZXMgY29uZmlndXJhdGlvbnMgaWYgc29tZW9uZSB1c2VzIHRoZSBgZmxvd19vZmZsb2FkYCBleHByZXNzaW9uLlxuXG5CZWZvcmUgSSBkaWcgaW4gZGVlcGVyLCBJIHdhbnQgdG8gdmVyaWZ5IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgYENPTkZJR19ORl9GTE9XX1RBQkxFYCBpcyBwcm9iYWJseSByZXF1aXJlZCBmb3IgYW55IGNvZGUgcmVsYXRlZCB0byBgbmZfZmxvd190YWJsZV9wYXRoLmNgLCBhbmQgYENPTkZJR19ORlRfRkxPV19PRkZMT0FEYCBpcyBuZWVkZWQgZm9yIGBuZnRfZmxvd19vZmZsb2FkX2V2YWxgLiBMZXQgbWUganVzdCBkb3VibGUgY2hlY2sgdGhvc2UgY29uZmlndXJhdGlvbnMgcmVhbCBxdWljay4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmUgdGhlIHJpZ2h0IHRlc3RpbmcgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg1MzQsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MjU6MDMuOTA1NjA4NjlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwOTIwNzgyNjQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jPTQxPXN0YXRpYyB2b2lkIGZsb3dfb2ZmbG9hZF9jdF90Y3Aoc3RydWN0IG5mX2Nvbm4gKmN0KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmMtNDktXFxubmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmM6NTA6c3RhdGljIHZvaWQgbmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcXG5uZXQvbmV0ZmlsdGVyL25mdF9mbG93X29mZmxvYWQuYy01MS1cXHRcXHRcXHRcXHQgIHN0cnVjdCBuZnRfcmVncyAqcmVncyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jPTIxOD1zdGF0aWMgY29uc3Qgc3RydWN0IG5mdF9leHByX29wcyBuZnRfZmxvd19vZmZsb2FkX29wcyA9IHtcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jLTIyMC1cXHQuc2l6ZVxcdFxcdD0gTkZUX0VYUFJfU0laRShzaXplb2Yoc3RydWN0IG5mdF9mbG93X29mZmxvYWQpKSxcXG5uZXQvbmV0ZmlsdGVyL25mdF9mbG93X29mZmxvYWQuYzoyMjE6XFx0LmV2YWxcXHRcXHQ9IG5mdF9mbG93X29mZmxvYWRfZXZhbCxcXG5uZXQvbmV0ZmlsdGVyL25mdF9mbG93X29mZmxvYWQuYy0yMjItXFx0LmluaXRcXHRcXHQ9IG5mdF9mbG93X29mZmxvYWRfaW5pdCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MjU6MDUuOTk3NjkxMTc0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NzU3MzEwNDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipLY29uZmlnIEluc3BlY3Rpb24gZm9yIG5mdF9mbG93X29mZmxvYWQuYyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIEZpcnN0IG9yZGVyIG9mIGJ1c2luZXNzOiBJIG5lZWQgdG8gdGFrZSBhIGxvb2sgYXQgdGhlIEtjb25maWcgZmlsZSBmb3IgYG5mdF9mbG93X29mZmxvYWQuY2AuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBkZXBlbmRlbmNpZXMsIHRoZSBidWlsZCBjb25maWd1cmF0aW9ucywgYW5kIHdoYXQgdHJpZ2dlcnMgdGhpcyBtb2R1bGUgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGtlcm5lbC4gVGhpcyBpcyBmb3VuZGF0aW9uYWwgdG8gdW5kZXJzdGFuZGluZyB0aGUgbmV0ZmlsdGVyIGZsb3cgb2ZmbG9hZCBpbXBsZW1lbnRhdGlvbi4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB0aGUgaW50cmljYWNpZXMgb2YgaXRzIGRlcGVuZGVuY2llcyBhbmQgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGRpcmVjdGl2ZXMuIEFyZSB0aGVyZSBhbnkgaGFyZHdhcmUgYWNjZWxlcmF0aW9uIGRlcGVuZGVuY2llcz8gQXJlIHRoZXJlIHNwZWNpZmljIE5JQyBkcml2ZXJzIGl0IHJlbGllcyB1cG9uPyBLbm93aW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgd2lsbCBxdWlja2x5IGlsbHVtaW5hdGUgdGhlIHNjb3BlIG9mIHRoaXMgcGFydGljdWxhciBmdW5jdGlvbmFsaXR5IGFuZCB3aGV0aGVyIG9yIG5vdCBpdCBwbGF5cyBuaWNlbHkgd2l0aCBvdGhlciBuZXR3b3JraW5nIGZlYXR1cmVzLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQncyB3aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NDMxLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MjU6MDkuNjczNDI1OTM5WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjYxNTM3ODU0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mdF9mbG93X29mZmxvYWRcXFxcLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT0xMTI9b2JqLSQoQ09ORklHX05GVF9DVClcXHRcXHQrPSBuZnRfY3Qub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTEzOm9iai0kKENPTkZJR19ORlRfRkxPV19PRkZMT0FEKVxcdCs9IG5mdF9mbG93X29mZmxvYWQub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMTE0LW9iai0kKENPTkZJR19ORlRfTElNSVQpXFx0XFx0Kz0gbmZ0X2xpbWl0Lm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDk6MjU6MTIuMzM0OTY5OTM0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNDA3NTQ2NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipLY29uZmlnIERpdmUgZm9yIG5mX2Zsb3dfdGFibGVfcGF0aC5vKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcyBhbmQgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gYG5mX2Zsb3dfdGFibGVfcGF0aC5vYC4gUmlnaHQsIGZpcnN0IHN0ZXAsIGFzIGFsd2F5cywgaXMgdG8gZGl2ZSBpbnRvIHRoZSBLY29uZmlnIGZpbGVzLiBJJ20gZ29pbmcgdG8gcXVpY2tseSBzZWFyY2ggdGhyb3VnaCB0aGUgcmVsZXZhbnQgS2NvbmZpZyB0cmVlcywgc3RhcnRpbmcgd2l0aCB0aGUgbmV0d29ya2luZyBjb3JlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBkaXJlY3RseSBjb250cm9sIHRoZSBpbmNsdXNpb24gb2YgdGhpcyBvYmplY3QgZmlsZS4gSXMgaXQgdGllZCB0byBhIHNwZWNpZmljIGZlYXR1cmUsIGEgZ2VuZXJhbCBuZXR3b3JraW5nIHN1YnN5c3RlbSwgb3Igc29tZXRoaW5nIG1vcmUgZ3JhbnVsYXI/IEknbGwgYmUgbG9va2luZyBmb3IgYGNvbmZpZ2Agc3ltYm9scyB0aGF0IG1pZ2h0IGRpcmVjdGx5IG1lbnRpb24gYG5mX2Zsb3dfdGFibGVfcGF0aGAsIG9yLCBtb3JlIGxpa2VseSwgc3ltYm9scyB0aGF0IGNvbnRyb2wgYSBicm9hZGVyIGZlYXR1cmUgc2V0IHdpdGhpbiB3aGljaCB0aGlzIG1vZHVsZSByZXNpZGVzLiBJJ2xsIG5lZWQgdG8gdHJhY2UgdGhlIGRlcGVuZGVuY2llcyB1cCB0aGUgS2NvbmZpZyB0cmVlIGlmIGl0J3Mgbm90IGltbWVkaWF0ZWx5IG9idmlvdXMuIEtub3dpbmcgdGhpcyB3aWxsIGluZm9ybSBpZiBpdCdzIGNvbmZpZ3VyYWJsZSBvciBpZiBpdCBjb21lcyBvbiBhcyBhIHNpZGUgZWZmZWN0LiBUaGVuIEkgY2FuIGNyZWF0ZSBhIG1vcmUgaW5mb3JtZWQgcGxhbiBhbmQgZGV0ZXJtaW5lIGlmIG15IGVmZm9ydHMgYXJlIGdvaW5nIHRvIHlpZWxkIG1vcmUgaW5zaWdodHMuIEnigJlsbCBtYWtlIHN1cmUgdG8gbm90ZSB0aGUgcmVsZXZhbnQgS2NvbmZpZyBzbmlwcGV0cyBhbmQgYW55IHJlbGV2YW50IGRlcGVuZGVuY2llcyBJIGVuY291bnRlci5cblxuXG4iLCJJbnB1dFRva2VucyI6OTc0MywiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI1OjE2LjY3NTcyNzYxMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjcwMDA1MDk3MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9mbG93X3RhYmxlX3BhdGhcXFxcLm9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT0xNDM9bmZfZmxvd190YWJsZS1vYmpzXFx0XFx0Oj0gbmZfZmxvd190YWJsZV9jb3JlLm8gbmZfZmxvd190YWJsZV9pcC5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjE0NDpcXHRcXHRcXHRcXHQgICBuZl9mbG93X3RhYmxlX3BhdGgubyBcXFxcXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xNDUtXFx0XFx0XFx0XFx0ICAgbmZfZmxvd190YWJsZV9vZmZsb2FkLm8gbmZfZmxvd190YWJsZV94ZHAub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToyNToxOS4zNzU3ODQzMjNaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAxNTY2MzEzMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFzIGlmIGl0IHdlcmUgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBOZXRmaWx0ZXIgTWFrZWZpbGUqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBuZl9mbG93X3RhYmxlLW9ianNgIGFuZCB0aGUgYnJvYWRlciBOZXRmaWx0ZXIgZnJhbWV3b3JrLiBNeSBmaXJzdCBtb3ZlIGlzIHRvIGhlYWQgc3RyYWlnaHQgaW50byB0aGUgYG5ldC9uZXRmaWx0ZXIvTWFrZWZpbGVgLiBUaGlzIGZpbGUgaXMgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGhvdyB0aGVzZSBvYmplY3QgZmlsZXMgYXJlIGNvbXBpbGVkLCBsaW5rZWQsIGFuZCB1bHRpbWF0ZWx5IGludGVncmF0ZWQgaW50byB0aGUga2VybmVsIG1vZHVsZSBzeXN0ZW0uIEl04oCZbGwgcmV2ZWFsIHRoZSBkZXBlbmRlbmNpZXMsIHRoZSBidWlsZCBmbGFncyB1c2VkLCBhbmQgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRoYXQncyBnb2luZyBvbi4gSSdtIGhvcGluZyB0byBnZXQgYSBxdWljayBvdmVydmlldyBhbmQgaWRlbnRpZnkgYW55IHBvdGVudGlhbCBhcmVhcyBvZiBjb25jZXJuIG9yIG9wcG9ydHVuaXRpZXMgZm9yIG9wdGltaXphdGlvbiB3aXRoaW4gdGhlIGZsb3cgdGFibGUgaW1wbGVtZW50YXRpb24uIEl0J3MgdGltZSB0byB0cmFjZSB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgc2VlIGhvdyB0aGUgZmxvdyB0YWJsZSBmaXRzIGludG8gdGhlIGxhcmdlciBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDE0NSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI1OjIzLjM5MTQ0OTc2NFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIwMDUwMjY1NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZl9mbG93X3RhYmxlLW9ianNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZT0xNDI9b2JqLSQoQ09ORklHX05GX0ZMT1dfVEFCTEUpXFx0Kz0gbmZfZmxvd190YWJsZS5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZToxNDM6bmZfZmxvd190YWJsZS1vYmpzXFx0XFx0Oj0gbmZfZmxvd190YWJsZV9jb3JlLm8gbmZfZmxvd190YWJsZV9pcC5vIFxcXFxcXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlLTE0NC1cXHRcXHRcXHRcXHQgICBuZl9mbG93X3RhYmxlX3BhdGgubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI1OjI1LjU5MTk2MzJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA4NTI1Njc4NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBOZXR3b3JraW5nIFBhdGNoIGZvciBQb3RlbnRpYWwgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBtaW5kIGhvbmVzIGluIG9uIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb25zIGludm9sdmVkOiBgQ09ORklHX05GX0ZMT1dfVEFCTEVgIGFuZCBgQ09ORklHX05GVF9GTE9XX09GRkxPQURgLiBUaGF0J3MgdGhlIHN0YXJ0aW5nIHBvaW50LiBCdXQsIHdoYXQgYWJvdXQgdGhlIGNvcmUgZnVuY3Rpb24gaXRzZWxmLCBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYD8gSXQncyBpbiBgbmV0L2NvcmUvZGV2LmNgLCBzbyBpdCdzIGFsd2F5cyBjb21waWxlZCBpbi4gVGhlIHBhdGNoIHNlZW1zIHRvIGJlIGNoYW5naW5nIGhvdyBpdCBhY2Nlc3NlcyB0aGUgYGRldmAgZmllbGQgd2l0aGluIGEgY29udGV4dCBzdHJ1Y3R1cmUsIHVzaW5nIGBjdHgtXHUwMDNlZGV2YCBpbnN0ZWFkIG9mIHRoZSBvbGQgYGN0eC5kZXZgIOKAkyB0eXBpY2FsIHBvaW50ZXIgdnMuIHZhbHVlIGFjY2VzcyBjb3JyZWN0aW9uLiBUaGV54oCZdmUgdXBkYXRlZCBhbGwgdGhlIGNhbGwgc2l0ZXMsIHdoaWNoIGlzIGdvb2QuXG5cblRoZSByZWFsIHF1ZXN0aW9uIGlzOiBpcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz8gQWJzb2x1dGVseSEgQW55IGZ1bmN0aW9uYWwgY2hhbmdlIGRlZXAgd2l0aGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgc3RhY2sgaXMgcmlwZSBmb3IgZnV6emluZy4gVGhlIHBvdGVudGlhbCBpbXBhY3QgaXMgdG9vIHNpZ25pZmljYW50IHRvIGlnbm9yZS5cblxuVGhlcmVmb3JlLCB0aGUgbWFpbiBmdW5jdGlvbnMgdG8gcHV0IHVuZGVyIHRoZSBtaWNyb3Njb3BlIGFyZSBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCwgYG5mdF9kZXZfZmlsbF9mb3J3YXJkX3BhdGhgLCBgbmZ0X2Zsb3dfcm91dGVgLCBhbmQgYG5mdF9mbG93X29mZmxvYWRfZXZhbGAuIEkgbmVlZCB0byB6ZXJvIGluIG9uIHRoZXNlIGZvciBmb2N1c2VkIHRlc3RpbmcuIEFuZCBJIHNob3VsZCBwcm9iYWJseSB2ZXJpZnkgaWYgYG5mdF9kZXZfZmlsbF9mb3J3YXJkX3BhdGhgIGlzIGEgc3RhdGljIGZ1bmN0aW9uLiBUaGF0IGNvdWxkIGltcGFjdCBob3cgZWFzaWx5IGl0IGNhbiBiZSByZWFjaGVkIGluIG15IGZ1enppbmcgc2V0dXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNDczLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI1OjMxLjY3NzIyNDE4OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIzMjczNDg4NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9MzY9c3RhdGljIGJvb2wgbmZ0X2lzX3ZhbGlkX2V0aGVyX2RldmljZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy00NC1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjQ1OnN0YXRpYyBpbnQgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmZfZmxvd19yb3V0ZSAqcm91dGUsXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy00Ni1cXHRcXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdF9jYWNoZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9MjUxPXN0YXRpYyBpbnQgbmZ0X2Rldl9mb3J3YXJkX3BhdGgoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTI2Mi1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjI2MzpcXHRpZiAobmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aChyb3V0ZSwgZHN0LCBjdCwgZGlyLCBoYSwgXFx1MDAyNnN0YWNrKSBcXHUwMDNjIDAgfHxcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTI2NC1cXHQgICAgbmZ0X2Rldl9wYXRoX2luZm8oXFx1MDAyNnN0YWNrLCBcXHUwMDI2aW5mbywgaGEsIFxcdTAwMjZmdC1cXHUwMDNlZGF0YSkgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToyNTozMy45MDk5NjU3NzNaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU5MTY1NDc5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkFzc2Vzc2luZyBQb3RlbnRpYWwgU3RhdGljIEZ1bmN0aW9ucyB3aXRoaW4gdGhlIE5ldGZpbHRlciBGcmFtZXdvcmsqKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gTmV0ZmlsdGVyIGNvZGUsIHNwZWNpZmljYWxseSB0aGUgZnVuY3Rpb24gYG5mdF9kZXZfZmlsbF9mb3J3YXJkX3BhdGhgLiBJJ3ZlIGNvbmZpcm1lZCB0aGF0IG9uZSBpcyBpbmRlZWQgc3RhdGljYWxseSBkZWZpbmVkLiBOb3csIEkgbmVlZCB0byBleHBhbmQgbXkgc2VhcmNoLiBUaGUgY3J1Y2lhbCBxdWVzdGlvbiBhdCBoYW5kIG5vdyBpczogd2hhdCBhYm91dCBgbmZ0X2Zsb3dfcm91dGVgPyBJcyB0aGF0IG9uZSBhbHNvIGEgc3RhdGljIGZ1bmN0aW9uPyBJdCdzIGltcG9ydGFudCB0byBmaWd1cmUgdGhpcyBvdXQsIGFzIGtub3dpbmcgdGhpcyB3aWxsIHRlbGwgbWUgYSBnb29kIGRlYWwgYWJvdXQgaG93IHRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEyNzEsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToyNTozNy41MDE2MjMzNTNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMDI5MjkzNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZ0X2Zsb3dfcm91dGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGUuaD0yNDc9c3RydWN0IG5mdF9wa3RpbmZvO1xcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlLmg6MjQ4OmludCBuZnRfZmxvd19yb3V0ZShjb25zdCBzdHJ1Y3QgbmZ0X3BrdGluZm8gKnBrdCwgY29uc3Qgc3RydWN0IG5mX2Nvbm4gKmN0LFxcbmluY2x1ZGUvbmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlLmgtMjQ5LVxcdFxcdCAgIHN0cnVjdCBuZl9mbG93X3JvdXRlICpyb3V0ZSwgZW51bSBpcF9jb25udHJhY2tfZGlyIGRpcixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9MjUxPXN0YXRpYyBpbnQgbmZ0X2Rldl9mb3J3YXJkX3BhdGgoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTI5OS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjMwMDppbnQgbmZ0X2Zsb3dfcm91dGUoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsIGNvbnN0IHN0cnVjdCBuZl9jb25uICpjdCxcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTMwMS1cXHRcXHQgICBzdHJ1Y3QgbmZfZmxvd19yb3V0ZSAqcm91dGUsIGVudW0gaXBfY29ubnRyYWNrX2RpciBkaXIsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTM1Ni19XFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYzozNTc6RVhQT1JUX1NZTUJPTF9HUEwobmZ0X2Zsb3dfcm91dGUpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmM9NTA9c3RhdGljIHZvaWQgbmZ0X2Zsb3dfb2ZmbG9hZF9ldmFsKGNvbnN0IHN0cnVjdCBuZnRfZXhwciAqZXhwcixcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZ0X2Zsb3dfb2ZmbG9hZC5jLTEwOC1cXHRkaXIgPSBDVElORk8yRElSKGN0aW5mbyk7XFxubmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmM6MTA5OlxcdGlmIChuZnRfZmxvd19yb3V0ZShwa3QsIGN0LCBcXHUwMDI2cm91dGUsIGRpciwgcHJpdi1cXHUwMDNlZmxvd3RhYmxlKSBcXHUwMDNjIDApXFxubmV0L25ldGZpbHRlci9uZnRfZmxvd19vZmZsb2FkLmMtMTEwLVxcdFxcdGdvdG8gZXJyX2Zsb3dfcm91dGU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI1OjM5LjgwNDU1NjkzMloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2ODMxMDgxMTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjpcblxuKipBbmFseXppbmcgTmV0d29yayBGbG93IE9mZmxvYWRpbmcgQ29kZSoqXG5cbkFscmlnaHQsIHNvIGBuZnRfZmxvd19yb3V0ZWAgYW5kIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgIGFyZSBib3RoIGV4cG9ydGVkLCBtZWFuaW5nIHRoZXkncmUgYWNjZXNzaWJsZSBmdW5jdGlvbnMuIFRoYXQncyBnb29kIHRvIGtub3cg4oCTIGl0IHRlbGxzIG1lIHdoZXJlIHRoZXkncmUgYmVpbmcgdXNlZCAqZnJvbSouIEkgaW1tZWRpYXRlbHkgbmVlZCB0byBrZWVwIHRoYXQgaW4gbWluZCB3aGVuIHRyYWNpbmcgZXhlY3V0aW9uLiBBbmQsIGhleSwgYG5mdF9mbG93X29mZmxvYWRfZXZhbGAgaXMgZGVjbGFyZWQgYXMgKnN0YXRpYyouIFJpZ2h0LCBzbyBpdCdzIG9ubHkgdmlzaWJsZSB3aXRoaW4gaXRzIG93biBjb21waWxhdGlvbiB1bml0LiBObyBleHRlcm5hbCBkaXJlY3QgY2FsbHMgdGhlcmUsIHdoaWNoIGFjdHVhbGx5IGhlbHBzIHJlZHVjZSB0aGUgc2NvcGUgdG8gc2VhcmNoIGZyb20uIE5vdywgbGV0J3Mgc2VlLCB0aGUgbmV4dCB0aGluZyBJJ20gZ29pbmcgdG8gZG8gaXMgZG91YmxlLWNoZWNrICp3aG8qIGlzIGNhbGxpbmcgdGhhdCBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBmdW5jdGlvbi4gSSAqbmVlZCogdG8gdW5kZXJzdGFuZCBpdHMgdXNhZ2UgdG8gYWNjdXJhdGVseSB0cmFjayBkb3duIGhvdyBpdCBmaXRzIGludG8gdGhlIHdob2xlIGZyYW1ld29yay4gSSdtIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBsb29raW5nIGF0IGFsbCBjYWxsIHNpdGVzIGZvciBpdCwgZnJvbSB3aGVyZSBJJ2xsIGdldCBhbiBhY2N1cmF0ZSBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTkxMSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI1OjQ2LjYzNTY0MTI5N1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjMxMTMxMjkxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXZfZmlsbF9mb3J3YXJkX3BhdGhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYz0yODI9c3RhdGljIGludCBhaXJvaGFfcHBlX2dldF93ZG1hX2luZm8oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY29uc3QgdTggKmFkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9haXJvaGEvYWlyb2hhX3BwZS5jLTI5Ny1cXHRyY3VfcmVhZF9sb2NrKCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYzoyOTg6XFx0ZXJyID0gZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKFxcdTAwMjZjdHgsIFxcdTAwMjZzdGFjayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWlyb2hhL2Fpcm9oYV9wcGUuYy0yOTktXFx0cmN1X3JlYWRfdW5sb2NrKCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWRpYXRlay9tdGtfcHBlX29mZmxvYWQuYz05Mj1tdGtfZmxvd19nZXRfd2RtYV9pbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGNvbnN0IHU4ICphZGRyLCBzdHJ1Y3QgbXRrX3dkbWFfaW5mbyAqaW5mbylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jLTEwOS1cXHRyY3VfcmVhZF9sb2NrKCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVkaWF0ZWsvbXRrX3BwZV9vZmZsb2FkLmM6MTEwOlxcdGVyciA9IGRldl9maWxsX2ZvcndhcmRfcGF0aChcXHUwMDI2Y3R4LCBcXHUwMDI2c3RhY2spO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lZGlhdGVrL210a19wcGVfb2ZmbG9hZC5jLTExMS1cXHRyY3VfcmVhZF91bmxvY2soKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg9MzQyNz1pbnQgZGV2X2ZpbGxfbWV0YWRhdGFfZHN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpO1xcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6MzQyODppbnQgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4ICpjdHgsXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0zNDI5LVxcdFxcdFxcdCAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayAqc3RhY2spO1xcbi0tXFxubmV0LzgwMjFxL3ZsYW5fZGV2LmM9NzU2PXN0YXRpYyBpbnQgdmxhbl9kZXZfZ2V0X2lmbGluayhjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0LzgwMjFxL3ZsYW5fZGV2LmMtNzYyLVxcbm5ldC84MDIxcS92bGFuX2Rldi5jOjc2MzpzdGF0aWMgaW50IHZsYW5fZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4ICpjdHgsXFxubmV0LzgwMjFxL3ZsYW5fZGV2LmMtNzY0LVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBuZXRfZGV2aWNlX3BhdGggKnBhdGgpXFxuLS1cXG5uZXQvODAyMXEvdmxhbl9kZXYuYz0xMDc4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgdmxhbl9uZXRkZXZfb3BzID0ge1xcbi0tXFxubmV0LzgwMjFxL3ZsYW5fZGV2LmMtMTEwOS1cXHQubmRvX2dldF9pZmxpbmtcXHRcXHQ9IHZsYW5fZGV2X2dldF9pZmxpbmssXFxubmV0LzgwMjFxL3ZsYW5fZGV2LmM6MTExMDpcXHQubmRvX2ZpbGxfZm9yd2FyZF9wYXRoXFx0PSB2bGFuX2Rldl9maWxsX2ZvcndhcmRfcGF0aCxcXG5uZXQvODAyMXEvdmxhbl9kZXYuYy0xMTExLVxcdC5uZG9faHd0c3RhbXBfZ2V0XFx0PSB2bGFuX2h3dHN0YW1wX2dldCxcXG4tLVxcbm5ldC9jb3JlL2Rldi5jPTc0Mz1zdGF0aWMgc3RydWN0IG5ldF9kZXZpY2VfcGF0aCAqZGV2X2Z3ZF9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfc3RhY2sgKnN0YWNrKVxcbi0tXFxubmV0L2NvcmUvZGV2LmMtNzUyLVxcbm5ldC9jb3JlL2Rldi5jOjc1MzppbnQgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKHN0cnVjdCBuZXRfZGV2aWNlX3BhdGhfY3R4ICpjdHgsXFxubmV0L2NvcmUvZGV2LmMtNzU0LVxcdFxcdFxcdCAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9zdGFjayAqc3RhY2spXFxuLS1cXG5uZXQvY29yZS9kZXYuYy03ODYtfVxcbm5ldC9jb3JlL2Rldi5jOjc4NzpFWFBPUlRfU1lNQk9MX0dQTChkZXZfZmlsbF9mb3J3YXJkX3BhdGgpO1xcbm5ldC9jb3JlL2Rldi5jLTc4OC1cXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTk3OT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGllZWU4MDIxMV9tb25pdG9yaWZfb3BzID0ge1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtOTg4LVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjk4OTpzdGF0aWMgaW50IGllZWU4MDIxMV9uZXRkZXZfZmlsbF9mb3J3YXJkX3BhdGgoc3RydWN0IG5ldF9kZXZpY2VfcGF0aF9jdHggKmN0eCxcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy05OTAtXFx0XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG5ldF9kZXZpY2VfcGF0aCAqcGF0aClcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTEwNDc9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpZWVlODAyMTFfZGF0YWlmXzgwMjNfb3BzID0ge1xcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTA1My1cXHQubmRvX3NldF9tYWNfYWRkcmVzc1xcdD0gaWVlZTgwMjExX2NoYW5nZV9tYWMsXFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTA1NDpcXHQubmRvX2ZpbGxfZm9yd2FyZF9wYXRoXFx0PSBpZWVlODAyMTFfbmV0ZGV2X2ZpbGxfZm9yd2FyZF9wYXRoLFxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTEwNTUtXFx0Lm5kb19zZXR1cF90Y1xcdFxcdD0gaWVlZTgwMjExX25ldGRldl9zZXR1cF90YyxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9MzY9c3RhdGljIGJvb2wgbmZ0X2lzX3ZhbGlkX2V0aGVyX2RldmljZShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy00NC1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjQ1OnN0YXRpYyBpbnQgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aChjb25zdCBzdHJ1Y3QgbmZfZmxvd19yb3V0ZSAqcm91dGUsXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYy00Ni1cXHRcXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBkc3RfZW50cnkgKmRzdF9jYWNoZSxcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmMtNzktXFxubmV0L25ldGZpbHRlci9uZl9mbG93X3RhYmxlX3BhdGguYzo4MDpcXHRyZXR1cm4gZGV2X2ZpbGxfZm9yd2FyZF9wYXRoKFxcdTAwMjZjdHgsIHN0YWNrKTtcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTgxLX1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvbmZfZmxvd190YWJsZV9wYXRoLmM9MjUxPXN0YXRpYyBpbnQgbmZ0X2Rldl9mb3J3YXJkX3BhdGgoY29uc3Qgc3RydWN0IG5mdF9wa3RpbmZvICpwa3QsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTI2Mi1cXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jOjI2MzpcXHRpZiAobmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aChyb3V0ZSwgZHN0LCBjdCwgZGlyLCBoYSwgXFx1MDAyNnN0YWNrKSBcXHUwMDNjIDAgfHxcXG5uZXQvbmV0ZmlsdGVyL25mX2Zsb3dfdGFibGVfcGF0aC5jLTI2NC1cXHQgICAgbmZ0X2Rldl9wYXRoX2luZm8oXFx1MDAyNnN0YWNrLCBcXHUwMDI2aW5mbywgaGEsIFxcdTAwMjZmdC1cXHUwMDNlZGF0YSkgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToyNTo0OC45NDY5NTk4NjZaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODc2ODMyMTQwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDdXJyZW50IEFuYWx5c2lzIG9mIHRoZSBOZXRmaWx0ZXIgRmxvdyBPZmZsb2FkIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoZSBOZXRmaWx0ZXIgZmxvdyBvZmZsb2FkLCBhbmQgbXkgZm9jdXMgbmVlZHMgdG8gYmUgbGFzZXItc2hhcnAuIFJpZ2h0IG5vdywgSSBiZWxpZXZlIHRoZSBrZXkgZnVuY3Rpb25zIHRvIGV4YW1pbmUgYXJlIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgIGFuZCBgbmZ0X2Zsb3dfcm91dGVgLiBJIGFsc28gbmVlZCB0byBrZWVwIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYE5GX0ZMT1dfVEFCTEVgIGFuZCBgTkZUX0ZMT1dfT0ZGTE9BRGAgaW4gbWluZCwgYXMgdGhleSdsbCBvYnZpb3VzbHkgc2hhcGUgdGhlIGJlaGF2aW9yLlxuXG5GaXJzdCwgYSBxdWljayBzYW5pdHkgY2hlY2s6IEkgbmVlZCB0byBlbnN1cmUgdGhhdCBgTkZUX0ZMT1dfT0ZGTE9BRGAgZGVwZW5kcyBvbiBgTkZfVEFCTEVTYC4gVGhpcyBpcyBuZXRmaWx0ZXItcmVsYXRlZCwgc28gaXQncyBhIGNyaXRpY2FsIGRlcGVuZGVuY3kgdG8gY29uZmlybS4gSG1tLCB5ZXAsIHRoYXQncyB3aGF0IEkgdGhvdWdodC4gSXQncyBmdW5kYW1lbnRhbGx5IHRpZWQgdG8gdGhlIE5ldGZpbHRlciBpbmZyYXN0cnVjdHVyZS5cblxuTm93LCBsZXQgbWUgZ28gc3RyYWlnaHQgdG8gYG5ldC9uZXRmaWx0ZXIvS2NvbmZpZ2AgdG8gcGluIGRvd24gdGhlIGRldGFpbHMgc3Vycm91bmRpbmcgYE5GVF9GTE9XX09GRkxPQURgLiBUaGlzIEtjb25maWcgZmlsZSB3aWxsIGJlIHRoZSBtb3N0IGF1dGhvcml0YXRpdmUgc291cmNlIGZvciB1bmRlcnN0YW5kaW5nIHRoZSBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgdmFsdWVzLCBhbmQgdGhlIGNvbmRpdGlvbmFsIGJ1aWxkIGxvZ2ljIGludm9sdmVkLiBGcm9tIHRoZXJlLCBJIGNhbiB1bmRlcnN0YW5kIGhvdyB0aGlzIGFsbCBmaXRzIHRvZ2V0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzgxOCwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI1OjU3LjcxNTI4MzkxNloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI5MTgwOTA4MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZUX0ZMT1dfT0ZGTE9BRFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NDk4PWNvbmZpZyBORlRfRVhUSERSX0RDQ1BcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01MDMtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjUwNDpjb25maWcgTkZUX0ZMT1dfT0ZGTE9BRFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01MDUtXFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0sgXFx1MDAyNlxcdTAwMjYgTkZfRkxPV19UQUJMRVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToyNjowMC4wMDcwOTc0ODdaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM4NTExODUxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgY29uc2lkZXJhdGlvbnMsIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgc29tZW9uZSB3aG8gdW5kZXJzdGFuZHMgdGhlIGludHJpY2FjaWVzIG9mIG5ldHdvcmsgdHJhZmZpYyBtYW5hZ2VtZW50OlxuXG4qKk5ldHdvcmsgVHJhZmZpYyBDb25zaWRlcmF0aW9ucyoqXG5cblJpZ2h0LCBzbyB0byBtYWtlIHRoaXMgd29yaywgaXQncyBjbGVhciB3ZSdyZSBnb2luZyB0byBuZWVkIGEgc3BlY2lmaWMgc2V0IG9mIGtlcm5lbCBtb2R1bGVzIGluIHBsYWNlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB3ZSdsbCBiZSByZWx5aW5nIG9uIGBORl9DT05OVFJBQ0tgLCBgTkZfRkxPV19UQUJMRWAsIGFuZCBgTkZUX0ZMT1dfT0ZGTE9BRGAuIFRoZXNlIGFyZSB0aGUgY29yZSBidWlsZGluZyBibG9ja3MgZm9yIHN0YXRlZnVsIGluc3BlY3Rpb24sIGFuZCBvZmZsb2FkaW5nLlxuXG5Ob3csIGxldCdzIGp1c3QgbWFrZSBzdXJlIGFib3V0IGBORl9GTE9XX1RBQkxFYCDigJMgaXQncyBhIGNyaXRpY2FsIGNvbXBvbmVudCBoZXJlLiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGhvdyB0aGlzIG1vZHVsZSBvcGVyYXRlcywgYW5kIHdoYXQgYXJlIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDI3MCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI2OjA0LjM5MjIyNDQ4MVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA2ODc3NjA1NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfRkxPV19UQUJMRVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NzAxPWVuZGlmICMgTkZfVEFCTEVTXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTcwMi1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzAzOmNvbmZpZyBORl9GTE9XX1RBQkxFX0lORVRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNzA0LVxcdHRyaXN0YXRlIFxcXCJOZXRmaWx0ZXIgZmxvdyB0YWJsZSBtaXhlZCBJUHY0L0lQdjYgbW9kdWxlXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTcxMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzExOmNvbmZpZyBORl9GTE9XX1RBQkxFXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTcxMi1cXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIGZsb3cgdGFibGUgbW9kdWxlXFxcIlxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTcyMC1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6NzIxOmNvbmZpZyBORl9GTE9XX1RBQkxFX1BST0NGU1xcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy03MjItXFx0Ym9vbCBcXFwiU3VwcGx5IGZsb3cgdGFibGUgc3RhdGlzdGljcyBpbiBwcm9jZnNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDA5OjI2OjA2LjQ2MTAwNjg4N1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5OTMxNjYzNDM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKldvcnRoIEZ1enppbmcgLSBBIFF1aWNrIEFzc2Vzc21lbnQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoIGFuZCwgYmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZywgaXQncyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSBzaG91bGQgcHJpb3JpdGl6ZSBmb3IgZnV6emluZy4gVGhlIGtleSBjb25maWd1cmF0aW9ucyBoZXJlIGFyZSBgTkZfRkxPV19UQUJMRWAgYW5kIGBORlRfRkxPV19PRkZMT0FEYCDigJMgdGhvc2UgYXJlIHRoZSBnYXRla2VlcGVycy5cblxuRnVuY3Rpb25hbGx5LCB0aGlzIHBhdGNoIGxvb2tzIHNvbGlkOyBpdOKAmXMgbWFraW5nIGNoYW5nZXMgdG8gc29tZSBjcnVjaWFsIHBhcnRzIG9mIHRoZSBrZXJuZWwuIEl04oCZcyBtb2RpZnlpbmcgdGhlIGNvcmUgbmV0d29ya2luZyBhbmQgbmV0ZmlsdGVyIGxvZ2ljLCBhbmQgc3BlY2lmaWNhbGx5LCBJJ20gbm90aW5nIHRoZSB1cGRhdGVzIHRvIGBkZXZfZmlsbF9mb3J3YXJkX3BhdGhgLCBhcyB3ZWxsIGFzIGhvdyBpdCBpbXBhY3RzIHRoZSBgbmV0X2RldmljZV9wYXRoX2N0eGAuIFRoZSByZWFjaGFiaWxpdHkgaGVyZSBpcyBjbGVhcjogdGhlIHBhdGggZ29lcyBmcm9tIGBuZnRfZmxvd19yb3V0ZWAgdG8gYG5mdF9kZXZfZm9yd2FyZF9wYXRoYCwgYW5kIHRoZW4gZGlyZWN0bHkgaW50byBgbmZ0X2Rldl9maWxsX2ZvcndhcmRfcGF0aGAsIGluZGljYXRpbmcgYSBzb2xpZCBwYXRoIGZvciBmdXp6ZXIgaW50ZXJhY3Rpb24uXG5cblNpbmNlIHRoZSBwYXRjaCB0b3VjaGVzIG9uIGNvcmUgbmV0d29ya2luZyBwcmluY2lwbGVzIGFuZCBJIGNhbiBzZWUgYSBjbGVhciBwYXRoIGludG8gdGhlIGZ1bmN0aW9uIGl0IGFsdGVycywgcGx1cyB0aGUgZmFjdCB0aGF0IGl0J3MgYWxsIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCBlbnZpcm9ubWVudHMsIGl0J3MgYSB3b3J0aHdoaWxlIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gV29ydGhGdXp6aW5nPXRydWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0Njk1LCJPdXRwdXRUb2tlbnMiOjE2NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwOToyNjoxNi4zOTI2NzM5MjVaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjI2NDUwNTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5GX0ZMT1dfVEFCTEVcIixcbiAgICBcIk5GVF9GTE9XX09GRkxPQURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJkZXZfZmlsbF9mb3J3YXJkX3BhdGhcIixcbiAgICBcIm5mdF9mbG93X3JvdXRlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHNpZ25hdHVyZSBhbmQgaW1wbGVtZW50YXRpb24gb2YgYGRldl9maWxsX2ZvcndhcmRfcGF0aGAgaW4gdGhlIGNvcmUgbmV0d29ya2luZyBzdGFjaywgY2hhbmdpbmcgaG93IHRoZSBgbmV0X2RldmljZV9wYXRoX2N0eGAgaXMgcGFzc2VkIGFuZCBhY2Nlc3NlZC4gVGhpcyBmdW5jdGlvbiBpcyByZWFjaGFibGUgdmlhIHRoZSBuZXRmaWx0ZXIgZmxvdyBvZmZsb2FkIHN1YnN5c3RlbSAoYG5mdF9mbG93X3JvdXRlYCAtXFx1MDAzZSBgbmZ0X2Rldl9mb3J3YXJkX3BhdGhgIC1cXHUwMDNlIGBuZnRfZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCkuIFNpbmNlIGl0IGFsdGVycyBjb3JlIG5ldHdvcmtpbmcgbG9naWMgYW5kIGlzIHJlYWNoYWJsZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIGl0IGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfRkxPV19UQUJMRVwiLFxuICAgIFwiTkZUX0ZMT1dfT0ZGTE9BRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImRldl9maWxsX2ZvcndhcmRfcGF0aFwiLFxuICAgIFwibmZ0X2Zsb3dfcm91dGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgc2lnbmF0dXJlIGFuZCBpbXBsZW1lbnRhdGlvbiBvZiBgZGV2X2ZpbGxfZm9yd2FyZF9wYXRoYCBpbiB0aGUgY29yZSBuZXR3b3JraW5nIHN0YWNrLCBjaGFuZ2luZyBob3cgdGhlIGBuZXRfZGV2aWNlX3BhdGhfY3R4YCBpcyBwYXNzZWQgYW5kIGFjY2Vzc2VkLiBUaGlzIGZ1bmN0aW9uIGlzIHJlYWNoYWJsZSB2aWEgdGhlIG5ldGZpbHRlciBmbG93IG9mZmxvYWQgc3Vic3lzdGVtIChgbmZ0X2Zsb3dfcm91dGVgIC1cXHUwMDNlIGBuZnRfZGV2X2ZvcndhcmRfcGF0aGAgLVxcdTAwM2UgYG5mdF9kZXZfZmlsbF9mb3J3YXJkX3BhdGhgKS4gU2luY2UgaXQgYWx0ZXJzIGNvcmUgbmV0d29ya2luZyBsb2dpYyBhbmQgaXMgcmVhY2hhYmxlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgaXQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmh2gd[1] Phase: Succeeded StartedAt: 2026-08-05 09:26:28 +0000 UTC FinishedAt: 2026-08-05 09:26:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh2gd[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-05 09:26:28 +0000 UTC FinishedAt: 2026-08-05 09:26:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh2gd[2] Phase: Succeeded StartedAt: 2026-08-05 09:26:28 +0000 UTC FinishedAt: 2026-08-05 13:10:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-05 09:26:28 +0000 UTC FinishedAt: 2026-08-05 13:10:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-05 09:26:28 +0000 UTC FinishedAt: 2026-08-05 09:26:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-05 09:26:28 +0000 UTC FinishedAt: 2026-08-05 09:26:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmh2gd/series-workflowmh2gd-convert-artifact-2988783192/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-05 09:26:38 +0000 UTC FinishedAt: 2026-08-05 09:42:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-05 09:26:38 +0000 UTC FinishedAt: 2026-08-05 09:42:58 +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:*e6cc2a4a-0c11-45e5-9897-67660b3c9fde,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-workflowmh2gd/series-workflowmh2gd-convert-artifact-2988783192/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "ccf7abf3-3528-4dd5-98fd-a3b5aedaff5f", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmh2gd/series-workflowmh2gd-build-action-1913769614/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-05 09:26:38 +0000 UTC FinishedAt: 2026-08-05 09:42:48 +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:*e6cc2a4a-0c11-45e5-9897-67660b3c9fde,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-workflowmh2gd/series-workflowmh2gd-convert-artifact-2988783192/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "ccf7abf3-3528-4dd5-98fd-a3b5aedaff5f", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmh2gd/series-workflowmh2gd-build-action-1913769614/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-05 09:42:58 +0000 UTC FinishedAt: 2026-08-05 09:42:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-05 09:42:58 +0000 UTC FinishedAt: 2026-08-05 09:42:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-05 09:42:58 +0000 UTC FinishedAt: 2026-08-05 09:43:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-05 09:42:58 +0000 UTC FinishedAt: 2026-08-05 09:43:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmh2gd/series-workflowmh2gd-convert-artifact-3783067583/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-05 09:43:08 +0000 UTC FinishedAt: 2026-08-05 09:45:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-05 09:43:08 +0000 UTC FinishedAt: 2026-08-05 09:44:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ccf7abf3-3528-4dd5-98fd-a3b5aedaff5f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmh2gd/series-workflowmh2gd-build-action-1913769614/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-05 09:45:03 +0000 UTC FinishedAt: 2026-08-05 09:45:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-05 09:45:03 +0000 UTC FinishedAt: 2026-08-05 09:45:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-05 09:45:03 +0000 UTC FinishedAt: 2026-08-05 10:02:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-05 09:45:03 +0000 UTC FinishedAt: 2026-08-05 10:02:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*e6cc2a4a-0c11-45e5-9897-67660b3c9fde,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-workflowmh2gd/series-workflowmh2gd-convert-artifact-3783067583/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "a2b48b6c-f71e-46e9-aa53-2ec2618d57ad", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmh2gd/series-workflowmh2gd-build-action-343083987/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-05 09:45:03 +0000 UTC FinishedAt: 2026-08-05 10:02:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*e6cc2a4a-0c11-45e5-9897-67660b3c9fde,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-workflowmh2gd/series-workflowmh2gd-convert-artifact-3783067583/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "a2b48b6c-f71e-46e9-aa53-2ec2618d57ad", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmh2gd/series-workflowmh2gd-build-action-343083987/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-05 10:02:16 +0000 UTC FinishedAt: 2026-08-05 10:02:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-05 10:02:16 +0000 UTC FinishedAt: 2026-08-05 10:02:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-05 10:02:16 +0000 UTC FinishedAt: 2026-08-05 10:04:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-05 10:02:16 +0000 UTC FinishedAt: 2026-08-05 10:04:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a2b48b6c-f71e-46e9-aa53-2ec2618d57ad,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmh2gd/series-workflowmh2gd-build-action-343083987/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-05 10:04:47 +0000 UTC FinishedAt: 2026-08-05 13:10:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-05 10:04:47 +0000 UTC FinishedAt: 2026-08-05 13:10:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*ccf7abf3-3528-4dd5-98fd-a3b5aedaff5f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a2b48b6c-f71e-46e9-aa53-2ec2618d57ad,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmh2gd/series-workflowmh2gd-build-action-1913769614/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmh2gd/series-workflowmh2gd-build-action-343083987/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-05 10:04:47 +0000 UTC FinishedAt: 2026-08-05 10:04:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-05 10:04:47 +0000 UTC FinishedAt: 2026-08-05 10:04:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmh2gd/series-workflowmh2gd-convert-artifact-1545188184/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-05 10:04:47 +0000 UTC FinishedAt: 2026-08-05 10:04:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-05 10:04:47 +0000 UTC FinishedAt: 2026-08-05 10:04:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-05 10:04:47 +0000 UTC FinishedAt: 2026-08-05 10:04:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-05 10:04:57 +0000 UTC FinishedAt: 2026-08-05 13:10:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmh2gd[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["dev_fill_forward_path","nft_flow_route"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a23b36233d4103def55dc8cf65698106d0bd1e62","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_FLOW_TABLE","NFT_FLOW_OFFLOAD"],"series_id":"4170c13e-d494-448c-acf0-51f7e8ae5ff2","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-05 10:04:57 +0000 UTC FinishedAt: 2026-08-05 13:10:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ccf7abf3-3528-4dd5-98fd-a3b5aedaff5f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*a2b48b6c-f71e-46e9-aa53-2ec2618d57ad,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmh2gd/series-workflowmh2gd-build-action-1913769614/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmh2gd/series-workflowmh2gd-build-action-343083987/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowmh2gd/series-workflowmh2gd-convert-artifact-1545188184/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,}