Name: series-workflow6s25z Phase: Succeeded StartedAt: 2026-08-15 01:00:02 +0000 UTC FinishedAt: 2026-08-15 04:42:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6s25z[0] Phase: Succeeded StartedAt: 2026-08-15 01:00:02 +0000 UTC FinishedAt: 2026-08-15 01:02:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6s25z[0].run-triage Phase: Succeeded StartedAt: 2026-08-15 01:00:02 +0000 UTC FinishedAt: 2026-08-15 01:02:42 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3da8c3c8b8fa99505624b65ef590482f48e766b6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OF", "OF_MDIO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3da8c3c8b8fa99505624b65ef590482f48e766b6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OF", "OF_MDIO" ], "series_id": "af3f6257-d5e2-45f4-883e-15db2a6b7486" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "device_links_drop_sync_state_only", "__device_links_drop_sync_state_only", "of_link_to_phandle", "__of_mdiobus_register" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE1IDAxOjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09GJiMzNDssCiAgICAmIzM0O09GX01ESU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkmIzM0OywKICAgICYjMzQ7X19kZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkmIzM0OywKICAgICYjMzQ7b2ZfbGlua190b19waGFuZGxlJiMzNDssCiAgICAmIzM0O19fb2ZfbWRpb2J1c19yZWdpc3RlciYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGRldmljZSBsaW5rIG1hbmFnZW1lbnQgaW4gdGhlIGRyaXZlciBjb3JlIGFuZCBPRiBwcm9wZXJ0eSBwYXJzaW5nLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgRExfRkxBR19TWU5DX1NUQVRFX09OTFkgbGlua3MgYW5kIGV0aGVybmV0LXBoeS1wYWNrYWdlIG5vZGVzLiBUaGVzZSBjaGFuZ2VzIGludm9sdmUgbGlzdCBtYW5pcHVsYXRpb24sIGxvY2tpbmcsIGFuZCBkZXZpY2Ugbm9kZSB0cmF2ZXJzYWwuIFRoZXJlIGFyZSBubyBuZXcgYnVmZmVycyBhbGxvY2F0ZWQsIG5vIGRhdGEgY29waWVkIHRvIHVzZXJzcGFjZSwgYW5kIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQgb3IgbGVha2VkLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIGxvZ2ljYWwgZXJyb3JzLCB1c2UtYWZ0ZXItZnJlZXMsIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIGxvY2tpbmcgaXNzdWVzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLCBMT0NLREVQLCBhbmQgc3RhbmRhcmQga2VybmVsIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgZGV2aWNlIGxpbmsgbWFuYWdlbWVudCBhbmQgT0YgcHJvcGVydHkgcGFyc2luZywgc3BlY2lmaWNhbGx5IGFkZGluZyBhIG5ldyBmdW5jdGlvbiBgZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5YCBhbmQgaGFuZGxpbmcgYGV0aGVybmV0LXBoeS1wYWNrYWdlYCBub2RlcyBpbiBgb2ZfbGlua190b19waGFuZGxlYC4gVGhlc2UgYXJlIGNvcmUga2VybmVsIGNvbXBvbmVudHMgYW5kIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDE6MDE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyMzk1NDdiYzhmMDk3ZDVjYjgwMDZiNzUwYzUzNmQwY2Q0MzBkZmMyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMTUgMDE6MDE6NTcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9iYXNlL2NvcmUuYyBiL2RyaXZlcnMvYmFzZS9jb3JlLmNcbmluZGV4IDRkMDI2NjgyOTQ0ZjIuLjYyN2ZjZmEyNzRmMGUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jhc2UvY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jhc2UvY29yZS5jXG5AQCAtMTMwNSw2ICYjNDM7MTMwNSw1NyBAQCBzdGF0aWMgdm9pZCBkZXZpY2VfbGlua19kcm9wX21hbmFnZWQoc3RydWN0IGRldmljZV9saW5rICpsaW5rKVxuIFx0a3JlZl9wdXQoXHUwMDI2bGluay1cdTAwM2VrcmVmLCBfX2RldmljZV9saW5rX2RlbCk7XG4gfVxuIFxuJiM0MzsvKiBDYWxsZXIgbXVzdCBob2xkIHRoZSBkZXZpY2UgbGlua3Mgd3JpdGUgbG9jay4gKi9cbiYjNDM7c3RhdGljIHZvaWQgX19kZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkoc3RydWN0IGRldmljZSAqZGV2LFxuJiM0MztcdFx0XHRcdFx0XHRzdHJ1Y3QgbGlzdF9oZWFkICpzeW5jX2xpc3QpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZGV2aWNlX2xpbmsgKmxpbmssICpsbjtcbiYjNDM7XG4mIzQzO1x0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGxpbmssIGxuLCBcdTAwMjZkZXYtXHUwMDNlbGlua3Muc3VwcGxpZXJzLCBjX25vZGUpIHtcbiYjNDM7XHRcdHN0cnVjdCBkZXZpY2UgKnN1cHBsaWVyO1xuJiM0MztcbiYjNDM7XHRcdGlmICghZGV2aWNlX2xpbmtfdGVzdChsaW5rLCBETF9GTEFHX01BTkFHRUQpIHx8XG4mIzQzO1x0XHQgICAgIWRldmljZV9saW5rX3Rlc3QobGluaywgRExfRkxBR19TWU5DX1NUQVRFX09OTFkpKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XG4mIzQzO1x0XHQvKlxuJiM0MztcdFx0ICogRExfRkxBR19TWU5DX1NUQVRFX09OTFkgZXhjbHVkZXMgYWxsIG90aGVyIG1hbmFnZWQgbGluayBmbGFncyxcbiYjNDM7XHRcdCAqIHNvIGl0IGlzIHNhZmUgdG8gZHJvcCB0aGUgbWFuYWdlZCBsaW5rIGNvbXBsZXRlbHkuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdHN1cHBsaWVyID0gbGluay1cdTAwM2VzdXBwbGllcjtcbiYjNDM7XHRcdGRldmljZV9saW5rX2Ryb3BfbWFuYWdlZChsaW5rKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoZGVmZXJfc3luY19zdGF0ZV9jb3VudClcbiYjNDM7XHRcdFx0X19kZXZpY2VfbGlua3Nfc3VwcGxpZXJfZGVmZXJfc3luYyhzdXBwbGllcik7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdF9fZGV2aWNlX2xpbmtzX3F1ZXVlX3N5bmNfc3RhdGUoc3VwcGxpZXIsIHN5bmNfbGlzdCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5IC0gRHJvcCBtYW5hZ2VkIHN5bmMtc3RhdGUtb25seSBsaW5rc1xuJiM0MzsgKiBAZGV2OiBDb25zdW1lciBkZXZpY2Ugd2hvc2UgcHJveHkgbGlua3Mgc2hvdWxkIGJlIGRyb3BwZWRcbiYjNDM7ICpcbiYjNDM7ICogRnJhbWV3b3JrcyB3aGljaCBwb3B1bGF0ZSBjaGlsZCBkZXZpY2VzIGJlbG93IGEgZHJpdmVybGVzcyBkZXZpY2UgY2FuIGNhbGxcbiYjNDM7ICogdGhpcyBhZnRlciBhZGRpbmcgYWxsIG9mIHRoZSBjaGlsZHJlbi4gVGhlIGNoaWxkcmVuIHdpbGwgaGF2ZSBhY3F1aXJlZCB0aGVpclxuJiM0MzsgKiBvd24gbGlua3MgYnkgdGhlbiwgc28gdGhlIHRlbXBvcmFyeSBsaW5rcyB3aGljaCBvbmx5IHByZXZlbnQgc3VwcGxpZXJzIGZyb21cbiYjNDM7ICogcmVjZWl2aW5nIHN5bmNfc3RhdGUoKSBjYWxsYmFja3MgYXJlIG5vIGxvbmdlciBuZWVkZWQuXG4mIzQzOyAqXG4mIzQzOyAqIFJlLWV2YWx1YXRlIGVhY2ggYWZmZWN0ZWQgc3VwcGxpZXIgZm9yIGEgc3luY19zdGF0ZSgpIGNhbGxiYWNrIGFmdGVyIGl0c1xuJiM0MzsgKiBsaW5rIGlzIGRyb3BwZWQuXG4mIzQzOyAqL1xuJiM0Mzt2b2lkIGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4mIzQzO3tcbiYjNDM7XHRMSVNUX0hFQUQoc3luY19saXN0KTtcbiYjNDM7XG4mIzQzO1x0ZGV2aWNlX2xpbmtzX3dyaXRlX2xvY2soKTtcbiYjNDM7XHRfX2RldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seShkZXYsIFx1MDAyNnN5bmNfbGlzdCk7XG4mIzQzO1x0ZGV2aWNlX2xpbmtzX3dyaXRlX3VubG9jaygpO1xuJiM0MztcbiYjNDM7XHRkZXZpY2VfbGlua3NfZmx1c2hfc3luY19saXN0KFx1MDAyNnN5bmNfbGlzdCwgTlVMTCk7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KTtcbiYjNDM7XG4gc3RhdGljIHNzaXplX3Qgd2FpdGluZ19mb3Jfc3VwcGxpZXJfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG4gXHRcdFx0XHRcdCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbiBcdFx0XHRcdFx0IGNoYXIgKmJ1ZilcbkBAIC0xNDE4LDYgJiM0MzsxNDY5LDggQEAgdm9pZCBkZXZpY2VfbGlua3NfZHJpdmVyX2JvdW5kKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdGVsc2VcbiBcdFx0X19kZXZpY2VfbGlua3NfcXVldWVfc3luY19zdGF0ZShkZXYsIFx1MDAyNnN5bmNfbGlzdCk7XG4gXG4mIzQzO1x0X19kZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkoZGV2LCBcdTAwMjZzeW5jX2xpc3QpO1xuJiM0MztcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShsaW5rLCBsbiwgXHUwMDI2ZGV2LVx1MDAzZWxpbmtzLnN1cHBsaWVycywgY19ub2RlKSB7XG4gXHRcdHN0cnVjdCBkZXZpY2UgKnN1cHBsaWVyO1xuIFxuQEAgLTE0MjUsMTcgJiM0MzsxNDc4LDEwIEBAIHZvaWQgZGV2aWNlX2xpbmtzX2RyaXZlcl9ib3VuZChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdHN1cHBsaWVyID0gbGluay1cdTAwM2VzdXBwbGllcjtcbi1cdFx0aWYgKGRldmljZV9saW5rX3Rlc3QobGluaywgRExfRkxBR19TWU5DX1NUQVRFX09OTFkpKSB7XG4tXHRcdFx0Lypcbi1cdFx0XHQgKiBXaGVuIERMX0ZMQUdfU1lOQ19TVEFURV9PTkxZIGlzIHNldCwgaXQgbWVhbnMgbm9cbi1cdFx0XHQgKiBvdGhlciBETF9NQU5BR0VEX0xJTktfRkxBR1MgaGF2ZSBiZWVuIHNldC4gU28sIGl0JiMzOTtzXG4tXHRcdFx0ICogc2F2ZSB0byBkcm9wIHRoZSBtYW5hZ2VkIGxpbmsgY29tcGxldGVseS5cbi1cdFx0XHQgKi9cbi1cdFx0XHRkZXZpY2VfbGlua19kcm9wX21hbmFnZWQobGluayk7XG4tXHRcdH0gZWxzZSBpZiAoZGV2X2lzX2Jlc3RfZWZmb3J0KGRldikgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgZGV2aWNlX2xpbmtfdGVzdChsaW5rLCBETF9GTEFHX0lORkVSUkVEKSBcdTAwMjZcdTAwMjZcbi1cdFx0XHQgICBsaW5rLVx1MDAzZXN0YXR1cyAhPSBETF9TVEFURV9DT05TVU1FUl9QUk9CRSBcdTAwMjZcdTAwMjZcbi1cdFx0XHQgICAhZGV2X2Nhbl9tYXRjaChsaW5rLVx1MDAzZXN1cHBsaWVyKSkge1xuJiM0MztcdFx0aWYgKGRldl9pc19iZXN0X2VmZm9ydChkZXYpIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIGRldmljZV9saW5rX3Rlc3QobGluaywgRExfRkxBR19JTkZFUlJFRCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgbGluay1cdTAwM2VzdGF0dXMgIT0gRExfU1RBVEVfQ09OU1VNRVJfUFJPQkUgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgIWRldl9jYW5fbWF0Y2gobGluay1cdTAwM2VzdXBwbGllcikpIHtcbiBcdFx0XHQvKlxuIFx0XHRcdCAqIFdoZW4gZGV2X2lzX2Jlc3RfZWZmb3J0KCkgaXMgdHJ1ZSwgd2UgaWdub3JlIGRldmljZVxuIFx0XHRcdCAqIGxpbmtzIHRvIHN1cHBsaWVycyB0aGF0IGRvbiYjMzk7dCBoYXZlIGEgZHJpdmVyLiAgSWYgdGhlXG5AQCAtMTQ0OSwxMiAmIzQzOzE0OTUsNiBAQCB2b2lkIGRldmljZV9saW5rc19kcml2ZXJfYm91bmQoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0XHRcdFdSSVRFX09OQ0UobGluay1cdTAwM2VzdGF0dXMsIERMX1NUQVRFX0FDVElWRSk7XG4gXHRcdH1cbiBcbi1cdFx0Lypcbi1cdFx0ICogVGhpcyBuZWVkcyB0byBiZSBkb25lIGV2ZW4gZm9yIHRoZSBkZWxldGVkXG4tXHRcdCAqIERMX0ZMQUdfU1lOQ19TVEFURV9PTkxZIGRldmljZSBsaW5rIGluIGNhc2UgaXQgd2FzIHRoZSBsYXN0XG4tXHRcdCAqIGRldmljZSBsaW5rIHRoYXQgd2FzIHByZXZlbnRpbmcgdGhlIHN1cHBsaWVyIGZyb20gZ2V0dGluZyBhXG4tXHRcdCAqIHN5bmNfc3RhdGUoKSBjYWxsLlxuLVx0XHQgKi9cbiBcdFx0aWYgKGRlZmVyX3N5bmNfc3RhdGVfY291bnQpXG4gXHRcdFx0X19kZXZpY2VfbGlua3Nfc3VwcGxpZXJfZGVmZXJfc3luYyhzdXBwbGllcik7XG4gXHRcdGVsc2VcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYyBiL2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jXG5pbmRleCBiOGQyOThjMDRkM2ZmLi40OWY5YjQwNjJjZjVjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jXG5AQCAtMjI5LDcgJiM0MzsyMjksNyBAQCBpbnQgX19vZl9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLFxuIFx0XHRnb3RvIHVucmVnaXN0ZXI7XG4gXG4gXHRpZiAoIXNjYW5waHlzKVxuLVx0XHRyZXR1cm4gMDtcbiYjNDM7XHRcdGdvdG8gZG9uZTtcbiBcbiBcdC8qIGF1dG8gc2NhbiBmb3IgUEhZcyB3aXRoIGVtcHR5IHJlZyBwcm9wZXJ0eSAqL1xuIFx0Zm9yX2VhY2hfYXZhaWxhYmxlX2NoaWxkX29mX25vZGUobnAsIGNoaWxkKSB7XG5AQCAtMjYxLDYgJiM0MzsyNjEsOSBAQCBpbnQgX19vZl9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLFxuIFx0XHR9XG4gXHR9XG4gXG4mIzQzO2RvbmU6XG4mIzQzO1x0ZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KFx1MDAyNm1kaW8tXHUwMDNlZGV2KTtcbiYjNDM7XG4gXHRyZXR1cm4gMDtcbiBcbiBwdXRfdW5yZWdpc3RlcjpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL29mL3Byb3BlcnR5LmMgYi9kcml2ZXJzL29mL3Byb3BlcnR5LmNcbmluZGV4IDcyY2YxMjkwN2RlMDMuLmYyOWJhODE4ZWNiYzEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL29mL3Byb3BlcnR5LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvb2YvcHJvcGVydHkuY1xuQEAgLTEyNzIsNiAmIzQzOzEyNzIsMjAgQEAgc3RhdGljIHZvaWQgb2ZfbGlua190b19waGFuZGxlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqY29uX25wLFxuIFx0XHR0bXBfbnAgPSBvZl9nZXRfbmV4dF9wYXJlbnQodG1wX25wKTtcbiBcdH1cbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEFuIEV0aGVybmV0IFBIWSBwYWNrYWdlIG5vZGUgZGVzY3JpYmVzIHJlc291cmNlcyBzaGFyZWQgYnkgaXRzIG1lbWJlclxuJiM0MztcdCAqIFBIWXMsIGJ1dCBpcyBub3QgcG9wdWxhdGVkIGFzIGEgc3RydWN0IGRldmljZS4gTGluayBldmVyeSBlbmFibGVkXG4mIzQzO1x0ICogbWVtYmVyIFBIWSB0byB0aG9zZSBzdXBwbGllcnMgc28gZndfZGV2bGluayBjYW4gdXNlIHRoZSByZWFsIGNvbnN1bWVyXG4mIzQzO1x0ICogZGV2aWNlcyBpbnN0ZWFkIG9mIGxlYXZpbmcgYSBwcm94eSBsaW5rIG9uIHRoZSBNRElPIGJ1cyBpbmRlZmluaXRlbHkuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKG9mX25vZGVfbmFtZV9lcShjb25fbnAsIFwmIzM0O2V0aGVybmV0LXBoeS1wYWNrYWdlXCYjMzQ7KSkge1xuJiM0MztcdFx0Zm9yX2VhY2hfYXZhaWxhYmxlX2NoaWxkX29mX25vZGVfc2NvcGVkKGNvbl9ucCwgY2hpbGQpXG4mIzQzO1x0XHRcdGZ3bm9kZV9saW5rX2FkZChvZl9md25vZGVfaGFuZGxlKGNoaWxkKSxcbiYjNDM7XHRcdFx0XHRcdG9mX2Z3bm9kZV9oYW5kbGUoc3VwX25wKSwgZmxhZ3MpO1xuJiM0MztcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0Zndub2RlX2xpbmtfYWRkKG9mX2Z3bm9kZV9oYW5kbGUoY29uX25wKSwgb2ZfZndub2RlX2hhbmRsZShzdXBfbnApLCBmbGFncyk7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGV2aWNlLmggYi9pbmNsdWRlL2xpbnV4L2RldmljZS5oXG5pbmRleCBhZWU3OWZkNmIzMmI0Li44YWZiOWYyYjBkODI1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9kZXZpY2UuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9kZXZpY2UuaFxuQEAgLTEzODEsNiAmIzQzOzEzODEsNyBAQCBzdHJ1Y3QgZGV2aWNlX2xpbmsgKmRldmljZV9saW5rX2FkZChzdHJ1Y3QgZGV2aWNlICpjb25zdW1lcixcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgZGV2aWNlICpzdXBwbGllciwgdTMyIGZsYWdzKTtcbiB2b2lkIGRldmljZV9saW5rX2RlbChzdHJ1Y3QgZGV2aWNlX2xpbmsgKmxpbmspO1xuIHZvaWQgZGV2aWNlX2xpbmtfcmVtb3ZlKHZvaWQgKmNvbnN1bWVyLCBzdHJ1Y3QgZGV2aWNlICpzdXBwbGllcik7XG4mIzQzO3ZvaWQgZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KHN0cnVjdCBkZXZpY2UgKmRldik7XG4gdm9pZCBkZXZpY2VfbGlua3Nfc3VwcGxpZXJfc3luY19zdGF0ZV9wYXVzZSh2b2lkKTtcbiB2b2lkIGRldmljZV9saW5rc19zdXBwbGllcl9zeW5jX3N0YXRlX3Jlc3VtZSh2b2lkKTtcbiB2b2lkIGRldmljZV9saW5rX3dhaXRfcmVtb3ZhbCh2b2lkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMTowMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7T0YmIzM0OywKICAgICYjMzQ7T0ZfTURJTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seSYjMzQ7LAogICAgJiMzNDtfX2RldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seSYjMzQ7LAogICAgJiMzNDtvZl9saW5rX3RvX3BoYW5kbGUmIzM0OywKICAgICYjMzQ7X19vZl9tZGlvYnVzX3JlZ2lzdGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgZGV2aWNlIGxpbmsgbWFuYWdlbWVudCBhbmQgT0YgcHJvcGVydHkgcGFyc2luZywgc3BlY2lmaWNhbGx5IGFkZGluZyBhIG5ldyBmdW5jdGlvbiBgZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5YCBhbmQgaGFuZGxpbmcgYGV0aGVybmV0LXBoeS1wYWNrYWdlYCBub2RlcyBpbiBgb2ZfbGlua190b19waGFuZGxlYC4gVGhlc2UgYXJlIGNvcmUga2VybmVsIGNvbXBvbmVudHMgYW5kIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyMzk1NDdiYzhmMDk3ZDVjYjgwMDZiNzUwYzUzNmQwY2Q0MzBkZmMyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgMTUgMDE6MDE6NTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2UvY29yZS5jIGIvZHJpdmVycy9iYXNlL2NvcmUuYwppbmRleCA0ZDAyNjY4Mjk0NGYyLi42MjdmY2ZhMjc0ZjBlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jhc2UvY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmFzZS9jb3JlLmMKQEAgLTEzMDUsNiAmIzQzOzEzMDUsNTcgQEAgc3RhdGljIHZvaWQgZGV2aWNlX2xpbmtfZHJvcF9tYW5hZ2VkKHN0cnVjdCBkZXZpY2VfbGluayAqbGluaykKIAlrcmVmX3B1dCgmYW1wO2xpbmstJmd0O2tyZWYsIF9fZGV2aWNlX2xpbmtfZGVsKTsKIH0KIAomIzQzOy8qIENhbGxlciBtdXN0IGhvbGQgdGhlIGRldmljZSBsaW5rcyB3cml0ZSBsb2NrLiAqLwomIzQzO3N0YXRpYyB2b2lkIF9fZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KHN0cnVjdCBkZXZpY2UgKmRldiwKJiM0MzsJCQkJCQlzdHJ1Y3QgbGlzdF9oZWFkICpzeW5jX2xpc3QpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZGV2aWNlX2xpbmsgKmxpbmssICpsbjsKJiM0MzsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGxpbmssIGxuLCAmYW1wO2Rldi0mZ3Q7bGlua3Muc3VwcGxpZXJzLCBjX25vZGUpIHsKJiM0MzsJCXN0cnVjdCBkZXZpY2UgKnN1cHBsaWVyOwomIzQzOwomIzQzOwkJaWYgKCFkZXZpY2VfbGlua190ZXN0KGxpbmssIERMX0ZMQUdfTUFOQUdFRCkgfHwKJiM0MzsJCSAgICAhZGV2aWNlX2xpbmtfdGVzdChsaW5rLCBETF9GTEFHX1NZTkNfU1RBVEVfT05MWSkpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQkvKgomIzQzOwkJICogRExfRkxBR19TWU5DX1NUQVRFX09OTFkgZXhjbHVkZXMgYWxsIG90aGVyIG1hbmFnZWQgbGluayBmbGFncywKJiM0MzsJCSAqIHNvIGl0IGlzIHNhZmUgdG8gZHJvcCB0aGUgbWFuYWdlZCBsaW5rIGNvbXBsZXRlbHkuCiYjNDM7CQkgKi8KJiM0MzsJCXN1cHBsaWVyID0gbGluay0mZ3Q7c3VwcGxpZXI7CiYjNDM7CQlkZXZpY2VfbGlua19kcm9wX21hbmFnZWQobGluayk7CiYjNDM7CiYjNDM7CQlpZiAoZGVmZXJfc3luY19zdGF0ZV9jb3VudCkKJiM0MzsJCQlfX2RldmljZV9saW5rc19zdXBwbGllcl9kZWZlcl9zeW5jKHN1cHBsaWVyKTsKJiM0MzsJCWVsc2UKJiM0MzsJCQlfX2RldmljZV9saW5rc19xdWV1ZV9zeW5jX3N0YXRlKHN1cHBsaWVyLCBzeW5jX2xpc3QpOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzOy8qKgomIzQzOyAqIGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seSAtIERyb3AgbWFuYWdlZCBzeW5jLXN0YXRlLW9ubHkgbGlua3MKJiM0MzsgKiBAZGV2OiBDb25zdW1lciBkZXZpY2Ugd2hvc2UgcHJveHkgbGlua3Mgc2hvdWxkIGJlIGRyb3BwZWQKJiM0MzsgKgomIzQzOyAqIEZyYW1ld29ya3Mgd2hpY2ggcG9wdWxhdGUgY2hpbGQgZGV2aWNlcyBiZWxvdyBhIGRyaXZlcmxlc3MgZGV2aWNlIGNhbiBjYWxsCiYjNDM7ICogdGhpcyBhZnRlciBhZGRpbmcgYWxsIG9mIHRoZSBjaGlsZHJlbi4gVGhlIGNoaWxkcmVuIHdpbGwgaGF2ZSBhY3F1aXJlZCB0aGVpcgomIzQzOyAqIG93biBsaW5rcyBieSB0aGVuLCBzbyB0aGUgdGVtcG9yYXJ5IGxpbmtzIHdoaWNoIG9ubHkgcHJldmVudCBzdXBwbGllcnMgZnJvbQomIzQzOyAqIHJlY2VpdmluZyBzeW5jX3N0YXRlKCkgY2FsbGJhY2tzIGFyZSBubyBsb25nZXIgbmVlZGVkLgomIzQzOyAqCiYjNDM7ICogUmUtZXZhbHVhdGUgZWFjaCBhZmZlY3RlZCBzdXBwbGllciBmb3IgYSBzeW5jX3N0YXRlKCkgY2FsbGJhY2sgYWZ0ZXIgaXRzCiYjNDM7ICogbGluayBpcyBkcm9wcGVkLgomIzQzOyAqLwomIzQzO3ZvaWQgZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KHN0cnVjdCBkZXZpY2UgKmRldikKJiM0Mzt7CiYjNDM7CUxJU1RfSEVBRChzeW5jX2xpc3QpOwomIzQzOwomIzQzOwlkZXZpY2VfbGlua3Nfd3JpdGVfbG9jaygpOwomIzQzOwlfX2RldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seShkZXYsICZhbXA7c3luY19saXN0KTsKJiM0MzsJZGV2aWNlX2xpbmtzX3dyaXRlX3VubG9jaygpOwomIzQzOwomIzQzOwlkZXZpY2VfbGlua3NfZmx1c2hfc3luY19saXN0KCZhbXA7c3luY19saXN0LCBOVUxMKTsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KTsKJiM0MzsKIHN0YXRpYyBzc2l6ZV90IHdhaXRpbmdfZm9yX3N1cHBsaWVyX3Nob3coc3RydWN0IGRldmljZSAqZGV2LAogCQkJCQkgY29uc3Qgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCiAJCQkJCSBjaGFyICpidWYpCkBAIC0xNDE4LDYgJiM0MzsxNDY5LDggQEAgdm9pZCBkZXZpY2VfbGlua3NfZHJpdmVyX2JvdW5kKHN0cnVjdCBkZXZpY2UgKmRldikKIAllbHNlCiAJCV9fZGV2aWNlX2xpbmtzX3F1ZXVlX3N5bmNfc3RhdGUoZGV2LCAmYW1wO3N5bmNfbGlzdCk7CiAKJiM0MzsJX19kZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkoZGV2LCAmYW1wO3N5bmNfbGlzdCk7CiYjNDM7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGxpbmssIGxuLCAmYW1wO2Rldi0mZ3Q7bGlua3Muc3VwcGxpZXJzLCBjX25vZGUpIHsKIAkJc3RydWN0IGRldmljZSAqc3VwcGxpZXI7CiAKQEAgLTE0MjUsMTcgJiM0MzsxNDc4LDEwIEBAIHZvaWQgZGV2aWNlX2xpbmtzX2RyaXZlcl9ib3VuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJCQljb250aW51ZTsKIAogCQlzdXBwbGllciA9IGxpbmstJmd0O3N1cHBsaWVyOwotCQlpZiAoZGV2aWNlX2xpbmtfdGVzdChsaW5rLCBETF9GTEFHX1NZTkNfU1RBVEVfT05MWSkpIHsKLQkJCS8qCi0JCQkgKiBXaGVuIERMX0ZMQUdfU1lOQ19TVEFURV9PTkxZIGlzIHNldCwgaXQgbWVhbnMgbm8KLQkJCSAqIG90aGVyIERMX01BTkFHRURfTElOS19GTEFHUyBoYXZlIGJlZW4gc2V0LiBTbywgaXQmIzM5O3MKLQkJCSAqIHNhdmUgdG8gZHJvcCB0aGUgbWFuYWdlZCBsaW5rIGNvbXBsZXRlbHkuCi0JCQkgKi8KLQkJCWRldmljZV9saW5rX2Ryb3BfbWFuYWdlZChsaW5rKTsKLQkJfSBlbHNlIGlmIChkZXZfaXNfYmVzdF9lZmZvcnQoZGV2KSAmYW1wOyZhbXA7Ci0JCQkgICBkZXZpY2VfbGlua190ZXN0KGxpbmssIERMX0ZMQUdfSU5GRVJSRUQpICZhbXA7JmFtcDsKLQkJCSAgIGxpbmstJmd0O3N0YXR1cyAhPSBETF9TVEFURV9DT05TVU1FUl9QUk9CRSAmYW1wOyZhbXA7Ci0JCQkgICAhZGV2X2Nhbl9tYXRjaChsaW5rLSZndDtzdXBwbGllcikpIHsKJiM0MzsJCWlmIChkZXZfaXNfYmVzdF9lZmZvcnQoZGV2KSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgZGV2aWNlX2xpbmtfdGVzdChsaW5rLCBETF9GTEFHX0lORkVSUkVEKSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgbGluay0mZ3Q7c3RhdHVzICE9IERMX1NUQVRFX0NPTlNVTUVSX1BST0JFICZhbXA7JmFtcDsKJiM0MzsJCSAgICAhZGV2X2Nhbl9tYXRjaChsaW5rLSZndDtzdXBwbGllcikpIHsKIAkJCS8qCiAJCQkgKiBXaGVuIGRldl9pc19iZXN0X2VmZm9ydCgpIGlzIHRydWUsIHdlIGlnbm9yZSBkZXZpY2UKIAkJCSAqIGxpbmtzIHRvIHN1cHBsaWVycyB0aGF0IGRvbiYjMzk7dCBoYXZlIGEgZHJpdmVyLiAgSWYgdGhlCkBAIC0xNDQ5LDEyICYjNDM7MTQ5NSw2IEBAIHZvaWQgZGV2aWNlX2xpbmtzX2RyaXZlcl9ib3VuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJCQlXUklURV9PTkNFKGxpbmstJmd0O3N0YXR1cywgRExfU1RBVEVfQUNUSVZFKTsKIAkJfQogCi0JCS8qCi0JCSAqIFRoaXMgbmVlZHMgdG8gYmUgZG9uZSBldmVuIGZvciB0aGUgZGVsZXRlZAotCQkgKiBETF9GTEFHX1NZTkNfU1RBVEVfT05MWSBkZXZpY2UgbGluayBpbiBjYXNlIGl0IHdhcyB0aGUgbGFzdAotCQkgKiBkZXZpY2UgbGluayB0aGF0IHdhcyBwcmV2ZW50aW5nIHRoZSBzdXBwbGllciBmcm9tIGdldHRpbmcgYQotCQkgKiBzeW5jX3N0YXRlKCkgY2FsbC4KLQkJICovCiAJCWlmIChkZWZlcl9zeW5jX3N0YXRlX2NvdW50KQogCQkJX19kZXZpY2VfbGlua3Nfc3VwcGxpZXJfZGVmZXJfc3luYyhzdXBwbGllcik7CiAJCWVsc2UKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jIGIvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMKaW5kZXggYjhkMjk4YzA0ZDNmZi4uNDlmOWI0MDYyY2Y1YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMKQEAgLTIyOSw3ICYjNDM7MjI5LDcgQEAgaW50IF9fb2ZfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGRldmljZV9ub2RlICpucCwKIAkJZ290byB1bnJlZ2lzdGVyOwogCiAJaWYgKCFzY2FucGh5cykKLQkJcmV0dXJuIDA7CiYjNDM7CQlnb3RvIGRvbmU7CiAKIAkvKiBhdXRvIHNjYW4gZm9yIFBIWXMgd2l0aCBlbXB0eSByZWcgcHJvcGVydHkgKi8KIAlmb3JfZWFjaF9hdmFpbGFibGVfY2hpbGRfb2Zfbm9kZShucCwgY2hpbGQpIHsKQEAgLTI2MSw2ICYjNDM7MjYxLDkgQEAgaW50IF9fb2ZfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGRldmljZV9ub2RlICpucCwKIAkJfQogCX0KIAomIzQzO2RvbmU6CiYjNDM7CWRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seSgmYW1wO21kaW8tJmd0O2Rldik7CiYjNDM7CiAJcmV0dXJuIDA7CiAKIHB1dF91bnJlZ2lzdGVyOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9vZi9wcm9wZXJ0eS5jIGIvZHJpdmVycy9vZi9wcm9wZXJ0eS5jCmluZGV4IDcyY2YxMjkwN2RlMDMuLmYyOWJhODE4ZWNiYzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvb2YvcHJvcGVydHkuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL29mL3Byb3BlcnR5LmMKQEAgLTEyNzIsNiAmIzQzOzEyNzIsMjAgQEAgc3RhdGljIHZvaWQgb2ZfbGlua190b19waGFuZGxlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqY29uX25wLAogCQl0bXBfbnAgPSBvZl9nZXRfbmV4dF9wYXJlbnQodG1wX25wKTsKIAl9CiAKJiM0MzsJLyoKJiM0MzsJICogQW4gRXRoZXJuZXQgUEhZIHBhY2thZ2Ugbm9kZSBkZXNjcmliZXMgcmVzb3VyY2VzIHNoYXJlZCBieSBpdHMgbWVtYmVyCiYjNDM7CSAqIFBIWXMsIGJ1dCBpcyBub3QgcG9wdWxhdGVkIGFzIGEgc3RydWN0IGRldmljZS4gTGluayBldmVyeSBlbmFibGVkCiYjNDM7CSAqIG1lbWJlciBQSFkgdG8gdGhvc2Ugc3VwcGxpZXJzIHNvIGZ3X2RldmxpbmsgY2FuIHVzZSB0aGUgcmVhbCBjb25zdW1lcgomIzQzOwkgKiBkZXZpY2VzIGluc3RlYWQgb2YgbGVhdmluZyBhIHByb3h5IGxpbmsgb24gdGhlIE1ESU8gYnVzIGluZGVmaW5pdGVseS4KJiM0MzsJICovCiYjNDM7CWlmIChvZl9ub2RlX25hbWVfZXEoY29uX25wLCAmIzM0O2V0aGVybmV0LXBoeS1wYWNrYWdlJiMzNDspKSB7CiYjNDM7CQlmb3JfZWFjaF9hdmFpbGFibGVfY2hpbGRfb2Zfbm9kZV9zY29wZWQoY29uX25wLCBjaGlsZCkKJiM0MzsJCQlmd25vZGVfbGlua19hZGQob2ZfZndub2RlX2hhbmRsZShjaGlsZCksCiYjNDM7CQkJCQlvZl9md25vZGVfaGFuZGxlKHN1cF9ucCksIGZsYWdzKTsKJiM0MzsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwogCWZ3bm9kZV9saW5rX2FkZChvZl9md25vZGVfaGFuZGxlKGNvbl9ucCksIG9mX2Z3bm9kZV9oYW5kbGUoc3VwX25wKSwgZmxhZ3MpOwogfQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RldmljZS5oIGIvaW5jbHVkZS9saW51eC9kZXZpY2UuaAppbmRleCBhZWU3OWZkNmIzMmI0Li44YWZiOWYyYjBkODI1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2RldmljZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZGV2aWNlLmgKQEAgLTEzODEsNiAmIzQzOzEzODEsNyBAQCBzdHJ1Y3QgZGV2aWNlX2xpbmsgKmRldmljZV9saW5rX2FkZChzdHJ1Y3QgZGV2aWNlICpjb25zdW1lciwKIAkJCQkgICAgc3RydWN0IGRldmljZSAqc3VwcGxpZXIsIHUzMiBmbGFncyk7CiB2b2lkIGRldmljZV9saW5rX2RlbChzdHJ1Y3QgZGV2aWNlX2xpbmsgKmxpbmspOwogdm9pZCBkZXZpY2VfbGlua19yZW1vdmUodm9pZCAqY29uc3VtZXIsIHN0cnVjdCBkZXZpY2UgKnN1cHBsaWVyKTsKJiM0Mzt2b2lkIGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seShzdHJ1Y3QgZGV2aWNlICpkZXYpOwogdm9pZCBkZXZpY2VfbGlua3Nfc3VwcGxpZXJfc3luY19zdGF0ZV9wYXVzZSh2b2lkKTsKIHZvaWQgZGV2aWNlX2xpbmtzX3N1cHBsaWVyX3N5bmNfc3RhdGVfcmVzdW1lKHZvaWQpOwogdm9pZCBkZXZpY2VfbGlua193YWl0X3JlbW92YWwodm9pZCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAxOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5ODgKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA0NjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgQXNzZXNzbWVudDogRGV2aWNlIExpbmsgYW5kIE9GIFByb3BlcnR5IEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyBtYWtpbmcgc29tZSBtb2RpZmljYXRpb25zIHJlbGF0ZWQgdG8gZGV2aWNlIGxpbmtzIGFuZCB0aGUgT3BlbiBGaXJtd2FyZSAoT0YpIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IHRvdWNoaW5nIG9uIGBkcml2ZXJzL2Jhc2UvY29yZS5jYCwgYGRyaXZlcnMvb2YvcHJvcGVydHkuY2AsIGFuZCBgZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmNgLiBUaGlzIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdCBiZWNhdXNlIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGNvcmUga2VybmVsIGNvbXBvbmVudHMgaGVyZSDigJMgdGhlIGRldmljZSBsaW5rIG1hbmFnZW1lbnQgYW5kIE9GIHBhcnNpbmcgY29kZSBhcmUgY3JpdGljYWwuIEFueSBpbnN0YWJpbGl0eSBpbiB0aGVzZSBhcmVhcyBjb3VsZCBoYXZlIHdpZGUtcmVhY2hpbmcgaW1wbGljYXRpb25zLgoKTGV0JiMzOTtzIGRpdmUgaW4uIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBkZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHlgIGFuZCBjYWxscyBpdCBmcm9tIGBfX29mX21kaW9idXNfcmVnaXN0ZXJgIHdpdGhpbiB0aGUgTURJTyBkcml2ZXIuIEl0IGFsc28gaW50cm9kdWNlcyBhIHNwZWNpYWwgY2FzZSBpbiBgb2ZfbGlua190b19waGFuZGxlYCBmb3IgYGV0aGVybmV0LXBoeS1wYWNrYWdlYCBub2Rlcy4gVGhlIHF1ZXN0aW9uIGlzLCBhcmUgdGhlc2UgY2hhbmdlcyByZWFjaGFibGUgYW5kIHdvcnRoIHRhcmdldGluZyB3aXRoIGZ1enppbmc/CgpGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5YCBpcyBhY3R1YWxseSBleHBvcnRlZCBhbmQgdXNlZC4gWWVwLCBpdCBpcyBleHBvcnRlZCBhbmQgdXNlZCBpbiBgX19vZl9tZGlvYnVzX3JlZ2lzdGVyYCwgc28gdGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5leHQsIEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgYG9mX2xpbmtfdG9fcGhhbmRsZWAgaXMgcmVhY2hhYmxlLiBZZXAsIGl0IGdldHMgY2FsbGVkIGR1cmluZyBPRiBkZXZpY2UgbGluayBjcmVhdGlvbi4KCkdpdmVuIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9uIGRldmljZSBsaW5rcywgT0YgcHJvcGVydHkgcGFyc2luZywgYW5kIHRoZSBjb3JlIG5hdHVyZSBvZiB0aGUgaW52b2x2ZWQgY29kZSwgdGhpcyAqZGVmaW5pdGVseSogc2VlbXMgbGlrZSBhIHdvcnRod2hpbGUgZnV6emluZyB0YXJnZXQuIFRoZSBrZXkgc3ltYm9scyB0byBmb2N1cyBvbiBhcmUgYGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seWAsIGBfX2RldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seWAsIGBvZl9saW5rX3RvX3BoYW5kbGVgLCBhbmQgYF9fb2ZfbWRpb2J1c19yZWdpc3RlcmAuCgpOb3csIGxldCYjMzk7cyBzZWUgd2hhdCBjb25maWdzIGFyZSByZXF1aXJlZCB0byBlbmFibGUgdGhpcyBmdW5jdGlvbmFsaXR5LiBXZSYjMzk7bGwgbmVlZCBgQ09ORklHX09GYCBmb3IgYm90aCBgZHJpdmVycy9vZi9wcm9wZXJ0eS5jYCBhbmQgYGRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jYC4gV2UmIzM5O2xsIGFsc28gbmVlZCBgQ09ORklHX09GX01ESU9gIHNwZWNpZmljYWxseSBmb3IgdGhlIE1ESU8gZHJpdmVyLiBXZSBtaWdodCBhbHNvIG5lZWQgZWl0aGVyIGBDT05GSUdfTURJT19ERVZJQ0VgIG9yIGBDT05GSUdfUEhZTElCYC4gRmluYWxseSwgbGV0IG1lIGp1c3QgY29uZmlybSB0aGUgbG9jYXRpb24gb2YgYF9fb2ZfbWRpb2J1c19yZWdpc3RlcmAgaW4gYGRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX29mX21kaW9idXNfcmVnaXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz0xMzk9c3RhdGljIGludCBfX29mX21kaW9idXNfcGFyc2VfcGh5cyhzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGRldmljZV9ub2RlICpucCxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0xODYtLyoqXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzoxODc6ICogX19vZl9tZGlvYnVzX3JlZ2lzdGVyIC0gUmVnaXN0ZXIgbWlpX2J1cyBhbmQgY3JlYXRlIFBIWXMgZnJvbSB0aGUgZGV2aWNlIHRyZWVcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTE4OC0gKiBAbWRpbzogcG9pbnRlciB0byBtaWlfYnVzIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTE5NC0gKi9cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjE5NTppbnQgX19vZl9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMTk2LVx0XHRcdCAgc3RydWN0IG1vZHVsZSAqb3duZXIpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMjc0LX1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjI3NTpFWFBPUlRfU1lNQk9MKF9fb2ZfbWRpb2J1c19yZWdpc3Rlcik7XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0yNzYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDE6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMyNgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqS2NvbmZpZyBDaGVjayoqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY29uZmlndXJhdGlvbnMgYXJlIHJlbGV2YW50IHRvIHRoZSBgZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmNgIGZpbGUuIFRoaXMgc3BlY2lmaWMgZmlsZSBkZWFscyB3aXRoIE1ESU8gKE1hbmFnZW1lbnQgRGF0YSBJbnB1dC9PdXRwdXQpIGludGVyZmFjZXMgYWNjZXNzZWQgdmlhIGRldmljZSB0cmVlIGJpbmRpbmdzLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBkZXBlbmRlbmNpZXMgb3Igb3B0aW9ucyB0aGF0IGRpcmVjdGx5IGVuYWJsZSBvciBkaXNhYmxlIHN1cHBvcnQgZm9yIHRoaXMgc3BlY2lmaWMgZHJpdmVyLiBJdCYjMzk7cyBsaWtlbHkgdGhhdCB0aGVyZSYjMzk7cyBhIEtjb25maWcgb3B0aW9uIHRoYXQgZW5hYmxlcyB0aGUgZW50aXJlIE1ESU8gc3Vic3lzdGVtLCBhbmQgdGhlbiBwb3RlbnRpYWxseSBzb21lIG1vcmUgc3BlY2lmaWMgb3B0aW9ucyBmb3IgZGV2aWNlIHRyZWUgc3VwcG9ydCB3aXRoaW4gTURJTy4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSB0aHJvdWdoIHRoZSBLY29uZmlnIGhpZXJhcmNoeSwgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzIHRoYXQgbWlnaHQgYWZmZWN0IHdoZXRoZXIgdGhpcyBkcml2ZXIgZ2V0cyBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwgaW1hZ2UuIEkmIzM5O2xsIGFsc28gYmUgb24gdGhlIGxvb2tvdXQgZm9yIGFueSBvcHRpb25zIHRoYXQgY291bGQgYmUgcmVsZXZhbnQgdG8gZGVidWdnaW5nIG9yIHNlbGVjdGluZyBhIHNwZWNpZmljIE1ESU8gY29udHJvbGxlciB2YXJpYW50LCBpbiBjYXNlIHRoZXJlIGFyZSBtdWx0aXBsZSBpbXBsZW1lbnRhdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIHBhdGggY2xlYXJseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvZl9tZGlvXFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZT01PW9iai0kKENPTkZJR19GV05PREVfTURJTylcdCYjNDM7PSBmd25vZGVfbWRpby5vXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX09GX01ESU8pXHRcdCYjNDM7PSBvZl9tZGlvLm9cbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGUtNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Njg2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipLY29uZmlnIGFuZCB0aGUgTURJTyBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gV2hlbmV2ZXIgSSYjMzk7bSB0YWNrbGluZyBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgT3BlbiBGaXJtd2FyZSAoT0YpIE1ESU8gYnVzLCB0aGUgZmlyc3QgcGxhY2UgSSBhbHdheXMgZ28gaXMgdGhlIEtjb25maWcgZmlsZXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBgQ09ORklHX09GX01ESU9gIGlzIGVuYWJsZWQuIEl0JiMzOTtzIHRoZSBseW5jaHBpbiwgcmVhbGx5LiBUaGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGNvbnRyb2xzIHRoZSBjb3JlIGluZnJhc3RydWN0dXJlIGZvciB1c2luZyBNRElPIGRldmljZXMgZGVzY3JpYmVkIHdpdGggT0YuIElmIGl0JiMzOTtzIG5vdCBzZXQsIEkmIzM5O20gYmFzaWNhbGx5IGRlYWQgaW4gdGhlIHdhdGVyIHdoZW4gaXQgY29tZXMgdG8gYW55IE9GLWRyaXZlbiBNRElPIGNvbW11bmljYXRpb24uIFNvLCBzdGVwIG9uZTogdmVyaWZ5IHRoYXQga2V5IGNvbmZpZyBvcHRpb24uIEV2ZXJ5dGhpbmcgaGluZ2VzIG9uIHRoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDE6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE9GX01ESU8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpby9LY29uZmlnPTk9Y29uZmlnIEZXTk9ERV9NRElPXG4tLVxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTEzLVxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnOjE0OmNvbmZpZyBPRl9NRElPXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctMTUtXHRkZWZfdHJpc3RhdGUgT0ZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTczCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uc2lkZXJpbmcgT0ZfTURJTyBhbmQgS2NvbmZpZyoqCgpSaWdodCwgc28gYE9GX01ESU9gIGlzIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCB3aGVuIGBPRmAgaXMgZW5hYmxlZCDigJMgYSBwcmV0dHkgc3RhbmRhcmQgZGVwZW5kZW5jeS4gTm93LCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgaW1wbGljaXQgZGVwZW5kZW5jeSBmb3IgbXkgY3VycmVudCBwcm9qZWN0LiBUbyBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIHN1cnByaXNlcyBvciBjb25mbGljdHMgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIGluIGBkcml2ZXJzL29mL3Byb3BlcnR5LmNgLiBJIGhhdmUgYSBmZWVsaW5nIEkmIzM5O2xsIGZpbmQgYE9GX01ESU89eWAgc29tZXdoZXJlIG5lYXIgYE9GPXlgLCBidXQgaXQmIzM5O3MgYWx3YXlzIGJlc3QgdG8gY29uZmlybSBhbmQgcnVsZSBvdXQgYW55IGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQgbWlnaHQgYmUgaW52b2x2ZWQuIEdvdHRhIGNvdmVyIGFsbCBteSBiYXNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDE6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHJvcGVydHlcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9vZi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL29mL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuZHJpdmVycy9vZi9NYWtlZmlsZToyOm9iai15ID0gYmFzZS5vIGNwdS5vIGRldmljZS5vIG1vZHVsZS5vIHBsYXRmb3JtLm8gcHJvcGVydHkub1xuZHJpdmVycy9vZi9NYWtlZmlsZS0zLW9iai0kKENPTkZJR19PRl9LT0JKKSAmIzQzOz0ga29iai5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAxOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyNjgKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIENvbnRleHQqKgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiBrZXJuZWwgY29uZmlndXJhdGlvbiwgYW5kIGl0IGxvb2tzIGxpa2UgYENPTkZJR19PRmAgaXMgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBvcHRpb24gSSBuZWVkIHRvIGJlIGNvbmNlcm5lZCB3aXRoIGluIHRoaXMgY29udGV4dC4gSXQmIzM5O3MgdGhlIGx5bmNocGluLiBMZXQmIzM5O3MgZGlnIGludG8gdGhlIGRldGFpbHMgYW5kIGZpbmQgaXRzIGRlZmluaXRpb24uIFRvIGdldCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIG9wdGlvbiBpcyB1c2VkLCBJIHNob3VsZCBsb29rIGF0IGBkcml2ZXJzL2Jhc2UvY29yZS5jYCBhbmQgaXRzIGFzc29jaWF0ZWQgS2NvbmZpZyBmaWxlLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgaXQmIzM5O3MgZGVmaW5lZCBhbmQgaG93IGl0IGltcGFjdHMgdGhlIG90aGVyIGtlcm5lbCBjb21wb25lbnRzLiBUaGlzIGlzIGEgY29tbW9uIHBhdHRlcm4gd2hlbiB3b3JraW5nIHdpdGggZGV2aWNlIHRyZWUgZW5hYmxlZCBzeXN0ZW1zLCBzbyBJIG5lZWQgdG8gY2hlY2sgaXRzIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAxOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvcmVcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9iYXNlL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmFzZS9NYWtlZmlsZS0zLVxuZHJpdmVycy9iYXNlL01ha2VmaWxlOjQ6b2JqLXlcdFx0XHQ6PSBjb21wb25lbnQubyBjb3JlLm8gYnVzLm8gZGQubyBzeXNjb3JlLm8gXFxcbmRyaXZlcnMvYmFzZS9NYWtlZmlsZS01LVx0XHRcdCAgIGRyaXZlci5vIGNsYXNzLm8gcGxhdGZvcm0ubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTUwCgkJCQkJCQlvdXRwdXQ6IDE1NwoJCQkJCQkJdGhvdWdodHM6IDIwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgaXMgYWJvdXQgZGV2aWNlIGxpbmsgbG9naWMsIGFuZCBpdCBsb29rcyBsaWtlIGEgdGFyZ2V0ZWQgbW9kaWZpY2F0aW9uLiBUaGUgY2hhbmdlcyBhcmUgZm9jdXNlZCBvbiB0aGVzZSBzcGVjaWZpYyBzeW1ib2xzOiBgZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5YCwgYF9fZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5YCwgYG9mX2xpbmtfdG9fcGhhbmRsZWAsIGFuZCBgX19vZl9tZGlvYnVzX3JlZ2lzdGVyYC4gUmlnaHQgYXdheSwgdGhhdCB0ZWxscyBtZSB3ZSYjMzk7cmUgbG9va2luZyBhdCBjb3JlIGZ1bmN0aW9uYWxpdHksIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIGhvdyBkZXZpY2VzIGFyZSBsaW5rZWQgdG9nZXRoZXIgYW5kIGhhbmRsZWQgd2l0aGluIHRoZSBrZXJuZWwuIFRoZSBmYWN0IHRoYXQgYG9mX2xpbmtfdG9fcGhhbmRsZWAgaXMgaW52b2x2ZWQgc3VnZ2VzdHMgT3BlbiBGaXJtd2FyZSAoT0YpIGlzIHBsYXlpbmcgYSBrZXkgcm9sZSwgYW5kIGxpa2VseSBgT0ZfTURJT2AgYXMgd2VsbCwgZ2l2ZW4gdGhlIGBfX29mX21kaW9idXNfcmVnaXN0ZXJgIHRvdWNoLgoKVGhlIHBhdGNoIGl0c2VsZiBkZWFscyB3aXRoIGBldGhlcm5ldC1waHktcGFja2FnZWAgd2hpY2ggdGVsbHMgbWUgdGhhdCB0aGVyZSBpcyBhbiBgT0ZgIGNvbmZpZyBhY3RpdmUsIGFuZCB0aGVyZSBtYXkgYmUgYW4gYE9GX01ESU9gIGNvbmZpZyBhbHNvIGFjdGl2ZS4KCkdpdmVuIHRoZSBzY29wZSBhbmQgcmVhY2ggb2YgdGhlc2UgbW9kaWZpY2F0aW9ucywgYW5kIHRoZSBjb3JlIG5hdHVyZSBvZiB0aGUgZnVuY3Rpb25zIGJlaW5nIHRvdWNoZWQsIEkmIzM5O20gY29uZmlkZW50IHRoYXQgdGhpcyBpcyB3b3J0aCBleHBsb3JpbmcgZnVydGhlciwgZXNwZWNpYWxseSBmb3IgZnV6emluZy4gVGhlc2UgdHlwZXMgb2YgY2hhbmdlcyBhcmUgcHJpbWUgdGFyZ2V0cyBmb3IgZXhwb3Npbmcgc3VidGxlIGJ1Z3MgYW5kIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMuIEkgbmVlZCB0byBtYWtlIGEgbm90ZSB0byBzZXQgdGhlIHJlc3VsdHMgYW5kIGJlZ2luIGRlZXBlciBhbmFseXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDE6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09GJiMzNDssCiAgICAmIzM0O09GX01ESU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkmIzM0OywKICAgICYjMzQ7X19kZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkmIzM0OywKICAgICYjMzQ7b2ZfbGlua190b19waGFuZGxlJiMzNDssCiAgICAmIzM0O19fb2ZfbWRpb2J1c19yZWdpc3RlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGRldmljZSBsaW5rIG1hbmFnZW1lbnQgYW5kIE9GIHByb3BlcnR5IHBhcnNpbmcsIHNwZWNpZmljYWxseSBhZGRpbmcgYSBuZXcgZnVuY3Rpb24gYGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seWAgYW5kIGhhbmRsaW5nIGBldGhlcm5ldC1waHktcGFja2FnZWAgbm9kZXMgaW4gYG9mX2xpbmtfdG9fcGhhbmRsZWAuIFRoZXNlIGFyZSBjb3JlIGtlcm5lbCBjb21wb25lbnRzIGFuZCByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtPRiYjMzQ7LAogICAgJiMzNDtPRl9NRElPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5JiMzNDssCiAgICAmIzM0O19fZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5JiMzNDssCiAgICAmIzM0O29mX2xpbmtfdG9fcGhhbmRsZSYjMzQ7LAogICAgJiMzNDtfX29mX21kaW9idXNfcmVnaXN0ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBkZXZpY2UgbGluayBtYW5hZ2VtZW50IGFuZCBPRiBwcm9wZXJ0eSBwYXJzaW5nLCBzcGVjaWZpY2FsbHkgYWRkaW5nIGEgbmV3IGZ1bmN0aW9uIGBkZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHlgIGFuZCBoYW5kbGluZyBgZXRoZXJuZXQtcGh5LXBhY2thZ2VgIG5vZGVzIGluIGBvZl9saW5rX3RvX3BoYW5kbGVgLiBUaGVzZSBhcmUgY29yZSBrZXJuZWwgY29tcG9uZW50cyBhbmQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDE6MDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMTowMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBkZXZpY2UgbGluayBtYW5hZ2VtZW50IGluIHRoZSBkcml2ZXIgY29yZSBhbmQgT0YgcHJvcGVydHkgcGFyc2luZywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIERMX0ZMQUdfU1lOQ19TVEFURV9PTkxZIGxpbmtzIGFuZCBldGhlcm5ldC1waHktcGFja2FnZSBub2Rlcy4gVGhlc2UgY2hhbmdlcyBpbnZvbHZlIGxpc3QgbWFuaXB1bGF0aW9uLCBsb2NraW5nLCBhbmQgZGV2aWNlIG5vZGUgdHJhdmVyc2FsLiBUaGVyZSBhcmUgbm8gbmV3IGJ1ZmZlcnMgYWxsb2NhdGVkLCBubyBkYXRhIGNvcGllZCB0byB1c2Vyc3BhY2UsIGFuZCBubyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBjb3VsZCBiZSByZWFkIG9yIGxlYWtlZC4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSBsb2dpY2FsIGVycm9ycywgdXNlLWFmdGVyLWZyZWVzLCBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBvciBsb2NraW5nIGlzc3Vlcywgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiwgTE9DS0RFUCwgYW5kIHN0YW5kYXJkIGtlcm5lbCBidWcgZGV0ZWN0b3JzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyMzk1NDdiYzhmMDk3ZDVjYjgwMDZiNzUwYzUzNmQwY2Q0MzBkZmMyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgMTUgMDE6MDE6NTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2UvY29yZS5jIGIvZHJpdmVycy9iYXNlL2NvcmUuYwppbmRleCA0ZDAyNjY4Mjk0NGYyLi42MjdmY2ZhMjc0ZjBlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jhc2UvY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmFzZS9jb3JlLmMKQEAgLTEzMDUsNiAmIzQzOzEzMDUsNTcgQEAgc3RhdGljIHZvaWQgZGV2aWNlX2xpbmtfZHJvcF9tYW5hZ2VkKHN0cnVjdCBkZXZpY2VfbGluayAqbGluaykKIAlrcmVmX3B1dCgmYW1wO2xpbmstJmd0O2tyZWYsIF9fZGV2aWNlX2xpbmtfZGVsKTsKIH0KIAomIzQzOy8qIENhbGxlciBtdXN0IGhvbGQgdGhlIGRldmljZSBsaW5rcyB3cml0ZSBsb2NrLiAqLwomIzQzO3N0YXRpYyB2b2lkIF9fZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KHN0cnVjdCBkZXZpY2UgKmRldiwKJiM0MzsJCQkJCQlzdHJ1Y3QgbGlzdF9oZWFkICpzeW5jX2xpc3QpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZGV2aWNlX2xpbmsgKmxpbmssICpsbjsKJiM0MzsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGxpbmssIGxuLCAmYW1wO2Rldi0mZ3Q7bGlua3Muc3VwcGxpZXJzLCBjX25vZGUpIHsKJiM0MzsJCXN0cnVjdCBkZXZpY2UgKnN1cHBsaWVyOwomIzQzOwomIzQzOwkJaWYgKCFkZXZpY2VfbGlua190ZXN0KGxpbmssIERMX0ZMQUdfTUFOQUdFRCkgfHwKJiM0MzsJCSAgICAhZGV2aWNlX2xpbmtfdGVzdChsaW5rLCBETF9GTEFHX1NZTkNfU1RBVEVfT05MWSkpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQkvKgomIzQzOwkJICogRExfRkxBR19TWU5DX1NUQVRFX09OTFkgZXhjbHVkZXMgYWxsIG90aGVyIG1hbmFnZWQgbGluayBmbGFncywKJiM0MzsJCSAqIHNvIGl0IGlzIHNhZmUgdG8gZHJvcCB0aGUgbWFuYWdlZCBsaW5rIGNvbXBsZXRlbHkuCiYjNDM7CQkgKi8KJiM0MzsJCXN1cHBsaWVyID0gbGluay0mZ3Q7c3VwcGxpZXI7CiYjNDM7CQlkZXZpY2VfbGlua19kcm9wX21hbmFnZWQobGluayk7CiYjNDM7CiYjNDM7CQlpZiAoZGVmZXJfc3luY19zdGF0ZV9jb3VudCkKJiM0MzsJCQlfX2RldmljZV9saW5rc19zdXBwbGllcl9kZWZlcl9zeW5jKHN1cHBsaWVyKTsKJiM0MzsJCWVsc2UKJiM0MzsJCQlfX2RldmljZV9saW5rc19xdWV1ZV9zeW5jX3N0YXRlKHN1cHBsaWVyLCBzeW5jX2xpc3QpOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzOy8qKgomIzQzOyAqIGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seSAtIERyb3AgbWFuYWdlZCBzeW5jLXN0YXRlLW9ubHkgbGlua3MKJiM0MzsgKiBAZGV2OiBDb25zdW1lciBkZXZpY2Ugd2hvc2UgcHJveHkgbGlua3Mgc2hvdWxkIGJlIGRyb3BwZWQKJiM0MzsgKgomIzQzOyAqIEZyYW1ld29ya3Mgd2hpY2ggcG9wdWxhdGUgY2hpbGQgZGV2aWNlcyBiZWxvdyBhIGRyaXZlcmxlc3MgZGV2aWNlIGNhbiBjYWxsCiYjNDM7ICogdGhpcyBhZnRlciBhZGRpbmcgYWxsIG9mIHRoZSBjaGlsZHJlbi4gVGhlIGNoaWxkcmVuIHdpbGwgaGF2ZSBhY3F1aXJlZCB0aGVpcgomIzQzOyAqIG93biBsaW5rcyBieSB0aGVuLCBzbyB0aGUgdGVtcG9yYXJ5IGxpbmtzIHdoaWNoIG9ubHkgcHJldmVudCBzdXBwbGllcnMgZnJvbQomIzQzOyAqIHJlY2VpdmluZyBzeW5jX3N0YXRlKCkgY2FsbGJhY2tzIGFyZSBubyBsb25nZXIgbmVlZGVkLgomIzQzOyAqCiYjNDM7ICogUmUtZXZhbHVhdGUgZWFjaCBhZmZlY3RlZCBzdXBwbGllciBmb3IgYSBzeW5jX3N0YXRlKCkgY2FsbGJhY2sgYWZ0ZXIgaXRzCiYjNDM7ICogbGluayBpcyBkcm9wcGVkLgomIzQzOyAqLwomIzQzO3ZvaWQgZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KHN0cnVjdCBkZXZpY2UgKmRldikKJiM0Mzt7CiYjNDM7CUxJU1RfSEVBRChzeW5jX2xpc3QpOwomIzQzOwomIzQzOwlkZXZpY2VfbGlua3Nfd3JpdGVfbG9jaygpOwomIzQzOwlfX2RldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seShkZXYsICZhbXA7c3luY19saXN0KTsKJiM0MzsJZGV2aWNlX2xpbmtzX3dyaXRlX3VubG9jaygpOwomIzQzOwomIzQzOwlkZXZpY2VfbGlua3NfZmx1c2hfc3luY19saXN0KCZhbXA7c3luY19saXN0LCBOVUxMKTsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KTsKJiM0MzsKIHN0YXRpYyBzc2l6ZV90IHdhaXRpbmdfZm9yX3N1cHBsaWVyX3Nob3coc3RydWN0IGRldmljZSAqZGV2LAogCQkJCQkgY29uc3Qgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCiAJCQkJCSBjaGFyICpidWYpCkBAIC0xNDE4LDYgJiM0MzsxNDY5LDggQEAgdm9pZCBkZXZpY2VfbGlua3NfZHJpdmVyX2JvdW5kKHN0cnVjdCBkZXZpY2UgKmRldikKIAllbHNlCiAJCV9fZGV2aWNlX2xpbmtzX3F1ZXVlX3N5bmNfc3RhdGUoZGV2LCAmYW1wO3N5bmNfbGlzdCk7CiAKJiM0MzsJX19kZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkoZGV2LCAmYW1wO3N5bmNfbGlzdCk7CiYjNDM7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGxpbmssIGxuLCAmYW1wO2Rldi0mZ3Q7bGlua3Muc3VwcGxpZXJzLCBjX25vZGUpIHsKIAkJc3RydWN0IGRldmljZSAqc3VwcGxpZXI7CiAKQEAgLTE0MjUsMTcgJiM0MzsxNDc4LDEwIEBAIHZvaWQgZGV2aWNlX2xpbmtzX2RyaXZlcl9ib3VuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJCQljb250aW51ZTsKIAogCQlzdXBwbGllciA9IGxpbmstJmd0O3N1cHBsaWVyOwotCQlpZiAoZGV2aWNlX2xpbmtfdGVzdChsaW5rLCBETF9GTEFHX1NZTkNfU1RBVEVfT05MWSkpIHsKLQkJCS8qCi0JCQkgKiBXaGVuIERMX0ZMQUdfU1lOQ19TVEFURV9PTkxZIGlzIHNldCwgaXQgbWVhbnMgbm8KLQkJCSAqIG90aGVyIERMX01BTkFHRURfTElOS19GTEFHUyBoYXZlIGJlZW4gc2V0LiBTbywgaXQmIzM5O3MKLQkJCSAqIHNhdmUgdG8gZHJvcCB0aGUgbWFuYWdlZCBsaW5rIGNvbXBsZXRlbHkuCi0JCQkgKi8KLQkJCWRldmljZV9saW5rX2Ryb3BfbWFuYWdlZChsaW5rKTsKLQkJfSBlbHNlIGlmIChkZXZfaXNfYmVzdF9lZmZvcnQoZGV2KSAmYW1wOyZhbXA7Ci0JCQkgICBkZXZpY2VfbGlua190ZXN0KGxpbmssIERMX0ZMQUdfSU5GRVJSRUQpICZhbXA7JmFtcDsKLQkJCSAgIGxpbmstJmd0O3N0YXR1cyAhPSBETF9TVEFURV9DT05TVU1FUl9QUk9CRSAmYW1wOyZhbXA7Ci0JCQkgICAhZGV2X2Nhbl9tYXRjaChsaW5rLSZndDtzdXBwbGllcikpIHsKJiM0MzsJCWlmIChkZXZfaXNfYmVzdF9lZmZvcnQoZGV2KSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgZGV2aWNlX2xpbmtfdGVzdChsaW5rLCBETF9GTEFHX0lORkVSUkVEKSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgbGluay0mZ3Q7c3RhdHVzICE9IERMX1NUQVRFX0NPTlNVTUVSX1BST0JFICZhbXA7JmFtcDsKJiM0MzsJCSAgICAhZGV2X2Nhbl9tYXRjaChsaW5rLSZndDtzdXBwbGllcikpIHsKIAkJCS8qCiAJCQkgKiBXaGVuIGRldl9pc19iZXN0X2VmZm9ydCgpIGlzIHRydWUsIHdlIGlnbm9yZSBkZXZpY2UKIAkJCSAqIGxpbmtzIHRvIHN1cHBsaWVycyB0aGF0IGRvbiYjMzk7dCBoYXZlIGEgZHJpdmVyLiAgSWYgdGhlCkBAIC0xNDQ5LDEyICYjNDM7MTQ5NSw2IEBAIHZvaWQgZGV2aWNlX2xpbmtzX2RyaXZlcl9ib3VuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJCQlXUklURV9PTkNFKGxpbmstJmd0O3N0YXR1cywgRExfU1RBVEVfQUNUSVZFKTsKIAkJfQogCi0JCS8qCi0JCSAqIFRoaXMgbmVlZHMgdG8gYmUgZG9uZSBldmVuIGZvciB0aGUgZGVsZXRlZAotCQkgKiBETF9GTEFHX1NZTkNfU1RBVEVfT05MWSBkZXZpY2UgbGluayBpbiBjYXNlIGl0IHdhcyB0aGUgbGFzdAotCQkgKiBkZXZpY2UgbGluayB0aGF0IHdhcyBwcmV2ZW50aW5nIHRoZSBzdXBwbGllciBmcm9tIGdldHRpbmcgYQotCQkgKiBzeW5jX3N0YXRlKCkgY2FsbC4KLQkJICovCiAJCWlmIChkZWZlcl9zeW5jX3N0YXRlX2NvdW50KQogCQkJX19kZXZpY2VfbGlua3Nfc3VwcGxpZXJfZGVmZXJfc3luYyhzdXBwbGllcik7CiAJCWVsc2UKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jIGIvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMKaW5kZXggYjhkMjk4YzA0ZDNmZi4uNDlmOWI0MDYyY2Y1YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMKQEAgLTIyOSw3ICYjNDM7MjI5LDcgQEAgaW50IF9fb2ZfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGRldmljZV9ub2RlICpucCwKIAkJZ290byB1bnJlZ2lzdGVyOwogCiAJaWYgKCFzY2FucGh5cykKLQkJcmV0dXJuIDA7CiYjNDM7CQlnb3RvIGRvbmU7CiAKIAkvKiBhdXRvIHNjYW4gZm9yIFBIWXMgd2l0aCBlbXB0eSByZWcgcHJvcGVydHkgKi8KIAlmb3JfZWFjaF9hdmFpbGFibGVfY2hpbGRfb2Zfbm9kZShucCwgY2hpbGQpIHsKQEAgLTI2MSw2ICYjNDM7MjYxLDkgQEAgaW50IF9fb2ZfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGRldmljZV9ub2RlICpucCwKIAkJfQogCX0KIAomIzQzO2RvbmU6CiYjNDM7CWRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seSgmYW1wO21kaW8tJmd0O2Rldik7CiYjNDM7CiAJcmV0dXJuIDA7CiAKIHB1dF91bnJlZ2lzdGVyOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9vZi9wcm9wZXJ0eS5jIGIvZHJpdmVycy9vZi9wcm9wZXJ0eS5jCmluZGV4IDcyY2YxMjkwN2RlMDMuLmYyOWJhODE4ZWNiYzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvb2YvcHJvcGVydHkuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL29mL3Byb3BlcnR5LmMKQEAgLTEyNzIsNiAmIzQzOzEyNzIsMjAgQEAgc3RhdGljIHZvaWQgb2ZfbGlua190b19waGFuZGxlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqY29uX25wLAogCQl0bXBfbnAgPSBvZl9nZXRfbmV4dF9wYXJlbnQodG1wX25wKTsKIAl9CiAKJiM0MzsJLyoKJiM0MzsJICogQW4gRXRoZXJuZXQgUEhZIHBhY2thZ2Ugbm9kZSBkZXNjcmliZXMgcmVzb3VyY2VzIHNoYXJlZCBieSBpdHMgbWVtYmVyCiYjNDM7CSAqIFBIWXMsIGJ1dCBpcyBub3QgcG9wdWxhdGVkIGFzIGEgc3RydWN0IGRldmljZS4gTGluayBldmVyeSBlbmFibGVkCiYjNDM7CSAqIG1lbWJlciBQSFkgdG8gdGhvc2Ugc3VwcGxpZXJzIHNvIGZ3X2RldmxpbmsgY2FuIHVzZSB0aGUgcmVhbCBjb25zdW1lcgomIzQzOwkgKiBkZXZpY2VzIGluc3RlYWQgb2YgbGVhdmluZyBhIHByb3h5IGxpbmsgb24gdGhlIE1ESU8gYnVzIGluZGVmaW5pdGVseS4KJiM0MzsJICovCiYjNDM7CWlmIChvZl9ub2RlX25hbWVfZXEoY29uX25wLCAmIzM0O2V0aGVybmV0LXBoeS1wYWNrYWdlJiMzNDspKSB7CiYjNDM7CQlmb3JfZWFjaF9hdmFpbGFibGVfY2hpbGRfb2Zfbm9kZV9zY29wZWQoY29uX25wLCBjaGlsZCkKJiM0MzsJCQlmd25vZGVfbGlua19hZGQob2ZfZndub2RlX2hhbmRsZShjaGlsZCksCiYjNDM7CQkJCQlvZl9md25vZGVfaGFuZGxlKHN1cF9ucCksIGZsYWdzKTsKJiM0MzsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwogCWZ3bm9kZV9saW5rX2FkZChvZl9md25vZGVfaGFuZGxlKGNvbl9ucCksIG9mX2Z3bm9kZV9oYW5kbGUoc3VwX25wKSwgZmxhZ3MpOwogfQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RldmljZS5oIGIvaW5jbHVkZS9saW51eC9kZXZpY2UuaAppbmRleCBhZWU3OWZkNmIzMmI0Li44YWZiOWYyYjBkODI1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2RldmljZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZGV2aWNlLmgKQEAgLTEzODEsNiAmIzQzOzEzODEsNyBAQCBzdHJ1Y3QgZGV2aWNlX2xpbmsgKmRldmljZV9saW5rX2FkZChzdHJ1Y3QgZGV2aWNlICpjb25zdW1lciwKIAkJCQkgICAgc3RydWN0IGRldmljZSAqc3VwcGxpZXIsIHUzMiBmbGFncyk7CiB2b2lkIGRldmljZV9saW5rX2RlbChzdHJ1Y3QgZGV2aWNlX2xpbmsgKmxpbmspOwogdm9pZCBkZXZpY2VfbGlua19yZW1vdmUodm9pZCAqY29uc3VtZXIsIHN0cnVjdCBkZXZpY2UgKnN1cHBsaWVyKTsKJiM0Mzt2b2lkIGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seShzdHJ1Y3QgZGV2aWNlICpkZXYpOwogdm9pZCBkZXZpY2VfbGlua3Nfc3VwcGxpZXJfc3luY19zdGF0ZV9wYXVzZSh2b2lkKTsKIHZvaWQgZGV2aWNlX2xpbmtzX3N1cHBsaWVyX3N5bmNfc3RhdGVfcmVzdW1lKHZvaWQpOwogdm9pZCBkZXZpY2VfbGlua193YWl0X3JlbW92YWwodm9pZCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTg1CgkJCQkJCQlvdXRwdXQ6IDE2OAoJCQkJCQkJdGhvdWdodHM6IDQ5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLTVNBTiBBc3Nlc3NtZW50OiBEZXZpY2UgTGluayBNYW5hZ2VtZW50IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyB0b3VjaGluZyBkZXZpY2UgbGluayBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgaW4gYGRyaXZlcnMvYmFzZS9jb3JlLmNgLCBgZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmNgLCBhbmQgYGRyaXZlcnMvb2YvcHJvcGVydHkuY2AuIE15IGluaXRpYWwgY29uY2VybiwgYXMgYWx3YXlzLCBpcyBhcm91bmQgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzLCBhbmQgc3BlY2lmaWNhbGx5LCB3aGV0aGVyIHRoaXMgaW50cm9kdWNlcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuCgpGcm9tIGEgcXVpY2sgc2tpbSwgdGhlIGNoYW5nZXMgYXJlIGNlbnRlcmVkIGFyb3VuZCBkZXZpY2UgbGlua3MsIGxpc3QgbWFuYWdlbWVudCwgYW5kIGhvdyB0aGUga2VybmVsIHBhcnNlcyBkZXZpY2Ugbm9kZXMuIEkgZG9uJiMzOTt0IHNlZSBhbnl0aGluZyB0aGF0IHNjcmVhbXMgJiMzNDtwb3RlbnRpYWwgS01TQU4gdHJpZ2dlci4mIzM0OyBUaGVyZSBhcmUgbm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucyBwYXNzZWQgdG8gdXNlciBzcGFjZS4gTm90aGluZyBjb21wbGV4IGlzIGJlaW5nIGNvcGllZCB0byB0aGUgdXNlciBzcGFjZS4gVGhlcmUgYXJlbiYjMzk7dCBhbnkgbmV3IHN0cnVjdCBmaWVsZHMgdGhhdCBjb3VsZCBiZSBsZWZ0IHVuaW5pdGlhbGl6ZWQgYW5kIHRoZW4gbGVha2VkLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlcyByZXZvbHZlIGFyb3VuZCBkZXZpY2UgbGlua3MsIG5hbWVseSB0aG9zZSBtYXJrZWQgd2l0aCBgRExfRkxBR19TWU5DX1NUQVRFX09OTFlgLCBhbmQgaG93IHRoZXkgYXJlIGRyb3BwZWQuCgpMb29raW5nIGNsb3NlciBhdCBgZHJpdmVycy9iYXNlL2NvcmUuY2AsIEkgc2VlIGEgbmV3IGZ1bmN0aW9uLCBgX19kZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHlgLCB3aGljaCBpdGVyYXRlcyB0aHJvdWdoIGBkZXYtJmd0O2xpbmtzLnN1cHBsaWVyc2AuIElmIGEgbGluayBpcyBtYW5hZ2VkIGFuZCBoYXMgdGhlIGBETF9GTEFHX1NZTkNfU1RBVEVfT05MWWAgZmxhZywgdGhlIGxpbmsgaXMgZHJvcHBlZCwgYW5kIHRoZSBzeW5jIHN0YXRlIGlzIHF1ZXVlZC4gVGhlcmUmIzM5O3MgYSBsb2NraW5nIHdyYXBwZXIgYXJvdW5kIHRoaXMgaW4gYGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seWAsIGFuZCBgZGV2aWNlX2xpbmtzX2RyaXZlcl9ib3VuZGAgbm93IGNhbGxzIHRoaXMgZnVuY3Rpb24gaW5zdGVhZCBvZiBkb2luZyB0aGUgb3BlcmF0aW9uIGlubGluZS4KCkluIGBkcml2ZXJzL25ldC9tZGlvL29mX21kaW8uY2AsIGBfX29mX21kaW9idXNfcmVnaXN0ZXJgIGNhbGxzIGBkZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkoJmFtcDttZGlvLSZndDtkZXYpYCBiZWZvcmUgcmV0dXJuaW5nIHN1Y2Nlc3MuCgpGaW5hbGx5LCBgZHJpdmVycy9vZi9wcm9wZXJ0eS5jYCBoYXMgYSBtb2RpZmljYXRpb24gdG8gYG9mX2xpbmtfdG9fcGhhbmRsZWAuIEEgc3BlY2lmaWMgY2FzZSBpcyBhZGRlZCBmb3IgJiMzNDtldGhlcm5ldC1waHktcGFja2FnZSYjMzQ7IG5vZGVzIHRvIGxpbmsgZXZlcnkgZW5hYmxlZCBtZW1iZXIgUEhZIHRvIHRoZSBzdXBwbGllcnMuCgpDb25zaWRlcmluZyBhbGwgb2YgdGhpcywgSSBkb24mIzM5O3Qgc2VlIGFueSBvYnZpb3VzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGluZm9ybWF0aW9uIGxlYWsgcmlza3MgdGhhdCB3b3VsZCBiZSBleHBvc2VkIGJ5IHRoaXMgcGF0Y2guIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIHdvdWxkIGJlIGNsYXNzaWMgbG9naWNhbCBidWdzIGxpa2UgdXNlLWFmdGVyLWZyZWUsIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIGxpc3QgY29ycnVwdGlvbiwgb3IgbG9ja2luZyBpc3N1ZXMsIHRoZSBraW5kcyBvZiBwcm9ibGVtcyB0aGF0IGFyZSB0eXBpY2FsbHkgY2F1Z2h0IGJ5IEtBU0FOLCBMT0NLREVQLCBvciB0aGUgc3RhbmRhcmQga2VybmVsIGJ1ZyBkZXRlY3RvcnMuIFNvLCBJJiMzOTttIGNvbmZpZGVudCBpbiBzYXlpbmcgdGhhdCB0aGlzIHBhdGNoIGRvZXMgKm5vdCogcmVxdWlyZSBLTVNBTi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDE6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZGV2aWNlIGxpbmsgbWFuYWdlbWVudCBpbiB0aGUgZHJpdmVyIGNvcmUgYW5kIE9GIHByb3BlcnR5IHBhcnNpbmcsIHNwZWNpZmljYWxseSBoYW5kbGluZyBETF9GTEFHX1NZTkNfU1RBVEVfT05MWSBsaW5rcyBhbmQgZXRoZXJuZXQtcGh5LXBhY2thZ2Ugbm9kZXMuIFRoZXNlIGNoYW5nZXMgaW52b2x2ZSBsaXN0IG1hbmlwdWxhdGlvbiwgbG9ja2luZywgYW5kIGRldmljZSBub2RlIHRyYXZlcnNhbC4gVGhlcmUgYXJlIG5vIG5ldyBidWZmZXJzIGFsbG9jYXRlZCwgbm8gZGF0YSBjb3BpZWQgdG8gdXNlcnNwYWNlLCBhbmQgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZCBvciBsZWFrZWQuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoZXNlIGNoYW5nZXMgd291bGQgYmUgbG9naWNhbCBlcnJvcnMsIHVzZS1hZnRlci1mcmVlcywgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlcywgb3IgbG9ja2luZyBpc3N1ZXMsIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4sIExPQ0tERVAsIGFuZCBzdGFuZGFyZCBrZXJuZWwgYnVnIGRldGVjdG9ycy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGRldmljZSBsaW5rIG1hbmFnZW1lbnQgaW4gdGhlIGRyaXZlciBjb3JlIGFuZCBPRiBwcm9wZXJ0eSBwYXJzaW5nLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgRExfRkxBR19TWU5DX1NUQVRFX09OTFkgbGlua3MgYW5kIGV0aGVybmV0LXBoeS1wYWNrYWdlIG5vZGVzLiBUaGVzZSBjaGFuZ2VzIGludm9sdmUgbGlzdCBtYW5pcHVsYXRpb24sIGxvY2tpbmcsIGFuZCBkZXZpY2Ugbm9kZSB0cmF2ZXJzYWwuIFRoZXJlIGFyZSBubyBuZXcgYnVmZmVycyBhbGxvY2F0ZWQsIG5vIGRhdGEgY29waWVkIHRvIHVzZXJzcGFjZSwgYW5kIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQgb3IgbGVha2VkLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIGxvZ2ljYWwgZXJyb3JzLCB1c2UtYWZ0ZXItZnJlZXMsIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIGxvY2tpbmcgaXNzdWVzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLCBMT0NLREVQLCBhbmQgc3RhbmRhcmQga2VybmVsIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAxOjAxOjU4LjA4NjA0MDU2NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzMzAyODMxODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk9GXCIsXG4gICAgXCJPRl9NRElPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5XCIsXG4gICAgXCJfX2RldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seVwiLFxuICAgIFwib2ZfbGlua190b19waGFuZGxlXCIsXG4gICAgXCJfX29mX21kaW9idXNfcmVnaXN0ZXJcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGRldmljZSBsaW5rIG1hbmFnZW1lbnQgaW4gdGhlIGRyaXZlciBjb3JlIGFuZCBPRiBwcm9wZXJ0eSBwYXJzaW5nLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgRExfRkxBR19TWU5DX1NUQVRFX09OTFkgbGlua3MgYW5kIGV0aGVybmV0LXBoeS1wYWNrYWdlIG5vZGVzLiBUaGVzZSBjaGFuZ2VzIGludm9sdmUgbGlzdCBtYW5pcHVsYXRpb24sIGxvY2tpbmcsIGFuZCBkZXZpY2Ugbm9kZSB0cmF2ZXJzYWwuIFRoZXJlIGFyZSBubyBuZXcgYnVmZmVycyBhbGxvY2F0ZWQsIG5vIGRhdGEgY29waWVkIHRvIHVzZXJzcGFjZSwgYW5kIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQgb3IgbGVha2VkLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIGxvZ2ljYWwgZXJyb3JzLCB1c2UtYWZ0ZXItZnJlZXMsIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIGxvY2tpbmcgaXNzdWVzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLCBMT0NLREVQLCBhbmQgc3RhbmRhcmQga2VybmVsIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBkZXZpY2UgbGluayBtYW5hZ2VtZW50IGFuZCBPRiBwcm9wZXJ0eSBwYXJzaW5nLCBzcGVjaWZpY2FsbHkgYWRkaW5nIGEgbmV3IGZ1bmN0aW9uIGBkZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHlgIGFuZCBoYW5kbGluZyBgZXRoZXJuZXQtcGh5LXBhY2thZ2VgIG5vZGVzIGluIGBvZl9saW5rX3RvX3BoYW5kbGVgLiBUaGVzZSBhcmUgY29yZSBrZXJuZWwgY29tcG9uZW50cyBhbmQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDE6MDE6NTguMDg2MDQ2Mzg0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDg5NTg1NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyMzk1NDdiYzhmMDk3ZDVjYjgwMDZiNzUwYzUzNmQwY2Q0MzBkZmMyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDE1IDAxOjAxOjU3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmFzZS9jb3JlLmMgYi9kcml2ZXJzL2Jhc2UvY29yZS5jXFxuaW5kZXggNGQwMjY2ODI5NDRmMi4uNjI3ZmNmYTI3NGYwZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jhc2UvY29yZS5jXFxuKysrIGIvZHJpdmVycy9iYXNlL2NvcmUuY1xcbkBAIC0xMzA1LDYgKzEzMDUsNTcgQEAgc3RhdGljIHZvaWQgZGV2aWNlX2xpbmtfZHJvcF9tYW5hZ2VkKHN0cnVjdCBkZXZpY2VfbGluayAqbGluaylcXG4gXFx0a3JlZl9wdXQoXFx1MDAyNmxpbmstXFx1MDAzZWtyZWYsIF9fZGV2aWNlX2xpbmtfZGVsKTtcXG4gfVxcbiBcXG4rLyogQ2FsbGVyIG11c3QgaG9sZCB0aGUgZGV2aWNlIGxpbmtzIHdyaXRlIGxvY2suICovXFxuK3N0YXRpYyB2b2lkIF9fZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KHN0cnVjdCBkZXZpY2UgKmRldixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0c3RydWN0IGxpc3RfaGVhZCAqc3luY19saXN0KVxcbit7XFxuK1xcdHN0cnVjdCBkZXZpY2VfbGluayAqbGluaywgKmxuO1xcbitcXG4rXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGxpbmssIGxuLCBcXHUwMDI2ZGV2LVxcdTAwM2VsaW5rcy5zdXBwbGllcnMsIGNfbm9kZSkge1xcbitcXHRcXHRzdHJ1Y3QgZGV2aWNlICpzdXBwbGllcjtcXG4rXFxuK1xcdFxcdGlmICghZGV2aWNlX2xpbmtfdGVzdChsaW5rLCBETF9GTEFHX01BTkFHRUQpIHx8XFxuK1xcdFxcdCAgICAhZGV2aWNlX2xpbmtfdGVzdChsaW5rLCBETF9GTEFHX1NZTkNfU1RBVEVfT05MWSkpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0LypcXG4rXFx0XFx0ICogRExfRkxBR19TWU5DX1NUQVRFX09OTFkgZXhjbHVkZXMgYWxsIG90aGVyIG1hbmFnZWQgbGluayBmbGFncyxcXG4rXFx0XFx0ICogc28gaXQgaXMgc2FmZSB0byBkcm9wIHRoZSBtYW5hZ2VkIGxpbmsgY29tcGxldGVseS5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdHN1cHBsaWVyID0gbGluay1cXHUwMDNlc3VwcGxpZXI7XFxuK1xcdFxcdGRldmljZV9saW5rX2Ryb3BfbWFuYWdlZChsaW5rKTtcXG4rXFxuK1xcdFxcdGlmIChkZWZlcl9zeW5jX3N0YXRlX2NvdW50KVxcbitcXHRcXHRcXHRfX2RldmljZV9saW5rc19zdXBwbGllcl9kZWZlcl9zeW5jKHN1cHBsaWVyKTtcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRfX2RldmljZV9saW5rc19xdWV1ZV9zeW5jX3N0YXRlKHN1cHBsaWVyLCBzeW5jX2xpc3QpO1xcbitcXHR9XFxuK31cXG4rXFxuKy8qKlxcbisgKiBkZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkgLSBEcm9wIG1hbmFnZWQgc3luYy1zdGF0ZS1vbmx5IGxpbmtzXFxuKyAqIEBkZXY6IENvbnN1bWVyIGRldmljZSB3aG9zZSBwcm94eSBsaW5rcyBzaG91bGQgYmUgZHJvcHBlZFxcbisgKlxcbisgKiBGcmFtZXdvcmtzIHdoaWNoIHBvcHVsYXRlIGNoaWxkIGRldmljZXMgYmVsb3cgYSBkcml2ZXJsZXNzIGRldmljZSBjYW4gY2FsbFxcbisgKiB0aGlzIGFmdGVyIGFkZGluZyBhbGwgb2YgdGhlIGNoaWxkcmVuLiBUaGUgY2hpbGRyZW4gd2lsbCBoYXZlIGFjcXVpcmVkIHRoZWlyXFxuKyAqIG93biBsaW5rcyBieSB0aGVuLCBzbyB0aGUgdGVtcG9yYXJ5IGxpbmtzIHdoaWNoIG9ubHkgcHJldmVudCBzdXBwbGllcnMgZnJvbVxcbisgKiByZWNlaXZpbmcgc3luY19zdGF0ZSgpIGNhbGxiYWNrcyBhcmUgbm8gbG9uZ2VyIG5lZWRlZC5cXG4rICpcXG4rICogUmUtZXZhbHVhdGUgZWFjaCBhZmZlY3RlZCBzdXBwbGllciBmb3IgYSBzeW5jX3N0YXRlKCkgY2FsbGJhY2sgYWZ0ZXIgaXRzXFxuKyAqIGxpbmsgaXMgZHJvcHBlZC5cXG4rICovXFxuK3ZvaWQgZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KHN0cnVjdCBkZXZpY2UgKmRldilcXG4re1xcbitcXHRMSVNUX0hFQUQoc3luY19saXN0KTtcXG4rXFxuK1xcdGRldmljZV9saW5rc193cml0ZV9sb2NrKCk7XFxuK1xcdF9fZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KGRldiwgXFx1MDAyNnN5bmNfbGlzdCk7XFxuK1xcdGRldmljZV9saW5rc193cml0ZV91bmxvY2soKTtcXG4rXFxuK1xcdGRldmljZV9saW5rc19mbHVzaF9zeW5jX2xpc3QoXFx1MDAyNnN5bmNfbGlzdCwgTlVMTCk7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwoZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KTtcXG4rXFxuIHN0YXRpYyBzc2l6ZV90IHdhaXRpbmdfZm9yX3N1cHBsaWVyX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxcbiBcXHRcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuIFxcdFxcdFxcdFxcdFxcdCBjaGFyICpidWYpXFxuQEAgLTE0MTgsNiArMTQ2OSw4IEBAIHZvaWQgZGV2aWNlX2xpbmtzX2RyaXZlcl9ib3VuZChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIFxcdGVsc2VcXG4gXFx0XFx0X19kZXZpY2VfbGlua3NfcXVldWVfc3luY19zdGF0ZShkZXYsIFxcdTAwMjZzeW5jX2xpc3QpO1xcbiBcXG4rXFx0X19kZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkoZGV2LCBcXHUwMDI2c3luY19saXN0KTtcXG4rXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShsaW5rLCBsbiwgXFx1MDAyNmRldi1cXHUwMDNlbGlua3Muc3VwcGxpZXJzLCBjX25vZGUpIHtcXG4gXFx0XFx0c3RydWN0IGRldmljZSAqc3VwcGxpZXI7XFxuIFxcbkBAIC0xNDI1LDE3ICsxNDc4LDEwIEBAIHZvaWQgZGV2aWNlX2xpbmtzX2RyaXZlcl9ib3VuZChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0c3VwcGxpZXIgPSBsaW5rLVxcdTAwM2VzdXBwbGllcjtcXG4tXFx0XFx0aWYgKGRldmljZV9saW5rX3Rlc3QobGluaywgRExfRkxBR19TWU5DX1NUQVRFX09OTFkpKSB7XFxuLVxcdFxcdFxcdC8qXFxuLVxcdFxcdFxcdCAqIFdoZW4gRExfRkxBR19TWU5DX1NUQVRFX09OTFkgaXMgc2V0LCBpdCBtZWFucyBub1xcbi1cXHRcXHRcXHQgKiBvdGhlciBETF9NQU5BR0VEX0xJTktfRkxBR1MgaGF2ZSBiZWVuIHNldC4gU28sIGl0J3NcXG4tXFx0XFx0XFx0ICogc2F2ZSB0byBkcm9wIHRoZSBtYW5hZ2VkIGxpbmsgY29tcGxldGVseS5cXG4tXFx0XFx0XFx0ICovXFxuLVxcdFxcdFxcdGRldmljZV9saW5rX2Ryb3BfbWFuYWdlZChsaW5rKTtcXG4tXFx0XFx0fSBlbHNlIGlmIChkZXZfaXNfYmVzdF9lZmZvcnQoZGV2KSBcXHUwMDI2XFx1MDAyNlxcbi1cXHRcXHRcXHQgICBkZXZpY2VfbGlua190ZXN0KGxpbmssIERMX0ZMQUdfSU5GRVJSRUQpIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdFxcdCAgIGxpbmstXFx1MDAzZXN0YXR1cyAhPSBETF9TVEFURV9DT05TVU1FUl9QUk9CRSBcXHUwMDI2XFx1MDAyNlxcbi1cXHRcXHRcXHQgICAhZGV2X2Nhbl9tYXRjaChsaW5rLVxcdTAwM2VzdXBwbGllcikpIHtcXG4rXFx0XFx0aWYgKGRldl9pc19iZXN0X2VmZm9ydChkZXYpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICBkZXZpY2VfbGlua190ZXN0KGxpbmssIERMX0ZMQUdfSU5GRVJSRUQpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICBsaW5rLVxcdTAwM2VzdGF0dXMgIT0gRExfU1RBVEVfQ09OU1VNRVJfUFJPQkUgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgICFkZXZfY2FuX21hdGNoKGxpbmstXFx1MDAzZXN1cHBsaWVyKSkge1xcbiBcXHRcXHRcXHQvKlxcbiBcXHRcXHRcXHQgKiBXaGVuIGRldl9pc19iZXN0X2VmZm9ydCgpIGlzIHRydWUsIHdlIGlnbm9yZSBkZXZpY2VcXG4gXFx0XFx0XFx0ICogbGlua3MgdG8gc3VwcGxpZXJzIHRoYXQgZG9uJ3QgaGF2ZSBhIGRyaXZlci4gIElmIHRoZVxcbkBAIC0xNDQ5LDEyICsxNDk1LDYgQEAgdm9pZCBkZXZpY2VfbGlua3NfZHJpdmVyX2JvdW5kKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0XFx0XFx0V1JJVEVfT05DRShsaW5rLVxcdTAwM2VzdGF0dXMsIERMX1NUQVRFX0FDVElWRSk7XFxuIFxcdFxcdH1cXG4gXFxuLVxcdFxcdC8qXFxuLVxcdFxcdCAqIFRoaXMgbmVlZHMgdG8gYmUgZG9uZSBldmVuIGZvciB0aGUgZGVsZXRlZFxcbi1cXHRcXHQgKiBETF9GTEFHX1NZTkNfU1RBVEVfT05MWSBkZXZpY2UgbGluayBpbiBjYXNlIGl0IHdhcyB0aGUgbGFzdFxcbi1cXHRcXHQgKiBkZXZpY2UgbGluayB0aGF0IHdhcyBwcmV2ZW50aW5nIHRoZSBzdXBwbGllciBmcm9tIGdldHRpbmcgYVxcbi1cXHRcXHQgKiBzeW5jX3N0YXRlKCkgY2FsbC5cXG4tXFx0XFx0ICovXFxuIFxcdFxcdGlmIChkZWZlcl9zeW5jX3N0YXRlX2NvdW50KVxcbiBcXHRcXHRcXHRfX2RldmljZV9saW5rc19zdXBwbGllcl9kZWZlcl9zeW5jKHN1cHBsaWVyKTtcXG4gXFx0XFx0ZWxzZVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYyBiL2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jXFxuaW5kZXggYjhkMjk4YzA0ZDNmZi4uNDlmOWI0MDYyY2Y1YyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uY1xcbisrKyBiL2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jXFxuQEAgLTIyOSw3ICsyMjksNyBAQCBpbnQgX19vZl9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLFxcbiBcXHRcXHRnb3RvIHVucmVnaXN0ZXI7XFxuIFxcbiBcXHRpZiAoIXNjYW5waHlzKVxcbi1cXHRcXHRyZXR1cm4gMDtcXG4rXFx0XFx0Z290byBkb25lO1xcbiBcXG4gXFx0LyogYXV0byBzY2FuIGZvciBQSFlzIHdpdGggZW1wdHkgcmVnIHByb3BlcnR5ICovXFxuIFxcdGZvcl9lYWNoX2F2YWlsYWJsZV9jaGlsZF9vZl9ub2RlKG5wLCBjaGlsZCkge1xcbkBAIC0yNjEsNiArMjYxLDkgQEAgaW50IF9fb2ZfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGRldmljZV9ub2RlICpucCxcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbitkb25lOlxcbitcXHRkZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkoXFx1MDAyNm1kaW8tXFx1MDAzZWRldik7XFxuK1xcbiBcXHRyZXR1cm4gMDtcXG4gXFxuIHB1dF91bnJlZ2lzdGVyOlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL29mL3Byb3BlcnR5LmMgYi9kcml2ZXJzL29mL3Byb3BlcnR5LmNcXG5pbmRleCA3MmNmMTI5MDdkZTAzLi5mMjliYTgxOGVjYmMxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvb2YvcHJvcGVydHkuY1xcbisrKyBiL2RyaXZlcnMvb2YvcHJvcGVydHkuY1xcbkBAIC0xMjcyLDYgKzEyNzIsMjAgQEAgc3RhdGljIHZvaWQgb2ZfbGlua190b19waGFuZGxlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqY29uX25wLFxcbiBcXHRcXHR0bXBfbnAgPSBvZl9nZXRfbmV4dF9wYXJlbnQodG1wX25wKTtcXG4gXFx0fVxcbiBcXG4rXFx0LypcXG4rXFx0ICogQW4gRXRoZXJuZXQgUEhZIHBhY2thZ2Ugbm9kZSBkZXNjcmliZXMgcmVzb3VyY2VzIHNoYXJlZCBieSBpdHMgbWVtYmVyXFxuK1xcdCAqIFBIWXMsIGJ1dCBpcyBub3QgcG9wdWxhdGVkIGFzIGEgc3RydWN0IGRldmljZS4gTGluayBldmVyeSBlbmFibGVkXFxuK1xcdCAqIG1lbWJlciBQSFkgdG8gdGhvc2Ugc3VwcGxpZXJzIHNvIGZ3X2RldmxpbmsgY2FuIHVzZSB0aGUgcmVhbCBjb25zdW1lclxcbitcXHQgKiBkZXZpY2VzIGluc3RlYWQgb2YgbGVhdmluZyBhIHByb3h5IGxpbmsgb24gdGhlIE1ESU8gYnVzIGluZGVmaW5pdGVseS5cXG4rXFx0ICovXFxuK1xcdGlmIChvZl9ub2RlX25hbWVfZXEoY29uX25wLCBcXFwiZXRoZXJuZXQtcGh5LXBhY2thZ2VcXFwiKSkge1xcbitcXHRcXHRmb3JfZWFjaF9hdmFpbGFibGVfY2hpbGRfb2Zfbm9kZV9zY29wZWQoY29uX25wLCBjaGlsZClcXG4rXFx0XFx0XFx0Zndub2RlX2xpbmtfYWRkKG9mX2Z3bm9kZV9oYW5kbGUoY2hpbGQpLFxcbitcXHRcXHRcXHRcXHRcXHRvZl9md25vZGVfaGFuZGxlKHN1cF9ucCksIGZsYWdzKTtcXG4rXFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4gXFx0Zndub2RlX2xpbmtfYWRkKG9mX2Z3bm9kZV9oYW5kbGUoY29uX25wKSwgb2ZfZndub2RlX2hhbmRsZShzdXBfbnApLCBmbGFncyk7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGV2aWNlLmggYi9pbmNsdWRlL2xpbnV4L2RldmljZS5oXFxuaW5kZXggYWVlNzlmZDZiMzJiNC4uOGFmYjlmMmIwZDgyNSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2RldmljZS5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9kZXZpY2UuaFxcbkBAIC0xMzgxLDYgKzEzODEsNyBAQCBzdHJ1Y3QgZGV2aWNlX2xpbmsgKmRldmljZV9saW5rX2FkZChzdHJ1Y3QgZGV2aWNlICpjb25zdW1lcixcXG4gXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBkZXZpY2UgKnN1cHBsaWVyLCB1MzIgZmxhZ3MpO1xcbiB2b2lkIGRldmljZV9saW5rX2RlbChzdHJ1Y3QgZGV2aWNlX2xpbmsgKmxpbmspO1xcbiB2b2lkIGRldmljZV9saW5rX3JlbW92ZSh2b2lkICpjb25zdW1lciwgc3RydWN0IGRldmljZSAqc3VwcGxpZXIpO1xcbit2b2lkIGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seShzdHJ1Y3QgZGV2aWNlICpkZXYpO1xcbiB2b2lkIGRldmljZV9saW5rc19zdXBwbGllcl9zeW5jX3N0YXRlX3BhdXNlKHZvaWQpO1xcbiB2b2lkIGRldmljZV9saW5rc19zdXBwbGllcl9zeW5jX3N0YXRlX3Jlc3VtZSh2b2lkKTtcXG4gdm9pZCBkZXZpY2VfbGlua193YWl0X3JlbW92YWwodm9pZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAxOjAxOjU4LjUzNTY4NDUyN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI0ODYzNjA2MjMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk9GXCIsXG4gICAgXCJPRl9NRElPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5XCIsXG4gICAgXCJfX2RldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seVwiLFxuICAgIFwib2ZfbGlua190b19waGFuZGxlXCIsXG4gICAgXCJfX29mX21kaW9idXNfcmVnaXN0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGRldmljZSBsaW5rIG1hbmFnZW1lbnQgYW5kIE9GIHByb3BlcnR5IHBhcnNpbmcsIHNwZWNpZmljYWxseSBhZGRpbmcgYSBuZXcgZnVuY3Rpb24gYGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seWAgYW5kIGhhbmRsaW5nIGBldGhlcm5ldC1waHktcGFja2FnZWAgbm9kZXMgaW4gYG9mX2xpbmtfdG9fcGhhbmRsZWAuIFRoZXNlIGFyZSBjb3JlIGtlcm5lbCBjb21wb25lbnRzIGFuZCByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyMzk1NDdiYzhmMDk3ZDVjYjgwMDZiNzUwYzUzNmQwY2Q0MzBkZmMyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMTUgMDE6MDE6NTcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2UvY29yZS5jIGIvZHJpdmVycy9iYXNlL2NvcmUuY1xuaW5kZXggNGQwMjY2ODI5NDRmMi4uNjI3ZmNmYTI3NGYwZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmFzZS9jb3JlLmNcbisrKyBiL2RyaXZlcnMvYmFzZS9jb3JlLmNcbkBAIC0xMzA1LDYgKzEzMDUsNTcgQEAgc3RhdGljIHZvaWQgZGV2aWNlX2xpbmtfZHJvcF9tYW5hZ2VkKHN0cnVjdCBkZXZpY2VfbGluayAqbGluaylcbiBcdGtyZWZfcHV0KFx1MDAyNmxpbmstXHUwMDNla3JlZiwgX19kZXZpY2VfbGlua19kZWwpO1xuIH1cbiBcbisvKiBDYWxsZXIgbXVzdCBob2xkIHRoZSBkZXZpY2UgbGlua3Mgd3JpdGUgbG9jay4gKi9cbitzdGF0aWMgdm9pZCBfX2RldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seShzdHJ1Y3QgZGV2aWNlICpkZXYsXG4rXHRcdFx0XHRcdFx0c3RydWN0IGxpc3RfaGVhZCAqc3luY19saXN0KVxuK3tcbitcdHN0cnVjdCBkZXZpY2VfbGluayAqbGluaywgKmxuO1xuK1xuK1x0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGxpbmssIGxuLCBcdTAwMjZkZXYtXHUwMDNlbGlua3Muc3VwcGxpZXJzLCBjX25vZGUpIHtcbitcdFx0c3RydWN0IGRldmljZSAqc3VwcGxpZXI7XG4rXG4rXHRcdGlmICghZGV2aWNlX2xpbmtfdGVzdChsaW5rLCBETF9GTEFHX01BTkFHRUQpIHx8XG4rXHRcdCAgICAhZGV2aWNlX2xpbmtfdGVzdChsaW5rLCBETF9GTEFHX1NZTkNfU1RBVEVfT05MWSkpXG4rXHRcdFx0Y29udGludWU7XG4rXG4rXHRcdC8qXG4rXHRcdCAqIERMX0ZMQUdfU1lOQ19TVEFURV9PTkxZIGV4Y2x1ZGVzIGFsbCBvdGhlciBtYW5hZ2VkIGxpbmsgZmxhZ3MsXG4rXHRcdCAqIHNvIGl0IGlzIHNhZmUgdG8gZHJvcCB0aGUgbWFuYWdlZCBsaW5rIGNvbXBsZXRlbHkuXG4rXHRcdCAqL1xuK1x0XHRzdXBwbGllciA9IGxpbmstXHUwMDNlc3VwcGxpZXI7XG4rXHRcdGRldmljZV9saW5rX2Ryb3BfbWFuYWdlZChsaW5rKTtcbitcbitcdFx0aWYgKGRlZmVyX3N5bmNfc3RhdGVfY291bnQpXG4rXHRcdFx0X19kZXZpY2VfbGlua3Nfc3VwcGxpZXJfZGVmZXJfc3luYyhzdXBwbGllcik7XG4rXHRcdGVsc2VcbitcdFx0XHRfX2RldmljZV9saW5rc19xdWV1ZV9zeW5jX3N0YXRlKHN1cHBsaWVyLCBzeW5jX2xpc3QpO1xuK1x0fVxuK31cbitcbisvKipcbisgKiBkZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkgLSBEcm9wIG1hbmFnZWQgc3luYy1zdGF0ZS1vbmx5IGxpbmtzXG4rICogQGRldjogQ29uc3VtZXIgZGV2aWNlIHdob3NlIHByb3h5IGxpbmtzIHNob3VsZCBiZSBkcm9wcGVkXG4rICpcbisgKiBGcmFtZXdvcmtzIHdoaWNoIHBvcHVsYXRlIGNoaWxkIGRldmljZXMgYmVsb3cgYSBkcml2ZXJsZXNzIGRldmljZSBjYW4gY2FsbFxuKyAqIHRoaXMgYWZ0ZXIgYWRkaW5nIGFsbCBvZiB0aGUgY2hpbGRyZW4uIFRoZSBjaGlsZHJlbiB3aWxsIGhhdmUgYWNxdWlyZWQgdGhlaXJcbisgKiBvd24gbGlua3MgYnkgdGhlbiwgc28gdGhlIHRlbXBvcmFyeSBsaW5rcyB3aGljaCBvbmx5IHByZXZlbnQgc3VwcGxpZXJzIGZyb21cbisgKiByZWNlaXZpbmcgc3luY19zdGF0ZSgpIGNhbGxiYWNrcyBhcmUgbm8gbG9uZ2VyIG5lZWRlZC5cbisgKlxuKyAqIFJlLWV2YWx1YXRlIGVhY2ggYWZmZWN0ZWQgc3VwcGxpZXIgZm9yIGEgc3luY19zdGF0ZSgpIGNhbGxiYWNrIGFmdGVyIGl0c1xuKyAqIGxpbmsgaXMgZHJvcHBlZC5cbisgKi9cbit2b2lkIGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4re1xuK1x0TElTVF9IRUFEKHN5bmNfbGlzdCk7XG4rXG4rXHRkZXZpY2VfbGlua3Nfd3JpdGVfbG9jaygpO1xuK1x0X19kZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkoZGV2LCBcdTAwMjZzeW5jX2xpc3QpO1xuK1x0ZGV2aWNlX2xpbmtzX3dyaXRlX3VubG9jaygpO1xuK1xuK1x0ZGV2aWNlX2xpbmtzX2ZsdXNoX3N5bmNfbGlzdChcdTAwMjZzeW5jX2xpc3QsIE5VTEwpO1xuK31cbitFWFBPUlRfU1lNQk9MX0dQTChkZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkpO1xuK1xuIHN0YXRpYyBzc2l6ZV90IHdhaXRpbmdfZm9yX3N1cHBsaWVyX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuIFx0XHRcdFx0XHQgY29uc3Qgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4gXHRcdFx0XHRcdCBjaGFyICpidWYpXG5AQCAtMTQxOCw2ICsxNDY5LDggQEAgdm9pZCBkZXZpY2VfbGlua3NfZHJpdmVyX2JvdW5kKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdGVsc2VcbiBcdFx0X19kZXZpY2VfbGlua3NfcXVldWVfc3luY19zdGF0ZShkZXYsIFx1MDAyNnN5bmNfbGlzdCk7XG4gXG4rXHRfX2RldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seShkZXYsIFx1MDAyNnN5bmNfbGlzdCk7XG4rXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobGluaywgbG4sIFx1MDAyNmRldi1cdTAwM2VsaW5rcy5zdXBwbGllcnMsIGNfbm9kZSkge1xuIFx0XHRzdHJ1Y3QgZGV2aWNlICpzdXBwbGllcjtcbiBcbkBAIC0xNDI1LDE3ICsxNDc4LDEwIEBAIHZvaWQgZGV2aWNlX2xpbmtzX2RyaXZlcl9ib3VuZChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdHN1cHBsaWVyID0gbGluay1cdTAwM2VzdXBwbGllcjtcbi1cdFx0aWYgKGRldmljZV9saW5rX3Rlc3QobGluaywgRExfRkxBR19TWU5DX1NUQVRFX09OTFkpKSB7XG4tXHRcdFx0Lypcbi1cdFx0XHQgKiBXaGVuIERMX0ZMQUdfU1lOQ19TVEFURV9PTkxZIGlzIHNldCwgaXQgbWVhbnMgbm9cbi1cdFx0XHQgKiBvdGhlciBETF9NQU5BR0VEX0xJTktfRkxBR1MgaGF2ZSBiZWVuIHNldC4gU28sIGl0J3Ncbi1cdFx0XHQgKiBzYXZlIHRvIGRyb3AgdGhlIG1hbmFnZWQgbGluayBjb21wbGV0ZWx5LlxuLVx0XHRcdCAqL1xuLVx0XHRcdGRldmljZV9saW5rX2Ryb3BfbWFuYWdlZChsaW5rKTtcbi1cdFx0fSBlbHNlIGlmIChkZXZfaXNfYmVzdF9lZmZvcnQoZGV2KSBcdTAwMjZcdTAwMjZcbi1cdFx0XHQgICBkZXZpY2VfbGlua190ZXN0KGxpbmssIERMX0ZMQUdfSU5GRVJSRUQpIFx1MDAyNlx1MDAyNlxuLVx0XHRcdCAgIGxpbmstXHUwMDNlc3RhdHVzICE9IERMX1NUQVRFX0NPTlNVTUVSX1BST0JFIFx1MDAyNlx1MDAyNlxuLVx0XHRcdCAgICFkZXZfY2FuX21hdGNoKGxpbmstXHUwMDNlc3VwcGxpZXIpKSB7XG4rXHRcdGlmIChkZXZfaXNfYmVzdF9lZmZvcnQoZGV2KSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIGRldmljZV9saW5rX3Rlc3QobGluaywgRExfRkxBR19JTkZFUlJFRCkgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICBsaW5rLVx1MDAzZXN0YXR1cyAhPSBETF9TVEFURV9DT05TVU1FUl9QUk9CRSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgICFkZXZfY2FuX21hdGNoKGxpbmstXHUwMDNlc3VwcGxpZXIpKSB7XG4gXHRcdFx0LypcbiBcdFx0XHQgKiBXaGVuIGRldl9pc19iZXN0X2VmZm9ydCgpIGlzIHRydWUsIHdlIGlnbm9yZSBkZXZpY2VcbiBcdFx0XHQgKiBsaW5rcyB0byBzdXBwbGllcnMgdGhhdCBkb24ndCBoYXZlIGEgZHJpdmVyLiAgSWYgdGhlXG5AQCAtMTQ0OSwxMiArMTQ5NSw2IEBAIHZvaWQgZGV2aWNlX2xpbmtzX2RyaXZlcl9ib3VuZChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRcdFx0V1JJVEVfT05DRShsaW5rLVx1MDAzZXN0YXR1cywgRExfU1RBVEVfQUNUSVZFKTtcbiBcdFx0fVxuIFxuLVx0XHQvKlxuLVx0XHQgKiBUaGlzIG5lZWRzIHRvIGJlIGRvbmUgZXZlbiBmb3IgdGhlIGRlbGV0ZWRcbi1cdFx0ICogRExfRkxBR19TWU5DX1NUQVRFX09OTFkgZGV2aWNlIGxpbmsgaW4gY2FzZSBpdCB3YXMgdGhlIGxhc3Rcbi1cdFx0ICogZGV2aWNlIGxpbmsgdGhhdCB3YXMgcHJldmVudGluZyB0aGUgc3VwcGxpZXIgZnJvbSBnZXR0aW5nIGFcbi1cdFx0ICogc3luY19zdGF0ZSgpIGNhbGwuXG4tXHRcdCAqL1xuIFx0XHRpZiAoZGVmZXJfc3luY19zdGF0ZV9jb3VudClcbiBcdFx0XHRfX2RldmljZV9saW5rc19zdXBwbGllcl9kZWZlcl9zeW5jKHN1cHBsaWVyKTtcbiBcdFx0ZWxzZVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jIGIvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmNcbmluZGV4IGI4ZDI5OGMwNGQzZmYuLjQ5ZjliNDA2MmNmNWMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uY1xuKysrIGIvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmNcbkBAIC0yMjksNyArMjI5LDcgQEAgaW50IF9fb2ZfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGRldmljZV9ub2RlICpucCxcbiBcdFx0Z290byB1bnJlZ2lzdGVyO1xuIFxuIFx0aWYgKCFzY2FucGh5cylcbi1cdFx0cmV0dXJuIDA7XG4rXHRcdGdvdG8gZG9uZTtcbiBcbiBcdC8qIGF1dG8gc2NhbiBmb3IgUEhZcyB3aXRoIGVtcHR5IHJlZyBwcm9wZXJ0eSAqL1xuIFx0Zm9yX2VhY2hfYXZhaWxhYmxlX2NoaWxkX29mX25vZGUobnAsIGNoaWxkKSB7XG5AQCAtMjYxLDYgKzI2MSw5IEBAIGludCBfX29mX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKm1kaW8sIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsXG4gXHRcdH1cbiBcdH1cbiBcbitkb25lOlxuK1x0ZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KFx1MDAyNm1kaW8tXHUwMDNlZGV2KTtcbitcbiBcdHJldHVybiAwO1xuIFxuIHB1dF91bnJlZ2lzdGVyOlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvb2YvcHJvcGVydHkuYyBiL2RyaXZlcnMvb2YvcHJvcGVydHkuY1xuaW5kZXggNzJjZjEyOTA3ZGUwMy4uZjI5YmE4MThlY2JjMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvb2YvcHJvcGVydHkuY1xuKysrIGIvZHJpdmVycy9vZi9wcm9wZXJ0eS5jXG5AQCAtMTI3Miw2ICsxMjcyLDIwIEBAIHN0YXRpYyB2b2lkIG9mX2xpbmtfdG9fcGhhbmRsZShzdHJ1Y3QgZGV2aWNlX25vZGUgKmNvbl9ucCxcbiBcdFx0dG1wX25wID0gb2ZfZ2V0X25leHRfcGFyZW50KHRtcF9ucCk7XG4gXHR9XG4gXG4rXHQvKlxuK1x0ICogQW4gRXRoZXJuZXQgUEhZIHBhY2thZ2Ugbm9kZSBkZXNjcmliZXMgcmVzb3VyY2VzIHNoYXJlZCBieSBpdHMgbWVtYmVyXG4rXHQgKiBQSFlzLCBidXQgaXMgbm90IHBvcHVsYXRlZCBhcyBhIHN0cnVjdCBkZXZpY2UuIExpbmsgZXZlcnkgZW5hYmxlZFxuK1x0ICogbWVtYmVyIFBIWSB0byB0aG9zZSBzdXBwbGllcnMgc28gZndfZGV2bGluayBjYW4gdXNlIHRoZSByZWFsIGNvbnN1bWVyXG4rXHQgKiBkZXZpY2VzIGluc3RlYWQgb2YgbGVhdmluZyBhIHByb3h5IGxpbmsgb24gdGhlIE1ESU8gYnVzIGluZGVmaW5pdGVseS5cbitcdCAqL1xuK1x0aWYgKG9mX25vZGVfbmFtZV9lcShjb25fbnAsIFwiZXRoZXJuZXQtcGh5LXBhY2thZ2VcIikpIHtcbitcdFx0Zm9yX2VhY2hfYXZhaWxhYmxlX2NoaWxkX29mX25vZGVfc2NvcGVkKGNvbl9ucCwgY2hpbGQpXG4rXHRcdFx0Zndub2RlX2xpbmtfYWRkKG9mX2Z3bm9kZV9oYW5kbGUoY2hpbGQpLFxuK1x0XHRcdFx0XHRvZl9md25vZGVfaGFuZGxlKHN1cF9ucCksIGZsYWdzKTtcbitcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuIFx0Zndub2RlX2xpbmtfYWRkKG9mX2Z3bm9kZV9oYW5kbGUoY29uX25wKSwgb2ZfZndub2RlX2hhbmRsZShzdXBfbnApLCBmbGFncyk7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGV2aWNlLmggYi9pbmNsdWRlL2xpbnV4L2RldmljZS5oXG5pbmRleCBhZWU3OWZkNmIzMmI0Li44YWZiOWYyYjBkODI1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9kZXZpY2UuaFxuKysrIGIvaW5jbHVkZS9saW51eC9kZXZpY2UuaFxuQEAgLTEzODEsNiArMTM4MSw3IEBAIHN0cnVjdCBkZXZpY2VfbGluayAqZGV2aWNlX2xpbmtfYWRkKHN0cnVjdCBkZXZpY2UgKmNvbnN1bWVyLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBkZXZpY2UgKnN1cHBsaWVyLCB1MzIgZmxhZ3MpO1xuIHZvaWQgZGV2aWNlX2xpbmtfZGVsKHN0cnVjdCBkZXZpY2VfbGluayAqbGluayk7XG4gdm9pZCBkZXZpY2VfbGlua19yZW1vdmUodm9pZCAqY29uc3VtZXIsIHN0cnVjdCBkZXZpY2UgKnN1cHBsaWVyKTtcbit2b2lkIGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seShzdHJ1Y3QgZGV2aWNlICpkZXYpO1xuIHZvaWQgZGV2aWNlX2xpbmtzX3N1cHBsaWVyX3N5bmNfc3RhdGVfcGF1c2Uodm9pZCk7XG4gdm9pZCBkZXZpY2VfbGlua3Nfc3VwcGxpZXJfc3luY19zdGF0ZV9yZXN1bWUodm9pZCk7XG4gdm9pZCBkZXZpY2VfbGlua193YWl0X3JlbW92YWwodm9pZCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMTowMTo1OC41MzU2ODYwNDdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTMyNTI4OTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IEFzc2Vzc21lbnQ6IERldmljZSBMaW5rIGFuZCBPRiBQcm9wZXJ0eSBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0J3MgbWFraW5nIHNvbWUgbW9kaWZpY2F0aW9ucyByZWxhdGVkIHRvIGRldmljZSBsaW5rcyBhbmQgdGhlIE9wZW4gRmlybXdhcmUgKE9GKSBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSB0b3VjaGluZyBvbiBgZHJpdmVycy9iYXNlL2NvcmUuY2AsIGBkcml2ZXJzL29mL3Byb3BlcnR5LmNgLCBhbmQgYGRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jYC4gVGhpcyBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QgYmVjYXVzZSB3ZSdyZSB0YWxraW5nIGFib3V0IGNvcmUga2VybmVsIGNvbXBvbmVudHMgaGVyZSDigJMgdGhlIGRldmljZSBsaW5rIG1hbmFnZW1lbnQgYW5kIE9GIHBhcnNpbmcgY29kZSBhcmUgY3JpdGljYWwuIEFueSBpbnN0YWJpbGl0eSBpbiB0aGVzZSBhcmVhcyBjb3VsZCBoYXZlIHdpZGUtcmVhY2hpbmcgaW1wbGljYXRpb25zLlxuXG5MZXQncyBkaXZlIGluLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBgZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5YCBhbmQgY2FsbHMgaXQgZnJvbSBgX19vZl9tZGlvYnVzX3JlZ2lzdGVyYCB3aXRoaW4gdGhlIE1ESU8gZHJpdmVyLiBJdCBhbHNvIGludHJvZHVjZXMgYSBzcGVjaWFsIGNhc2UgaW4gYG9mX2xpbmtfdG9fcGhhbmRsZWAgZm9yIGBldGhlcm5ldC1waHktcGFja2FnZWAgbm9kZXMuIFRoZSBxdWVzdGlvbiBpcywgYXJlIHRoZXNlIGNoYW5nZXMgcmVhY2hhYmxlIGFuZCB3b3J0aCB0YXJnZXRpbmcgd2l0aCBmdXp6aW5nP1xuXG5GaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5YCBpcyBhY3R1YWxseSBleHBvcnRlZCBhbmQgdXNlZC4gWWVwLCBpdCBpcyBleHBvcnRlZCBhbmQgdXNlZCBpbiBgX19vZl9tZGlvYnVzX3JlZ2lzdGVyYCwgc28gdGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTmV4dCwgSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCBgb2ZfbGlua190b19waGFuZGxlYCBpcyByZWFjaGFibGUuIFllcCwgaXQgZ2V0cyBjYWxsZWQgZHVyaW5nIE9GIGRldmljZSBsaW5rIGNyZWF0aW9uLlxuXG5HaXZlbiB0aGUgcG90ZW50aWFsIGltcGFjdCBvbiBkZXZpY2UgbGlua3MsIE9GIHByb3BlcnR5IHBhcnNpbmcsIGFuZCB0aGUgY29yZSBuYXR1cmUgb2YgdGhlIGludm9sdmVkIGNvZGUsIHRoaXMgKmRlZmluaXRlbHkqIHNlZW1zIGxpa2UgYSB3b3J0aHdoaWxlIGZ1enppbmcgdGFyZ2V0LiBUaGUga2V5IHN5bWJvbHMgdG8gZm9jdXMgb24gYXJlIGBkZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHlgLCBgX19kZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHlgLCBgb2ZfbGlua190b19waGFuZGxlYCwgYW5kIGBfX29mX21kaW9idXNfcmVnaXN0ZXJgLlxuXG5Ob3csIGxldCdzIHNlZSB3aGF0IGNvbmZpZ3MgYXJlIHJlcXVpcmVkIHRvIGVuYWJsZSB0aGlzIGZ1bmN0aW9uYWxpdHkuIFdlJ2xsIG5lZWQgYENPTkZJR19PRmAgZm9yIGJvdGggYGRyaXZlcnMvb2YvcHJvcGVydHkuY2AgYW5kIGBkcml2ZXJzL25ldC9tZGlvL29mX21kaW8uY2AuIFdlJ2xsIGFsc28gbmVlZCBgQ09ORklHX09GX01ESU9gIHNwZWNpZmljYWxseSBmb3IgdGhlIE1ESU8gZHJpdmVyLiBXZSBtaWdodCBhbHNvIG5lZWQgZWl0aGVyIGBDT05GSUdfTURJT19ERVZJQ0VgIG9yIGBDT05GSUdfUEhZTElCYC4gRmluYWxseSwgbGV0IG1lIGp1c3QgY29uZmlybSB0aGUgbG9jYXRpb24gb2YgYF9fb2ZfbWRpb2J1c19yZWdpc3RlcmAgaW4gYGRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk4OCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAxOjAyOjA1LjY2ODIxODU1M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjA2MzAxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX29mX21kaW9idXNfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9MTM5PXN0YXRpYyBpbnQgX19vZl9tZGlvYnVzX3BhcnNlX3BoeXMoc3RydWN0IG1paV9idXMgKm1kaW8sIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0xODYtLyoqXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6MTg3OiAqIF9fb2ZfbWRpb2J1c19yZWdpc3RlciAtIFJlZ2lzdGVyIG1paV9idXMgYW5kIGNyZWF0ZSBQSFlzIGZyb20gdGhlIGRldmljZSB0cmVlXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMTg4LSAqIEBtZGlvOiBwb2ludGVyIHRvIG1paV9idXMgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0xOTQtICovXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6MTk1OmludCBfX29mX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKm1kaW8sIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMTk2LVxcdFxcdFxcdCAgc3RydWN0IG1vZHVsZSAqb3duZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0yNzQtfVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjI3NTpFWFBPUlRfU1lNQk9MKF9fb2ZfbWRpb2J1c19yZWdpc3Rlcik7XFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMjc2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMTowMjowNS43MjQyODY4MDdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzQzMjY3NzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgQ2hlY2sqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIGxldCdzIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWd1cmF0aW9ucyBhcmUgcmVsZXZhbnQgdG8gdGhlIGBkcml2ZXJzL25ldC9tZGlvL29mX21kaW8uY2AgZmlsZS4gVGhpcyBzcGVjaWZpYyBmaWxlIGRlYWxzIHdpdGggTURJTyAoTWFuYWdlbWVudCBEYXRhIElucHV0L091dHB1dCkgaW50ZXJmYWNlcyBhY2Nlc3NlZCB2aWEgZGV2aWNlIHRyZWUgYmluZGluZ3MuIEknbSBnb2luZyB0byBsb29rIGZvciBhbnkgZGVwZW5kZW5jaWVzIG9yIG9wdGlvbnMgdGhhdCBkaXJlY3RseSBlbmFibGUgb3IgZGlzYWJsZSBzdXBwb3J0IGZvciB0aGlzIHNwZWNpZmljIGRyaXZlci4gSXQncyBsaWtlbHkgdGhhdCB0aGVyZSdzIGEgS2NvbmZpZyBvcHRpb24gdGhhdCBlbmFibGVzIHRoZSBlbnRpcmUgTURJTyBzdWJzeXN0ZW0sIGFuZCB0aGVuIHBvdGVudGlhbGx5IHNvbWUgbW9yZSBzcGVjaWZpYyBvcHRpb25zIGZvciBkZXZpY2UgdHJlZSBzdXBwb3J0IHdpdGhpbiBNRElPLiBJJ2xsIG5lZWQgdG8gdHJhY2UgdGhyb3VnaCB0aGUgS2NvbmZpZyBoaWVyYXJjaHksIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGFmZmVjdCB3aGV0aGVyIHRoaXMgZHJpdmVyIGdldHMgY29tcGlsZWQgaW50byB0aGUga2VybmVsIGltYWdlLiBJJ2xsIGFsc28gYmUgb24gdGhlIGxvb2tvdXQgZm9yIGFueSBvcHRpb25zIHRoYXQgY291bGQgYmUgcmVsZXZhbnQgdG8gZGVidWdnaW5nIG9yIHNlbGVjdGluZyBhIHNwZWNpZmljIE1ESU8gY29udHJvbGxlciB2YXJpYW50LCBpbiBjYXNlIHRoZXJlIGFyZSBtdWx0aXBsZSBpbXBsZW1lbnRhdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIHBhdGggY2xlYXJseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMyNiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAxOjAyOjA5LjA2NzU1ODQ5OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODE3NDkzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvZl9tZGlvXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZT01PW9iai0kKENPTkZJR19GV05PREVfTURJTylcXHQrPSBmd25vZGVfbWRpby5vXFxuZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19PRl9NRElPKVxcdFxcdCs9IG9mX21kaW8ub1xcbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGUtNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDE6MDI6MDkuMTE1NzQ0MjYzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjY2NTk2NTcxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipLY29uZmlnIGFuZCB0aGUgTURJTyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFdoZW5ldmVyIEknbSB0YWNrbGluZyBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgT3BlbiBGaXJtd2FyZSAoT0YpIE1ESU8gYnVzLCB0aGUgZmlyc3QgcGxhY2UgSSBhbHdheXMgZ28gaXMgdGhlIEtjb25maWcgZmlsZXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBgQ09ORklHX09GX01ESU9gIGlzIGVuYWJsZWQuIEl0J3MgdGhlIGx5bmNocGluLCByZWFsbHkuIFRoYXQgY29uZmlndXJhdGlvbiBvcHRpb24gY29udHJvbHMgdGhlIGNvcmUgaW5mcmFzdHJ1Y3R1cmUgZm9yIHVzaW5nIE1ESU8gZGV2aWNlcyBkZXNjcmliZWQgd2l0aCBPRi4gSWYgaXQncyBub3Qgc2V0LCBJJ20gYmFzaWNhbGx5IGRlYWQgaW4gdGhlIHdhdGVyIHdoZW4gaXQgY29tZXMgdG8gYW55IE9GLWRyaXZlbiBNRElPIGNvbW11bmljYXRpb24uIFNvLCBzdGVwIG9uZTogdmVyaWZ5IHRoYXQga2V5IGNvbmZpZyBvcHRpb24uIEV2ZXJ5dGhpbmcgaGluZ2VzIG9uIHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2ODYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMTowMjoxMS43ODE3MTI5NTRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg0MDk3MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE9GX01ESU9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbWRpby9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZz05PWNvbmZpZyBGV05PREVfTURJT1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTEzLVxcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZzoxNDpjb25maWcgT0ZfTURJT1xcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZy0xNS1cXHRkZWZfdHJpc3RhdGUgT0ZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDE6MDI6MTEuODMwMTMxOTg5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgxNTkxMzUzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ29uc2lkZXJpbmcgT0ZfTURJTyBhbmQgS2NvbmZpZyoqXG5cblJpZ2h0LCBzbyBgT0ZfTURJT2AgaXMgYXV0b21hdGljYWxseSBlbmFibGVkIHdoZW4gYE9GYCBpcyBlbmFibGVkIOKAkyBhIHByZXR0eSBzdGFuZGFyZCBkZXBlbmRlbmN5LiBOb3csIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBpbXBsaWNpdCBkZXBlbmRlbmN5IGZvciBteSBjdXJyZW50IHByb2plY3QuIFRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gc3VycHJpc2VzIG9yIGNvbmZsaWN0cyBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGUgS2NvbmZpZyBpbiBgZHJpdmVycy9vZi9wcm9wZXJ0eS5jYC4gSSBoYXZlIGEgZmVlbGluZyBJJ2xsIGZpbmQgYE9GX01ESU89eWAgc29tZXdoZXJlIG5lYXIgYE9GPXlgLCBidXQgaXQncyBhbHdheXMgYmVzdCB0byBjb25maXJtIGFuZCBydWxlIG91dCBhbnkgY29uZGl0aW9uYWwgbG9naWMgdGhhdCBtaWdodCBiZSBpbnZvbHZlZC4gR290dGEgY292ZXIgYWxsIG15IGJhc2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTczLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDE6MDI6MTQuNjQ2MDQ4Mzk1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODM3OTE5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwcm9wZXJ0eVxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL29mL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvb2YvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuZHJpdmVycy9vZi9NYWtlZmlsZToyOm9iai15ID0gYmFzZS5vIGNwdS5vIGRldmljZS5vIG1vZHVsZS5vIHBsYXRmb3JtLm8gcHJvcGVydHkub1xcbmRyaXZlcnMvb2YvTWFrZWZpbGUtMy1vYmotJChDT05GSUdfT0ZfS09CSikgKz0ga29iai5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAxOjAyOjE0LjY5NDQzMzM0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2MTU2NjMyNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gQ29udGV4dCoqXG5cbk9rYXksIHNvIEknbSBmb2N1c2luZyBvbiBrZXJuZWwgY29uZmlndXJhdGlvbiwgYW5kIGl0IGxvb2tzIGxpa2UgYENPTkZJR19PRmAgaXMgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBvcHRpb24gSSBuZWVkIHRvIGJlIGNvbmNlcm5lZCB3aXRoIGluIHRoaXMgY29udGV4dC4gSXQncyB0aGUgbHluY2hwaW4uIExldCdzIGRpZyBpbnRvIHRoZSBkZXRhaWxzIGFuZCBmaW5kIGl0cyBkZWZpbml0aW9uLiBUbyBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBvcHRpb24gaXMgdXNlZCwgSSBzaG91bGQgbG9vayBhdCBgZHJpdmVycy9iYXNlL2NvcmUuY2AgYW5kIGl0cyBhc3NvY2lhdGVkIEtjb25maWcgZmlsZS4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgaXQncyBkZWZpbmVkIGFuZCBob3cgaXQgaW1wYWN0cyB0aGUgb3RoZXIga2VybmVsIGNvbXBvbmVudHMuIFRoaXMgaXMgYSBjb21tb24gcGF0dGVybiB3aGVuIHdvcmtpbmcgd2l0aCBkZXZpY2UgdHJlZSBlbmFibGVkIHN5c3RlbXMsIHNvIEkgbmVlZCB0byBjaGVjayBpdHMgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjI2OCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAxOjAyOjE3LjMxMDA5ODk4NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM2OTA4NjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29yZVxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jhc2UvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9iYXNlL01ha2VmaWxlLTMtXFxuZHJpdmVycy9iYXNlL01ha2VmaWxlOjQ6b2JqLXlcXHRcXHRcXHQ6PSBjb21wb25lbnQubyBjb3JlLm8gYnVzLm8gZGQubyBzeXNjb3JlLm8gXFxcXFxcbmRyaXZlcnMvYmFzZS9NYWtlZmlsZS01LVxcdFxcdFxcdCAgIGRyaXZlci5vIGNsYXNzLm8gcGxhdGZvcm0ubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAxOjAyOjE3LjM1Mzc5NDA5MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTY5MzI3MjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGFib3V0IGRldmljZSBsaW5rIGxvZ2ljLCBhbmQgaXQgbG9va3MgbGlrZSBhIHRhcmdldGVkIG1vZGlmaWNhdGlvbi4gVGhlIGNoYW5nZXMgYXJlIGZvY3VzZWQgb24gdGhlc2Ugc3BlY2lmaWMgc3ltYm9sczogYGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seWAsIGBfX2RldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seWAsIGBvZl9saW5rX3RvX3BoYW5kbGVgLCBhbmQgYF9fb2ZfbWRpb2J1c19yZWdpc3RlcmAuIFJpZ2h0IGF3YXksIHRoYXQgdGVsbHMgbWUgd2UncmUgbG9va2luZyBhdCBjb3JlIGZ1bmN0aW9uYWxpdHksIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIGhvdyBkZXZpY2VzIGFyZSBsaW5rZWQgdG9nZXRoZXIgYW5kIGhhbmRsZWQgd2l0aGluIHRoZSBrZXJuZWwuIFRoZSBmYWN0IHRoYXQgYG9mX2xpbmtfdG9fcGhhbmRsZWAgaXMgaW52b2x2ZWQgc3VnZ2VzdHMgT3BlbiBGaXJtd2FyZSAoT0YpIGlzIHBsYXlpbmcgYSBrZXkgcm9sZSwgYW5kIGxpa2VseSBgT0ZfTURJT2AgYXMgd2VsbCwgZ2l2ZW4gdGhlIGBfX29mX21kaW9idXNfcmVnaXN0ZXJgIHRvdWNoLlxuXG5UaGUgcGF0Y2ggaXRzZWxmIGRlYWxzIHdpdGggYGV0aGVybmV0LXBoeS1wYWNrYWdlYCB3aGljaCB0ZWxscyBtZSB0aGF0IHRoZXJlIGlzIGFuIGBPRmAgY29uZmlnIGFjdGl2ZSwgYW5kIHRoZXJlIG1heSBiZSBhbiBgT0ZfTURJT2AgY29uZmlnIGFsc28gYWN0aXZlLlxuXG5HaXZlbiB0aGUgc2NvcGUgYW5kIHJlYWNoIG9mIHRoZXNlIG1vZGlmaWNhdGlvbnMsIGFuZCB0aGUgY29yZSBuYXR1cmUgb2YgdGhlIGZ1bmN0aW9ucyBiZWluZyB0b3VjaGVkLCBJJ20gY29uZmlkZW50IHRoYXQgdGhpcyBpcyB3b3J0aCBleHBsb3JpbmcgZnVydGhlciwgZXNwZWNpYWxseSBmb3IgZnV6emluZy4gVGhlc2UgdHlwZXMgb2YgY2hhbmdlcyBhcmUgcHJpbWUgdGFyZ2V0cyBmb3IgZXhwb3Npbmcgc3VidGxlIGJ1Z3MgYW5kIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMuIEkgbmVlZCB0byBtYWtlIGEgbm90ZSB0byBzZXQgdGhlIHJlc3VsdHMgYW5kIGJlZ2luIGRlZXBlciBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU1MCwiT3V0cHV0VG9rZW5zIjoxNTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDE6MDI6MjMuMzIzMTIzODI4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzYxNjQ3NTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk9GXCIsXG4gICAgXCJPRl9NRElPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5XCIsXG4gICAgXCJfX2RldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seVwiLFxuICAgIFwib2ZfbGlua190b19waGFuZGxlXCIsXG4gICAgXCJfX29mX21kaW9idXNfcmVnaXN0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGRldmljZSBsaW5rIG1hbmFnZW1lbnQgYW5kIE9GIHByb3BlcnR5IHBhcnNpbmcsIHNwZWNpZmljYWxseSBhZGRpbmcgYSBuZXcgZnVuY3Rpb24gYGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seWAgYW5kIGhhbmRsaW5nIGBldGhlcm5ldC1waHktcGFja2FnZWAgbm9kZXMgaW4gYG9mX2xpbmtfdG9fcGhhbmRsZWAuIFRoZXNlIGFyZSBjb3JlIGtlcm5lbCBjb21wb25lbnRzIGFuZCByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk9GXCIsXG4gICAgXCJPRl9NRElPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5XCIsXG4gICAgXCJfX2RldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seVwiLFxuICAgIFwib2ZfbGlua190b19waGFuZGxlXCIsXG4gICAgXCJfX29mX21kaW9idXNfcmVnaXN0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGRldmljZSBsaW5rIG1hbmFnZW1lbnQgYW5kIE9GIHByb3BlcnR5IHBhcnNpbmcsIHNwZWNpZmljYWxseSBhZGRpbmcgYSBuZXcgZnVuY3Rpb24gYGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seWAgYW5kIGhhbmRsaW5nIGBldGhlcm5ldC1waHktcGFja2FnZWAgbm9kZXMgaW4gYG9mX2xpbmtfdG9fcGhhbmRsZWAuIFRoZXNlIGFyZSBjb3JlIGtlcm5lbCBjb21wb25lbnRzIGFuZCByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMTowMjoyMy4zOTkyOTQxNFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk4OTU2OTM3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAxOjAyOjIzLjM5OTc0NTkxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjc5ODkxMTI5MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGRldmljZSBsaW5rIG1hbmFnZW1lbnQgaW4gdGhlIGRyaXZlciBjb3JlIGFuZCBPRiBwcm9wZXJ0eSBwYXJzaW5nLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgRExfRkxBR19TWU5DX1NUQVRFX09OTFkgbGlua3MgYW5kIGV0aGVybmV0LXBoeS1wYWNrYWdlIG5vZGVzLiBUaGVzZSBjaGFuZ2VzIGludm9sdmUgbGlzdCBtYW5pcHVsYXRpb24sIGxvY2tpbmcsIGFuZCBkZXZpY2Ugbm9kZSB0cmF2ZXJzYWwuIFRoZXJlIGFyZSBubyBuZXcgYnVmZmVycyBhbGxvY2F0ZWQsIG5vIGRhdGEgY29waWVkIHRvIHVzZXJzcGFjZSwgYW5kIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQgb3IgbGVha2VkLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIGxvZ2ljYWwgZXJyb3JzLCB1c2UtYWZ0ZXItZnJlZXMsIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIGxvY2tpbmcgaXNzdWVzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLCBMT0NLREVQLCBhbmQgc3RhbmRhcmQga2VybmVsIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjM5NTQ3YmM4ZjA5N2Q1Y2I4MDA2Yjc1MGM1MzZkMGNkNDMwZGZjMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDE1IDAxOjAxOjU3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9iYXNlL2NvcmUuYyBiL2RyaXZlcnMvYmFzZS9jb3JlLmNcbmluZGV4IDRkMDI2NjgyOTQ0ZjIuLjYyN2ZjZmEyNzRmMGUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jhc2UvY29yZS5jXG4rKysgYi9kcml2ZXJzL2Jhc2UvY29yZS5jXG5AQCAtMTMwNSw2ICsxMzA1LDU3IEBAIHN0YXRpYyB2b2lkIGRldmljZV9saW5rX2Ryb3BfbWFuYWdlZChzdHJ1Y3QgZGV2aWNlX2xpbmsgKmxpbmspXG4gXHRrcmVmX3B1dChcdTAwMjZsaW5rLVx1MDAzZWtyZWYsIF9fZGV2aWNlX2xpbmtfZGVsKTtcbiB9XG4gXG4rLyogQ2FsbGVyIG11c3QgaG9sZCB0aGUgZGV2aWNlIGxpbmtzIHdyaXRlIGxvY2suICovXG4rc3RhdGljIHZvaWQgX19kZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkoc3RydWN0IGRldmljZSAqZGV2LFxuK1x0XHRcdFx0XHRcdHN0cnVjdCBsaXN0X2hlYWQgKnN5bmNfbGlzdClcbit7XG4rXHRzdHJ1Y3QgZGV2aWNlX2xpbmsgKmxpbmssICpsbjtcbitcbitcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShsaW5rLCBsbiwgXHUwMDI2ZGV2LVx1MDAzZWxpbmtzLnN1cHBsaWVycywgY19ub2RlKSB7XG4rXHRcdHN0cnVjdCBkZXZpY2UgKnN1cHBsaWVyO1xuK1xuK1x0XHRpZiAoIWRldmljZV9saW5rX3Rlc3QobGluaywgRExfRkxBR19NQU5BR0VEKSB8fFxuK1x0XHQgICAgIWRldmljZV9saW5rX3Rlc3QobGluaywgRExfRkxBR19TWU5DX1NUQVRFX09OTFkpKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1xuK1x0XHQvKlxuK1x0XHQgKiBETF9GTEFHX1NZTkNfU1RBVEVfT05MWSBleGNsdWRlcyBhbGwgb3RoZXIgbWFuYWdlZCBsaW5rIGZsYWdzLFxuK1x0XHQgKiBzbyBpdCBpcyBzYWZlIHRvIGRyb3AgdGhlIG1hbmFnZWQgbGluayBjb21wbGV0ZWx5LlxuK1x0XHQgKi9cbitcdFx0c3VwcGxpZXIgPSBsaW5rLVx1MDAzZXN1cHBsaWVyO1xuK1x0XHRkZXZpY2VfbGlua19kcm9wX21hbmFnZWQobGluayk7XG4rXG4rXHRcdGlmIChkZWZlcl9zeW5jX3N0YXRlX2NvdW50KVxuK1x0XHRcdF9fZGV2aWNlX2xpbmtzX3N1cHBsaWVyX2RlZmVyX3N5bmMoc3VwcGxpZXIpO1xuK1x0XHRlbHNlXG4rXHRcdFx0X19kZXZpY2VfbGlua3NfcXVldWVfc3luY19zdGF0ZShzdXBwbGllciwgc3luY19saXN0KTtcbitcdH1cbit9XG4rXG4rLyoqXG4rICogZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5IC0gRHJvcCBtYW5hZ2VkIHN5bmMtc3RhdGUtb25seSBsaW5rc1xuKyAqIEBkZXY6IENvbnN1bWVyIGRldmljZSB3aG9zZSBwcm94eSBsaW5rcyBzaG91bGQgYmUgZHJvcHBlZFxuKyAqXG4rICogRnJhbWV3b3JrcyB3aGljaCBwb3B1bGF0ZSBjaGlsZCBkZXZpY2VzIGJlbG93IGEgZHJpdmVybGVzcyBkZXZpY2UgY2FuIGNhbGxcbisgKiB0aGlzIGFmdGVyIGFkZGluZyBhbGwgb2YgdGhlIGNoaWxkcmVuLiBUaGUgY2hpbGRyZW4gd2lsbCBoYXZlIGFjcXVpcmVkIHRoZWlyXG4rICogb3duIGxpbmtzIGJ5IHRoZW4sIHNvIHRoZSB0ZW1wb3JhcnkgbGlua3Mgd2hpY2ggb25seSBwcmV2ZW50IHN1cHBsaWVycyBmcm9tXG4rICogcmVjZWl2aW5nIHN5bmNfc3RhdGUoKSBjYWxsYmFja3MgYXJlIG5vIGxvbmdlciBuZWVkZWQuXG4rICpcbisgKiBSZS1ldmFsdWF0ZSBlYWNoIGFmZmVjdGVkIHN1cHBsaWVyIGZvciBhIHN5bmNfc3RhdGUoKSBjYWxsYmFjayBhZnRlciBpdHNcbisgKiBsaW5rIGlzIGRyb3BwZWQuXG4rICovXG4rdm9pZCBkZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkoc3RydWN0IGRldmljZSAqZGV2KVxuK3tcbitcdExJU1RfSEVBRChzeW5jX2xpc3QpO1xuK1xuK1x0ZGV2aWNlX2xpbmtzX3dyaXRlX2xvY2soKTtcbitcdF9fZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KGRldiwgXHUwMDI2c3luY19saXN0KTtcbitcdGRldmljZV9saW5rc193cml0ZV91bmxvY2soKTtcbitcbitcdGRldmljZV9saW5rc19mbHVzaF9zeW5jX2xpc3QoXHUwMDI2c3luY19saXN0LCBOVUxMKTtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwoZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KTtcbitcbiBzdGF0aWMgc3NpemVfdCB3YWl0aW5nX2Zvcl9zdXBwbGllcl9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdFx0XHRcdFx0IGNvbnN0IHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuIFx0XHRcdFx0XHQgY2hhciAqYnVmKVxuQEAgLTE0MTgsNiArMTQ2OSw4IEBAIHZvaWQgZGV2aWNlX2xpbmtzX2RyaXZlcl9ib3VuZChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRlbHNlXG4gXHRcdF9fZGV2aWNlX2xpbmtzX3F1ZXVlX3N5bmNfc3RhdGUoZGV2LCBcdTAwMjZzeW5jX2xpc3QpO1xuIFxuK1x0X19kZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkoZGV2LCBcdTAwMjZzeW5jX2xpc3QpO1xuK1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGxpbmssIGxuLCBcdTAwMjZkZXYtXHUwMDNlbGlua3Muc3VwcGxpZXJzLCBjX25vZGUpIHtcbiBcdFx0c3RydWN0IGRldmljZSAqc3VwcGxpZXI7XG4gXG5AQCAtMTQyNSwxNyArMTQ3OCwxMCBAQCB2b2lkIGRldmljZV9saW5rc19kcml2ZXJfYm91bmQoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRzdXBwbGllciA9IGxpbmstXHUwMDNlc3VwcGxpZXI7XG4tXHRcdGlmIChkZXZpY2VfbGlua190ZXN0KGxpbmssIERMX0ZMQUdfU1lOQ19TVEFURV9PTkxZKSkge1xuLVx0XHRcdC8qXG4tXHRcdFx0ICogV2hlbiBETF9GTEFHX1NZTkNfU1RBVEVfT05MWSBpcyBzZXQsIGl0IG1lYW5zIG5vXG4tXHRcdFx0ICogb3RoZXIgRExfTUFOQUdFRF9MSU5LX0ZMQUdTIGhhdmUgYmVlbiBzZXQuIFNvLCBpdCdzXG4tXHRcdFx0ICogc2F2ZSB0byBkcm9wIHRoZSBtYW5hZ2VkIGxpbmsgY29tcGxldGVseS5cbi1cdFx0XHQgKi9cbi1cdFx0XHRkZXZpY2VfbGlua19kcm9wX21hbmFnZWQobGluayk7XG4tXHRcdH0gZWxzZSBpZiAoZGV2X2lzX2Jlc3RfZWZmb3J0KGRldikgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgZGV2aWNlX2xpbmtfdGVzdChsaW5rLCBETF9GTEFHX0lORkVSUkVEKSBcdTAwMjZcdTAwMjZcbi1cdFx0XHQgICBsaW5rLVx1MDAzZXN0YXR1cyAhPSBETF9TVEFURV9DT05TVU1FUl9QUk9CRSBcdTAwMjZcdTAwMjZcbi1cdFx0XHQgICAhZGV2X2Nhbl9tYXRjaChsaW5rLVx1MDAzZXN1cHBsaWVyKSkge1xuK1x0XHRpZiAoZGV2X2lzX2Jlc3RfZWZmb3J0KGRldikgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICBkZXZpY2VfbGlua190ZXN0KGxpbmssIERMX0ZMQUdfSU5GRVJSRUQpIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgbGluay1cdTAwM2VzdGF0dXMgIT0gRExfU1RBVEVfQ09OU1VNRVJfUFJPQkUgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICAhZGV2X2Nhbl9tYXRjaChsaW5rLVx1MDAzZXN1cHBsaWVyKSkge1xuIFx0XHRcdC8qXG4gXHRcdFx0ICogV2hlbiBkZXZfaXNfYmVzdF9lZmZvcnQoKSBpcyB0cnVlLCB3ZSBpZ25vcmUgZGV2aWNlXG4gXHRcdFx0ICogbGlua3MgdG8gc3VwcGxpZXJzIHRoYXQgZG9uJ3QgaGF2ZSBhIGRyaXZlci4gIElmIHRoZVxuQEAgLTE0NDksMTIgKzE0OTUsNiBAQCB2b2lkIGRldmljZV9saW5rc19kcml2ZXJfYm91bmQoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0XHRcdFdSSVRFX09OQ0UobGluay1cdTAwM2VzdGF0dXMsIERMX1NUQVRFX0FDVElWRSk7XG4gXHRcdH1cbiBcbi1cdFx0Lypcbi1cdFx0ICogVGhpcyBuZWVkcyB0byBiZSBkb25lIGV2ZW4gZm9yIHRoZSBkZWxldGVkXG4tXHRcdCAqIERMX0ZMQUdfU1lOQ19TVEFURV9PTkxZIGRldmljZSBsaW5rIGluIGNhc2UgaXQgd2FzIHRoZSBsYXN0XG4tXHRcdCAqIGRldmljZSBsaW5rIHRoYXQgd2FzIHByZXZlbnRpbmcgdGhlIHN1cHBsaWVyIGZyb20gZ2V0dGluZyBhXG4tXHRcdCAqIHN5bmNfc3RhdGUoKSBjYWxsLlxuLVx0XHQgKi9cbiBcdFx0aWYgKGRlZmVyX3N5bmNfc3RhdGVfY291bnQpXG4gXHRcdFx0X19kZXZpY2VfbGlua3Nfc3VwcGxpZXJfZGVmZXJfc3luYyhzdXBwbGllcik7XG4gXHRcdGVsc2VcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYyBiL2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jXG5pbmRleCBiOGQyOThjMDRkM2ZmLi40OWY5YjQwNjJjZjVjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmNcbisrKyBiL2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jXG5AQCAtMjI5LDcgKzIyOSw3IEBAIGludCBfX29mX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKm1kaW8sIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsXG4gXHRcdGdvdG8gdW5yZWdpc3RlcjtcbiBcbiBcdGlmICghc2NhbnBoeXMpXG4tXHRcdHJldHVybiAwO1xuK1x0XHRnb3RvIGRvbmU7XG4gXG4gXHQvKiBhdXRvIHNjYW4gZm9yIFBIWXMgd2l0aCBlbXB0eSByZWcgcHJvcGVydHkgKi9cbiBcdGZvcl9lYWNoX2F2YWlsYWJsZV9jaGlsZF9vZl9ub2RlKG5wLCBjaGlsZCkge1xuQEAgLTI2MSw2ICsyNjEsOSBAQCBpbnQgX19vZl9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLFxuIFx0XHR9XG4gXHR9XG4gXG4rZG9uZTpcbitcdGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seShcdTAwMjZtZGlvLVx1MDAzZWRldik7XG4rXG4gXHRyZXR1cm4gMDtcbiBcbiBwdXRfdW5yZWdpc3RlcjpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL29mL3Byb3BlcnR5LmMgYi9kcml2ZXJzL29mL3Byb3BlcnR5LmNcbmluZGV4IDcyY2YxMjkwN2RlMDMuLmYyOWJhODE4ZWNiYzEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL29mL3Byb3BlcnR5LmNcbisrKyBiL2RyaXZlcnMvb2YvcHJvcGVydHkuY1xuQEAgLTEyNzIsNiArMTI3MiwyMCBAQCBzdGF0aWMgdm9pZCBvZl9saW5rX3RvX3BoYW5kbGUoc3RydWN0IGRldmljZV9ub2RlICpjb25fbnAsXG4gXHRcdHRtcF9ucCA9IG9mX2dldF9uZXh0X3BhcmVudCh0bXBfbnApO1xuIFx0fVxuIFxuK1x0LypcbitcdCAqIEFuIEV0aGVybmV0IFBIWSBwYWNrYWdlIG5vZGUgZGVzY3JpYmVzIHJlc291cmNlcyBzaGFyZWQgYnkgaXRzIG1lbWJlclxuK1x0ICogUEhZcywgYnV0IGlzIG5vdCBwb3B1bGF0ZWQgYXMgYSBzdHJ1Y3QgZGV2aWNlLiBMaW5rIGV2ZXJ5IGVuYWJsZWRcbitcdCAqIG1lbWJlciBQSFkgdG8gdGhvc2Ugc3VwcGxpZXJzIHNvIGZ3X2RldmxpbmsgY2FuIHVzZSB0aGUgcmVhbCBjb25zdW1lclxuK1x0ICogZGV2aWNlcyBpbnN0ZWFkIG9mIGxlYXZpbmcgYSBwcm94eSBsaW5rIG9uIHRoZSBNRElPIGJ1cyBpbmRlZmluaXRlbHkuXG4rXHQgKi9cbitcdGlmIChvZl9ub2RlX25hbWVfZXEoY29uX25wLCBcImV0aGVybmV0LXBoeS1wYWNrYWdlXCIpKSB7XG4rXHRcdGZvcl9lYWNoX2F2YWlsYWJsZV9jaGlsZF9vZl9ub2RlX3Njb3BlZChjb25fbnAsIGNoaWxkKVxuK1x0XHRcdGZ3bm9kZV9saW5rX2FkZChvZl9md25vZGVfaGFuZGxlKGNoaWxkKSxcbitcdFx0XHRcdFx0b2ZfZndub2RlX2hhbmRsZShzdXBfbnApLCBmbGFncyk7XG4rXG4rXHRcdHJldHVybjtcbitcdH1cbitcbiBcdGZ3bm9kZV9saW5rX2FkZChvZl9md25vZGVfaGFuZGxlKGNvbl9ucCksIG9mX2Z3bm9kZV9oYW5kbGUoc3VwX25wKSwgZmxhZ3MpO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RldmljZS5oIGIvaW5jbHVkZS9saW51eC9kZXZpY2UuaFxuaW5kZXggYWVlNzlmZDZiMzJiNC4uOGFmYjlmMmIwZDgyNSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZGV2aWNlLmhcbisrKyBiL2luY2x1ZGUvbGludXgvZGV2aWNlLmhcbkBAIC0xMzgxLDYgKzEzODEsNyBAQCBzdHJ1Y3QgZGV2aWNlX2xpbmsgKmRldmljZV9saW5rX2FkZChzdHJ1Y3QgZGV2aWNlICpjb25zdW1lcixcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgZGV2aWNlICpzdXBwbGllciwgdTMyIGZsYWdzKTtcbiB2b2lkIGRldmljZV9saW5rX2RlbChzdHJ1Y3QgZGV2aWNlX2xpbmsgKmxpbmspO1xuIHZvaWQgZGV2aWNlX2xpbmtfcmVtb3ZlKHZvaWQgKmNvbnN1bWVyLCBzdHJ1Y3QgZGV2aWNlICpzdXBwbGllcik7XG4rdm9pZCBkZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkoc3RydWN0IGRldmljZSAqZGV2KTtcbiB2b2lkIGRldmljZV9saW5rc19zdXBwbGllcl9zeW5jX3N0YXRlX3BhdXNlKHZvaWQpO1xuIHZvaWQgZGV2aWNlX2xpbmtzX3N1cHBsaWVyX3N5bmNfc3RhdGVfcmVzdW1lKHZvaWQpO1xuIHZvaWQgZGV2aWNlX2xpbmtfd2FpdF9yZW1vdmFsKHZvaWQpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDE6MDI6MjMuMzk5NzQ3MTJaIiwiU2VxIjoxNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzk4OTA4NDQ3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLTVNBTiBBc3Nlc3NtZW50OiBEZXZpY2UgTGluayBNYW5hZ2VtZW50IFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQncyB0b3VjaGluZyBkZXZpY2UgbGluayBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgaW4gYGRyaXZlcnMvYmFzZS9jb3JlLmNgLCBgZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmNgLCBhbmQgYGRyaXZlcnMvb2YvcHJvcGVydHkuY2AuIE15IGluaXRpYWwgY29uY2VybiwgYXMgYWx3YXlzLCBpcyBhcm91bmQgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzLCBhbmQgc3BlY2lmaWNhbGx5LCB3aGV0aGVyIHRoaXMgaW50cm9kdWNlcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuXG5cbkZyb20gYSBxdWljayBza2ltLCB0aGUgY2hhbmdlcyBhcmUgY2VudGVyZWQgYXJvdW5kIGRldmljZSBsaW5rcywgbGlzdCBtYW5hZ2VtZW50LCBhbmQgaG93IHRoZSBrZXJuZWwgcGFyc2VzIGRldmljZSBub2Rlcy4gSSBkb24ndCBzZWUgYW55dGhpbmcgdGhhdCBzY3JlYW1zIFwicG90ZW50aWFsIEtNU0FOIHRyaWdnZXIuXCIgVGhlcmUgYXJlIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMgcGFzc2VkIHRvIHVzZXIgc3BhY2UuIE5vdGhpbmcgY29tcGxleCBpcyBiZWluZyBjb3BpZWQgdG8gdGhlIHVzZXIgc3BhY2UuIFRoZXJlIGFyZW4ndCBhbnkgbmV3IHN0cnVjdCBmaWVsZHMgdGhhdCBjb3VsZCBiZSBsZWZ0IHVuaW5pdGlhbGl6ZWQgYW5kIHRoZW4gbGVha2VkLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlcyByZXZvbHZlIGFyb3VuZCBkZXZpY2UgbGlua3MsIG5hbWVseSB0aG9zZSBtYXJrZWQgd2l0aCBgRExfRkxBR19TWU5DX1NUQVRFX09OTFlgLCBhbmQgaG93IHRoZXkgYXJlIGRyb3BwZWQuXG5cbkxvb2tpbmcgY2xvc2VyIGF0IGBkcml2ZXJzL2Jhc2UvY29yZS5jYCwgSSBzZWUgYSBuZXcgZnVuY3Rpb24sIGBfX2RldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seWAsIHdoaWNoIGl0ZXJhdGVzIHRocm91Z2ggYGRldi1cdTAwM2VsaW5rcy5zdXBwbGllcnNgLiBJZiBhIGxpbmsgaXMgbWFuYWdlZCBhbmQgaGFzIHRoZSBgRExfRkxBR19TWU5DX1NUQVRFX09OTFlgIGZsYWcsIHRoZSBsaW5rIGlzIGRyb3BwZWQsIGFuZCB0aGUgc3luYyBzdGF0ZSBpcyBxdWV1ZWQuIFRoZXJlJ3MgYSBsb2NraW5nIHdyYXBwZXIgYXJvdW5kIHRoaXMgaW4gYGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seWAsIGFuZCBgZGV2aWNlX2xpbmtzX2RyaXZlcl9ib3VuZGAgbm93IGNhbGxzIHRoaXMgZnVuY3Rpb24gaW5zdGVhZCBvZiBkb2luZyB0aGUgb3BlcmF0aW9uIGlubGluZS5cblxuSW4gYGRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jYCwgYF9fb2ZfbWRpb2J1c19yZWdpc3RlcmAgY2FsbHMgYGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seShcdTAwMjZtZGlvLVx1MDAzZWRldilgIGJlZm9yZSByZXR1cm5pbmcgc3VjY2Vzcy5cblxuRmluYWxseSwgYGRyaXZlcnMvb2YvcHJvcGVydHkuY2AgaGFzIGEgbW9kaWZpY2F0aW9uIHRvIGBvZl9saW5rX3RvX3BoYW5kbGVgLiBBIHNwZWNpZmljIGNhc2UgaXMgYWRkZWQgZm9yIFwiZXRoZXJuZXQtcGh5LXBhY2thZ2VcIiBub2RlcyB0byBsaW5rIGV2ZXJ5IGVuYWJsZWQgbWVtYmVyIFBIWSB0byB0aGUgc3VwcGxpZXJzLlxuXG5Db25zaWRlcmluZyBhbGwgb2YgdGhpcywgSSBkb24ndCBzZWUgYW55IG9idmlvdXMgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgaW5mb3JtYXRpb24gbGVhayByaXNrcyB0aGF0IHdvdWxkIGJlIGV4cG9zZWQgYnkgdGhpcyBwYXRjaC4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgd291bGQgYmUgY2xhc3NpYyBsb2dpY2FsIGJ1Z3MgbGlrZSB1c2UtYWZ0ZXItZnJlZSwgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlcywgbGlzdCBjb3JydXB0aW9uLCBvciBsb2NraW5nIGlzc3VlcywgdGhlIGtpbmRzIG9mIHByb2JsZW1zIHRoYXQgYXJlIHR5cGljYWxseSBjYXVnaHQgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHRoZSBzdGFuZGFyZCBrZXJuZWwgYnVnIGRldGVjdG9ycy4gU28sIEknbSBjb25maWRlbnQgaW4gc2F5aW5nIHRoYXQgdGhpcyBwYXRjaCBkb2VzICpub3QqIHJlcXVpcmUgS01TQU4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5ODUsIk91dHB1dFRva2VucyI6MTY4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDE6MDI6MzEuMzg4ODM1NzU1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE1MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBkZXZpY2UgbGluayBtYW5hZ2VtZW50IGluIHRoZSBkcml2ZXIgY29yZSBhbmQgT0YgcHJvcGVydHkgcGFyc2luZywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIERMX0ZMQUdfU1lOQ19TVEFURV9PTkxZIGxpbmtzIGFuZCBldGhlcm5ldC1waHktcGFja2FnZSBub2Rlcy4gVGhlc2UgY2hhbmdlcyBpbnZvbHZlIGxpc3QgbWFuaXB1bGF0aW9uLCBsb2NraW5nLCBhbmQgZGV2aWNlIG5vZGUgdHJhdmVyc2FsLiBUaGVyZSBhcmUgbm8gbmV3IGJ1ZmZlcnMgYWxsb2NhdGVkLCBubyBkYXRhIGNvcGllZCB0byB1c2Vyc3BhY2UsIGFuZCBubyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBjb3VsZCBiZSByZWFkIG9yIGxlYWtlZC4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSBsb2dpY2FsIGVycm9ycywgdXNlLWFmdGVyLWZyZWVzLCBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBvciBsb2NraW5nIGlzc3Vlcywgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiwgTE9DS0RFUCwgYW5kIHN0YW5kYXJkIGtlcm5lbCBidWcgZGV0ZWN0b3JzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGRldmljZSBsaW5rIG1hbmFnZW1lbnQgaW4gdGhlIGRyaXZlciBjb3JlIGFuZCBPRiBwcm9wZXJ0eSBwYXJzaW5nLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgRExfRkxBR19TWU5DX1NUQVRFX09OTFkgbGlua3MgYW5kIGV0aGVybmV0LXBoeS1wYWNrYWdlIG5vZGVzLiBUaGVzZSBjaGFuZ2VzIGludm9sdmUgbGlzdCBtYW5pcHVsYXRpb24sIGxvY2tpbmcsIGFuZCBkZXZpY2Ugbm9kZSB0cmF2ZXJzYWwuIFRoZXJlIGFyZSBubyBuZXcgYnVmZmVycyBhbGxvY2F0ZWQsIG5vIGRhdGEgY29waWVkIHRvIHVzZXJzcGFjZSwgYW5kIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQgb3IgbGVha2VkLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIGxvZ2ljYWwgZXJyb3JzLCB1c2UtYWZ0ZXItZnJlZXMsIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIGxvY2tpbmcgaXNzdWVzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLCBMT0NLREVQLCBhbmQgc3RhbmRhcmQga2VybmVsIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow6s25z[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-15 01:00:02 +0000 UTC FinishedAt: 2026-08-15 01:02:32 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3da8c3c8b8fa99505624b65ef590482f48e766b6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OF", "OF_MDIO" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "3da8c3c8b8fa99505624b65ef590482f48e766b6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OF", "OF_MDIO" ], "series_id": "af3f6257-d5e2-45f4-883e-15db2a6b7486" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "device_links_drop_sync_state_only", "__device_links_drop_sync_state_only", "of_link_to_phandle", "__of_mdiobus_register" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE1IDAxOjAxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09GJiMzNDssCiAgICAmIzM0O09GX01ESU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkmIzM0OywKICAgICYjMzQ7X19kZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkmIzM0OywKICAgICYjMzQ7b2ZfbGlua190b19waGFuZGxlJiMzNDssCiAgICAmIzM0O19fb2ZfbWRpb2J1c19yZWdpc3RlciYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGRldmljZSBsaW5rIG1hbmFnZW1lbnQgaW4gdGhlIGRyaXZlciBjb3JlIGFuZCBPRiBwcm9wZXJ0eSBwYXJzaW5nLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgRExfRkxBR19TWU5DX1NUQVRFX09OTFkgbGlua3MgYW5kIGV0aGVybmV0LXBoeS1wYWNrYWdlIG5vZGVzLiBUaGVzZSBjaGFuZ2VzIGludm9sdmUgbGlzdCBtYW5pcHVsYXRpb24sIGxvY2tpbmcsIGFuZCBkZXZpY2Ugbm9kZSB0cmF2ZXJzYWwuIFRoZXJlIGFyZSBubyBuZXcgYnVmZmVycyBhbGxvY2F0ZWQsIG5vIGRhdGEgY29waWVkIHRvIHVzZXJzcGFjZSwgYW5kIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQgb3IgbGVha2VkLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIGxvZ2ljYWwgZXJyb3JzLCB1c2UtYWZ0ZXItZnJlZXMsIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIGxvY2tpbmcgaXNzdWVzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLCBMT0NLREVQLCBhbmQgc3RhbmRhcmQga2VybmVsIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgZGV2aWNlIGxpbmsgbWFuYWdlbWVudCBhbmQgT0YgcHJvcGVydHkgcGFyc2luZywgc3BlY2lmaWNhbGx5IGFkZGluZyBhIG5ldyBmdW5jdGlvbiBgZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5YCBhbmQgaGFuZGxpbmcgYGV0aGVybmV0LXBoeS1wYWNrYWdlYCBub2RlcyBpbiBgb2ZfbGlua190b19waGFuZGxlYC4gVGhlc2UgYXJlIGNvcmUga2VybmVsIGNvbXBvbmVudHMgYW5kIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDE6MDE8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyMzk1NDdiYzhmMDk3ZDVjYjgwMDZiNzUwYzUzNmQwY2Q0MzBkZmMyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMTUgMDE6MDE6NTcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9iYXNlL2NvcmUuYyBiL2RyaXZlcnMvYmFzZS9jb3JlLmNcbmluZGV4IDRkMDI2NjgyOTQ0ZjIuLjYyN2ZjZmEyNzRmMGUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jhc2UvY29yZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jhc2UvY29yZS5jXG5AQCAtMTMwNSw2ICYjNDM7MTMwNSw1NyBAQCBzdGF0aWMgdm9pZCBkZXZpY2VfbGlua19kcm9wX21hbmFnZWQoc3RydWN0IGRldmljZV9saW5rICpsaW5rKVxuIFx0a3JlZl9wdXQoXHUwMDI2bGluay1cdTAwM2VrcmVmLCBfX2RldmljZV9saW5rX2RlbCk7XG4gfVxuIFxuJiM0MzsvKiBDYWxsZXIgbXVzdCBob2xkIHRoZSBkZXZpY2UgbGlua3Mgd3JpdGUgbG9jay4gKi9cbiYjNDM7c3RhdGljIHZvaWQgX19kZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkoc3RydWN0IGRldmljZSAqZGV2LFxuJiM0MztcdFx0XHRcdFx0XHRzdHJ1Y3QgbGlzdF9oZWFkICpzeW5jX2xpc3QpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgZGV2aWNlX2xpbmsgKmxpbmssICpsbjtcbiYjNDM7XG4mIzQzO1x0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGxpbmssIGxuLCBcdTAwMjZkZXYtXHUwMDNlbGlua3Muc3VwcGxpZXJzLCBjX25vZGUpIHtcbiYjNDM7XHRcdHN0cnVjdCBkZXZpY2UgKnN1cHBsaWVyO1xuJiM0MztcbiYjNDM7XHRcdGlmICghZGV2aWNlX2xpbmtfdGVzdChsaW5rLCBETF9GTEFHX01BTkFHRUQpIHx8XG4mIzQzO1x0XHQgICAgIWRldmljZV9saW5rX3Rlc3QobGluaywgRExfRkxBR19TWU5DX1NUQVRFX09OTFkpKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XG4mIzQzO1x0XHQvKlxuJiM0MztcdFx0ICogRExfRkxBR19TWU5DX1NUQVRFX09OTFkgZXhjbHVkZXMgYWxsIG90aGVyIG1hbmFnZWQgbGluayBmbGFncyxcbiYjNDM7XHRcdCAqIHNvIGl0IGlzIHNhZmUgdG8gZHJvcCB0aGUgbWFuYWdlZCBsaW5rIGNvbXBsZXRlbHkuXG4mIzQzO1x0XHQgKi9cbiYjNDM7XHRcdHN1cHBsaWVyID0gbGluay1cdTAwM2VzdXBwbGllcjtcbiYjNDM7XHRcdGRldmljZV9saW5rX2Ryb3BfbWFuYWdlZChsaW5rKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoZGVmZXJfc3luY19zdGF0ZV9jb3VudClcbiYjNDM7XHRcdFx0X19kZXZpY2VfbGlua3Nfc3VwcGxpZXJfZGVmZXJfc3luYyhzdXBwbGllcik7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdF9fZGV2aWNlX2xpbmtzX3F1ZXVlX3N5bmNfc3RhdGUoc3VwcGxpZXIsIHN5bmNfbGlzdCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuJiM0MzsvKipcbiYjNDM7ICogZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5IC0gRHJvcCBtYW5hZ2VkIHN5bmMtc3RhdGUtb25seSBsaW5rc1xuJiM0MzsgKiBAZGV2OiBDb25zdW1lciBkZXZpY2Ugd2hvc2UgcHJveHkgbGlua3Mgc2hvdWxkIGJlIGRyb3BwZWRcbiYjNDM7ICpcbiYjNDM7ICogRnJhbWV3b3JrcyB3aGljaCBwb3B1bGF0ZSBjaGlsZCBkZXZpY2VzIGJlbG93IGEgZHJpdmVybGVzcyBkZXZpY2UgY2FuIGNhbGxcbiYjNDM7ICogdGhpcyBhZnRlciBhZGRpbmcgYWxsIG9mIHRoZSBjaGlsZHJlbi4gVGhlIGNoaWxkcmVuIHdpbGwgaGF2ZSBhY3F1aXJlZCB0aGVpclxuJiM0MzsgKiBvd24gbGlua3MgYnkgdGhlbiwgc28gdGhlIHRlbXBvcmFyeSBsaW5rcyB3aGljaCBvbmx5IHByZXZlbnQgc3VwcGxpZXJzIGZyb21cbiYjNDM7ICogcmVjZWl2aW5nIHN5bmNfc3RhdGUoKSBjYWxsYmFja3MgYXJlIG5vIGxvbmdlciBuZWVkZWQuXG4mIzQzOyAqXG4mIzQzOyAqIFJlLWV2YWx1YXRlIGVhY2ggYWZmZWN0ZWQgc3VwcGxpZXIgZm9yIGEgc3luY19zdGF0ZSgpIGNhbGxiYWNrIGFmdGVyIGl0c1xuJiM0MzsgKiBsaW5rIGlzIGRyb3BwZWQuXG4mIzQzOyAqL1xuJiM0Mzt2b2lkIGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4mIzQzO3tcbiYjNDM7XHRMSVNUX0hFQUQoc3luY19saXN0KTtcbiYjNDM7XG4mIzQzO1x0ZGV2aWNlX2xpbmtzX3dyaXRlX2xvY2soKTtcbiYjNDM7XHRfX2RldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seShkZXYsIFx1MDAyNnN5bmNfbGlzdCk7XG4mIzQzO1x0ZGV2aWNlX2xpbmtzX3dyaXRlX3VubG9jaygpO1xuJiM0MztcbiYjNDM7XHRkZXZpY2VfbGlua3NfZmx1c2hfc3luY19saXN0KFx1MDAyNnN5bmNfbGlzdCwgTlVMTCk7XG4mIzQzO31cbiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KTtcbiYjNDM7XG4gc3RhdGljIHNzaXplX3Qgd2FpdGluZ19mb3Jfc3VwcGxpZXJfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsXG4gXHRcdFx0XHRcdCBjb25zdCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0cixcbiBcdFx0XHRcdFx0IGNoYXIgKmJ1ZilcbkBAIC0xNDE4LDYgJiM0MzsxNDY5LDggQEAgdm9pZCBkZXZpY2VfbGlua3NfZHJpdmVyX2JvdW5kKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdGVsc2VcbiBcdFx0X19kZXZpY2VfbGlua3NfcXVldWVfc3luY19zdGF0ZShkZXYsIFx1MDAyNnN5bmNfbGlzdCk7XG4gXG4mIzQzO1x0X19kZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkoZGV2LCBcdTAwMjZzeW5jX2xpc3QpO1xuJiM0MztcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShsaW5rLCBsbiwgXHUwMDI2ZGV2LVx1MDAzZWxpbmtzLnN1cHBsaWVycywgY19ub2RlKSB7XG4gXHRcdHN0cnVjdCBkZXZpY2UgKnN1cHBsaWVyO1xuIFxuQEAgLTE0MjUsMTcgJiM0MzsxNDc4LDEwIEBAIHZvaWQgZGV2aWNlX2xpbmtzX2RyaXZlcl9ib3VuZChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdHN1cHBsaWVyID0gbGluay1cdTAwM2VzdXBwbGllcjtcbi1cdFx0aWYgKGRldmljZV9saW5rX3Rlc3QobGluaywgRExfRkxBR19TWU5DX1NUQVRFX09OTFkpKSB7XG4tXHRcdFx0Lypcbi1cdFx0XHQgKiBXaGVuIERMX0ZMQUdfU1lOQ19TVEFURV9PTkxZIGlzIHNldCwgaXQgbWVhbnMgbm9cbi1cdFx0XHQgKiBvdGhlciBETF9NQU5BR0VEX0xJTktfRkxBR1MgaGF2ZSBiZWVuIHNldC4gU28sIGl0JiMzOTtzXG4tXHRcdFx0ICogc2F2ZSB0byBkcm9wIHRoZSBtYW5hZ2VkIGxpbmsgY29tcGxldGVseS5cbi1cdFx0XHQgKi9cbi1cdFx0XHRkZXZpY2VfbGlua19kcm9wX21hbmFnZWQobGluayk7XG4tXHRcdH0gZWxzZSBpZiAoZGV2X2lzX2Jlc3RfZWZmb3J0KGRldikgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgZGV2aWNlX2xpbmtfdGVzdChsaW5rLCBETF9GTEFHX0lORkVSUkVEKSBcdTAwMjZcdTAwMjZcbi1cdFx0XHQgICBsaW5rLVx1MDAzZXN0YXR1cyAhPSBETF9TVEFURV9DT05TVU1FUl9QUk9CRSBcdTAwMjZcdTAwMjZcbi1cdFx0XHQgICAhZGV2X2Nhbl9tYXRjaChsaW5rLVx1MDAzZXN1cHBsaWVyKSkge1xuJiM0MztcdFx0aWYgKGRldl9pc19iZXN0X2VmZm9ydChkZXYpIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIGRldmljZV9saW5rX3Rlc3QobGluaywgRExfRkxBR19JTkZFUlJFRCkgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgbGluay1cdTAwM2VzdGF0dXMgIT0gRExfU1RBVEVfQ09OU1VNRVJfUFJPQkUgXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHQgICAgIWRldl9jYW5fbWF0Y2gobGluay1cdTAwM2VzdXBwbGllcikpIHtcbiBcdFx0XHQvKlxuIFx0XHRcdCAqIFdoZW4gZGV2X2lzX2Jlc3RfZWZmb3J0KCkgaXMgdHJ1ZSwgd2UgaWdub3JlIGRldmljZVxuIFx0XHRcdCAqIGxpbmtzIHRvIHN1cHBsaWVycyB0aGF0IGRvbiYjMzk7dCBoYXZlIGEgZHJpdmVyLiAgSWYgdGhlXG5AQCAtMTQ0OSwxMiAmIzQzOzE0OTUsNiBAQCB2b2lkIGRldmljZV9saW5rc19kcml2ZXJfYm91bmQoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0XHRcdFdSSVRFX09OQ0UobGluay1cdTAwM2VzdGF0dXMsIERMX1NUQVRFX0FDVElWRSk7XG4gXHRcdH1cbiBcbi1cdFx0Lypcbi1cdFx0ICogVGhpcyBuZWVkcyB0byBiZSBkb25lIGV2ZW4gZm9yIHRoZSBkZWxldGVkXG4tXHRcdCAqIERMX0ZMQUdfU1lOQ19TVEFURV9PTkxZIGRldmljZSBsaW5rIGluIGNhc2UgaXQgd2FzIHRoZSBsYXN0XG4tXHRcdCAqIGRldmljZSBsaW5rIHRoYXQgd2FzIHByZXZlbnRpbmcgdGhlIHN1cHBsaWVyIGZyb20gZ2V0dGluZyBhXG4tXHRcdCAqIHN5bmNfc3RhdGUoKSBjYWxsLlxuLVx0XHQgKi9cbiBcdFx0aWYgKGRlZmVyX3N5bmNfc3RhdGVfY291bnQpXG4gXHRcdFx0X19kZXZpY2VfbGlua3Nfc3VwcGxpZXJfZGVmZXJfc3luYyhzdXBwbGllcik7XG4gXHRcdGVsc2VcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYyBiL2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jXG5pbmRleCBiOGQyOThjMDRkM2ZmLi40OWY5YjQwNjJjZjVjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jXG5AQCAtMjI5LDcgJiM0MzsyMjksNyBAQCBpbnQgX19vZl9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLFxuIFx0XHRnb3RvIHVucmVnaXN0ZXI7XG4gXG4gXHRpZiAoIXNjYW5waHlzKVxuLVx0XHRyZXR1cm4gMDtcbiYjNDM7XHRcdGdvdG8gZG9uZTtcbiBcbiBcdC8qIGF1dG8gc2NhbiBmb3IgUEhZcyB3aXRoIGVtcHR5IHJlZyBwcm9wZXJ0eSAqL1xuIFx0Zm9yX2VhY2hfYXZhaWxhYmxlX2NoaWxkX29mX25vZGUobnAsIGNoaWxkKSB7XG5AQCAtMjYxLDYgJiM0MzsyNjEsOSBAQCBpbnQgX19vZl9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLFxuIFx0XHR9XG4gXHR9XG4gXG4mIzQzO2RvbmU6XG4mIzQzO1x0ZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KFx1MDAyNm1kaW8tXHUwMDNlZGV2KTtcbiYjNDM7XG4gXHRyZXR1cm4gMDtcbiBcbiBwdXRfdW5yZWdpc3RlcjpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL29mL3Byb3BlcnR5LmMgYi9kcml2ZXJzL29mL3Byb3BlcnR5LmNcbmluZGV4IDcyY2YxMjkwN2RlMDMuLmYyOWJhODE4ZWNiYzEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL29mL3Byb3BlcnR5LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvb2YvcHJvcGVydHkuY1xuQEAgLTEyNzIsNiAmIzQzOzEyNzIsMjAgQEAgc3RhdGljIHZvaWQgb2ZfbGlua190b19waGFuZGxlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqY29uX25wLFxuIFx0XHR0bXBfbnAgPSBvZl9nZXRfbmV4dF9wYXJlbnQodG1wX25wKTtcbiBcdH1cbiBcbiYjNDM7XHQvKlxuJiM0MztcdCAqIEFuIEV0aGVybmV0IFBIWSBwYWNrYWdlIG5vZGUgZGVzY3JpYmVzIHJlc291cmNlcyBzaGFyZWQgYnkgaXRzIG1lbWJlclxuJiM0MztcdCAqIFBIWXMsIGJ1dCBpcyBub3QgcG9wdWxhdGVkIGFzIGEgc3RydWN0IGRldmljZS4gTGluayBldmVyeSBlbmFibGVkXG4mIzQzO1x0ICogbWVtYmVyIFBIWSB0byB0aG9zZSBzdXBwbGllcnMgc28gZndfZGV2bGluayBjYW4gdXNlIHRoZSByZWFsIGNvbnN1bWVyXG4mIzQzO1x0ICogZGV2aWNlcyBpbnN0ZWFkIG9mIGxlYXZpbmcgYSBwcm94eSBsaW5rIG9uIHRoZSBNRElPIGJ1cyBpbmRlZmluaXRlbHkuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKG9mX25vZGVfbmFtZV9lcShjb25fbnAsIFwmIzM0O2V0aGVybmV0LXBoeS1wYWNrYWdlXCYjMzQ7KSkge1xuJiM0MztcdFx0Zm9yX2VhY2hfYXZhaWxhYmxlX2NoaWxkX29mX25vZGVfc2NvcGVkKGNvbl9ucCwgY2hpbGQpXG4mIzQzO1x0XHRcdGZ3bm9kZV9saW5rX2FkZChvZl9md25vZGVfaGFuZGxlKGNoaWxkKSxcbiYjNDM7XHRcdFx0XHRcdG9mX2Z3bm9kZV9oYW5kbGUoc3VwX25wKSwgZmxhZ3MpO1xuJiM0MztcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0Zndub2RlX2xpbmtfYWRkKG9mX2Z3bm9kZV9oYW5kbGUoY29uX25wKSwgb2ZfZndub2RlX2hhbmRsZShzdXBfbnApLCBmbGFncyk7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGV2aWNlLmggYi9pbmNsdWRlL2xpbnV4L2RldmljZS5oXG5pbmRleCBhZWU3OWZkNmIzMmI0Li44YWZiOWYyYjBkODI1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9kZXZpY2UuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9kZXZpY2UuaFxuQEAgLTEzODEsNiAmIzQzOzEzODEsNyBAQCBzdHJ1Y3QgZGV2aWNlX2xpbmsgKmRldmljZV9saW5rX2FkZChzdHJ1Y3QgZGV2aWNlICpjb25zdW1lcixcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgZGV2aWNlICpzdXBwbGllciwgdTMyIGZsYWdzKTtcbiB2b2lkIGRldmljZV9saW5rX2RlbChzdHJ1Y3QgZGV2aWNlX2xpbmsgKmxpbmspO1xuIHZvaWQgZGV2aWNlX2xpbmtfcmVtb3ZlKHZvaWQgKmNvbnN1bWVyLCBzdHJ1Y3QgZGV2aWNlICpzdXBwbGllcik7XG4mIzQzO3ZvaWQgZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KHN0cnVjdCBkZXZpY2UgKmRldik7XG4gdm9pZCBkZXZpY2VfbGlua3Nfc3VwcGxpZXJfc3luY19zdGF0ZV9wYXVzZSh2b2lkKTtcbiB2b2lkIGRldmljZV9saW5rc19zdXBwbGllcl9zeW5jX3N0YXRlX3Jlc3VtZSh2b2lkKTtcbiB2b2lkIGRldmljZV9saW5rX3dhaXRfcmVtb3ZhbCh2b2lkKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMTowMTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7T0YmIzM0OywKICAgICYjMzQ7T0ZfTURJTyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2RldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seSYjMzQ7LAogICAgJiMzNDtfX2RldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seSYjMzQ7LAogICAgJiMzNDtvZl9saW5rX3RvX3BoYW5kbGUmIzM0OywKICAgICYjMzQ7X19vZl9tZGlvYnVzX3JlZ2lzdGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGNvcmUgZGV2aWNlIGxpbmsgbWFuYWdlbWVudCBhbmQgT0YgcHJvcGVydHkgcGFyc2luZywgc3BlY2lmaWNhbGx5IGFkZGluZyBhIG5ldyBmdW5jdGlvbiBgZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5YCBhbmQgaGFuZGxpbmcgYGV0aGVybmV0LXBoeS1wYWNrYWdlYCBub2RlcyBpbiBgb2ZfbGlua190b19waGFuZGxlYC4gVGhlc2UgYXJlIGNvcmUga2VybmVsIGNvbXBvbmVudHMgYW5kIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyMzk1NDdiYzhmMDk3ZDVjYjgwMDZiNzUwYzUzNmQwY2Q0MzBkZmMyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgMTUgMDE6MDE6NTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2UvY29yZS5jIGIvZHJpdmVycy9iYXNlL2NvcmUuYwppbmRleCA0ZDAyNjY4Mjk0NGYyLi42MjdmY2ZhMjc0ZjBlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jhc2UvY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmFzZS9jb3JlLmMKQEAgLTEzMDUsNiAmIzQzOzEzMDUsNTcgQEAgc3RhdGljIHZvaWQgZGV2aWNlX2xpbmtfZHJvcF9tYW5hZ2VkKHN0cnVjdCBkZXZpY2VfbGluayAqbGluaykKIAlrcmVmX3B1dCgmYW1wO2xpbmstJmd0O2tyZWYsIF9fZGV2aWNlX2xpbmtfZGVsKTsKIH0KIAomIzQzOy8qIENhbGxlciBtdXN0IGhvbGQgdGhlIGRldmljZSBsaW5rcyB3cml0ZSBsb2NrLiAqLwomIzQzO3N0YXRpYyB2b2lkIF9fZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KHN0cnVjdCBkZXZpY2UgKmRldiwKJiM0MzsJCQkJCQlzdHJ1Y3QgbGlzdF9oZWFkICpzeW5jX2xpc3QpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZGV2aWNlX2xpbmsgKmxpbmssICpsbjsKJiM0MzsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGxpbmssIGxuLCAmYW1wO2Rldi0mZ3Q7bGlua3Muc3VwcGxpZXJzLCBjX25vZGUpIHsKJiM0MzsJCXN0cnVjdCBkZXZpY2UgKnN1cHBsaWVyOwomIzQzOwomIzQzOwkJaWYgKCFkZXZpY2VfbGlua190ZXN0KGxpbmssIERMX0ZMQUdfTUFOQUdFRCkgfHwKJiM0MzsJCSAgICAhZGV2aWNlX2xpbmtfdGVzdChsaW5rLCBETF9GTEFHX1NZTkNfU1RBVEVfT05MWSkpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQkvKgomIzQzOwkJICogRExfRkxBR19TWU5DX1NUQVRFX09OTFkgZXhjbHVkZXMgYWxsIG90aGVyIG1hbmFnZWQgbGluayBmbGFncywKJiM0MzsJCSAqIHNvIGl0IGlzIHNhZmUgdG8gZHJvcCB0aGUgbWFuYWdlZCBsaW5rIGNvbXBsZXRlbHkuCiYjNDM7CQkgKi8KJiM0MzsJCXN1cHBsaWVyID0gbGluay0mZ3Q7c3VwcGxpZXI7CiYjNDM7CQlkZXZpY2VfbGlua19kcm9wX21hbmFnZWQobGluayk7CiYjNDM7CiYjNDM7CQlpZiAoZGVmZXJfc3luY19zdGF0ZV9jb3VudCkKJiM0MzsJCQlfX2RldmljZV9saW5rc19zdXBwbGllcl9kZWZlcl9zeW5jKHN1cHBsaWVyKTsKJiM0MzsJCWVsc2UKJiM0MzsJCQlfX2RldmljZV9saW5rc19xdWV1ZV9zeW5jX3N0YXRlKHN1cHBsaWVyLCBzeW5jX2xpc3QpOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzOy8qKgomIzQzOyAqIGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seSAtIERyb3AgbWFuYWdlZCBzeW5jLXN0YXRlLW9ubHkgbGlua3MKJiM0MzsgKiBAZGV2OiBDb25zdW1lciBkZXZpY2Ugd2hvc2UgcHJveHkgbGlua3Mgc2hvdWxkIGJlIGRyb3BwZWQKJiM0MzsgKgomIzQzOyAqIEZyYW1ld29ya3Mgd2hpY2ggcG9wdWxhdGUgY2hpbGQgZGV2aWNlcyBiZWxvdyBhIGRyaXZlcmxlc3MgZGV2aWNlIGNhbiBjYWxsCiYjNDM7ICogdGhpcyBhZnRlciBhZGRpbmcgYWxsIG9mIHRoZSBjaGlsZHJlbi4gVGhlIGNoaWxkcmVuIHdpbGwgaGF2ZSBhY3F1aXJlZCB0aGVpcgomIzQzOyAqIG93biBsaW5rcyBieSB0aGVuLCBzbyB0aGUgdGVtcG9yYXJ5IGxpbmtzIHdoaWNoIG9ubHkgcHJldmVudCBzdXBwbGllcnMgZnJvbQomIzQzOyAqIHJlY2VpdmluZyBzeW5jX3N0YXRlKCkgY2FsbGJhY2tzIGFyZSBubyBsb25nZXIgbmVlZGVkLgomIzQzOyAqCiYjNDM7ICogUmUtZXZhbHVhdGUgZWFjaCBhZmZlY3RlZCBzdXBwbGllciBmb3IgYSBzeW5jX3N0YXRlKCkgY2FsbGJhY2sgYWZ0ZXIgaXRzCiYjNDM7ICogbGluayBpcyBkcm9wcGVkLgomIzQzOyAqLwomIzQzO3ZvaWQgZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KHN0cnVjdCBkZXZpY2UgKmRldikKJiM0Mzt7CiYjNDM7CUxJU1RfSEVBRChzeW5jX2xpc3QpOwomIzQzOwomIzQzOwlkZXZpY2VfbGlua3Nfd3JpdGVfbG9jaygpOwomIzQzOwlfX2RldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seShkZXYsICZhbXA7c3luY19saXN0KTsKJiM0MzsJZGV2aWNlX2xpbmtzX3dyaXRlX3VubG9jaygpOwomIzQzOwomIzQzOwlkZXZpY2VfbGlua3NfZmx1c2hfc3luY19saXN0KCZhbXA7c3luY19saXN0LCBOVUxMKTsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KTsKJiM0MzsKIHN0YXRpYyBzc2l6ZV90IHdhaXRpbmdfZm9yX3N1cHBsaWVyX3Nob3coc3RydWN0IGRldmljZSAqZGV2LAogCQkJCQkgY29uc3Qgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCiAJCQkJCSBjaGFyICpidWYpCkBAIC0xNDE4LDYgJiM0MzsxNDY5LDggQEAgdm9pZCBkZXZpY2VfbGlua3NfZHJpdmVyX2JvdW5kKHN0cnVjdCBkZXZpY2UgKmRldikKIAllbHNlCiAJCV9fZGV2aWNlX2xpbmtzX3F1ZXVlX3N5bmNfc3RhdGUoZGV2LCAmYW1wO3N5bmNfbGlzdCk7CiAKJiM0MzsJX19kZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkoZGV2LCAmYW1wO3N5bmNfbGlzdCk7CiYjNDM7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGxpbmssIGxuLCAmYW1wO2Rldi0mZ3Q7bGlua3Muc3VwcGxpZXJzLCBjX25vZGUpIHsKIAkJc3RydWN0IGRldmljZSAqc3VwcGxpZXI7CiAKQEAgLTE0MjUsMTcgJiM0MzsxNDc4LDEwIEBAIHZvaWQgZGV2aWNlX2xpbmtzX2RyaXZlcl9ib3VuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJCQljb250aW51ZTsKIAogCQlzdXBwbGllciA9IGxpbmstJmd0O3N1cHBsaWVyOwotCQlpZiAoZGV2aWNlX2xpbmtfdGVzdChsaW5rLCBETF9GTEFHX1NZTkNfU1RBVEVfT05MWSkpIHsKLQkJCS8qCi0JCQkgKiBXaGVuIERMX0ZMQUdfU1lOQ19TVEFURV9PTkxZIGlzIHNldCwgaXQgbWVhbnMgbm8KLQkJCSAqIG90aGVyIERMX01BTkFHRURfTElOS19GTEFHUyBoYXZlIGJlZW4gc2V0LiBTbywgaXQmIzM5O3MKLQkJCSAqIHNhdmUgdG8gZHJvcCB0aGUgbWFuYWdlZCBsaW5rIGNvbXBsZXRlbHkuCi0JCQkgKi8KLQkJCWRldmljZV9saW5rX2Ryb3BfbWFuYWdlZChsaW5rKTsKLQkJfSBlbHNlIGlmIChkZXZfaXNfYmVzdF9lZmZvcnQoZGV2KSAmYW1wOyZhbXA7Ci0JCQkgICBkZXZpY2VfbGlua190ZXN0KGxpbmssIERMX0ZMQUdfSU5GRVJSRUQpICZhbXA7JmFtcDsKLQkJCSAgIGxpbmstJmd0O3N0YXR1cyAhPSBETF9TVEFURV9DT05TVU1FUl9QUk9CRSAmYW1wOyZhbXA7Ci0JCQkgICAhZGV2X2Nhbl9tYXRjaChsaW5rLSZndDtzdXBwbGllcikpIHsKJiM0MzsJCWlmIChkZXZfaXNfYmVzdF9lZmZvcnQoZGV2KSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgZGV2aWNlX2xpbmtfdGVzdChsaW5rLCBETF9GTEFHX0lORkVSUkVEKSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgbGluay0mZ3Q7c3RhdHVzICE9IERMX1NUQVRFX0NPTlNVTUVSX1BST0JFICZhbXA7JmFtcDsKJiM0MzsJCSAgICAhZGV2X2Nhbl9tYXRjaChsaW5rLSZndDtzdXBwbGllcikpIHsKIAkJCS8qCiAJCQkgKiBXaGVuIGRldl9pc19iZXN0X2VmZm9ydCgpIGlzIHRydWUsIHdlIGlnbm9yZSBkZXZpY2UKIAkJCSAqIGxpbmtzIHRvIHN1cHBsaWVycyB0aGF0IGRvbiYjMzk7dCBoYXZlIGEgZHJpdmVyLiAgSWYgdGhlCkBAIC0xNDQ5LDEyICYjNDM7MTQ5NSw2IEBAIHZvaWQgZGV2aWNlX2xpbmtzX2RyaXZlcl9ib3VuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJCQlXUklURV9PTkNFKGxpbmstJmd0O3N0YXR1cywgRExfU1RBVEVfQUNUSVZFKTsKIAkJfQogCi0JCS8qCi0JCSAqIFRoaXMgbmVlZHMgdG8gYmUgZG9uZSBldmVuIGZvciB0aGUgZGVsZXRlZAotCQkgKiBETF9GTEFHX1NZTkNfU1RBVEVfT05MWSBkZXZpY2UgbGluayBpbiBjYXNlIGl0IHdhcyB0aGUgbGFzdAotCQkgKiBkZXZpY2UgbGluayB0aGF0IHdhcyBwcmV2ZW50aW5nIHRoZSBzdXBwbGllciBmcm9tIGdldHRpbmcgYQotCQkgKiBzeW5jX3N0YXRlKCkgY2FsbC4KLQkJICovCiAJCWlmIChkZWZlcl9zeW5jX3N0YXRlX2NvdW50KQogCQkJX19kZXZpY2VfbGlua3Nfc3VwcGxpZXJfZGVmZXJfc3luYyhzdXBwbGllcik7CiAJCWVsc2UKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jIGIvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMKaW5kZXggYjhkMjk4YzA0ZDNmZi4uNDlmOWI0MDYyY2Y1YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMKQEAgLTIyOSw3ICYjNDM7MjI5LDcgQEAgaW50IF9fb2ZfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGRldmljZV9ub2RlICpucCwKIAkJZ290byB1bnJlZ2lzdGVyOwogCiAJaWYgKCFzY2FucGh5cykKLQkJcmV0dXJuIDA7CiYjNDM7CQlnb3RvIGRvbmU7CiAKIAkvKiBhdXRvIHNjYW4gZm9yIFBIWXMgd2l0aCBlbXB0eSByZWcgcHJvcGVydHkgKi8KIAlmb3JfZWFjaF9hdmFpbGFibGVfY2hpbGRfb2Zfbm9kZShucCwgY2hpbGQpIHsKQEAgLTI2MSw2ICYjNDM7MjYxLDkgQEAgaW50IF9fb2ZfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGRldmljZV9ub2RlICpucCwKIAkJfQogCX0KIAomIzQzO2RvbmU6CiYjNDM7CWRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seSgmYW1wO21kaW8tJmd0O2Rldik7CiYjNDM7CiAJcmV0dXJuIDA7CiAKIHB1dF91bnJlZ2lzdGVyOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9vZi9wcm9wZXJ0eS5jIGIvZHJpdmVycy9vZi9wcm9wZXJ0eS5jCmluZGV4IDcyY2YxMjkwN2RlMDMuLmYyOWJhODE4ZWNiYzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvb2YvcHJvcGVydHkuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL29mL3Byb3BlcnR5LmMKQEAgLTEyNzIsNiAmIzQzOzEyNzIsMjAgQEAgc3RhdGljIHZvaWQgb2ZfbGlua190b19waGFuZGxlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqY29uX25wLAogCQl0bXBfbnAgPSBvZl9nZXRfbmV4dF9wYXJlbnQodG1wX25wKTsKIAl9CiAKJiM0MzsJLyoKJiM0MzsJICogQW4gRXRoZXJuZXQgUEhZIHBhY2thZ2Ugbm9kZSBkZXNjcmliZXMgcmVzb3VyY2VzIHNoYXJlZCBieSBpdHMgbWVtYmVyCiYjNDM7CSAqIFBIWXMsIGJ1dCBpcyBub3QgcG9wdWxhdGVkIGFzIGEgc3RydWN0IGRldmljZS4gTGluayBldmVyeSBlbmFibGVkCiYjNDM7CSAqIG1lbWJlciBQSFkgdG8gdGhvc2Ugc3VwcGxpZXJzIHNvIGZ3X2RldmxpbmsgY2FuIHVzZSB0aGUgcmVhbCBjb25zdW1lcgomIzQzOwkgKiBkZXZpY2VzIGluc3RlYWQgb2YgbGVhdmluZyBhIHByb3h5IGxpbmsgb24gdGhlIE1ESU8gYnVzIGluZGVmaW5pdGVseS4KJiM0MzsJICovCiYjNDM7CWlmIChvZl9ub2RlX25hbWVfZXEoY29uX25wLCAmIzM0O2V0aGVybmV0LXBoeS1wYWNrYWdlJiMzNDspKSB7CiYjNDM7CQlmb3JfZWFjaF9hdmFpbGFibGVfY2hpbGRfb2Zfbm9kZV9zY29wZWQoY29uX25wLCBjaGlsZCkKJiM0MzsJCQlmd25vZGVfbGlua19hZGQob2ZfZndub2RlX2hhbmRsZShjaGlsZCksCiYjNDM7CQkJCQlvZl9md25vZGVfaGFuZGxlKHN1cF9ucCksIGZsYWdzKTsKJiM0MzsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwogCWZ3bm9kZV9saW5rX2FkZChvZl9md25vZGVfaGFuZGxlKGNvbl9ucCksIG9mX2Z3bm9kZV9oYW5kbGUoc3VwX25wKSwgZmxhZ3MpOwogfQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RldmljZS5oIGIvaW5jbHVkZS9saW51eC9kZXZpY2UuaAppbmRleCBhZWU3OWZkNmIzMmI0Li44YWZiOWYyYjBkODI1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2RldmljZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZGV2aWNlLmgKQEAgLTEzODEsNiAmIzQzOzEzODEsNyBAQCBzdHJ1Y3QgZGV2aWNlX2xpbmsgKmRldmljZV9saW5rX2FkZChzdHJ1Y3QgZGV2aWNlICpjb25zdW1lciwKIAkJCQkgICAgc3RydWN0IGRldmljZSAqc3VwcGxpZXIsIHUzMiBmbGFncyk7CiB2b2lkIGRldmljZV9saW5rX2RlbChzdHJ1Y3QgZGV2aWNlX2xpbmsgKmxpbmspOwogdm9pZCBkZXZpY2VfbGlua19yZW1vdmUodm9pZCAqY29uc3VtZXIsIHN0cnVjdCBkZXZpY2UgKnN1cHBsaWVyKTsKJiM0Mzt2b2lkIGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seShzdHJ1Y3QgZGV2aWNlICpkZXYpOwogdm9pZCBkZXZpY2VfbGlua3Nfc3VwcGxpZXJfc3luY19zdGF0ZV9wYXVzZSh2b2lkKTsKIHZvaWQgZGV2aWNlX2xpbmtzX3N1cHBsaWVyX3N5bmNfc3RhdGVfcmVzdW1lKHZvaWQpOwogdm9pZCBkZXZpY2VfbGlua193YWl0X3JlbW92YWwodm9pZCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAxOjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5ODgKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiA0NjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgQXNzZXNzbWVudDogRGV2aWNlIExpbmsgYW5kIE9GIFByb3BlcnR5IEhhbmRsaW5nKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCBhIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyBtYWtpbmcgc29tZSBtb2RpZmljYXRpb25zIHJlbGF0ZWQgdG8gZGV2aWNlIGxpbmtzIGFuZCB0aGUgT3BlbiBGaXJtd2FyZSAoT0YpIHN1YnN5c3RlbSwgc3BlY2lmaWNhbGx5IHRvdWNoaW5nIG9uIGBkcml2ZXJzL2Jhc2UvY29yZS5jYCwgYGRyaXZlcnMvb2YvcHJvcGVydHkuY2AsIGFuZCBgZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmNgLiBUaGlzIGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdCBiZWNhdXNlIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGNvcmUga2VybmVsIGNvbXBvbmVudHMgaGVyZSDigJMgdGhlIGRldmljZSBsaW5rIG1hbmFnZW1lbnQgYW5kIE9GIHBhcnNpbmcgY29kZSBhcmUgY3JpdGljYWwuIEFueSBpbnN0YWJpbGl0eSBpbiB0aGVzZSBhcmVhcyBjb3VsZCBoYXZlIHdpZGUtcmVhY2hpbmcgaW1wbGljYXRpb25zLgoKTGV0JiMzOTtzIGRpdmUgaW4uIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGBkZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHlgIGFuZCBjYWxscyBpdCBmcm9tIGBfX29mX21kaW9idXNfcmVnaXN0ZXJgIHdpdGhpbiB0aGUgTURJTyBkcml2ZXIuIEl0IGFsc28gaW50cm9kdWNlcyBhIHNwZWNpYWwgY2FzZSBpbiBgb2ZfbGlua190b19waGFuZGxlYCBmb3IgYGV0aGVybmV0LXBoeS1wYWNrYWdlYCBub2Rlcy4gVGhlIHF1ZXN0aW9uIGlzLCBhcmUgdGhlc2UgY2hhbmdlcyByZWFjaGFibGUgYW5kIHdvcnRoIHRhcmdldGluZyB3aXRoIGZ1enppbmc/CgpGaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5YCBpcyBhY3R1YWxseSBleHBvcnRlZCBhbmQgdXNlZC4gWWVwLCBpdCBpcyBleHBvcnRlZCBhbmQgdXNlZCBpbiBgX19vZl9tZGlvYnVzX3JlZ2lzdGVyYCwgc28gdGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIE5leHQsIEkgbmVlZCB0byBiZSBzdXJlIHRoYXQgYG9mX2xpbmtfdG9fcGhhbmRsZWAgaXMgcmVhY2hhYmxlLiBZZXAsIGl0IGdldHMgY2FsbGVkIGR1cmluZyBPRiBkZXZpY2UgbGluayBjcmVhdGlvbi4KCkdpdmVuIHRoZSBwb3RlbnRpYWwgaW1wYWN0IG9uIGRldmljZSBsaW5rcywgT0YgcHJvcGVydHkgcGFyc2luZywgYW5kIHRoZSBjb3JlIG5hdHVyZSBvZiB0aGUgaW52b2x2ZWQgY29kZSwgdGhpcyAqZGVmaW5pdGVseSogc2VlbXMgbGlrZSBhIHdvcnRod2hpbGUgZnV6emluZyB0YXJnZXQuIFRoZSBrZXkgc3ltYm9scyB0byBmb2N1cyBvbiBhcmUgYGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seWAsIGBfX2RldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seWAsIGBvZl9saW5rX3RvX3BoYW5kbGVgLCBhbmQgYF9fb2ZfbWRpb2J1c19yZWdpc3RlcmAuCgpOb3csIGxldCYjMzk7cyBzZWUgd2hhdCBjb25maWdzIGFyZSByZXF1aXJlZCB0byBlbmFibGUgdGhpcyBmdW5jdGlvbmFsaXR5LiBXZSYjMzk7bGwgbmVlZCBgQ09ORklHX09GYCBmb3IgYm90aCBgZHJpdmVycy9vZi9wcm9wZXJ0eS5jYCBhbmQgYGRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jYC4gV2UmIzM5O2xsIGFsc28gbmVlZCBgQ09ORklHX09GX01ESU9gIHNwZWNpZmljYWxseSBmb3IgdGhlIE1ESU8gZHJpdmVyLiBXZSBtaWdodCBhbHNvIG5lZWQgZWl0aGVyIGBDT05GSUdfTURJT19ERVZJQ0VgIG9yIGBDT05GSUdfUEhZTElCYC4gRmluYWxseSwgbGV0IG1lIGp1c3QgY29uZmlybSB0aGUgbG9jYXRpb24gb2YgYF9fb2ZfbWRpb2J1c19yZWdpc3RlcmAgaW4gYGRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX29mX21kaW9idXNfcmVnaXN0ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz0xMzk9c3RhdGljIGludCBfX29mX21kaW9idXNfcGFyc2VfcGh5cyhzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGRldmljZV9ub2RlICpucCxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0xODYtLyoqXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzoxODc6ICogX19vZl9tZGlvYnVzX3JlZ2lzdGVyIC0gUmVnaXN0ZXIgbWlpX2J1cyBhbmQgY3JlYXRlIFBIWXMgZnJvbSB0aGUgZGV2aWNlIHRyZWVcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTE4OC0gKiBAbWRpbzogcG9pbnRlciB0byBtaWlfYnVzIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTE5NC0gKi9cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjE5NTppbnQgX19vZl9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMTk2LVx0XHRcdCAgc3RydWN0IG1vZHVsZSAqb3duZXIpXG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMjc0LX1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjI3NTpFWFBPUlRfU1lNQk9MKF9fb2ZfbWRpb2J1c19yZWdpc3Rlcik7XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0yNzYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDE6MDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMyNgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqS2NvbmZpZyBDaGVjayoqCgpPa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgY29uZmlndXJhdGlvbnMgYXJlIHJlbGV2YW50IHRvIHRoZSBgZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmNgIGZpbGUuIFRoaXMgc3BlY2lmaWMgZmlsZSBkZWFscyB3aXRoIE1ESU8gKE1hbmFnZW1lbnQgRGF0YSBJbnB1dC9PdXRwdXQpIGludGVyZmFjZXMgYWNjZXNzZWQgdmlhIGRldmljZSB0cmVlIGJpbmRpbmdzLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBkZXBlbmRlbmNpZXMgb3Igb3B0aW9ucyB0aGF0IGRpcmVjdGx5IGVuYWJsZSBvciBkaXNhYmxlIHN1cHBvcnQgZm9yIHRoaXMgc3BlY2lmaWMgZHJpdmVyLiBJdCYjMzk7cyBsaWtlbHkgdGhhdCB0aGVyZSYjMzk7cyBhIEtjb25maWcgb3B0aW9uIHRoYXQgZW5hYmxlcyB0aGUgZW50aXJlIE1ESU8gc3Vic3lzdGVtLCBhbmQgdGhlbiBwb3RlbnRpYWxseSBzb21lIG1vcmUgc3BlY2lmaWMgb3B0aW9ucyBmb3IgZGV2aWNlIHRyZWUgc3VwcG9ydCB3aXRoaW4gTURJTy4gSSYjMzk7bGwgbmVlZCB0byB0cmFjZSB0aHJvdWdoIHRoZSBLY29uZmlnIGhpZXJhcmNoeSwgcGF5aW5nIGNsb3NlIGF0dGVudGlvbiB0byBhbnkgY29uZGl0aW9uYWwgZGVwZW5kZW5jaWVzIHRoYXQgbWlnaHQgYWZmZWN0IHdoZXRoZXIgdGhpcyBkcml2ZXIgZ2V0cyBjb21waWxlZCBpbnRvIHRoZSBrZXJuZWwgaW1hZ2UuIEkmIzM5O2xsIGFsc28gYmUgb24gdGhlIGxvb2tvdXQgZm9yIGFueSBvcHRpb25zIHRoYXQgY291bGQgYmUgcmVsZXZhbnQgdG8gZGVidWdnaW5nIG9yIHNlbGVjdGluZyBhIHNwZWNpZmljIE1ESU8gY29udHJvbGxlciB2YXJpYW50LCBpbiBjYXNlIHRoZXJlIGFyZSBtdWx0aXBsZSBpbXBsZW1lbnRhdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIHBhdGggY2xlYXJseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMTowMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvZl9tZGlvXFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZT01PW9iai0kKENPTkZJR19GV05PREVfTURJTylcdCYjNDM7PSBmd25vZGVfbWRpby5vXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX09GX01ESU8pXHRcdCYjNDM7PSBvZl9tZGlvLm9cbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGUtNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1Njg2CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipLY29uZmlnIGFuZCB0aGUgTURJTyBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gV2hlbmV2ZXIgSSYjMzk7bSB0YWNrbGluZyBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgT3BlbiBGaXJtd2FyZSAoT0YpIE1ESU8gYnVzLCB0aGUgZmlyc3QgcGxhY2UgSSBhbHdheXMgZ28gaXMgdGhlIEtjb25maWcgZmlsZXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBgQ09ORklHX09GX01ESU9gIGlzIGVuYWJsZWQuIEl0JiMzOTtzIHRoZSBseW5jaHBpbiwgcmVhbGx5LiBUaGF0IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGNvbnRyb2xzIHRoZSBjb3JlIGluZnJhc3RydWN0dXJlIGZvciB1c2luZyBNRElPIGRldmljZXMgZGVzY3JpYmVkIHdpdGggT0YuIElmIGl0JiMzOTtzIG5vdCBzZXQsIEkmIzM5O20gYmFzaWNhbGx5IGRlYWQgaW4gdGhlIHdhdGVyIHdoZW4gaXQgY29tZXMgdG8gYW55IE9GLWRyaXZlbiBNRElPIGNvbW11bmljYXRpb24uIFNvLCBzdGVwIG9uZTogdmVyaWZ5IHRoYXQga2V5IGNvbmZpZyBvcHRpb24uIEV2ZXJ5dGhpbmcgaGluZ2VzIG9uIHRoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDE6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE9GX01ESU8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpby9LY29uZmlnPTk9Y29uZmlnIEZXTk9ERV9NRElPXG4tLVxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTEzLVxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnOjE0OmNvbmZpZyBPRl9NRElPXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctMTUtXHRkZWZfdHJpc3RhdGUgT0ZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTczCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ29uc2lkZXJpbmcgT0ZfTURJTyBhbmQgS2NvbmZpZyoqCgpSaWdodCwgc28gYE9GX01ESU9gIGlzIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCB3aGVuIGBPRmAgaXMgZW5hYmxlZCDigJMgYSBwcmV0dHkgc3RhbmRhcmQgZGVwZW5kZW5jeS4gTm93LCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgaW1wbGljaXQgZGVwZW5kZW5jeSBmb3IgbXkgY3VycmVudCBwcm9qZWN0LiBUbyBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIHN1cnByaXNlcyBvciBjb25mbGljdHMgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIHRoZSBLY29uZmlnIGluIGBkcml2ZXJzL29mL3Byb3BlcnR5LmNgLiBJIGhhdmUgYSBmZWVsaW5nIEkmIzM5O2xsIGZpbmQgYE9GX01ESU89eWAgc29tZXdoZXJlIG5lYXIgYE9GPXlgLCBidXQgaXQmIzM5O3MgYWx3YXlzIGJlc3QgdG8gY29uZmlybSBhbmQgcnVsZSBvdXQgYW55IGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQgbWlnaHQgYmUgaW52b2x2ZWQuIEdvdHRhIGNvdmVyIGFsbCBteSBiYXNlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDE6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cHJvcGVydHlcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9vZi9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL29mL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuZHJpdmVycy9vZi9NYWtlZmlsZToyOm9iai15ID0gYmFzZS5vIGNwdS5vIGRldmljZS5vIG1vZHVsZS5vIHBsYXRmb3JtLm8gcHJvcGVydHkub1xuZHJpdmVycy9vZi9NYWtlZmlsZS0zLW9iai0kKENPTkZJR19PRl9LT0JKKSAmIzQzOz0ga29iai5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAxOjAyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyNjgKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktlcm5lbCBDb25maWd1cmF0aW9uIENvbnRleHQqKgoKT2theSwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiBrZXJuZWwgY29uZmlndXJhdGlvbiwgYW5kIGl0IGxvb2tzIGxpa2UgYENPTkZJR19PRmAgaXMgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBvcHRpb24gSSBuZWVkIHRvIGJlIGNvbmNlcm5lZCB3aXRoIGluIHRoaXMgY29udGV4dC4gSXQmIzM5O3MgdGhlIGx5bmNocGluLiBMZXQmIzM5O3MgZGlnIGludG8gdGhlIGRldGFpbHMgYW5kIGZpbmQgaXRzIGRlZmluaXRpb24uIFRvIGdldCBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIG9wdGlvbiBpcyB1c2VkLCBJIHNob3VsZCBsb29rIGF0IGBkcml2ZXJzL2Jhc2UvY29yZS5jYCBhbmQgaXRzIGFzc29jaWF0ZWQgS2NvbmZpZyBmaWxlLiBJJiMzOTtsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgaXQmIzM5O3MgZGVmaW5lZCBhbmQgaG93IGl0IGltcGFjdHMgdGhlIG90aGVyIGtlcm5lbCBjb21wb25lbnRzLiBUaGlzIGlzIGEgY29tbW9uIHBhdHRlcm4gd2hlbiB3b3JraW5nIHdpdGggZGV2aWNlIHRyZWUgZW5hYmxlZCBzeXN0ZW1zLCBzbyBJIG5lZWQgdG8gY2hlY2sgaXRzIGNvbnRleHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDAxOjAyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvcmVcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9iYXNlL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmFzZS9NYWtlZmlsZS0zLVxuZHJpdmVycy9iYXNlL01ha2VmaWxlOjQ6b2JqLXlcdFx0XHQ6PSBjb21wb25lbnQubyBjb3JlLm8gYnVzLm8gZGQubyBzeXNjb3JlLm8gXFxcbmRyaXZlcnMvYmFzZS9NYWtlZmlsZS01LVx0XHRcdCAgIGRyaXZlci5vIGNsYXNzLm8gcGxhdGZvcm0ubyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTUwCgkJCQkJCQlvdXRwdXQ6IDE1NwoJCQkJCQkJdGhvdWdodHM6IDIwMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgaXMgYWJvdXQgZGV2aWNlIGxpbmsgbG9naWMsIGFuZCBpdCBsb29rcyBsaWtlIGEgdGFyZ2V0ZWQgbW9kaWZpY2F0aW9uLiBUaGUgY2hhbmdlcyBhcmUgZm9jdXNlZCBvbiB0aGVzZSBzcGVjaWZpYyBzeW1ib2xzOiBgZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5YCwgYF9fZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5YCwgYG9mX2xpbmtfdG9fcGhhbmRsZWAsIGFuZCBgX19vZl9tZGlvYnVzX3JlZ2lzdGVyYC4gUmlnaHQgYXdheSwgdGhhdCB0ZWxscyBtZSB3ZSYjMzk7cmUgbG9va2luZyBhdCBjb3JlIGZ1bmN0aW9uYWxpdHksIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIGhvdyBkZXZpY2VzIGFyZSBsaW5rZWQgdG9nZXRoZXIgYW5kIGhhbmRsZWQgd2l0aGluIHRoZSBrZXJuZWwuIFRoZSBmYWN0IHRoYXQgYG9mX2xpbmtfdG9fcGhhbmRsZWAgaXMgaW52b2x2ZWQgc3VnZ2VzdHMgT3BlbiBGaXJtd2FyZSAoT0YpIGlzIHBsYXlpbmcgYSBrZXkgcm9sZSwgYW5kIGxpa2VseSBgT0ZfTURJT2AgYXMgd2VsbCwgZ2l2ZW4gdGhlIGBfX29mX21kaW9idXNfcmVnaXN0ZXJgIHRvdWNoLgoKVGhlIHBhdGNoIGl0c2VsZiBkZWFscyB3aXRoIGBldGhlcm5ldC1waHktcGFja2FnZWAgd2hpY2ggdGVsbHMgbWUgdGhhdCB0aGVyZSBpcyBhbiBgT0ZgIGNvbmZpZyBhY3RpdmUsIGFuZCB0aGVyZSBtYXkgYmUgYW4gYE9GX01ESU9gIGNvbmZpZyBhbHNvIGFjdGl2ZS4KCkdpdmVuIHRoZSBzY29wZSBhbmQgcmVhY2ggb2YgdGhlc2UgbW9kaWZpY2F0aW9ucywgYW5kIHRoZSBjb3JlIG5hdHVyZSBvZiB0aGUgZnVuY3Rpb25zIGJlaW5nIHRvdWNoZWQsIEkmIzM5O20gY29uZmlkZW50IHRoYXQgdGhpcyBpcyB3b3J0aCBleHBsb3JpbmcgZnVydGhlciwgZXNwZWNpYWxseSBmb3IgZnV6emluZy4gVGhlc2UgdHlwZXMgb2YgY2hhbmdlcyBhcmUgcHJpbWUgdGFyZ2V0cyBmb3IgZXhwb3Npbmcgc3VidGxlIGJ1Z3MgYW5kIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMuIEkgbmVlZCB0byBtYWtlIGEgbm90ZSB0byBzZXQgdGhlIHJlc3VsdHMgYW5kIGJlZ2luIGRlZXBlciBhbmFseXNpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDE6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09GJiMzNDssCiAgICAmIzM0O09GX01ESU8mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtkZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkmIzM0OywKICAgICYjMzQ7X19kZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkmIzM0OywKICAgICYjMzQ7b2ZfbGlua190b19waGFuZGxlJiMzNDssCiAgICAmIzM0O19fb2ZfbWRpb2J1c19yZWdpc3RlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGRldmljZSBsaW5rIG1hbmFnZW1lbnQgYW5kIE9GIHByb3BlcnR5IHBhcnNpbmcsIHNwZWNpZmljYWxseSBhZGRpbmcgYSBuZXcgZnVuY3Rpb24gYGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seWAgYW5kIGhhbmRsaW5nIGBldGhlcm5ldC1waHktcGFja2FnZWAgbm9kZXMgaW4gYG9mX2xpbmtfdG9fcGhhbmRsZWAuIFRoZXNlIGFyZSBjb3JlIGtlcm5lbCBjb21wb25lbnRzIGFuZCByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtPRiYjMzQ7LAogICAgJiMzNDtPRl9NRElPJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7ZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5JiMzNDssCiAgICAmIzM0O19fZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5JiMzNDssCiAgICAmIzM0O29mX2xpbmtfdG9fcGhhbmRsZSYjMzQ7LAogICAgJiMzNDtfX29mX21kaW9idXNfcmVnaXN0ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBkZXZpY2UgbGluayBtYW5hZ2VtZW50IGFuZCBPRiBwcm9wZXJ0eSBwYXJzaW5nLCBzcGVjaWZpY2FsbHkgYWRkaW5nIGEgbmV3IGZ1bmN0aW9uIGBkZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHlgIGFuZCBoYW5kbGluZyBgZXRoZXJuZXQtcGh5LXBhY2thZ2VgIG5vZGVzIGluIGBvZl9saW5rX3RvX3BoYW5kbGVgLiBUaGVzZSBhcmUgY29yZSBrZXJuZWwgY29tcG9uZW50cyBhbmQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDE6MDI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMTowMjwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBkZXZpY2UgbGluayBtYW5hZ2VtZW50IGluIHRoZSBkcml2ZXIgY29yZSBhbmQgT0YgcHJvcGVydHkgcGFyc2luZywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIERMX0ZMQUdfU1lOQ19TVEFURV9PTkxZIGxpbmtzIGFuZCBldGhlcm5ldC1waHktcGFja2FnZSBub2Rlcy4gVGhlc2UgY2hhbmdlcyBpbnZvbHZlIGxpc3QgbWFuaXB1bGF0aW9uLCBsb2NraW5nLCBhbmQgZGV2aWNlIG5vZGUgdHJhdmVyc2FsLiBUaGVyZSBhcmUgbm8gbmV3IGJ1ZmZlcnMgYWxsb2NhdGVkLCBubyBkYXRhIGNvcGllZCB0byB1c2Vyc3BhY2UsIGFuZCBubyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBjb3VsZCBiZSByZWFkIG9yIGxlYWtlZC4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSBsb2dpY2FsIGVycm9ycywgdXNlLWFmdGVyLWZyZWVzLCBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBvciBsb2NraW5nIGlzc3Vlcywgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiwgTE9DS0RFUCwgYW5kIHN0YW5kYXJkIGtlcm5lbCBidWcgZGV0ZWN0b3JzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAyMzk1NDdiYzhmMDk3ZDVjYjgwMDZiNzUwYzUzNmQwY2Q0MzBkZmMyCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgMTUgMDE6MDE6NTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2UvY29yZS5jIGIvZHJpdmVycy9iYXNlL2NvcmUuYwppbmRleCA0ZDAyNjY4Mjk0NGYyLi42MjdmY2ZhMjc0ZjBlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jhc2UvY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmFzZS9jb3JlLmMKQEAgLTEzMDUsNiAmIzQzOzEzMDUsNTcgQEAgc3RhdGljIHZvaWQgZGV2aWNlX2xpbmtfZHJvcF9tYW5hZ2VkKHN0cnVjdCBkZXZpY2VfbGluayAqbGluaykKIAlrcmVmX3B1dCgmYW1wO2xpbmstJmd0O2tyZWYsIF9fZGV2aWNlX2xpbmtfZGVsKTsKIH0KIAomIzQzOy8qIENhbGxlciBtdXN0IGhvbGQgdGhlIGRldmljZSBsaW5rcyB3cml0ZSBsb2NrLiAqLwomIzQzO3N0YXRpYyB2b2lkIF9fZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KHN0cnVjdCBkZXZpY2UgKmRldiwKJiM0MzsJCQkJCQlzdHJ1Y3QgbGlzdF9oZWFkICpzeW5jX2xpc3QpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgZGV2aWNlX2xpbmsgKmxpbmssICpsbjsKJiM0MzsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGxpbmssIGxuLCAmYW1wO2Rldi0mZ3Q7bGlua3Muc3VwcGxpZXJzLCBjX25vZGUpIHsKJiM0MzsJCXN0cnVjdCBkZXZpY2UgKnN1cHBsaWVyOwomIzQzOwomIzQzOwkJaWYgKCFkZXZpY2VfbGlua190ZXN0KGxpbmssIERMX0ZMQUdfTUFOQUdFRCkgfHwKJiM0MzsJCSAgICAhZGV2aWNlX2xpbmtfdGVzdChsaW5rLCBETF9GTEFHX1NZTkNfU1RBVEVfT05MWSkpCiYjNDM7CQkJY29udGludWU7CiYjNDM7CiYjNDM7CQkvKgomIzQzOwkJICogRExfRkxBR19TWU5DX1NUQVRFX09OTFkgZXhjbHVkZXMgYWxsIG90aGVyIG1hbmFnZWQgbGluayBmbGFncywKJiM0MzsJCSAqIHNvIGl0IGlzIHNhZmUgdG8gZHJvcCB0aGUgbWFuYWdlZCBsaW5rIGNvbXBsZXRlbHkuCiYjNDM7CQkgKi8KJiM0MzsJCXN1cHBsaWVyID0gbGluay0mZ3Q7c3VwcGxpZXI7CiYjNDM7CQlkZXZpY2VfbGlua19kcm9wX21hbmFnZWQobGluayk7CiYjNDM7CiYjNDM7CQlpZiAoZGVmZXJfc3luY19zdGF0ZV9jb3VudCkKJiM0MzsJCQlfX2RldmljZV9saW5rc19zdXBwbGllcl9kZWZlcl9zeW5jKHN1cHBsaWVyKTsKJiM0MzsJCWVsc2UKJiM0MzsJCQlfX2RldmljZV9saW5rc19xdWV1ZV9zeW5jX3N0YXRlKHN1cHBsaWVyLCBzeW5jX2xpc3QpOwomIzQzOwl9CiYjNDM7fQomIzQzOwomIzQzOy8qKgomIzQzOyAqIGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seSAtIERyb3AgbWFuYWdlZCBzeW5jLXN0YXRlLW9ubHkgbGlua3MKJiM0MzsgKiBAZGV2OiBDb25zdW1lciBkZXZpY2Ugd2hvc2UgcHJveHkgbGlua3Mgc2hvdWxkIGJlIGRyb3BwZWQKJiM0MzsgKgomIzQzOyAqIEZyYW1ld29ya3Mgd2hpY2ggcG9wdWxhdGUgY2hpbGQgZGV2aWNlcyBiZWxvdyBhIGRyaXZlcmxlc3MgZGV2aWNlIGNhbiBjYWxsCiYjNDM7ICogdGhpcyBhZnRlciBhZGRpbmcgYWxsIG9mIHRoZSBjaGlsZHJlbi4gVGhlIGNoaWxkcmVuIHdpbGwgaGF2ZSBhY3F1aXJlZCB0aGVpcgomIzQzOyAqIG93biBsaW5rcyBieSB0aGVuLCBzbyB0aGUgdGVtcG9yYXJ5IGxpbmtzIHdoaWNoIG9ubHkgcHJldmVudCBzdXBwbGllcnMgZnJvbQomIzQzOyAqIHJlY2VpdmluZyBzeW5jX3N0YXRlKCkgY2FsbGJhY2tzIGFyZSBubyBsb25nZXIgbmVlZGVkLgomIzQzOyAqCiYjNDM7ICogUmUtZXZhbHVhdGUgZWFjaCBhZmZlY3RlZCBzdXBwbGllciBmb3IgYSBzeW5jX3N0YXRlKCkgY2FsbGJhY2sgYWZ0ZXIgaXRzCiYjNDM7ICogbGluayBpcyBkcm9wcGVkLgomIzQzOyAqLwomIzQzO3ZvaWQgZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KHN0cnVjdCBkZXZpY2UgKmRldikKJiM0Mzt7CiYjNDM7CUxJU1RfSEVBRChzeW5jX2xpc3QpOwomIzQzOwomIzQzOwlkZXZpY2VfbGlua3Nfd3JpdGVfbG9jaygpOwomIzQzOwlfX2RldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seShkZXYsICZhbXA7c3luY19saXN0KTsKJiM0MzsJZGV2aWNlX2xpbmtzX3dyaXRlX3VubG9jaygpOwomIzQzOwomIzQzOwlkZXZpY2VfbGlua3NfZmx1c2hfc3luY19saXN0KCZhbXA7c3luY19saXN0LCBOVUxMKTsKJiM0Mzt9CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KTsKJiM0MzsKIHN0YXRpYyBzc2l6ZV90IHdhaXRpbmdfZm9yX3N1cHBsaWVyX3Nob3coc3RydWN0IGRldmljZSAqZGV2LAogCQkJCQkgY29uc3Qgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCiAJCQkJCSBjaGFyICpidWYpCkBAIC0xNDE4LDYgJiM0MzsxNDY5LDggQEAgdm9pZCBkZXZpY2VfbGlua3NfZHJpdmVyX2JvdW5kKHN0cnVjdCBkZXZpY2UgKmRldikKIAllbHNlCiAJCV9fZGV2aWNlX2xpbmtzX3F1ZXVlX3N5bmNfc3RhdGUoZGV2LCAmYW1wO3N5bmNfbGlzdCk7CiAKJiM0MzsJX19kZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkoZGV2LCAmYW1wO3N5bmNfbGlzdCk7CiYjNDM7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGxpbmssIGxuLCAmYW1wO2Rldi0mZ3Q7bGlua3Muc3VwcGxpZXJzLCBjX25vZGUpIHsKIAkJc3RydWN0IGRldmljZSAqc3VwcGxpZXI7CiAKQEAgLTE0MjUsMTcgJiM0MzsxNDc4LDEwIEBAIHZvaWQgZGV2aWNlX2xpbmtzX2RyaXZlcl9ib3VuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJCQljb250aW51ZTsKIAogCQlzdXBwbGllciA9IGxpbmstJmd0O3N1cHBsaWVyOwotCQlpZiAoZGV2aWNlX2xpbmtfdGVzdChsaW5rLCBETF9GTEFHX1NZTkNfU1RBVEVfT05MWSkpIHsKLQkJCS8qCi0JCQkgKiBXaGVuIERMX0ZMQUdfU1lOQ19TVEFURV9PTkxZIGlzIHNldCwgaXQgbWVhbnMgbm8KLQkJCSAqIG90aGVyIERMX01BTkFHRURfTElOS19GTEFHUyBoYXZlIGJlZW4gc2V0LiBTbywgaXQmIzM5O3MKLQkJCSAqIHNhdmUgdG8gZHJvcCB0aGUgbWFuYWdlZCBsaW5rIGNvbXBsZXRlbHkuCi0JCQkgKi8KLQkJCWRldmljZV9saW5rX2Ryb3BfbWFuYWdlZChsaW5rKTsKLQkJfSBlbHNlIGlmIChkZXZfaXNfYmVzdF9lZmZvcnQoZGV2KSAmYW1wOyZhbXA7Ci0JCQkgICBkZXZpY2VfbGlua190ZXN0KGxpbmssIERMX0ZMQUdfSU5GRVJSRUQpICZhbXA7JmFtcDsKLQkJCSAgIGxpbmstJmd0O3N0YXR1cyAhPSBETF9TVEFURV9DT05TVU1FUl9QUk9CRSAmYW1wOyZhbXA7Ci0JCQkgICAhZGV2X2Nhbl9tYXRjaChsaW5rLSZndDtzdXBwbGllcikpIHsKJiM0MzsJCWlmIChkZXZfaXNfYmVzdF9lZmZvcnQoZGV2KSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgZGV2aWNlX2xpbmtfdGVzdChsaW5rLCBETF9GTEFHX0lORkVSUkVEKSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgbGluay0mZ3Q7c3RhdHVzICE9IERMX1NUQVRFX0NPTlNVTUVSX1BST0JFICZhbXA7JmFtcDsKJiM0MzsJCSAgICAhZGV2X2Nhbl9tYXRjaChsaW5rLSZndDtzdXBwbGllcikpIHsKIAkJCS8qCiAJCQkgKiBXaGVuIGRldl9pc19iZXN0X2VmZm9ydCgpIGlzIHRydWUsIHdlIGlnbm9yZSBkZXZpY2UKIAkJCSAqIGxpbmtzIHRvIHN1cHBsaWVycyB0aGF0IGRvbiYjMzk7dCBoYXZlIGEgZHJpdmVyLiAgSWYgdGhlCkBAIC0xNDQ5LDEyICYjNDM7MTQ5NSw2IEBAIHZvaWQgZGV2aWNlX2xpbmtzX2RyaXZlcl9ib3VuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJCQlXUklURV9PTkNFKGxpbmstJmd0O3N0YXR1cywgRExfU1RBVEVfQUNUSVZFKTsKIAkJfQogCi0JCS8qCi0JCSAqIFRoaXMgbmVlZHMgdG8gYmUgZG9uZSBldmVuIGZvciB0aGUgZGVsZXRlZAotCQkgKiBETF9GTEFHX1NZTkNfU1RBVEVfT05MWSBkZXZpY2UgbGluayBpbiBjYXNlIGl0IHdhcyB0aGUgbGFzdAotCQkgKiBkZXZpY2UgbGluayB0aGF0IHdhcyBwcmV2ZW50aW5nIHRoZSBzdXBwbGllciBmcm9tIGdldHRpbmcgYQotCQkgKiBzeW5jX3N0YXRlKCkgY2FsbC4KLQkJICovCiAJCWlmIChkZWZlcl9zeW5jX3N0YXRlX2NvdW50KQogCQkJX19kZXZpY2VfbGlua3Nfc3VwcGxpZXJfZGVmZXJfc3luYyhzdXBwbGllcik7CiAJCWVsc2UKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jIGIvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMKaW5kZXggYjhkMjk4YzA0ZDNmZi4uNDlmOWI0MDYyY2Y1YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMKQEAgLTIyOSw3ICYjNDM7MjI5LDcgQEAgaW50IF9fb2ZfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGRldmljZV9ub2RlICpucCwKIAkJZ290byB1bnJlZ2lzdGVyOwogCiAJaWYgKCFzY2FucGh5cykKLQkJcmV0dXJuIDA7CiYjNDM7CQlnb3RvIGRvbmU7CiAKIAkvKiBhdXRvIHNjYW4gZm9yIFBIWXMgd2l0aCBlbXB0eSByZWcgcHJvcGVydHkgKi8KIAlmb3JfZWFjaF9hdmFpbGFibGVfY2hpbGRfb2Zfbm9kZShucCwgY2hpbGQpIHsKQEAgLTI2MSw2ICYjNDM7MjYxLDkgQEAgaW50IF9fb2ZfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGRldmljZV9ub2RlICpucCwKIAkJfQogCX0KIAomIzQzO2RvbmU6CiYjNDM7CWRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seSgmYW1wO21kaW8tJmd0O2Rldik7CiYjNDM7CiAJcmV0dXJuIDA7CiAKIHB1dF91bnJlZ2lzdGVyOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9vZi9wcm9wZXJ0eS5jIGIvZHJpdmVycy9vZi9wcm9wZXJ0eS5jCmluZGV4IDcyY2YxMjkwN2RlMDMuLmYyOWJhODE4ZWNiYzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvb2YvcHJvcGVydHkuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL29mL3Byb3BlcnR5LmMKQEAgLTEyNzIsNiAmIzQzOzEyNzIsMjAgQEAgc3RhdGljIHZvaWQgb2ZfbGlua190b19waGFuZGxlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqY29uX25wLAogCQl0bXBfbnAgPSBvZl9nZXRfbmV4dF9wYXJlbnQodG1wX25wKTsKIAl9CiAKJiM0MzsJLyoKJiM0MzsJICogQW4gRXRoZXJuZXQgUEhZIHBhY2thZ2Ugbm9kZSBkZXNjcmliZXMgcmVzb3VyY2VzIHNoYXJlZCBieSBpdHMgbWVtYmVyCiYjNDM7CSAqIFBIWXMsIGJ1dCBpcyBub3QgcG9wdWxhdGVkIGFzIGEgc3RydWN0IGRldmljZS4gTGluayBldmVyeSBlbmFibGVkCiYjNDM7CSAqIG1lbWJlciBQSFkgdG8gdGhvc2Ugc3VwcGxpZXJzIHNvIGZ3X2RldmxpbmsgY2FuIHVzZSB0aGUgcmVhbCBjb25zdW1lcgomIzQzOwkgKiBkZXZpY2VzIGluc3RlYWQgb2YgbGVhdmluZyBhIHByb3h5IGxpbmsgb24gdGhlIE1ESU8gYnVzIGluZGVmaW5pdGVseS4KJiM0MzsJICovCiYjNDM7CWlmIChvZl9ub2RlX25hbWVfZXEoY29uX25wLCAmIzM0O2V0aGVybmV0LXBoeS1wYWNrYWdlJiMzNDspKSB7CiYjNDM7CQlmb3JfZWFjaF9hdmFpbGFibGVfY2hpbGRfb2Zfbm9kZV9zY29wZWQoY29uX25wLCBjaGlsZCkKJiM0MzsJCQlmd25vZGVfbGlua19hZGQob2ZfZndub2RlX2hhbmRsZShjaGlsZCksCiYjNDM7CQkJCQlvZl9md25vZGVfaGFuZGxlKHN1cF9ucCksIGZsYWdzKTsKJiM0MzsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwogCWZ3bm9kZV9saW5rX2FkZChvZl9md25vZGVfaGFuZGxlKGNvbl9ucCksIG9mX2Z3bm9kZV9oYW5kbGUoc3VwX25wKSwgZmxhZ3MpOwogfQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RldmljZS5oIGIvaW5jbHVkZS9saW51eC9kZXZpY2UuaAppbmRleCBhZWU3OWZkNmIzMmI0Li44YWZiOWYyYjBkODI1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2RldmljZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvZGV2aWNlLmgKQEAgLTEzODEsNiAmIzQzOzEzODEsNyBAQCBzdHJ1Y3QgZGV2aWNlX2xpbmsgKmRldmljZV9saW5rX2FkZChzdHJ1Y3QgZGV2aWNlICpjb25zdW1lciwKIAkJCQkgICAgc3RydWN0IGRldmljZSAqc3VwcGxpZXIsIHUzMiBmbGFncyk7CiB2b2lkIGRldmljZV9saW5rX2RlbChzdHJ1Y3QgZGV2aWNlX2xpbmsgKmxpbmspOwogdm9pZCBkZXZpY2VfbGlua19yZW1vdmUodm9pZCAqY29uc3VtZXIsIHN0cnVjdCBkZXZpY2UgKnN1cHBsaWVyKTsKJiM0Mzt2b2lkIGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seShzdHJ1Y3QgZGV2aWNlICpkZXYpOwogdm9pZCBkZXZpY2VfbGlua3Nfc3VwcGxpZXJfc3luY19zdGF0ZV9wYXVzZSh2b2lkKTsKIHZvaWQgZGV2aWNlX2xpbmtzX3N1cHBsaWVyX3N5bmNfc3RhdGVfcmVzdW1lKHZvaWQpOwogdm9pZCBkZXZpY2VfbGlua193YWl0X3JlbW92YWwodm9pZCk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwMTowMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTg1CgkJCQkJCQlvdXRwdXQ6IDE2OAoJCQkJCQkJdGhvdWdodHM6IDQ5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLTVNBTiBBc3Nlc3NtZW50OiBEZXZpY2UgTGluayBNYW5hZ2VtZW50IFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIGhlcmUgdGhhdCYjMzk7cyB0b3VjaGluZyBkZXZpY2UgbGluayBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgaW4gYGRyaXZlcnMvYmFzZS9jb3JlLmNgLCBgZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmNgLCBhbmQgYGRyaXZlcnMvb2YvcHJvcGVydHkuY2AuIE15IGluaXRpYWwgY29uY2VybiwgYXMgYWx3YXlzLCBpcyBhcm91bmQgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzLCBhbmQgc3BlY2lmaWNhbGx5LCB3aGV0aGVyIHRoaXMgaW50cm9kdWNlcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuCgpGcm9tIGEgcXVpY2sgc2tpbSwgdGhlIGNoYW5nZXMgYXJlIGNlbnRlcmVkIGFyb3VuZCBkZXZpY2UgbGlua3MsIGxpc3QgbWFuYWdlbWVudCwgYW5kIGhvdyB0aGUga2VybmVsIHBhcnNlcyBkZXZpY2Ugbm9kZXMuIEkgZG9uJiMzOTt0IHNlZSBhbnl0aGluZyB0aGF0IHNjcmVhbXMgJiMzNDtwb3RlbnRpYWwgS01TQU4gdHJpZ2dlci4mIzM0OyBUaGVyZSBhcmUgbm8gbmV3IG1lbW9yeSBhbGxvY2F0aW9ucyBwYXNzZWQgdG8gdXNlciBzcGFjZS4gTm90aGluZyBjb21wbGV4IGlzIGJlaW5nIGNvcGllZCB0byB0aGUgdXNlciBzcGFjZS4gVGhlcmUgYXJlbiYjMzk7dCBhbnkgbmV3IHN0cnVjdCBmaWVsZHMgdGhhdCBjb3VsZCBiZSBsZWZ0IHVuaW5pdGlhbGl6ZWQgYW5kIHRoZW4gbGVha2VkLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlcyByZXZvbHZlIGFyb3VuZCBkZXZpY2UgbGlua3MsIG5hbWVseSB0aG9zZSBtYXJrZWQgd2l0aCBgRExfRkxBR19TWU5DX1NUQVRFX09OTFlgLCBhbmQgaG93IHRoZXkgYXJlIGRyb3BwZWQuCgpMb29raW5nIGNsb3NlciBhdCBgZHJpdmVycy9iYXNlL2NvcmUuY2AsIEkgc2VlIGEgbmV3IGZ1bmN0aW9uLCBgX19kZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHlgLCB3aGljaCBpdGVyYXRlcyB0aHJvdWdoIGBkZXYtJmd0O2xpbmtzLnN1cHBsaWVyc2AuIElmIGEgbGluayBpcyBtYW5hZ2VkIGFuZCBoYXMgdGhlIGBETF9GTEFHX1NZTkNfU1RBVEVfT05MWWAgZmxhZywgdGhlIGxpbmsgaXMgZHJvcHBlZCwgYW5kIHRoZSBzeW5jIHN0YXRlIGlzIHF1ZXVlZC4gVGhlcmUmIzM5O3MgYSBsb2NraW5nIHdyYXBwZXIgYXJvdW5kIHRoaXMgaW4gYGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seWAsIGFuZCBgZGV2aWNlX2xpbmtzX2RyaXZlcl9ib3VuZGAgbm93IGNhbGxzIHRoaXMgZnVuY3Rpb24gaW5zdGVhZCBvZiBkb2luZyB0aGUgb3BlcmF0aW9uIGlubGluZS4KCkluIGBkcml2ZXJzL25ldC9tZGlvL29mX21kaW8uY2AsIGBfX29mX21kaW9idXNfcmVnaXN0ZXJgIGNhbGxzIGBkZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkoJmFtcDttZGlvLSZndDtkZXYpYCBiZWZvcmUgcmV0dXJuaW5nIHN1Y2Nlc3MuCgpGaW5hbGx5LCBgZHJpdmVycy9vZi9wcm9wZXJ0eS5jYCBoYXMgYSBtb2RpZmljYXRpb24gdG8gYG9mX2xpbmtfdG9fcGhhbmRsZWAuIEEgc3BlY2lmaWMgY2FzZSBpcyBhZGRlZCBmb3IgJiMzNDtldGhlcm5ldC1waHktcGFja2FnZSYjMzQ7IG5vZGVzIHRvIGxpbmsgZXZlcnkgZW5hYmxlZCBtZW1iZXIgUEhZIHRvIHRoZSBzdXBwbGllcnMuCgpDb25zaWRlcmluZyBhbGwgb2YgdGhpcywgSSBkb24mIzM5O3Qgc2VlIGFueSBvYnZpb3VzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IG9yIGluZm9ybWF0aW9uIGxlYWsgcmlza3MgdGhhdCB3b3VsZCBiZSBleHBvc2VkIGJ5IHRoaXMgcGF0Y2guIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIHdvdWxkIGJlIGNsYXNzaWMgbG9naWNhbCBidWdzIGxpa2UgdXNlLWFmdGVyLWZyZWUsIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIGxpc3QgY29ycnVwdGlvbiwgb3IgbG9ja2luZyBpc3N1ZXMsIHRoZSBraW5kcyBvZiBwcm9ibGVtcyB0aGF0IGFyZSB0eXBpY2FsbHkgY2F1Z2h0IGJ5IEtBU0FOLCBMT0NLREVQLCBvciB0aGUgc3RhbmRhcmQga2VybmVsIGJ1ZyBkZXRlY3RvcnMuIFNvLCBJJiMzOTttIGNvbmZpZGVudCBpbiBzYXlpbmcgdGhhdCB0aGlzIHBhdGNoIGRvZXMgKm5vdCogcmVxdWlyZSBLTVNBTi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDE6MDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZGV2aWNlIGxpbmsgbWFuYWdlbWVudCBpbiB0aGUgZHJpdmVyIGNvcmUgYW5kIE9GIHByb3BlcnR5IHBhcnNpbmcsIHNwZWNpZmljYWxseSBoYW5kbGluZyBETF9GTEFHX1NZTkNfU1RBVEVfT05MWSBsaW5rcyBhbmQgZXRoZXJuZXQtcGh5LXBhY2thZ2Ugbm9kZXMuIFRoZXNlIGNoYW5nZXMgaW52b2x2ZSBsaXN0IG1hbmlwdWxhdGlvbiwgbG9ja2luZywgYW5kIGRldmljZSBub2RlIHRyYXZlcnNhbC4gVGhlcmUgYXJlIG5vIG5ldyBidWZmZXJzIGFsbG9jYXRlZCwgbm8gZGF0YSBjb3BpZWQgdG8gdXNlcnNwYWNlLCBhbmQgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMgY291bGQgYmUgcmVhZCBvciBsZWFrZWQuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoZXNlIGNoYW5nZXMgd291bGQgYmUgbG9naWNhbCBlcnJvcnMsIHVzZS1hZnRlci1mcmVlcywgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlcywgb3IgbG9ja2luZyBpc3N1ZXMsIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4sIExPQ0tERVAsIGFuZCBzdGFuZGFyZCBrZXJuZWwgYnVnIGRldGVjdG9ycy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBLTVNBTi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGRldmljZSBsaW5rIG1hbmFnZW1lbnQgaW4gdGhlIGRyaXZlciBjb3JlIGFuZCBPRiBwcm9wZXJ0eSBwYXJzaW5nLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgRExfRkxBR19TWU5DX1NUQVRFX09OTFkgbGlua3MgYW5kIGV0aGVybmV0LXBoeS1wYWNrYWdlIG5vZGVzLiBUaGVzZSBjaGFuZ2VzIGludm9sdmUgbGlzdCBtYW5pcHVsYXRpb24sIGxvY2tpbmcsIGFuZCBkZXZpY2Ugbm9kZSB0cmF2ZXJzYWwuIFRoZXJlIGFyZSBubyBuZXcgYnVmZmVycyBhbGxvY2F0ZWQsIG5vIGRhdGEgY29waWVkIHRvIHVzZXJzcGFjZSwgYW5kIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQgb3IgbGVha2VkLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIGxvZ2ljYWwgZXJyb3JzLCB1c2UtYWZ0ZXItZnJlZXMsIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIGxvY2tpbmcgaXNzdWVzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLCBMT0NLREVQLCBhbmQgc3RhbmRhcmQga2VybmVsIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAxOjAxOjU4LjA4NjA0MDU2NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzMzAyODMxODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk9GXCIsXG4gICAgXCJPRl9NRElPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5XCIsXG4gICAgXCJfX2RldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seVwiLFxuICAgIFwib2ZfbGlua190b19waGFuZGxlXCIsXG4gICAgXCJfX29mX21kaW9idXNfcmVnaXN0ZXJcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGRldmljZSBsaW5rIG1hbmFnZW1lbnQgaW4gdGhlIGRyaXZlciBjb3JlIGFuZCBPRiBwcm9wZXJ0eSBwYXJzaW5nLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgRExfRkxBR19TWU5DX1NUQVRFX09OTFkgbGlua3MgYW5kIGV0aGVybmV0LXBoeS1wYWNrYWdlIG5vZGVzLiBUaGVzZSBjaGFuZ2VzIGludm9sdmUgbGlzdCBtYW5pcHVsYXRpb24sIGxvY2tpbmcsIGFuZCBkZXZpY2Ugbm9kZSB0cmF2ZXJzYWwuIFRoZXJlIGFyZSBubyBuZXcgYnVmZmVycyBhbGxvY2F0ZWQsIG5vIGRhdGEgY29waWVkIHRvIHVzZXJzcGFjZSwgYW5kIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQgb3IgbGVha2VkLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIGxvZ2ljYWwgZXJyb3JzLCB1c2UtYWZ0ZXItZnJlZXMsIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIGxvY2tpbmcgaXNzdWVzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLCBMT0NLREVQLCBhbmQgc3RhbmRhcmQga2VybmVsIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgY29yZSBkZXZpY2UgbGluayBtYW5hZ2VtZW50IGFuZCBPRiBwcm9wZXJ0eSBwYXJzaW5nLCBzcGVjaWZpY2FsbHkgYWRkaW5nIGEgbmV3IGZ1bmN0aW9uIGBkZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHlgIGFuZCBoYW5kbGluZyBgZXRoZXJuZXQtcGh5LXBhY2thZ2VgIG5vZGVzIGluIGBvZl9saW5rX3RvX3BoYW5kbGVgLiBUaGVzZSBhcmUgY29yZSBrZXJuZWwgY29tcG9uZW50cyBhbmQgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDE6MDE6NTguMDg2MDQ2Mzg0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDg5NTg1NjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyMzk1NDdiYzhmMDk3ZDVjYjgwMDZiNzUwYzUzNmQwY2Q0MzBkZmMyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgQXVnIDE1IDAxOjAxOjU3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmFzZS9jb3JlLmMgYi9kcml2ZXJzL2Jhc2UvY29yZS5jXFxuaW5kZXggNGQwMjY2ODI5NDRmMi4uNjI3ZmNmYTI3NGYwZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jhc2UvY29yZS5jXFxuKysrIGIvZHJpdmVycy9iYXNlL2NvcmUuY1xcbkBAIC0xMzA1LDYgKzEzMDUsNTcgQEAgc3RhdGljIHZvaWQgZGV2aWNlX2xpbmtfZHJvcF9tYW5hZ2VkKHN0cnVjdCBkZXZpY2VfbGluayAqbGluaylcXG4gXFx0a3JlZl9wdXQoXFx1MDAyNmxpbmstXFx1MDAzZWtyZWYsIF9fZGV2aWNlX2xpbmtfZGVsKTtcXG4gfVxcbiBcXG4rLyogQ2FsbGVyIG11c3QgaG9sZCB0aGUgZGV2aWNlIGxpbmtzIHdyaXRlIGxvY2suICovXFxuK3N0YXRpYyB2b2lkIF9fZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KHN0cnVjdCBkZXZpY2UgKmRldixcXG4rXFx0XFx0XFx0XFx0XFx0XFx0c3RydWN0IGxpc3RfaGVhZCAqc3luY19saXN0KVxcbit7XFxuK1xcdHN0cnVjdCBkZXZpY2VfbGluayAqbGluaywgKmxuO1xcbitcXG4rXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGxpbmssIGxuLCBcXHUwMDI2ZGV2LVxcdTAwM2VsaW5rcy5zdXBwbGllcnMsIGNfbm9kZSkge1xcbitcXHRcXHRzdHJ1Y3QgZGV2aWNlICpzdXBwbGllcjtcXG4rXFxuK1xcdFxcdGlmICghZGV2aWNlX2xpbmtfdGVzdChsaW5rLCBETF9GTEFHX01BTkFHRUQpIHx8XFxuK1xcdFxcdCAgICAhZGV2aWNlX2xpbmtfdGVzdChsaW5rLCBETF9GTEFHX1NZTkNfU1RBVEVfT05MWSkpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXG4rXFx0XFx0LypcXG4rXFx0XFx0ICogRExfRkxBR19TWU5DX1NUQVRFX09OTFkgZXhjbHVkZXMgYWxsIG90aGVyIG1hbmFnZWQgbGluayBmbGFncyxcXG4rXFx0XFx0ICogc28gaXQgaXMgc2FmZSB0byBkcm9wIHRoZSBtYW5hZ2VkIGxpbmsgY29tcGxldGVseS5cXG4rXFx0XFx0ICovXFxuK1xcdFxcdHN1cHBsaWVyID0gbGluay1cXHUwMDNlc3VwcGxpZXI7XFxuK1xcdFxcdGRldmljZV9saW5rX2Ryb3BfbWFuYWdlZChsaW5rKTtcXG4rXFxuK1xcdFxcdGlmIChkZWZlcl9zeW5jX3N0YXRlX2NvdW50KVxcbitcXHRcXHRcXHRfX2RldmljZV9saW5rc19zdXBwbGllcl9kZWZlcl9zeW5jKHN1cHBsaWVyKTtcXG4rXFx0XFx0ZWxzZVxcbitcXHRcXHRcXHRfX2RldmljZV9saW5rc19xdWV1ZV9zeW5jX3N0YXRlKHN1cHBsaWVyLCBzeW5jX2xpc3QpO1xcbitcXHR9XFxuK31cXG4rXFxuKy8qKlxcbisgKiBkZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkgLSBEcm9wIG1hbmFnZWQgc3luYy1zdGF0ZS1vbmx5IGxpbmtzXFxuKyAqIEBkZXY6IENvbnN1bWVyIGRldmljZSB3aG9zZSBwcm94eSBsaW5rcyBzaG91bGQgYmUgZHJvcHBlZFxcbisgKlxcbisgKiBGcmFtZXdvcmtzIHdoaWNoIHBvcHVsYXRlIGNoaWxkIGRldmljZXMgYmVsb3cgYSBkcml2ZXJsZXNzIGRldmljZSBjYW4gY2FsbFxcbisgKiB0aGlzIGFmdGVyIGFkZGluZyBhbGwgb2YgdGhlIGNoaWxkcmVuLiBUaGUgY2hpbGRyZW4gd2lsbCBoYXZlIGFjcXVpcmVkIHRoZWlyXFxuKyAqIG93biBsaW5rcyBieSB0aGVuLCBzbyB0aGUgdGVtcG9yYXJ5IGxpbmtzIHdoaWNoIG9ubHkgcHJldmVudCBzdXBwbGllcnMgZnJvbVxcbisgKiByZWNlaXZpbmcgc3luY19zdGF0ZSgpIGNhbGxiYWNrcyBhcmUgbm8gbG9uZ2VyIG5lZWRlZC5cXG4rICpcXG4rICogUmUtZXZhbHVhdGUgZWFjaCBhZmZlY3RlZCBzdXBwbGllciBmb3IgYSBzeW5jX3N0YXRlKCkgY2FsbGJhY2sgYWZ0ZXIgaXRzXFxuKyAqIGxpbmsgaXMgZHJvcHBlZC5cXG4rICovXFxuK3ZvaWQgZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KHN0cnVjdCBkZXZpY2UgKmRldilcXG4re1xcbitcXHRMSVNUX0hFQUQoc3luY19saXN0KTtcXG4rXFxuK1xcdGRldmljZV9saW5rc193cml0ZV9sb2NrKCk7XFxuK1xcdF9fZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KGRldiwgXFx1MDAyNnN5bmNfbGlzdCk7XFxuK1xcdGRldmljZV9saW5rc193cml0ZV91bmxvY2soKTtcXG4rXFxuK1xcdGRldmljZV9saW5rc19mbHVzaF9zeW5jX2xpc3QoXFx1MDAyNnN5bmNfbGlzdCwgTlVMTCk7XFxuK31cXG4rRVhQT1JUX1NZTUJPTF9HUEwoZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KTtcXG4rXFxuIHN0YXRpYyBzc2l6ZV90IHdhaXRpbmdfZm9yX3N1cHBsaWVyX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxcbiBcXHRcXHRcXHRcXHRcXHQgY29uc3Qgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXFxuIFxcdFxcdFxcdFxcdFxcdCBjaGFyICpidWYpXFxuQEAgLTE0MTgsNiArMTQ2OSw4IEBAIHZvaWQgZGV2aWNlX2xpbmtzX2RyaXZlcl9ib3VuZChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIFxcdGVsc2VcXG4gXFx0XFx0X19kZXZpY2VfbGlua3NfcXVldWVfc3luY19zdGF0ZShkZXYsIFxcdTAwMjZzeW5jX2xpc3QpO1xcbiBcXG4rXFx0X19kZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkoZGV2LCBcXHUwMDI2c3luY19saXN0KTtcXG4rXFxuIFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShsaW5rLCBsbiwgXFx1MDAyNmRldi1cXHUwMDNlbGlua3Muc3VwcGxpZXJzLCBjX25vZGUpIHtcXG4gXFx0XFx0c3RydWN0IGRldmljZSAqc3VwcGxpZXI7XFxuIFxcbkBAIC0xNDI1LDE3ICsxNDc4LDEwIEBAIHZvaWQgZGV2aWNlX2xpbmtzX2RyaXZlcl9ib3VuZChzdHJ1Y3QgZGV2aWNlICpkZXYpXFxuIFxcdFxcdFxcdGNvbnRpbnVlO1xcbiBcXG4gXFx0XFx0c3VwcGxpZXIgPSBsaW5rLVxcdTAwM2VzdXBwbGllcjtcXG4tXFx0XFx0aWYgKGRldmljZV9saW5rX3Rlc3QobGluaywgRExfRkxBR19TWU5DX1NUQVRFX09OTFkpKSB7XFxuLVxcdFxcdFxcdC8qXFxuLVxcdFxcdFxcdCAqIFdoZW4gRExfRkxBR19TWU5DX1NUQVRFX09OTFkgaXMgc2V0LCBpdCBtZWFucyBub1xcbi1cXHRcXHRcXHQgKiBvdGhlciBETF9NQU5BR0VEX0xJTktfRkxBR1MgaGF2ZSBiZWVuIHNldC4gU28sIGl0J3NcXG4tXFx0XFx0XFx0ICogc2F2ZSB0byBkcm9wIHRoZSBtYW5hZ2VkIGxpbmsgY29tcGxldGVseS5cXG4tXFx0XFx0XFx0ICovXFxuLVxcdFxcdFxcdGRldmljZV9saW5rX2Ryb3BfbWFuYWdlZChsaW5rKTtcXG4tXFx0XFx0fSBlbHNlIGlmIChkZXZfaXNfYmVzdF9lZmZvcnQoZGV2KSBcXHUwMDI2XFx1MDAyNlxcbi1cXHRcXHRcXHQgICBkZXZpY2VfbGlua190ZXN0KGxpbmssIERMX0ZMQUdfSU5GRVJSRUQpIFxcdTAwMjZcXHUwMDI2XFxuLVxcdFxcdFxcdCAgIGxpbmstXFx1MDAzZXN0YXR1cyAhPSBETF9TVEFURV9DT05TVU1FUl9QUk9CRSBcXHUwMDI2XFx1MDAyNlxcbi1cXHRcXHRcXHQgICAhZGV2X2Nhbl9tYXRjaChsaW5rLVxcdTAwM2VzdXBwbGllcikpIHtcXG4rXFx0XFx0aWYgKGRldl9pc19iZXN0X2VmZm9ydChkZXYpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICBkZXZpY2VfbGlua190ZXN0KGxpbmssIERMX0ZMQUdfSU5GRVJSRUQpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdCAgICBsaW5rLVxcdTAwM2VzdGF0dXMgIT0gRExfU1RBVEVfQ09OU1VNRVJfUFJPQkUgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgICFkZXZfY2FuX21hdGNoKGxpbmstXFx1MDAzZXN1cHBsaWVyKSkge1xcbiBcXHRcXHRcXHQvKlxcbiBcXHRcXHRcXHQgKiBXaGVuIGRldl9pc19iZXN0X2VmZm9ydCgpIGlzIHRydWUsIHdlIGlnbm9yZSBkZXZpY2VcXG4gXFx0XFx0XFx0ICogbGlua3MgdG8gc3VwcGxpZXJzIHRoYXQgZG9uJ3QgaGF2ZSBhIGRyaXZlci4gIElmIHRoZVxcbkBAIC0xNDQ5LDEyICsxNDk1LDYgQEAgdm9pZCBkZXZpY2VfbGlua3NfZHJpdmVyX2JvdW5kKHN0cnVjdCBkZXZpY2UgKmRldilcXG4gXFx0XFx0XFx0V1JJVEVfT05DRShsaW5rLVxcdTAwM2VzdGF0dXMsIERMX1NUQVRFX0FDVElWRSk7XFxuIFxcdFxcdH1cXG4gXFxuLVxcdFxcdC8qXFxuLVxcdFxcdCAqIFRoaXMgbmVlZHMgdG8gYmUgZG9uZSBldmVuIGZvciB0aGUgZGVsZXRlZFxcbi1cXHRcXHQgKiBETF9GTEFHX1NZTkNfU1RBVEVfT05MWSBkZXZpY2UgbGluayBpbiBjYXNlIGl0IHdhcyB0aGUgbGFzdFxcbi1cXHRcXHQgKiBkZXZpY2UgbGluayB0aGF0IHdhcyBwcmV2ZW50aW5nIHRoZSBzdXBwbGllciBmcm9tIGdldHRpbmcgYVxcbi1cXHRcXHQgKiBzeW5jX3N0YXRlKCkgY2FsbC5cXG4tXFx0XFx0ICovXFxuIFxcdFxcdGlmIChkZWZlcl9zeW5jX3N0YXRlX2NvdW50KVxcbiBcXHRcXHRcXHRfX2RldmljZV9saW5rc19zdXBwbGllcl9kZWZlcl9zeW5jKHN1cHBsaWVyKTtcXG4gXFx0XFx0ZWxzZVxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYyBiL2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jXFxuaW5kZXggYjhkMjk4YzA0ZDNmZi4uNDlmOWI0MDYyY2Y1YyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uY1xcbisrKyBiL2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jXFxuQEAgLTIyOSw3ICsyMjksNyBAQCBpbnQgX19vZl9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLFxcbiBcXHRcXHRnb3RvIHVucmVnaXN0ZXI7XFxuIFxcbiBcXHRpZiAoIXNjYW5waHlzKVxcbi1cXHRcXHRyZXR1cm4gMDtcXG4rXFx0XFx0Z290byBkb25lO1xcbiBcXG4gXFx0LyogYXV0byBzY2FuIGZvciBQSFlzIHdpdGggZW1wdHkgcmVnIHByb3BlcnR5ICovXFxuIFxcdGZvcl9lYWNoX2F2YWlsYWJsZV9jaGlsZF9vZl9ub2RlKG5wLCBjaGlsZCkge1xcbkBAIC0yNjEsNiArMjYxLDkgQEAgaW50IF9fb2ZfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGRldmljZV9ub2RlICpucCxcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbitkb25lOlxcbitcXHRkZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkoXFx1MDAyNm1kaW8tXFx1MDAzZWRldik7XFxuK1xcbiBcXHRyZXR1cm4gMDtcXG4gXFxuIHB1dF91bnJlZ2lzdGVyOlxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL29mL3Byb3BlcnR5LmMgYi9kcml2ZXJzL29mL3Byb3BlcnR5LmNcXG5pbmRleCA3MmNmMTI5MDdkZTAzLi5mMjliYTgxOGVjYmMxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvb2YvcHJvcGVydHkuY1xcbisrKyBiL2RyaXZlcnMvb2YvcHJvcGVydHkuY1xcbkBAIC0xMjcyLDYgKzEyNzIsMjAgQEAgc3RhdGljIHZvaWQgb2ZfbGlua190b19waGFuZGxlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqY29uX25wLFxcbiBcXHRcXHR0bXBfbnAgPSBvZl9nZXRfbmV4dF9wYXJlbnQodG1wX25wKTtcXG4gXFx0fVxcbiBcXG4rXFx0LypcXG4rXFx0ICogQW4gRXRoZXJuZXQgUEhZIHBhY2thZ2Ugbm9kZSBkZXNjcmliZXMgcmVzb3VyY2VzIHNoYXJlZCBieSBpdHMgbWVtYmVyXFxuK1xcdCAqIFBIWXMsIGJ1dCBpcyBub3QgcG9wdWxhdGVkIGFzIGEgc3RydWN0IGRldmljZS4gTGluayBldmVyeSBlbmFibGVkXFxuK1xcdCAqIG1lbWJlciBQSFkgdG8gdGhvc2Ugc3VwcGxpZXJzIHNvIGZ3X2RldmxpbmsgY2FuIHVzZSB0aGUgcmVhbCBjb25zdW1lclxcbitcXHQgKiBkZXZpY2VzIGluc3RlYWQgb2YgbGVhdmluZyBhIHByb3h5IGxpbmsgb24gdGhlIE1ESU8gYnVzIGluZGVmaW5pdGVseS5cXG4rXFx0ICovXFxuK1xcdGlmIChvZl9ub2RlX25hbWVfZXEoY29uX25wLCBcXFwiZXRoZXJuZXQtcGh5LXBhY2thZ2VcXFwiKSkge1xcbitcXHRcXHRmb3JfZWFjaF9hdmFpbGFibGVfY2hpbGRfb2Zfbm9kZV9zY29wZWQoY29uX25wLCBjaGlsZClcXG4rXFx0XFx0XFx0Zndub2RlX2xpbmtfYWRkKG9mX2Z3bm9kZV9oYW5kbGUoY2hpbGQpLFxcbitcXHRcXHRcXHRcXHRcXHRvZl9md25vZGVfaGFuZGxlKHN1cF9ucCksIGZsYWdzKTtcXG4rXFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4gXFx0Zndub2RlX2xpbmtfYWRkKG9mX2Z3bm9kZV9oYW5kbGUoY29uX25wKSwgb2ZfZndub2RlX2hhbmRsZShzdXBfbnApLCBmbGFncyk7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGV2aWNlLmggYi9pbmNsdWRlL2xpbnV4L2RldmljZS5oXFxuaW5kZXggYWVlNzlmZDZiMzJiNC4uOGFmYjlmMmIwZDgyNSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2RldmljZS5oXFxuKysrIGIvaW5jbHVkZS9saW51eC9kZXZpY2UuaFxcbkBAIC0xMzgxLDYgKzEzODEsNyBAQCBzdHJ1Y3QgZGV2aWNlX2xpbmsgKmRldmljZV9saW5rX2FkZChzdHJ1Y3QgZGV2aWNlICpjb25zdW1lcixcXG4gXFx0XFx0XFx0XFx0ICAgIHN0cnVjdCBkZXZpY2UgKnN1cHBsaWVyLCB1MzIgZmxhZ3MpO1xcbiB2b2lkIGRldmljZV9saW5rX2RlbChzdHJ1Y3QgZGV2aWNlX2xpbmsgKmxpbmspO1xcbiB2b2lkIGRldmljZV9saW5rX3JlbW92ZSh2b2lkICpjb25zdW1lciwgc3RydWN0IGRldmljZSAqc3VwcGxpZXIpO1xcbit2b2lkIGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seShzdHJ1Y3QgZGV2aWNlICpkZXYpO1xcbiB2b2lkIGRldmljZV9saW5rc19zdXBwbGllcl9zeW5jX3N0YXRlX3BhdXNlKHZvaWQpO1xcbiB2b2lkIGRldmljZV9saW5rc19zdXBwbGllcl9zeW5jX3N0YXRlX3Jlc3VtZSh2b2lkKTtcXG4gdm9pZCBkZXZpY2VfbGlua193YWl0X3JlbW92YWwodm9pZCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAxOjAxOjU4LjUzNTY4NDUyN1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjI0ODYzNjA2MjMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk9GXCIsXG4gICAgXCJPRl9NRElPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5XCIsXG4gICAgXCJfX2RldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seVwiLFxuICAgIFwib2ZfbGlua190b19waGFuZGxlXCIsXG4gICAgXCJfX29mX21kaW9idXNfcmVnaXN0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGRldmljZSBsaW5rIG1hbmFnZW1lbnQgYW5kIE9GIHByb3BlcnR5IHBhcnNpbmcsIHNwZWNpZmljYWxseSBhZGRpbmcgYSBuZXcgZnVuY3Rpb24gYGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seWAgYW5kIGhhbmRsaW5nIGBldGhlcm5ldC1waHktcGFja2FnZWAgbm9kZXMgaW4gYG9mX2xpbmtfdG9fcGhhbmRsZWAuIFRoZXNlIGFyZSBjb3JlIGtlcm5lbCBjb21wb25lbnRzIGFuZCByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAyMzk1NDdiYzhmMDk3ZDVjYjgwMDZiNzUwYzUzNmQwY2Q0MzBkZmMyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMTUgMDE6MDE6NTcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2UvY29yZS5jIGIvZHJpdmVycy9iYXNlL2NvcmUuY1xuaW5kZXggNGQwMjY2ODI5NDRmMi4uNjI3ZmNmYTI3NGYwZSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmFzZS9jb3JlLmNcbisrKyBiL2RyaXZlcnMvYmFzZS9jb3JlLmNcbkBAIC0xMzA1LDYgKzEzMDUsNTcgQEAgc3RhdGljIHZvaWQgZGV2aWNlX2xpbmtfZHJvcF9tYW5hZ2VkKHN0cnVjdCBkZXZpY2VfbGluayAqbGluaylcbiBcdGtyZWZfcHV0KFx1MDAyNmxpbmstXHUwMDNla3JlZiwgX19kZXZpY2VfbGlua19kZWwpO1xuIH1cbiBcbisvKiBDYWxsZXIgbXVzdCBob2xkIHRoZSBkZXZpY2UgbGlua3Mgd3JpdGUgbG9jay4gKi9cbitzdGF0aWMgdm9pZCBfX2RldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seShzdHJ1Y3QgZGV2aWNlICpkZXYsXG4rXHRcdFx0XHRcdFx0c3RydWN0IGxpc3RfaGVhZCAqc3luY19saXN0KVxuK3tcbitcdHN0cnVjdCBkZXZpY2VfbGluayAqbGluaywgKmxuO1xuK1xuK1x0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGxpbmssIGxuLCBcdTAwMjZkZXYtXHUwMDNlbGlua3Muc3VwcGxpZXJzLCBjX25vZGUpIHtcbitcdFx0c3RydWN0IGRldmljZSAqc3VwcGxpZXI7XG4rXG4rXHRcdGlmICghZGV2aWNlX2xpbmtfdGVzdChsaW5rLCBETF9GTEFHX01BTkFHRUQpIHx8XG4rXHRcdCAgICAhZGV2aWNlX2xpbmtfdGVzdChsaW5rLCBETF9GTEFHX1NZTkNfU1RBVEVfT05MWSkpXG4rXHRcdFx0Y29udGludWU7XG4rXG4rXHRcdC8qXG4rXHRcdCAqIERMX0ZMQUdfU1lOQ19TVEFURV9PTkxZIGV4Y2x1ZGVzIGFsbCBvdGhlciBtYW5hZ2VkIGxpbmsgZmxhZ3MsXG4rXHRcdCAqIHNvIGl0IGlzIHNhZmUgdG8gZHJvcCB0aGUgbWFuYWdlZCBsaW5rIGNvbXBsZXRlbHkuXG4rXHRcdCAqL1xuK1x0XHRzdXBwbGllciA9IGxpbmstXHUwMDNlc3VwcGxpZXI7XG4rXHRcdGRldmljZV9saW5rX2Ryb3BfbWFuYWdlZChsaW5rKTtcbitcbitcdFx0aWYgKGRlZmVyX3N5bmNfc3RhdGVfY291bnQpXG4rXHRcdFx0X19kZXZpY2VfbGlua3Nfc3VwcGxpZXJfZGVmZXJfc3luYyhzdXBwbGllcik7XG4rXHRcdGVsc2VcbitcdFx0XHRfX2RldmljZV9saW5rc19xdWV1ZV9zeW5jX3N0YXRlKHN1cHBsaWVyLCBzeW5jX2xpc3QpO1xuK1x0fVxuK31cbitcbisvKipcbisgKiBkZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkgLSBEcm9wIG1hbmFnZWQgc3luYy1zdGF0ZS1vbmx5IGxpbmtzXG4rICogQGRldjogQ29uc3VtZXIgZGV2aWNlIHdob3NlIHByb3h5IGxpbmtzIHNob3VsZCBiZSBkcm9wcGVkXG4rICpcbisgKiBGcmFtZXdvcmtzIHdoaWNoIHBvcHVsYXRlIGNoaWxkIGRldmljZXMgYmVsb3cgYSBkcml2ZXJsZXNzIGRldmljZSBjYW4gY2FsbFxuKyAqIHRoaXMgYWZ0ZXIgYWRkaW5nIGFsbCBvZiB0aGUgY2hpbGRyZW4uIFRoZSBjaGlsZHJlbiB3aWxsIGhhdmUgYWNxdWlyZWQgdGhlaXJcbisgKiBvd24gbGlua3MgYnkgdGhlbiwgc28gdGhlIHRlbXBvcmFyeSBsaW5rcyB3aGljaCBvbmx5IHByZXZlbnQgc3VwcGxpZXJzIGZyb21cbisgKiByZWNlaXZpbmcgc3luY19zdGF0ZSgpIGNhbGxiYWNrcyBhcmUgbm8gbG9uZ2VyIG5lZWRlZC5cbisgKlxuKyAqIFJlLWV2YWx1YXRlIGVhY2ggYWZmZWN0ZWQgc3VwcGxpZXIgZm9yIGEgc3luY19zdGF0ZSgpIGNhbGxiYWNrIGFmdGVyIGl0c1xuKyAqIGxpbmsgaXMgZHJvcHBlZC5cbisgKi9cbit2b2lkIGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4re1xuK1x0TElTVF9IRUFEKHN5bmNfbGlzdCk7XG4rXG4rXHRkZXZpY2VfbGlua3Nfd3JpdGVfbG9jaygpO1xuK1x0X19kZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkoZGV2LCBcdTAwMjZzeW5jX2xpc3QpO1xuK1x0ZGV2aWNlX2xpbmtzX3dyaXRlX3VubG9jaygpO1xuK1xuK1x0ZGV2aWNlX2xpbmtzX2ZsdXNoX3N5bmNfbGlzdChcdTAwMjZzeW5jX2xpc3QsIE5VTEwpO1xuK31cbitFWFBPUlRfU1lNQk9MX0dQTChkZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkpO1xuK1xuIHN0YXRpYyBzc2l6ZV90IHdhaXRpbmdfZm9yX3N1cHBsaWVyX3Nob3coc3RydWN0IGRldmljZSAqZGV2LFxuIFx0XHRcdFx0XHQgY29uc3Qgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsXG4gXHRcdFx0XHRcdCBjaGFyICpidWYpXG5AQCAtMTQxOCw2ICsxNDY5LDggQEAgdm9pZCBkZXZpY2VfbGlua3NfZHJpdmVyX2JvdW5kKHN0cnVjdCBkZXZpY2UgKmRldilcbiBcdGVsc2VcbiBcdFx0X19kZXZpY2VfbGlua3NfcXVldWVfc3luY19zdGF0ZShkZXYsIFx1MDAyNnN5bmNfbGlzdCk7XG4gXG4rXHRfX2RldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seShkZXYsIFx1MDAyNnN5bmNfbGlzdCk7XG4rXG4gXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobGluaywgbG4sIFx1MDAyNmRldi1cdTAwM2VsaW5rcy5zdXBwbGllcnMsIGNfbm9kZSkge1xuIFx0XHRzdHJ1Y3QgZGV2aWNlICpzdXBwbGllcjtcbiBcbkBAIC0xNDI1LDE3ICsxNDc4LDEwIEBAIHZvaWQgZGV2aWNlX2xpbmtzX2RyaXZlcl9ib3VuZChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRcdFx0Y29udGludWU7XG4gXG4gXHRcdHN1cHBsaWVyID0gbGluay1cdTAwM2VzdXBwbGllcjtcbi1cdFx0aWYgKGRldmljZV9saW5rX3Rlc3QobGluaywgRExfRkxBR19TWU5DX1NUQVRFX09OTFkpKSB7XG4tXHRcdFx0Lypcbi1cdFx0XHQgKiBXaGVuIERMX0ZMQUdfU1lOQ19TVEFURV9PTkxZIGlzIHNldCwgaXQgbWVhbnMgbm9cbi1cdFx0XHQgKiBvdGhlciBETF9NQU5BR0VEX0xJTktfRkxBR1MgaGF2ZSBiZWVuIHNldC4gU28sIGl0J3Ncbi1cdFx0XHQgKiBzYXZlIHRvIGRyb3AgdGhlIG1hbmFnZWQgbGluayBjb21wbGV0ZWx5LlxuLVx0XHRcdCAqL1xuLVx0XHRcdGRldmljZV9saW5rX2Ryb3BfbWFuYWdlZChsaW5rKTtcbi1cdFx0fSBlbHNlIGlmIChkZXZfaXNfYmVzdF9lZmZvcnQoZGV2KSBcdTAwMjZcdTAwMjZcbi1cdFx0XHQgICBkZXZpY2VfbGlua190ZXN0KGxpbmssIERMX0ZMQUdfSU5GRVJSRUQpIFx1MDAyNlx1MDAyNlxuLVx0XHRcdCAgIGxpbmstXHUwMDNlc3RhdHVzICE9IERMX1NUQVRFX0NPTlNVTUVSX1BST0JFIFx1MDAyNlx1MDAyNlxuLVx0XHRcdCAgICFkZXZfY2FuX21hdGNoKGxpbmstXHUwMDNlc3VwcGxpZXIpKSB7XG4rXHRcdGlmIChkZXZfaXNfYmVzdF9lZmZvcnQoZGV2KSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgIGRldmljZV9saW5rX3Rlc3QobGluaywgRExfRkxBR19JTkZFUlJFRCkgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICBsaW5rLVx1MDAzZXN0YXR1cyAhPSBETF9TVEFURV9DT05TVU1FUl9QUk9CRSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgICFkZXZfY2FuX21hdGNoKGxpbmstXHUwMDNlc3VwcGxpZXIpKSB7XG4gXHRcdFx0LypcbiBcdFx0XHQgKiBXaGVuIGRldl9pc19iZXN0X2VmZm9ydCgpIGlzIHRydWUsIHdlIGlnbm9yZSBkZXZpY2VcbiBcdFx0XHQgKiBsaW5rcyB0byBzdXBwbGllcnMgdGhhdCBkb24ndCBoYXZlIGEgZHJpdmVyLiAgSWYgdGhlXG5AQCAtMTQ0OSwxMiArMTQ5NSw2IEBAIHZvaWQgZGV2aWNlX2xpbmtzX2RyaXZlcl9ib3VuZChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRcdFx0V1JJVEVfT05DRShsaW5rLVx1MDAzZXN0YXR1cywgRExfU1RBVEVfQUNUSVZFKTtcbiBcdFx0fVxuIFxuLVx0XHQvKlxuLVx0XHQgKiBUaGlzIG5lZWRzIHRvIGJlIGRvbmUgZXZlbiBmb3IgdGhlIGRlbGV0ZWRcbi1cdFx0ICogRExfRkxBR19TWU5DX1NUQVRFX09OTFkgZGV2aWNlIGxpbmsgaW4gY2FzZSBpdCB3YXMgdGhlIGxhc3Rcbi1cdFx0ICogZGV2aWNlIGxpbmsgdGhhdCB3YXMgcHJldmVudGluZyB0aGUgc3VwcGxpZXIgZnJvbSBnZXR0aW5nIGFcbi1cdFx0ICogc3luY19zdGF0ZSgpIGNhbGwuXG4tXHRcdCAqL1xuIFx0XHRpZiAoZGVmZXJfc3luY19zdGF0ZV9jb3VudClcbiBcdFx0XHRfX2RldmljZV9saW5rc19zdXBwbGllcl9kZWZlcl9zeW5jKHN1cHBsaWVyKTtcbiBcdFx0ZWxzZVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jIGIvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmNcbmluZGV4IGI4ZDI5OGMwNGQzZmYuLjQ5ZjliNDA2MmNmNWMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uY1xuKysrIGIvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmNcbkBAIC0yMjksNyArMjI5LDcgQEAgaW50IF9fb2ZfbWRpb2J1c19yZWdpc3RlcihzdHJ1Y3QgbWlpX2J1cyAqbWRpbywgc3RydWN0IGRldmljZV9ub2RlICpucCxcbiBcdFx0Z290byB1bnJlZ2lzdGVyO1xuIFxuIFx0aWYgKCFzY2FucGh5cylcbi1cdFx0cmV0dXJuIDA7XG4rXHRcdGdvdG8gZG9uZTtcbiBcbiBcdC8qIGF1dG8gc2NhbiBmb3IgUEhZcyB3aXRoIGVtcHR5IHJlZyBwcm9wZXJ0eSAqL1xuIFx0Zm9yX2VhY2hfYXZhaWxhYmxlX2NoaWxkX29mX25vZGUobnAsIGNoaWxkKSB7XG5AQCAtMjYxLDYgKzI2MSw5IEBAIGludCBfX29mX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKm1kaW8sIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsXG4gXHRcdH1cbiBcdH1cbiBcbitkb25lOlxuK1x0ZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KFx1MDAyNm1kaW8tXHUwMDNlZGV2KTtcbitcbiBcdHJldHVybiAwO1xuIFxuIHB1dF91bnJlZ2lzdGVyOlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvb2YvcHJvcGVydHkuYyBiL2RyaXZlcnMvb2YvcHJvcGVydHkuY1xuaW5kZXggNzJjZjEyOTA3ZGUwMy4uZjI5YmE4MThlY2JjMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvb2YvcHJvcGVydHkuY1xuKysrIGIvZHJpdmVycy9vZi9wcm9wZXJ0eS5jXG5AQCAtMTI3Miw2ICsxMjcyLDIwIEBAIHN0YXRpYyB2b2lkIG9mX2xpbmtfdG9fcGhhbmRsZShzdHJ1Y3QgZGV2aWNlX25vZGUgKmNvbl9ucCxcbiBcdFx0dG1wX25wID0gb2ZfZ2V0X25leHRfcGFyZW50KHRtcF9ucCk7XG4gXHR9XG4gXG4rXHQvKlxuK1x0ICogQW4gRXRoZXJuZXQgUEhZIHBhY2thZ2Ugbm9kZSBkZXNjcmliZXMgcmVzb3VyY2VzIHNoYXJlZCBieSBpdHMgbWVtYmVyXG4rXHQgKiBQSFlzLCBidXQgaXMgbm90IHBvcHVsYXRlZCBhcyBhIHN0cnVjdCBkZXZpY2UuIExpbmsgZXZlcnkgZW5hYmxlZFxuK1x0ICogbWVtYmVyIFBIWSB0byB0aG9zZSBzdXBwbGllcnMgc28gZndfZGV2bGluayBjYW4gdXNlIHRoZSByZWFsIGNvbnN1bWVyXG4rXHQgKiBkZXZpY2VzIGluc3RlYWQgb2YgbGVhdmluZyBhIHByb3h5IGxpbmsgb24gdGhlIE1ESU8gYnVzIGluZGVmaW5pdGVseS5cbitcdCAqL1xuK1x0aWYgKG9mX25vZGVfbmFtZV9lcShjb25fbnAsIFwiZXRoZXJuZXQtcGh5LXBhY2thZ2VcIikpIHtcbitcdFx0Zm9yX2VhY2hfYXZhaWxhYmxlX2NoaWxkX29mX25vZGVfc2NvcGVkKGNvbl9ucCwgY2hpbGQpXG4rXHRcdFx0Zndub2RlX2xpbmtfYWRkKG9mX2Z3bm9kZV9oYW5kbGUoY2hpbGQpLFxuK1x0XHRcdFx0XHRvZl9md25vZGVfaGFuZGxlKHN1cF9ucCksIGZsYWdzKTtcbitcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuIFx0Zndub2RlX2xpbmtfYWRkKG9mX2Z3bm9kZV9oYW5kbGUoY29uX25wKSwgb2ZfZndub2RlX2hhbmRsZShzdXBfbnApLCBmbGFncyk7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGV2aWNlLmggYi9pbmNsdWRlL2xpbnV4L2RldmljZS5oXG5pbmRleCBhZWU3OWZkNmIzMmI0Li44YWZiOWYyYjBkODI1IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9kZXZpY2UuaFxuKysrIGIvaW5jbHVkZS9saW51eC9kZXZpY2UuaFxuQEAgLTEzODEsNiArMTM4MSw3IEBAIHN0cnVjdCBkZXZpY2VfbGluayAqZGV2aWNlX2xpbmtfYWRkKHN0cnVjdCBkZXZpY2UgKmNvbnN1bWVyLFxuIFx0XHRcdFx0ICAgIHN0cnVjdCBkZXZpY2UgKnN1cHBsaWVyLCB1MzIgZmxhZ3MpO1xuIHZvaWQgZGV2aWNlX2xpbmtfZGVsKHN0cnVjdCBkZXZpY2VfbGluayAqbGluayk7XG4gdm9pZCBkZXZpY2VfbGlua19yZW1vdmUodm9pZCAqY29uc3VtZXIsIHN0cnVjdCBkZXZpY2UgKnN1cHBsaWVyKTtcbit2b2lkIGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seShzdHJ1Y3QgZGV2aWNlICpkZXYpO1xuIHZvaWQgZGV2aWNlX2xpbmtzX3N1cHBsaWVyX3N5bmNfc3RhdGVfcGF1c2Uodm9pZCk7XG4gdm9pZCBkZXZpY2VfbGlua3Nfc3VwcGxpZXJfc3luY19zdGF0ZV9yZXN1bWUodm9pZCk7XG4gdm9pZCBkZXZpY2VfbGlua193YWl0X3JlbW92YWwodm9pZCk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMTowMTo1OC41MzU2ODYwNDdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MTMyNTI4OTM2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IEFzc2Vzc21lbnQ6IERldmljZSBMaW5rIGFuZCBPRiBQcm9wZXJ0eSBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0J3MgbWFraW5nIHNvbWUgbW9kaWZpY2F0aW9ucyByZWxhdGVkIHRvIGRldmljZSBsaW5rcyBhbmQgdGhlIE9wZW4gRmlybXdhcmUgKE9GKSBzdWJzeXN0ZW0sIHNwZWNpZmljYWxseSB0b3VjaGluZyBvbiBgZHJpdmVycy9iYXNlL2NvcmUuY2AsIGBkcml2ZXJzL29mL3Byb3BlcnR5LmNgLCBhbmQgYGRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jYC4gVGhpcyBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QgYmVjYXVzZSB3ZSdyZSB0YWxraW5nIGFib3V0IGNvcmUga2VybmVsIGNvbXBvbmVudHMgaGVyZSDigJMgdGhlIGRldmljZSBsaW5rIG1hbmFnZW1lbnQgYW5kIE9GIHBhcnNpbmcgY29kZSBhcmUgY3JpdGljYWwuIEFueSBpbnN0YWJpbGl0eSBpbiB0aGVzZSBhcmVhcyBjb3VsZCBoYXZlIHdpZGUtcmVhY2hpbmcgaW1wbGljYXRpb25zLlxuXG5MZXQncyBkaXZlIGluLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBgZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5YCBhbmQgY2FsbHMgaXQgZnJvbSBgX19vZl9tZGlvYnVzX3JlZ2lzdGVyYCB3aXRoaW4gdGhlIE1ESU8gZHJpdmVyLiBJdCBhbHNvIGludHJvZHVjZXMgYSBzcGVjaWFsIGNhc2UgaW4gYG9mX2xpbmtfdG9fcGhhbmRsZWAgZm9yIGBldGhlcm5ldC1waHktcGFja2FnZWAgbm9kZXMuIFRoZSBxdWVzdGlvbiBpcywgYXJlIHRoZXNlIGNoYW5nZXMgcmVhY2hhYmxlIGFuZCB3b3J0aCB0YXJnZXRpbmcgd2l0aCBmdXp6aW5nP1xuXG5GaXJzdCwgSSBuZWVkIHRvIGNvbmZpcm0gdGhhdCBgZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5YCBpcyBhY3R1YWxseSBleHBvcnRlZCBhbmQgdXNlZC4gWWVwLCBpdCBpcyBleHBvcnRlZCBhbmQgdXNlZCBpbiBgX19vZl9tZGlvYnVzX3JlZ2lzdGVyYCwgc28gdGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTmV4dCwgSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCBgb2ZfbGlua190b19waGFuZGxlYCBpcyByZWFjaGFibGUuIFllcCwgaXQgZ2V0cyBjYWxsZWQgZHVyaW5nIE9GIGRldmljZSBsaW5rIGNyZWF0aW9uLlxuXG5HaXZlbiB0aGUgcG90ZW50aWFsIGltcGFjdCBvbiBkZXZpY2UgbGlua3MsIE9GIHByb3BlcnR5IHBhcnNpbmcsIGFuZCB0aGUgY29yZSBuYXR1cmUgb2YgdGhlIGludm9sdmVkIGNvZGUsIHRoaXMgKmRlZmluaXRlbHkqIHNlZW1zIGxpa2UgYSB3b3J0aHdoaWxlIGZ1enppbmcgdGFyZ2V0LiBUaGUga2V5IHN5bWJvbHMgdG8gZm9jdXMgb24gYXJlIGBkZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHlgLCBgX19kZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHlgLCBgb2ZfbGlua190b19waGFuZGxlYCwgYW5kIGBfX29mX21kaW9idXNfcmVnaXN0ZXJgLlxuXG5Ob3csIGxldCdzIHNlZSB3aGF0IGNvbmZpZ3MgYXJlIHJlcXVpcmVkIHRvIGVuYWJsZSB0aGlzIGZ1bmN0aW9uYWxpdHkuIFdlJ2xsIG5lZWQgYENPTkZJR19PRmAgZm9yIGJvdGggYGRyaXZlcnMvb2YvcHJvcGVydHkuY2AgYW5kIGBkcml2ZXJzL25ldC9tZGlvL29mX21kaW8uY2AuIFdlJ2xsIGFsc28gbmVlZCBgQ09ORklHX09GX01ESU9gIHNwZWNpZmljYWxseSBmb3IgdGhlIE1ESU8gZHJpdmVyLiBXZSBtaWdodCBhbHNvIG5lZWQgZWl0aGVyIGBDT05GSUdfTURJT19ERVZJQ0VgIG9yIGBDT05GSUdfUEhZTElCYC4gRmluYWxseSwgbGV0IG1lIGp1c3QgY29uZmlybSB0aGUgbG9jYXRpb24gb2YgYF9fb2ZfbWRpb2J1c19yZWdpc3RlcmAgaW4gYGRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk4OCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ2NCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAxOjAyOjA1LjY2ODIxODU1M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NjA2MzAxNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfX29mX21kaW9idXNfcmVnaXN0ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9MTM5PXN0YXRpYyBpbnQgX19vZl9tZGlvYnVzX3BhcnNlX3BoeXMoc3RydWN0IG1paV9idXMgKm1kaW8sIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0xODYtLyoqXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6MTg3OiAqIF9fb2ZfbWRpb2J1c19yZWdpc3RlciAtIFJlZ2lzdGVyIG1paV9idXMgYW5kIGNyZWF0ZSBQSFlzIGZyb20gdGhlIGRldmljZSB0cmVlXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMTg4LSAqIEBtZGlvOiBwb2ludGVyIHRvIG1paV9idXMgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0xOTQtICovXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6MTk1OmludCBfX29mX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKm1kaW8sIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMTk2LVxcdFxcdFxcdCAgc3RydWN0IG1vZHVsZSAqb3duZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0yNzQtfVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjI3NTpFWFBPUlRfU1lNQk9MKF9fb2ZfbWRpb2J1c19yZWdpc3Rlcik7XFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMjc2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMTowMjowNS43MjQyODY4MDdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzQzMjY3NzcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgQ2hlY2sqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIGxldCdzIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBjb25maWd1cmF0aW9ucyBhcmUgcmVsZXZhbnQgdG8gdGhlIGBkcml2ZXJzL25ldC9tZGlvL29mX21kaW8uY2AgZmlsZS4gVGhpcyBzcGVjaWZpYyBmaWxlIGRlYWxzIHdpdGggTURJTyAoTWFuYWdlbWVudCBEYXRhIElucHV0L091dHB1dCkgaW50ZXJmYWNlcyBhY2Nlc3NlZCB2aWEgZGV2aWNlIHRyZWUgYmluZGluZ3MuIEknbSBnb2luZyB0byBsb29rIGZvciBhbnkgZGVwZW5kZW5jaWVzIG9yIG9wdGlvbnMgdGhhdCBkaXJlY3RseSBlbmFibGUgb3IgZGlzYWJsZSBzdXBwb3J0IGZvciB0aGlzIHNwZWNpZmljIGRyaXZlci4gSXQncyBsaWtlbHkgdGhhdCB0aGVyZSdzIGEgS2NvbmZpZyBvcHRpb24gdGhhdCBlbmFibGVzIHRoZSBlbnRpcmUgTURJTyBzdWJzeXN0ZW0sIGFuZCB0aGVuIHBvdGVudGlhbGx5IHNvbWUgbW9yZSBzcGVjaWZpYyBvcHRpb25zIGZvciBkZXZpY2UgdHJlZSBzdXBwb3J0IHdpdGhpbiBNRElPLiBJJ2xsIG5lZWQgdG8gdHJhY2UgdGhyb3VnaCB0aGUgS2NvbmZpZyBoaWVyYXJjaHksIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gYW55IGNvbmRpdGlvbmFsIGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGFmZmVjdCB3aGV0aGVyIHRoaXMgZHJpdmVyIGdldHMgY29tcGlsZWQgaW50byB0aGUga2VybmVsIGltYWdlLiBJJ2xsIGFsc28gYmUgb24gdGhlIGxvb2tvdXQgZm9yIGFueSBvcHRpb25zIHRoYXQgY291bGQgYmUgcmVsZXZhbnQgdG8gZGVidWdnaW5nIG9yIHNlbGVjdGluZyBhIHNwZWNpZmljIE1ESU8gY29udHJvbGxlciB2YXJpYW50LCBpbiBjYXNlIHRoZXJlIGFyZSBtdWx0aXBsZSBpbXBsZW1lbnRhdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIHBhdGggY2xlYXJseS5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMyNiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAxOjAyOjA5LjA2NzU1ODQ5OFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODE3NDkzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvZl9tZGlvXFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZT01PW9iai0kKENPTkZJR19GV05PREVfTURJTylcXHQrPSBmd25vZGVfbWRpby5vXFxuZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19PRl9NRElPKVxcdFxcdCs9IG9mX21kaW8ub1xcbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGUtNy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDE6MDI6MDkuMTE1NzQ0MjYzWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjY2NTk2NTcxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipLY29uZmlnIGFuZCB0aGUgTURJTyBDb25maWd1cmF0aW9uKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFdoZW5ldmVyIEknbSB0YWNrbGluZyBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgT3BlbiBGaXJtd2FyZSAoT0YpIE1ESU8gYnVzLCB0aGUgZmlyc3QgcGxhY2UgSSBhbHdheXMgZ28gaXMgdGhlIEtjb25maWcgZmlsZXMuIFNwZWNpZmljYWxseSwgSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBgQ09ORklHX09GX01ESU9gIGlzIGVuYWJsZWQuIEl0J3MgdGhlIGx5bmNocGluLCByZWFsbHkuIFRoYXQgY29uZmlndXJhdGlvbiBvcHRpb24gY29udHJvbHMgdGhlIGNvcmUgaW5mcmFzdHJ1Y3R1cmUgZm9yIHVzaW5nIE1ESU8gZGV2aWNlcyBkZXNjcmliZWQgd2l0aCBPRi4gSWYgaXQncyBub3Qgc2V0LCBJJ20gYmFzaWNhbGx5IGRlYWQgaW4gdGhlIHdhdGVyIHdoZW4gaXQgY29tZXMgdG8gYW55IE9GLWRyaXZlbiBNRElPIGNvbW11bmljYXRpb24uIFNvLCBzdGVwIG9uZTogdmVyaWZ5IHRoYXQga2V5IGNvbmZpZyBvcHRpb24uIEV2ZXJ5dGhpbmcgaGluZ2VzIG9uIHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU2ODYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMTowMjoxMS43ODE3MTI5NTRaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg0MDk3MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE9GX01ESU9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbWRpby9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZz05PWNvbmZpZyBGV05PREVfTURJT1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9LY29uZmlnLTEzLVxcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZzoxNDpjb25maWcgT0ZfTURJT1xcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZy0xNS1cXHRkZWZfdHJpc3RhdGUgT0ZcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDE6MDI6MTEuODMwMTMxOTg5WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgxNTkxMzUzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ29uc2lkZXJpbmcgT0ZfTURJTyBhbmQgS2NvbmZpZyoqXG5cblJpZ2h0LCBzbyBgT0ZfTURJT2AgaXMgYXV0b21hdGljYWxseSBlbmFibGVkIHdoZW4gYE9GYCBpcyBlbmFibGVkIOKAkyBhIHByZXR0eSBzdGFuZGFyZCBkZXBlbmRlbmN5LiBOb3csIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBpbXBsaWNpdCBkZXBlbmRlbmN5IGZvciBteSBjdXJyZW50IHByb2plY3QuIFRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gc3VycHJpc2VzIG9yIGNvbmZsaWN0cyBJJ20gZ29pbmcgdG8gcXVpY2tseSBjaGVjayB0aGUgS2NvbmZpZyBpbiBgZHJpdmVycy9vZi9wcm9wZXJ0eS5jYC4gSSBoYXZlIGEgZmVlbGluZyBJJ2xsIGZpbmQgYE9GX01ESU89eWAgc29tZXdoZXJlIG5lYXIgYE9GPXlgLCBidXQgaXQncyBhbHdheXMgYmVzdCB0byBjb25maXJtIGFuZCBydWxlIG91dCBhbnkgY29uZGl0aW9uYWwgbG9naWMgdGhhdCBtaWdodCBiZSBpbnZvbHZlZC4gR290dGEgY292ZXIgYWxsIG15IGJhc2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTczLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDE6MDI6MTQuNjQ2MDQ4Mzk1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODM3OTE5NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwcm9wZXJ0eVxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL29mL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvb2YvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuZHJpdmVycy9vZi9NYWtlZmlsZToyOm9iai15ID0gYmFzZS5vIGNwdS5vIGRldmljZS5vIG1vZHVsZS5vIHBsYXRmb3JtLm8gcHJvcGVydHkub1xcbmRyaXZlcnMvb2YvTWFrZWZpbGUtMy1vYmotJChDT05GSUdfT0ZfS09CSikgKz0ga29iai5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAxOjAyOjE0LjY5NDQzMzM0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2MTU2NjMyNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gQ29udGV4dCoqXG5cbk9rYXksIHNvIEknbSBmb2N1c2luZyBvbiBrZXJuZWwgY29uZmlndXJhdGlvbiwgYW5kIGl0IGxvb2tzIGxpa2UgYENPTkZJR19PRmAgaXMgdGhlIHByaW1hcnkgY29uZmlndXJhdGlvbiBvcHRpb24gSSBuZWVkIHRvIGJlIGNvbmNlcm5lZCB3aXRoIGluIHRoaXMgY29udGV4dC4gSXQncyB0aGUgbHluY2hwaW4uIExldCdzIGRpZyBpbnRvIHRoZSBkZXRhaWxzIGFuZCBmaW5kIGl0cyBkZWZpbml0aW9uLiBUbyBnZXQgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhpcyBvcHRpb24gaXMgdXNlZCwgSSBzaG91bGQgbG9vayBhdCBgZHJpdmVycy9iYXNlL2NvcmUuY2AgYW5kIGl0cyBhc3NvY2lhdGVkIEtjb25maWcgZmlsZS4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgaXQncyBkZWZpbmVkIGFuZCBob3cgaXQgaW1wYWN0cyB0aGUgb3RoZXIga2VybmVsIGNvbXBvbmVudHMuIFRoaXMgaXMgYSBjb21tb24gcGF0dGVybiB3aGVuIHdvcmtpbmcgd2l0aCBkZXZpY2UgdHJlZSBlbmFibGVkIHN5c3RlbXMsIHNvIEkgbmVlZCB0byBjaGVjayBpdHMgY29udGV4dC5cblxuXG4iLCJJbnB1dFRva2VucyI6NjI2OCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAxOjAyOjE3LjMxMDA5ODk4NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM2OTA4NjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29yZVxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jhc2UvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9iYXNlL01ha2VmaWxlLTMtXFxuZHJpdmVycy9iYXNlL01ha2VmaWxlOjQ6b2JqLXlcXHRcXHRcXHQ6PSBjb21wb25lbnQubyBjb3JlLm8gYnVzLm8gZGQubyBzeXNjb3JlLm8gXFxcXFxcbmRyaXZlcnMvYmFzZS9NYWtlZmlsZS01LVxcdFxcdFxcdCAgIGRyaXZlci5vIGNsYXNzLm8gcGxhdGZvcm0ubyBcXFxcXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAxOjAyOjE3LjM1Mzc5NDA5MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTY5MzI3MjY2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGFib3V0IGRldmljZSBsaW5rIGxvZ2ljLCBhbmQgaXQgbG9va3MgbGlrZSBhIHRhcmdldGVkIG1vZGlmaWNhdGlvbi4gVGhlIGNoYW5nZXMgYXJlIGZvY3VzZWQgb24gdGhlc2Ugc3BlY2lmaWMgc3ltYm9sczogYGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seWAsIGBfX2RldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seWAsIGBvZl9saW5rX3RvX3BoYW5kbGVgLCBhbmQgYF9fb2ZfbWRpb2J1c19yZWdpc3RlcmAuIFJpZ2h0IGF3YXksIHRoYXQgdGVsbHMgbWUgd2UncmUgbG9va2luZyBhdCBjb3JlIGZ1bmN0aW9uYWxpdHksIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIGhvdyBkZXZpY2VzIGFyZSBsaW5rZWQgdG9nZXRoZXIgYW5kIGhhbmRsZWQgd2l0aGluIHRoZSBrZXJuZWwuIFRoZSBmYWN0IHRoYXQgYG9mX2xpbmtfdG9fcGhhbmRsZWAgaXMgaW52b2x2ZWQgc3VnZ2VzdHMgT3BlbiBGaXJtd2FyZSAoT0YpIGlzIHBsYXlpbmcgYSBrZXkgcm9sZSwgYW5kIGxpa2VseSBgT0ZfTURJT2AgYXMgd2VsbCwgZ2l2ZW4gdGhlIGBfX29mX21kaW9idXNfcmVnaXN0ZXJgIHRvdWNoLlxuXG5UaGUgcGF0Y2ggaXRzZWxmIGRlYWxzIHdpdGggYGV0aGVybmV0LXBoeS1wYWNrYWdlYCB3aGljaCB0ZWxscyBtZSB0aGF0IHRoZXJlIGlzIGFuIGBPRmAgY29uZmlnIGFjdGl2ZSwgYW5kIHRoZXJlIG1heSBiZSBhbiBgT0ZfTURJT2AgY29uZmlnIGFsc28gYWN0aXZlLlxuXG5HaXZlbiB0aGUgc2NvcGUgYW5kIHJlYWNoIG9mIHRoZXNlIG1vZGlmaWNhdGlvbnMsIGFuZCB0aGUgY29yZSBuYXR1cmUgb2YgdGhlIGZ1bmN0aW9ucyBiZWluZyB0b3VjaGVkLCBJJ20gY29uZmlkZW50IHRoYXQgdGhpcyBpcyB3b3J0aCBleHBsb3JpbmcgZnVydGhlciwgZXNwZWNpYWxseSBmb3IgZnV6emluZy4gVGhlc2UgdHlwZXMgb2YgY2hhbmdlcyBhcmUgcHJpbWUgdGFyZ2V0cyBmb3IgZXhwb3Npbmcgc3VidGxlIGJ1Z3MgYW5kIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMuIEkgbmVlZCB0byBtYWtlIGEgbm90ZSB0byBzZXQgdGhlIHJlc3VsdHMgYW5kIGJlZ2luIGRlZXBlciBhbmFseXNpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjU1MCwiT3V0cHV0VG9rZW5zIjoxNTcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDE6MDI6MjMuMzIzMTIzODI4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzYxNjQ3NTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk9GXCIsXG4gICAgXCJPRl9NRElPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5XCIsXG4gICAgXCJfX2RldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seVwiLFxuICAgIFwib2ZfbGlua190b19waGFuZGxlXCIsXG4gICAgXCJfX29mX21kaW9idXNfcmVnaXN0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGRldmljZSBsaW5rIG1hbmFnZW1lbnQgYW5kIE9GIHByb3BlcnR5IHBhcnNpbmcsIHNwZWNpZmljYWxseSBhZGRpbmcgYSBuZXcgZnVuY3Rpb24gYGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seWAgYW5kIGhhbmRsaW5nIGBldGhlcm5ldC1waHktcGFja2FnZWAgbm9kZXMgaW4gYG9mX2xpbmtfdG9fcGhhbmRsZWAuIFRoZXNlIGFyZSBjb3JlIGtlcm5lbCBjb21wb25lbnRzIGFuZCByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk9GXCIsXG4gICAgXCJPRl9NRElPXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5XCIsXG4gICAgXCJfX2RldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seVwiLFxuICAgIFwib2ZfbGlua190b19waGFuZGxlXCIsXG4gICAgXCJfX29mX21kaW9idXNfcmVnaXN0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBjb3JlIGRldmljZSBsaW5rIG1hbmFnZW1lbnQgYW5kIE9GIHByb3BlcnR5IHBhcnNpbmcsIHNwZWNpZmljYWxseSBhZGRpbmcgYSBuZXcgZnVuY3Rpb24gYGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seWAgYW5kIGhhbmRsaW5nIGBldGhlcm5ldC1waHktcGFja2FnZWAgbm9kZXMgaW4gYG9mX2xpbmtfdG9fcGhhbmRsZWAuIFRoZXNlIGFyZSBjb3JlIGtlcm5lbCBjb21wb25lbnRzIGFuZCByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwMTowMjoyMy4zOTkyOTQxNFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzk4OTU2OTM3NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDAxOjAyOjIzLjM5OTc0NTkxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjc5ODkxMTI5MTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGRldmljZSBsaW5rIG1hbmFnZW1lbnQgaW4gdGhlIGRyaXZlciBjb3JlIGFuZCBPRiBwcm9wZXJ0eSBwYXJzaW5nLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgRExfRkxBR19TWU5DX1NUQVRFX09OTFkgbGlua3MgYW5kIGV0aGVybmV0LXBoeS1wYWNrYWdlIG5vZGVzLiBUaGVzZSBjaGFuZ2VzIGludm9sdmUgbGlzdCBtYW5pcHVsYXRpb24sIGxvY2tpbmcsIGFuZCBkZXZpY2Ugbm9kZSB0cmF2ZXJzYWwuIFRoZXJlIGFyZSBubyBuZXcgYnVmZmVycyBhbGxvY2F0ZWQsIG5vIGRhdGEgY29waWVkIHRvIHVzZXJzcGFjZSwgYW5kIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQgb3IgbGVha2VkLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIGxvZ2ljYWwgZXJyb3JzLCB1c2UtYWZ0ZXItZnJlZXMsIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIGxvY2tpbmcgaXNzdWVzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLCBMT0NLREVQLCBhbmQgc3RhbmRhcmQga2VybmVsIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjM5NTQ3YmM4ZjA5N2Q1Y2I4MDA2Yjc1MGM1MzZkMGNkNDMwZGZjMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDE1IDAxOjAxOjU3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9iYXNlL2NvcmUuYyBiL2RyaXZlcnMvYmFzZS9jb3JlLmNcbmluZGV4IDRkMDI2NjgyOTQ0ZjIuLjYyN2ZjZmEyNzRmMGUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL2Jhc2UvY29yZS5jXG4rKysgYi9kcml2ZXJzL2Jhc2UvY29yZS5jXG5AQCAtMTMwNSw2ICsxMzA1LDU3IEBAIHN0YXRpYyB2b2lkIGRldmljZV9saW5rX2Ryb3BfbWFuYWdlZChzdHJ1Y3QgZGV2aWNlX2xpbmsgKmxpbmspXG4gXHRrcmVmX3B1dChcdTAwMjZsaW5rLVx1MDAzZWtyZWYsIF9fZGV2aWNlX2xpbmtfZGVsKTtcbiB9XG4gXG4rLyogQ2FsbGVyIG11c3QgaG9sZCB0aGUgZGV2aWNlIGxpbmtzIHdyaXRlIGxvY2suICovXG4rc3RhdGljIHZvaWQgX19kZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkoc3RydWN0IGRldmljZSAqZGV2LFxuK1x0XHRcdFx0XHRcdHN0cnVjdCBsaXN0X2hlYWQgKnN5bmNfbGlzdClcbit7XG4rXHRzdHJ1Y3QgZGV2aWNlX2xpbmsgKmxpbmssICpsbjtcbitcbitcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShsaW5rLCBsbiwgXHUwMDI2ZGV2LVx1MDAzZWxpbmtzLnN1cHBsaWVycywgY19ub2RlKSB7XG4rXHRcdHN0cnVjdCBkZXZpY2UgKnN1cHBsaWVyO1xuK1xuK1x0XHRpZiAoIWRldmljZV9saW5rX3Rlc3QobGluaywgRExfRkxBR19NQU5BR0VEKSB8fFxuK1x0XHQgICAgIWRldmljZV9saW5rX3Rlc3QobGluaywgRExfRkxBR19TWU5DX1NUQVRFX09OTFkpKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1xuK1x0XHQvKlxuK1x0XHQgKiBETF9GTEFHX1NZTkNfU1RBVEVfT05MWSBleGNsdWRlcyBhbGwgb3RoZXIgbWFuYWdlZCBsaW5rIGZsYWdzLFxuK1x0XHQgKiBzbyBpdCBpcyBzYWZlIHRvIGRyb3AgdGhlIG1hbmFnZWQgbGluayBjb21wbGV0ZWx5LlxuK1x0XHQgKi9cbitcdFx0c3VwcGxpZXIgPSBsaW5rLVx1MDAzZXN1cHBsaWVyO1xuK1x0XHRkZXZpY2VfbGlua19kcm9wX21hbmFnZWQobGluayk7XG4rXG4rXHRcdGlmIChkZWZlcl9zeW5jX3N0YXRlX2NvdW50KVxuK1x0XHRcdF9fZGV2aWNlX2xpbmtzX3N1cHBsaWVyX2RlZmVyX3N5bmMoc3VwcGxpZXIpO1xuK1x0XHRlbHNlXG4rXHRcdFx0X19kZXZpY2VfbGlua3NfcXVldWVfc3luY19zdGF0ZShzdXBwbGllciwgc3luY19saXN0KTtcbitcdH1cbit9XG4rXG4rLyoqXG4rICogZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5IC0gRHJvcCBtYW5hZ2VkIHN5bmMtc3RhdGUtb25seSBsaW5rc1xuKyAqIEBkZXY6IENvbnN1bWVyIGRldmljZSB3aG9zZSBwcm94eSBsaW5rcyBzaG91bGQgYmUgZHJvcHBlZFxuKyAqXG4rICogRnJhbWV3b3JrcyB3aGljaCBwb3B1bGF0ZSBjaGlsZCBkZXZpY2VzIGJlbG93IGEgZHJpdmVybGVzcyBkZXZpY2UgY2FuIGNhbGxcbisgKiB0aGlzIGFmdGVyIGFkZGluZyBhbGwgb2YgdGhlIGNoaWxkcmVuLiBUaGUgY2hpbGRyZW4gd2lsbCBoYXZlIGFjcXVpcmVkIHRoZWlyXG4rICogb3duIGxpbmtzIGJ5IHRoZW4sIHNvIHRoZSB0ZW1wb3JhcnkgbGlua3Mgd2hpY2ggb25seSBwcmV2ZW50IHN1cHBsaWVycyBmcm9tXG4rICogcmVjZWl2aW5nIHN5bmNfc3RhdGUoKSBjYWxsYmFja3MgYXJlIG5vIGxvbmdlciBuZWVkZWQuXG4rICpcbisgKiBSZS1ldmFsdWF0ZSBlYWNoIGFmZmVjdGVkIHN1cHBsaWVyIGZvciBhIHN5bmNfc3RhdGUoKSBjYWxsYmFjayBhZnRlciBpdHNcbisgKiBsaW5rIGlzIGRyb3BwZWQuXG4rICovXG4rdm9pZCBkZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkoc3RydWN0IGRldmljZSAqZGV2KVxuK3tcbitcdExJU1RfSEVBRChzeW5jX2xpc3QpO1xuK1xuK1x0ZGV2aWNlX2xpbmtzX3dyaXRlX2xvY2soKTtcbitcdF9fZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KGRldiwgXHUwMDI2c3luY19saXN0KTtcbitcdGRldmljZV9saW5rc193cml0ZV91bmxvY2soKTtcbitcbitcdGRldmljZV9saW5rc19mbHVzaF9zeW5jX2xpc3QoXHUwMDI2c3luY19saXN0LCBOVUxMKTtcbit9XG4rRVhQT1JUX1NZTUJPTF9HUEwoZGV2aWNlX2xpbmtzX2Ryb3Bfc3luY19zdGF0ZV9vbmx5KTtcbitcbiBzdGF0aWMgc3NpemVfdCB3YWl0aW5nX2Zvcl9zdXBwbGllcl9zaG93KHN0cnVjdCBkZXZpY2UgKmRldixcbiBcdFx0XHRcdFx0IGNvbnN0IHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLFxuIFx0XHRcdFx0XHQgY2hhciAqYnVmKVxuQEAgLTE0MTgsNiArMTQ2OSw4IEBAIHZvaWQgZGV2aWNlX2xpbmtzX2RyaXZlcl9ib3VuZChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4gXHRlbHNlXG4gXHRcdF9fZGV2aWNlX2xpbmtzX3F1ZXVlX3N5bmNfc3RhdGUoZGV2LCBcdTAwMjZzeW5jX2xpc3QpO1xuIFxuK1x0X19kZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkoZGV2LCBcdTAwMjZzeW5jX2xpc3QpO1xuK1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGxpbmssIGxuLCBcdTAwMjZkZXYtXHUwMDNlbGlua3Muc3VwcGxpZXJzLCBjX25vZGUpIHtcbiBcdFx0c3RydWN0IGRldmljZSAqc3VwcGxpZXI7XG4gXG5AQCAtMTQyNSwxNyArMTQ3OCwxMCBAQCB2b2lkIGRldmljZV9saW5rc19kcml2ZXJfYm91bmQoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0XHRcdGNvbnRpbnVlO1xuIFxuIFx0XHRzdXBwbGllciA9IGxpbmstXHUwMDNlc3VwcGxpZXI7XG4tXHRcdGlmIChkZXZpY2VfbGlua190ZXN0KGxpbmssIERMX0ZMQUdfU1lOQ19TVEFURV9PTkxZKSkge1xuLVx0XHRcdC8qXG4tXHRcdFx0ICogV2hlbiBETF9GTEFHX1NZTkNfU1RBVEVfT05MWSBpcyBzZXQsIGl0IG1lYW5zIG5vXG4tXHRcdFx0ICogb3RoZXIgRExfTUFOQUdFRF9MSU5LX0ZMQUdTIGhhdmUgYmVlbiBzZXQuIFNvLCBpdCdzXG4tXHRcdFx0ICogc2F2ZSB0byBkcm9wIHRoZSBtYW5hZ2VkIGxpbmsgY29tcGxldGVseS5cbi1cdFx0XHQgKi9cbi1cdFx0XHRkZXZpY2VfbGlua19kcm9wX21hbmFnZWQobGluayk7XG4tXHRcdH0gZWxzZSBpZiAoZGV2X2lzX2Jlc3RfZWZmb3J0KGRldikgXHUwMDI2XHUwMDI2XG4tXHRcdFx0ICAgZGV2aWNlX2xpbmtfdGVzdChsaW5rLCBETF9GTEFHX0lORkVSUkVEKSBcdTAwMjZcdTAwMjZcbi1cdFx0XHQgICBsaW5rLVx1MDAzZXN0YXR1cyAhPSBETF9TVEFURV9DT05TVU1FUl9QUk9CRSBcdTAwMjZcdTAwMjZcbi1cdFx0XHQgICAhZGV2X2Nhbl9tYXRjaChsaW5rLVx1MDAzZXN1cHBsaWVyKSkge1xuK1x0XHRpZiAoZGV2X2lzX2Jlc3RfZWZmb3J0KGRldikgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICBkZXZpY2VfbGlua190ZXN0KGxpbmssIERMX0ZMQUdfSU5GRVJSRUQpIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgbGluay1cdTAwM2VzdGF0dXMgIT0gRExfU1RBVEVfQ09OU1VNRVJfUFJPQkUgXHUwMDI2XHUwMDI2XG4rXHRcdCAgICAhZGV2X2Nhbl9tYXRjaChsaW5rLVx1MDAzZXN1cHBsaWVyKSkge1xuIFx0XHRcdC8qXG4gXHRcdFx0ICogV2hlbiBkZXZfaXNfYmVzdF9lZmZvcnQoKSBpcyB0cnVlLCB3ZSBpZ25vcmUgZGV2aWNlXG4gXHRcdFx0ICogbGlua3MgdG8gc3VwcGxpZXJzIHRoYXQgZG9uJ3QgaGF2ZSBhIGRyaXZlci4gIElmIHRoZVxuQEAgLTE0NDksMTIgKzE0OTUsNiBAQCB2b2lkIGRldmljZV9saW5rc19kcml2ZXJfYm91bmQoc3RydWN0IGRldmljZSAqZGV2KVxuIFx0XHRcdFdSSVRFX09OQ0UobGluay1cdTAwM2VzdGF0dXMsIERMX1NUQVRFX0FDVElWRSk7XG4gXHRcdH1cbiBcbi1cdFx0Lypcbi1cdFx0ICogVGhpcyBuZWVkcyB0byBiZSBkb25lIGV2ZW4gZm9yIHRoZSBkZWxldGVkXG4tXHRcdCAqIERMX0ZMQUdfU1lOQ19TVEFURV9PTkxZIGRldmljZSBsaW5rIGluIGNhc2UgaXQgd2FzIHRoZSBsYXN0XG4tXHRcdCAqIGRldmljZSBsaW5rIHRoYXQgd2FzIHByZXZlbnRpbmcgdGhlIHN1cHBsaWVyIGZyb20gZ2V0dGluZyBhXG4tXHRcdCAqIHN5bmNfc3RhdGUoKSBjYWxsLlxuLVx0XHQgKi9cbiBcdFx0aWYgKGRlZmVyX3N5bmNfc3RhdGVfY291bnQpXG4gXHRcdFx0X19kZXZpY2VfbGlua3Nfc3VwcGxpZXJfZGVmZXJfc3luYyhzdXBwbGllcik7XG4gXHRcdGVsc2VcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYyBiL2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jXG5pbmRleCBiOGQyOThjMDRkM2ZmLi40OWY5YjQwNjJjZjVjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmNcbisrKyBiL2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jXG5AQCAtMjI5LDcgKzIyOSw3IEBAIGludCBfX29mX21kaW9idXNfcmVnaXN0ZXIoc3RydWN0IG1paV9idXMgKm1kaW8sIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAsXG4gXHRcdGdvdG8gdW5yZWdpc3RlcjtcbiBcbiBcdGlmICghc2NhbnBoeXMpXG4tXHRcdHJldHVybiAwO1xuK1x0XHRnb3RvIGRvbmU7XG4gXG4gXHQvKiBhdXRvIHNjYW4gZm9yIFBIWXMgd2l0aCBlbXB0eSByZWcgcHJvcGVydHkgKi9cbiBcdGZvcl9lYWNoX2F2YWlsYWJsZV9jaGlsZF9vZl9ub2RlKG5wLCBjaGlsZCkge1xuQEAgLTI2MSw2ICsyNjEsOSBAQCBpbnQgX19vZl9tZGlvYnVzX3JlZ2lzdGVyKHN0cnVjdCBtaWlfYnVzICptZGlvLCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLFxuIFx0XHR9XG4gXHR9XG4gXG4rZG9uZTpcbitcdGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seShcdTAwMjZtZGlvLVx1MDAzZWRldik7XG4rXG4gXHRyZXR1cm4gMDtcbiBcbiBwdXRfdW5yZWdpc3RlcjpcbmRpZmYgLS1naXQgYS9kcml2ZXJzL29mL3Byb3BlcnR5LmMgYi9kcml2ZXJzL29mL3Byb3BlcnR5LmNcbmluZGV4IDcyY2YxMjkwN2RlMDMuLmYyOWJhODE4ZWNiYzEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL29mL3Byb3BlcnR5LmNcbisrKyBiL2RyaXZlcnMvb2YvcHJvcGVydHkuY1xuQEAgLTEyNzIsNiArMTI3MiwyMCBAQCBzdGF0aWMgdm9pZCBvZl9saW5rX3RvX3BoYW5kbGUoc3RydWN0IGRldmljZV9ub2RlICpjb25fbnAsXG4gXHRcdHRtcF9ucCA9IG9mX2dldF9uZXh0X3BhcmVudCh0bXBfbnApO1xuIFx0fVxuIFxuK1x0LypcbitcdCAqIEFuIEV0aGVybmV0IFBIWSBwYWNrYWdlIG5vZGUgZGVzY3JpYmVzIHJlc291cmNlcyBzaGFyZWQgYnkgaXRzIG1lbWJlclxuK1x0ICogUEhZcywgYnV0IGlzIG5vdCBwb3B1bGF0ZWQgYXMgYSBzdHJ1Y3QgZGV2aWNlLiBMaW5rIGV2ZXJ5IGVuYWJsZWRcbitcdCAqIG1lbWJlciBQSFkgdG8gdGhvc2Ugc3VwcGxpZXJzIHNvIGZ3X2RldmxpbmsgY2FuIHVzZSB0aGUgcmVhbCBjb25zdW1lclxuK1x0ICogZGV2aWNlcyBpbnN0ZWFkIG9mIGxlYXZpbmcgYSBwcm94eSBsaW5rIG9uIHRoZSBNRElPIGJ1cyBpbmRlZmluaXRlbHkuXG4rXHQgKi9cbitcdGlmIChvZl9ub2RlX25hbWVfZXEoY29uX25wLCBcImV0aGVybmV0LXBoeS1wYWNrYWdlXCIpKSB7XG4rXHRcdGZvcl9lYWNoX2F2YWlsYWJsZV9jaGlsZF9vZl9ub2RlX3Njb3BlZChjb25fbnAsIGNoaWxkKVxuK1x0XHRcdGZ3bm9kZV9saW5rX2FkZChvZl9md25vZGVfaGFuZGxlKGNoaWxkKSxcbitcdFx0XHRcdFx0b2ZfZndub2RlX2hhbmRsZShzdXBfbnApLCBmbGFncyk7XG4rXG4rXHRcdHJldHVybjtcbitcdH1cbitcbiBcdGZ3bm9kZV9saW5rX2FkZChvZl9md25vZGVfaGFuZGxlKGNvbl9ucCksIG9mX2Z3bm9kZV9oYW5kbGUoc3VwX25wKSwgZmxhZ3MpO1xuIH1cbiBcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RldmljZS5oIGIvaW5jbHVkZS9saW51eC9kZXZpY2UuaFxuaW5kZXggYWVlNzlmZDZiMzJiNC4uOGFmYjlmMmIwZDgyNSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvZGV2aWNlLmhcbisrKyBiL2luY2x1ZGUvbGludXgvZGV2aWNlLmhcbkBAIC0xMzgxLDYgKzEzODEsNyBAQCBzdHJ1Y3QgZGV2aWNlX2xpbmsgKmRldmljZV9saW5rX2FkZChzdHJ1Y3QgZGV2aWNlICpjb25zdW1lcixcbiBcdFx0XHRcdCAgICBzdHJ1Y3QgZGV2aWNlICpzdXBwbGllciwgdTMyIGZsYWdzKTtcbiB2b2lkIGRldmljZV9saW5rX2RlbChzdHJ1Y3QgZGV2aWNlX2xpbmsgKmxpbmspO1xuIHZvaWQgZGV2aWNlX2xpbmtfcmVtb3ZlKHZvaWQgKmNvbnN1bWVyLCBzdHJ1Y3QgZGV2aWNlICpzdXBwbGllcik7XG4rdm9pZCBkZXZpY2VfbGlua3NfZHJvcF9zeW5jX3N0YXRlX29ubHkoc3RydWN0IGRldmljZSAqZGV2KTtcbiB2b2lkIGRldmljZV9saW5rc19zdXBwbGllcl9zeW5jX3N0YXRlX3BhdXNlKHZvaWQpO1xuIHZvaWQgZGV2aWNlX2xpbmtzX3N1cHBsaWVyX3N5bmNfc3RhdGVfcmVzdW1lKHZvaWQpO1xuIHZvaWQgZGV2aWNlX2xpbmtfd2FpdF9yZW1vdmFsKHZvaWQpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDE6MDI6MjMuMzk5NzQ3MTJaIiwiU2VxIjoxNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzk4OTA4NDQ3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLTVNBTiBBc3Nlc3NtZW50OiBEZXZpY2UgTGluayBNYW5hZ2VtZW50IFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQncyB0b3VjaGluZyBkZXZpY2UgbGluayBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgaW4gYGRyaXZlcnMvYmFzZS9jb3JlLmNgLCBgZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmNgLCBhbmQgYGRyaXZlcnMvb2YvcHJvcGVydHkuY2AuIE15IGluaXRpYWwgY29uY2VybiwgYXMgYWx3YXlzLCBpcyBhcm91bmQgcG90ZW50aWFsIG1lbW9yeSBzYWZldHkgaXNzdWVzLCBhbmQgc3BlY2lmaWNhbGx5LCB3aGV0aGVyIHRoaXMgaW50cm9kdWNlcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuXG5cbkZyb20gYSBxdWljayBza2ltLCB0aGUgY2hhbmdlcyBhcmUgY2VudGVyZWQgYXJvdW5kIGRldmljZSBsaW5rcywgbGlzdCBtYW5hZ2VtZW50LCBhbmQgaG93IHRoZSBrZXJuZWwgcGFyc2VzIGRldmljZSBub2Rlcy4gSSBkb24ndCBzZWUgYW55dGhpbmcgdGhhdCBzY3JlYW1zIFwicG90ZW50aWFsIEtNU0FOIHRyaWdnZXIuXCIgVGhlcmUgYXJlIG5vIG5ldyBtZW1vcnkgYWxsb2NhdGlvbnMgcGFzc2VkIHRvIHVzZXIgc3BhY2UuIE5vdGhpbmcgY29tcGxleCBpcyBiZWluZyBjb3BpZWQgdG8gdGhlIHVzZXIgc3BhY2UuIFRoZXJlIGFyZW4ndCBhbnkgbmV3IHN0cnVjdCBmaWVsZHMgdGhhdCBjb3VsZCBiZSBsZWZ0IHVuaW5pdGlhbGl6ZWQgYW5kIHRoZW4gbGVha2VkLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlcyByZXZvbHZlIGFyb3VuZCBkZXZpY2UgbGlua3MsIG5hbWVseSB0aG9zZSBtYXJrZWQgd2l0aCBgRExfRkxBR19TWU5DX1NUQVRFX09OTFlgLCBhbmQgaG93IHRoZXkgYXJlIGRyb3BwZWQuXG5cbkxvb2tpbmcgY2xvc2VyIGF0IGBkcml2ZXJzL2Jhc2UvY29yZS5jYCwgSSBzZWUgYSBuZXcgZnVuY3Rpb24sIGBfX2RldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seWAsIHdoaWNoIGl0ZXJhdGVzIHRocm91Z2ggYGRldi1cdTAwM2VsaW5rcy5zdXBwbGllcnNgLiBJZiBhIGxpbmsgaXMgbWFuYWdlZCBhbmQgaGFzIHRoZSBgRExfRkxBR19TWU5DX1NUQVRFX09OTFlgIGZsYWcsIHRoZSBsaW5rIGlzIGRyb3BwZWQsIGFuZCB0aGUgc3luYyBzdGF0ZSBpcyBxdWV1ZWQuIFRoZXJlJ3MgYSBsb2NraW5nIHdyYXBwZXIgYXJvdW5kIHRoaXMgaW4gYGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seWAsIGFuZCBgZGV2aWNlX2xpbmtzX2RyaXZlcl9ib3VuZGAgbm93IGNhbGxzIHRoaXMgZnVuY3Rpb24gaW5zdGVhZCBvZiBkb2luZyB0aGUgb3BlcmF0aW9uIGlubGluZS5cblxuSW4gYGRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jYCwgYF9fb2ZfbWRpb2J1c19yZWdpc3RlcmAgY2FsbHMgYGRldmljZV9saW5rc19kcm9wX3N5bmNfc3RhdGVfb25seShcdTAwMjZtZGlvLVx1MDAzZWRldilgIGJlZm9yZSByZXR1cm5pbmcgc3VjY2Vzcy5cblxuRmluYWxseSwgYGRyaXZlcnMvb2YvcHJvcGVydHkuY2AgaGFzIGEgbW9kaWZpY2F0aW9uIHRvIGBvZl9saW5rX3RvX3BoYW5kbGVgLiBBIHNwZWNpZmljIGNhc2UgaXMgYWRkZWQgZm9yIFwiZXRoZXJuZXQtcGh5LXBhY2thZ2VcIiBub2RlcyB0byBsaW5rIGV2ZXJ5IGVuYWJsZWQgbWVtYmVyIFBIWSB0byB0aGUgc3VwcGxpZXJzLlxuXG5Db25zaWRlcmluZyBhbGwgb2YgdGhpcywgSSBkb24ndCBzZWUgYW55IG9idmlvdXMgdW5pbml0aWFsaXplZCBtZW1vcnkgb3IgaW5mb3JtYXRpb24gbGVhayByaXNrcyB0aGF0IHdvdWxkIGJlIGV4cG9zZWQgYnkgdGhpcyBwYXRjaC4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgd291bGQgYmUgY2xhc3NpYyBsb2dpY2FsIGJ1Z3MgbGlrZSB1c2UtYWZ0ZXItZnJlZSwgbnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlcywgbGlzdCBjb3JydXB0aW9uLCBvciBsb2NraW5nIGlzc3VlcywgdGhlIGtpbmRzIG9mIHByb2JsZW1zIHRoYXQgYXJlIHR5cGljYWxseSBjYXVnaHQgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHRoZSBzdGFuZGFyZCBrZXJuZWwgYnVnIGRldGVjdG9ycy4gU28sIEknbSBjb25maWRlbnQgaW4gc2F5aW5nIHRoYXQgdGhpcyBwYXRjaCBkb2VzICpub3QqIHJlcXVpcmUgS01TQU4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM5ODUsIk91dHB1dFRva2VucyI6MTY4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDE6MDI6MzEuMzg4ODM1NzU1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE1MjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBkZXZpY2UgbGluayBtYW5hZ2VtZW50IGluIHRoZSBkcml2ZXIgY29yZSBhbmQgT0YgcHJvcGVydHkgcGFyc2luZywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIERMX0ZMQUdfU1lOQ19TVEFURV9PTkxZIGxpbmtzIGFuZCBldGhlcm5ldC1waHktcGFja2FnZSBub2Rlcy4gVGhlc2UgY2hhbmdlcyBpbnZvbHZlIGxpc3QgbWFuaXB1bGF0aW9uLCBsb2NraW5nLCBhbmQgZGV2aWNlIG5vZGUgdHJhdmVyc2FsLiBUaGVyZSBhcmUgbm8gbmV3IGJ1ZmZlcnMgYWxsb2NhdGVkLCBubyBkYXRhIGNvcGllZCB0byB1c2Vyc3BhY2UsIGFuZCBubyBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcyBjb3VsZCBiZSByZWFkIG9yIGxlYWtlZC4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhlc2UgY2hhbmdlcyB3b3VsZCBiZSBsb2dpY2FsIGVycm9ycywgdXNlLWFmdGVyLWZyZWVzLCBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBvciBsb2NraW5nIGlzc3Vlcywgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiwgTE9DS0RFUCwgYW5kIHN0YW5kYXJkIGtlcm5lbCBidWcgZGV0ZWN0b3JzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIEtNU0FOLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGRldmljZSBsaW5rIG1hbmFnZW1lbnQgaW4gdGhlIGRyaXZlciBjb3JlIGFuZCBPRiBwcm9wZXJ0eSBwYXJzaW5nLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgRExfRkxBR19TWU5DX1NUQVRFX09OTFkgbGlua3MgYW5kIGV0aGVybmV0LXBoeS1wYWNrYWdlIG5vZGVzLiBUaGVzZSBjaGFuZ2VzIGludm9sdmUgbGlzdCBtYW5pcHVsYXRpb24sIGxvY2tpbmcsIGFuZCBkZXZpY2Ugbm9kZSB0cmF2ZXJzYWwuIFRoZXJlIGFyZSBubyBuZXcgYnVmZmVycyBhbGxvY2F0ZWQsIG5vIGRhdGEgY29waWVkIHRvIHVzZXJzcGFjZSwgYW5kIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzIGNvdWxkIGJlIHJlYWQgb3IgbGVha2VkLiBBbnkgcG90ZW50aWFsIGJ1Z3MgaW50cm9kdWNlZCBieSB0aGVzZSBjaGFuZ2VzIHdvdWxkIGJlIGxvZ2ljYWwgZXJyb3JzLCB1c2UtYWZ0ZXItZnJlZXMsIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIG9yIGxvY2tpbmcgaXNzdWVzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOLCBMT0NLREVQLCBhbmQgc3RhbmRhcmQga2VybmVsIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgS01TQU4uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow6s25z[1] Phase: Succeeded StartedAt: 2026-08-15 01:02:42 +0000 UTC FinishedAt: 2026-08-15 01:02:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6s25z[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-15 01:02:42 +0000 UTC FinishedAt: 2026-08-15 01:02:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6s25z[2] Phase: Succeeded StartedAt: 2026-08-15 01:02:42 +0000 UTC FinishedAt: 2026-08-15 04:42:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-15 01:02:42 +0000 UTC FinishedAt: 2026-08-15 04:42:59 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-15 01:02:42 +0000 UTC FinishedAt: 2026-08-15 01:02:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-15 01:02:42 +0000 UTC FinishedAt: 2026-08-15 01:02:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6s25z/series-workflow6s25z-convert-artifact-2906838600/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-15 01:02:53 +0000 UTC FinishedAt: 2026-08-15 01:19:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-15 01:02:53 +0000 UTC FinishedAt: 2026-08-15 01:19:04 +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:*cf583540-7607-4ac5-82e9-ff78ee94d465,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-workflow6s25z/series-workflow6s25z-convert-artifact-2906838600/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": "fb7472ee-a662-48c0-966d-543dc3783ac7", "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-workflow6s25z/series-workflow6s25z-build-action-35701438/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-15 01:02:53 +0000 UTC FinishedAt: 2026-08-15 01:18:54 +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:*cf583540-7607-4ac5-82e9-ff78ee94d465,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-workflow6s25z/series-workflow6s25z-convert-artifact-2906838600/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": "fb7472ee-a662-48c0-966d-543dc3783ac7", "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-workflow6s25z/series-workflow6s25z-build-action-35701438/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-15 01:19:04 +0000 UTC FinishedAt: 2026-08-15 01:19:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-15 01:19:04 +0000 UTC FinishedAt: 2026-08-15 01:19:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-15 01:19:04 +0000 UTC FinishedAt: 2026-08-15 01:19:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-15 01:19:04 +0000 UTC FinishedAt: 2026-08-15 01:19:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6s25z/series-workflow6s25z-convert-artifact-1604480047/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-15 01:19:14 +0000 UTC FinishedAt: 2026-08-15 01:21:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-15 01:19:14 +0000 UTC FinishedAt: 2026-08-15 01:21:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fb7472ee-a662-48c0-966d-543dc3783ac7,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-workflow6s25z/series-workflow6s25z-build-action-35701438/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-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-15 01:21:16 +0000 UTC FinishedAt: 2026-08-15 01:21:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-15 01:21:16 +0000 UTC FinishedAt: 2026-08-15 01:21:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-15 01:21:16 +0000 UTC FinishedAt: 2026-08-15 01:37:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-15 01:21:16 +0000 UTC FinishedAt: 2026-08-15 01:37:49 +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:*cf583540-7607-4ac5-82e9-ff78ee94d465,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-workflow6s25z/series-workflow6s25z-convert-artifact-1604480047/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": "105360e7-2b57-4606-91d0-6c7fe268c655", "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-workflow6s25z/series-workflow6s25z-build-action-2041722819/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-15 01:21:16 +0000 UTC FinishedAt: 2026-08-15 01:37:39 +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:*cf583540-7607-4ac5-82e9-ff78ee94d465,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-workflow6s25z/series-workflow6s25z-convert-artifact-1604480047/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": "105360e7-2b57-4606-91d0-6c7fe268c655", "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-workflow6s25z/series-workflow6s25z-build-action-2041722819/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-15 01:37:49 +0000 UTC FinishedAt: 2026-08-15 01:37:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-15 01:37:49 +0000 UTC FinishedAt: 2026-08-15 01:37:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-15 01:37:49 +0000 UTC FinishedAt: 2026-08-15 01:39:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-15 01:37:49 +0000 UTC FinishedAt: 2026-08-15 01:39:44 +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:*105360e7-2b57-4606-91d0-6c7fe268c655,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-workflow6s25z/series-workflow6s25z-build-action-2041722819/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-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-15 01:39:54 +0000 UTC FinishedAt: 2026-08-15 04:42:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-15 01:39:54 +0000 UTC FinishedAt: 2026-08-15 04:42:59 +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":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"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:*fb7472ee-a662-48c0-966d-543dc3783ac7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*105360e7-2b57-4606-91d0-6c7fe268c655,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-workflow6s25z/series-workflow6s25z-build-action-35701438/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-workflow6s25z/series-workflow6s25z-build-action-2041722819/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-15 01:39:54 +0000 UTC FinishedAt: 2026-08-15 01:40:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-15 01:39:54 +0000 UTC FinishedAt: 2026-08-15 01:39:59 +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":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"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-workflow6s25z/series-workflow6s25z-convert-artifact-630206952/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-15 01:39:54 +0000 UTC FinishedAt: 2026-08-15 01:39:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-15 01:39:54 +0000 UTC FinishedAt: 2026-08-15 01:39:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-15 01:39:54 +0000 UTC FinishedAt: 2026-08-15 01:39:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-15 01:40:04 +0000 UTC FinishedAt: 2026-08-15 04:42:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6s25z[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["device_links_drop_sync_state_only","__device_links_drop_sync_state_only","of_link_to_phandle","__of_mdiobus_register"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3da8c3c8b8fa99505624b65ef590482f48e766b6","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF","OF_MDIO"],"series_id":"af3f6257-d5e2-45f4-883e-15db2a6b7486","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-15 01:40:04 +0000 UTC FinishedAt: 2026-08-15 04:42:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fb7472ee-a662-48c0-966d-543dc3783ac7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*105360e7-2b57-4606-91d0-6c7fe268c655,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-workflow6s25z/series-workflow6s25z-build-action-35701438/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-workflow6s25z/series-workflow6s25z-build-action-2041722819/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-workflow6s25z/series-workflow6s25z-convert-artifact-630206952/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}