Name: series-workflowbh2vc Phase: Running StartedAt: 2026-09-01 02:25:03 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbh2vc[0] Phase: Succeeded StartedAt: 2026-09-01 02:25:03 +0000 UTC FinishedAt: 2026-09-01 03:15:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbh2vc[0].run-triage Phase: Succeeded StartedAt: 2026-09-01 02:25:03 +0000 UTC FinishedAt: 2026-09-01 03:15:57 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "7b120a771943ffc3cbce787daecdd23eccb0505f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVSIM", "DEBUG_FS", "INET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "7b120a771943ffc3cbce787daecdd23eccb0505f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVSIM", "DEBUG_FS", "INET" ], "series_id": "a20673d7-e74a-4ac8-b54a-d9283b72ae63" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nsim_drv_probe", "nsim_drv_remove", "nsim_drv_configure_vfs", "nsim_bus_init", "nsim_bus_exit" ], "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+CgkJCTx0ZD4yMDI2LzA5LzAxIDAzOjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7LAogICAgJiMzNDtERUJVR19GUyYjMzQ7LAogICAgJiMzNDtJTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bnNpbV9kcnZfcHJvYmUmIzM0OywKICAgICYjMzQ7bnNpbV9kcnZfcmVtb3ZlJiMzNDssCiAgICAmIzM0O25zaW1fZHJ2X2NvbmZpZ3VyZV92ZnMmIzM0OywKICAgICYjMzQ7bnNpbV9idXNfaW5pdCYjMzQ7LAogICAgJiMzNDtuc2ltX2J1c19leGl0JiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW92ZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBpbmNyZW1lbnQgYHJlZmNvdW50X2luYyhcdTAwMjZuc2ltX2J1c19kZXZzKWAgZnJvbSBgbmV3X2RldmljZV9zdG9yZSgpYCBpbnRvIGBuc2ltX2J1c19kZXZfbmV3KClgIHByaW9yIHRvIGNhbGxpbmcgYGRldmljZV9yZWdpc3RlcigpYC4gVGhpcyBmaXhlcyByZWZlcmVuY2UgY291bnRpbmcgYmFsYW5jZSBpbiBlcnJvci9yZWxlYXNlIHBhdGhzLiBcblxuVGhlIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgYWx0ZXIgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZSB1c2FnZSwgYm91bmRzIGNoZWNrcywgb3Iga2VybmVsLXRvLXVzZXIgaW5mbyBsZWFrcy4gQW55IGxpZmVjeWNsZSBvciByZWZlcmVuY2UgY291bnRpbmcgZXJyb3JzIChlLmcuIHVzZS1hZnRlci1mcmVlLCByZWZjb3VudCB1bmRlcmZsb3cvb3ZlcmZsb3cpIGFyZSBjb3ZlcmVkIGJ5IHJlZmNvdW50X3QgY2hlY2tzIGFuZCBzdGFuZGFyZCBLQVNBTi9MT0NLREVQIGRldGVjdG9ycy4gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkanVzdHMgdGhlIGRldmljZSByZWZlcmVuY2UgY291bnRpbmcgZm9yIG5ldGRldnNpbSBidXMgZGV2aWNlcyBieSBtb3ZpbmcgcmVmY291bnRfaW5jKFx1MDAyNm5zaW1fYnVzX2RldnMpIGludG8gbnNpbV9idXNfZGV2X25ldygpIGJlZm9yZSBkZXZpY2VfcmVnaXN0ZXIoKSwgZml4aW5nIGEgcmVmY291bnQgdW5kZXJmbG93IG9uIGRldmljZSByZWdpc3RyYXRpb24gZmFpbHVyZS4gTmV0ZGV2c2ltIGlzIGEgc29mdHdhcmUtc2ltdWxhdGVkIG5ldHdvcmsgZGV2aWNlIGRyaXZlciBmdWxseSByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAzOjE0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzVlMjJjOWNmODZlOWI1ZWE1Mzc2YjM5ZTdiMDFhMTZjNjJhNDc5Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDEgMDM6MTQ6MDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jIGIvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jXG5pbmRleCA1YzU1YzMwODQ4N2I0Li40MjZmYjQzOGI5MjIxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmNcbkBAIC0xOTQsNyAmIzQzOzE5NCw2IEBAIG5ld19kZXZpY2Vfc3RvcmUoY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KVxuIFx0XHRnb3RvIGVycjtcbiBcdH1cbiBcbi1cdHJlZmNvdW50X2luYyhcdTAwMjZuc2ltX2J1c19kZXZzKTtcbiBcdC8qIEFsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqL1xuIFx0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2bnNpbV9idXNfZGV2LVx1MDAzZWluaXQsIHRydWUpO1xuIFxuQEAgLTQ2NSw2ICYjNDM7NDY0LDcgQEAgbnNpbV9idXNfZGV2X25ldyh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBwb3J0X2NvdW50LCB1bnNpZ25lZCBpbnQgbnVtX3F1ZXVcbiBcdC8qIERpc2FsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqL1xuIFx0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2bnNpbV9idXNfZGV2LVx1MDAzZWluaXQsIGZhbHNlKTtcbiBcbiYjNDM7XHRyZWZjb3VudF9pbmMoXHUwMDI2bnNpbV9idXNfZGV2cyk7XG4gXHRlcnIgPSBkZXZpY2VfcmVnaXN0ZXIoXHUwMDI2bnNpbV9idXNfZGV2LVx1MDAzZWRldik7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGVycl9uc2ltX2J1c19kZXZfaWRfZnJlZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMzoxNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRERVZTSU0mIzM0OywKICAgICYjMzQ7REVCVUdfRlMmIzM0OywKICAgICYjMzQ7SU5FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25zaW1fZHJ2X3Byb2JlJiMzNDssCiAgICAmIzM0O25zaW1fZHJ2X3JlbW92ZSYjMzQ7LAogICAgJiMzNDtuc2ltX2Rydl9jb25maWd1cmVfdmZzJiMzNDssCiAgICAmIzM0O25zaW1fYnVzX2luaXQmIzM0OywKICAgICYjMzQ7bnNpbV9idXNfZXhpdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGp1c3RzIHRoZSBkZXZpY2UgcmVmZXJlbmNlIGNvdW50aW5nIGZvciBuZXRkZXZzaW0gYnVzIGRldmljZXMgYnkgbW92aW5nIHJlZmNvdW50X2luYyhcdTAwMjZuc2ltX2J1c19kZXZzKSBpbnRvIG5zaW1fYnVzX2Rldl9uZXcoKSBiZWZvcmUgZGV2aWNlX3JlZ2lzdGVyKCksIGZpeGluZyBhIHJlZmNvdW50IHVuZGVyZmxvdyBvbiBkZXZpY2UgcmVnaXN0cmF0aW9uIGZhaWx1cmUuIE5ldGRldnNpbSBpcyBhIHNvZnR3YXJlLXNpbXVsYXRlZCBuZXR3b3JrIGRldmljZSBkcml2ZXIgZnVsbHkgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDc1ZTIyYzljZjg2ZTliNWVhNTM3NmIzOWU3YjAxYTE2YzYyYTQ3OWMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCAxIDAzOjE0OjA4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jIGIvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jCmluZGV4IDVjNTVjMzA4NDg3YjQuLjQyNmZiNDM4YjkyMjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMKQEAgLTE5NCw3ICYjNDM7MTk0LDYgQEAgbmV3X2RldmljZV9zdG9yZShjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCiAJCWdvdG8gZXJyOwogCX0KIAotCXJlZmNvdW50X2luYygmYW1wO25zaW1fYnVzX2RldnMpOwogCS8qIEFsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqLwogCXNtcF9zdG9yZV9yZWxlYXNlKCZhbXA7bnNpbV9idXNfZGV2LSZndDtpbml0LCB0cnVlKTsKIApAQCAtNDY1LDYgJiM0Mzs0NjQsNyBAQCBuc2ltX2J1c19kZXZfbmV3KHVuc2lnbmVkIGludCBpZCwgdW5zaWduZWQgaW50IHBvcnRfY291bnQsIHVuc2lnbmVkIGludCBudW1fcXVldQogCS8qIERpc2FsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqLwogCXNtcF9zdG9yZV9yZWxlYXNlKCZhbXA7bnNpbV9idXNfZGV2LSZndDtpbml0LCBmYWxzZSk7CiAKJiM0MzsJcmVmY291bnRfaW5jKCZhbXA7bnNpbV9idXNfZGV2cyk7CiAJZXJyID0gZGV2aWNlX3JlZ2lzdGVyKCZhbXA7bnNpbV9idXNfZGV2LSZndDtkZXYpOwogCWlmIChlcnIpCiAJCWdvdG8gZXJyX25zaW1fYnVzX2Rldl9pZF9mcmVlOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMzoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjA1CgkJCQkJCQlvdXRwdXQ6IDExNAoJCQkJCQkJdGhvdWdodHM6IDEwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIFRoaXMgTmV0d29yayBEZXZpY2UgU2ltdWxhdGlvbiBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgcGF0Y2ggYW5kIHRoZSBhc3NvY2lhdGVkIGluc3RydWN0aW9ucy4gTXkgZmlyc3QgbW92ZSBpcyBhbHdheXMgdG8gYW5hbHl6ZSB0aGUgZGlmZiBkaXJlY3RseS4gT2theSwgaXQmIzM5O3MgbW9kaWZ5aW5nIGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmNgLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTm93IEkgbmVlZCB0byBncmFzcCB0aGUgY29udGV4dCBvZiB0aGUgbW9kaWZpY2F0aW9uLCBzbyBJJiMzOTtsbCB6ZXJvIGluIG9uIHRoYXQgYGJ1cy5jYCBmaWxlLiBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG9uIGxpbmVzIGFyb3VuZCAxOTAtMjEwIGFuZCA0NjAtNDgwIOKAkyB0aG9zZSBhcmUgdXN1YWxseSB0aGUga2V5IHNlY3Rpb25zIGFyb3VuZCB0aGUgY2hhbmdlLCBhbmQgbGlrZWx5IHdoZXJlIHRoZSBiZWhhdmlvciBvZiB0aGUgcGF0Y2ggd2lsbCBiZWNvbWUgY2xlYXIuIEkmIzM5O2xsIGFsc28gZ2xhbmNlIGF0IHRoZSBLY29uZmlnIGZpbGUgaW4gYGRyaXZlcnMvbmV0L25ldGRldnNpbS9gLiBUaGF0IGdpdmVzIG1lIHRoZSBjb21waWxhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgZm9yIHRoYXQgbW9kdWxlLCBhbHdheXMgZ29vZCB0byBrbm93LiBGaW5hbGx5LCBiZWZvcmUgSSBkZWNpZGUgb24gbmV4dCBzdGVwcywgSSYjMzk7bSB0aGlua2luZyBJJiMzOTtsbCBuZWVkIHRvIHJ1biBzb21lIGFuYWx5c2lzIHRvb2xzIHRvIG1ha2Ugc3VyZSBJIGFtIGNvbXBsZXRlbHkgY2xlYXIgb24gdGhlIGltcGxpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTgwOlx0XHRcdHByX2VycihcJiMzNDtGb3JtYXQgZm9yIGFkZGluZyBuZXcgZGV2aWNlIGlzIFxcXCYjMzQ7aWQgcG9ydF9jb3VudCBudW1fcXVldWVzXFxcJiMzNDsgKHVpbnQgdWludCB1aW50KS5cXG5cJiMzNDspO1xuIDE4MTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAxODI6XHRcdH1cbiAxODM6XHRcbiAxODQ6XHRcdG11dGV4X2xvY2soXHUwMDI2bnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XG4gMTg1Olx0XHQvKiBQcmV2ZW50IHRvIHVzZSByZXNvdXJjZSBiZWZvcmUgaW5pdGlhbGl6YXRpb24uICovXG4gMTg2Olx0XHRpZiAoIXNtcF9sb2FkX2FjcXVpcmUoXHUwMDI2bnNpbV9idXNfZW5hYmxlKSkge1xuIDE4NzpcdFx0XHRlcnIgPSAtRUJVU1k7XG4gMTg4Olx0XHRcdGdvdG8gZXJyO1xuIDE4OTpcdFx0fVxuIDE5MDpcdFxuIDE5MTpcdFx0bnNpbV9idXNfZGV2ID0gbnNpbV9idXNfZGV2X25ldyhpZCwgcG9ydF9jb3VudCwgbnVtX3F1ZXVlcyk7XG4gMTkyOlx0XHRpZiAoSVNfRVJSKG5zaW1fYnVzX2RldikpIHtcbiAxOTM6XHRcdFx0ZXJyID0gUFRSX0VSUihuc2ltX2J1c19kZXYpO1xuIDE5NDpcdFx0XHRnb3RvIGVycjtcbiAxOTU6XHRcdH1cbiAxOTY6XHRcbiAxOTc6XHRcdC8qIEFsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqL1xuIDE5ODpcdFx0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2bnNpbV9idXNfZGV2LVx1MDAzZWluaXQsIHRydWUpO1xuIDE5OTpcdFxuIDIwMDpcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZuc2ltX2J1c19kZXYtXHUwMDNlbGlzdCwgXHUwMDI2bnNpbV9idXNfZGV2X2xpc3QpO1xuIDIwMTpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0X2xvY2spO1xuIDIwMjpcdFxuIDIwMzpcdFx0cmV0dXJuIGNvdW50O1xuIDIwNDpcdGVycjpcbiAyMDU6XHRcdG11dGV4X3VubG9jayhcdTAwMjZuc2ltX2J1c19kZXZfbGlzdF9sb2NrKTtcbiAyMDY6XHRcdHJldHVybiBlcnI7XG4gMjA3Olx0fVxuIDIwODpcdHN0YXRpYyBCVVNfQVRUUl9XTyhuZXdfZGV2aWNlKTtcbiAyMDk6XHRcbiAyMTA6XHRzdGF0aWMgdm9pZCBuc2ltX2J1c19kZXZfZGVsKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2Rldik7XG4gMjExOlx0XG4gMjEyOlx0c3RhdGljIHNzaXplX3RcbiAyMTM6XHRkZWxfZGV2aWNlX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcbiAyMTQ6XHR7XG4gMjE1Olx0XHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsICp0bXA7XG4gMjE2Olx0XHR1bnNpZ25lZCBpbnQgaWQ7XG4gMjE3Olx0XHRpbnQgZXJyO1xuIDIxODpcdFxuIDIxOTpcdFx0ZXJyID0gc3NjYW5mKGJ1ZiwgXCYjMzQ7JXVcJiMzNDssIFx1MDAyNmlkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDUwOlx0XG4gNDUxOlx0XHRuc2ltX2J1c19kZXYgPSBremFsbG9jX29iaigqbnNpbV9idXNfZGV2KTtcbiA0NTI6XHRcdGlmICghbnNpbV9idXNfZGV2KVxuIDQ1MzpcdFx0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbiA0NTQ6XHRcbiA0NTU6XHRcdGVyciA9IGlkYV9hbGxvY19yYW5nZShcdTAwMjZuc2ltX2J1c19kZXZfaWRzLCBpZCwgaWQsIEdGUF9LRVJORUwpO1xuIDQ1NjpcdFx0aWYgKGVyciBcdTAwM2MgMClcbiA0NTc6XHRcdFx0Z290byBlcnJfbnNpbV9idXNfZGV2X2ZyZWU7XG4gNDU4Olx0XHRuc2ltX2J1c19kZXYtXHUwMDNlZGV2LmlkID0gZXJyO1xuIDQ1OTpcdFx0bnNpbV9idXNfZGV2LVx1MDAzZWRldi5idXMgPSBcdTAwMjZuc2ltX2J1cztcbiA0NjA6XHRcdG5zaW1fYnVzX2Rldi1cdTAwM2VkZXYudHlwZSA9IFx1MDAyNm5zaW1fYnVzX2Rldl90eXBlO1xuIDQ2MTpcdFx0bnNpbV9idXNfZGV2LVx1MDAzZXBvcnRfY291bnQgPSBwb3J0X2NvdW50O1xuIDQ2MjpcdFx0bnNpbV9idXNfZGV2LVx1MDAzZW51bV9xdWV1ZXMgPSBudW1fcXVldWVzO1xuIDQ2MzpcdFx0bnNpbV9idXNfZGV2LVx1MDAzZWluaXRpYWxfbmV0ID0gY3VycmVudC1cdTAwM2Vuc3Byb3h5LVx1MDAzZW5ldF9ucztcbiA0NjQ6XHRcdC8qIERpc2FsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqL1xuIDQ2NTpcdFx0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2bnNpbV9idXNfZGV2LVx1MDAzZWluaXQsIGZhbHNlKTtcbiA0NjY6XHRcbiA0Njc6XHRcdHJlZmNvdW50X2luYyhcdTAwMjZuc2ltX2J1c19kZXZzKTtcbiA0Njg6XHRcdGVyciA9IGRldmljZV9yZWdpc3RlcihcdTAwMjZuc2ltX2J1c19kZXYtXHUwMDNlZGV2KTtcbiA0Njk6XHRcdGlmIChlcnIpXG4gNDcwOlx0XHRcdGdvdG8gZXJyX25zaW1fYnVzX2Rldl9pZF9mcmVlO1xuIDQ3MTpcdFxuIDQ3MjpcdFx0cmV0dXJuIG5zaW1fYnVzX2RldjtcbiA0NzM6XHRcbiA0NzQ6XHRlcnJfbnNpbV9idXNfZGV2X2lkX2ZyZWU6XG4gNDc1Olx0XHRpZGFfZnJlZShcdTAwMjZuc2ltX2J1c19kZXZfaWRzLCBuc2ltX2J1c19kZXYtXHUwMDNlZGV2LmlkKTtcbiA0NzY6XHRcdHB1dF9kZXZpY2UoXHUwMDI2bnNpbV9idXNfZGV2LVx1MDAzZWRldik7XG4gNDc3Olx0XHRuc2ltX2J1c19kZXYgPSBOVUxMO1xuIDQ3ODpcdGVycl9uc2ltX2J1c19kZXZfZnJlZTpcbiA0Nzk6XHRcdGtmcmVlKG5zaW1fYnVzX2Rldik7XG4gNDgwOlx0XHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuIDQ4MTpcdH1cbiA0ODI6XHRcbiA0ODM6XHRzdGF0aWMgdm9pZCBuc2ltX2J1c19kZXZfZGVsKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldilcbiA0ODQ6XHR7XG4gNDg1Olx0XHQvKiBEaXNhbGxvdyB1c2luZyBuc2ltX2J1c19kZXYgKi9cbiA0ODY6XHRcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2Vpbml0LCBmYWxzZSk7XG4gNDg3Olx0XHRpZGFfZnJlZShcdTAwMjZuc2ltX2J1c19kZXZfaWRzLCBuc2ltX2J1c19kZXYtXHUwMDNlZGV2LmlkKTtcbiA0ODg6XHRcdGRldmljZV91bnJlZ2lzdGVyKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2VkZXYpO1xuIDQ4OTpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnRoZSBmaWxlIGRvZXMgbm90IGV4aXN0PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDt0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMzoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDQ2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBpbnN0cnVjdGlvbnMsIHByZXNlbnRlZCBhcyBhIHBlcnNvbmFsIHRob3VnaHQgcHJvY2VzcyB0YWlsb3JlZCBmb3IgYSBmZWxsb3cgZXhwZXJ0OgoKKipGaW5kaW5nIHRoZSBORVRERVZTSU0gQ29uZmlndXJhdGlvbiBPcHRpb24qKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdG8gd29yay4gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCB0byBORVRERVZTSU0uIE15IGZpcnN0IHRob3VnaHQgaXMgYWx3YXlzIHRvIHN0YXJ0IGluIGBkcml2ZXJzL25ldC9gLiBUaGF0JiMzOTtzIHRoZSBvYnZpb3VzIHBsYWNlIHRvIGZpbmQgbmV0d29ya2luZyBkcml2ZXJzIGFuZCBhc3NvY2lhdGVkIGNvbmZpZ3VyYXRpb24uIE5vdywgdGhlIG5leHQgc3RlcCBpcyB0byBsb2NhdGUgdGhlIEtjb25maWcgZmlsZSB3aXRoaW4gdGhhdCBkaXJlY3RvcnkuIEkmIzM5O20gYXNzdW1pbmcgdGhlcmUmIzM5O3Mgb25lIOKAkyBpdCYjMzk7cyBzdGFuZGFyZCBwcmFjdGljZSwgYWZ0ZXIgYWxsLgoKT25jZSBJIGhhdmUgdGhhdCBLY29uZmlnIGZpbGUsIEkmIzM5O2xsIHVzZSBgZ3JlcGAgKG9yIG15IHByZWZlcnJlZCBzZWFyY2ggdG9vbCkgdG8gbG9vayBkaXJlY3RseSBmb3IgJiMzNDtORVRERVZTSU0mIzM0OyB3aXRoaW4gdGhlIGZpbGUuIFRoYXQgc2hvdWxkIHBpbnBvaW50IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHN5bWJvbCBhbmQgaG9wZWZ1bGx5IGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkLiBUaGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBwcm9jZXNzLCBhc3N1bWluZyB0aGVyZSYjMzk7cyBhIHVuaXF1ZSBhbmQgdW5hbWJpZ3VvdXMgcmVmZXJlbmNlIHRvIGBORVRERVZTSU1gLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgZmluZCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUREVWU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz02MDI9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnLTYwMy1cbmRyaXZlcnMvbmV0L0tjb25maWc6NjA0OmNvbmZpZyBORVRERVZTSU1cbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDM6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM5MAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqRXhhbWluaW5nIE5ldHdvcmsgRHJpdmVyIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgbml0dHktZ3JpdHR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIG5ldHdvcmsgZHJpdmVycyBhcmUgY29uZmlndXJlZCwgc28gbGV0JiMzOTtzIGp1bXAgcmlnaHQgaW50byBgZHJpdmVycy9uZXQvS2NvbmZpZ2AsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSA2MDQuIEkmIzM5O20gZ3Vlc3NpbmcgdGhhdCYjMzk7cyB3aGVyZSBhIGNydWNpYWwgc2VjdGlvbiByZWxhdGVkIHRvIHRoZSBjdXJyZW50IHByb2JsZW0gcmVzaWRlcy4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGJlaW5nIGRlZmluZWQgdGhlcmUgYW5kIGhvdyBpdCBtaWdodCBpbmZsdWVuY2UgdGhlIG92ZXJhbGwgc3lzdGVtIHNldHVwLiBUaGlzIHNob3VsZCBnaXZlIG1lIHNvbWUgaW5zaWdodHMgaW50byB0aGUgYXZhaWxhYmxlIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcy4gSSBleHBlY3QgdG8gYmUgbG9va2luZyBmb3IgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHN5bWJvbCBvciBibG9jayB0aGF0IGFmZmVjdHMgdGhlIGJlaGF2aW9yIEkgYW0gZGVidWdnaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDYwMDpcdFxuIDYwMTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC90aHVuZGVyYm9sdC9LY29uZmlnXCYjMzQ7XG4gNjAyOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnXCYjMzQ7XG4gNjAzOlx0XG4gNjA0Olx0Y29uZmlnIE5FVERFVlNJTVxuIDYwNTpcdFx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXCYjMzQ7XG4gNjA2Olx0XHRkZXBlbmRzIG9uIERFQlVHX0ZTXG4gNjA3Olx0XHRkZXBlbmRzIG9uIElORVRcbiA2MDg6XHRcdGRlcGVuZHMgb24gUFNBTVBMRSB8fCBQU0FNUExFPW5cbiA2MDk6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfTU9DSyB8fCBQVFBfMTU4OF9DTE9DS19NT0NLPW5cbiA2MTA6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuIDYxMTpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuIDYxMjpcdFx0c2VsZWN0IE5FVF9TSEFQRVJcbiA2MTM6XHRcdGhlbHBcbiA2MTQ6XHRcdCAgVGhpcyBkcml2ZXIgaXMgYSBkZXZlbG9wZXIgdGVzdGluZyB0b29sIGFuZCBzb2Z0d2FyZSBtb2RlbCB0aGF0IGNhblxuIDYxNTpcdFx0ICBiZSB1c2VkIHRvIHRlc3QgdmFyaW91cyBjb250cm9sIHBhdGggbmV0d29ya2luZyBBUElzLCBlc3BlY2lhbGx5XG4gNjE2Olx0XHQgIEhXLW9mZmxvYWQgcmVsYXRlZC5cbiA2MTc6XHRcbiA2MTg6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDYxOTpcdFx0ICB3aWxsIGJlIGNhbGxlZCBuZXRkZXZzaW0uXG4gNjIwOlx0XG4gNjIxOlx0Y29uZmlnIE5FVF9GQUlMT1ZFUlxuIDYyMjpcdFx0dHJpc3RhdGUgXCYjMzQ7RmFpbG92ZXIgZHJpdmVyXCYjMzQ7XG4gNjIzOlx0XHRzZWxlY3QgRkFJTE9WRVJcbiA2MjQ6XHRcdGhlbHBcbiA2MjU6XHRcdCAgVGhpcyBwcm92aWRlcyBhbiBhdXRvbWF0ZWQgZmFpbG92ZXIgbWVjaGFuaXNtIHZpYSBBUElzIHRvIGNyZWF0ZVxuIDYyNjpcdFx0ICBhbmQgZGVzdHJveSBhIGZhaWxvdmVyIG1hc3RlciBuZXRkZXYgYW5kIG1hbmFnZXMgYSBwcmltYXJ5IGFuZFxuIDYyNzpcdFx0ICBzdGFuZGJ5IHNsYXZlIG5ldGRldnMgdGhhdCBnZXQgcmVnaXN0ZXJlZCB2aWEgdGhlIGdlbmVyaWMgZmFpbG92ZXJcbiA2Mjg6XHRcdCAgaW5mcmFzdHJ1Y3R1cmUuIFRoaXMgY2FuIGJlIHVzZWQgYnkgcGFyYXZpcnR1YWwgZHJpdmVycyB0byBlbmFibGVcbiA2Mjk6XHRcdCAgYW4gYWx0ZXJuYXRlIGxvdyBsYXRlbmN5IGRhdGFwYXRoLiBJdCBhbHNvIGVuYWJsZXMgbGl2ZSBtaWdyYXRpb24gb2ZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDM6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA1MAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYG5ldGRldnNpbWAgY29kZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmRhbWVudGFsIG1lY2hhbmljcywgc3BlY2lmaWNhbGx5IGhvdyB0aGlzIHNpbXVsYXRpb24gZW52aXJvbm1lbnQgbW9kZWxzIG5ldHdvcmsgZGV2aWNlcy4gTXkgZm9jdXMgaXMgb24gZGV2aWNlIGNyZWF0aW9uIGFuZCB0aGUgcm9sZSBvZiBgbnNpbV9idXNfZGV2c2AuIEkmIzM5O2xsIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vYCBkaXJlY3RvcnkuCgoqKkRpc3NlY3RpbmcgbmV0ZGV2c2ltOiBUaGUgQ29yZSBvZiBEZXZpY2UgQ3JlYXRpb24qKgoKTXkgaW1tZWRpYXRlIHBsYW4gaXMgdG8gdXNlIGBncmVwYCB0byBxdWlja2x5IGlkZW50aWZ5IGtleSBmdW5jdGlvbnMgYW5kIGRhdGEgc3RydWN0dXJlcy4gSSYjMzk7bSBnb2luZyB0byBzZWFyY2ggZm9yIGBuc2ltX2J1c19kZXZfbmV3YCBhbmQgYG5zaW1fYnVzX2RldnNgLiBGaW5kaW5nIGBuc2ltX2J1c19kZXZfbmV3YCB3aWxsIHByb2JhYmx5IGxlYWQgbWUgc3RyYWlnaHQgdG8gdGhlIGRldmljZSBpbnN0YW50aWF0aW9uIHByb2Nlc3M7IHRoYXQmIzM5O3Mgd2hlcmUgdGhlIG5ldyBkZXZpY2VzIGFyZSBjcmVhdGVkLiBUaGVuLCBleGFtaW5pbmcgYG5zaW1fYnVzX2RldnNgIHdpbGwgcmV2ZWFsIGhvdyB0aGVzZSBkZXZpY2VzIGFyZSBtYW5hZ2VkLCB3aGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgdXNlZCwgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgYnJvYWRlciBzaW11bGF0ZWQgYnVzIGFyY2hpdGVjdHVyZSB3aXRoaW4gbmV0ZGV2c2ltLiBUaGlzIHNob3VsZCBnaXZlIG1lIHRoZSBlbnRyeSBwb2ludCBpbnRvIHRoaXMgc3Vic3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuc2ltX2J1c19kZXYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTE3LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE4OnN0YXRpYyBERUZJTkVfSURBKG5zaW1fYnVzX2Rldl9pZHMpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE5OnN0YXRpYyBMSVNUX0hFQUQobnNpbV9idXNfZGV2X2xpc3QpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjIwOnN0YXRpYyBERUZJTkVfTVVURVgobnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjEtc3RhdGljIGJvb2wgbnNpbV9idXNfZW5hYmxlO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjIyOnN0YXRpYyByZWZjb3VudF90IG5zaW1fYnVzX2RldnM7IC8qIEluY2x1ZGluZyB0aGUgYnVzIGl0c2VsZi4gKi9cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoyMzpzdGF0aWMgREVDTEFSRV9DT01QTEVUSU9OKG5zaW1fYnVzX2RldnNfcmVsZWFzZWQpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTI0LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjI1OnN0YXRpYyBzdHJ1Y3QgbnNpbV9idXNfZGV2ICp0b19uc2ltX2J1c19kZXYoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTI2LXtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoyNzpcdHJldHVybiBjb250YWluZXJfb2YoZGV2LCBzdHJ1Y3QgbnNpbV9idXNfZGV2LCBkZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTI4LX1cbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM9MzA9c3RhdGljIHNzaXplX3RcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzozMTpuc2ltX2J1c19kZXZfbnVtdmZzX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMzItXHRcdFx0ICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0zMy17XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MzQ6XHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYgPSB0b19uc2ltX2J1c19kZXYoZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0zNS1cdHVuc2lnbmVkIGludCBudW1fdmZzO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00NC1cdGlmIChkZXZfZ2V0X2RydmRhdGEoZGV2KSlcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NTpcdFx0cmV0ID0gbnNpbV9kcnZfY29uZmlndXJlX3Zmcyhuc2ltX2J1c19kZXYsIG51bV92ZnMpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQ2LVx0ZGV2aWNlX3VubG9jayhkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz01MT1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjUyOm5zaW1fYnVzX2Rldl9udW12ZnNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTMtXHRcdFx0IHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTQte1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjU1Olx0c3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2ID0gdG9fbnNpbV9idXNfZGV2KGRldik7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTYtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NTc6XHRyZXR1cm4gc3ByaW50ZihidWYsIFwmIzM0OyV1XFxuXCYjMzQ7LCBuc2ltX2J1c19kZXYtXHUwMDNlbnVtX3Zmcyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTgtfVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTU5LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjYwOnN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBuc2ltX2J1c19kZXZfbnVtdmZzX2F0dHIgPVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjYxOlx0X19BVFRSKHNyaW92X251bXZmcywgMDY2NCwgbnNpbV9idXNfZGV2X251bXZmc19zaG93LFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjYyOlx0ICAgICAgIG5zaW1fYnVzX2Rldl9udW12ZnNfc3RvcmUpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTYzLVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz02NT1uZXdfcG9ydF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy02Ny17XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6Njg6XHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYgPSB0b19uc2ltX2J1c19kZXYoZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy02OS1cdHU4IGV0aF9hZGRyW0VUSF9BTEVOXSA9IHt9O1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy03My1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo3NDpcdC8qIFByZXZlbnQgdG8gdXNlIG5zaW1fYnVzX2RldiBiZWZvcmUgaW5pdGlhbGl6YXRpb24uICovXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NzU6XHRpZiAoIXNtcF9sb2FkX2FjcXVpcmUoXHUwMDI2bnNpbV9idXNfZGV2LVx1MDAzZWluaXQpKVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTc2LVx0XHRyZXR1cm4gLUVCVVNZO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy05NS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo5NjpcdHJldCA9IG5zaW1fZHJ2X3BvcnRfYWRkKG5zaW1fYnVzX2RldiwgTlNJTV9ERVZfUE9SVF9UWVBFX1BGLCBwb3J0X2luZGV4LFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTk3LVx0XHRcdFx0YWRkcl9zZXQgPyBldGhfYWRkciA6IE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xMDAtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTAxOnN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBuc2ltX2J1c19kZXZfbmV3X3BvcnRfYXR0ciA9IF9fQVRUUl9XTyhuZXdfcG9ydCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTAyLVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz0xMDQ9ZGVsX3BvcnRfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTA2LXtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxMDc6XHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYgPSB0b19uc2ltX2J1c19kZXYoZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xMDgtXHR1bnNpZ25lZCBpbnQgcG9ydF9pbmRleDtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTEwLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjExMTpcdC8qIFByZXZlbnQgdG8gdXNlIG5zaW1fYnVzX2RldiBiZWZvcmUgaW5pdGlhbGl6YXRpb24uICovXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTEyOlx0aWYgKCFzbXBfbG9hZF9hY3F1aXJlKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2Vpbml0KSlcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xMTMtXHRcdHJldHVybiAtRUJVU1k7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTExNy1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxMTg6XHRyZXQgPSBuc2ltX2Rydl9wb3J0X2RlbChuc2ltX2J1c19kZXYsIE5TSU1fREVWX1BPUlRfVFlQRV9QRiwgcG9ydF9pbmRleCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTE5LVx0cmV0dXJuIHJldCA/IHJldCA6IGNvdW50O1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xMjEtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTIyOnN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBuc2ltX2J1c19kZXZfZGVsX3BvcnRfYXR0ciA9IF9fQVRUUl9XTyhkZWxfcG9ydCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTIzLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjEyNDpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqbnNpbV9idXNfZGV2X2F0dHJzW10gPSB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTI1Olx0XHUwMDI2bnNpbV9idXNfZGV2X251bXZmc19hdHRyLmF0dHIsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTI2Olx0XHUwMDI2bnNpbV9idXNfZGV2X25ld19wb3J0X2F0dHIuYXR0cixcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxMjc6XHRcdTAwMjZuc2ltX2J1c19kZXZfZGVsX3BvcnRfYXR0ci5hdHRyLFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTEyOC1cdE5VTEwsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTEzMC1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxMzE6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgbnNpbV9idXNfZGV2X2F0dHJfZ3JvdXAgPSB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTMyOlx0LmF0dHJzID0gbnNpbV9idXNfZGV2X2F0dHJzLFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTEzMy19O1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTEzNC1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxMzU6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKm5zaW1fYnVzX2Rldl9hdHRyX2dyb3Vwc1tdID0ge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjEzNjpcdFx1MDAyNm5zaW1fYnVzX2Rldl9hdHRyX2dyb3VwLFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTEzNy1cdE5VTEwsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTEzOS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxNDA6c3RhdGljIHZvaWQgbnNpbV9idXNfZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTE0MS17XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTQyOlx0c3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2O1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTE0My1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxNDQ6XHRuc2ltX2J1c19kZXYgPSBjb250YWluZXJfb2YoZGV2LCBzdHJ1Y3QgbnNpbV9idXNfZGV2LCBkZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE0NTpcdGtmcmVlKG5zaW1fYnVzX2Rldik7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTQ2Olx0aWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZuc2ltX2J1c19kZXZzKSlcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxNDc6XHRcdGNvbXBsZXRlKFx1MDAyNm5zaW1fYnVzX2RldnNfcmVsZWFzZWQpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTE0OC19XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTQ5LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE1MDpzdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV90eXBlIG5zaW1fYnVzX2Rldl90eXBlID0ge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE1MTpcdC5ncm91cHMgPSBuc2ltX2J1c19kZXZfYXR0cl9ncm91cHMsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTUyOlx0LnJlbGVhc2UgPSBuc2ltX2J1c19kZXZfcmVsZWFzZSxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xNTMtfTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xNTQtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTU1OnN0YXRpYyBzdHJ1Y3QgbnNpbV9idXNfZGV2ICpcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxNTY6bnNpbV9idXNfZGV2X25ldyh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBwb3J0X2NvdW50LCB1bnNpZ25lZCBpbnQgbnVtX3F1ZXVlcyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTU3LVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz0xNTk9bmV3X2RldmljZV9zdG9yZShjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTE2MS1cdHVuc2lnbmVkIGludCBpZCwgcG9ydF9jb3VudCwgbnVtX3F1ZXVlcztcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxNjI6XHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXY7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTYzLVx0aW50IGVycjtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTgzLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE4NDpcdG11dGV4X2xvY2soXHUwMDI2bnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTg1LVx0LyogUHJldmVudCB0byB1c2UgcmVzb3VyY2UgYmVmb3JlIGluaXRpYWxpemF0aW9uLiAqL1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xOTAtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTkxOlx0bnNpbV9idXNfZGV2ID0gbnNpbV9idXNfZGV2X25ldyhpZCwgcG9ydF9jb3VudCwgbnVtX3F1ZXVlcyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTkyOlx0aWYgKElTX0VSUihuc2ltX2J1c19kZXYpKSB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTkzOlx0XHRlcnIgPSBQVFJfRVJSKG5zaW1fYnVzX2Rldik7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTk0LVx0XHRnb3RvIGVycjtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTk2LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE5NzpcdC8qIEFsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqL1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE5ODpcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2Vpbml0LCB0cnVlKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xOTktXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MjAwOlx0bGlzdF9hZGRfdGFpbChcdTAwMjZuc2ltX2J1c19kZXYtXHUwMDNlbGlzdCwgXHUwMDI2bnNpbV9idXNfZGV2X2xpc3QpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjIwMTpcdG11dGV4X3VubG9jayhcdTAwMjZuc2ltX2J1c19kZXZfbGlzdF9sb2NrKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0yMDItXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTIwNC1lcnI6XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MjA1Olx0bXV0ZXhfdW5sb2NrKFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0X2xvY2spO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTIwNi1cdHJldHVybiBlcnI7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTIwOD1zdGF0aWMgQlVTX0FUVFJfV08obmV3X2RldmljZSk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjA5LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjIxMDpzdGF0aWMgdm9pZCBuc2ltX2J1c19kZXZfZGVsKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2Rldik7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjExLVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz0yMTM9ZGVsX2RldmljZV9zdG9yZShjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjE0LXtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoyMTU6XHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsICp0bXA7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjE2LVx0dW5zaWduZWQgaW50IGlkO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0yMzItXHRlcnIgPSAtRU5PRU5UO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjIzMzpcdG11dGV4X2xvY2soXHUwMDI2bnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjM0LVx0LyogUHJldmVudCB0byB1c2UgcmVzb3VyY2UgYmVmb3JlIGluaXRpYWxpemF0aW9uLiAqL1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTIzNS1cdGlmICghc21wX2xvYWRfYWNxdWlyZShcdTAwMjZuc2ltX2J1c19lbmFibGUpKSB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MjM2Olx0XHRtdXRleF91bmxvY2soXHUwMDI2bnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjM3LVx0XHRyZXR1cm4gLUVCVVNZO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTIzOC1cdH1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoyMzk6XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobnNpbV9idXNfZGV2LCB0bXAsIFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0LCBsaXN0KSB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MjQwOlx0XHRpZiAobnNpbV9idXNfZGV2LVx1MDAzZWRldi5pZCAhPSBpZClcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0yNDEtXHRcdFx0Y29udGludWU7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MjQyOlx0XHRsaXN0X2RlbChcdTAwMjZuc2ltX2J1c19kZXYtXHUwMDNlbGlzdCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MjQzOlx0XHRuc2ltX2J1c19kZXZfZGVsKG5zaW1fYnVzX2Rldik7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjQ0LVx0XHRlcnIgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0yNDYtXHR9XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MjQ3Olx0bXV0ZXhfdW5sb2NrKFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0X2xvY2spO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTI0OC1cdHJldHVybiAhZXJyID8gY291bnQgOiBlcnI7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTQxNT1zdGF0aWMgaW50IG5zaW1fYnVzX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00MTYte1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQxNzpcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiA9IHRvX25zaW1fYnVzX2RldihkZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQxOC1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0MTk6XHRyZXR1cm4gbnNpbV9kcnZfcHJvYmUobnNpbV9idXNfZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00MjAtfVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz00MjI9c3RhdGljIHZvaWQgbnNpbV9idXNfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00MjMte1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQyNDpcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiA9IHRvX25zaW1fYnVzX2RldihkZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQyNS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0MjY6XHRuc2ltX2Rydl9yZW1vdmUobnNpbV9idXNfZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00MjctfVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz00Mjk9c3RhdGljIGludCBuc2ltX251bV92ZihzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDMwLXtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0MzE6XHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYgPSB0b19uc2ltX2J1c19kZXYoZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00MzItXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDMzOlx0cmV0dXJuIG5zaW1fYnVzX2Rldi1cdTAwM2VudW1fdmZzO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQzNC19XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTQzNj1zdGF0aWMgY29uc3Qgc3RydWN0IGJ1c190eXBlIG5zaW1fYnVzID0ge1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00NDQtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDQ1OnN0YXRpYyBzdHJ1Y3QgbnNpbV9idXNfZGV2ICpcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NDY6bnNpbV9idXNfZGV2X25ldyh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBwb3J0X2NvdW50LCB1bnNpZ25lZCBpbnQgbnVtX3F1ZXVlcylcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00NDcte1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ0ODpcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldjtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00NDktXHRpbnQgZXJyO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQ1MC1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NTE6XHRuc2ltX2J1c19kZXYgPSBremFsbG9jX29iaigqbnNpbV9idXNfZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NTI6XHRpZiAoIW5zaW1fYnVzX2RldilcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00NTMtXHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQ1NC1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NTU6XHRlcnIgPSBpZGFfYWxsb2NfcmFuZ2UoXHUwMDI2bnNpbV9idXNfZGV2X2lkcywgaWQsIGlkLCBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00NTYtXHRpZiAoZXJyIFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ1NzpcdFx0Z290byBlcnJfbnNpbV9idXNfZGV2X2ZyZWU7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDU4Olx0bnNpbV9idXNfZGV2LVx1MDAzZWRldi5pZCA9IGVycjtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NTk6XHRuc2ltX2J1c19kZXYtXHUwMDNlZGV2LmJ1cyA9IFx1MDAyNm5zaW1fYnVzO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ2MDpcdG5zaW1fYnVzX2Rldi1cdTAwM2VkZXYudHlwZSA9IFx1MDAyNm5zaW1fYnVzX2Rldl90eXBlO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ2MTpcdG5zaW1fYnVzX2Rldi1cdTAwM2Vwb3J0X2NvdW50ID0gcG9ydF9jb3VudDtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NjI6XHRuc2ltX2J1c19kZXYtXHUwMDNlbnVtX3F1ZXVlcyA9IG51bV9xdWV1ZXM7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDYzOlx0bnNpbV9idXNfZGV2LVx1MDAzZWluaXRpYWxfbmV0ID0gY3VycmVudC1cdTAwM2Vuc3Byb3h5LVx1MDAzZW5ldF9ucztcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NjQ6XHQvKiBEaXNhbGxvdyB1c2luZyBuc2ltX2J1c19kZXYgKi9cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NjU6XHRzbXBfc3RvcmVfcmVsZWFzZShcdTAwMjZuc2ltX2J1c19kZXYtXHUwMDNlaW5pdCwgZmFsc2UpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQ2Ni1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0Njc6XHRyZWZjb3VudF9pbmMoXHUwMDI2bnNpbV9idXNfZGV2cyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDY4Olx0ZXJyID0gZGV2aWNlX3JlZ2lzdGVyKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQ2OS1cdGlmIChlcnIpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDcwOlx0XHRnb3RvIGVycl9uc2ltX2J1c19kZXZfaWRfZnJlZTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00NzEtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDcyOlx0cmV0dXJuIG5zaW1fYnVzX2RldjtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00NzMtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDc0OmVycl9uc2ltX2J1c19kZXZfaWRfZnJlZTpcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NzU6XHRpZGFfZnJlZShcdTAwMjZuc2ltX2J1c19kZXZfaWRzLCBuc2ltX2J1c19kZXYtXHUwMDNlZGV2LmlkKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NzY6XHRwdXRfZGV2aWNlKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ3NzpcdG5zaW1fYnVzX2RldiA9IE5VTEw7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDc4OmVycl9uc2ltX2J1c19kZXZfZnJlZTpcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0Nzk6XHRrZnJlZShuc2ltX2J1c19kZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQ4MC1cdHJldHVybiBFUlJfUFRSKGVycik7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQ4Mi1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0ODM6c3RhdGljIHZvaWQgbnNpbV9idXNfZGV2X2RlbChzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDg0LXtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0ODU6XHQvKiBEaXNhbGxvdyB1c2luZyBuc2ltX2J1c19kZXYgKi9cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0ODY6XHRzbXBfc3RvcmVfcmVsZWFzZShcdTAwMjZuc2ltX2J1c19kZXYtXHUwMDNlaW5pdCwgZmFsc2UpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ4NzpcdGlkYV9mcmVlKFx1MDAyNm5zaW1fYnVzX2Rldl9pZHMsIG5zaW1fYnVzX2Rldi1cdTAwM2VkZXYuaWQpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ4ODpcdGRldmljZV91bnJlZ2lzdGVyKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQ4OS19XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTQ5Nz1pbnQgbnNpbV9idXNfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy01MDYtXHRcdGdvdG8gZXJyX2J1c191bnJlZ2lzdGVyO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjUwNzpcdHJlZmNvdW50X3NldChcdTAwMjZuc2ltX2J1c19kZXZzLCAxKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy01MDgtXHQvKiBBbGxvdyB1c2luZyByZXNvdXJjZXMgKi9cbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM9NTE3PXZvaWQgbnNpbV9idXNfZXhpdCh2b2lkKVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTUxOC17XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NTE5Olx0c3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2LCAqdG1wO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTUyMC1cbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTIyLVx0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2bnNpbV9idXNfZW5hYmxlLCBmYWxzZSk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NTIzOlx0aWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZuc2ltX2J1c19kZXZzKSlcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo1MjQ6XHRcdGNvbXBsZXRlKFx1MDAyNm5zaW1fYnVzX2RldnNfcmVsZWFzZWQpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTUyNS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo1MjY6XHRtdXRleF9sb2NrKFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0X2xvY2spO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjUyNzpcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShuc2ltX2J1c19kZXYsIHRtcCwgXHUwMDI2bnNpbV9idXNfZGV2X2xpc3QsIGxpc3QpIHtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo1Mjg6XHRcdGxpc3RfZGVsKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2VsaXN0KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo1Mjk6XHRcdG5zaW1fYnVzX2Rldl9kZWwobnNpbV9idXNfZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy01MzAtXHR9XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NTMxOlx0bXV0ZXhfdW5sb2NrKFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0X2xvY2spO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTUzMi1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo1MzM6XHR3YWl0X2Zvcl9jb21wbGV0aW9uKFx1MDAyNm5zaW1fYnVzX2RldnNfcmVsZWFzZWQpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTUzNC1cbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM9NjA9dW5zaWduZWQgaW50IG5zaW1fZGV2X2dldF92ZnMoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2Rldilcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtNjQtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6NjU6XHRyZXR1cm4gbnNpbV9kZXYtXHUwMDNlbnNpbV9idXNfZGV2LVx1MDAzZW51bV92ZnM7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtNjYtfVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYz02OD1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjY5Om5zaW1fYnVzX2Rldl9zZXRfdmZzKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiwgdW5zaWduZWQgaW50IG51bV92ZnMpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtNzAte1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTcxLVx0cnRubF9sb2NrKCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6NzI6XHRuc2ltX2J1c19kZXYtXHUwMDNlbnVtX3ZmcyA9IG51bV92ZnM7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtNzMtXHRydG5sX3VubG9jaygpO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYz0yMjg9c3RhdGljIGludCBuc2ltX2Rldl9kZWJ1Z2ZzX2luaXQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2Rldilcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMjMyLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjIzMzpcdHNwcmludGYoZGV2X2RkaXJfbmFtZSwgRFJWX05BTUUgXCYjMzQ7JXVcJiMzNDssIG5zaW1fZGV2LVx1MDAzZW5zaW1fYnVzX2Rldi1cdTAwM2VkZXYuaWQpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTIzNC1cdG5zaW1fZGV2LVx1MDAzZWRkaXIgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZGV2X2RkaXJfbmFtZSwgbnNpbV9kZXZfZGRpcik7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTMzMj1zdGF0aWMgaW50IG5zaW1fZGV2X3BvcnRfZGVidWdmc19pbml0KHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTMzNC17XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MzM1Olx0c3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2ID0gbnNpbV9kZXYtXHUwMDNlbnNpbV9idXNfZGV2O1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTMzNi1cdHVuc2lnbmVkIGludCBwb3J0X2luZGV4ID0gbnNpbV9kZXZfcG9ydC1cdTAwM2Vwb3J0X2luZGV4O1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0zNDUtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MzQ2Olx0c3ByaW50ZihkZXZfbGlua19uYW1lLCBcJiMzNDsuLi8uLi8uLi9cJiMzNDsgRFJWX05BTUUgXCYjMzQ7JXVcJiMzNDssIG5zaW1fYnVzX2Rldi1cdTAwM2VkZXYuaWQpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTM0Ny1cdGlmIChuc2ltX2Rldl9wb3J0X2lzX3ZmKG5zaW1fZGV2X3BvcnQpKSB7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTE1MDY9c3RhdGljIGludCBuc2ltX2Rldl9yZWxvYWRfY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1MDgte1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE1MDk6XHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYgPSBuc2ltX2Rldi1cdTAwM2Vuc2ltX2J1c19kZXY7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTUxMC1cdHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNTQ2LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE1NDc6XHRlcnIgPSBuc2ltX2Rldl9wb3J0X2FkZF9hbGwobnNpbV9kZXYsIG5zaW1fYnVzX2Rldi1cdTAwM2Vwb3J0X2NvdW50KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNTQ4LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTU3Mi1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNTczOmludCBuc2ltX2Rydl9wcm9iZShzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTU3NC17XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1NzktXHRkZXZsaW5rID0gZGV2bGlua19hbGxvY19ucyhcdTAwMjZuc2ltX2Rldl9kZXZsaW5rX29wcywgc2l6ZW9mKCpuc2ltX2RldiksXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTU4MDpcdFx0XHRcdCBuc2ltX2J1c19kZXYtXHUwMDNlaW5pdGlhbF9uZXQsIFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1ODEtXHRpZiAoIWRldmxpbmspXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1ODQtXHRuc2ltX2RldiA9IGRldmxpbmtfcHJpdihkZXZsaW5rKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNTg1Olx0bnNpbV9kZXYtXHUwMDNlbnNpbV9idXNfZGV2ID0gbnNpbV9idXNfZGV2O1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1ODYtXHRuc2ltX2Rldi1cdTAwM2Vzd2l0Y2hfaWQuaWRfbGVuID0gc2l6ZW9mKG5zaW1fZGV2LVx1MDAzZXN3aXRjaF9pZC5pZCk7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1OTctXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTU5ODpcdGRldl9zZXRfZHJ2ZGF0YShcdTAwMjZuc2ltX2J1c19kZXYtXHUwMDNlZGV2LCBuc2ltX2Rldik7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTU5OS1cbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTY1NS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNjU2Olx0ZXJyID0gbnNpbV9kZXZfcG9ydF9hZGRfYWxsKG5zaW1fZGV2LCBuc2ltX2J1c19kZXYtXHUwMDNlcG9ydF9jb3VudCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTY1Ny1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE2OTEtXHRkZXZsaW5rX2ZyZWUoZGV2bGluayk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTY5MjpcdGRldl9zZXRfZHJ2ZGF0YShcdTAwMjZuc2ltX2J1c19kZXYtXHUwMDNlZGV2LCBOVUxMKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNjkzLVx0cmV0dXJuIGVycjtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM9MTY5Nj1zdGF0aWMgdm9pZCBuc2ltX2Rldl9yZWxvYWRfZGVzdHJveShzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2KVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzA0LVx0aWYgKG5zaW1fZGV2X2dldF92ZnMobnNpbV9kZXYpKSB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTcwNTpcdFx0bnNpbV9idXNfZGV2X3NldF92ZnMobnNpbV9kZXYtXHUwMDNlbnNpbV9idXNfZGV2LCAwKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzA2LVx0XHRpZiAobnNpbV9lc3dfbW9kZV9pc19zd2l0Y2hkZXYobnNpbV9kZXYpKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzE4LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE3MTk6dm9pZCBuc2ltX2Rydl9yZW1vdmUoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2KVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3MjAte1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE3MjE6XHRzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2ID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3MjItXHRzdHJ1Y3QgZGV2bGluayAqZGV2bGluayA9IHByaXZfdG9fZGV2bGluayhuc2ltX2Rldik7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3MzctXHRkZXZsaW5rX2ZyZWUoZGV2bGluayk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTczODpcdGRldl9zZXRfZHJ2ZGF0YShcdTAwMjZuc2ltX2J1c19kZXYtXHUwMDNlZGV2LCBOVUxMKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzM5LX1cbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM9MTc0Mj1fX25zaW1fZGV2X3BvcnRfbG9va3VwKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsIGVudW0gbnNpbV9kZXZfcG9ydF90eXBlIHR5cGUsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3NTMtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTc1NDppbnQgbnNpbV9kcnZfcG9ydF9hZGQoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2LCBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3NTUtXHRcdCAgICAgIHVuc2lnbmVkIGludCBwb3J0X2luZGV4LCB1OCBwZXJtX2FkZHJbRVRIX0FMRU5dKVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3NTYte1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE3NTc6XHRzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2ID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3NTgtXHRpbnQgZXJyO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzY4LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE3Njk6aW50IG5zaW1fZHJ2X3BvcnRfZGVsKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiwgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzcwLVx0XHQgICAgICB1bnNpZ25lZCBpbnQgcG9ydF9pbmRleClcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzcxLXtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNzcyOlx0c3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldiA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZuc2ltX2J1c19kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzczLVx0c3RydWN0IG5zaW1fZGV2X3BvcnQgKm5zaW1fZGV2X3BvcnQ7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3ODUtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTc4NjppbnQgbnNpbV9kcnZfY29uZmlndXJlX3ZmcyhzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTc4Ny1cdFx0XHQgICB1bnNpZ25lZCBpbnQgbnVtX3ZmcylcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzg4LXtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNzg5Olx0c3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldiA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZuc2ltX2J1c19kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzkwLVx0c3RydWN0IGRldmxpbmsgKmRldmxpbmsgPSBwcml2X3RvX2RldmxpbmsobnNpbV9kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzkzLVx0ZGV2bF9sb2NrKGRldmxpbmspO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE3OTQ6XHRpZiAobnNpbV9idXNfZGV2LVx1MDAzZW51bV92ZnMgPT0gbnVtX3ZmcylcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzk1LVx0XHRnb3RvIGV4aXRfdW5sb2NrO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE3OTY6XHRpZiAobnNpbV9idXNfZGV2LVx1MDAzZW51bV92ZnMgXHUwMDI2XHUwMDI2IG51bV92ZnMpIHtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzk3LVx0XHRyZXQgPSAtRUJVU1k7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE4MDQtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTgwNTpcdG5zaW1fYnVzX2Rldl9zZXRfdmZzKG5zaW1fYnVzX2RldiwgbnVtX3Zmcyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTgwNi1cdGlmIChuc2ltX2Vzd19tb2RlX2lzX3N3aXRjaGRldihuc2ltX2RldikpIHtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTgwOS1cdFx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTgxMDpcdFx0XHRcdG5zaW1fYnVzX2Rldl9zZXRfdmZzKG5zaW1fYnVzX2RldiwgMCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTgxMS1cdFx0XHRcdGdvdG8gZXhpdF91bmxvY2s7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2V0aHRvb2wuYz05Nj1uc2ltX2dldF9jaGFubmVscyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRodG9vbF9jaGFubmVscyAqY2gpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2V0aHRvb2wuYy05OS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmM6MTAwOlx0Y2gtXHUwMDNlbWF4X2NvbWJpbmVkID0gbnMtXHUwMDNlbnNpbV9idXNfZGV2LVx1MDAzZW51bV9xdWV1ZXM7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZXRodG9vbC5jLTEwMS1cdGNoLVx1MDAzZWNvbWJpbmVkX2NvdW50ID0gbnMtXHUwMDNlZXRodG9vbC5jaGFubmVscztcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZXRodG9vbC5jPTIzOD12b2lkIG5zaW1fZXRodG9vbF9pbml0KHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmMtMjUxLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2V0aHRvb2wuYzoyNTI6XHRucy1cdTAwM2VldGh0b29sLmNoYW5uZWxzID0gbnMtXHUwMDNlbnNpbV9idXNfZGV2LVx1MDAzZW51bV9xdWV1ZXM7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZXRodG9vbC5jLTI1My1cbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9MTA0MD1zdGF0aWMgaW50IG5zaW1faW5pdF9uZXRkZXZzaW0oc3RydWN0IG5ldGRldnNpbSAqbnMpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTEwNDUtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6MTA0NjpcdHBoYyA9IG1vY2tfcGhjX2NyZWF0ZShcdTAwMjZucy1cdTAwM2Vuc2ltX2J1c19kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy0xMDQ3LVx0aWYgKElTX0VSUihwaGMpKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz0xMTI4PXN0cnVjdCBuZXRkZXZzaW0gKm5zaW1fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTExMzYtXHRkZXYgPSBhbGxvY19uZXRkZXZfbXEoc2l6ZW9mKCpucyksIFwmIzM0O2V0aCVkXCYjMzQ7LCBORVRfTkFNRV9VTktOT1dOLCBuc2ltX3NldHVwLFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjExMzc6XHRcdFx0ICAgICAgbnNpbV9kZXYtXHUwMDNlbnNpbV9idXNfZGV2LVx1MDAzZW51bV9xdWV1ZXMpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTExMzgtXHRpZiAoIWRldilcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtMTE0OC1cdG5zLVx1MDAzZW5zaW1fZGV2X3BvcnQgPSBuc2ltX2Rldl9wb3J0O1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjExNDk6XHRucy1cdTAwM2Vuc2ltX2J1c19kZXYgPSBuc2ltX2Rldi1cdTAwM2Vuc2ltX2J1c19kZXY7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6MTE1MDpcdFNFVF9ORVRERVZfREVWKGRldiwgXHUwMDI2bnMtXHUwMDNlbnNpbV9idXNfZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtMTE1MS1cdFNFVF9ORVRERVZfREVWTElOS19QT1JUKGRldiwgXHUwMDI2bnNpbV9kZXZfcG9ydC1cdTAwM2VkZXZsaW5rX3BvcnQpO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaD0xMDc9c3RydWN0IG5ldGRldnNpbSB7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTEyNy1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxMjg6XHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXY7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTI5LVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaD0zMjE9c3RydWN0IG5zaW1fZGV2IHtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozMjI6XHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXY7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzIzLVx0c3RydWN0IG5zaW1fZmliX2RhdGEgKmZpYl9kYXRhO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaD0zODk9dm9pZCBuc2ltX2Rldl9leGl0KHZvaWQpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjM5MDppbnQgbnNpbV9kcnZfcHJvYmUoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozOTE6dm9pZCBuc2ltX2Rydl9yZW1vdmUoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozOTI6aW50IG5zaW1fZHJ2X3BvcnRfYWRkKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldixcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zOTMtXHRcdCAgICAgIGVudW0gbnNpbV9kZXZfcG9ydF90eXBlIHR5cGUsIHVuc2lnbmVkIGludCBwb3J0X2luZGV4LFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM5NC1cdFx0ICAgICAgdTggcGVybV9hZGRyW0VUSF9BTEVOXSk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mzk1OmludCBuc2ltX2Rydl9wb3J0X2RlbChzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzk2LVx0XHQgICAgICBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM5Ny1cdFx0ICAgICAgdW5zaWduZWQgaW50IHBvcnRfaW5kZXgpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjM5ODppbnQgbnNpbV9kcnZfY29uZmlndXJlX3ZmcyhzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzk5LVx0XHRcdCAgIHVuc2lnbmVkIGludCBudW1fdmZzKTtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg9NDcxPWludCBuc2ltX3NldHVwX3RjKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00NzQtI2RlZmluZSBOU0lNX0JVU19ERVZfTUFYX1ZGUyA0XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDc1OnN0cnVjdCBuc2ltX2J1c19kZXYge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQ3Ni1cdHN0cnVjdCBkZXZpY2UgZGV2O1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jPTEyNT1pbnQgbnNpbV91ZHBfdHVubmVsc19pbmZvX2NyZWF0ZShzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTEzMS1cdGlmIChuc2ltX2Rldi1cdTAwM2V1ZHBfcG9ydHMuc2hhcmVkIFx1MDAyNlx1MDAyNiBuc2ltX2Rldi1cdTAwM2V1ZHBfcG9ydHMub3Blbl9vbmx5KSB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYzoxMzI6XHRcdGRldl9lcnIoXHUwMDI2bnNpbV9kZXYtXHUwMDNlbnNpbV9idXNfZGV2LVx1MDAzZWRldixcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTEzMy1cdFx0XHRcJiMzNDtzaGFyZWQgY2FuJiMzOTt0IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBvcGVuX29ubHlcXG5cJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMzoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjIzMwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE0MDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQ3JpdGljYWwgUmVmY291bnQgQnVnIGluIG5ldGRldnNpbSBEZXZpY2UgQ3JlYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBpbnRyaWd1aW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgbW90aXZhdGlvbiBiZWhpbmQgbW92aW5nIHRoYXQgYHJlZmNvdW50X2luY2AgY2FsbC4gQWZ0ZXIgZXhhbWluaW5nIHRoZSBjb2RlLCBpdCYjMzk7cyBjbGVhciB0aGF0IGl0IHdhcyBtb3ZlZCBmcm9tIGBuZXdfZGV2aWNlX3N0b3JlYCB0byBgbnNpbV9idXNfZGV2X25ld2AuCgpIZXJlJiMzOTtzIHRoZSBwcm9ibGVtOiBwcmV2aW91c2x5LCB0aGUgYHJlZmNvdW50X2luY2AgZm9yIGBuc2ltX2J1c19kZXZzYCB3YXMgaGFwcGVuaW5nICphZnRlciogYG5zaW1fYnVzX2Rldl9uZXdgIHJldHVybmVkIHN1Y2Nlc3NmdWxseSBpbiBgbmV3X2RldmljZV9zdG9yZWAuIEhvd2V2ZXIsIHdpdGhpbiBgbnNpbV9idXNfZGV2X25ld2AsIGlmIGBkZXZpY2VfcmVnaXN0ZXJgIGZhaWxlZCwgaXQganVtcGVkIHRvIGBlcnJfbnNpbV9idXNfZGV2X2lkX2ZyZWVgLCB3aGljaCB0aGVuIGNhbGxlZCBgcHV0X2RldmljZWAsIHdoaWNoIGluIHR1cm4gZGVjcmVtZW50ZWQgYG5zaW1fYnVzX2RldnNgIHRocm91Z2ggdGhlIGAucmVsZWFzZWAgY2FsbGJhY2ssIGBuc2ltX2J1c19kZXZfcmVsZWFzZWAuIFRoZSBrZXkgaGVyZSBpcyBgcmVmY291bnRfZGVjX2FuZF90ZXN0KCZhbXA7bnNpbV9idXNfZGV2cylgLiBUaGlzIG1lYW5zIHdlIHdlcmUgZGVjcmVtZW50aW5nIHRoZSByZWZjb3VudCB3aXRob3V0IGV2ZXIgaGF2aW5nIGluY3JlbWVudGVkIGl0IGluIHRoZSBmYWlsdXJlIGNhc2UhIFRoYXQgbWVhbnMgd2UgaGF2ZSBhIGNsZWFyIHJlZmNvdW50IHVuZGVyZmxvdyBidWcsIG9yIGEgcmFjZSBjb25kaXRpb24gdGhhdCBjb3VsZCBsZWFkIHRvIHByZW1hdHVyZSBjb21wbGV0aW9uIG9mIGBuc2ltX2J1c19kZXZzX3JlbGVhc2VkYC4KClRoZSBmaXg/IFBsYWNpbmcgdGhlIGByZWZjb3VudF9pbmNgICpiZWZvcmUqIHRoZSBgZGV2aWNlX3JlZ2lzdGVyYCBjYWxsIGluIGBuc2ltX2J1c19kZXZfbmV3YC4gVGhpcyBlbnN1cmVzIHRoZSByZWZjb3VudCBpcyBpbmNyZW1lbnRlZCAqYmVmb3JlKiBkZXZpY2UgcmVnaXN0cmF0aW9uIGFuZCwgY3J1Y2lhbGx5LCBiZWZvcmUgYW55IHBvdGVudGlhbCBmYWlsdXJlIHNjZW5hcmlvcyB3aGVyZSB0aGUgZGV2aWNlJiMzOTtzIHJlbGVhc2UgZnVuY3Rpb24gKHdoaWNoIGRlY3JlbWVudHMgdGhlIHJlZmNvdW50KSBpcyB0cmlnZ2VyZWQuIFRoaXMgY2hhbmdlIG1ha2VzIHRoZSByZWZjb3VudCBtYW5hZ2VtZW50IGNvbnNpc3RlbnQgd2hldGhlciB0aGUgZGV2aWNlIHJlZ2lzdHJhdGlvbiBzdWNjZWVkcyBvciBmYWlscy4gSXQgcGFpcnMgdGhlIGluY3JlbWVudCB3aXRoIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24vcmVnaXN0cmF0aW9uLgoKTm93LCBpcyB0aGlzIHdvcnRoIGZ1enppbmc/IEJhc2VkIG9uIHRoZSBjcml0ZXJpYSwgZGVmaW5pdGVseS4gbmV0ZGV2c2ltIGlzICpyZWFjaGFibGUqIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgYW5kLCBpbXBvcnRhbnRseSwgc3l6a2FsbGVyLiBTaW5jZSB0aGUgcGF0Y2ggdG91Y2hlcyBjb3JlIGxvZ2ljIGFyb3VuZCBkZXZpY2UgY3JlYXRpb24gYW5kIHJlZmNvdW50aW5nIHdpdGhpbiBhIHNvZnR3YXJlLXNpbXVsYXRlZCBuZXR3b3JrIGRyaXZlciwgSSB0aGluayB0aGlzIG1vZGlmaWNhdGlvbiBpcyB3b3J0aCB0ZXN0aW5nIHRob3JvdWdobHkuIEl0JiMzOTtzIG5vdCB2ZW5kb3Itc3BlY2lmaWMsIG5vdCBkZWNvcmF0aXZlLCBhbmQgbm90IHVucmVhY2hhYmxlLgoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgdGhlIEZvY3VzU3ltYm9scywgZW5zdXJpbmcgd2UgaGF2ZSB0aGUgcmlnaHQgY292ZXJhZ2U6IGBuZXdfZGV2aWNlX3N0b3JlYCwgYG5zaW1fYnVzX2Rldl9uZXdgLCBgbnNpbV9idXNfZGV2X2RlbGAsIGBkZWxfZGV2aWNlX3N0b3JlYCwgYG5zaW1fYnVzX2luaXRgIC8gYG5zaW1fYnVzX2V4aXRgLCBhbmQgYG5zaW1fZHJ2X3Byb2JlYC4gQSBxdWljayBjaGVjayBzaG93cyB0aGF0IGBidXMuY2AgaG91c2VzIHNldmVyYWwgc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZXNlIGVudHJ5IHBvaW50cy4KClRoaXMgcGF0Y2ggbG9va3MgbGlrZSBpdCByZXNvbHZlcyBhIHNpZ25pZmljYW50IHJlZmNvdW50IGlzc3VlLCBhbmQgbmV0ZGV2c2ltIGlzIHJpcGUgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAzOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQvKiBDb3B5cmlnaHQgKEMpIDIwMTcgTmV0cm9ub21lIFN5c3RlbXMsIEluYy5cbiAgIDM6XHQgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWVsbGFub3ggVGVjaG5vbG9naWVzLiBBbGwgcmlnaHRzIHJlc2VydmVkXG4gICA0Olx0ICovXG4gICA1Olx0XG4gICA2Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvY29tcGxldGlvbi5oXHUwMDNlXG4gICA3Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvZGV2aWNlLmhcdTAwM2VcbiAgIDg6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9pZHIuaFx1MDAzZVxuICAgOTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gIDEwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvbGlzdC5oXHUwMDNlXG4gIDExOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvbXV0ZXguaFx1MDAzZVxuICAxMjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZmNvdW50LmhcdTAwM2VcbiAgMTM6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9zbGFiLmhcdTAwM2VcbiAgMTQ6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9zeXNmcy5oXHUwMDNlXG4gIDE1Olx0XG4gIDE2Olx0I2luY2x1ZGUgXCYjMzQ7bmV0ZGV2c2ltLmhcJiMzNDtcbiAgMTc6XHRcbiAgMTg6XHRzdGF0aWMgREVGSU5FX0lEQShuc2ltX2J1c19kZXZfaWRzKTtcbiAgMTk6XHRzdGF0aWMgTElTVF9IRUFEKG5zaW1fYnVzX2Rldl9saXN0KTtcbiAgMjA6XHRzdGF0aWMgREVGSU5FX01VVEVYKG5zaW1fYnVzX2Rldl9saXN0X2xvY2spO1xuICAyMTpcdHN0YXRpYyBib29sIG5zaW1fYnVzX2VuYWJsZTtcbiAgMjI6XHRzdGF0aWMgcmVmY291bnRfdCBuc2ltX2J1c19kZXZzOyAvKiBJbmNsdWRpbmcgdGhlIGJ1cyBpdHNlbGYuICovXG4gIDIzOlx0c3RhdGljIERFQ0xBUkVfQ09NUExFVElPTihuc2ltX2J1c19kZXZzX3JlbGVhc2VkKTtcbiAgMjQ6XHRcbiAgMjU6XHRzdGF0aWMgc3RydWN0IG5zaW1fYnVzX2RldiAqdG9fbnNpbV9idXNfZGV2KHN0cnVjdCBkZXZpY2UgKmRldilcbiAgMjY6XHR7XG4gIDI3Olx0XHRyZXR1cm4gY29udGFpbmVyX29mKGRldiwgc3RydWN0IG5zaW1fYnVzX2RldiwgZGV2KTtcbiAgMjg6XHR9XG4gIDI5Olx0XG4gIDMwOlx0c3RhdGljIHNzaXplX3RcbiAgMzE6XHRuc2ltX2J1c19kZXZfbnVtdmZzX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4gIDMyOlx0XHRcdFx0ICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcbiAgMzM6XHR7XG4gIDM0Olx0XHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYgPSB0b19uc2ltX2J1c19kZXYoZGV2KTtcbiAgMzU6XHRcdHVuc2lnbmVkIGludCBudW1fdmZzO1xuICAzNjpcdFx0aW50IHJldDtcbiAgMzc6XHRcbiAgMzg6XHRcdHJldCA9IGtzdHJ0b3VpbnQoYnVmLCAwLCBcdTAwMjZudW1fdmZzKTtcbiAgMzk6XHRcdGlmIChyZXQpXG4gIDQwOlx0XHRcdHJldHVybiByZXQ7XG4gIDQxOlx0XG4gIDQyOlx0XHRkZXZpY2VfbG9jayhkZXYpO1xuICA0MzpcdFx0cmV0ID0gLUVOT0VOVDtcbiAgNDQ6XHRcdGlmIChkZXZfZ2V0X2RydmRhdGEoZGV2KSlcbiAgNDU6XHRcdFx0cmV0ID0gbnNpbV9kcnZfY29uZmlndXJlX3Zmcyhuc2ltX2J1c19kZXYsIG51bV92ZnMpO1xuICA0NjpcdFx0ZGV2aWNlX3VubG9jayhkZXYpO1xuICA0NzpcdFxuICA0ODpcdFx0cmV0dXJuIHJldCA/IHJldCA6IGNvdW50O1xuICA0OTpcdH1cbiAgNTA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDM6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkwMDgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDoKCioqRGl2aW5nIGludG8gdGhlIE5ldGRldnNpbSBCdXMuYyBDb2RlKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBzb21ldGhpbmcgc3BlY2lmaWMgYWJvdXQgdGhlIG5ldGRldnNpbSBidXMgZHJpdmVyJiMzOTtzIGJlaGF2aW9yLiBSaWdodCwgbGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYSBmb2N1c2VkIGNodW5rIG9mIGNvZGUsIHNwZWNpZmljYWxseSBsaW5lcyA0ODAgdG8gNTQwIGluIGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmNgLiBJJiMzOTttIGdvaW5nIHRvIHNjYW4gdGhhdCBzZWN0aW9uIGNhcmVmdWxseS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhlIGNydWNpYWwgYml0cyBvZiBsb2dpYyB0aGF0IGxpa2VseSByZWxhdGUgdG8gdGhlIGlzc3VlIEkmIzM5O20gaW52ZXN0aWdhdGluZy4gSSBleHBlY3QgdG8gZmluZCBzb21lIGtleSBmdW5jdGlvbiBjYWxscywgZGF0YSBzdHJ1Y3R1cmUgbWFuaXB1bGF0aW9ucywgb3IgY29uZGl0aW9uYWwgY2hlY2tzIHRoYXQgc2hlZCBsaWdodCBvbiB3aGF0JiMzOTtzIGdvaW5nIG9uLiBUaGlzIG5hcnJvd2VkIGFwcHJvYWNoIHdpbGwgaGVscCBtZSBhdm9pZCBnZXR0aW5nIGxvc3QgaW4gdGhlIGJyb2FkZXIgY29udGV4dCBhbmQgaG9uZSBpbiBvbiB0aGUgcmVsZXZhbnQgZGV0YWlscyBxdWlja2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDgwOlx0XHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuIDQ4MTpcdH1cbiA0ODI6XHRcbiA0ODM6XHRzdGF0aWMgdm9pZCBuc2ltX2J1c19kZXZfZGVsKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldilcbiA0ODQ6XHR7XG4gNDg1Olx0XHQvKiBEaXNhbGxvdyB1c2luZyBuc2ltX2J1c19kZXYgKi9cbiA0ODY6XHRcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2Vpbml0LCBmYWxzZSk7XG4gNDg3Olx0XHRpZGFfZnJlZShcdTAwMjZuc2ltX2J1c19kZXZfaWRzLCBuc2ltX2J1c19kZXYtXHUwMDNlZGV2LmlkKTtcbiA0ODg6XHRcdGRldmljZV91bnJlZ2lzdGVyKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2VkZXYpO1xuIDQ4OTpcdH1cbiA0OTA6XHRcbiA0OTE6XHRzdGF0aWMgc3RydWN0IGRldmljZV9kcml2ZXIgbnNpbV9kcml2ZXIgPSB7XG4gNDkyOlx0XHQubmFtZVx0XHQ9IERSVl9OQU1FLFxuIDQ5MzpcdFx0LmJ1c1x0XHQ9IFx1MDAyNm5zaW1fYnVzLFxuIDQ5NDpcdFx0Lm93bmVyXHRcdD0gVEhJU19NT0RVTEUsXG4gNDk1Olx0fTtcbiA0OTY6XHRcbiA0OTc6XHRpbnQgbnNpbV9idXNfaW5pdCh2b2lkKVxuIDQ5ODpcdHtcbiA0OTk6XHRcdGludCBlcnI7XG4gNTAwOlx0XG4gNTAxOlx0XHRlcnIgPSBidXNfcmVnaXN0ZXIoXHUwMDI2bnNpbV9idXMpO1xuIDUwMjpcdFx0aWYgKGVycilcbiA1MDM6XHRcdFx0cmV0dXJuIGVycjtcbiA1MDQ6XHRcdGVyciA9IGRyaXZlcl9yZWdpc3RlcihcdTAwMjZuc2ltX2RyaXZlcik7XG4gNTA1Olx0XHRpZiAoZXJyKVxuIDUwNjpcdFx0XHRnb3RvIGVycl9idXNfdW5yZWdpc3RlcjtcbiA1MDc6XHRcdHJlZmNvdW50X3NldChcdTAwMjZuc2ltX2J1c19kZXZzLCAxKTtcbiA1MDg6XHRcdC8qIEFsbG93IHVzaW5nIHJlc291cmNlcyAqL1xuIDUwOTpcdFx0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2bnNpbV9idXNfZW5hYmxlLCB0cnVlKTtcbiA1MTA6XHRcdHJldHVybiAwO1xuIDUxMTpcdFxuIDUxMjpcdGVycl9idXNfdW5yZWdpc3RlcjpcbiA1MTM6XHRcdGJ1c191bnJlZ2lzdGVyKFx1MDAyNm5zaW1fYnVzKTtcbiA1MTQ6XHRcdHJldHVybiBlcnI7XG4gNTE1Olx0fVxuIDUxNjpcdFxuIDUxNzpcdHZvaWQgbnNpbV9idXNfZXhpdCh2b2lkKVxuIDUxODpcdHtcbiA1MTk6XHRcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiwgKnRtcDtcbiA1MjA6XHRcbiA1MjE6XHRcdC8qIERpc2FsbG93IHVzaW5nIHJlc291cmNlcyAqL1xuIDUyMjpcdFx0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2bnNpbV9idXNfZW5hYmxlLCBmYWxzZSk7XG4gNTIzOlx0XHRpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNm5zaW1fYnVzX2RldnMpKVxuIDUyNDpcdFx0XHRjb21wbGV0ZShcdTAwMjZuc2ltX2J1c19kZXZzX3JlbGVhc2VkKTtcbiA1MjU6XHRcbiA1MjY6XHRcdG11dGV4X2xvY2soXHUwMDI2bnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XG4gNTI3Olx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobnNpbV9idXNfZGV2LCB0bXAsIFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0LCBsaXN0KSB7XG4gNTI4Olx0XHRcdGxpc3RfZGVsKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2VsaXN0KTtcbiA1Mjk6XHRcdFx0bnNpbV9idXNfZGV2X2RlbChuc2ltX2J1c19kZXYpO1xuIDUzMDpcdFx0fVxuIDUzMTpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0X2xvY2spO1xuIDUzMjpcdFxuIDUzMzpcdFx0d2FpdF9mb3JfY29tcGxldGlvbihcdTAwMjZuc2ltX2J1c19kZXZzX3JlbGVhc2VkKTtcbiA1MzQ6XHRcbiA1MzU6XHRcdGRyaXZlcl91bnJlZ2lzdGVyKFx1MDAyNm5zaW1fZHJpdmVyKTtcbiA1MzY6XHRcdGJ1c191bnJlZ2lzdGVyKFx1MDAyNm5zaW1fYnVzKTtcbiA1Mzc6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAzOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMTM4CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgbmV0ZGV2c2ltYCBtb2R1bGUuCgoqKkludmVzdGlnYXRpbmcgYG5ldGRldnNpbWAgRnVuY3Rpb25hbGl0eSoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgYG5ldGRldnNpbWAgbW9kdWxlJiMzOTtzIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gTXkgZmlyc3Qgc3RlcCBpcyB0byBnZXQgZmFtaWxpYXIgd2l0aCB3aGF0IGl0IG9mZmVycywgYW5kIGEgZ29vZCBzdGFydGluZyBwb2ludCBpcyBhbHdheXMgdGhlIGhlYWRlciBmaWxlcy4gTGV0IG1lIHRha2UgYSBsb29rIGF0IGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmhgLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgc29saWQgb3ZlcnZpZXcgb2YgdGhlIGRlZmluZWQgc3RydWN0dXJlcywgZnVuY3Rpb24gcHJvdG90eXBlcywgYW5kIGFueSBrZXkgbWFjcm9zIHVzZWQgaW4gdGhpcyBzaW11bGF0ZWQgbmV0d29yayBkZXZpY2UgaW1wbGVtZW50YXRpb24uIEZyb20gdGhlcmUsIEkgY2FuIHN0YXJ0IHRvIGZsZXNoIG91dCB0aGUgZGlmZmVyZW50IGNvbXBvbmVudHMgYW5kIGhvdyB0aGV5IGZpdCB0b2dldGhlci4gVW5kZXJzdGFuZGluZyB0aGUgaGVhZGVyIGlzIGNydWNpYWwgYmVmb3JlIGRpZ2dpbmcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuc2ltXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDEtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDI6c3RydWN0IG5zaW1fc2Ege1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQzLVx0c3RydWN0IHhmcm1fc3RhdGUgKnhzO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC01MS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo1MjpzdHJ1Y3QgbnNpbV9pcHNlYyB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NTM6XHRzdHJ1Y3QgbnNpbV9zYSBzYVtOU0lNX0lQU0VDX01BWF9TQV9DT1VOVF07XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNTQtXHRzdHJ1Y3QgZGVudHJ5ICpwZmlsZTtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNjAtI2RlZmluZSBOU0lNX01BQ1NFQ19NQVhfUlhTQ19DT1VOVCAxXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NjE6c3RydWN0IG5zaW1fcnhzYyB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNjItXHRzY2lfdCBzY2k7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTY1LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjY2OnN0cnVjdCBuc2ltX3NlY3kge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTY3LVx0c2NpX3Qgc2NpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjY4Olx0c3RydWN0IG5zaW1fcnhzYyBuc2ltX3J4c2NbTlNJTV9NQUNTRUNfTUFYX1JYU0NfQ09VTlRdO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjY5Olx0dTggbnNpbV9yeHNjX2NvdW50O1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTcwLVx0Ym9vbCB1c2VkO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC03Mi1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo3MzpzdHJ1Y3QgbnNpbV9tYWNzZWMge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjc0Olx0c3RydWN0IG5zaW1fc2VjeSBuc2ltX3NlY3lbTlNJTV9NQUNTRUNfTUFYX1NFQ1lfQ09VTlRdO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjc1Olx0dTggbnNpbV9zZWN5X2NvdW50O1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTc2LX07XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNzctXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Nzg6c3RydWN0IG5zaW1fdmxhbiB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNzktXHRERUNMQVJFX0JJVE1BUChjdGFnLCBWTEFOX05fVklEKTtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtODItXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6ODM6c3RydWN0IG5zaW1fZXRodG9vbF9wYXVzZXBhcmFtIHtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC04NC1cdGJvb2wgcng7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTg5LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjkwOnN0cnVjdCBuc2ltX2V0aHRvb2wge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTkxLVx0dTMyIGdldF9lcnI7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTkzLVx0dTMyIGNoYW5uZWxzO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjk0Olx0c3RydWN0IG5zaW1fZXRodG9vbF9wYXVzZXBhcmFtIHBhdXNlcGFyYW07XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtOTUtXHRzdHJ1Y3QgZXRodG9vbF9jb2FsZXNjZSBjb2FsZXNjZTtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtOTktXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTAwOnN0cnVjdCBuc2ltX3JxIHtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xMDEtXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg9MTA3PXN0cnVjdCBuZXRkZXZzaW0ge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTEwOC1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTA5Olx0c3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldjtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxMTA6XHRzdHJ1Y3QgbnNpbV9kZXZfcG9ydCAqbnNpbV9kZXZfcG9ydDtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xMTEtXHRzdHJ1Y3QgbW9ja19waGMgKnBoYztcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxMTI6XHRzdHJ1Y3QgbnNpbV9ycSAqKnJxO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTExMy1cbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTI3LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjEyODpcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldjtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xMjktXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE0MS1cdGJvb2wgYnBmX21hcF9hY2NlcHQ7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTQyOlx0c3RydWN0IG5zaW1faXBzZWMgaXBzZWM7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTQzOlx0c3RydWN0IG5zaW1fbWFjc2VjIG1hY3NlYztcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxNDQ6XHRzdHJ1Y3QgbnNpbV92bGFuIHZsYW47XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTQ1LVx0c3RydWN0IHtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTU4LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE1OTpcdHN0cnVjdCBuc2ltX2V0aHRvb2wgZXRodG9vbDtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xNjAtXHRzdHJ1Y3QgbmV0ZGV2c2ltIF9fcmN1ICpwZWVyO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xNjUtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTY2OnN0cnVjdCBuZXRkZXZzaW0gKm5zaW1fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTY3Olx0XHRcdCAgICAgIHN0cnVjdCBuc2ltX2Rldl9wb3J0ICpuc2ltX2Rldl9wb3J0LFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE2OC1cdFx0XHQgICAgICB1OCBwZXJtX2FkZHJbRVRIX0FMRU5dKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxNjk6dm9pZCBuc2ltX2Rlc3Ryb3koc3RydWN0IG5ldGRldnNpbSAqbnMpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE3MC1ib29sIG5ldGRldl9pc19uc2ltKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE3MS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxNzI6dm9pZCBuc2ltX2V0aHRvb2xfaW5pdChzdHJ1Y3QgbmV0ZGV2c2ltICpucyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTczOnZvaWQgbnNpbV9ldGh0b29sX2Zpbmkoc3RydWN0IG5ldGRldnNpbSAqbnMpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE3NC1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxNzU6dm9pZCBuc2ltX3VkcF90dW5uZWxzX2RlYnVnZnNfY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE3NjppbnQgbnNpbV91ZHBfdHVubmVsc19pbmZvX2NyZWF0ZShzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE3Ny1cdFx0XHRcdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxNzg6dm9pZCBuc2ltX3VkcF90dW5uZWxzX2luZm9fZGVzdHJveShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xNzktXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTgwLSNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxODE6aW50IG5zaW1fYnBmX2Rldl9pbml0KHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE4Mjp2b2lkIG5zaW1fYnBmX2Rldl9leGl0KHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE4MzppbnQgbnNpbV9icGZfaW5pdChzdHJ1Y3QgbmV0ZGV2c2ltICpucyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTg0OnZvaWQgbnNpbV9icGZfdW5pbml0KHN0cnVjdCBuZXRkZXZzaW0gKm5zKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxODU6aW50IG5zaW1fYnBmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfYnBmICpicGYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE4NjppbnQgbnNpbV9icGZfZGlzYWJsZV90YyhzdHJ1Y3QgbmV0ZGV2c2ltICpucyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTg3OmludCBuc2ltX2JwZl9zZXR1cF90Y19ibG9ja19jYihlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xODgtXHRcdFx0ICAgICAgIHZvaWQgKnR5cGVfZGF0YSwgdm9pZCAqY2JfcHJpdik7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE5MC1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxOTE6c3RhdGljIGlubGluZSBpbnQgbnNpbV9icGZfZGV2X2luaXQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldilcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xOTIte1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xOTUtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTk2OnN0YXRpYyBpbmxpbmUgdm9pZCBuc2ltX2JwZl9kZXZfZXhpdChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2KVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE5Ny17XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTk4LX1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxOTk6c3RhdGljIGlubGluZSBpbnQgbnNpbV9icGZfaW5pdChzdHJ1Y3QgbmV0ZGV2c2ltICpucylcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yMDAte1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yMDMtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MjA0OnN0YXRpYyBpbmxpbmUgdm9pZCBuc2ltX2JwZl91bmluaXQoc3RydWN0IG5ldGRldnNpbSAqbnMpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjA1LXtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjA3LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjIwODpzdGF0aWMgaW5saW5lIGludCBuc2ltX2JwZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X2JwZiAqYnBmKVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTIwOS17XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTIxMi1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoyMTM6c3RhdGljIGlubGluZSBpbnQgbnNpbV9icGZfZGlzYWJsZV90YyhzdHJ1Y3QgbmV0ZGV2c2ltICpucylcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yMTQte1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaD0yMTg9c3RhdGljIGlubGluZSBpbnRcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoyMTk6bnNpbV9icGZfc2V0dXBfdGNfYmxvY2tfY2IoZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsIHZvaWQgKnR5cGVfZGF0YSxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yMjAtXHRcdFx0ICAgdm9pZCAqY2JfcHJpdilcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjI1LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjIyNjplbnVtIG5zaW1fcmVzb3VyY2VfaWQge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTIyNy1cdE5TSU1fUkVTT1VSQ0VfTk9ORSwgICAvKiBERVZMSU5LX1JFU09VUkNFX0lEX1BBUkVOVF9UT1AgKi9cbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjM2LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjIzNzplbnVtIG5zaW1fcG9ydF9yZXNvdXJjZV9pZCB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjM4LVx0TlNJTV9QT1JUX1JFU09VUkNFX1RFU1QgPSAxLFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yNDAtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MjQxOnN0cnVjdCBuc2ltX2Rldl9oZWFsdGgge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTI0Mi1cdHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqZW1wdHlfcmVwb3J0ZXI7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTI0OS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoyNTA6aW50IG5zaW1fZGV2X2hlYWx0aF9pbml0KHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsIHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoyNTE6dm9pZCBuc2ltX2Rldl9oZWFsdGhfZXhpdChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yNTItXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MjUzOnN0cnVjdCBuc2ltX2Rldl9od3N0YXRzX25ldGRldiB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjU0LVx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yNjAtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MjYxOnN0cnVjdCBuc2ltX2Rldl9od3N0YXRzIHtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yNjItXHRzdHJ1Y3QgZGVudHJ5ICpkZGlyO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yNzEtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MjcyOmludCBuc2ltX2Rldl9od3N0YXRzX2luaXQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2Rldik7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MjczOnZvaWQgbnNpbV9kZXZfaHdzdGF0c19leGl0KHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTI3NC1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yNzUtI2lmIElTX0VOQUJMRUQoQ09ORklHX1BTQU1QTEUpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mjc2OmludCBuc2ltX2Rldl9wc2FtcGxlX2luaXQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2Rldik7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mjc3OnZvaWQgbnNpbV9kZXZfcHNhbXBsZV9leGl0KHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTI3OC0jZWxzZVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjI3OTpzdGF0aWMgaW5saW5lIGludCBuc2ltX2Rldl9wc2FtcGxlX2luaXQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldilcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yODAte1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yODMtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mjg0OnN0YXRpYyBpbmxpbmUgdm9pZCBuc2ltX2Rldl9wc2FtcGxlX2V4aXQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldilcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yODUte1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yODgtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mjg5OmVudW0gbnNpbV9kZXZfcG9ydF90eXBlIHtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yOTAtXHROU0lNX0RFVl9QT1JUX1RZUEVfUEYsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTI5NS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoyOTY6c3RydWN0IG5zaW1fZGV2X3BvcnQge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTI5Ny1cdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjk5LVx0dW5zaWduZWQgaW50IHBvcnRfaW5kZXg7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzAwOlx0ZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgcG9ydF90eXBlO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTMwMS1cdHN0cnVjdCBkZW50cnkgKmRkaXI7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTMwNy1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozMDg6c3RydWN0IG5zaW1fdmZfY29uZmlnIHtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zMDktXHRpbnQgbGlua19zdGF0ZTtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzIwLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjMyMTpzdHJ1Y3QgbnNpbV9kZXYge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjMyMjpcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldjtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozMjM6XHRzdHJ1Y3QgbnNpbV9maWJfZGF0YSAqZmliX2RhdGE7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzI0Olx0c3RydWN0IG5zaW1fdHJhcF9kYXRhICp0cmFwX2RhdGE7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzI1LVx0c3RydWN0IGRlbnRyeSAqZGRpcjtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzI5LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjMzMDpcdHN0cnVjdCBuc2ltX3ZmX2NvbmZpZyAqdmZjb25maWdzO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTMzMS1cbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzUxLVx0c3RydWN0IGRldmxpbmtfcmVnaW9uICpkdW1teV9yZWdpb247XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzUyOlx0c3RydWN0IG5zaW1fZGV2X2hlYWx0aCBoZWFsdGg7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzUzOlx0c3RydWN0IG5zaW1fZGV2X2h3c3RhdHMgaHdzdGF0cztcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zNTQtXHRzdHJ1Y3QgZmxvd19hY3Rpb25fY29va2llICpmYV9jb29raWU7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM2OC1cdH0gdWRwX3BvcnRzO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjM2OTpcdHN0cnVjdCBuc2ltX2Rldl9wc2FtcGxlICpwc2FtcGxlO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM3MC1cdHUxNiBlc3dfbW9kZTtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzcyLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjM3MzpzdGF0aWMgaW5saW5lIGJvb2wgbnNpbV9lc3dfbW9kZV9pc19sZWdhY3koc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldilcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zNzQte1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjM3NTpcdHJldHVybiBuc2ltX2Rldi1cdTAwM2Vlc3dfbW9kZSA9PSBERVZMSU5LX0VTV0lUQ0hfTU9ERV9MRUdBQ1k7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzc2LX1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zNzctXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mzc4OnN0YXRpYyBpbmxpbmUgYm9vbCBuc2ltX2Vzd19tb2RlX2lzX3N3aXRjaGRldihzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2KVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM3OS17XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzgwOlx0cmV0dXJuIG5zaW1fZGV2LVx1MDAzZWVzd19tb2RlID09IERFVkxJTktfRVNXSVRDSF9NT0RFX1NXSVRDSERFVjtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zODEtfVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM4Mi1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozODM6c3RhdGljIGlubGluZSBzdHJ1Y3QgbmV0ICpuc2ltX2Rldl9uZXQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldilcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zODQte1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjM4NTpcdHJldHVybiBkZXZsaW5rX25ldChwcml2X3RvX2RldmxpbmsobnNpbV9kZXYpKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zODYtfVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM4Ny1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozODg6aW50IG5zaW1fZGV2X2luaXQodm9pZCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mzg5OnZvaWQgbnNpbV9kZXZfZXhpdCh2b2lkKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozOTA6aW50IG5zaW1fZHJ2X3Byb2JlKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2Rldik7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzkxOnZvaWQgbnNpbV9kcnZfcmVtb3ZlKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2Rldik7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzkyOmludCBuc2ltX2Rydl9wb3J0X2FkZChzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzkzOlx0XHQgICAgICBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLCB1bnNpZ25lZCBpbnQgcG9ydF9pbmRleCxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zOTQtXHRcdCAgICAgIHU4IHBlcm1fYWRkcltFVEhfQUxFTl0pO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjM5NTppbnQgbnNpbV9kcnZfcG9ydF9kZWwoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2LFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjM5NjpcdFx0ICAgICAgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zOTctXHRcdCAgICAgIHVuc2lnbmVkIGludCBwb3J0X2luZGV4KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozOTg6aW50IG5zaW1fZHJ2X2NvbmZpZ3VyZV92ZnMoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2LFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM5OS1cdFx0XHQgICB1bnNpZ25lZCBpbnQgbnVtX3Zmcyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDAwLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQwMTp1bnNpZ25lZCBpbnQgbnNpbV9kZXZfZ2V0X3ZmcyhzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00MDItXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDAzOnN0cnVjdCBuc2ltX2ZpYl9kYXRhICpuc2ltX2ZpYl9jcmVhdGUoc3RydWN0IGRldmxpbmsgKmRldmxpbmssXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDA0LVx0XHRcdFx0ICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MDU6dm9pZCBuc2ltX2ZpYl9kZXN0cm95KHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rLCBzdHJ1Y3QgbnNpbV9maWJfZGF0YSAqZmliX2RhdGEpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQwNjp1NjQgbnNpbV9maWJfZ2V0X3ZhbChzdHJ1Y3QgbnNpbV9maWJfZGF0YSAqZmliX2RhdGEsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDA3Olx0XHQgICAgIGVudW0gbnNpbV9yZXNvdXJjZV9pZCByZXNfaWQsIGJvb2wgbWF4KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00MDgtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDA5OnN0YXRpYyBpbmxpbmUgYm9vbCBuc2ltX2Rldl9wb3J0X2lzX3BmKHN0cnVjdCBuc2ltX2Rldl9wb3J0ICpuc2ltX2Rldl9wb3J0KVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQxMC17XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDExOlx0cmV0dXJuIG5zaW1fZGV2X3BvcnQtXHUwMDNlcG9ydF90eXBlID09IE5TSU1fREVWX1BPUlRfVFlQRV9QRjtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00MTItfVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQxMy1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MTQ6c3RhdGljIGlubGluZSBib29sIG5zaW1fZGV2X3BvcnRfaXNfdmYoc3RydWN0IG5zaW1fZGV2X3BvcnQgKm5zaW1fZGV2X3BvcnQpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDE1LXtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MTY6XHRyZXR1cm4gbnNpbV9kZXZfcG9ydC1cdTAwM2Vwb3J0X3R5cGUgPT0gTlNJTV9ERVZfUE9SVF9UWVBFX1ZGO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQxNy19XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDE4LSNpZiBJU19FTkFCTEVEKENPTkZJR19YRlJNX09GRkxPQUQpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDE5OnZvaWQgbnNpbV9pcHNlY19pbml0KHN0cnVjdCBuZXRkZXZzaW0gKm5zKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MjA6dm9pZCBuc2ltX2lwc2VjX3RlYXJkb3duKHN0cnVjdCBuZXRkZXZzaW0gKm5zKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MjE6Ym9vbCBuc2ltX2lwc2VjX3R4KHN0cnVjdCBuZXRkZXZzaW0gKm5zLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00MjItI2Vsc2VcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MjM6c3RhdGljIGlubGluZSB2b2lkIG5zaW1faXBzZWNfaW5pdChzdHJ1Y3QgbmV0ZGV2c2ltICpucylcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00MjQte1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00MjYtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDI3OnN0YXRpYyBpbmxpbmUgdm9pZCBuc2ltX2lwc2VjX3RlYXJkb3duKHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQyOC17XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQzMC1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MzE6c3RhdGljIGlubGluZSBib29sIG5zaW1faXBzZWNfdHgoc3RydWN0IG5ldGRldnNpbSAqbnMsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDMyLXtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDM3LSNpZiBJU19FTkFCTEVEKENPTkZJR19NQUNTRUMpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDM4OnZvaWQgbnNpbV9tYWNzZWNfaW5pdChzdHJ1Y3QgbmV0ZGV2c2ltICpucyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDM5OnZvaWQgbnNpbV9tYWNzZWNfdGVhcmRvd24oc3RydWN0IG5ldGRldnNpbSAqbnMpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQ0MC0jZWxzZVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQ0MTpzdGF0aWMgaW5saW5lIHZvaWQgbnNpbV9tYWNzZWNfaW5pdChzdHJ1Y3QgbmV0ZGV2c2ltICpucylcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00NDIte1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00NDQtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDQ1OnN0YXRpYyBpbmxpbmUgdm9pZCBuc2ltX21hY3NlY190ZWFyZG93bihzdHJ1Y3QgbmV0ZGV2c2ltICpucylcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00NDYte1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00NTAtI2lmIElTX0VOQUJMRUQoQ09ORklHX0lORVRfUFNQKVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQ1MTppbnQgbnNpbV9wc3BfaW5pdChzdHJ1Y3QgbmV0ZGV2c2ltICpucyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDUyOnZvaWQgbnNpbV9wc3BfdW5pbml0KHN0cnVjdCBuZXRkZXZzaW0gKm5zKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0NTM6dm9pZCBuc2ltX3BzcF9oYW5kbGVfZXh0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBza2JfZXh0ICpwc3BfZXh0KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00NTQtZW51bSBza2JfZHJvcF9yZWFzb25cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0NTU6bnNpbV9kb19wc3Aoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGRldnNpbSAqbnMsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDU2LVx0ICAgIHN0cnVjdCBuZXRkZXZzaW0gKnBlZXJfbnMsIHN0cnVjdCBza2JfZXh0ICoqcHNwX2V4dCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDU3LSNlbHNlXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDU4OnN0YXRpYyBpbmxpbmUgaW50IG5zaW1fcHNwX2luaXQoc3RydWN0IG5ldGRldnNpbSAqbnMpIHsgcmV0dXJuIDA7IH1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0NTk6c3RhdGljIGlubGluZSB2b2lkIG5zaW1fcHNwX3VuaW5pdChzdHJ1Y3QgbmV0ZGV2c2ltICpucykge31cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00NjAtc3RhdGljIGlubGluZSBlbnVtIHNrYl9kcm9wX3JlYXNvblxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQ2MTpuc2ltX2RvX3BzcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0ZGV2c2ltICpucyxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00NjItXHQgICAgc3RydWN0IG5ldGRldnNpbSAqcGVlcl9ucywgc3RydWN0IHNrYl9leHQgKipwc3BfZXh0KVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaD00Njc9c3RhdGljIGlubGluZSB2b2lkXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDY4Om5zaW1fcHNwX2hhbmRsZV9leHQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNrYl9leHQgKnBzcF9leHQpIHt9XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDY5LSNlbmRpZlxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQ3MC1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0NzE6aW50IG5zaW1fc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDcyLVx0XHQgIHZvaWQgKnR5cGVfZGF0YSk7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQ3NC0jZGVmaW5lIE5TSU1fQlVTX0RFVl9NQVhfVkZTIDRcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0NzU6c3RydWN0IG5zaW1fYnVzX2RldiB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDc2LVx0c3RydWN0IGRldmljZSBkZXY7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQ4Ni1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0ODc6aW50IG5zaW1fYnVzX2luaXQodm9pZCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDg4OnZvaWQgbnNpbV9idXNfZXhpdCh2b2lkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDM6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc3OTcKCQkJCQkJCW91dHB1dDogMTcyCgkJCQkJCQl0aG91Z2h0czogNzgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIE5FVERFVlNJTSBDb25maWd1cmF0aW9uIGFuZCBTeW1ib2wgRm9jdXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gRmlyc3QsIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgS2NvbmZpZyByZXF1aXJlbWVudHMgZm9yIE5FVERFVlNJTSBhcmUgbWV0LiBJJiMzOTt2ZSBjaGVja2VkIHRoZSBkZXBlbmRlbmNpZXM6IGBjb25maWcgTkVUREVWU0lNYCByZWxpZXMgb24gYERFQlVHX0ZTYCwgYElORVRgLCBlaXRoZXIgYFBTQU1QTEVgIG9yIGBQU0FNUExFPW5gLCBhbmQgZWl0aGVyIGBQVFBfMTU4OF9DTE9DS19NT0NLYCBvciBgUFRQXzE1ODhfQ0xPQ0tfTU9DSz1uYC4gSXQgKnNlbGVjdHMqIGBORVRfREVWTElOS2AsIGBQQUdFX1BPT0xgLCBhbmQgYE5FVF9TSEFQRVJgLiBTbywgdG8gYWN0dWFsbHkgYnVpbGQgdGhpcywgYE5FVERFVlNJTWAgaXRzZWxmIGlzIGVzc2VudGlhbCwgYW5kIEkgbXVzdCB2ZXJpZnkgYERFQlVHX0ZTYCBhbmQgYElORVRgIGFyZSBlbmFibGVkLgoKTmV4dCwgSSBleGFtaW5lZCB0aGUgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OyDigJMgdGhlIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzLiBJIGlkZW50aWZpZWQgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uczogYG5zaW1fYnVzX2luaXRgLCBgbnNpbV9idXNfZXhpdGAsIGBuc2ltX2Rydl9wcm9iZWAsIGBuc2ltX2Rydl9yZW1vdmVgLCBgbnNpbV9kcnZfcG9ydF9hZGRgLCBgbnNpbV9kcnZfcG9ydF9kZWxgLCBhbmQgYG5zaW1fZHJ2X2NvbmZpZ3VyZV92ZnNgLiBJIGFsc28gbG9va2VkIGF0IHN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIGBidXMuY2Ag4oCTIGBuc2ltX2J1c19kZXZfbmV3YCBhbmQgYG5ld19kZXZpY2Vfc3RvcmVgIOKAkyB0byBzZWUgaWYgdGhleSBhcmUgc29tZWhvdyBleHBvc2VkLiBUaGUgcHJvbXB0IGluc3RydWN0aW9uIHRvIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeXBvaW50cyBpcyBrZXkgaGVyZS4KCkFmdGVyIGNyb3NzLXJlZmVyZW5jaW5nIGZpbGUgbG9jYXRpb25zLCBJIGNvbmZpcm1lZCB0aGF0IGBuc2ltX2J1c19kZXZfbmV3YCBhbmQgYG5ld19kZXZpY2Vfc3RvcmVgIGFyZSBpbmRlZWQgc3RhdGljLCByZXNpZGluZyBpbiBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jYCwgd2hlcmVhcyBgbnNpbV9kcnZfcHJvYmVgLCBgbnNpbV9kcnZfcmVtb3ZlYCwgYG5zaW1fZHJ2X2NvbmZpZ3VyZV92ZnNgLCBgbnNpbV9kcnZfcG9ydF9hZGRgLCBhbmQgYG5zaW1fZHJ2X3BvcnRfZGVsYCBhcmUgbm9uLXN0YXRpYyBhbmQgZGVmaW5lZCBpbiBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jYCwgY2FsbGVkIGZyb20gYGJ1cy5jYC4KCkkmIzM5O3ZlIHJlLWNvbmZpcm1lZCB0aGUgYEVuYWJsZUNvbmZpZ3NgOiBgTkVUREVWU0lNYCwgYERFQlVHX0ZTYCwgYW5kIGBJTkVUYCBhcmUgYWxsIHJlcXVpcmVkLgoKT2theSwgbGV0JiMzOTtzIHN5bnRoZXNpemUgbXkgZmluZGluZ3MuIEkmIzM5O20gZ29pbmcgdG8gZmxhZyB0aGlzIGFzIGZ1enplZCBhbmQgY29uZmlybWVkOgoKKiAgIGBXb3J0aEZ1enppbmc6IHRydWVgCiogICBgRW5hYmxlQ29uZmlnczogWyYjMzQ7TkVUREVWU0lNJiMzNDssICYjMzQ7REVCVUdfRlMmIzM0OywgJiMzNDtJTkVUJiMzNDtdYAoqICAgYEZvY3VzU3ltYm9sczogWyYjMzQ7bnNpbV9kcnZfcHJvYmUmIzM0OywgJiMzNDtuc2ltX2Rydl9yZW1vdmUmIzM0OywgJiMzNDtuc2ltX2Rydl9jb25maWd1cmVfdmZzJiMzNDssICYjMzQ7bnNpbV9idXNfaW5pdCYjMzQ7LCAmIzM0O25zaW1fYnVzX2V4aXQmIzM0O10gKGFuZC9vciAmIzM0O25zaW1fZHJ2X3BvcnRfYWRkJiMzNDssICYjMzQ7bnNpbV9kcnZfcG9ydF9kZWwmIzM0OylgCgpJIHVuZGVyc3RhbmQgdGhlIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSByZWZlcmVuY2UgY291bnRpbmcgb2YgYG5zaW1fYnVzX2RldnNgLCBzcGVjaWZpY2FsbHkgbW92aW5nIHRoZSBpbmNyZW1lbnQgdG8gaGFwcGVuIGJlZm9yZSBgZGV2aWNlX3JlZ2lzdGVyKClgLiBUaGlzIGNoYW5nZSBhbHRlcnMgbGlmZWN5Y2xlIGFuZCB0cmFja2luZyBvZiBuZXRkZXZzaW0gYnVzIGRldmljZXMsIHdoaWNoIGFyZSBjcml0aWNhbCB0byB0aGUgbmV0ZGV2c2ltIGRyaXZlciBkZXZpY2UgbWFuYWdlbWVudC4gVGhhdCYjMzk7cyBmdXp6ZXItcmVsZXZhbnQuIFNvLCB0aGlzIGFuYWx5c2lzIHNlZW1zIHNvbGlkLiBJJiMzOTtsbCBwcm9jZWVkIHdpdGggYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDM6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7LAogICAgJiMzNDtERUJVR19GUyYjMzQ7LAogICAgJiMzNDtJTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bnNpbV9kcnZfcHJvYmUmIzM0OywKICAgICYjMzQ7bnNpbV9kcnZfcmVtb3ZlJiMzNDssCiAgICAmIzM0O25zaW1fZHJ2X2NvbmZpZ3VyZV92ZnMmIzM0OywKICAgICYjMzQ7bnNpbV9idXNfaW5pdCYjMzQ7LAogICAgJiMzNDtuc2ltX2J1c19leGl0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkanVzdHMgdGhlIGRldmljZSByZWZlcmVuY2UgY291bnRpbmcgZm9yIG5ldGRldnNpbSBidXMgZGV2aWNlcyBieSBtb3ZpbmcgcmVmY291bnRfaW5jKFx1MDAyNm5zaW1fYnVzX2RldnMpIGludG8gbnNpbV9idXNfZGV2X25ldygpIGJlZm9yZSBkZXZpY2VfcmVnaXN0ZXIoKSwgZml4aW5nIGEgcmVmY291bnQgdW5kZXJmbG93IG9uIGRldmljZSByZWdpc3RyYXRpb24gZmFpbHVyZS4gTmV0ZGV2c2ltIGlzIGEgc29mdHdhcmUtc2ltdWxhdGVkIG5ldHdvcmsgZGV2aWNlIGRyaXZlciBmdWxseSByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRERVZTSU0mIzM0OywKICAgICYjMzQ7REVCVUdfRlMmIzM0OywKICAgICYjMzQ7SU5FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25zaW1fZHJ2X3Byb2JlJiMzNDssCiAgICAmIzM0O25zaW1fZHJ2X3JlbW92ZSYjMzQ7LAogICAgJiMzNDtuc2ltX2Rydl9jb25maWd1cmVfdmZzJiMzNDssCiAgICAmIzM0O25zaW1fYnVzX2luaXQmIzM0OywKICAgICYjMzQ7bnNpbV9idXNfZXhpdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGp1c3RzIHRoZSBkZXZpY2UgcmVmZXJlbmNlIGNvdW50aW5nIGZvciBuZXRkZXZzaW0gYnVzIGRldmljZXMgYnkgbW92aW5nIHJlZmNvdW50X2luYyhcdTAwMjZuc2ltX2J1c19kZXZzKSBpbnRvIG5zaW1fYnVzX2Rldl9uZXcoKSBiZWZvcmUgZGV2aWNlX3JlZ2lzdGVyKCksIGZpeGluZyBhIHJlZmNvdW50IHVuZGVyZmxvdyBvbiBkZXZpY2UgcmVnaXN0cmF0aW9uIGZhaWx1cmUuIE5ldGRldnNpbSBpcyBhIHNvZnR3YXJlLXNpbXVsYXRlZCBuZXR3b3JrIGRldmljZSBkcml2ZXIgZnVsbHkgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDM6MTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMzoxNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vdmVzIHRoZSByZWZlcmVuY2UgY291bnQgaW5jcmVtZW50IGByZWZjb3VudF9pbmMoXHUwMDI2bnNpbV9idXNfZGV2cylgIGZyb20gYG5ld19kZXZpY2Vfc3RvcmUoKWAgaW50byBgbnNpbV9idXNfZGV2X25ldygpYCBwcmlvciB0byBjYWxsaW5nIGBkZXZpY2VfcmVnaXN0ZXIoKWAuIFRoaXMgZml4ZXMgcmVmZXJlbmNlIGNvdW50aW5nIGJhbGFuY2UgaW4gZXJyb3IvcmVsZWFzZSBwYXRocy4gXG5cblRoZSBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIGFsdGVyIGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgdXNhZ2UsIGJvdW5kcyBjaGVja3MsIG9yIGtlcm5lbC10by11c2VyIGluZm8gbGVha3MuIEFueSBsaWZlY3ljbGUgb3IgcmVmZXJlbmNlIGNvdW50aW5nIGVycm9ycyAoZS5nLiB1c2UtYWZ0ZXItZnJlZSwgcmVmY291bnQgdW5kZXJmbG93L292ZXJmbG93KSBhcmUgY292ZXJlZCBieSByZWZjb3VudF90IGNoZWNrcyBhbmQgc3RhbmRhcmQgS0FTQU4vTE9DS0RFUCBkZXRlY3RvcnMuIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3NWUyMmM5Y2Y4NmU5YjVlYTUzNzZiMzllN2IwMWExNmM2MmE0NzljCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgMSAwMzoxNDowOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYyBiL2RyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYwppbmRleCA1YzU1YzMwODQ4N2I0Li40MjZmYjQzOGI5MjIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jCkBAIC0xOTQsNyAmIzQzOzE5NCw2IEBAIG5ld19kZXZpY2Vfc3RvcmUoY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQogCQlnb3RvIGVycjsKIAl9CiAKLQlyZWZjb3VudF9pbmMoJmFtcDtuc2ltX2J1c19kZXZzKTsKIAkvKiBBbGxvdyB1c2luZyBuc2ltX2J1c19kZXYgKi8KIAlzbXBfc3RvcmVfcmVsZWFzZSgmYW1wO25zaW1fYnVzX2Rldi0mZ3Q7aW5pdCwgdHJ1ZSk7CiAKQEAgLTQ2NSw2ICYjNDM7NDY0LDcgQEAgbnNpbV9idXNfZGV2X25ldyh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBwb3J0X2NvdW50LCB1bnNpZ25lZCBpbnQgbnVtX3F1ZXUKIAkvKiBEaXNhbGxvdyB1c2luZyBuc2ltX2J1c19kZXYgKi8KIAlzbXBfc3RvcmVfcmVsZWFzZSgmYW1wO25zaW1fYnVzX2Rldi0mZ3Q7aW5pdCwgZmFsc2UpOwogCiYjNDM7CXJlZmNvdW50X2luYygmYW1wO25zaW1fYnVzX2RldnMpOwogCWVyciA9IGRldmljZV9yZWdpc3RlcigmYW1wO25zaW1fYnVzX2Rldi0mZ3Q7ZGV2KTsKIAlpZiAoZXJyKQogCQlnb3RvIGVycl9uc2ltX2J1c19kZXZfaWRfZnJlZTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAzOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMDIKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIHdoYXQgSSYjMzk7bSB0aGlua2luZyBhcyBJIGFwcHJvYWNoIHRoaXMgcGF0Y2g6CgoqKkFuYWx5emluZyB0aGUgTmV0d29yayBEZXZpY2UgU2ltdWxhdG9yIFBhdGNoKioKCkFscmlnaHQsIHRoZSBmaXJzdCB0aGluZyBJIG5vdGljZSBpcyB0aGF0IHRoZSBwYXRjaCBpcyB0YXJnZXRpbmcgYGRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuY2AuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCYjMzk7cyBjaGFuZ2luZyB3aXRoaW4gdGhhdCBmaWxlLiBCZWZvcmUgSSBldmVuIHN0YXJ0IGRpc3NlY3RpbmcgdGhlIGRpZmYsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSAqY29udGV4dCogb2YgdGhvc2UgY2hhbmdlcyB3aXRoaW4gYGRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuY2AuIEkmIzM5O20gZ29pbmcgdG8gcHVsbCB1cCB0aGF0IGZpbGUgYW5kIGdldCBhIGZlZWwgZm9yIHRoZSBzdXJyb3VuZGluZyBjb2RlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgdGhlIG92ZXJhbGwgZnVuY3Rpb24gb2YgdGhpcyAmIzM0O2J1cy5jJiMzNDsgZmlsZSBhbmQgc2VlIHdoZXJlIHRoZSBjaGFuZ2VzIGFyZSBiZWluZyBtYWRlIHdpdGhpbiBpdHMgZXhpc3RpbmcgaW1wbGVtZW50YXRpb24uIFVuZGVyc3RhbmRpbmcgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljIGlzIGdvaW5nIHRvIGJlIGtleSB0byBpbnRlcnByZXRpbmcgdGhlIGludGVudCBhbmQgaW1wYWN0IG9mIHRoaXMgcGF0Y2guIExldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDM6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnNpbV9idXNfZGV2cyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM9MjE9c3RhdGljIGJvb2wgbnNpbV9idXNfZW5hYmxlO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjIyOnN0YXRpYyByZWZjb3VudF90IG5zaW1fYnVzX2RldnM7IC8qIEluY2x1ZGluZyB0aGUgYnVzIGl0c2VsZi4gKi9cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoyMzpzdGF0aWMgREVDTEFSRV9DT01QTEVUSU9OKG5zaW1fYnVzX2RldnNfcmVsZWFzZWQpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTI0LVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz0xNDA9c3RhdGljIHZvaWQgbnNpbV9idXNfZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xNDUtXHRrZnJlZShuc2ltX2J1c19kZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE0NjpcdGlmIChyZWZjb3VudF9kZWNfYW5kX3Rlc3QoXHUwMDI2bnNpbV9idXNfZGV2cykpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTQ3Olx0XHRjb21wbGV0ZShcdTAwMjZuc2ltX2J1c19kZXZzX3JlbGVhc2VkKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xNDgtfVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz00NDY9bnNpbV9idXNfZGV2X25ldyh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBwb3J0X2NvdW50LCB1bnNpZ25lZCBpbnQgbnVtX3F1ZXVlcylcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDY2LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ2NzpcdHJlZmNvdW50X2luYyhcdTAwMjZuc2ltX2J1c19kZXZzKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00NjgtXHRlcnIgPSBkZXZpY2VfcmVnaXN0ZXIoXHUwMDI2bnNpbV9idXNfZGV2LVx1MDAzZWRldik7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTQ5Nz1pbnQgbnNpbV9idXNfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy01MDYtXHRcdGdvdG8gZXJyX2J1c191bnJlZ2lzdGVyO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjUwNzpcdHJlZmNvdW50X3NldChcdTAwMjZuc2ltX2J1c19kZXZzLCAxKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy01MDgtXHQvKiBBbGxvdyB1c2luZyByZXNvdXJjZXMgKi9cbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM9NTE3PXZvaWQgbnNpbV9idXNfZXhpdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy01MjItXHRzbXBfc3RvcmVfcmVsZWFzZShcdTAwMjZuc2ltX2J1c19lbmFibGUsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo1MjM6XHRpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNm5zaW1fYnVzX2RldnMpKVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjUyNDpcdFx0Y29tcGxldGUoXHUwMDI2bnNpbV9idXNfZGV2c19yZWxlYXNlZCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTI1LVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy01MzItXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NTMzOlx0d2FpdF9mb3JfY29tcGxldGlvbihcdTAwMjZuc2ltX2J1c19kZXZzX3JlbGVhc2VkKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy01MzQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAzOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxOTkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGNvbnNpZGVyaW5nIEkmIzM5O20gYW4gZXhwZXJ0OgoKKipEaXZpbmcgaW50byB0aGUgbmV0ZGV2c2ltIEJ1cyBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdpdGhpbiBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jYC4gSSYjMzk7bSBnb2luZyB0byB6ZXJvIGluIG9uIGxpbmVzIDE4MCB0aHJvdWdoIDIyMCBhbmQgdGhlbiBqdW1wIGFoZWFkIHRvIDQ0MCB0aHJvdWdoIDQ5MC4gTm8gbmVlZCB0byByZWFkIHRoZSB3aG9sZSBmaWxlIOKAkyBJIGhhdmUgYSBnb29kIGVub3VnaCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRoYXQgdGhvc2Ugc3BlY2lmaWMgc2VjdGlvbnMgc2hvdWxkIHByb3ZpZGUgdGhlIGNvbnRleHQgSSBuZWVkLiBJJiMzOTttIGV4cGVjdGluZyB0aGF0IHRob3NlIHNlY3Rpb25zIHdpbGwgbGlrZWx5IGRlYWwgd2l0aCBlaXRoZXIgdGhlIGJ1cyBpbml0aWFsaXphdGlvbiBhbmQgZGV2aWNlIHJlZ2lzdHJhdGlvbiBvciBwZXJoYXBzIHRoZSBhY3R1YWwgZGF0YSB0cmFuc2ZlciBtZWNoYW5pc21zIG9uIHRoZSBzaW11bGF0ZWQgYnVzLiBUaW1lIHRvIGdldCB0aGUgZGV0YWlscyBJIG5lZWQgdG8gZmlsbCBpbiB0aGUgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDM6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE4MDpcdFx0XHRwcl9lcnIoXCYjMzQ7Rm9ybWF0IGZvciBhZGRpbmcgbmV3IGRldmljZSBpcyBcXFwmIzM0O2lkIHBvcnRfY291bnQgbnVtX3F1ZXVlc1xcXCYjMzQ7ICh1aW50IHVpbnQgdWludCkuXFxuXCYjMzQ7KTtcbiAxODE6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gMTgyOlx0XHR9XG4gMTgzOlx0XG4gMTg0Olx0XHRtdXRleF9sb2NrKFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0X2xvY2spO1xuIDE4NTpcdFx0LyogUHJldmVudCB0byB1c2UgcmVzb3VyY2UgYmVmb3JlIGluaXRpYWxpemF0aW9uLiAqL1xuIDE4NjpcdFx0aWYgKCFzbXBfbG9hZF9hY3F1aXJlKFx1MDAyNm5zaW1fYnVzX2VuYWJsZSkpIHtcbiAxODc6XHRcdFx0ZXJyID0gLUVCVVNZO1xuIDE4ODpcdFx0XHRnb3RvIGVycjtcbiAxODk6XHRcdH1cbiAxOTA6XHRcbiAxOTE6XHRcdG5zaW1fYnVzX2RldiA9IG5zaW1fYnVzX2Rldl9uZXcoaWQsIHBvcnRfY291bnQsIG51bV9xdWV1ZXMpO1xuIDE5MjpcdFx0aWYgKElTX0VSUihuc2ltX2J1c19kZXYpKSB7XG4gMTkzOlx0XHRcdGVyciA9IFBUUl9FUlIobnNpbV9idXNfZGV2KTtcbiAxOTQ6XHRcdFx0Z290byBlcnI7XG4gMTk1Olx0XHR9XG4gMTk2Olx0XG4gMTk3Olx0XHQvKiBBbGxvdyB1c2luZyBuc2ltX2J1c19kZXYgKi9cbiAxOTg6XHRcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2Vpbml0LCB0cnVlKTtcbiAxOTk6XHRcbiAyMDA6XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2bnNpbV9idXNfZGV2LVx1MDAzZWxpc3QsIFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0KTtcbiAyMDE6XHRcdG11dGV4X3VubG9jayhcdTAwMjZuc2ltX2J1c19kZXZfbGlzdF9sb2NrKTtcbiAyMDI6XHRcbiAyMDM6XHRcdHJldHVybiBjb3VudDtcbiAyMDQ6XHRlcnI6XG4gMjA1Olx0XHRtdXRleF91bmxvY2soXHUwMDI2bnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XG4gMjA2Olx0XHRyZXR1cm4gZXJyO1xuIDIwNzpcdH1cbiAyMDg6XHRzdGF0aWMgQlVTX0FUVFJfV08obmV3X2RldmljZSk7XG4gMjA5Olx0XG4gMjEwOlx0c3RhdGljIHZvaWQgbnNpbV9idXNfZGV2X2RlbChzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYpO1xuIDIxMTpcdFxuIDIxMjpcdHN0YXRpYyBzc2l6ZV90XG4gMjEzOlx0ZGVsX2RldmljZV9zdG9yZShjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXG4gMjE0Olx0e1xuIDIxNTpcdFx0c3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2LCAqdG1wO1xuIDIxNjpcdFx0dW5zaWduZWQgaW50IGlkO1xuIDIxNzpcdFx0aW50IGVycjtcbiAyMTg6XHRcbiAyMTk6XHRcdGVyciA9IHNzY2FuZihidWYsIFwmIzM0OyV1XCYjMzQ7LCBcdTAwMjZpZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAzOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNzgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB3aGF0IEkmIzM5O2QgYmUgdGhpbmtpbmcsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCBhbmQgYXNzdW1pbmcgYSBoaWdoIGxldmVsIG9mIGV4cGVydGlzZSBpbiBuZXR3b3JraW5nIGFuZCBrZXJuZWwgaW50ZXJuYWxzOgoKKipEaXZpbmcgaW50byB0aGUgTmV0ZGV2c2ltIEJ1cyoqCgpBbHJpZ2h0LCB0byB0cnVseSBncmFzcCB0aGUgaW1wbGljYXRpb25zIGhlcmUsIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIGhvdyB0aGlzIGBuZXRkZXZzaW1gIGJ1cyBvcGVyYXRlcy4gSSYjMzk7bSBnb2luZyB0byBqdW1wIGludG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIgYW5kIHNjcnV0aW5pemUgbGluZXMgNDQwIHRvIDQ5MCBvZiBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jYC4gSSBleHBlY3QgdGhvc2UgbGluZXMgdG8gZXhwb3NlIHRoZSBjb3JlIG1lY2hhbmljcywgdGhlIGNyaXRpY2FsIHBhdGgsIG9mIGRhdGEgZmxvdyBhbmQgZGV2aWNlIGludGVyYWN0aW9uIHdpdGhpbiB0aGlzIHNpbXVsYXRlZCBlbnZpcm9ubWVudC4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgc2VjdGlvbiBsaWtlbHkgZW5jb21wYXNzZXMgdGhlIG1vc3QgaW1wb3J0YW50IGxvZ2ljIGZvciByZXNvdXJjZSBhbGxvY2F0aW9uIGFuZCBpbml0aWFsaXphdGlvbiBvZiB0aGUgc2ltdWxhdGVkIGRldmljZXMsIG9yIHRoZSB2ZXJ5IGNvcmUgb2YgaG93IHRoZSBidXMgaGFuZGxlcyBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIHNpbXVsYXRlZCBuZXR3b3JrIGRldmljZXMuIEkgbmVlZCB0byBzZWUgaG93IHRoZSBzb2Z0d2FyZSBhYnN0cmFjdGlvbnMgbWFwIG9udG8gdGhlIHBoeXNpY2FsIHdvcmxkIHRoYXQgaXMgYmVpbmcgbW9kZWxsZWQgaGVyZS4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgZ2x1ZSB0aGF0IGhvbGRzIHRoZSB3aG9sZSBzaW11bGF0aW9uIHRvZ2V0aGVyLiBJIGFsc28gd2FudCB0byBvYnNlcnZlIHRoZSBkYXRhIHN0cnVjdHVyZXMgdGhhdCBtYW5hZ2UgdGhlIHNpbXVsYXRlZCBkZXZpY2VzOyBob3cgaXMgdGhlaXIgc3RhdHVzIHRyYWNrZWQ/IEhvdyBhcmUgdGhlIGludGVycnVwdHMgYW5kIGV2ZW50IHRyaWdnZXJzIGVtdWxhdGVkPyBBcmUgdGhlcmUgYW55IGNsZXZlciB0ZWNobmlxdWVzIGZvciBtaW5pbWl6aW5nIG92ZXJoZWFkIGluIHRoaXMgc2ltdWxhdGlvbj8gVWx0aW1hdGVseSwgSSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IGl0IGNhbiBhY2hpZXZlIHRoZSBsZXZlbCBvZiByZWFsaXNtIHRoYXQgbGV0cyBpdCBiZSB1c2VkIGZvciBtZWFuaW5nZnVsIHRlc3RpbmcgYW5kIGRldmVsb3BtZW50IG9mIHRoZSByZWFsIG5ldHdvcmtpbmcgc3RhY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAzOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDU1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0NDA6XHRcdC5wcm9iZVx0XHQ9IG5zaW1fYnVzX3Byb2JlLFxuIDQ0MTpcdFx0LnJlbW92ZVx0XHQ9IG5zaW1fYnVzX3JlbW92ZSxcbiA0NDI6XHRcdC5udW1fdmZcdFx0PSBuc2ltX251bV92ZixcbiA0NDM6XHR9O1xuIDQ0NDpcdFxuIDQ0NTpcdHN0YXRpYyBzdHJ1Y3QgbnNpbV9idXNfZGV2ICpcbiA0NDY6XHRuc2ltX2J1c19kZXZfbmV3KHVuc2lnbmVkIGludCBpZCwgdW5zaWduZWQgaW50IHBvcnRfY291bnQsIHVuc2lnbmVkIGludCBudW1fcXVldWVzKVxuIDQ0NzpcdHtcbiA0NDg6XHRcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldjtcbiA0NDk6XHRcdGludCBlcnI7XG4gNDUwOlx0XG4gNDUxOlx0XHRuc2ltX2J1c19kZXYgPSBremFsbG9jX29iaigqbnNpbV9idXNfZGV2KTtcbiA0NTI6XHRcdGlmICghbnNpbV9idXNfZGV2KVxuIDQ1MzpcdFx0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbiA0NTQ6XHRcbiA0NTU6XHRcdGVyciA9IGlkYV9hbGxvY19yYW5nZShcdTAwMjZuc2ltX2J1c19kZXZfaWRzLCBpZCwgaWQsIEdGUF9LRVJORUwpO1xuIDQ1NjpcdFx0aWYgKGVyciBcdTAwM2MgMClcbiA0NTc6XHRcdFx0Z290byBlcnJfbnNpbV9idXNfZGV2X2ZyZWU7XG4gNDU4Olx0XHRuc2ltX2J1c19kZXYtXHUwMDNlZGV2LmlkID0gZXJyO1xuIDQ1OTpcdFx0bnNpbV9idXNfZGV2LVx1MDAzZWRldi5idXMgPSBcdTAwMjZuc2ltX2J1cztcbiA0NjA6XHRcdG5zaW1fYnVzX2Rldi1cdTAwM2VkZXYudHlwZSA9IFx1MDAyNm5zaW1fYnVzX2Rldl90eXBlO1xuIDQ2MTpcdFx0bnNpbV9idXNfZGV2LVx1MDAzZXBvcnRfY291bnQgPSBwb3J0X2NvdW50O1xuIDQ2MjpcdFx0bnNpbV9idXNfZGV2LVx1MDAzZW51bV9xdWV1ZXMgPSBudW1fcXVldWVzO1xuIDQ2MzpcdFx0bnNpbV9idXNfZGV2LVx1MDAzZWluaXRpYWxfbmV0ID0gY3VycmVudC1cdTAwM2Vuc3Byb3h5LVx1MDAzZW5ldF9ucztcbiA0NjQ6XHRcdC8qIERpc2FsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqL1xuIDQ2NTpcdFx0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2bnNpbV9idXNfZGV2LVx1MDAzZWluaXQsIGZhbHNlKTtcbiA0NjY6XHRcbiA0Njc6XHRcdHJlZmNvdW50X2luYyhcdTAwMjZuc2ltX2J1c19kZXZzKTtcbiA0Njg6XHRcdGVyciA9IGRldmljZV9yZWdpc3RlcihcdTAwMjZuc2ltX2J1c19kZXYtXHUwMDNlZGV2KTtcbiA0Njk6XHRcdGlmIChlcnIpXG4gNDcwOlx0XHRcdGdvdG8gZXJyX25zaW1fYnVzX2Rldl9pZF9mcmVlO1xuIDQ3MTpcdFxuIDQ3MjpcdFx0cmV0dXJuIG5zaW1fYnVzX2RldjtcbiA0NzM6XHRcbiA0NzQ6XHRlcnJfbnNpbV9idXNfZGV2X2lkX2ZyZWU6XG4gNDc1Olx0XHRpZGFfZnJlZShcdTAwMjZuc2ltX2J1c19kZXZfaWRzLCBuc2ltX2J1c19kZXYtXHUwMDNlZGV2LmlkKTtcbiA0NzY6XHRcdHB1dF9kZXZpY2UoXHUwMDI2bnNpbV9idXNfZGV2LVx1MDAzZWRldik7XG4gNDc3Olx0XHRuc2ltX2J1c19kZXYgPSBOVUxMO1xuIDQ3ODpcdGVycl9uc2ltX2J1c19kZXZfZnJlZTpcbiA0Nzk6XHRcdGtmcmVlKG5zaW1fYnVzX2Rldik7XG4gNDgwOlx0XHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuIDQ4MTpcdH1cbiA0ODI6XHRcbiA0ODM6XHRzdGF0aWMgdm9pZCBuc2ltX2J1c19kZXZfZGVsKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldilcbiA0ODQ6XHR7XG4gNDg1Olx0XHQvKiBEaXNhbGxvdyB1c2luZyBuc2ltX2J1c19kZXYgKi9cbiA0ODY6XHRcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2Vpbml0LCBmYWxzZSk7XG4gNDg3Olx0XHRpZGFfZnJlZShcdTAwMjZuc2ltX2J1c19kZXZfaWRzLCBuc2ltX2J1c19kZXYtXHUwMDNlZGV2LmlkKTtcbiA0ODg6XHRcdGRldmljZV91bnJlZ2lzdGVyKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2VkZXYpO1xuIDQ4OTpcdH1cbiA0OTA6XHRcbiA0OTE6XHRzdGF0aWMgc3RydWN0IGRldmljZV9kcml2ZXIgbnNpbV9kcml2ZXIgPSB7XG4gNDkyOlx0XHQubmFtZVx0XHQ9IERSVl9OQU1FLFxuIDQ5MzpcdFx0LmJ1c1x0XHQ9IFx1MDAyNm5zaW1fYnVzLFxuIDQ5NDpcdFx0Lm93bmVyXHRcdD0gVEhJU19NT0RVTEUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAzOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0MDUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCYjMzk7cyBJbXBhY3Qgb24gRGV2aWNlIFJlZ2lzdHJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29yZSBjaGFuZ2UgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBJdCBzZWVtcyB0aGF0IHRoZSBgcmVmY291bnRfaW5jKCZhbXA7bnNpbV9idXNfZGV2cylgIGNhbGwgaGFzIGJlZW4gc2hpZnRlZC4gU3BlY2lmaWNhbGx5LCBpdCB3YXMgcHJldmlvdXNseSBsb2NhdGVkIGluIGBuZXdfZGV2aWNlX3N0b3JlYCwgKmFmdGVyKiB0aGUgY2FsbCB0byBgbnNpbV9idXNfZGV2X25ldygpYC4gTm93LCBpdCYjMzk7cyBiZWVuIG1vdmVkICppbnRvKiBgbnNpbV9idXNfZGV2X25ldygpYCwgaW1tZWRpYXRlbHkgKmJlZm9yZSogdGhlIGNhbGwgdG8gYGRldmljZV9yZWdpc3RlcigmYW1wO25zaW1fYnVzX2Rldi0mZ3Q7ZGV2KWAuCgpUaGUgbG9naWMgYmVoaW5kIHRoaXMgaXMgbGlrZWx5IGRyaXZlbiBieSBlcnJvciBoYW5kbGluZyBkdXJpbmcgZGV2aWNlIHJlZ2lzdHJhdGlvbi4gSWYgYGRldmljZV9yZWdpc3RlcmAgd2l0aGluIGBuc2ltX2J1c19kZXZfbmV3KClgIGZhaWxzLCBpdCBjYWxscyBgcHV0X2RldmljZWAsIHdoaWNoIHRyaWdnZXJzIHRoZSBkZXZpY2UgcmVsZWFzZSBjYWxsYmFjaywgYG5zaW1fYnVzX2Rldl9yZWxlYXNlKClgLiBUaGlzIHJlbGVhc2UgZnVuY3Rpb24gaXMgY3JpdGljYWw7IGl0IGRlY3JlbWVudHMgdGhlIGBuc2ltX2J1c19kZXZzYCByZWZjb3VudC4KClRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbiBjcmVhdGVkIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkuIElmIGBuc2ltX2J1c19kZXZfbmV3KClgIGZhaWxlZCBkdXJpbmcgdGhlIGBkZXZpY2VfcmVnaXN0ZXJgIGNhbGwsIGBuc2ltX2J1c19kZXZfcmVsZWFzZSgpYCB3b3VsZCBkZWNyZW1lbnQgdGhlIHJlZmNvdW50ICp3aXRob3V0KiBhIGNvcnJlc3BvbmRpbmcgaW5jcmVtZW50LiBUaGlzIGNvdWxkIGxlYWQgdG8gYSByZWZjb3VudCB1bmRlcmZsb3csIHBvdGVudGlhbGx5IGNhdXNpbmcgYWxsIHNvcnRzIG9mIGhlYWRhY2hlcyBsYXRlci4gVGhpcyBjb3VsZCBhbHNvIG9jY3VyIGlmIGFub3RoZXIgY2FsbGVyLCBpbiBwYXJhbGxlbCwgd2FzIGNhbGxpbmcgYG5zaW1fYnVzX2Rldl9uZXcoKWAuCgpUaGVyZWZvcmUsIG1vdmluZyB0aGUgaW5jcmVtZW50IGVuc3VyZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgb25seSBpbmNyZWFzZWQgd2hlbiB0aGUgZGV2aWNlIHJlZ2lzdHJhdGlvbiBpcyBhY3R1YWxseSBjb25zaWRlcmVkIHN1Y2Nlc3NmdWwsIGFzIGluLCB0aGUgZGV2aWNlIGlzIG5vdyByZWdpc3RlcmVkIGluIHRoZSBzeXN0ZW0uIFRoZSBuZXcgb3JkZXIgb2Ygb3BlcmF0aW9ucyBpcyBlc3NlbnRpYWwgZm9yIGNvcnJlY3RuZXNzLiBUaGUgZGVjcmVtZW50LCBpbiBjYXNlIG9mIGEgcmVnaXN0cmF0aW9uIGZhaWx1cmUsIHdpbGwgc3RpbGwgZmluZCBhIHBvc2l0aXZlIG51bWJlciB0byB3b3JrIHdpdGguCgpUbyBmdXJ0aGVyIGNvbmZpcm0gdGhpcywgbGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgZGlyZWN0IGNhbGxlcnMgdG8gYG5zaW1fYnVzX2Rldl9uZXcoKWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAzOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25zaW1fYnVzX2Rldl9uZXcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz02NT1uZXdfcG9ydF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xMDAtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTAxOnN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBuc2ltX2J1c19kZXZfbmV3X3BvcnRfYXR0ciA9IF9fQVRUUl9XTyhuZXdfcG9ydCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTAyLVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz0xMjQ9c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKm5zaW1fYnVzX2Rldl9hdHRyc1tdID0ge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTEyNS1cdFx1MDAyNm5zaW1fYnVzX2Rldl9udW12ZnNfYXR0ci5hdHRyLFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjEyNjpcdFx1MDAyNm5zaW1fYnVzX2Rldl9uZXdfcG9ydF9hdHRyLmF0dHIsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTI3LVx0XHUwMDI2bnNpbV9idXNfZGV2X2RlbF9wb3J0X2F0dHIuYXR0cixcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM9MTU1PXN0YXRpYyBzdHJ1Y3QgbnNpbV9idXNfZGV2ICpcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxNTY6bnNpbV9idXNfZGV2X25ldyh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBwb3J0X2NvdW50LCB1bnNpZ25lZCBpbnQgbnVtX3F1ZXVlcyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTU3LVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz0xNTk9bmV3X2RldmljZV9zdG9yZShjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTE5MC1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxOTE6XHRuc2ltX2J1c19kZXYgPSBuc2ltX2J1c19kZXZfbmV3KGlkLCBwb3J0X2NvdW50LCBudW1fcXVldWVzKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xOTItXHRpZiAoSVNfRVJSKG5zaW1fYnVzX2RldikpIHtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM9NDQ1PXN0YXRpYyBzdHJ1Y3QgbnNpbV9idXNfZGV2ICpcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NDY6bnNpbV9idXNfZGV2X25ldyh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBwb3J0X2NvdW50LCB1bnNpZ25lZCBpbnQgbnVtX3F1ZXVlcylcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00NDcte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzMwCgkJCQkJCQlvdXRwdXQ6IDE2NAoJCQkJCQkJdGhvdWdodHM6IDM4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgbnNpbV9idXNfZGV2cyBSZWZjb3VudGluZyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGEgc3RyYWlnaHRmb3J3YXJkIHJlZmNvdW50aW5nIGZpeCBmb3IgYG5zaW1fYnVzX2RldnNgIGluIHJlbGF0aW9uIHRvIGBkZXZpY2VfcmVnaXN0ZXJgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcmlnb3JvdXNseSBhc3Nlc3MgaWYgdGhpcyBjaGFuZ2UgY291bGQgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIExldCYjMzk7cyBicmVhayBpdCBkb3duOgoKRmlyc3QsIGlzIHRoZXJlIGFueSBwb3NzaWJpbGl0eSBvZiBrZXJuZWwgc3RydWN0dXJlcywgd2l0aCBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIGZpZWxkcyBvciBwYWRkaW5nLCBiZWluZyBzZW50IHRvIHVzZXIgc3BhY2U/IE5vLCBub3QgaGVyZS4gU2Vjb25kbHksIGFtIEkgc2VlaW5nIGFueSBjb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCByZWxpZXMgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXM/IE5vcGUuIE5leHQsIGFyZSB3ZSBhbGxvY2F0aW5nIG9yIGluaXRpYWxpemluZyBhbnkgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZD8gTm8sIHRoYXQmIzM5O3Mgbm90IHRoZSBjYXNlOyBgbnNpbV9idXNfZGV2YCBpcyBhbGxvY2F0ZWQgdXNpbmcgYGt6YWxsb2Nfb2JqYCwgd2hpY2ggaXMgc2FmZS4gQW5kIGZpbmFsbHksIHdoYXQgYWJvdXQgYm91bmRzIGNoZWNrcywgb3IgZGVhbGluZyB3aXRoIGxlbmd0aHMgaW4gYSB3YXkgdGhhdCBjb3VsZCBjYXVzZSBwcm9ibGVtcz8gTm8sIG5vdGhpbmcgb2YgY29uY2VybiB0aGVyZS4KClRoZSBwYXRjaCBzaW1wbHkgbW92ZXMgYSBgcmVmY291bnRfaW5jKCZhbXA7bnNpbV9idXNfZGV2cylgIGZyb20gYG5ld19kZXZpY2Vfc3RvcmVgIHRvIGBuc2ltX2J1c19kZXZfbmV3YC4gVGhpcyBpcyBzb2xlbHkgYWJvdXQgcmVmZXJlbmNlIGNvdW50aW5nIGxpZmVjeWNsZSwgc3luY2hyb25pemF0aW9uLCBhbmQgYXZvaWRpbmcgcG90ZW50aWFsIGlzc3VlcyBsaWtlIGxlYWtzLCB1c2UtYWZ0ZXItZnJlZSwgb3IgdW5kZXJmbG93LiBUaGVzZSBhcmVhcyBhcmUgYWxyZWFkeSB3ZWxsLWNvdmVyZWQgYnkgc3RhbmRhcmQgcmVmY291bnQgY2hlY2tzIGFuZCBLQVNBTi4gS01TQU4gaXNuJiMzOTt0IG5lZWRlZCBoZXJlLgoKTm93LCBsZXQgbWUgZG91YmxlLWNoZWNrIGFsbCB0aG9zZSBjcml0ZXJpYSB0byBmb3JtdWxhdGUgYSBzb2xpZCBLTVNBTlJlYXNvbmluZzoKCiogICAqKk5lZWRzS01TQU46KiogYGZhbHNlYAoqICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGlzIGp1c3QgbW92aW5nIGEgcmVmZXJlbmNlIGNvdW50IGluY3JlbWVudCAoYHJlZmNvdW50X2luYygmYW1wO25zaW1fYnVzX2RldnMpYCkgZnJvbSBgbmV3X2RldmljZV9zdG9yZWAgaW50byBgbnNpbV9idXNfZGV2X25ld2AgcmlnaHQgYmVmb3JlIHRoZSBgZGV2aWNlX3JlZ2lzdGVyYCBjYWxsLiBJdCYjMzk7cyBhbGwgYWJvdXQgcmVmZXJlbmNlIGNvdW50aW5nIHRvIGVuc3VyZSBjb3JyZWN0IHBhaXJpbmcgd2l0aCBkZXZpY2UgcmVsZWFzZSBhbmQgY2xlYW51cC4KICAgICogICBJdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIGJ1ZmZlcnMsIG9yIGFueSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyB0aGF0IGFyZSByZWFkLgogICAgKiAgIE5vIGRhdGEgaXMgYmVpbmcgbGVha2VkIHRvIHVzZXIgc3BhY2UgYmVjYXVzZSBpdCYjMzk7cyBwdXJlbHkgaW50ZXJuYWwuCiAgICAqICAgQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhlIHJlZmNvdW50aW5nIGxvZ2ljLCB0aGUgbGlmZWN5Y2xlLCBvciBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW9zIGFyZSBhbHJlYWR5IGNvdmVyZWQgYnkgdGhlIHN0YW5kYXJkIGtlcm5lbCByZWZjb3VudCBhc3NlcnRpb25zIGFuZCBieSBLQVNBTi4KCkFscmlnaHQsIEkmIzM5O20gY29uZmlkZW50IGluIHRoYXQgYW5hbHlzaXMuIExldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAzOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vdmVzIHRoZSByZWZlcmVuY2UgY291bnQgaW5jcmVtZW50IGByZWZjb3VudF9pbmMoXHUwMDI2bnNpbV9idXNfZGV2cylgIGZyb20gYG5ld19kZXZpY2Vfc3RvcmUoKWAgaW50byBgbnNpbV9idXNfZGV2X25ldygpYCBwcmlvciB0byBjYWxsaW5nIGBkZXZpY2VfcmVnaXN0ZXIoKWAuIFRoaXMgZml4ZXMgcmVmZXJlbmNlIGNvdW50aW5nIGJhbGFuY2UgaW4gZXJyb3IvcmVsZWFzZSBwYXRocy4gXG5cblRoZSBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIGFsdGVyIGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgdXNhZ2UsIGJvdW5kcyBjaGVja3MsIG9yIGtlcm5lbC10by11c2VyIGluZm8gbGVha3MuIEFueSBsaWZlY3ljbGUgb3IgcmVmZXJlbmNlIGNvdW50aW5nIGVycm9ycyAoZS5nLiB1c2UtYWZ0ZXItZnJlZSwgcmVmY291bnQgdW5kZXJmbG93L292ZXJmbG93KSBhcmUgY292ZXJlZCBieSByZWZjb3VudF90IGNoZWNrcyBhbmQgc3RhbmRhcmQgS0FTQU4vTE9DS0RFUCBkZXRlY3RvcnMuIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW92ZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBpbmNyZW1lbnQgYHJlZmNvdW50X2luYyhcdTAwMjZuc2ltX2J1c19kZXZzKWAgZnJvbSBgbmV3X2RldmljZV9zdG9yZSgpYCBpbnRvIGBuc2ltX2J1c19kZXZfbmV3KClgIHByaW9yIHRvIGNhbGxpbmcgYGRldmljZV9yZWdpc3RlcigpYC4gVGhpcyBmaXhlcyByZWZlcmVuY2UgY291bnRpbmcgYmFsYW5jZSBpbiBlcnJvci9yZWxlYXNlIHBhdGhzLiBcblxuVGhlIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgYWx0ZXIgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZSB1c2FnZSwgYm91bmRzIGNoZWNrcywgb3Iga2VybmVsLXRvLXVzZXIgaW5mbyBsZWFrcy4gQW55IGxpZmVjeWNsZSBvciByZWZlcmVuY2UgY291bnRpbmcgZXJyb3JzIChlLmcuIHVzZS1hZnRlci1mcmVlLCByZWZjb3VudCB1bmRlcmZsb3cvb3ZlcmZsb3cpIGFyZSBjb3ZlcmVkIGJ5IHJlZmNvdW50X3QgY2hlY2tzIGFuZCBzdGFuZGFyZCBLQVNBTi9MT0NLREVQIGRldGVjdG9ycy4gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAzOjE0OjEwLjUyNzk3NDIwN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5MjE1Nzc3NjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVERFVlNJTVwiLFxuICAgIFwiREVCVUdfRlNcIixcbiAgICBcIklORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuc2ltX2Rydl9wcm9iZVwiLFxuICAgIFwibnNpbV9kcnZfcmVtb3ZlXCIsXG4gICAgXCJuc2ltX2Rydl9jb25maWd1cmVfdmZzXCIsXG4gICAgXCJuc2ltX2J1c19pbml0XCIsXG4gICAgXCJuc2ltX2J1c19leGl0XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb3ZlcyB0aGUgcmVmZXJlbmNlIGNvdW50IGluY3JlbWVudCBgcmVmY291bnRfaW5jKFxcdTAwMjZuc2ltX2J1c19kZXZzKWAgZnJvbSBgbmV3X2RldmljZV9zdG9yZSgpYCBpbnRvIGBuc2ltX2J1c19kZXZfbmV3KClgIHByaW9yIHRvIGNhbGxpbmcgYGRldmljZV9yZWdpc3RlcigpYC4gVGhpcyBmaXhlcyByZWZlcmVuY2UgY291bnRpbmcgYmFsYW5jZSBpbiBlcnJvci9yZWxlYXNlIHBhdGhzLiBcXG5cXG5UaGUgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBvciBhbHRlciBhbnkgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHVzYWdlLCBib3VuZHMgY2hlY2tzLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvIGxlYWtzLiBBbnkgbGlmZWN5Y2xlIG9yIHJlZmVyZW5jZSBjb3VudGluZyBlcnJvcnMgKGUuZy4gdXNlLWFmdGVyLWZyZWUsIHJlZmNvdW50IHVuZGVyZmxvdy9vdmVyZmxvdykgYXJlIGNvdmVyZWQgYnkgcmVmY291bnRfdCBjaGVja3MgYW5kIHN0YW5kYXJkIEtBU0FOL0xPQ0tERVAgZGV0ZWN0b3JzLiBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGp1c3RzIHRoZSBkZXZpY2UgcmVmZXJlbmNlIGNvdW50aW5nIGZvciBuZXRkZXZzaW0gYnVzIGRldmljZXMgYnkgbW92aW5nIHJlZmNvdW50X2luYyhcXHUwMDI2bnNpbV9idXNfZGV2cykgaW50byBuc2ltX2J1c19kZXZfbmV3KCkgYmVmb3JlIGRldmljZV9yZWdpc3RlcigpLCBmaXhpbmcgYSByZWZjb3VudCB1bmRlcmZsb3cgb24gZGV2aWNlIHJlZ2lzdHJhdGlvbiBmYWlsdXJlLiBOZXRkZXZzaW0gaXMgYSBzb2Z0d2FyZS1zaW11bGF0ZWQgbmV0d29yayBkZXZpY2UgZHJpdmVyIGZ1bGx5IHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAzOjE0OjEwLjUyNzk3OTkyN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3NTQ1OTU1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDc1ZTIyYzljZjg2ZTliNWVhNTM3NmIzOWU3YjAxYTE2YzYyYTQ3OWNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgMSAwMzoxNDowOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmNcXG5pbmRleCA1YzU1YzMwODQ4N2I0Li40MjZmYjQzOGI5MjIxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuY1xcbkBAIC0xOTQsNyArMTk0LDYgQEAgbmV3X2RldmljZV9zdG9yZShjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXFxuIFxcdFxcdGdvdG8gZXJyO1xcbiBcXHR9XFxuIFxcbi1cXHRyZWZjb3VudF9pbmMoXFx1MDAyNm5zaW1fYnVzX2RldnMpO1xcbiBcXHQvKiBBbGxvdyB1c2luZyBuc2ltX2J1c19kZXYgKi9cXG4gXFx0c21wX3N0b3JlX3JlbGVhc2UoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlaW5pdCwgdHJ1ZSk7XFxuIFxcbkBAIC00NjUsNiArNDY0LDcgQEAgbnNpbV9idXNfZGV2X25ldyh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBwb3J0X2NvdW50LCB1bnNpZ25lZCBpbnQgbnVtX3F1ZXVcXG4gXFx0LyogRGlzYWxsb3cgdXNpbmcgbnNpbV9idXNfZGV2ICovXFxuIFxcdHNtcF9zdG9yZV9yZWxlYXNlKFxcdTAwMjZuc2ltX2J1c19kZXYtXFx1MDAzZWluaXQsIGZhbHNlKTtcXG4gXFxuK1xcdHJlZmNvdW50X2luYyhcXHUwMDI2bnNpbV9idXNfZGV2cyk7XFxuIFxcdGVyciA9IGRldmljZV9yZWdpc3RlcihcXHUwMDI2bnNpbV9idXNfZGV2LVxcdTAwM2VkZXYpO1xcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRnb3RvIGVycl9uc2ltX2J1c19kZXZfaWRfZnJlZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDM6MTQ6MTIuMDAzOTI0NjQzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo0MTgyODA4OTE2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRERVZTSU1cIixcbiAgICBcIkRFQlVHX0ZTXCIsXG4gICAgXCJJTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnNpbV9kcnZfcHJvYmVcIixcbiAgICBcIm5zaW1fZHJ2X3JlbW92ZVwiLFxuICAgIFwibnNpbV9kcnZfY29uZmlndXJlX3Zmc1wiLFxuICAgIFwibnNpbV9idXNfaW5pdFwiLFxuICAgIFwibnNpbV9idXNfZXhpdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkanVzdHMgdGhlIGRldmljZSByZWZlcmVuY2UgY291bnRpbmcgZm9yIG5ldGRldnNpbSBidXMgZGV2aWNlcyBieSBtb3ZpbmcgcmVmY291bnRfaW5jKFxcdTAwMjZuc2ltX2J1c19kZXZzKSBpbnRvIG5zaW1fYnVzX2Rldl9uZXcoKSBiZWZvcmUgZGV2aWNlX3JlZ2lzdGVyKCksIGZpeGluZyBhIHJlZmNvdW50IHVuZGVyZmxvdyBvbiBkZXZpY2UgcmVnaXN0cmF0aW9uIGZhaWx1cmUuIE5ldGRldnNpbSBpcyBhIHNvZnR3YXJlLXNpbXVsYXRlZCBuZXR3b3JrIGRldmljZSBkcml2ZXIgZnVsbHkgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzVlMjJjOWNmODZlOWI1ZWE1Mzc2YjM5ZTdiMDFhMTZjNjJhNDc5Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDEgMDM6MTQ6MDggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmNcbmluZGV4IDVjNTVjMzA4NDg3YjQuLjQyNmZiNDM4YjkyMjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmNcbisrKyBiL2RyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuY1xuQEAgLTE5NCw3ICsxOTQsNiBAQCBuZXdfZGV2aWNlX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcbiBcdFx0Z290byBlcnI7XG4gXHR9XG4gXG4tXHRyZWZjb3VudF9pbmMoXHUwMDI2bnNpbV9idXNfZGV2cyk7XG4gXHQvKiBBbGxvdyB1c2luZyBuc2ltX2J1c19kZXYgKi9cbiBcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2Vpbml0LCB0cnVlKTtcbiBcbkBAIC00NjUsNiArNDY0LDcgQEAgbnNpbV9idXNfZGV2X25ldyh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBwb3J0X2NvdW50LCB1bnNpZ25lZCBpbnQgbnVtX3F1ZXVcbiBcdC8qIERpc2FsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqL1xuIFx0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2bnNpbV9idXNfZGV2LVx1MDAzZWluaXQsIGZhbHNlKTtcbiBcbitcdHJlZmNvdW50X2luYyhcdTAwMjZuc2ltX2J1c19kZXZzKTtcbiBcdGVyciA9IGRldmljZV9yZWdpc3RlcihcdTAwMjZuc2ltX2J1c19kZXYtXHUwMDNlZGV2KTtcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZXJyX25zaW1fYnVzX2Rldl9pZF9mcmVlO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDM6MTQ6MTIuMDAzOTI2MDIzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Njg4MDU5NDQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbiwgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBUaGlzIE5ldHdvcmsgRGV2aWNlIFNpbXVsYXRpb24gUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBwYXRjaCBhbmQgdGhlIGFzc29jaWF0ZWQgaW5zdHJ1Y3Rpb25zLiBNeSBmaXJzdCBtb3ZlIGlzIGFsd2F5cyB0byBhbmFseXplIHRoZSBkaWZmIGRpcmVjdGx5LiBPa2F5LCBpdCdzIG1vZGlmeWluZyBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jYC4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTm93IEkgbmVlZCB0byBncmFzcCB0aGUgY29udGV4dCBvZiB0aGUgbW9kaWZpY2F0aW9uLCBzbyBJJ2xsIHplcm8gaW4gb24gdGhhdCBgYnVzLmNgIGZpbGUuIEknbSBnb2luZyB0byBmb2N1cyBvbiBsaW5lcyBhcm91bmQgMTkwLTIxMCBhbmQgNDYwLTQ4MCDigJMgdGhvc2UgYXJlIHVzdWFsbHkgdGhlIGtleSBzZWN0aW9ucyBhcm91bmQgdGhlIGNoYW5nZSwgYW5kIGxpa2VseSB3aGVyZSB0aGUgYmVoYXZpb3Igb2YgdGhlIHBhdGNoIHdpbGwgYmVjb21lIGNsZWFyLiBJJ2xsIGFsc28gZ2xhbmNlIGF0IHRoZSBLY29uZmlnIGZpbGUgaW4gYGRyaXZlcnMvbmV0L25ldGRldnNpbS9gLiBUaGF0IGdpdmVzIG1lIHRoZSBjb21waWxhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgZm9yIHRoYXQgbW9kdWxlLCBhbHdheXMgZ29vZCB0byBrbm93LiBGaW5hbGx5LCBiZWZvcmUgSSBkZWNpZGUgb24gbmV4dCBzdGVwcywgSSdtIHRoaW5raW5nIEknbGwgbmVlZCB0byBydW4gc29tZSBhbmFseXNpcyB0b29scyB0byBtYWtlIHN1cmUgSSBhbSBjb21wbGV0ZWx5IGNsZWFyIG9uIHRoZSBpbXBsaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMDUsIk91dHB1dFRva2VucyI6MTE0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDM6MTQ6MTguODg0NTIzMTkzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzYxNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE4MDpcXHRcXHRcXHRwcl9lcnIoXFxcIkZvcm1hdCBmb3IgYWRkaW5nIG5ldyBkZXZpY2UgaXMgXFxcXFxcXCJpZCBwb3J0X2NvdW50IG51bV9xdWV1ZXNcXFxcXFxcIiAodWludCB1aW50IHVpbnQpLlxcXFxuXFxcIik7XFxuIDE4MTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMTgyOlxcdFxcdH1cXG4gMTgzOlxcdFxcbiAxODQ6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2bnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XFxuIDE4NTpcXHRcXHQvKiBQcmV2ZW50IHRvIHVzZSByZXNvdXJjZSBiZWZvcmUgaW5pdGlhbGl6YXRpb24uICovXFxuIDE4NjpcXHRcXHRpZiAoIXNtcF9sb2FkX2FjcXVpcmUoXFx1MDAyNm5zaW1fYnVzX2VuYWJsZSkpIHtcXG4gMTg3OlxcdFxcdFxcdGVyciA9IC1FQlVTWTtcXG4gMTg4OlxcdFxcdFxcdGdvdG8gZXJyO1xcbiAxODk6XFx0XFx0fVxcbiAxOTA6XFx0XFxuIDE5MTpcXHRcXHRuc2ltX2J1c19kZXYgPSBuc2ltX2J1c19kZXZfbmV3KGlkLCBwb3J0X2NvdW50LCBudW1fcXVldWVzKTtcXG4gMTkyOlxcdFxcdGlmIChJU19FUlIobnNpbV9idXNfZGV2KSkge1xcbiAxOTM6XFx0XFx0XFx0ZXJyID0gUFRSX0VSUihuc2ltX2J1c19kZXYpO1xcbiAxOTQ6XFx0XFx0XFx0Z290byBlcnI7XFxuIDE5NTpcXHRcXHR9XFxuIDE5NjpcXHRcXG4gMTk3OlxcdFxcdC8qIEFsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqL1xcbiAxOTg6XFx0XFx0c21wX3N0b3JlX3JlbGVhc2UoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlaW5pdCwgdHJ1ZSk7XFxuIDE5OTpcXHRcXG4gMjAwOlxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlbGlzdCwgXFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0KTtcXG4gMjAxOlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2bnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XFxuIDIwMjpcXHRcXG4gMjAzOlxcdFxcdHJldHVybiBjb3VudDtcXG4gMjA0OlxcdGVycjpcXG4gMjA1OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2bnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XFxuIDIwNjpcXHRcXHRyZXR1cm4gZXJyO1xcbiAyMDc6XFx0fVxcbiAyMDg6XFx0c3RhdGljIEJVU19BVFRSX1dPKG5ld19kZXZpY2UpO1xcbiAyMDk6XFx0XFxuIDIxMDpcXHRzdGF0aWMgdm9pZCBuc2ltX2J1c19kZXZfZGVsKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2Rldik7XFxuIDIxMTpcXHRcXG4gMjEyOlxcdHN0YXRpYyBzc2l6ZV90XFxuIDIxMzpcXHRkZWxfZGV2aWNlX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcXG4gMjE0OlxcdHtcXG4gMjE1OlxcdFxcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiwgKnRtcDtcXG4gMjE2OlxcdFxcdHVuc2lnbmVkIGludCBpZDtcXG4gMjE3OlxcdFxcdGludCBlcnI7XFxuIDIxODpcXHRcXG4gMjE5OlxcdFxcdGVyciA9IHNzY2FuZihidWYsIFxcXCIldVxcXCIsIFxcdTAwMjZpZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAzOjE0OjE4Ljg4NDYwMDM3M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0NTAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0NTA6XFx0XFxuIDQ1MTpcXHRcXHRuc2ltX2J1c19kZXYgPSBremFsbG9jX29iaigqbnNpbV9idXNfZGV2KTtcXG4gNDUyOlxcdFxcdGlmICghbnNpbV9idXNfZGV2KVxcbiA0NTM6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XFxuIDQ1NDpcXHRcXG4gNDU1OlxcdFxcdGVyciA9IGlkYV9hbGxvY19yYW5nZShcXHUwMDI2bnNpbV9idXNfZGV2X2lkcywgaWQsIGlkLCBHRlBfS0VSTkVMKTtcXG4gNDU2OlxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbiA0NTc6XFx0XFx0XFx0Z290byBlcnJfbnNpbV9idXNfZGV2X2ZyZWU7XFxuIDQ1ODpcXHRcXHRuc2ltX2J1c19kZXYtXFx1MDAzZWRldi5pZCA9IGVycjtcXG4gNDU5OlxcdFxcdG5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2LmJ1cyA9IFxcdTAwMjZuc2ltX2J1cztcXG4gNDYwOlxcdFxcdG5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2LnR5cGUgPSBcXHUwMDI2bnNpbV9idXNfZGV2X3R5cGU7XFxuIDQ2MTpcXHRcXHRuc2ltX2J1c19kZXYtXFx1MDAzZXBvcnRfY291bnQgPSBwb3J0X2NvdW50O1xcbiA0NjI6XFx0XFx0bnNpbV9idXNfZGV2LVxcdTAwM2VudW1fcXVldWVzID0gbnVtX3F1ZXVlcztcXG4gNDYzOlxcdFxcdG5zaW1fYnVzX2Rldi1cXHUwMDNlaW5pdGlhbF9uZXQgPSBjdXJyZW50LVxcdTAwM2Vuc3Byb3h5LVxcdTAwM2VuZXRfbnM7XFxuIDQ2NDpcXHRcXHQvKiBEaXNhbGxvdyB1c2luZyBuc2ltX2J1c19kZXYgKi9cXG4gNDY1OlxcdFxcdHNtcF9zdG9yZV9yZWxlYXNlKFxcdTAwMjZuc2ltX2J1c19kZXYtXFx1MDAzZWluaXQsIGZhbHNlKTtcXG4gNDY2OlxcdFxcbiA0Njc6XFx0XFx0cmVmY291bnRfaW5jKFxcdTAwMjZuc2ltX2J1c19kZXZzKTtcXG4gNDY4OlxcdFxcdGVyciA9IGRldmljZV9yZWdpc3RlcihcXHUwMDI2bnNpbV9idXNfZGV2LVxcdTAwM2VkZXYpO1xcbiA0Njk6XFx0XFx0aWYgKGVycilcXG4gNDcwOlxcdFxcdFxcdGdvdG8gZXJyX25zaW1fYnVzX2Rldl9pZF9mcmVlO1xcbiA0NzE6XFx0XFxuIDQ3MjpcXHRcXHRyZXR1cm4gbnNpbV9idXNfZGV2O1xcbiA0NzM6XFx0XFxuIDQ3NDpcXHRlcnJfbnNpbV9idXNfZGV2X2lkX2ZyZWU6XFxuIDQ3NTpcXHRcXHRpZGFfZnJlZShcXHUwMDI2bnNpbV9idXNfZGV2X2lkcywgbnNpbV9idXNfZGV2LVxcdTAwM2VkZXYuaWQpO1xcbiA0NzY6XFx0XFx0cHV0X2RldmljZShcXHUwMDI2bnNpbV9idXNfZGV2LVxcdTAwM2VkZXYpO1xcbiA0Nzc6XFx0XFx0bnNpbV9idXNfZGV2ID0gTlVMTDtcXG4gNDc4OlxcdGVycl9uc2ltX2J1c19kZXZfZnJlZTpcXG4gNDc5OlxcdFxcdGtmcmVlKG5zaW1fYnVzX2Rldik7XFxuIDQ4MDpcXHRcXHRyZXR1cm4gRVJSX1BUUihlcnIpO1xcbiA0ODE6XFx0fVxcbiA0ODI6XFx0XFxuIDQ4MzpcXHRzdGF0aWMgdm9pZCBuc2ltX2J1c19kZXZfZGVsKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldilcXG4gNDg0OlxcdHtcXG4gNDg1OlxcdFxcdC8qIERpc2FsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqL1xcbiA0ODY6XFx0XFx0c21wX3N0b3JlX3JlbGVhc2UoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlaW5pdCwgZmFsc2UpO1xcbiA0ODc6XFx0XFx0aWRhX2ZyZWUoXFx1MDAyNm5zaW1fYnVzX2Rldl9pZHMsIG5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2LmlkKTtcXG4gNDg4OlxcdFxcdGRldmljZV91bnJlZ2lzdGVyKFxcdTAwMjZuc2ltX2J1c19kZXYtXFx1MDAzZWRldik7XFxuIDQ4OTpcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAzOjE0OjE4Ljg4NDY0NjEzM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTExLCJFcnJvciI6InRoZSBmaWxlIGRvZXMgbm90IGV4aXN0IiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwidGhlIGZpbGUgZG9lcyBub3QgZXhpc3RcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDM6MTQ6MTguODg0Njc1NDAyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTE5MjM5MjIwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgaW5zdHJ1Y3Rpb25zLCBwcmVzZW50ZWQgYXMgYSBwZXJzb25hbCB0aG91Z2h0IHByb2Nlc3MgdGFpbG9yZWQgZm9yIGEgZmVsbG93IGV4cGVydDpcblxuKipGaW5kaW5nIHRoZSBORVRERVZTSU0gQ29uZmlndXJhdGlvbiBPcHRpb24qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB3b3JrLiBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIE5FVERFVlNJTS4gTXkgZmlyc3QgdGhvdWdodCBpcyBhbHdheXMgdG8gc3RhcnQgaW4gYGRyaXZlcnMvbmV0L2AuIFRoYXQncyB0aGUgb2J2aW91cyBwbGFjZSB0byBmaW5kIG5ldHdvcmtpbmcgZHJpdmVycyBhbmQgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9uLiBOb3csIHRoZSBuZXh0IHN0ZXAgaXMgdG8gbG9jYXRlIHRoZSBLY29uZmlnIGZpbGUgd2l0aGluIHRoYXQgZGlyZWN0b3J5LiBJJ20gYXNzdW1pbmcgdGhlcmUncyBvbmUg4oCTIGl0J3Mgc3RhbmRhcmQgcHJhY3RpY2UsIGFmdGVyIGFsbC5cblxuT25jZSBJIGhhdmUgdGhhdCBLY29uZmlnIGZpbGUsIEknbGwgdXNlIGBncmVwYCAob3IgbXkgcHJlZmVycmVkIHNlYXJjaCB0b29sKSB0byBsb29rIGRpcmVjdGx5IGZvciBcIk5FVERFVlNJTVwiIHdpdGhpbiB0aGUgZmlsZS4gVGhhdCBzaG91bGQgcGlucG9pbnQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gc3ltYm9sIGFuZCBob3BlZnVsbHkgZ2l2ZSBtZSB0aGUgY29udGV4dCBJIG5lZWQuIFRoaXMgaXMgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHByb2Nlc3MsIGFzc3VtaW5nIHRoZXJlJ3MgYSB1bmlxdWUgYW5kIHVuYW1iaWd1b3VzIHJlZmVyZW5jZSB0byBgTkVUREVWU0lNYC4gTGV0J3Mgc2VlIHdoYXQgd2UgZmluZCFcblxuXG4iLCJJbnB1dFRva2VucyI6NDA0NiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIiwicmVhZC1maWxlIiwicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDM6MTQ6MjQuMDc3MDY5MTg5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTY0ODk0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUREVWU0lNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9NjAyPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvaHlwZXJ2L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MDMtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDQ6Y29uZmlnIE5FVERFVlNJTVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAzOjE0OjI0LjIwMjcyMTg3N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE2NTUzNzkzOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRXhhbWluaW5nIE5ldHdvcmsgRHJpdmVyIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBuaXR0eS1ncml0dHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbmV0d29yayBkcml2ZXJzIGFyZSBjb25maWd1cmVkLCBzbyBsZXQncyBqdW1wIHJpZ2h0IGludG8gYGRyaXZlcnMvbmV0L0tjb25maWdgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgNjA0LiBJJ20gZ3Vlc3NpbmcgdGhhdCdzIHdoZXJlIGEgY3J1Y2lhbCBzZWN0aW9uIHJlbGF0ZWQgdG8gdGhlIGN1cnJlbnQgcHJvYmxlbSByZXNpZGVzLiBMZXQncyBzZWUgd2hhdCdzIGJlaW5nIGRlZmluZWQgdGhlcmUgYW5kIGhvdyBpdCBtaWdodCBpbmZsdWVuY2UgdGhlIG92ZXJhbGwgc3lzdGVtIHNldHVwLiBUaGlzIHNob3VsZCBnaXZlIG1lIHNvbWUgaW5zaWdodHMgaW50byB0aGUgYXZhaWxhYmxlIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcy4gSSBleHBlY3QgdG8gYmUgbG9va2luZyBmb3IgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHN5bWJvbCBvciBibG9jayB0aGF0IGFmZmVjdHMgdGhlIGJlaGF2aW9yIEkgYW0gZGVidWdnaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzkwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDM6MTQ6MjUuODU4MTAzMzQxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNjAwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNjAwOlxcdFxcbiA2MDE6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC90aHVuZGVyYm9sdC9LY29uZmlnXFxcIlxcbiA2MDI6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC9oeXBlcnYvS2NvbmZpZ1xcXCJcXG4gNjAzOlxcdFxcbiA2MDQ6XFx0Y29uZmlnIE5FVERFVlNJTVxcbiA2MDU6XFx0XFx0dHJpc3RhdGUgXFxcIlNpbXVsYXRlZCBuZXR3b3JraW5nIGRldmljZVxcXCJcXG4gNjA2OlxcdFxcdGRlcGVuZHMgb24gREVCVUdfRlNcXG4gNjA3OlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiA2MDg6XFx0XFx0ZGVwZW5kcyBvbiBQU0FNUExFIHx8IFBTQU1QTEU9blxcbiA2MDk6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19NT0NLIHx8IFBUUF8xNTg4X0NMT0NLX01PQ0s9blxcbiA2MTA6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuIDYxMTpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuIDYxMjpcXHRcXHRzZWxlY3QgTkVUX1NIQVBFUlxcbiA2MTM6XFx0XFx0aGVscFxcbiA2MTQ6XFx0XFx0ICBUaGlzIGRyaXZlciBpcyBhIGRldmVsb3BlciB0ZXN0aW5nIHRvb2wgYW5kIHNvZnR3YXJlIG1vZGVsIHRoYXQgY2FuXFxuIDYxNTpcXHRcXHQgIGJlIHVzZWQgdG8gdGVzdCB2YXJpb3VzIGNvbnRyb2wgcGF0aCBuZXR3b3JraW5nIEFQSXMsIGVzcGVjaWFsbHlcXG4gNjE2OlxcdFxcdCAgSFctb2ZmbG9hZCByZWxhdGVkLlxcbiA2MTc6XFx0XFxuIDYxODpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gNjE5OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgbmV0ZGV2c2ltLlxcbiA2MjA6XFx0XFxuIDYyMTpcXHRjb25maWcgTkVUX0ZBSUxPVkVSXFxuIDYyMjpcXHRcXHR0cmlzdGF0ZSBcXFwiRmFpbG92ZXIgZHJpdmVyXFxcIlxcbiA2MjM6XFx0XFx0c2VsZWN0IEZBSUxPVkVSXFxuIDYyNDpcXHRcXHRoZWxwXFxuIDYyNTpcXHRcXHQgIFRoaXMgcHJvdmlkZXMgYW4gYXV0b21hdGVkIGZhaWxvdmVyIG1lY2hhbmlzbSB2aWEgQVBJcyB0byBjcmVhdGVcXG4gNjI2OlxcdFxcdCAgYW5kIGRlc3Ryb3kgYSBmYWlsb3ZlciBtYXN0ZXIgbmV0ZGV2IGFuZCBtYW5hZ2VzIGEgcHJpbWFyeSBhbmRcXG4gNjI3OlxcdFxcdCAgc3RhbmRieSBzbGF2ZSBuZXRkZXZzIHRoYXQgZ2V0IHJlZ2lzdGVyZWQgdmlhIHRoZSBnZW5lcmljIGZhaWxvdmVyXFxuIDYyODpcXHRcXHQgIGluZnJhc3RydWN0dXJlLiBUaGlzIGNhbiBiZSB1c2VkIGJ5IHBhcmF2aXJ0dWFsIGRyaXZlcnMgdG8gZW5hYmxlXFxuIDYyOTpcXHRcXHQgIGFuIGFsdGVybmF0ZSBsb3cgbGF0ZW5jeSBkYXRhcGF0aC4gSXQgYWxzbyBlbmFibGVzIGxpdmUgbWlncmF0aW9uIG9mXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAzOjE0OjI1Ljg1ODE4MDExMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjg2Nzg5NDg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgbmV0ZGV2c2ltYCBjb2RlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVuZGFtZW50YWwgbWVjaGFuaWNzLCBzcGVjaWZpY2FsbHkgaG93IHRoaXMgc2ltdWxhdGlvbiBlbnZpcm9ubWVudCBtb2RlbHMgbmV0d29yayBkZXZpY2VzLiBNeSBmb2N1cyBpcyBvbiBkZXZpY2UgY3JlYXRpb24gYW5kIHRoZSByb2xlIG9mIGBuc2ltX2J1c19kZXZzYC4gSSdsbCBzdGFydCBieSBkaWdnaW5nIGludG8gdGhlIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2AgZGlyZWN0b3J5LlxuXG4qKkRpc3NlY3RpbmcgbmV0ZGV2c2ltOiBUaGUgQ29yZSBvZiBEZXZpY2UgQ3JlYXRpb24qKlxuXG5NeSBpbW1lZGlhdGUgcGxhbiBpcyB0byB1c2UgYGdyZXBgIHRvIHF1aWNrbHkgaWRlbnRpZnkga2V5IGZ1bmN0aW9ucyBhbmQgZGF0YSBzdHJ1Y3R1cmVzLiBJJ20gZ29pbmcgdG8gc2VhcmNoIGZvciBgbnNpbV9idXNfZGV2X25ld2AgYW5kIGBuc2ltX2J1c19kZXZzYC4gRmluZGluZyBgbnNpbV9idXNfZGV2X25ld2Agd2lsbCBwcm9iYWJseSBsZWFkIG1lIHN0cmFpZ2h0IHRvIHRoZSBkZXZpY2UgaW5zdGFudGlhdGlvbiBwcm9jZXNzOyB0aGF0J3Mgd2hlcmUgdGhlIG5ldyBkZXZpY2VzIGFyZSBjcmVhdGVkLiBUaGVuLCBleGFtaW5pbmcgYG5zaW1fYnVzX2RldnNgIHdpbGwgcmV2ZWFsIGhvdyB0aGVzZSBkZXZpY2VzIGFyZSBtYW5hZ2VkLCB3aGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgdXNlZCwgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgYnJvYWRlciBzaW11bGF0ZWQgYnVzIGFyY2hpdGVjdHVyZSB3aXRoaW4gbmV0ZGV2c2ltLiBUaGlzIHNob3VsZCBnaXZlIG1lIHRoZSBlbnRyeSBwb2ludCBpbnRvIHRoaXMgc3Vic3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDUwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwMzoxNDoyOC41NDQ5NzE2ODhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MzI3Mzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5zaW1fYnVzX2RldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTE3LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxODpzdGF0aWMgREVGSU5FX0lEQShuc2ltX2J1c19kZXZfaWRzKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTk6c3RhdGljIExJU1RfSEVBRChuc2ltX2J1c19kZXZfbGlzdCk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjIwOnN0YXRpYyBERUZJTkVfTVVURVgobnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTIxLXN0YXRpYyBib29sIG5zaW1fYnVzX2VuYWJsZTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MjI6c3RhdGljIHJlZmNvdW50X3QgbnNpbV9idXNfZGV2czsgLyogSW5jbHVkaW5nIHRoZSBidXMgaXRzZWxmLiAqL1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoyMzpzdGF0aWMgREVDTEFSRV9DT01QTEVUSU9OKG5zaW1fYnVzX2RldnNfcmVsZWFzZWQpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0yNC1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MjU6c3RhdGljIHN0cnVjdCBuc2ltX2J1c19kZXYgKnRvX25zaW1fYnVzX2RldihzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTI2LXtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6Mjc6XFx0cmV0dXJuIGNvbnRhaW5lcl9vZihkZXYsIHN0cnVjdCBuc2ltX2J1c19kZXYsIGRldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTI4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz0zMD1zdGF0aWMgc3NpemVfdFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzozMTpuc2ltX2J1c19kZXZfbnVtdmZzX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTMyLVxcdFxcdFxcdCAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTMzLXtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MzQ6XFx0c3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2ID0gdG9fbnNpbV9idXNfZGV2KGRldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTM1LVxcdHVuc2lnbmVkIGludCBudW1fdmZzO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQ0LVxcdGlmIChkZXZfZ2V0X2RydmRhdGEoZGV2KSlcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDU6XFx0XFx0cmV0ID0gbnNpbV9kcnZfY29uZmlndXJlX3Zmcyhuc2ltX2J1c19kZXYsIG51bV92ZnMpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00Ni1cXHRkZXZpY2VfdW5sb2NrKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM9NTE9c3RhdGljIHNzaXplX3RcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NTI6bnNpbV9idXNfZGV2X251bXZmc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTMtXFx0XFx0XFx0IHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTU0LXtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NTU6XFx0c3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2ID0gdG9fbnNpbV9idXNfZGV2KGRldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTU2LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo1NzpcXHRyZXR1cm4gc3ByaW50ZihidWYsIFxcXCIldVxcXFxuXFxcIiwgbnNpbV9idXNfZGV2LVxcdTAwM2VudW1fdmZzKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTgtfVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy01OS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NjA6c3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIG5zaW1fYnVzX2Rldl9udW12ZnNfYXR0ciA9XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjYxOlxcdF9fQVRUUihzcmlvdl9udW12ZnMsIDA2NjQsIG5zaW1fYnVzX2Rldl9udW12ZnNfc2hvdyxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NjI6XFx0ICAgICAgIG5zaW1fYnVzX2Rldl9udW12ZnNfc3RvcmUpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy02My1cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz02NT1uZXdfcG9ydF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTY3LXtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6Njg6XFx0c3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2ID0gdG9fbnNpbV9idXNfZGV2KGRldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTY5LVxcdHU4IGV0aF9hZGRyW0VUSF9BTEVOXSA9IHt9O1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTczLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo3NDpcXHQvKiBQcmV2ZW50IHRvIHVzZSBuc2ltX2J1c19kZXYgYmVmb3JlIGluaXRpYWxpemF0aW9uLiAqL1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo3NTpcXHRpZiAoIXNtcF9sb2FkX2FjcXVpcmUoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlaW5pdCkpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTc2LVxcdFxcdHJldHVybiAtRUJVU1k7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtOTUtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjk2OlxcdHJldCA9IG5zaW1fZHJ2X3BvcnRfYWRkKG5zaW1fYnVzX2RldiwgTlNJTV9ERVZfUE9SVF9UWVBFX1BGLCBwb3J0X2luZGV4LFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy05Ny1cXHRcXHRcXHRcXHRhZGRyX3NldCA/IGV0aF9hZGRyIDogTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTAwLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxMDE6c3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIG5zaW1fYnVzX2Rldl9uZXdfcG9ydF9hdHRyID0gX19BVFRSX1dPKG5ld19wb3J0KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTAyLVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTEwND1kZWxfcG9ydF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTEwNi17XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjEwNzpcXHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYgPSB0b19uc2ltX2J1c19kZXYoZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTA4LVxcdHVuc2lnbmVkIGludCBwb3J0X2luZGV4O1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTExMC1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTExOlxcdC8qIFByZXZlbnQgdG8gdXNlIG5zaW1fYnVzX2RldiBiZWZvcmUgaW5pdGlhbGl6YXRpb24uICovXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjExMjpcXHRpZiAoIXNtcF9sb2FkX2FjcXVpcmUoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlaW5pdCkpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTExMy1cXHRcXHRyZXR1cm4gLUVCVVNZO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTExNy1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTE4OlxcdHJldCA9IG5zaW1fZHJ2X3BvcnRfZGVsKG5zaW1fYnVzX2RldiwgTlNJTV9ERVZfUE9SVF9UWVBFX1BGLCBwb3J0X2luZGV4KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTE5LVxcdHJldHVybiByZXQgPyByZXQgOiBjb3VudDtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xMjEtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjEyMjpzdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgbnNpbV9idXNfZGV2X2RlbF9wb3J0X2F0dHIgPSBfX0FUVFJfV08oZGVsX3BvcnQpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xMjMtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjEyNDpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqbnNpbV9idXNfZGV2X2F0dHJzW10gPSB7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjEyNTpcXHRcXHUwMDI2bnNpbV9idXNfZGV2X251bXZmc19hdHRyLmF0dHIsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjEyNjpcXHRcXHUwMDI2bnNpbV9idXNfZGV2X25ld19wb3J0X2F0dHIuYXR0cixcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTI3OlxcdFxcdTAwMjZuc2ltX2J1c19kZXZfZGVsX3BvcnRfYXR0ci5hdHRyLFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xMjgtXFx0TlVMTCxcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xMzAtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjEzMTpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBuc2ltX2J1c19kZXZfYXR0cl9ncm91cCA9IHtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTMyOlxcdC5hdHRycyA9IG5zaW1fYnVzX2Rldl9hdHRycyxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTMzLX07XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTEzNC1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTM1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICpuc2ltX2J1c19kZXZfYXR0cl9ncm91cHNbXSA9IHtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTM2OlxcdFxcdTAwMjZuc2ltX2J1c19kZXZfYXR0cl9ncm91cCxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTM3LVxcdE5VTEwsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTM5LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxNDA6c3RhdGljIHZvaWQgbnNpbV9idXNfZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xNDEte1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxNDI6XFx0c3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2O1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xNDMtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE0NDpcXHRuc2ltX2J1c19kZXYgPSBjb250YWluZXJfb2YoZGV2LCBzdHJ1Y3QgbnNpbV9idXNfZGV2LCBkZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxNDU6XFx0a2ZyZWUobnNpbV9idXNfZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTQ2OlxcdGlmIChyZWZjb3VudF9kZWNfYW5kX3Rlc3QoXFx1MDAyNm5zaW1fYnVzX2RldnMpKVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxNDc6XFx0XFx0Y29tcGxldGUoXFx1MDAyNm5zaW1fYnVzX2RldnNfcmVsZWFzZWQpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xNDgtfVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xNDktXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE1MDpzdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV90eXBlIG5zaW1fYnVzX2Rldl90eXBlID0ge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxNTE6XFx0Lmdyb3VwcyA9IG5zaW1fYnVzX2Rldl9hdHRyX2dyb3VwcyxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTUyOlxcdC5yZWxlYXNlID0gbnNpbV9idXNfZGV2X3JlbGVhc2UsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTE1My19O1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xNTQtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE1NTpzdGF0aWMgc3RydWN0IG5zaW1fYnVzX2RldiAqXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE1Njpuc2ltX2J1c19kZXZfbmV3KHVuc2lnbmVkIGludCBpZCwgdW5zaWduZWQgaW50IHBvcnRfY291bnQsIHVuc2lnbmVkIGludCBudW1fcXVldWVzKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTU3LVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTE1OT1uZXdfZGV2aWNlX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xNjEtXFx0dW5zaWduZWQgaW50IGlkLCBwb3J0X2NvdW50LCBudW1fcXVldWVzO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxNjI6XFx0c3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2O1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xNjMtXFx0aW50IGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xODMtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE4NDpcXHRtdXRleF9sb2NrKFxcdTAwMjZuc2ltX2J1c19kZXZfbGlzdF9sb2NrKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTg1LVxcdC8qIFByZXZlbnQgdG8gdXNlIHJlc291cmNlIGJlZm9yZSBpbml0aWFsaXphdGlvbi4gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xOTAtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE5MTpcXHRuc2ltX2J1c19kZXYgPSBuc2ltX2J1c19kZXZfbmV3KGlkLCBwb3J0X2NvdW50LCBudW1fcXVldWVzKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTkyOlxcdGlmIChJU19FUlIobnNpbV9idXNfZGV2KSkge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxOTM6XFx0XFx0ZXJyID0gUFRSX0VSUihuc2ltX2J1c19kZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xOTQtXFx0XFx0Z290byBlcnI7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTk2LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxOTc6XFx0LyogQWxsb3cgdXNpbmcgbnNpbV9idXNfZGV2ICovXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE5ODpcXHRzbXBfc3RvcmVfcmVsZWFzZShcXHUwMDI2bnNpbV9idXNfZGV2LVxcdTAwM2Vpbml0LCB0cnVlKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTk5LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoyMDA6XFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2bnNpbV9idXNfZGV2LVxcdTAwM2VsaXN0LCBcXHUwMDI2bnNpbV9idXNfZGV2X2xpc3QpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoyMDE6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZuc2ltX2J1c19kZXZfbGlzdF9sb2NrKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjAyLVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTIwNC1lcnI6XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjIwNTpcXHRtdXRleF91bmxvY2soXFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0X2xvY2spO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0yMDYtXFx0cmV0dXJuIGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz0yMDg9c3RhdGljIEJVU19BVFRSX1dPKG5ld19kZXZpY2UpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0yMDktXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjIxMDpzdGF0aWMgdm9pZCBuc2ltX2J1c19kZXZfZGVsKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2Rldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTIxMS1cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz0yMTM9ZGVsX2RldmljZV9zdG9yZShjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTIxNC17XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjIxNTpcXHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsICp0bXA7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTIxNi1cXHR1bnNpZ25lZCBpbnQgaWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjMyLVxcdGVyciA9IC1FTk9FTlQ7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjIzMzpcXHRtdXRleF9sb2NrKFxcdTAwMjZuc2ltX2J1c19kZXZfbGlzdF9sb2NrKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjM0LVxcdC8qIFByZXZlbnQgdG8gdXNlIHJlc291cmNlIGJlZm9yZSBpbml0aWFsaXphdGlvbi4gKi9cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjM1LVxcdGlmICghc21wX2xvYWRfYWNxdWlyZShcXHUwMDI2bnNpbV9idXNfZW5hYmxlKSkge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoyMzY6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZuc2ltX2J1c19kZXZfbGlzdF9sb2NrKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjM3LVxcdFxcdHJldHVybiAtRUJVU1k7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTIzOC1cXHR9XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjIzOTpcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobnNpbV9idXNfZGV2LCB0bXAsIFxcdTAwMjZuc2ltX2J1c19kZXZfbGlzdCwgbGlzdCkge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoyNDA6XFx0XFx0aWYgKG5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2LmlkICE9IGlkKVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0yNDEtXFx0XFx0XFx0Y29udGludWU7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjI0MjpcXHRcXHRsaXN0X2RlbChcXHUwMDI2bnNpbV9idXNfZGV2LVxcdTAwM2VsaXN0KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MjQzOlxcdFxcdG5zaW1fYnVzX2Rldl9kZWwobnNpbV9idXNfZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjQ0LVxcdFxcdGVyciA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjQ2LVxcdH1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MjQ3OlxcdG11dGV4X3VubG9jayhcXHUwMDI2bnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTI0OC1cXHRyZXR1cm4gIWVyciA/IGNvdW50IDogZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTQxNT1zdGF0aWMgaW50IG5zaW1fYnVzX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDE2LXtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDE3OlxcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiA9IHRvX25zaW1fYnVzX2RldihkZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00MTgtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQxOTpcXHRyZXR1cm4gbnNpbV9kcnZfcHJvYmUobnNpbV9idXNfZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDIwLX1cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz00MjI9c3RhdGljIHZvaWQgbnNpbV9idXNfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDIzLXtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDI0OlxcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiA9IHRvX25zaW1fYnVzX2RldihkZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00MjUtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQyNjpcXHRuc2ltX2Rydl9yZW1vdmUobnNpbV9idXNfZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDI3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz00Mjk9c3RhdGljIGludCBuc2ltX251bV92ZihzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQzMC17XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQzMTpcXHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYgPSB0b19uc2ltX2J1c19kZXYoZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDMyLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0MzM6XFx0cmV0dXJuIG5zaW1fYnVzX2Rldi1cXHUwMDNlbnVtX3ZmcztcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDM0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz00MzY9c3RhdGljIGNvbnN0IHN0cnVjdCBidXNfdHlwZSBuc2ltX2J1cyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00NDQtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ0NTpzdGF0aWMgc3RydWN0IG5zaW1fYnVzX2RldiAqXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ0Njpuc2ltX2J1c19kZXZfbmV3KHVuc2lnbmVkIGludCBpZCwgdW5zaWduZWQgaW50IHBvcnRfY291bnQsIHVuc2lnbmVkIGludCBudW1fcXVldWVzKVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00NDcte1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NDg6XFx0c3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2O1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00NDktXFx0aW50IGVycjtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDUwLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NTE6XFx0bnNpbV9idXNfZGV2ID0ga3phbGxvY19vYmooKm5zaW1fYnVzX2Rldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ1MjpcXHRpZiAoIW5zaW1fYnVzX2RldilcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDUzLVxcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00NTQtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ1NTpcXHRlcnIgPSBpZGFfYWxsb2NfcmFuZ2UoXFx1MDAyNm5zaW1fYnVzX2Rldl9pZHMsIGlkLCBpZCwgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQ1Ni1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDU3OlxcdFxcdGdvdG8gZXJyX25zaW1fYnVzX2Rldl9mcmVlO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NTg6XFx0bnNpbV9idXNfZGV2LVxcdTAwM2VkZXYuaWQgPSBlcnI7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ1OTpcXHRuc2ltX2J1c19kZXYtXFx1MDAzZWRldi5idXMgPSBcXHUwMDI2bnNpbV9idXM7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ2MDpcXHRuc2ltX2J1c19kZXYtXFx1MDAzZWRldi50eXBlID0gXFx1MDAyNm5zaW1fYnVzX2Rldl90eXBlO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NjE6XFx0bnNpbV9idXNfZGV2LVxcdTAwM2Vwb3J0X2NvdW50ID0gcG9ydF9jb3VudDtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDYyOlxcdG5zaW1fYnVzX2Rldi1cXHUwMDNlbnVtX3F1ZXVlcyA9IG51bV9xdWV1ZXM7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ2MzpcXHRuc2ltX2J1c19kZXYtXFx1MDAzZWluaXRpYWxfbmV0ID0gY3VycmVudC1cXHUwMDNlbnNwcm94eS1cXHUwMDNlbmV0X25zO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NjQ6XFx0LyogRGlzYWxsb3cgdXNpbmcgbnNpbV9idXNfZGV2ICovXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ2NTpcXHRzbXBfc3RvcmVfcmVsZWFzZShcXHUwMDI2bnNpbV9idXNfZGV2LVxcdTAwM2Vpbml0LCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQ2Ni1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDY3OlxcdHJlZmNvdW50X2luYyhcXHUwMDI2bnNpbV9idXNfZGV2cyk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ2ODpcXHRlcnIgPSBkZXZpY2VfcmVnaXN0ZXIoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDY5LVxcdGlmIChlcnIpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ3MDpcXHRcXHRnb3RvIGVycl9uc2ltX2J1c19kZXZfaWRfZnJlZTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDcxLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NzI6XFx0cmV0dXJuIG5zaW1fYnVzX2RldjtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDczLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NzQ6ZXJyX25zaW1fYnVzX2Rldl9pZF9mcmVlOlxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NzU6XFx0aWRhX2ZyZWUoXFx1MDAyNm5zaW1fYnVzX2Rldl9pZHMsIG5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2LmlkKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDc2OlxcdHB1dF9kZXZpY2UoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDc3OlxcdG5zaW1fYnVzX2RldiA9IE5VTEw7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ3ODplcnJfbnNpbV9idXNfZGV2X2ZyZWU6XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ3OTpcXHRrZnJlZShuc2ltX2J1c19kZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00ODAtXFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00ODItXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ4MzpzdGF0aWMgdm9pZCBuc2ltX2J1c19kZXZfZGVsKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldilcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDg0LXtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDg1OlxcdC8qIERpc2FsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqL1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0ODY6XFx0c21wX3N0b3JlX3JlbGVhc2UoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlaW5pdCwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0ODc6XFx0aWRhX2ZyZWUoXFx1MDAyNm5zaW1fYnVzX2Rldl9pZHMsIG5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2LmlkKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDg4OlxcdGRldmljZV91bnJlZ2lzdGVyKFxcdTAwMjZuc2ltX2J1c19kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQ4OS19XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM9NDk3PWludCBuc2ltX2J1c19pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTA2LVxcdFxcdGdvdG8gZXJyX2J1c191bnJlZ2lzdGVyO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo1MDc6XFx0cmVmY291bnRfc2V0KFxcdTAwMjZuc2ltX2J1c19kZXZzLCAxKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTA4LVxcdC8qIEFsbG93IHVzaW5nIHJlc291cmNlcyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTUxNz12b2lkIG5zaW1fYnVzX2V4aXQodm9pZClcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTE4LXtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NTE5OlxcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiwgKnRtcDtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTIwLVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTUyMi1cXHRzbXBfc3RvcmVfcmVsZWFzZShcXHUwMDI2bnNpbV9idXNfZW5hYmxlLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjUyMzpcXHRpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KFxcdTAwMjZuc2ltX2J1c19kZXZzKSlcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NTI0OlxcdFxcdGNvbXBsZXRlKFxcdTAwMjZuc2ltX2J1c19kZXZzX3JlbGVhc2VkKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTI1LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo1MjY6XFx0bXV0ZXhfbG9jayhcXHUwMDI2bnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjUyNzpcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobnNpbV9idXNfZGV2LCB0bXAsIFxcdTAwMjZuc2ltX2J1c19kZXZfbGlzdCwgbGlzdCkge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo1Mjg6XFx0XFx0bGlzdF9kZWwoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlbGlzdCk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjUyOTpcXHRcXHRuc2ltX2J1c19kZXZfZGVsKG5zaW1fYnVzX2Rldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTUzMC1cXHR9XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjUzMTpcXHRtdXRleF91bmxvY2soXFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0X2xvY2spO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy01MzItXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjUzMzpcXHR3YWl0X2Zvcl9jb21wbGV0aW9uKFxcdTAwMjZuc2ltX2J1c19kZXZzX3JlbGVhc2VkKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTM0LVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTYwPXVuc2lnbmVkIGludCBuc2ltX2Rldl9nZXRfdmZzKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtNjQtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjY1OlxcdHJldHVybiBuc2ltX2Rldi1cXHUwMDNlbnNpbV9idXNfZGV2LVxcdTAwM2VudW1fdmZzO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy02Ni19XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM9Njg9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6Njk6bnNpbV9idXNfZGV2X3NldF92ZnMoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2LCB1bnNpZ25lZCBpbnQgbnVtX3ZmcylcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtNzAte1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy03MS1cXHRydG5sX2xvY2soKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6NzI6XFx0bnNpbV9idXNfZGV2LVxcdTAwM2VudW1fdmZzID0gbnVtX3ZmcztcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtNzMtXFx0cnRubF91bmxvY2soKTtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYz0yMjg9c3RhdGljIGludCBuc2ltX2Rldl9kZWJ1Z2ZzX2luaXQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0yMzItXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjIzMzpcXHRzcHJpbnRmKGRldl9kZGlyX25hbWUsIERSVl9OQU1FIFxcXCIldVxcXCIsIG5zaW1fZGV2LVxcdTAwM2Vuc2ltX2J1c19kZXYtXFx1MDAzZWRldi5pZCk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTIzNC1cXHRuc2ltX2Rldi1cXHUwMDNlZGRpciA9IGRlYnVnZnNfY3JlYXRlX2RpcihkZXZfZGRpcl9uYW1lLCBuc2ltX2Rldl9kZGlyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYz0zMzI9c3RhdGljIGludCBuc2ltX2Rldl9wb3J0X2RlYnVnZnNfaW5pdChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTMzNC17XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjMzNTpcXHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYgPSBuc2ltX2Rldi1cXHUwMDNlbnNpbV9idXNfZGV2O1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0zMzYtXFx0dW5zaWduZWQgaW50IHBvcnRfaW5kZXggPSBuc2ltX2Rldl9wb3J0LVxcdTAwM2Vwb3J0X2luZGV4O1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTM0NS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MzQ2OlxcdHNwcmludGYoZGV2X2xpbmtfbmFtZSwgXFxcIi4uLy4uLy4uL1xcXCIgRFJWX05BTUUgXFxcIiV1XFxcIiwgbnNpbV9idXNfZGV2LVxcdTAwM2VkZXYuaWQpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0zNDctXFx0aWYgKG5zaW1fZGV2X3BvcnRfaXNfdmYobnNpbV9kZXZfcG9ydCkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYz0xNTA2PXN0YXRpYyBpbnQgbnNpbV9kZXZfcmVsb2FkX2NyZWF0ZShzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1MDgte1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNTA5OlxcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiA9IG5zaW1fZGV2LVxcdTAwM2Vuc2ltX2J1c19kZXY7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1MTAtXFx0c3RydWN0IGRldmxpbmsgKmRldmxpbms7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTU0Ni1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTU0NzpcXHRlcnIgPSBuc2ltX2Rldl9wb3J0X2FkZF9hbGwobnNpbV9kZXYsIG5zaW1fYnVzX2Rldi1cXHUwMDNlcG9ydF9jb3VudCk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1NDgtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNTcyLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNTczOmludCBuc2ltX2Rydl9wcm9iZShzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1NzQte1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1NzktXFx0ZGV2bGluayA9IGRldmxpbmtfYWxsb2NfbnMoXFx1MDAyNm5zaW1fZGV2X2Rldmxpbmtfb3BzLCBzaXplb2YoKm5zaW1fZGV2KSxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTU4MDpcXHRcXHRcXHRcXHQgbnNpbV9idXNfZGV2LVxcdTAwM2Vpbml0aWFsX25ldCwgXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTU4MS1cXHRpZiAoIWRldmxpbmspXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTU4NC1cXHRuc2ltX2RldiA9IGRldmxpbmtfcHJpdihkZXZsaW5rKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTU4NTpcXHRuc2ltX2Rldi1cXHUwMDNlbnNpbV9idXNfZGV2ID0gbnNpbV9idXNfZGV2O1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNTg2LVxcdG5zaW1fZGV2LVxcdTAwM2Vzd2l0Y2hfaWQuaWRfbGVuID0gc2l6ZW9mKG5zaW1fZGV2LVxcdTAwM2Vzd2l0Y2hfaWQuaWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1OTctXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE1OTg6XFx0ZGV2X3NldF9kcnZkYXRhKFxcdTAwMjZuc2ltX2J1c19kZXYtXFx1MDAzZWRldiwgbnNpbV9kZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNTk5LVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE2NTUtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE2NTY6XFx0ZXJyID0gbnNpbV9kZXZfcG9ydF9hZGRfYWxsKG5zaW1fZGV2LCBuc2ltX2J1c19kZXYtXFx1MDAzZXBvcnRfY291bnQpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNjU3LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTY5MS1cXHRkZXZsaW5rX2ZyZWUoZGV2bGluayk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE2OTI6XFx0ZGV2X3NldF9kcnZkYXRhKFxcdTAwMjZuc2ltX2J1c19kZXYtXFx1MDAzZWRldiwgTlVMTCk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE2OTMtXFx0cmV0dXJuIGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYz0xNjk2PXN0YXRpYyB2b2lkIG5zaW1fZGV2X3JlbG9hZF9kZXN0cm95KHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTcwNC1cXHRpZiAobnNpbV9kZXZfZ2V0X3Zmcyhuc2ltX2RldikpIHtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTcwNTpcXHRcXHRuc2ltX2J1c19kZXZfc2V0X3Zmcyhuc2ltX2Rldi1cXHUwMDNlbnNpbV9idXNfZGV2LCAwKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTcwNi1cXHRcXHRpZiAobnNpbV9lc3dfbW9kZV9pc19zd2l0Y2hkZXYobnNpbV9kZXYpKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3MTgtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE3MTk6dm9pZCBuc2ltX2Rydl9yZW1vdmUoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2KVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzIwLXtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTcyMTpcXHRzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2ID0gZGV2X2dldF9kcnZkYXRhKFxcdTAwMjZuc2ltX2J1c19kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3MjItXFx0c3RydWN0IGRldmxpbmsgKmRldmxpbmsgPSBwcml2X3RvX2RldmxpbmsobnNpbV9kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3MzctXFx0ZGV2bGlua19mcmVlKGRldmxpbmspO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNzM4OlxcdGRldl9zZXRfZHJ2ZGF0YShcXHUwMDI2bnNpbV9idXNfZGV2LVxcdTAwM2VkZXYsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzM5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYz0xNzQyPV9fbnNpbV9kZXZfcG9ydF9sb29rdXAoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldiwgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzUzLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNzU0OmludCBuc2ltX2Rydl9wb3J0X2FkZChzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsIGVudW0gbnNpbV9kZXZfcG9ydF90eXBlIHR5cGUsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3NTUtXFx0XFx0ICAgICAgdW5zaWduZWQgaW50IHBvcnRfaW5kZXgsIHU4IHBlcm1fYWRkcltFVEhfQUxFTl0pXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3NTYte1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNzU3OlxcdHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTc1OC1cXHRpbnQgZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3NjgtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE3Njk6aW50IG5zaW1fZHJ2X3BvcnRfZGVsKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiwgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTc3MC1cXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgcG9ydF9pbmRleClcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTc3MS17XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE3NzI6XFx0c3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldiA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2bnNpbV9idXNfZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzczLVxcdHN0cnVjdCBuc2ltX2Rldl9wb3J0ICpuc2ltX2Rldl9wb3J0O1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3ODUtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE3ODY6aW50IG5zaW1fZHJ2X2NvbmZpZ3VyZV92ZnMoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2LFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzg3LVxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBudW1fdmZzKVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzg4LXtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTc4OTpcXHRzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2ID0gZGV2X2dldF9kcnZkYXRhKFxcdTAwMjZuc2ltX2J1c19kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3OTAtXFx0c3RydWN0IGRldmxpbmsgKmRldmxpbmsgPSBwcml2X3RvX2RldmxpbmsobnNpbV9kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3OTMtXFx0ZGV2bF9sb2NrKGRldmxpbmspO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNzk0OlxcdGlmIChuc2ltX2J1c19kZXYtXFx1MDAzZW51bV92ZnMgPT0gbnVtX3ZmcylcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTc5NS1cXHRcXHRnb3RvIGV4aXRfdW5sb2NrO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNzk2OlxcdGlmIChuc2ltX2J1c19kZXYtXFx1MDAzZW51bV92ZnMgXFx1MDAyNlxcdTAwMjYgbnVtX3Zmcykge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzk3LVxcdFxcdHJldCA9IC1FQlVTWTtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xODA0LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxODA1OlxcdG5zaW1fYnVzX2Rldl9zZXRfdmZzKG5zaW1fYnVzX2RldiwgbnVtX3Zmcyk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE4MDYtXFx0aWYgKG5zaW1fZXN3X21vZGVfaXNfc3dpdGNoZGV2KG5zaW1fZGV2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE4MDktXFx0XFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxODEwOlxcdFxcdFxcdFxcdG5zaW1fYnVzX2Rldl9zZXRfdmZzKG5zaW1fYnVzX2RldiwgMCk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE4MTEtXFx0XFx0XFx0XFx0Z290byBleGl0X3VubG9jaztcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmM9OTY9bnNpbV9nZXRfY2hhbm5lbHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGV0aHRvb2xfY2hhbm5lbHMgKmNoKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2V0aHRvb2wuYy05OS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZXRodG9vbC5jOjEwMDpcXHRjaC1cXHUwMDNlbWF4X2NvbWJpbmVkID0gbnMtXFx1MDAzZW5zaW1fYnVzX2Rldi1cXHUwMDNlbnVtX3F1ZXVlcztcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZXRodG9vbC5jLTEwMS1cXHRjaC1cXHUwMDNlY29tYmluZWRfY291bnQgPSBucy1cXHUwMDNlZXRodG9vbC5jaGFubmVscztcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmM9MjM4PXZvaWQgbnNpbV9ldGh0b29sX2luaXQoc3RydWN0IG5ldGRldnNpbSAqbnMpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZXRodG9vbC5jLTI1MS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZXRodG9vbC5jOjI1MjpcXHRucy1cXHUwMDNlZXRodG9vbC5jaGFubmVscyA9IG5zLVxcdTAwM2Vuc2ltX2J1c19kZXYtXFx1MDAzZW51bV9xdWV1ZXM7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2V0aHRvb2wuYy0yNTMtXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9MTA0MD1zdGF0aWMgaW50IG5zaW1faW5pdF9uZXRkZXZzaW0oc3RydWN0IG5ldGRldnNpbSAqbnMpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtMTA0NS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6MTA0NjpcXHRwaGMgPSBtb2NrX3BoY19jcmVhdGUoXFx1MDAyNm5zLVxcdTAwM2Vuc2ltX2J1c19kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTEwNDctXFx0aWYgKElTX0VSUihwaGMpKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTExMjg9c3RydWN0IG5ldGRldnNpbSAqbnNpbV9jcmVhdGUoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy0xMTM2LVxcdGRldiA9IGFsbG9jX25ldGRldl9tcShzaXplb2YoKm5zKSwgXFxcImV0aCVkXFxcIiwgTkVUX05BTUVfVU5LTk9XTiwgbnNpbV9zZXR1cCxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6MTEzNzpcXHRcXHRcXHQgICAgICBuc2ltX2Rldi1cXHUwMDNlbnNpbV9idXNfZGV2LVxcdTAwM2VudW1fcXVldWVzKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtMTEzOC1cXHRpZiAoIWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy0xMTQ4LVxcdG5zLVxcdTAwM2Vuc2ltX2Rldl9wb3J0ID0gbnNpbV9kZXZfcG9ydDtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6MTE0OTpcXHRucy1cXHUwMDNlbnNpbV9idXNfZGV2ID0gbnNpbV9kZXYtXFx1MDAzZW5zaW1fYnVzX2RldjtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6MTE1MDpcXHRTRVRfTkVUREVWX0RFVihkZXYsIFxcdTAwMjZucy1cXHUwMDNlbnNpbV9idXNfZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy0xMTUxLVxcdFNFVF9ORVRERVZfREVWTElOS19QT1JUKGRldiwgXFx1MDAyNm5zaW1fZGV2X3BvcnQtXFx1MDAzZWRldmxpbmtfcG9ydCk7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg9MTA3PXN0cnVjdCBuZXRkZXZzaW0ge1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTEyNy1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTI4OlxcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldjtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTI5LVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oPTMyMT1zdHJ1Y3QgbnNpbV9kZXYge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozMjI6XFx0c3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2O1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zMjMtXFx0c3RydWN0IG5zaW1fZmliX2RhdGEgKmZpYl9kYXRhO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oPTM4OT12b2lkIG5zaW1fZGV2X2V4aXQodm9pZCk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjM5MDppbnQgbnNpbV9kcnZfcHJvYmUoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzkxOnZvaWQgbnNpbV9kcnZfcmVtb3ZlKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2Rldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjM5MjppbnQgbnNpbV9kcnZfcG9ydF9hZGQoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2LFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zOTMtXFx0XFx0ICAgICAgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSwgdW5zaWduZWQgaW50IHBvcnRfaW5kZXgsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM5NC1cXHRcXHQgICAgICB1OCBwZXJtX2FkZHJbRVRIX0FMRU5dKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mzk1OmludCBuc2ltX2Rydl9wb3J0X2RlbChzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM5Ni1cXHRcXHQgICAgICBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zOTctXFx0XFx0ICAgICAgdW5zaWduZWQgaW50IHBvcnRfaW5kZXgpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozOTg6aW50IG5zaW1fZHJ2X2NvbmZpZ3VyZV92ZnMoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2LFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zOTktXFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IG51bV92ZnMpO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oPTQ3MT1pbnQgbnNpbV9zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00NzQtI2RlZmluZSBOU0lNX0JVU19ERVZfTUFYX1ZGUyA0XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQ3NTpzdHJ1Y3QgbnNpbV9idXNfZGV2IHtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDc2LVxcdHN0cnVjdCBkZXZpY2UgZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM9MTI1PWludCBuc2ltX3VkcF90dW5uZWxzX2luZm9fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xMzEtXFx0aWYgKG5zaW1fZGV2LVxcdTAwM2V1ZHBfcG9ydHMuc2hhcmVkIFxcdTAwMjZcXHUwMDI2IG5zaW1fZGV2LVxcdTAwM2V1ZHBfcG9ydHMub3Blbl9vbmx5KSB7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6MTMyOlxcdFxcdGRldl9lcnIoXFx1MDAyNm5zaW1fZGV2LVxcdTAwM2Vuc2ltX2J1c19kZXYtXFx1MDAzZWRldixcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xMzMtXFx0XFx0XFx0XFxcInNoYXJlZCBjYW4ndCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggb3Blbl9vbmx5XFxcXG5cXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDM6MTQ6MjguNTg5MzA0MTc3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYzODk5ODM5OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ3JpdGljYWwgUmVmY291bnQgQnVnIGluIG5ldGRldnNpbSBEZXZpY2UgQ3JlYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgaW50cmlndWluZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIG1vdGl2YXRpb24gYmVoaW5kIG1vdmluZyB0aGF0IGByZWZjb3VudF9pbmNgIGNhbGwuIEFmdGVyIGV4YW1pbmluZyB0aGUgY29kZSwgaXQncyBjbGVhciB0aGF0IGl0IHdhcyBtb3ZlZCBmcm9tIGBuZXdfZGV2aWNlX3N0b3JlYCB0byBgbnNpbV9idXNfZGV2X25ld2AuXG5cbkhlcmUncyB0aGUgcHJvYmxlbTogcHJldmlvdXNseSwgdGhlIGByZWZjb3VudF9pbmNgIGZvciBgbnNpbV9idXNfZGV2c2Agd2FzIGhhcHBlbmluZyAqYWZ0ZXIqIGBuc2ltX2J1c19kZXZfbmV3YCByZXR1cm5lZCBzdWNjZXNzZnVsbHkgaW4gYG5ld19kZXZpY2Vfc3RvcmVgLiBIb3dldmVyLCB3aXRoaW4gYG5zaW1fYnVzX2Rldl9uZXdgLCBpZiBgZGV2aWNlX3JlZ2lzdGVyYCBmYWlsZWQsIGl0IGp1bXBlZCB0byBgZXJyX25zaW1fYnVzX2Rldl9pZF9mcmVlYCwgd2hpY2ggdGhlbiBjYWxsZWQgYHB1dF9kZXZpY2VgLCB3aGljaCBpbiB0dXJuIGRlY3JlbWVudGVkIGBuc2ltX2J1c19kZXZzYCB0aHJvdWdoIHRoZSBgLnJlbGVhc2VgIGNhbGxiYWNrLCBgbnNpbV9idXNfZGV2X3JlbGVhc2VgLiBUaGUga2V5IGhlcmUgaXMgYHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZuc2ltX2J1c19kZXZzKWAuIFRoaXMgbWVhbnMgd2Ugd2VyZSBkZWNyZW1lbnRpbmcgdGhlIHJlZmNvdW50IHdpdGhvdXQgZXZlciBoYXZpbmcgaW5jcmVtZW50ZWQgaXQgaW4gdGhlIGZhaWx1cmUgY2FzZSEgVGhhdCBtZWFucyB3ZSBoYXZlIGEgY2xlYXIgcmVmY291bnQgdW5kZXJmbG93IGJ1Zywgb3IgYSByYWNlIGNvbmRpdGlvbiB0aGF0IGNvdWxkIGxlYWQgdG8gcHJlbWF0dXJlIGNvbXBsZXRpb24gb2YgYG5zaW1fYnVzX2RldnNfcmVsZWFzZWRgLlxuXG5UaGUgZml4PyBQbGFjaW5nIHRoZSBgcmVmY291bnRfaW5jYCAqYmVmb3JlKiB0aGUgYGRldmljZV9yZWdpc3RlcmAgY2FsbCBpbiBgbnNpbV9idXNfZGV2X25ld2AuIFRoaXMgZW5zdXJlcyB0aGUgcmVmY291bnQgaXMgaW5jcmVtZW50ZWQgKmJlZm9yZSogZGV2aWNlIHJlZ2lzdHJhdGlvbiBhbmQsIGNydWNpYWxseSwgYmVmb3JlIGFueSBwb3RlbnRpYWwgZmFpbHVyZSBzY2VuYXJpb3Mgd2hlcmUgdGhlIGRldmljZSdzIHJlbGVhc2UgZnVuY3Rpb24gKHdoaWNoIGRlY3JlbWVudHMgdGhlIHJlZmNvdW50KSBpcyB0cmlnZ2VyZWQuIFRoaXMgY2hhbmdlIG1ha2VzIHRoZSByZWZjb3VudCBtYW5hZ2VtZW50IGNvbnNpc3RlbnQgd2hldGhlciB0aGUgZGV2aWNlIHJlZ2lzdHJhdGlvbiBzdWNjZWVkcyBvciBmYWlscy4gSXQgcGFpcnMgdGhlIGluY3JlbWVudCB3aXRoIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24vcmVnaXN0cmF0aW9uLlxuXG5Ob3csIGlzIHRoaXMgd29ydGggZnV6emluZz8gQmFzZWQgb24gdGhlIGNyaXRlcmlhLCBkZWZpbml0ZWx5LiBuZXRkZXZzaW0gaXMgKnJlYWNoYWJsZSogaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBhbmQsIGltcG9ydGFudGx5LCBzeXprYWxsZXIuIFNpbmNlIHRoZSBwYXRjaCB0b3VjaGVzIGNvcmUgbG9naWMgYXJvdW5kIGRldmljZSBjcmVhdGlvbiBhbmQgcmVmY291bnRpbmcgd2l0aGluIGEgc29mdHdhcmUtc2ltdWxhdGVkIG5ldHdvcmsgZHJpdmVyLCBJIHRoaW5rIHRoaXMgbW9kaWZpY2F0aW9uIGlzIHdvcnRoIHRlc3RpbmcgdGhvcm91Z2hseS4gSXQncyBub3QgdmVuZG9yLXNwZWNpZmljLCBub3QgZGVjb3JhdGl2ZSwgYW5kIG5vdCB1bnJlYWNoYWJsZS5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB0aGUgRm9jdXNTeW1ib2xzLCBlbnN1cmluZyB3ZSBoYXZlIHRoZSByaWdodCBjb3ZlcmFnZTogYG5ld19kZXZpY2Vfc3RvcmVgLCBgbnNpbV9idXNfZGV2X25ld2AsIGBuc2ltX2J1c19kZXZfZGVsYCwgYGRlbF9kZXZpY2Vfc3RvcmVgLCBgbnNpbV9idXNfaW5pdGAgLyBgbnNpbV9idXNfZXhpdGAsIGFuZCBgbnNpbV9kcnZfcHJvYmVgLiBBIHF1aWNrIGNoZWNrIHNob3dzIHRoYXQgYGJ1cy5jYCBob3VzZXMgc2V2ZXJhbCBzdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlc2UgZW50cnkgcG9pbnRzLlxuXG5UaGlzIHBhdGNoIGxvb2tzIGxpa2UgaXQgcmVzb2x2ZXMgYSBzaWduaWZpY2FudCByZWZjb3VudCBpc3N1ZSwgYW5kIG5ldGRldnNpbSBpcyByaXBlIGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjIzMywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDM6MTQ6MzQuOTc5MjkwNTM1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5NDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQvKiBDb3B5cmlnaHQgKEMpIDIwMTcgTmV0cm9ub21lIFN5c3RlbXMsIEluYy5cXG4gICAzOlxcdCAqIENvcHlyaWdodCAoQykgMjAxOSBNZWxsYW5veCBUZWNobm9sb2dpZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWRcXG4gICA0OlxcdCAqL1xcbiAgIDU6XFx0XFxuICAgNjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvY29tcGxldGlvbi5oXFx1MDAzZVxcbiAgIDc6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RldmljZS5oXFx1MDAzZVxcbiAgIDg6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lkci5oXFx1MDAzZVxcbiAgIDk6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tlcm5lbC5oXFx1MDAzZVxcbiAgMTA6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2xpc3QuaFxcdTAwM2VcXG4gIDExOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tdXRleC5oXFx1MDAzZVxcbiAgMTI6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZmNvdW50LmhcXHUwMDNlXFxuICAxMzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvc2xhYi5oXFx1MDAzZVxcbiAgMTQ6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3N5c2ZzLmhcXHUwMDNlXFxuICAxNTpcXHRcXG4gIDE2OlxcdCNpbmNsdWRlIFxcXCJuZXRkZXZzaW0uaFxcXCJcXG4gIDE3OlxcdFxcbiAgMTg6XFx0c3RhdGljIERFRklORV9JREEobnNpbV9idXNfZGV2X2lkcyk7XFxuICAxOTpcXHRzdGF0aWMgTElTVF9IRUFEKG5zaW1fYnVzX2Rldl9saXN0KTtcXG4gIDIwOlxcdHN0YXRpYyBERUZJTkVfTVVURVgobnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XFxuICAyMTpcXHRzdGF0aWMgYm9vbCBuc2ltX2J1c19lbmFibGU7XFxuICAyMjpcXHRzdGF0aWMgcmVmY291bnRfdCBuc2ltX2J1c19kZXZzOyAvKiBJbmNsdWRpbmcgdGhlIGJ1cyBpdHNlbGYuICovXFxuICAyMzpcXHRzdGF0aWMgREVDTEFSRV9DT01QTEVUSU9OKG5zaW1fYnVzX2RldnNfcmVsZWFzZWQpO1xcbiAgMjQ6XFx0XFxuICAyNTpcXHRzdGF0aWMgc3RydWN0IG5zaW1fYnVzX2RldiAqdG9fbnNpbV9idXNfZGV2KHN0cnVjdCBkZXZpY2UgKmRldilcXG4gIDI2OlxcdHtcXG4gIDI3OlxcdFxcdHJldHVybiBjb250YWluZXJfb2YoZGV2LCBzdHJ1Y3QgbnNpbV9idXNfZGV2LCBkZXYpO1xcbiAgMjg6XFx0fVxcbiAgMjk6XFx0XFxuICAzMDpcXHRzdGF0aWMgc3NpemVfdFxcbiAgMzE6XFx0bnNpbV9idXNfZGV2X251bXZmc19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbiAgMzI6XFx0XFx0XFx0XFx0ICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcXG4gIDMzOlxcdHtcXG4gIDM0OlxcdFxcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiA9IHRvX25zaW1fYnVzX2RldihkZXYpO1xcbiAgMzU6XFx0XFx0dW5zaWduZWQgaW50IG51bV92ZnM7XFxuICAzNjpcXHRcXHRpbnQgcmV0O1xcbiAgMzc6XFx0XFxuICAzODpcXHRcXHRyZXQgPSBrc3RydG91aW50KGJ1ZiwgMCwgXFx1MDAyNm51bV92ZnMpO1xcbiAgMzk6XFx0XFx0aWYgKHJldClcXG4gIDQwOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuICA0MTpcXHRcXG4gIDQyOlxcdFxcdGRldmljZV9sb2NrKGRldik7XFxuICA0MzpcXHRcXHRyZXQgPSAtRU5PRU5UO1xcbiAgNDQ6XFx0XFx0aWYgKGRldl9nZXRfZHJ2ZGF0YShkZXYpKVxcbiAgNDU6XFx0XFx0XFx0cmV0ID0gbnNpbV9kcnZfY29uZmlndXJlX3Zmcyhuc2ltX2J1c19kZXYsIG51bV92ZnMpO1xcbiAgNDY6XFx0XFx0ZGV2aWNlX3VubG9jayhkZXYpO1xcbiAgNDc6XFx0XFxuICA0ODpcXHRcXHRyZXR1cm4gcmV0ID8gcmV0IDogY291bnQ7XFxuICA0OTpcXHR9XFxuICA1MDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDM6MTQ6MzQuOTc5MzgxNDc1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4OTQ0Nzk1NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDpcblxuKipEaXZpbmcgaW50byB0aGUgTmV0ZGV2c2ltIEJ1cy5jIENvZGUqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIHNwZWNpZmljIGFib3V0IHRoZSBuZXRkZXZzaW0gYnVzIGRyaXZlcidzIGJlaGF2aW9yLiBSaWdodCwgbGV0J3Mgc3RhcnQgYnkgbG9va2luZyBhdCBhIGZvY3VzZWQgY2h1bmsgb2YgY29kZSwgc3BlY2lmaWNhbGx5IGxpbmVzIDQ4MCB0byA1NDAgaW4gYGRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuY2AuIEknbSBnb2luZyB0byBzY2FuIHRoYXQgc2VjdGlvbiBjYXJlZnVsbHkuIEknbGwgYmUgbG9va2luZyBmb3IgdGhlIGNydWNpYWwgYml0cyBvZiBsb2dpYyB0aGF0IGxpa2VseSByZWxhdGUgdG8gdGhlIGlzc3VlIEknbSBpbnZlc3RpZ2F0aW5nLiBJIGV4cGVjdCB0byBmaW5kIHNvbWUga2V5IGZ1bmN0aW9uIGNhbGxzLCBkYXRhIHN0cnVjdHVyZSBtYW5pcHVsYXRpb25zLCBvciBjb25kaXRpb25hbCBjaGVja3MgdGhhdCBzaGVkIGxpZ2h0IG9uIHdoYXQncyBnb2luZyBvbi4gVGhpcyBuYXJyb3dlZCBhcHByb2FjaCB3aWxsIGhlbHAgbWUgYXZvaWQgZ2V0dGluZyBsb3N0IGluIHRoZSBicm9hZGVyIGNvbnRleHQgYW5kIGhvbmUgaW4gb24gdGhlIHJlbGV2YW50IGRldGFpbHMgcXVpY2tseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkwMDgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAzOjE0OjM2Ljg3Mzg2ODI3NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjMzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDgwLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDgwOlxcdFxcdHJldHVybiBFUlJfUFRSKGVycik7XFxuIDQ4MTpcXHR9XFxuIDQ4MjpcXHRcXG4gNDgzOlxcdHN0YXRpYyB2b2lkIG5zaW1fYnVzX2Rldl9kZWwoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2KVxcbiA0ODQ6XFx0e1xcbiA0ODU6XFx0XFx0LyogRGlzYWxsb3cgdXNpbmcgbnNpbV9idXNfZGV2ICovXFxuIDQ4NjpcXHRcXHRzbXBfc3RvcmVfcmVsZWFzZShcXHUwMDI2bnNpbV9idXNfZGV2LVxcdTAwM2Vpbml0LCBmYWxzZSk7XFxuIDQ4NzpcXHRcXHRpZGFfZnJlZShcXHUwMDI2bnNpbV9idXNfZGV2X2lkcywgbnNpbV9idXNfZGV2LVxcdTAwM2VkZXYuaWQpO1xcbiA0ODg6XFx0XFx0ZGV2aWNlX3VucmVnaXN0ZXIoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2KTtcXG4gNDg5OlxcdH1cXG4gNDkwOlxcdFxcbiA0OTE6XFx0c3RhdGljIHN0cnVjdCBkZXZpY2VfZHJpdmVyIG5zaW1fZHJpdmVyID0ge1xcbiA0OTI6XFx0XFx0Lm5hbWVcXHRcXHQ9IERSVl9OQU1FLFxcbiA0OTM6XFx0XFx0LmJ1c1xcdFxcdD0gXFx1MDAyNm5zaW1fYnVzLFxcbiA0OTQ6XFx0XFx0Lm93bmVyXFx0XFx0PSBUSElTX01PRFVMRSxcXG4gNDk1OlxcdH07XFxuIDQ5NjpcXHRcXG4gNDk3OlxcdGludCBuc2ltX2J1c19pbml0KHZvaWQpXFxuIDQ5ODpcXHR7XFxuIDQ5OTpcXHRcXHRpbnQgZXJyO1xcbiA1MDA6XFx0XFxuIDUwMTpcXHRcXHRlcnIgPSBidXNfcmVnaXN0ZXIoXFx1MDAyNm5zaW1fYnVzKTtcXG4gNTAyOlxcdFxcdGlmIChlcnIpXFxuIDUwMzpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiA1MDQ6XFx0XFx0ZXJyID0gZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZuc2ltX2RyaXZlcik7XFxuIDUwNTpcXHRcXHRpZiAoZXJyKVxcbiA1MDY6XFx0XFx0XFx0Z290byBlcnJfYnVzX3VucmVnaXN0ZXI7XFxuIDUwNzpcXHRcXHRyZWZjb3VudF9zZXQoXFx1MDAyNm5zaW1fYnVzX2RldnMsIDEpO1xcbiA1MDg6XFx0XFx0LyogQWxsb3cgdXNpbmcgcmVzb3VyY2VzICovXFxuIDUwOTpcXHRcXHRzbXBfc3RvcmVfcmVsZWFzZShcXHUwMDI2bnNpbV9idXNfZW5hYmxlLCB0cnVlKTtcXG4gNTEwOlxcdFxcdHJldHVybiAwO1xcbiA1MTE6XFx0XFxuIDUxMjpcXHRlcnJfYnVzX3VucmVnaXN0ZXI6XFxuIDUxMzpcXHRcXHRidXNfdW5yZWdpc3RlcihcXHUwMDI2bnNpbV9idXMpO1xcbiA1MTQ6XFx0XFx0cmV0dXJuIGVycjtcXG4gNTE1OlxcdH1cXG4gNTE2OlxcdFxcbiA1MTc6XFx0dm9pZCBuc2ltX2J1c19leGl0KHZvaWQpXFxuIDUxODpcXHR7XFxuIDUxOTpcXHRcXHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsICp0bXA7XFxuIDUyMDpcXHRcXG4gNTIxOlxcdFxcdC8qIERpc2FsbG93IHVzaW5nIHJlc291cmNlcyAqL1xcbiA1MjI6XFx0XFx0c21wX3N0b3JlX3JlbGVhc2UoXFx1MDAyNm5zaW1fYnVzX2VuYWJsZSwgZmFsc2UpO1xcbiA1MjM6XFx0XFx0aWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdChcXHUwMDI2bnNpbV9idXNfZGV2cykpXFxuIDUyNDpcXHRcXHRcXHRjb21wbGV0ZShcXHUwMDI2bnNpbV9idXNfZGV2c19yZWxlYXNlZCk7XFxuIDUyNTpcXHRcXG4gNTI2OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0X2xvY2spO1xcbiA1Mjc6XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG5zaW1fYnVzX2RldiwgdG1wLCBcXHUwMDI2bnNpbV9idXNfZGV2X2xpc3QsIGxpc3QpIHtcXG4gNTI4OlxcdFxcdFxcdGxpc3RfZGVsKFxcdTAwMjZuc2ltX2J1c19kZXYtXFx1MDAzZWxpc3QpO1xcbiA1Mjk6XFx0XFx0XFx0bnNpbV9idXNfZGV2X2RlbChuc2ltX2J1c19kZXYpO1xcbiA1MzA6XFx0XFx0fVxcbiA1MzE6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZuc2ltX2J1c19kZXZfbGlzdF9sb2NrKTtcXG4gNTMyOlxcdFxcbiA1MzM6XFx0XFx0d2FpdF9mb3JfY29tcGxldGlvbihcXHUwMDI2bnNpbV9idXNfZGV2c19yZWxlYXNlZCk7XFxuIDUzNDpcXHRcXG4gNTM1OlxcdFxcdGRyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZuc2ltX2RyaXZlcik7XFxuIDUzNjpcXHRcXHRidXNfdW5yZWdpc3RlcihcXHUwMDI2bnNpbV9idXMpO1xcbiA1Mzc6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwMzoxNDozNi44NzM5NTYwNDRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTg1MDE4ODExMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYG5ldGRldnNpbWAgbW9kdWxlLlxuXG4qKkludmVzdGlnYXRpbmcgYG5ldGRldnNpbWAgRnVuY3Rpb25hbGl0eSoqXG5cbkFscmlnaHQsIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBgbmV0ZGV2c2ltYCBtb2R1bGUncyBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIE15IGZpcnN0IHN0ZXAgaXMgdG8gZ2V0IGZhbWlsaWFyIHdpdGggd2hhdCBpdCBvZmZlcnMsIGFuZCBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgaXMgYWx3YXlzIHRoZSBoZWFkZXIgZmlsZXMuIExldCBtZSB0YWtlIGEgbG9vayBhdCBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIG92ZXJ2aWV3IG9mIHRoZSBkZWZpbmVkIHN0cnVjdHVyZXMsIGZ1bmN0aW9uIHByb3RvdHlwZXMsIGFuZCBhbnkga2V5IG1hY3JvcyB1c2VkIGluIHRoaXMgc2ltdWxhdGVkIG5ldHdvcmsgZGV2aWNlIGltcGxlbWVudGF0aW9uLiBGcm9tIHRoZXJlLCBJIGNhbiBzdGFydCB0byBmbGVzaCBvdXQgdGhlIGRpZmZlcmVudCBjb21wb25lbnRzIGFuZCBob3cgdGhleSBmaXQgdG9nZXRoZXIuIFVuZGVyc3RhbmRpbmcgdGhlIGhlYWRlciBpcyBjcnVjaWFsIGJlZm9yZSBkaWdnaW5nIGludG8gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMTM4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwMzoxNDozOC43MjQxNDYzNzVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNjIyODU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5zaW1fXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDEtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQyOnN0cnVjdCBuc2ltX3NhIHtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDMtXFx0c3RydWN0IHhmcm1fc3RhdGUgKnhzO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTUxLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo1MjpzdHJ1Y3QgbnNpbV9pcHNlYyB7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjUzOlxcdHN0cnVjdCBuc2ltX3NhIHNhW05TSU1fSVBTRUNfTUFYX1NBX0NPVU5UXTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNTQtXFx0c3RydWN0IGRlbnRyeSAqcGZpbGU7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNjAtI2RlZmluZSBOU0lNX01BQ1NFQ19NQVhfUlhTQ19DT1VOVCAxXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjYxOnN0cnVjdCBuc2ltX3J4c2Mge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC02Mi1cXHRzY2lfdCBzY2k7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNjUtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjY2OnN0cnVjdCBuc2ltX3NlY3kge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC02Ny1cXHRzY2lfdCBzY2k7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjY4OlxcdHN0cnVjdCBuc2ltX3J4c2MgbnNpbV9yeHNjW05TSU1fTUFDU0VDX01BWF9SWFNDX0NPVU5UXTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Njk6XFx0dTggbnNpbV9yeHNjX2NvdW50O1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC03MC1cXHRib29sIHVzZWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNzItXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjczOnN0cnVjdCBuc2ltX21hY3NlYyB7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjc0OlxcdHN0cnVjdCBuc2ltX3NlY3kgbnNpbV9zZWN5W05TSU1fTUFDU0VDX01BWF9TRUNZX0NPVU5UXTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NzU6XFx0dTggbnNpbV9zZWN5X2NvdW50O1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC03Ni19O1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC03Ny1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Nzg6c3RydWN0IG5zaW1fdmxhbiB7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTc5LVxcdERFQ0xBUkVfQklUTUFQKGN0YWcsIFZMQU5fTl9WSUQpO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTgyLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo4MzpzdHJ1Y3QgbnNpbV9ldGh0b29sX3BhdXNlcGFyYW0ge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC04NC1cXHRib29sIHJ4O1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTg5LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo5MDpzdHJ1Y3QgbnNpbV9ldGh0b29sIHtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtOTEtXFx0dTMyIGdldF9lcnI7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtOTMtXFx0dTMyIGNoYW5uZWxzO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo5NDpcXHRzdHJ1Y3QgbnNpbV9ldGh0b29sX3BhdXNlcGFyYW0gcGF1c2VwYXJhbTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtOTUtXFx0c3RydWN0IGV0aHRvb2xfY29hbGVzY2UgY29hbGVzY2U7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtOTktXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjEwMDpzdHJ1Y3QgbnNpbV9ycSB7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTEwMS1cXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaD0xMDc9c3RydWN0IG5ldGRldnNpbSB7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTEwOC1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxMDk6XFx0c3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldjtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTEwOlxcdHN0cnVjdCBuc2ltX2Rldl9wb3J0ICpuc2ltX2Rldl9wb3J0O1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xMTEtXFx0c3RydWN0IG1vY2tfcGhjICpwaGM7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjExMjpcXHRzdHJ1Y3QgbnNpbV9ycSAqKnJxO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xMTMtXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTI3LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxMjg6XFx0c3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2O1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xMjktXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTQxLVxcdGJvb2wgYnBmX21hcF9hY2NlcHQ7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE0MjpcXHRzdHJ1Y3QgbnNpbV9pcHNlYyBpcHNlYztcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTQzOlxcdHN0cnVjdCBuc2ltX21hY3NlYyBtYWNzZWM7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE0NDpcXHRzdHJ1Y3QgbnNpbV92bGFuIHZsYW47XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE0NS1cXHRzdHJ1Y3Qge1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE1OC1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTU5OlxcdHN0cnVjdCBuc2ltX2V0aHRvb2wgZXRodG9vbDtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTYwLVxcdHN0cnVjdCBuZXRkZXZzaW0gX19yY3UgKnBlZXI7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTY1LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxNjY6c3RydWN0IG5ldGRldnNpbSAqbnNpbV9jcmVhdGUoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldixcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTY3OlxcdFxcdFxcdCAgICAgIHN0cnVjdCBuc2ltX2Rldl9wb3J0ICpuc2ltX2Rldl9wb3J0LFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xNjgtXFx0XFx0XFx0ICAgICAgdTggcGVybV9hZGRyW0VUSF9BTEVOXSk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE2OTp2b2lkIG5zaW1fZGVzdHJveShzdHJ1Y3QgbmV0ZGV2c2ltICpucyk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE3MC1ib29sIG5ldGRldl9pc19uc2ltKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xNzEtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE3Mjp2b2lkIG5zaW1fZXRodG9vbF9pbml0KHN0cnVjdCBuZXRkZXZzaW0gKm5zKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTczOnZvaWQgbnNpbV9ldGh0b29sX2Zpbmkoc3RydWN0IG5ldGRldnNpbSAqbnMpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xNzQtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE3NTp2b2lkIG5zaW1fdWRwX3R1bm5lbHNfZGVidWdmc19jcmVhdGUoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2Rldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE3NjppbnQgbnNpbV91ZHBfdHVubmVsc19pbmZvX2NyZWF0ZShzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xNzctXFx0XFx0XFx0XFx0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxNzg6dm9pZCBuc2ltX3VkcF90dW5uZWxzX2luZm9fZGVzdHJveShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTc5LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xODAtI2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxODE6aW50IG5zaW1fYnBmX2Rldl9pbml0KHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxODI6dm9pZCBuc2ltX2JwZl9kZXZfZXhpdChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTgzOmludCBuc2ltX2JwZl9pbml0KHN0cnVjdCBuZXRkZXZzaW0gKm5zKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTg0OnZvaWQgbnNpbV9icGZfdW5pbml0KHN0cnVjdCBuZXRkZXZzaW0gKm5zKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTg1OmludCBuc2ltX2JwZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X2JwZiAqYnBmKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTg2OmludCBuc2ltX2JwZl9kaXNhYmxlX3RjKHN0cnVjdCBuZXRkZXZzaW0gKm5zKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTg3OmludCBuc2ltX2JwZl9zZXR1cF90Y19ibG9ja19jYihlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTg4LVxcdFxcdFxcdCAgICAgICB2b2lkICp0eXBlX2RhdGEsIHZvaWQgKmNiX3ByaXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE5MC1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTkxOnN0YXRpYyBpbmxpbmUgaW50IG5zaW1fYnBmX2Rldl9pbml0KHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE5Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTk1LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxOTY6c3RhdGljIGlubGluZSB2b2lkIG5zaW1fYnBmX2Rldl9leGl0KHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE5Ny17XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE5OC19XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE5OTpzdGF0aWMgaW5saW5lIGludCBuc2ltX2JwZl9pbml0KHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yMDAte1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTIwMy1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MjA0OnN0YXRpYyBpbmxpbmUgdm9pZCBuc2ltX2JwZl91bmluaXQoc3RydWN0IG5ldGRldnNpbSAqbnMpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTIwNS17XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjA3LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoyMDg6c3RhdGljIGlubGluZSBpbnQgbnNpbV9icGYoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9icGYgKmJwZilcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjA5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yMTItXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjIxMzpzdGF0aWMgaW5saW5lIGludCBuc2ltX2JwZl9kaXNhYmxlX3RjKHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yMTQte1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oPTIxOD1zdGF0aWMgaW5saW5lIGludFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoyMTk6bnNpbV9icGZfc2V0dXBfdGNfYmxvY2tfY2IoZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsIHZvaWQgKnR5cGVfZGF0YSxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjIwLVxcdFxcdFxcdCAgIHZvaWQgKmNiX3ByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjI1LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoyMjY6ZW51bSBuc2ltX3Jlc291cmNlX2lkIHtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjI3LVxcdE5TSU1fUkVTT1VSQ0VfTk9ORSwgICAvKiBERVZMSU5LX1JFU09VUkNFX0lEX1BBUkVOVF9UT1AgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yMzYtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjIzNzplbnVtIG5zaW1fcG9ydF9yZXNvdXJjZV9pZCB7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTIzOC1cXHROU0lNX1BPUlRfUkVTT1VSQ0VfVEVTVCA9IDEsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjQwLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoyNDE6c3RydWN0IG5zaW1fZGV2X2hlYWx0aCB7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTI0Mi1cXHRzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXIgKmVtcHR5X3JlcG9ydGVyO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTI0OS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MjUwOmludCBuc2ltX2Rldl9oZWFsdGhfaW5pdChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LCBzdHJ1Y3QgZGV2bGluayAqZGV2bGluayk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjI1MTp2b2lkIG5zaW1fZGV2X2hlYWx0aF9leGl0KHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yNTItXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjI1MzpzdHJ1Y3QgbnNpbV9kZXZfaHdzdGF0c19uZXRkZXYge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yNTQtXFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTI2MC1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MjYxOnN0cnVjdCBuc2ltX2Rldl9od3N0YXRzIHtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjYyLVxcdHN0cnVjdCBkZW50cnkgKmRkaXI7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjcxLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoyNzI6aW50IG5zaW1fZGV2X2h3c3RhdHNfaW5pdChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MjczOnZvaWQgbnNpbV9kZXZfaHdzdGF0c19leGl0KHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yNzQtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTI3NS0jaWYgSVNfRU5BQkxFRChDT05GSUdfUFNBTVBMRSlcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mjc2OmludCBuc2ltX2Rldl9wc2FtcGxlX2luaXQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2Rldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjI3Nzp2b2lkIG5zaW1fZGV2X3BzYW1wbGVfZXhpdChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjc4LSNlbHNlXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjI3OTpzdGF0aWMgaW5saW5lIGludCBuc2ltX2Rldl9wc2FtcGxlX2luaXQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldilcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjgwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yODMtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjI4NDpzdGF0aWMgaW5saW5lIHZvaWQgbnNpbV9kZXZfcHNhbXBsZV9leGl0KHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTI4NS17XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjg4LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoyODk6ZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yOTAtXFx0TlNJTV9ERVZfUE9SVF9UWVBFX1BGLFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTI5NS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mjk2OnN0cnVjdCBuc2ltX2Rldl9wb3J0IHtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjk3LVxcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yOTktXFx0dW5zaWduZWQgaW50IHBvcnRfaW5kZXg7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjMwMDpcXHRlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSBwb3J0X3R5cGU7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTMwMS1cXHRzdHJ1Y3QgZGVudHJ5ICpkZGlyO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTMwNy1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzA4OnN0cnVjdCBuc2ltX3ZmX2NvbmZpZyB7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTMwOS1cXHRpbnQgbGlua19zdGF0ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zMjAtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjMyMTpzdHJ1Y3QgbnNpbV9kZXYge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozMjI6XFx0c3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2O1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozMjM6XFx0c3RydWN0IG5zaW1fZmliX2RhdGEgKmZpYl9kYXRhO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozMjQ6XFx0c3RydWN0IG5zaW1fdHJhcF9kYXRhICp0cmFwX2RhdGE7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTMyNS1cXHRzdHJ1Y3QgZGVudHJ5ICpkZGlyO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTMyOS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzMwOlxcdHN0cnVjdCBuc2ltX3ZmX2NvbmZpZyAqdmZjb25maWdzO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zMzEtXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzUxLVxcdHN0cnVjdCBkZXZsaW5rX3JlZ2lvbiAqZHVtbXlfcmVnaW9uO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozNTI6XFx0c3RydWN0IG5zaW1fZGV2X2hlYWx0aCBoZWFsdGg7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjM1MzpcXHRzdHJ1Y3QgbnNpbV9kZXZfaHdzdGF0cyBod3N0YXRzO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zNTQtXFx0c3RydWN0IGZsb3dfYWN0aW9uX2Nvb2tpZSAqZmFfY29va2llO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM2OC1cXHR9IHVkcF9wb3J0cztcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzY5OlxcdHN0cnVjdCBuc2ltX2Rldl9wc2FtcGxlICpwc2FtcGxlO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zNzAtXFx0dTE2IGVzd19tb2RlO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM3Mi1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzczOnN0YXRpYyBpbmxpbmUgYm9vbCBuc2ltX2Vzd19tb2RlX2lzX2xlZ2FjeShzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2KVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zNzQte1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozNzU6XFx0cmV0dXJuIG5zaW1fZGV2LVxcdTAwM2Vlc3dfbW9kZSA9PSBERVZMSU5LX0VTV0lUQ0hfTU9ERV9MRUdBQ1k7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM3Ni19XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM3Ny1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mzc4OnN0YXRpYyBpbmxpbmUgYm9vbCBuc2ltX2Vzd19tb2RlX2lzX3N3aXRjaGRldihzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2KVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zNzkte1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozODA6XFx0cmV0dXJuIG5zaW1fZGV2LVxcdTAwM2Vlc3dfbW9kZSA9PSBERVZMSU5LX0VTV0lUQ0hfTU9ERV9TV0lUQ0hERVY7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM4MS19XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM4Mi1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzgzOnN0YXRpYyBpbmxpbmUgc3RydWN0IG5ldCAqbnNpbV9kZXZfbmV0KHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM4NC17XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjM4NTpcXHRyZXR1cm4gZGV2bGlua19uZXQocHJpdl90b19kZXZsaW5rKG5zaW1fZGV2KSk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM4Ni19XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM4Ny1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mzg4OmludCBuc2ltX2Rldl9pbml0KHZvaWQpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozODk6dm9pZCBuc2ltX2Rldl9leGl0KHZvaWQpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozOTA6aW50IG5zaW1fZHJ2X3Byb2JlKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2Rldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjM5MTp2b2lkIG5zaW1fZHJ2X3JlbW92ZShzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozOTI6aW50IG5zaW1fZHJ2X3BvcnRfYWRkKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldixcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzkzOlxcdFxcdCAgICAgIGVudW0gbnNpbV9kZXZfcG9ydF90eXBlIHR5cGUsIHVuc2lnbmVkIGludCBwb3J0X2luZGV4LFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zOTQtXFx0XFx0ICAgICAgdTggcGVybV9hZGRyW0VUSF9BTEVOXSk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjM5NTppbnQgbnNpbV9kcnZfcG9ydF9kZWwoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2LFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozOTY6XFx0XFx0ICAgICAgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzk3LVxcdFxcdCAgICAgIHVuc2lnbmVkIGludCBwb3J0X2luZGV4KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mzk4OmludCBuc2ltX2Rydl9jb25maWd1cmVfdmZzKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldixcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzk5LVxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBudW1fdmZzKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDAwLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MDE6dW5zaWduZWQgaW50IG5zaW1fZGV2X2dldF92ZnMoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2Rldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQwMi1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDAzOnN0cnVjdCBuc2ltX2ZpYl9kYXRhICpuc2ltX2ZpYl9jcmVhdGUoc3RydWN0IGRldmxpbmsgKmRldmxpbmssXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQwNC1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MDU6dm9pZCBuc2ltX2ZpYl9kZXN0cm95KHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rLCBzdHJ1Y3QgbnNpbV9maWJfZGF0YSAqZmliX2RhdGEpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MDY6dTY0IG5zaW1fZmliX2dldF92YWwoc3RydWN0IG5zaW1fZmliX2RhdGEgKmZpYl9kYXRhLFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MDc6XFx0XFx0ICAgICBlbnVtIG5zaW1fcmVzb3VyY2VfaWQgcmVzX2lkLCBib29sIG1heCk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQwOC1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDA5OnN0YXRpYyBpbmxpbmUgYm9vbCBuc2ltX2Rldl9wb3J0X2lzX3BmKHN0cnVjdCBuc2ltX2Rldl9wb3J0ICpuc2ltX2Rldl9wb3J0KVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00MTAte1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MTE6XFx0cmV0dXJuIG5zaW1fZGV2X3BvcnQtXFx1MDAzZXBvcnRfdHlwZSA9PSBOU0lNX0RFVl9QT1JUX1RZUEVfUEY7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQxMi19XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQxMy1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDE0OnN0YXRpYyBpbmxpbmUgYm9vbCBuc2ltX2Rldl9wb3J0X2lzX3ZmKHN0cnVjdCBuc2ltX2Rldl9wb3J0ICpuc2ltX2Rldl9wb3J0KVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00MTUte1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MTY6XFx0cmV0dXJuIG5zaW1fZGV2X3BvcnQtXFx1MDAzZXBvcnRfdHlwZSA9PSBOU0lNX0RFVl9QT1JUX1RZUEVfVkY7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQxNy19XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQxOC0jaWYgSVNfRU5BQkxFRChDT05GSUdfWEZSTV9PRkZMT0FEKVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MTk6dm9pZCBuc2ltX2lwc2VjX2luaXQoc3RydWN0IG5ldGRldnNpbSAqbnMpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MjA6dm9pZCBuc2ltX2lwc2VjX3RlYXJkb3duKHN0cnVjdCBuZXRkZXZzaW0gKm5zKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDIxOmJvb2wgbnNpbV9pcHNlY190eChzdHJ1Y3QgbmV0ZGV2c2ltICpucywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQyMi0jZWxzZVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MjM6c3RhdGljIGlubGluZSB2b2lkIG5zaW1faXBzZWNfaW5pdChzdHJ1Y3QgbmV0ZGV2c2ltICpucylcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00MjYtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQyNzpzdGF0aWMgaW5saW5lIHZvaWQgbnNpbV9pcHNlY190ZWFyZG93bihzdHJ1Y3QgbmV0ZGV2c2ltICpucylcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00MzAtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQzMTpzdGF0aWMgaW5saW5lIGJvb2wgbnNpbV9pcHNlY190eChzdHJ1Y3QgbmV0ZGV2c2ltICpucywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDMyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00MzctI2lmIElTX0VOQUJMRUQoQ09ORklHX01BQ1NFQylcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDM4OnZvaWQgbnNpbV9tYWNzZWNfaW5pdChzdHJ1Y3QgbmV0ZGV2c2ltICpucyk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQzOTp2b2lkIG5zaW1fbWFjc2VjX3RlYXJkb3duKHN0cnVjdCBuZXRkZXZzaW0gKm5zKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDQwLSNlbHNlXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQ0MTpzdGF0aWMgaW5saW5lIHZvaWQgbnNpbV9tYWNzZWNfaW5pdChzdHJ1Y3QgbmV0ZGV2c2ltICpucylcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDQyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00NDQtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQ0NTpzdGF0aWMgaW5saW5lIHZvaWQgbnNpbV9tYWNzZWNfdGVhcmRvd24oc3RydWN0IG5ldGRldnNpbSAqbnMpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQ0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDUwLSNpZiBJU19FTkFCTEVEKENPTkZJR19JTkVUX1BTUClcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDUxOmludCBuc2ltX3BzcF9pbml0KHN0cnVjdCBuZXRkZXZzaW0gKm5zKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDUyOnZvaWQgbnNpbV9wc3BfdW5pbml0KHN0cnVjdCBuZXRkZXZzaW0gKm5zKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDUzOnZvaWQgbnNpbV9wc3BfaGFuZGxlX2V4dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc2tiX2V4dCAqcHNwX2V4dCk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQ1NC1lbnVtIHNrYl9kcm9wX3JlYXNvblxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0NTU6bnNpbV9kb19wc3Aoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGRldnNpbSAqbnMsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQ1Ni1cXHQgICAgc3RydWN0IG5ldGRldnNpbSAqcGVlcl9ucywgc3RydWN0IHNrYl9leHQgKipwc3BfZXh0KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDU3LSNlbHNlXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQ1ODpzdGF0aWMgaW5saW5lIGludCBuc2ltX3BzcF9pbml0KHN0cnVjdCBuZXRkZXZzaW0gKm5zKSB7IHJldHVybiAwOyB9XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQ1OTpzdGF0aWMgaW5saW5lIHZvaWQgbnNpbV9wc3BfdW5pbml0KHN0cnVjdCBuZXRkZXZzaW0gKm5zKSB7fVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00NjAtc3RhdGljIGlubGluZSBlbnVtIHNrYl9kcm9wX3JlYXNvblxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0NjE6bnNpbV9kb19wc3Aoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGRldnNpbSAqbnMsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQ2Mi1cXHQgICAgc3RydWN0IG5ldGRldnNpbSAqcGVlcl9ucywgc3RydWN0IHNrYl9leHQgKipwc3BfZXh0KVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oPTQ2Nz1zdGF0aWMgaW5saW5lIHZvaWRcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDY4Om5zaW1fcHNwX2hhbmRsZV9leHQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNrYl9leHQgKnBzcF9leHQpIHt9XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQ2OS0jZW5kaWZcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDcwLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0NzE6aW50IG5zaW1fc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQ3Mi1cXHRcXHQgIHZvaWQgKnR5cGVfZGF0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDc0LSNkZWZpbmUgTlNJTV9CVVNfREVWX01BWF9WRlMgNFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0NzU6c3RydWN0IG5zaW1fYnVzX2RldiB7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQ3Ni1cXHRzdHJ1Y3QgZGV2aWNlIGRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00ODYtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQ4NzppbnQgbnNpbV9idXNfaW5pdCh2b2lkKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDg4OnZvaWQgbnNpbV9idXNfZXhpdCh2b2lkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDM6MTQ6MzguNzk0Nzc2MTgzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE0OTA5MTQxNDcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIE5FVERFVlNJTSBDb25maWd1cmF0aW9uIGFuZCBTeW1ib2wgRm9jdXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEZpcnN0LCBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIEtjb25maWcgcmVxdWlyZW1lbnRzIGZvciBORVRERVZTSU0gYXJlIG1ldC4gSSd2ZSBjaGVja2VkIHRoZSBkZXBlbmRlbmNpZXM6IGBjb25maWcgTkVUREVWU0lNYCByZWxpZXMgb24gYERFQlVHX0ZTYCwgYElORVRgLCBlaXRoZXIgYFBTQU1QTEVgIG9yIGBQU0FNUExFPW5gLCBhbmQgZWl0aGVyIGBQVFBfMTU4OF9DTE9DS19NT0NLYCBvciBgUFRQXzE1ODhfQ0xPQ0tfTU9DSz1uYC4gSXQgKnNlbGVjdHMqIGBORVRfREVWTElOS2AsIGBQQUdFX1BPT0xgLCBhbmQgYE5FVF9TSEFQRVJgLiBTbywgdG8gYWN0dWFsbHkgYnVpbGQgdGhpcywgYE5FVERFVlNJTWAgaXRzZWxmIGlzIGVzc2VudGlhbCwgYW5kIEkgbXVzdCB2ZXJpZnkgYERFQlVHX0ZTYCBhbmQgYElORVRgIGFyZSBlbmFibGVkLlxuXG5OZXh0LCBJIGV4YW1pbmVkIHRoZSBcIkZvY3VzU3ltYm9sc1wiIOKAkyB0aGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMuIEkgaWRlbnRpZmllZCB0aGUgY3JpdGljYWwgZnVuY3Rpb25zOiBgbnNpbV9idXNfaW5pdGAsIGBuc2ltX2J1c19leGl0YCwgYG5zaW1fZHJ2X3Byb2JlYCwgYG5zaW1fZHJ2X3JlbW92ZWAsIGBuc2ltX2Rydl9wb3J0X2FkZGAsIGBuc2ltX2Rydl9wb3J0X2RlbGAsIGFuZCBgbnNpbV9kcnZfY29uZmlndXJlX3Zmc2AuIEkgYWxzbyBsb29rZWQgYXQgc3RhdGljIGZ1bmN0aW9ucyB3aXRoaW4gYGJ1cy5jYCDigJMgYG5zaW1fYnVzX2Rldl9uZXdgIGFuZCBgbmV3X2RldmljZV9zdG9yZWAg4oCTIHRvIHNlZSBpZiB0aGV5IGFyZSBzb21laG93IGV4cG9zZWQuIFRoZSBwcm9tcHQgaW5zdHJ1Y3Rpb24gdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5cG9pbnRzIGlzIGtleSBoZXJlLlxuXG5BZnRlciBjcm9zcy1yZWZlcmVuY2luZyBmaWxlIGxvY2F0aW9ucywgSSBjb25maXJtZWQgdGhhdCBgbnNpbV9idXNfZGV2X25ld2AgYW5kIGBuZXdfZGV2aWNlX3N0b3JlYCBhcmUgaW5kZWVkIHN0YXRpYywgcmVzaWRpbmcgaW4gYGRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuY2AsIHdoZXJlYXMgYG5zaW1fZHJ2X3Byb2JlYCwgYG5zaW1fZHJ2X3JlbW92ZWAsIGBuc2ltX2Rydl9jb25maWd1cmVfdmZzYCwgYG5zaW1fZHJ2X3BvcnRfYWRkYCwgYW5kIGBuc2ltX2Rydl9wb3J0X2RlbGAgYXJlIG5vbi1zdGF0aWMgYW5kIGRlZmluZWQgaW4gYGRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuY2AsIGNhbGxlZCBmcm9tIGBidXMuY2AuXG5cbkkndmUgcmUtY29uZmlybWVkIHRoZSBgRW5hYmxlQ29uZmlnc2A6IGBORVRERVZTSU1gLCBgREVCVUdfRlNgLCBhbmQgYElORVRgIGFyZSBhbGwgcmVxdWlyZWQuXG5cbk9rYXksIGxldCdzIHN5bnRoZXNpemUgbXkgZmluZGluZ3MuIEknbSBnb2luZyB0byBmbGFnIHRoaXMgYXMgZnV6emVkIGFuZCBjb25maXJtZWQ6XG5cbiogICBgV29ydGhGdXp6aW5nOiB0cnVlYFxuKiAgIGBFbmFibGVDb25maWdzOiBbXCJORVRERVZTSU1cIiwgXCJERUJVR19GU1wiLCBcIklORVRcIl1gXG4qICAgYEZvY3VzU3ltYm9sczogW1wibnNpbV9kcnZfcHJvYmVcIiwgXCJuc2ltX2Rydl9yZW1vdmVcIiwgXCJuc2ltX2Rydl9jb25maWd1cmVfdmZzXCIsIFwibnNpbV9idXNfaW5pdFwiLCBcIm5zaW1fYnVzX2V4aXRcIl0gKGFuZC9vciBcIm5zaW1fZHJ2X3BvcnRfYWRkXCIsIFwibnNpbV9kcnZfcG9ydF9kZWxcIilgXG5cbkkgdW5kZXJzdGFuZCB0aGUgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIHJlZmVyZW5jZSBjb3VudGluZyBvZiBgbnNpbV9idXNfZGV2c2AsIHNwZWNpZmljYWxseSBtb3ZpbmcgdGhlIGluY3JlbWVudCB0byBoYXBwZW4gYmVmb3JlIGBkZXZpY2VfcmVnaXN0ZXIoKWAuIFRoaXMgY2hhbmdlIGFsdGVycyBsaWZlY3ljbGUgYW5kIHRyYWNraW5nIG9mIG5ldGRldnNpbSBidXMgZGV2aWNlcywgd2hpY2ggYXJlIGNyaXRpY2FsIHRvIHRoZSBuZXRkZXZzaW0gZHJpdmVyIGRldmljZSBtYW5hZ2VtZW50LiBUaGF0J3MgZnV6emVyLXJlbGV2YW50LiBTbywgdGhpcyBhbmFseXNpcyBzZWVtcyBzb2xpZC4gSSdsbCBwcm9jZWVkIHdpdGggYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc3OTcsIk91dHB1dFRva2VucyI6MTcyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAzOjE0OjUzLjcwMzkyMTIyNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyODA4ODU1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUREVWU0lNXCIsXG4gICAgXCJERUJVR19GU1wiLFxuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5zaW1fZHJ2X3Byb2JlXCIsXG4gICAgXCJuc2ltX2Rydl9yZW1vdmVcIixcbiAgICBcIm5zaW1fZHJ2X2NvbmZpZ3VyZV92ZnNcIixcbiAgICBcIm5zaW1fYnVzX2luaXRcIixcbiAgICBcIm5zaW1fYnVzX2V4aXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGp1c3RzIHRoZSBkZXZpY2UgcmVmZXJlbmNlIGNvdW50aW5nIGZvciBuZXRkZXZzaW0gYnVzIGRldmljZXMgYnkgbW92aW5nIHJlZmNvdW50X2luYyhcXHUwMDI2bnNpbV9idXNfZGV2cykgaW50byBuc2ltX2J1c19kZXZfbmV3KCkgYmVmb3JlIGRldmljZV9yZWdpc3RlcigpLCBmaXhpbmcgYSByZWZjb3VudCB1bmRlcmZsb3cgb24gZGV2aWNlIHJlZ2lzdHJhdGlvbiBmYWlsdXJlLiBOZXRkZXZzaW0gaXMgYSBzb2Z0d2FyZS1zaW11bGF0ZWQgbmV0d29yayBkZXZpY2UgZHJpdmVyIGZ1bGx5IHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUREVWU0lNXCIsXG4gICAgXCJERUJVR19GU1wiLFxuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5zaW1fZHJ2X3Byb2JlXCIsXG4gICAgXCJuc2ltX2Rydl9yZW1vdmVcIixcbiAgICBcIm5zaW1fZHJ2X2NvbmZpZ3VyZV92ZnNcIixcbiAgICBcIm5zaW1fYnVzX2luaXRcIixcbiAgICBcIm5zaW1fYnVzX2V4aXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGp1c3RzIHRoZSBkZXZpY2UgcmVmZXJlbmNlIGNvdW50aW5nIGZvciBuZXRkZXZzaW0gYnVzIGRldmljZXMgYnkgbW92aW5nIHJlZmNvdW50X2luYyhcXHUwMDI2bnNpbV9idXNfZGV2cykgaW50byBuc2ltX2J1c19kZXZfbmV3KCkgYmVmb3JlIGRldmljZV9yZWdpc3RlcigpLCBmaXhpbmcgYSByZWZjb3VudCB1bmRlcmZsb3cgb24gZGV2aWNlIHJlZ2lzdHJhdGlvbiBmYWlsdXJlLiBOZXRkZXZzaW0gaXMgYSBzb2Z0d2FyZS1zaW11bGF0ZWQgbmV0d29yayBkZXZpY2UgZHJpdmVyIGZ1bGx5IHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAzOjE0OjUzLjgzMjAxODY3M1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzU5MTE3MjExODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwMzoxNDo1My44MzI3NDI2MjNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjozNTkxMDk5MjQxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW92ZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBpbmNyZW1lbnQgYHJlZmNvdW50X2luYyhcXHUwMDI2bnNpbV9idXNfZGV2cylgIGZyb20gYG5ld19kZXZpY2Vfc3RvcmUoKWAgaW50byBgbnNpbV9idXNfZGV2X25ldygpYCBwcmlvciB0byBjYWxsaW5nIGBkZXZpY2VfcmVnaXN0ZXIoKWAuIFRoaXMgZml4ZXMgcmVmZXJlbmNlIGNvdW50aW5nIGJhbGFuY2UgaW4gZXJyb3IvcmVsZWFzZSBwYXRocy4gXFxuXFxuVGhlIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgYWx0ZXIgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZSB1c2FnZSwgYm91bmRzIGNoZWNrcywgb3Iga2VybmVsLXRvLXVzZXIgaW5mbyBsZWFrcy4gQW55IGxpZmVjeWNsZSBvciByZWZlcmVuY2UgY291bnRpbmcgZXJyb3JzIChlLmcuIHVzZS1hZnRlci1mcmVlLCByZWZjb3VudCB1bmRlcmZsb3cvb3ZlcmZsb3cpIGFyZSBjb3ZlcmVkIGJ5IHJlZmNvdW50X3QgY2hlY2tzIGFuZCBzdGFuZGFyZCBLQVNBTi9MT0NLREVQIGRldGVjdG9ycy4gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzVlMjJjOWNmODZlOWI1ZWE1Mzc2YjM5ZTdiMDFhMTZjNjJhNDc5Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDEgMDM6MTQ6MDggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmNcbmluZGV4IDVjNTVjMzA4NDg3YjQuLjQyNmZiNDM4YjkyMjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmNcbisrKyBiL2RyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuY1xuQEAgLTE5NCw3ICsxOTQsNiBAQCBuZXdfZGV2aWNlX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcbiBcdFx0Z290byBlcnI7XG4gXHR9XG4gXG4tXHRyZWZjb3VudF9pbmMoXHUwMDI2bnNpbV9idXNfZGV2cyk7XG4gXHQvKiBBbGxvdyB1c2luZyBuc2ltX2J1c19kZXYgKi9cbiBcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2Vpbml0LCB0cnVlKTtcbiBcbkBAIC00NjUsNiArNDY0LDcgQEAgbnNpbV9idXNfZGV2X25ldyh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBwb3J0X2NvdW50LCB1bnNpZ25lZCBpbnQgbnVtX3F1ZXVcbiBcdC8qIERpc2FsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqL1xuIFx0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2bnNpbV9idXNfZGV2LVx1MDAzZWluaXQsIGZhbHNlKTtcbiBcbitcdHJlZmNvdW50X2luYyhcdTAwMjZuc2ltX2J1c19kZXZzKTtcbiBcdGVyciA9IGRldmljZV9yZWdpc3RlcihcdTAwMjZuc2ltX2J1c19kZXYtXHUwMDNlZGV2KTtcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZXJyX25zaW1fYnVzX2Rldl9pZF9mcmVlO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDM6MTQ6NTMuODMyNzQzOTYzWiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjc0ODIwNDI3MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3Mgd2hhdCBJJ20gdGhpbmtpbmcgYXMgSSBhcHByb2FjaCB0aGlzIHBhdGNoOlxuXG4qKkFuYWx5emluZyB0aGUgTmV0d29yayBEZXZpY2UgU2ltdWxhdG9yIFBhdGNoKipcblxuQWxyaWdodCwgdGhlIGZpcnN0IHRoaW5nIEkgbm90aWNlIGlzIHRoYXQgdGhlIHBhdGNoIGlzIHRhcmdldGluZyBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jYC4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0J3MgY2hhbmdpbmcgd2l0aGluIHRoYXQgZmlsZS4gQmVmb3JlIEkgZXZlbiBzdGFydCBkaXNzZWN0aW5nIHRoZSBkaWZmLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgKmNvbnRleHQqIG9mIHRob3NlIGNoYW5nZXMgd2l0aGluIGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmNgLiBJJ20gZ29pbmcgdG8gcHVsbCB1cCB0aGF0IGZpbGUgYW5kIGdldCBhIGZlZWwgZm9yIHRoZSBzdXJyb3VuZGluZyBjb2RlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgdGhlIG92ZXJhbGwgZnVuY3Rpb24gb2YgdGhpcyBcImJ1cy5jXCIgZmlsZSBhbmQgc2VlIHdoZXJlIHRoZSBjaGFuZ2VzIGFyZSBiZWluZyBtYWRlIHdpdGhpbiBpdHMgZXhpc3RpbmcgaW1wbGVtZW50YXRpb24uIFVuZGVyc3RhbmRpbmcgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljIGlzIGdvaW5nIHRvIGJlIGtleSB0byBpbnRlcnByZXRpbmcgdGhlIGludGVudCBhbmQgaW1wYWN0IG9mIHRoaXMgcGF0Y2guIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjAyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwMzoxNTowMS4zMTQ3OTA2MzNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MTI0NTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5zaW1fYnVzX2RldnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz0yMT1zdGF0aWMgYm9vbCBuc2ltX2J1c19lbmFibGU7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjIyOnN0YXRpYyByZWZjb3VudF90IG5zaW1fYnVzX2RldnM7IC8qIEluY2x1ZGluZyB0aGUgYnVzIGl0c2VsZi4gKi9cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MjM6c3RhdGljIERFQ0xBUkVfQ09NUExFVElPTihuc2ltX2J1c19kZXZzX3JlbGVhc2VkKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjQtXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM9MTQwPXN0YXRpYyB2b2lkIG5zaW1fYnVzX2Rldl9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xNDUtXFx0a2ZyZWUobnNpbV9idXNfZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTQ2OlxcdGlmIChyZWZjb3VudF9kZWNfYW5kX3Rlc3QoXFx1MDAyNm5zaW1fYnVzX2RldnMpKVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxNDc6XFx0XFx0Y29tcGxldGUoXFx1MDAyNm5zaW1fYnVzX2RldnNfcmVsZWFzZWQpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xNDgtfVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTQ0Nj1uc2ltX2J1c19kZXZfbmV3KHVuc2lnbmVkIGludCBpZCwgdW5zaWduZWQgaW50IHBvcnRfY291bnQsIHVuc2lnbmVkIGludCBudW1fcXVldWVzKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQ2Ni1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDY3OlxcdHJlZmNvdW50X2luYyhcXHUwMDI2bnNpbV9idXNfZGV2cyk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQ2OC1cXHRlcnIgPSBkZXZpY2VfcmVnaXN0ZXIoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz00OTc9aW50IG5zaW1fYnVzX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy01MDYtXFx0XFx0Z290byBlcnJfYnVzX3VucmVnaXN0ZXI7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjUwNzpcXHRyZWZjb3VudF9zZXQoXFx1MDAyNm5zaW1fYnVzX2RldnMsIDEpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy01MDgtXFx0LyogQWxsb3cgdXNpbmcgcmVzb3VyY2VzICovXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM9NTE3PXZvaWQgbnNpbV9idXNfZXhpdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTUyMi1cXHRzbXBfc3RvcmVfcmVsZWFzZShcXHUwMDI2bnNpbV9idXNfZW5hYmxlLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjUyMzpcXHRpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KFxcdTAwMjZuc2ltX2J1c19kZXZzKSlcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NTI0OlxcdFxcdGNvbXBsZXRlKFxcdTAwMjZuc2ltX2J1c19kZXZzX3JlbGVhc2VkKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTI1LVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTUzMi1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NTMzOlxcdHdhaXRfZm9yX2NvbXBsZXRpb24oXFx1MDAyNm5zaW1fYnVzX2RldnNfcmVsZWFzZWQpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy01MzQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAzOjE1OjAxLjM3MzkyMDI2MloiLCJTZXEiOjI1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2NDg5NTc4NDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBjb25zaWRlcmluZyBJJ20gYW4gZXhwZXJ0OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBuZXRkZXZzaW0gQnVzIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0J3MgaGFwcGVuaW5nIHdpdGhpbiBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jYC4gSSdtIGdvaW5nIHRvIHplcm8gaW4gb24gbGluZXMgMTgwIHRocm91Z2ggMjIwIGFuZCB0aGVuIGp1bXAgYWhlYWQgdG8gNDQwIHRocm91Z2ggNDkwLiBObyBuZWVkIHRvIHJlYWQgdGhlIHdob2xlIGZpbGUg4oCTIEkgaGF2ZSBhIGdvb2QgZW5vdWdoIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdGhhdCB0aG9zZSBzcGVjaWZpYyBzZWN0aW9ucyBzaG91bGQgcHJvdmlkZSB0aGUgY29udGV4dCBJIG5lZWQuIEknbSBleHBlY3RpbmcgdGhhdCB0aG9zZSBzZWN0aW9ucyB3aWxsIGxpa2VseSBkZWFsIHdpdGggZWl0aGVyIHRoZSBidXMgaW5pdGlhbGl6YXRpb24gYW5kIGRldmljZSByZWdpc3RyYXRpb24gb3IgcGVyaGFwcyB0aGUgYWN0dWFsIGRhdGEgdHJhbnNmZXIgbWVjaGFuaXNtcyBvbiB0aGUgc2ltdWxhdGVkIGJ1cy4gVGltZSB0byBnZXQgdGhlIGRldGFpbHMgSSBuZWVkIHRvIGZpbGwgaW4gdGhlIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxOTksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwMzoxNTowNy44NjM1MDA0OThaIiwiU2VxIjoyNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE4MDpcXHRcXHRcXHRwcl9lcnIoXFxcIkZvcm1hdCBmb3IgYWRkaW5nIG5ldyBkZXZpY2UgaXMgXFxcXFxcXCJpZCBwb3J0X2NvdW50IG51bV9xdWV1ZXNcXFxcXFxcIiAodWludCB1aW50IHVpbnQpLlxcXFxuXFxcIik7XFxuIDE4MTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMTgyOlxcdFxcdH1cXG4gMTgzOlxcdFxcbiAxODQ6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2bnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XFxuIDE4NTpcXHRcXHQvKiBQcmV2ZW50IHRvIHVzZSByZXNvdXJjZSBiZWZvcmUgaW5pdGlhbGl6YXRpb24uICovXFxuIDE4NjpcXHRcXHRpZiAoIXNtcF9sb2FkX2FjcXVpcmUoXFx1MDAyNm5zaW1fYnVzX2VuYWJsZSkpIHtcXG4gMTg3OlxcdFxcdFxcdGVyciA9IC1FQlVTWTtcXG4gMTg4OlxcdFxcdFxcdGdvdG8gZXJyO1xcbiAxODk6XFx0XFx0fVxcbiAxOTA6XFx0XFxuIDE5MTpcXHRcXHRuc2ltX2J1c19kZXYgPSBuc2ltX2J1c19kZXZfbmV3KGlkLCBwb3J0X2NvdW50LCBudW1fcXVldWVzKTtcXG4gMTkyOlxcdFxcdGlmIChJU19FUlIobnNpbV9idXNfZGV2KSkge1xcbiAxOTM6XFx0XFx0XFx0ZXJyID0gUFRSX0VSUihuc2ltX2J1c19kZXYpO1xcbiAxOTQ6XFx0XFx0XFx0Z290byBlcnI7XFxuIDE5NTpcXHRcXHR9XFxuIDE5NjpcXHRcXG4gMTk3OlxcdFxcdC8qIEFsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqL1xcbiAxOTg6XFx0XFx0c21wX3N0b3JlX3JlbGVhc2UoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlaW5pdCwgdHJ1ZSk7XFxuIDE5OTpcXHRcXG4gMjAwOlxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlbGlzdCwgXFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0KTtcXG4gMjAxOlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2bnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XFxuIDIwMjpcXHRcXG4gMjAzOlxcdFxcdHJldHVybiBjb3VudDtcXG4gMjA0OlxcdGVycjpcXG4gMjA1OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2bnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XFxuIDIwNjpcXHRcXHRyZXR1cm4gZXJyO1xcbiAyMDc6XFx0fVxcbiAyMDg6XFx0c3RhdGljIEJVU19BVFRSX1dPKG5ld19kZXZpY2UpO1xcbiAyMDk6XFx0XFxuIDIxMDpcXHRzdGF0aWMgdm9pZCBuc2ltX2J1c19kZXZfZGVsKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2Rldik7XFxuIDIxMTpcXHRcXG4gMjEyOlxcdHN0YXRpYyBzc2l6ZV90XFxuIDIxMzpcXHRkZWxfZGV2aWNlX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcXG4gMjE0OlxcdHtcXG4gMjE1OlxcdFxcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiwgKnRtcDtcXG4gMjE2OlxcdFxcdHVuc2lnbmVkIGludCBpZDtcXG4gMjE3OlxcdFxcdGludCBlcnI7XFxuIDIxODpcXHRcXG4gMjE5OlxcdFxcdGVyciA9IHNzY2FuZihidWYsIFxcXCIldVxcXCIsIFxcdTAwMjZpZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAzOjE1OjA3Ljg2MzU3Nzk2OFoiLCJTZXEiOjI3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMDU1NjQwNTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2Ygd2hhdCBJJ2QgYmUgdGhpbmtpbmcsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCBhbmQgYXNzdW1pbmcgYSBoaWdoIGxldmVsIG9mIGV4cGVydGlzZSBpbiBuZXR3b3JraW5nIGFuZCBrZXJuZWwgaW50ZXJuYWxzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBOZXRkZXZzaW0gQnVzKipcblxuQWxyaWdodCwgdG8gdHJ1bHkgZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBoZXJlLCBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiBob3cgdGhpcyBgbmV0ZGV2c2ltYCBidXMgb3BlcmF0ZXMuIEknbSBnb2luZyB0byBqdW1wIGludG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIgYW5kIHNjcnV0aW5pemUgbGluZXMgNDQwIHRvIDQ5MCBvZiBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jYC4gSSBleHBlY3QgdGhvc2UgbGluZXMgdG8gZXhwb3NlIHRoZSBjb3JlIG1lY2hhbmljcywgdGhlIGNyaXRpY2FsIHBhdGgsIG9mIGRhdGEgZmxvdyBhbmQgZGV2aWNlIGludGVyYWN0aW9uIHdpdGhpbiB0aGlzIHNpbXVsYXRlZCBlbnZpcm9ubWVudC4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgc2VjdGlvbiBsaWtlbHkgZW5jb21wYXNzZXMgdGhlIG1vc3QgaW1wb3J0YW50IGxvZ2ljIGZvciByZXNvdXJjZSBhbGxvY2F0aW9uIGFuZCBpbml0aWFsaXphdGlvbiBvZiB0aGUgc2ltdWxhdGVkIGRldmljZXMsIG9yIHRoZSB2ZXJ5IGNvcmUgb2YgaG93IHRoZSBidXMgaGFuZGxlcyBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIHNpbXVsYXRlZCBuZXR3b3JrIGRldmljZXMuIEkgbmVlZCB0byBzZWUgaG93IHRoZSBzb2Z0d2FyZSBhYnN0cmFjdGlvbnMgbWFwIG9udG8gdGhlIHBoeXNpY2FsIHdvcmxkIHRoYXQgaXMgYmVpbmcgbW9kZWxsZWQgaGVyZS4gSSdtIGxvb2tpbmcgZm9yIHRoZSBnbHVlIHRoYXQgaG9sZHMgdGhlIHdob2xlIHNpbXVsYXRpb24gdG9nZXRoZXIuIEkgYWxzbyB3YW50IHRvIG9ic2VydmUgdGhlIGRhdGEgc3RydWN0dXJlcyB0aGF0IG1hbmFnZSB0aGUgc2ltdWxhdGVkIGRldmljZXM7IGhvdyBpcyB0aGVpciBzdGF0dXMgdHJhY2tlZD8gSG93IGFyZSB0aGUgaW50ZXJydXB0cyBhbmQgZXZlbnQgdHJpZ2dlcnMgZW11bGF0ZWQ/IEFyZSB0aGVyZSBhbnkgY2xldmVyIHRlY2huaXF1ZXMgZm9yIG1pbmltaXppbmcgb3ZlcmhlYWQgaW4gdGhpcyBzaW11bGF0aW9uPyBVbHRpbWF0ZWx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgaXQgY2FuIGFjaGlldmUgdGhlIGxldmVsIG9mIHJlYWxpc20gdGhhdCBsZXRzIGl0IGJlIHVzZWQgZm9yIG1lYW5pbmdmdWwgdGVzdGluZyBhbmQgZGV2ZWxvcG1lbnQgb2YgdGhlIHJlYWwgbmV0d29ya2luZyBzdGFjay5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA3OCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDM6MTU6MTAuOTE5MjIxNzM5WiIsIlNlcSI6MjgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDQwLFxuICBcIkxpbmVDb3VudFwiOiA1NVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDQwOlxcdFxcdC5wcm9iZVxcdFxcdD0gbnNpbV9idXNfcHJvYmUsXFxuIDQ0MTpcXHRcXHQucmVtb3ZlXFx0XFx0PSBuc2ltX2J1c19yZW1vdmUsXFxuIDQ0MjpcXHRcXHQubnVtX3ZmXFx0XFx0PSBuc2ltX251bV92ZixcXG4gNDQzOlxcdH07XFxuIDQ0NDpcXHRcXG4gNDQ1OlxcdHN0YXRpYyBzdHJ1Y3QgbnNpbV9idXNfZGV2ICpcXG4gNDQ2OlxcdG5zaW1fYnVzX2Rldl9uZXcodW5zaWduZWQgaW50IGlkLCB1bnNpZ25lZCBpbnQgcG9ydF9jb3VudCwgdW5zaWduZWQgaW50IG51bV9xdWV1ZXMpXFxuIDQ0NzpcXHR7XFxuIDQ0ODpcXHRcXHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXY7XFxuIDQ0OTpcXHRcXHRpbnQgZXJyO1xcbiA0NTA6XFx0XFxuIDQ1MTpcXHRcXHRuc2ltX2J1c19kZXYgPSBremFsbG9jX29iaigqbnNpbV9idXNfZGV2KTtcXG4gNDUyOlxcdFxcdGlmICghbnNpbV9idXNfZGV2KVxcbiA0NTM6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XFxuIDQ1NDpcXHRcXG4gNDU1OlxcdFxcdGVyciA9IGlkYV9hbGxvY19yYW5nZShcXHUwMDI2bnNpbV9idXNfZGV2X2lkcywgaWQsIGlkLCBHRlBfS0VSTkVMKTtcXG4gNDU2OlxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbiA0NTc6XFx0XFx0XFx0Z290byBlcnJfbnNpbV9idXNfZGV2X2ZyZWU7XFxuIDQ1ODpcXHRcXHRuc2ltX2J1c19kZXYtXFx1MDAzZWRldi5pZCA9IGVycjtcXG4gNDU5OlxcdFxcdG5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2LmJ1cyA9IFxcdTAwMjZuc2ltX2J1cztcXG4gNDYwOlxcdFxcdG5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2LnR5cGUgPSBcXHUwMDI2bnNpbV9idXNfZGV2X3R5cGU7XFxuIDQ2MTpcXHRcXHRuc2ltX2J1c19kZXYtXFx1MDAzZXBvcnRfY291bnQgPSBwb3J0X2NvdW50O1xcbiA0NjI6XFx0XFx0bnNpbV9idXNfZGV2LVxcdTAwM2VudW1fcXVldWVzID0gbnVtX3F1ZXVlcztcXG4gNDYzOlxcdFxcdG5zaW1fYnVzX2Rldi1cXHUwMDNlaW5pdGlhbF9uZXQgPSBjdXJyZW50LVxcdTAwM2Vuc3Byb3h5LVxcdTAwM2VuZXRfbnM7XFxuIDQ2NDpcXHRcXHQvKiBEaXNhbGxvdyB1c2luZyBuc2ltX2J1c19kZXYgKi9cXG4gNDY1OlxcdFxcdHNtcF9zdG9yZV9yZWxlYXNlKFxcdTAwMjZuc2ltX2J1c19kZXYtXFx1MDAzZWluaXQsIGZhbHNlKTtcXG4gNDY2OlxcdFxcbiA0Njc6XFx0XFx0cmVmY291bnRfaW5jKFxcdTAwMjZuc2ltX2J1c19kZXZzKTtcXG4gNDY4OlxcdFxcdGVyciA9IGRldmljZV9yZWdpc3RlcihcXHUwMDI2bnNpbV9idXNfZGV2LVxcdTAwM2VkZXYpO1xcbiA0Njk6XFx0XFx0aWYgKGVycilcXG4gNDcwOlxcdFxcdFxcdGdvdG8gZXJyX25zaW1fYnVzX2Rldl9pZF9mcmVlO1xcbiA0NzE6XFx0XFxuIDQ3MjpcXHRcXHRyZXR1cm4gbnNpbV9idXNfZGV2O1xcbiA0NzM6XFx0XFxuIDQ3NDpcXHRlcnJfbnNpbV9idXNfZGV2X2lkX2ZyZWU6XFxuIDQ3NTpcXHRcXHRpZGFfZnJlZShcXHUwMDI2bnNpbV9idXNfZGV2X2lkcywgbnNpbV9idXNfZGV2LVxcdTAwM2VkZXYuaWQpO1xcbiA0NzY6XFx0XFx0cHV0X2RldmljZShcXHUwMDI2bnNpbV9idXNfZGV2LVxcdTAwM2VkZXYpO1xcbiA0Nzc6XFx0XFx0bnNpbV9idXNfZGV2ID0gTlVMTDtcXG4gNDc4OlxcdGVycl9uc2ltX2J1c19kZXZfZnJlZTpcXG4gNDc5OlxcdFxcdGtmcmVlKG5zaW1fYnVzX2Rldik7XFxuIDQ4MDpcXHRcXHRyZXR1cm4gRVJSX1BUUihlcnIpO1xcbiA0ODE6XFx0fVxcbiA0ODI6XFx0XFxuIDQ4MzpcXHRzdGF0aWMgdm9pZCBuc2ltX2J1c19kZXZfZGVsKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldilcXG4gNDg0OlxcdHtcXG4gNDg1OlxcdFxcdC8qIERpc2FsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqL1xcbiA0ODY6XFx0XFx0c21wX3N0b3JlX3JlbGVhc2UoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlaW5pdCwgZmFsc2UpO1xcbiA0ODc6XFx0XFx0aWRhX2ZyZWUoXFx1MDAyNm5zaW1fYnVzX2Rldl9pZHMsIG5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2LmlkKTtcXG4gNDg4OlxcdFxcdGRldmljZV91bnJlZ2lzdGVyKFxcdTAwMjZuc2ltX2J1c19kZXYtXFx1MDAzZWRldik7XFxuIDQ4OTpcXHR9XFxuIDQ5MDpcXHRcXG4gNDkxOlxcdHN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2RyaXZlciBuc2ltX2RyaXZlciA9IHtcXG4gNDkyOlxcdFxcdC5uYW1lXFx0XFx0PSBEUlZfTkFNRSxcXG4gNDkzOlxcdFxcdC5idXNcXHRcXHQ9IFxcdTAwMjZuc2ltX2J1cyxcXG4gNDk0OlxcdFxcdC5vd25lclxcdFxcdD0gVEhJU19NT0RVTEUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAzOjE1OjEwLjkxOTM3NTk1OVoiLCJTZXEiOjI5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4Mjk0MDQ2MTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2gncyBJbXBhY3Qgb24gRGV2aWNlIFJlZ2lzdHJhdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvcmUgY2hhbmdlIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4gSXQgc2VlbXMgdGhhdCB0aGUgYHJlZmNvdW50X2luYyhcdTAwMjZuc2ltX2J1c19kZXZzKWAgY2FsbCBoYXMgYmVlbiBzaGlmdGVkLiBTcGVjaWZpY2FsbHksIGl0IHdhcyBwcmV2aW91c2x5IGxvY2F0ZWQgaW4gYG5ld19kZXZpY2Vfc3RvcmVgLCAqYWZ0ZXIqIHRoZSBjYWxsIHRvIGBuc2ltX2J1c19kZXZfbmV3KClgLiBOb3csIGl0J3MgYmVlbiBtb3ZlZCAqaW50byogYG5zaW1fYnVzX2Rldl9uZXcoKWAsIGltbWVkaWF0ZWx5ICpiZWZvcmUqIHRoZSBjYWxsIHRvIGBkZXZpY2VfcmVnaXN0ZXIoXHUwMDI2bnNpbV9idXNfZGV2LVx1MDAzZWRldilgLlxuXG5UaGUgbG9naWMgYmVoaW5kIHRoaXMgaXMgbGlrZWx5IGRyaXZlbiBieSBlcnJvciBoYW5kbGluZyBkdXJpbmcgZGV2aWNlIHJlZ2lzdHJhdGlvbi4gSWYgYGRldmljZV9yZWdpc3RlcmAgd2l0aGluIGBuc2ltX2J1c19kZXZfbmV3KClgIGZhaWxzLCBpdCBjYWxscyBgcHV0X2RldmljZWAsIHdoaWNoIHRyaWdnZXJzIHRoZSBkZXZpY2UgcmVsZWFzZSBjYWxsYmFjaywgYG5zaW1fYnVzX2Rldl9yZWxlYXNlKClgLiBUaGlzIHJlbGVhc2UgZnVuY3Rpb24gaXMgY3JpdGljYWw7IGl0IGRlY3JlbWVudHMgdGhlIGBuc2ltX2J1c19kZXZzYCByZWZjb3VudC5cblxuVGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uIGNyZWF0ZWQgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS4gSWYgYG5zaW1fYnVzX2Rldl9uZXcoKWAgZmFpbGVkIGR1cmluZyB0aGUgYGRldmljZV9yZWdpc3RlcmAgY2FsbCwgYG5zaW1fYnVzX2Rldl9yZWxlYXNlKClgIHdvdWxkIGRlY3JlbWVudCB0aGUgcmVmY291bnQgKndpdGhvdXQqIGEgY29ycmVzcG9uZGluZyBpbmNyZW1lbnQuIFRoaXMgY291bGQgbGVhZCB0byBhIHJlZmNvdW50IHVuZGVyZmxvdywgcG90ZW50aWFsbHkgY2F1c2luZyBhbGwgc29ydHMgb2YgaGVhZGFjaGVzIGxhdGVyLiBUaGlzIGNvdWxkIGFsc28gb2NjdXIgaWYgYW5vdGhlciBjYWxsZXIsIGluIHBhcmFsbGVsLCB3YXMgY2FsbGluZyBgbnNpbV9idXNfZGV2X25ldygpYC5cblxuVGhlcmVmb3JlLCBtb3ZpbmcgdGhlIGluY3JlbWVudCBlbnN1cmVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG9ubHkgaW5jcmVhc2VkIHdoZW4gdGhlIGRldmljZSByZWdpc3RyYXRpb24gaXMgYWN0dWFsbHkgY29uc2lkZXJlZCBzdWNjZXNzZnVsLCBhcyBpbiwgdGhlIGRldmljZSBpcyBub3cgcmVnaXN0ZXJlZCBpbiB0aGUgc3lzdGVtLiBUaGUgbmV3IG9yZGVyIG9mIG9wZXJhdGlvbnMgaXMgZXNzZW50aWFsIGZvciBjb3JyZWN0bmVzcy4gVGhlIGRlY3JlbWVudCwgaW4gY2FzZSBvZiBhIHJlZ2lzdHJhdGlvbiBmYWlsdXJlLCB3aWxsIHN0aWxsIGZpbmQgYSBwb3NpdGl2ZSBudW1iZXIgdG8gd29yayB3aXRoLlxuXG5UbyBmdXJ0aGVyIGNvbmZpcm0gdGhpcywgbGV0J3MgcXVpY2tseSBjaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBkaXJlY3QgY2FsbGVycyB0byBgbnNpbV9idXNfZGV2X25ldygpYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQwNSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAzOjE1OjE5LjIxMzQyNDg1NloiLCJTZXEiOjMwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUzNTM0MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnNpbV9idXNfZGV2X25ld1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz02NT1uZXdfcG9ydF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTEwMC1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTAxOnN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBuc2ltX2J1c19kZXZfbmV3X3BvcnRfYXR0ciA9IF9fQVRUUl9XTyhuZXdfcG9ydCk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTEwMi1cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz0xMjQ9c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKm5zaW1fYnVzX2Rldl9hdHRyc1tdID0ge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xMjUtXFx0XFx1MDAyNm5zaW1fYnVzX2Rldl9udW12ZnNfYXR0ci5hdHRyLFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxMjY6XFx0XFx1MDAyNm5zaW1fYnVzX2Rldl9uZXdfcG9ydF9hdHRyLmF0dHIsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTEyNy1cXHRcXHUwMDI2bnNpbV9idXNfZGV2X2RlbF9wb3J0X2F0dHIuYXR0cixcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz0xNTU9c3RhdGljIHN0cnVjdCBuc2ltX2J1c19kZXYgKlxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxNTY6bnNpbV9idXNfZGV2X25ldyh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBwb3J0X2NvdW50LCB1bnNpZ25lZCBpbnQgbnVtX3F1ZXVlcyk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTE1Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz0xNTk9bmV3X2RldmljZV9zdG9yZShjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTkwLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxOTE6XFx0bnNpbV9idXNfZGV2ID0gbnNpbV9idXNfZGV2X25ldyhpZCwgcG9ydF9jb3VudCwgbnVtX3F1ZXVlcyk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTE5Mi1cXHRpZiAoSVNfRVJSKG5zaW1fYnVzX2RldikpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz00NDU9c3RhdGljIHN0cnVjdCBuc2ltX2J1c19kZXYgKlxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NDY6bnNpbV9idXNfZGV2X25ldyh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBwb3J0X2NvdW50LCB1bnNpZ25lZCBpbnQgbnVtX3F1ZXVlcylcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDQ3LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDM6MTU6MTkuMjc4NzgzMTA1WiIsIlNlcSI6MzEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwNDY0OTIwMDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBuc2ltX2J1c19kZXZzIFJlZmNvdW50aW5nIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCByZWZjb3VudGluZyBmaXggZm9yIGBuc2ltX2J1c19kZXZzYCBpbiByZWxhdGlvbiB0byBgZGV2aWNlX3JlZ2lzdGVyYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHJpZ29yb3VzbHkgYXNzZXNzIGlmIHRoaXMgY2hhbmdlIGNvdWxkIGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBMZXQncyBicmVhayBpdCBkb3duOlxuXG5GaXJzdCwgaXMgdGhlcmUgYW55IHBvc3NpYmlsaXR5IG9mIGtlcm5lbCBzdHJ1Y3R1cmVzLCB3aXRoIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgZmllbGRzIG9yIHBhZGRpbmcsIGJlaW5nIHNlbnQgdG8gdXNlciBzcGFjZT8gTm8sIG5vdCBoZXJlLiBTZWNvbmRseSwgYW0gSSBzZWVpbmcgYW55IGNvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IHJlbGllcyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8gTm9wZS4gTmV4dCwgYXJlIHdlIGFsbG9jYXRpbmcgb3IgaW5pdGlhbGl6aW5nIGFueSBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBjb3VsZCBiZSByZWFkPyBObywgdGhhdCdzIG5vdCB0aGUgY2FzZTsgYG5zaW1fYnVzX2RldmAgaXMgYWxsb2NhdGVkIHVzaW5nIGBremFsbG9jX29iamAsIHdoaWNoIGlzIHNhZmUuIEFuZCBmaW5hbGx5LCB3aGF0IGFib3V0IGJvdW5kcyBjaGVja3MsIG9yIGRlYWxpbmcgd2l0aCBsZW5ndGhzIGluIGEgd2F5IHRoYXQgY291bGQgY2F1c2UgcHJvYmxlbXM/IE5vLCBub3RoaW5nIG9mIGNvbmNlcm4gdGhlcmUuXG5cblRoZSBwYXRjaCBzaW1wbHkgbW92ZXMgYSBgcmVmY291bnRfaW5jKFx1MDAyNm5zaW1fYnVzX2RldnMpYCBmcm9tIGBuZXdfZGV2aWNlX3N0b3JlYCB0byBgbnNpbV9idXNfZGV2X25ld2AuIFRoaXMgaXMgc29sZWx5IGFib3V0IHJlZmVyZW5jZSBjb3VudGluZyBsaWZlY3ljbGUsIHN5bmNocm9uaXphdGlvbiwgYW5kIGF2b2lkaW5nIHBvdGVudGlhbCBpc3N1ZXMgbGlrZSBsZWFrcywgdXNlLWFmdGVyLWZyZWUsIG9yIHVuZGVyZmxvdy4gVGhlc2UgYXJlYXMgYXJlIGFscmVhZHkgd2VsbC1jb3ZlcmVkIGJ5IHN0YW5kYXJkIHJlZmNvdW50IGNoZWNrcyBhbmQgS0FTQU4uIEtNU0FOIGlzbid0IG5lZWRlZCBoZXJlLlxuXG5Ob3csIGxldCBtZSBkb3VibGUtY2hlY2sgYWxsIHRob3NlIGNyaXRlcmlhIHRvIGZvcm11bGF0ZSBhIHNvbGlkIEtNU0FOUmVhc29uaW5nOlxuXG4qICAgKipOZWVkc0tNU0FOOioqIGBmYWxzZWBcbiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggaXMganVzdCBtb3ZpbmcgYSByZWZlcmVuY2UgY291bnQgaW5jcmVtZW50IChgcmVmY291bnRfaW5jKFx1MDAyNm5zaW1fYnVzX2RldnMpYCkgZnJvbSBgbmV3X2RldmljZV9zdG9yZWAgaW50byBgbnNpbV9idXNfZGV2X25ld2AgcmlnaHQgYmVmb3JlIHRoZSBgZGV2aWNlX3JlZ2lzdGVyYCBjYWxsLiBJdCdzIGFsbCBhYm91dCByZWZlcmVuY2UgY291bnRpbmcgdG8gZW5zdXJlIGNvcnJlY3QgcGFpcmluZyB3aXRoIGRldmljZSByZWxlYXNlIGFuZCBjbGVhbnVwLlxuICAgICogICBJdCBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgYnVmZmVycywgb3IgYW55IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIHRoYXQgYXJlIHJlYWQuXG4gICAgKiAgIE5vIGRhdGEgaXMgYmVpbmcgbGVha2VkIHRvIHVzZXIgc3BhY2UgYmVjYXVzZSBpdCdzIHB1cmVseSBpbnRlcm5hbC5cbiAgICAqICAgQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhlIHJlZmNvdW50aW5nIGxvZ2ljLCB0aGUgbGlmZWN5Y2xlLCBvciBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW9zIGFyZSBhbHJlYWR5IGNvdmVyZWQgYnkgdGhlIHN0YW5kYXJkIGtlcm5lbCByZWZjb3VudCBhc3NlcnRpb25zIGFuZCBieSBLQVNBTi5cblxuQWxyaWdodCwgSSdtIGNvbmZpZGVudCBpbiB0aGF0IGFuYWx5c2lzLiBMZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3MzAsIk91dHB1dFRva2VucyI6MTY0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAzOjE1OjI5Ljc0MzcwNjQzN1oiLCJTZXEiOjMyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2OTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW92ZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBpbmNyZW1lbnQgYHJlZmNvdW50X2luYyhcXHUwMDI2bnNpbV9idXNfZGV2cylgIGZyb20gYG5ld19kZXZpY2Vfc3RvcmUoKWAgaW50byBgbnNpbV9idXNfZGV2X25ldygpYCBwcmlvciB0byBjYWxsaW5nIGBkZXZpY2VfcmVnaXN0ZXIoKWAuIFRoaXMgZml4ZXMgcmVmZXJlbmNlIGNvdW50aW5nIGJhbGFuY2UgaW4gZXJyb3IvcmVsZWFzZSBwYXRocy4gXFxuXFxuVGhlIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgYWx0ZXIgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZSB1c2FnZSwgYm91bmRzIGNoZWNrcywgb3Iga2VybmVsLXRvLXVzZXIgaW5mbyBsZWFrcy4gQW55IGxpZmVjeWNsZSBvciByZWZlcmVuY2UgY291bnRpbmcgZXJyb3JzIChlLmcuIHVzZS1hZnRlci1mcmVlLCByZWZjb3VudCB1bmRlcmZsb3cvb3ZlcmZsb3cpIGFyZSBjb3ZlcmVkIGJ5IHJlZmNvdW50X3QgY2hlY2tzIGFuZCBzdGFuZGFyZCBLQVNBTi9MT0NLREVQIGRldGVjdG9ycy4gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW92ZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBpbmNyZW1lbnQgYHJlZmNvdW50X2luYyhcXHUwMDI2bnNpbV9idXNfZGV2cylgIGZyb20gYG5ld19kZXZpY2Vfc3RvcmUoKWAgaW50byBgbnNpbV9idXNfZGV2X25ldygpYCBwcmlvciB0byBjYWxsaW5nIGBkZXZpY2VfcmVnaXN0ZXIoKWAuIFRoaXMgZml4ZXMgcmVmZXJlbmNlIGNvdW50aW5nIGJhbGFuY2UgaW4gZXJyb3IvcmVsZWFzZSBwYXRocy4gXFxuXFxuVGhlIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgYWx0ZXIgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZSB1c2FnZSwgYm91bmRzIGNoZWNrcywgb3Iga2VybmVsLXRvLXVzZXIgaW5mbyBsZWFrcy4gQW55IGxpZmVjeWNsZSBvciByZWZlcmVuY2UgY291bnRpbmcgZXJyb3JzIChlLmcuIHVzZS1hZnRlci1mcmVlLCByZWZjb3VudCB1bmRlcmZsb3cvb3ZlcmZsb3cpIGFyZSBjb3ZlcmVkIGJ5IHJlZmNvdW50X3QgY2hlY2tzIGFuZCBzdGFuZGFyZCBLQVNBTi9MT0NLREVQIGRldGVjdG9ycy4gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowbh2vc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-01 02:25:03 +0000 UTC FinishedAt: 2026-09-01 03:15:31 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "7b120a771943ffc3cbce787daecdd23eccb0505f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVSIM", "DEBUG_FS", "INET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "7b120a771943ffc3cbce787daecdd23eccb0505f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVSIM", "DEBUG_FS", "INET" ], "series_id": "a20673d7-e74a-4ac8-b54a-d9283b72ae63" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nsim_drv_probe", "nsim_drv_remove", "nsim_drv_configure_vfs", "nsim_bus_init", "nsim_bus_exit" ], "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+CgkJCTx0ZD4yMDI2LzA5LzAxIDAzOjE0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7LAogICAgJiMzNDtERUJVR19GUyYjMzQ7LAogICAgJiMzNDtJTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bnNpbV9kcnZfcHJvYmUmIzM0OywKICAgICYjMzQ7bnNpbV9kcnZfcmVtb3ZlJiMzNDssCiAgICAmIzM0O25zaW1fZHJ2X2NvbmZpZ3VyZV92ZnMmIzM0OywKICAgICYjMzQ7bnNpbV9idXNfaW5pdCYjMzQ7LAogICAgJiMzNDtuc2ltX2J1c19leGl0JiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW92ZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBpbmNyZW1lbnQgYHJlZmNvdW50X2luYyhcdTAwMjZuc2ltX2J1c19kZXZzKWAgZnJvbSBgbmV3X2RldmljZV9zdG9yZSgpYCBpbnRvIGBuc2ltX2J1c19kZXZfbmV3KClgIHByaW9yIHRvIGNhbGxpbmcgYGRldmljZV9yZWdpc3RlcigpYC4gVGhpcyBmaXhlcyByZWZlcmVuY2UgY291bnRpbmcgYmFsYW5jZSBpbiBlcnJvci9yZWxlYXNlIHBhdGhzLiBcblxuVGhlIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgYWx0ZXIgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZSB1c2FnZSwgYm91bmRzIGNoZWNrcywgb3Iga2VybmVsLXRvLXVzZXIgaW5mbyBsZWFrcy4gQW55IGxpZmVjeWNsZSBvciByZWZlcmVuY2UgY291bnRpbmcgZXJyb3JzIChlLmcuIHVzZS1hZnRlci1mcmVlLCByZWZjb3VudCB1bmRlcmZsb3cvb3ZlcmZsb3cpIGFyZSBjb3ZlcmVkIGJ5IHJlZmNvdW50X3QgY2hlY2tzIGFuZCBzdGFuZGFyZCBLQVNBTi9MT0NLREVQIGRldGVjdG9ycy4gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkanVzdHMgdGhlIGRldmljZSByZWZlcmVuY2UgY291bnRpbmcgZm9yIG5ldGRldnNpbSBidXMgZGV2aWNlcyBieSBtb3ZpbmcgcmVmY291bnRfaW5jKFx1MDAyNm5zaW1fYnVzX2RldnMpIGludG8gbnNpbV9idXNfZGV2X25ldygpIGJlZm9yZSBkZXZpY2VfcmVnaXN0ZXIoKSwgZml4aW5nIGEgcmVmY291bnQgdW5kZXJmbG93IG9uIGRldmljZSByZWdpc3RyYXRpb24gZmFpbHVyZS4gTmV0ZGV2c2ltIGlzIGEgc29mdHdhcmUtc2ltdWxhdGVkIG5ldHdvcmsgZGV2aWNlIGRyaXZlciBmdWxseSByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAzOjE0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNzVlMjJjOWNmODZlOWI1ZWE1Mzc2YjM5ZTdiMDFhMTZjNjJhNDc5Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDEgMDM6MTQ6MDggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jIGIvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jXG5pbmRleCA1YzU1YzMwODQ4N2I0Li40MjZmYjQzOGI5MjIxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmNcbkBAIC0xOTQsNyAmIzQzOzE5NCw2IEBAIG5ld19kZXZpY2Vfc3RvcmUoY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KVxuIFx0XHRnb3RvIGVycjtcbiBcdH1cbiBcbi1cdHJlZmNvdW50X2luYyhcdTAwMjZuc2ltX2J1c19kZXZzKTtcbiBcdC8qIEFsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqL1xuIFx0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2bnNpbV9idXNfZGV2LVx1MDAzZWluaXQsIHRydWUpO1xuIFxuQEAgLTQ2NSw2ICYjNDM7NDY0LDcgQEAgbnNpbV9idXNfZGV2X25ldyh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBwb3J0X2NvdW50LCB1bnNpZ25lZCBpbnQgbnVtX3F1ZXVcbiBcdC8qIERpc2FsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqL1xuIFx0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2bnNpbV9idXNfZGV2LVx1MDAzZWluaXQsIGZhbHNlKTtcbiBcbiYjNDM7XHRyZWZjb3VudF9pbmMoXHUwMDI2bnNpbV9idXNfZGV2cyk7XG4gXHRlcnIgPSBkZXZpY2VfcmVnaXN0ZXIoXHUwMDI2bnNpbV9idXNfZGV2LVx1MDAzZWRldik7XG4gXHRpZiAoZXJyKVxuIFx0XHRnb3RvIGVycl9uc2ltX2J1c19kZXZfaWRfZnJlZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMzoxNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRERVZTSU0mIzM0OywKICAgICYjMzQ7REVCVUdfRlMmIzM0OywKICAgICYjMzQ7SU5FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25zaW1fZHJ2X3Byb2JlJiMzNDssCiAgICAmIzM0O25zaW1fZHJ2X3JlbW92ZSYjMzQ7LAogICAgJiMzNDtuc2ltX2Rydl9jb25maWd1cmVfdmZzJiMzNDssCiAgICAmIzM0O25zaW1fYnVzX2luaXQmIzM0OywKICAgICYjMzQ7bnNpbV9idXNfZXhpdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGp1c3RzIHRoZSBkZXZpY2UgcmVmZXJlbmNlIGNvdW50aW5nIGZvciBuZXRkZXZzaW0gYnVzIGRldmljZXMgYnkgbW92aW5nIHJlZmNvdW50X2luYyhcdTAwMjZuc2ltX2J1c19kZXZzKSBpbnRvIG5zaW1fYnVzX2Rldl9uZXcoKSBiZWZvcmUgZGV2aWNlX3JlZ2lzdGVyKCksIGZpeGluZyBhIHJlZmNvdW50IHVuZGVyZmxvdyBvbiBkZXZpY2UgcmVnaXN0cmF0aW9uIGZhaWx1cmUuIE5ldGRldnNpbSBpcyBhIHNvZnR3YXJlLXNpbXVsYXRlZCBuZXR3b3JrIGRldmljZSBkcml2ZXIgZnVsbHkgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDc1ZTIyYzljZjg2ZTliNWVhNTM3NmIzOWU3YjAxYTE2YzYyYTQ3OWMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCAxIDAzOjE0OjA4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jIGIvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jCmluZGV4IDVjNTVjMzA4NDg3YjQuLjQyNmZiNDM4YjkyMjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMKQEAgLTE5NCw3ICYjNDM7MTk0LDYgQEAgbmV3X2RldmljZV9zdG9yZShjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCiAJCWdvdG8gZXJyOwogCX0KIAotCXJlZmNvdW50X2luYygmYW1wO25zaW1fYnVzX2RldnMpOwogCS8qIEFsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqLwogCXNtcF9zdG9yZV9yZWxlYXNlKCZhbXA7bnNpbV9idXNfZGV2LSZndDtpbml0LCB0cnVlKTsKIApAQCAtNDY1LDYgJiM0Mzs0NjQsNyBAQCBuc2ltX2J1c19kZXZfbmV3KHVuc2lnbmVkIGludCBpZCwgdW5zaWduZWQgaW50IHBvcnRfY291bnQsIHVuc2lnbmVkIGludCBudW1fcXVldQogCS8qIERpc2FsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqLwogCXNtcF9zdG9yZV9yZWxlYXNlKCZhbXA7bnNpbV9idXNfZGV2LSZndDtpbml0LCBmYWxzZSk7CiAKJiM0MzsJcmVmY291bnRfaW5jKCZhbXA7bnNpbV9idXNfZGV2cyk7CiAJZXJyID0gZGV2aWNlX3JlZ2lzdGVyKCZhbXA7bnNpbV9idXNfZGV2LSZndDtkZXYpOwogCWlmIChlcnIpCiAJCWdvdG8gZXJyX25zaW1fYnVzX2Rldl9pZF9mcmVlOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMzoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjA1CgkJCQkJCQlvdXRwdXQ6IDExNAoJCQkJCQkJdGhvdWdodHM6IDEwMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIFRoaXMgTmV0d29yayBEZXZpY2UgU2ltdWxhdGlvbiBQYXRjaCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgcGF0Y2ggYW5kIHRoZSBhc3NvY2lhdGVkIGluc3RydWN0aW9ucy4gTXkgZmlyc3QgbW92ZSBpcyBhbHdheXMgdG8gYW5hbHl6ZSB0aGUgZGlmZiBkaXJlY3RseS4gT2theSwgaXQmIzM5O3MgbW9kaWZ5aW5nIGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmNgLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTm93IEkgbmVlZCB0byBncmFzcCB0aGUgY29udGV4dCBvZiB0aGUgbW9kaWZpY2F0aW9uLCBzbyBJJiMzOTtsbCB6ZXJvIGluIG9uIHRoYXQgYGJ1cy5jYCBmaWxlLiBJJiMzOTttIGdvaW5nIHRvIGZvY3VzIG9uIGxpbmVzIGFyb3VuZCAxOTAtMjEwIGFuZCA0NjAtNDgwIOKAkyB0aG9zZSBhcmUgdXN1YWxseSB0aGUga2V5IHNlY3Rpb25zIGFyb3VuZCB0aGUgY2hhbmdlLCBhbmQgbGlrZWx5IHdoZXJlIHRoZSBiZWhhdmlvciBvZiB0aGUgcGF0Y2ggd2lsbCBiZWNvbWUgY2xlYXIuIEkmIzM5O2xsIGFsc28gZ2xhbmNlIGF0IHRoZSBLY29uZmlnIGZpbGUgaW4gYGRyaXZlcnMvbmV0L25ldGRldnNpbS9gLiBUaGF0IGdpdmVzIG1lIHRoZSBjb21waWxhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgZm9yIHRoYXQgbW9kdWxlLCBhbHdheXMgZ29vZCB0byBrbm93LiBGaW5hbGx5LCBiZWZvcmUgSSBkZWNpZGUgb24gbmV4dCBzdGVwcywgSSYjMzk7bSB0aGlua2luZyBJJiMzOTtsbCBuZWVkIHRvIHJ1biBzb21lIGFuYWx5c2lzIHRvb2xzIHRvIG1ha2Ugc3VyZSBJIGFtIGNvbXBsZXRlbHkgY2xlYXIgb24gdGhlIGltcGxpY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTgwOlx0XHRcdHByX2VycihcJiMzNDtGb3JtYXQgZm9yIGFkZGluZyBuZXcgZGV2aWNlIGlzIFxcXCYjMzQ7aWQgcG9ydF9jb3VudCBudW1fcXVldWVzXFxcJiMzNDsgKHVpbnQgdWludCB1aW50KS5cXG5cJiMzNDspO1xuIDE4MTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiAxODI6XHRcdH1cbiAxODM6XHRcbiAxODQ6XHRcdG11dGV4X2xvY2soXHUwMDI2bnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XG4gMTg1Olx0XHQvKiBQcmV2ZW50IHRvIHVzZSByZXNvdXJjZSBiZWZvcmUgaW5pdGlhbGl6YXRpb24uICovXG4gMTg2Olx0XHRpZiAoIXNtcF9sb2FkX2FjcXVpcmUoXHUwMDI2bnNpbV9idXNfZW5hYmxlKSkge1xuIDE4NzpcdFx0XHRlcnIgPSAtRUJVU1k7XG4gMTg4Olx0XHRcdGdvdG8gZXJyO1xuIDE4OTpcdFx0fVxuIDE5MDpcdFxuIDE5MTpcdFx0bnNpbV9idXNfZGV2ID0gbnNpbV9idXNfZGV2X25ldyhpZCwgcG9ydF9jb3VudCwgbnVtX3F1ZXVlcyk7XG4gMTkyOlx0XHRpZiAoSVNfRVJSKG5zaW1fYnVzX2RldikpIHtcbiAxOTM6XHRcdFx0ZXJyID0gUFRSX0VSUihuc2ltX2J1c19kZXYpO1xuIDE5NDpcdFx0XHRnb3RvIGVycjtcbiAxOTU6XHRcdH1cbiAxOTY6XHRcbiAxOTc6XHRcdC8qIEFsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqL1xuIDE5ODpcdFx0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2bnNpbV9idXNfZGV2LVx1MDAzZWluaXQsIHRydWUpO1xuIDE5OTpcdFxuIDIwMDpcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZuc2ltX2J1c19kZXYtXHUwMDNlbGlzdCwgXHUwMDI2bnNpbV9idXNfZGV2X2xpc3QpO1xuIDIwMTpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0X2xvY2spO1xuIDIwMjpcdFxuIDIwMzpcdFx0cmV0dXJuIGNvdW50O1xuIDIwNDpcdGVycjpcbiAyMDU6XHRcdG11dGV4X3VubG9jayhcdTAwMjZuc2ltX2J1c19kZXZfbGlzdF9sb2NrKTtcbiAyMDY6XHRcdHJldHVybiBlcnI7XG4gMjA3Olx0fVxuIDIwODpcdHN0YXRpYyBCVVNfQVRUUl9XTyhuZXdfZGV2aWNlKTtcbiAyMDk6XHRcbiAyMTA6XHRzdGF0aWMgdm9pZCBuc2ltX2J1c19kZXZfZGVsKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2Rldik7XG4gMjExOlx0XG4gMjEyOlx0c3RhdGljIHNzaXplX3RcbiAyMTM6XHRkZWxfZGV2aWNlX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcbiAyMTQ6XHR7XG4gMjE1Olx0XHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsICp0bXA7XG4gMjE2Olx0XHR1bnNpZ25lZCBpbnQgaWQ7XG4gMjE3Olx0XHRpbnQgZXJyO1xuIDIxODpcdFxuIDIxOTpcdFx0ZXJyID0gc3NjYW5mKGJ1ZiwgXCYjMzQ7JXVcJiMzNDssIFx1MDAyNmlkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDUwOlx0XG4gNDUxOlx0XHRuc2ltX2J1c19kZXYgPSBremFsbG9jX29iaigqbnNpbV9idXNfZGV2KTtcbiA0NTI6XHRcdGlmICghbnNpbV9idXNfZGV2KVxuIDQ1MzpcdFx0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbiA0NTQ6XHRcbiA0NTU6XHRcdGVyciA9IGlkYV9hbGxvY19yYW5nZShcdTAwMjZuc2ltX2J1c19kZXZfaWRzLCBpZCwgaWQsIEdGUF9LRVJORUwpO1xuIDQ1NjpcdFx0aWYgKGVyciBcdTAwM2MgMClcbiA0NTc6XHRcdFx0Z290byBlcnJfbnNpbV9idXNfZGV2X2ZyZWU7XG4gNDU4Olx0XHRuc2ltX2J1c19kZXYtXHUwMDNlZGV2LmlkID0gZXJyO1xuIDQ1OTpcdFx0bnNpbV9idXNfZGV2LVx1MDAzZWRldi5idXMgPSBcdTAwMjZuc2ltX2J1cztcbiA0NjA6XHRcdG5zaW1fYnVzX2Rldi1cdTAwM2VkZXYudHlwZSA9IFx1MDAyNm5zaW1fYnVzX2Rldl90eXBlO1xuIDQ2MTpcdFx0bnNpbV9idXNfZGV2LVx1MDAzZXBvcnRfY291bnQgPSBwb3J0X2NvdW50O1xuIDQ2MjpcdFx0bnNpbV9idXNfZGV2LVx1MDAzZW51bV9xdWV1ZXMgPSBudW1fcXVldWVzO1xuIDQ2MzpcdFx0bnNpbV9idXNfZGV2LVx1MDAzZWluaXRpYWxfbmV0ID0gY3VycmVudC1cdTAwM2Vuc3Byb3h5LVx1MDAzZW5ldF9ucztcbiA0NjQ6XHRcdC8qIERpc2FsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqL1xuIDQ2NTpcdFx0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2bnNpbV9idXNfZGV2LVx1MDAzZWluaXQsIGZhbHNlKTtcbiA0NjY6XHRcbiA0Njc6XHRcdHJlZmNvdW50X2luYyhcdTAwMjZuc2ltX2J1c19kZXZzKTtcbiA0Njg6XHRcdGVyciA9IGRldmljZV9yZWdpc3RlcihcdTAwMjZuc2ltX2J1c19kZXYtXHUwMDNlZGV2KTtcbiA0Njk6XHRcdGlmIChlcnIpXG4gNDcwOlx0XHRcdGdvdG8gZXJyX25zaW1fYnVzX2Rldl9pZF9mcmVlO1xuIDQ3MTpcdFxuIDQ3MjpcdFx0cmV0dXJuIG5zaW1fYnVzX2RldjtcbiA0NzM6XHRcbiA0NzQ6XHRlcnJfbnNpbV9idXNfZGV2X2lkX2ZyZWU6XG4gNDc1Olx0XHRpZGFfZnJlZShcdTAwMjZuc2ltX2J1c19kZXZfaWRzLCBuc2ltX2J1c19kZXYtXHUwMDNlZGV2LmlkKTtcbiA0NzY6XHRcdHB1dF9kZXZpY2UoXHUwMDI2bnNpbV9idXNfZGV2LVx1MDAzZWRldik7XG4gNDc3Olx0XHRuc2ltX2J1c19kZXYgPSBOVUxMO1xuIDQ3ODpcdGVycl9uc2ltX2J1c19kZXZfZnJlZTpcbiA0Nzk6XHRcdGtmcmVlKG5zaW1fYnVzX2Rldik7XG4gNDgwOlx0XHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuIDQ4MTpcdH1cbiA0ODI6XHRcbiA0ODM6XHRzdGF0aWMgdm9pZCBuc2ltX2J1c19kZXZfZGVsKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldilcbiA0ODQ6XHR7XG4gNDg1Olx0XHQvKiBEaXNhbGxvdyB1c2luZyBuc2ltX2J1c19kZXYgKi9cbiA0ODY6XHRcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2Vpbml0LCBmYWxzZSk7XG4gNDg3Olx0XHRpZGFfZnJlZShcdTAwMjZuc2ltX2J1c19kZXZfaWRzLCBuc2ltX2J1c19kZXYtXHUwMDNlZGV2LmlkKTtcbiA0ODg6XHRcdGRldmljZV91bnJlZ2lzdGVyKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2VkZXYpO1xuIDQ4OTpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnRoZSBmaWxlIGRvZXMgbm90IGV4aXN0PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDt0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMzoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDQ2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBpbnN0cnVjdGlvbnMsIHByZXNlbnRlZCBhcyBhIHBlcnNvbmFsIHRob3VnaHQgcHJvY2VzcyB0YWlsb3JlZCBmb3IgYSBmZWxsb3cgZXhwZXJ0OgoKKipGaW5kaW5nIHRoZSBORVRERVZTSU0gQ29uZmlndXJhdGlvbiBPcHRpb24qKgoKQWxyaWdodCwgdGltZSB0byBnZXQgdG8gd29yay4gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24gcmVsYXRlZCB0byBORVRERVZTSU0uIE15IGZpcnN0IHRob3VnaHQgaXMgYWx3YXlzIHRvIHN0YXJ0IGluIGBkcml2ZXJzL25ldC9gLiBUaGF0JiMzOTtzIHRoZSBvYnZpb3VzIHBsYWNlIHRvIGZpbmQgbmV0d29ya2luZyBkcml2ZXJzIGFuZCBhc3NvY2lhdGVkIGNvbmZpZ3VyYXRpb24uIE5vdywgdGhlIG5leHQgc3RlcCBpcyB0byBsb2NhdGUgdGhlIEtjb25maWcgZmlsZSB3aXRoaW4gdGhhdCBkaXJlY3RvcnkuIEkmIzM5O20gYXNzdW1pbmcgdGhlcmUmIzM5O3Mgb25lIOKAkyBpdCYjMzk7cyBzdGFuZGFyZCBwcmFjdGljZSwgYWZ0ZXIgYWxsLgoKT25jZSBJIGhhdmUgdGhhdCBLY29uZmlnIGZpbGUsIEkmIzM5O2xsIHVzZSBgZ3JlcGAgKG9yIG15IHByZWZlcnJlZCBzZWFyY2ggdG9vbCkgdG8gbG9vayBkaXJlY3RseSBmb3IgJiMzNDtORVRERVZTSU0mIzM0OyB3aXRoaW4gdGhlIGZpbGUuIFRoYXQgc2hvdWxkIHBpbnBvaW50IHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIHN5bWJvbCBhbmQgaG9wZWZ1bGx5IGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkLiBUaGlzIGlzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBwcm9jZXNzLCBhc3N1bWluZyB0aGVyZSYjMzk7cyBhIHVuaXF1ZSBhbmQgdW5hbWJpZ3VvdXMgcmVmZXJlbmNlIHRvIGBORVRERVZTSU1gLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgZmluZCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUREVWU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz02MDI9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnLTYwMy1cbmRyaXZlcnMvbmV0L0tjb25maWc6NjA0OmNvbmZpZyBORVRERVZTSU1cbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDM6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM5MAoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIGlmIEkgd2VyZSB0aGlua2luZyB0aGVzZSB0aG91Z2h0czoKCioqRXhhbWluaW5nIE5ldHdvcmsgRHJpdmVyIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgbml0dHktZ3JpdHR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIG5ldHdvcmsgZHJpdmVycyBhcmUgY29uZmlndXJlZCwgc28gbGV0JiMzOTtzIGp1bXAgcmlnaHQgaW50byBgZHJpdmVycy9uZXQvS2NvbmZpZ2AsIHNwZWNpZmljYWxseSBhcm91bmQgbGluZSA2MDQuIEkmIzM5O20gZ3Vlc3NpbmcgdGhhdCYjMzk7cyB3aGVyZSBhIGNydWNpYWwgc2VjdGlvbiByZWxhdGVkIHRvIHRoZSBjdXJyZW50IHByb2JsZW0gcmVzaWRlcy4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGJlaW5nIGRlZmluZWQgdGhlcmUgYW5kIGhvdyBpdCBtaWdodCBpbmZsdWVuY2UgdGhlIG92ZXJhbGwgc3lzdGVtIHNldHVwLiBUaGlzIHNob3VsZCBnaXZlIG1lIHNvbWUgaW5zaWdodHMgaW50byB0aGUgYXZhaWxhYmxlIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcy4gSSBleHBlY3QgdG8gYmUgbG9va2luZyBmb3IgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHN5bWJvbCBvciBibG9jayB0aGF0IGFmZmVjdHMgdGhlIGJlaGF2aW9yIEkgYW0gZGVidWdnaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDYwMDpcdFxuIDYwMTpcdHNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC90aHVuZGVyYm9sdC9LY29uZmlnXCYjMzQ7XG4gNjAyOlx0c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnXCYjMzQ7XG4gNjAzOlx0XG4gNjA0Olx0Y29uZmlnIE5FVERFVlNJTVxuIDYwNTpcdFx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXCYjMzQ7XG4gNjA2Olx0XHRkZXBlbmRzIG9uIERFQlVHX0ZTXG4gNjA3Olx0XHRkZXBlbmRzIG9uIElORVRcbiA2MDg6XHRcdGRlcGVuZHMgb24gUFNBTVBMRSB8fCBQU0FNUExFPW5cbiA2MDk6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfTU9DSyB8fCBQVFBfMTU4OF9DTE9DS19NT0NLPW5cbiA2MTA6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuIDYxMTpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuIDYxMjpcdFx0c2VsZWN0IE5FVF9TSEFQRVJcbiA2MTM6XHRcdGhlbHBcbiA2MTQ6XHRcdCAgVGhpcyBkcml2ZXIgaXMgYSBkZXZlbG9wZXIgdGVzdGluZyB0b29sIGFuZCBzb2Z0d2FyZSBtb2RlbCB0aGF0IGNhblxuIDYxNTpcdFx0ICBiZSB1c2VkIHRvIHRlc3QgdmFyaW91cyBjb250cm9sIHBhdGggbmV0d29ya2luZyBBUElzLCBlc3BlY2lhbGx5XG4gNjE2Olx0XHQgIEhXLW9mZmxvYWQgcmVsYXRlZC5cbiA2MTc6XHRcbiA2MTg6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDYxOTpcdFx0ICB3aWxsIGJlIGNhbGxlZCBuZXRkZXZzaW0uXG4gNjIwOlx0XG4gNjIxOlx0Y29uZmlnIE5FVF9GQUlMT1ZFUlxuIDYyMjpcdFx0dHJpc3RhdGUgXCYjMzQ7RmFpbG92ZXIgZHJpdmVyXCYjMzQ7XG4gNjIzOlx0XHRzZWxlY3QgRkFJTE9WRVJcbiA2MjQ6XHRcdGhlbHBcbiA2MjU6XHRcdCAgVGhpcyBwcm92aWRlcyBhbiBhdXRvbWF0ZWQgZmFpbG92ZXIgbWVjaGFuaXNtIHZpYSBBUElzIHRvIGNyZWF0ZVxuIDYyNjpcdFx0ICBhbmQgZGVzdHJveSBhIGZhaWxvdmVyIG1hc3RlciBuZXRkZXYgYW5kIG1hbmFnZXMgYSBwcmltYXJ5IGFuZFxuIDYyNzpcdFx0ICBzdGFuZGJ5IHNsYXZlIG5ldGRldnMgdGhhdCBnZXQgcmVnaXN0ZXJlZCB2aWEgdGhlIGdlbmVyaWMgZmFpbG92ZXJcbiA2Mjg6XHRcdCAgaW5mcmFzdHJ1Y3R1cmUuIFRoaXMgY2FuIGJlIHVzZWQgYnkgcGFyYXZpcnR1YWwgZHJpdmVycyB0byBlbmFibGVcbiA2Mjk6XHRcdCAgYW4gYWx0ZXJuYXRlIGxvdyBsYXRlbmN5IGRhdGFwYXRoLiBJdCBhbHNvIGVuYWJsZXMgbGl2ZSBtaWdyYXRpb24gb2ZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDM6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTA1MAoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYG5ldGRldnNpbWAgY29kZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGZ1bmRhbWVudGFsIG1lY2hhbmljcywgc3BlY2lmaWNhbGx5IGhvdyB0aGlzIHNpbXVsYXRpb24gZW52aXJvbm1lbnQgbW9kZWxzIG5ldHdvcmsgZGV2aWNlcy4gTXkgZm9jdXMgaXMgb24gZGV2aWNlIGNyZWF0aW9uIGFuZCB0aGUgcm9sZSBvZiBgbnNpbV9idXNfZGV2c2AuIEkmIzM5O2xsIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vYCBkaXJlY3RvcnkuCgoqKkRpc3NlY3RpbmcgbmV0ZGV2c2ltOiBUaGUgQ29yZSBvZiBEZXZpY2UgQ3JlYXRpb24qKgoKTXkgaW1tZWRpYXRlIHBsYW4gaXMgdG8gdXNlIGBncmVwYCB0byBxdWlja2x5IGlkZW50aWZ5IGtleSBmdW5jdGlvbnMgYW5kIGRhdGEgc3RydWN0dXJlcy4gSSYjMzk7bSBnb2luZyB0byBzZWFyY2ggZm9yIGBuc2ltX2J1c19kZXZfbmV3YCBhbmQgYG5zaW1fYnVzX2RldnNgLiBGaW5kaW5nIGBuc2ltX2J1c19kZXZfbmV3YCB3aWxsIHByb2JhYmx5IGxlYWQgbWUgc3RyYWlnaHQgdG8gdGhlIGRldmljZSBpbnN0YW50aWF0aW9uIHByb2Nlc3M7IHRoYXQmIzM5O3Mgd2hlcmUgdGhlIG5ldyBkZXZpY2VzIGFyZSBjcmVhdGVkLiBUaGVuLCBleGFtaW5pbmcgYG5zaW1fYnVzX2RldnNgIHdpbGwgcmV2ZWFsIGhvdyB0aGVzZSBkZXZpY2VzIGFyZSBtYW5hZ2VkLCB3aGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgdXNlZCwgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgYnJvYWRlciBzaW11bGF0ZWQgYnVzIGFyY2hpdGVjdHVyZSB3aXRoaW4gbmV0ZGV2c2ltLiBUaGlzIHNob3VsZCBnaXZlIG1lIHRoZSBlbnRyeSBwb2ludCBpbnRvIHRoaXMgc3Vic3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuc2ltX2J1c19kZXYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTE3LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE4OnN0YXRpYyBERUZJTkVfSURBKG5zaW1fYnVzX2Rldl9pZHMpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE5OnN0YXRpYyBMSVNUX0hFQUQobnNpbV9idXNfZGV2X2xpc3QpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjIwOnN0YXRpYyBERUZJTkVfTVVURVgobnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjEtc3RhdGljIGJvb2wgbnNpbV9idXNfZW5hYmxlO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjIyOnN0YXRpYyByZWZjb3VudF90IG5zaW1fYnVzX2RldnM7IC8qIEluY2x1ZGluZyB0aGUgYnVzIGl0c2VsZi4gKi9cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoyMzpzdGF0aWMgREVDTEFSRV9DT01QTEVUSU9OKG5zaW1fYnVzX2RldnNfcmVsZWFzZWQpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTI0LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjI1OnN0YXRpYyBzdHJ1Y3QgbnNpbV9idXNfZGV2ICp0b19uc2ltX2J1c19kZXYoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTI2LXtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoyNzpcdHJldHVybiBjb250YWluZXJfb2YoZGV2LCBzdHJ1Y3QgbnNpbV9idXNfZGV2LCBkZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTI4LX1cbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM9MzA9c3RhdGljIHNzaXplX3RcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzozMTpuc2ltX2J1c19kZXZfbnVtdmZzX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMzItXHRcdFx0ICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0zMy17XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MzQ6XHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYgPSB0b19uc2ltX2J1c19kZXYoZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0zNS1cdHVuc2lnbmVkIGludCBudW1fdmZzO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00NC1cdGlmIChkZXZfZ2V0X2RydmRhdGEoZGV2KSlcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NTpcdFx0cmV0ID0gbnNpbV9kcnZfY29uZmlndXJlX3Zmcyhuc2ltX2J1c19kZXYsIG51bV92ZnMpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQ2LVx0ZGV2aWNlX3VubG9jayhkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz01MT1zdGF0aWMgc3NpemVfdFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjUyOm5zaW1fYnVzX2Rldl9udW12ZnNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTMtXHRcdFx0IHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTQte1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjU1Olx0c3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2ID0gdG9fbnNpbV9idXNfZGV2KGRldik7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTYtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NTc6XHRyZXR1cm4gc3ByaW50ZihidWYsIFwmIzM0OyV1XFxuXCYjMzQ7LCBuc2ltX2J1c19kZXYtXHUwMDNlbnVtX3Zmcyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTgtfVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTU5LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjYwOnN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBuc2ltX2J1c19kZXZfbnVtdmZzX2F0dHIgPVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjYxOlx0X19BVFRSKHNyaW92X251bXZmcywgMDY2NCwgbnNpbV9idXNfZGV2X251bXZmc19zaG93LFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjYyOlx0ICAgICAgIG5zaW1fYnVzX2Rldl9udW12ZnNfc3RvcmUpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTYzLVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz02NT1uZXdfcG9ydF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy02Ny17XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6Njg6XHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYgPSB0b19uc2ltX2J1c19kZXYoZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy02OS1cdHU4IGV0aF9hZGRyW0VUSF9BTEVOXSA9IHt9O1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy03My1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo3NDpcdC8qIFByZXZlbnQgdG8gdXNlIG5zaW1fYnVzX2RldiBiZWZvcmUgaW5pdGlhbGl6YXRpb24uICovXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NzU6XHRpZiAoIXNtcF9sb2FkX2FjcXVpcmUoXHUwMDI2bnNpbV9idXNfZGV2LVx1MDAzZWluaXQpKVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTc2LVx0XHRyZXR1cm4gLUVCVVNZO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy05NS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo5NjpcdHJldCA9IG5zaW1fZHJ2X3BvcnRfYWRkKG5zaW1fYnVzX2RldiwgTlNJTV9ERVZfUE9SVF9UWVBFX1BGLCBwb3J0X2luZGV4LFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTk3LVx0XHRcdFx0YWRkcl9zZXQgPyBldGhfYWRkciA6IE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xMDAtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTAxOnN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBuc2ltX2J1c19kZXZfbmV3X3BvcnRfYXR0ciA9IF9fQVRUUl9XTyhuZXdfcG9ydCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTAyLVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz0xMDQ9ZGVsX3BvcnRfc3RvcmUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTA2LXtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxMDc6XHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYgPSB0b19uc2ltX2J1c19kZXYoZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xMDgtXHR1bnNpZ25lZCBpbnQgcG9ydF9pbmRleDtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTEwLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjExMTpcdC8qIFByZXZlbnQgdG8gdXNlIG5zaW1fYnVzX2RldiBiZWZvcmUgaW5pdGlhbGl6YXRpb24uICovXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTEyOlx0aWYgKCFzbXBfbG9hZF9hY3F1aXJlKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2Vpbml0KSlcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xMTMtXHRcdHJldHVybiAtRUJVU1k7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTExNy1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxMTg6XHRyZXQgPSBuc2ltX2Rydl9wb3J0X2RlbChuc2ltX2J1c19kZXYsIE5TSU1fREVWX1BPUlRfVFlQRV9QRiwgcG9ydF9pbmRleCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTE5LVx0cmV0dXJuIHJldCA/IHJldCA6IGNvdW50O1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xMjEtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTIyOnN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBuc2ltX2J1c19kZXZfZGVsX3BvcnRfYXR0ciA9IF9fQVRUUl9XTyhkZWxfcG9ydCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTIzLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjEyNDpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqbnNpbV9idXNfZGV2X2F0dHJzW10gPSB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTI1Olx0XHUwMDI2bnNpbV9idXNfZGV2X251bXZmc19hdHRyLmF0dHIsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTI2Olx0XHUwMDI2bnNpbV9idXNfZGV2X25ld19wb3J0X2F0dHIuYXR0cixcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxMjc6XHRcdTAwMjZuc2ltX2J1c19kZXZfZGVsX3BvcnRfYXR0ci5hdHRyLFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTEyOC1cdE5VTEwsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTEzMC1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxMzE6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgbnNpbV9idXNfZGV2X2F0dHJfZ3JvdXAgPSB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTMyOlx0LmF0dHJzID0gbnNpbV9idXNfZGV2X2F0dHJzLFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTEzMy19O1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTEzNC1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxMzU6c3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKm5zaW1fYnVzX2Rldl9hdHRyX2dyb3Vwc1tdID0ge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjEzNjpcdFx1MDAyNm5zaW1fYnVzX2Rldl9hdHRyX2dyb3VwLFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTEzNy1cdE5VTEwsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTEzOS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxNDA6c3RhdGljIHZvaWQgbnNpbV9idXNfZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTE0MS17XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTQyOlx0c3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2O1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTE0My1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxNDQ6XHRuc2ltX2J1c19kZXYgPSBjb250YWluZXJfb2YoZGV2LCBzdHJ1Y3QgbnNpbV9idXNfZGV2LCBkZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE0NTpcdGtmcmVlKG5zaW1fYnVzX2Rldik7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTQ2Olx0aWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZuc2ltX2J1c19kZXZzKSlcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxNDc6XHRcdGNvbXBsZXRlKFx1MDAyNm5zaW1fYnVzX2RldnNfcmVsZWFzZWQpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTE0OC19XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTQ5LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE1MDpzdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV90eXBlIG5zaW1fYnVzX2Rldl90eXBlID0ge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE1MTpcdC5ncm91cHMgPSBuc2ltX2J1c19kZXZfYXR0cl9ncm91cHMsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTUyOlx0LnJlbGVhc2UgPSBuc2ltX2J1c19kZXZfcmVsZWFzZSxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xNTMtfTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xNTQtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTU1OnN0YXRpYyBzdHJ1Y3QgbnNpbV9idXNfZGV2ICpcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxNTY6bnNpbV9idXNfZGV2X25ldyh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBwb3J0X2NvdW50LCB1bnNpZ25lZCBpbnQgbnVtX3F1ZXVlcyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTU3LVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz0xNTk9bmV3X2RldmljZV9zdG9yZShjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTE2MS1cdHVuc2lnbmVkIGludCBpZCwgcG9ydF9jb3VudCwgbnVtX3F1ZXVlcztcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxNjI6XHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXY7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTYzLVx0aW50IGVycjtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTgzLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE4NDpcdG11dGV4X2xvY2soXHUwMDI2bnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTg1LVx0LyogUHJldmVudCB0byB1c2UgcmVzb3VyY2UgYmVmb3JlIGluaXRpYWxpemF0aW9uLiAqL1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xOTAtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTkxOlx0bnNpbV9idXNfZGV2ID0gbnNpbV9idXNfZGV2X25ldyhpZCwgcG9ydF9jb3VudCwgbnVtX3F1ZXVlcyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTkyOlx0aWYgKElTX0VSUihuc2ltX2J1c19kZXYpKSB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTkzOlx0XHRlcnIgPSBQVFJfRVJSKG5zaW1fYnVzX2Rldik7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTk0LVx0XHRnb3RvIGVycjtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTk2LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE5NzpcdC8qIEFsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqL1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE5ODpcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2Vpbml0LCB0cnVlKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xOTktXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MjAwOlx0bGlzdF9hZGRfdGFpbChcdTAwMjZuc2ltX2J1c19kZXYtXHUwMDNlbGlzdCwgXHUwMDI2bnNpbV9idXNfZGV2X2xpc3QpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjIwMTpcdG11dGV4X3VubG9jayhcdTAwMjZuc2ltX2J1c19kZXZfbGlzdF9sb2NrKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0yMDItXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTIwNC1lcnI6XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MjA1Olx0bXV0ZXhfdW5sb2NrKFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0X2xvY2spO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTIwNi1cdHJldHVybiBlcnI7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTIwOD1zdGF0aWMgQlVTX0FUVFJfV08obmV3X2RldmljZSk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjA5LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjIxMDpzdGF0aWMgdm9pZCBuc2ltX2J1c19kZXZfZGVsKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2Rldik7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjExLVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz0yMTM9ZGVsX2RldmljZV9zdG9yZShjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjE0LXtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoyMTU6XHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsICp0bXA7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjE2LVx0dW5zaWduZWQgaW50IGlkO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0yMzItXHRlcnIgPSAtRU5PRU5UO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjIzMzpcdG11dGV4X2xvY2soXHUwMDI2bnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjM0LVx0LyogUHJldmVudCB0byB1c2UgcmVzb3VyY2UgYmVmb3JlIGluaXRpYWxpemF0aW9uLiAqL1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTIzNS1cdGlmICghc21wX2xvYWRfYWNxdWlyZShcdTAwMjZuc2ltX2J1c19lbmFibGUpKSB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MjM2Olx0XHRtdXRleF91bmxvY2soXHUwMDI2bnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjM3LVx0XHRyZXR1cm4gLUVCVVNZO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTIzOC1cdH1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoyMzk6XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobnNpbV9idXNfZGV2LCB0bXAsIFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0LCBsaXN0KSB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MjQwOlx0XHRpZiAobnNpbV9idXNfZGV2LVx1MDAzZWRldi5pZCAhPSBpZClcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0yNDEtXHRcdFx0Y29udGludWU7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MjQyOlx0XHRsaXN0X2RlbChcdTAwMjZuc2ltX2J1c19kZXYtXHUwMDNlbGlzdCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MjQzOlx0XHRuc2ltX2J1c19kZXZfZGVsKG5zaW1fYnVzX2Rldik7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjQ0LVx0XHRlcnIgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0yNDYtXHR9XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MjQ3Olx0bXV0ZXhfdW5sb2NrKFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0X2xvY2spO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTI0OC1cdHJldHVybiAhZXJyID8gY291bnQgOiBlcnI7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTQxNT1zdGF0aWMgaW50IG5zaW1fYnVzX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00MTYte1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQxNzpcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiA9IHRvX25zaW1fYnVzX2RldihkZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQxOC1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0MTk6XHRyZXR1cm4gbnNpbV9kcnZfcHJvYmUobnNpbV9idXNfZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00MjAtfVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz00MjI9c3RhdGljIHZvaWQgbnNpbV9idXNfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00MjMte1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQyNDpcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiA9IHRvX25zaW1fYnVzX2RldihkZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQyNS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0MjY6XHRuc2ltX2Rydl9yZW1vdmUobnNpbV9idXNfZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00MjctfVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz00Mjk9c3RhdGljIGludCBuc2ltX251bV92ZihzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDMwLXtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0MzE6XHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYgPSB0b19uc2ltX2J1c19kZXYoZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00MzItXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDMzOlx0cmV0dXJuIG5zaW1fYnVzX2Rldi1cdTAwM2VudW1fdmZzO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQzNC19XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTQzNj1zdGF0aWMgY29uc3Qgc3RydWN0IGJ1c190eXBlIG5zaW1fYnVzID0ge1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00NDQtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDQ1OnN0YXRpYyBzdHJ1Y3QgbnNpbV9idXNfZGV2ICpcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NDY6bnNpbV9idXNfZGV2X25ldyh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBwb3J0X2NvdW50LCB1bnNpZ25lZCBpbnQgbnVtX3F1ZXVlcylcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00NDcte1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ0ODpcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldjtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00NDktXHRpbnQgZXJyO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQ1MC1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NTE6XHRuc2ltX2J1c19kZXYgPSBremFsbG9jX29iaigqbnNpbV9idXNfZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NTI6XHRpZiAoIW5zaW1fYnVzX2RldilcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00NTMtXHRcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQ1NC1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NTU6XHRlcnIgPSBpZGFfYWxsb2NfcmFuZ2UoXHUwMDI2bnNpbV9idXNfZGV2X2lkcywgaWQsIGlkLCBHRlBfS0VSTkVMKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00NTYtXHRpZiAoZXJyIFx1MDAzYyAwKVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ1NzpcdFx0Z290byBlcnJfbnNpbV9idXNfZGV2X2ZyZWU7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDU4Olx0bnNpbV9idXNfZGV2LVx1MDAzZWRldi5pZCA9IGVycjtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NTk6XHRuc2ltX2J1c19kZXYtXHUwMDNlZGV2LmJ1cyA9IFx1MDAyNm5zaW1fYnVzO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ2MDpcdG5zaW1fYnVzX2Rldi1cdTAwM2VkZXYudHlwZSA9IFx1MDAyNm5zaW1fYnVzX2Rldl90eXBlO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ2MTpcdG5zaW1fYnVzX2Rldi1cdTAwM2Vwb3J0X2NvdW50ID0gcG9ydF9jb3VudDtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NjI6XHRuc2ltX2J1c19kZXYtXHUwMDNlbnVtX3F1ZXVlcyA9IG51bV9xdWV1ZXM7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDYzOlx0bnNpbV9idXNfZGV2LVx1MDAzZWluaXRpYWxfbmV0ID0gY3VycmVudC1cdTAwM2Vuc3Byb3h5LVx1MDAzZW5ldF9ucztcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NjQ6XHQvKiBEaXNhbGxvdyB1c2luZyBuc2ltX2J1c19kZXYgKi9cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NjU6XHRzbXBfc3RvcmVfcmVsZWFzZShcdTAwMjZuc2ltX2J1c19kZXYtXHUwMDNlaW5pdCwgZmFsc2UpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQ2Ni1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0Njc6XHRyZWZjb3VudF9pbmMoXHUwMDI2bnNpbV9idXNfZGV2cyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDY4Olx0ZXJyID0gZGV2aWNlX3JlZ2lzdGVyKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQ2OS1cdGlmIChlcnIpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDcwOlx0XHRnb3RvIGVycl9uc2ltX2J1c19kZXZfaWRfZnJlZTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00NzEtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDcyOlx0cmV0dXJuIG5zaW1fYnVzX2RldjtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00NzMtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDc0OmVycl9uc2ltX2J1c19kZXZfaWRfZnJlZTpcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NzU6XHRpZGFfZnJlZShcdTAwMjZuc2ltX2J1c19kZXZfaWRzLCBuc2ltX2J1c19kZXYtXHUwMDNlZGV2LmlkKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NzY6XHRwdXRfZGV2aWNlKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ3NzpcdG5zaW1fYnVzX2RldiA9IE5VTEw7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDc4OmVycl9uc2ltX2J1c19kZXZfZnJlZTpcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0Nzk6XHRrZnJlZShuc2ltX2J1c19kZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQ4MC1cdHJldHVybiBFUlJfUFRSKGVycik7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQ4Mi1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0ODM6c3RhdGljIHZvaWQgbnNpbV9idXNfZGV2X2RlbChzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDg0LXtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0ODU6XHQvKiBEaXNhbGxvdyB1c2luZyBuc2ltX2J1c19kZXYgKi9cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0ODY6XHRzbXBfc3RvcmVfcmVsZWFzZShcdTAwMjZuc2ltX2J1c19kZXYtXHUwMDNlaW5pdCwgZmFsc2UpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ4NzpcdGlkYV9mcmVlKFx1MDAyNm5zaW1fYnVzX2Rldl9pZHMsIG5zaW1fYnVzX2Rldi1cdTAwM2VkZXYuaWQpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ4ODpcdGRldmljZV91bnJlZ2lzdGVyKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQ4OS19XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTQ5Nz1pbnQgbnNpbV9idXNfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy01MDYtXHRcdGdvdG8gZXJyX2J1c191bnJlZ2lzdGVyO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjUwNzpcdHJlZmNvdW50X3NldChcdTAwMjZuc2ltX2J1c19kZXZzLCAxKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy01MDgtXHQvKiBBbGxvdyB1c2luZyByZXNvdXJjZXMgKi9cbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM9NTE3PXZvaWQgbnNpbV9idXNfZXhpdCh2b2lkKVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTUxOC17XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NTE5Olx0c3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2LCAqdG1wO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTUyMC1cbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTIyLVx0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2bnNpbV9idXNfZW5hYmxlLCBmYWxzZSk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NTIzOlx0aWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZuc2ltX2J1c19kZXZzKSlcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo1MjQ6XHRcdGNvbXBsZXRlKFx1MDAyNm5zaW1fYnVzX2RldnNfcmVsZWFzZWQpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTUyNS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo1MjY6XHRtdXRleF9sb2NrKFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0X2xvY2spO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjUyNzpcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShuc2ltX2J1c19kZXYsIHRtcCwgXHUwMDI2bnNpbV9idXNfZGV2X2xpc3QsIGxpc3QpIHtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo1Mjg6XHRcdGxpc3RfZGVsKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2VsaXN0KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo1Mjk6XHRcdG5zaW1fYnVzX2Rldl9kZWwobnNpbV9idXNfZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy01MzAtXHR9XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NTMxOlx0bXV0ZXhfdW5sb2NrKFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0X2xvY2spO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTUzMi1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo1MzM6XHR3YWl0X2Zvcl9jb21wbGV0aW9uKFx1MDAyNm5zaW1fYnVzX2RldnNfcmVsZWFzZWQpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTUzNC1cbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM9NjA9dW5zaWduZWQgaW50IG5zaW1fZGV2X2dldF92ZnMoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2Rldilcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtNjQtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6NjU6XHRyZXR1cm4gbnNpbV9kZXYtXHUwMDNlbnNpbV9idXNfZGV2LVx1MDAzZW51bV92ZnM7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtNjYtfVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYz02OD1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjY5Om5zaW1fYnVzX2Rldl9zZXRfdmZzKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiwgdW5zaWduZWQgaW50IG51bV92ZnMpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtNzAte1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTcxLVx0cnRubF9sb2NrKCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6NzI6XHRuc2ltX2J1c19kZXYtXHUwMDNlbnVtX3ZmcyA9IG51bV92ZnM7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtNzMtXHRydG5sX3VubG9jaygpO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYz0yMjg9c3RhdGljIGludCBuc2ltX2Rldl9kZWJ1Z2ZzX2luaXQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2Rldilcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMjMyLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjIzMzpcdHNwcmludGYoZGV2X2RkaXJfbmFtZSwgRFJWX05BTUUgXCYjMzQ7JXVcJiMzNDssIG5zaW1fZGV2LVx1MDAzZW5zaW1fYnVzX2Rldi1cdTAwM2VkZXYuaWQpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTIzNC1cdG5zaW1fZGV2LVx1MDAzZWRkaXIgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZGV2X2RkaXJfbmFtZSwgbnNpbV9kZXZfZGRpcik7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTMzMj1zdGF0aWMgaW50IG5zaW1fZGV2X3BvcnRfZGVidWdmc19pbml0KHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTMzNC17XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MzM1Olx0c3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2ID0gbnNpbV9kZXYtXHUwMDNlbnNpbV9idXNfZGV2O1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTMzNi1cdHVuc2lnbmVkIGludCBwb3J0X2luZGV4ID0gbnNpbV9kZXZfcG9ydC1cdTAwM2Vwb3J0X2luZGV4O1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0zNDUtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MzQ2Olx0c3ByaW50ZihkZXZfbGlua19uYW1lLCBcJiMzNDsuLi8uLi8uLi9cJiMzNDsgRFJWX05BTUUgXCYjMzQ7JXVcJiMzNDssIG5zaW1fYnVzX2Rldi1cdTAwM2VkZXYuaWQpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTM0Ny1cdGlmIChuc2ltX2Rldl9wb3J0X2lzX3ZmKG5zaW1fZGV2X3BvcnQpKSB7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTE1MDY9c3RhdGljIGludCBuc2ltX2Rldl9yZWxvYWRfY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1MDgte1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE1MDk6XHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYgPSBuc2ltX2Rldi1cdTAwM2Vuc2ltX2J1c19kZXY7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTUxMC1cdHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNTQ2LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE1NDc6XHRlcnIgPSBuc2ltX2Rldl9wb3J0X2FkZF9hbGwobnNpbV9kZXYsIG5zaW1fYnVzX2Rldi1cdTAwM2Vwb3J0X2NvdW50KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNTQ4LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTU3Mi1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNTczOmludCBuc2ltX2Rydl9wcm9iZShzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTU3NC17XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1NzktXHRkZXZsaW5rID0gZGV2bGlua19hbGxvY19ucyhcdTAwMjZuc2ltX2Rldl9kZXZsaW5rX29wcywgc2l6ZW9mKCpuc2ltX2RldiksXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTU4MDpcdFx0XHRcdCBuc2ltX2J1c19kZXYtXHUwMDNlaW5pdGlhbF9uZXQsIFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1ODEtXHRpZiAoIWRldmxpbmspXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1ODQtXHRuc2ltX2RldiA9IGRldmxpbmtfcHJpdihkZXZsaW5rKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNTg1Olx0bnNpbV9kZXYtXHUwMDNlbnNpbV9idXNfZGV2ID0gbnNpbV9idXNfZGV2O1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1ODYtXHRuc2ltX2Rldi1cdTAwM2Vzd2l0Y2hfaWQuaWRfbGVuID0gc2l6ZW9mKG5zaW1fZGV2LVx1MDAzZXN3aXRjaF9pZC5pZCk7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1OTctXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTU5ODpcdGRldl9zZXRfZHJ2ZGF0YShcdTAwMjZuc2ltX2J1c19kZXYtXHUwMDNlZGV2LCBuc2ltX2Rldik7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTU5OS1cbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTY1NS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNjU2Olx0ZXJyID0gbnNpbV9kZXZfcG9ydF9hZGRfYWxsKG5zaW1fZGV2LCBuc2ltX2J1c19kZXYtXHUwMDNlcG9ydF9jb3VudCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTY1Ny1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE2OTEtXHRkZXZsaW5rX2ZyZWUoZGV2bGluayk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTY5MjpcdGRldl9zZXRfZHJ2ZGF0YShcdTAwMjZuc2ltX2J1c19kZXYtXHUwMDNlZGV2LCBOVUxMKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNjkzLVx0cmV0dXJuIGVycjtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM9MTY5Nj1zdGF0aWMgdm9pZCBuc2ltX2Rldl9yZWxvYWRfZGVzdHJveShzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2KVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzA0LVx0aWYgKG5zaW1fZGV2X2dldF92ZnMobnNpbV9kZXYpKSB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTcwNTpcdFx0bnNpbV9idXNfZGV2X3NldF92ZnMobnNpbV9kZXYtXHUwMDNlbnNpbV9idXNfZGV2LCAwKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzA2LVx0XHRpZiAobnNpbV9lc3dfbW9kZV9pc19zd2l0Y2hkZXYobnNpbV9kZXYpKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzE4LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE3MTk6dm9pZCBuc2ltX2Rydl9yZW1vdmUoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2KVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3MjAte1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE3MjE6XHRzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2ID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3MjItXHRzdHJ1Y3QgZGV2bGluayAqZGV2bGluayA9IHByaXZfdG9fZGV2bGluayhuc2ltX2Rldik7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3MzctXHRkZXZsaW5rX2ZyZWUoZGV2bGluayk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTczODpcdGRldl9zZXRfZHJ2ZGF0YShcdTAwMjZuc2ltX2J1c19kZXYtXHUwMDNlZGV2LCBOVUxMKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzM5LX1cbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM9MTc0Mj1fX25zaW1fZGV2X3BvcnRfbG9va3VwKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsIGVudW0gbnNpbV9kZXZfcG9ydF90eXBlIHR5cGUsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3NTMtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTc1NDppbnQgbnNpbV9kcnZfcG9ydF9hZGQoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2LCBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3NTUtXHRcdCAgICAgIHVuc2lnbmVkIGludCBwb3J0X2luZGV4LCB1OCBwZXJtX2FkZHJbRVRIX0FMRU5dKVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3NTYte1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE3NTc6XHRzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2ID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2VkZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3NTgtXHRpbnQgZXJyO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzY4LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE3Njk6aW50IG5zaW1fZHJ2X3BvcnRfZGVsKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiwgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzcwLVx0XHQgICAgICB1bnNpZ25lZCBpbnQgcG9ydF9pbmRleClcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzcxLXtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNzcyOlx0c3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldiA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZuc2ltX2J1c19kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzczLVx0c3RydWN0IG5zaW1fZGV2X3BvcnQgKm5zaW1fZGV2X3BvcnQ7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3ODUtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTc4NjppbnQgbnNpbV9kcnZfY29uZmlndXJlX3ZmcyhzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTc4Ny1cdFx0XHQgICB1bnNpZ25lZCBpbnQgbnVtX3ZmcylcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzg4LXtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNzg5Olx0c3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldiA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZuc2ltX2J1c19kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzkwLVx0c3RydWN0IGRldmxpbmsgKmRldmxpbmsgPSBwcml2X3RvX2RldmxpbmsobnNpbV9kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzkzLVx0ZGV2bF9sb2NrKGRldmxpbmspO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE3OTQ6XHRpZiAobnNpbV9idXNfZGV2LVx1MDAzZW51bV92ZnMgPT0gbnVtX3ZmcylcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzk1LVx0XHRnb3RvIGV4aXRfdW5sb2NrO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE3OTY6XHRpZiAobnNpbV9idXNfZGV2LVx1MDAzZW51bV92ZnMgXHUwMDI2XHUwMDI2IG51bV92ZnMpIHtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzk3LVx0XHRyZXQgPSAtRUJVU1k7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE4MDQtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTgwNTpcdG5zaW1fYnVzX2Rldl9zZXRfdmZzKG5zaW1fYnVzX2RldiwgbnVtX3Zmcyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTgwNi1cdGlmIChuc2ltX2Vzd19tb2RlX2lzX3N3aXRjaGRldihuc2ltX2RldikpIHtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTgwOS1cdFx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTgxMDpcdFx0XHRcdG5zaW1fYnVzX2Rldl9zZXRfdmZzKG5zaW1fYnVzX2RldiwgMCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTgxMS1cdFx0XHRcdGdvdG8gZXhpdF91bmxvY2s7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2V0aHRvb2wuYz05Nj1uc2ltX2dldF9jaGFubmVscyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZXRodG9vbF9jaGFubmVscyAqY2gpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2V0aHRvb2wuYy05OS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmM6MTAwOlx0Y2gtXHUwMDNlbWF4X2NvbWJpbmVkID0gbnMtXHUwMDNlbnNpbV9idXNfZGV2LVx1MDAzZW51bV9xdWV1ZXM7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZXRodG9vbC5jLTEwMS1cdGNoLVx1MDAzZWNvbWJpbmVkX2NvdW50ID0gbnMtXHUwMDNlZXRodG9vbC5jaGFubmVscztcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZXRodG9vbC5jPTIzOD12b2lkIG5zaW1fZXRodG9vbF9pbml0KHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmMtMjUxLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2V0aHRvb2wuYzoyNTI6XHRucy1cdTAwM2VldGh0b29sLmNoYW5uZWxzID0gbnMtXHUwMDNlbnNpbV9idXNfZGV2LVx1MDAzZW51bV9xdWV1ZXM7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZXRodG9vbC5jLTI1My1cbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9MTA0MD1zdGF0aWMgaW50IG5zaW1faW5pdF9uZXRkZXZzaW0oc3RydWN0IG5ldGRldnNpbSAqbnMpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTEwNDUtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6MTA0NjpcdHBoYyA9IG1vY2tfcGhjX2NyZWF0ZShcdTAwMjZucy1cdTAwM2Vuc2ltX2J1c19kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy0xMDQ3LVx0aWYgKElTX0VSUihwaGMpKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz0xMTI4PXN0cnVjdCBuZXRkZXZzaW0gKm5zaW1fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTExMzYtXHRkZXYgPSBhbGxvY19uZXRkZXZfbXEoc2l6ZW9mKCpucyksIFwmIzM0O2V0aCVkXCYjMzQ7LCBORVRfTkFNRV9VTktOT1dOLCBuc2ltX3NldHVwLFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjExMzc6XHRcdFx0ICAgICAgbnNpbV9kZXYtXHUwMDNlbnNpbV9idXNfZGV2LVx1MDAzZW51bV9xdWV1ZXMpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTExMzgtXHRpZiAoIWRldilcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtMTE0OC1cdG5zLVx1MDAzZW5zaW1fZGV2X3BvcnQgPSBuc2ltX2Rldl9wb3J0O1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjExNDk6XHRucy1cdTAwM2Vuc2ltX2J1c19kZXYgPSBuc2ltX2Rldi1cdTAwM2Vuc2ltX2J1c19kZXY7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6MTE1MDpcdFNFVF9ORVRERVZfREVWKGRldiwgXHUwMDI2bnMtXHUwMDNlbnNpbV9idXNfZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtMTE1MS1cdFNFVF9ORVRERVZfREVWTElOS19QT1JUKGRldiwgXHUwMDI2bnNpbV9kZXZfcG9ydC1cdTAwM2VkZXZsaW5rX3BvcnQpO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaD0xMDc9c3RydWN0IG5ldGRldnNpbSB7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTEyNy1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxMjg6XHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXY7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTI5LVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaD0zMjE9c3RydWN0IG5zaW1fZGV2IHtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozMjI6XHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXY7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzIzLVx0c3RydWN0IG5zaW1fZmliX2RhdGEgKmZpYl9kYXRhO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaD0zODk9dm9pZCBuc2ltX2Rldl9leGl0KHZvaWQpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjM5MDppbnQgbnNpbV9kcnZfcHJvYmUoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozOTE6dm9pZCBuc2ltX2Rydl9yZW1vdmUoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozOTI6aW50IG5zaW1fZHJ2X3BvcnRfYWRkKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldixcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zOTMtXHRcdCAgICAgIGVudW0gbnNpbV9kZXZfcG9ydF90eXBlIHR5cGUsIHVuc2lnbmVkIGludCBwb3J0X2luZGV4LFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM5NC1cdFx0ICAgICAgdTggcGVybV9hZGRyW0VUSF9BTEVOXSk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mzk1OmludCBuc2ltX2Rydl9wb3J0X2RlbChzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzk2LVx0XHQgICAgICBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM5Ny1cdFx0ICAgICAgdW5zaWduZWQgaW50IHBvcnRfaW5kZXgpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjM5ODppbnQgbnNpbV9kcnZfY29uZmlndXJlX3ZmcyhzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzk5LVx0XHRcdCAgIHVuc2lnbmVkIGludCBudW1fdmZzKTtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg9NDcxPWludCBuc2ltX3NldHVwX3RjKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGVudW0gdGNfc2V0dXBfdHlwZSB0eXBlLFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00NzQtI2RlZmluZSBOU0lNX0JVU19ERVZfTUFYX1ZGUyA0XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDc1OnN0cnVjdCBuc2ltX2J1c19kZXYge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQ3Ni1cdHN0cnVjdCBkZXZpY2UgZGV2O1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jPTEyNT1pbnQgbnNpbV91ZHBfdHVubmVsc19pbmZvX2NyZWF0ZShzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTEzMS1cdGlmIChuc2ltX2Rldi1cdTAwM2V1ZHBfcG9ydHMuc2hhcmVkIFx1MDAyNlx1MDAyNiBuc2ltX2Rldi1cdTAwM2V1ZHBfcG9ydHMub3Blbl9vbmx5KSB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYzoxMzI6XHRcdGRldl9lcnIoXHUwMDI2bnNpbV9kZXYtXHUwMDNlbnNpbV9idXNfZGV2LVx1MDAzZWRldixcbmRyaXZlcnMvbmV0L25ldGRldnNpbS91ZHBfdHVubmVscy5jLTEzMy1cdFx0XHRcJiMzNDtzaGFyZWQgY2FuJiMzOTt0IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBvcGVuX29ubHlcXG5cJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMzoxNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjIzMwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE0MDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgQ3JpdGljYWwgUmVmY291bnQgQnVnIGluIG5ldGRldnNpbSBEZXZpY2UgQ3JlYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhpcyBwYXRjaCBpcyBpbnRyaWd1aW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgbW90aXZhdGlvbiBiZWhpbmQgbW92aW5nIHRoYXQgYHJlZmNvdW50X2luY2AgY2FsbC4gQWZ0ZXIgZXhhbWluaW5nIHRoZSBjb2RlLCBpdCYjMzk7cyBjbGVhciB0aGF0IGl0IHdhcyBtb3ZlZCBmcm9tIGBuZXdfZGV2aWNlX3N0b3JlYCB0byBgbnNpbV9idXNfZGV2X25ld2AuCgpIZXJlJiMzOTtzIHRoZSBwcm9ibGVtOiBwcmV2aW91c2x5LCB0aGUgYHJlZmNvdW50X2luY2AgZm9yIGBuc2ltX2J1c19kZXZzYCB3YXMgaGFwcGVuaW5nICphZnRlciogYG5zaW1fYnVzX2Rldl9uZXdgIHJldHVybmVkIHN1Y2Nlc3NmdWxseSBpbiBgbmV3X2RldmljZV9zdG9yZWAuIEhvd2V2ZXIsIHdpdGhpbiBgbnNpbV9idXNfZGV2X25ld2AsIGlmIGBkZXZpY2VfcmVnaXN0ZXJgIGZhaWxlZCwgaXQganVtcGVkIHRvIGBlcnJfbnNpbV9idXNfZGV2X2lkX2ZyZWVgLCB3aGljaCB0aGVuIGNhbGxlZCBgcHV0X2RldmljZWAsIHdoaWNoIGluIHR1cm4gZGVjcmVtZW50ZWQgYG5zaW1fYnVzX2RldnNgIHRocm91Z2ggdGhlIGAucmVsZWFzZWAgY2FsbGJhY2ssIGBuc2ltX2J1c19kZXZfcmVsZWFzZWAuIFRoZSBrZXkgaGVyZSBpcyBgcmVmY291bnRfZGVjX2FuZF90ZXN0KCZhbXA7bnNpbV9idXNfZGV2cylgLiBUaGlzIG1lYW5zIHdlIHdlcmUgZGVjcmVtZW50aW5nIHRoZSByZWZjb3VudCB3aXRob3V0IGV2ZXIgaGF2aW5nIGluY3JlbWVudGVkIGl0IGluIHRoZSBmYWlsdXJlIGNhc2UhIFRoYXQgbWVhbnMgd2UgaGF2ZSBhIGNsZWFyIHJlZmNvdW50IHVuZGVyZmxvdyBidWcsIG9yIGEgcmFjZSBjb25kaXRpb24gdGhhdCBjb3VsZCBsZWFkIHRvIHByZW1hdHVyZSBjb21wbGV0aW9uIG9mIGBuc2ltX2J1c19kZXZzX3JlbGVhc2VkYC4KClRoZSBmaXg/IFBsYWNpbmcgdGhlIGByZWZjb3VudF9pbmNgICpiZWZvcmUqIHRoZSBgZGV2aWNlX3JlZ2lzdGVyYCBjYWxsIGluIGBuc2ltX2J1c19kZXZfbmV3YC4gVGhpcyBlbnN1cmVzIHRoZSByZWZjb3VudCBpcyBpbmNyZW1lbnRlZCAqYmVmb3JlKiBkZXZpY2UgcmVnaXN0cmF0aW9uIGFuZCwgY3J1Y2lhbGx5LCBiZWZvcmUgYW55IHBvdGVudGlhbCBmYWlsdXJlIHNjZW5hcmlvcyB3aGVyZSB0aGUgZGV2aWNlJiMzOTtzIHJlbGVhc2UgZnVuY3Rpb24gKHdoaWNoIGRlY3JlbWVudHMgdGhlIHJlZmNvdW50KSBpcyB0cmlnZ2VyZWQuIFRoaXMgY2hhbmdlIG1ha2VzIHRoZSByZWZjb3VudCBtYW5hZ2VtZW50IGNvbnNpc3RlbnQgd2hldGhlciB0aGUgZGV2aWNlIHJlZ2lzdHJhdGlvbiBzdWNjZWVkcyBvciBmYWlscy4gSXQgcGFpcnMgdGhlIGluY3JlbWVudCB3aXRoIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24vcmVnaXN0cmF0aW9uLgoKTm93LCBpcyB0aGlzIHdvcnRoIGZ1enppbmc/IEJhc2VkIG9uIHRoZSBjcml0ZXJpYSwgZGVmaW5pdGVseS4gbmV0ZGV2c2ltIGlzICpyZWFjaGFibGUqIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgYW5kLCBpbXBvcnRhbnRseSwgc3l6a2FsbGVyLiBTaW5jZSB0aGUgcGF0Y2ggdG91Y2hlcyBjb3JlIGxvZ2ljIGFyb3VuZCBkZXZpY2UgY3JlYXRpb24gYW5kIHJlZmNvdW50aW5nIHdpdGhpbiBhIHNvZnR3YXJlLXNpbXVsYXRlZCBuZXR3b3JrIGRyaXZlciwgSSB0aGluayB0aGlzIG1vZGlmaWNhdGlvbiBpcyB3b3J0aCB0ZXN0aW5nIHRob3JvdWdobHkuIEl0JiMzOTtzIG5vdCB2ZW5kb3Itc3BlY2lmaWMsIG5vdCBkZWNvcmF0aXZlLCBhbmQgbm90IHVucmVhY2hhYmxlLgoKTGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgdGhlIEZvY3VzU3ltYm9scywgZW5zdXJpbmcgd2UgaGF2ZSB0aGUgcmlnaHQgY292ZXJhZ2U6IGBuZXdfZGV2aWNlX3N0b3JlYCwgYG5zaW1fYnVzX2Rldl9uZXdgLCBgbnNpbV9idXNfZGV2X2RlbGAsIGBkZWxfZGV2aWNlX3N0b3JlYCwgYG5zaW1fYnVzX2luaXRgIC8gYG5zaW1fYnVzX2V4aXRgLCBhbmQgYG5zaW1fZHJ2X3Byb2JlYC4gQSBxdWljayBjaGVjayBzaG93cyB0aGF0IGBidXMuY2AgaG91c2VzIHNldmVyYWwgc3RhdGljIGZ1bmN0aW9ucyByZWxhdGVkIHRvIHRoZXNlIGVudHJ5IHBvaW50cy4KClRoaXMgcGF0Y2ggbG9va3MgbGlrZSBpdCByZXNvbHZlcyBhIHNpZ25pZmljYW50IHJlZmNvdW50IGlzc3VlLCBhbmQgbmV0ZGV2c2ltIGlzIHJpcGUgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAzOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQvKiBDb3B5cmlnaHQgKEMpIDIwMTcgTmV0cm9ub21lIFN5c3RlbXMsIEluYy5cbiAgIDM6XHQgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTWVsbGFub3ggVGVjaG5vbG9naWVzLiBBbGwgcmlnaHRzIHJlc2VydmVkXG4gICA0Olx0ICovXG4gICA1Olx0XG4gICA2Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvY29tcGxldGlvbi5oXHUwMDNlXG4gICA3Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvZGV2aWNlLmhcdTAwM2VcbiAgIDg6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9pZHIuaFx1MDAzZVxuICAgOTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gIDEwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvbGlzdC5oXHUwMDNlXG4gIDExOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvbXV0ZXguaFx1MDAzZVxuICAxMjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZmNvdW50LmhcdTAwM2VcbiAgMTM6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9zbGFiLmhcdTAwM2VcbiAgMTQ6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9zeXNmcy5oXHUwMDNlXG4gIDE1Olx0XG4gIDE2Olx0I2luY2x1ZGUgXCYjMzQ7bmV0ZGV2c2ltLmhcJiMzNDtcbiAgMTc6XHRcbiAgMTg6XHRzdGF0aWMgREVGSU5FX0lEQShuc2ltX2J1c19kZXZfaWRzKTtcbiAgMTk6XHRzdGF0aWMgTElTVF9IRUFEKG5zaW1fYnVzX2Rldl9saXN0KTtcbiAgMjA6XHRzdGF0aWMgREVGSU5FX01VVEVYKG5zaW1fYnVzX2Rldl9saXN0X2xvY2spO1xuICAyMTpcdHN0YXRpYyBib29sIG5zaW1fYnVzX2VuYWJsZTtcbiAgMjI6XHRzdGF0aWMgcmVmY291bnRfdCBuc2ltX2J1c19kZXZzOyAvKiBJbmNsdWRpbmcgdGhlIGJ1cyBpdHNlbGYuICovXG4gIDIzOlx0c3RhdGljIERFQ0xBUkVfQ09NUExFVElPTihuc2ltX2J1c19kZXZzX3JlbGVhc2VkKTtcbiAgMjQ6XHRcbiAgMjU6XHRzdGF0aWMgc3RydWN0IG5zaW1fYnVzX2RldiAqdG9fbnNpbV9idXNfZGV2KHN0cnVjdCBkZXZpY2UgKmRldilcbiAgMjY6XHR7XG4gIDI3Olx0XHRyZXR1cm4gY29udGFpbmVyX29mKGRldiwgc3RydWN0IG5zaW1fYnVzX2RldiwgZGV2KTtcbiAgMjg6XHR9XG4gIDI5Olx0XG4gIDMwOlx0c3RhdGljIHNzaXplX3RcbiAgMzE6XHRuc2ltX2J1c19kZXZfbnVtdmZzX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4gIDMyOlx0XHRcdFx0ICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcbiAgMzM6XHR7XG4gIDM0Olx0XHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYgPSB0b19uc2ltX2J1c19kZXYoZGV2KTtcbiAgMzU6XHRcdHVuc2lnbmVkIGludCBudW1fdmZzO1xuICAzNjpcdFx0aW50IHJldDtcbiAgMzc6XHRcbiAgMzg6XHRcdHJldCA9IGtzdHJ0b3VpbnQoYnVmLCAwLCBcdTAwMjZudW1fdmZzKTtcbiAgMzk6XHRcdGlmIChyZXQpXG4gIDQwOlx0XHRcdHJldHVybiByZXQ7XG4gIDQxOlx0XG4gIDQyOlx0XHRkZXZpY2VfbG9jayhkZXYpO1xuICA0MzpcdFx0cmV0ID0gLUVOT0VOVDtcbiAgNDQ6XHRcdGlmIChkZXZfZ2V0X2RydmRhdGEoZGV2KSlcbiAgNDU6XHRcdFx0cmV0ID0gbnNpbV9kcnZfY29uZmlndXJlX3Zmcyhuc2ltX2J1c19kZXYsIG51bV92ZnMpO1xuICA0NjpcdFx0ZGV2aWNlX3VubG9jayhkZXYpO1xuICA0NzpcdFxuICA0ODpcdFx0cmV0dXJuIHJldCA/IHJldCA6IGNvdW50O1xuICA0OTpcdH1cbiAgNTA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDM6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkwMDgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDoKCioqRGl2aW5nIGludG8gdGhlIE5ldGRldnNpbSBCdXMuYyBDb2RlKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBzb21ldGhpbmcgc3BlY2lmaWMgYWJvdXQgdGhlIG5ldGRldnNpbSBidXMgZHJpdmVyJiMzOTtzIGJlaGF2aW9yLiBSaWdodCwgbGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYSBmb2N1c2VkIGNodW5rIG9mIGNvZGUsIHNwZWNpZmljYWxseSBsaW5lcyA0ODAgdG8gNTQwIGluIGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmNgLiBJJiMzOTttIGdvaW5nIHRvIHNjYW4gdGhhdCBzZWN0aW9uIGNhcmVmdWxseS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgdGhlIGNydWNpYWwgYml0cyBvZiBsb2dpYyB0aGF0IGxpa2VseSByZWxhdGUgdG8gdGhlIGlzc3VlIEkmIzM5O20gaW52ZXN0aWdhdGluZy4gSSBleHBlY3QgdG8gZmluZCBzb21lIGtleSBmdW5jdGlvbiBjYWxscywgZGF0YSBzdHJ1Y3R1cmUgbWFuaXB1bGF0aW9ucywgb3IgY29uZGl0aW9uYWwgY2hlY2tzIHRoYXQgc2hlZCBsaWdodCBvbiB3aGF0JiMzOTtzIGdvaW5nIG9uLiBUaGlzIG5hcnJvd2VkIGFwcHJvYWNoIHdpbGwgaGVscCBtZSBhdm9pZCBnZXR0aW5nIGxvc3QgaW4gdGhlIGJyb2FkZXIgY29udGV4dCBhbmQgaG9uZSBpbiBvbiB0aGUgcmVsZXZhbnQgZGV0YWlscyBxdWlja2x5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ4MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDgwOlx0XHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuIDQ4MTpcdH1cbiA0ODI6XHRcbiA0ODM6XHRzdGF0aWMgdm9pZCBuc2ltX2J1c19kZXZfZGVsKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldilcbiA0ODQ6XHR7XG4gNDg1Olx0XHQvKiBEaXNhbGxvdyB1c2luZyBuc2ltX2J1c19kZXYgKi9cbiA0ODY6XHRcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2Vpbml0LCBmYWxzZSk7XG4gNDg3Olx0XHRpZGFfZnJlZShcdTAwMjZuc2ltX2J1c19kZXZfaWRzLCBuc2ltX2J1c19kZXYtXHUwMDNlZGV2LmlkKTtcbiA0ODg6XHRcdGRldmljZV91bnJlZ2lzdGVyKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2VkZXYpO1xuIDQ4OTpcdH1cbiA0OTA6XHRcbiA0OTE6XHRzdGF0aWMgc3RydWN0IGRldmljZV9kcml2ZXIgbnNpbV9kcml2ZXIgPSB7XG4gNDkyOlx0XHQubmFtZVx0XHQ9IERSVl9OQU1FLFxuIDQ5MzpcdFx0LmJ1c1x0XHQ9IFx1MDAyNm5zaW1fYnVzLFxuIDQ5NDpcdFx0Lm93bmVyXHRcdD0gVEhJU19NT0RVTEUsXG4gNDk1Olx0fTtcbiA0OTY6XHRcbiA0OTc6XHRpbnQgbnNpbV9idXNfaW5pdCh2b2lkKVxuIDQ5ODpcdHtcbiA0OTk6XHRcdGludCBlcnI7XG4gNTAwOlx0XG4gNTAxOlx0XHRlcnIgPSBidXNfcmVnaXN0ZXIoXHUwMDI2bnNpbV9idXMpO1xuIDUwMjpcdFx0aWYgKGVycilcbiA1MDM6XHRcdFx0cmV0dXJuIGVycjtcbiA1MDQ6XHRcdGVyciA9IGRyaXZlcl9yZWdpc3RlcihcdTAwMjZuc2ltX2RyaXZlcik7XG4gNTA1Olx0XHRpZiAoZXJyKVxuIDUwNjpcdFx0XHRnb3RvIGVycl9idXNfdW5yZWdpc3RlcjtcbiA1MDc6XHRcdHJlZmNvdW50X3NldChcdTAwMjZuc2ltX2J1c19kZXZzLCAxKTtcbiA1MDg6XHRcdC8qIEFsbG93IHVzaW5nIHJlc291cmNlcyAqL1xuIDUwOTpcdFx0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2bnNpbV9idXNfZW5hYmxlLCB0cnVlKTtcbiA1MTA6XHRcdHJldHVybiAwO1xuIDUxMTpcdFxuIDUxMjpcdGVycl9idXNfdW5yZWdpc3RlcjpcbiA1MTM6XHRcdGJ1c191bnJlZ2lzdGVyKFx1MDAyNm5zaW1fYnVzKTtcbiA1MTQ6XHRcdHJldHVybiBlcnI7XG4gNTE1Olx0fVxuIDUxNjpcdFxuIDUxNzpcdHZvaWQgbnNpbV9idXNfZXhpdCh2b2lkKVxuIDUxODpcdHtcbiA1MTk6XHRcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiwgKnRtcDtcbiA1MjA6XHRcbiA1MjE6XHRcdC8qIERpc2FsbG93IHVzaW5nIHJlc291cmNlcyAqL1xuIDUyMjpcdFx0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2bnNpbV9idXNfZW5hYmxlLCBmYWxzZSk7XG4gNTIzOlx0XHRpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNm5zaW1fYnVzX2RldnMpKVxuIDUyNDpcdFx0XHRjb21wbGV0ZShcdTAwMjZuc2ltX2J1c19kZXZzX3JlbGVhc2VkKTtcbiA1MjU6XHRcbiA1MjY6XHRcdG11dGV4X2xvY2soXHUwMDI2bnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XG4gNTI3Olx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobnNpbV9idXNfZGV2LCB0bXAsIFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0LCBsaXN0KSB7XG4gNTI4Olx0XHRcdGxpc3RfZGVsKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2VsaXN0KTtcbiA1Mjk6XHRcdFx0bnNpbV9idXNfZGV2X2RlbChuc2ltX2J1c19kZXYpO1xuIDUzMDpcdFx0fVxuIDUzMTpcdFx0bXV0ZXhfdW5sb2NrKFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0X2xvY2spO1xuIDUzMjpcdFxuIDUzMzpcdFx0d2FpdF9mb3JfY29tcGxldGlvbihcdTAwMjZuc2ltX2J1c19kZXZzX3JlbGVhc2VkKTtcbiA1MzQ6XHRcbiA1MzU6XHRcdGRyaXZlcl91bnJlZ2lzdGVyKFx1MDAyNm5zaW1fZHJpdmVyKTtcbiA1MzY6XHRcdGJ1c191bnJlZ2lzdGVyKFx1MDAyNm5zaW1fYnVzKTtcbiA1Mzc6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAzOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMTM4CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgbmV0ZGV2c2ltYCBtb2R1bGUuCgoqKkludmVzdGlnYXRpbmcgYG5ldGRldnNpbWAgRnVuY3Rpb25hbGl0eSoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgYG5ldGRldnNpbWAgbW9kdWxlJiMzOTtzIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gTXkgZmlyc3Qgc3RlcCBpcyB0byBnZXQgZmFtaWxpYXIgd2l0aCB3aGF0IGl0IG9mZmVycywgYW5kIGEgZ29vZCBzdGFydGluZyBwb2ludCBpcyBhbHdheXMgdGhlIGhlYWRlciBmaWxlcy4gTGV0IG1lIHRha2UgYSBsb29rIGF0IGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmhgLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgc29saWQgb3ZlcnZpZXcgb2YgdGhlIGRlZmluZWQgc3RydWN0dXJlcywgZnVuY3Rpb24gcHJvdG90eXBlcywgYW5kIGFueSBrZXkgbWFjcm9zIHVzZWQgaW4gdGhpcyBzaW11bGF0ZWQgbmV0d29yayBkZXZpY2UgaW1wbGVtZW50YXRpb24uIEZyb20gdGhlcmUsIEkgY2FuIHN0YXJ0IHRvIGZsZXNoIG91dCB0aGUgZGlmZmVyZW50IGNvbXBvbmVudHMgYW5kIGhvdyB0aGV5IGZpdCB0b2dldGhlci4gVW5kZXJzdGFuZGluZyB0aGUgaGVhZGVyIGlzIGNydWNpYWwgYmVmb3JlIGRpZ2dpbmcgaW50byB0aGUgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuc2ltXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDEtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDI6c3RydWN0IG5zaW1fc2Ege1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQzLVx0c3RydWN0IHhmcm1fc3RhdGUgKnhzO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC01MS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo1MjpzdHJ1Y3QgbnNpbV9pcHNlYyB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NTM6XHRzdHJ1Y3QgbnNpbV9zYSBzYVtOU0lNX0lQU0VDX01BWF9TQV9DT1VOVF07XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNTQtXHRzdHJ1Y3QgZGVudHJ5ICpwZmlsZTtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNjAtI2RlZmluZSBOU0lNX01BQ1NFQ19NQVhfUlhTQ19DT1VOVCAxXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NjE6c3RydWN0IG5zaW1fcnhzYyB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNjItXHRzY2lfdCBzY2k7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTY1LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjY2OnN0cnVjdCBuc2ltX3NlY3kge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTY3LVx0c2NpX3Qgc2NpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjY4Olx0c3RydWN0IG5zaW1fcnhzYyBuc2ltX3J4c2NbTlNJTV9NQUNTRUNfTUFYX1JYU0NfQ09VTlRdO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjY5Olx0dTggbnNpbV9yeHNjX2NvdW50O1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTcwLVx0Ym9vbCB1c2VkO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC03Mi1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo3MzpzdHJ1Y3QgbnNpbV9tYWNzZWMge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjc0Olx0c3RydWN0IG5zaW1fc2VjeSBuc2ltX3NlY3lbTlNJTV9NQUNTRUNfTUFYX1NFQ1lfQ09VTlRdO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjc1Olx0dTggbnNpbV9zZWN5X2NvdW50O1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTc2LX07XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNzctXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Nzg6c3RydWN0IG5zaW1fdmxhbiB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNzktXHRERUNMQVJFX0JJVE1BUChjdGFnLCBWTEFOX05fVklEKTtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtODItXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6ODM6c3RydWN0IG5zaW1fZXRodG9vbF9wYXVzZXBhcmFtIHtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC04NC1cdGJvb2wgcng7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTg5LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjkwOnN0cnVjdCBuc2ltX2V0aHRvb2wge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTkxLVx0dTMyIGdldF9lcnI7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTkzLVx0dTMyIGNoYW5uZWxzO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjk0Olx0c3RydWN0IG5zaW1fZXRodG9vbF9wYXVzZXBhcmFtIHBhdXNlcGFyYW07XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtOTUtXHRzdHJ1Y3QgZXRodG9vbF9jb2FsZXNjZSBjb2FsZXNjZTtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtOTktXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTAwOnN0cnVjdCBuc2ltX3JxIHtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xMDEtXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg9MTA3PXN0cnVjdCBuZXRkZXZzaW0ge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTEwOC1cdHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXY7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTA5Olx0c3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldjtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxMTA6XHRzdHJ1Y3QgbnNpbV9kZXZfcG9ydCAqbnNpbV9kZXZfcG9ydDtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xMTEtXHRzdHJ1Y3QgbW9ja19waGMgKnBoYztcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxMTI6XHRzdHJ1Y3QgbnNpbV9ycSAqKnJxO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTExMy1cbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTI3LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjEyODpcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldjtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xMjktXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE0MS1cdGJvb2wgYnBmX21hcF9hY2NlcHQ7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTQyOlx0c3RydWN0IG5zaW1faXBzZWMgaXBzZWM7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTQzOlx0c3RydWN0IG5zaW1fbWFjc2VjIG1hY3NlYztcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxNDQ6XHRzdHJ1Y3QgbnNpbV92bGFuIHZsYW47XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTQ1LVx0c3RydWN0IHtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTU4LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE1OTpcdHN0cnVjdCBuc2ltX2V0aHRvb2wgZXRodG9vbDtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xNjAtXHRzdHJ1Y3QgbmV0ZGV2c2ltIF9fcmN1ICpwZWVyO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xNjUtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTY2OnN0cnVjdCBuZXRkZXZzaW0gKm5zaW1fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTY3Olx0XHRcdCAgICAgIHN0cnVjdCBuc2ltX2Rldl9wb3J0ICpuc2ltX2Rldl9wb3J0LFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE2OC1cdFx0XHQgICAgICB1OCBwZXJtX2FkZHJbRVRIX0FMRU5dKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxNjk6dm9pZCBuc2ltX2Rlc3Ryb3koc3RydWN0IG5ldGRldnNpbSAqbnMpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE3MC1ib29sIG5ldGRldl9pc19uc2ltKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE3MS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxNzI6dm9pZCBuc2ltX2V0aHRvb2xfaW5pdChzdHJ1Y3QgbmV0ZGV2c2ltICpucyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTczOnZvaWQgbnNpbV9ldGh0b29sX2Zpbmkoc3RydWN0IG5ldGRldnNpbSAqbnMpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE3NC1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxNzU6dm9pZCBuc2ltX3VkcF90dW5uZWxzX2RlYnVnZnNfY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE3NjppbnQgbnNpbV91ZHBfdHVubmVsc19pbmZvX2NyZWF0ZShzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE3Ny1cdFx0XHRcdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxNzg6dm9pZCBuc2ltX3VkcF90dW5uZWxzX2luZm9fZGVzdHJveShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xNzktXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTgwLSNpZmRlZiBDT05GSUdfQlBGX1NZU0NBTExcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxODE6aW50IG5zaW1fYnBmX2Rldl9pbml0KHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE4Mjp2b2lkIG5zaW1fYnBmX2Rldl9leGl0KHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE4MzppbnQgbnNpbV9icGZfaW5pdChzdHJ1Y3QgbmV0ZGV2c2ltICpucyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTg0OnZvaWQgbnNpbV9icGZfdW5pbml0KHN0cnVjdCBuZXRkZXZzaW0gKm5zKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxODU6aW50IG5zaW1fYnBmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfYnBmICpicGYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE4NjppbnQgbnNpbV9icGZfZGlzYWJsZV90YyhzdHJ1Y3QgbmV0ZGV2c2ltICpucyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTg3OmludCBuc2ltX2JwZl9zZXR1cF90Y19ibG9ja19jYihlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xODgtXHRcdFx0ICAgICAgIHZvaWQgKnR5cGVfZGF0YSwgdm9pZCAqY2JfcHJpdik7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE5MC1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxOTE6c3RhdGljIGlubGluZSBpbnQgbnNpbV9icGZfZGV2X2luaXQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldilcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xOTIte1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xOTUtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTk2OnN0YXRpYyBpbmxpbmUgdm9pZCBuc2ltX2JwZl9kZXZfZXhpdChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2KVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE5Ny17XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTk4LX1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxOTk6c3RhdGljIGlubGluZSBpbnQgbnNpbV9icGZfaW5pdChzdHJ1Y3QgbmV0ZGV2c2ltICpucylcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yMDAte1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yMDMtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MjA0OnN0YXRpYyBpbmxpbmUgdm9pZCBuc2ltX2JwZl91bmluaXQoc3RydWN0IG5ldGRldnNpbSAqbnMpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjA1LXtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjA3LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjIwODpzdGF0aWMgaW5saW5lIGludCBuc2ltX2JwZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X2JwZiAqYnBmKVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTIwOS17XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTIxMi1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoyMTM6c3RhdGljIGlubGluZSBpbnQgbnNpbV9icGZfZGlzYWJsZV90YyhzdHJ1Y3QgbmV0ZGV2c2ltICpucylcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yMTQte1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaD0yMTg9c3RhdGljIGlubGluZSBpbnRcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoyMTk6bnNpbV9icGZfc2V0dXBfdGNfYmxvY2tfY2IoZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsIHZvaWQgKnR5cGVfZGF0YSxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yMjAtXHRcdFx0ICAgdm9pZCAqY2JfcHJpdilcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjI1LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjIyNjplbnVtIG5zaW1fcmVzb3VyY2VfaWQge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTIyNy1cdE5TSU1fUkVTT1VSQ0VfTk9ORSwgICAvKiBERVZMSU5LX1JFU09VUkNFX0lEX1BBUkVOVF9UT1AgKi9cbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjM2LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjIzNzplbnVtIG5zaW1fcG9ydF9yZXNvdXJjZV9pZCB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjM4LVx0TlNJTV9QT1JUX1JFU09VUkNFX1RFU1QgPSAxLFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yNDAtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MjQxOnN0cnVjdCBuc2ltX2Rldl9oZWFsdGgge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTI0Mi1cdHN0cnVjdCBkZXZsaW5rX2hlYWx0aF9yZXBvcnRlciAqZW1wdHlfcmVwb3J0ZXI7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTI0OS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoyNTA6aW50IG5zaW1fZGV2X2hlYWx0aF9pbml0KHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsIHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoyNTE6dm9pZCBuc2ltX2Rldl9oZWFsdGhfZXhpdChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yNTItXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MjUzOnN0cnVjdCBuc2ltX2Rldl9od3N0YXRzX25ldGRldiB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjU0LVx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yNjAtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MjYxOnN0cnVjdCBuc2ltX2Rldl9od3N0YXRzIHtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yNjItXHRzdHJ1Y3QgZGVudHJ5ICpkZGlyO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yNzEtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MjcyOmludCBuc2ltX2Rldl9od3N0YXRzX2luaXQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2Rldik7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MjczOnZvaWQgbnNpbV9kZXZfaHdzdGF0c19leGl0KHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTI3NC1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yNzUtI2lmIElTX0VOQUJMRUQoQ09ORklHX1BTQU1QTEUpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mjc2OmludCBuc2ltX2Rldl9wc2FtcGxlX2luaXQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2Rldik7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mjc3OnZvaWQgbnNpbV9kZXZfcHNhbXBsZV9leGl0KHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTI3OC0jZWxzZVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjI3OTpzdGF0aWMgaW5saW5lIGludCBuc2ltX2Rldl9wc2FtcGxlX2luaXQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldilcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yODAte1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yODMtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mjg0OnN0YXRpYyBpbmxpbmUgdm9pZCBuc2ltX2Rldl9wc2FtcGxlX2V4aXQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldilcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yODUte1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yODgtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mjg5OmVudW0gbnNpbV9kZXZfcG9ydF90eXBlIHtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yOTAtXHROU0lNX0RFVl9QT1JUX1RZUEVfUEYsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTI5NS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoyOTY6c3RydWN0IG5zaW1fZGV2X3BvcnQge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTI5Ny1cdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjk5LVx0dW5zaWduZWQgaW50IHBvcnRfaW5kZXg7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzAwOlx0ZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgcG9ydF90eXBlO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTMwMS1cdHN0cnVjdCBkZW50cnkgKmRkaXI7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTMwNy1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozMDg6c3RydWN0IG5zaW1fdmZfY29uZmlnIHtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zMDktXHRpbnQgbGlua19zdGF0ZTtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzIwLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjMyMTpzdHJ1Y3QgbnNpbV9kZXYge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjMyMjpcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldjtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozMjM6XHRzdHJ1Y3QgbnNpbV9maWJfZGF0YSAqZmliX2RhdGE7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzI0Olx0c3RydWN0IG5zaW1fdHJhcF9kYXRhICp0cmFwX2RhdGE7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzI1LVx0c3RydWN0IGRlbnRyeSAqZGRpcjtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzI5LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjMzMDpcdHN0cnVjdCBuc2ltX3ZmX2NvbmZpZyAqdmZjb25maWdzO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTMzMS1cbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzUxLVx0c3RydWN0IGRldmxpbmtfcmVnaW9uICpkdW1teV9yZWdpb247XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzUyOlx0c3RydWN0IG5zaW1fZGV2X2hlYWx0aCBoZWFsdGg7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzUzOlx0c3RydWN0IG5zaW1fZGV2X2h3c3RhdHMgaHdzdGF0cztcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zNTQtXHRzdHJ1Y3QgZmxvd19hY3Rpb25fY29va2llICpmYV9jb29raWU7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM2OC1cdH0gdWRwX3BvcnRzO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjM2OTpcdHN0cnVjdCBuc2ltX2Rldl9wc2FtcGxlICpwc2FtcGxlO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM3MC1cdHUxNiBlc3dfbW9kZTtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzcyLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjM3MzpzdGF0aWMgaW5saW5lIGJvb2wgbnNpbV9lc3dfbW9kZV9pc19sZWdhY3koc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldilcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zNzQte1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjM3NTpcdHJldHVybiBuc2ltX2Rldi1cdTAwM2Vlc3dfbW9kZSA9PSBERVZMSU5LX0VTV0lUQ0hfTU9ERV9MRUdBQ1k7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzc2LX1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zNzctXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mzc4OnN0YXRpYyBpbmxpbmUgYm9vbCBuc2ltX2Vzd19tb2RlX2lzX3N3aXRjaGRldihzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2KVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM3OS17XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzgwOlx0cmV0dXJuIG5zaW1fZGV2LVx1MDAzZWVzd19tb2RlID09IERFVkxJTktfRVNXSVRDSF9NT0RFX1NXSVRDSERFVjtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zODEtfVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM4Mi1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozODM6c3RhdGljIGlubGluZSBzdHJ1Y3QgbmV0ICpuc2ltX2Rldl9uZXQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldilcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zODQte1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjM4NTpcdHJldHVybiBkZXZsaW5rX25ldChwcml2X3RvX2RldmxpbmsobnNpbV9kZXYpKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zODYtfVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM4Ny1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozODg6aW50IG5zaW1fZGV2X2luaXQodm9pZCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mzg5OnZvaWQgbnNpbV9kZXZfZXhpdCh2b2lkKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozOTA6aW50IG5zaW1fZHJ2X3Byb2JlKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2Rldik7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzkxOnZvaWQgbnNpbV9kcnZfcmVtb3ZlKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2Rldik7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzkyOmludCBuc2ltX2Rydl9wb3J0X2FkZChzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzkzOlx0XHQgICAgICBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLCB1bnNpZ25lZCBpbnQgcG9ydF9pbmRleCxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zOTQtXHRcdCAgICAgIHU4IHBlcm1fYWRkcltFVEhfQUxFTl0pO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjM5NTppbnQgbnNpbV9kcnZfcG9ydF9kZWwoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2LFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjM5NjpcdFx0ICAgICAgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zOTctXHRcdCAgICAgIHVuc2lnbmVkIGludCBwb3J0X2luZGV4KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozOTg6aW50IG5zaW1fZHJ2X2NvbmZpZ3VyZV92ZnMoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2LFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM5OS1cdFx0XHQgICB1bnNpZ25lZCBpbnQgbnVtX3Zmcyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDAwLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQwMTp1bnNpZ25lZCBpbnQgbnNpbV9kZXZfZ2V0X3ZmcyhzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00MDItXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDAzOnN0cnVjdCBuc2ltX2ZpYl9kYXRhICpuc2ltX2ZpYl9jcmVhdGUoc3RydWN0IGRldmxpbmsgKmRldmxpbmssXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDA0LVx0XHRcdFx0ICAgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MDU6dm9pZCBuc2ltX2ZpYl9kZXN0cm95KHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rLCBzdHJ1Y3QgbnNpbV9maWJfZGF0YSAqZmliX2RhdGEpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQwNjp1NjQgbnNpbV9maWJfZ2V0X3ZhbChzdHJ1Y3QgbnNpbV9maWJfZGF0YSAqZmliX2RhdGEsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDA3Olx0XHQgICAgIGVudW0gbnNpbV9yZXNvdXJjZV9pZCByZXNfaWQsIGJvb2wgbWF4KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00MDgtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDA5OnN0YXRpYyBpbmxpbmUgYm9vbCBuc2ltX2Rldl9wb3J0X2lzX3BmKHN0cnVjdCBuc2ltX2Rldl9wb3J0ICpuc2ltX2Rldl9wb3J0KVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQxMC17XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDExOlx0cmV0dXJuIG5zaW1fZGV2X3BvcnQtXHUwMDNlcG9ydF90eXBlID09IE5TSU1fREVWX1BPUlRfVFlQRV9QRjtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00MTItfVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQxMy1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MTQ6c3RhdGljIGlubGluZSBib29sIG5zaW1fZGV2X3BvcnRfaXNfdmYoc3RydWN0IG5zaW1fZGV2X3BvcnQgKm5zaW1fZGV2X3BvcnQpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDE1LXtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MTY6XHRyZXR1cm4gbnNpbV9kZXZfcG9ydC1cdTAwM2Vwb3J0X3R5cGUgPT0gTlNJTV9ERVZfUE9SVF9UWVBFX1ZGO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQxNy19XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDE4LSNpZiBJU19FTkFCTEVEKENPTkZJR19YRlJNX09GRkxPQUQpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDE5OnZvaWQgbnNpbV9pcHNlY19pbml0KHN0cnVjdCBuZXRkZXZzaW0gKm5zKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MjA6dm9pZCBuc2ltX2lwc2VjX3RlYXJkb3duKHN0cnVjdCBuZXRkZXZzaW0gKm5zKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MjE6Ym9vbCBuc2ltX2lwc2VjX3R4KHN0cnVjdCBuZXRkZXZzaW0gKm5zLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00MjItI2Vsc2VcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MjM6c3RhdGljIGlubGluZSB2b2lkIG5zaW1faXBzZWNfaW5pdChzdHJ1Y3QgbmV0ZGV2c2ltICpucylcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00MjQte1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00MjYtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDI3OnN0YXRpYyBpbmxpbmUgdm9pZCBuc2ltX2lwc2VjX3RlYXJkb3duKHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQyOC17XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQzMC1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MzE6c3RhdGljIGlubGluZSBib29sIG5zaW1faXBzZWNfdHgoc3RydWN0IG5ldGRldnNpbSAqbnMsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDMyLXtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDM3LSNpZiBJU19FTkFCTEVEKENPTkZJR19NQUNTRUMpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDM4OnZvaWQgbnNpbV9tYWNzZWNfaW5pdChzdHJ1Y3QgbmV0ZGV2c2ltICpucyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDM5OnZvaWQgbnNpbV9tYWNzZWNfdGVhcmRvd24oc3RydWN0IG5ldGRldnNpbSAqbnMpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQ0MC0jZWxzZVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQ0MTpzdGF0aWMgaW5saW5lIHZvaWQgbnNpbV9tYWNzZWNfaW5pdChzdHJ1Y3QgbmV0ZGV2c2ltICpucylcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00NDIte1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00NDQtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDQ1OnN0YXRpYyBpbmxpbmUgdm9pZCBuc2ltX21hY3NlY190ZWFyZG93bihzdHJ1Y3QgbmV0ZGV2c2ltICpucylcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00NDYte1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00NTAtI2lmIElTX0VOQUJMRUQoQ09ORklHX0lORVRfUFNQKVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQ1MTppbnQgbnNpbV9wc3BfaW5pdChzdHJ1Y3QgbmV0ZGV2c2ltICpucyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDUyOnZvaWQgbnNpbV9wc3BfdW5pbml0KHN0cnVjdCBuZXRkZXZzaW0gKm5zKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0NTM6dm9pZCBuc2ltX3BzcF9oYW5kbGVfZXh0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBza2JfZXh0ICpwc3BfZXh0KTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00NTQtZW51bSBza2JfZHJvcF9yZWFzb25cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0NTU6bnNpbV9kb19wc3Aoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGRldnNpbSAqbnMsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDU2LVx0ICAgIHN0cnVjdCBuZXRkZXZzaW0gKnBlZXJfbnMsIHN0cnVjdCBza2JfZXh0ICoqcHNwX2V4dCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDU3LSNlbHNlXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDU4OnN0YXRpYyBpbmxpbmUgaW50IG5zaW1fcHNwX2luaXQoc3RydWN0IG5ldGRldnNpbSAqbnMpIHsgcmV0dXJuIDA7IH1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0NTk6c3RhdGljIGlubGluZSB2b2lkIG5zaW1fcHNwX3VuaW5pdChzdHJ1Y3QgbmV0ZGV2c2ltICpucykge31cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00NjAtc3RhdGljIGlubGluZSBlbnVtIHNrYl9kcm9wX3JlYXNvblxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQ2MTpuc2ltX2RvX3BzcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0ZGV2c2ltICpucyxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00NjItXHQgICAgc3RydWN0IG5ldGRldnNpbSAqcGVlcl9ucywgc3RydWN0IHNrYl9leHQgKipwc3BfZXh0KVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaD00Njc9c3RhdGljIGlubGluZSB2b2lkXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDY4Om5zaW1fcHNwX2hhbmRsZV9leHQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNrYl9leHQgKnBzcF9leHQpIHt9XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDY5LSNlbmRpZlxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQ3MC1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0NzE6aW50IG5zaW1fc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDcyLVx0XHQgIHZvaWQgKnR5cGVfZGF0YSk7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQ3NC0jZGVmaW5lIE5TSU1fQlVTX0RFVl9NQVhfVkZTIDRcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0NzU6c3RydWN0IG5zaW1fYnVzX2RldiB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDc2LVx0c3RydWN0IGRldmljZSBkZXY7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQ4Ni1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0ODc6aW50IG5zaW1fYnVzX2luaXQodm9pZCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDg4OnZvaWQgbnNpbV9idXNfZXhpdCh2b2lkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDM6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjc3OTcKCQkJCQkJCW91dHB1dDogMTcyCgkJCQkJCQl0aG91Z2h0czogNzgzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIE5FVERFVlNJTSBDb25maWd1cmF0aW9uIGFuZCBTeW1ib2wgRm9jdXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93biBzeXN0ZW1hdGljYWxseS4gRmlyc3QsIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgS2NvbmZpZyByZXF1aXJlbWVudHMgZm9yIE5FVERFVlNJTSBhcmUgbWV0LiBJJiMzOTt2ZSBjaGVja2VkIHRoZSBkZXBlbmRlbmNpZXM6IGBjb25maWcgTkVUREVWU0lNYCByZWxpZXMgb24gYERFQlVHX0ZTYCwgYElORVRgLCBlaXRoZXIgYFBTQU1QTEVgIG9yIGBQU0FNUExFPW5gLCBhbmQgZWl0aGVyIGBQVFBfMTU4OF9DTE9DS19NT0NLYCBvciBgUFRQXzE1ODhfQ0xPQ0tfTU9DSz1uYC4gSXQgKnNlbGVjdHMqIGBORVRfREVWTElOS2AsIGBQQUdFX1BPT0xgLCBhbmQgYE5FVF9TSEFQRVJgLiBTbywgdG8gYWN0dWFsbHkgYnVpbGQgdGhpcywgYE5FVERFVlNJTWAgaXRzZWxmIGlzIGVzc2VudGlhbCwgYW5kIEkgbXVzdCB2ZXJpZnkgYERFQlVHX0ZTYCBhbmQgYElORVRgIGFyZSBlbmFibGVkLgoKTmV4dCwgSSBleGFtaW5lZCB0aGUgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OyDigJMgdGhlIG5vbi1zdGF0aWMgZW50cnkgcG9pbnRzLiBJIGlkZW50aWZpZWQgdGhlIGNyaXRpY2FsIGZ1bmN0aW9uczogYG5zaW1fYnVzX2luaXRgLCBgbnNpbV9idXNfZXhpdGAsIGBuc2ltX2Rydl9wcm9iZWAsIGBuc2ltX2Rydl9yZW1vdmVgLCBgbnNpbV9kcnZfcG9ydF9hZGRgLCBgbnNpbV9kcnZfcG9ydF9kZWxgLCBhbmQgYG5zaW1fZHJ2X2NvbmZpZ3VyZV92ZnNgLiBJIGFsc28gbG9va2VkIGF0IHN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIGBidXMuY2Ag4oCTIGBuc2ltX2J1c19kZXZfbmV3YCBhbmQgYG5ld19kZXZpY2Vfc3RvcmVgIOKAkyB0byBzZWUgaWYgdGhleSBhcmUgc29tZWhvdyBleHBvc2VkLiBUaGUgcHJvbXB0IGluc3RydWN0aW9uIHRvIHByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBlbnRyeXBvaW50cyBpcyBrZXkgaGVyZS4KCkFmdGVyIGNyb3NzLXJlZmVyZW5jaW5nIGZpbGUgbG9jYXRpb25zLCBJIGNvbmZpcm1lZCB0aGF0IGBuc2ltX2J1c19kZXZfbmV3YCBhbmQgYG5ld19kZXZpY2Vfc3RvcmVgIGFyZSBpbmRlZWQgc3RhdGljLCByZXNpZGluZyBpbiBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jYCwgd2hlcmVhcyBgbnNpbV9kcnZfcHJvYmVgLCBgbnNpbV9kcnZfcmVtb3ZlYCwgYG5zaW1fZHJ2X2NvbmZpZ3VyZV92ZnNgLCBgbnNpbV9kcnZfcG9ydF9hZGRgLCBhbmQgYG5zaW1fZHJ2X3BvcnRfZGVsYCBhcmUgbm9uLXN0YXRpYyBhbmQgZGVmaW5lZCBpbiBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jYCwgY2FsbGVkIGZyb20gYGJ1cy5jYC4KCkkmIzM5O3ZlIHJlLWNvbmZpcm1lZCB0aGUgYEVuYWJsZUNvbmZpZ3NgOiBgTkVUREVWU0lNYCwgYERFQlVHX0ZTYCwgYW5kIGBJTkVUYCBhcmUgYWxsIHJlcXVpcmVkLgoKT2theSwgbGV0JiMzOTtzIHN5bnRoZXNpemUgbXkgZmluZGluZ3MuIEkmIzM5O20gZ29pbmcgdG8gZmxhZyB0aGlzIGFzIGZ1enplZCBhbmQgY29uZmlybWVkOgoKKiAgIGBXb3J0aEZ1enppbmc6IHRydWVgCiogICBgRW5hYmxlQ29uZmlnczogWyYjMzQ7TkVUREVWU0lNJiMzNDssICYjMzQ7REVCVUdfRlMmIzM0OywgJiMzNDtJTkVUJiMzNDtdYAoqICAgYEZvY3VzU3ltYm9sczogWyYjMzQ7bnNpbV9kcnZfcHJvYmUmIzM0OywgJiMzNDtuc2ltX2Rydl9yZW1vdmUmIzM0OywgJiMzNDtuc2ltX2Rydl9jb25maWd1cmVfdmZzJiMzNDssICYjMzQ7bnNpbV9idXNfaW5pdCYjMzQ7LCAmIzM0O25zaW1fYnVzX2V4aXQmIzM0O10gKGFuZC9vciAmIzM0O25zaW1fZHJ2X3BvcnRfYWRkJiMzNDssICYjMzQ7bnNpbV9kcnZfcG9ydF9kZWwmIzM0OylgCgpJIHVuZGVyc3RhbmQgdGhlIHBhdGNoIGlzIHRvdWNoaW5nIHRoZSByZWZlcmVuY2UgY291bnRpbmcgb2YgYG5zaW1fYnVzX2RldnNgLCBzcGVjaWZpY2FsbHkgbW92aW5nIHRoZSBpbmNyZW1lbnQgdG8gaGFwcGVuIGJlZm9yZSBgZGV2aWNlX3JlZ2lzdGVyKClgLiBUaGlzIGNoYW5nZSBhbHRlcnMgbGlmZWN5Y2xlIGFuZCB0cmFja2luZyBvZiBuZXRkZXZzaW0gYnVzIGRldmljZXMsIHdoaWNoIGFyZSBjcml0aWNhbCB0byB0aGUgbmV0ZGV2c2ltIGRyaXZlciBkZXZpY2UgbWFuYWdlbWVudC4gVGhhdCYjMzk7cyBmdXp6ZXItcmVsZXZhbnQuIFNvLCB0aGlzIGFuYWx5c2lzIHNlZW1zIHNvbGlkLiBJJiMzOTtsbCBwcm9jZWVkIHdpdGggYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDM6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7LAogICAgJiMzNDtERUJVR19GUyYjMzQ7LAogICAgJiMzNDtJTkVUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bnNpbV9kcnZfcHJvYmUmIzM0OywKICAgICYjMzQ7bnNpbV9kcnZfcmVtb3ZlJiMzNDssCiAgICAmIzM0O25zaW1fZHJ2X2NvbmZpZ3VyZV92ZnMmIzM0OywKICAgICYjMzQ7bnNpbV9idXNfaW5pdCYjMzQ7LAogICAgJiMzNDtuc2ltX2J1c19leGl0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkanVzdHMgdGhlIGRldmljZSByZWZlcmVuY2UgY291bnRpbmcgZm9yIG5ldGRldnNpbSBidXMgZGV2aWNlcyBieSBtb3ZpbmcgcmVmY291bnRfaW5jKFx1MDAyNm5zaW1fYnVzX2RldnMpIGludG8gbnNpbV9idXNfZGV2X25ldygpIGJlZm9yZSBkZXZpY2VfcmVnaXN0ZXIoKSwgZml4aW5nIGEgcmVmY291bnQgdW5kZXJmbG93IG9uIGRldmljZSByZWdpc3RyYXRpb24gZmFpbHVyZS4gTmV0ZGV2c2ltIGlzIGEgc29mdHdhcmUtc2ltdWxhdGVkIG5ldHdvcmsgZGV2aWNlIGRyaXZlciBmdWxseSByZWFjaGFibGUgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRERVZTSU0mIzM0OywKICAgICYjMzQ7REVCVUdfRlMmIzM0OywKICAgICYjMzQ7SU5FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25zaW1fZHJ2X3Byb2JlJiMzNDssCiAgICAmIzM0O25zaW1fZHJ2X3JlbW92ZSYjMzQ7LAogICAgJiMzNDtuc2ltX2Rydl9jb25maWd1cmVfdmZzJiMzNDssCiAgICAmIzM0O25zaW1fYnVzX2luaXQmIzM0OywKICAgICYjMzQ7bnNpbV9idXNfZXhpdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGp1c3RzIHRoZSBkZXZpY2UgcmVmZXJlbmNlIGNvdW50aW5nIGZvciBuZXRkZXZzaW0gYnVzIGRldmljZXMgYnkgbW92aW5nIHJlZmNvdW50X2luYyhcdTAwMjZuc2ltX2J1c19kZXZzKSBpbnRvIG5zaW1fYnVzX2Rldl9uZXcoKSBiZWZvcmUgZGV2aWNlX3JlZ2lzdGVyKCksIGZpeGluZyBhIHJlZmNvdW50IHVuZGVyZmxvdyBvbiBkZXZpY2UgcmVnaXN0cmF0aW9uIGZhaWx1cmUuIE5ldGRldnNpbSBpcyBhIHNvZnR3YXJlLXNpbXVsYXRlZCBuZXR3b3JrIGRldmljZSBkcml2ZXIgZnVsbHkgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDM6MTQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMzoxNDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vdmVzIHRoZSByZWZlcmVuY2UgY291bnQgaW5jcmVtZW50IGByZWZjb3VudF9pbmMoXHUwMDI2bnNpbV9idXNfZGV2cylgIGZyb20gYG5ld19kZXZpY2Vfc3RvcmUoKWAgaW50byBgbnNpbV9idXNfZGV2X25ldygpYCBwcmlvciB0byBjYWxsaW5nIGBkZXZpY2VfcmVnaXN0ZXIoKWAuIFRoaXMgZml4ZXMgcmVmZXJlbmNlIGNvdW50aW5nIGJhbGFuY2UgaW4gZXJyb3IvcmVsZWFzZSBwYXRocy4gXG5cblRoZSBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIGFsdGVyIGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgdXNhZ2UsIGJvdW5kcyBjaGVja3MsIG9yIGtlcm5lbC10by11c2VyIGluZm8gbGVha3MuIEFueSBsaWZlY3ljbGUgb3IgcmVmZXJlbmNlIGNvdW50aW5nIGVycm9ycyAoZS5nLiB1c2UtYWZ0ZXItZnJlZSwgcmVmY291bnQgdW5kZXJmbG93L292ZXJmbG93KSBhcmUgY292ZXJlZCBieSByZWZjb3VudF90IGNoZWNrcyBhbmQgc3RhbmRhcmQgS0FTQU4vTE9DS0RFUCBkZXRlY3RvcnMuIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA3NWUyMmM5Y2Y4NmU5YjVlYTUzNzZiMzllN2IwMWExNmM2MmE0NzljCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgMSAwMzoxNDowOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYyBiL2RyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYwppbmRleCA1YzU1YzMwODQ4N2I0Li40MjZmYjQzOGI5MjIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jCkBAIC0xOTQsNyAmIzQzOzE5NCw2IEBAIG5ld19kZXZpY2Vfc3RvcmUoY29uc3Qgc3RydWN0IGJ1c190eXBlICpidXMsIGNvbnN0IGNoYXIgKmJ1Ziwgc2l6ZV90IGNvdW50KQogCQlnb3RvIGVycjsKIAl9CiAKLQlyZWZjb3VudF9pbmMoJmFtcDtuc2ltX2J1c19kZXZzKTsKIAkvKiBBbGxvdyB1c2luZyBuc2ltX2J1c19kZXYgKi8KIAlzbXBfc3RvcmVfcmVsZWFzZSgmYW1wO25zaW1fYnVzX2Rldi0mZ3Q7aW5pdCwgdHJ1ZSk7CiAKQEAgLTQ2NSw2ICYjNDM7NDY0LDcgQEAgbnNpbV9idXNfZGV2X25ldyh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBwb3J0X2NvdW50LCB1bnNpZ25lZCBpbnQgbnVtX3F1ZXUKIAkvKiBEaXNhbGxvdyB1c2luZyBuc2ltX2J1c19kZXYgKi8KIAlzbXBfc3RvcmVfcmVsZWFzZSgmYW1wO25zaW1fYnVzX2Rldi0mZ3Q7aW5pdCwgZmFsc2UpOwogCiYjNDM7CXJlZmNvdW50X2luYygmYW1wO25zaW1fYnVzX2RldnMpOwogCWVyciA9IGRldmljZV9yZWdpc3RlcigmYW1wO25zaW1fYnVzX2Rldi0mZ3Q7ZGV2KTsKIAlpZiAoZXJyKQogCQlnb3RvIGVycl9uc2ltX2J1c19kZXZfaWRfZnJlZTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAzOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMDIKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIHdoYXQgSSYjMzk7bSB0aGlua2luZyBhcyBJIGFwcHJvYWNoIHRoaXMgcGF0Y2g6CgoqKkFuYWx5emluZyB0aGUgTmV0d29yayBEZXZpY2UgU2ltdWxhdG9yIFBhdGNoKioKCkFscmlnaHQsIHRoZSBmaXJzdCB0aGluZyBJIG5vdGljZSBpcyB0aGF0IHRoZSBwYXRjaCBpcyB0YXJnZXRpbmcgYGRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuY2AuIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCYjMzk7cyBjaGFuZ2luZyB3aXRoaW4gdGhhdCBmaWxlLiBCZWZvcmUgSSBldmVuIHN0YXJ0IGRpc3NlY3RpbmcgdGhlIGRpZmYsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSAqY29udGV4dCogb2YgdGhvc2UgY2hhbmdlcyB3aXRoaW4gYGRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuY2AuIEkmIzM5O20gZ29pbmcgdG8gcHVsbCB1cCB0aGF0IGZpbGUgYW5kIGdldCBhIGZlZWwgZm9yIHRoZSBzdXJyb3VuZGluZyBjb2RlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgdGhlIG92ZXJhbGwgZnVuY3Rpb24gb2YgdGhpcyAmIzM0O2J1cy5jJiMzNDsgZmlsZSBhbmQgc2VlIHdoZXJlIHRoZSBjaGFuZ2VzIGFyZSBiZWluZyBtYWRlIHdpdGhpbiBpdHMgZXhpc3RpbmcgaW1wbGVtZW50YXRpb24uIFVuZGVyc3RhbmRpbmcgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljIGlzIGdvaW5nIHRvIGJlIGtleSB0byBpbnRlcnByZXRpbmcgdGhlIGludGVudCBhbmQgaW1wYWN0IG9mIHRoaXMgcGF0Y2guIExldCYjMzk7cyBzZWUuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDM6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnNpbV9idXNfZGV2cyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM9MjE9c3RhdGljIGJvb2wgbnNpbV9idXNfZW5hYmxlO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjIyOnN0YXRpYyByZWZjb3VudF90IG5zaW1fYnVzX2RldnM7IC8qIEluY2x1ZGluZyB0aGUgYnVzIGl0c2VsZi4gKi9cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoyMzpzdGF0aWMgREVDTEFSRV9DT01QTEVUSU9OKG5zaW1fYnVzX2RldnNfcmVsZWFzZWQpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTI0LVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz0xNDA9c3RhdGljIHZvaWQgbnNpbV9idXNfZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xNDUtXHRrZnJlZShuc2ltX2J1c19kZXYpO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE0NjpcdGlmIChyZWZjb3VudF9kZWNfYW5kX3Rlc3QoXHUwMDI2bnNpbV9idXNfZGV2cykpXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTQ3Olx0XHRjb21wbGV0ZShcdTAwMjZuc2ltX2J1c19kZXZzX3JlbGVhc2VkKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xNDgtfVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz00NDY9bnNpbV9idXNfZGV2X25ldyh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBwb3J0X2NvdW50LCB1bnNpZ25lZCBpbnQgbnVtX3F1ZXVlcylcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDY2LVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ2NzpcdHJlZmNvdW50X2luYyhcdTAwMjZuc2ltX2J1c19kZXZzKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00NjgtXHRlcnIgPSBkZXZpY2VfcmVnaXN0ZXIoXHUwMDI2bnNpbV9idXNfZGV2LVx1MDAzZWRldik7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTQ5Nz1pbnQgbnNpbV9idXNfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy01MDYtXHRcdGdvdG8gZXJyX2J1c191bnJlZ2lzdGVyO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjUwNzpcdHJlZmNvdW50X3NldChcdTAwMjZuc2ltX2J1c19kZXZzLCAxKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy01MDgtXHQvKiBBbGxvdyB1c2luZyByZXNvdXJjZXMgKi9cbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM9NTE3PXZvaWQgbnNpbV9idXNfZXhpdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy01MjItXHRzbXBfc3RvcmVfcmVsZWFzZShcdTAwMjZuc2ltX2J1c19lbmFibGUsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo1MjM6XHRpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KFx1MDAyNm5zaW1fYnVzX2RldnMpKVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjUyNDpcdFx0Y29tcGxldGUoXHUwMDI2bnNpbV9idXNfZGV2c19yZWxlYXNlZCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTI1LVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy01MzItXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NTMzOlx0d2FpdF9mb3JfY29tcGxldGlvbihcdTAwMjZuc2ltX2J1c19kZXZzX3JlbGVhc2VkKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy01MzQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAzOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxOTkKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGNvbnNpZGVyaW5nIEkmIzM5O20gYW4gZXhwZXJ0OgoKKipEaXZpbmcgaW50byB0aGUgbmV0ZGV2c2ltIEJ1cyBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHdpdGhpbiBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jYC4gSSYjMzk7bSBnb2luZyB0byB6ZXJvIGluIG9uIGxpbmVzIDE4MCB0aHJvdWdoIDIyMCBhbmQgdGhlbiBqdW1wIGFoZWFkIHRvIDQ0MCB0aHJvdWdoIDQ5MC4gTm8gbmVlZCB0byByZWFkIHRoZSB3aG9sZSBmaWxlIOKAkyBJIGhhdmUgYSBnb29kIGVub3VnaCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzdXJyb3VuZGluZyBjb2RlIHRoYXQgdGhvc2Ugc3BlY2lmaWMgc2VjdGlvbnMgc2hvdWxkIHByb3ZpZGUgdGhlIGNvbnRleHQgSSBuZWVkLiBJJiMzOTttIGV4cGVjdGluZyB0aGF0IHRob3NlIHNlY3Rpb25zIHdpbGwgbGlrZWx5IGRlYWwgd2l0aCBlaXRoZXIgdGhlIGJ1cyBpbml0aWFsaXphdGlvbiBhbmQgZGV2aWNlIHJlZ2lzdHJhdGlvbiBvciBwZXJoYXBzIHRoZSBhY3R1YWwgZGF0YSB0cmFuc2ZlciBtZWNoYW5pc21zIG9uIHRoZSBzaW11bGF0ZWQgYnVzLiBUaW1lIHRvIGdldCB0aGUgZGV0YWlscyBJIG5lZWQgdG8gZmlsbCBpbiB0aGUgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDM6MTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE4MDpcdFx0XHRwcl9lcnIoXCYjMzQ7Rm9ybWF0IGZvciBhZGRpbmcgbmV3IGRldmljZSBpcyBcXFwmIzM0O2lkIHBvcnRfY291bnQgbnVtX3F1ZXVlc1xcXCYjMzQ7ICh1aW50IHVpbnQgdWludCkuXFxuXCYjMzQ7KTtcbiAxODE6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gMTgyOlx0XHR9XG4gMTgzOlx0XG4gMTg0Olx0XHRtdXRleF9sb2NrKFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0X2xvY2spO1xuIDE4NTpcdFx0LyogUHJldmVudCB0byB1c2UgcmVzb3VyY2UgYmVmb3JlIGluaXRpYWxpemF0aW9uLiAqL1xuIDE4NjpcdFx0aWYgKCFzbXBfbG9hZF9hY3F1aXJlKFx1MDAyNm5zaW1fYnVzX2VuYWJsZSkpIHtcbiAxODc6XHRcdFx0ZXJyID0gLUVCVVNZO1xuIDE4ODpcdFx0XHRnb3RvIGVycjtcbiAxODk6XHRcdH1cbiAxOTA6XHRcbiAxOTE6XHRcdG5zaW1fYnVzX2RldiA9IG5zaW1fYnVzX2Rldl9uZXcoaWQsIHBvcnRfY291bnQsIG51bV9xdWV1ZXMpO1xuIDE5MjpcdFx0aWYgKElTX0VSUihuc2ltX2J1c19kZXYpKSB7XG4gMTkzOlx0XHRcdGVyciA9IFBUUl9FUlIobnNpbV9idXNfZGV2KTtcbiAxOTQ6XHRcdFx0Z290byBlcnI7XG4gMTk1Olx0XHR9XG4gMTk2Olx0XG4gMTk3Olx0XHQvKiBBbGxvdyB1c2luZyBuc2ltX2J1c19kZXYgKi9cbiAxOTg6XHRcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2Vpbml0LCB0cnVlKTtcbiAxOTk6XHRcbiAyMDA6XHRcdGxpc3RfYWRkX3RhaWwoXHUwMDI2bnNpbV9idXNfZGV2LVx1MDAzZWxpc3QsIFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0KTtcbiAyMDE6XHRcdG11dGV4X3VubG9jayhcdTAwMjZuc2ltX2J1c19kZXZfbGlzdF9sb2NrKTtcbiAyMDI6XHRcbiAyMDM6XHRcdHJldHVybiBjb3VudDtcbiAyMDQ6XHRlcnI6XG4gMjA1Olx0XHRtdXRleF91bmxvY2soXHUwMDI2bnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XG4gMjA2Olx0XHRyZXR1cm4gZXJyO1xuIDIwNzpcdH1cbiAyMDg6XHRzdGF0aWMgQlVTX0FUVFJfV08obmV3X2RldmljZSk7XG4gMjA5Olx0XG4gMjEwOlx0c3RhdGljIHZvaWQgbnNpbV9idXNfZGV2X2RlbChzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYpO1xuIDIxMTpcdFxuIDIxMjpcdHN0YXRpYyBzc2l6ZV90XG4gMjEzOlx0ZGVsX2RldmljZV9zdG9yZShjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXG4gMjE0Olx0e1xuIDIxNTpcdFx0c3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2LCAqdG1wO1xuIDIxNjpcdFx0dW5zaWduZWQgaW50IGlkO1xuIDIxNzpcdFx0aW50IGVycjtcbiAyMTg6XHRcbiAyMTk6XHRcdGVyciA9IHNzY2FuZihidWYsIFwmIzM0OyV1XCYjMzQ7LCBcdTAwMjZpZCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAzOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwNzgKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB3aGF0IEkmIzM5O2QgYmUgdGhpbmtpbmcsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCBhbmQgYXNzdW1pbmcgYSBoaWdoIGxldmVsIG9mIGV4cGVydGlzZSBpbiBuZXR3b3JraW5nIGFuZCBrZXJuZWwgaW50ZXJuYWxzOgoKKipEaXZpbmcgaW50byB0aGUgTmV0ZGV2c2ltIEJ1cyoqCgpBbHJpZ2h0LCB0byB0cnVseSBncmFzcCB0aGUgaW1wbGljYXRpb25zIGhlcmUsIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIGhvdyB0aGlzIGBuZXRkZXZzaW1gIGJ1cyBvcGVyYXRlcy4gSSYjMzk7bSBnb2luZyB0byBqdW1wIGludG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIgYW5kIHNjcnV0aW5pemUgbGluZXMgNDQwIHRvIDQ5MCBvZiBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jYC4gSSBleHBlY3QgdGhvc2UgbGluZXMgdG8gZXhwb3NlIHRoZSBjb3JlIG1lY2hhbmljcywgdGhlIGNyaXRpY2FsIHBhdGgsIG9mIGRhdGEgZmxvdyBhbmQgZGV2aWNlIGludGVyYWN0aW9uIHdpdGhpbiB0aGlzIHNpbXVsYXRlZCBlbnZpcm9ubWVudC4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgc2VjdGlvbiBsaWtlbHkgZW5jb21wYXNzZXMgdGhlIG1vc3QgaW1wb3J0YW50IGxvZ2ljIGZvciByZXNvdXJjZSBhbGxvY2F0aW9uIGFuZCBpbml0aWFsaXphdGlvbiBvZiB0aGUgc2ltdWxhdGVkIGRldmljZXMsIG9yIHRoZSB2ZXJ5IGNvcmUgb2YgaG93IHRoZSBidXMgaGFuZGxlcyBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIHNpbXVsYXRlZCBuZXR3b3JrIGRldmljZXMuIEkgbmVlZCB0byBzZWUgaG93IHRoZSBzb2Z0d2FyZSBhYnN0cmFjdGlvbnMgbWFwIG9udG8gdGhlIHBoeXNpY2FsIHdvcmxkIHRoYXQgaXMgYmVpbmcgbW9kZWxsZWQgaGVyZS4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgZ2x1ZSB0aGF0IGhvbGRzIHRoZSB3aG9sZSBzaW11bGF0aW9uIHRvZ2V0aGVyLiBJIGFsc28gd2FudCB0byBvYnNlcnZlIHRoZSBkYXRhIHN0cnVjdHVyZXMgdGhhdCBtYW5hZ2UgdGhlIHNpbXVsYXRlZCBkZXZpY2VzOyBob3cgaXMgdGhlaXIgc3RhdHVzIHRyYWNrZWQ/IEhvdyBhcmUgdGhlIGludGVycnVwdHMgYW5kIGV2ZW50IHRyaWdnZXJzIGVtdWxhdGVkPyBBcmUgdGhlcmUgYW55IGNsZXZlciB0ZWNobmlxdWVzIGZvciBtaW5pbWl6aW5nIG92ZXJoZWFkIGluIHRoaXMgc2ltdWxhdGlvbj8gVWx0aW1hdGVseSwgSSB3YW50IHRvIHVuZGVyc3RhbmQgaG93IGl0IGNhbiBhY2hpZXZlIHRoZSBsZXZlbCBvZiByZWFsaXNtIHRoYXQgbGV0cyBpdCBiZSB1c2VkIGZvciBtZWFuaW5nZnVsIHRlc3RpbmcgYW5kIGRldmVsb3BtZW50IG9mIHRoZSByZWFsIG5ldHdvcmtpbmcgc3RhY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAzOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDU1Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0NDA6XHRcdC5wcm9iZVx0XHQ9IG5zaW1fYnVzX3Byb2JlLFxuIDQ0MTpcdFx0LnJlbW92ZVx0XHQ9IG5zaW1fYnVzX3JlbW92ZSxcbiA0NDI6XHRcdC5udW1fdmZcdFx0PSBuc2ltX251bV92ZixcbiA0NDM6XHR9O1xuIDQ0NDpcdFxuIDQ0NTpcdHN0YXRpYyBzdHJ1Y3QgbnNpbV9idXNfZGV2ICpcbiA0NDY6XHRuc2ltX2J1c19kZXZfbmV3KHVuc2lnbmVkIGludCBpZCwgdW5zaWduZWQgaW50IHBvcnRfY291bnQsIHVuc2lnbmVkIGludCBudW1fcXVldWVzKVxuIDQ0NzpcdHtcbiA0NDg6XHRcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldjtcbiA0NDk6XHRcdGludCBlcnI7XG4gNDUwOlx0XG4gNDUxOlx0XHRuc2ltX2J1c19kZXYgPSBremFsbG9jX29iaigqbnNpbV9idXNfZGV2KTtcbiA0NTI6XHRcdGlmICghbnNpbV9idXNfZGV2KVxuIDQ1MzpcdFx0XHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcbiA0NTQ6XHRcbiA0NTU6XHRcdGVyciA9IGlkYV9hbGxvY19yYW5nZShcdTAwMjZuc2ltX2J1c19kZXZfaWRzLCBpZCwgaWQsIEdGUF9LRVJORUwpO1xuIDQ1NjpcdFx0aWYgKGVyciBcdTAwM2MgMClcbiA0NTc6XHRcdFx0Z290byBlcnJfbnNpbV9idXNfZGV2X2ZyZWU7XG4gNDU4Olx0XHRuc2ltX2J1c19kZXYtXHUwMDNlZGV2LmlkID0gZXJyO1xuIDQ1OTpcdFx0bnNpbV9idXNfZGV2LVx1MDAzZWRldi5idXMgPSBcdTAwMjZuc2ltX2J1cztcbiA0NjA6XHRcdG5zaW1fYnVzX2Rldi1cdTAwM2VkZXYudHlwZSA9IFx1MDAyNm5zaW1fYnVzX2Rldl90eXBlO1xuIDQ2MTpcdFx0bnNpbV9idXNfZGV2LVx1MDAzZXBvcnRfY291bnQgPSBwb3J0X2NvdW50O1xuIDQ2MjpcdFx0bnNpbV9idXNfZGV2LVx1MDAzZW51bV9xdWV1ZXMgPSBudW1fcXVldWVzO1xuIDQ2MzpcdFx0bnNpbV9idXNfZGV2LVx1MDAzZWluaXRpYWxfbmV0ID0gY3VycmVudC1cdTAwM2Vuc3Byb3h5LVx1MDAzZW5ldF9ucztcbiA0NjQ6XHRcdC8qIERpc2FsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqL1xuIDQ2NTpcdFx0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2bnNpbV9idXNfZGV2LVx1MDAzZWluaXQsIGZhbHNlKTtcbiA0NjY6XHRcbiA0Njc6XHRcdHJlZmNvdW50X2luYyhcdTAwMjZuc2ltX2J1c19kZXZzKTtcbiA0Njg6XHRcdGVyciA9IGRldmljZV9yZWdpc3RlcihcdTAwMjZuc2ltX2J1c19kZXYtXHUwMDNlZGV2KTtcbiA0Njk6XHRcdGlmIChlcnIpXG4gNDcwOlx0XHRcdGdvdG8gZXJyX25zaW1fYnVzX2Rldl9pZF9mcmVlO1xuIDQ3MTpcdFxuIDQ3MjpcdFx0cmV0dXJuIG5zaW1fYnVzX2RldjtcbiA0NzM6XHRcbiA0NzQ6XHRlcnJfbnNpbV9idXNfZGV2X2lkX2ZyZWU6XG4gNDc1Olx0XHRpZGFfZnJlZShcdTAwMjZuc2ltX2J1c19kZXZfaWRzLCBuc2ltX2J1c19kZXYtXHUwMDNlZGV2LmlkKTtcbiA0NzY6XHRcdHB1dF9kZXZpY2UoXHUwMDI2bnNpbV9idXNfZGV2LVx1MDAzZWRldik7XG4gNDc3Olx0XHRuc2ltX2J1c19kZXYgPSBOVUxMO1xuIDQ3ODpcdGVycl9uc2ltX2J1c19kZXZfZnJlZTpcbiA0Nzk6XHRcdGtmcmVlKG5zaW1fYnVzX2Rldik7XG4gNDgwOlx0XHRyZXR1cm4gRVJSX1BUUihlcnIpO1xuIDQ4MTpcdH1cbiA0ODI6XHRcbiA0ODM6XHRzdGF0aWMgdm9pZCBuc2ltX2J1c19kZXZfZGVsKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldilcbiA0ODQ6XHR7XG4gNDg1Olx0XHQvKiBEaXNhbGxvdyB1c2luZyBuc2ltX2J1c19kZXYgKi9cbiA0ODY6XHRcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2Vpbml0LCBmYWxzZSk7XG4gNDg3Olx0XHRpZGFfZnJlZShcdTAwMjZuc2ltX2J1c19kZXZfaWRzLCBuc2ltX2J1c19kZXYtXHUwMDNlZGV2LmlkKTtcbiA0ODg6XHRcdGRldmljZV91bnJlZ2lzdGVyKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2VkZXYpO1xuIDQ4OTpcdH1cbiA0OTA6XHRcbiA0OTE6XHRzdGF0aWMgc3RydWN0IGRldmljZV9kcml2ZXIgbnNpbV9kcml2ZXIgPSB7XG4gNDkyOlx0XHQubmFtZVx0XHQ9IERSVl9OQU1FLFxuIDQ5MzpcdFx0LmJ1c1x0XHQ9IFx1MDAyNm5zaW1fYnVzLFxuIDQ5NDpcdFx0Lm93bmVyXHRcdD0gVEhJU19NT0RVTEUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAzOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU0MDUKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBQYXRjaCYjMzk7cyBJbXBhY3Qgb24gRGV2aWNlIFJlZ2lzdHJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gdW5kZXJzdGFuZCB0aGUgY29yZSBjaGFuZ2UgaW50cm9kdWNlZCBieSB0aGlzIHBhdGNoLiBJdCBzZWVtcyB0aGF0IHRoZSBgcmVmY291bnRfaW5jKCZhbXA7bnNpbV9idXNfZGV2cylgIGNhbGwgaGFzIGJlZW4gc2hpZnRlZC4gU3BlY2lmaWNhbGx5LCBpdCB3YXMgcHJldmlvdXNseSBsb2NhdGVkIGluIGBuZXdfZGV2aWNlX3N0b3JlYCwgKmFmdGVyKiB0aGUgY2FsbCB0byBgbnNpbV9idXNfZGV2X25ldygpYC4gTm93LCBpdCYjMzk7cyBiZWVuIG1vdmVkICppbnRvKiBgbnNpbV9idXNfZGV2X25ldygpYCwgaW1tZWRpYXRlbHkgKmJlZm9yZSogdGhlIGNhbGwgdG8gYGRldmljZV9yZWdpc3RlcigmYW1wO25zaW1fYnVzX2Rldi0mZ3Q7ZGV2KWAuCgpUaGUgbG9naWMgYmVoaW5kIHRoaXMgaXMgbGlrZWx5IGRyaXZlbiBieSBlcnJvciBoYW5kbGluZyBkdXJpbmcgZGV2aWNlIHJlZ2lzdHJhdGlvbi4gSWYgYGRldmljZV9yZWdpc3RlcmAgd2l0aGluIGBuc2ltX2J1c19kZXZfbmV3KClgIGZhaWxzLCBpdCBjYWxscyBgcHV0X2RldmljZWAsIHdoaWNoIHRyaWdnZXJzIHRoZSBkZXZpY2UgcmVsZWFzZSBjYWxsYmFjaywgYG5zaW1fYnVzX2Rldl9yZWxlYXNlKClgLiBUaGlzIHJlbGVhc2UgZnVuY3Rpb24gaXMgY3JpdGljYWw7IGl0IGRlY3JlbWVudHMgdGhlIGBuc2ltX2J1c19kZXZzYCByZWZjb3VudC4KClRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbiBjcmVhdGVkIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkuIElmIGBuc2ltX2J1c19kZXZfbmV3KClgIGZhaWxlZCBkdXJpbmcgdGhlIGBkZXZpY2VfcmVnaXN0ZXJgIGNhbGwsIGBuc2ltX2J1c19kZXZfcmVsZWFzZSgpYCB3b3VsZCBkZWNyZW1lbnQgdGhlIHJlZmNvdW50ICp3aXRob3V0KiBhIGNvcnJlc3BvbmRpbmcgaW5jcmVtZW50LiBUaGlzIGNvdWxkIGxlYWQgdG8gYSByZWZjb3VudCB1bmRlcmZsb3csIHBvdGVudGlhbGx5IGNhdXNpbmcgYWxsIHNvcnRzIG9mIGhlYWRhY2hlcyBsYXRlci4gVGhpcyBjb3VsZCBhbHNvIG9jY3VyIGlmIGFub3RoZXIgY2FsbGVyLCBpbiBwYXJhbGxlbCwgd2FzIGNhbGxpbmcgYG5zaW1fYnVzX2Rldl9uZXcoKWAuCgpUaGVyZWZvcmUsIG1vdmluZyB0aGUgaW5jcmVtZW50IGVuc3VyZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgb25seSBpbmNyZWFzZWQgd2hlbiB0aGUgZGV2aWNlIHJlZ2lzdHJhdGlvbiBpcyBhY3R1YWxseSBjb25zaWRlcmVkIHN1Y2Nlc3NmdWwsIGFzIGluLCB0aGUgZGV2aWNlIGlzIG5vdyByZWdpc3RlcmVkIGluIHRoZSBzeXN0ZW0uIFRoZSBuZXcgb3JkZXIgb2Ygb3BlcmF0aW9ucyBpcyBlc3NlbnRpYWwgZm9yIGNvcnJlY3RuZXNzLiBUaGUgZGVjcmVtZW50LCBpbiBjYXNlIG9mIGEgcmVnaXN0cmF0aW9uIGZhaWx1cmUsIHdpbGwgc3RpbGwgZmluZCBhIHBvc2l0aXZlIG51bWJlciB0byB3b3JrIHdpdGguCgpUbyBmdXJ0aGVyIGNvbmZpcm0gdGhpcywgbGV0JiMzOTtzIHF1aWNrbHkgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgZGlyZWN0IGNhbGxlcnMgdG8gYG5zaW1fYnVzX2Rldl9uZXcoKWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAzOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25zaW1fYnVzX2Rldl9uZXcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz02NT1uZXdfcG9ydF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xMDAtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTAxOnN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBuc2ltX2J1c19kZXZfbmV3X3BvcnRfYXR0ciA9IF9fQVRUUl9XTyhuZXdfcG9ydCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTAyLVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz0xMjQ9c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKm5zaW1fYnVzX2Rldl9hdHRyc1tdID0ge1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTEyNS1cdFx1MDAyNm5zaW1fYnVzX2Rldl9udW12ZnNfYXR0ci5hdHRyLFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjEyNjpcdFx1MDAyNm5zaW1fYnVzX2Rldl9uZXdfcG9ydF9hdHRyLmF0dHIsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTI3LVx0XHUwMDI2bnNpbV9idXNfZGV2X2RlbF9wb3J0X2F0dHIuYXR0cixcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM9MTU1PXN0YXRpYyBzdHJ1Y3QgbnNpbV9idXNfZGV2ICpcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxNTY6bnNpbV9idXNfZGV2X25ldyh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBwb3J0X2NvdW50LCB1bnNpZ25lZCBpbnQgbnVtX3F1ZXVlcyk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTU3LVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz0xNTk9bmV3X2RldmljZV9zdG9yZShjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTE5MC1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxOTE6XHRuc2ltX2J1c19kZXYgPSBuc2ltX2J1c19kZXZfbmV3KGlkLCBwb3J0X2NvdW50LCBudW1fcXVldWVzKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xOTItXHRpZiAoSVNfRVJSKG5zaW1fYnVzX2RldikpIHtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM9NDQ1PXN0YXRpYyBzdHJ1Y3QgbnNpbV9idXNfZGV2ICpcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NDY6bnNpbV9idXNfZGV2X25ldyh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBwb3J0X2NvdW50LCB1bnNpZ25lZCBpbnQgbnVtX3F1ZXVlcylcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00NDcte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwMzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzMwCgkJCQkJCQlvdXRwdXQ6IDE2NAoJCQkJCQkJdGhvdWdodHM6IDM4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgbnNpbV9idXNfZGV2cyBSZWZjb3VudGluZyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGEgc3RyYWlnaHRmb3J3YXJkIHJlZmNvdW50aW5nIGZpeCBmb3IgYG5zaW1fYnVzX2RldnNgIGluIHJlbGF0aW9uIHRvIGBkZXZpY2VfcmVnaXN0ZXJgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcmlnb3JvdXNseSBhc3Nlc3MgaWYgdGhpcyBjaGFuZ2UgY291bGQgaW50cm9kdWNlIG9yIGV4cG9zZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIExldCYjMzk7cyBicmVhayBpdCBkb3duOgoKRmlyc3QsIGlzIHRoZXJlIGFueSBwb3NzaWJpbGl0eSBvZiBrZXJuZWwgc3RydWN0dXJlcywgd2l0aCBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIGZpZWxkcyBvciBwYWRkaW5nLCBiZWluZyBzZW50IHRvIHVzZXIgc3BhY2U/IE5vLCBub3QgaGVyZS4gU2Vjb25kbHksIGFtIEkgc2VlaW5nIGFueSBjb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCByZWxpZXMgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXM/IE5vcGUuIE5leHQsIGFyZSB3ZSBhbGxvY2F0aW5nIG9yIGluaXRpYWxpemluZyBhbnkgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZD8gTm8sIHRoYXQmIzM5O3Mgbm90IHRoZSBjYXNlOyBgbnNpbV9idXNfZGV2YCBpcyBhbGxvY2F0ZWQgdXNpbmcgYGt6YWxsb2Nfb2JqYCwgd2hpY2ggaXMgc2FmZS4gQW5kIGZpbmFsbHksIHdoYXQgYWJvdXQgYm91bmRzIGNoZWNrcywgb3IgZGVhbGluZyB3aXRoIGxlbmd0aHMgaW4gYSB3YXkgdGhhdCBjb3VsZCBjYXVzZSBwcm9ibGVtcz8gTm8sIG5vdGhpbmcgb2YgY29uY2VybiB0aGVyZS4KClRoZSBwYXRjaCBzaW1wbHkgbW92ZXMgYSBgcmVmY291bnRfaW5jKCZhbXA7bnNpbV9idXNfZGV2cylgIGZyb20gYG5ld19kZXZpY2Vfc3RvcmVgIHRvIGBuc2ltX2J1c19kZXZfbmV3YC4gVGhpcyBpcyBzb2xlbHkgYWJvdXQgcmVmZXJlbmNlIGNvdW50aW5nIGxpZmVjeWNsZSwgc3luY2hyb25pemF0aW9uLCBhbmQgYXZvaWRpbmcgcG90ZW50aWFsIGlzc3VlcyBsaWtlIGxlYWtzLCB1c2UtYWZ0ZXItZnJlZSwgb3IgdW5kZXJmbG93LiBUaGVzZSBhcmVhcyBhcmUgYWxyZWFkeSB3ZWxsLWNvdmVyZWQgYnkgc3RhbmRhcmQgcmVmY291bnQgY2hlY2tzIGFuZCBLQVNBTi4gS01TQU4gaXNuJiMzOTt0IG5lZWRlZCBoZXJlLgoKTm93LCBsZXQgbWUgZG91YmxlLWNoZWNrIGFsbCB0aG9zZSBjcml0ZXJpYSB0byBmb3JtdWxhdGUgYSBzb2xpZCBLTVNBTlJlYXNvbmluZzoKCiogICAqKk5lZWRzS01TQU46KiogYGZhbHNlYAoqICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoIGlzIGp1c3QgbW92aW5nIGEgcmVmZXJlbmNlIGNvdW50IGluY3JlbWVudCAoYHJlZmNvdW50X2luYygmYW1wO25zaW1fYnVzX2RldnMpYCkgZnJvbSBgbmV3X2RldmljZV9zdG9yZWAgaW50byBgbnNpbV9idXNfZGV2X25ld2AgcmlnaHQgYmVmb3JlIHRoZSBgZGV2aWNlX3JlZ2lzdGVyYCBjYWxsLiBJdCYjMzk7cyBhbGwgYWJvdXQgcmVmZXJlbmNlIGNvdW50aW5nIHRvIGVuc3VyZSBjb3JyZWN0IHBhaXJpbmcgd2l0aCBkZXZpY2UgcmVsZWFzZSBhbmQgY2xlYW51cC4KICAgICogICBJdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMsIGJ1ZmZlcnMsIG9yIGFueSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyB0aGF0IGFyZSByZWFkLgogICAgKiAgIE5vIGRhdGEgaXMgYmVpbmcgbGVha2VkIHRvIHVzZXIgc3BhY2UgYmVjYXVzZSBpdCYjMzk7cyBwdXJlbHkgaW50ZXJuYWwuCiAgICAqICAgQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhlIHJlZmNvdW50aW5nIGxvZ2ljLCB0aGUgbGlmZWN5Y2xlLCBvciBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW9zIGFyZSBhbHJlYWR5IGNvdmVyZWQgYnkgdGhlIHN0YW5kYXJkIGtlcm5lbCByZWZjb3VudCBhc3NlcnRpb25zIGFuZCBieSBLQVNBTi4KCkFscmlnaHQsIEkmIzM5O20gY29uZmlkZW50IGluIHRoYXQgYW5hbHlzaXMuIExldCYjMzk7cyBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDAzOjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vdmVzIHRoZSByZWZlcmVuY2UgY291bnQgaW5jcmVtZW50IGByZWZjb3VudF9pbmMoXHUwMDI2bnNpbV9idXNfZGV2cylgIGZyb20gYG5ld19kZXZpY2Vfc3RvcmUoKWAgaW50byBgbnNpbV9idXNfZGV2X25ldygpYCBwcmlvciB0byBjYWxsaW5nIGBkZXZpY2VfcmVnaXN0ZXIoKWAuIFRoaXMgZml4ZXMgcmVmZXJlbmNlIGNvdW50aW5nIGJhbGFuY2UgaW4gZXJyb3IvcmVsZWFzZSBwYXRocy4gXG5cblRoZSBjaGFuZ2UgZG9lcyBub3QgaW50cm9kdWNlIG9yIGFsdGVyIGFueSBtZW1vcnkgYWxsb2NhdGlvbnMsIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgdXNhZ2UsIGJvdW5kcyBjaGVja3MsIG9yIGtlcm5lbC10by11c2VyIGluZm8gbGVha3MuIEFueSBsaWZlY3ljbGUgb3IgcmVmZXJlbmNlIGNvdW50aW5nIGVycm9ycyAoZS5nLiB1c2UtYWZ0ZXItZnJlZSwgcmVmY291bnQgdW5kZXJmbG93L292ZXJmbG93KSBhcmUgY292ZXJlZCBieSByZWZjb3VudF90IGNoZWNrcyBhbmQgc3RhbmRhcmQgS0FTQU4vTE9DS0RFUCBkZXRlY3RvcnMuIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW92ZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBpbmNyZW1lbnQgYHJlZmNvdW50X2luYyhcdTAwMjZuc2ltX2J1c19kZXZzKWAgZnJvbSBgbmV3X2RldmljZV9zdG9yZSgpYCBpbnRvIGBuc2ltX2J1c19kZXZfbmV3KClgIHByaW9yIHRvIGNhbGxpbmcgYGRldmljZV9yZWdpc3RlcigpYC4gVGhpcyBmaXhlcyByZWZlcmVuY2UgY291bnRpbmcgYmFsYW5jZSBpbiBlcnJvci9yZWxlYXNlIHBhdGhzLiBcblxuVGhlIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgYWx0ZXIgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZSB1c2FnZSwgYm91bmRzIGNoZWNrcywgb3Iga2VybmVsLXRvLXVzZXIgaW5mbyBsZWFrcy4gQW55IGxpZmVjeWNsZSBvciByZWZlcmVuY2UgY291bnRpbmcgZXJyb3JzIChlLmcuIHVzZS1hZnRlci1mcmVlLCByZWZjb3VudCB1bmRlcmZsb3cvb3ZlcmZsb3cpIGFyZSBjb3ZlcmVkIGJ5IHJlZmNvdW50X3QgY2hlY2tzIGFuZCBzdGFuZGFyZCBLQVNBTi9MT0NLREVQIGRldGVjdG9ycy4gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAzOjE0OjEwLjUyNzk3NDIwN1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5MjE1Nzc3NjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVERFVlNJTVwiLFxuICAgIFwiREVCVUdfRlNcIixcbiAgICBcIklORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuc2ltX2Rydl9wcm9iZVwiLFxuICAgIFwibnNpbV9kcnZfcmVtb3ZlXCIsXG4gICAgXCJuc2ltX2Rydl9jb25maWd1cmVfdmZzXCIsXG4gICAgXCJuc2ltX2J1c19pbml0XCIsXG4gICAgXCJuc2ltX2J1c19leGl0XCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb3ZlcyB0aGUgcmVmZXJlbmNlIGNvdW50IGluY3JlbWVudCBgcmVmY291bnRfaW5jKFxcdTAwMjZuc2ltX2J1c19kZXZzKWAgZnJvbSBgbmV3X2RldmljZV9zdG9yZSgpYCBpbnRvIGBuc2ltX2J1c19kZXZfbmV3KClgIHByaW9yIHRvIGNhbGxpbmcgYGRldmljZV9yZWdpc3RlcigpYC4gVGhpcyBmaXhlcyByZWZlcmVuY2UgY291bnRpbmcgYmFsYW5jZSBpbiBlcnJvci9yZWxlYXNlIHBhdGhzLiBcXG5cXG5UaGUgY2hhbmdlIGRvZXMgbm90IGludHJvZHVjZSBvciBhbHRlciBhbnkgbWVtb3J5IGFsbG9jYXRpb25zLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHVzYWdlLCBib3VuZHMgY2hlY2tzLCBvciBrZXJuZWwtdG8tdXNlciBpbmZvIGxlYWtzLiBBbnkgbGlmZWN5Y2xlIG9yIHJlZmVyZW5jZSBjb3VudGluZyBlcnJvcnMgKGUuZy4gdXNlLWFmdGVyLWZyZWUsIHJlZmNvdW50IHVuZGVyZmxvdy9vdmVyZmxvdykgYXJlIGNvdmVyZWQgYnkgcmVmY291bnRfdCBjaGVja3MgYW5kIHN0YW5kYXJkIEtBU0FOL0xPQ0tERVAgZGV0ZWN0b3JzLiBLTVNBTiBpcyBub3QgYXBwbGljYWJsZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGp1c3RzIHRoZSBkZXZpY2UgcmVmZXJlbmNlIGNvdW50aW5nIGZvciBuZXRkZXZzaW0gYnVzIGRldmljZXMgYnkgbW92aW5nIHJlZmNvdW50X2luYyhcXHUwMDI2bnNpbV9idXNfZGV2cykgaW50byBuc2ltX2J1c19kZXZfbmV3KCkgYmVmb3JlIGRldmljZV9yZWdpc3RlcigpLCBmaXhpbmcgYSByZWZjb3VudCB1bmRlcmZsb3cgb24gZGV2aWNlIHJlZ2lzdHJhdGlvbiBmYWlsdXJlLiBOZXRkZXZzaW0gaXMgYSBzb2Z0d2FyZS1zaW11bGF0ZWQgbmV0d29yayBkZXZpY2UgZHJpdmVyIGZ1bGx5IHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAzOjE0OjEwLjUyNzk3OTkyN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3NTQ1OTU1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDc1ZTIyYzljZjg2ZTliNWVhNTM3NmIzOWU3YjAxYTE2YzYyYTQ3OWNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgMSAwMzoxNDowOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmNcXG5pbmRleCA1YzU1YzMwODQ4N2I0Li40MjZmYjQzOGI5MjIxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuY1xcbisrKyBiL2RyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuY1xcbkBAIC0xOTQsNyArMTk0LDYgQEAgbmV3X2RldmljZV9zdG9yZShjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXFxuIFxcdFxcdGdvdG8gZXJyO1xcbiBcXHR9XFxuIFxcbi1cXHRyZWZjb3VudF9pbmMoXFx1MDAyNm5zaW1fYnVzX2RldnMpO1xcbiBcXHQvKiBBbGxvdyB1c2luZyBuc2ltX2J1c19kZXYgKi9cXG4gXFx0c21wX3N0b3JlX3JlbGVhc2UoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlaW5pdCwgdHJ1ZSk7XFxuIFxcbkBAIC00NjUsNiArNDY0LDcgQEAgbnNpbV9idXNfZGV2X25ldyh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBwb3J0X2NvdW50LCB1bnNpZ25lZCBpbnQgbnVtX3F1ZXVcXG4gXFx0LyogRGlzYWxsb3cgdXNpbmcgbnNpbV9idXNfZGV2ICovXFxuIFxcdHNtcF9zdG9yZV9yZWxlYXNlKFxcdTAwMjZuc2ltX2J1c19kZXYtXFx1MDAzZWluaXQsIGZhbHNlKTtcXG4gXFxuK1xcdHJlZmNvdW50X2luYyhcXHUwMDI2bnNpbV9idXNfZGV2cyk7XFxuIFxcdGVyciA9IGRldmljZV9yZWdpc3RlcihcXHUwMDI2bnNpbV9idXNfZGV2LVxcdTAwM2VkZXYpO1xcbiBcXHRpZiAoZXJyKVxcbiBcXHRcXHRnb3RvIGVycl9uc2ltX2J1c19kZXZfaWRfZnJlZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDM6MTQ6MTIuMDAzOTI0NjQzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo0MTgyODA4OTE2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRERVZTSU1cIixcbiAgICBcIkRFQlVHX0ZTXCIsXG4gICAgXCJJTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnNpbV9kcnZfcHJvYmVcIixcbiAgICBcIm5zaW1fZHJ2X3JlbW92ZVwiLFxuICAgIFwibnNpbV9kcnZfY29uZmlndXJlX3Zmc1wiLFxuICAgIFwibnNpbV9idXNfaW5pdFwiLFxuICAgIFwibnNpbV9idXNfZXhpdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkanVzdHMgdGhlIGRldmljZSByZWZlcmVuY2UgY291bnRpbmcgZm9yIG5ldGRldnNpbSBidXMgZGV2aWNlcyBieSBtb3ZpbmcgcmVmY291bnRfaW5jKFxcdTAwMjZuc2ltX2J1c19kZXZzKSBpbnRvIG5zaW1fYnVzX2Rldl9uZXcoKSBiZWZvcmUgZGV2aWNlX3JlZ2lzdGVyKCksIGZpeGluZyBhIHJlZmNvdW50IHVuZGVyZmxvdyBvbiBkZXZpY2UgcmVnaXN0cmF0aW9uIGZhaWx1cmUuIE5ldGRldnNpbSBpcyBhIHNvZnR3YXJlLXNpbXVsYXRlZCBuZXR3b3JrIGRldmljZSBkcml2ZXIgZnVsbHkgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzVlMjJjOWNmODZlOWI1ZWE1Mzc2YjM5ZTdiMDFhMTZjNjJhNDc5Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDEgMDM6MTQ6MDggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmNcbmluZGV4IDVjNTVjMzA4NDg3YjQuLjQyNmZiNDM4YjkyMjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmNcbisrKyBiL2RyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuY1xuQEAgLTE5NCw3ICsxOTQsNiBAQCBuZXdfZGV2aWNlX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcbiBcdFx0Z290byBlcnI7XG4gXHR9XG4gXG4tXHRyZWZjb3VudF9pbmMoXHUwMDI2bnNpbV9idXNfZGV2cyk7XG4gXHQvKiBBbGxvdyB1c2luZyBuc2ltX2J1c19kZXYgKi9cbiBcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2Vpbml0LCB0cnVlKTtcbiBcbkBAIC00NjUsNiArNDY0LDcgQEAgbnNpbV9idXNfZGV2X25ldyh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBwb3J0X2NvdW50LCB1bnNpZ25lZCBpbnQgbnVtX3F1ZXVcbiBcdC8qIERpc2FsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqL1xuIFx0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2bnNpbV9idXNfZGV2LVx1MDAzZWluaXQsIGZhbHNlKTtcbiBcbitcdHJlZmNvdW50X2luYyhcdTAwMjZuc2ltX2J1c19kZXZzKTtcbiBcdGVyciA9IGRldmljZV9yZWdpc3RlcihcdTAwMjZuc2ltX2J1c19kZXYtXHUwMDNlZGV2KTtcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZXJyX25zaW1fYnVzX2Rldl9pZF9mcmVlO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDM6MTQ6MTIuMDAzOTI2MDIzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Njg4MDU5NDQ2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbiwgcHJlc2VudGVkIGFzIG15IG93biBtZW50YWwgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byBUaGlzIE5ldHdvcmsgRGV2aWNlIFNpbXVsYXRpb24gUGF0Y2gqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBwYXRjaCBhbmQgdGhlIGFzc29jaWF0ZWQgaW5zdHJ1Y3Rpb25zLiBNeSBmaXJzdCBtb3ZlIGlzIGFsd2F5cyB0byBhbmFseXplIHRoZSBkaWZmIGRpcmVjdGx5LiBPa2F5LCBpdCdzIG1vZGlmeWluZyBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jYC4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTm93IEkgbmVlZCB0byBncmFzcCB0aGUgY29udGV4dCBvZiB0aGUgbW9kaWZpY2F0aW9uLCBzbyBJJ2xsIHplcm8gaW4gb24gdGhhdCBgYnVzLmNgIGZpbGUuIEknbSBnb2luZyB0byBmb2N1cyBvbiBsaW5lcyBhcm91bmQgMTkwLTIxMCBhbmQgNDYwLTQ4MCDigJMgdGhvc2UgYXJlIHVzdWFsbHkgdGhlIGtleSBzZWN0aW9ucyBhcm91bmQgdGhlIGNoYW5nZSwgYW5kIGxpa2VseSB3aGVyZSB0aGUgYmVoYXZpb3Igb2YgdGhlIHBhdGNoIHdpbGwgYmVjb21lIGNsZWFyLiBJJ2xsIGFsc28gZ2xhbmNlIGF0IHRoZSBLY29uZmlnIGZpbGUgaW4gYGRyaXZlcnMvbmV0L25ldGRldnNpbS9gLiBUaGF0IGdpdmVzIG1lIHRoZSBjb21waWxhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgZm9yIHRoYXQgbW9kdWxlLCBhbHdheXMgZ29vZCB0byBrbm93LiBGaW5hbGx5LCBiZWZvcmUgSSBkZWNpZGUgb24gbmV4dCBzdGVwcywgSSdtIHRoaW5raW5nIEknbGwgbmVlZCB0byBydW4gc29tZSBhbmFseXNpcyB0b29scyB0byBtYWtlIHN1cmUgSSBhbSBjb21wbGV0ZWx5IGNsZWFyIG9uIHRoZSBpbXBsaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyMDUsIk91dHB1dFRva2VucyI6MTE0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDM6MTQ6MTguODg0NTIzMTkzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzYxNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE4MDpcXHRcXHRcXHRwcl9lcnIoXFxcIkZvcm1hdCBmb3IgYWRkaW5nIG5ldyBkZXZpY2UgaXMgXFxcXFxcXCJpZCBwb3J0X2NvdW50IG51bV9xdWV1ZXNcXFxcXFxcIiAodWludCB1aW50IHVpbnQpLlxcXFxuXFxcIik7XFxuIDE4MTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMTgyOlxcdFxcdH1cXG4gMTgzOlxcdFxcbiAxODQ6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2bnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XFxuIDE4NTpcXHRcXHQvKiBQcmV2ZW50IHRvIHVzZSByZXNvdXJjZSBiZWZvcmUgaW5pdGlhbGl6YXRpb24uICovXFxuIDE4NjpcXHRcXHRpZiAoIXNtcF9sb2FkX2FjcXVpcmUoXFx1MDAyNm5zaW1fYnVzX2VuYWJsZSkpIHtcXG4gMTg3OlxcdFxcdFxcdGVyciA9IC1FQlVTWTtcXG4gMTg4OlxcdFxcdFxcdGdvdG8gZXJyO1xcbiAxODk6XFx0XFx0fVxcbiAxOTA6XFx0XFxuIDE5MTpcXHRcXHRuc2ltX2J1c19kZXYgPSBuc2ltX2J1c19kZXZfbmV3KGlkLCBwb3J0X2NvdW50LCBudW1fcXVldWVzKTtcXG4gMTkyOlxcdFxcdGlmIChJU19FUlIobnNpbV9idXNfZGV2KSkge1xcbiAxOTM6XFx0XFx0XFx0ZXJyID0gUFRSX0VSUihuc2ltX2J1c19kZXYpO1xcbiAxOTQ6XFx0XFx0XFx0Z290byBlcnI7XFxuIDE5NTpcXHRcXHR9XFxuIDE5NjpcXHRcXG4gMTk3OlxcdFxcdC8qIEFsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqL1xcbiAxOTg6XFx0XFx0c21wX3N0b3JlX3JlbGVhc2UoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlaW5pdCwgdHJ1ZSk7XFxuIDE5OTpcXHRcXG4gMjAwOlxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlbGlzdCwgXFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0KTtcXG4gMjAxOlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2bnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XFxuIDIwMjpcXHRcXG4gMjAzOlxcdFxcdHJldHVybiBjb3VudDtcXG4gMjA0OlxcdGVycjpcXG4gMjA1OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2bnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XFxuIDIwNjpcXHRcXHRyZXR1cm4gZXJyO1xcbiAyMDc6XFx0fVxcbiAyMDg6XFx0c3RhdGljIEJVU19BVFRSX1dPKG5ld19kZXZpY2UpO1xcbiAyMDk6XFx0XFxuIDIxMDpcXHRzdGF0aWMgdm9pZCBuc2ltX2J1c19kZXZfZGVsKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2Rldik7XFxuIDIxMTpcXHRcXG4gMjEyOlxcdHN0YXRpYyBzc2l6ZV90XFxuIDIxMzpcXHRkZWxfZGV2aWNlX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcXG4gMjE0OlxcdHtcXG4gMjE1OlxcdFxcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiwgKnRtcDtcXG4gMjE2OlxcdFxcdHVuc2lnbmVkIGludCBpZDtcXG4gMjE3OlxcdFxcdGludCBlcnI7XFxuIDIxODpcXHRcXG4gMjE5OlxcdFxcdGVyciA9IHNzY2FuZihidWYsIFxcXCIldVxcXCIsIFxcdTAwMjZpZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAzOjE0OjE4Ljg4NDYwMDM3M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0NTAsXG4gIFwiTGluZUNvdW50XCI6IDQwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0NTA6XFx0XFxuIDQ1MTpcXHRcXHRuc2ltX2J1c19kZXYgPSBremFsbG9jX29iaigqbnNpbV9idXNfZGV2KTtcXG4gNDUyOlxcdFxcdGlmICghbnNpbV9idXNfZGV2KVxcbiA0NTM6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XFxuIDQ1NDpcXHRcXG4gNDU1OlxcdFxcdGVyciA9IGlkYV9hbGxvY19yYW5nZShcXHUwMDI2bnNpbV9idXNfZGV2X2lkcywgaWQsIGlkLCBHRlBfS0VSTkVMKTtcXG4gNDU2OlxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbiA0NTc6XFx0XFx0XFx0Z290byBlcnJfbnNpbV9idXNfZGV2X2ZyZWU7XFxuIDQ1ODpcXHRcXHRuc2ltX2J1c19kZXYtXFx1MDAzZWRldi5pZCA9IGVycjtcXG4gNDU5OlxcdFxcdG5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2LmJ1cyA9IFxcdTAwMjZuc2ltX2J1cztcXG4gNDYwOlxcdFxcdG5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2LnR5cGUgPSBcXHUwMDI2bnNpbV9idXNfZGV2X3R5cGU7XFxuIDQ2MTpcXHRcXHRuc2ltX2J1c19kZXYtXFx1MDAzZXBvcnRfY291bnQgPSBwb3J0X2NvdW50O1xcbiA0NjI6XFx0XFx0bnNpbV9idXNfZGV2LVxcdTAwM2VudW1fcXVldWVzID0gbnVtX3F1ZXVlcztcXG4gNDYzOlxcdFxcdG5zaW1fYnVzX2Rldi1cXHUwMDNlaW5pdGlhbF9uZXQgPSBjdXJyZW50LVxcdTAwM2Vuc3Byb3h5LVxcdTAwM2VuZXRfbnM7XFxuIDQ2NDpcXHRcXHQvKiBEaXNhbGxvdyB1c2luZyBuc2ltX2J1c19kZXYgKi9cXG4gNDY1OlxcdFxcdHNtcF9zdG9yZV9yZWxlYXNlKFxcdTAwMjZuc2ltX2J1c19kZXYtXFx1MDAzZWluaXQsIGZhbHNlKTtcXG4gNDY2OlxcdFxcbiA0Njc6XFx0XFx0cmVmY291bnRfaW5jKFxcdTAwMjZuc2ltX2J1c19kZXZzKTtcXG4gNDY4OlxcdFxcdGVyciA9IGRldmljZV9yZWdpc3RlcihcXHUwMDI2bnNpbV9idXNfZGV2LVxcdTAwM2VkZXYpO1xcbiA0Njk6XFx0XFx0aWYgKGVycilcXG4gNDcwOlxcdFxcdFxcdGdvdG8gZXJyX25zaW1fYnVzX2Rldl9pZF9mcmVlO1xcbiA0NzE6XFx0XFxuIDQ3MjpcXHRcXHRyZXR1cm4gbnNpbV9idXNfZGV2O1xcbiA0NzM6XFx0XFxuIDQ3NDpcXHRlcnJfbnNpbV9idXNfZGV2X2lkX2ZyZWU6XFxuIDQ3NTpcXHRcXHRpZGFfZnJlZShcXHUwMDI2bnNpbV9idXNfZGV2X2lkcywgbnNpbV9idXNfZGV2LVxcdTAwM2VkZXYuaWQpO1xcbiA0NzY6XFx0XFx0cHV0X2RldmljZShcXHUwMDI2bnNpbV9idXNfZGV2LVxcdTAwM2VkZXYpO1xcbiA0Nzc6XFx0XFx0bnNpbV9idXNfZGV2ID0gTlVMTDtcXG4gNDc4OlxcdGVycl9uc2ltX2J1c19kZXZfZnJlZTpcXG4gNDc5OlxcdFxcdGtmcmVlKG5zaW1fYnVzX2Rldik7XFxuIDQ4MDpcXHRcXHRyZXR1cm4gRVJSX1BUUihlcnIpO1xcbiA0ODE6XFx0fVxcbiA0ODI6XFx0XFxuIDQ4MzpcXHRzdGF0aWMgdm9pZCBuc2ltX2J1c19kZXZfZGVsKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldilcXG4gNDg0OlxcdHtcXG4gNDg1OlxcdFxcdC8qIERpc2FsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqL1xcbiA0ODY6XFx0XFx0c21wX3N0b3JlX3JlbGVhc2UoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlaW5pdCwgZmFsc2UpO1xcbiA0ODc6XFx0XFx0aWRhX2ZyZWUoXFx1MDAyNm5zaW1fYnVzX2Rldl9pZHMsIG5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2LmlkKTtcXG4gNDg4OlxcdFxcdGRldmljZV91bnJlZ2lzdGVyKFxcdTAwMjZuc2ltX2J1c19kZXYtXFx1MDAzZWRldik7XFxuIDQ4OTpcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAzOjE0OjE4Ljg4NDY0NjEzM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MTExLCJFcnJvciI6InRoZSBmaWxlIGRvZXMgbm90IGV4aXN0IiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwidGhlIGZpbGUgZG9lcyBub3QgZXhpc3RcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDM6MTQ6MTguODg0Njc1NDAyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTE5MjM5MjIwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgaW5zdHJ1Y3Rpb25zLCBwcmVzZW50ZWQgYXMgYSBwZXJzb25hbCB0aG91Z2h0IHByb2Nlc3MgdGFpbG9yZWQgZm9yIGEgZmVsbG93IGV4cGVydDpcblxuKipGaW5kaW5nIHRoZSBORVRERVZTSU0gQ29uZmlndXJhdGlvbiBPcHRpb24qKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB3b3JrLiBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIE5FVERFVlNJTS4gTXkgZmlyc3QgdGhvdWdodCBpcyBhbHdheXMgdG8gc3RhcnQgaW4gYGRyaXZlcnMvbmV0L2AuIFRoYXQncyB0aGUgb2J2aW91cyBwbGFjZSB0byBmaW5kIG5ldHdvcmtpbmcgZHJpdmVycyBhbmQgYXNzb2NpYXRlZCBjb25maWd1cmF0aW9uLiBOb3csIHRoZSBuZXh0IHN0ZXAgaXMgdG8gbG9jYXRlIHRoZSBLY29uZmlnIGZpbGUgd2l0aGluIHRoYXQgZGlyZWN0b3J5LiBJJ20gYXNzdW1pbmcgdGhlcmUncyBvbmUg4oCTIGl0J3Mgc3RhbmRhcmQgcHJhY3RpY2UsIGFmdGVyIGFsbC5cblxuT25jZSBJIGhhdmUgdGhhdCBLY29uZmlnIGZpbGUsIEknbGwgdXNlIGBncmVwYCAob3IgbXkgcHJlZmVycmVkIHNlYXJjaCB0b29sKSB0byBsb29rIGRpcmVjdGx5IGZvciBcIk5FVERFVlNJTVwiIHdpdGhpbiB0aGUgZmlsZS4gVGhhdCBzaG91bGQgcGlucG9pbnQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gc3ltYm9sIGFuZCBob3BlZnVsbHkgZ2l2ZSBtZSB0aGUgY29udGV4dCBJIG5lZWQuIFRoaXMgaXMgYSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIHByb2Nlc3MsIGFzc3VtaW5nIHRoZXJlJ3MgYSB1bmlxdWUgYW5kIHVuYW1iaWd1b3VzIHJlZmVyZW5jZSB0byBgTkVUREVWU0lNYC4gTGV0J3Mgc2VlIHdoYXQgd2UgZmluZCFcblxuXG4iLCJJbnB1dFRva2VucyI6NDA0NiwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIiwicmVhZC1maWxlIiwicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDM6MTQ6MjQuMDc3MDY5MTg5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNTY0ODk0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkVUREVWU0lNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9NjAyPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvaHlwZXJ2L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MDMtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDQ6Y29uZmlnIE5FVERFVlNJTVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAzOjE0OjI0LjIwMjcyMTg3N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE2NTUzNzkzOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyBpZiBJIHdlcmUgdGhpbmtpbmcgdGhlc2UgdGhvdWdodHM6XG5cbioqRXhhbWluaW5nIE5ldHdvcmsgRHJpdmVyIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqXG5cbk9rYXksIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBuaXR0eS1ncml0dHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbmV0d29yayBkcml2ZXJzIGFyZSBjb25maWd1cmVkLCBzbyBsZXQncyBqdW1wIHJpZ2h0IGludG8gYGRyaXZlcnMvbmV0L0tjb25maWdgLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGxpbmUgNjA0LiBJJ20gZ3Vlc3NpbmcgdGhhdCdzIHdoZXJlIGEgY3J1Y2lhbCBzZWN0aW9uIHJlbGF0ZWQgdG8gdGhlIGN1cnJlbnQgcHJvYmxlbSByZXNpZGVzLiBMZXQncyBzZWUgd2hhdCdzIGJlaW5nIGRlZmluZWQgdGhlcmUgYW5kIGhvdyBpdCBtaWdodCBpbmZsdWVuY2UgdGhlIG92ZXJhbGwgc3lzdGVtIHNldHVwLiBUaGlzIHNob3VsZCBnaXZlIG1lIHNvbWUgaW5zaWdodHMgaW50byB0aGUgYXZhaWxhYmxlIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcy4gSSBleHBlY3QgdG8gYmUgbG9va2luZyBmb3IgYSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHN5bWJvbCBvciBibG9jayB0aGF0IGFmZmVjdHMgdGhlIGJlaGF2aW9yIEkgYW0gZGVidWdnaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzkwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDM6MTQ6MjUuODU4MTAzMzQxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc1NTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNjAwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNjAwOlxcdFxcbiA2MDE6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC90aHVuZGVyYm9sdC9LY29uZmlnXFxcIlxcbiA2MDI6XFx0c291cmNlIFxcXCJkcml2ZXJzL25ldC9oeXBlcnYvS2NvbmZpZ1xcXCJcXG4gNjAzOlxcdFxcbiA2MDQ6XFx0Y29uZmlnIE5FVERFVlNJTVxcbiA2MDU6XFx0XFx0dHJpc3RhdGUgXFxcIlNpbXVsYXRlZCBuZXR3b3JraW5nIGRldmljZVxcXCJcXG4gNjA2OlxcdFxcdGRlcGVuZHMgb24gREVCVUdfRlNcXG4gNjA3OlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiA2MDg6XFx0XFx0ZGVwZW5kcyBvbiBQU0FNUExFIHx8IFBTQU1QTEU9blxcbiA2MDk6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19NT0NLIHx8IFBUUF8xNTg4X0NMT0NLX01PQ0s9blxcbiA2MTA6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuIDYxMTpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuIDYxMjpcXHRcXHRzZWxlY3QgTkVUX1NIQVBFUlxcbiA2MTM6XFx0XFx0aGVscFxcbiA2MTQ6XFx0XFx0ICBUaGlzIGRyaXZlciBpcyBhIGRldmVsb3BlciB0ZXN0aW5nIHRvb2wgYW5kIHNvZnR3YXJlIG1vZGVsIHRoYXQgY2FuXFxuIDYxNTpcXHRcXHQgIGJlIHVzZWQgdG8gdGVzdCB2YXJpb3VzIGNvbnRyb2wgcGF0aCBuZXR3b3JraW5nIEFQSXMsIGVzcGVjaWFsbHlcXG4gNjE2OlxcdFxcdCAgSFctb2ZmbG9hZCByZWxhdGVkLlxcbiA2MTc6XFx0XFxuIDYxODpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gNjE5OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgbmV0ZGV2c2ltLlxcbiA2MjA6XFx0XFxuIDYyMTpcXHRjb25maWcgTkVUX0ZBSUxPVkVSXFxuIDYyMjpcXHRcXHR0cmlzdGF0ZSBcXFwiRmFpbG92ZXIgZHJpdmVyXFxcIlxcbiA2MjM6XFx0XFx0c2VsZWN0IEZBSUxPVkVSXFxuIDYyNDpcXHRcXHRoZWxwXFxuIDYyNTpcXHRcXHQgIFRoaXMgcHJvdmlkZXMgYW4gYXV0b21hdGVkIGZhaWxvdmVyIG1lY2hhbmlzbSB2aWEgQVBJcyB0byBjcmVhdGVcXG4gNjI2OlxcdFxcdCAgYW5kIGRlc3Ryb3kgYSBmYWlsb3ZlciBtYXN0ZXIgbmV0ZGV2IGFuZCBtYW5hZ2VzIGEgcHJpbWFyeSBhbmRcXG4gNjI3OlxcdFxcdCAgc3RhbmRieSBzbGF2ZSBuZXRkZXZzIHRoYXQgZ2V0IHJlZ2lzdGVyZWQgdmlhIHRoZSBnZW5lcmljIGZhaWxvdmVyXFxuIDYyODpcXHRcXHQgIGluZnJhc3RydWN0dXJlLiBUaGlzIGNhbiBiZSB1c2VkIGJ5IHBhcmF2aXJ0dWFsIGRyaXZlcnMgdG8gZW5hYmxlXFxuIDYyOTpcXHRcXHQgIGFuIGFsdGVybmF0ZSBsb3cgbGF0ZW5jeSBkYXRhcGF0aC4gSXQgYWxzbyBlbmFibGVzIGxpdmUgbWlncmF0aW9uIG9mXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAzOjE0OjI1Ljg1ODE4MDExMVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNjg2Nzg5NDg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgbmV0ZGV2c2ltYCBjb2RlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZnVuZGFtZW50YWwgbWVjaGFuaWNzLCBzcGVjaWZpY2FsbHkgaG93IHRoaXMgc2ltdWxhdGlvbiBlbnZpcm9ubWVudCBtb2RlbHMgbmV0d29yayBkZXZpY2VzLiBNeSBmb2N1cyBpcyBvbiBkZXZpY2UgY3JlYXRpb24gYW5kIHRoZSByb2xlIG9mIGBuc2ltX2J1c19kZXZzYC4gSSdsbCBzdGFydCBieSBkaWdnaW5nIGludG8gdGhlIHNvdXJjZSBjb2RlLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2AgZGlyZWN0b3J5LlxuXG4qKkRpc3NlY3RpbmcgbmV0ZGV2c2ltOiBUaGUgQ29yZSBvZiBEZXZpY2UgQ3JlYXRpb24qKlxuXG5NeSBpbW1lZGlhdGUgcGxhbiBpcyB0byB1c2UgYGdyZXBgIHRvIHF1aWNrbHkgaWRlbnRpZnkga2V5IGZ1bmN0aW9ucyBhbmQgZGF0YSBzdHJ1Y3R1cmVzLiBJJ20gZ29pbmcgdG8gc2VhcmNoIGZvciBgbnNpbV9idXNfZGV2X25ld2AgYW5kIGBuc2ltX2J1c19kZXZzYC4gRmluZGluZyBgbnNpbV9idXNfZGV2X25ld2Agd2lsbCBwcm9iYWJseSBsZWFkIG1lIHN0cmFpZ2h0IHRvIHRoZSBkZXZpY2UgaW5zdGFudGlhdGlvbiBwcm9jZXNzOyB0aGF0J3Mgd2hlcmUgdGhlIG5ldyBkZXZpY2VzIGFyZSBjcmVhdGVkLiBUaGVuLCBleGFtaW5pbmcgYG5zaW1fYnVzX2RldnNgIHdpbGwgcmV2ZWFsIGhvdyB0aGVzZSBkZXZpY2VzIGFyZSBtYW5hZ2VkLCB3aGF0IGRhdGEgc3RydWN0dXJlcyBhcmUgdXNlZCwgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgYnJvYWRlciBzaW11bGF0ZWQgYnVzIGFyY2hpdGVjdHVyZSB3aXRoaW4gbmV0ZGV2c2ltLiBUaGlzIHNob3VsZCBnaXZlIG1lIHRoZSBlbnRyeSBwb2ludCBpbnRvIHRoaXMgc3Vic3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MDUwLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwMzoxNDoyOC41NDQ5NzE2ODhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MzI3Mzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5zaW1fYnVzX2RldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTE3LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxODpzdGF0aWMgREVGSU5FX0lEQShuc2ltX2J1c19kZXZfaWRzKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTk6c3RhdGljIExJU1RfSEVBRChuc2ltX2J1c19kZXZfbGlzdCk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjIwOnN0YXRpYyBERUZJTkVfTVVURVgobnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTIxLXN0YXRpYyBib29sIG5zaW1fYnVzX2VuYWJsZTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MjI6c3RhdGljIHJlZmNvdW50X3QgbnNpbV9idXNfZGV2czsgLyogSW5jbHVkaW5nIHRoZSBidXMgaXRzZWxmLiAqL1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoyMzpzdGF0aWMgREVDTEFSRV9DT01QTEVUSU9OKG5zaW1fYnVzX2RldnNfcmVsZWFzZWQpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0yNC1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MjU6c3RhdGljIHN0cnVjdCBuc2ltX2J1c19kZXYgKnRvX25zaW1fYnVzX2RldihzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTI2LXtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6Mjc6XFx0cmV0dXJuIGNvbnRhaW5lcl9vZihkZXYsIHN0cnVjdCBuc2ltX2J1c19kZXYsIGRldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTI4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz0zMD1zdGF0aWMgc3NpemVfdFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzozMTpuc2ltX2J1c19kZXZfbnVtdmZzX3N0b3JlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTMyLVxcdFxcdFxcdCAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTMzLXtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MzQ6XFx0c3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2ID0gdG9fbnNpbV9idXNfZGV2KGRldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTM1LVxcdHVuc2lnbmVkIGludCBudW1fdmZzO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQ0LVxcdGlmIChkZXZfZ2V0X2RydmRhdGEoZGV2KSlcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDU6XFx0XFx0cmV0ID0gbnNpbV9kcnZfY29uZmlndXJlX3Zmcyhuc2ltX2J1c19kZXYsIG51bV92ZnMpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00Ni1cXHRkZXZpY2VfdW5sb2NrKGRldik7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM9NTE9c3RhdGljIHNzaXplX3RcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NTI6bnNpbV9idXNfZGV2X251bXZmc19zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTMtXFx0XFx0XFx0IHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTU0LXtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NTU6XFx0c3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2ID0gdG9fbnNpbV9idXNfZGV2KGRldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTU2LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo1NzpcXHRyZXR1cm4gc3ByaW50ZihidWYsIFxcXCIldVxcXFxuXFxcIiwgbnNpbV9idXNfZGV2LVxcdTAwM2VudW1fdmZzKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTgtfVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy01OS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NjA6c3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIG5zaW1fYnVzX2Rldl9udW12ZnNfYXR0ciA9XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjYxOlxcdF9fQVRUUihzcmlvdl9udW12ZnMsIDA2NjQsIG5zaW1fYnVzX2Rldl9udW12ZnNfc2hvdyxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NjI6XFx0ICAgICAgIG5zaW1fYnVzX2Rldl9udW12ZnNfc3RvcmUpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy02My1cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz02NT1uZXdfcG9ydF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTY3LXtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6Njg6XFx0c3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2ID0gdG9fbnNpbV9idXNfZGV2KGRldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTY5LVxcdHU4IGV0aF9hZGRyW0VUSF9BTEVOXSA9IHt9O1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTczLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo3NDpcXHQvKiBQcmV2ZW50IHRvIHVzZSBuc2ltX2J1c19kZXYgYmVmb3JlIGluaXRpYWxpemF0aW9uLiAqL1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo3NTpcXHRpZiAoIXNtcF9sb2FkX2FjcXVpcmUoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlaW5pdCkpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTc2LVxcdFxcdHJldHVybiAtRUJVU1k7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtOTUtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjk2OlxcdHJldCA9IG5zaW1fZHJ2X3BvcnRfYWRkKG5zaW1fYnVzX2RldiwgTlNJTV9ERVZfUE9SVF9UWVBFX1BGLCBwb3J0X2luZGV4LFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy05Ny1cXHRcXHRcXHRcXHRhZGRyX3NldCA/IGV0aF9hZGRyIDogTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTAwLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxMDE6c3RhdGljIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlIG5zaW1fYnVzX2Rldl9uZXdfcG9ydF9hdHRyID0gX19BVFRSX1dPKG5ld19wb3J0KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTAyLVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTEwND1kZWxfcG9ydF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTEwNi17XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjEwNzpcXHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYgPSB0b19uc2ltX2J1c19kZXYoZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTA4LVxcdHVuc2lnbmVkIGludCBwb3J0X2luZGV4O1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTExMC1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTExOlxcdC8qIFByZXZlbnQgdG8gdXNlIG5zaW1fYnVzX2RldiBiZWZvcmUgaW5pdGlhbGl6YXRpb24uICovXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjExMjpcXHRpZiAoIXNtcF9sb2FkX2FjcXVpcmUoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlaW5pdCkpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTExMy1cXHRcXHRyZXR1cm4gLUVCVVNZO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTExNy1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTE4OlxcdHJldCA9IG5zaW1fZHJ2X3BvcnRfZGVsKG5zaW1fYnVzX2RldiwgTlNJTV9ERVZfUE9SVF9UWVBFX1BGLCBwb3J0X2luZGV4KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTE5LVxcdHJldHVybiByZXQgPyByZXQgOiBjb3VudDtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xMjEtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjEyMjpzdGF0aWMgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgbnNpbV9idXNfZGV2X2RlbF9wb3J0X2F0dHIgPSBfX0FUVFJfV08oZGVsX3BvcnQpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xMjMtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjEyNDpzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqbnNpbV9idXNfZGV2X2F0dHJzW10gPSB7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjEyNTpcXHRcXHUwMDI2bnNpbV9idXNfZGV2X251bXZmc19hdHRyLmF0dHIsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjEyNjpcXHRcXHUwMDI2bnNpbV9idXNfZGV2X25ld19wb3J0X2F0dHIuYXR0cixcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTI3OlxcdFxcdTAwMjZuc2ltX2J1c19kZXZfZGVsX3BvcnRfYXR0ci5hdHRyLFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xMjgtXFx0TlVMTCxcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xMzAtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjEzMTpzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCBuc2ltX2J1c19kZXZfYXR0cl9ncm91cCA9IHtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTMyOlxcdC5hdHRycyA9IG5zaW1fYnVzX2Rldl9hdHRycyxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTMzLX07XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTEzNC1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTM1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICpuc2ltX2J1c19kZXZfYXR0cl9ncm91cHNbXSA9IHtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTM2OlxcdFxcdTAwMjZuc2ltX2J1c19kZXZfYXR0cl9ncm91cCxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTM3LVxcdE5VTEwsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTM5LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxNDA6c3RhdGljIHZvaWQgbnNpbV9idXNfZGV2X3JlbGVhc2Uoc3RydWN0IGRldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xNDEte1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxNDI6XFx0c3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2O1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xNDMtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE0NDpcXHRuc2ltX2J1c19kZXYgPSBjb250YWluZXJfb2YoZGV2LCBzdHJ1Y3QgbnNpbV9idXNfZGV2LCBkZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxNDU6XFx0a2ZyZWUobnNpbV9idXNfZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTQ2OlxcdGlmIChyZWZjb3VudF9kZWNfYW5kX3Rlc3QoXFx1MDAyNm5zaW1fYnVzX2RldnMpKVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxNDc6XFx0XFx0Y29tcGxldGUoXFx1MDAyNm5zaW1fYnVzX2RldnNfcmVsZWFzZWQpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xNDgtfVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xNDktXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE1MDpzdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV90eXBlIG5zaW1fYnVzX2Rldl90eXBlID0ge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxNTE6XFx0Lmdyb3VwcyA9IG5zaW1fYnVzX2Rldl9hdHRyX2dyb3VwcyxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTUyOlxcdC5yZWxlYXNlID0gbnNpbV9idXNfZGV2X3JlbGVhc2UsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTE1My19O1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xNTQtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE1NTpzdGF0aWMgc3RydWN0IG5zaW1fYnVzX2RldiAqXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE1Njpuc2ltX2J1c19kZXZfbmV3KHVuc2lnbmVkIGludCBpZCwgdW5zaWduZWQgaW50IHBvcnRfY291bnQsIHVuc2lnbmVkIGludCBudW1fcXVldWVzKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTU3LVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTE1OT1uZXdfZGV2aWNlX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xNjEtXFx0dW5zaWduZWQgaW50IGlkLCBwb3J0X2NvdW50LCBudW1fcXVldWVzO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxNjI6XFx0c3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2O1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xNjMtXFx0aW50IGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xODMtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE4NDpcXHRtdXRleF9sb2NrKFxcdTAwMjZuc2ltX2J1c19kZXZfbGlzdF9sb2NrKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTg1LVxcdC8qIFByZXZlbnQgdG8gdXNlIHJlc291cmNlIGJlZm9yZSBpbml0aWFsaXphdGlvbi4gKi9cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xOTAtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE5MTpcXHRuc2ltX2J1c19kZXYgPSBuc2ltX2J1c19kZXZfbmV3KGlkLCBwb3J0X2NvdW50LCBudW1fcXVldWVzKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTkyOlxcdGlmIChJU19FUlIobnNpbV9idXNfZGV2KSkge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxOTM6XFx0XFx0ZXJyID0gUFRSX0VSUihuc2ltX2J1c19kZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xOTQtXFx0XFx0Z290byBlcnI7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTk2LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxOTc6XFx0LyogQWxsb3cgdXNpbmcgbnNpbV9idXNfZGV2ICovXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjE5ODpcXHRzbXBfc3RvcmVfcmVsZWFzZShcXHUwMDI2bnNpbV9idXNfZGV2LVxcdTAwM2Vpbml0LCB0cnVlKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTk5LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoyMDA6XFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2bnNpbV9idXNfZGV2LVxcdTAwM2VsaXN0LCBcXHUwMDI2bnNpbV9idXNfZGV2X2xpc3QpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoyMDE6XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZuc2ltX2J1c19kZXZfbGlzdF9sb2NrKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjAyLVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTIwNC1lcnI6XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjIwNTpcXHRtdXRleF91bmxvY2soXFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0X2xvY2spO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0yMDYtXFx0cmV0dXJuIGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz0yMDg9c3RhdGljIEJVU19BVFRSX1dPKG5ld19kZXZpY2UpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0yMDktXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjIxMDpzdGF0aWMgdm9pZCBuc2ltX2J1c19kZXZfZGVsKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2Rldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTIxMS1cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz0yMTM9ZGVsX2RldmljZV9zdG9yZShjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTIxNC17XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjIxNTpcXHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsICp0bXA7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTIxNi1cXHR1bnNpZ25lZCBpbnQgaWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjMyLVxcdGVyciA9IC1FTk9FTlQ7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjIzMzpcXHRtdXRleF9sb2NrKFxcdTAwMjZuc2ltX2J1c19kZXZfbGlzdF9sb2NrKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjM0LVxcdC8qIFByZXZlbnQgdG8gdXNlIHJlc291cmNlIGJlZm9yZSBpbml0aWFsaXphdGlvbi4gKi9cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjM1LVxcdGlmICghc21wX2xvYWRfYWNxdWlyZShcXHUwMDI2bnNpbV9idXNfZW5hYmxlKSkge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoyMzY6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZuc2ltX2J1c19kZXZfbGlzdF9sb2NrKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjM3LVxcdFxcdHJldHVybiAtRUJVU1k7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTIzOC1cXHR9XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjIzOTpcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobnNpbV9idXNfZGV2LCB0bXAsIFxcdTAwMjZuc2ltX2J1c19kZXZfbGlzdCwgbGlzdCkge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoyNDA6XFx0XFx0aWYgKG5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2LmlkICE9IGlkKVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0yNDEtXFx0XFx0XFx0Y29udGludWU7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjI0MjpcXHRcXHRsaXN0X2RlbChcXHUwMDI2bnNpbV9idXNfZGV2LVxcdTAwM2VsaXN0KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MjQzOlxcdFxcdG5zaW1fYnVzX2Rldl9kZWwobnNpbV9idXNfZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjQ0LVxcdFxcdGVyciA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjQ2LVxcdH1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MjQ3OlxcdG11dGV4X3VubG9jayhcXHUwMDI2bnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTI0OC1cXHRyZXR1cm4gIWVyciA/IGNvdW50IDogZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTQxNT1zdGF0aWMgaW50IG5zaW1fYnVzX3Byb2JlKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDE2LXtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDE3OlxcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiA9IHRvX25zaW1fYnVzX2RldihkZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00MTgtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQxOTpcXHRyZXR1cm4gbnNpbV9kcnZfcHJvYmUobnNpbV9idXNfZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDIwLX1cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz00MjI9c3RhdGljIHZvaWQgbnNpbV9idXNfcmVtb3ZlKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDIzLXtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDI0OlxcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiA9IHRvX25zaW1fYnVzX2RldihkZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00MjUtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQyNjpcXHRuc2ltX2Rydl9yZW1vdmUobnNpbV9idXNfZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDI3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz00Mjk9c3RhdGljIGludCBuc2ltX251bV92ZihzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQzMC17XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQzMTpcXHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYgPSB0b19uc2ltX2J1c19kZXYoZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDMyLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0MzM6XFx0cmV0dXJuIG5zaW1fYnVzX2Rldi1cXHUwMDNlbnVtX3ZmcztcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDM0LX1cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz00MzY9c3RhdGljIGNvbnN0IHN0cnVjdCBidXNfdHlwZSBuc2ltX2J1cyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00NDQtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ0NTpzdGF0aWMgc3RydWN0IG5zaW1fYnVzX2RldiAqXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ0Njpuc2ltX2J1c19kZXZfbmV3KHVuc2lnbmVkIGludCBpZCwgdW5zaWduZWQgaW50IHBvcnRfY291bnQsIHVuc2lnbmVkIGludCBudW1fcXVldWVzKVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00NDcte1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NDg6XFx0c3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2O1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00NDktXFx0aW50IGVycjtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDUwLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NTE6XFx0bnNpbV9idXNfZGV2ID0ga3phbGxvY19vYmooKm5zaW1fYnVzX2Rldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ1MjpcXHRpZiAoIW5zaW1fYnVzX2RldilcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDUzLVxcdFxcdHJldHVybiBFUlJfUFRSKC1FTk9NRU0pO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00NTQtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ1NTpcXHRlcnIgPSBpZGFfYWxsb2NfcmFuZ2UoXFx1MDAyNm5zaW1fYnVzX2Rldl9pZHMsIGlkLCBpZCwgR0ZQX0tFUk5FTCk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQ1Ni1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDU3OlxcdFxcdGdvdG8gZXJyX25zaW1fYnVzX2Rldl9mcmVlO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NTg6XFx0bnNpbV9idXNfZGV2LVxcdTAwM2VkZXYuaWQgPSBlcnI7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ1OTpcXHRuc2ltX2J1c19kZXYtXFx1MDAzZWRldi5idXMgPSBcXHUwMDI2bnNpbV9idXM7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ2MDpcXHRuc2ltX2J1c19kZXYtXFx1MDAzZWRldi50eXBlID0gXFx1MDAyNm5zaW1fYnVzX2Rldl90eXBlO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NjE6XFx0bnNpbV9idXNfZGV2LVxcdTAwM2Vwb3J0X2NvdW50ID0gcG9ydF9jb3VudDtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDYyOlxcdG5zaW1fYnVzX2Rldi1cXHUwMDNlbnVtX3F1ZXVlcyA9IG51bV9xdWV1ZXM7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ2MzpcXHRuc2ltX2J1c19kZXYtXFx1MDAzZWluaXRpYWxfbmV0ID0gY3VycmVudC1cXHUwMDNlbnNwcm94eS1cXHUwMDNlbmV0X25zO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NjQ6XFx0LyogRGlzYWxsb3cgdXNpbmcgbnNpbV9idXNfZGV2ICovXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ2NTpcXHRzbXBfc3RvcmVfcmVsZWFzZShcXHUwMDI2bnNpbV9idXNfZGV2LVxcdTAwM2Vpbml0LCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQ2Ni1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDY3OlxcdHJlZmNvdW50X2luYyhcXHUwMDI2bnNpbV9idXNfZGV2cyk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ2ODpcXHRlcnIgPSBkZXZpY2VfcmVnaXN0ZXIoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDY5LVxcdGlmIChlcnIpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ3MDpcXHRcXHRnb3RvIGVycl9uc2ltX2J1c19kZXZfaWRfZnJlZTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDcxLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NzI6XFx0cmV0dXJuIG5zaW1fYnVzX2RldjtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDczLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NzQ6ZXJyX25zaW1fYnVzX2Rldl9pZF9mcmVlOlxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NzU6XFx0aWRhX2ZyZWUoXFx1MDAyNm5zaW1fYnVzX2Rldl9pZHMsIG5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2LmlkKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDc2OlxcdHB1dF9kZXZpY2UoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDc3OlxcdG5zaW1fYnVzX2RldiA9IE5VTEw7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ3ODplcnJfbnNpbV9idXNfZGV2X2ZyZWU6XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ3OTpcXHRrZnJlZShuc2ltX2J1c19kZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00ODAtXFx0cmV0dXJuIEVSUl9QVFIoZXJyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy00ODItXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjQ4MzpzdGF0aWMgdm9pZCBuc2ltX2J1c19kZXZfZGVsKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldilcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDg0LXtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDg1OlxcdC8qIERpc2FsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqL1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0ODY6XFx0c21wX3N0b3JlX3JlbGVhc2UoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlaW5pdCwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0ODc6XFx0aWRhX2ZyZWUoXFx1MDAyNm5zaW1fYnVzX2Rldl9pZHMsIG5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2LmlkKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDg4OlxcdGRldmljZV91bnJlZ2lzdGVyKFxcdTAwMjZuc2ltX2J1c19kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQ4OS19XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM9NDk3PWludCBuc2ltX2J1c19pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTA2LVxcdFxcdGdvdG8gZXJyX2J1c191bnJlZ2lzdGVyO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo1MDc6XFx0cmVmY291bnRfc2V0KFxcdTAwMjZuc2ltX2J1c19kZXZzLCAxKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTA4LVxcdC8qIEFsbG93IHVzaW5nIHJlc291cmNlcyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTUxNz12b2lkIG5zaW1fYnVzX2V4aXQodm9pZClcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTE4LXtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NTE5OlxcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiwgKnRtcDtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTIwLVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTUyMi1cXHRzbXBfc3RvcmVfcmVsZWFzZShcXHUwMDI2bnNpbV9idXNfZW5hYmxlLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjUyMzpcXHRpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KFxcdTAwMjZuc2ltX2J1c19kZXZzKSlcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NTI0OlxcdFxcdGNvbXBsZXRlKFxcdTAwMjZuc2ltX2J1c19kZXZzX3JlbGVhc2VkKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTI1LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo1MjY6XFx0bXV0ZXhfbG9jayhcXHUwMDI2bnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjUyNzpcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobnNpbV9idXNfZGV2LCB0bXAsIFxcdTAwMjZuc2ltX2J1c19kZXZfbGlzdCwgbGlzdCkge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo1Mjg6XFx0XFx0bGlzdF9kZWwoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlbGlzdCk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjUyOTpcXHRcXHRuc2ltX2J1c19kZXZfZGVsKG5zaW1fYnVzX2Rldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTUzMC1cXHR9XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjUzMTpcXHRtdXRleF91bmxvY2soXFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0X2xvY2spO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy01MzItXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjUzMzpcXHR3YWl0X2Zvcl9jb21wbGV0aW9uKFxcdTAwMjZuc2ltX2J1c19kZXZzX3JlbGVhc2VkKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTM0LVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jPTYwPXVuc2lnbmVkIGludCBuc2ltX2Rldl9nZXRfdmZzKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtNjQtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjY1OlxcdHJldHVybiBuc2ltX2Rldi1cXHUwMDNlbnNpbV9idXNfZGV2LVxcdTAwM2VudW1fdmZzO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy02Ni19XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM9Njg9c3RhdGljIHZvaWRcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6Njk6bnNpbV9idXNfZGV2X3NldF92ZnMoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2LCB1bnNpZ25lZCBpbnQgbnVtX3ZmcylcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtNzAte1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy03MS1cXHRydG5sX2xvY2soKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6NzI6XFx0bnNpbV9idXNfZGV2LVxcdTAwM2VudW1fdmZzID0gbnVtX3ZmcztcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtNzMtXFx0cnRubF91bmxvY2soKTtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYz0yMjg9c3RhdGljIGludCBuc2ltX2Rldl9kZWJ1Z2ZzX2luaXQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0yMzItXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjIzMzpcXHRzcHJpbnRmKGRldl9kZGlyX25hbWUsIERSVl9OQU1FIFxcXCIldVxcXCIsIG5zaW1fZGV2LVxcdTAwM2Vuc2ltX2J1c19kZXYtXFx1MDAzZWRldi5pZCk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTIzNC1cXHRuc2ltX2Rldi1cXHUwMDNlZGRpciA9IGRlYnVnZnNfY3JlYXRlX2RpcihkZXZfZGRpcl9uYW1lLCBuc2ltX2Rldl9kZGlyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYz0zMzI9c3RhdGljIGludCBuc2ltX2Rldl9wb3J0X2RlYnVnZnNfaW5pdChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTMzNC17XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjMzNTpcXHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYgPSBuc2ltX2Rldi1cXHUwMDNlbnNpbV9idXNfZGV2O1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0zMzYtXFx0dW5zaWduZWQgaW50IHBvcnRfaW5kZXggPSBuc2ltX2Rldl9wb3J0LVxcdTAwM2Vwb3J0X2luZGV4O1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTM0NS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MzQ2OlxcdHNwcmludGYoZGV2X2xpbmtfbmFtZSwgXFxcIi4uLy4uLy4uL1xcXCIgRFJWX05BTUUgXFxcIiV1XFxcIiwgbnNpbV9idXNfZGV2LVxcdTAwM2VkZXYuaWQpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0zNDctXFx0aWYgKG5zaW1fZGV2X3BvcnRfaXNfdmYobnNpbV9kZXZfcG9ydCkpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYz0xNTA2PXN0YXRpYyBpbnQgbnNpbV9kZXZfcmVsb2FkX2NyZWF0ZShzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1MDgte1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNTA5OlxcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiA9IG5zaW1fZGV2LVxcdTAwM2Vuc2ltX2J1c19kZXY7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1MTAtXFx0c3RydWN0IGRldmxpbmsgKmRldmxpbms7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTU0Ni1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTU0NzpcXHRlcnIgPSBuc2ltX2Rldl9wb3J0X2FkZF9hbGwobnNpbV9kZXYsIG5zaW1fYnVzX2Rldi1cXHUwMDNlcG9ydF9jb3VudCk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1NDgtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNTcyLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNTczOmludCBuc2ltX2Rydl9wcm9iZShzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1NzQte1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1NzktXFx0ZGV2bGluayA9IGRldmxpbmtfYWxsb2NfbnMoXFx1MDAyNm5zaW1fZGV2X2Rldmxpbmtfb3BzLCBzaXplb2YoKm5zaW1fZGV2KSxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTU4MDpcXHRcXHRcXHRcXHQgbnNpbV9idXNfZGV2LVxcdTAwM2Vpbml0aWFsX25ldCwgXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTU4MS1cXHRpZiAoIWRldmxpbmspXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTU4NC1cXHRuc2ltX2RldiA9IGRldmxpbmtfcHJpdihkZXZsaW5rKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTU4NTpcXHRuc2ltX2Rldi1cXHUwMDNlbnNpbV9idXNfZGV2ID0gbnNpbV9idXNfZGV2O1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNTg2LVxcdG5zaW1fZGV2LVxcdTAwM2Vzd2l0Y2hfaWQuaWRfbGVuID0gc2l6ZW9mKG5zaW1fZGV2LVxcdTAwM2Vzd2l0Y2hfaWQuaWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE1OTctXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE1OTg6XFx0ZGV2X3NldF9kcnZkYXRhKFxcdTAwMjZuc2ltX2J1c19kZXYtXFx1MDAzZWRldiwgbnNpbV9kZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNTk5LVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE2NTUtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE2NTY6XFx0ZXJyID0gbnNpbV9kZXZfcG9ydF9hZGRfYWxsKG5zaW1fZGV2LCBuc2ltX2J1c19kZXYtXFx1MDAzZXBvcnRfY291bnQpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNjU3LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTY5MS1cXHRkZXZsaW5rX2ZyZWUoZGV2bGluayk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE2OTI6XFx0ZGV2X3NldF9kcnZkYXRhKFxcdTAwMjZuc2ltX2J1c19kZXYtXFx1MDAzZWRldiwgTlVMTCk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE2OTMtXFx0cmV0dXJuIGVycjtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYz0xNjk2PXN0YXRpYyB2b2lkIG5zaW1fZGV2X3JlbG9hZF9kZXN0cm95KHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTcwNC1cXHRpZiAobnNpbV9kZXZfZ2V0X3Zmcyhuc2ltX2RldikpIHtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTcwNTpcXHRcXHRuc2ltX2J1c19kZXZfc2V0X3Zmcyhuc2ltX2Rldi1cXHUwMDNlbnNpbV9idXNfZGV2LCAwKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTcwNi1cXHRcXHRpZiAobnNpbV9lc3dfbW9kZV9pc19zd2l0Y2hkZXYobnNpbV9kZXYpKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3MTgtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE3MTk6dm9pZCBuc2ltX2Rydl9yZW1vdmUoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2KVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzIwLXtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTcyMTpcXHRzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2ID0gZGV2X2dldF9kcnZkYXRhKFxcdTAwMjZuc2ltX2J1c19kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3MjItXFx0c3RydWN0IGRldmxpbmsgKmRldmxpbmsgPSBwcml2X3RvX2RldmxpbmsobnNpbV9kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3MzctXFx0ZGV2bGlua19mcmVlKGRldmxpbmspO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNzM4OlxcdGRldl9zZXRfZHJ2ZGF0YShcXHUwMDI2bnNpbV9idXNfZGV2LVxcdTAwM2VkZXYsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzM5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYz0xNzQyPV9fbnNpbV9kZXZfcG9ydF9sb29rdXAoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldiwgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzUzLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNzU0OmludCBuc2ltX2Rydl9wb3J0X2FkZChzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsIGVudW0gbnNpbV9kZXZfcG9ydF90eXBlIHR5cGUsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3NTUtXFx0XFx0ICAgICAgdW5zaWduZWQgaW50IHBvcnRfaW5kZXgsIHU4IHBlcm1fYWRkcltFVEhfQUxFTl0pXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3NTYte1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNzU3OlxcdHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYgPSBkZXZfZ2V0X2RydmRhdGEoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTc1OC1cXHRpbnQgZXJyO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3NjgtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE3Njk6aW50IG5zaW1fZHJ2X3BvcnRfZGVsKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiwgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTc3MC1cXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgcG9ydF9pbmRleClcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTc3MS17XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE3NzI6XFx0c3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldiA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2bnNpbV9idXNfZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzczLVxcdHN0cnVjdCBuc2ltX2Rldl9wb3J0ICpuc2ltX2Rldl9wb3J0O1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3ODUtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jOjE3ODY6aW50IG5zaW1fZHJ2X2NvbmZpZ3VyZV92ZnMoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2LFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzg3LVxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBudW1fdmZzKVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzg4LXtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmM6MTc4OTpcXHRzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2ID0gZGV2X2dldF9kcnZkYXRhKFxcdTAwMjZuc2ltX2J1c19kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3OTAtXFx0c3RydWN0IGRldmxpbmsgKmRldmxpbmsgPSBwcml2X3RvX2RldmxpbmsobnNpbV9kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE3OTMtXFx0ZGV2bF9sb2NrKGRldmxpbmspO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNzk0OlxcdGlmIChuc2ltX2J1c19kZXYtXFx1MDAzZW51bV92ZnMgPT0gbnVtX3ZmcylcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZGV2LmMtMTc5NS1cXHRcXHRnb3RvIGV4aXRfdW5sb2NrO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxNzk2OlxcdGlmIChuc2ltX2J1c19kZXYtXFx1MDAzZW51bV92ZnMgXFx1MDAyNlxcdTAwMjYgbnVtX3Zmcykge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xNzk3LVxcdFxcdHJldCA9IC1FQlVTWTtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYy0xODA0LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxODA1OlxcdG5zaW1fYnVzX2Rldl9zZXRfdmZzKG5zaW1fYnVzX2RldiwgbnVtX3Zmcyk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE4MDYtXFx0aWYgKG5zaW1fZXN3X21vZGVfaXNfc3dpdGNoZGV2KG5zaW1fZGV2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE4MDktXFx0XFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuYzoxODEwOlxcdFxcdFxcdFxcdG5zaW1fYnVzX2Rldl9zZXRfdmZzKG5zaW1fYnVzX2RldiwgMCk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2Rldi5jLTE4MTEtXFx0XFx0XFx0XFx0Z290byBleGl0X3VubG9jaztcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmM9OTY9bnNpbV9nZXRfY2hhbm5lbHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IGV0aHRvb2xfY2hhbm5lbHMgKmNoKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2V0aHRvb2wuYy05OS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZXRodG9vbC5jOjEwMDpcXHRjaC1cXHUwMDNlbWF4X2NvbWJpbmVkID0gbnMtXFx1MDAzZW5zaW1fYnVzX2Rldi1cXHUwMDNlbnVtX3F1ZXVlcztcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZXRodG9vbC5jLTEwMS1cXHRjaC1cXHUwMDNlY29tYmluZWRfY291bnQgPSBucy1cXHUwMDNlZXRodG9vbC5jaGFubmVscztcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9ldGh0b29sLmM9MjM4PXZvaWQgbnNpbV9ldGh0b29sX2luaXQoc3RydWN0IG5ldGRldnNpbSAqbnMpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZXRodG9vbC5jLTI1MS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vZXRodG9vbC5jOjI1MjpcXHRucy1cXHUwMDNlZXRodG9vbC5jaGFubmVscyA9IG5zLVxcdTAwM2Vuc2ltX2J1c19kZXYtXFx1MDAzZW51bV9xdWV1ZXM7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2V0aHRvb2wuYy0yNTMtXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9MTA0MD1zdGF0aWMgaW50IG5zaW1faW5pdF9uZXRkZXZzaW0oc3RydWN0IG5ldGRldnNpbSAqbnMpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtMTA0NS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6MTA0NjpcXHRwaGMgPSBtb2NrX3BoY19jcmVhdGUoXFx1MDAyNm5zLVxcdTAwM2Vuc2ltX2J1c19kZXYtXFx1MDAzZWRldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTEwNDctXFx0aWYgKElTX0VSUihwaGMpKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTExMjg9c3RydWN0IG5ldGRldnNpbSAqbnNpbV9jcmVhdGUoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldixcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy0xMTM2LVxcdGRldiA9IGFsbG9jX25ldGRldl9tcShzaXplb2YoKm5zKSwgXFxcImV0aCVkXFxcIiwgTkVUX05BTUVfVU5LTk9XTiwgbnNpbV9zZXR1cCxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6MTEzNzpcXHRcXHRcXHQgICAgICBuc2ltX2Rldi1cXHUwMDNlbnNpbV9idXNfZGV2LVxcdTAwM2VudW1fcXVldWVzKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtMTEzOC1cXHRpZiAoIWRldilcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy0xMTQ4LVxcdG5zLVxcdTAwM2Vuc2ltX2Rldl9wb3J0ID0gbnNpbV9kZXZfcG9ydDtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6MTE0OTpcXHRucy1cXHUwMDNlbnNpbV9idXNfZGV2ID0gbnNpbV9kZXYtXFx1MDAzZW5zaW1fYnVzX2RldjtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6MTE1MDpcXHRTRVRfTkVUREVWX0RFVihkZXYsIFxcdTAwMjZucy1cXHUwMDNlbnNpbV9idXNfZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy0xMTUxLVxcdFNFVF9ORVRERVZfREVWTElOS19QT1JUKGRldiwgXFx1MDAyNm5zaW1fZGV2X3BvcnQtXFx1MDAzZWRldmxpbmtfcG9ydCk7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg9MTA3PXN0cnVjdCBuZXRkZXZzaW0ge1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTEyNy1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTI4OlxcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldjtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTI5LVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oPTMyMT1zdHJ1Y3QgbnNpbV9kZXYge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozMjI6XFx0c3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2O1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zMjMtXFx0c3RydWN0IG5zaW1fZmliX2RhdGEgKmZpYl9kYXRhO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oPTM4OT12b2lkIG5zaW1fZGV2X2V4aXQodm9pZCk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjM5MDppbnQgbnNpbV9kcnZfcHJvYmUoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzkxOnZvaWQgbnNpbV9kcnZfcmVtb3ZlKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2Rldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjM5MjppbnQgbnNpbV9kcnZfcG9ydF9hZGQoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2LFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zOTMtXFx0XFx0ICAgICAgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSwgdW5zaWduZWQgaW50IHBvcnRfaW5kZXgsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM5NC1cXHRcXHQgICAgICB1OCBwZXJtX2FkZHJbRVRIX0FMRU5dKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mzk1OmludCBuc2ltX2Rydl9wb3J0X2RlbChzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM5Ni1cXHRcXHQgICAgICBlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSB0eXBlLFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zOTctXFx0XFx0ICAgICAgdW5zaWduZWQgaW50IHBvcnRfaW5kZXgpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozOTg6aW50IG5zaW1fZHJ2X2NvbmZpZ3VyZV92ZnMoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2LFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zOTktXFx0XFx0XFx0ICAgdW5zaWduZWQgaW50IG51bV92ZnMpO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oPTQ3MT1pbnQgbnNpbV9zZXR1cF90YyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00NzQtI2RlZmluZSBOU0lNX0JVU19ERVZfTUFYX1ZGUyA0XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQ3NTpzdHJ1Y3QgbnNpbV9idXNfZGV2IHtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDc2LVxcdHN0cnVjdCBkZXZpY2UgZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM9MTI1PWludCBuc2ltX3VkcF90dW5uZWxzX2luZm9fY3JlYXRlKHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xMzEtXFx0aWYgKG5zaW1fZGV2LVxcdTAwM2V1ZHBfcG9ydHMuc2hhcmVkIFxcdTAwMjZcXHUwMDI2IG5zaW1fZGV2LVxcdTAwM2V1ZHBfcG9ydHMub3Blbl9vbmx5KSB7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL3VkcF90dW5uZWxzLmM6MTMyOlxcdFxcdGRldl9lcnIoXFx1MDAyNm5zaW1fZGV2LVxcdTAwM2Vuc2ltX2J1c19kZXYtXFx1MDAzZWRldixcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vdWRwX3R1bm5lbHMuYy0xMzMtXFx0XFx0XFx0XFxcInNoYXJlZCBjYW4ndCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggb3Blbl9vbmx5XFxcXG5cXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDM6MTQ6MjguNTg5MzA0MTc3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYzODk5ODM5OTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgQ3JpdGljYWwgUmVmY291bnQgQnVnIGluIG5ldGRldnNpbSBEZXZpY2UgQ3JlYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoaXMgcGF0Y2ggaXMgaW50cmlndWluZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIG1vdGl2YXRpb24gYmVoaW5kIG1vdmluZyB0aGF0IGByZWZjb3VudF9pbmNgIGNhbGwuIEFmdGVyIGV4YW1pbmluZyB0aGUgY29kZSwgaXQncyBjbGVhciB0aGF0IGl0IHdhcyBtb3ZlZCBmcm9tIGBuZXdfZGV2aWNlX3N0b3JlYCB0byBgbnNpbV9idXNfZGV2X25ld2AuXG5cbkhlcmUncyB0aGUgcHJvYmxlbTogcHJldmlvdXNseSwgdGhlIGByZWZjb3VudF9pbmNgIGZvciBgbnNpbV9idXNfZGV2c2Agd2FzIGhhcHBlbmluZyAqYWZ0ZXIqIGBuc2ltX2J1c19kZXZfbmV3YCByZXR1cm5lZCBzdWNjZXNzZnVsbHkgaW4gYG5ld19kZXZpY2Vfc3RvcmVgLiBIb3dldmVyLCB3aXRoaW4gYG5zaW1fYnVzX2Rldl9uZXdgLCBpZiBgZGV2aWNlX3JlZ2lzdGVyYCBmYWlsZWQsIGl0IGp1bXBlZCB0byBgZXJyX25zaW1fYnVzX2Rldl9pZF9mcmVlYCwgd2hpY2ggdGhlbiBjYWxsZWQgYHB1dF9kZXZpY2VgLCB3aGljaCBpbiB0dXJuIGRlY3JlbWVudGVkIGBuc2ltX2J1c19kZXZzYCB0aHJvdWdoIHRoZSBgLnJlbGVhc2VgIGNhbGxiYWNrLCBgbnNpbV9idXNfZGV2X3JlbGVhc2VgLiBUaGUga2V5IGhlcmUgaXMgYHJlZmNvdW50X2RlY19hbmRfdGVzdChcdTAwMjZuc2ltX2J1c19kZXZzKWAuIFRoaXMgbWVhbnMgd2Ugd2VyZSBkZWNyZW1lbnRpbmcgdGhlIHJlZmNvdW50IHdpdGhvdXQgZXZlciBoYXZpbmcgaW5jcmVtZW50ZWQgaXQgaW4gdGhlIGZhaWx1cmUgY2FzZSEgVGhhdCBtZWFucyB3ZSBoYXZlIGEgY2xlYXIgcmVmY291bnQgdW5kZXJmbG93IGJ1Zywgb3IgYSByYWNlIGNvbmRpdGlvbiB0aGF0IGNvdWxkIGxlYWQgdG8gcHJlbWF0dXJlIGNvbXBsZXRpb24gb2YgYG5zaW1fYnVzX2RldnNfcmVsZWFzZWRgLlxuXG5UaGUgZml4PyBQbGFjaW5nIHRoZSBgcmVmY291bnRfaW5jYCAqYmVmb3JlKiB0aGUgYGRldmljZV9yZWdpc3RlcmAgY2FsbCBpbiBgbnNpbV9idXNfZGV2X25ld2AuIFRoaXMgZW5zdXJlcyB0aGUgcmVmY291bnQgaXMgaW5jcmVtZW50ZWQgKmJlZm9yZSogZGV2aWNlIHJlZ2lzdHJhdGlvbiBhbmQsIGNydWNpYWxseSwgYmVmb3JlIGFueSBwb3RlbnRpYWwgZmFpbHVyZSBzY2VuYXJpb3Mgd2hlcmUgdGhlIGRldmljZSdzIHJlbGVhc2UgZnVuY3Rpb24gKHdoaWNoIGRlY3JlbWVudHMgdGhlIHJlZmNvdW50KSBpcyB0cmlnZ2VyZWQuIFRoaXMgY2hhbmdlIG1ha2VzIHRoZSByZWZjb3VudCBtYW5hZ2VtZW50IGNvbnNpc3RlbnQgd2hldGhlciB0aGUgZGV2aWNlIHJlZ2lzdHJhdGlvbiBzdWNjZWVkcyBvciBmYWlscy4gSXQgcGFpcnMgdGhlIGluY3JlbWVudCB3aXRoIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24vcmVnaXN0cmF0aW9uLlxuXG5Ob3csIGlzIHRoaXMgd29ydGggZnV6emluZz8gQmFzZWQgb24gdGhlIGNyaXRlcmlhLCBkZWZpbml0ZWx5LiBuZXRkZXZzaW0gaXMgKnJlYWNoYWJsZSogaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBhbmQsIGltcG9ydGFudGx5LCBzeXprYWxsZXIuIFNpbmNlIHRoZSBwYXRjaCB0b3VjaGVzIGNvcmUgbG9naWMgYXJvdW5kIGRldmljZSBjcmVhdGlvbiBhbmQgcmVmY291bnRpbmcgd2l0aGluIGEgc29mdHdhcmUtc2ltdWxhdGVkIG5ldHdvcmsgZHJpdmVyLCBJIHRoaW5rIHRoaXMgbW9kaWZpY2F0aW9uIGlzIHdvcnRoIHRlc3RpbmcgdGhvcm91Z2hseS4gSXQncyBub3QgdmVuZG9yLXNwZWNpZmljLCBub3QgZGVjb3JhdGl2ZSwgYW5kIG5vdCB1bnJlYWNoYWJsZS5cblxuTGV0J3MgcXVpY2tseSBjaGVjayB0aGUgRm9jdXNTeW1ib2xzLCBlbnN1cmluZyB3ZSBoYXZlIHRoZSByaWdodCBjb3ZlcmFnZTogYG5ld19kZXZpY2Vfc3RvcmVgLCBgbnNpbV9idXNfZGV2X25ld2AsIGBuc2ltX2J1c19kZXZfZGVsYCwgYGRlbF9kZXZpY2Vfc3RvcmVgLCBgbnNpbV9idXNfaW5pdGAgLyBgbnNpbV9idXNfZXhpdGAsIGFuZCBgbnNpbV9kcnZfcHJvYmVgLiBBIHF1aWNrIGNoZWNrIHNob3dzIHRoYXQgYGJ1cy5jYCBob3VzZXMgc2V2ZXJhbCBzdGF0aWMgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gdGhlc2UgZW50cnkgcG9pbnRzLlxuXG5UaGlzIHBhdGNoIGxvb2tzIGxpa2UgaXQgcmVzb2x2ZXMgYSBzaWduaWZpY2FudCByZWZjb3VudCBpc3N1ZSwgYW5kIG5ldGRldnNpbSBpcyByaXBlIGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjIzMywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MDUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDM6MTQ6MzQuOTc5MjkwNTM1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg5NDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQvKiBDb3B5cmlnaHQgKEMpIDIwMTcgTmV0cm9ub21lIFN5c3RlbXMsIEluYy5cXG4gICAzOlxcdCAqIENvcHlyaWdodCAoQykgMjAxOSBNZWxsYW5veCBUZWNobm9sb2dpZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWRcXG4gICA0OlxcdCAqL1xcbiAgIDU6XFx0XFxuICAgNjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvY29tcGxldGlvbi5oXFx1MDAzZVxcbiAgIDc6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RldmljZS5oXFx1MDAzZVxcbiAgIDg6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2lkci5oXFx1MDAzZVxcbiAgIDk6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tlcm5lbC5oXFx1MDAzZVxcbiAgMTA6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2xpc3QuaFxcdTAwM2VcXG4gIDExOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tdXRleC5oXFx1MDAzZVxcbiAgMTI6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3JlZmNvdW50LmhcXHUwMDNlXFxuICAxMzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvc2xhYi5oXFx1MDAzZVxcbiAgMTQ6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L3N5c2ZzLmhcXHUwMDNlXFxuICAxNTpcXHRcXG4gIDE2OlxcdCNpbmNsdWRlIFxcXCJuZXRkZXZzaW0uaFxcXCJcXG4gIDE3OlxcdFxcbiAgMTg6XFx0c3RhdGljIERFRklORV9JREEobnNpbV9idXNfZGV2X2lkcyk7XFxuICAxOTpcXHRzdGF0aWMgTElTVF9IRUFEKG5zaW1fYnVzX2Rldl9saXN0KTtcXG4gIDIwOlxcdHN0YXRpYyBERUZJTkVfTVVURVgobnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XFxuICAyMTpcXHRzdGF0aWMgYm9vbCBuc2ltX2J1c19lbmFibGU7XFxuICAyMjpcXHRzdGF0aWMgcmVmY291bnRfdCBuc2ltX2J1c19kZXZzOyAvKiBJbmNsdWRpbmcgdGhlIGJ1cyBpdHNlbGYuICovXFxuICAyMzpcXHRzdGF0aWMgREVDTEFSRV9DT01QTEVUSU9OKG5zaW1fYnVzX2RldnNfcmVsZWFzZWQpO1xcbiAgMjQ6XFx0XFxuICAyNTpcXHRzdGF0aWMgc3RydWN0IG5zaW1fYnVzX2RldiAqdG9fbnNpbV9idXNfZGV2KHN0cnVjdCBkZXZpY2UgKmRldilcXG4gIDI2OlxcdHtcXG4gIDI3OlxcdFxcdHJldHVybiBjb250YWluZXJfb2YoZGV2LCBzdHJ1Y3QgbnNpbV9idXNfZGV2LCBkZXYpO1xcbiAgMjg6XFx0fVxcbiAgMjk6XFx0XFxuICAzMDpcXHRzdGF0aWMgc3NpemVfdFxcbiAgMzE6XFx0bnNpbV9idXNfZGV2X251bXZmc19zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbiAgMzI6XFx0XFx0XFx0XFx0ICBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcXG4gIDMzOlxcdHtcXG4gIDM0OlxcdFxcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiA9IHRvX25zaW1fYnVzX2RldihkZXYpO1xcbiAgMzU6XFx0XFx0dW5zaWduZWQgaW50IG51bV92ZnM7XFxuICAzNjpcXHRcXHRpbnQgcmV0O1xcbiAgMzc6XFx0XFxuICAzODpcXHRcXHRyZXQgPSBrc3RydG91aW50KGJ1ZiwgMCwgXFx1MDAyNm51bV92ZnMpO1xcbiAgMzk6XFx0XFx0aWYgKHJldClcXG4gIDQwOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuICA0MTpcXHRcXG4gIDQyOlxcdFxcdGRldmljZV9sb2NrKGRldik7XFxuICA0MzpcXHRcXHRyZXQgPSAtRU5PRU5UO1xcbiAgNDQ6XFx0XFx0aWYgKGRldl9nZXRfZHJ2ZGF0YShkZXYpKVxcbiAgNDU6XFx0XFx0XFx0cmV0ID0gbnNpbV9kcnZfY29uZmlndXJlX3Zmcyhuc2ltX2J1c19kZXYsIG51bV92ZnMpO1xcbiAgNDY6XFx0XFx0ZGV2aWNlX3VubG9jayhkZXYpO1xcbiAgNDc6XFx0XFxuICA0ODpcXHRcXHRyZXR1cm4gcmV0ID8gcmV0IDogY291bnQ7XFxuICA0OTpcXHR9XFxuICA1MDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDM6MTQ6MzQuOTc5MzgxNDc1WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE4OTQ0Nzk1NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDpcblxuKipEaXZpbmcgaW50byB0aGUgTmV0ZGV2c2ltIEJ1cy5jIENvZGUqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgc29tZXRoaW5nIHNwZWNpZmljIGFib3V0IHRoZSBuZXRkZXZzaW0gYnVzIGRyaXZlcidzIGJlaGF2aW9yLiBSaWdodCwgbGV0J3Mgc3RhcnQgYnkgbG9va2luZyBhdCBhIGZvY3VzZWQgY2h1bmsgb2YgY29kZSwgc3BlY2lmaWNhbGx5IGxpbmVzIDQ4MCB0byA1NDAgaW4gYGRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuY2AuIEknbSBnb2luZyB0byBzY2FuIHRoYXQgc2VjdGlvbiBjYXJlZnVsbHkuIEknbGwgYmUgbG9va2luZyBmb3IgdGhlIGNydWNpYWwgYml0cyBvZiBsb2dpYyB0aGF0IGxpa2VseSByZWxhdGUgdG8gdGhlIGlzc3VlIEknbSBpbnZlc3RpZ2F0aW5nLiBJIGV4cGVjdCB0byBmaW5kIHNvbWUga2V5IGZ1bmN0aW9uIGNhbGxzLCBkYXRhIHN0cnVjdHVyZSBtYW5pcHVsYXRpb25zLCBvciBjb25kaXRpb25hbCBjaGVja3MgdGhhdCBzaGVkIGxpZ2h0IG9uIHdoYXQncyBnb2luZyBvbi4gVGhpcyBuYXJyb3dlZCBhcHByb2FjaCB3aWxsIGhlbHAgbWUgYXZvaWQgZ2V0dGluZyBsb3N0IGluIHRoZSBicm9hZGVyIGNvbnRleHQgYW5kIGhvbmUgaW4gb24gdGhlIHJlbGV2YW50IGRldGFpbHMgcXVpY2tseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkwMDgsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAzOjE0OjM2Ljg3Mzg2ODI3NFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjMzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDgwLFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDgwOlxcdFxcdHJldHVybiBFUlJfUFRSKGVycik7XFxuIDQ4MTpcXHR9XFxuIDQ4MjpcXHRcXG4gNDgzOlxcdHN0YXRpYyB2b2lkIG5zaW1fYnVzX2Rldl9kZWwoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2KVxcbiA0ODQ6XFx0e1xcbiA0ODU6XFx0XFx0LyogRGlzYWxsb3cgdXNpbmcgbnNpbV9idXNfZGV2ICovXFxuIDQ4NjpcXHRcXHRzbXBfc3RvcmVfcmVsZWFzZShcXHUwMDI2bnNpbV9idXNfZGV2LVxcdTAwM2Vpbml0LCBmYWxzZSk7XFxuIDQ4NzpcXHRcXHRpZGFfZnJlZShcXHUwMDI2bnNpbV9idXNfZGV2X2lkcywgbnNpbV9idXNfZGV2LVxcdTAwM2VkZXYuaWQpO1xcbiA0ODg6XFx0XFx0ZGV2aWNlX3VucmVnaXN0ZXIoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2KTtcXG4gNDg5OlxcdH1cXG4gNDkwOlxcdFxcbiA0OTE6XFx0c3RhdGljIHN0cnVjdCBkZXZpY2VfZHJpdmVyIG5zaW1fZHJpdmVyID0ge1xcbiA0OTI6XFx0XFx0Lm5hbWVcXHRcXHQ9IERSVl9OQU1FLFxcbiA0OTM6XFx0XFx0LmJ1c1xcdFxcdD0gXFx1MDAyNm5zaW1fYnVzLFxcbiA0OTQ6XFx0XFx0Lm93bmVyXFx0XFx0PSBUSElTX01PRFVMRSxcXG4gNDk1OlxcdH07XFxuIDQ5NjpcXHRcXG4gNDk3OlxcdGludCBuc2ltX2J1c19pbml0KHZvaWQpXFxuIDQ5ODpcXHR7XFxuIDQ5OTpcXHRcXHRpbnQgZXJyO1xcbiA1MDA6XFx0XFxuIDUwMTpcXHRcXHRlcnIgPSBidXNfcmVnaXN0ZXIoXFx1MDAyNm5zaW1fYnVzKTtcXG4gNTAyOlxcdFxcdGlmIChlcnIpXFxuIDUwMzpcXHRcXHRcXHRyZXR1cm4gZXJyO1xcbiA1MDQ6XFx0XFx0ZXJyID0gZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZuc2ltX2RyaXZlcik7XFxuIDUwNTpcXHRcXHRpZiAoZXJyKVxcbiA1MDY6XFx0XFx0XFx0Z290byBlcnJfYnVzX3VucmVnaXN0ZXI7XFxuIDUwNzpcXHRcXHRyZWZjb3VudF9zZXQoXFx1MDAyNm5zaW1fYnVzX2RldnMsIDEpO1xcbiA1MDg6XFx0XFx0LyogQWxsb3cgdXNpbmcgcmVzb3VyY2VzICovXFxuIDUwOTpcXHRcXHRzbXBfc3RvcmVfcmVsZWFzZShcXHUwMDI2bnNpbV9idXNfZW5hYmxlLCB0cnVlKTtcXG4gNTEwOlxcdFxcdHJldHVybiAwO1xcbiA1MTE6XFx0XFxuIDUxMjpcXHRlcnJfYnVzX3VucmVnaXN0ZXI6XFxuIDUxMzpcXHRcXHRidXNfdW5yZWdpc3RlcihcXHUwMDI2bnNpbV9idXMpO1xcbiA1MTQ6XFx0XFx0cmV0dXJuIGVycjtcXG4gNTE1OlxcdH1cXG4gNTE2OlxcdFxcbiA1MTc6XFx0dm9pZCBuc2ltX2J1c19leGl0KHZvaWQpXFxuIDUxODpcXHR7XFxuIDUxOTpcXHRcXHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYsICp0bXA7XFxuIDUyMDpcXHRcXG4gNTIxOlxcdFxcdC8qIERpc2FsbG93IHVzaW5nIHJlc291cmNlcyAqL1xcbiA1MjI6XFx0XFx0c21wX3N0b3JlX3JlbGVhc2UoXFx1MDAyNm5zaW1fYnVzX2VuYWJsZSwgZmFsc2UpO1xcbiA1MjM6XFx0XFx0aWYgKHJlZmNvdW50X2RlY19hbmRfdGVzdChcXHUwMDI2bnNpbV9idXNfZGV2cykpXFxuIDUyNDpcXHRcXHRcXHRjb21wbGV0ZShcXHUwMDI2bnNpbV9idXNfZGV2c19yZWxlYXNlZCk7XFxuIDUyNTpcXHRcXG4gNTI2OlxcdFxcdG11dGV4X2xvY2soXFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0X2xvY2spO1xcbiA1Mjc6XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG5zaW1fYnVzX2RldiwgdG1wLCBcXHUwMDI2bnNpbV9idXNfZGV2X2xpc3QsIGxpc3QpIHtcXG4gNTI4OlxcdFxcdFxcdGxpc3RfZGVsKFxcdTAwMjZuc2ltX2J1c19kZXYtXFx1MDAzZWxpc3QpO1xcbiA1Mjk6XFx0XFx0XFx0bnNpbV9idXNfZGV2X2RlbChuc2ltX2J1c19kZXYpO1xcbiA1MzA6XFx0XFx0fVxcbiA1MzE6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZuc2ltX2J1c19kZXZfbGlzdF9sb2NrKTtcXG4gNTMyOlxcdFxcbiA1MzM6XFx0XFx0d2FpdF9mb3JfY29tcGxldGlvbihcXHUwMDI2bnNpbV9idXNfZGV2c19yZWxlYXNlZCk7XFxuIDUzNDpcXHRcXG4gNTM1OlxcdFxcdGRyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZuc2ltX2RyaXZlcik7XFxuIDUzNjpcXHRcXHRidXNfdW5yZWdpc3RlcihcXHUwMDI2bnNpbV9idXMpO1xcbiA1Mzc6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwMzoxNDozNi44NzM5NTYwNDRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTg1MDE4ODExMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYG5ldGRldnNpbWAgbW9kdWxlLlxuXG4qKkludmVzdGlnYXRpbmcgYG5ldGRldnNpbWAgRnVuY3Rpb25hbGl0eSoqXG5cbkFscmlnaHQsIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBgbmV0ZGV2c2ltYCBtb2R1bGUncyBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIE15IGZpcnN0IHN0ZXAgaXMgdG8gZ2V0IGZhbWlsaWFyIHdpdGggd2hhdCBpdCBvZmZlcnMsIGFuZCBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgaXMgYWx3YXlzIHRoZSBoZWFkZXIgZmlsZXMuIExldCBtZSB0YWtlIGEgbG9vayBhdCBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHNvbGlkIG92ZXJ2aWV3IG9mIHRoZSBkZWZpbmVkIHN0cnVjdHVyZXMsIGZ1bmN0aW9uIHByb3RvdHlwZXMsIGFuZCBhbnkga2V5IG1hY3JvcyB1c2VkIGluIHRoaXMgc2ltdWxhdGVkIG5ldHdvcmsgZGV2aWNlIGltcGxlbWVudGF0aW9uLiBGcm9tIHRoZXJlLCBJIGNhbiBzdGFydCB0byBmbGVzaCBvdXQgdGhlIGRpZmZlcmVudCBjb21wb25lbnRzIGFuZCBob3cgdGhleSBmaXQgdG9nZXRoZXIuIFVuZGVyc3RhbmRpbmcgdGhlIGhlYWRlciBpcyBjcnVjaWFsIGJlZm9yZSBkaWdnaW5nIGludG8gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIExldCdzIHNlZSB3aGF0J3MgaW4gdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMTM4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwMzoxNDozOC43MjQxNDYzNzVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwNjIyODU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5zaW1fXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDEtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQyOnN0cnVjdCBuc2ltX3NhIHtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDMtXFx0c3RydWN0IHhmcm1fc3RhdGUgKnhzO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTUxLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo1MjpzdHJ1Y3QgbnNpbV9pcHNlYyB7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjUzOlxcdHN0cnVjdCBuc2ltX3NhIHNhW05TSU1fSVBTRUNfTUFYX1NBX0NPVU5UXTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNTQtXFx0c3RydWN0IGRlbnRyeSAqcGZpbGU7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNjAtI2RlZmluZSBOU0lNX01BQ1NFQ19NQVhfUlhTQ19DT1VOVCAxXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjYxOnN0cnVjdCBuc2ltX3J4c2Mge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC02Mi1cXHRzY2lfdCBzY2k7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNjUtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjY2OnN0cnVjdCBuc2ltX3NlY3kge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC02Ny1cXHRzY2lfdCBzY2k7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjY4OlxcdHN0cnVjdCBuc2ltX3J4c2MgbnNpbV9yeHNjW05TSU1fTUFDU0VDX01BWF9SWFNDX0NPVU5UXTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Njk6XFx0dTggbnNpbV9yeHNjX2NvdW50O1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC03MC1cXHRib29sIHVzZWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNzItXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjczOnN0cnVjdCBuc2ltX21hY3NlYyB7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjc0OlxcdHN0cnVjdCBuc2ltX3NlY3kgbnNpbV9zZWN5W05TSU1fTUFDU0VDX01BWF9TRUNZX0NPVU5UXTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NzU6XFx0dTggbnNpbV9zZWN5X2NvdW50O1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC03Ni19O1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC03Ny1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Nzg6c3RydWN0IG5zaW1fdmxhbiB7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTc5LVxcdERFQ0xBUkVfQklUTUFQKGN0YWcsIFZMQU5fTl9WSUQpO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTgyLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo4MzpzdHJ1Y3QgbnNpbV9ldGh0b29sX3BhdXNlcGFyYW0ge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC04NC1cXHRib29sIHJ4O1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTg5LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo5MDpzdHJ1Y3QgbnNpbV9ldGh0b29sIHtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtOTEtXFx0dTMyIGdldF9lcnI7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtOTMtXFx0dTMyIGNoYW5uZWxzO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo5NDpcXHRzdHJ1Y3QgbnNpbV9ldGh0b29sX3BhdXNlcGFyYW0gcGF1c2VwYXJhbTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtOTUtXFx0c3RydWN0IGV0aHRvb2xfY29hbGVzY2UgY29hbGVzY2U7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtOTktXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjEwMDpzdHJ1Y3QgbnNpbV9ycSB7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTEwMS1cXHRzdHJ1Y3QgbmFwaV9zdHJ1Y3QgbmFwaTtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaD0xMDc9c3RydWN0IG5ldGRldnNpbSB7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTEwOC1cXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxMDk6XFx0c3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldjtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTEwOlxcdHN0cnVjdCBuc2ltX2Rldl9wb3J0ICpuc2ltX2Rldl9wb3J0O1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xMTEtXFx0c3RydWN0IG1vY2tfcGhjICpwaGM7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjExMjpcXHRzdHJ1Y3QgbnNpbV9ycSAqKnJxO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xMTMtXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTI3LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxMjg6XFx0c3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2O1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xMjktXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTQxLVxcdGJvb2wgYnBmX21hcF9hY2NlcHQ7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE0MjpcXHRzdHJ1Y3QgbnNpbV9pcHNlYyBpcHNlYztcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTQzOlxcdHN0cnVjdCBuc2ltX21hY3NlYyBtYWNzZWM7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE0NDpcXHRzdHJ1Y3QgbnNpbV92bGFuIHZsYW47XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE0NS1cXHRzdHJ1Y3Qge1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE1OC1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTU5OlxcdHN0cnVjdCBuc2ltX2V0aHRvb2wgZXRodG9vbDtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTYwLVxcdHN0cnVjdCBuZXRkZXZzaW0gX19yY3UgKnBlZXI7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTY1LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxNjY6c3RydWN0IG5ldGRldnNpbSAqbnNpbV9jcmVhdGUoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldixcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTY3OlxcdFxcdFxcdCAgICAgIHN0cnVjdCBuc2ltX2Rldl9wb3J0ICpuc2ltX2Rldl9wb3J0LFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xNjgtXFx0XFx0XFx0ICAgICAgdTggcGVybV9hZGRyW0VUSF9BTEVOXSk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE2OTp2b2lkIG5zaW1fZGVzdHJveShzdHJ1Y3QgbmV0ZGV2c2ltICpucyk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE3MC1ib29sIG5ldGRldl9pc19uc2ltKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xNzEtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE3Mjp2b2lkIG5zaW1fZXRodG9vbF9pbml0KHN0cnVjdCBuZXRkZXZzaW0gKm5zKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTczOnZvaWQgbnNpbV9ldGh0b29sX2Zpbmkoc3RydWN0IG5ldGRldnNpbSAqbnMpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xNzQtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE3NTp2b2lkIG5zaW1fdWRwX3R1bm5lbHNfZGVidWdmc19jcmVhdGUoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2Rldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE3NjppbnQgbnNpbV91ZHBfdHVubmVsc19pbmZvX2NyZWF0ZShzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xNzctXFx0XFx0XFx0XFx0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxNzg6dm9pZCBuc2ltX3VkcF90dW5uZWxzX2luZm9fZGVzdHJveShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTc5LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0xODAtI2lmZGVmIENPTkZJR19CUEZfU1lTQ0FMTFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxODE6aW50IG5zaW1fYnBmX2Rldl9pbml0KHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxODI6dm9pZCBuc2ltX2JwZl9kZXZfZXhpdChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTgzOmludCBuc2ltX2JwZl9pbml0KHN0cnVjdCBuZXRkZXZzaW0gKm5zKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTg0OnZvaWQgbnNpbV9icGZfdW5pbml0KHN0cnVjdCBuZXRkZXZzaW0gKm5zKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTg1OmludCBuc2ltX2JwZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X2JwZiAqYnBmKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTg2OmludCBuc2ltX2JwZl9kaXNhYmxlX3RjKHN0cnVjdCBuZXRkZXZzaW0gKm5zKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTg3OmludCBuc2ltX2JwZl9zZXR1cF90Y19ibG9ja19jYihlbnVtIHRjX3NldHVwX3R5cGUgdHlwZSxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTg4LVxcdFxcdFxcdCAgICAgICB2b2lkICp0eXBlX2RhdGEsIHZvaWQgKmNiX3ByaXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE5MC1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MTkxOnN0YXRpYyBpbmxpbmUgaW50IG5zaW1fYnBmX2Rldl9pbml0KHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE5Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMTk1LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoxOTY6c3RhdGljIGlubGluZSB2b2lkIG5zaW1fYnBmX2Rldl9leGl0KHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE5Ny17XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTE5OC19XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjE5OTpzdGF0aWMgaW5saW5lIGludCBuc2ltX2JwZl9pbml0KHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yMDAte1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTIwMy1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MjA0OnN0YXRpYyBpbmxpbmUgdm9pZCBuc2ltX2JwZl91bmluaXQoc3RydWN0IG5ldGRldnNpbSAqbnMpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTIwNS17XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjA3LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoyMDg6c3RhdGljIGlubGluZSBpbnQgbnNpbV9icGYoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9icGYgKmJwZilcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjA5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yMTItXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjIxMzpzdGF0aWMgaW5saW5lIGludCBuc2ltX2JwZl9kaXNhYmxlX3RjKHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yMTQte1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oPTIxOD1zdGF0aWMgaW5saW5lIGludFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoyMTk6bnNpbV9icGZfc2V0dXBfdGNfYmxvY2tfY2IoZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsIHZvaWQgKnR5cGVfZGF0YSxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjIwLVxcdFxcdFxcdCAgIHZvaWQgKmNiX3ByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjI1LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoyMjY6ZW51bSBuc2ltX3Jlc291cmNlX2lkIHtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjI3LVxcdE5TSU1fUkVTT1VSQ0VfTk9ORSwgICAvKiBERVZMSU5LX1JFU09VUkNFX0lEX1BBUkVOVF9UT1AgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yMzYtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjIzNzplbnVtIG5zaW1fcG9ydF9yZXNvdXJjZV9pZCB7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTIzOC1cXHROU0lNX1BPUlRfUkVTT1VSQ0VfVEVTVCA9IDEsXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjQwLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoyNDE6c3RydWN0IG5zaW1fZGV2X2hlYWx0aCB7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTI0Mi1cXHRzdHJ1Y3QgZGV2bGlua19oZWFsdGhfcmVwb3J0ZXIgKmVtcHR5X3JlcG9ydGVyO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTI0OS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MjUwOmludCBuc2ltX2Rldl9oZWFsdGhfaW5pdChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2LCBzdHJ1Y3QgZGV2bGluayAqZGV2bGluayk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjI1MTp2b2lkIG5zaW1fZGV2X2hlYWx0aF9leGl0KHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yNTItXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjI1MzpzdHJ1Y3QgbnNpbV9kZXZfaHdzdGF0c19uZXRkZXYge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yNTQtXFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTI2MC1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MjYxOnN0cnVjdCBuc2ltX2Rldl9od3N0YXRzIHtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjYyLVxcdHN0cnVjdCBkZW50cnkgKmRkaXI7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjcxLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoyNzI6aW50IG5zaW1fZGV2X2h3c3RhdHNfaW5pdChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MjczOnZvaWQgbnNpbV9kZXZfaHdzdGF0c19leGl0KHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yNzQtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTI3NS0jaWYgSVNfRU5BQkxFRChDT05GSUdfUFNBTVBMRSlcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mjc2OmludCBuc2ltX2Rldl9wc2FtcGxlX2luaXQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2Rldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjI3Nzp2b2lkIG5zaW1fZGV2X3BzYW1wbGVfZXhpdChzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjc4LSNlbHNlXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjI3OTpzdGF0aWMgaW5saW5lIGludCBuc2ltX2Rldl9wc2FtcGxlX2luaXQoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2RldilcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjgwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yODMtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjI4NDpzdGF0aWMgaW5saW5lIHZvaWQgbnNpbV9kZXZfcHNhbXBsZV9leGl0KHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTI4NS17XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjg4LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDoyODk6ZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yOTAtXFx0TlNJTV9ERVZfUE9SVF9UWVBFX1BGLFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTI5NS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mjk2OnN0cnVjdCBuc2ltX2Rldl9wb3J0IHtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMjk3LVxcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0yOTktXFx0dW5zaWduZWQgaW50IHBvcnRfaW5kZXg7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjMwMDpcXHRlbnVtIG5zaW1fZGV2X3BvcnRfdHlwZSBwb3J0X3R5cGU7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTMwMS1cXHRzdHJ1Y3QgZGVudHJ5ICpkZGlyO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTMwNy1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzA4OnN0cnVjdCBuc2ltX3ZmX2NvbmZpZyB7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTMwOS1cXHRpbnQgbGlua19zdGF0ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zMjAtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjMyMTpzdHJ1Y3QgbnNpbV9kZXYge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozMjI6XFx0c3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2O1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozMjM6XFx0c3RydWN0IG5zaW1fZmliX2RhdGEgKmZpYl9kYXRhO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozMjQ6XFx0c3RydWN0IG5zaW1fdHJhcF9kYXRhICp0cmFwX2RhdGE7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTMyNS1cXHRzdHJ1Y3QgZGVudHJ5ICpkZGlyO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTMyOS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzMwOlxcdHN0cnVjdCBuc2ltX3ZmX2NvbmZpZyAqdmZjb25maWdzO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zMzEtXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzUxLVxcdHN0cnVjdCBkZXZsaW5rX3JlZ2lvbiAqZHVtbXlfcmVnaW9uO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozNTI6XFx0c3RydWN0IG5zaW1fZGV2X2hlYWx0aCBoZWFsdGg7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjM1MzpcXHRzdHJ1Y3QgbnNpbV9kZXZfaHdzdGF0cyBod3N0YXRzO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zNTQtXFx0c3RydWN0IGZsb3dfYWN0aW9uX2Nvb2tpZSAqZmFfY29va2llO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM2OC1cXHR9IHVkcF9wb3J0cztcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzY5OlxcdHN0cnVjdCBuc2ltX2Rldl9wc2FtcGxlICpwc2FtcGxlO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zNzAtXFx0dTE2IGVzd19tb2RlO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM3Mi1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzczOnN0YXRpYyBpbmxpbmUgYm9vbCBuc2ltX2Vzd19tb2RlX2lzX2xlZ2FjeShzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2KVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zNzQte1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozNzU6XFx0cmV0dXJuIG5zaW1fZGV2LVxcdTAwM2Vlc3dfbW9kZSA9PSBERVZMSU5LX0VTV0lUQ0hfTU9ERV9MRUdBQ1k7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM3Ni19XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM3Ny1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mzc4OnN0YXRpYyBpbmxpbmUgYm9vbCBuc2ltX2Vzd19tb2RlX2lzX3N3aXRjaGRldihzdHJ1Y3QgbnNpbV9kZXYgKm5zaW1fZGV2KVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zNzkte1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozODA6XFx0cmV0dXJuIG5zaW1fZGV2LVxcdTAwM2Vlc3dfbW9kZSA9PSBERVZMSU5LX0VTV0lUQ0hfTU9ERV9TV0lUQ0hERVY7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM4MS19XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM4Mi1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzgzOnN0YXRpYyBpbmxpbmUgc3RydWN0IG5ldCAqbnNpbV9kZXZfbmV0KHN0cnVjdCBuc2ltX2RldiAqbnNpbV9kZXYpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM4NC17XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjM4NTpcXHRyZXR1cm4gZGV2bGlua19uZXQocHJpdl90b19kZXZsaW5rKG5zaW1fZGV2KSk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM4Ni19XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTM4Ny1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mzg4OmludCBuc2ltX2Rldl9pbml0KHZvaWQpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozODk6dm9pZCBuc2ltX2Rldl9leGl0KHZvaWQpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozOTA6aW50IG5zaW1fZHJ2X3Byb2JlKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2Rldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjM5MTp2b2lkIG5zaW1fZHJ2X3JlbW92ZShzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXYpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozOTI6aW50IG5zaW1fZHJ2X3BvcnRfYWRkKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldixcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6MzkzOlxcdFxcdCAgICAgIGVudW0gbnNpbV9kZXZfcG9ydF90eXBlIHR5cGUsIHVuc2lnbmVkIGludCBwb3J0X2luZGV4LFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC0zOTQtXFx0XFx0ICAgICAgdTggcGVybV9hZGRyW0VUSF9BTEVOXSk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjM5NTppbnQgbnNpbV9kcnZfcG9ydF9kZWwoc3RydWN0IG5zaW1fYnVzX2RldiAqbnNpbV9idXNfZGV2LFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDozOTY6XFx0XFx0ICAgICAgZW51bSBuc2ltX2Rldl9wb3J0X3R5cGUgdHlwZSxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzk3LVxcdFxcdCAgICAgIHVuc2lnbmVkIGludCBwb3J0X2luZGV4KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6Mzk4OmludCBuc2ltX2Rydl9jb25maWd1cmVfdmZzKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldixcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtMzk5LVxcdFxcdFxcdCAgIHVuc2lnbmVkIGludCBudW1fdmZzKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDAwLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MDE6dW5zaWduZWQgaW50IG5zaW1fZGV2X2dldF92ZnMoc3RydWN0IG5zaW1fZGV2ICpuc2ltX2Rldik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQwMi1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDAzOnN0cnVjdCBuc2ltX2ZpYl9kYXRhICpuc2ltX2ZpYl9jcmVhdGUoc3RydWN0IGRldmxpbmsgKmRldmxpbmssXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQwNC1cXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MDU6dm9pZCBuc2ltX2ZpYl9kZXN0cm95KHN0cnVjdCBkZXZsaW5rICpkZXZsaW5rLCBzdHJ1Y3QgbnNpbV9maWJfZGF0YSAqZmliX2RhdGEpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MDY6dTY0IG5zaW1fZmliX2dldF92YWwoc3RydWN0IG5zaW1fZmliX2RhdGEgKmZpYl9kYXRhLFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MDc6XFx0XFx0ICAgICBlbnVtIG5zaW1fcmVzb3VyY2VfaWQgcmVzX2lkLCBib29sIG1heCk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQwOC1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDA5OnN0YXRpYyBpbmxpbmUgYm9vbCBuc2ltX2Rldl9wb3J0X2lzX3BmKHN0cnVjdCBuc2ltX2Rldl9wb3J0ICpuc2ltX2Rldl9wb3J0KVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00MTAte1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MTE6XFx0cmV0dXJuIG5zaW1fZGV2X3BvcnQtXFx1MDAzZXBvcnRfdHlwZSA9PSBOU0lNX0RFVl9QT1JUX1RZUEVfUEY7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQxMi19XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQxMy1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDE0OnN0YXRpYyBpbmxpbmUgYm9vbCBuc2ltX2Rldl9wb3J0X2lzX3ZmKHN0cnVjdCBuc2ltX2Rldl9wb3J0ICpuc2ltX2Rldl9wb3J0KVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00MTUte1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MTY6XFx0cmV0dXJuIG5zaW1fZGV2X3BvcnQtXFx1MDAzZXBvcnRfdHlwZSA9PSBOU0lNX0RFVl9QT1JUX1RZUEVfVkY7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQxNy19XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQxOC0jaWYgSVNfRU5BQkxFRChDT05GSUdfWEZSTV9PRkZMT0FEKVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MTk6dm9pZCBuc2ltX2lwc2VjX2luaXQoc3RydWN0IG5ldGRldnNpbSAqbnMpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MjA6dm9pZCBuc2ltX2lwc2VjX3RlYXJkb3duKHN0cnVjdCBuZXRkZXZzaW0gKm5zKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDIxOmJvb2wgbnNpbV9pcHNlY190eChzdHJ1Y3QgbmV0ZGV2c2ltICpucywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQyMi0jZWxzZVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0MjM6c3RhdGljIGlubGluZSB2b2lkIG5zaW1faXBzZWNfaW5pdChzdHJ1Y3QgbmV0ZGV2c2ltICpucylcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00MjYtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQyNzpzdGF0aWMgaW5saW5lIHZvaWQgbnNpbV9pcHNlY190ZWFyZG93bihzdHJ1Y3QgbmV0ZGV2c2ltICpucylcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00MzAtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQzMTpzdGF0aWMgaW5saW5lIGJvb2wgbnNpbV9pcHNlY190eChzdHJ1Y3QgbmV0ZGV2c2ltICpucywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDMyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00MzctI2lmIElTX0VOQUJMRUQoQ09ORklHX01BQ1NFQylcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDM4OnZvaWQgbnNpbV9tYWNzZWNfaW5pdChzdHJ1Y3QgbmV0ZGV2c2ltICpucyk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQzOTp2b2lkIG5zaW1fbWFjc2VjX3RlYXJkb3duKHN0cnVjdCBuZXRkZXZzaW0gKm5zKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDQwLSNlbHNlXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQ0MTpzdGF0aWMgaW5saW5lIHZvaWQgbnNpbV9tYWNzZWNfaW5pdChzdHJ1Y3QgbmV0ZGV2c2ltICpucylcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDQyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00NDQtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQ0NTpzdGF0aWMgaW5saW5lIHZvaWQgbnNpbV9tYWNzZWNfdGVhcmRvd24oc3RydWN0IG5ldGRldnNpbSAqbnMpXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQ0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDUwLSNpZiBJU19FTkFCTEVEKENPTkZJR19JTkVUX1BTUClcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDUxOmludCBuc2ltX3BzcF9pbml0KHN0cnVjdCBuZXRkZXZzaW0gKm5zKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDUyOnZvaWQgbnNpbV9wc3BfdW5pbml0KHN0cnVjdCBuZXRkZXZzaW0gKm5zKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDUzOnZvaWQgbnNpbV9wc3BfaGFuZGxlX2V4dChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc2tiX2V4dCAqcHNwX2V4dCk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQ1NC1lbnVtIHNrYl9kcm9wX3JlYXNvblxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0NTU6bnNpbV9kb19wc3Aoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGRldnNpbSAqbnMsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQ1Ni1cXHQgICAgc3RydWN0IG5ldGRldnNpbSAqcGVlcl9ucywgc3RydWN0IHNrYl9leHQgKipwc3BfZXh0KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDU3LSNlbHNlXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQ1ODpzdGF0aWMgaW5saW5lIGludCBuc2ltX3BzcF9pbml0KHN0cnVjdCBuZXRkZXZzaW0gKm5zKSB7IHJldHVybiAwOyB9XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQ1OTpzdGF0aWMgaW5saW5lIHZvaWQgbnNpbV9wc3BfdW5pbml0KHN0cnVjdCBuZXRkZXZzaW0gKm5zKSB7fVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00NjAtc3RhdGljIGlubGluZSBlbnVtIHNrYl9kcm9wX3JlYXNvblxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0NjE6bnNpbV9kb19wc3Aoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGRldnNpbSAqbnMsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQ2Mi1cXHQgICAgc3RydWN0IG5ldGRldnNpbSAqcGVlcl9ucywgc3RydWN0IHNrYl9leHQgKipwc3BfZXh0KVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oPTQ2Nz1zdGF0aWMgaW5saW5lIHZvaWRcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDY4Om5zaW1fcHNwX2hhbmRsZV9leHQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNrYl9leHQgKnBzcF9leHQpIHt9XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQ2OS0jZW5kaWZcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDcwLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0NzE6aW50IG5zaW1fc2V0dXBfdGMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgZW51bSB0Y19zZXR1cF90eXBlIHR5cGUsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQ3Mi1cXHRcXHQgIHZvaWQgKnR5cGVfZGF0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmgtNDc0LSNkZWZpbmUgTlNJTV9CVVNfREVWX01BWF9WRlMgNFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaDo0NzU6c3RydWN0IG5zaW1fYnVzX2RldiB7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oLTQ3Ni1cXHRzdHJ1Y3QgZGV2aWNlIGRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXZzaW0uaC00ODYtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldnNpbS5oOjQ4NzppbnQgbnNpbV9idXNfaW5pdCh2b2lkKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2c2ltLmg6NDg4OnZvaWQgbnNpbV9idXNfZXhpdCh2b2lkKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDM6MTQ6MzguNzk0Nzc2MTgzWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE0OTA5MTQxNDcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIE5FVERFVlNJTSBDb25maWd1cmF0aW9uIGFuZCBTeW1ib2wgRm9jdXMqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEZpcnN0LCBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIEtjb25maWcgcmVxdWlyZW1lbnRzIGZvciBORVRERVZTSU0gYXJlIG1ldC4gSSd2ZSBjaGVja2VkIHRoZSBkZXBlbmRlbmNpZXM6IGBjb25maWcgTkVUREVWU0lNYCByZWxpZXMgb24gYERFQlVHX0ZTYCwgYElORVRgLCBlaXRoZXIgYFBTQU1QTEVgIG9yIGBQU0FNUExFPW5gLCBhbmQgZWl0aGVyIGBQVFBfMTU4OF9DTE9DS19NT0NLYCBvciBgUFRQXzE1ODhfQ0xPQ0tfTU9DSz1uYC4gSXQgKnNlbGVjdHMqIGBORVRfREVWTElOS2AsIGBQQUdFX1BPT0xgLCBhbmQgYE5FVF9TSEFQRVJgLiBTbywgdG8gYWN0dWFsbHkgYnVpbGQgdGhpcywgYE5FVERFVlNJTWAgaXRzZWxmIGlzIGVzc2VudGlhbCwgYW5kIEkgbXVzdCB2ZXJpZnkgYERFQlVHX0ZTYCBhbmQgYElORVRgIGFyZSBlbmFibGVkLlxuXG5OZXh0LCBJIGV4YW1pbmVkIHRoZSBcIkZvY3VzU3ltYm9sc1wiIOKAkyB0aGUgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMuIEkgaWRlbnRpZmllZCB0aGUgY3JpdGljYWwgZnVuY3Rpb25zOiBgbnNpbV9idXNfaW5pdGAsIGBuc2ltX2J1c19leGl0YCwgYG5zaW1fZHJ2X3Byb2JlYCwgYG5zaW1fZHJ2X3JlbW92ZWAsIGBuc2ltX2Rydl9wb3J0X2FkZGAsIGBuc2ltX2Rydl9wb3J0X2RlbGAsIGFuZCBgbnNpbV9kcnZfY29uZmlndXJlX3Zmc2AuIEkgYWxzbyBsb29rZWQgYXQgc3RhdGljIGZ1bmN0aW9ucyB3aXRoaW4gYGJ1cy5jYCDigJMgYG5zaW1fYnVzX2Rldl9uZXdgIGFuZCBgbmV3X2RldmljZV9zdG9yZWAg4oCTIHRvIHNlZSBpZiB0aGV5IGFyZSBzb21laG93IGV4cG9zZWQuIFRoZSBwcm9tcHQgaW5zdHJ1Y3Rpb24gdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIGVudHJ5cG9pbnRzIGlzIGtleSBoZXJlLlxuXG5BZnRlciBjcm9zcy1yZWZlcmVuY2luZyBmaWxlIGxvY2F0aW9ucywgSSBjb25maXJtZWQgdGhhdCBgbnNpbV9idXNfZGV2X25ld2AgYW5kIGBuZXdfZGV2aWNlX3N0b3JlYCBhcmUgaW5kZWVkIHN0YXRpYywgcmVzaWRpbmcgaW4gYGRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuY2AsIHdoZXJlYXMgYG5zaW1fZHJ2X3Byb2JlYCwgYG5zaW1fZHJ2X3JlbW92ZWAsIGBuc2ltX2Rydl9jb25maWd1cmVfdmZzYCwgYG5zaW1fZHJ2X3BvcnRfYWRkYCwgYW5kIGBuc2ltX2Rydl9wb3J0X2RlbGAgYXJlIG5vbi1zdGF0aWMgYW5kIGRlZmluZWQgaW4gYGRyaXZlcnMvbmV0L25ldGRldnNpbS9kZXYuY2AsIGNhbGxlZCBmcm9tIGBidXMuY2AuXG5cbkkndmUgcmUtY29uZmlybWVkIHRoZSBgRW5hYmxlQ29uZmlnc2A6IGBORVRERVZTSU1gLCBgREVCVUdfRlNgLCBhbmQgYElORVRgIGFyZSBhbGwgcmVxdWlyZWQuXG5cbk9rYXksIGxldCdzIHN5bnRoZXNpemUgbXkgZmluZGluZ3MuIEknbSBnb2luZyB0byBmbGFnIHRoaXMgYXMgZnV6emVkIGFuZCBjb25maXJtZWQ6XG5cbiogICBgV29ydGhGdXp6aW5nOiB0cnVlYFxuKiAgIGBFbmFibGVDb25maWdzOiBbXCJORVRERVZTSU1cIiwgXCJERUJVR19GU1wiLCBcIklORVRcIl1gXG4qICAgYEZvY3VzU3ltYm9sczogW1wibnNpbV9kcnZfcHJvYmVcIiwgXCJuc2ltX2Rydl9yZW1vdmVcIiwgXCJuc2ltX2Rydl9jb25maWd1cmVfdmZzXCIsIFwibnNpbV9idXNfaW5pdFwiLCBcIm5zaW1fYnVzX2V4aXRcIl0gKGFuZC9vciBcIm5zaW1fZHJ2X3BvcnRfYWRkXCIsIFwibnNpbV9kcnZfcG9ydF9kZWxcIilgXG5cbkkgdW5kZXJzdGFuZCB0aGUgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIHJlZmVyZW5jZSBjb3VudGluZyBvZiBgbnNpbV9idXNfZGV2c2AsIHNwZWNpZmljYWxseSBtb3ZpbmcgdGhlIGluY3JlbWVudCB0byBoYXBwZW4gYmVmb3JlIGBkZXZpY2VfcmVnaXN0ZXIoKWAuIFRoaXMgY2hhbmdlIGFsdGVycyBsaWZlY3ljbGUgYW5kIHRyYWNraW5nIG9mIG5ldGRldnNpbSBidXMgZGV2aWNlcywgd2hpY2ggYXJlIGNyaXRpY2FsIHRvIHRoZSBuZXRkZXZzaW0gZHJpdmVyIGRldmljZSBtYW5hZ2VtZW50LiBUaGF0J3MgZnV6emVyLXJlbGV2YW50LiBTbywgdGhpcyBhbmFseXNpcyBzZWVtcyBzb2xpZC4gSSdsbCBwcm9jZWVkIHdpdGggYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc3OTcsIk91dHB1dFRva2VucyI6MTcyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAzOjE0OjUzLjcwMzkyMTIyNVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyODA4ODU1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUREVWU0lNXCIsXG4gICAgXCJERUJVR19GU1wiLFxuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5zaW1fZHJ2X3Byb2JlXCIsXG4gICAgXCJuc2ltX2Rydl9yZW1vdmVcIixcbiAgICBcIm5zaW1fZHJ2X2NvbmZpZ3VyZV92ZnNcIixcbiAgICBcIm5zaW1fYnVzX2luaXRcIixcbiAgICBcIm5zaW1fYnVzX2V4aXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGp1c3RzIHRoZSBkZXZpY2UgcmVmZXJlbmNlIGNvdW50aW5nIGZvciBuZXRkZXZzaW0gYnVzIGRldmljZXMgYnkgbW92aW5nIHJlZmNvdW50X2luYyhcXHUwMDI2bnNpbV9idXNfZGV2cykgaW50byBuc2ltX2J1c19kZXZfbmV3KCkgYmVmb3JlIGRldmljZV9yZWdpc3RlcigpLCBmaXhpbmcgYSByZWZjb3VudCB1bmRlcmZsb3cgb24gZGV2aWNlIHJlZ2lzdHJhdGlvbiBmYWlsdXJlLiBOZXRkZXZzaW0gaXMgYSBzb2Z0d2FyZS1zaW11bGF0ZWQgbmV0d29yayBkZXZpY2UgZHJpdmVyIGZ1bGx5IHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUREVWU0lNXCIsXG4gICAgXCJERUJVR19GU1wiLFxuICAgIFwiSU5FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5zaW1fZHJ2X3Byb2JlXCIsXG4gICAgXCJuc2ltX2Rydl9yZW1vdmVcIixcbiAgICBcIm5zaW1fZHJ2X2NvbmZpZ3VyZV92ZnNcIixcbiAgICBcIm5zaW1fYnVzX2luaXRcIixcbiAgICBcIm5zaW1fYnVzX2V4aXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGp1c3RzIHRoZSBkZXZpY2UgcmVmZXJlbmNlIGNvdW50aW5nIGZvciBuZXRkZXZzaW0gYnVzIGRldmljZXMgYnkgbW92aW5nIHJlZmNvdW50X2luYyhcXHUwMDI2bnNpbV9idXNfZGV2cykgaW50byBuc2ltX2J1c19kZXZfbmV3KCkgYmVmb3JlIGRldmljZV9yZWdpc3RlcigpLCBmaXhpbmcgYSByZWZjb3VudCB1bmRlcmZsb3cgb24gZGV2aWNlIHJlZ2lzdHJhdGlvbiBmYWlsdXJlLiBOZXRkZXZzaW0gaXMgYSBzb2Z0d2FyZS1zaW11bGF0ZWQgbmV0d29yayBkZXZpY2UgZHJpdmVyIGZ1bGx5IHJlYWNoYWJsZSBhbmQgdGVzdGFibGUgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAzOjE0OjUzLjgzMjAxODY3M1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzU5MTE3MjExODQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwMzoxNDo1My44MzI3NDI2MjNaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjozNTkxMDk5MjQxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW92ZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBpbmNyZW1lbnQgYHJlZmNvdW50X2luYyhcXHUwMDI2bnNpbV9idXNfZGV2cylgIGZyb20gYG5ld19kZXZpY2Vfc3RvcmUoKWAgaW50byBgbnNpbV9idXNfZGV2X25ldygpYCBwcmlvciB0byBjYWxsaW5nIGBkZXZpY2VfcmVnaXN0ZXIoKWAuIFRoaXMgZml4ZXMgcmVmZXJlbmNlIGNvdW50aW5nIGJhbGFuY2UgaW4gZXJyb3IvcmVsZWFzZSBwYXRocy4gXFxuXFxuVGhlIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgYWx0ZXIgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZSB1c2FnZSwgYm91bmRzIGNoZWNrcywgb3Iga2VybmVsLXRvLXVzZXIgaW5mbyBsZWFrcy4gQW55IGxpZmVjeWNsZSBvciByZWZlcmVuY2UgY291bnRpbmcgZXJyb3JzIChlLmcuIHVzZS1hZnRlci1mcmVlLCByZWZjb3VudCB1bmRlcmZsb3cvb3ZlcmZsb3cpIGFyZSBjb3ZlcmVkIGJ5IHJlZmNvdW50X3QgY2hlY2tzIGFuZCBzdGFuZGFyZCBLQVNBTi9MT0NLREVQIGRldGVjdG9ycy4gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNzVlMjJjOWNmODZlOWI1ZWE1Mzc2YjM5ZTdiMDFhMTZjNjJhNDc5Y1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDEgMDM6MTQ6MDggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmNcbmluZGV4IDVjNTVjMzA4NDg3YjQuLjQyNmZiNDM4YjkyMjEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmNcbisrKyBiL2RyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuY1xuQEAgLTE5NCw3ICsxOTQsNiBAQCBuZXdfZGV2aWNlX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcbiBcdFx0Z290byBlcnI7XG4gXHR9XG4gXG4tXHRyZWZjb3VudF9pbmMoXHUwMDI2bnNpbV9idXNfZGV2cyk7XG4gXHQvKiBBbGxvdyB1c2luZyBuc2ltX2J1c19kZXYgKi9cbiBcdHNtcF9zdG9yZV9yZWxlYXNlKFx1MDAyNm5zaW1fYnVzX2Rldi1cdTAwM2Vpbml0LCB0cnVlKTtcbiBcbkBAIC00NjUsNiArNDY0LDcgQEAgbnNpbV9idXNfZGV2X25ldyh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBwb3J0X2NvdW50LCB1bnNpZ25lZCBpbnQgbnVtX3F1ZXVcbiBcdC8qIERpc2FsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqL1xuIFx0c21wX3N0b3JlX3JlbGVhc2UoXHUwMDI2bnNpbV9idXNfZGV2LVx1MDAzZWluaXQsIGZhbHNlKTtcbiBcbitcdHJlZmNvdW50X2luYyhcdTAwMjZuc2ltX2J1c19kZXZzKTtcbiBcdGVyciA9IGRldmljZV9yZWdpc3RlcihcdTAwMjZuc2ltX2J1c19kZXYtXHUwMDNlZGV2KTtcbiBcdGlmIChlcnIpXG4gXHRcdGdvdG8gZXJyX25zaW1fYnVzX2Rldl9pZF9mcmVlO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDM6MTQ6NTMuODMyNzQzOTYzWiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjc0ODIwNDI3MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3Mgd2hhdCBJJ20gdGhpbmtpbmcgYXMgSSBhcHByb2FjaCB0aGlzIHBhdGNoOlxuXG4qKkFuYWx5emluZyB0aGUgTmV0d29yayBEZXZpY2UgU2ltdWxhdG9yIFBhdGNoKipcblxuQWxyaWdodCwgdGhlIGZpcnN0IHRoaW5nIEkgbm90aWNlIGlzIHRoYXQgdGhlIHBhdGNoIGlzIHRhcmdldGluZyBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jYC4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0J3MgY2hhbmdpbmcgd2l0aGluIHRoYXQgZmlsZS4gQmVmb3JlIEkgZXZlbiBzdGFydCBkaXNzZWN0aW5nIHRoZSBkaWZmLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgKmNvbnRleHQqIG9mIHRob3NlIGNoYW5nZXMgd2l0aGluIGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmNgLiBJJ20gZ29pbmcgdG8gcHVsbCB1cCB0aGF0IGZpbGUgYW5kIGdldCBhIGZlZWwgZm9yIHRoZSBzdXJyb3VuZGluZyBjb2RlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gaWRlbnRpZnkgdGhlIG92ZXJhbGwgZnVuY3Rpb24gb2YgdGhpcyBcImJ1cy5jXCIgZmlsZSBhbmQgc2VlIHdoZXJlIHRoZSBjaGFuZ2VzIGFyZSBiZWluZyBtYWRlIHdpdGhpbiBpdHMgZXhpc3RpbmcgaW1wbGVtZW50YXRpb24uIFVuZGVyc3RhbmRpbmcgdGhlIHN1cnJvdW5kaW5nIGxvZ2ljIGlzIGdvaW5nIHRvIGJlIGtleSB0byBpbnRlcnByZXRpbmcgdGhlIGludGVudCBhbmQgaW1wYWN0IG9mIHRoaXMgcGF0Y2guIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjAyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwMzoxNTowMS4zMTQ3OTA2MzNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MTI0NTE5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5zaW1fYnVzX2RldnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz0yMT1zdGF0aWMgYm9vbCBuc2ltX2J1c19lbmFibGU7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjIyOnN0YXRpYyByZWZjb3VudF90IG5zaW1fYnVzX2RldnM7IC8qIEluY2x1ZGluZyB0aGUgYnVzIGl0c2VsZi4gKi9cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MjM6c3RhdGljIERFQ0xBUkVfQ09NUExFVElPTihuc2ltX2J1c19kZXZzX3JlbGVhc2VkKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMjQtXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM9MTQwPXN0YXRpYyB2b2lkIG5zaW1fYnVzX2Rldl9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xNDUtXFx0a2ZyZWUobnNpbV9idXNfZGV2KTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTQ2OlxcdGlmIChyZWZjb3VudF9kZWNfYW5kX3Rlc3QoXFx1MDAyNm5zaW1fYnVzX2RldnMpKVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxNDc6XFx0XFx0Y29tcGxldGUoXFx1MDAyNm5zaW1fYnVzX2RldnNfcmVsZWFzZWQpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xNDgtfVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jPTQ0Nj1uc2ltX2J1c19kZXZfbmV3KHVuc2lnbmVkIGludCBpZCwgdW5zaWduZWQgaW50IHBvcnRfY291bnQsIHVuc2lnbmVkIGludCBudW1fcXVldWVzKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQ2Ni1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NDY3OlxcdHJlZmNvdW50X2luYyhcXHUwMDI2bnNpbV9idXNfZGV2cyk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTQ2OC1cXHRlcnIgPSBkZXZpY2VfcmVnaXN0ZXIoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz00OTc9aW50IG5zaW1fYnVzX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy01MDYtXFx0XFx0Z290byBlcnJfYnVzX3VucmVnaXN0ZXI7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjUwNzpcXHRyZWZjb3VudF9zZXQoXFx1MDAyNm5zaW1fYnVzX2RldnMsIDEpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy01MDgtXFx0LyogQWxsb3cgdXNpbmcgcmVzb3VyY2VzICovXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM9NTE3PXZvaWQgbnNpbV9idXNfZXhpdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTUyMi1cXHRzbXBfc3RvcmVfcmVsZWFzZShcXHUwMDI2bnNpbV9idXNfZW5hYmxlLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jOjUyMzpcXHRpZiAocmVmY291bnRfZGVjX2FuZF90ZXN0KFxcdTAwMjZuc2ltX2J1c19kZXZzKSlcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NTI0OlxcdFxcdGNvbXBsZXRlKFxcdTAwMjZuc2ltX2J1c19kZXZzX3JlbGVhc2VkKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNTI1LVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTUzMi1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6NTMzOlxcdHdhaXRfZm9yX2NvbXBsZXRpb24oXFx1MDAyNm5zaW1fYnVzX2RldnNfcmVsZWFzZWQpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy01MzQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAzOjE1OjAxLjM3MzkyMDI2MloiLCJTZXEiOjI1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo2NDg5NTc4NDU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBjb25zaWRlcmluZyBJJ20gYW4gZXhwZXJ0OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBuZXRkZXZzaW0gQnVzIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0J3MgaGFwcGVuaW5nIHdpdGhpbiBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jYC4gSSdtIGdvaW5nIHRvIHplcm8gaW4gb24gbGluZXMgMTgwIHRocm91Z2ggMjIwIGFuZCB0aGVuIGp1bXAgYWhlYWQgdG8gNDQwIHRocm91Z2ggNDkwLiBObyBuZWVkIHRvIHJlYWQgdGhlIHdob2xlIGZpbGUg4oCTIEkgaGF2ZSBhIGdvb2QgZW5vdWdoIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHN1cnJvdW5kaW5nIGNvZGUgdGhhdCB0aG9zZSBzcGVjaWZpYyBzZWN0aW9ucyBzaG91bGQgcHJvdmlkZSB0aGUgY29udGV4dCBJIG5lZWQuIEknbSBleHBlY3RpbmcgdGhhdCB0aG9zZSBzZWN0aW9ucyB3aWxsIGxpa2VseSBkZWFsIHdpdGggZWl0aGVyIHRoZSBidXMgaW5pdGlhbGl6YXRpb24gYW5kIGRldmljZSByZWdpc3RyYXRpb24gb3IgcGVyaGFwcyB0aGUgYWN0dWFsIGRhdGEgdHJhbnNmZXIgbWVjaGFuaXNtcyBvbiB0aGUgc2ltdWxhdGVkIGJ1cy4gVGltZSB0byBnZXQgdGhlIGRldGFpbHMgSSBuZWVkIHRvIGZpbGwgaW4gdGhlIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxOTksIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwMzoxNTowNy44NjM1MDA0OThaIiwiU2VxIjoyNiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE4MCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE4MDpcXHRcXHRcXHRwcl9lcnIoXFxcIkZvcm1hdCBmb3IgYWRkaW5nIG5ldyBkZXZpY2UgaXMgXFxcXFxcXCJpZCBwb3J0X2NvdW50IG51bV9xdWV1ZXNcXFxcXFxcIiAodWludCB1aW50IHVpbnQpLlxcXFxuXFxcIik7XFxuIDE4MTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMTgyOlxcdFxcdH1cXG4gMTgzOlxcdFxcbiAxODQ6XFx0XFx0bXV0ZXhfbG9jayhcXHUwMDI2bnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XFxuIDE4NTpcXHRcXHQvKiBQcmV2ZW50IHRvIHVzZSByZXNvdXJjZSBiZWZvcmUgaW5pdGlhbGl6YXRpb24uICovXFxuIDE4NjpcXHRcXHRpZiAoIXNtcF9sb2FkX2FjcXVpcmUoXFx1MDAyNm5zaW1fYnVzX2VuYWJsZSkpIHtcXG4gMTg3OlxcdFxcdFxcdGVyciA9IC1FQlVTWTtcXG4gMTg4OlxcdFxcdFxcdGdvdG8gZXJyO1xcbiAxODk6XFx0XFx0fVxcbiAxOTA6XFx0XFxuIDE5MTpcXHRcXHRuc2ltX2J1c19kZXYgPSBuc2ltX2J1c19kZXZfbmV3KGlkLCBwb3J0X2NvdW50LCBudW1fcXVldWVzKTtcXG4gMTkyOlxcdFxcdGlmIChJU19FUlIobnNpbV9idXNfZGV2KSkge1xcbiAxOTM6XFx0XFx0XFx0ZXJyID0gUFRSX0VSUihuc2ltX2J1c19kZXYpO1xcbiAxOTQ6XFx0XFx0XFx0Z290byBlcnI7XFxuIDE5NTpcXHRcXHR9XFxuIDE5NjpcXHRcXG4gMTk3OlxcdFxcdC8qIEFsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqL1xcbiAxOTg6XFx0XFx0c21wX3N0b3JlX3JlbGVhc2UoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlaW5pdCwgdHJ1ZSk7XFxuIDE5OTpcXHRcXG4gMjAwOlxcdFxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlbGlzdCwgXFx1MDAyNm5zaW1fYnVzX2Rldl9saXN0KTtcXG4gMjAxOlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2bnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XFxuIDIwMjpcXHRcXG4gMjAzOlxcdFxcdHJldHVybiBjb3VudDtcXG4gMjA0OlxcdGVycjpcXG4gMjA1OlxcdFxcdG11dGV4X3VubG9jayhcXHUwMDI2bnNpbV9idXNfZGV2X2xpc3RfbG9jayk7XFxuIDIwNjpcXHRcXHRyZXR1cm4gZXJyO1xcbiAyMDc6XFx0fVxcbiAyMDg6XFx0c3RhdGljIEJVU19BVFRSX1dPKG5ld19kZXZpY2UpO1xcbiAyMDk6XFx0XFxuIDIxMDpcXHRzdGF0aWMgdm9pZCBuc2ltX2J1c19kZXZfZGVsKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2Rldik7XFxuIDIxMTpcXHRcXG4gMjEyOlxcdHN0YXRpYyBzc2l6ZV90XFxuIDIxMzpcXHRkZWxfZGV2aWNlX3N0b3JlKGNvbnN0IHN0cnVjdCBidXNfdHlwZSAqYnVzLCBjb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudClcXG4gMjE0OlxcdHtcXG4gMjE1OlxcdFxcdHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldiwgKnRtcDtcXG4gMjE2OlxcdFxcdHVuc2lnbmVkIGludCBpZDtcXG4gMjE3OlxcdFxcdGludCBlcnI7XFxuIDIxODpcXHRcXG4gMjE5OlxcdFxcdGVyciA9IHNzY2FuZihidWYsIFxcXCIldVxcXCIsIFxcdTAwMjZpZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAzOjE1OjA3Ljg2MzU3Nzk2OFoiLCJTZXEiOjI3LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMDU1NjQwNTMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2Ygd2hhdCBJJ2QgYmUgdGhpbmtpbmcsIHByZXNlbnRlZCBhcyBhIGZpcnN0LXBlcnNvbiBzdW1tYXJ5LCBhbmQgYXNzdW1pbmcgYSBoaWdoIGxldmVsIG9mIGV4cGVydGlzZSBpbiBuZXR3b3JraW5nIGFuZCBrZXJuZWwgaW50ZXJuYWxzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBOZXRkZXZzaW0gQnVzKipcblxuQWxyaWdodCwgdG8gdHJ1bHkgZ3Jhc3AgdGhlIGltcGxpY2F0aW9ucyBoZXJlLCBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiBob3cgdGhpcyBgbmV0ZGV2c2ltYCBidXMgb3BlcmF0ZXMuIEknbSBnb2luZyB0byBqdW1wIGludG8gdGhlIGhlYXJ0IG9mIHRoZSBtYXR0ZXIgYW5kIHNjcnV0aW5pemUgbGluZXMgNDQwIHRvIDQ5MCBvZiBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jYC4gSSBleHBlY3QgdGhvc2UgbGluZXMgdG8gZXhwb3NlIHRoZSBjb3JlIG1lY2hhbmljcywgdGhlIGNyaXRpY2FsIHBhdGgsIG9mIGRhdGEgZmxvdyBhbmQgZGV2aWNlIGludGVyYWN0aW9uIHdpdGhpbiB0aGlzIHNpbXVsYXRlZCBlbnZpcm9ubWVudC4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgc2VjdGlvbiBsaWtlbHkgZW5jb21wYXNzZXMgdGhlIG1vc3QgaW1wb3J0YW50IGxvZ2ljIGZvciByZXNvdXJjZSBhbGxvY2F0aW9uIGFuZCBpbml0aWFsaXphdGlvbiBvZiB0aGUgc2ltdWxhdGVkIGRldmljZXMsIG9yIHRoZSB2ZXJ5IGNvcmUgb2YgaG93IHRoZSBidXMgaGFuZGxlcyBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIHNpbXVsYXRlZCBuZXR3b3JrIGRldmljZXMuIEkgbmVlZCB0byBzZWUgaG93IHRoZSBzb2Z0d2FyZSBhYnN0cmFjdGlvbnMgbWFwIG9udG8gdGhlIHBoeXNpY2FsIHdvcmxkIHRoYXQgaXMgYmVpbmcgbW9kZWxsZWQgaGVyZS4gSSdtIGxvb2tpbmcgZm9yIHRoZSBnbHVlIHRoYXQgaG9sZHMgdGhlIHdob2xlIHNpbXVsYXRpb24gdG9nZXRoZXIuIEkgYWxzbyB3YW50IHRvIG9ic2VydmUgdGhlIGRhdGEgc3RydWN0dXJlcyB0aGF0IG1hbmFnZSB0aGUgc2ltdWxhdGVkIGRldmljZXM7IGhvdyBpcyB0aGVpciBzdGF0dXMgdHJhY2tlZD8gSG93IGFyZSB0aGUgaW50ZXJydXB0cyBhbmQgZXZlbnQgdHJpZ2dlcnMgZW11bGF0ZWQ/IEFyZSB0aGVyZSBhbnkgY2xldmVyIHRlY2huaXF1ZXMgZm9yIG1pbmltaXppbmcgb3ZlcmhlYWQgaW4gdGhpcyBzaW11bGF0aW9uPyBVbHRpbWF0ZWx5LCBJIHdhbnQgdG8gdW5kZXJzdGFuZCBob3cgaXQgY2FuIGFjaGlldmUgdGhlIGxldmVsIG9mIHJlYWxpc20gdGhhdCBsZXRzIGl0IGJlIHVzZWQgZm9yIG1lYW5pbmdmdWwgdGVzdGluZyBhbmQgZGV2ZWxvcG1lbnQgb2YgdGhlIHJlYWwgbmV0d29ya2luZyBzdGFjay5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA3OCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDM6MTU6MTAuOTE5MjIxNzM5WiIsIlNlcSI6MjgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDQwLFxuICBcIkxpbmVDb3VudFwiOiA1NVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDQwOlxcdFxcdC5wcm9iZVxcdFxcdD0gbnNpbV9idXNfcHJvYmUsXFxuIDQ0MTpcXHRcXHQucmVtb3ZlXFx0XFx0PSBuc2ltX2J1c19yZW1vdmUsXFxuIDQ0MjpcXHRcXHQubnVtX3ZmXFx0XFx0PSBuc2ltX251bV92ZixcXG4gNDQzOlxcdH07XFxuIDQ0NDpcXHRcXG4gNDQ1OlxcdHN0YXRpYyBzdHJ1Y3QgbnNpbV9idXNfZGV2ICpcXG4gNDQ2OlxcdG5zaW1fYnVzX2Rldl9uZXcodW5zaWduZWQgaW50IGlkLCB1bnNpZ25lZCBpbnQgcG9ydF9jb3VudCwgdW5zaWduZWQgaW50IG51bV9xdWV1ZXMpXFxuIDQ0NzpcXHR7XFxuIDQ0ODpcXHRcXHRzdHJ1Y3QgbnNpbV9idXNfZGV2ICpuc2ltX2J1c19kZXY7XFxuIDQ0OTpcXHRcXHRpbnQgZXJyO1xcbiA0NTA6XFx0XFxuIDQ1MTpcXHRcXHRuc2ltX2J1c19kZXYgPSBremFsbG9jX29iaigqbnNpbV9idXNfZGV2KTtcXG4gNDUyOlxcdFxcdGlmICghbnNpbV9idXNfZGV2KVxcbiA0NTM6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XFxuIDQ1NDpcXHRcXG4gNDU1OlxcdFxcdGVyciA9IGlkYV9hbGxvY19yYW5nZShcXHUwMDI2bnNpbV9idXNfZGV2X2lkcywgaWQsIGlkLCBHRlBfS0VSTkVMKTtcXG4gNDU2OlxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbiA0NTc6XFx0XFx0XFx0Z290byBlcnJfbnNpbV9idXNfZGV2X2ZyZWU7XFxuIDQ1ODpcXHRcXHRuc2ltX2J1c19kZXYtXFx1MDAzZWRldi5pZCA9IGVycjtcXG4gNDU5OlxcdFxcdG5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2LmJ1cyA9IFxcdTAwMjZuc2ltX2J1cztcXG4gNDYwOlxcdFxcdG5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2LnR5cGUgPSBcXHUwMDI2bnNpbV9idXNfZGV2X3R5cGU7XFxuIDQ2MTpcXHRcXHRuc2ltX2J1c19kZXYtXFx1MDAzZXBvcnRfY291bnQgPSBwb3J0X2NvdW50O1xcbiA0NjI6XFx0XFx0bnNpbV9idXNfZGV2LVxcdTAwM2VudW1fcXVldWVzID0gbnVtX3F1ZXVlcztcXG4gNDYzOlxcdFxcdG5zaW1fYnVzX2Rldi1cXHUwMDNlaW5pdGlhbF9uZXQgPSBjdXJyZW50LVxcdTAwM2Vuc3Byb3h5LVxcdTAwM2VuZXRfbnM7XFxuIDQ2NDpcXHRcXHQvKiBEaXNhbGxvdyB1c2luZyBuc2ltX2J1c19kZXYgKi9cXG4gNDY1OlxcdFxcdHNtcF9zdG9yZV9yZWxlYXNlKFxcdTAwMjZuc2ltX2J1c19kZXYtXFx1MDAzZWluaXQsIGZhbHNlKTtcXG4gNDY2OlxcdFxcbiA0Njc6XFx0XFx0cmVmY291bnRfaW5jKFxcdTAwMjZuc2ltX2J1c19kZXZzKTtcXG4gNDY4OlxcdFxcdGVyciA9IGRldmljZV9yZWdpc3RlcihcXHUwMDI2bnNpbV9idXNfZGV2LVxcdTAwM2VkZXYpO1xcbiA0Njk6XFx0XFx0aWYgKGVycilcXG4gNDcwOlxcdFxcdFxcdGdvdG8gZXJyX25zaW1fYnVzX2Rldl9pZF9mcmVlO1xcbiA0NzE6XFx0XFxuIDQ3MjpcXHRcXHRyZXR1cm4gbnNpbV9idXNfZGV2O1xcbiA0NzM6XFx0XFxuIDQ3NDpcXHRlcnJfbnNpbV9idXNfZGV2X2lkX2ZyZWU6XFxuIDQ3NTpcXHRcXHRpZGFfZnJlZShcXHUwMDI2bnNpbV9idXNfZGV2X2lkcywgbnNpbV9idXNfZGV2LVxcdTAwM2VkZXYuaWQpO1xcbiA0NzY6XFx0XFx0cHV0X2RldmljZShcXHUwMDI2bnNpbV9idXNfZGV2LVxcdTAwM2VkZXYpO1xcbiA0Nzc6XFx0XFx0bnNpbV9idXNfZGV2ID0gTlVMTDtcXG4gNDc4OlxcdGVycl9uc2ltX2J1c19kZXZfZnJlZTpcXG4gNDc5OlxcdFxcdGtmcmVlKG5zaW1fYnVzX2Rldik7XFxuIDQ4MDpcXHRcXHRyZXR1cm4gRVJSX1BUUihlcnIpO1xcbiA0ODE6XFx0fVxcbiA0ODI6XFx0XFxuIDQ4MzpcXHRzdGF0aWMgdm9pZCBuc2ltX2J1c19kZXZfZGVsKHN0cnVjdCBuc2ltX2J1c19kZXYgKm5zaW1fYnVzX2RldilcXG4gNDg0OlxcdHtcXG4gNDg1OlxcdFxcdC8qIERpc2FsbG93IHVzaW5nIG5zaW1fYnVzX2RldiAqL1xcbiA0ODY6XFx0XFx0c21wX3N0b3JlX3JlbGVhc2UoXFx1MDAyNm5zaW1fYnVzX2Rldi1cXHUwMDNlaW5pdCwgZmFsc2UpO1xcbiA0ODc6XFx0XFx0aWRhX2ZyZWUoXFx1MDAyNm5zaW1fYnVzX2Rldl9pZHMsIG5zaW1fYnVzX2Rldi1cXHUwMDNlZGV2LmlkKTtcXG4gNDg4OlxcdFxcdGRldmljZV91bnJlZ2lzdGVyKFxcdTAwMjZuc2ltX2J1c19kZXYtXFx1MDAzZWRldik7XFxuIDQ4OTpcXHR9XFxuIDQ5MDpcXHRcXG4gNDkxOlxcdHN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2RyaXZlciBuc2ltX2RyaXZlciA9IHtcXG4gNDkyOlxcdFxcdC5uYW1lXFx0XFx0PSBEUlZfTkFNRSxcXG4gNDkzOlxcdFxcdC5idXNcXHRcXHQ9IFxcdTAwMjZuc2ltX2J1cyxcXG4gNDk0OlxcdFxcdC5vd25lclxcdFxcdD0gVEhJU19NT0RVTEUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAzOjE1OjEwLjkxOTM3NTk1OVoiLCJTZXEiOjI5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4Mjk0MDQ2MTE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2gncyBJbXBhY3Qgb24gRGV2aWNlIFJlZ2lzdHJhdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNvcmUgY2hhbmdlIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaC4gSXQgc2VlbXMgdGhhdCB0aGUgYHJlZmNvdW50X2luYyhcdTAwMjZuc2ltX2J1c19kZXZzKWAgY2FsbCBoYXMgYmVlbiBzaGlmdGVkLiBTcGVjaWZpY2FsbHksIGl0IHdhcyBwcmV2aW91c2x5IGxvY2F0ZWQgaW4gYG5ld19kZXZpY2Vfc3RvcmVgLCAqYWZ0ZXIqIHRoZSBjYWxsIHRvIGBuc2ltX2J1c19kZXZfbmV3KClgLiBOb3csIGl0J3MgYmVlbiBtb3ZlZCAqaW50byogYG5zaW1fYnVzX2Rldl9uZXcoKWAsIGltbWVkaWF0ZWx5ICpiZWZvcmUqIHRoZSBjYWxsIHRvIGBkZXZpY2VfcmVnaXN0ZXIoXHUwMDI2bnNpbV9idXNfZGV2LVx1MDAzZWRldilgLlxuXG5UaGUgbG9naWMgYmVoaW5kIHRoaXMgaXMgbGlrZWx5IGRyaXZlbiBieSBlcnJvciBoYW5kbGluZyBkdXJpbmcgZGV2aWNlIHJlZ2lzdHJhdGlvbi4gSWYgYGRldmljZV9yZWdpc3RlcmAgd2l0aGluIGBuc2ltX2J1c19kZXZfbmV3KClgIGZhaWxzLCBpdCBjYWxscyBgcHV0X2RldmljZWAsIHdoaWNoIHRyaWdnZXJzIHRoZSBkZXZpY2UgcmVsZWFzZSBjYWxsYmFjaywgYG5zaW1fYnVzX2Rldl9yZWxlYXNlKClgLiBUaGlzIHJlbGVhc2UgZnVuY3Rpb24gaXMgY3JpdGljYWw7IGl0IGRlY3JlbWVudHMgdGhlIGBuc2ltX2J1c19kZXZzYCByZWZjb3VudC5cblxuVGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uIGNyZWF0ZWQgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS4gSWYgYG5zaW1fYnVzX2Rldl9uZXcoKWAgZmFpbGVkIGR1cmluZyB0aGUgYGRldmljZV9yZWdpc3RlcmAgY2FsbCwgYG5zaW1fYnVzX2Rldl9yZWxlYXNlKClgIHdvdWxkIGRlY3JlbWVudCB0aGUgcmVmY291bnQgKndpdGhvdXQqIGEgY29ycmVzcG9uZGluZyBpbmNyZW1lbnQuIFRoaXMgY291bGQgbGVhZCB0byBhIHJlZmNvdW50IHVuZGVyZmxvdywgcG90ZW50aWFsbHkgY2F1c2luZyBhbGwgc29ydHMgb2YgaGVhZGFjaGVzIGxhdGVyLiBUaGlzIGNvdWxkIGFsc28gb2NjdXIgaWYgYW5vdGhlciBjYWxsZXIsIGluIHBhcmFsbGVsLCB3YXMgY2FsbGluZyBgbnNpbV9idXNfZGV2X25ldygpYC5cblxuVGhlcmVmb3JlLCBtb3ZpbmcgdGhlIGluY3JlbWVudCBlbnN1cmVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG9ubHkgaW5jcmVhc2VkIHdoZW4gdGhlIGRldmljZSByZWdpc3RyYXRpb24gaXMgYWN0dWFsbHkgY29uc2lkZXJlZCBzdWNjZXNzZnVsLCBhcyBpbiwgdGhlIGRldmljZSBpcyBub3cgcmVnaXN0ZXJlZCBpbiB0aGUgc3lzdGVtLiBUaGUgbmV3IG9yZGVyIG9mIG9wZXJhdGlvbnMgaXMgZXNzZW50aWFsIGZvciBjb3JyZWN0bmVzcy4gVGhlIGRlY3JlbWVudCwgaW4gY2FzZSBvZiBhIHJlZ2lzdHJhdGlvbiBmYWlsdXJlLCB3aWxsIHN0aWxsIGZpbmQgYSBwb3NpdGl2ZSBudW1iZXIgdG8gd29yayB3aXRoLlxuXG5UbyBmdXJ0aGVyIGNvbmZpcm0gdGhpcywgbGV0J3MgcXVpY2tseSBjaGVjayB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBkaXJlY3QgY2FsbGVycyB0byBgbnNpbV9idXNfZGV2X25ldygpYC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTQwNSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAzOjE1OjE5LjIxMzQyNDg1NloiLCJTZXEiOjMwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUzNTM0MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnNpbV9idXNfZGV2X25ld1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz02NT1uZXdfcG9ydF9zdG9yZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTEwMC1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmM6MTAxOnN0YXRpYyBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSBuc2ltX2J1c19kZXZfbmV3X3BvcnRfYXR0ciA9IF9fQVRUUl9XTyhuZXdfcG9ydCk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTEwMi1cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz0xMjQ9c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKm5zaW1fYnVzX2Rldl9hdHRyc1tdID0ge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYy0xMjUtXFx0XFx1MDAyNm5zaW1fYnVzX2Rldl9udW12ZnNfYXR0ci5hdHRyLFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxMjY6XFx0XFx1MDAyNm5zaW1fYnVzX2Rldl9uZXdfcG9ydF9hdHRyLmF0dHIsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTEyNy1cXHRcXHUwMDI2bnNpbV9idXNfZGV2X2RlbF9wb3J0X2F0dHIuYXR0cixcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz0xNTU9c3RhdGljIHN0cnVjdCBuc2ltX2J1c19kZXYgKlxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxNTY6bnNpbV9idXNfZGV2X25ldyh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBwb3J0X2NvdW50LCB1bnNpZ25lZCBpbnQgbnVtX3F1ZXVlcyk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTE1Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz0xNTk9bmV3X2RldmljZV9zdG9yZShjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cywgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtMTkwLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzoxOTE6XFx0bnNpbV9idXNfZGV2ID0gbnNpbV9idXNfZGV2X25ldyhpZCwgcG9ydF9jb3VudCwgbnVtX3F1ZXVlcyk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2J1cy5jLTE5Mi1cXHRpZiAoSVNfRVJSKG5zaW1fYnVzX2RldikpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYz00NDU9c3RhdGljIHN0cnVjdCBuc2ltX2J1c19kZXYgKlxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9idXMuYzo0NDY6bnNpbV9idXNfZGV2X25ldyh1bnNpZ25lZCBpbnQgaWQsIHVuc2lnbmVkIGludCBwb3J0X2NvdW50LCB1bnNpZ25lZCBpbnQgbnVtX3F1ZXVlcylcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vYnVzLmMtNDQ3LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDM6MTU6MTkuMjc4NzgzMTA1WiIsIlNlcSI6MzEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwNDY0OTIwMDIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBuc2ltX2J1c19kZXZzIFJlZmNvdW50aW5nIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCByZWZjb3VudGluZyBmaXggZm9yIGBuc2ltX2J1c19kZXZzYCBpbiByZWxhdGlvbiB0byBgZGV2aWNlX3JlZ2lzdGVyYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHJpZ29yb3VzbHkgYXNzZXNzIGlmIHRoaXMgY2hhbmdlIGNvdWxkIGludHJvZHVjZSBvciBleHBvc2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzLiBMZXQncyBicmVhayBpdCBkb3duOlxuXG5GaXJzdCwgaXMgdGhlcmUgYW55IHBvc3NpYmlsaXR5IG9mIGtlcm5lbCBzdHJ1Y3R1cmVzLCB3aXRoIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgZmllbGRzIG9yIHBhZGRpbmcsIGJlaW5nIHNlbnQgdG8gdXNlciBzcGFjZT8gTm8sIG5vdCBoZXJlLiBTZWNvbmRseSwgYW0gSSBzZWVpbmcgYW55IGNvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IHJlbGllcyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcz8gTm9wZS4gTmV4dCwgYXJlIHdlIGFsbG9jYXRpbmcgb3IgaW5pdGlhbGl6aW5nIGFueSBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBjb3VsZCBiZSByZWFkPyBObywgdGhhdCdzIG5vdCB0aGUgY2FzZTsgYG5zaW1fYnVzX2RldmAgaXMgYWxsb2NhdGVkIHVzaW5nIGBremFsbG9jX29iamAsIHdoaWNoIGlzIHNhZmUuIEFuZCBmaW5hbGx5LCB3aGF0IGFib3V0IGJvdW5kcyBjaGVja3MsIG9yIGRlYWxpbmcgd2l0aCBsZW5ndGhzIGluIGEgd2F5IHRoYXQgY291bGQgY2F1c2UgcHJvYmxlbXM/IE5vLCBub3RoaW5nIG9mIGNvbmNlcm4gdGhlcmUuXG5cblRoZSBwYXRjaCBzaW1wbHkgbW92ZXMgYSBgcmVmY291bnRfaW5jKFx1MDAyNm5zaW1fYnVzX2RldnMpYCBmcm9tIGBuZXdfZGV2aWNlX3N0b3JlYCB0byBgbnNpbV9idXNfZGV2X25ld2AuIFRoaXMgaXMgc29sZWx5IGFib3V0IHJlZmVyZW5jZSBjb3VudGluZyBsaWZlY3ljbGUsIHN5bmNocm9uaXphdGlvbiwgYW5kIGF2b2lkaW5nIHBvdGVudGlhbCBpc3N1ZXMgbGlrZSBsZWFrcywgdXNlLWFmdGVyLWZyZWUsIG9yIHVuZGVyZmxvdy4gVGhlc2UgYXJlYXMgYXJlIGFscmVhZHkgd2VsbC1jb3ZlcmVkIGJ5IHN0YW5kYXJkIHJlZmNvdW50IGNoZWNrcyBhbmQgS0FTQU4uIEtNU0FOIGlzbid0IG5lZWRlZCBoZXJlLlxuXG5Ob3csIGxldCBtZSBkb3VibGUtY2hlY2sgYWxsIHRob3NlIGNyaXRlcmlhIHRvIGZvcm11bGF0ZSBhIHNvbGlkIEtNU0FOUmVhc29uaW5nOlxuXG4qICAgKipOZWVkc0tNU0FOOioqIGBmYWxzZWBcbiogICAqKlJlYXNvbmluZzoqKiBUaGUgcGF0Y2ggaXMganVzdCBtb3ZpbmcgYSByZWZlcmVuY2UgY291bnQgaW5jcmVtZW50IChgcmVmY291bnRfaW5jKFx1MDAyNm5zaW1fYnVzX2RldnMpYCkgZnJvbSBgbmV3X2RldmljZV9zdG9yZWAgaW50byBgbnNpbV9idXNfZGV2X25ld2AgcmlnaHQgYmVmb3JlIHRoZSBgZGV2aWNlX3JlZ2lzdGVyYCBjYWxsLiBJdCdzIGFsbCBhYm91dCByZWZlcmVuY2UgY291bnRpbmcgdG8gZW5zdXJlIGNvcnJlY3QgcGFpcmluZyB3aXRoIGRldmljZSByZWxlYXNlIGFuZCBjbGVhbnVwLlxuICAgICogICBJdCBkb2Vzbid0IGludHJvZHVjZSBhbnkgbmV3IG1lbW9yeSBhbGxvY2F0aW9ucywgYnVmZmVycywgb3IgYW55IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIHRoYXQgYXJlIHJlYWQuXG4gICAgKiAgIE5vIGRhdGEgaXMgYmVpbmcgbGVha2VkIHRvIHVzZXIgc3BhY2UgYmVjYXVzZSBpdCdzIHB1cmVseSBpbnRlcm5hbC5cbiAgICAqICAgQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhlIHJlZmNvdW50aW5nIGxvZ2ljLCB0aGUgbGlmZWN5Y2xlLCBvciBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW9zIGFyZSBhbHJlYWR5IGNvdmVyZWQgYnkgdGhlIHN0YW5kYXJkIGtlcm5lbCByZWZjb3VudCBhc3NlcnRpb25zIGFuZCBieSBLQVNBTi5cblxuQWxyaWdodCwgSSdtIGNvbmZpZGVudCBpbiB0aGF0IGFuYWx5c2lzLiBMZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3MzAsIk91dHB1dFRva2VucyI6MTY0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDAzOjE1OjI5Ljc0MzcwNjQzN1oiLCJTZXEiOjMyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2OTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW92ZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBpbmNyZW1lbnQgYHJlZmNvdW50X2luYyhcXHUwMDI2bnNpbV9idXNfZGV2cylgIGZyb20gYG5ld19kZXZpY2Vfc3RvcmUoKWAgaW50byBgbnNpbV9idXNfZGV2X25ldygpYCBwcmlvciB0byBjYWxsaW5nIGBkZXZpY2VfcmVnaXN0ZXIoKWAuIFRoaXMgZml4ZXMgcmVmZXJlbmNlIGNvdW50aW5nIGJhbGFuY2UgaW4gZXJyb3IvcmVsZWFzZSBwYXRocy4gXFxuXFxuVGhlIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgYWx0ZXIgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZSB1c2FnZSwgYm91bmRzIGNoZWNrcywgb3Iga2VybmVsLXRvLXVzZXIgaW5mbyBsZWFrcy4gQW55IGxpZmVjeWNsZSBvciByZWZlcmVuY2UgY291bnRpbmcgZXJyb3JzIChlLmcuIHVzZS1hZnRlci1mcmVlLCByZWZjb3VudCB1bmRlcmZsb3cvb3ZlcmZsb3cpIGFyZSBjb3ZlcmVkIGJ5IHJlZmNvdW50X3QgY2hlY2tzIGFuZCBzdGFuZGFyZCBLQVNBTi9MT0NLREVQIGRldGVjdG9ycy4gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW92ZXMgdGhlIHJlZmVyZW5jZSBjb3VudCBpbmNyZW1lbnQgYHJlZmNvdW50X2luYyhcXHUwMDI2bnNpbV9idXNfZGV2cylgIGZyb20gYG5ld19kZXZpY2Vfc3RvcmUoKWAgaW50byBgbnNpbV9idXNfZGV2X25ldygpYCBwcmlvciB0byBjYWxsaW5nIGBkZXZpY2VfcmVnaXN0ZXIoKWAuIFRoaXMgZml4ZXMgcmVmZXJlbmNlIGNvdW50aW5nIGJhbGFuY2UgaW4gZXJyb3IvcmVsZWFzZSBwYXRocy4gXFxuXFxuVGhlIGNoYW5nZSBkb2VzIG5vdCBpbnRyb2R1Y2Ugb3IgYWx0ZXIgYW55IG1lbW9yeSBhbGxvY2F0aW9ucywgdW5pbml0aWFsaXplZCB2YXJpYWJsZSB1c2FnZSwgYm91bmRzIGNoZWNrcywgb3Iga2VybmVsLXRvLXVzZXIgaW5mbyBsZWFrcy4gQW55IGxpZmVjeWNsZSBvciByZWZlcmVuY2UgY291bnRpbmcgZXJyb3JzIChlLmcuIHVzZS1hZnRlci1mcmVlLCByZWZjb3VudCB1bmRlcmZsb3cvb3ZlcmZsb3cpIGFyZSBjb3ZlcmVkIGJ5IHJlZmNvdW50X3QgY2hlY2tzIGFuZCBzdGFuZGFyZCBLQVNBTi9MT0NLREVQIGRldGVjdG9ycy4gS01TQU4gaXMgbm90IGFwcGxpY2FibGUuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowbh2vc[1] Phase: Succeeded StartedAt: 2026-09-01 03:15:57 +0000 UTC FinishedAt: 2026-09-01 03:15:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbh2vc[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-01 03:15:57 +0000 UTC FinishedAt: 2026-09-01 03:15:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbh2vc[2] Phase: Running StartedAt: 2026-09-01 03:15:57 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Running StartedAt: 2026-09-01 03:15:57 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-01 03:15:57 +0000 UTC FinishedAt: 2026-09-01 03:16:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-01 03:15:57 +0000 UTC FinishedAt: 2026-09-01 03:16:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbh2vc/series-workflowbh2vc-convert-artifact-3902286540/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-01 03:16:07 +0000 UTC FinishedAt: 2026-09-01 03:41:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-01 03:16:07 +0000 UTC FinishedAt: 2026-09-01 03:41:29 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*0eac1dc1-c18e-4bed-84ce-0448201681eb,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-workflowbh2vc/series-workflowbh2vc-convert-artifact-3902286540/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": "2fdf23e9-451d-44a5-9279-8c2ed7bccb1d", "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-workflowbh2vc/series-workflowbh2vc-build-action-3731237114/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-01 03:16:07 +0000 UTC FinishedAt: 2026-09-01 03:41:06 +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:*0eac1dc1-c18e-4bed-84ce-0448201681eb,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-workflowbh2vc/series-workflowbh2vc-convert-artifact-3902286540/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": "2fdf23e9-451d-44a5-9279-8c2ed7bccb1d", "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-workflowbh2vc/series-workflowbh2vc-build-action-3731237114/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-01 03:41:29 +0000 UTC FinishedAt: 2026-09-01 03:41:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-01 03:41:29 +0000 UTC FinishedAt: 2026-09-01 03:41:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-01 03:41:29 +0000 UTC FinishedAt: 2026-09-01 03:41:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-01 03:41:29 +0000 UTC FinishedAt: 2026-09-01 03:41:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowbh2vc/series-workflowbh2vc-convert-artifact-108354315/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-01 03:41:53 +0000 UTC FinishedAt: 2026-09-01 03:43:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-01 03:41:53 +0000 UTC FinishedAt: 2026-09-01 03:43:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2fdf23e9-451d-44a5-9279-8c2ed7bccb1d,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-workflowbh2vc/series-workflowbh2vc-build-action-3731237114/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-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-01 03:43:38 +0000 UTC FinishedAt: 2026-09-01 03:43:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-01 03:43:38 +0000 UTC FinishedAt: 2026-09-01 03:43:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-01 03:43:38 +0000 UTC FinishedAt: 2026-09-01 04:04:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-01 03:43:38 +0000 UTC FinishedAt: 2026-09-01 04:04:09 +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:*0eac1dc1-c18e-4bed-84ce-0448201681eb,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-workflowbh2vc/series-workflowbh2vc-convert-artifact-108354315/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": "829d6588-b28b-4eea-92aa-7394b1e42234", "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-workflowbh2vc/series-workflowbh2vc-build-action-2777676207/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-01 03:43:38 +0000 UTC FinishedAt: 2026-09-01 04:03:59 +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:*0eac1dc1-c18e-4bed-84ce-0448201681eb,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-workflowbh2vc/series-workflowbh2vc-convert-artifact-108354315/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": "829d6588-b28b-4eea-92aa-7394b1e42234", "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-workflowbh2vc/series-workflowbh2vc-build-action-2777676207/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-01 04:04:09 +0000 UTC FinishedAt: 2026-09-01 04:04:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-01 04:04:09 +0000 UTC FinishedAt: 2026-09-01 04:04:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-01 04:04:09 +0000 UTC FinishedAt: 2026-09-01 04:06:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-01 04:04:09 +0000 UTC FinishedAt: 2026-09-01 04:06:07 +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:*829d6588-b28b-4eea-92aa-7394b1e42234,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-workflowbh2vc/series-workflowbh2vc-build-action-2777676207/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-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Running StartedAt: 2026-09-01 04:06:17 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Running StartedAt: 2026-09-01 04:06:17 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +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":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"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:*2fdf23e9-451d-44a5-9279-8c2ed7bccb1d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*829d6588-b28b-4eea-92aa-7394b1e42234,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-workflowbh2vc/series-workflowbh2vc-build-action-3731237114/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-workflowbh2vc/series-workflowbh2vc-build-action-2777676207/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-01 04:06:17 +0000 UTC FinishedAt: 2026-09-01 04:06:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-01 04:06:17 +0000 UTC FinishedAt: 2026-09-01 04:06:22 +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":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"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-workflowbh2vc/series-workflowbh2vc-convert-artifact-1705189796/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-01 04:06:17 +0000 UTC FinishedAt: 2026-09-01 04:06:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-01 04:06:17 +0000 UTC FinishedAt: 2026-09-01 04:06:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-01 04:06:17 +0000 UTC FinishedAt: 2026-09-01 04:06:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Running StartedAt: 2026-09-01 04:06:27 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbh2vc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nsim_drv_probe","nsim_drv_remove","nsim_drv_configure_vfs","nsim_bus_init","nsim_bus_exit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7b120a771943ffc3cbce787daecdd23eccb0505f","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM","DEBUG_FS","INET"],"series_id":"a20673d7-e74a-4ac8-b54a-d9283b72ae63","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Running StartedAt: 2026-09-01 04:06:27 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*2fdf23e9-451d-44a5-9279-8c2ed7bccb1d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*829d6588-b28b-4eea-92aa-7394b1e42234,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-workflowbh2vc/series-workflowbh2vc-build-action-3731237114/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-workflowbh2vc/series-workflowbh2vc-build-action-2777676207/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-workflowbh2vc/series-workflowbh2vc-convert-artifact-1705189796/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil