Name: series-workflowsqp5n Phase: Succeeded StartedAt: 2026-07-25 14:14:26 +0000 UTC FinishedAt: 2026-07-25 14:38:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqp5n[0] Phase: Succeeded StartedAt: 2026-07-25 14:14:26 +0000 UTC FinishedAt: 2026-07-25 14:38:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqp5n[0].run-triage Phase: Succeeded StartedAt: 2026-07-25 14:14:26 +0000 UTC FinishedAt: 2026-07-25 14:38:03 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "04026c998c24ac47eb76886b9790c5710b603eb4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MACVLAN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "04026c998c24ac47eb76886b9790c5710b603eb4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MACVLAN" ], "series_id": "4e6aa53b-60fb-4287-ab2e-9c0b55133530" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "macvlan_common_newlink" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQ1ZMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWN2bGFuX2NvbW1vbl9uZXdsaW5rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBvZiBtYWN2bGFuIGRldmljZXMgYnkgaW5oZXJpdGluZyBuZWVkZWRfaGVhZHJvb20gYW5kIG5lZWRlZF90YWlscm9vbSBmcm9tIHRoZSBsb3dlciBkZXZpY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgcGFja2V0IHByb2Nlc3NpbmcuIFRoZSBlbnRyeSBwb2ludCBmb3IgY3JlYXRpbmcgbWFjdmxhbiBkZXZpY2VzIGlzIG1hY3ZsYW5fY29tbW9uX25ld2xpbmssIHdoaWNoIGNhbGxzIHJlZ2lzdGVyX25ldGRldmljZSBhbmQgdHJpZ2dlcnMgbWFjdmxhbl9pbml0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjM3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMzNkOGNjNTdiNDhlMTcyNmJlZTk1MzEzZmRlNmZhYjM0MWYyMjFmMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDE0OjM3OjAwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21hY3ZsYW4uYyBiL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xuaW5kZXggOWE0YmM5OWRiZjUzYjUuLjcwMjE5MDExZmNiMjQxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbWFjdmxhbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9tYWN2bGFuLmNcbkBAIC05NTQsNiAmIzQzOzk1NCw4IEBAIHN0YXRpYyBpbnQgbWFjdmxhbl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRkZXYtXHUwMDNlbGx0eFx0XHQ9IHRydWU7XG4gXHRuZXRpZl9pbmhlcml0X3Rzb19tYXgoZGV2LCBsb3dlcmRldik7XG4gXHRkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuXHQ9IGxvd2VyZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbjtcbiYjNDM7XHRkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tXHQ9IGxvd2VyZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbTtcbiYjNDM7XHRkZXYtXHUwMDNlbmVlZGVkX3RhaWxyb29tXHQ9IGxvd2VyZGV2LVx1MDAzZW5lZWRlZF90YWlscm9vbTtcbiBcdG1hY3ZsYW5fc2V0X2xvY2tkZXBfY2xhc3MoZGV2KTtcbiBcbiBcdHZsYW4tXHUwMDNlcGNwdV9zdGF0cyA9IG5ldGRldl9hbGxvY19wY3B1X3N0YXRzKHN0cnVjdCB2bGFuX3BjcHVfc3RhdHMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjM3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUNWTEFOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFjdmxhbl9jb21tb25fbmV3bGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgbWFjdmxhbiBkZXZpY2VzIGJ5IGluaGVyaXRpbmcgbmVlZGVkX2hlYWRyb29tIGFuZCBuZWVkZWRfdGFpbHJvb20gZnJvbSB0aGUgbG93ZXIgZGV2aWNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHBhY2tldCBwcm9jZXNzaW5nLiBUaGUgZW50cnkgcG9pbnQgZm9yIGNyZWF0aW5nIG1hY3ZsYW4gZGV2aWNlcyBpcyBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rLCB3aGljaCBjYWxscyByZWdpc3Rlcl9uZXRkZXZpY2UgYW5kIHRyaWdnZXJzIG1hY3ZsYW5faW5pdC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDMzZDhjYzU3YjQ4ZTE3MjZiZWU5NTMxM2ZkZTZmYWIzNDFmMjIxZjIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAyNSAxNDozNzowMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21hY3ZsYW4uYyBiL2RyaXZlcnMvbmV0L21hY3ZsYW4uYwppbmRleCA5YTRiYzk5ZGJmNTNiNS4uNzAyMTkwMTFmY2IyNDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L21hY3ZsYW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9tYWN2bGFuLmMKQEAgLTk1NCw2ICYjNDM7OTU0LDggQEAgc3RhdGljIGludCBtYWN2bGFuX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAlkZXYtJmd0O2xsdHgJCT0gdHJ1ZTsKIAluZXRpZl9pbmhlcml0X3Rzb19tYXgoZGV2LCBsb3dlcmRldik7CiAJZGV2LSZndDtoYXJkX2hlYWRlcl9sZW4JPSBsb3dlcmRldi0mZ3Q7aGFyZF9oZWFkZXJfbGVuOwomIzQzOwlkZXYtJmd0O25lZWRlZF9oZWFkcm9vbQk9IGxvd2VyZGV2LSZndDtuZWVkZWRfaGVhZHJvb207CiYjNDM7CWRldi0mZ3Q7bmVlZGVkX3RhaWxyb29tCT0gbG93ZXJkZXYtJmd0O25lZWRlZF90YWlscm9vbTsKIAltYWN2bGFuX3NldF9sb2NrZGVwX2NsYXNzKGRldik7CiAKIAl2bGFuLSZndDtwY3B1X3N0YXRzID0gbmV0ZGV2X2FsbG9jX3BjcHVfc3RhdHMoc3RydWN0IHZsYW5fcGNwdV9zdGF0cyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1hY3ZsYW4gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGFyZ2V0aW5nIGBkcml2ZXJzL25ldC9tYWN2bGFuLmNgLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBpbiB0aGUgYG1hY3ZsYW5faW5pdCgpYCBmdW5jdGlvbiwgd2hlcmUgaXQmIzM5O3MgaW50cm9kdWNpbmcgdGhlc2UgYXNzaWdubWVudHM6IGBkZXYtJmd0O25lZWRlZF9oZWFkcm9vbSA9IGxvd2VyZGV2LSZndDtuZWVkZWRfaGVhZHJvb207YCBhbmQgYGRldi0mZ3Q7bmVlZGVkX3RhaWxyb29tID0gbG93ZXJkZXYtJmd0O25lZWRlZF90YWlscm9vbTtgLiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBtb2RpZmljYXRpb247IGl0JiMzOTtzIGNoYW5naW5nIGhvdyBgbWFjdmxhbl9pbml0YCBiZWhhdmVzLCBzcGVjaWZpY2FsbHkgcmVsYXRpbmcgdG8gaGVhZHJvb20gYW5kIHRhaWxyb29tIHZhbHVlcy4gR2l2ZW4gdGhpcyBkaXJlY3QgYWx0ZXJhdGlvbiBvZiBhIGNvcmUgbmV0d29yayBmdW5jdGlvbiwgSSBuZWVkIHRvIHRob3JvdWdobHkgYXNzZXNzIHRoZSBpbXBsaWNhdGlvbnMuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGRpdmUgaW50byBgbWFjdmxhbi5jYCBpdHNlbGYgYW5kIGFsc28gZG91YmxlLWNoZWNrIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgZGVwZW5kZW5jaWVzIG9mIHRoaXMgcGF0Y2guIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29kZSByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY3ZsYW5faW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tYWN2bGFuLmM9OTMzPXN0YXRpYyB2b2lkIG1hY3ZsYW5fc2V0X2xvY2tkZXBfY2xhc3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtOTM5LVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjk0MDpzdGF0aWMgaW50IG1hY3ZsYW5faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTk0MS17XG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTExOTM9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtYWN2bGFuX25ldGRldl9vcHMgPSB7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTE5NDpcdC5uZG9faW5pdFx0XHQ9IG1hY3ZsYW5faW5pdCxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xMTk1LVx0Lm5kb191bmluaXRcdFx0PSBtYWN2bGFuX3VuaW5pdCxcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTkwMz1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIG1hY3ZsYW5fbm90aWZpZXJfYmxvY2sgX19yZWFkX21vc3RseSA9IHtcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTkwNi1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxOTA3OnN0YXRpYyBpbnQgX19pbml0IG1hY3ZsYW5faW5pdF9tb2R1bGUodm9pZClcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xOTA4LXtcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTkyMj1zdGF0aWMgdm9pZCBfX2V4aXQgbWFjdmxhbl9jbGVhbnVwX21vZHVsZSh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xOTI3LVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE5Mjg6bW9kdWxlX2luaXQobWFjdmxhbl9pbml0X21vZHVsZSk7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTkyOS1tb2R1bGVfZXhpdChtYWN2bGFuX2NsZWFudXBfbW9kdWxlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODIxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYWxyZWFkeSBmYW1pbGlhciB3aXRoIG5ldHdvcmtpbmcgYW5kIGtlcm5lbCBpbnRlcm5hbHM6CgoqKkFuYWx5emluZyBgbWFjdmxhbl9pbml0YCBpbiB0aGUgQ29udGV4dCBvZiBOZXRkZXYgT3BlcmF0aW9ucyoqCgpBbHJpZ2h0LCBzbyB0aGUgY29kZSYjMzk7cyBwb2ludGluZyBtZSBhdCBgbWFjdmxhbl9pbml0YC4gSSBpbW1lZGlhdGVseSBzZWUgaXQmIzM5O3MgbWFya2VkIGFzIGBzdGF0aWNgLCB3aGljaCBjb25maXJtcyBpdCYjMzk7cyBpbnRlcm5hbCB0byB0aGUgbWFjdmxhbiBtb2R1bGUuIEFuZCBpdCYjMzk7cyBiZWluZyBhc3NpZ25lZCB0byBgLm5kb19pbml0YCB3aXRoaW4gYG1hY3ZsYW5fbmV0ZGV2X29wc2AuIE9rYXksIHRoYXQgbWFrZXMgc2Vuc2Ug4oCTIGl0JiMzOTtzIHRoZSBpbml0aWFsaXphdGlvbiByb3V0aW5lIGZvciBtYWN2bGFuIG5ldHdvcmsgZGV2aWNlcy4gVGhlIGxvZ2ljYWwgbmV4dCBzdGVwLCBub3csIGlzIHRvIGRlbHZlIGludG8gdGhlIGBtYWN2bGFuX25ldGRldl9vcHNgIHN0cnVjdHVyZSBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBhbmQgd2hlcmUgYG1hY3ZsYW5fbmV0ZGV2X29wc2AgaXMgdXNlZCBiZWNhdXNlIHRoYXQgd2lsbCBkZWZpbmUgdGhlIGNvbnRleHQgYW5kIGhvdyB0aGlzIGBtYWN2bGFuX2luaXRgIGZ1bmN0aW9uIGlzIHV0aWxpemVkIGR1cmluZyB0aGUgZGV2aWNlIGJyaW5nLXVwIHByb2Nlc3MuIEkgbmVlZCB0byB0cmFjZSB0aGUgdXNhZ2Ugb2YgYG1hY3ZsYW5fbmV0ZGV2X29wc2AgdG8gdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgbWFjdmxhbiBkZXZpY2UgY3JlYXRpb24gYW5kIGludGVyYWN0aW9uLiBJdCYjMzk7cyB0aW1lIHRvIGZvbGxvdyB0aGUgYnJlYWRjcnVtYnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFjdmxhbl9uZXRkZXZfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWFjdmxhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYz0xMTg2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbWFjdmxhbl9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTE5Mi1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxMTkzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbWFjdmxhbl9uZXRkZXZfb3BzID0ge1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTExOTQtXHQubmRvX2luaXRcdFx0PSBtYWN2bGFuX2luaXQsXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTEyMzA9dm9pZCBtYWN2bGFuX2NvbW1vbl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xMjM5LVx0ZGV2LVx1MDAzZWNoYW5nZV9wcm90b19kb3duXHQ9IHRydWU7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTI0MDpcdGRldi1cdTAwM2VuZXRkZXZfb3BzXHRcdD0gXHUwMDI2bWFjdmxhbl9uZXRkZXZfb3BzO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTEyNDEtXHRkZXYtXHUwMDNlbmVlZHNfZnJlZV9uZXRkZXZcdD0gdHJ1ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDAxCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgTWFjdmxhbiBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHNvIGBtYWN2bGFuX2NvbW1vbl9zZXR1cGAgaXMgY2xlYXJseSBhIGtleSBmdW5jdGlvbiwgdXNlZCBib3RoIHdpdGhpbiBgbWFjdmxhbi5jYCBpdHNlbGYgYW5kIHBvdGVudGlhbGx5IGV4cG9ydGVkLiBUaGF0IHN1Z2dlc3RzIHRoaXMgaXMgYSBjZW50cmFsIHBpZWNlIG9mIHRoZSBwdXp6bGUuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBmaWd1cmUgb3V0IHdoYXQgdHJpZ2dlcnMgaXRzIHVzZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gcGF0aHdheXMgdGhhdCBsZWFkIHRvIGBtYWN2bGFuX2NvbW1vbl9zZXR1cGAgYmVpbmcgY2FsbGVkLiBXaGF0IGtlcm5lbCBvcHRpb25zLCBtb2R1bGUgcGFyYW1ldGVycywgb3IgbmV0d29yayBpbnRlcmZhY2Ugc2V0dGluZ3MgYXJlIGludm9sdmVkPyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgY29uZmlndXJhdGlvbiBrbm9icyB0aGF0ICplbmFibGUqIG1hY3ZsYW4gZnVuY3Rpb25hbGl0eSBpbiB0aGUgZmlyc3QgcGxhY2UuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGVzLCBtYXliZSBzb21lIGRldmljZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gY29kZSwgYW5kIGRlZmluaXRlbHkgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGNyZWF0aW9uIGxvZ2ljLiBUaGUgZ29hbCBpcyB0byBlc3RhYmxpc2ggdGhlIHByZWNvbmRpdGlvbnMgZm9yIGBtYWN2bGFuX2NvbW1vbl9zZXR1cGAgdG8gZXhlY3V0ZS4gVGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyBtYWN2bGFuIGlzIGluaXRpYWxpemVkIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgaG93IGRpZmZlcmVudCBjb25maWd1cmF0aW9ucyBtaWdodCBpbmZsdWVuY2UgaXRzIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUNWTEFOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9MTYzPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC90ZWFtL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWctMTY0LVxuZHJpdmVycy9uZXQvS2NvbmZpZzoxNjU6Y29uZmlnIE1BQ1ZMQU5cbmRyaXZlcnMvbmV0L0tjb25maWctMTY2LVx0dHJpc3RhdGUgXCYjMzQ7TUFDLVZMQU4gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NjMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNQUNWTEFOIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiB3ZSYjMzk7cmUgbG9va2luZyBhdCBpcyBgTUFDVkxBTmAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBSaWdodCwgdGhlIGZ1bmN0aW9uIGBtYWN2bGFuX2luaXRgIGlzIHN0YXRpYy4gVGhhdCBtZWFucyB0aGUgY29tcGlsZXIgKmNvdWxkKiBpbmxpbmUgaXQsIHdoaWNoIHdvdWxkIG1ha2UgdHJhY2luZyBpdHMgZXhlY3V0aW9uIGEgcGFpbi4gSG93ZXZlciwgaXQmIzM5O3MgdXNlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIgYXNzaWduZWQgdG8gYC5uZG9faW5pdGAuIFNpbmNlIGl0JiMzOTtzIGJlaW5nIHVzZWQgdGhhdCB3YXksIHRoZSBjb21waWxlciAqd29uJiMzOTt0KiBpbmxpbmUgaXQsIHdoaWNoIGlzIGdvb2QuIEJ1dCB0aGUgZmFjdCB0aGF0IGl0JiMzOTtzIHN0YXRpYyBzdGlsbCBsaW1pdHMgb3VyIGFiaWxpdHkgdG8gcmVmZXJlbmNlIGl0IGRpcmVjdGx5LiBIbW0sIHNvIGlzIHRoZXJlIGFuIGV4cG9ydGVkIGZ1bmN0aW9uIHRoYXQgdHJpZ2dlcnMgaXQ/IEFoLCB5ZXMsIGByZWdpc3Rlcl9uZXRkZXZpY2VgIHdpbGwgZGVmaW5pdGVseSBjYWxsIGAubmRvX2luaXRgLCB3aGljaCBwb2ludHMgdG8gb3VyIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIGEgc29saWQgc3RhcnRpbmcgcG9pbnQuIE5vdywgdG8gdHJhY2sgZG93biB0aGUgZW50cnkgcG9pbnQgZm9yIGNyZWF0aW5nIGEgbmV3IE1BQ1ZMQU4gZGV2aWNlLi4uIEkmIzM5O20gcHJldHR5IHN1cmUgdGhhdCYjMzk7cyBgbWFjdmxhbl9uZXdsaW5rYC4gSSBuZWVkIHRvIHN0YXJ0IGRpZ2dpbmcgdGhyb3VnaCB0aGF0IGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY3ZsYW5fbmV3bGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tYWN2bGFuLmM9MTU5Nj1FWFBPUlRfU1lNQk9MX0dQTChtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKTtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNTk3LVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE1OTg6c3RhdGljIGludCBtYWN2bGFuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNTk5LVx0XHRcdCAgIHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE4MTM9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIG1hY3ZsYW5fbGlua19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE4MTUtXHQuc2V0dXBcdFx0PSBtYWN2bGFuX3NldHVwLFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE4MTY6XHQubmV3bGlua1x0PSBtYWN2bGFuX25ld2xpbmssXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTgxNy1cdC5kZWxsaW5rXHQ9IG1hY3ZsYW5fZGVsbGluayxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM2MwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkNvbnNpZGVyaW5nIGBtYWN2bGFuX25ld2xpbmtgIGFuZCBSZWxhdGVkIEZ1bmN0aW9ucyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIG5ldHdvcmtpbmcgY29kZSBhbmQgaW1tZWRpYXRlbHkgSSBzZWUgYSByZWQgZmxhZzogYG1hY3ZsYW5fbmV3bGlua2AgaXMgc3RhdGljLCB0b28uIFRoYXQganVzdCBtYWtlcyBtZSBwYXVzZSwgYXMgaXQgb2Z0ZW4gbWVhbnMgbGltaXRlZCByZXVzYWJpbGl0eSBhbmQgcG90ZW50aWFsIGNvbXBsaWNhdGlvbnMgaW4gbW9yZSBjb21wbGV4IHNjZW5hcmlvcy4gSSYjMzk7bSB3b25kZXJpbmcgaWYgdGhpcyB3aWxsIGltcGFjdCBtb2R1bGFyaXR5LCB0ZXN0aW5nLCBvciBwb3RlbnRpYWwgaW50ZWdyYXRpb24gd2l0aCBvdGhlciBuZXR3b3JrIG1hbmFnZW1lbnQgdG9vbHMgSSBtaWdodCBiZSB3b3JraW5nIHdpdGguCgpUaGF0IGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rLCAmIzM0O0htbSwgd2hhdCBhYm91dCBgbWFjdmxhbl9jb21tb25fbmV3bGlua2A/IElzIHRoYXQgc3RhdGljIGFzIHdlbGw/JiMzNDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGFyY2hpdGVjdHVyZSBiZXR0ZXIgdG8gc2VlIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBmaXQsIGFuZCBob3cgdGhleSByZWxhdGUgdG8gdGhlIG92ZXJhbGwgTWFjdmxhbiBpbXBsZW1lbnRhdGlvbiwgYW5kIGhvdyBJIG1pZ2h0IHVzZSBpdCBvciBleHRlbmQgaXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaW4gdGhlcmUsIGFuZCBob3cgaXQgaXMgdXNlZC4gSSBhbSBnb2luZyB0byBoYXZlIHRvIGRpdmUgZGVlcGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYWN2bGFuX2NvbW1vbl9uZXdsaW5rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWFjdmxhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYz0xNDA4PXN0YXRpYyBpbnQgbWFjdmxhbl9jaGFuZ2VsaW5rX3NvdXJjZXMoc3RydWN0IG1hY3ZsYW5fZGV2ICp2bGFuLCB1MzIgbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTQ2My1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNDY0OmludCBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTQ2NS1cdFx0XHQgICBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNTk1LX1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNTk2OkVYUE9SVF9TWU1CT0xfR1BMKG1hY3ZsYW5fY29tbW9uX25ld2xpbmspO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE1OTctXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTU5OD1zdGF0aWMgaW50IG1hY3ZsYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjAxLXtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNjAyOlx0cmV0dXJuIG1hY3ZsYW5fY29tbW9uX25ld2xpbmsoZGV2LCBwYXJhbXMsIGV4dGFjayk7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTYwMy19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MzUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNYWN2bGFuIERyaXZlciYjMzk7cyBMaW5rIENyZWF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBrZXkgZnVuY3Rpb24gd2UmIzM5O3JlIGxvb2tpbmcgYXQgaXMgYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgLCBhbmQgaXQmIzM5O3MgZXhwb3J0ZWQsIHdoaWNoIGlzIGdvb2Qg4oCTIG1ha2VzIGl0IGEgY2xlYXIgdGFyZ2V0LiBXZSBjb3VsZCBhbHNvIGNvbnNpZGVyIGBtYWN2bGFuX2luaXRgLCBidXQgdGhhdCYjMzk7cyBhIGZ1bmN0aW9uIHBvaW50ZXIsIGFuZCBldmVuIHRob3VnaCBpdCYjMzk7cyBzdGF0aWMgYW5kIG5vdCBpbmxpbmVkLCBgbWFjdmxhbl9jb21tb25fbmV3bGlua2Agc2VlbXMgbGlrZSBhIG1vcmUgZGlyZWN0IGVudHJ5IHBvaW50IGZvciBmdXp6aW5nIHdpdGggc29tZXRoaW5nIGxpa2UgU3l6a2FsbGVyLiBIYW5nIG9uLi4uIGBtYWN2bGFuX2luaXRgIGlzIGNhbGxlZCBieSBgcmVnaXN0ZXJfbmV0ZGV2aWNlYCwgd2hpY2ggKml0c2VsZiogaXMgY2FsbGVkIGJ5IGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYC4gVGhhdCBjb25uZWN0aW9uIGlzIGltcG9ydGFudC4gUmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCBpbiBgZHJpdmVycy9uZXQvbWFjdmxhbi5jYCBhbmQgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE0NjQsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE0NjQ6XHRpbnQgbWFjdmxhbl9jb21tb25fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuMTQ2NTpcdFx0XHRcdCAgIHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXG4xNDY2Olx0XHRcdFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuMTQ2NzpcdHtcbjE0Njg6XHRcdHN0cnVjdCBuZXQgKmxpbmtfbmV0ID0gcnRubF9uZXdsaW5rX2xpbmtfbmV0KHBhcmFtcyk7XG4xNDY5Olx0XHRzdHJ1Y3QgbWFjdmxhbl9kZXYgKnZsYW4gPSBuZXRkZXZfcHJpdihkZXYpO1xuMTQ3MDpcdFx0c3RydWN0IG5sYXR0ciAqKmRhdGEgPSBwYXJhbXMtXHUwMDNlZGF0YTtcbjE0NzE6XHRcdHN0cnVjdCBubGF0dHIgKip0YiA9IHBhcmFtcy1cdTAwM2V0YjtcbjE0NzI6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpsb3dlcmRldjtcbjE0NzM6XHRcdHN0cnVjdCBtYWN2bGFuX3BvcnQgKnBvcnQ7XG4xNDc0Olx0XHRib29sIGNyZWF0ZSA9IGZhbHNlO1xuMTQ3NTpcdFx0aW50IG1hY21vZGU7XG4xNDc2Olx0XHRpbnQgZXJyO1xuMTQ3NzpcdFxuMTQ3ODpcdFx0aWYgKCF0YltJRkxBX0xJTktdKVxuMTQ3OTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjE0ODA6XHRcbjE0ODE6XHRcdGxvd2VyZGV2ID0gX19kZXZfZ2V0X2J5X2luZGV4KGxpbmtfbmV0LCBubGFfZ2V0X3UzMih0YltJRkxBX0xJTktdKSk7XG4xNDgyOlx0XHRpZiAobG93ZXJkZXYgPT0gTlVMTClcbjE0ODM6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4xNDg0Olx0XG4xNDg1Olx0XHQvKiBXaGVuIGNyZWF0aW5nIG1hY3ZsYW5zIG9yIG1hY3Z0YXBzIG9uIHRvcCBvZiBvdGhlciBtYWN2bGFucyAtIHVzZVxuMTQ4NjpcdFx0ICogdGhlIHJlYWwgZGV2aWNlIGFzIHRoZSBsb3dlcmRldi5cbjE0ODc6XHRcdCAqL1xuMTQ4ODpcdFx0aWYgKG5ldGlmX2lzX21hY3ZsYW4obG93ZXJkZXYpKVxuMTQ4OTpcdFx0XHRsb3dlcmRldiA9IG1hY3ZsYW5fZGV2X3JlYWxfZGV2KGxvd2VyZGV2KTtcbjE0OTA6XHRcbjE0OTE6XHRcdGlmICghdGJbSUZMQV9NVFVdKVxuMTQ5MjpcdFx0XHRkZXYtXHUwMDNlbXR1ID0gbG93ZXJkZXYtXHUwMDNlbXR1O1xuMTQ5MzpcdFx0ZWxzZSBpZiAoZGV2LVx1MDAzZW10dSBcdTAwM2UgbG93ZXJkZXYtXHUwMDNlbXR1KVxuMTQ5NDpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjE0OTU6XHRcbjE0OTY6XHRcdC8qIE1UVSByYW5nZTogNjggLSBsb3dlcmRldi1cdTAwM2VtYXhfbXR1ICovXG4xNDk3Olx0XHRkZXYtXHUwMDNlbWluX210dSA9IEVUSF9NSU5fTVRVO1xuMTQ5ODpcdFx0ZGV2LVx1MDAzZW1heF9tdHUgPSBsb3dlcmRldi1cdTAwM2VtYXhfbXR1O1xuMTQ5OTpcdFxuMTUwMDpcdFx0aWYgKCF0YltJRkxBX0FERFJFU1NdKVxuMTUwMTpcdFx0XHRldGhfaHdfYWRkcl9yYW5kb20oZGV2KTtcbjE1MDI6XHRcbjE1MDM6XHRcdGlmICghbmV0aWZfaXNfbWFjdmxhbl9wb3J0KGxvd2VyZGV2KSkge1xuMTUwNDpcdFx0XHRlcnIgPSBtYWN2bGFuX3BvcnRfY3JlYXRlKGxvd2VyZGV2KTtcbjE1MDU6XHRcdFx0aWYgKGVyciBcdTAwM2MgMClcbjE1MDY6XHRcdFx0XHRyZXR1cm4gZXJyO1xuMTUwNzpcdFx0XHRjcmVhdGUgPSB0cnVlO1xuMTUwODpcdFx0fVxuMTUwOTpcdFx0cG9ydCA9IG1hY3ZsYW5fcG9ydF9nZXRfcnRubChsb3dlcmRldik7XG4xNTEwOlx0XG4xNTExOlx0XHQvKiBPbmx5IDEgbWFjdmxhbiBkZXZpY2UgY2FuIGJlIGNyZWF0ZWQgaW4gcGFzc3RocnUgbW9kZSAqL1xuMTUxMjpcdFx0aWYgKG1hY3ZsYW5fcGFzc3RocnUocG9ydCkpIHtcbjE1MTM6XHRcdFx0LyogVGhlIG1hY3ZsYW4gcG9ydCBtdXN0IGJlIG5vdCBjcmVhdGVkIHRoaXMgdGltZSxcbjE1MTQ6XHRcdFx0ICogc3RpbGwgZ290byBkZXN0cm95X21hY3ZsYW5fcG9ydCBmb3IgcmVhZGFiaWxpdHkuXG4xNTE1Olx0XHRcdCAqL1xuMTUxNjpcdFx0XHRlcnIgPSAtRUlOVkFMO1xuMTUxNzpcdFx0XHRnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0O1xuMTUxODpcdFx0fVxuMTUxOTpcdFxuMTUyMDpcdFx0dmxhbi1cdTAwM2Vsb3dlcmRldiA9IGxvd2VyZGV2O1xuMTUyMTpcdFx0dmxhbi1cdTAwM2VkZXYgICAgICA9IGRldjtcbjE1MjI6XHRcdHZsYW4tXHUwMDNlcG9ydCAgICAgPSBwb3J0O1xuMTUyMzpcdFx0dmxhbi1cdTAwM2VzZXRfZmVhdHVyZXMgPSBNQUNWTEFOX0ZFQVRVUkVTO1xuMTUyNDpcdFxuMTUyNTpcdFx0dmxhbi1cdTAwM2Vtb2RlICAgICA9IE1BQ1ZMQU5fTU9ERV9WRVBBO1xuMTUyNjpcdFx0aWYgKGRhdGEgXHUwMDI2XHUwMDI2IGRhdGFbSUZMQV9NQUNWTEFOX01PREVdKVxuMTUyNzpcdFx0XHR2bGFuLVx1MDAzZW1vZGUgPSBubGFfZ2V0X3UzMihkYXRhW0lGTEFfTUFDVkxBTl9NT0RFXSk7XG4xNTI4Olx0XG4xNTI5Olx0XHRpZiAoZGF0YSBcdTAwMjZcdTAwMjYgZGF0YVtJRkxBX01BQ1ZMQU5fRkxBR1NdKVxuMTUzMDpcdFx0XHR2bGFuLVx1MDAzZWZsYWdzID0gbmxhX2dldF91MTYoZGF0YVtJRkxBX01BQ1ZMQU5fRkxBR1NdKTtcbjE1MzE6XHRcbjE1MzI6XHRcdGlmICh2bGFuLVx1MDAzZW1vZGUgPT0gTUFDVkxBTl9NT0RFX1BBU1NUSFJVKSB7XG4xNTMzOlx0XHRcdGlmIChwb3J0LVx1MDAzZWNvdW50KSB7XG4xNTM0Olx0XHRcdFx0ZXJyID0gLUVJTlZBTDtcbjE1MzU6XHRcdFx0XHRnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0O1xuMTUzNjpcdFx0XHR9XG4xNTM3Olx0XHRcdG1hY3ZsYW5fc2V0X3Bhc3N0aHJ1KHBvcnQpO1xuMTUzODpcdFx0XHRldGhfaHdfYWRkcl9pbmhlcml0KGRldiwgbG93ZXJkZXYpO1xuMTUzOTpcdFx0fVxuMTU0MDpcdFxuMTU0MTpcdFx0aWYgKGRhdGEgXHUwMDI2XHUwMDI2IGRhdGFbSUZMQV9NQUNWTEFOX01BQ0FERFJfTU9ERV0pIHtcbjE1NDI6XHRcdFx0aWYgKHZsYW4tXHUwMDNlbW9kZSAhPSBNQUNWTEFOX01PREVfU09VUkNFKSB7XG4xNTQzOlx0XHRcdFx0ZXJyID0gLUVJTlZBTDtcbjE1NDQ6XHRcdFx0XHRnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0O1xuMTU0NTpcdFx0XHR9XG4xNTQ2Olx0XHRcdG1hY21vZGUgPSBubGFfZ2V0X3UzMihkYXRhW0lGTEFfTUFDVkxBTl9NQUNBRERSX01PREVdKTtcbjE1NDc6XHRcdFx0ZXJyID0gbWFjdmxhbl9jaGFuZ2VsaW5rX3NvdXJjZXModmxhbiwgbWFjbW9kZSwgZGF0YSk7XG4xNTQ4Olx0XHRcdGlmIChlcnIpXG4xNTQ5Olx0XHRcdFx0Z290byBkZXN0cm95X21hY3ZsYW5fcG9ydDtcbjE1NTA6XHRcdH1cbjE1NTE6XHRcbjE1NTI6XHRcdHZsYW4tXHUwMDNlYmNfcXVldWVfbGVuX3JlcSA9IE1BQ1ZMQU5fREVGQVVMVF9CQ19RVUVVRV9MRU47XG4xNTUzOlx0XHRpZiAoZGF0YSBcdTAwMjZcdTAwMjYgZGF0YVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSlcbjE1NTQ6XHRcdFx0dmxhbi1cdTAwM2ViY19xdWV1ZV9sZW5fcmVxID0gbmxhX2dldF91MzIoZGF0YVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSk7XG4xNTU1Olx0XG4xNTU2Olx0XHRpZiAoZGF0YSBcdTAwMjZcdTAwMjYgZGF0YVtJRkxBX01BQ1ZMQU5fQkNfQ1VUT0ZGXSlcbjE1NTc6XHRcdFx0dXBkYXRlX3BvcnRfYmNfY3V0b2ZmKFxuMTU1ODpcdFx0XHRcdHZsYW4sIG5sYV9nZXRfczMyKGRhdGFbSUZMQV9NQUNWTEFOX0JDX0NVVE9GRl0pKTtcbjE1NTk6XHRcbjE1NjA6XHRcdGVyciA9IHJlZ2lzdGVyX25ldGRldmljZShkZXYpO1xuMTU2MTpcdFx0aWYgKGVyciBcdTAwM2MgMClcbjE1NjI6XHRcdFx0Z290byBkZXN0cm95X21hY3ZsYW5fcG9ydDtcbjE1NjM6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjk4OAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDExNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1hY3ZsYW4gRGV2aWNlIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIGByZWdpc3Rlcl9uZXRkZXZpY2VgIGlzIGJlaW5nIGNhbGxlZCBoZXJlLCB3aGljaCBpcyBzdGFuZGFyZCBwcm9jZWR1cmUuIFRoZSBjb3JlIG9mIHRoaXMgY2hhbmdlIHNlZW1zIHRvIGJlIHRoZSBhZGRpdGlvbiBvZiBgZGV2LSZndDtuZWVkZWRfaGVhZHJvb20gPSBsb3dlcmRldi0mZ3Q7bmVlZGVkX2hlYWRyb29tO2AgYW5kIGBkZXYtJmd0O25lZWRlZF90YWlscm9vbSA9IGxvd2VyZGV2LSZndDtuZWVkZWRfdGFpbHJvb207YCB3aXRoaW4gYG1hY3ZsYW5faW5pdGAuIEkmIzM5O20gc2VlaW5nIHRoaXMgaW1tZWRpYXRlbHkgYXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBtb2RpZmljYXRpb24gdG8gaG93IHRoZSBtYWN2bGFuIGRldmljZSBoYW5kbGVzIGhlYWRyb29tIGFuZCB0YWlscm9vbS4gVGhpcyBkaXJlY3RseSBpbXBhY3RzIHBhY2tldCB0cmFuc21pc3Npb24gYW5kIHJlY2VwdGlvbiwgaW5mbHVlbmNpbmcgaG93IHRoZSBkZXZpY2UgaW50ZXJhY3RzIGF0IHRoZSBkYXRhIGxpbmsgbGF5ZXIuCgpUaGUgY3J1Y2lhbCBxdWVzdGlvbiBub3cgYmVjb21lczogYXJlIHRoZXJlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgbmVlZCB0byBiZSBjb25zaWRlcmVkIGJlY2F1c2Ugb2YgdGhpcyBhbHRlcmF0aW9uPyBEb2VzIHRoaXMgaW50cm9kdWNlIGFueSBkZXBlbmRlbmNpZXMgb24gc3BlY2lmaWMgc2V0dGluZ3MsIG9yIG1pZ2h0IHRoaXMgY2hhbmdlIGhhdmUgY29tcGF0aWJpbGl0eSBpbXBsaWNhdGlvbnMgZm9yIGV4aXN0aW5nIHNldHVwcz8gR2l2ZW4gdGhhdCBgTUFDVkxBTmAgaXMgdGhlIHJlbGV2YW50IGNvbmZpZywgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXNuJiMzOTt0IGNvbnRpbmdlbnQgb24gc29tZSBvdGhlciBmbGFnIG9yIGZlYXR1cmUuIExldCBtZSBsb29rIGludG8gdGhlIGBNQUNWTEFOYCBkZXBlbmRlbmNpZXMgdG8gYmUgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQ1ZMQU4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9MTYzPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC90ZWFtL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWctMTY0LVxuZHJpdmVycy9uZXQvS2NvbmZpZzoxNjU6Y29uZmlnIE1BQ1ZMQU5cbmRyaXZlcnMvbmV0L0tjb25maWctMTY2LVx0dHJpc3RhdGUgXCYjMzQ7TUFDLVZMQU4gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDM0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgYE1BQ1ZMQU5gIGNvbmZpZ3VyYXRpb24gd2l0aGluIGBkcml2ZXJzL25ldC9LY29uZmlnYCwgdGhpbmtpbmcgbGlrZSBhIHNlYXNvbmVkIG5ldHdvcmsgZW5naW5lZXI6CgoqKkRpdmluZyBpbnRvIHRoZSBNQUNWTEFOIENvbmZpZ3VyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIHB1bGwgdXAgdGhlIGBLY29uZmlnYCBmaWxlIHdpdGhpbiB0aGUgbmV0d29ya2luZyBkcml2ZXJzLiBUaW1lIHRvIHNlZSB3aGF0IHRoZSBrZXJuZWwmIzM5O3MgZ290IG9uIGBNQUNWTEFOYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoaXMgZmVhdHVyZSBpcyBkZWZpbmVkLCBjb25maWd1cmVkLCBhbmQsIGNyaXRpY2FsbHksIGhvdyBpdCBpbnRlZ3JhdGVzIHdpdGggZXZlcnl0aGluZyBlbHNlIGluIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBkZXBlbmRlbmNpZXMg4oCTIHdoYXQgb3RoZXIgb3B0aW9ucyBuZWVkIHRvIGJlIGVuYWJsZWQgYmVmb3JlIGBNQUNWTEFOYCBpcyBldmVuIGNvbnNpZGVyZWQ/IEFyZSB0aGVyZSBhbnkgYXJjaGl0ZWN0dXJhbCBsaW1pdGF0aW9ucyBJIHNob3VsZCBiZSBhd2FyZSBvZiwgbGlrZSBzcGVjaWZpYyBoYXJkd2FyZSByZXF1aXJlbWVudHMgb3IgZHJpdmVyIGRlcGVuZGVuY2llcz8KCkkmIzM5O20gYWxzbyBjdXJpb3VzIGFib3V0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhlbXNlbHZlcy4gQXJlIHRoZXJlIGdyYW51bGFyIGNvbnRyb2xzIGZvciB0aGluZ3MgbGlrZSBicmlkZ2UgcG9ydCBpc29sYXRpb24sIHByb21pc2N1b3VzIG1vZGUgaGFuZGxpbmcsIG9yIHNlY3VyaXR5IGZlYXR1cmVzPyBVbmRlcnN0YW5kaW5nIHRoZXNlIGtub2JzIGlzIGVzc2VudGlhbCBmb3IgZmluZS10dW5pbmcgcGVyZm9ybWFuY2UgYW5kIGVuc3VyaW5nIGNvcnJlY3QgYmVoYXZpb3IgaW4gZGlmZmVyZW50IGRlcGxveW1lbnQgc2NlbmFyaW9zLiBBcmUgdGhlcmUgYW55IGRlZmF1bHQgdmFsdWVzIHRoYXQgSSBzaG91bGQgYmUgbWluZGZ1bCBvZiwgYmVjYXVzZSB0aG9zZSBjYW4gaW5mbHVlbmNlIGJlaGF2aW9yIG1vcmUgdGhhbiB0aGUgb2J2aW91cyBzZXR0aW5ncz8gSSYjMzk7bSBnb2luZyB0byBsb29rIGZvciBhbnkgaGlkZGVuIGdvdGNoYXMsIHRoaW5ncyB0aGF0IG1pZ2h0IHRyaXAgbWUgdXAgd2hlbiBzZXR0aW5nIGl0IHVwIHdpdGggc3BlY2lmaWMgaGFyZHdhcmUgb3IgZGlmZmVyZW50IG5ldHdvcmsgdG9wb2xvZ2llcy4KQmFzaWNhbGx5LCBJIG5lZWQgdG8ga25vdyB0aGUgZW50aXJlIGxhbmRzY2FwZSBiZWZvcmUgSSBzdGFydC4gSSB3YW50IHRvIGJ1aWxkIGEgcGVyZmVjdCBtZW50YWwgbWFwLCBhbmQgdGhpcyBgS2NvbmZpZ2AgZmlsZSBpcyB0aGUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE2NTpcdGNvbmZpZyBNQUNWTEFOXG4gMTY2Olx0XHR0cmlzdGF0ZSBcJiMzNDtNQUMtVkxBTiBzdXBwb3J0XCYjMzQ7XG4gMTY3Olx0XHRoZWxwXG4gMTY4Olx0XHQgIFRoaXMgYWxsb3dzIG9uZSB0byBjcmVhdGUgdmlydHVhbCBpbnRlcmZhY2VzIHRoYXQgbWFwIHBhY2tldHMgdG9cbiAxNjk6XHRcdCAgb3IgZnJvbSBzcGVjaWZpYyBNQUMgYWRkcmVzc2VzIHRvIGEgcGFydGljdWxhciBpbnRlcmZhY2UuXG4gMTcwOlx0XG4gMTcxOlx0XHQgIE1hY3ZsYW4gZGV2aWNlcyBjYW4gYmUgYWRkZWQgdXNpbmcgdGhlIFwmIzM0O2lwXCYjMzQ7IGNvbW1hbmQgZnJvbSB0aGVcbiAxNzI6XHRcdCAgaXByb3V0ZTIgcGFja2FnZSBzdGFydGluZyB3aXRoIHRoZSBpcHJvdXRlMi0yLjYuMjMgcmVsZWFzZTpcbiAxNzM6XHRcbiAxNzQ6XHRcdCAgXCYjMzQ7aXAgbGluayBhZGQgbGluayBcdTAwM2NyZWFsIGRldlx1MDAzZSBbIGFkZHJlc3MgTUFDIF0gWyBOQU1FIF0gdHlwZSBtYWN2bGFuXCYjMzQ7XG4gMTc1Olx0XG4gMTc2Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAxNzc6XHRcdCAgd2lsbCBiZSBjYWxsZWQgbWFjdmxhbi5cbiAxNzg6XHRcbiAxNzk6XHRjb25maWcgTUFDVlRBUFxuIDE4MDpcdFx0dHJpc3RhdGUgXCYjMzQ7TUFDLVZMQU4gYmFzZWQgdGFwIGRyaXZlclwmIzM0O1xuIDE4MTpcdFx0ZGVwZW5kcyBvbiBNQUNWTEFOXG4gMTgyOlx0XHRkZXBlbmRzIG9uIElORVRcbiAxODM6XHRcdHNlbGVjdCBUQVBcbiAxODQ6XHRcdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODA3NgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgTUFDVkxBTiBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyB0aGUgYmVhdXR5IG9mIGBNQUNWTEFOYCBpcyB0aGF0IGl0JiMzOTtzIHN1cHBvc2VkIHRvIGJlIGxhcmdlbHkgc2VsZi1jb250YWluZWQsIG1lYW5pbmcgbWluaW1hbCBkZXBlbmRlbmNpZXMuIFJpZ2h0LCBzbyBJIHdhbnQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCwgdGhhdCYjMzk7cyBnb2luZyB0byBiZSB0aGUgaGVhcnQgb2YgY3JlYXRpbmcgbmV3IGludGVyZmFjZXMuIEJ1dCB3YWl0IGEgbWludXRlLCBgbWFjdmxhbl9pbml0YCBpcyBjYWxsZWQgYXMgcGFydCBvZiB0aGUgYHJlZ2lzdGVyX25ldGRldmljZWAgc2VxdWVuY2UuIFRoYXQmIzM5O3MgYSBiaXQgZnVydGhlciB1cHN0cmVhbSB0aGFuIEkgaW5pdGlhbGx5IHRob3VnaHQuIEl0IGFsd2F5cyBoZWxwcyB0byBzZWUgd2hlcmUgdGhpcyBzdHVmZiBnZXRzIGludGVncmF0ZWQuIE5vdywgYXJlIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbnMgdGhhdCBhcmUgdG91Y2hlZCBieSB0aGlzIG1lY2hhbmlzbSwgYW55IHRoYXQgbWlnaHQgYmUgYWZmZWN0ZWQgYnkgY2hhbmdlcyBpbiBob3cgaXQmIzM5O3MgaW5pdGlhbGl6ZWQ/IEdpdmVuIHRoZSBwYXRjaCBhbHRlcnMgYG1hY3ZsYW5faW5pdGAsIEkgc2hvdWxkIHByb2JhYmx5IGdvIGJhY2sgYW5kIHRha2UgYW5vdGhlciBsb29rIGF0IHRoYXQgc3BlY2lmaWMgZnVuY3Rpb24gdG8gc2VlICpleGFjdGx5KiB3aGF0JiMzOTtzIGdvaW5nIG9uIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tYWN2bGFuLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA5NDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDk0MDpcdHN0YXRpYyBpbnQgbWFjdmxhbl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gOTQxOlx0e1xuIDk0MjpcdFx0c3RydWN0IG1hY3ZsYW5fZGV2ICp2bGFuID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiA5NDM6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpsb3dlcmRldiA9IHZsYW4tXHUwMDNlbG93ZXJkZXY7XG4gOTQ0Olx0XHRzdHJ1Y3QgbWFjdmxhbl9wb3J0ICpwb3J0ID0gdmxhbi1cdTAwM2Vwb3J0O1xuIDk0NTpcdFxuIDk0NjpcdFx0ZGV2LVx1MDAzZXN0YXRlXHRcdD0gKGRldi1cdTAwM2VzdGF0ZSBcdTAwMjYgfk1BQ1ZMQU5fU1RBVEVfTUFTSykgfFxuIDk0NzpcdFx0XHRcdFx0ICAobG93ZXJkZXYtXHUwMDNlc3RhdGUgXHUwMDI2IE1BQ1ZMQU5fU1RBVEVfTUFTSyk7XG4gOTQ4Olx0XHRkZXYtXHUwMDNlZmVhdHVyZXMgXHRcdD0gbG93ZXJkZXYtXHUwMDNlZmVhdHVyZXMgXHUwMDI2IE1BQ1ZMQU5fRkVBVFVSRVM7XG4gOTQ5Olx0XHRkZXYtXHUwMDNlZmVhdHVyZXNcdFx0fD0gQUxXQVlTX09OX0ZFQVRVUkVTO1xuIDk1MDpcdFx0ZGV2LVx1MDAzZWh3X2ZlYXR1cmVzXHR8PSBORVRJRl9GX0xSTztcbiA5NTE6XHRcdGRldi1cdTAwM2V2bGFuX2ZlYXR1cmVzXHQ9IGxvd2VyZGV2LVx1MDAzZXZsYW5fZmVhdHVyZXMgXHUwMDI2IE1BQ1ZMQU5fRkVBVFVSRVM7XG4gOTUyOlx0XHRkZXYtXHUwMDNldmxhbl9mZWF0dXJlc1x0fD0gQUxXQVlTX09OX09GRkxPQURTO1xuIDk1MzpcdFx0ZGV2LVx1MDAzZWh3X2VuY19mZWF0dXJlcyAgICB8PSBkZXYtXHUwMDNlZmVhdHVyZXM7XG4gOTU0Olx0XHRkZXYtXHUwMDNlbGx0eFx0XHQ9IHRydWU7XG4gOTU1Olx0XHRuZXRpZl9pbmhlcml0X3Rzb19tYXgoZGV2LCBsb3dlcmRldik7XG4gOTU2Olx0XHRkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuXHQ9IGxvd2VyZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbjtcbiA5NTc6XHRcdGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb21cdD0gbG93ZXJkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tO1xuIDk1ODpcdFx0ZGV2LVx1MDAzZW5lZWRlZF90YWlscm9vbVx0PSBsb3dlcmRldi1cdTAwM2VuZWVkZWRfdGFpbHJvb207XG4gOTU5Olx0XHRtYWN2bGFuX3NldF9sb2NrZGVwX2NsYXNzKGRldik7XG4gOTYwOlx0XG4gOTYxOlx0XHR2bGFuLVx1MDAzZXBjcHVfc3RhdHMgPSBuZXRkZXZfYWxsb2NfcGNwdV9zdGF0cyhzdHJ1Y3Qgdmxhbl9wY3B1X3N0YXRzKTtcbiA5NjI6XHRcdGlmICghdmxhbi1cdTAwM2VwY3B1X3N0YXRzKVxuIDk2MzpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiA5NjQ6XHRcbiA5NjU6XHRcdHBvcnQtXHUwMDNlY291bnQgJiM0Mzs9IDE7XG4gOTY2Olx0XG4gOTY3Olx0XHQvKiBHZXQgbWFjdmxhbiYjMzk7cyByZWZlcmVuY2UgdG8gbG93ZXJkZXYgKi9cbiA5Njg6XHRcdG5ldGRldl9ob2xkKGxvd2VyZGV2LCBcdTAwMjZ2bGFuLVx1MDAzZWRldl90cmFja2VyLCBHRlBfS0VSTkVMKTtcbiA5Njk6XHRcbiA5NzA6XHRcdHJldHVybiAwO1xuIDk3MTpcdH1cbiA5NzI6XHRcbiA5NzM6XHRzdGF0aWMgdm9pZCBtYWN2bGFuX3VuaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIDk3NDpcdHtcbiA5NzU6XHRcdHN0cnVjdCBtYWN2bGFuX2RldiAqdmxhbiA9IG5ldGRldl9wcml2KGRldik7XG4gOTc2Olx0XHRzdHJ1Y3QgbWFjdmxhbl9wb3J0ICpwb3J0ID0gdmxhbi1cdTAwM2Vwb3J0O1xuIDk3NzpcdFxuIDk3ODpcdFx0ZnJlZV9wZXJjcHUodmxhbi1cdTAwM2VwY3B1X3N0YXRzKTtcbiA5Nzk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTExNQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSB3b3JraW5nIHBhdGNoLCB3aGljaCBpcyBncmVhdCwgYW5kIEkmIzM5O20gdGhpbmtpbmcgdGhpcyBpcyBhIHByaW1lIGNhbmRpZGF0ZSBmb3Igc29tZSBmdXp6aW5nLiBMZXQmIzM5O3Mgc2VlLi4uIEkgbmVlZCBhIGdvb2QgZm9jdXMgZnVuY3Rpb24gdG8gc3RhcnQgd2l0aC4gR2l2ZW4gdGhlIHBhdGNoJiMzOTtzIHB1cnBvc2UsIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCBpbW1lZGlhdGVseSBqdW1wcyBvdXQuIEl0JiMzOTtzIGNydWNpYWwgYmVjYXVzZSBpdCYjMzk7cyB3aGVyZSB0aGUgbWFjdmxhbiBkZXZpY2UgaXMgYWN0dWFsbHkgc2V0IHVwLCByZWdpc3RlcmVkLCBhbmQgc2VlbXMgdG8gYmUgdGhlIGVudHJ5IHBvaW50IGZvciBpbml0aWFsaXphdGlvbiB2aWEgYSBjYWxsIHRvIGBtYWN2bGFuX2luaXRgLgoKV2FpdCBhIG1pbnV0ZSwgaXNuJiMzOTt0IGBtYWN2bGFuX25ld2xpbmtgIHRoZSBydG5sIGxpbmsgb3BlcmF0aW9uIHRoYXQgdGhlbiAqY2FsbHMqIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYD8gQmluZ28hIFNpbmNlIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCBpcyBleHBvcnRlZCwgaXQmIzM5O3MgYSBwZXJmZWN0IHRhcmdldCB0byBzdGFydCB3aXRoLiBJdOKAmXMgZ290IGdvb2QgYWNjZXNzaWJpbGl0eSBmb3IgZnV6emluZy4KCkFuZCBoZXksIEkgYmV0IGBtYWN2dGFwX25ld2xpbmtgIGlzIGFsc28gd29ydGggY2hlY2tpbmcsIGFuZCBJIGJldCBpdCBjYWxscyB0aGF0IHNhbWUgZnVuY3Rpb24sIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYC4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhhdCwgYW5kIHNpbmNlIGl0IGlzIGluIGBkcml2ZXJzL25ldC9tYWN2dGFwLmNgLCBJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyB0aGF0IGZpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY3Z0YXBfbmV3bGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3Z0YXAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tYWN2dGFwLmM9NzE9c3RhdGljIHZvaWQgbWFjdnRhcF91cGRhdGVfZmVhdHVyZXMoc3RydWN0IHRhcF9kZXYgKnRhcCxcbi0tXG5kcml2ZXJzL25ldC9tYWN2dGFwLmMtODAtXG5kcml2ZXJzL25ldC9tYWN2dGFwLmM6ODE6c3RhdGljIGludCBtYWN2dGFwX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L21hY3Z0YXAuYy04Mi1cdFx0XHQgICBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxuLS1cbmRyaXZlcnMvbmV0L21hY3Z0YXAuYz0xNDE9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIG1hY3Z0YXBfbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcbi0tXG5kcml2ZXJzL25ldC9tYWN2dGFwLmMtMTQzLVx0LnNldHVwXHRcdD0gbWFjdnRhcF9zZXR1cCxcbmRyaXZlcnMvbmV0L21hY3Z0YXAuYzoxNDQ6XHQubmV3bGlua1x0PSBtYWN2dGFwX25ld2xpbmssXG5kcml2ZXJzL25ldC9tYWN2dGFwLmMtMTQ1LVx0LmRlbGxpbmtcdD0gbWFjdnRhcF9kZWxsaW5rLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NzkwCgkJCQkJCQlvdXRwdXQ6IDExNAoJCQkJCQkJdGhvdWdodHM6IDE2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBtYWN2bGFuYCBhbmQgYG1hY3Z0YXBgIEtlcm5lbCBNb2R1bGUgU3RydWN0dXJlKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgYG1hY3Z0YXBfbmV3bGlua2AgaXMgc3RhdGljLCB3aGljaCBtZWFucyBpdCBpc24mIzM5O3QgZGlyZWN0bHkgZXhwb3NlZCBhbmQgbGlrZWx5IG5vdCB0aGUga2V5IGVudHJ5IHBvaW50IHdlJiMzOTtyZSBhZnRlci4gVGhhdCBtZWFucyBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AgaXMgdGhlIG1vcmUgcHJvbWlzaW5nIGZ1bmN0aW9uIHRvIGZvY3VzIG9uLiBXZSBuZWVkIHRvIGNoZWNrIGZvciBhbnkgb3RoZXIgZXhwb3J0ZWQgZnVuY3Rpb25zIHRoYXQgbWlnaHQgdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBtYWN2bGFuLgoKTGV0JiMzOTtzIHNlZS4uLiBsb29raW5nIGF0IHRoZSBjb2RlLCBpdCBsb29rcyBsaWtlIGBtYWN2bGFuX2luaXRgIGlzIGNhbGxlZCBieSBgcmVnaXN0ZXJfbmV0ZGV2aWNlYCwgd2hpY2ggaXMgaXRzZWxmIGNhbGxlZCBieSBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AuIEFoYSEgU28gYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgIGlzIGRlZmluaXRlbHkgdGhlIHJpZ2h0IHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcuIFRoaXMgZml0cyB3aXRoIHRoZSBpbml0aWFsIGh1bmNoLgoKTm93LCBsZXQmIzM5O3MgdGhpbmsgYWJvdXQgdGhlIGNvbmZpZ3VyYXRpb24uIFdlIGFyZSB3b3JraW5nIHdpdGggYE1BQ1ZMQU5gIGhlcmUuCgpSaWdodCwgbGV0JiMzOTtzIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgTUFDVkxBTmAgZG9lc24mIzM5O3QgZGVwZW5kIG9uIGFueSBvdGhlciBvYnNjdXJlIGNvbmZpZyBvcHRpb25zLiBJdCBhcHBlYXJzIHRvIGJlIGluZGVwZW5kZW50LiBFeGNlbGxlbnQuIE5vdywgYE1BQ1ZUQVBgIGRlcGVuZHMgb24gYE1BQ1ZMQU5gIGFuZCBgSU5FVGAsIHNvIHdlIGNhbiBqdXN0IGluY2x1ZGUgYE1BQ1ZMQU5gIGFuZCBoYW5kbGUgdGhhdC4KCk9rYXksIHRoYXQgc2VlbXMgdG8gY292ZXIgYWxsIG9mIHRoZSBzYWxpZW50IHBvaW50cy4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUNWTEFOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFjdmxhbl9jb21tb25fbmV3bGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgbWFjdmxhbiBkZXZpY2VzIGJ5IGluaGVyaXRpbmcgbmVlZGVkX2hlYWRyb29tIGFuZCBuZWVkZWRfdGFpbHJvb20gZnJvbSB0aGUgbG93ZXIgZGV2aWNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHBhY2tldCBwcm9jZXNzaW5nLiBUaGUgZW50cnkgcG9pbnQgZm9yIGNyZWF0aW5nIG1hY3ZsYW4gZGV2aWNlcyBpcyBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rLCB3aGljaCBjYWxscyByZWdpc3Rlcl9uZXRkZXZpY2UgYW5kIHRyaWdnZXJzIG1hY3ZsYW5faW5pdC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDVkxBTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21hY3ZsYW5fY29tbW9uX25ld2xpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIG1hY3ZsYW4gZGV2aWNlcyBieSBpbmhlcml0aW5nIG5lZWRlZF9oZWFkcm9vbSBhbmQgbmVlZGVkX3RhaWxyb29tIGZyb20gdGhlIGxvd2VyIGRldmljZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyBwYWNrZXQgcHJvY2Vzc2luZy4gVGhlIGVudHJ5IHBvaW50IGZvciBjcmVhdGluZyBtYWN2bGFuIGRldmljZXMgaXMgbWFjdmxhbl9jb21tb25fbmV3bGluaywgd2hpY2ggY2FsbHMgcmVnaXN0ZXJfbmV0ZGV2aWNlIGFuZCB0cmlnZ2VycyBtYWN2bGFuX2luaXQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDozNzowMi41OTk2MDY4MDZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njk1NTAxNTc4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUNWTEFOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWFjdmxhbl9jb21tb25fbmV3bGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBvZiBtYWN2bGFuIGRldmljZXMgYnkgaW5oZXJpdGluZyBuZWVkZWRfaGVhZHJvb20gYW5kIG5lZWRlZF90YWlscm9vbSBmcm9tIHRoZSBsb3dlciBkZXZpY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgcGFja2V0IHByb2Nlc3NpbmcuIFRoZSBlbnRyeSBwb2ludCBmb3IgY3JlYXRpbmcgbWFjdmxhbiBkZXZpY2VzIGlzIG1hY3ZsYW5fY29tbW9uX25ld2xpbmssIHdoaWNoIGNhbGxzIHJlZ2lzdGVyX25ldGRldmljZSBhbmQgdHJpZ2dlcnMgbWFjdmxhbl9pbml0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDozNzowMi41OTk2MTMxODZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NTQzOTMwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDMzZDhjYzU3YjQ4ZTE3MjZiZWU5NTMxM2ZkZTZmYWIzNDFmMjIxZjJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdWwgMjUgMTQ6Mzc6MDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWFjdmxhbi5jIGIvZHJpdmVycy9uZXQvbWFjdmxhbi5jXFxuaW5kZXggOWE0YmM5OWRiZjUzYjUuLjcwMjE5MDExZmNiMjQxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xcbkBAIC05NTQsNiArOTU0LDggQEAgc3RhdGljIGludCBtYWN2bGFuX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0ZGV2LVxcdTAwM2VsbHR4XFx0XFx0PSB0cnVlO1xcbiBcXHRuZXRpZl9pbmhlcml0X3Rzb19tYXgoZGV2LCBsb3dlcmRldik7XFxuIFxcdGRldi1cXHUwMDNlaGFyZF9oZWFkZXJfbGVuXFx0PSBsb3dlcmRldi1cXHUwMDNlaGFyZF9oZWFkZXJfbGVuO1xcbitcXHRkZXYtXFx1MDAzZW5lZWRlZF9oZWFkcm9vbVxcdD0gbG93ZXJkZXYtXFx1MDAzZW5lZWRlZF9oZWFkcm9vbTtcXG4rXFx0ZGV2LVxcdTAwM2VuZWVkZWRfdGFpbHJvb21cXHQ9IGxvd2VyZGV2LVxcdTAwM2VuZWVkZWRfdGFpbHJvb207XFxuIFxcdG1hY3ZsYW5fc2V0X2xvY2tkZXBfY2xhc3MoZGV2KTtcXG4gXFxuIFxcdHZsYW4tXFx1MDAzZXBjcHVfc3RhdHMgPSBuZXRkZXZfYWxsb2NfcGNwdV9zdGF0cyhzdHJ1Y3Qgdmxhbl9wY3B1X3N0YXRzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTQ6Mzc6MDMuMDQ1ODUwMjEzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDY1MDg3NjQzMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDVkxBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hY3ZsYW5fY29tbW9uX25ld2xpbmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgbWFjdmxhbiBkZXZpY2VzIGJ5IGluaGVyaXRpbmcgbmVlZGVkX2hlYWRyb29tIGFuZCBuZWVkZWRfdGFpbHJvb20gZnJvbSB0aGUgbG93ZXIgZGV2aWNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHBhY2tldCBwcm9jZXNzaW5nLiBUaGUgZW50cnkgcG9pbnQgZm9yIGNyZWF0aW5nIG1hY3ZsYW4gZGV2aWNlcyBpcyBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rLCB3aGljaCBjYWxscyByZWdpc3Rlcl9uZXRkZXZpY2UgYW5kIHRyaWdnZXJzIG1hY3ZsYW5faW5pdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzNkOGNjNTdiNDhlMTcyNmJlZTk1MzEzZmRlNmZhYjM0MWYyMjFmMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDE0OjM3OjAwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWFjdmxhbi5jIGIvZHJpdmVycy9uZXQvbWFjdmxhbi5jXG5pbmRleCA5YTRiYzk5ZGJmNTNiNS4uNzAyMTkwMTFmY2IyNDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9tYWN2bGFuLmNcbisrKyBiL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xuQEAgLTk1NCw2ICs5NTQsOCBAQCBzdGF0aWMgaW50IG1hY3ZsYW5faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0ZGV2LVx1MDAzZWxsdHhcdFx0PSB0cnVlO1xuIFx0bmV0aWZfaW5oZXJpdF90c29fbWF4KGRldiwgbG93ZXJkZXYpO1xuIFx0ZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlblx0PSBsb3dlcmRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW47XG4rXHRkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tXHQ9IGxvd2VyZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbTtcbitcdGRldi1cdTAwM2VuZWVkZWRfdGFpbHJvb21cdD0gbG93ZXJkZXYtXHUwMDNlbmVlZGVkX3RhaWxyb29tO1xuIFx0bWFjdmxhbl9zZXRfbG9ja2RlcF9jbGFzcyhkZXYpO1xuIFxuIFx0dmxhbi1cdTAwM2VwY3B1X3N0YXRzID0gbmV0ZGV2X2FsbG9jX3BjcHVfc3RhdHMoc3RydWN0IHZsYW5fcGNwdV9zdGF0cyk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDozNzowMy4wNDU4NTE1MjJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODYzNzI2MDc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWFjdmxhbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGFyZ2V0aW5nIGBkcml2ZXJzL25ldC9tYWN2bGFuLmNgLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBpbiB0aGUgYG1hY3ZsYW5faW5pdCgpYCBmdW5jdGlvbiwgd2hlcmUgaXQncyBpbnRyb2R1Y2luZyB0aGVzZSBhc3NpZ25tZW50czogYGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20gPSBsb3dlcmRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb207YCBhbmQgYGRldi1cdTAwM2VuZWVkZWRfdGFpbHJvb20gPSBsb3dlcmRldi1cdTAwM2VuZWVkZWRfdGFpbHJvb207YC4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uOyBpdCdzIGNoYW5naW5nIGhvdyBgbWFjdmxhbl9pbml0YCBiZWhhdmVzLCBzcGVjaWZpY2FsbHkgcmVsYXRpbmcgdG8gaGVhZHJvb20gYW5kIHRhaWxyb29tIHZhbHVlcy4gR2l2ZW4gdGhpcyBkaXJlY3QgYWx0ZXJhdGlvbiBvZiBhIGNvcmUgbmV0d29yayBmdW5jdGlvbiwgSSBuZWVkIHRvIHRob3JvdWdobHkgYXNzZXNzIHRoZSBpbXBsaWNhdGlvbnMuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGRpdmUgaW50byBgbWFjdmxhbi5jYCBpdHNlbGYgYW5kIGFsc28gZG91YmxlLWNoZWNrIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgZGVwZW5kZW5jaWVzIG9mIHRoaXMgcGF0Y2guIExldCdzIHNlZSB3aGF0IHRoZSBjb2RlIHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjM3OjA2LjkwOTU3OTc1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2MjQ3MTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY3ZsYW5faW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9tYWN2bGFuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jPTkzMz1zdGF0aWMgdm9pZCBtYWN2bGFuX3NldF9sb2NrZGVwX2NsYXNzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtOTM5LVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzo5NDA6c3RhdGljIGludCBtYWN2bGFuX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtOTQxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xMTkzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbWFjdmxhbl9uZXRkZXZfb3BzID0ge1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxMTk0OlxcdC5uZG9faW5pdFxcdFxcdD0gbWFjdmxhbl9pbml0LFxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xMTk1LVxcdC5uZG9fdW5pbml0XFx0XFx0PSBtYWN2bGFuX3VuaW5pdCxcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xOTAzPXN0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgbWFjdmxhbl9ub3RpZmllcl9ibG9jayBfX3JlYWRfbW9zdGx5ID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE5MDYtXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE5MDc6c3RhdGljIGludCBfX2luaXQgbWFjdmxhbl9pbml0X21vZHVsZSh2b2lkKVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xOTA4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xOTIyPXN0YXRpYyB2b2lkIF9fZXhpdCBtYWN2bGFuX2NsZWFudXBfbW9kdWxlKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTkyNy1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTkyODptb2R1bGVfaW5pdChtYWN2bGFuX2luaXRfbW9kdWxlKTtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTkyOS1tb2R1bGVfZXhpdChtYWN2bGFuX2NsZWFudXBfbW9kdWxlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTQ6Mzc6MDYuOTc1ODMxNzc3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM4NDU4NTk1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYWxyZWFkeSBmYW1pbGlhciB3aXRoIG5ldHdvcmtpbmcgYW5kIGtlcm5lbCBpbnRlcm5hbHM6XG5cbioqQW5hbHl6aW5nIGBtYWN2bGFuX2luaXRgIGluIHRoZSBDb250ZXh0IG9mIE5ldGRldiBPcGVyYXRpb25zKipcblxuQWxyaWdodCwgc28gdGhlIGNvZGUncyBwb2ludGluZyBtZSBhdCBgbWFjdmxhbl9pbml0YC4gSSBpbW1lZGlhdGVseSBzZWUgaXQncyBtYXJrZWQgYXMgYHN0YXRpY2AsIHdoaWNoIGNvbmZpcm1zIGl0J3MgaW50ZXJuYWwgdG8gdGhlIG1hY3ZsYW4gbW9kdWxlLiBBbmQgaXQncyBiZWluZyBhc3NpZ25lZCB0byBgLm5kb19pbml0YCB3aXRoaW4gYG1hY3ZsYW5fbmV0ZGV2X29wc2AuIE9rYXksIHRoYXQgbWFrZXMgc2Vuc2Ug4oCTIGl0J3MgdGhlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgZm9yIG1hY3ZsYW4gbmV0d29yayBkZXZpY2VzLiBUaGUgbG9naWNhbCBuZXh0IHN0ZXAsIG5vdywgaXMgdG8gZGVsdmUgaW50byB0aGUgYG1hY3ZsYW5fbmV0ZGV2X29wc2Agc3RydWN0dXJlIGl0c2VsZi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGFuZCB3aGVyZSBgbWFjdmxhbl9uZXRkZXZfb3BzYCBpcyB1c2VkIGJlY2F1c2UgdGhhdCB3aWxsIGRlZmluZSB0aGUgY29udGV4dCBhbmQgaG93IHRoaXMgYG1hY3ZsYW5faW5pdGAgZnVuY3Rpb24gaXMgdXRpbGl6ZWQgZHVyaW5nIHRoZSBkZXZpY2UgYnJpbmctdXAgcHJvY2Vzcy4gSSBuZWVkIHRvIHRyYWNlIHRoZSB1c2FnZSBvZiBgbWFjdmxhbl9uZXRkZXZfb3BzYCB0byB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZSBvZiBtYWN2bGFuIGRldmljZSBjcmVhdGlvbiBhbmQgaW50ZXJhY3Rpb24uIEl0J3MgdGltZSB0byBmb2xsb3cgdGhlIGJyZWFkY3J1bWJzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODIxLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTQ6Mzc6MTMuMzYwNDE5OTYzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4Njc3ODk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY3ZsYW5fbmV0ZGV2X29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9tYWN2bGFuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jPTExODY9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBtYWN2bGFuX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTExOTItXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjExOTM6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtYWN2bGFuX25ldGRldl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTExOTQtXFx0Lm5kb19pbml0XFx0XFx0PSBtYWN2bGFuX2luaXQsXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTIzMD12b2lkIG1hY3ZsYW5fY29tbW9uX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTIzOS1cXHRkZXYtXFx1MDAzZWNoYW5nZV9wcm90b19kb3duXFx0PSB0cnVlO1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxMjQwOlxcdGRldi1cXHUwMDNlbmV0ZGV2X29wc1xcdFxcdD0gXFx1MDAyNm1hY3ZsYW5fbmV0ZGV2X29wcztcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTI0MS1cXHRkZXYtXFx1MDAzZW5lZWRzX2ZyZWVfbmV0ZGV2XFx0PSB0cnVlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDozNzoxMy40MTkxMDcyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU0MjM0ODAwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBNYWN2bGFuIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBgbWFjdmxhbl9jb21tb25fc2V0dXBgIGlzIGNsZWFybHkgYSBrZXkgZnVuY3Rpb24sIHVzZWQgYm90aCB3aXRoaW4gYG1hY3ZsYW4uY2AgaXRzZWxmIGFuZCBwb3RlbnRpYWxseSBleHBvcnRlZC4gVGhhdCBzdWdnZXN0cyB0aGlzIGlzIGEgY2VudHJhbCBwaWVjZSBvZiB0aGUgcHV6emxlLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZmlndXJlIG91dCB3aGF0IHRyaWdnZXJzIGl0cyB1c2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIHBhdGh3YXlzIHRoYXQgbGVhZCB0byBgbWFjdmxhbl9jb21tb25fc2V0dXBgIGJlaW5nIGNhbGxlZC4gV2hhdCBrZXJuZWwgb3B0aW9ucywgbW9kdWxlIHBhcmFtZXRlcnMsIG9yIG5ldHdvcmsgaW50ZXJmYWNlIHNldHRpbmdzIGFyZSBpbnZvbHZlZD8gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24ga25vYnMgdGhhdCAqZW5hYmxlKiBtYWN2bGFuIGZ1bmN0aW9uYWxpdHkgaW4gdGhlIGZpcnN0IHBsYWNlLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGVzLCBtYXliZSBzb21lIGRldmljZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gY29kZSwgYW5kIGRlZmluaXRlbHkgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGNyZWF0aW9uIGxvZ2ljLiBUaGUgZ29hbCBpcyB0byBlc3RhYmxpc2ggdGhlIHByZWNvbmRpdGlvbnMgZm9yIGBtYWN2bGFuX2NvbW1vbl9zZXR1cGAgdG8gZXhlY3V0ZS4gVGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyBtYWN2bGFuIGlzIGluaXRpYWxpemVkIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgaG93IGRpZmZlcmVudCBjb25maWd1cmF0aW9ucyBtaWdodCBpbmZsdWVuY2UgaXRzIGJlaGF2aW9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDAxLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTQ6Mzc6MTYuOTYxNDU3ODY1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNjI2MjM2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUFDVkxBTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0xNjM9c291cmNlIFxcXCJkcml2ZXJzL25ldC90ZWFtL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xNjQtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoxNjU6Y29uZmlnIE1BQ1ZMQU5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTE2Ni1cXHR0cmlzdGF0ZSBcXFwiTUFDLVZMQU4gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTQ6Mzc6MTcuMzk3NzI0NzMyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU2NjQyMzc1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1BQ1ZMQU4gQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gd2UncmUgbG9va2luZyBhdCBpcyBgTUFDVkxBTmAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBSaWdodCwgdGhlIGZ1bmN0aW9uIGBtYWN2bGFuX2luaXRgIGlzIHN0YXRpYy4gVGhhdCBtZWFucyB0aGUgY29tcGlsZXIgKmNvdWxkKiBpbmxpbmUgaXQsIHdoaWNoIHdvdWxkIG1ha2UgdHJhY2luZyBpdHMgZXhlY3V0aW9uIGEgcGFpbi4gSG93ZXZlciwgaXQncyB1c2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciBhc3NpZ25lZCB0byBgLm5kb19pbml0YC4gU2luY2UgaXQncyBiZWluZyB1c2VkIHRoYXQgd2F5LCB0aGUgY29tcGlsZXIgKndvbid0KiBpbmxpbmUgaXQsIHdoaWNoIGlzIGdvb2QuIEJ1dCB0aGUgZmFjdCB0aGF0IGl0J3Mgc3RhdGljIHN0aWxsIGxpbWl0cyBvdXIgYWJpbGl0eSB0byByZWZlcmVuY2UgaXQgZGlyZWN0bHkuIEhtbSwgc28gaXMgdGhlcmUgYW4gZXhwb3J0ZWQgZnVuY3Rpb24gdGhhdCB0cmlnZ2VycyBpdD8gQWgsIHllcywgYHJlZ2lzdGVyX25ldGRldmljZWAgd2lsbCBkZWZpbml0ZWx5IGNhbGwgYC5uZG9faW5pdGAsIHdoaWNoIHBvaW50cyB0byBvdXIgZnVuY3Rpb24uIFRoYXQncyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50LiBOb3csIHRvIHRyYWNrIGRvd24gdGhlIGVudHJ5IHBvaW50IGZvciBjcmVhdGluZyBhIG5ldyBNQUNWTEFOIGRldmljZS4uLiBJJ20gcHJldHR5IHN1cmUgdGhhdCdzIGBtYWN2bGFuX25ld2xpbmtgLiBJIG5lZWQgdG8gc3RhcnQgZGlnZ2luZyB0aHJvdWdoIHRoYXQgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc2MywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDozNzoyMC45NjQxNTA4NjVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MjMxNDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY3ZsYW5fbmV3bGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9tYWN2bGFuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE1OTY9RVhQT1JUX1NZTUJPTF9HUEwobWFjdmxhbl9jb21tb25fbmV3bGluayk7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE1OTctXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE1OTg6c3RhdGljIGludCBtYWN2bGFuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTU5OS1cXHRcXHRcXHQgICBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE4MTM9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIG1hY3ZsYW5fbGlua19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTgxNS1cXHQuc2V0dXBcXHRcXHQ9IG1hY3ZsYW5fc2V0dXAsXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE4MTY6XFx0Lm5ld2xpbmtcXHQ9IG1hY3ZsYW5fbmV3bGluayxcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTgxNy1cXHQuZGVsbGlua1xcdD0gbWFjdmxhbl9kZWxsaW5rLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDozNzoyMS4wMjIzODgwNTJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI1NjA4OTYxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ29uc2lkZXJpbmcgYG1hY3ZsYW5fbmV3bGlua2AgYW5kIFJlbGF0ZWQgRnVuY3Rpb25zKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLCBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgbmV0d29ya2luZyBjb2RlIGFuZCBpbW1lZGlhdGVseSBJIHNlZSBhIHJlZCBmbGFnOiBgbWFjdmxhbl9uZXdsaW5rYCBpcyBzdGF0aWMsIHRvby4gVGhhdCBqdXN0IG1ha2VzIG1lIHBhdXNlLCBhcyBpdCBvZnRlbiBtZWFucyBsaW1pdGVkIHJldXNhYmlsaXR5IGFuZCBwb3RlbnRpYWwgY29tcGxpY2F0aW9ucyBpbiBtb3JlIGNvbXBsZXggc2NlbmFyaW9zLiBJJ20gd29uZGVyaW5nIGlmIHRoaXMgd2lsbCBpbXBhY3QgbW9kdWxhcml0eSwgdGVzdGluZywgb3IgcG90ZW50aWFsIGludGVncmF0aW9uIHdpdGggb3RoZXIgbmV0d29yayBtYW5hZ2VtZW50IHRvb2xzIEkgbWlnaHQgYmUgd29ya2luZyB3aXRoLlxuXG5UaGF0IGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rLCBcIkhtbSwgd2hhdCBhYm91dCBgbWFjdmxhbl9jb21tb25fbmV3bGlua2A/IElzIHRoYXQgc3RhdGljIGFzIHdlbGw/XCIgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGFyY2hpdGVjdHVyZSBiZXR0ZXIgdG8gc2VlIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBmaXQsIGFuZCBob3cgdGhleSByZWxhdGUgdG8gdGhlIG92ZXJhbGwgTWFjdmxhbiBpbXBsZW1lbnRhdGlvbiwgYW5kIGhvdyBJIG1pZ2h0IHVzZSBpdCBvciBleHRlbmQgaXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBpbiB0aGVyZSwgYW5kIGhvdyBpdCBpcyB1c2VkLiBJIGFtIGdvaW5nIHRvIGhhdmUgdG8gZGl2ZSBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzNjMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDozNzoyNC4yNzg0Nzk5MDJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5MDA1NDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY3ZsYW5fY29tbW9uX25ld2xpbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xNDA4PXN0YXRpYyBpbnQgbWFjdmxhbl9jaGFuZ2VsaW5rX3NvdXJjZXMoc3RydWN0IG1hY3ZsYW5fZGV2ICp2bGFuLCB1MzIgbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNDYzLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNDY0OmludCBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE0NjUtXFx0XFx0XFx0ICAgc3RydWN0IHJ0bmxfbmV3bGlua19wYXJhbXMgKnBhcmFtcyxcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNTk1LX1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTU5NjpFWFBPUlRfU1lNQk9MX0dQTChtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKTtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTU5Ny1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTU5OD1zdGF0aWMgaW50IG1hY3ZsYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2MDEte1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNjAyOlxcdHJldHVybiBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKGRldiwgcGFyYW1zLCBleHRhY2spO1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjAzLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTQ6Mzc6MjQuMzQ3NDkwODM4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwOTA1MDkyMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNYWN2bGFuIERyaXZlcidzIExpbmsgQ3JlYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBrZXkgZnVuY3Rpb24gd2UncmUgbG9va2luZyBhdCBpcyBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AsIGFuZCBpdCdzIGV4cG9ydGVkLCB3aGljaCBpcyBnb29kIOKAkyBtYWtlcyBpdCBhIGNsZWFyIHRhcmdldC4gV2UgY291bGQgYWxzbyBjb25zaWRlciBgbWFjdmxhbl9pbml0YCwgYnV0IHRoYXQncyBhIGZ1bmN0aW9uIHBvaW50ZXIsIGFuZCBldmVuIHRob3VnaCBpdCdzIHN0YXRpYyBhbmQgbm90IGlubGluZWQsIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCBzZWVtcyBsaWtlIGEgbW9yZSBkaXJlY3QgZW50cnkgcG9pbnQgZm9yIGZ1enppbmcgd2l0aCBzb21ldGhpbmcgbGlrZSBTeXprYWxsZXIuIEhhbmcgb24uLi4gYG1hY3ZsYW5faW5pdGAgaXMgY2FsbGVkIGJ5IGByZWdpc3Rlcl9uZXRkZXZpY2VgLCB3aGljaCAqaXRzZWxmKiBpcyBjYWxsZWQgYnkgYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgLiBUaGF0IGNvbm5lY3Rpb24gaXMgaW1wb3J0YW50LiBSaWdodCwgdGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUuIEknbGwgbmVlZCB0byBjaGVjayBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AgaW4gYGRyaXZlcnMvbmV0L21hY3ZsYW4uY2AgYW5kIHNlZSB3aGF0J3MgaGFwcGVuaW5nIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTM1LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjM3OjI4LjQzODAwMzAyNFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDUzMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE0NjQsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNDY0OlxcdGludCBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuMTQ2NTpcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxcbjE0NjY6XFx0XFx0XFx0XFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbjE0Njc6XFx0e1xcbjE0Njg6XFx0XFx0c3RydWN0IG5ldCAqbGlua19uZXQgPSBydG5sX25ld2xpbmtfbGlua19uZXQocGFyYW1zKTtcXG4xNDY5OlxcdFxcdHN0cnVjdCBtYWN2bGFuX2RldiAqdmxhbiA9IG5ldGRldl9wcml2KGRldik7XFxuMTQ3MDpcXHRcXHRzdHJ1Y3QgbmxhdHRyICoqZGF0YSA9IHBhcmFtcy1cXHUwMDNlZGF0YTtcXG4xNDcxOlxcdFxcdHN0cnVjdCBubGF0dHIgKip0YiA9IHBhcmFtcy1cXHUwMDNldGI7XFxuMTQ3MjpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbG93ZXJkZXY7XFxuMTQ3MzpcXHRcXHRzdHJ1Y3QgbWFjdmxhbl9wb3J0ICpwb3J0O1xcbjE0NzQ6XFx0XFx0Ym9vbCBjcmVhdGUgPSBmYWxzZTtcXG4xNDc1OlxcdFxcdGludCBtYWNtb2RlO1xcbjE0NzY6XFx0XFx0aW50IGVycjtcXG4xNDc3OlxcdFxcbjE0Nzg6XFx0XFx0aWYgKCF0YltJRkxBX0xJTktdKVxcbjE0Nzk6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuMTQ4MDpcXHRcXG4xNDgxOlxcdFxcdGxvd2VyZGV2ID0gX19kZXZfZ2V0X2J5X2luZGV4KGxpbmtfbmV0LCBubGFfZ2V0X3UzMih0YltJRkxBX0xJTktdKSk7XFxuMTQ4MjpcXHRcXHRpZiAobG93ZXJkZXYgPT0gTlVMTClcXG4xNDgzOlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbjE0ODQ6XFx0XFxuMTQ4NTpcXHRcXHQvKiBXaGVuIGNyZWF0aW5nIG1hY3ZsYW5zIG9yIG1hY3Z0YXBzIG9uIHRvcCBvZiBvdGhlciBtYWN2bGFucyAtIHVzZVxcbjE0ODY6XFx0XFx0ICogdGhlIHJlYWwgZGV2aWNlIGFzIHRoZSBsb3dlcmRldi5cXG4xNDg3OlxcdFxcdCAqL1xcbjE0ODg6XFx0XFx0aWYgKG5ldGlmX2lzX21hY3ZsYW4obG93ZXJkZXYpKVxcbjE0ODk6XFx0XFx0XFx0bG93ZXJkZXYgPSBtYWN2bGFuX2Rldl9yZWFsX2Rldihsb3dlcmRldik7XFxuMTQ5MDpcXHRcXG4xNDkxOlxcdFxcdGlmICghdGJbSUZMQV9NVFVdKVxcbjE0OTI6XFx0XFx0XFx0ZGV2LVxcdTAwM2VtdHUgPSBsb3dlcmRldi1cXHUwMDNlbXR1O1xcbjE0OTM6XFx0XFx0ZWxzZSBpZiAoZGV2LVxcdTAwM2VtdHUgXFx1MDAzZSBsb3dlcmRldi1cXHUwMDNlbXR1KVxcbjE0OTQ6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuMTQ5NTpcXHRcXG4xNDk2OlxcdFxcdC8qIE1UVSByYW5nZTogNjggLSBsb3dlcmRldi1cXHUwMDNlbWF4X210dSAqL1xcbjE0OTc6XFx0XFx0ZGV2LVxcdTAwM2VtaW5fbXR1ID0gRVRIX01JTl9NVFU7XFxuMTQ5ODpcXHRcXHRkZXYtXFx1MDAzZW1heF9tdHUgPSBsb3dlcmRldi1cXHUwMDNlbWF4X210dTtcXG4xNDk5OlxcdFxcbjE1MDA6XFx0XFx0aWYgKCF0YltJRkxBX0FERFJFU1NdKVxcbjE1MDE6XFx0XFx0XFx0ZXRoX2h3X2FkZHJfcmFuZG9tKGRldik7XFxuMTUwMjpcXHRcXG4xNTAzOlxcdFxcdGlmICghbmV0aWZfaXNfbWFjdmxhbl9wb3J0KGxvd2VyZGV2KSkge1xcbjE1MDQ6XFx0XFx0XFx0ZXJyID0gbWFjdmxhbl9wb3J0X2NyZWF0ZShsb3dlcmRldik7XFxuMTUwNTpcXHRcXHRcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4xNTA2OlxcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuMTUwNzpcXHRcXHRcXHRjcmVhdGUgPSB0cnVlO1xcbjE1MDg6XFx0XFx0fVxcbjE1MDk6XFx0XFx0cG9ydCA9IG1hY3ZsYW5fcG9ydF9nZXRfcnRubChsb3dlcmRldik7XFxuMTUxMDpcXHRcXG4xNTExOlxcdFxcdC8qIE9ubHkgMSBtYWN2bGFuIGRldmljZSBjYW4gYmUgY3JlYXRlZCBpbiBwYXNzdGhydSBtb2RlICovXFxuMTUxMjpcXHRcXHRpZiAobWFjdmxhbl9wYXNzdGhydShwb3J0KSkge1xcbjE1MTM6XFx0XFx0XFx0LyogVGhlIG1hY3ZsYW4gcG9ydCBtdXN0IGJlIG5vdCBjcmVhdGVkIHRoaXMgdGltZSxcXG4xNTE0OlxcdFxcdFxcdCAqIHN0aWxsIGdvdG8gZGVzdHJveV9tYWN2bGFuX3BvcnQgZm9yIHJlYWRhYmlsaXR5LlxcbjE1MTU6XFx0XFx0XFx0ICovXFxuMTUxNjpcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbjE1MTc6XFx0XFx0XFx0Z290byBkZXN0cm95X21hY3ZsYW5fcG9ydDtcXG4xNTE4OlxcdFxcdH1cXG4xNTE5OlxcdFxcbjE1MjA6XFx0XFx0dmxhbi1cXHUwMDNlbG93ZXJkZXYgPSBsb3dlcmRldjtcXG4xNTIxOlxcdFxcdHZsYW4tXFx1MDAzZWRldiAgICAgID0gZGV2O1xcbjE1MjI6XFx0XFx0dmxhbi1cXHUwMDNlcG9ydCAgICAgPSBwb3J0O1xcbjE1MjM6XFx0XFx0dmxhbi1cXHUwMDNlc2V0X2ZlYXR1cmVzID0gTUFDVkxBTl9GRUFUVVJFUztcXG4xNTI0OlxcdFxcbjE1MjU6XFx0XFx0dmxhbi1cXHUwMDNlbW9kZSAgICAgPSBNQUNWTEFOX01PREVfVkVQQTtcXG4xNTI2OlxcdFxcdGlmIChkYXRhIFxcdTAwMjZcXHUwMDI2IGRhdGFbSUZMQV9NQUNWTEFOX01PREVdKVxcbjE1Mjc6XFx0XFx0XFx0dmxhbi1cXHUwMDNlbW9kZSA9IG5sYV9nZXRfdTMyKGRhdGFbSUZMQV9NQUNWTEFOX01PREVdKTtcXG4xNTI4OlxcdFxcbjE1Mjk6XFx0XFx0aWYgKGRhdGEgXFx1MDAyNlxcdTAwMjYgZGF0YVtJRkxBX01BQ1ZMQU5fRkxBR1NdKVxcbjE1MzA6XFx0XFx0XFx0dmxhbi1cXHUwMDNlZmxhZ3MgPSBubGFfZ2V0X3UxNihkYXRhW0lGTEFfTUFDVkxBTl9GTEFHU10pO1xcbjE1MzE6XFx0XFxuMTUzMjpcXHRcXHRpZiAodmxhbi1cXHUwMDNlbW9kZSA9PSBNQUNWTEFOX01PREVfUEFTU1RIUlUpIHtcXG4xNTMzOlxcdFxcdFxcdGlmIChwb3J0LVxcdTAwM2Vjb3VudCkge1xcbjE1MzQ6XFx0XFx0XFx0XFx0ZXJyID0gLUVJTlZBTDtcXG4xNTM1OlxcdFxcdFxcdFxcdGdvdG8gZGVzdHJveV9tYWN2bGFuX3BvcnQ7XFxuMTUzNjpcXHRcXHRcXHR9XFxuMTUzNzpcXHRcXHRcXHRtYWN2bGFuX3NldF9wYXNzdGhydShwb3J0KTtcXG4xNTM4OlxcdFxcdFxcdGV0aF9od19hZGRyX2luaGVyaXQoZGV2LCBsb3dlcmRldik7XFxuMTUzOTpcXHRcXHR9XFxuMTU0MDpcXHRcXG4xNTQxOlxcdFxcdGlmIChkYXRhIFxcdTAwMjZcXHUwMDI2IGRhdGFbSUZMQV9NQUNWTEFOX01BQ0FERFJfTU9ERV0pIHtcXG4xNTQyOlxcdFxcdFxcdGlmICh2bGFuLVxcdTAwM2Vtb2RlICE9IE1BQ1ZMQU5fTU9ERV9TT1VSQ0UpIHtcXG4xNTQzOlxcdFxcdFxcdFxcdGVyciA9IC1FSU5WQUw7XFxuMTU0NDpcXHRcXHRcXHRcXHRnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0O1xcbjE1NDU6XFx0XFx0XFx0fVxcbjE1NDY6XFx0XFx0XFx0bWFjbW9kZSA9IG5sYV9nZXRfdTMyKGRhdGFbSUZMQV9NQUNWTEFOX01BQ0FERFJfTU9ERV0pO1xcbjE1NDc6XFx0XFx0XFx0ZXJyID0gbWFjdmxhbl9jaGFuZ2VsaW5rX3NvdXJjZXModmxhbiwgbWFjbW9kZSwgZGF0YSk7XFxuMTU0ODpcXHRcXHRcXHRpZiAoZXJyKVxcbjE1NDk6XFx0XFx0XFx0XFx0Z290byBkZXN0cm95X21hY3ZsYW5fcG9ydDtcXG4xNTUwOlxcdFxcdH1cXG4xNTUxOlxcdFxcbjE1NTI6XFx0XFx0dmxhbi1cXHUwMDNlYmNfcXVldWVfbGVuX3JlcSA9IE1BQ1ZMQU5fREVGQVVMVF9CQ19RVUVVRV9MRU47XFxuMTU1MzpcXHRcXHRpZiAoZGF0YSBcXHUwMDI2XFx1MDAyNiBkYXRhW0lGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5dKVxcbjE1NTQ6XFx0XFx0XFx0dmxhbi1cXHUwMDNlYmNfcXVldWVfbGVuX3JlcSA9IG5sYV9nZXRfdTMyKGRhdGFbSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl0pO1xcbjE1NTU6XFx0XFxuMTU1NjpcXHRcXHRpZiAoZGF0YSBcXHUwMDI2XFx1MDAyNiBkYXRhW0lGTEFfTUFDVkxBTl9CQ19DVVRPRkZdKVxcbjE1NTc6XFx0XFx0XFx0dXBkYXRlX3BvcnRfYmNfY3V0b2ZmKFxcbjE1NTg6XFx0XFx0XFx0XFx0dmxhbiwgbmxhX2dldF9zMzIoZGF0YVtJRkxBX01BQ1ZMQU5fQkNfQ1VUT0ZGXSkpO1xcbjE1NTk6XFx0XFxuMTU2MDpcXHRcXHRlcnIgPSByZWdpc3Rlcl9uZXRkZXZpY2UoZGV2KTtcXG4xNTYxOlxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbjE1NjI6XFx0XFx0XFx0Z290byBkZXN0cm95X21hY3ZsYW5fcG9ydDtcXG4xNTYzOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDozNzoyOC40MzgxNDkzNTRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg0ODE0MTg0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1hY3ZsYW4gRGV2aWNlIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gYHJlZ2lzdGVyX25ldGRldmljZWAgaXMgYmVpbmcgY2FsbGVkIGhlcmUsIHdoaWNoIGlzIHN0YW5kYXJkIHByb2NlZHVyZS4gVGhlIGNvcmUgb2YgdGhpcyBjaGFuZ2Ugc2VlbXMgdG8gYmUgdGhlIGFkZGl0aW9uIG9mIGBkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tID0gbG93ZXJkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tO2AgYW5kIGBkZXYtXHUwMDNlbmVlZGVkX3RhaWxyb29tID0gbG93ZXJkZXYtXHUwMDNlbmVlZGVkX3RhaWxyb29tO2Agd2l0aGluIGBtYWN2bGFuX2luaXRgLiBJJ20gc2VlaW5nIHRoaXMgaW1tZWRpYXRlbHkgYXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBtb2RpZmljYXRpb24gdG8gaG93IHRoZSBtYWN2bGFuIGRldmljZSBoYW5kbGVzIGhlYWRyb29tIGFuZCB0YWlscm9vbS4gVGhpcyBkaXJlY3RseSBpbXBhY3RzIHBhY2tldCB0cmFuc21pc3Npb24gYW5kIHJlY2VwdGlvbiwgaW5mbHVlbmNpbmcgaG93IHRoZSBkZXZpY2UgaW50ZXJhY3RzIGF0IHRoZSBkYXRhIGxpbmsgbGF5ZXIuXG5cblRoZSBjcnVjaWFsIHF1ZXN0aW9uIG5vdyBiZWNvbWVzOiBhcmUgdGhlcmUgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQgYmVjYXVzZSBvZiB0aGlzIGFsdGVyYXRpb24/IERvZXMgdGhpcyBpbnRyb2R1Y2UgYW55IGRlcGVuZGVuY2llcyBvbiBzcGVjaWZpYyBzZXR0aW5ncywgb3IgbWlnaHQgdGhpcyBjaGFuZ2UgaGF2ZSBjb21wYXRpYmlsaXR5IGltcGxpY2F0aW9ucyBmb3IgZXhpc3Rpbmcgc2V0dXBzPyBHaXZlbiB0aGF0IGBNQUNWTEFOYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlnLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpc24ndCBjb250aW5nZW50IG9uIHNvbWUgb3RoZXIgZmxhZyBvciBmZWF0dXJlLiBMZXQgbWUgbG9vayBpbnRvIHRoZSBgTUFDVkxBTmAgZGVwZW5kZW5jaWVzIHRvIGJlIGNlcnRhaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5ODgsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDozNzozMi4yODYyOTM5NjNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzMzIwMTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUNWTEFOXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0xNjM9c291cmNlIFxcXCJkcml2ZXJzL25ldC90ZWFtL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xNjQtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoxNjU6Y29uZmlnIE1BQ1ZMQU5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTE2Ni1cXHR0cmlzdGF0ZSBcXFwiTUFDLVZMQU4gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTQ6Mzc6MzIuMzQ5NjE4NTFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0MTk2OTYzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIGBNQUNWTEFOYCBjb25maWd1cmF0aW9uIHdpdGhpbiBgZHJpdmVycy9uZXQvS2NvbmZpZ2AsIHRoaW5raW5nIGxpa2UgYSBzZWFzb25lZCBuZXR3b3JrIGVuZ2luZWVyOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNQUNWTEFOIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBwdWxsIHVwIHRoZSBgS2NvbmZpZ2AgZmlsZSB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgZHJpdmVycy4gVGltZSB0byBzZWUgd2hhdCB0aGUga2VybmVsJ3MgZ290IG9uIGBNQUNWTEFOYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoaXMgZmVhdHVyZSBpcyBkZWZpbmVkLCBjb25maWd1cmVkLCBhbmQsIGNyaXRpY2FsbHksIGhvdyBpdCBpbnRlZ3JhdGVzIHdpdGggZXZlcnl0aGluZyBlbHNlIGluIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBJJ20gbG9va2luZyBmb3IgdGhlIGRlcGVuZGVuY2llcyDigJMgd2hhdCBvdGhlciBvcHRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZCBiZWZvcmUgYE1BQ1ZMQU5gIGlzIGV2ZW4gY29uc2lkZXJlZD8gQXJlIHRoZXJlIGFueSBhcmNoaXRlY3R1cmFsIGxpbWl0YXRpb25zIEkgc2hvdWxkIGJlIGF3YXJlIG9mLCBsaWtlIHNwZWNpZmljIGhhcmR3YXJlIHJlcXVpcmVtZW50cyBvciBkcml2ZXIgZGVwZW5kZW5jaWVzP1xuXG5JJ20gYWxzbyBjdXJpb3VzIGFib3V0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhlbXNlbHZlcy4gQXJlIHRoZXJlIGdyYW51bGFyIGNvbnRyb2xzIGZvciB0aGluZ3MgbGlrZSBicmlkZ2UgcG9ydCBpc29sYXRpb24sIHByb21pc2N1b3VzIG1vZGUgaGFuZGxpbmcsIG9yIHNlY3VyaXR5IGZlYXR1cmVzPyBVbmRlcnN0YW5kaW5nIHRoZXNlIGtub2JzIGlzIGVzc2VudGlhbCBmb3IgZmluZS10dW5pbmcgcGVyZm9ybWFuY2UgYW5kIGVuc3VyaW5nIGNvcnJlY3QgYmVoYXZpb3IgaW4gZGlmZmVyZW50IGRlcGxveW1lbnQgc2NlbmFyaW9zLiBBcmUgdGhlcmUgYW55IGRlZmF1bHQgdmFsdWVzIHRoYXQgSSBzaG91bGQgYmUgbWluZGZ1bCBvZiwgYmVjYXVzZSB0aG9zZSBjYW4gaW5mbHVlbmNlIGJlaGF2aW9yIG1vcmUgdGhhbiB0aGUgb2J2aW91cyBzZXR0aW5ncz8gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBoaWRkZW4gZ290Y2hhcywgdGhpbmdzIHRoYXQgbWlnaHQgdHJpcCBtZSB1cCB3aGVuIHNldHRpbmcgaXQgdXAgd2l0aCBzcGVjaWZpYyBoYXJkd2FyZSBvciBkaWZmZXJlbnQgbmV0d29yayB0b3BvbG9naWVzLlxuQmFzaWNhbGx5LCBJIG5lZWQgdG8ga25vdyB0aGUgZW50aXJlIGxhbmRzY2FwZSBiZWZvcmUgSSBzdGFydC4gSSB3YW50IHRvIGJ1aWxkIGEgcGVyZmVjdCBtZW50YWwgbWFwLCBhbmQgdGhpcyBgS2NvbmZpZ2AgZmlsZSBpcyB0aGUga2V5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDM0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTQ6Mzc6MzUuNzkxNTkxMjA5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk2NTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTY1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTY1OlxcdGNvbmZpZyBNQUNWTEFOXFxuIDE2NjpcXHRcXHR0cmlzdGF0ZSBcXFwiTUFDLVZMQU4gc3VwcG9ydFxcXCJcXG4gMTY3OlxcdFxcdGhlbHBcXG4gMTY4OlxcdFxcdCAgVGhpcyBhbGxvd3Mgb25lIHRvIGNyZWF0ZSB2aXJ0dWFsIGludGVyZmFjZXMgdGhhdCBtYXAgcGFja2V0cyB0b1xcbiAxNjk6XFx0XFx0ICBvciBmcm9tIHNwZWNpZmljIE1BQyBhZGRyZXNzZXMgdG8gYSBwYXJ0aWN1bGFyIGludGVyZmFjZS5cXG4gMTcwOlxcdFxcbiAxNzE6XFx0XFx0ICBNYWN2bGFuIGRldmljZXMgY2FuIGJlIGFkZGVkIHVzaW5nIHRoZSBcXFwiaXBcXFwiIGNvbW1hbmQgZnJvbSB0aGVcXG4gMTcyOlxcdFxcdCAgaXByb3V0ZTIgcGFja2FnZSBzdGFydGluZyB3aXRoIHRoZSBpcHJvdXRlMi0yLjYuMjMgcmVsZWFzZTpcXG4gMTczOlxcdFxcbiAxNzQ6XFx0XFx0ICBcXFwiaXAgbGluayBhZGQgbGluayBcXHUwMDNjcmVhbCBkZXZcXHUwMDNlIFsgYWRkcmVzcyBNQUMgXSBbIE5BTUUgXSB0eXBlIG1hY3ZsYW5cXFwiXFxuIDE3NTpcXHRcXG4gMTc2OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAxNzc6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBtYWN2bGFuLlxcbiAxNzg6XFx0XFxuIDE3OTpcXHRjb25maWcgTUFDVlRBUFxcbiAxODA6XFx0XFx0dHJpc3RhdGUgXFxcIk1BQy1WTEFOIGJhc2VkIHRhcCBkcml2ZXJcXFwiXFxuIDE4MTpcXHRcXHRkZXBlbmRzIG9uIE1BQ1ZMQU5cXG4gMTgyOlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAxODM6XFx0XFx0c2VsZWN0IFRBUFxcbiAxODQ6XFx0XFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDozNzozNS43OTE2OTA1NloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDYwNjQwMjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgTUFDVkxBTiBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBiZWF1dHkgb2YgYE1BQ1ZMQU5gIGlzIHRoYXQgaXQncyBzdXBwb3NlZCB0byBiZSBsYXJnZWx5IHNlbGYtY29udGFpbmVkLCBtZWFuaW5nIG1pbmltYWwgZGVwZW5kZW5jaWVzLiBSaWdodCwgc28gSSB3YW50IHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AsIHRoYXQncyBnb2luZyB0byBiZSB0aGUgaGVhcnQgb2YgY3JlYXRpbmcgbmV3IGludGVyZmFjZXMuIEJ1dCB3YWl0IGEgbWludXRlLCBgbWFjdmxhbl9pbml0YCBpcyBjYWxsZWQgYXMgcGFydCBvZiB0aGUgYHJlZ2lzdGVyX25ldGRldmljZWAgc2VxdWVuY2UuIFRoYXQncyBhIGJpdCBmdXJ0aGVyIHVwc3RyZWFtIHRoYW4gSSBpbml0aWFsbHkgdGhvdWdodC4gSXQgYWx3YXlzIGhlbHBzIHRvIHNlZSB3aGVyZSB0aGlzIHN0dWZmIGdldHMgaW50ZWdyYXRlZC4gTm93LCBhcmUgdGhlcmUgYW55IG90aGVyIGZ1bmN0aW9ucyB0aGF0IGFyZSB0b3VjaGVkIGJ5IHRoaXMgbWVjaGFuaXNtLCBhbnkgdGhhdCBtaWdodCBiZSBhZmZlY3RlZCBieSBjaGFuZ2VzIGluIGhvdyBpdCdzIGluaXRpYWxpemVkPyBHaXZlbiB0aGUgcGF0Y2ggYWx0ZXJzIGBtYWN2bGFuX2luaXRgLCBJIHNob3VsZCBwcm9iYWJseSBnbyBiYWNrIGFuZCB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGF0IHNwZWNpZmljIGZ1bmN0aW9uIHRvIHNlZSAqZXhhY3RseSogd2hhdCdzIGdvaW5nIG9uIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODA3NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTQ6Mzc6MzkuMjUyMzMzMzE5WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1OTg5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9tYWN2bGFuLmNcIixcbiAgXCJGaXJzdExpbmVcIjogOTQwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgOTQwOlxcdHN0YXRpYyBpbnQgbWFjdmxhbl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIDk0MTpcXHR7XFxuIDk0MjpcXHRcXHRzdHJ1Y3QgbWFjdmxhbl9kZXYgKnZsYW4gPSBuZXRkZXZfcHJpdihkZXYpO1xcbiA5NDM6XFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKmxvd2VyZGV2ID0gdmxhbi1cXHUwMDNlbG93ZXJkZXY7XFxuIDk0NDpcXHRcXHRzdHJ1Y3QgbWFjdmxhbl9wb3J0ICpwb3J0ID0gdmxhbi1cXHUwMDNlcG9ydDtcXG4gOTQ1OlxcdFxcbiA5NDY6XFx0XFx0ZGV2LVxcdTAwM2VzdGF0ZVxcdFxcdD0gKGRldi1cXHUwMDNlc3RhdGUgXFx1MDAyNiB+TUFDVkxBTl9TVEFURV9NQVNLKSB8XFxuIDk0NzpcXHRcXHRcXHRcXHRcXHQgIChsb3dlcmRldi1cXHUwMDNlc3RhdGUgXFx1MDAyNiBNQUNWTEFOX1NUQVRFX01BU0spO1xcbiA5NDg6XFx0XFx0ZGV2LVxcdTAwM2VmZWF0dXJlcyBcXHRcXHQ9IGxvd2VyZGV2LVxcdTAwM2VmZWF0dXJlcyBcXHUwMDI2IE1BQ1ZMQU5fRkVBVFVSRVM7XFxuIDk0OTpcXHRcXHRkZXYtXFx1MDAzZWZlYXR1cmVzXFx0XFx0fD0gQUxXQVlTX09OX0ZFQVRVUkVTO1xcbiA5NTA6XFx0XFx0ZGV2LVxcdTAwM2Vod19mZWF0dXJlc1xcdHw9IE5FVElGX0ZfTFJPO1xcbiA5NTE6XFx0XFx0ZGV2LVxcdTAwM2V2bGFuX2ZlYXR1cmVzXFx0PSBsb3dlcmRldi1cXHUwMDNldmxhbl9mZWF0dXJlcyBcXHUwMDI2IE1BQ1ZMQU5fRkVBVFVSRVM7XFxuIDk1MjpcXHRcXHRkZXYtXFx1MDAzZXZsYW5fZmVhdHVyZXNcXHR8PSBBTFdBWVNfT05fT0ZGTE9BRFM7XFxuIDk1MzpcXHRcXHRkZXYtXFx1MDAzZWh3X2VuY19mZWF0dXJlcyAgICB8PSBkZXYtXFx1MDAzZWZlYXR1cmVzO1xcbiA5NTQ6XFx0XFx0ZGV2LVxcdTAwM2VsbHR4XFx0XFx0PSB0cnVlO1xcbiA5NTU6XFx0XFx0bmV0aWZfaW5oZXJpdF90c29fbWF4KGRldiwgbG93ZXJkZXYpO1xcbiA5NTY6XFx0XFx0ZGV2LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW5cXHQ9IGxvd2VyZGV2LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW47XFxuIDk1NzpcXHRcXHRkZXYtXFx1MDAzZW5lZWRlZF9oZWFkcm9vbVxcdD0gbG93ZXJkZXYtXFx1MDAzZW5lZWRlZF9oZWFkcm9vbTtcXG4gOTU4OlxcdFxcdGRldi1cXHUwMDNlbmVlZGVkX3RhaWxyb29tXFx0PSBsb3dlcmRldi1cXHUwMDNlbmVlZGVkX3RhaWxyb29tO1xcbiA5NTk6XFx0XFx0bWFjdmxhbl9zZXRfbG9ja2RlcF9jbGFzcyhkZXYpO1xcbiA5NjA6XFx0XFxuIDk2MTpcXHRcXHR2bGFuLVxcdTAwM2VwY3B1X3N0YXRzID0gbmV0ZGV2X2FsbG9jX3BjcHVfc3RhdHMoc3RydWN0IHZsYW5fcGNwdV9zdGF0cyk7XFxuIDk2MjpcXHRcXHRpZiAoIXZsYW4tXFx1MDAzZXBjcHVfc3RhdHMpXFxuIDk2MzpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gOTY0OlxcdFxcbiA5NjU6XFx0XFx0cG9ydC1cXHUwMDNlY291bnQgKz0gMTtcXG4gOTY2OlxcdFxcbiA5Njc6XFx0XFx0LyogR2V0IG1hY3ZsYW4ncyByZWZlcmVuY2UgdG8gbG93ZXJkZXYgKi9cXG4gOTY4OlxcdFxcdG5ldGRldl9ob2xkKGxvd2VyZGV2LCBcXHUwMDI2dmxhbi1cXHUwMDNlZGV2X3RyYWNrZXIsIEdGUF9LRVJORUwpO1xcbiA5Njk6XFx0XFxuIDk3MDpcXHRcXHRyZXR1cm4gMDtcXG4gOTcxOlxcdH1cXG4gOTcyOlxcdFxcbiA5NzM6XFx0c3RhdGljIHZvaWQgbWFjdmxhbl91bmluaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gOTc0OlxcdHtcXG4gOTc1OlxcdFxcdHN0cnVjdCBtYWN2bGFuX2RldiAqdmxhbiA9IG5ldGRldl9wcml2KGRldik7XFxuIDk3NjpcXHRcXHRzdHJ1Y3QgbWFjdmxhbl9wb3J0ICpwb3J0ID0gdmxhbi1cXHUwMDNlcG9ydDtcXG4gOTc3OlxcdFxcbiA5Nzg6XFx0XFx0ZnJlZV9wZXJjcHUodmxhbi1cXHUwMDNlcGNwdV9zdGF0cyk7XFxuIDk3OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTQ6Mzc6MzkuMjUyNDk0MzU5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5NDI0MjcyNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHdvcmtpbmcgcGF0Y2gsIHdoaWNoIGlzIGdyZWF0LCBhbmQgSSdtIHRoaW5raW5nIHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIHNvbWUgZnV6emluZy4gTGV0J3Mgc2VlLi4uIEkgbmVlZCBhIGdvb2QgZm9jdXMgZnVuY3Rpb24gdG8gc3RhcnQgd2l0aC4gR2l2ZW4gdGhlIHBhdGNoJ3MgcHVycG9zZSwgYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgIGltbWVkaWF0ZWx5IGp1bXBzIG91dC4gSXQncyBjcnVjaWFsIGJlY2F1c2UgaXQncyB3aGVyZSB0aGUgbWFjdmxhbiBkZXZpY2UgaXMgYWN0dWFsbHkgc2V0IHVwLCByZWdpc3RlcmVkLCBhbmQgc2VlbXMgdG8gYmUgdGhlIGVudHJ5IHBvaW50IGZvciBpbml0aWFsaXphdGlvbiB2aWEgYSBjYWxsIHRvIGBtYWN2bGFuX2luaXRgLlxuXG5XYWl0IGEgbWludXRlLCBpc24ndCBgbWFjdmxhbl9uZXdsaW5rYCB0aGUgcnRubCBsaW5rIG9wZXJhdGlvbiB0aGF0IHRoZW4gKmNhbGxzKiBgbWFjdmxhbl9jb21tb25fbmV3bGlua2A/IEJpbmdvISBTaW5jZSBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AgaXMgZXhwb3J0ZWQsIGl0J3MgYSBwZXJmZWN0IHRhcmdldCB0byBzdGFydCB3aXRoLiBJdOKAmXMgZ290IGdvb2QgYWNjZXNzaWJpbGl0eSBmb3IgZnV6emluZy5cblxuQW5kIGhleSwgSSBiZXQgYG1hY3Z0YXBfbmV3bGlua2AgaXMgYWxzbyB3b3J0aCBjaGVja2luZywgYW5kIEkgYmV0IGl0IGNhbGxzIHRoYXQgc2FtZSBmdW5jdGlvbiwgYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgLiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGF0LCBhbmQgc2luY2UgaXQgaXMgaW4gYGRyaXZlcnMvbmV0L21hY3Z0YXAuY2AsIEknbGwgc3RhcnQgYnkgY2hlY2tpbmcgdGhhdCBmaWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTE1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTQ6Mzc6NDQuMTk0OTI0MjJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3ODA4ODM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY3Z0YXBfbmV3bGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9tYWN2dGFwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWFjdnRhcC5jPTcxPXN0YXRpYyB2b2lkIG1hY3Z0YXBfdXBkYXRlX2ZlYXR1cmVzKHN0cnVjdCB0YXBfZGV2ICp0YXAsXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2dGFwLmMtODAtXFxuZHJpdmVycy9uZXQvbWFjdnRhcC5jOjgxOnN0YXRpYyBpbnQgbWFjdnRhcF9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvbWFjdnRhcC5jLTgyLVxcdFxcdFxcdCAgIHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2dGFwLmM9MTQxPXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyBtYWN2dGFwX2xpbmtfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2dGFwLmMtMTQzLVxcdC5zZXR1cFxcdFxcdD0gbWFjdnRhcF9zZXR1cCxcXG5kcml2ZXJzL25ldC9tYWN2dGFwLmM6MTQ0OlxcdC5uZXdsaW5rXFx0PSBtYWN2dGFwX25ld2xpbmssXFxuZHJpdmVycy9uZXQvbWFjdnRhcC5jLTE0NS1cXHQuZGVsbGlua1xcdD0gbWFjdnRhcF9kZWxsaW5rLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDozNzo0NC4yNzI3Mzc1NTZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgzNTAwMDA0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBtYWN2bGFuYCBhbmQgYG1hY3Z0YXBgIEtlcm5lbCBNb2R1bGUgU3RydWN0dXJlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIGBtYWN2dGFwX25ld2xpbmtgIGlzIHN0YXRpYywgd2hpY2ggbWVhbnMgaXQgaXNuJ3QgZGlyZWN0bHkgZXhwb3NlZCBhbmQgbGlrZWx5IG5vdCB0aGUga2V5IGVudHJ5IHBvaW50IHdlJ3JlIGFmdGVyLiBUaGF0IG1lYW5zIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCBpcyB0aGUgbW9yZSBwcm9taXNpbmcgZnVuY3Rpb24gdG8gZm9jdXMgb24uIFdlIG5lZWQgdG8gY2hlY2sgZm9yIGFueSBvdGhlciBleHBvcnRlZCBmdW5jdGlvbnMgdGhhdCBtaWdodCB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG1hY3ZsYW4uXG5cbkxldCdzIHNlZS4uLiBsb29raW5nIGF0IHRoZSBjb2RlLCBpdCBsb29rcyBsaWtlIGBtYWN2bGFuX2luaXRgIGlzIGNhbGxlZCBieSBgcmVnaXN0ZXJfbmV0ZGV2aWNlYCwgd2hpY2ggaXMgaXRzZWxmIGNhbGxlZCBieSBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AuIEFoYSEgU28gYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgIGlzIGRlZmluaXRlbHkgdGhlIHJpZ2h0IHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcuIFRoaXMgZml0cyB3aXRoIHRoZSBpbml0aWFsIGh1bmNoLlxuXG5Ob3csIGxldCdzIHRoaW5rIGFib3V0IHRoZSBjb25maWd1cmF0aW9uLiBXZSBhcmUgd29ya2luZyB3aXRoIGBNQUNWTEFOYCBoZXJlLlxuXG5SaWdodCwgbGV0J3MganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBNQUNWTEFOYCBkb2Vzbid0IGRlcGVuZCBvbiBhbnkgb3RoZXIgb2JzY3VyZSBjb25maWcgb3B0aW9ucy4gSXQgYXBwZWFycyB0byBiZSBpbmRlcGVuZGVudC4gRXhjZWxsZW50LiBOb3csIGBNQUNWVEFQYCBkZXBlbmRzIG9uIGBNQUNWTEFOYCBhbmQgYElORVRgLCBzbyB3ZSBjYW4ganVzdCBpbmNsdWRlIGBNQUNWTEFOYCBhbmQgaGFuZGxlIHRoYXQuXG5cbk9rYXksIHRoYXQgc2VlbXMgdG8gY292ZXIgYWxsIG9mIHRoZSBzYWxpZW50IHBvaW50cy4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk3OTAsIk91dHB1dFRva2VucyI6MTE0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjM3OjQ5LjEwNzczOTczM1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0Njg3MTU4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDVkxBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hY3ZsYW5fY29tbW9uX25ld2xpbmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgbWFjdmxhbiBkZXZpY2VzIGJ5IGluaGVyaXRpbmcgbmVlZGVkX2hlYWRyb29tIGFuZCBuZWVkZWRfdGFpbHJvb20gZnJvbSB0aGUgbG93ZXIgZGV2aWNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHBhY2tldCBwcm9jZXNzaW5nLiBUaGUgZW50cnkgcG9pbnQgZm9yIGNyZWF0aW5nIG1hY3ZsYW4gZGV2aWNlcyBpcyBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rLCB3aGljaCBjYWxscyByZWdpc3Rlcl9uZXRkZXZpY2UgYW5kIHRyaWdnZXJzIG1hY3ZsYW5faW5pdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUNWTEFOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWFjdmxhbl9jb21tb25fbmV3bGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBvZiBtYWN2bGFuIGRldmljZXMgYnkgaW5oZXJpdGluZyBuZWVkZWRfaGVhZHJvb20gYW5kIG5lZWRlZF90YWlscm9vbSBmcm9tIHRoZSBsb3dlciBkZXZpY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgcGFja2V0IHByb2Nlc3NpbmcuIFRoZSBlbnRyeSBwb2ludCBmb3IgY3JlYXRpbmcgbWFjdmxhbiBkZXZpY2VzIGlzIG1hY3ZsYW5fY29tbW9uX25ld2xpbmssIHdoaWNoIGNhbGxzIHJlZ2lzdGVyX25ldGRldmljZSBhbmQgdHJpZ2dlcnMgbWFjdmxhbl9pbml0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowsqp5n[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-25 14:14:26 +0000 UTC FinishedAt: 2026-07-25 14:37:50 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "04026c998c24ac47eb76886b9790c5710b603eb4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MACVLAN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "04026c998c24ac47eb76886b9790c5710b603eb4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MACVLAN" ], "series_id": "4e6aa53b-60fb-4287-ab2e-9c0b55133530" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "macvlan_common_newlink" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjM3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQ1ZMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDttYWN2bGFuX2NvbW1vbl9uZXdsaW5rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBvZiBtYWN2bGFuIGRldmljZXMgYnkgaW5oZXJpdGluZyBuZWVkZWRfaGVhZHJvb20gYW5kIG5lZWRlZF90YWlscm9vbSBmcm9tIHRoZSBsb3dlciBkZXZpY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgcGFja2V0IHByb2Nlc3NpbmcuIFRoZSBlbnRyeSBwb2ludCBmb3IgY3JlYXRpbmcgbWFjdmxhbiBkZXZpY2VzIGlzIG1hY3ZsYW5fY29tbW9uX25ld2xpbmssIHdoaWNoIGNhbGxzIHJlZ2lzdGVyX25ldGRldmljZSBhbmQgdHJpZ2dlcnMgbWFjdmxhbl9pbml0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjM3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMzNkOGNjNTdiNDhlMTcyNmJlZTk1MzEzZmRlNmZhYjM0MWYyMjFmMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDE0OjM3OjAwIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21hY3ZsYW4uYyBiL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xuaW5kZXggOWE0YmM5OWRiZjUzYjUuLjcwMjE5MDExZmNiMjQxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbWFjdmxhbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9tYWN2bGFuLmNcbkBAIC05NTQsNiAmIzQzOzk1NCw4IEBAIHN0YXRpYyBpbnQgbWFjdmxhbl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRkZXYtXHUwMDNlbGx0eFx0XHQ9IHRydWU7XG4gXHRuZXRpZl9pbmhlcml0X3Rzb19tYXgoZGV2LCBsb3dlcmRldik7XG4gXHRkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuXHQ9IGxvd2VyZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbjtcbiYjNDM7XHRkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tXHQ9IGxvd2VyZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbTtcbiYjNDM7XHRkZXYtXHUwMDNlbmVlZGVkX3RhaWxyb29tXHQ9IGxvd2VyZGV2LVx1MDAzZW5lZWRlZF90YWlscm9vbTtcbiBcdG1hY3ZsYW5fc2V0X2xvY2tkZXBfY2xhc3MoZGV2KTtcbiBcbiBcdHZsYW4tXHUwMDNlcGNwdV9zdGF0cyA9IG5ldGRldl9hbGxvY19wY3B1X3N0YXRzKHN0cnVjdCB2bGFuX3BjcHVfc3RhdHMpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjM3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUNWTEFOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFjdmxhbl9jb21tb25fbmV3bGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgbWFjdmxhbiBkZXZpY2VzIGJ5IGluaGVyaXRpbmcgbmVlZGVkX2hlYWRyb29tIGFuZCBuZWVkZWRfdGFpbHJvb20gZnJvbSB0aGUgbG93ZXIgZGV2aWNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHBhY2tldCBwcm9jZXNzaW5nLiBUaGUgZW50cnkgcG9pbnQgZm9yIGNyZWF0aW5nIG1hY3ZsYW4gZGV2aWNlcyBpcyBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rLCB3aGljaCBjYWxscyByZWdpc3Rlcl9uZXRkZXZpY2UgYW5kIHRyaWdnZXJzIG1hY3ZsYW5faW5pdC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDMzZDhjYzU3YjQ4ZTE3MjZiZWU5NTMxM2ZkZTZmYWIzNDFmMjIxZjIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEp1bCAyNSAxNDozNzowMCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21hY3ZsYW4uYyBiL2RyaXZlcnMvbmV0L21hY3ZsYW4uYwppbmRleCA5YTRiYzk5ZGJmNTNiNS4uNzAyMTkwMTFmY2IyNDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L21hY3ZsYW4uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9tYWN2bGFuLmMKQEAgLTk1NCw2ICYjNDM7OTU0LDggQEAgc3RhdGljIGludCBtYWN2bGFuX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAlkZXYtJmd0O2xsdHgJCT0gdHJ1ZTsKIAluZXRpZl9pbmhlcml0X3Rzb19tYXgoZGV2LCBsb3dlcmRldik7CiAJZGV2LSZndDtoYXJkX2hlYWRlcl9sZW4JPSBsb3dlcmRldi0mZ3Q7aGFyZF9oZWFkZXJfbGVuOwomIzQzOwlkZXYtJmd0O25lZWRlZF9oZWFkcm9vbQk9IGxvd2VyZGV2LSZndDtuZWVkZWRfaGVhZHJvb207CiYjNDM7CWRldi0mZ3Q7bmVlZGVkX3RhaWxyb29tCT0gbG93ZXJkZXYtJmd0O25lZWRlZF90YWlscm9vbTsKIAltYWN2bGFuX3NldF9sb2NrZGVwX2NsYXNzKGRldik7CiAKIAl2bGFuLSZndDtwY3B1X3N0YXRzID0gbmV0ZGV2X2FsbG9jX3BjcHVfc3RhdHMoc3RydWN0IHZsYW5fcGNwdV9zdGF0cyk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA5OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1hY3ZsYW4gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGFyZ2V0aW5nIGBkcml2ZXJzL25ldC9tYWN2bGFuLmNgLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBpbiB0aGUgYG1hY3ZsYW5faW5pdCgpYCBmdW5jdGlvbiwgd2hlcmUgaXQmIzM5O3MgaW50cm9kdWNpbmcgdGhlc2UgYXNzaWdubWVudHM6IGBkZXYtJmd0O25lZWRlZF9oZWFkcm9vbSA9IGxvd2VyZGV2LSZndDtuZWVkZWRfaGVhZHJvb207YCBhbmQgYGRldi0mZ3Q7bmVlZGVkX3RhaWxyb29tID0gbG93ZXJkZXYtJmd0O25lZWRlZF90YWlscm9vbTtgLiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBtb2RpZmljYXRpb247IGl0JiMzOTtzIGNoYW5naW5nIGhvdyBgbWFjdmxhbl9pbml0YCBiZWhhdmVzLCBzcGVjaWZpY2FsbHkgcmVsYXRpbmcgdG8gaGVhZHJvb20gYW5kIHRhaWxyb29tIHZhbHVlcy4gR2l2ZW4gdGhpcyBkaXJlY3QgYWx0ZXJhdGlvbiBvZiBhIGNvcmUgbmV0d29yayBmdW5jdGlvbiwgSSBuZWVkIHRvIHRob3JvdWdobHkgYXNzZXNzIHRoZSBpbXBsaWNhdGlvbnMuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGRpdmUgaW50byBgbWFjdmxhbi5jYCBpdHNlbGYgYW5kIGFsc28gZG91YmxlLWNoZWNrIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgZGVwZW5kZW5jaWVzIG9mIHRoaXMgcGF0Y2guIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY29kZSByZXZlYWxzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY3ZsYW5faW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tYWN2bGFuLmM9OTMzPXN0YXRpYyB2b2lkIG1hY3ZsYW5fc2V0X2xvY2tkZXBfY2xhc3Moc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtOTM5LVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjk0MDpzdGF0aWMgaW50IG1hY3ZsYW5faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTk0MS17XG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTExOTM9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtYWN2bGFuX25ldGRldl9vcHMgPSB7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTE5NDpcdC5uZG9faW5pdFx0XHQ9IG1hY3ZsYW5faW5pdCxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xMTk1LVx0Lm5kb191bmluaXRcdFx0PSBtYWN2bGFuX3VuaW5pdCxcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTkwMz1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIG1hY3ZsYW5fbm90aWZpZXJfYmxvY2sgX19yZWFkX21vc3RseSA9IHtcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTkwNi1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxOTA3OnN0YXRpYyBpbnQgX19pbml0IG1hY3ZsYW5faW5pdF9tb2R1bGUodm9pZClcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xOTA4LXtcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTkyMj1zdGF0aWMgdm9pZCBfX2V4aXQgbWFjdmxhbl9jbGVhbnVwX21vZHVsZSh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xOTI3LVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE5Mjg6bW9kdWxlX2luaXQobWFjdmxhbl9pbml0X21vZHVsZSk7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTkyOS1tb2R1bGVfZXhpdChtYWN2bGFuX2NsZWFudXBfbW9kdWxlKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODIxCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYWxyZWFkeSBmYW1pbGlhciB3aXRoIG5ldHdvcmtpbmcgYW5kIGtlcm5lbCBpbnRlcm5hbHM6CgoqKkFuYWx5emluZyBgbWFjdmxhbl9pbml0YCBpbiB0aGUgQ29udGV4dCBvZiBOZXRkZXYgT3BlcmF0aW9ucyoqCgpBbHJpZ2h0LCBzbyB0aGUgY29kZSYjMzk7cyBwb2ludGluZyBtZSBhdCBgbWFjdmxhbl9pbml0YC4gSSBpbW1lZGlhdGVseSBzZWUgaXQmIzM5O3MgbWFya2VkIGFzIGBzdGF0aWNgLCB3aGljaCBjb25maXJtcyBpdCYjMzk7cyBpbnRlcm5hbCB0byB0aGUgbWFjdmxhbiBtb2R1bGUuIEFuZCBpdCYjMzk7cyBiZWluZyBhc3NpZ25lZCB0byBgLm5kb19pbml0YCB3aXRoaW4gYG1hY3ZsYW5fbmV0ZGV2X29wc2AuIE9rYXksIHRoYXQgbWFrZXMgc2Vuc2Ug4oCTIGl0JiMzOTtzIHRoZSBpbml0aWFsaXphdGlvbiByb3V0aW5lIGZvciBtYWN2bGFuIG5ldHdvcmsgZGV2aWNlcy4gVGhlIGxvZ2ljYWwgbmV4dCBzdGVwLCBub3csIGlzIHRvIGRlbHZlIGludG8gdGhlIGBtYWN2bGFuX25ldGRldl9vcHNgIHN0cnVjdHVyZSBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBhbmQgd2hlcmUgYG1hY3ZsYW5fbmV0ZGV2X29wc2AgaXMgdXNlZCBiZWNhdXNlIHRoYXQgd2lsbCBkZWZpbmUgdGhlIGNvbnRleHQgYW5kIGhvdyB0aGlzIGBtYWN2bGFuX2luaXRgIGZ1bmN0aW9uIGlzIHV0aWxpemVkIGR1cmluZyB0aGUgZGV2aWNlIGJyaW5nLXVwIHByb2Nlc3MuIEkgbmVlZCB0byB0cmFjZSB0aGUgdXNhZ2Ugb2YgYG1hY3ZsYW5fbmV0ZGV2X29wc2AgdG8gdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgbWFjdmxhbiBkZXZpY2UgY3JlYXRpb24gYW5kIGludGVyYWN0aW9uLiBJdCYjMzk7cyB0aW1lIHRvIGZvbGxvdyB0aGUgYnJlYWRjcnVtYnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFjdmxhbl9uZXRkZXZfb3BzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWFjdmxhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYz0xMTg2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgbWFjdmxhbl9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTE5Mi1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxMTkzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbWFjdmxhbl9uZXRkZXZfb3BzID0ge1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTExOTQtXHQubmRvX2luaXRcdFx0PSBtYWN2bGFuX2luaXQsXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTEyMzA9dm9pZCBtYWN2bGFuX2NvbW1vbl9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xMjM5LVx0ZGV2LVx1MDAzZWNoYW5nZV9wcm90b19kb3duXHQ9IHRydWU7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTI0MDpcdGRldi1cdTAwM2VuZXRkZXZfb3BzXHRcdD0gXHUwMDI2bWFjdmxhbl9uZXRkZXZfb3BzO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTEyNDEtXHRkZXYtXHUwMDNlbmVlZHNfZnJlZV9uZXRkZXZcdD0gdHJ1ZTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDAxCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMzIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgTWFjdmxhbiBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHNvIGBtYWN2bGFuX2NvbW1vbl9zZXR1cGAgaXMgY2xlYXJseSBhIGtleSBmdW5jdGlvbiwgdXNlZCBib3RoIHdpdGhpbiBgbWFjdmxhbi5jYCBpdHNlbGYgYW5kIHBvdGVudGlhbGx5IGV4cG9ydGVkLiBUaGF0IHN1Z2dlc3RzIHRoaXMgaXMgYSBjZW50cmFsIHBpZWNlIG9mIHRoZSBwdXp6bGUuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBmaWd1cmUgb3V0IHdoYXQgdHJpZ2dlcnMgaXRzIHVzZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gcGF0aHdheXMgdGhhdCBsZWFkIHRvIGBtYWN2bGFuX2NvbW1vbl9zZXR1cGAgYmVpbmcgY2FsbGVkLiBXaGF0IGtlcm5lbCBvcHRpb25zLCBtb2R1bGUgcGFyYW1ldGVycywgb3IgbmV0d29yayBpbnRlcmZhY2Ugc2V0dGluZ3MgYXJlIGludm9sdmVkPyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgY29uZmlndXJhdGlvbiBrbm9icyB0aGF0ICplbmFibGUqIG1hY3ZsYW4gZnVuY3Rpb25hbGl0eSBpbiB0aGUgZmlyc3QgcGxhY2UuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGVzLCBtYXliZSBzb21lIGRldmljZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gY29kZSwgYW5kIGRlZmluaXRlbHkgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGNyZWF0aW9uIGxvZ2ljLiBUaGUgZ29hbCBpcyB0byBlc3RhYmxpc2ggdGhlIHByZWNvbmRpdGlvbnMgZm9yIGBtYWN2bGFuX2NvbW1vbl9zZXR1cGAgdG8gZXhlY3V0ZS4gVGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyBtYWN2bGFuIGlzIGluaXRpYWxpemVkIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgaG93IGRpZmZlcmVudCBjb25maWd1cmF0aW9ucyBtaWdodCBpbmZsdWVuY2UgaXRzIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBNQUNWTEFOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9MTYzPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC90ZWFtL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWctMTY0LVxuZHJpdmVycy9uZXQvS2NvbmZpZzoxNjU6Y29uZmlnIE1BQ1ZMQU5cbmRyaXZlcnMvbmV0L0tjb25maWctMTY2LVx0dHJpc3RhdGUgXCYjMzQ7TUFDLVZMQU4gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM3NjMKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNQUNWTEFOIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiB3ZSYjMzk7cmUgbG9va2luZyBhdCBpcyBgTUFDVkxBTmAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBSaWdodCwgdGhlIGZ1bmN0aW9uIGBtYWN2bGFuX2luaXRgIGlzIHN0YXRpYy4gVGhhdCBtZWFucyB0aGUgY29tcGlsZXIgKmNvdWxkKiBpbmxpbmUgaXQsIHdoaWNoIHdvdWxkIG1ha2UgdHJhY2luZyBpdHMgZXhlY3V0aW9uIGEgcGFpbi4gSG93ZXZlciwgaXQmIzM5O3MgdXNlZCBhcyBhIGZ1bmN0aW9uIHBvaW50ZXIgYXNzaWduZWQgdG8gYC5uZG9faW5pdGAuIFNpbmNlIGl0JiMzOTtzIGJlaW5nIHVzZWQgdGhhdCB3YXksIHRoZSBjb21waWxlciAqd29uJiMzOTt0KiBpbmxpbmUgaXQsIHdoaWNoIGlzIGdvb2QuIEJ1dCB0aGUgZmFjdCB0aGF0IGl0JiMzOTtzIHN0YXRpYyBzdGlsbCBsaW1pdHMgb3VyIGFiaWxpdHkgdG8gcmVmZXJlbmNlIGl0IGRpcmVjdGx5LiBIbW0sIHNvIGlzIHRoZXJlIGFuIGV4cG9ydGVkIGZ1bmN0aW9uIHRoYXQgdHJpZ2dlcnMgaXQ/IEFoLCB5ZXMsIGByZWdpc3Rlcl9uZXRkZXZpY2VgIHdpbGwgZGVmaW5pdGVseSBjYWxsIGAubmRvX2luaXRgLCB3aGljaCBwb2ludHMgdG8gb3VyIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIGEgc29saWQgc3RhcnRpbmcgcG9pbnQuIE5vdywgdG8gdHJhY2sgZG93biB0aGUgZW50cnkgcG9pbnQgZm9yIGNyZWF0aW5nIGEgbmV3IE1BQ1ZMQU4gZGV2aWNlLi4uIEkmIzM5O20gcHJldHR5IHN1cmUgdGhhdCYjMzk7cyBgbWFjdmxhbl9uZXdsaW5rYC4gSSBuZWVkIHRvIHN0YXJ0IGRpZ2dpbmcgdGhyb3VnaCB0aGF0IGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY3ZsYW5fbmV3bGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tYWN2bGFuLmM9MTU5Nj1FWFBPUlRfU1lNQk9MX0dQTChtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKTtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNTk3LVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE1OTg6c3RhdGljIGludCBtYWN2bGFuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNTk5LVx0XHRcdCAgIHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE4MTM9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIG1hY3ZsYW5fbGlua19vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE4MTUtXHQuc2V0dXBcdFx0PSBtYWN2bGFuX3NldHVwLFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE4MTY6XHQubmV3bGlua1x0PSBtYWN2bGFuX25ld2xpbmssXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTgxNy1cdC5kZWxsaW5rXHQ9IG1hY3ZsYW5fZGVsbGluayxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM2MwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkNvbnNpZGVyaW5nIGBtYWN2bGFuX25ld2xpbmtgIGFuZCBSZWxhdGVkIEZ1bmN0aW9ucyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIG5ldHdvcmtpbmcgY29kZSBhbmQgaW1tZWRpYXRlbHkgSSBzZWUgYSByZWQgZmxhZzogYG1hY3ZsYW5fbmV3bGlua2AgaXMgc3RhdGljLCB0b28uIFRoYXQganVzdCBtYWtlcyBtZSBwYXVzZSwgYXMgaXQgb2Z0ZW4gbWVhbnMgbGltaXRlZCByZXVzYWJpbGl0eSBhbmQgcG90ZW50aWFsIGNvbXBsaWNhdGlvbnMgaW4gbW9yZSBjb21wbGV4IHNjZW5hcmlvcy4gSSYjMzk7bSB3b25kZXJpbmcgaWYgdGhpcyB3aWxsIGltcGFjdCBtb2R1bGFyaXR5LCB0ZXN0aW5nLCBvciBwb3RlbnRpYWwgaW50ZWdyYXRpb24gd2l0aCBvdGhlciBuZXR3b3JrIG1hbmFnZW1lbnQgdG9vbHMgSSBtaWdodCBiZSB3b3JraW5nIHdpdGguCgpUaGF0IGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rLCAmIzM0O0htbSwgd2hhdCBhYm91dCBgbWFjdmxhbl9jb21tb25fbmV3bGlua2A/IElzIHRoYXQgc3RhdGljIGFzIHdlbGw/JiMzNDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGFyY2hpdGVjdHVyZSBiZXR0ZXIgdG8gc2VlIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBmaXQsIGFuZCBob3cgdGhleSByZWxhdGUgdG8gdGhlIG92ZXJhbGwgTWFjdmxhbiBpbXBsZW1lbnRhdGlvbiwgYW5kIGhvdyBJIG1pZ2h0IHVzZSBpdCBvciBleHRlbmQgaXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaW4gdGhlcmUsIGFuZCBob3cgaXQgaXMgdXNlZC4gSSBhbSBnb2luZyB0byBoYXZlIHRvIGRpdmUgZGVlcGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttYWN2bGFuX2NvbW1vbl9uZXdsaW5rJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWFjdmxhbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYz0xNDA4PXN0YXRpYyBpbnQgbWFjdmxhbl9jaGFuZ2VsaW5rX3NvdXJjZXMoc3RydWN0IG1hY3ZsYW5fZGV2ICp2bGFuLCB1MzIgbW9kZSxcbi0tXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTQ2My1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNDY0OmludCBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTQ2NS1cdFx0XHQgICBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNTk1LX1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNTk2OkVYUE9SVF9TWU1CT0xfR1BMKG1hY3ZsYW5fY29tbW9uX25ld2xpbmspO1xuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE1OTctXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTU5OD1zdGF0aWMgaW50IG1hY3ZsYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjAxLXtcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNjAyOlx0cmV0dXJuIG1hY3ZsYW5fY29tbW9uX25ld2xpbmsoZGV2LCBwYXJhbXMsIGV4dGFjayk7XG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTYwMy19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjM3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5MzUKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBNYWN2bGFuIERyaXZlciYjMzk7cyBMaW5rIENyZWF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBrZXkgZnVuY3Rpb24gd2UmIzM5O3JlIGxvb2tpbmcgYXQgaXMgYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgLCBhbmQgaXQmIzM5O3MgZXhwb3J0ZWQsIHdoaWNoIGlzIGdvb2Qg4oCTIG1ha2VzIGl0IGEgY2xlYXIgdGFyZ2V0LiBXZSBjb3VsZCBhbHNvIGNvbnNpZGVyIGBtYWN2bGFuX2luaXRgLCBidXQgdGhhdCYjMzk7cyBhIGZ1bmN0aW9uIHBvaW50ZXIsIGFuZCBldmVuIHRob3VnaCBpdCYjMzk7cyBzdGF0aWMgYW5kIG5vdCBpbmxpbmVkLCBgbWFjdmxhbl9jb21tb25fbmV3bGlua2Agc2VlbXMgbGlrZSBhIG1vcmUgZGlyZWN0IGVudHJ5IHBvaW50IGZvciBmdXp6aW5nIHdpdGggc29tZXRoaW5nIGxpa2UgU3l6a2FsbGVyLiBIYW5nIG9uLi4uIGBtYWN2bGFuX2luaXRgIGlzIGNhbGxlZCBieSBgcmVnaXN0ZXJfbmV0ZGV2aWNlYCwgd2hpY2ggKml0c2VsZiogaXMgY2FsbGVkIGJ5IGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYC4gVGhhdCBjb25uZWN0aW9uIGlzIGltcG9ydGFudC4gUmlnaHQsIHRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCBpbiBgZHJpdmVycy9uZXQvbWFjdmxhbi5jYCBhbmQgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3ZsYW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE0NjQsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE0NjQ6XHRpbnQgbWFjdmxhbl9jb21tb25fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuMTQ2NTpcdFx0XHRcdCAgIHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXG4xNDY2Olx0XHRcdFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuMTQ2NzpcdHtcbjE0Njg6XHRcdHN0cnVjdCBuZXQgKmxpbmtfbmV0ID0gcnRubF9uZXdsaW5rX2xpbmtfbmV0KHBhcmFtcyk7XG4xNDY5Olx0XHRzdHJ1Y3QgbWFjdmxhbl9kZXYgKnZsYW4gPSBuZXRkZXZfcHJpdihkZXYpO1xuMTQ3MDpcdFx0c3RydWN0IG5sYXR0ciAqKmRhdGEgPSBwYXJhbXMtXHUwMDNlZGF0YTtcbjE0NzE6XHRcdHN0cnVjdCBubGF0dHIgKip0YiA9IHBhcmFtcy1cdTAwM2V0YjtcbjE0NzI6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpsb3dlcmRldjtcbjE0NzM6XHRcdHN0cnVjdCBtYWN2bGFuX3BvcnQgKnBvcnQ7XG4xNDc0Olx0XHRib29sIGNyZWF0ZSA9IGZhbHNlO1xuMTQ3NTpcdFx0aW50IG1hY21vZGU7XG4xNDc2Olx0XHRpbnQgZXJyO1xuMTQ3NzpcdFxuMTQ3ODpcdFx0aWYgKCF0YltJRkxBX0xJTktdKVxuMTQ3OTpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjE0ODA6XHRcbjE0ODE6XHRcdGxvd2VyZGV2ID0gX19kZXZfZ2V0X2J5X2luZGV4KGxpbmtfbmV0LCBubGFfZ2V0X3UzMih0YltJRkxBX0xJTktdKSk7XG4xNDgyOlx0XHRpZiAobG93ZXJkZXYgPT0gTlVMTClcbjE0ODM6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4xNDg0Olx0XG4xNDg1Olx0XHQvKiBXaGVuIGNyZWF0aW5nIG1hY3ZsYW5zIG9yIG1hY3Z0YXBzIG9uIHRvcCBvZiBvdGhlciBtYWN2bGFucyAtIHVzZVxuMTQ4NjpcdFx0ICogdGhlIHJlYWwgZGV2aWNlIGFzIHRoZSBsb3dlcmRldi5cbjE0ODc6XHRcdCAqL1xuMTQ4ODpcdFx0aWYgKG5ldGlmX2lzX21hY3ZsYW4obG93ZXJkZXYpKVxuMTQ4OTpcdFx0XHRsb3dlcmRldiA9IG1hY3ZsYW5fZGV2X3JlYWxfZGV2KGxvd2VyZGV2KTtcbjE0OTA6XHRcbjE0OTE6XHRcdGlmICghdGJbSUZMQV9NVFVdKVxuMTQ5MjpcdFx0XHRkZXYtXHUwMDNlbXR1ID0gbG93ZXJkZXYtXHUwMDNlbXR1O1xuMTQ5MzpcdFx0ZWxzZSBpZiAoZGV2LVx1MDAzZW10dSBcdTAwM2UgbG93ZXJkZXYtXHUwMDNlbXR1KVxuMTQ5NDpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbjE0OTU6XHRcbjE0OTY6XHRcdC8qIE1UVSByYW5nZTogNjggLSBsb3dlcmRldi1cdTAwM2VtYXhfbXR1ICovXG4xNDk3Olx0XHRkZXYtXHUwMDNlbWluX210dSA9IEVUSF9NSU5fTVRVO1xuMTQ5ODpcdFx0ZGV2LVx1MDAzZW1heF9tdHUgPSBsb3dlcmRldi1cdTAwM2VtYXhfbXR1O1xuMTQ5OTpcdFxuMTUwMDpcdFx0aWYgKCF0YltJRkxBX0FERFJFU1NdKVxuMTUwMTpcdFx0XHRldGhfaHdfYWRkcl9yYW5kb20oZGV2KTtcbjE1MDI6XHRcbjE1MDM6XHRcdGlmICghbmV0aWZfaXNfbWFjdmxhbl9wb3J0KGxvd2VyZGV2KSkge1xuMTUwNDpcdFx0XHRlcnIgPSBtYWN2bGFuX3BvcnRfY3JlYXRlKGxvd2VyZGV2KTtcbjE1MDU6XHRcdFx0aWYgKGVyciBcdTAwM2MgMClcbjE1MDY6XHRcdFx0XHRyZXR1cm4gZXJyO1xuMTUwNzpcdFx0XHRjcmVhdGUgPSB0cnVlO1xuMTUwODpcdFx0fVxuMTUwOTpcdFx0cG9ydCA9IG1hY3ZsYW5fcG9ydF9nZXRfcnRubChsb3dlcmRldik7XG4xNTEwOlx0XG4xNTExOlx0XHQvKiBPbmx5IDEgbWFjdmxhbiBkZXZpY2UgY2FuIGJlIGNyZWF0ZWQgaW4gcGFzc3RocnUgbW9kZSAqL1xuMTUxMjpcdFx0aWYgKG1hY3ZsYW5fcGFzc3RocnUocG9ydCkpIHtcbjE1MTM6XHRcdFx0LyogVGhlIG1hY3ZsYW4gcG9ydCBtdXN0IGJlIG5vdCBjcmVhdGVkIHRoaXMgdGltZSxcbjE1MTQ6XHRcdFx0ICogc3RpbGwgZ290byBkZXN0cm95X21hY3ZsYW5fcG9ydCBmb3IgcmVhZGFiaWxpdHkuXG4xNTE1Olx0XHRcdCAqL1xuMTUxNjpcdFx0XHRlcnIgPSAtRUlOVkFMO1xuMTUxNzpcdFx0XHRnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0O1xuMTUxODpcdFx0fVxuMTUxOTpcdFxuMTUyMDpcdFx0dmxhbi1cdTAwM2Vsb3dlcmRldiA9IGxvd2VyZGV2O1xuMTUyMTpcdFx0dmxhbi1cdTAwM2VkZXYgICAgICA9IGRldjtcbjE1MjI6XHRcdHZsYW4tXHUwMDNlcG9ydCAgICAgPSBwb3J0O1xuMTUyMzpcdFx0dmxhbi1cdTAwM2VzZXRfZmVhdHVyZXMgPSBNQUNWTEFOX0ZFQVRVUkVTO1xuMTUyNDpcdFxuMTUyNTpcdFx0dmxhbi1cdTAwM2Vtb2RlICAgICA9IE1BQ1ZMQU5fTU9ERV9WRVBBO1xuMTUyNjpcdFx0aWYgKGRhdGEgXHUwMDI2XHUwMDI2IGRhdGFbSUZMQV9NQUNWTEFOX01PREVdKVxuMTUyNzpcdFx0XHR2bGFuLVx1MDAzZW1vZGUgPSBubGFfZ2V0X3UzMihkYXRhW0lGTEFfTUFDVkxBTl9NT0RFXSk7XG4xNTI4Olx0XG4xNTI5Olx0XHRpZiAoZGF0YSBcdTAwMjZcdTAwMjYgZGF0YVtJRkxBX01BQ1ZMQU5fRkxBR1NdKVxuMTUzMDpcdFx0XHR2bGFuLVx1MDAzZWZsYWdzID0gbmxhX2dldF91MTYoZGF0YVtJRkxBX01BQ1ZMQU5fRkxBR1NdKTtcbjE1MzE6XHRcbjE1MzI6XHRcdGlmICh2bGFuLVx1MDAzZW1vZGUgPT0gTUFDVkxBTl9NT0RFX1BBU1NUSFJVKSB7XG4xNTMzOlx0XHRcdGlmIChwb3J0LVx1MDAzZWNvdW50KSB7XG4xNTM0Olx0XHRcdFx0ZXJyID0gLUVJTlZBTDtcbjE1MzU6XHRcdFx0XHRnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0O1xuMTUzNjpcdFx0XHR9XG4xNTM3Olx0XHRcdG1hY3ZsYW5fc2V0X3Bhc3N0aHJ1KHBvcnQpO1xuMTUzODpcdFx0XHRldGhfaHdfYWRkcl9pbmhlcml0KGRldiwgbG93ZXJkZXYpO1xuMTUzOTpcdFx0fVxuMTU0MDpcdFxuMTU0MTpcdFx0aWYgKGRhdGEgXHUwMDI2XHUwMDI2IGRhdGFbSUZMQV9NQUNWTEFOX01BQ0FERFJfTU9ERV0pIHtcbjE1NDI6XHRcdFx0aWYgKHZsYW4tXHUwMDNlbW9kZSAhPSBNQUNWTEFOX01PREVfU09VUkNFKSB7XG4xNTQzOlx0XHRcdFx0ZXJyID0gLUVJTlZBTDtcbjE1NDQ6XHRcdFx0XHRnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0O1xuMTU0NTpcdFx0XHR9XG4xNTQ2Olx0XHRcdG1hY21vZGUgPSBubGFfZ2V0X3UzMihkYXRhW0lGTEFfTUFDVkxBTl9NQUNBRERSX01PREVdKTtcbjE1NDc6XHRcdFx0ZXJyID0gbWFjdmxhbl9jaGFuZ2VsaW5rX3NvdXJjZXModmxhbiwgbWFjbW9kZSwgZGF0YSk7XG4xNTQ4Olx0XHRcdGlmIChlcnIpXG4xNTQ5Olx0XHRcdFx0Z290byBkZXN0cm95X21hY3ZsYW5fcG9ydDtcbjE1NTA6XHRcdH1cbjE1NTE6XHRcbjE1NTI6XHRcdHZsYW4tXHUwMDNlYmNfcXVldWVfbGVuX3JlcSA9IE1BQ1ZMQU5fREVGQVVMVF9CQ19RVUVVRV9MRU47XG4xNTUzOlx0XHRpZiAoZGF0YSBcdTAwMjZcdTAwMjYgZGF0YVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSlcbjE1NTQ6XHRcdFx0dmxhbi1cdTAwM2ViY19xdWV1ZV9sZW5fcmVxID0gbmxhX2dldF91MzIoZGF0YVtJRkxBX01BQ1ZMQU5fQkNfUVVFVUVfTEVOXSk7XG4xNTU1Olx0XG4xNTU2Olx0XHRpZiAoZGF0YSBcdTAwMjZcdTAwMjYgZGF0YVtJRkxBX01BQ1ZMQU5fQkNfQ1VUT0ZGXSlcbjE1NTc6XHRcdFx0dXBkYXRlX3BvcnRfYmNfY3V0b2ZmKFxuMTU1ODpcdFx0XHRcdHZsYW4sIG5sYV9nZXRfczMyKGRhdGFbSUZMQV9NQUNWTEFOX0JDX0NVVE9GRl0pKTtcbjE1NTk6XHRcbjE1NjA6XHRcdGVyciA9IHJlZ2lzdGVyX25ldGRldmljZShkZXYpO1xuMTU2MTpcdFx0aWYgKGVyciBcdTAwM2MgMClcbjE1NjI6XHRcdFx0Z290byBkZXN0cm95X21hY3ZsYW5fcG9ydDtcbjE1NjM6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjk4OAoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDExNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1hY3ZsYW4gRGV2aWNlIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIGByZWdpc3Rlcl9uZXRkZXZpY2VgIGlzIGJlaW5nIGNhbGxlZCBoZXJlLCB3aGljaCBpcyBzdGFuZGFyZCBwcm9jZWR1cmUuIFRoZSBjb3JlIG9mIHRoaXMgY2hhbmdlIHNlZW1zIHRvIGJlIHRoZSBhZGRpdGlvbiBvZiBgZGV2LSZndDtuZWVkZWRfaGVhZHJvb20gPSBsb3dlcmRldi0mZ3Q7bmVlZGVkX2hlYWRyb29tO2AgYW5kIGBkZXYtJmd0O25lZWRlZF90YWlscm9vbSA9IGxvd2VyZGV2LSZndDtuZWVkZWRfdGFpbHJvb207YCB3aXRoaW4gYG1hY3ZsYW5faW5pdGAuIEkmIzM5O20gc2VlaW5nIHRoaXMgaW1tZWRpYXRlbHkgYXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBtb2RpZmljYXRpb24gdG8gaG93IHRoZSBtYWN2bGFuIGRldmljZSBoYW5kbGVzIGhlYWRyb29tIGFuZCB0YWlscm9vbS4gVGhpcyBkaXJlY3RseSBpbXBhY3RzIHBhY2tldCB0cmFuc21pc3Npb24gYW5kIHJlY2VwdGlvbiwgaW5mbHVlbmNpbmcgaG93IHRoZSBkZXZpY2UgaW50ZXJhY3RzIGF0IHRoZSBkYXRhIGxpbmsgbGF5ZXIuCgpUaGUgY3J1Y2lhbCBxdWVzdGlvbiBub3cgYmVjb21lczogYXJlIHRoZXJlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIHRoYXQgbmVlZCB0byBiZSBjb25zaWRlcmVkIGJlY2F1c2Ugb2YgdGhpcyBhbHRlcmF0aW9uPyBEb2VzIHRoaXMgaW50cm9kdWNlIGFueSBkZXBlbmRlbmNpZXMgb24gc3BlY2lmaWMgc2V0dGluZ3MsIG9yIG1pZ2h0IHRoaXMgY2hhbmdlIGhhdmUgY29tcGF0aWJpbGl0eSBpbXBsaWNhdGlvbnMgZm9yIGV4aXN0aW5nIHNldHVwcz8gR2l2ZW4gdGhhdCBgTUFDVkxBTmAgaXMgdGhlIHJlbGV2YW50IGNvbmZpZywgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXNuJiMzOTt0IGNvbnRpbmdlbnQgb24gc29tZSBvdGhlciBmbGFnIG9yIGZlYXR1cmUuIExldCBtZSBsb29rIGludG8gdGhlIGBNQUNWTEFOYCBkZXBlbmRlbmNpZXMgdG8gYmUgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE1BQ1ZMQU4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9MTYzPXNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC90ZWFtL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbmV0L0tjb25maWctMTY0LVxuZHJpdmVycy9uZXQvS2NvbmZpZzoxNjU6Y29uZmlnIE1BQ1ZMQU5cbmRyaXZlcnMvbmV0L0tjb25maWctMTY2LVx0dHJpc3RhdGUgXCYjMzQ7TUFDLVZMQU4gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDM0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgYE1BQ1ZMQU5gIGNvbmZpZ3VyYXRpb24gd2l0aGluIGBkcml2ZXJzL25ldC9LY29uZmlnYCwgdGhpbmtpbmcgbGlrZSBhIHNlYXNvbmVkIG5ldHdvcmsgZW5naW5lZXI6CgoqKkRpdmluZyBpbnRvIHRoZSBNQUNWTEFOIENvbmZpZ3VyYXRpb24qKgoKT2theSwgbGV0JiMzOTtzIHB1bGwgdXAgdGhlIGBLY29uZmlnYCBmaWxlIHdpdGhpbiB0aGUgbmV0d29ya2luZyBkcml2ZXJzLiBUaW1lIHRvIHNlZSB3aGF0IHRoZSBrZXJuZWwmIzM5O3MgZ290IG9uIGBNQUNWTEFOYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoaXMgZmVhdHVyZSBpcyBkZWZpbmVkLCBjb25maWd1cmVkLCBhbmQsIGNyaXRpY2FsbHksIGhvdyBpdCBpbnRlZ3JhdGVzIHdpdGggZXZlcnl0aGluZyBlbHNlIGluIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBkZXBlbmRlbmNpZXMg4oCTIHdoYXQgb3RoZXIgb3B0aW9ucyBuZWVkIHRvIGJlIGVuYWJsZWQgYmVmb3JlIGBNQUNWTEFOYCBpcyBldmVuIGNvbnNpZGVyZWQ/IEFyZSB0aGVyZSBhbnkgYXJjaGl0ZWN0dXJhbCBsaW1pdGF0aW9ucyBJIHNob3VsZCBiZSBhd2FyZSBvZiwgbGlrZSBzcGVjaWZpYyBoYXJkd2FyZSByZXF1aXJlbWVudHMgb3IgZHJpdmVyIGRlcGVuZGVuY2llcz8KCkkmIzM5O20gYWxzbyBjdXJpb3VzIGFib3V0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhlbXNlbHZlcy4gQXJlIHRoZXJlIGdyYW51bGFyIGNvbnRyb2xzIGZvciB0aGluZ3MgbGlrZSBicmlkZ2UgcG9ydCBpc29sYXRpb24sIHByb21pc2N1b3VzIG1vZGUgaGFuZGxpbmcsIG9yIHNlY3VyaXR5IGZlYXR1cmVzPyBVbmRlcnN0YW5kaW5nIHRoZXNlIGtub2JzIGlzIGVzc2VudGlhbCBmb3IgZmluZS10dW5pbmcgcGVyZm9ybWFuY2UgYW5kIGVuc3VyaW5nIGNvcnJlY3QgYmVoYXZpb3IgaW4gZGlmZmVyZW50IGRlcGxveW1lbnQgc2NlbmFyaW9zLiBBcmUgdGhlcmUgYW55IGRlZmF1bHQgdmFsdWVzIHRoYXQgSSBzaG91bGQgYmUgbWluZGZ1bCBvZiwgYmVjYXVzZSB0aG9zZSBjYW4gaW5mbHVlbmNlIGJlaGF2aW9yIG1vcmUgdGhhbiB0aGUgb2J2aW91cyBzZXR0aW5ncz8gSSYjMzk7bSBnb2luZyB0byBsb29rIGZvciBhbnkgaGlkZGVuIGdvdGNoYXMsIHRoaW5ncyB0aGF0IG1pZ2h0IHRyaXAgbWUgdXAgd2hlbiBzZXR0aW5nIGl0IHVwIHdpdGggc3BlY2lmaWMgaGFyZHdhcmUgb3IgZGlmZmVyZW50IG5ldHdvcmsgdG9wb2xvZ2llcy4KQmFzaWNhbGx5LCBJIG5lZWQgdG8ga25vdyB0aGUgZW50aXJlIGxhbmRzY2FwZSBiZWZvcmUgSSBzdGFydC4gSSB3YW50IHRvIGJ1aWxkIGEgcGVyZmVjdCBtZW50YWwgbWFwLCBhbmQgdGhpcyBgS2NvbmZpZ2AgZmlsZSBpcyB0aGUga2V5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDE2NTpcdGNvbmZpZyBNQUNWTEFOXG4gMTY2Olx0XHR0cmlzdGF0ZSBcJiMzNDtNQUMtVkxBTiBzdXBwb3J0XCYjMzQ7XG4gMTY3Olx0XHRoZWxwXG4gMTY4Olx0XHQgIFRoaXMgYWxsb3dzIG9uZSB0byBjcmVhdGUgdmlydHVhbCBpbnRlcmZhY2VzIHRoYXQgbWFwIHBhY2tldHMgdG9cbiAxNjk6XHRcdCAgb3IgZnJvbSBzcGVjaWZpYyBNQUMgYWRkcmVzc2VzIHRvIGEgcGFydGljdWxhciBpbnRlcmZhY2UuXG4gMTcwOlx0XG4gMTcxOlx0XHQgIE1hY3ZsYW4gZGV2aWNlcyBjYW4gYmUgYWRkZWQgdXNpbmcgdGhlIFwmIzM0O2lwXCYjMzQ7IGNvbW1hbmQgZnJvbSB0aGVcbiAxNzI6XHRcdCAgaXByb3V0ZTIgcGFja2FnZSBzdGFydGluZyB3aXRoIHRoZSBpcHJvdXRlMi0yLjYuMjMgcmVsZWFzZTpcbiAxNzM6XHRcbiAxNzQ6XHRcdCAgXCYjMzQ7aXAgbGluayBhZGQgbGluayBcdTAwM2NyZWFsIGRldlx1MDAzZSBbIGFkZHJlc3MgTUFDIF0gWyBOQU1FIF0gdHlwZSBtYWN2bGFuXCYjMzQ7XG4gMTc1Olx0XG4gMTc2Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAxNzc6XHRcdCAgd2lsbCBiZSBjYWxsZWQgbWFjdmxhbi5cbiAxNzg6XHRcbiAxNzk6XHRjb25maWcgTUFDVlRBUFxuIDE4MDpcdFx0dHJpc3RhdGUgXCYjMzQ7TUFDLVZMQU4gYmFzZWQgdGFwIGRyaXZlclwmIzM0O1xuIDE4MTpcdFx0ZGVwZW5kcyBvbiBNQUNWTEFOXG4gMTgyOlx0XHRkZXBlbmRzIG9uIElORVRcbiAxODM6XHRcdHNlbGVjdCBUQVBcbiAxODQ6XHRcdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODA3NgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgTUFDVkxBTiBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyB0aGUgYmVhdXR5IG9mIGBNQUNWTEFOYCBpcyB0aGF0IGl0JiMzOTtzIHN1cHBvc2VkIHRvIGJlIGxhcmdlbHkgc2VsZi1jb250YWluZWQsIG1lYW5pbmcgbWluaW1hbCBkZXBlbmRlbmNpZXMuIFJpZ2h0LCBzbyBJIHdhbnQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uIG9uIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCwgdGhhdCYjMzk7cyBnb2luZyB0byBiZSB0aGUgaGVhcnQgb2YgY3JlYXRpbmcgbmV3IGludGVyZmFjZXMuIEJ1dCB3YWl0IGEgbWludXRlLCBgbWFjdmxhbl9pbml0YCBpcyBjYWxsZWQgYXMgcGFydCBvZiB0aGUgYHJlZ2lzdGVyX25ldGRldmljZWAgc2VxdWVuY2UuIFRoYXQmIzM5O3MgYSBiaXQgZnVydGhlciB1cHN0cmVhbSB0aGFuIEkgaW5pdGlhbGx5IHRob3VnaHQuIEl0IGFsd2F5cyBoZWxwcyB0byBzZWUgd2hlcmUgdGhpcyBzdHVmZiBnZXRzIGludGVncmF0ZWQuIE5vdywgYXJlIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbnMgdGhhdCBhcmUgdG91Y2hlZCBieSB0aGlzIG1lY2hhbmlzbSwgYW55IHRoYXQgbWlnaHQgYmUgYWZmZWN0ZWQgYnkgY2hhbmdlcyBpbiBob3cgaXQmIzM5O3MgaW5pdGlhbGl6ZWQ/IEdpdmVuIHRoZSBwYXRjaCBhbHRlcnMgYG1hY3ZsYW5faW5pdGAsIEkgc2hvdWxkIHByb2JhYmx5IGdvIGJhY2sgYW5kIHRha2UgYW5vdGhlciBsb29rIGF0IHRoYXQgc3BlY2lmaWMgZnVuY3Rpb24gdG8gc2VlICpleGFjdGx5KiB3aGF0JiMzOTtzIGdvaW5nIG9uIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTQ6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tYWN2bGFuLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA5NDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDk0MDpcdHN0YXRpYyBpbnQgbWFjdmxhbl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gOTQxOlx0e1xuIDk0MjpcdFx0c3RydWN0IG1hY3ZsYW5fZGV2ICp2bGFuID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiA5NDM6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpsb3dlcmRldiA9IHZsYW4tXHUwMDNlbG93ZXJkZXY7XG4gOTQ0Olx0XHRzdHJ1Y3QgbWFjdmxhbl9wb3J0ICpwb3J0ID0gdmxhbi1cdTAwM2Vwb3J0O1xuIDk0NTpcdFxuIDk0NjpcdFx0ZGV2LVx1MDAzZXN0YXRlXHRcdD0gKGRldi1cdTAwM2VzdGF0ZSBcdTAwMjYgfk1BQ1ZMQU5fU1RBVEVfTUFTSykgfFxuIDk0NzpcdFx0XHRcdFx0ICAobG93ZXJkZXYtXHUwMDNlc3RhdGUgXHUwMDI2IE1BQ1ZMQU5fU1RBVEVfTUFTSyk7XG4gOTQ4Olx0XHRkZXYtXHUwMDNlZmVhdHVyZXMgXHRcdD0gbG93ZXJkZXYtXHUwMDNlZmVhdHVyZXMgXHUwMDI2IE1BQ1ZMQU5fRkVBVFVSRVM7XG4gOTQ5Olx0XHRkZXYtXHUwMDNlZmVhdHVyZXNcdFx0fD0gQUxXQVlTX09OX0ZFQVRVUkVTO1xuIDk1MDpcdFx0ZGV2LVx1MDAzZWh3X2ZlYXR1cmVzXHR8PSBORVRJRl9GX0xSTztcbiA5NTE6XHRcdGRldi1cdTAwM2V2bGFuX2ZlYXR1cmVzXHQ9IGxvd2VyZGV2LVx1MDAzZXZsYW5fZmVhdHVyZXMgXHUwMDI2IE1BQ1ZMQU5fRkVBVFVSRVM7XG4gOTUyOlx0XHRkZXYtXHUwMDNldmxhbl9mZWF0dXJlc1x0fD0gQUxXQVlTX09OX09GRkxPQURTO1xuIDk1MzpcdFx0ZGV2LVx1MDAzZWh3X2VuY19mZWF0dXJlcyAgICB8PSBkZXYtXHUwMDNlZmVhdHVyZXM7XG4gOTU0Olx0XHRkZXYtXHUwMDNlbGx0eFx0XHQ9IHRydWU7XG4gOTU1Olx0XHRuZXRpZl9pbmhlcml0X3Rzb19tYXgoZGV2LCBsb3dlcmRldik7XG4gOTU2Olx0XHRkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuXHQ9IGxvd2VyZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbjtcbiA5NTc6XHRcdGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb21cdD0gbG93ZXJkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tO1xuIDk1ODpcdFx0ZGV2LVx1MDAzZW5lZWRlZF90YWlscm9vbVx0PSBsb3dlcmRldi1cdTAwM2VuZWVkZWRfdGFpbHJvb207XG4gOTU5Olx0XHRtYWN2bGFuX3NldF9sb2NrZGVwX2NsYXNzKGRldik7XG4gOTYwOlx0XG4gOTYxOlx0XHR2bGFuLVx1MDAzZXBjcHVfc3RhdHMgPSBuZXRkZXZfYWxsb2NfcGNwdV9zdGF0cyhzdHJ1Y3Qgdmxhbl9wY3B1X3N0YXRzKTtcbiA5NjI6XHRcdGlmICghdmxhbi1cdTAwM2VwY3B1X3N0YXRzKVxuIDk2MzpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiA5NjQ6XHRcbiA5NjU6XHRcdHBvcnQtXHUwMDNlY291bnQgJiM0Mzs9IDE7XG4gOTY2Olx0XG4gOTY3Olx0XHQvKiBHZXQgbWFjdmxhbiYjMzk7cyByZWZlcmVuY2UgdG8gbG93ZXJkZXYgKi9cbiA5Njg6XHRcdG5ldGRldl9ob2xkKGxvd2VyZGV2LCBcdTAwMjZ2bGFuLVx1MDAzZWRldl90cmFja2VyLCBHRlBfS0VSTkVMKTtcbiA5Njk6XHRcbiA5NzA6XHRcdHJldHVybiAwO1xuIDk3MTpcdH1cbiA5NzI6XHRcbiA5NzM6XHRzdGF0aWMgdm9pZCBtYWN2bGFuX3VuaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIDk3NDpcdHtcbiA5NzU6XHRcdHN0cnVjdCBtYWN2bGFuX2RldiAqdmxhbiA9IG5ldGRldl9wcml2KGRldik7XG4gOTc2Olx0XHRzdHJ1Y3QgbWFjdmxhbl9wb3J0ICpwb3J0ID0gdmxhbi1cdTAwM2Vwb3J0O1xuIDk3NzpcdFxuIDk3ODpcdFx0ZnJlZV9wZXJjcHUodmxhbi1cdTAwM2VwY3B1X3N0YXRzKTtcbiA5Nzk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjUgMTQ6Mzc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTExNQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSB3b3JraW5nIHBhdGNoLCB3aGljaCBpcyBncmVhdCwgYW5kIEkmIzM5O20gdGhpbmtpbmcgdGhpcyBpcyBhIHByaW1lIGNhbmRpZGF0ZSBmb3Igc29tZSBmdXp6aW5nLiBMZXQmIzM5O3Mgc2VlLi4uIEkgbmVlZCBhIGdvb2QgZm9jdXMgZnVuY3Rpb24gdG8gc3RhcnQgd2l0aC4gR2l2ZW4gdGhlIHBhdGNoJiMzOTtzIHB1cnBvc2UsIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCBpbW1lZGlhdGVseSBqdW1wcyBvdXQuIEl0JiMzOTtzIGNydWNpYWwgYmVjYXVzZSBpdCYjMzk7cyB3aGVyZSB0aGUgbWFjdmxhbiBkZXZpY2UgaXMgYWN0dWFsbHkgc2V0IHVwLCByZWdpc3RlcmVkLCBhbmQgc2VlbXMgdG8gYmUgdGhlIGVudHJ5IHBvaW50IGZvciBpbml0aWFsaXphdGlvbiB2aWEgYSBjYWxsIHRvIGBtYWN2bGFuX2luaXRgLgoKV2FpdCBhIG1pbnV0ZSwgaXNuJiMzOTt0IGBtYWN2bGFuX25ld2xpbmtgIHRoZSBydG5sIGxpbmsgb3BlcmF0aW9uIHRoYXQgdGhlbiAqY2FsbHMqIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYD8gQmluZ28hIFNpbmNlIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCBpcyBleHBvcnRlZCwgaXQmIzM5O3MgYSBwZXJmZWN0IHRhcmdldCB0byBzdGFydCB3aXRoLiBJdOKAmXMgZ290IGdvb2QgYWNjZXNzaWJpbGl0eSBmb3IgZnV6emluZy4KCkFuZCBoZXksIEkgYmV0IGBtYWN2dGFwX25ld2xpbmtgIGlzIGFsc28gd29ydGggY2hlY2tpbmcsIGFuZCBJIGJldCBpdCBjYWxscyB0aGF0IHNhbWUgZnVuY3Rpb24sIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYC4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhhdCwgYW5kIHNpbmNlIGl0IGlzIGluIGBkcml2ZXJzL25ldC9tYWN2dGFwLmNgLCBJJiMzOTtsbCBzdGFydCBieSBjaGVja2luZyB0aGF0IGZpbGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hY3Z0YXBfbmV3bGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21hY3Z0YXAuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tYWN2dGFwLmM9NzE9c3RhdGljIHZvaWQgbWFjdnRhcF91cGRhdGVfZmVhdHVyZXMoc3RydWN0IHRhcF9kZXYgKnRhcCxcbi0tXG5kcml2ZXJzL25ldC9tYWN2dGFwLmMtODAtXG5kcml2ZXJzL25ldC9tYWN2dGFwLmM6ODE6c3RhdGljIGludCBtYWN2dGFwX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L21hY3Z0YXAuYy04Mi1cdFx0XHQgICBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxuLS1cbmRyaXZlcnMvbmV0L21hY3Z0YXAuYz0xNDE9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIG1hY3Z0YXBfbGlua19vcHMgX19yZWFkX21vc3RseSA9IHtcbi0tXG5kcml2ZXJzL25ldC9tYWN2dGFwLmMtMTQzLVx0LnNldHVwXHRcdD0gbWFjdnRhcF9zZXR1cCxcbmRyaXZlcnMvbmV0L21hY3Z0YXAuYzoxNDQ6XHQubmV3bGlua1x0PSBtYWN2dGFwX25ld2xpbmssXG5kcml2ZXJzL25ldC9tYWN2dGFwLmMtMTQ1LVx0LmRlbGxpbmtcdD0gbWFjdnRhcF9kZWxsaW5rLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNSAxNDozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NzkwCgkJCQkJCQlvdXRwdXQ6IDExNAoJCQkJCQkJdGhvdWdodHM6IDE2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBtYWN2bGFuYCBhbmQgYG1hY3Z0YXBgIEtlcm5lbCBNb2R1bGUgU3RydWN0dXJlKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgYG1hY3Z0YXBfbmV3bGlua2AgaXMgc3RhdGljLCB3aGljaCBtZWFucyBpdCBpc24mIzM5O3QgZGlyZWN0bHkgZXhwb3NlZCBhbmQgbGlrZWx5IG5vdCB0aGUga2V5IGVudHJ5IHBvaW50IHdlJiMzOTtyZSBhZnRlci4gVGhhdCBtZWFucyBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AgaXMgdGhlIG1vcmUgcHJvbWlzaW5nIGZ1bmN0aW9uIHRvIGZvY3VzIG9uLiBXZSBuZWVkIHRvIGNoZWNrIGZvciBhbnkgb3RoZXIgZXhwb3J0ZWQgZnVuY3Rpb25zIHRoYXQgbWlnaHQgdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBtYWN2bGFuLgoKTGV0JiMzOTtzIHNlZS4uLiBsb29raW5nIGF0IHRoZSBjb2RlLCBpdCBsb29rcyBsaWtlIGBtYWN2bGFuX2luaXRgIGlzIGNhbGxlZCBieSBgcmVnaXN0ZXJfbmV0ZGV2aWNlYCwgd2hpY2ggaXMgaXRzZWxmIGNhbGxlZCBieSBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AuIEFoYSEgU28gYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgIGlzIGRlZmluaXRlbHkgdGhlIHJpZ2h0IHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcuIFRoaXMgZml0cyB3aXRoIHRoZSBpbml0aWFsIGh1bmNoLgoKTm93LCBsZXQmIzM5O3MgdGhpbmsgYWJvdXQgdGhlIGNvbmZpZ3VyYXRpb24uIFdlIGFyZSB3b3JraW5nIHdpdGggYE1BQ1ZMQU5gIGhlcmUuCgpSaWdodCwgbGV0JiMzOTtzIGp1c3QgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgTUFDVkxBTmAgZG9lc24mIzM5O3QgZGVwZW5kIG9uIGFueSBvdGhlciBvYnNjdXJlIGNvbmZpZyBvcHRpb25zLiBJdCBhcHBlYXJzIHRvIGJlIGluZGVwZW5kZW50LiBFeGNlbGxlbnQuIE5vdywgYE1BQ1ZUQVBgIGRlcGVuZHMgb24gYE1BQ1ZMQU5gIGFuZCBgSU5FVGAsIHNvIHdlIGNhbiBqdXN0IGluY2x1ZGUgYE1BQ1ZMQU5gIGFuZCBoYW5kbGUgdGhhdC4KCk9rYXksIHRoYXQgc2VlbXMgdG8gY292ZXIgYWxsIG9mIHRoZSBzYWxpZW50IHBvaW50cy4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI1IDE0OjM3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUNWTEFOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFjdmxhbl9jb21tb25fbmV3bGluayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgbWFjdmxhbiBkZXZpY2VzIGJ5IGluaGVyaXRpbmcgbmVlZGVkX2hlYWRyb29tIGFuZCBuZWVkZWRfdGFpbHJvb20gZnJvbSB0aGUgbG93ZXIgZGV2aWNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHBhY2tldCBwcm9jZXNzaW5nLiBUaGUgZW50cnkgcG9pbnQgZm9yIGNyZWF0aW5nIG1hY3ZsYW4gZGV2aWNlcyBpcyBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rLCB3aGljaCBjYWxscyByZWdpc3Rlcl9uZXRkZXZpY2UgYW5kIHRyaWdnZXJzIG1hY3ZsYW5faW5pdC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDVkxBTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21hY3ZsYW5fY29tbW9uX25ld2xpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIG1hY3ZsYW4gZGV2aWNlcyBieSBpbmhlcml0aW5nIG5lZWRlZF9oZWFkcm9vbSBhbmQgbmVlZGVkX3RhaWxyb29tIGZyb20gdGhlIGxvd2VyIGRldmljZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyBwYWNrZXQgcHJvY2Vzc2luZy4gVGhlIGVudHJ5IHBvaW50IGZvciBjcmVhdGluZyBtYWN2bGFuIGRldmljZXMgaXMgbWFjdmxhbl9jb21tb25fbmV3bGluaywgd2hpY2ggY2FsbHMgcmVnaXN0ZXJfbmV0ZGV2aWNlIGFuZCB0cmlnZ2VycyBtYWN2bGFuX2luaXQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDozNzowMi41OTk2MDY4MDZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njk1NTAxNTc4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUNWTEFOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWFjdmxhbl9jb21tb25fbmV3bGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBvZiBtYWN2bGFuIGRldmljZXMgYnkgaW5oZXJpdGluZyBuZWVkZWRfaGVhZHJvb20gYW5kIG5lZWRlZF90YWlscm9vbSBmcm9tIHRoZSBsb3dlciBkZXZpY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgcGFja2V0IHByb2Nlc3NpbmcuIFRoZSBlbnRyeSBwb2ludCBmb3IgY3JlYXRpbmcgbWFjdmxhbiBkZXZpY2VzIGlzIG1hY3ZsYW5fY29tbW9uX25ld2xpbmssIHdoaWNoIGNhbGxzIHJlZ2lzdGVyX25ldGRldmljZSBhbmQgdHJpZ2dlcnMgbWFjdmxhbl9pbml0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDozNzowMi41OTk2MTMxODZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0NTQzOTMwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDMzZDhjYzU3YjQ4ZTE3MjZiZWU5NTMxM2ZkZTZmYWIzNDFmMjIxZjJcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBKdWwgMjUgMTQ6Mzc6MDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWFjdmxhbi5jIGIvZHJpdmVycy9uZXQvbWFjdmxhbi5jXFxuaW5kZXggOWE0YmM5OWRiZjUzYjUuLjcwMjE5MDExZmNiMjQxIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xcbkBAIC05NTQsNiArOTU0LDggQEAgc3RhdGljIGludCBtYWN2bGFuX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0ZGV2LVxcdTAwM2VsbHR4XFx0XFx0PSB0cnVlO1xcbiBcXHRuZXRpZl9pbmhlcml0X3Rzb19tYXgoZGV2LCBsb3dlcmRldik7XFxuIFxcdGRldi1cXHUwMDNlaGFyZF9oZWFkZXJfbGVuXFx0PSBsb3dlcmRldi1cXHUwMDNlaGFyZF9oZWFkZXJfbGVuO1xcbitcXHRkZXYtXFx1MDAzZW5lZWRlZF9oZWFkcm9vbVxcdD0gbG93ZXJkZXYtXFx1MDAzZW5lZWRlZF9oZWFkcm9vbTtcXG4rXFx0ZGV2LVxcdTAwM2VuZWVkZWRfdGFpbHJvb21cXHQ9IGxvd2VyZGV2LVxcdTAwM2VuZWVkZWRfdGFpbHJvb207XFxuIFxcdG1hY3ZsYW5fc2V0X2xvY2tkZXBfY2xhc3MoZGV2KTtcXG4gXFxuIFxcdHZsYW4tXFx1MDAzZXBjcHVfc3RhdHMgPSBuZXRkZXZfYWxsb2NfcGNwdV9zdGF0cyhzdHJ1Y3Qgdmxhbl9wY3B1X3N0YXRzKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTQ6Mzc6MDMuMDQ1ODUwMjEzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDY1MDg3NjQzMDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDVkxBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hY3ZsYW5fY29tbW9uX25ld2xpbmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgbWFjdmxhbiBkZXZpY2VzIGJ5IGluaGVyaXRpbmcgbmVlZGVkX2hlYWRyb29tIGFuZCBuZWVkZWRfdGFpbHJvb20gZnJvbSB0aGUgbG93ZXIgZGV2aWNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHBhY2tldCBwcm9jZXNzaW5nLiBUaGUgZW50cnkgcG9pbnQgZm9yIGNyZWF0aW5nIG1hY3ZsYW4gZGV2aWNlcyBpcyBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rLCB3aGljaCBjYWxscyByZWdpc3Rlcl9uZXRkZXZpY2UgYW5kIHRyaWdnZXJzIG1hY3ZsYW5faW5pdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzNkOGNjNTdiNDhlMTcyNmJlZTk1MzEzZmRlNmZhYjM0MWYyMjFmMlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgSnVsIDI1IDE0OjM3OjAwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWFjdmxhbi5jIGIvZHJpdmVycy9uZXQvbWFjdmxhbi5jXG5pbmRleCA5YTRiYzk5ZGJmNTNiNS4uNzAyMTkwMTFmY2IyNDEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9tYWN2bGFuLmNcbisrKyBiL2RyaXZlcnMvbmV0L21hY3ZsYW4uY1xuQEAgLTk1NCw2ICs5NTQsOCBAQCBzdGF0aWMgaW50IG1hY3ZsYW5faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0ZGV2LVx1MDAzZWxsdHhcdFx0PSB0cnVlO1xuIFx0bmV0aWZfaW5oZXJpdF90c29fbWF4KGRldiwgbG93ZXJkZXYpO1xuIFx0ZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlblx0PSBsb3dlcmRldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW47XG4rXHRkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tXHQ9IGxvd2VyZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbTtcbitcdGRldi1cdTAwM2VuZWVkZWRfdGFpbHJvb21cdD0gbG93ZXJkZXYtXHUwMDNlbmVlZGVkX3RhaWxyb29tO1xuIFx0bWFjdmxhbl9zZXRfbG9ja2RlcF9jbGFzcyhkZXYpO1xuIFxuIFx0dmxhbi1cdTAwM2VwY3B1X3N0YXRzID0gbmV0ZGV2X2FsbG9jX3BjcHVfc3RhdHMoc3RydWN0IHZsYW5fcGNwdV9zdGF0cyk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDozNzowMy4wNDU4NTE1MjJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODYzNzI2MDc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTWFjdmxhbiBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGFyZ2V0aW5nIGBkcml2ZXJzL25ldC9tYWN2bGFuLmNgLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBpbiB0aGUgYG1hY3ZsYW5faW5pdCgpYCBmdW5jdGlvbiwgd2hlcmUgaXQncyBpbnRyb2R1Y2luZyB0aGVzZSBhc3NpZ25tZW50czogYGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20gPSBsb3dlcmRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb207YCBhbmQgYGRldi1cdTAwM2VuZWVkZWRfdGFpbHJvb20gPSBsb3dlcmRldi1cdTAwM2VuZWVkZWRfdGFpbHJvb207YC4gVGhpcyBpcyBhIGNsZWFyIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uOyBpdCdzIGNoYW5naW5nIGhvdyBgbWFjdmxhbl9pbml0YCBiZWhhdmVzLCBzcGVjaWZpY2FsbHkgcmVsYXRpbmcgdG8gaGVhZHJvb20gYW5kIHRhaWxyb29tIHZhbHVlcy4gR2l2ZW4gdGhpcyBkaXJlY3QgYWx0ZXJhdGlvbiBvZiBhIGNvcmUgbmV0d29yayBmdW5jdGlvbiwgSSBuZWVkIHRvIHRob3JvdWdobHkgYXNzZXNzIHRoZSBpbXBsaWNhdGlvbnMuIE15IG5leHQgc3RlcCB3aWxsIGJlIHRvIGRpdmUgaW50byBgbWFjdmxhbi5jYCBpdHNlbGYgYW5kIGFsc28gZG91YmxlLWNoZWNrIHRoZSByZWxldmFudCBLY29uZmlnIG9wdGlvbnMgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBhbmQgZGVwZW5kZW5jaWVzIG9mIHRoaXMgcGF0Y2guIExldCdzIHNlZSB3aGF0IHRoZSBjb2RlIHJldmVhbHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTIsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjM3OjA2LjkwOTU3OTc1WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY2MjQ3MTg3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY3ZsYW5faW5pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9tYWN2bGFuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jPTkzMz1zdGF0aWMgdm9pZCBtYWN2bGFuX3NldF9sb2NrZGVwX2NsYXNzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtOTM5LVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzo5NDA6c3RhdGljIGludCBtYWN2bGFuX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtOTQxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xMTkzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgbWFjdmxhbl9uZXRkZXZfb3BzID0ge1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxMTk0OlxcdC5uZG9faW5pdFxcdFxcdD0gbWFjdmxhbl9pbml0LFxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xMTk1LVxcdC5uZG9fdW5pbml0XFx0XFx0PSBtYWN2bGFuX3VuaW5pdCxcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xOTAzPXN0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgbWFjdmxhbl9ub3RpZmllcl9ibG9jayBfX3JlYWRfbW9zdGx5ID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE5MDYtXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE5MDc6c3RhdGljIGludCBfX2luaXQgbWFjdmxhbl9pbml0X21vZHVsZSh2b2lkKVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xOTA4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xOTIyPXN0YXRpYyB2b2lkIF9fZXhpdCBtYWN2bGFuX2NsZWFudXBfbW9kdWxlKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTkyNy1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTkyODptb2R1bGVfaW5pdChtYWN2bGFuX2luaXRfbW9kdWxlKTtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTkyOS1tb2R1bGVfZXhpdChtYWN2bGFuX2NsZWFudXBfbW9kdWxlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTQ6Mzc6MDYuOTc1ODMxNzc3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjM4NDU4NTk1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYWxyZWFkeSBmYW1pbGlhciB3aXRoIG5ldHdvcmtpbmcgYW5kIGtlcm5lbCBpbnRlcm5hbHM6XG5cbioqQW5hbHl6aW5nIGBtYWN2bGFuX2luaXRgIGluIHRoZSBDb250ZXh0IG9mIE5ldGRldiBPcGVyYXRpb25zKipcblxuQWxyaWdodCwgc28gdGhlIGNvZGUncyBwb2ludGluZyBtZSBhdCBgbWFjdmxhbl9pbml0YC4gSSBpbW1lZGlhdGVseSBzZWUgaXQncyBtYXJrZWQgYXMgYHN0YXRpY2AsIHdoaWNoIGNvbmZpcm1zIGl0J3MgaW50ZXJuYWwgdG8gdGhlIG1hY3ZsYW4gbW9kdWxlLiBBbmQgaXQncyBiZWluZyBhc3NpZ25lZCB0byBgLm5kb19pbml0YCB3aXRoaW4gYG1hY3ZsYW5fbmV0ZGV2X29wc2AuIE9rYXksIHRoYXQgbWFrZXMgc2Vuc2Ug4oCTIGl0J3MgdGhlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgZm9yIG1hY3ZsYW4gbmV0d29yayBkZXZpY2VzLiBUaGUgbG9naWNhbCBuZXh0IHN0ZXAsIG5vdywgaXMgdG8gZGVsdmUgaW50byB0aGUgYG1hY3ZsYW5fbmV0ZGV2X29wc2Agc3RydWN0dXJlIGl0c2VsZi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGFuZCB3aGVyZSBgbWFjdmxhbl9uZXRkZXZfb3BzYCBpcyB1c2VkIGJlY2F1c2UgdGhhdCB3aWxsIGRlZmluZSB0aGUgY29udGV4dCBhbmQgaG93IHRoaXMgYG1hY3ZsYW5faW5pdGAgZnVuY3Rpb24gaXMgdXRpbGl6ZWQgZHVyaW5nIHRoZSBkZXZpY2UgYnJpbmctdXAgcHJvY2Vzcy4gSSBuZWVkIHRvIHRyYWNlIHRoZSB1c2FnZSBvZiBgbWFjdmxhbl9uZXRkZXZfb3BzYCB0byB1bmRlcnN0YW5kIHRoZSBiaWdnZXIgcGljdHVyZSBvZiBtYWN2bGFuIGRldmljZSBjcmVhdGlvbiBhbmQgaW50ZXJhY3Rpb24uIEl0J3MgdGltZSB0byBmb2xsb3cgdGhlIGJyZWFkY3J1bWJzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODIxLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTQ6Mzc6MTMuMzYwNDE5OTYzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4Njc3ODk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY3ZsYW5fbmV0ZGV2X29wc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9tYWN2bGFuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jPTExODY9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyBtYWN2bGFuX2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTExOTItXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjExOTM6c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBtYWN2bGFuX25ldGRldl9vcHMgPSB7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTExOTQtXFx0Lm5kb19pbml0XFx0XFx0PSBtYWN2bGFuX2luaXQsXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTIzMD12b2lkIG1hY3ZsYW5fY29tbW9uX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTIzOS1cXHRkZXYtXFx1MDAzZWNoYW5nZV9wcm90b19kb3duXFx0PSB0cnVlO1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxMjQwOlxcdGRldi1cXHUwMDNlbmV0ZGV2X29wc1xcdFxcdD0gXFx1MDAyNm1hY3ZsYW5fbmV0ZGV2X29wcztcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTI0MS1cXHRkZXYtXFx1MDAzZW5lZWRzX2ZyZWVfbmV0ZGV2XFx0PSB0cnVlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDozNzoxMy40MTkxMDcyWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU0MjM0ODAwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBNYWN2bGFuIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyBgbWFjdmxhbl9jb21tb25fc2V0dXBgIGlzIGNsZWFybHkgYSBrZXkgZnVuY3Rpb24sIHVzZWQgYm90aCB3aXRoaW4gYG1hY3ZsYW4uY2AgaXRzZWxmIGFuZCBwb3RlbnRpYWxseSBleHBvcnRlZC4gVGhhdCBzdWdnZXN0cyB0aGlzIGlzIGEgY2VudHJhbCBwaWVjZSBvZiB0aGUgcHV6emxlLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gZmlndXJlIG91dCB3aGF0IHRyaWdnZXJzIGl0cyB1c2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIHBhdGh3YXlzIHRoYXQgbGVhZCB0byBgbWFjdmxhbl9jb21tb25fc2V0dXBgIGJlaW5nIGNhbGxlZC4gV2hhdCBrZXJuZWwgb3B0aW9ucywgbW9kdWxlIHBhcmFtZXRlcnMsIG9yIG5ldHdvcmsgaW50ZXJmYWNlIHNldHRpbmdzIGFyZSBpbnZvbHZlZD8gSSBuZWVkIHRvIHRyYWNrIGRvd24gdGhlIGNvbmZpZ3VyYXRpb24ga25vYnMgdGhhdCAqZW5hYmxlKiBtYWN2bGFuIGZ1bmN0aW9uYWxpdHkgaW4gdGhlIGZpcnN0IHBsYWNlLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGVzLCBtYXliZSBzb21lIGRldmljZSBkcml2ZXIgaW5pdGlhbGl6YXRpb24gY29kZSwgYW5kIGRlZmluaXRlbHkgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGNyZWF0aW9uIGxvZ2ljLiBUaGUgZ29hbCBpcyB0byBlc3RhYmxpc2ggdGhlIHByZWNvbmRpdGlvbnMgZm9yIGBtYWN2bGFuX2NvbW1vbl9zZXR1cGAgdG8gZXhlY3V0ZS4gVGhpcyBpcyBjcnVjaWFsIGZvciB1bmRlcnN0YW5kaW5nIGhvdyBtYWN2bGFuIGlzIGluaXRpYWxpemVkIGFuZCwgbW9yZSBpbXBvcnRhbnRseSwgaG93IGRpZmZlcmVudCBjb25maWd1cmF0aW9ucyBtaWdodCBpbmZsdWVuY2UgaXRzIGJlaGF2aW9yLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDAxLCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTQ6Mzc6MTYuOTYxNDU3ODY1WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNjI2MjM2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUFDVkxBTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0xNjM9c291cmNlIFxcXCJkcml2ZXJzL25ldC90ZWFtL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xNjQtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoxNjU6Y29uZmlnIE1BQ1ZMQU5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTE2Ni1cXHR0cmlzdGF0ZSBcXFwiTUFDLVZMQU4gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTQ6Mzc6MTcuMzk3NzI0NzMyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU2NjQyMzc1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1BQ1ZMQU4gQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gd2UncmUgbG9va2luZyBhdCBpcyBgTUFDVkxBTmAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzLiBSaWdodCwgdGhlIGZ1bmN0aW9uIGBtYWN2bGFuX2luaXRgIGlzIHN0YXRpYy4gVGhhdCBtZWFucyB0aGUgY29tcGlsZXIgKmNvdWxkKiBpbmxpbmUgaXQsIHdoaWNoIHdvdWxkIG1ha2UgdHJhY2luZyBpdHMgZXhlY3V0aW9uIGEgcGFpbi4gSG93ZXZlciwgaXQncyB1c2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciBhc3NpZ25lZCB0byBgLm5kb19pbml0YC4gU2luY2UgaXQncyBiZWluZyB1c2VkIHRoYXQgd2F5LCB0aGUgY29tcGlsZXIgKndvbid0KiBpbmxpbmUgaXQsIHdoaWNoIGlzIGdvb2QuIEJ1dCB0aGUgZmFjdCB0aGF0IGl0J3Mgc3RhdGljIHN0aWxsIGxpbWl0cyBvdXIgYWJpbGl0eSB0byByZWZlcmVuY2UgaXQgZGlyZWN0bHkuIEhtbSwgc28gaXMgdGhlcmUgYW4gZXhwb3J0ZWQgZnVuY3Rpb24gdGhhdCB0cmlnZ2VycyBpdD8gQWgsIHllcywgYHJlZ2lzdGVyX25ldGRldmljZWAgd2lsbCBkZWZpbml0ZWx5IGNhbGwgYC5uZG9faW5pdGAsIHdoaWNoIHBvaW50cyB0byBvdXIgZnVuY3Rpb24uIFRoYXQncyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50LiBOb3csIHRvIHRyYWNrIGRvd24gdGhlIGVudHJ5IHBvaW50IGZvciBjcmVhdGluZyBhIG5ldyBNQUNWTEFOIGRldmljZS4uLiBJJ20gcHJldHR5IHN1cmUgdGhhdCdzIGBtYWN2bGFuX25ld2xpbmtgLiBJIG5lZWQgdG8gc3RhcnQgZGlnZ2luZyB0aHJvdWdoIHRoYXQgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzc2MywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDozNzoyMC45NjQxNTA4NjVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MjMxNDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY3ZsYW5fbmV3bGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9tYWN2bGFuLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE1OTY9RVhQT1JUX1NZTUJPTF9HUEwobWFjdmxhbl9jb21tb25fbmV3bGluayk7XFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE1OTctXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE1OTg6c3RhdGljIGludCBtYWN2bGFuX25ld2xpbmsoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTU5OS1cXHRcXHRcXHQgICBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jPTE4MTM9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIG1hY3ZsYW5fbGlua19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTgxNS1cXHQuc2V0dXBcXHRcXHQ9IG1hY3ZsYW5fc2V0dXAsXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jOjE4MTY6XFx0Lm5ld2xpbmtcXHQ9IG1hY3ZsYW5fbmV3bGluayxcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTgxNy1cXHQuZGVsbGlua1xcdD0gbWFjdmxhbl9kZWxsaW5rLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDozNzoyMS4wMjIzODgwNTJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI1NjA4OTYxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQ29uc2lkZXJpbmcgYG1hY3ZsYW5fbmV3bGlua2AgYW5kIFJlbGF0ZWQgRnVuY3Rpb25zKipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLCBJJ20gZGlnZ2luZyBpbnRvIHRoaXMgbmV0d29ya2luZyBjb2RlIGFuZCBpbW1lZGlhdGVseSBJIHNlZSBhIHJlZCBmbGFnOiBgbWFjdmxhbl9uZXdsaW5rYCBpcyBzdGF0aWMsIHRvby4gVGhhdCBqdXN0IG1ha2VzIG1lIHBhdXNlLCBhcyBpdCBvZnRlbiBtZWFucyBsaW1pdGVkIHJldXNhYmlsaXR5IGFuZCBwb3RlbnRpYWwgY29tcGxpY2F0aW9ucyBpbiBtb3JlIGNvbXBsZXggc2NlbmFyaW9zLiBJJ20gd29uZGVyaW5nIGlmIHRoaXMgd2lsbCBpbXBhY3QgbW9kdWxhcml0eSwgdGVzdGluZywgb3IgcG90ZW50aWFsIGludGVncmF0aW9uIHdpdGggb3RoZXIgbmV0d29yayBtYW5hZ2VtZW50IHRvb2xzIEkgbWlnaHQgYmUgd29ya2luZyB3aXRoLlxuXG5UaGF0IGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rLCBcIkhtbSwgd2hhdCBhYm91dCBgbWFjdmxhbl9jb21tb25fbmV3bGlua2A/IElzIHRoYXQgc3RhdGljIGFzIHdlbGw/XCIgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGFyY2hpdGVjdHVyZSBiZXR0ZXIgdG8gc2VlIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBmaXQsIGFuZCBob3cgdGhleSByZWxhdGUgdG8gdGhlIG92ZXJhbGwgTWFjdmxhbiBpbXBsZW1lbnRhdGlvbiwgYW5kIGhvdyBJIG1pZ2h0IHVzZSBpdCBvciBleHRlbmQgaXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBpbiB0aGVyZSwgYW5kIGhvdyBpdCBpcyB1c2VkLiBJIGFtIGdvaW5nIHRvIGhhdmUgdG8gZGl2ZSBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQzNjMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDozNzoyNC4yNzg0Nzk5MDJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5MDA1NDQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY3ZsYW5fY29tbW9uX25ld2xpbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21hY3ZsYW4uYz0xNDA4PXN0YXRpYyBpbnQgbWFjdmxhbl9jaGFuZ2VsaW5rX3NvdXJjZXMoc3RydWN0IG1hY3ZsYW5fZGV2ICp2bGFuLCB1MzIgbW9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNDYzLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNDY0OmludCBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE0NjUtXFx0XFx0XFx0ICAgc3RydWN0IHJ0bmxfbmV3bGlua19wYXJhbXMgKnBhcmFtcyxcXG4tLVxcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNTk1LX1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM6MTU5NjpFWFBPUlRfU1lNQk9MX0dQTChtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKTtcXG5kcml2ZXJzL25ldC9tYWN2bGFuLmMtMTU5Ny1cXG5kcml2ZXJzL25ldC9tYWN2bGFuLmM9MTU5OD1zdGF0aWMgaW50IG1hY3ZsYW5fbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvbWFjdmxhbi5jLTE2MDEte1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYzoxNjAyOlxcdHJldHVybiBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKGRldiwgcGFyYW1zLCBleHRhY2spO1xcbmRyaXZlcnMvbmV0L21hY3ZsYW4uYy0xNjAzLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTQ6Mzc6MjQuMzQ3NDkwODM4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwOTA1MDkyMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNYWN2bGFuIERyaXZlcidzIExpbmsgQ3JlYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBrZXkgZnVuY3Rpb24gd2UncmUgbG9va2luZyBhdCBpcyBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AsIGFuZCBpdCdzIGV4cG9ydGVkLCB3aGljaCBpcyBnb29kIOKAkyBtYWtlcyBpdCBhIGNsZWFyIHRhcmdldC4gV2UgY291bGQgYWxzbyBjb25zaWRlciBgbWFjdmxhbl9pbml0YCwgYnV0IHRoYXQncyBhIGZ1bmN0aW9uIHBvaW50ZXIsIGFuZCBldmVuIHRob3VnaCBpdCdzIHN0YXRpYyBhbmQgbm90IGlubGluZWQsIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCBzZWVtcyBsaWtlIGEgbW9yZSBkaXJlY3QgZW50cnkgcG9pbnQgZm9yIGZ1enppbmcgd2l0aCBzb21ldGhpbmcgbGlrZSBTeXprYWxsZXIuIEhhbmcgb24uLi4gYG1hY3ZsYW5faW5pdGAgaXMgY2FsbGVkIGJ5IGByZWdpc3Rlcl9uZXRkZXZpY2VgLCB3aGljaCAqaXRzZWxmKiBpcyBjYWxsZWQgYnkgYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgLiBUaGF0IGNvbm5lY3Rpb24gaXMgaW1wb3J0YW50LiBSaWdodCwgdGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUuIEknbGwgbmVlZCB0byBjaGVjayBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AgaW4gYGRyaXZlcnMvbmV0L21hY3ZsYW4uY2AgYW5kIHNlZSB3aGF0J3MgaGFwcGVuaW5nIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTM1LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjM3OjI4LjQzODAwMzAyNFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDUzMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvbWFjdmxhbi5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE0NjQsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNDY0OlxcdGludCBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuMTQ2NTpcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxcbjE0NjY6XFx0XFx0XFx0XFx0ICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbjE0Njc6XFx0e1xcbjE0Njg6XFx0XFx0c3RydWN0IG5ldCAqbGlua19uZXQgPSBydG5sX25ld2xpbmtfbGlua19uZXQocGFyYW1zKTtcXG4xNDY5OlxcdFxcdHN0cnVjdCBtYWN2bGFuX2RldiAqdmxhbiA9IG5ldGRldl9wcml2KGRldik7XFxuMTQ3MDpcXHRcXHRzdHJ1Y3QgbmxhdHRyICoqZGF0YSA9IHBhcmFtcy1cXHUwMDNlZGF0YTtcXG4xNDcxOlxcdFxcdHN0cnVjdCBubGF0dHIgKip0YiA9IHBhcmFtcy1cXHUwMDNldGI7XFxuMTQ3MjpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbG93ZXJkZXY7XFxuMTQ3MzpcXHRcXHRzdHJ1Y3QgbWFjdmxhbl9wb3J0ICpwb3J0O1xcbjE0NzQ6XFx0XFx0Ym9vbCBjcmVhdGUgPSBmYWxzZTtcXG4xNDc1OlxcdFxcdGludCBtYWNtb2RlO1xcbjE0NzY6XFx0XFx0aW50IGVycjtcXG4xNDc3OlxcdFxcbjE0Nzg6XFx0XFx0aWYgKCF0YltJRkxBX0xJTktdKVxcbjE0Nzk6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuMTQ4MDpcXHRcXG4xNDgxOlxcdFxcdGxvd2VyZGV2ID0gX19kZXZfZ2V0X2J5X2luZGV4KGxpbmtfbmV0LCBubGFfZ2V0X3UzMih0YltJRkxBX0xJTktdKSk7XFxuMTQ4MjpcXHRcXHRpZiAobG93ZXJkZXYgPT0gTlVMTClcXG4xNDgzOlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbjE0ODQ6XFx0XFxuMTQ4NTpcXHRcXHQvKiBXaGVuIGNyZWF0aW5nIG1hY3ZsYW5zIG9yIG1hY3Z0YXBzIG9uIHRvcCBvZiBvdGhlciBtYWN2bGFucyAtIHVzZVxcbjE0ODY6XFx0XFx0ICogdGhlIHJlYWwgZGV2aWNlIGFzIHRoZSBsb3dlcmRldi5cXG4xNDg3OlxcdFxcdCAqL1xcbjE0ODg6XFx0XFx0aWYgKG5ldGlmX2lzX21hY3ZsYW4obG93ZXJkZXYpKVxcbjE0ODk6XFx0XFx0XFx0bG93ZXJkZXYgPSBtYWN2bGFuX2Rldl9yZWFsX2Rldihsb3dlcmRldik7XFxuMTQ5MDpcXHRcXG4xNDkxOlxcdFxcdGlmICghdGJbSUZMQV9NVFVdKVxcbjE0OTI6XFx0XFx0XFx0ZGV2LVxcdTAwM2VtdHUgPSBsb3dlcmRldi1cXHUwMDNlbXR1O1xcbjE0OTM6XFx0XFx0ZWxzZSBpZiAoZGV2LVxcdTAwM2VtdHUgXFx1MDAzZSBsb3dlcmRldi1cXHUwMDNlbXR1KVxcbjE0OTQ6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuMTQ5NTpcXHRcXG4xNDk2OlxcdFxcdC8qIE1UVSByYW5nZTogNjggLSBsb3dlcmRldi1cXHUwMDNlbWF4X210dSAqL1xcbjE0OTc6XFx0XFx0ZGV2LVxcdTAwM2VtaW5fbXR1ID0gRVRIX01JTl9NVFU7XFxuMTQ5ODpcXHRcXHRkZXYtXFx1MDAzZW1heF9tdHUgPSBsb3dlcmRldi1cXHUwMDNlbWF4X210dTtcXG4xNDk5OlxcdFxcbjE1MDA6XFx0XFx0aWYgKCF0YltJRkxBX0FERFJFU1NdKVxcbjE1MDE6XFx0XFx0XFx0ZXRoX2h3X2FkZHJfcmFuZG9tKGRldik7XFxuMTUwMjpcXHRcXG4xNTAzOlxcdFxcdGlmICghbmV0aWZfaXNfbWFjdmxhbl9wb3J0KGxvd2VyZGV2KSkge1xcbjE1MDQ6XFx0XFx0XFx0ZXJyID0gbWFjdmxhbl9wb3J0X2NyZWF0ZShsb3dlcmRldik7XFxuMTUwNTpcXHRcXHRcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4xNTA2OlxcdFxcdFxcdFxcdHJldHVybiBlcnI7XFxuMTUwNzpcXHRcXHRcXHRjcmVhdGUgPSB0cnVlO1xcbjE1MDg6XFx0XFx0fVxcbjE1MDk6XFx0XFx0cG9ydCA9IG1hY3ZsYW5fcG9ydF9nZXRfcnRubChsb3dlcmRldik7XFxuMTUxMDpcXHRcXG4xNTExOlxcdFxcdC8qIE9ubHkgMSBtYWN2bGFuIGRldmljZSBjYW4gYmUgY3JlYXRlZCBpbiBwYXNzdGhydSBtb2RlICovXFxuMTUxMjpcXHRcXHRpZiAobWFjdmxhbl9wYXNzdGhydShwb3J0KSkge1xcbjE1MTM6XFx0XFx0XFx0LyogVGhlIG1hY3ZsYW4gcG9ydCBtdXN0IGJlIG5vdCBjcmVhdGVkIHRoaXMgdGltZSxcXG4xNTE0OlxcdFxcdFxcdCAqIHN0aWxsIGdvdG8gZGVzdHJveV9tYWN2bGFuX3BvcnQgZm9yIHJlYWRhYmlsaXR5LlxcbjE1MTU6XFx0XFx0XFx0ICovXFxuMTUxNjpcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbjE1MTc6XFx0XFx0XFx0Z290byBkZXN0cm95X21hY3ZsYW5fcG9ydDtcXG4xNTE4OlxcdFxcdH1cXG4xNTE5OlxcdFxcbjE1MjA6XFx0XFx0dmxhbi1cXHUwMDNlbG93ZXJkZXYgPSBsb3dlcmRldjtcXG4xNTIxOlxcdFxcdHZsYW4tXFx1MDAzZWRldiAgICAgID0gZGV2O1xcbjE1MjI6XFx0XFx0dmxhbi1cXHUwMDNlcG9ydCAgICAgPSBwb3J0O1xcbjE1MjM6XFx0XFx0dmxhbi1cXHUwMDNlc2V0X2ZlYXR1cmVzID0gTUFDVkxBTl9GRUFUVVJFUztcXG4xNTI0OlxcdFxcbjE1MjU6XFx0XFx0dmxhbi1cXHUwMDNlbW9kZSAgICAgPSBNQUNWTEFOX01PREVfVkVQQTtcXG4xNTI2OlxcdFxcdGlmIChkYXRhIFxcdTAwMjZcXHUwMDI2IGRhdGFbSUZMQV9NQUNWTEFOX01PREVdKVxcbjE1Mjc6XFx0XFx0XFx0dmxhbi1cXHUwMDNlbW9kZSA9IG5sYV9nZXRfdTMyKGRhdGFbSUZMQV9NQUNWTEFOX01PREVdKTtcXG4xNTI4OlxcdFxcbjE1Mjk6XFx0XFx0aWYgKGRhdGEgXFx1MDAyNlxcdTAwMjYgZGF0YVtJRkxBX01BQ1ZMQU5fRkxBR1NdKVxcbjE1MzA6XFx0XFx0XFx0dmxhbi1cXHUwMDNlZmxhZ3MgPSBubGFfZ2V0X3UxNihkYXRhW0lGTEFfTUFDVkxBTl9GTEFHU10pO1xcbjE1MzE6XFx0XFxuMTUzMjpcXHRcXHRpZiAodmxhbi1cXHUwMDNlbW9kZSA9PSBNQUNWTEFOX01PREVfUEFTU1RIUlUpIHtcXG4xNTMzOlxcdFxcdFxcdGlmIChwb3J0LVxcdTAwM2Vjb3VudCkge1xcbjE1MzQ6XFx0XFx0XFx0XFx0ZXJyID0gLUVJTlZBTDtcXG4xNTM1OlxcdFxcdFxcdFxcdGdvdG8gZGVzdHJveV9tYWN2bGFuX3BvcnQ7XFxuMTUzNjpcXHRcXHRcXHR9XFxuMTUzNzpcXHRcXHRcXHRtYWN2bGFuX3NldF9wYXNzdGhydShwb3J0KTtcXG4xNTM4OlxcdFxcdFxcdGV0aF9od19hZGRyX2luaGVyaXQoZGV2LCBsb3dlcmRldik7XFxuMTUzOTpcXHRcXHR9XFxuMTU0MDpcXHRcXG4xNTQxOlxcdFxcdGlmIChkYXRhIFxcdTAwMjZcXHUwMDI2IGRhdGFbSUZMQV9NQUNWTEFOX01BQ0FERFJfTU9ERV0pIHtcXG4xNTQyOlxcdFxcdFxcdGlmICh2bGFuLVxcdTAwM2Vtb2RlICE9IE1BQ1ZMQU5fTU9ERV9TT1VSQ0UpIHtcXG4xNTQzOlxcdFxcdFxcdFxcdGVyciA9IC1FSU5WQUw7XFxuMTU0NDpcXHRcXHRcXHRcXHRnb3RvIGRlc3Ryb3lfbWFjdmxhbl9wb3J0O1xcbjE1NDU6XFx0XFx0XFx0fVxcbjE1NDY6XFx0XFx0XFx0bWFjbW9kZSA9IG5sYV9nZXRfdTMyKGRhdGFbSUZMQV9NQUNWTEFOX01BQ0FERFJfTU9ERV0pO1xcbjE1NDc6XFx0XFx0XFx0ZXJyID0gbWFjdmxhbl9jaGFuZ2VsaW5rX3NvdXJjZXModmxhbiwgbWFjbW9kZSwgZGF0YSk7XFxuMTU0ODpcXHRcXHRcXHRpZiAoZXJyKVxcbjE1NDk6XFx0XFx0XFx0XFx0Z290byBkZXN0cm95X21hY3ZsYW5fcG9ydDtcXG4xNTUwOlxcdFxcdH1cXG4xNTUxOlxcdFxcbjE1NTI6XFx0XFx0dmxhbi1cXHUwMDNlYmNfcXVldWVfbGVuX3JlcSA9IE1BQ1ZMQU5fREVGQVVMVF9CQ19RVUVVRV9MRU47XFxuMTU1MzpcXHRcXHRpZiAoZGF0YSBcXHUwMDI2XFx1MDAyNiBkYXRhW0lGTEFfTUFDVkxBTl9CQ19RVUVVRV9MRU5dKVxcbjE1NTQ6XFx0XFx0XFx0dmxhbi1cXHUwMDNlYmNfcXVldWVfbGVuX3JlcSA9IG5sYV9nZXRfdTMyKGRhdGFbSUZMQV9NQUNWTEFOX0JDX1FVRVVFX0xFTl0pO1xcbjE1NTU6XFx0XFxuMTU1NjpcXHRcXHRpZiAoZGF0YSBcXHUwMDI2XFx1MDAyNiBkYXRhW0lGTEFfTUFDVkxBTl9CQ19DVVRPRkZdKVxcbjE1NTc6XFx0XFx0XFx0dXBkYXRlX3BvcnRfYmNfY3V0b2ZmKFxcbjE1NTg6XFx0XFx0XFx0XFx0dmxhbiwgbmxhX2dldF9zMzIoZGF0YVtJRkxBX01BQ1ZMQU5fQkNfQ1VUT0ZGXSkpO1xcbjE1NTk6XFx0XFxuMTU2MDpcXHRcXHRlcnIgPSByZWdpc3Rlcl9uZXRkZXZpY2UoZGV2KTtcXG4xNTYxOlxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbjE1NjI6XFx0XFx0XFx0Z290byBkZXN0cm95X21hY3ZsYW5fcG9ydDtcXG4xNTYzOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDozNzoyOC40MzgxNDkzNTRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg0ODE0MTg0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE1hY3ZsYW4gRGV2aWNlIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gYHJlZ2lzdGVyX25ldGRldmljZWAgaXMgYmVpbmcgY2FsbGVkIGhlcmUsIHdoaWNoIGlzIHN0YW5kYXJkIHByb2NlZHVyZS4gVGhlIGNvcmUgb2YgdGhpcyBjaGFuZ2Ugc2VlbXMgdG8gYmUgdGhlIGFkZGl0aW9uIG9mIGBkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tID0gbG93ZXJkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tO2AgYW5kIGBkZXYtXHUwMDNlbmVlZGVkX3RhaWxyb29tID0gbG93ZXJkZXYtXHUwMDNlbmVlZGVkX3RhaWxyb29tO2Agd2l0aGluIGBtYWN2bGFuX2luaXRgLiBJJ20gc2VlaW5nIHRoaXMgaW1tZWRpYXRlbHkgYXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgYSBtb2RpZmljYXRpb24gdG8gaG93IHRoZSBtYWN2bGFuIGRldmljZSBoYW5kbGVzIGhlYWRyb29tIGFuZCB0YWlscm9vbS4gVGhpcyBkaXJlY3RseSBpbXBhY3RzIHBhY2tldCB0cmFuc21pc3Npb24gYW5kIHJlY2VwdGlvbiwgaW5mbHVlbmNpbmcgaG93IHRoZSBkZXZpY2UgaW50ZXJhY3RzIGF0IHRoZSBkYXRhIGxpbmsgbGF5ZXIuXG5cblRoZSBjcnVjaWFsIHF1ZXN0aW9uIG5vdyBiZWNvbWVzOiBhcmUgdGhlcmUgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgdGhhdCBuZWVkIHRvIGJlIGNvbnNpZGVyZWQgYmVjYXVzZSBvZiB0aGlzIGFsdGVyYXRpb24/IERvZXMgdGhpcyBpbnRyb2R1Y2UgYW55IGRlcGVuZGVuY2llcyBvbiBzcGVjaWZpYyBzZXR0aW5ncywgb3IgbWlnaHQgdGhpcyBjaGFuZ2UgaGF2ZSBjb21wYXRpYmlsaXR5IGltcGxpY2F0aW9ucyBmb3IgZXhpc3Rpbmcgc2V0dXBzPyBHaXZlbiB0aGF0IGBNQUNWTEFOYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlnLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpc24ndCBjb250aW5nZW50IG9uIHNvbWUgb3RoZXIgZmxhZyBvciBmZWF0dXJlLiBMZXQgbWUgbG9vayBpbnRvIHRoZSBgTUFDVkxBTmAgZGVwZW5kZW5jaWVzIHRvIGJlIGNlcnRhaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY5ODgsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDozNzozMi4yODYyOTM5NjNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzMzIwMTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBNQUNWTEFOXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0xNjM9c291cmNlIFxcXCJkcml2ZXJzL25ldC90ZWFtL0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xNjQtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzoxNjU6Y29uZmlnIE1BQ1ZMQU5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTE2Ni1cXHR0cmlzdGF0ZSBcXFwiTUFDLVZMQU4gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTQ6Mzc6MzIuMzQ5NjE4NTFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQ0MTk2OTYzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIGBNQUNWTEFOYCBjb25maWd1cmF0aW9uIHdpdGhpbiBgZHJpdmVycy9uZXQvS2NvbmZpZ2AsIHRoaW5raW5nIGxpa2UgYSBzZWFzb25lZCBuZXR3b3JrIGVuZ2luZWVyOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBNQUNWTEFOIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBwdWxsIHVwIHRoZSBgS2NvbmZpZ2AgZmlsZSB3aXRoaW4gdGhlIG5ldHdvcmtpbmcgZHJpdmVycy4gVGltZSB0byBzZWUgd2hhdCB0aGUga2VybmVsJ3MgZ290IG9uIGBNQUNWTEFOYC4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaG93IHRoaXMgZmVhdHVyZSBpcyBkZWZpbmVkLCBjb25maWd1cmVkLCBhbmQsIGNyaXRpY2FsbHksIGhvdyBpdCBpbnRlZ3JhdGVzIHdpdGggZXZlcnl0aGluZyBlbHNlIGluIHRoZSBuZXR3b3JraW5nIHN0YWNrLiBJJ20gbG9va2luZyBmb3IgdGhlIGRlcGVuZGVuY2llcyDigJMgd2hhdCBvdGhlciBvcHRpb25zIG5lZWQgdG8gYmUgZW5hYmxlZCBiZWZvcmUgYE1BQ1ZMQU5gIGlzIGV2ZW4gY29uc2lkZXJlZD8gQXJlIHRoZXJlIGFueSBhcmNoaXRlY3R1cmFsIGxpbWl0YXRpb25zIEkgc2hvdWxkIGJlIGF3YXJlIG9mLCBsaWtlIHNwZWNpZmljIGhhcmR3YXJlIHJlcXVpcmVtZW50cyBvciBkcml2ZXIgZGVwZW5kZW5jaWVzP1xuXG5JJ20gYWxzbyBjdXJpb3VzIGFib3V0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhlbXNlbHZlcy4gQXJlIHRoZXJlIGdyYW51bGFyIGNvbnRyb2xzIGZvciB0aGluZ3MgbGlrZSBicmlkZ2UgcG9ydCBpc29sYXRpb24sIHByb21pc2N1b3VzIG1vZGUgaGFuZGxpbmcsIG9yIHNlY3VyaXR5IGZlYXR1cmVzPyBVbmRlcnN0YW5kaW5nIHRoZXNlIGtub2JzIGlzIGVzc2VudGlhbCBmb3IgZmluZS10dW5pbmcgcGVyZm9ybWFuY2UgYW5kIGVuc3VyaW5nIGNvcnJlY3QgYmVoYXZpb3IgaW4gZGlmZmVyZW50IGRlcGxveW1lbnQgc2NlbmFyaW9zLiBBcmUgdGhlcmUgYW55IGRlZmF1bHQgdmFsdWVzIHRoYXQgSSBzaG91bGQgYmUgbWluZGZ1bCBvZiwgYmVjYXVzZSB0aG9zZSBjYW4gaW5mbHVlbmNlIGJlaGF2aW9yIG1vcmUgdGhhbiB0aGUgb2J2aW91cyBzZXR0aW5ncz8gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIGFueSBoaWRkZW4gZ290Y2hhcywgdGhpbmdzIHRoYXQgbWlnaHQgdHJpcCBtZSB1cCB3aGVuIHNldHRpbmcgaXQgdXAgd2l0aCBzcGVjaWZpYyBoYXJkd2FyZSBvciBkaWZmZXJlbnQgbmV0d29yayB0b3BvbG9naWVzLlxuQmFzaWNhbGx5LCBJIG5lZWQgdG8ga25vdyB0aGUgZW50aXJlIGxhbmRzY2FwZSBiZWZvcmUgSSBzdGFydC4gSSB3YW50IHRvIGJ1aWxkIGEgcGVyZmVjdCBtZW50YWwgbWFwLCBhbmQgdGhpcyBgS2NvbmZpZ2AgZmlsZSBpcyB0aGUga2V5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDM0LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTQ6Mzc6MzUuNzkxNTkxMjA5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk2NTQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMTY1LFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMTY1OlxcdGNvbmZpZyBNQUNWTEFOXFxuIDE2NjpcXHRcXHR0cmlzdGF0ZSBcXFwiTUFDLVZMQU4gc3VwcG9ydFxcXCJcXG4gMTY3OlxcdFxcdGhlbHBcXG4gMTY4OlxcdFxcdCAgVGhpcyBhbGxvd3Mgb25lIHRvIGNyZWF0ZSB2aXJ0dWFsIGludGVyZmFjZXMgdGhhdCBtYXAgcGFja2V0cyB0b1xcbiAxNjk6XFx0XFx0ICBvciBmcm9tIHNwZWNpZmljIE1BQyBhZGRyZXNzZXMgdG8gYSBwYXJ0aWN1bGFyIGludGVyZmFjZS5cXG4gMTcwOlxcdFxcbiAxNzE6XFx0XFx0ICBNYWN2bGFuIGRldmljZXMgY2FuIGJlIGFkZGVkIHVzaW5nIHRoZSBcXFwiaXBcXFwiIGNvbW1hbmQgZnJvbSB0aGVcXG4gMTcyOlxcdFxcdCAgaXByb3V0ZTIgcGFja2FnZSBzdGFydGluZyB3aXRoIHRoZSBpcHJvdXRlMi0yLjYuMjMgcmVsZWFzZTpcXG4gMTczOlxcdFxcbiAxNzQ6XFx0XFx0ICBcXFwiaXAgbGluayBhZGQgbGluayBcXHUwMDNjcmVhbCBkZXZcXHUwMDNlIFsgYWRkcmVzcyBNQUMgXSBbIE5BTUUgXSB0eXBlIG1hY3ZsYW5cXFwiXFxuIDE3NTpcXHRcXG4gMTc2OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAxNzc6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBtYWN2bGFuLlxcbiAxNzg6XFx0XFxuIDE3OTpcXHRjb25maWcgTUFDVlRBUFxcbiAxODA6XFx0XFx0dHJpc3RhdGUgXFxcIk1BQy1WTEFOIGJhc2VkIHRhcCBkcml2ZXJcXFwiXFxuIDE4MTpcXHRcXHRkZXBlbmRzIG9uIE1BQ1ZMQU5cXG4gMTgyOlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAxODM6XFx0XFx0c2VsZWN0IFRBUFxcbiAxODQ6XFx0XFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDozNzozNS43OTE2OTA1NloiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDYwNjQwMjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgTUFDVkxBTiBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBiZWF1dHkgb2YgYE1BQ1ZMQU5gIGlzIHRoYXQgaXQncyBzdXBwb3NlZCB0byBiZSBsYXJnZWx5IHNlbGYtY29udGFpbmVkLCBtZWFuaW5nIG1pbmltYWwgZGVwZW5kZW5jaWVzLiBSaWdodCwgc28gSSB3YW50IHRvIGZvY3VzIG15IGF0dGVudGlvbiBvbiBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AsIHRoYXQncyBnb2luZyB0byBiZSB0aGUgaGVhcnQgb2YgY3JlYXRpbmcgbmV3IGludGVyZmFjZXMuIEJ1dCB3YWl0IGEgbWludXRlLCBgbWFjdmxhbl9pbml0YCBpcyBjYWxsZWQgYXMgcGFydCBvZiB0aGUgYHJlZ2lzdGVyX25ldGRldmljZWAgc2VxdWVuY2UuIFRoYXQncyBhIGJpdCBmdXJ0aGVyIHVwc3RyZWFtIHRoYW4gSSBpbml0aWFsbHkgdGhvdWdodC4gSXQgYWx3YXlzIGhlbHBzIHRvIHNlZSB3aGVyZSB0aGlzIHN0dWZmIGdldHMgaW50ZWdyYXRlZC4gTm93LCBhcmUgdGhlcmUgYW55IG90aGVyIGZ1bmN0aW9ucyB0aGF0IGFyZSB0b3VjaGVkIGJ5IHRoaXMgbWVjaGFuaXNtLCBhbnkgdGhhdCBtaWdodCBiZSBhZmZlY3RlZCBieSBjaGFuZ2VzIGluIGhvdyBpdCdzIGluaXRpYWxpemVkPyBHaXZlbiB0aGUgcGF0Y2ggYWx0ZXJzIGBtYWN2bGFuX2luaXRgLCBJIHNob3VsZCBwcm9iYWJseSBnbyBiYWNrIGFuZCB0YWtlIGFub3RoZXIgbG9vayBhdCB0aGF0IHNwZWNpZmljIGZ1bmN0aW9uIHRvIHNlZSAqZXhhY3RseSogd2hhdCdzIGdvaW5nIG9uIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODA3NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgyLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTQ6Mzc6MzkuMjUyMzMzMzE5WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1OTg5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9tYWN2bGFuLmNcIixcbiAgXCJGaXJzdExpbmVcIjogOTQwLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgOTQwOlxcdHN0YXRpYyBpbnQgbWFjdmxhbl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIDk0MTpcXHR7XFxuIDk0MjpcXHRcXHRzdHJ1Y3QgbWFjdmxhbl9kZXYgKnZsYW4gPSBuZXRkZXZfcHJpdihkZXYpO1xcbiA5NDM6XFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKmxvd2VyZGV2ID0gdmxhbi1cXHUwMDNlbG93ZXJkZXY7XFxuIDk0NDpcXHRcXHRzdHJ1Y3QgbWFjdmxhbl9wb3J0ICpwb3J0ID0gdmxhbi1cXHUwMDNlcG9ydDtcXG4gOTQ1OlxcdFxcbiA5NDY6XFx0XFx0ZGV2LVxcdTAwM2VzdGF0ZVxcdFxcdD0gKGRldi1cXHUwMDNlc3RhdGUgXFx1MDAyNiB+TUFDVkxBTl9TVEFURV9NQVNLKSB8XFxuIDk0NzpcXHRcXHRcXHRcXHRcXHQgIChsb3dlcmRldi1cXHUwMDNlc3RhdGUgXFx1MDAyNiBNQUNWTEFOX1NUQVRFX01BU0spO1xcbiA5NDg6XFx0XFx0ZGV2LVxcdTAwM2VmZWF0dXJlcyBcXHRcXHQ9IGxvd2VyZGV2LVxcdTAwM2VmZWF0dXJlcyBcXHUwMDI2IE1BQ1ZMQU5fRkVBVFVSRVM7XFxuIDk0OTpcXHRcXHRkZXYtXFx1MDAzZWZlYXR1cmVzXFx0XFx0fD0gQUxXQVlTX09OX0ZFQVRVUkVTO1xcbiA5NTA6XFx0XFx0ZGV2LVxcdTAwM2Vod19mZWF0dXJlc1xcdHw9IE5FVElGX0ZfTFJPO1xcbiA5NTE6XFx0XFx0ZGV2LVxcdTAwM2V2bGFuX2ZlYXR1cmVzXFx0PSBsb3dlcmRldi1cXHUwMDNldmxhbl9mZWF0dXJlcyBcXHUwMDI2IE1BQ1ZMQU5fRkVBVFVSRVM7XFxuIDk1MjpcXHRcXHRkZXYtXFx1MDAzZXZsYW5fZmVhdHVyZXNcXHR8PSBBTFdBWVNfT05fT0ZGTE9BRFM7XFxuIDk1MzpcXHRcXHRkZXYtXFx1MDAzZWh3X2VuY19mZWF0dXJlcyAgICB8PSBkZXYtXFx1MDAzZWZlYXR1cmVzO1xcbiA5NTQ6XFx0XFx0ZGV2LVxcdTAwM2VsbHR4XFx0XFx0PSB0cnVlO1xcbiA5NTU6XFx0XFx0bmV0aWZfaW5oZXJpdF90c29fbWF4KGRldiwgbG93ZXJkZXYpO1xcbiA5NTY6XFx0XFx0ZGV2LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW5cXHQ9IGxvd2VyZGV2LVxcdTAwM2VoYXJkX2hlYWRlcl9sZW47XFxuIDk1NzpcXHRcXHRkZXYtXFx1MDAzZW5lZWRlZF9oZWFkcm9vbVxcdD0gbG93ZXJkZXYtXFx1MDAzZW5lZWRlZF9oZWFkcm9vbTtcXG4gOTU4OlxcdFxcdGRldi1cXHUwMDNlbmVlZGVkX3RhaWxyb29tXFx0PSBsb3dlcmRldi1cXHUwMDNlbmVlZGVkX3RhaWxyb29tO1xcbiA5NTk6XFx0XFx0bWFjdmxhbl9zZXRfbG9ja2RlcF9jbGFzcyhkZXYpO1xcbiA5NjA6XFx0XFxuIDk2MTpcXHRcXHR2bGFuLVxcdTAwM2VwY3B1X3N0YXRzID0gbmV0ZGV2X2FsbG9jX3BjcHVfc3RhdHMoc3RydWN0IHZsYW5fcGNwdV9zdGF0cyk7XFxuIDk2MjpcXHRcXHRpZiAoIXZsYW4tXFx1MDAzZXBjcHVfc3RhdHMpXFxuIDk2MzpcXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gOTY0OlxcdFxcbiA5NjU6XFx0XFx0cG9ydC1cXHUwMDNlY291bnQgKz0gMTtcXG4gOTY2OlxcdFxcbiA5Njc6XFx0XFx0LyogR2V0IG1hY3ZsYW4ncyByZWZlcmVuY2UgdG8gbG93ZXJkZXYgKi9cXG4gOTY4OlxcdFxcdG5ldGRldl9ob2xkKGxvd2VyZGV2LCBcXHUwMDI2dmxhbi1cXHUwMDNlZGV2X3RyYWNrZXIsIEdGUF9LRVJORUwpO1xcbiA5Njk6XFx0XFxuIDk3MDpcXHRcXHRyZXR1cm4gMDtcXG4gOTcxOlxcdH1cXG4gOTcyOlxcdFxcbiA5NzM6XFx0c3RhdGljIHZvaWQgbWFjdmxhbl91bmluaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gOTc0OlxcdHtcXG4gOTc1OlxcdFxcdHN0cnVjdCBtYWN2bGFuX2RldiAqdmxhbiA9IG5ldGRldl9wcml2KGRldik7XFxuIDk3NjpcXHRcXHRzdHJ1Y3QgbWFjdmxhbl9wb3J0ICpwb3J0ID0gdmxhbi1cXHUwMDNlcG9ydDtcXG4gOTc3OlxcdFxcbiA5Nzg6XFx0XFx0ZnJlZV9wZXJjcHUodmxhbi1cXHUwMDNlcGNwdV9zdGF0cyk7XFxuIDk3OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTQ6Mzc6MzkuMjUyNDk0MzU5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5NDI0MjcyNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHdvcmtpbmcgcGF0Y2gsIHdoaWNoIGlzIGdyZWF0LCBhbmQgSSdtIHRoaW5raW5nIHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIHNvbWUgZnV6emluZy4gTGV0J3Mgc2VlLi4uIEkgbmVlZCBhIGdvb2QgZm9jdXMgZnVuY3Rpb24gdG8gc3RhcnQgd2l0aC4gR2l2ZW4gdGhlIHBhdGNoJ3MgcHVycG9zZSwgYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgIGltbWVkaWF0ZWx5IGp1bXBzIG91dC4gSXQncyBjcnVjaWFsIGJlY2F1c2UgaXQncyB3aGVyZSB0aGUgbWFjdmxhbiBkZXZpY2UgaXMgYWN0dWFsbHkgc2V0IHVwLCByZWdpc3RlcmVkLCBhbmQgc2VlbXMgdG8gYmUgdGhlIGVudHJ5IHBvaW50IGZvciBpbml0aWFsaXphdGlvbiB2aWEgYSBjYWxsIHRvIGBtYWN2bGFuX2luaXRgLlxuXG5XYWl0IGEgbWludXRlLCBpc24ndCBgbWFjdmxhbl9uZXdsaW5rYCB0aGUgcnRubCBsaW5rIG9wZXJhdGlvbiB0aGF0IHRoZW4gKmNhbGxzKiBgbWFjdmxhbl9jb21tb25fbmV3bGlua2A/IEJpbmdvISBTaW5jZSBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AgaXMgZXhwb3J0ZWQsIGl0J3MgYSBwZXJmZWN0IHRhcmdldCB0byBzdGFydCB3aXRoLiBJdOKAmXMgZ290IGdvb2QgYWNjZXNzaWJpbGl0eSBmb3IgZnV6emluZy5cblxuQW5kIGhleSwgSSBiZXQgYG1hY3Z0YXBfbmV3bGlua2AgaXMgYWxzbyB3b3J0aCBjaGVja2luZywgYW5kIEkgYmV0IGl0IGNhbGxzIHRoYXQgc2FtZSBmdW5jdGlvbiwgYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgLiBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGF0LCBhbmQgc2luY2UgaXQgaXMgaW4gYGRyaXZlcnMvbmV0L21hY3Z0YXAuY2AsIEknbGwgc3RhcnQgYnkgY2hlY2tpbmcgdGhhdCBmaWxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5MTE1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjVUMTQ6Mzc6NDQuMTk0OTI0MjJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc3ODA4ODM2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hY3Z0YXBfbmV3bGlua1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9tYWN2dGFwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvbWFjdnRhcC5jPTcxPXN0YXRpYyB2b2lkIG1hY3Z0YXBfdXBkYXRlX2ZlYXR1cmVzKHN0cnVjdCB0YXBfZGV2ICp0YXAsXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2dGFwLmMtODAtXFxuZHJpdmVycy9uZXQvbWFjdnRhcC5jOjgxOnN0YXRpYyBpbnQgbWFjdnRhcF9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuZHJpdmVycy9uZXQvbWFjdnRhcC5jLTgyLVxcdFxcdFxcdCAgIHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2dGFwLmM9MTQxPXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyBtYWN2dGFwX2xpbmtfb3BzIF9fcmVhZF9tb3N0bHkgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tYWN2dGFwLmMtMTQzLVxcdC5zZXR1cFxcdFxcdD0gbWFjdnRhcF9zZXR1cCxcXG5kcml2ZXJzL25ldC9tYWN2dGFwLmM6MTQ0OlxcdC5uZXdsaW5rXFx0PSBtYWN2dGFwX25ld2xpbmssXFxuZHJpdmVycy9uZXQvbWFjdnRhcC5jLTE0NS1cXHQuZGVsbGlua1xcdD0gbWFjdnRhcF9kZWxsaW5rLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNVQxNDozNzo0NC4yNzI3Mzc1NTZaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgzNTAwMDA0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBtYWN2bGFuYCBhbmQgYG1hY3Z0YXBgIEtlcm5lbCBNb2R1bGUgU3RydWN0dXJlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIGBtYWN2dGFwX25ld2xpbmtgIGlzIHN0YXRpYywgd2hpY2ggbWVhbnMgaXQgaXNuJ3QgZGlyZWN0bHkgZXhwb3NlZCBhbmQgbGlrZWx5IG5vdCB0aGUga2V5IGVudHJ5IHBvaW50IHdlJ3JlIGFmdGVyLiBUaGF0IG1lYW5zIGBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rYCBpcyB0aGUgbW9yZSBwcm9taXNpbmcgZnVuY3Rpb24gdG8gZm9jdXMgb24uIFdlIG5lZWQgdG8gY2hlY2sgZm9yIGFueSBvdGhlciBleHBvcnRlZCBmdW5jdGlvbnMgdGhhdCBtaWdodCB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG1hY3ZsYW4uXG5cbkxldCdzIHNlZS4uLiBsb29raW5nIGF0IHRoZSBjb2RlLCBpdCBsb29rcyBsaWtlIGBtYWN2bGFuX2luaXRgIGlzIGNhbGxlZCBieSBgcmVnaXN0ZXJfbmV0ZGV2aWNlYCwgd2hpY2ggaXMgaXRzZWxmIGNhbGxlZCBieSBgbWFjdmxhbl9jb21tb25fbmV3bGlua2AuIEFoYSEgU28gYG1hY3ZsYW5fY29tbW9uX25ld2xpbmtgIGlzIGRlZmluaXRlbHkgdGhlIHJpZ2h0IHBsYWNlIHRvIHN0YXJ0IGxvb2tpbmcuIFRoaXMgZml0cyB3aXRoIHRoZSBpbml0aWFsIGh1bmNoLlxuXG5Ob3csIGxldCdzIHRoaW5rIGFib3V0IHRoZSBjb25maWd1cmF0aW9uLiBXZSBhcmUgd29ya2luZyB3aXRoIGBNQUNWTEFOYCBoZXJlLlxuXG5SaWdodCwgbGV0J3MganVzdCBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBNQUNWTEFOYCBkb2Vzbid0IGRlcGVuZCBvbiBhbnkgb3RoZXIgb2JzY3VyZSBjb25maWcgb3B0aW9ucy4gSXQgYXBwZWFycyB0byBiZSBpbmRlcGVuZGVudC4gRXhjZWxsZW50LiBOb3csIGBNQUNWVEFQYCBkZXBlbmRzIG9uIGBNQUNWTEFOYCBhbmQgYElORVRgLCBzbyB3ZSBjYW4ganVzdCBpbmNsdWRlIGBNQUNWTEFOYCBhbmQgaGFuZGxlIHRoYXQuXG5cbk9rYXksIHRoYXQgc2VlbXMgdG8gY292ZXIgYWxsIG9mIHRoZSBzYWxpZW50IHBvaW50cy4gVGltZSB0byBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk3OTAsIk91dHB1dFRva2VucyI6MTE0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI1VDE0OjM3OjQ5LjEwNzczOTczM1oiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0Njg3MTU4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDVkxBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hY3ZsYW5fY29tbW9uX25ld2xpbmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgbWFjdmxhbiBkZXZpY2VzIGJ5IGluaGVyaXRpbmcgbmVlZGVkX2hlYWRyb29tIGFuZCBuZWVkZWRfdGFpbHJvb20gZnJvbSB0aGUgbG93ZXIgZGV2aWNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHBhY2tldCBwcm9jZXNzaW5nLiBUaGUgZW50cnkgcG9pbnQgZm9yIGNyZWF0aW5nIG1hY3ZsYW4gZGV2aWNlcyBpcyBtYWN2bGFuX2NvbW1vbl9uZXdsaW5rLCB3aGljaCBjYWxscyByZWdpc3Rlcl9uZXRkZXZpY2UgYW5kIHRyaWdnZXJzIG1hY3ZsYW5faW5pdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJNQUNWTEFOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibWFjdmxhbl9jb21tb25fbmV3bGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBvZiBtYWN2bGFuIGRldmljZXMgYnkgaW5oZXJpdGluZyBuZWVkZWRfaGVhZHJvb20gYW5kIG5lZWRlZF90YWlscm9vbSBmcm9tIHRoZSBsb3dlciBkZXZpY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgcGFja2V0IHByb2Nlc3NpbmcuIFRoZSBlbnRyeSBwb2ludCBmb3IgY3JlYXRpbmcgbWFjdmxhbiBkZXZpY2VzIGlzIG1hY3ZsYW5fY29tbW9uX25ld2xpbmssIHdoaWNoIGNhbGxzIHJlZ2lzdGVyX25ldGRldmljZSBhbmQgdHJpZ2dlcnMgbWFjdmxhbl9pbml0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowsqp5n[1] Phase: Succeeded StartedAt: 2026-07-25 14:38:03 +0000 UTC FinishedAt: 2026-07-25 14:38:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqp5n[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-25 14:38:04 +0000 UTC FinishedAt: 2026-07-25 14:38:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqp5n[2] Phase: Succeeded StartedAt: 2026-07-25 14:38:04 +0000 UTC FinishedAt: 2026-07-25 14:38:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqp5n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"4e6aa53b-60fb-4287-ab2e-9c0b55133530","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-07-25 14:38:06 +0000 UTC FinishedAt: 2026-07-25 14:38:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"4e6aa53b-60fb-4287-ab2e-9c0b55133530","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowsqp5n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"4e6aa53b-60fb-4287-ab2e-9c0b55133530","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-25 14:38:07 +0000 UTC FinishedAt: 2026-07-25 14:38:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsqp5n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"4e6aa53b-60fb-4287-ab2e-9c0b55133530","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-25 14:38:07 +0000 UTC FinishedAt: 2026-07-25 14:38:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowsqp5n[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["macvlan_common_newlink"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"04026c998c24ac47eb76886b9790c5710b603eb4","config_name":"upstream-apparmor-kasan.config","enable_configs":["MACVLAN"],"series_id":"4e6aa53b-60fb-4287-ab2e-9c0b55133530","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Error StartedAt: 2026-07-25 14:38:56 +0000 UTC FinishedAt: 2026-07-25 14:38:56 +0000 UTC Input: nil Output: nil