Name: series-workflowwk7hz Phase: Succeeded StartedAt: 2026-08-04 16:23:27 +0000 UTC FinishedAt: 2026-08-04 20:32:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk7hz[0] Phase: Succeeded StartedAt: 2026-08-04 16:23:27 +0000 UTC FinishedAt: 2026-08-04 16:39:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk7hz[0].run-triage Phase: Succeeded StartedAt: 2026-08-04 16:23:27 +0000 UTC FinishedAt: 2026-08-04 16:39:43 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "a347304b2ca1a5377d5bd2d8a72e4b4f12afe648", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPVLAN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "a347304b2ca1a5377d5bd2d8a72e4b4f12afe648", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPVLAN" ], "series_id": "0f0ae794-02c9-4e48-9dbc-3049ec1aa415" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ipvlan_link_new", "ipvlan_link_setup" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVkxBTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwdmxhbl9saW5rX25ldyYjMzQ7LAogICAgJiMzNDtpcHZsYW5fbGlua19zZXR1cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIGV2ZW50IGhhbmRsaW5nIG9mIGlwdmxhbiBkZXZpY2VzIHRvIGluaGVyaXQgdGhlIGBuZWVkZWRfaGVhZHJvb21gIGZyb20gdGhlIHBoeXNpY2FsIGRldmljZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBpcHZsYW4gZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjM4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjQyM2UxNGY3NjIyZjNmYjJjOWViMGQ2MmQzNjM4NDNmMjcxMTY4MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMTY6Mzg6MzQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMgYi9kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uY1xuaW5kZXggZWQ0NjQzOWE5ZjRlYi4uNzUxM2MwMDVhNTEyMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uY1xuQEAgLTE0Niw2ICYjNDM7MTQ2LDcgQEAgc3RhdGljIGludCBpcHZsYW5faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0ZGV2LVx1MDAzZWxsdHggPSB0cnVlO1xuIFx0bmV0aWZfaW5oZXJpdF90c29fbWF4KGRldiwgcGh5X2Rldik7XG4gXHRkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuID0gcGh5X2Rldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW47XG4mIzQzO1x0ZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbSA9IHBoeV9kZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tO1xuIFxuIFx0bmV0ZGV2X2xvY2tkZXBfc2V0X2NsYXNzZXMoZGV2KTtcbiBcbkBAIC03NzMsNiAmIzQzOzc3NCw3IEBAIHN0YXRpYyBpbnQgaXB2bGFuX2RldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcbiBcdGNhc2UgTkVUREVWX0ZFQVRfQ0hBTkdFOlxuIFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGlwdmxhbiwgXHUwMDI2cG9ydC1cdTAwM2VpcHZsYW5zLCBwbm9kZSkge1xuIFx0XHRcdG5ldGlmX2luaGVyaXRfdHNvX21heChpcHZsYW4tXHUwMDNlZGV2LCBkZXYpO1xuJiM0MztcdFx0XHRpcHZsYW4tXHUwMDNlZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbSA9IGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb207XG4gXHRcdFx0bmV0ZGV2X3VwZGF0ZV9mZWF0dXJlcyhpcHZsYW4tXHUwMDNlZGV2KTtcbiBcdFx0fVxuIFx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjozODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBWTEFOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXB2bGFuX2xpbmtfbmV3JiMzNDssCiAgICAmIzM0O2lwdmxhbl9saW5rX3NldHVwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgZXZlbnQgaGFuZGxpbmcgb2YgaXB2bGFuIGRldmljZXMgdG8gaW5oZXJpdCB0aGUgYG5lZWRlZF9oZWFkcm9vbWAgZnJvbSB0aGUgcGh5c2ljYWwgZGV2aWNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGlwdmxhbiBkcml2ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiNDIzZTE0Zjc2MjJmM2ZiMmM5ZWIwZDYyZDM2Mzg0M2YyNzExNjgwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgNCAxNjozODozNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jIGIvZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMKaW5kZXggZWQ0NjQzOWE5ZjRlYi4uNzUxM2MwMDVhNTEyMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMKQEAgLTE0Niw2ICYjNDM7MTQ2LDcgQEAgc3RhdGljIGludCBpcHZsYW5faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCWRldi0mZ3Q7bGx0eCA9IHRydWU7CiAJbmV0aWZfaW5oZXJpdF90c29fbWF4KGRldiwgcGh5X2Rldik7CiAJZGV2LSZndDtoYXJkX2hlYWRlcl9sZW4gPSBwaHlfZGV2LSZndDtoYXJkX2hlYWRlcl9sZW47CiYjNDM7CWRldi0mZ3Q7bmVlZGVkX2hlYWRyb29tID0gcGh5X2Rldi0mZ3Q7bmVlZGVkX2hlYWRyb29tOwogCiAJbmV0ZGV2X2xvY2tkZXBfc2V0X2NsYXNzZXMoZGV2KTsKIApAQCAtNzczLDYgJiM0Mzs3NzQsNyBAQCBzdGF0aWMgaW50IGlwdmxhbl9kZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsCiAJY2FzZSBORVRERVZfRkVBVF9DSEFOR0U6CiAJCWxpc3RfZm9yX2VhY2hfZW50cnkoaXB2bGFuLCAmYW1wO3BvcnQtJmd0O2lwdmxhbnMsIHBub2RlKSB7CiAJCQluZXRpZl9pbmhlcml0X3Rzb19tYXgoaXB2bGFuLSZndDtkZXYsIGRldik7CiYjNDM7CQkJaXB2bGFuLSZndDtkZXYtJmd0O25lZWRlZF9oZWFkcm9vbSA9IGRldi0mZ3Q7bmVlZGVkX2hlYWRyb29tOwogCQkJbmV0ZGV2X3VwZGF0ZV9mZWF0dXJlcyhpcHZsYW4tJmd0O2Rldik7CiAJCX0KIAkJYnJlYWs7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTcKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJUHZsYW4gRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRhcmdldGluZyBgZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmNgLiBJbW1lZGlhdGVseSwgSSBzZWUgaXQmIzM5O3MgbWFraW5nIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gdG8gdGhlIElQdmxhbiBkcml2ZXIuIFRoZSBhZGRpdGlvbiBvZiBgZGV2LSZndDtuZWVkZWRfaGVhZHJvb20gPSBwaHlfZGV2LSZndDtuZWVkZWRfaGVhZHJvb207YCB3aXRoaW4gYGlwdmxhbl9pbml0YCBhbmQgYGlwdmxhbi0mZ3Q7ZGV2LSZndDtuZWVkZWRfaGVhZHJvb20gPSBkZXYtJmd0O25lZWRlZF9oZWFkcm9vbTtgIGluIGBpcHZsYW5fZGV2aWNlX2V2ZW50YCBpcyB0aGUga2V5LiBJdCYjMzk7cyBhc3NpZ25pbmcgdGhlIG5lZWRlZCBoZWFkcm9vbSBmcm9tIHRoZSBwaHlzaWNhbCBkZXZpY2UgdG8gdGhlIElQdmxhbiBkZXZpY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcy4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgZGlyZWN0bHkgaW1wYWN0cyBwYWNrZXQgaGFuZGxpbmcsIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIGhvdyBtdWNoIHNwYWNlIGlzIHJlc2VydmVkIGZvciBoZWFkZXJzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZyYW1lLCB3aGljaCBjYW4gYmUgY3JpdGljYWwgZm9yIGNlcnRhaW4gbmV0d29yayBjb25maWd1cmF0aW9ucy4KCkJlZm9yZSBkaXZpbmcgdG9vIGRlZXAgaW50byB0aGUgY29kZSwgSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoZSBLY29uZmlnLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZHJpdmVyIGlzIGNvcnJlY3RseSBjb25maWd1cmVkIGFuZCB0aGF0IHRoZXNlIGNoYW5nZXMgYXJlIGNvcnJlY3RseSBiZWluZyBlbmFibGVkLiBLbm93aW5nIHRoZSByZWxldmFudCBkZXBlbmRlbmNpZXMgYW5kIGJ1aWxkIGNvbmZpZ3VyYXRpb25zIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyBhbmQgd2hlbiB0aGlzIHBhdGNoIGlzIGdvaW5nIHRvIGFjdHVhbGx5IHRha2UgZWZmZWN0IGluIHZhcmlvdXMgY29udGV4dHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBWTEFOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvaXB2bGFuLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU4NgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKldoZXJlJiMzOTtzIHRoZSBpcHZsYW4gS2NvbmZpZz8qKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4gSSYjMzk7bSBkZWVwIGluIHRoaXMgbmV0d29ya2luZyBjb2RlIGFuZCBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBJUHZMQU4uIEkga25vdyBJJiMzOTt2ZSB3b3JrZWQgd2l0aCBpdCBiZWZvcmUsIGJ1dCBmb3IgdGhlIGxpZmUgb2YgbWUsIEkgY2FuJiMzOTt0IGltbWVkaWF0ZWx5IHJlY2FsbCB3aGVyZSB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlIGlzIGxvY2F0ZWQuIEl0JiMzOTtzIHByb2JhYmx5IGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgYnV0IHRoYXQmIzM5O3MgYSBwcmV0dHkgYnJvYWQgYXJlYS4gSSBuZWVkIHRvIGdldCB0aGlzIGVuYWJsZWQvZGlzYWJsZWQsIG9yIG1heWJlIHR3ZWFrIHNvbWUgcGFyYW1ldGVycywgYnV0IHdpdGhvdXQgdGhlIEtjb25maWcsIEkmIzM5O20gc3R1Y2suIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIHVzdWFsIHN1c3BlY3RzIOKAkyB0aGUgY29yZSBuZXR3b3JraW5nIGRpcmVjdG9yeSwgbWF5YmUgdGhlIGJyaWRnZSBjb2RlLi4uIGl0JiMzOTtzIGp1c3QgZnJ1c3RyYXRpbmcgbm90IGJlaW5nIGFibGUgdG8gZmluZCBpdCBpbnN0YW50bHkuIFRpbWUgdG8gc3RhcnQgZGlnZ2luZywgbWF5YmUgc29tZSBncmVwcGluZyB0byBzZWUgaWYgSSBjYW4gcGlucG9pbnQgaXQgcXVpY2tlciB0aGFuIHdhbGtpbmcgdGhlIGZpbGVzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQVkxBTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTE3OT1jb25maWcgTUFDVlRBUFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctMTkyLVxuZHJpdmVycy9uZXQvS2NvbmZpZzoxOTM6Y29uZmlnIElQVkxBTl9MM1NcbmRyaXZlcnMvbmV0L0tjb25maWctMTk0LVx0ZGVwZW5kcyBvbiBORVRGSUxURVJcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTE5OC1cbmRyaXZlcnMvbmV0L0tjb25maWc6MTk5OmNvbmZpZyBJUFZMQU5cbmRyaXZlcnMvbmV0L0tjb25maWctMjAwLVx0dHJpc3RhdGUgXCYjMzQ7SVAtVkxBTiBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk0OQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgTmV0d29yayBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBzb21lIHNwZWNpZmljIG5ldHdvcmsgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgaGFuZGxlZC4gSSBrbm93IGl0JiMzOTtzIGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBzeXN0ZW0sIHNvIEkmIzM5O2xsIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L0tjb25maWdgLiBUaGlzIGlzIHVzdWFsbHkgdGhlIGdvLXRvIHBsYWNlIGZvciBuZXR3b3JrIGRyaXZlci1zcGVjaWZpYyBvcHRpb25zLiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgdG8gYXJvdW5kIGxpbmUgMTk5LiBUaGF0IHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIHN0YXJ0aW5nIHBvaW50OyBpdCYjMzk7cyBwcm9iYWJseSBhcm91bmQgdGhlIHBhcnQgb2YgdGhlIGZpbGUgdGhhdCBkZWFscyB3aXRoIHRoZSBtb3JlIGZvdW5kYXRpb25hbCBvciBnZW5lcmFsIG5ldHdvcmsgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJiMzOTttIGJldHRpbmcgdGhhdCYjMzk7cyB3aGVyZSBJIGNhbiBnZXQgbXkgYmVhcmluZ3MgYW5kIHNlZSBob3cgdGhpcyBwYXJ0aWN1bGFyIG9wdGlvbiBpcyBpbnRlZ3JhdGVkIGludG8gdGhlIGxhcmdlciBjb25maWd1cmF0aW9uIGZyYW1ld29yay4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBhIGRlZmluaXRpb24sIG1heWJlIHNvbWUgZGVwZW5kZW5jaWVzLCBhbmQgcGVyaGFwcyBzb21lIGFzc29jaWF0ZWQgaGVscCB0ZXh0IHRoYXQgd2lsbCBpbGx1bWluYXRlIGl0cyBwdXJwb3NlIGFuZCBiZWhhdmlvci4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YXJndW1lbnQgJiMzNDtGaXJzdExpbmUmIzM0OyBoYXMgd3JvbmcgdHlwZTogZ290IHN0cmluZywgd2FudCBpbnQ8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6ICYjMzQ7MTkwJiMzNDssCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogJiMzNDsyMCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O2FyZ3VtZW50IFwmIzM0O0ZpcnN0TGluZVwmIzM0OyBoYXMgd3JvbmcgdHlwZTogZ290IHN0cmluZywgd2FudCBpbnQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIyNgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRoaW5raW5nLCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSB5b3VyIG93biBleHBlcnQgaW50ZXJuYWwgZGlhbG9ndWU6CgoqKkludGVnZXIgQ29uc3RyYWludCBmb3IgRmlyc3RMaW5lKioKCk9rYXksIGxldCYjMzk7cyBwcm9jZXNzIHRoaXMuIFRoZSBjb3JlIG9mIHRoaXMgc3lzdGVtLCBvciBhdCBsZWFzdCBhIGNydWNpYWwgcGFydCBvZiBpdCwgc2VlbXMgdG8gcmVseSBvbiB0aGUgdmFyaWFibGUgYEZpcnN0TGluZWAuIEltbWVkaWF0ZWx5LCBhbGFybSBiZWxscyBhcmUgcmluZ2luZyBpbiBteSBoZWFkLiBKdWRnaW5nIGJ5IHRoZSBjb250ZXh0IGFuZCBsaWtlbHkgZG93bnN0cmVhbSBvcGVyYXRpb25zLCBJJiMzOTttIHZpcnR1YWxseSBjZXJ0YWluIGBGaXJzdExpbmVgIG5lZWRzIHRvIGJlIGRlZmluZWQgYXMgYW4gaW50ZWdlci4gQW55IG90aGVyIGRhdGEgdHlwZSBpbnRyb2R1Y2VzIGEgaG9zdCBvZiBwb3RlbnRpYWwgcHJvYmxlbXMuIEZsb2F0aW5nLXBvaW50IG51bWJlcnMgd291bGQgYmUgYSBkaXNhc3RlciBmb3IgYW55IGtpbmQgb2YgaW5kZXhpbmcsIG9mZnNldHMgb3IgbGluZSBudW1iZXJpbmcuIFN0cmluZ3MsIG9yIHdvcnNlLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgd291bGQgY3Jhc2ggb3IgY29ycnVwdCB0aGUgZnVuY3Rpb25hbGl0eS4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gZW5zdXJlIHRoaXMgY29uc3RyYWludCBpcyBlbmZvcmNlZC4gSSYjMzk7bGwgbmVlZCB0byBnbyBiYWNrIGFuZCBjaGVjayB0aGUgZGVmaW5pdGlvbiBvZiBgRmlyc3RMaW5lYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxOTA6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDE5MTpcdFx0ICB3aWxsIGJlIGNhbGxlZCBtYWN2dGFwLlxuIDE5MjpcdFxuIDE5MzpcdGNvbmZpZyBJUFZMQU5fTDNTXG4gMTk0Olx0XHRkZXBlbmRzIG9uIE5FVEZJTFRFUlxuIDE5NTpcdFx0ZGVwZW5kcyBvbiBJUFZMQU5cbiAxOTY6XHRcdGRlZl9ib29sIHlcbiAxOTc6XHRcdHNlbGVjdCBORVRfTDNfTUFTVEVSX0RFVlxuIDE5ODpcdFxuIDE5OTpcdGNvbmZpZyBJUFZMQU5cbiAyMDA6XHRcdHRyaXN0YXRlIFwmIzM0O0lQLVZMQU4gc3VwcG9ydFwmIzM0O1xuIDIwMTpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gMjAyOlx0XHRoZWxwXG4gMjAzOlx0XHQgIFRoaXMgYWxsb3dzIG9uZSB0byBjcmVhdGUgdmlydHVhbCBkZXZpY2VzIG9mZiBvZiBhIG1haW4gaW50ZXJmYWNlXG4gMjA0Olx0XHQgIGFuZCBwYWNrZXRzIHdpbGwgYmUgZGVsaXZlcmVkIGJhc2VkIG9uIHRoZSBkZXN0IEwzIChJUHY2L0lQdjQgYWRkcilcbiAyMDU6XHRcdCAgb24gcGFja2V0cy4gQWxsIGludGVyZmFjZXMgKGluY2x1ZGluZyB0aGUgbWFpbiBpbnRlcmZhY2UpIHNoYXJlIEwyXG4gMjA2Olx0XHQgIG1ha2luZyBpdCB0cmFuc3BhcmVudCB0byB0aGUgY29ubmVjdGVkIEwyIHN3aXRjaC5cbiAyMDc6XHRcbiAyMDg6XHRcdCAgSXB2bGFuIGRldmljZXMgY2FuIGJlIGFkZGVkIHVzaW5nIHRoZSBcJiMzNDtpcFwmIzM0OyBjb21tYW5kIGZyb20gdGhlXG4gMjA5Olx0XHQgIGlwcm91dGUyIHBhY2thZ2Ugc3RhcnRpbmcgd2l0aCB0aGUgaXByb3V0ZTItMy4xOSByZWxlYXNlOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzU5CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSVBWTEFOIENvbmZpZ3VyYXRpb24gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYElQVkxBTmAgY29uZmlndXJhdGlvbi4gVGhlIHBhdGNoIHNlZW1zIHRvIGJlIGZvY3VzZWQgb24gbW9kaWZ5aW5nIHRoZSBgaXB2bGFuX2luaXRgIGFuZCBgaXB2bGFuX2RldmljZV9ldmVudGAgZnVuY3Rpb25zLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdmVyaWZ5IGlmIHRoZXNlIGFyZSBkZWNsYXJlZCBhcyBgc3RhdGljYC4gUmlnaHQsIGxldCYjMzk7cyB0YWtlIGEgbG9vay4uLiBZZXAsIGJvdGggYGlwdmxhbl9pbml0YCBhbmQgYGlwdmxhbl9kZXZpY2VfZXZlbnRgIGFyZSBpbmRlZWQgZGVjbGFyZWQgYXMgYHN0YXRpY2AuCgpOb3csIHRoZSBpbnRlcmVzdGluZyBiaXQuIFNpbmNlIHRoZXkmIzM5O3JlIGBzdGF0aWNgLCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhleSYjMzk7cmUgKmFjdHVhbGx5KiBiZWluZyBjYWxsZWQuIEFyZSB0aGV5IG5ldF9kZXZpY2Vfb3BzIGNhbGxiYWNrcywgb3IgZG9lcyB0aGUgcGF0Y2ggaW50cm9kdWNlIHRoZW0gdG8gYmUgY2FsbGVkIGZyb20gc29tZSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIGRyaXZlcj8gSSBzaG91bGQgYmUgYWJsZSB0byByZWx5IG9uIHRoZSBmYWN0IHRoYXQgYGlwdmxhbl9pbml0YCBpcyBsaWtlbHkgdXNlZCBhcyBwYXJ0IG9mIGEgYG5ldF9kZXZpY2Vfb3BzYCBjYWxsYmFjayBvciBzb21ldGhpbmcgc2ltaWxhciwgYW5kIHRoZW4gdGhlIHBhdGNoIHdpbGwgcHJvYmFibHkgYWRkIHNpbWlsYXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMuIExldCYjMzk7cyBkaWcgZGVlcGVyIGFuZCBzZWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwdmxhbl9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvaXB2bGFuLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg9MTQ5PXN0YXRpYyBpbmxpbmUgdm9pZCBpcHZsYW5fY2xlYXJfdmVwYShzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xNTMtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTU0OnZvaWQgaXB2bGFuX2luaXRfc2VjcmV0KHZvaWQpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE1NS11bnNpZ25lZCBpbnQgaXB2bGFuX21hY19oYXNoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkZHIpO1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jPTEwPXN0YXRpYyB1MzIgaXB2bGFuX2poYXNoX3NlY3JldCBfX3JlYWRfbW9zdGx5O1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMTEtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzoxMjp2b2lkIGlwdmxhbl9pbml0X3NlY3JldCh2b2lkKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMTMte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jPTk2PXN0YXRpYyB2b2lkIGlwdmxhbl9wb3J0X2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMzEtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoxMzI6c3RhdGljIGludCBpcHZsYW5faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTMzLXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYz0zNjA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpcHZsYW5fbmV0ZGV2X29wcyA9IHtcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjM2MTpcdC5uZG9faW5pdFx0XHQ9IGlwdmxhbl9pbml0LFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMzYyLVx0Lm5kb191bmluaXRcdFx0PSBpcHZsYW5fdW5pbml0LFxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jPTUzOT1pbnQgaXB2bGFuX2xpbmtfbmV3KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNTk3LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NTk4Olx0LyogaXB2bGFuX2luaXQoKSB3b3VsZCBoYXZlIGNyZWF0ZWQgdGhlIHBvcnQsIGlmIHJlcXVpcmVkICovXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy01OTktXHRwb3J0ID0gaXB2bGFuX3BvcnRfZ2V0X3J0bmwocGh5X2Rldik7XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM9MTA0Mz1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGlwdmxhbl9hZGRyNl92dG9yX25vdGlmaWVyX2Jsb2NrIF9fcmVhZF9tb3N0bHkgPSB7XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTA0Ny1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjEwNDg6c3RhdGljIGludCBfX2luaXQgaXB2bGFuX2luaXRfbW9kdWxlKHZvaWQpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMDQ5LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMDUxLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MTA1MjpcdGlwdmxhbl9pbml0X3NlY3JldCgpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTA1My1cdHJlZ2lzdGVyX25ldGRldmljZV9ub3RpZmllcihcdTAwMjZpcHZsYW5fbm90aWZpZXJfYmxvY2spO1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jPTEwODY9c3RhdGljIHZvaWQgX19leGl0IGlwdmxhbl9jbGVhbnVwX21vZHVsZSh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTExMDAtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoxMTAxOm1vZHVsZV9pbml0KGlwdmxhbl9pbml0X21vZHVsZSk7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMTAyLW1vZHVsZV9leGl0KGlwdmxhbl9jbGVhbnVwX21vZHVsZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwMjUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIGdpdmVuIG15IGV4cGVydGlzZToKCioqTXkgUGVyc3BlY3RpdmUgb24gaXB2bGFuIEluaXRpYWxpemF0aW9uIGFuZCBFdmVudCBIYW5kbGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGBpcHZsYW5gIGNvZGUuIFRoZSBrZXkgdGFrZWF3YXkgaGVyZSBpcyB0aGF0IGBpcHZsYW5faW5pdGAgaXMgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwIGFuIGBpcHZsYW5gIGludGVyZmFjZS4gQW5kIHRoYXQmIzM5O3MgdHJpZ2dlcmVkIHRocm91Z2ggdGhlIHN0YW5kYXJkIGAubmRvX2luaXRgIGNhbGxiYWNrLCB3aGljaCBpcyBhIGNvbW1vbiB3YXkgbmV0d29yayBkcml2ZXJzIGdldCBpbml0aWFsaXplZCB3aXRoaW4gdGhlIGtlcm5lbC4gTWFrZXMgcGVyZmVjdCBzZW5zZTsgaXQmIzM5O3MgdGhlIG5hdHVyYWwgcG9pbnQgZm9yIHRoZSBkZXZpY2Utc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gdG8gb2NjdXIgYWZ0ZXIgdGhlIG5ldHdvcmsgZGV2aWNlIHN0cnVjdHVyZSBpdHNlbGYgaGFzIGJlZW4gYWxsb2NhdGVkIGFuZCBpcyByZWFkeSB0byBnby4KClRoZW4sIHRoZXJlJiMzOTtzIGBpcHZsYW5fZGV2aWNlX2V2ZW50YC4gVGhpcyBpcyBhY3RpbmcgYXMgYSBub3RpZmllciBibG9jayBjYWxsYmFjay4gVGhpcyBsaWtlbHkgbWVhbnMgdGhhdCBgaXB2bGFuX2RldmljZV9ldmVudGAgaXMgcmVnaXN0ZXJlZCB0byByZWNlaXZlIG5vdGlmaWNhdGlvbnMgYWJvdXQgdmFyaW91cyBkZXZpY2UtcmVsYXRlZCBldmVudHMsIGV2ZW50cyB0aGF0IHdpbGwgcmVxdWlyZSBpdCB0byByZXNwb25kLCByZWFjdCwgYW5kIHRha2UgYXBwcm9wcmlhdGUgYWN0aW9uLiBUaGlua2luZyBhaGVhZCwgSSYjMzk7ZCBleHBlY3QgaXQgdG8gaGFuZGxlIHRoaW5ncyBsaWtlIGxpbmsgc3RhdGUgY2hhbmdlcywgYWRkcmVzcyBhZGRpdGlvbnMvZGVsZXRpb25zLCBvciBwb3NzaWJseSBldmVuIGhvdHBsdWcgZXZlbnRzIHJlbGF0ZWQgdG8gdGhlIHBhcmVudCBwaHlzaWNhbCBpbnRlcmZhY2UuIEl0JiMzOTtzIHRoZSBzdGFuZGFyZCB3YXkgd2UgaGFuZGxlIGFzeW5jaHJvbm91cyBldmVudHMgcmVsYXRlZCB0byB0aGUgbmV0d29yayBkZXZpY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwdmxhbl9kZXZpY2VfZXZlbnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9pcHZsYW4vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jPTcyND1FWFBPUlRfU1lNQk9MX0dQTChpcHZsYW5fbGlua19yZWdpc3Rlcik7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03MjUtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo3MjY6c3RhdGljIGludCBpcHZsYW5fZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzI3LVx0XHRcdCAgICAgICB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM9MTAzND1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGlwdmxhbl9ub3RpZmllcl9ibG9jayBfX3JlYWRfbW9zdGx5ID0ge1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MTAzNTpcdC5ub3RpZmllcl9jYWxsID0gaXB2bGFuX2RldmljZV9ldmVudCxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEwMzYtfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU1MQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipEaXZpbmcgaW50byBJUHZsYW4gTGluayBDcmVhdGlvbioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHRyYWNpbmcgdGhlIGNyZWF0aW9uIG9mIGFuIElQdmxhbiBsaW5rIGhlcmUuIEl0IGxvb2tzIGxpa2UgYGlwdmxhbl9saW5rX25ld2AgaXMgdGhlIGtleSBmdW5jdGlvbjsgaXQmIzM5O3MgdGhlIHRyaWdnZXIuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgaXQgc2VlbXMgdG8gYmUgd2hhdCBraWNrcyBvZmYgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3Mgd2l0aCBgbmRvX2luaXRgLCB3aGljaCBmcm9tIGl0cyBuYW1lLCBzaG91bGQgYmUgdGhlIElQdmxhbi1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiAoYGlwdmxhbl9pbml0YCkuIEhtbSwgYnV0IEkgcmVjYWxsIHRoYXQgYG5kb19pbml0YCBpcyBjYWxsZWQgYnkgYHJlZ2lzdGVyX25ldGRldmljZWAsIHdoaWNoIEkgdGhpbmsgaXMgYSBnZW5lcmFsIG5ldHdvcmsgZGV2aWNlIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbi4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQuIEdpdmVuIHRoaXMsIEkgc2hvdWxkIG5vdyBmb2N1cyBvbiB2ZXJpZnlpbmcgdGhlIHJvbGUgb2YgYGlwdmxhbl9saW5rX25ld2AgYW5kIGBpcHZsYW5fbGlua19yZWdpc3RlcmAuIExldCYjMzk7cyBkaWcgZGVlcGVyIGludG8gdGhvc2UgdHdvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcHZsYW5fbGlua19uZXcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9pcHZsYW4vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaD0xNjc9dm9pZCBpcHZsYW5fY291bnRfcngoY29uc3Qgc3RydWN0IGlwdmxfZGV2ICppcHZsYW4sXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTY4LVx0XHQgICAgIHVuc2lnbmVkIGludCBsZW4sIGJvb2wgc3VjY2VzcywgYm9vbCBtY2FzdCk7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTY5OmludCBpcHZsYW5fbGlua19uZXcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHJ0bmxfbmV3bGlua19wYXJhbXMgKnBhcmFtcyxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xNzAtXHRcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jPTUxNz1zdGF0aWMgaW50IGlwdmxhbl9ubF9maWxsaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTUzOC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjUzOTppbnQgaXB2bGFuX2xpbmtfbmV3KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy01NDAtXHRcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNjU0LX1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjY1NTpFWFBPUlRfU1lNQk9MX0dQTChpcHZsYW5fbGlua19uZXcpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNjU2LVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jPTcwND1zdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgaXB2bGFuX2xpbmtfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTcwOC1cdC5zZXR1cFx0XHQ9IGlwdmxhbl9saW5rX3NldHVwLFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NzA5Olx0Lm5ld2xpbmtcdD0gaXB2bGFuX2xpbmtfbmV3LFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzEwLVx0LmRlbGxpbmtcdD0gaXB2bGFuX2xpbmtfZGVsZXRlLFxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZ0YXAuYz03Nz1zdGF0aWMgaW50IGlwdnRhcF9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdnRhcC5jLTEwMC1cdCAqL1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdnRhcC5jOjEwMTpcdGVyciA9IGlwdmxhbl9saW5rX25ldyhkZXYsIHBhcmFtcywgZXh0YWNrKTtcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZ0YXAuYy0xMDItXHRpZiAoZXJyKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0NDIKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgaXB2bGFuYCBDb2RlYmFzZSoqCgpPa2F5LCBzbyBJJiMzOTttIGhvbmluZyBpbiBvbiBgaXB2bGFuX2xpbmtfbmV3YCBhcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhpcyBjaGFuZ2UuIEJ1dCBsZXQmIzM5O3MgYnJvYWRlbiB0aGUgc2NvcGUgYSBiaXQuIFdoYXQgYWJvdXQgYGlwdmxhbl9kZXZpY2VfZXZlbnRgPyBUaGF0IG5vdGlmaWVyIGJsb2NrIHNlZW1zIGltcG9ydGFudCwgcmVhY3RpbmcgdG8gbmV0ZGV2IGV2ZW50cy4gSG1tLCBJIHN1c3BlY3QgdGhhdCBmdW5jdGlvbiBpdHNlbGYgbWlnaHQgYmUgc3RhdGljLCB3aGljaCB3b3VsZCBtYWtlIGl0IGxlc3MgdXNlZnVsIGFzIGEgcHJpbWFyeSBmb2N1cy4gSSBuZWVkIHRvIGZpbmQgdGhlIGZ1bmN0aW9uIHRoYXQgaXMgdGhlIGVudHJ5IHBvaW50LgoKVGhlIHBhdGNoIGl0c2VsZiBjb25jZXJucyBgZGV2LSZndDtuZWVkZWRfaGVhZHJvb21gLCBzbyB0aGF0JiMzOTtzIHRoZSBjb3JlIGZ1bmN0aW9uYWwgY2hhbmdlIGhlcmUuIFRoaXMgY2xlYXJseSBpbmRpY2F0ZXMgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiwgbm90IGp1c3QgYSBjb3NtZXRpYyBvbmUuIFNpbmNlIHRoZSBjb25maWcgb3B0aW9uIGlzIGBJUFZMQU5gLCBJIHNob3VsZCBjaGVjayBmb3IgYW55IHJlbGF0ZWQgY29uZmlnIG9wdGlvbnMgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUuCgpJIGtub3cgYElQVkxBTmAgZGVwZW5kcyBvbiBgSU5FVGAsIGJ1dCBpcyB0aGF0IGl0PyBMZXQmIzM5O3MgZGlnIGRlZXBlci4gVGhlIGBkcml2ZXJzL25ldC9pcHZsYW4vS2NvbmZpZ2AgZmlsZSwgb3IgcGVyaGFwcyBldmVuIHRoZSBtYWluIGBkcml2ZXJzL25ldC9LY29uZmlnYCwgaXMgd2hlcmUgSSYjMzk7bGwgZmluZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBBaCwgcmlnaHQsIGBJUFZMQU5gIGlzIGRlZmluZWQgd2l0aGluIGBkcml2ZXJzL25ldC9LY29uZmlnYCwgc28gSSYjMzk7bSBpbiB0aGUgcmlnaHQgcGxhY2UuCgpOb3csIHRoZSBxdWVzdGlvbiBpczogaXMgYElQVkxBTmAgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbj8gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUFZMQU4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz0xNzk9Y29uZmlnIE1BQ1ZUQVBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTE5Mi1cbmRyaXZlcnMvbmV0L0tjb25maWc6MTkzOmNvbmZpZyBJUFZMQU5fTDNTXG5kcml2ZXJzL25ldC9LY29uZmlnLTE5NC1cdGRlcGVuZHMgb24gTkVURklMVEVSXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy0xOTgtXG5kcml2ZXJzL25ldC9LY29uZmlnOjE5OTpjb25maWcgSVBWTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnLTIwMC1cdHRyaXN0YXRlIFwmIzM0O0lQLVZMQU4gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDY5CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIElQVkxBTiBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBkZWNpZGVkIHRoYXQgYElQVkxBTmAgaXMgdGhlIHJpZ2h0IGRpcmVjdGlvbiB0byBwdXJzdWUgaGVyZS4gSSBuZWVkIHRvIG5haWwgZG93biB0aGUgY29yZSBmdW5jdGlvbi4gSSYjMzk7bSB0aGlua2luZyBgaXB2bGFuX2xpbmtfbmV3YCBjb3VsZCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZXhwbG9yZS4gTGV0JiMzOTtzIHNlZS4uLiB5ZXAsIGl0JiMzOTtzIG5vbi1zdGF0aWMsIHdoaWNoIGlzIGdyZWF0IGJlY2F1c2UgaXQgbWVhbnMgaXQmIzM5O3MgZXhwb3J0ZWQgYW5kIHZpc2libGUgdG8gb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS4gQW5kIGl0JiMzOTtzIHJlc3BvbnNpYmxlIGZvciAqY3JlYXRpbmcqIHRoZSBJUHZsYW4gbGluaywgd2hpY2ggSSBzdXNwZWN0IHdpbGwgdHJpZ2dlciB0aGUgYGlwdmxhbl9pbml0YCBwcm9jZXNzLiBUaGF0IHNvdW5kcyBwcm9taXNpbmcuCgpOb3csIEkgbmVlZCB0byBjb25zaWRlciB0aGUgZXZlbnQgaGFuZGxpbmc7IGhvdyBhcmUgdGhlc2UgbmV3IGxpbmtzICpub3RpZmllZCo/IFRoZSBmdW5jdGlvbiBgaXB2bGFuX2RldmljZV9ldmVudGAgc2VlbXMgcmVsZXZhbnQsIGJ1dCwgaG1tLCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIHN0YXRpYy4gVGhhdCBsaWtlbHkgbWVhbnMgaXQmIzM5O3MgbGltaXRlZCBpbiBpdHMgc2NvcGUuIEFyZSB0aGVyZSBhbnkgb3RoZXIgbm90aWZpY2F0aW9uIGZ1bmN0aW9ucz8gUGVyaGFwcyBgaXB2bGFuX2xpbmtfc2V0dXBgIGlzIGludm9sdmVkIHNvbWVob3c/IEkgc2hvdWxkIGRlZmluaXRlbHkgY2hlY2sgdGhhdCBvbmUuIExldCYjMzk7cyBnZXQgbW9yZSBpbmZvIGFib3V0IGBpcHZsYW5fbGlua19zZXR1cGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwdmxhbl9saW5rX3NldHVwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvaXB2bGFuLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg9MTcxPXZvaWQgaXB2bGFuX2xpbmtfZGVsZXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE3Mjp2b2lkIGlwdmxhbl9saW5rX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE3My1pbnQgaXB2bGFuX2xpbmtfcmVnaXN0ZXIoc3RydWN0IHJ0bmxfbGlua19vcHMgKm9wcyk7XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM9Njc1PUVYUE9SVF9TWU1CT0xfR1BMKGlwdmxhbl9saW5rX2RlbGV0ZSk7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy02NzYtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo2Nzc6dm9pZCBpcHZsYW5fbGlua19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNjc4LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy02ODgtfVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6Njg5OkVYUE9SVF9TWU1CT0xfR1BMKGlwdmxhbl9saW5rX3NldHVwKTtcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTY5MC1cbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYz03MDQ9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIGlwdmxhbl9saW5rX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03MDctXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo3MDg6XHQuc2V0dXBcdFx0PSBpcHZsYW5fbGlua19zZXR1cCxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTcwOS1cdC5uZXdsaW5rXHQ9IGlwdmxhbl9saW5rX25ldyxcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2dGFwLmM9MTIyPXN0YXRpYyB2b2lkIGlwdnRhcF9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdnRhcC5jLTEyMy17XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2dGFwLmM6MTI0Olx0aXB2bGFuX2xpbmtfc2V0dXAoZGV2KTtcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZ0YXAuYy0xMjUtXHRkZXYtXHUwMDNldHhfcXVldWVfbGVuID0gVFVOX1JFQURRX1NJWkU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5NjgKCQkJCQkJCW91dHB1dDogODkKCQkJCQkJCXRob3VnaHRzOiAyMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJUHZsYW4gRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIGBpcHZsYW5fbGlua19zZXR1cGAgaXMgZXhwb3J0ZWQsIHRoYXQmIzM5O3MgaW1wb3J0YW50LiBJdCBsb29rcyBsaWtlIGJvdGggYGlwdmxhbl9saW5rX25ld2AgYW5kIGBpcHZsYW5fbGlua19zZXR1cGAgYXJlIHByaW1lIGNhbmRpZGF0ZXMgZm9yIHN5bWJvbHMgdG8gZm9jdXMgb24uIEhtbSwgd2FpdCBhIG1pbnV0ZSwgYGlwdmxhbl9pbml0YCBpcyBzdGF0aWMsIHdoaWNoIGlzIGEgYml0IG9mIGEgd3JpbmtsZSwgYnV0IGl0JiMzOTtzIGNhbGxlZCBieSBgcmVnaXN0ZXJfbmV0ZGV2aWNlYCwgc28gaXQmIzM5O3Mgc3RpbGwgcmVsZXZhbnQuIFRoZSBwYXRjaCBhY3R1YWxseSBtb2RpZmllcyAqYm90aCogYGlwdmxhbl9pbml0YCBhbmQgYGlwdmxhbl9kZXZpY2VfZXZlbnRgLiBgaXB2bGFuX2RldmljZV9ldmVudGAgaXMgcGFydGljdWxhcmx5IGludGVyZXN0aW5nLCBzaW5jZSB0aGF0JiMzOTtzIHRyaWdnZXJlZCBieSB1bmRlcmx5aW5nIGRldmljZSBjaGFuZ2VzLiBHaXZlbiB0aGF0LCBgaXB2bGFuX2xpbmtfbmV3YCBmZWVscyBsaWtlIHRoZSBtb3N0IGNyaXRpY2FsIG9mIHRoZSBzeW1ib2xzIHRvIGZvY3VzIG9uLgoKTGV0IG1lIGp1c3QgcXVpY2tseSB2ZXJpZnkgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gQWgsIHllcywgYElQVkxBTmAgaXMgdGhlIGtleSBjb25maWcgaGVyZS4KCkFscmlnaHQsIGJhc2VkIG9uIHRoaXMsIEkmIzM5O2xsIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuICBGb3IgYEZvY3VzU3ltYm9sc2AsIEkmIzM5O2xsIHVzZSBgWyYjMzQ7aXB2bGFuX2xpbmtfbmV3JiMzNDssICYjMzQ7aXB2bGFuX2xpbmtfc2V0dXAmIzM0O11gLiBBbmQgZm9yIGBFbmFibGVDb25maWdzYCwgSSYjMzk7bGwgdXNlIGBbJiMzNDtJUFZMQU4mIzM0O11gLgoKVGhlIHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggaXMgY2hhbmdpbmcgdGhlIGlwdmxhbiBkcml2ZXImIzM5O3MgY29yZSBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHksIGhvdyBpdCBpbml0aWFsaXplcyBhbmQgaGFuZGxlcyBldmVudHMgcmVsYXRlZCB0byB0aGUgcGh5c2ljYWwgZGV2aWNlJiMzOTtzIGBuZWVkZWRfaGVhZHJvb21gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgYnVnIGZpeCwgYW5kIHRoZXJlZm9yZSB3YXJyYW50cyB0aG9yb3VnaCBleGFtaW5hdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVkxBTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwdmxhbl9saW5rX25ldyYjMzQ7LAogICAgJiMzNDtpcHZsYW5fbGlua19zZXR1cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIGV2ZW50IGhhbmRsaW5nIG9mIGlwdmxhbiBkZXZpY2VzIHRvIGluaGVyaXQgdGhlIGBuZWVkZWRfaGVhZHJvb21gIGZyb20gdGhlIHBoeXNpY2FsIGRldmljZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBpcHZsYW4gZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFZMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcHZsYW5fbGlua19uZXcmIzM0OywKICAgICYjMzQ7aXB2bGFuX2xpbmtfc2V0dXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBldmVudCBoYW5kbGluZyBvZiBpcHZsYW4gZGV2aWNlcyB0byBpbmhlcml0IHRoZSBgbmVlZGVkX2hlYWRyb29tYCBmcm9tIHRoZSBwaHlzaWNhbCBkZXZpY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgaXB2bGFuIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjM4OjM0LjkyMzM3MjE4MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2ODA5OTcyMTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVkxBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwdmxhbl9saW5rX25ld1wiLFxuICAgIFwiaXB2bGFuX2xpbmtfc2V0dXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIGV2ZW50IGhhbmRsaW5nIG9mIGlwdmxhbiBkZXZpY2VzIHRvIGluaGVyaXQgdGhlIGBuZWVkZWRfaGVhZHJvb21gIGZyb20gdGhlIHBoeXNpY2FsIGRldmljZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBpcHZsYW4gZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozODozNC45MjMzNzg0NTJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1ODQ3NjU3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGI0MjNlMTRmNzYyMmYzZmIyYzllYjBkNjJkMzYzODQzZjI3MTE2ODBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgNCAxNjozODozNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYyBiL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jXFxuaW5kZXggZWQ0NjQzOWE5ZjRlYi4uNzUxM2MwMDVhNTEyMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jXFxuQEAgLTE0Niw2ICsxNDYsNyBAQCBzdGF0aWMgaW50IGlwdmxhbl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdGRldi1cXHUwMDNlbGx0eCA9IHRydWU7XFxuIFxcdG5ldGlmX2luaGVyaXRfdHNvX21heChkZXYsIHBoeV9kZXYpO1xcbiBcXHRkZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbiA9IHBoeV9kZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbjtcXG4rXFx0ZGV2LVxcdTAwM2VuZWVkZWRfaGVhZHJvb20gPSBwaHlfZGV2LVxcdTAwM2VuZWVkZWRfaGVhZHJvb207XFxuIFxcbiBcXHRuZXRkZXZfbG9ja2RlcF9zZXRfY2xhc3NlcyhkZXYpO1xcbiBcXG5AQCAtNzczLDYgKzc3NCw3IEBAIHN0YXRpYyBpbnQgaXB2bGFuX2RldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcXG4gXFx0Y2FzZSBORVRERVZfRkVBVF9DSEFOR0U6XFxuIFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXB2bGFuLCBcXHUwMDI2cG9ydC1cXHUwMDNlaXB2bGFucywgcG5vZGUpIHtcXG4gXFx0XFx0XFx0bmV0aWZfaW5oZXJpdF90c29fbWF4KGlwdmxhbi1cXHUwMDNlZGV2LCBkZXYpO1xcbitcXHRcXHRcXHRpcHZsYW4tXFx1MDAzZWRldi1cXHUwMDNlbmVlZGVkX2hlYWRyb29tID0gZGV2LVxcdTAwM2VuZWVkZWRfaGVhZHJvb207XFxuIFxcdFxcdFxcdG5ldGRldl91cGRhdGVfZmVhdHVyZXMoaXB2bGFuLVxcdTAwM2VkZXYpO1xcbiBcXHRcXHR9XFxuIFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozODozNS4zODI1MjMwMTZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1NjM1MDgxMjE0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFZMQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcHZsYW5fbGlua19uZXdcIixcbiAgICBcImlwdmxhbl9saW5rX3NldHVwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBldmVudCBoYW5kbGluZyBvZiBpcHZsYW4gZGV2aWNlcyB0byBpbmhlcml0IHRoZSBgbmVlZGVkX2hlYWRyb29tYCBmcm9tIHRoZSBwaHlzaWNhbCBkZXZpY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgaXB2bGFuIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjQyM2UxNGY3NjIyZjNmYjJjOWViMGQ2MmQzNjM4NDNmMjcxMTY4MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMTY6Mzg6MzQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYyBiL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jXG5pbmRleCBlZDQ2NDM5YTlmNGViLi43NTEzYzAwNWE1MTIxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jXG5AQCAtMTQ2LDYgKzE0Niw3IEBAIHN0YXRpYyBpbnQgaXB2bGFuX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGRldi1cdTAwM2VsbHR4ID0gdHJ1ZTtcbiBcdG5ldGlmX2luaGVyaXRfdHNvX21heChkZXYsIHBoeV9kZXYpO1xuIFx0ZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbiA9IHBoeV9kZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuO1xuK1x0ZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbSA9IHBoeV9kZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tO1xuIFxuIFx0bmV0ZGV2X2xvY2tkZXBfc2V0X2NsYXNzZXMoZGV2KTtcbiBcbkBAIC03NzMsNiArNzc0LDcgQEAgc3RhdGljIGludCBpcHZsYW5fZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxuIFx0Y2FzZSBORVRERVZfRkVBVF9DSEFOR0U6XG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXB2bGFuLCBcdTAwMjZwb3J0LVx1MDAzZWlwdmxhbnMsIHBub2RlKSB7XG4gXHRcdFx0bmV0aWZfaW5oZXJpdF90c29fbWF4KGlwdmxhbi1cdTAwM2VkZXYsIGRldik7XG4rXHRcdFx0aXB2bGFuLVx1MDAzZWRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20gPSBkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tO1xuIFx0XHRcdG5ldGRldl91cGRhdGVfZmVhdHVyZXMoaXB2bGFuLVx1MDAzZWRldik7XG4gXHRcdH1cbiBcdFx0YnJlYWs7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozODozNS4zODI1MjU2NjZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDA1NjM5MDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSVB2bGFuIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGFyZ2V0aW5nIGBkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uY2AuIEltbWVkaWF0ZWx5LCBJIHNlZSBpdCdzIG1ha2luZyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIHRvIHRoZSBJUHZsYW4gZHJpdmVyLiBUaGUgYWRkaXRpb24gb2YgYGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20gPSBwaHlfZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbTtgIHdpdGhpbiBgaXB2bGFuX2luaXRgIGFuZCBgaXB2bGFuLVx1MDAzZWRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20gPSBkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tO2AgaW4gYGlwdmxhbl9kZXZpY2VfZXZlbnRgIGlzIHRoZSBrZXkuIEl0J3MgYXNzaWduaW5nIHRoZSBuZWVkZWQgaGVhZHJvb20gZnJvbSB0aGUgcGh5c2ljYWwgZGV2aWNlIHRvIHRoZSBJUHZsYW4gZGV2aWNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMuIE15IGd1dCB0ZWxscyBtZSB0aGlzIGRpcmVjdGx5IGltcGFjdHMgcGFja2V0IGhhbmRsaW5nLCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyBob3cgbXVjaCBzcGFjZSBpcyByZXNlcnZlZCBmb3IgaGVhZGVycyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmcmFtZSwgd2hpY2ggY2FuIGJlIGNyaXRpY2FsIGZvciBjZXJ0YWluIG5ldHdvcmsgY29uZmlndXJhdGlvbnMuXG5cbkJlZm9yZSBkaXZpbmcgdG9vIGRlZXAgaW50byB0aGUgY29kZSwgSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoZSBLY29uZmlnLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZHJpdmVyIGlzIGNvcnJlY3RseSBjb25maWd1cmVkIGFuZCB0aGF0IHRoZXNlIGNoYW5nZXMgYXJlIGNvcnJlY3RseSBiZWluZyBlbmFibGVkLiBLbm93aW5nIHRoZSByZWxldmFudCBkZXBlbmRlbmNpZXMgYW5kIGJ1aWxkIGNvbmZpZ3VyYXRpb25zIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyBhbmQgd2hlbiB0aGlzIHBhdGNoIGlzIGdvaW5nIHRvIGFjdHVhbGx5IHRha2UgZWZmZWN0IGluIHZhcmlvdXMgY29udGV4dHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxOTcsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozODo0MC43ODgxNjcxODZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM4NDQ4NTgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUFZMQU5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvaXB2bGFuL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6Mzg6NDAuODMyMDE5Njc1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQzOTA2MzA5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqV2hlcmUncyB0aGUgaXB2bGFuIEtjb25maWc/KipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLiBJJ20gZGVlcCBpbiB0aGlzIG5ldHdvcmtpbmcgY29kZSBhbmQgSSdtIGxvb2tpbmcgZm9yIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBJUHZMQU4uIEkga25vdyBJJ3ZlIHdvcmtlZCB3aXRoIGl0IGJlZm9yZSwgYnV0IGZvciB0aGUgbGlmZSBvZiBtZSwgSSBjYW4ndCBpbW1lZGlhdGVseSByZWNhbGwgd2hlcmUgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZSBpcyBsb2NhdGVkLiBJdCdzIHByb2JhYmx5IGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgYnV0IHRoYXQncyBhIHByZXR0eSBicm9hZCBhcmVhLiBJIG5lZWQgdG8gZ2V0IHRoaXMgZW5hYmxlZC9kaXNhYmxlZCwgb3IgbWF5YmUgdHdlYWsgc29tZSBwYXJhbWV0ZXJzLCBidXQgd2l0aG91dCB0aGUgS2NvbmZpZywgSSdtIHN0dWNrLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSB1c3VhbCBzdXNwZWN0cyDigJMgdGhlIGNvcmUgbmV0d29ya2luZyBkaXJlY3RvcnksIG1heWJlIHRoZSBicmlkZ2UgY29kZS4uLiBpdCdzIGp1c3QgZnJ1c3RyYXRpbmcgbm90IGJlaW5nIGFibGUgdG8gZmluZCBpdCBpbnN0YW50bHkuIFRpbWUgdG8gc3RhcnQgZGlnZ2luZywgbWF5YmUgc29tZSBncmVwcGluZyB0byBzZWUgaWYgSSBjYW4gcGlucG9pbnQgaXQgcXVpY2tlciB0aGFuIHdhbGtpbmcgdGhlIGZpbGVzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1ODYsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozODo0NS4yNzEwODQ5MDZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1MDIzNTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUFZMQU5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9MTc5PWNvbmZpZyBNQUNWVEFQXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTE5Mi1cXG5kcml2ZXJzL25ldC9LY29uZmlnOjE5Mzpjb25maWcgSVBWTEFOX0wzU1xcbmRyaXZlcnMvbmV0L0tjb25maWctMTk0LVxcdGRlcGVuZHMgb24gTkVURklMVEVSXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTE5OC1cXG5kcml2ZXJzL25ldC9LY29uZmlnOjE5OTpjb25maWcgSVBWTEFOXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMDAtXFx0dHJpc3RhdGUgXFxcIklQLVZMQU4gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6Mzg6NDUuNDA2MTE1NDAxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA5NzE1NjMxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBzb21lIHNwZWNpZmljIG5ldHdvcmsgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgaGFuZGxlZC4gSSBrbm93IGl0J3MgaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHN5c3RlbSwgc28gSSdsbCBzdGFydCBieSBsb29raW5nIGF0IGBkcml2ZXJzL25ldC9LY29uZmlnYC4gVGhpcyBpcyB1c3VhbGx5IHRoZSBnby10byBwbGFjZSBmb3IgbmV0d29yayBkcml2ZXItc3BlY2lmaWMgb3B0aW9ucy4gSSdtIGdvaW5nIHRvIGp1bXAgdG8gYXJvdW5kIGxpbmUgMTk5LiBUaGF0IHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIHN0YXJ0aW5nIHBvaW50OyBpdCdzIHByb2JhYmx5IGFyb3VuZCB0aGUgcGFydCBvZiB0aGUgZmlsZSB0aGF0IGRlYWxzIHdpdGggdGhlIG1vcmUgZm91bmRhdGlvbmFsIG9yIGdlbmVyYWwgbmV0d29yayBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEknbSBiZXR0aW5nIHRoYXQncyB3aGVyZSBJIGNhbiBnZXQgbXkgYmVhcmluZ3MgYW5kIHNlZSBob3cgdGhpcyBwYXJ0aWN1bGFyIG9wdGlvbiBpcyBpbnRlZ3JhdGVkIGludG8gdGhlIGxhcmdlciBjb25maWd1cmF0aW9uIGZyYW1ld29yay4gSSdtIGV4cGVjdGluZyB0byBmaW5kIGEgZGVmaW5pdGlvbiwgbWF5YmUgc29tZSBkZXBlbmRlbmNpZXMsIGFuZCBwZXJoYXBzIHNvbWUgYXNzb2NpYXRlZCBoZWxwIHRleHQgdGhhdCB3aWxsIGlsbHVtaW5hdGUgaXRzIHB1cnBvc2UgYW5kIGJlaGF2aW9yLiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTQ5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6Mzg6NTAuNTAzMjc0OTAxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgxOTAsIkVycm9yIjoiYXJndW1lbnQgXCJGaXJzdExpbmVcIiBoYXMgd3JvbmcgdHlwZTogZ290IHN0cmluZywgd2FudCBpbnQiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IFwiMTkwXCIsXG4gIFwiTGluZUNvdW50XCI6IFwiMjBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJhcmd1bWVudCBcXFwiRmlyc3RMaW5lXFxcIiBoYXMgd3JvbmcgdHlwZTogZ290IHN0cmluZywgd2FudCBpbnRcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6Mzg6NTAuNTAzMzA3OTQxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg3NjIzOTk2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aGlua2luZywgcHJlc2VudGVkIGFzIGlmIGl0IHdlcmUgeW91ciBvd24gZXhwZXJ0IGludGVybmFsIGRpYWxvZ3VlOlxuXG4qKkludGVnZXIgQ29uc3RyYWludCBmb3IgRmlyc3RMaW5lKipcblxuT2theSwgbGV0J3MgcHJvY2VzcyB0aGlzLiBUaGUgY29yZSBvZiB0aGlzIHN5c3RlbSwgb3IgYXQgbGVhc3QgYSBjcnVjaWFsIHBhcnQgb2YgaXQsIHNlZW1zIHRvIHJlbHkgb24gdGhlIHZhcmlhYmxlIGBGaXJzdExpbmVgLiBJbW1lZGlhdGVseSwgYWxhcm0gYmVsbHMgYXJlIHJpbmdpbmcgaW4gbXkgaGVhZC4gSnVkZ2luZyBieSB0aGUgY29udGV4dCBhbmQgbGlrZWx5IGRvd25zdHJlYW0gb3BlcmF0aW9ucywgSSdtIHZpcnR1YWxseSBjZXJ0YWluIGBGaXJzdExpbmVgIG5lZWRzIHRvIGJlIGRlZmluZWQgYXMgYW4gaW50ZWdlci4gQW55IG90aGVyIGRhdGEgdHlwZSBpbnRyb2R1Y2VzIGEgaG9zdCBvZiBwb3RlbnRpYWwgcHJvYmxlbXMuIEZsb2F0aW5nLXBvaW50IG51bWJlcnMgd291bGQgYmUgYSBkaXNhc3RlciBmb3IgYW55IGtpbmQgb2YgaW5kZXhpbmcsIG9mZnNldHMgb3IgbGluZSBudW1iZXJpbmcuIFN0cmluZ3MsIG9yIHdvcnNlLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgd291bGQgY3Jhc2ggb3IgY29ycnVwdCB0aGUgZnVuY3Rpb25hbGl0eS4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gZW5zdXJlIHRoaXMgY29uc3RyYWludCBpcyBlbmZvcmNlZC4gSSdsbCBuZWVkIHRvIGdvIGJhY2sgYW5kIGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIGBGaXJzdExpbmVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjI2LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjM4OjU0LjM3OTU1MDczMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzAxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE5MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE5MDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gMTkxOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgbWFjdnRhcC5cXG4gMTkyOlxcdFxcbiAxOTM6XFx0Y29uZmlnIElQVkxBTl9MM1NcXG4gMTk0OlxcdFxcdGRlcGVuZHMgb24gTkVURklMVEVSXFxuIDE5NTpcXHRcXHRkZXBlbmRzIG9uIElQVkxBTlxcbiAxOTY6XFx0XFx0ZGVmX2Jvb2wgeVxcbiAxOTc6XFx0XFx0c2VsZWN0IE5FVF9MM19NQVNURVJfREVWXFxuIDE5ODpcXHRcXG4gMTk5OlxcdGNvbmZpZyBJUFZMQU5cXG4gMjAwOlxcdFxcdHRyaXN0YXRlIFxcXCJJUC1WTEFOIHN1cHBvcnRcXFwiXFxuIDIwMTpcXHRcXHRkZXBlbmRzIG9uIElORVRcXG4gMjAyOlxcdFxcdGhlbHBcXG4gMjAzOlxcdFxcdCAgVGhpcyBhbGxvd3Mgb25lIHRvIGNyZWF0ZSB2aXJ0dWFsIGRldmljZXMgb2ZmIG9mIGEgbWFpbiBpbnRlcmZhY2VcXG4gMjA0OlxcdFxcdCAgYW5kIHBhY2tldHMgd2lsbCBiZSBkZWxpdmVyZWQgYmFzZWQgb24gdGhlIGRlc3QgTDMgKElQdjYvSVB2NCBhZGRyKVxcbiAyMDU6XFx0XFx0ICBvbiBwYWNrZXRzLiBBbGwgaW50ZXJmYWNlcyAoaW5jbHVkaW5nIHRoZSBtYWluIGludGVyZmFjZSkgc2hhcmUgTDJcXG4gMjA2OlxcdFxcdCAgbWFraW5nIGl0IHRyYW5zcGFyZW50IHRvIHRoZSBjb25uZWN0ZWQgTDIgc3dpdGNoLlxcbiAyMDc6XFx0XFxuIDIwODpcXHRcXHQgIElwdmxhbiBkZXZpY2VzIGNhbiBiZSBhZGRlZCB1c2luZyB0aGUgXFxcImlwXFxcIiBjb21tYW5kIGZyb20gdGhlXFxuIDIwOTpcXHRcXHQgIGlwcm91dGUyIHBhY2thZ2Ugc3RhcnRpbmcgd2l0aCB0aGUgaXByb3V0ZTItMy4xOSByZWxlYXNlOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozODo1NC4zNzk2MjUzNDFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTgyMjYzNDU3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQVkxBTiBDb25maWd1cmF0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgSVBWTEFOYCBjb25maWd1cmF0aW9uLiBUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgZm9jdXNlZCBvbiBtb2RpZnlpbmcgdGhlIGBpcHZsYW5faW5pdGAgYW5kIGBpcHZsYW5fZGV2aWNlX2V2ZW50YCBmdW5jdGlvbnMuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gcXVpY2tseSB2ZXJpZnkgaWYgdGhlc2UgYXJlIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBSaWdodCwgbGV0J3MgdGFrZSBhIGxvb2suLi4gWWVwLCBib3RoIGBpcHZsYW5faW5pdGAgYW5kIGBpcHZsYW5fZGV2aWNlX2V2ZW50YCBhcmUgaW5kZWVkIGRlY2xhcmVkIGFzIGBzdGF0aWNgLlxuXG5Ob3csIHRoZSBpbnRlcmVzdGluZyBiaXQuIFNpbmNlIHRoZXkncmUgYHN0YXRpY2AsIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGV5J3JlICphY3R1YWxseSogYmVpbmcgY2FsbGVkLiBBcmUgdGhleSBuZXRfZGV2aWNlX29wcyBjYWxsYmFja3MsIG9yIGRvZXMgdGhlIHBhdGNoIGludHJvZHVjZSB0aGVtIHRvIGJlIGNhbGxlZCBmcm9tIHNvbWUgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIHRoZSBkcml2ZXI/IEkgc2hvdWxkIGJlIGFibGUgdG8gcmVseSBvbiB0aGUgZmFjdCB0aGF0IGBpcHZsYW5faW5pdGAgaXMgbGlrZWx5IHVzZWQgYXMgcGFydCBvZiBhIGBuZXRfZGV2aWNlX29wc2AgY2FsbGJhY2sgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFuZCB0aGVuIHRoZSBwYXRjaCB3aWxsIHByb2JhYmx5IGFkZCBzaW1pbGFyIG5vbi1zdGF0aWMgZnVuY3Rpb25zLiBMZXQncyBkaWcgZGVlcGVyIGFuZCBzZWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NTksIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozOTowMC4yMDIyNjI1NTdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0MTE2Mjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwdmxhbl9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2lwdmxhbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oPTE0OT1zdGF0aWMgaW5saW5lIHZvaWQgaXB2bGFuX2NsZWFyX3ZlcGEoc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xNTMtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE1NDp2b2lkIGlwdmxhbl9pbml0X3NlY3JldCh2b2lkKTtcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTU1LXVuc2lnbmVkIGludCBpcHZsYW5fbWFjX2hhc2goY29uc3QgdW5zaWduZWQgY2hhciAqYWRkcik7XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYz0xMD1zdGF0aWMgdTMyIGlwdmxhbl9qaGFzaF9zZWNyZXQgX19yZWFkX21vc3RseTtcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0xMS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzoxMjp2b2lkIGlwdmxhbl9pbml0X3NlY3JldCh2b2lkKVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jPTk2PXN0YXRpYyB2b2lkIGlwdmxhbl9wb3J0X2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEzMS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoxMzI6c3RhdGljIGludCBpcHZsYW5faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEzMy17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYz0zNjA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpcHZsYW5fbmV0ZGV2X29wcyA9IHtcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzozNjE6XFx0Lm5kb19pbml0XFx0XFx0PSBpcHZsYW5faW5pdCxcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0zNjItXFx0Lm5kb191bmluaXRcXHRcXHQ9IGlwdmxhbl91bmluaXQsXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYz01Mzk9aW50IGlwdmxhbl9saW5rX25ldyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNTk3LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjU5ODpcXHQvKiBpcHZsYW5faW5pdCgpIHdvdWxkIGhhdmUgY3JlYXRlZCB0aGUgcG9ydCwgaWYgcmVxdWlyZWQgKi9cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy01OTktXFx0cG9ydCA9IGlwdmxhbl9wb3J0X2dldF9ydG5sKHBoeV9kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM9MTA0Mz1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGlwdmxhbl9hZGRyNl92dG9yX25vdGlmaWVyX2Jsb2NrIF9fcmVhZF9tb3N0bHkgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMDQ3LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjEwNDg6c3RhdGljIGludCBfX2luaXQgaXB2bGFuX2luaXRfbW9kdWxlKHZvaWQpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTA0OS17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMDUxLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjEwNTI6XFx0aXB2bGFuX2luaXRfc2VjcmV0KCk7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTA1My1cXHRyZWdpc3Rlcl9uZXRkZXZpY2Vfbm90aWZpZXIoXFx1MDAyNmlwdmxhbl9ub3RpZmllcl9ibG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYz0xMDg2PXN0YXRpYyB2b2lkIF9fZXhpdCBpcHZsYW5fY2xlYW51cF9tb2R1bGUodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTExMDAtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MTEwMTptb2R1bGVfaW5pdChpcHZsYW5faW5pdF9tb2R1bGUpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTExMDItbW9kdWxlX2V4aXQoaXB2bGFuX2NsZWFudXBfbW9kdWxlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6Mzk6MDAuMjY2MzgzNzY1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NjQyODQzNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipNeSBQZXJzcGVjdGl2ZSBvbiBpcHZsYW4gSW5pdGlhbGl6YXRpb24gYW5kIEV2ZW50IEhhbmRsaW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGBpcHZsYW5gIGNvZGUuIFRoZSBrZXkgdGFrZWF3YXkgaGVyZSBpcyB0aGF0IGBpcHZsYW5faW5pdGAgaXMgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwIGFuIGBpcHZsYW5gIGludGVyZmFjZS4gQW5kIHRoYXQncyB0cmlnZ2VyZWQgdGhyb3VnaCB0aGUgc3RhbmRhcmQgYC5uZG9faW5pdGAgY2FsbGJhY2ssIHdoaWNoIGlzIGEgY29tbW9uIHdheSBuZXR3b3JrIGRyaXZlcnMgZ2V0IGluaXRpYWxpemVkIHdpdGhpbiB0aGUga2VybmVsLiBNYWtlcyBwZXJmZWN0IHNlbnNlOyBpdCdzIHRoZSBuYXR1cmFsIHBvaW50IGZvciB0aGUgZGV2aWNlLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIHRvIG9jY3VyIGFmdGVyIHRoZSBuZXR3b3JrIGRldmljZSBzdHJ1Y3R1cmUgaXRzZWxmIGhhcyBiZWVuIGFsbG9jYXRlZCBhbmQgaXMgcmVhZHkgdG8gZ28uXG5cblRoZW4sIHRoZXJlJ3MgYGlwdmxhbl9kZXZpY2VfZXZlbnRgLiBUaGlzIGlzIGFjdGluZyBhcyBhIG5vdGlmaWVyIGJsb2NrIGNhbGxiYWNrLiBUaGlzIGxpa2VseSBtZWFucyB0aGF0IGBpcHZsYW5fZGV2aWNlX2V2ZW50YCBpcyByZWdpc3RlcmVkIHRvIHJlY2VpdmUgbm90aWZpY2F0aW9ucyBhYm91dCB2YXJpb3VzIGRldmljZS1yZWxhdGVkIGV2ZW50cywgZXZlbnRzIHRoYXQgd2lsbCByZXF1aXJlIGl0IHRvIHJlc3BvbmQsIHJlYWN0LCBhbmQgdGFrZSBhcHByb3ByaWF0ZSBhY3Rpb24uIFRoaW5raW5nIGFoZWFkLCBJJ2QgZXhwZWN0IGl0IHRvIGhhbmRsZSB0aGluZ3MgbGlrZSBsaW5rIHN0YXRlIGNoYW5nZXMsIGFkZHJlc3MgYWRkaXRpb25zL2RlbGV0aW9ucywgb3IgcG9zc2libHkgZXZlbiBob3RwbHVnIGV2ZW50cyByZWxhdGVkIHRvIHRoZSBwYXJlbnQgcGh5c2ljYWwgaW50ZXJmYWNlLiBJdCdzIHRoZSBzdGFuZGFyZCB3YXkgd2UgaGFuZGxlIGFzeW5jaHJvbm91cyBldmVudHMgcmVsYXRlZCB0byB0aGUgbmV0d29yayBkZXZpY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMjUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozOTowNS45MzA2NzEwNTZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5OTIxNjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwdmxhbl9kZXZpY2VfZXZlbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvaXB2bGFuL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYz03MjQ9RVhQT1JUX1NZTUJPTF9HUEwoaXB2bGFuX2xpbmtfcmVnaXN0ZXIpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTcyNS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo3MjY6c3RhdGljIGludCBpcHZsYW5fZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTcyNy1cXHRcXHRcXHQgICAgICAgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM9MTAzND1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGlwdmxhbl9ub3RpZmllcl9ibG9jayBfX3JlYWRfbW9zdGx5ID0ge1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjEwMzU6XFx0Lm5vdGlmaWVyX2NhbGwgPSBpcHZsYW5fZGV2aWNlX2V2ZW50LFxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEwMzYtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6Mzk6MDUuOTgwNTk5NzM0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4NzE5MTIwNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipEaXZpbmcgaW50byBJUHZsYW4gTGluayBDcmVhdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSB0cmFjaW5nIHRoZSBjcmVhdGlvbiBvZiBhbiBJUHZsYW4gbGluayBoZXJlLiBJdCBsb29rcyBsaWtlIGBpcHZsYW5fbGlua19uZXdgIGlzIHRoZSBrZXkgZnVuY3Rpb247IGl0J3MgdGhlIHRyaWdnZXIuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgaXQgc2VlbXMgdG8gYmUgd2hhdCBraWNrcyBvZmYgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3Mgd2l0aCBgbmRvX2luaXRgLCB3aGljaCBmcm9tIGl0cyBuYW1lLCBzaG91bGQgYmUgdGhlIElQdmxhbi1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiAoYGlwdmxhbl9pbml0YCkuIEhtbSwgYnV0IEkgcmVjYWxsIHRoYXQgYG5kb19pbml0YCBpcyBjYWxsZWQgYnkgYHJlZ2lzdGVyX25ldGRldmljZWAsIHdoaWNoIEkgdGhpbmsgaXMgYSBnZW5lcmFsIG5ldHdvcmsgZGV2aWNlIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbi4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQuIEdpdmVuIHRoaXMsIEkgc2hvdWxkIG5vdyBmb2N1cyBvbiB2ZXJpZnlpbmcgdGhlIHJvbGUgb2YgYGlwdmxhbl9saW5rX25ld2AgYW5kIGBpcHZsYW5fbGlua19yZWdpc3RlcmAuIExldCdzIGRpZyBkZWVwZXIgaW50byB0aG9zZSB0d28uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NTEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozOToxMi44NTI1MTUwMjVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDY4NzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwdmxhbl9saW5rX25ld1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9pcHZsYW4vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaD0xNjc9dm9pZCBpcHZsYW5fY291bnRfcngoY29uc3Qgc3RydWN0IGlwdmxfZGV2ICppcHZsYW4sXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE2OC1cXHRcXHQgICAgIHVuc2lnbmVkIGludCBsZW4sIGJvb2wgc3VjY2VzcywgYm9vbCBtY2FzdCk7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE2OTppbnQgaXB2bGFuX2xpbmtfbmV3KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE3MC1cXHRcXHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jPTUxNz1zdGF0aWMgaW50IGlwdmxhbl9ubF9maWxsaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNTM4LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjUzOTppbnQgaXB2bGFuX2xpbmtfbmV3KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNTQwLVxcdFxcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy02NTQtfVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjY1NTpFWFBPUlRfU1lNQk9MX0dQTChpcHZsYW5fbGlua19uZXcpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTY1Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jPTcwND1zdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgaXB2bGFuX2xpbmtfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzA4LVxcdC5zZXR1cFxcdFxcdD0gaXB2bGFuX2xpbmtfc2V0dXAsXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NzA5OlxcdC5uZXdsaW5rXFx0PSBpcHZsYW5fbGlua19uZXcsXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzEwLVxcdC5kZWxsaW5rXFx0PSBpcHZsYW5fbGlua19kZWxldGUsXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2dGFwLmM9Nzc9c3RhdGljIGludCBpcHZ0YXBfbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdnRhcC5jLTEwMC1cXHQgKi9cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2dGFwLmM6MTAxOlxcdGVyciA9IGlwdmxhbl9saW5rX25ldyhkZXYsIHBhcmFtcywgZXh0YWNrKTtcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2dGFwLmMtMTAyLVxcdGlmIChlcnIpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6Mzk6MTIuODk3OTg3NjUzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxMjY1ODU4ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgaXB2bGFuYCBDb2RlYmFzZSoqXG5cbk9rYXksIHNvIEknbSBob25pbmcgaW4gb24gYGlwdmxhbl9saW5rX25ld2AgYXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoaXMgY2hhbmdlLiBCdXQgbGV0J3MgYnJvYWRlbiB0aGUgc2NvcGUgYSBiaXQuIFdoYXQgYWJvdXQgYGlwdmxhbl9kZXZpY2VfZXZlbnRgPyBUaGF0IG5vdGlmaWVyIGJsb2NrIHNlZW1zIGltcG9ydGFudCwgcmVhY3RpbmcgdG8gbmV0ZGV2IGV2ZW50cy4gSG1tLCBJIHN1c3BlY3QgdGhhdCBmdW5jdGlvbiBpdHNlbGYgbWlnaHQgYmUgc3RhdGljLCB3aGljaCB3b3VsZCBtYWtlIGl0IGxlc3MgdXNlZnVsIGFzIGEgcHJpbWFyeSBmb2N1cy4gSSBuZWVkIHRvIGZpbmQgdGhlIGZ1bmN0aW9uIHRoYXQgaXMgdGhlIGVudHJ5IHBvaW50LlxuXG5UaGUgcGF0Y2ggaXRzZWxmIGNvbmNlcm5zIGBkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tYCwgc28gdGhhdCdzIHRoZSBjb3JlIGZ1bmN0aW9uYWwgY2hhbmdlIGhlcmUuIFRoaXMgY2xlYXJseSBpbmRpY2F0ZXMgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiwgbm90IGp1c3QgYSBjb3NtZXRpYyBvbmUuIFNpbmNlIHRoZSBjb25maWcgb3B0aW9uIGlzIGBJUFZMQU5gLCBJIHNob3VsZCBjaGVjayBmb3IgYW55IHJlbGF0ZWQgY29uZmlnIG9wdGlvbnMgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUuXG5cbkkga25vdyBgSVBWTEFOYCBkZXBlbmRzIG9uIGBJTkVUYCwgYnV0IGlzIHRoYXQgaXQ/IExldCdzIGRpZyBkZWVwZXIuIFRoZSBgZHJpdmVycy9uZXQvaXB2bGFuL0tjb25maWdgIGZpbGUsIG9yIHBlcmhhcHMgZXZlbiB0aGUgbWFpbiBgZHJpdmVycy9uZXQvS2NvbmZpZ2AsIGlzIHdoZXJlIEknbGwgZmluZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBBaCwgcmlnaHQsIGBJUFZMQU5gIGlzIGRlZmluZWQgd2l0aGluIGBkcml2ZXJzL25ldC9LY29uZmlnYCwgc28gSSdtIGluIHRoZSByaWdodCBwbGFjZS5cblxuTm93LCB0aGUgcXVlc3Rpb24gaXM6IGlzIGBJUFZMQU5gIHRoZSBvbmx5IHJlbGV2YW50IGNvbmZpZ3VyYXRpb24/IEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0NDIsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6Mzk6MTkuMDI0NTc2NTg4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTE1NzgwNDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQVkxBTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0xNzk9Y29uZmlnIE1BQ1ZUQVBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMTkyLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTkzOmNvbmZpZyBJUFZMQU5fTDNTXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xOTQtXFx0ZGVwZW5kcyBvbiBORVRGSUxURVJcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMTk4LVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTk5OmNvbmZpZyBJUFZMQU5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTIwMC1cXHR0cmlzdGF0ZSBcXFwiSVAtVkxBTiBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozOToxOS4yNzYxNjEzNFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTQyNzg3NDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIElQVkxBTiBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEkndmUgZGVjaWRlZCB0aGF0IGBJUFZMQU5gIGlzIHRoZSByaWdodCBkaXJlY3Rpb24gdG8gcHVyc3VlIGhlcmUuIEkgbmVlZCB0byBuYWlsIGRvd24gdGhlIGNvcmUgZnVuY3Rpb24uIEknbSB0aGlua2luZyBgaXB2bGFuX2xpbmtfbmV3YCBjb3VsZCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZXhwbG9yZS4gTGV0J3Mgc2VlLi4uIHllcCwgaXQncyBub24tc3RhdGljLCB3aGljaCBpcyBncmVhdCBiZWNhdXNlIGl0IG1lYW5zIGl0J3MgZXhwb3J0ZWQgYW5kIHZpc2libGUgdG8gb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS4gQW5kIGl0J3MgcmVzcG9uc2libGUgZm9yICpjcmVhdGluZyogdGhlIElQdmxhbiBsaW5rLCB3aGljaCBJIHN1c3BlY3Qgd2lsbCB0cmlnZ2VyIHRoZSBgaXB2bGFuX2luaXRgIHByb2Nlc3MuIFRoYXQgc291bmRzIHByb21pc2luZy5cblxuTm93LCBJIG5lZWQgdG8gY29uc2lkZXIgdGhlIGV2ZW50IGhhbmRsaW5nOyBob3cgYXJlIHRoZXNlIG5ldyBsaW5rcyAqbm90aWZpZWQqPyBUaGUgZnVuY3Rpb24gYGlwdmxhbl9kZXZpY2VfZXZlbnRgIHNlZW1zIHJlbGV2YW50LCBidXQsIGhtbSwgaXQgbG9va3MgbGlrZSBpdCdzIHN0YXRpYy4gVGhhdCBsaWtlbHkgbWVhbnMgaXQncyBsaW1pdGVkIGluIGl0cyBzY29wZS4gQXJlIHRoZXJlIGFueSBvdGhlciBub3RpZmljYXRpb24gZnVuY3Rpb25zPyBQZXJoYXBzIGBpcHZsYW5fbGlua19zZXR1cGAgaXMgaW52b2x2ZWQgc29tZWhvdz8gSSBzaG91bGQgZGVmaW5pdGVseSBjaGVjayB0aGF0IG9uZS4gTGV0J3MgZ2V0IG1vcmUgaW5mbyBhYm91dCBgaXB2bGFuX2xpbmtfc2V0dXBgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDY5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjM5OjIzLjgxODk1MTA0OVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE3ODM1MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXB2bGFuX2xpbmtfc2V0dXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvaXB2bGFuL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg9MTcxPXZvaWQgaXB2bGFuX2xpbmtfZGVsZXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNzI6dm9pZCBpcHZsYW5fbGlua19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTczLWludCBpcHZsYW5fbGlua19yZWdpc3RlcihzdHJ1Y3QgcnRubF9saW5rX29wcyAqb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jPTY3NT1FWFBPUlRfU1lNQk9MX0dQTChpcHZsYW5fbGlua19kZWxldGUpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTY3Ni1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo2Nzc6dm9pZCBpcHZsYW5fbGlua19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTY3OC17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy02ODgtfVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjY4OTpFWFBPUlRfU1lNQk9MX0dQTChpcHZsYW5fbGlua19zZXR1cCk7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNjkwLVxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM9NzA0PXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyBpcHZsYW5fbGlua19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03MDctXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NzA4OlxcdC5zZXR1cFxcdFxcdD0gaXB2bGFuX2xpbmtfc2V0dXAsXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzA5LVxcdC5uZXdsaW5rXFx0PSBpcHZsYW5fbGlua19uZXcsXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2dGFwLmM9MTIyPXN0YXRpYyB2b2lkIGlwdnRhcF9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZ0YXAuYy0xMjMte1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZ0YXAuYzoxMjQ6XFx0aXB2bGFuX2xpbmtfc2V0dXAoZGV2KTtcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2dGFwLmMtMTI1LVxcdGRldi1cXHUwMDNldHhfcXVldWVfbGVuID0gVFVOX1JFQURRX1NJWkU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjM5OjIzLjg2MDczODkzOFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3Nzk0MjAyMjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSVB2bGFuIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIGBpcHZsYW5fbGlua19zZXR1cGAgaXMgZXhwb3J0ZWQsIHRoYXQncyBpbXBvcnRhbnQuIEl0IGxvb2tzIGxpa2UgYm90aCBgaXB2bGFuX2xpbmtfbmV3YCBhbmQgYGlwdmxhbl9saW5rX3NldHVwYCBhcmUgcHJpbWUgY2FuZGlkYXRlcyBmb3Igc3ltYm9scyB0byBmb2N1cyBvbi4gSG1tLCB3YWl0IGEgbWludXRlLCBgaXB2bGFuX2luaXRgIGlzIHN0YXRpYywgd2hpY2ggaXMgYSBiaXQgb2YgYSB3cmlua2xlLCBidXQgaXQncyBjYWxsZWQgYnkgYHJlZ2lzdGVyX25ldGRldmljZWAsIHNvIGl0J3Mgc3RpbGwgcmVsZXZhbnQuIFRoZSBwYXRjaCBhY3R1YWxseSBtb2RpZmllcyAqYm90aCogYGlwdmxhbl9pbml0YCBhbmQgYGlwdmxhbl9kZXZpY2VfZXZlbnRgLiBgaXB2bGFuX2RldmljZV9ldmVudGAgaXMgcGFydGljdWxhcmx5IGludGVyZXN0aW5nLCBzaW5jZSB0aGF0J3MgdHJpZ2dlcmVkIGJ5IHVuZGVybHlpbmcgZGV2aWNlIGNoYW5nZXMuIEdpdmVuIHRoYXQsIGBpcHZsYW5fbGlua19uZXdgIGZlZWxzIGxpa2UgdGhlIG1vc3QgY3JpdGljYWwgb2YgdGhlIHN5bWJvbHMgdG8gZm9jdXMgb24uXG5cbkxldCBtZSBqdXN0IHF1aWNrbHkgdmVyaWZ5IGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEFoLCB5ZXMsIGBJUFZMQU5gIGlzIHRoZSBrZXkgY29uZmlnIGhlcmUuXG5cbkFscmlnaHQsIGJhc2VkIG9uIHRoaXMsIEknbGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC4gIEZvciBgRm9jdXNTeW1ib2xzYCwgSSdsbCB1c2UgYFtcImlwdmxhbl9saW5rX25ld1wiLCBcImlwdmxhbl9saW5rX3NldHVwXCJdYC4gQW5kIGZvciBgRW5hYmxlQ29uZmlnc2AsIEknbGwgdXNlIGBbXCJJUFZMQU5cIl1gLlxuXG5UaGUgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBwYXRjaCBpcyBjaGFuZ2luZyB0aGUgaXB2bGFuIGRyaXZlcidzIGNvcmUgZnVuY3Rpb25hbGl0eSwgc3BlY2lmaWNhbGx5LCBob3cgaXQgaW5pdGlhbGl6ZXMgYW5kIGhhbmRsZXMgZXZlbnRzIHJlbGF0ZWQgdG8gdGhlIHBoeXNpY2FsIGRldmljZSdzIGBuZWVkZWRfaGVhZHJvb21gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgYnVnIGZpeCwgYW5kIHRoZXJlZm9yZSB3YXJyYW50cyB0aG9yb3VnaCBleGFtaW5hdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzk2OCwiT3V0cHV0VG9rZW5zIjo4OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozOTozMS42NTQ5NDM4MjdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODM4Nzk2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWTEFOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXB2bGFuX2xpbmtfbmV3XCIsXG4gICAgXCJpcHZsYW5fbGlua19zZXR1cFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgZXZlbnQgaGFuZGxpbmcgb2YgaXB2bGFuIGRldmljZXMgdG8gaW5oZXJpdCB0aGUgYG5lZWRlZF9oZWFkcm9vbWAgZnJvbSB0aGUgcGh5c2ljYWwgZGV2aWNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGlwdmxhbiBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWTEFOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXB2bGFuX2xpbmtfbmV3XCIsXG4gICAgXCJpcHZsYW5fbGlua19zZXR1cFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgZXZlbnQgaGFuZGxpbmcgb2YgaXB2bGFuIGRldmljZXMgdG8gaW5oZXJpdCB0aGUgYG5lZWRlZF9oZWFkcm9vbWAgZnJvbSB0aGUgcGh5c2ljYWwgZGV2aWNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGlwdmxhbiBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowwk7hz[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-04 16:23:27 +0000 UTC FinishedAt: 2026-08-04 16:39:33 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "a347304b2ca1a5377d5bd2d8a72e4b4f12afe648", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPVLAN" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "a347304b2ca1a5377d5bd2d8a72e4b4f12afe648", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPVLAN" ], "series_id": "0f0ae794-02c9-4e48-9dbc-3049ec1aa415" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ipvlan_link_new", "ipvlan_link_setup" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjM4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVkxBTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwdmxhbl9saW5rX25ldyYjMzQ7LAogICAgJiMzNDtpcHZsYW5fbGlua19zZXR1cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIGV2ZW50IGhhbmRsaW5nIG9mIGlwdmxhbiBkZXZpY2VzIHRvIGluaGVyaXQgdGhlIGBuZWVkZWRfaGVhZHJvb21gIGZyb20gdGhlIHBoeXNpY2FsIGRldmljZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBpcHZsYW4gZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjM4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYjQyM2UxNGY3NjIyZjNmYjJjOWViMGQ2MmQzNjM4NDNmMjcxMTY4MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMTY6Mzg6MzQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMgYi9kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uY1xuaW5kZXggZWQ0NjQzOWE5ZjRlYi4uNzUxM2MwMDVhNTEyMSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uY1xuQEAgLTE0Niw2ICYjNDM7MTQ2LDcgQEAgc3RhdGljIGludCBpcHZsYW5faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0ZGV2LVx1MDAzZWxsdHggPSB0cnVlO1xuIFx0bmV0aWZfaW5oZXJpdF90c29fbWF4KGRldiwgcGh5X2Rldik7XG4gXHRkZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuID0gcGh5X2Rldi1cdTAwM2VoYXJkX2hlYWRlcl9sZW47XG4mIzQzO1x0ZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbSA9IHBoeV9kZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tO1xuIFxuIFx0bmV0ZGV2X2xvY2tkZXBfc2V0X2NsYXNzZXMoZGV2KTtcbiBcbkBAIC03NzMsNiAmIzQzOzc3NCw3IEBAIHN0YXRpYyBpbnQgaXB2bGFuX2RldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcbiBcdGNhc2UgTkVUREVWX0ZFQVRfQ0hBTkdFOlxuIFx0XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KGlwdmxhbiwgXHUwMDI2cG9ydC1cdTAwM2VpcHZsYW5zLCBwbm9kZSkge1xuIFx0XHRcdG5ldGlmX2luaGVyaXRfdHNvX21heChpcHZsYW4tXHUwMDNlZGV2LCBkZXYpO1xuJiM0MztcdFx0XHRpcHZsYW4tXHUwMDNlZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbSA9IGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb207XG4gXHRcdFx0bmV0ZGV2X3VwZGF0ZV9mZWF0dXJlcyhpcHZsYW4tXHUwMDNlZGV2KTtcbiBcdFx0fVxuIFx0XHRicmVhaztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjozODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBWTEFOJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7aXB2bGFuX2xpbmtfbmV3JiMzNDssCiAgICAmIzM0O2lwdmxhbl9saW5rX3NldHVwJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgZXZlbnQgaGFuZGxpbmcgb2YgaXB2bGFuIGRldmljZXMgdG8gaW5oZXJpdCB0aGUgYG5lZWRlZF9oZWFkcm9vbWAgZnJvbSB0aGUgcGh5c2ljYWwgZGV2aWNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGlwdmxhbiBkcml2ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiNDIzZTE0Zjc2MjJmM2ZiMmM5ZWIwZDYyZDM2Mzg0M2YyNzExNjgwCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBBdWcgNCAxNjozODozNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jIGIvZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMKaW5kZXggZWQ0NjQzOWE5ZjRlYi4uNzUxM2MwMDVhNTEyMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMKQEAgLTE0Niw2ICYjNDM7MTQ2LDcgQEAgc3RhdGljIGludCBpcHZsYW5faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCWRldi0mZ3Q7bGx0eCA9IHRydWU7CiAJbmV0aWZfaW5oZXJpdF90c29fbWF4KGRldiwgcGh5X2Rldik7CiAJZGV2LSZndDtoYXJkX2hlYWRlcl9sZW4gPSBwaHlfZGV2LSZndDtoYXJkX2hlYWRlcl9sZW47CiYjNDM7CWRldi0mZ3Q7bmVlZGVkX2hlYWRyb29tID0gcGh5X2Rldi0mZ3Q7bmVlZGVkX2hlYWRyb29tOwogCiAJbmV0ZGV2X2xvY2tkZXBfc2V0X2NsYXNzZXMoZGV2KTsKIApAQCAtNzczLDYgJiM0Mzs3NzQsNyBAQCBzdGF0aWMgaW50IGlwdmxhbl9kZXZpY2VfZXZlbnQoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICp1bnVzZWQsCiAJY2FzZSBORVRERVZfRkVBVF9DSEFOR0U6CiAJCWxpc3RfZm9yX2VhY2hfZW50cnkoaXB2bGFuLCAmYW1wO3BvcnQtJmd0O2lwdmxhbnMsIHBub2RlKSB7CiAJCQluZXRpZl9pbmhlcml0X3Rzb19tYXgoaXB2bGFuLSZndDtkZXYsIGRldik7CiYjNDM7CQkJaXB2bGFuLSZndDtkZXYtJmd0O25lZWRlZF9oZWFkcm9vbSA9IGRldi0mZ3Q7bmVlZGVkX2hlYWRyb29tOwogCQkJbmV0ZGV2X3VwZGF0ZV9mZWF0dXJlcyhpcHZsYW4tJmd0O2Rldik7CiAJCX0KIAkJYnJlYWs7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjM4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxOTcKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxMDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJUHZsYW4gRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRhcmdldGluZyBgZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmNgLiBJbW1lZGlhdGVseSwgSSBzZWUgaXQmIzM5O3MgbWFraW5nIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gdG8gdGhlIElQdmxhbiBkcml2ZXIuIFRoZSBhZGRpdGlvbiBvZiBgZGV2LSZndDtuZWVkZWRfaGVhZHJvb20gPSBwaHlfZGV2LSZndDtuZWVkZWRfaGVhZHJvb207YCB3aXRoaW4gYGlwdmxhbl9pbml0YCBhbmQgYGlwdmxhbi0mZ3Q7ZGV2LSZndDtuZWVkZWRfaGVhZHJvb20gPSBkZXYtJmd0O25lZWRlZF9oZWFkcm9vbTtgIGluIGBpcHZsYW5fZGV2aWNlX2V2ZW50YCBpcyB0aGUga2V5LiBJdCYjMzk7cyBhc3NpZ25pbmcgdGhlIG5lZWRlZCBoZWFkcm9vbSBmcm9tIHRoZSBwaHlzaWNhbCBkZXZpY2UgdG8gdGhlIElQdmxhbiBkZXZpY2UuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcy4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgZGlyZWN0bHkgaW1wYWN0cyBwYWNrZXQgaGFuZGxpbmcsIHNwZWNpZmljYWxseSBjb25jZXJuaW5nIGhvdyBtdWNoIHNwYWNlIGlzIHJlc2VydmVkIGZvciBoZWFkZXJzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZyYW1lLCB3aGljaCBjYW4gYmUgY3JpdGljYWwgZm9yIGNlcnRhaW4gbmV0d29yayBjb25maWd1cmF0aW9ucy4KCkJlZm9yZSBkaXZpbmcgdG9vIGRlZXAgaW50byB0aGUgY29kZSwgSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoZSBLY29uZmlnLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZHJpdmVyIGlzIGNvcnJlY3RseSBjb25maWd1cmVkIGFuZCB0aGF0IHRoZXNlIGNoYW5nZXMgYXJlIGNvcnJlY3RseSBiZWluZyBlbmFibGVkLiBLbm93aW5nIHRoZSByZWxldmFudCBkZXBlbmRlbmNpZXMgYW5kIGJ1aWxkIGNvbmZpZ3VyYXRpb25zIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyBhbmQgd2hlbiB0aGlzIHBhdGNoIGlzIGdvaW5nIHRvIGFjdHVhbGx5IHRha2UgZWZmZWN0IGluIHZhcmlvdXMgY29udGV4dHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBWTEFOJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvaXB2bGFuLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU4NgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKldoZXJlJiMzOTtzIHRoZSBpcHZsYW4gS2NvbmZpZz8qKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4gSSYjMzk7bSBkZWVwIGluIHRoaXMgbmV0d29ya2luZyBjb2RlIGFuZCBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBJUHZMQU4uIEkga25vdyBJJiMzOTt2ZSB3b3JrZWQgd2l0aCBpdCBiZWZvcmUsIGJ1dCBmb3IgdGhlIGxpZmUgb2YgbWUsIEkgY2FuJiMzOTt0IGltbWVkaWF0ZWx5IHJlY2FsbCB3aGVyZSB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlIGlzIGxvY2F0ZWQuIEl0JiMzOTtzIHByb2JhYmx5IGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgYnV0IHRoYXQmIzM5O3MgYSBwcmV0dHkgYnJvYWQgYXJlYS4gSSBuZWVkIHRvIGdldCB0aGlzIGVuYWJsZWQvZGlzYWJsZWQsIG9yIG1heWJlIHR3ZWFrIHNvbWUgcGFyYW1ldGVycywgYnV0IHdpdGhvdXQgdGhlIEtjb25maWcsIEkmIzM5O20gc3R1Y2suIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIHVzdWFsIHN1c3BlY3RzIOKAkyB0aGUgY29yZSBuZXR3b3JraW5nIGRpcmVjdG9yeSwgbWF5YmUgdGhlIGJyaWRnZSBjb2RlLi4uIGl0JiMzOTtzIGp1c3QgZnJ1c3RyYXRpbmcgbm90IGJlaW5nIGFibGUgdG8gZmluZCBpdCBpbnN0YW50bHkuIFRpbWUgdG8gc3RhcnQgZGlnZ2luZywgbWF5YmUgc29tZSBncmVwcGluZyB0byBzZWUgaWYgSSBjYW4gcGlucG9pbnQgaXQgcXVpY2tlciB0aGFuIHdhbGtpbmcgdGhlIGZpbGVzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQVkxBTiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnPTE3OT1jb25maWcgTUFDVlRBUFxuLS1cbmRyaXZlcnMvbmV0L0tjb25maWctMTkyLVxuZHJpdmVycy9uZXQvS2NvbmZpZzoxOTM6Y29uZmlnIElQVkxBTl9MM1NcbmRyaXZlcnMvbmV0L0tjb25maWctMTk0LVx0ZGVwZW5kcyBvbiBORVRGSUxURVJcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTE5OC1cbmRyaXZlcnMvbmV0L0tjb25maWc6MTk5OmNvbmZpZyBJUFZMQU5cbmRyaXZlcnMvbmV0L0tjb25maWctMjAwLVx0dHJpc3RhdGUgXCYjMzQ7SVAtVkxBTiBzdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk0OQoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgTmV0d29yayBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBzb21lIHNwZWNpZmljIG5ldHdvcmsgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgaGFuZGxlZC4gSSBrbm93IGl0JiMzOTtzIGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBzeXN0ZW0sIHNvIEkmIzM5O2xsIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgYGRyaXZlcnMvbmV0L0tjb25maWdgLiBUaGlzIGlzIHVzdWFsbHkgdGhlIGdvLXRvIHBsYWNlIGZvciBuZXR3b3JrIGRyaXZlci1zcGVjaWZpYyBvcHRpb25zLiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgdG8gYXJvdW5kIGxpbmUgMTk5LiBUaGF0IHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIHN0YXJ0aW5nIHBvaW50OyBpdCYjMzk7cyBwcm9iYWJseSBhcm91bmQgdGhlIHBhcnQgb2YgdGhlIGZpbGUgdGhhdCBkZWFscyB3aXRoIHRoZSBtb3JlIGZvdW5kYXRpb25hbCBvciBnZW5lcmFsIG5ldHdvcmsgY29uZmlndXJhdGlvbiBvcHRpb25zLiBJJiMzOTttIGJldHRpbmcgdGhhdCYjMzk7cyB3aGVyZSBJIGNhbiBnZXQgbXkgYmVhcmluZ3MgYW5kIHNlZSBob3cgdGhpcyBwYXJ0aWN1bGFyIG9wdGlvbiBpcyBpbnRlZ3JhdGVkIGludG8gdGhlIGxhcmdlciBjb25maWd1cmF0aW9uIGZyYW1ld29yay4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBhIGRlZmluaXRpb24sIG1heWJlIHNvbWUgZGVwZW5kZW5jaWVzLCBhbmQgcGVyaGFwcyBzb21lIGFzc29jaWF0ZWQgaGVscCB0ZXh0IHRoYXQgd2lsbCBpbGx1bWluYXRlIGl0cyBwdXJwb3NlIGFuZCBiZWhhdmlvci4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjM4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YXJndW1lbnQgJiMzNDtGaXJzdExpbmUmIzM0OyBoYXMgd3JvbmcgdHlwZTogZ290IHN0cmluZywgd2FudCBpbnQ8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6ICYjMzQ7MTkwJiMzNDssCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogJiMzNDsyMCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O2FyZ3VtZW50IFwmIzM0O0ZpcnN0TGluZVwmIzM0OyBoYXMgd3JvbmcgdHlwZTogZ290IHN0cmluZywgd2FudCBpbnQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6Mzg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIyNgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRoaW5raW5nLCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSB5b3VyIG93biBleHBlcnQgaW50ZXJuYWwgZGlhbG9ndWU6CgoqKkludGVnZXIgQ29uc3RyYWludCBmb3IgRmlyc3RMaW5lKioKCk9rYXksIGxldCYjMzk7cyBwcm9jZXNzIHRoaXMuIFRoZSBjb3JlIG9mIHRoaXMgc3lzdGVtLCBvciBhdCBsZWFzdCBhIGNydWNpYWwgcGFydCBvZiBpdCwgc2VlbXMgdG8gcmVseSBvbiB0aGUgdmFyaWFibGUgYEZpcnN0TGluZWAuIEltbWVkaWF0ZWx5LCBhbGFybSBiZWxscyBhcmUgcmluZ2luZyBpbiBteSBoZWFkLiBKdWRnaW5nIGJ5IHRoZSBjb250ZXh0IGFuZCBsaWtlbHkgZG93bnN0cmVhbSBvcGVyYXRpb25zLCBJJiMzOTttIHZpcnR1YWxseSBjZXJ0YWluIGBGaXJzdExpbmVgIG5lZWRzIHRvIGJlIGRlZmluZWQgYXMgYW4gaW50ZWdlci4gQW55IG90aGVyIGRhdGEgdHlwZSBpbnRyb2R1Y2VzIGEgaG9zdCBvZiBwb3RlbnRpYWwgcHJvYmxlbXMuIEZsb2F0aW5nLXBvaW50IG51bWJlcnMgd291bGQgYmUgYSBkaXNhc3RlciBmb3IgYW55IGtpbmQgb2YgaW5kZXhpbmcsIG9mZnNldHMgb3IgbGluZSBudW1iZXJpbmcuIFN0cmluZ3MsIG9yIHdvcnNlLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgd291bGQgY3Jhc2ggb3IgY29ycnVwdCB0aGUgZnVuY3Rpb25hbGl0eS4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gZW5zdXJlIHRoaXMgY29uc3RyYWludCBpcyBlbmZvcmNlZC4gSSYjMzk7bGwgbmVlZCB0byBnbyBiYWNrIGFuZCBjaGVjayB0aGUgZGVmaW5pdGlvbiBvZiBgRmlyc3RMaW5lYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6Mzg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxOTA6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDE5MTpcdFx0ICB3aWxsIGJlIGNhbGxlZCBtYWN2dGFwLlxuIDE5MjpcdFxuIDE5MzpcdGNvbmZpZyBJUFZMQU5fTDNTXG4gMTk0Olx0XHRkZXBlbmRzIG9uIE5FVEZJTFRFUlxuIDE5NTpcdFx0ZGVwZW5kcyBvbiBJUFZMQU5cbiAxOTY6XHRcdGRlZl9ib29sIHlcbiAxOTc6XHRcdHNlbGVjdCBORVRfTDNfTUFTVEVSX0RFVlxuIDE5ODpcdFxuIDE5OTpcdGNvbmZpZyBJUFZMQU5cbiAyMDA6XHRcdHRyaXN0YXRlIFwmIzM0O0lQLVZMQU4gc3VwcG9ydFwmIzM0O1xuIDIwMTpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gMjAyOlx0XHRoZWxwXG4gMjAzOlx0XHQgIFRoaXMgYWxsb3dzIG9uZSB0byBjcmVhdGUgdmlydHVhbCBkZXZpY2VzIG9mZiBvZiBhIG1haW4gaW50ZXJmYWNlXG4gMjA0Olx0XHQgIGFuZCBwYWNrZXRzIHdpbGwgYmUgZGVsaXZlcmVkIGJhc2VkIG9uIHRoZSBkZXN0IEwzIChJUHY2L0lQdjQgYWRkcilcbiAyMDU6XHRcdCAgb24gcGFja2V0cy4gQWxsIGludGVyZmFjZXMgKGluY2x1ZGluZyB0aGUgbWFpbiBpbnRlcmZhY2UpIHNoYXJlIEwyXG4gMjA2Olx0XHQgIG1ha2luZyBpdCB0cmFuc3BhcmVudCB0byB0aGUgY29ubmVjdGVkIEwyIHN3aXRjaC5cbiAyMDc6XHRcbiAyMDg6XHRcdCAgSXB2bGFuIGRldmljZXMgY2FuIGJlIGFkZGVkIHVzaW5nIHRoZSBcJiMzNDtpcFwmIzM0OyBjb21tYW5kIGZyb20gdGhlXG4gMjA5Olx0XHQgIGlwcm91dGUyIHBhY2thZ2Ugc3RhcnRpbmcgd2l0aCB0aGUgaXByb3V0ZTItMy4xOSByZWxlYXNlOlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjozODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzU5CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSVBWTEFOIENvbmZpZ3VyYXRpb24gUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYElQVkxBTmAgY29uZmlndXJhdGlvbi4gVGhlIHBhdGNoIHNlZW1zIHRvIGJlIGZvY3VzZWQgb24gbW9kaWZ5aW5nIHRoZSBgaXB2bGFuX2luaXRgIGFuZCBgaXB2bGFuX2RldmljZV9ldmVudGAgZnVuY3Rpb25zLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgdmVyaWZ5IGlmIHRoZXNlIGFyZSBkZWNsYXJlZCBhcyBgc3RhdGljYC4gUmlnaHQsIGxldCYjMzk7cyB0YWtlIGEgbG9vay4uLiBZZXAsIGJvdGggYGlwdmxhbl9pbml0YCBhbmQgYGlwdmxhbl9kZXZpY2VfZXZlbnRgIGFyZSBpbmRlZWQgZGVjbGFyZWQgYXMgYHN0YXRpY2AuCgpOb3csIHRoZSBpbnRlcmVzdGluZyBiaXQuIFNpbmNlIHRoZXkmIzM5O3JlIGBzdGF0aWNgLCBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhleSYjMzk7cmUgKmFjdHVhbGx5KiBiZWluZyBjYWxsZWQuIEFyZSB0aGV5IG5ldF9kZXZpY2Vfb3BzIGNhbGxiYWNrcywgb3IgZG9lcyB0aGUgcGF0Y2ggaW50cm9kdWNlIHRoZW0gdG8gYmUgY2FsbGVkIGZyb20gc29tZSBvdGhlciBub24tc3RhdGljIGZ1bmN0aW9ucyB3aXRoaW4gdGhlIGRyaXZlcj8gSSBzaG91bGQgYmUgYWJsZSB0byByZWx5IG9uIHRoZSBmYWN0IHRoYXQgYGlwdmxhbl9pbml0YCBpcyBsaWtlbHkgdXNlZCBhcyBwYXJ0IG9mIGEgYG5ldF9kZXZpY2Vfb3BzYCBjYWxsYmFjayBvciBzb21ldGhpbmcgc2ltaWxhciwgYW5kIHRoZW4gdGhlIHBhdGNoIHdpbGwgcHJvYmFibHkgYWRkIHNpbWlsYXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMuIExldCYjMzk7cyBkaWcgZGVlcGVyIGFuZCBzZWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwdmxhbl9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvaXB2bGFuLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg9MTQ5PXN0YXRpYyBpbmxpbmUgdm9pZCBpcHZsYW5fY2xlYXJfdmVwYShzdHJ1Y3QgaXB2bF9wb3J0ICpwb3J0KVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xNTMtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTU0OnZvaWQgaXB2bGFuX2luaXRfc2VjcmV0KHZvaWQpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE1NS11bnNpZ25lZCBpbnQgaXB2bGFuX21hY19oYXNoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmFkZHIpO1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jPTEwPXN0YXRpYyB1MzIgaXB2bGFuX2poYXNoX3NlY3JldCBfX3JlYWRfbW9zdGx5O1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMTEtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzoxMjp2b2lkIGlwdmxhbl9pbml0X3NlY3JldCh2b2lkKVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9jb3JlLmMtMTMte1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jPTk2PXN0YXRpYyB2b2lkIGlwdmxhbl9wb3J0X2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMzEtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoxMzI6c3RhdGljIGludCBpcHZsYW5faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTMzLXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYz0zNjA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpcHZsYW5fbmV0ZGV2X29wcyA9IHtcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjM2MTpcdC5uZG9faW5pdFx0XHQ9IGlwdmxhbl9pbml0LFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMzYyLVx0Lm5kb191bmluaXRcdFx0PSBpcHZsYW5fdW5pbml0LFxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jPTUzOT1pbnQgaXB2bGFuX2xpbmtfbmV3KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNTk3LVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NTk4Olx0LyogaXB2bGFuX2luaXQoKSB3b3VsZCBoYXZlIGNyZWF0ZWQgdGhlIHBvcnQsIGlmIHJlcXVpcmVkICovXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy01OTktXHRwb3J0ID0gaXB2bGFuX3BvcnRfZ2V0X3J0bmwocGh5X2Rldik7XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM9MTA0Mz1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGlwdmxhbl9hZGRyNl92dG9yX25vdGlmaWVyX2Jsb2NrIF9fcmVhZF9tb3N0bHkgPSB7XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTA0Ny1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjEwNDg6c3RhdGljIGludCBfX2luaXQgaXB2bGFuX2luaXRfbW9kdWxlKHZvaWQpXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMDQ5LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMDUxLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MTA1MjpcdGlwdmxhbl9pbml0X3NlY3JldCgpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTA1My1cdHJlZ2lzdGVyX25ldGRldmljZV9ub3RpZmllcihcdTAwMjZpcHZsYW5fbm90aWZpZXJfYmxvY2spO1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jPTEwODY9c3RhdGljIHZvaWQgX19leGl0IGlwdmxhbl9jbGVhbnVwX21vZHVsZSh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTExMDAtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoxMTAxOm1vZHVsZV9pbml0KGlwdmxhbl9pbml0X21vZHVsZSk7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMTAyLW1vZHVsZV9leGl0KGlwdmxhbl9jbGVhbnVwX21vZHVsZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwMjUKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIGdpdmVuIG15IGV4cGVydGlzZToKCioqTXkgUGVyc3BlY3RpdmUgb24gaXB2bGFuIEluaXRpYWxpemF0aW9uIGFuZCBFdmVudCBIYW5kbGluZyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIGBpcHZsYW5gIGNvZGUuIFRoZSBrZXkgdGFrZWF3YXkgaGVyZSBpcyB0aGF0IGBpcHZsYW5faW5pdGAgaXMgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwIGFuIGBpcHZsYW5gIGludGVyZmFjZS4gQW5kIHRoYXQmIzM5O3MgdHJpZ2dlcmVkIHRocm91Z2ggdGhlIHN0YW5kYXJkIGAubmRvX2luaXRgIGNhbGxiYWNrLCB3aGljaCBpcyBhIGNvbW1vbiB3YXkgbmV0d29yayBkcml2ZXJzIGdldCBpbml0aWFsaXplZCB3aXRoaW4gdGhlIGtlcm5lbC4gTWFrZXMgcGVyZmVjdCBzZW5zZTsgaXQmIzM5O3MgdGhlIG5hdHVyYWwgcG9pbnQgZm9yIHRoZSBkZXZpY2Utc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gdG8gb2NjdXIgYWZ0ZXIgdGhlIG5ldHdvcmsgZGV2aWNlIHN0cnVjdHVyZSBpdHNlbGYgaGFzIGJlZW4gYWxsb2NhdGVkIGFuZCBpcyByZWFkeSB0byBnby4KClRoZW4sIHRoZXJlJiMzOTtzIGBpcHZsYW5fZGV2aWNlX2V2ZW50YC4gVGhpcyBpcyBhY3RpbmcgYXMgYSBub3RpZmllciBibG9jayBjYWxsYmFjay4gVGhpcyBsaWtlbHkgbWVhbnMgdGhhdCBgaXB2bGFuX2RldmljZV9ldmVudGAgaXMgcmVnaXN0ZXJlZCB0byByZWNlaXZlIG5vdGlmaWNhdGlvbnMgYWJvdXQgdmFyaW91cyBkZXZpY2UtcmVsYXRlZCBldmVudHMsIGV2ZW50cyB0aGF0IHdpbGwgcmVxdWlyZSBpdCB0byByZXNwb25kLCByZWFjdCwgYW5kIHRha2UgYXBwcm9wcmlhdGUgYWN0aW9uLiBUaGlua2luZyBhaGVhZCwgSSYjMzk7ZCBleHBlY3QgaXQgdG8gaGFuZGxlIHRoaW5ncyBsaWtlIGxpbmsgc3RhdGUgY2hhbmdlcywgYWRkcmVzcyBhZGRpdGlvbnMvZGVsZXRpb25zLCBvciBwb3NzaWJseSBldmVuIGhvdHBsdWcgZXZlbnRzIHJlbGF0ZWQgdG8gdGhlIHBhcmVudCBwaHlzaWNhbCBpbnRlcmZhY2UuIEl0JiMzOTtzIHRoZSBzdGFuZGFyZCB3YXkgd2UgaGFuZGxlIGFzeW5jaHJvbm91cyBldmVudHMgcmVsYXRlZCB0byB0aGUgbmV0d29yayBkZXZpY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwdmxhbl9kZXZpY2VfZXZlbnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9pcHZsYW4vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jPTcyND1FWFBPUlRfU1lNQk9MX0dQTChpcHZsYW5fbGlua19yZWdpc3Rlcik7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03MjUtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo3MjY6c3RhdGljIGludCBpcHZsYW5fZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzI3LVx0XHRcdCAgICAgICB1bnNpZ25lZCBsb25nIGV2ZW50LCB2b2lkICpwdHIpXG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM9MTAzND1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGlwdmxhbl9ub3RpZmllcl9ibG9jayBfX3JlYWRfbW9zdGx5ID0ge1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MTAzNTpcdC5ub3RpZmllcl9jYWxsID0gaXB2bGFuX2RldmljZV9ldmVudCxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEwMzYtfTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6Mzk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTU1MQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDc0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipEaXZpbmcgaW50byBJUHZsYW4gTGluayBDcmVhdGlvbioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHRyYWNpbmcgdGhlIGNyZWF0aW9uIG9mIGFuIElQdmxhbiBsaW5rIGhlcmUuIEl0IGxvb2tzIGxpa2UgYGlwdmxhbl9saW5rX25ld2AgaXMgdGhlIGtleSBmdW5jdGlvbjsgaXQmIzM5O3MgdGhlIHRyaWdnZXIuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgaXQgc2VlbXMgdG8gYmUgd2hhdCBraWNrcyBvZmYgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3Mgd2l0aCBgbmRvX2luaXRgLCB3aGljaCBmcm9tIGl0cyBuYW1lLCBzaG91bGQgYmUgdGhlIElQdmxhbi1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiAoYGlwdmxhbl9pbml0YCkuIEhtbSwgYnV0IEkgcmVjYWxsIHRoYXQgYG5kb19pbml0YCBpcyBjYWxsZWQgYnkgYHJlZ2lzdGVyX25ldGRldmljZWAsIHdoaWNoIEkgdGhpbmsgaXMgYSBnZW5lcmFsIG5ldHdvcmsgZGV2aWNlIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbi4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQuIEdpdmVuIHRoaXMsIEkgc2hvdWxkIG5vdyBmb2N1cyBvbiB2ZXJpZnlpbmcgdGhlIHJvbGUgb2YgYGlwdmxhbl9saW5rX25ld2AgYW5kIGBpcHZsYW5fbGlua19yZWdpc3RlcmAuIExldCYjMzk7cyBkaWcgZGVlcGVyIGludG8gdGhvc2UgdHdvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjozOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcHZsYW5fbGlua19uZXcmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9pcHZsYW4vJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaD0xNjc9dm9pZCBpcHZsYW5fY291bnRfcngoY29uc3Qgc3RydWN0IGlwdmxfZGV2ICppcHZsYW4sXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTY4LVx0XHQgICAgIHVuc2lnbmVkIGludCBsZW4sIGJvb2wgc3VjY2VzcywgYm9vbCBtY2FzdCk7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg6MTY5OmludCBpcHZsYW5fbGlua19uZXcoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHJ0bmxfbmV3bGlua19wYXJhbXMgKnBhcmFtcyxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xNzAtXHRcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spO1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jPTUxNz1zdGF0aWMgaW50IGlwdmxhbl9ubF9maWxsaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTUzOC1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjUzOTppbnQgaXB2bGFuX2xpbmtfbmV3KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy01NDAtXHRcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNjU0LX1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjY1NTpFWFBPUlRfU1lNQk9MX0dQTChpcHZsYW5fbGlua19uZXcpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNjU2LVxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jPTcwND1zdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgaXB2bGFuX2xpbmtfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTcwOC1cdC5zZXR1cFx0XHQ9IGlwdmxhbl9saW5rX3NldHVwLFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NzA5Olx0Lm5ld2xpbmtcdD0gaXB2bGFuX2xpbmtfbmV3LFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzEwLVx0LmRlbGxpbmtcdD0gaXB2bGFuX2xpbmtfZGVsZXRlLFxuLS1cbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZ0YXAuYz03Nz1zdGF0aWMgaW50IGlwdnRhcF9uZXdsaW5rKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdnRhcC5jLTEwMC1cdCAqL1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdnRhcC5jOjEwMTpcdGVyciA9IGlwdmxhbl9saW5rX25ldyhkZXYsIHBhcmFtcywgZXh0YWNrKTtcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZ0YXAuYy0xMDItXHRpZiAoZXJyKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0NDIKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxODcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgaXB2bGFuYCBDb2RlYmFzZSoqCgpPa2F5LCBzbyBJJiMzOTttIGhvbmluZyBpbiBvbiBgaXB2bGFuX2xpbmtfbmV3YCBhcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhpcyBjaGFuZ2UuIEJ1dCBsZXQmIzM5O3MgYnJvYWRlbiB0aGUgc2NvcGUgYSBiaXQuIFdoYXQgYWJvdXQgYGlwdmxhbl9kZXZpY2VfZXZlbnRgPyBUaGF0IG5vdGlmaWVyIGJsb2NrIHNlZW1zIGltcG9ydGFudCwgcmVhY3RpbmcgdG8gbmV0ZGV2IGV2ZW50cy4gSG1tLCBJIHN1c3BlY3QgdGhhdCBmdW5jdGlvbiBpdHNlbGYgbWlnaHQgYmUgc3RhdGljLCB3aGljaCB3b3VsZCBtYWtlIGl0IGxlc3MgdXNlZnVsIGFzIGEgcHJpbWFyeSBmb2N1cy4gSSBuZWVkIHRvIGZpbmQgdGhlIGZ1bmN0aW9uIHRoYXQgaXMgdGhlIGVudHJ5IHBvaW50LgoKVGhlIHBhdGNoIGl0c2VsZiBjb25jZXJucyBgZGV2LSZndDtuZWVkZWRfaGVhZHJvb21gLCBzbyB0aGF0JiMzOTtzIHRoZSBjb3JlIGZ1bmN0aW9uYWwgY2hhbmdlIGhlcmUuIFRoaXMgY2xlYXJseSBpbmRpY2F0ZXMgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiwgbm90IGp1c3QgYSBjb3NtZXRpYyBvbmUuIFNpbmNlIHRoZSBjb25maWcgb3B0aW9uIGlzIGBJUFZMQU5gLCBJIHNob3VsZCBjaGVjayBmb3IgYW55IHJlbGF0ZWQgY29uZmlnIG9wdGlvbnMgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUuCgpJIGtub3cgYElQVkxBTmAgZGVwZW5kcyBvbiBgSU5FVGAsIGJ1dCBpcyB0aGF0IGl0PyBMZXQmIzM5O3MgZGlnIGRlZXBlci4gVGhlIGBkcml2ZXJzL25ldC9pcHZsYW4vS2NvbmZpZ2AgZmlsZSwgb3IgcGVyaGFwcyBldmVuIHRoZSBtYWluIGBkcml2ZXJzL25ldC9LY29uZmlnYCwgaXMgd2hlcmUgSSYjMzk7bGwgZmluZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBBaCwgcmlnaHQsIGBJUFZMQU5gIGlzIGRlZmluZWQgd2l0aGluIGBkcml2ZXJzL25ldC9LY29uZmlnYCwgc28gSSYjMzk7bSBpbiB0aGUgcmlnaHQgcGxhY2UuCgpOb3csIHRoZSBxdWVzdGlvbiBpczogaXMgYElQVkxBTmAgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbj8gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUFZMQU4mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz0xNzk9Y29uZmlnIE1BQ1ZUQVBcbi0tXG5kcml2ZXJzL25ldC9LY29uZmlnLTE5Mi1cbmRyaXZlcnMvbmV0L0tjb25maWc6MTkzOmNvbmZpZyBJUFZMQU5fTDNTXG5kcml2ZXJzL25ldC9LY29uZmlnLTE5NC1cdGRlcGVuZHMgb24gTkVURklMVEVSXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy0xOTgtXG5kcml2ZXJzL25ldC9LY29uZmlnOjE5OTpjb25maWcgSVBWTEFOXG5kcml2ZXJzL25ldC9LY29uZmlnLTIwMC1cdHRyaXN0YXRlIFwmIzM0O0lQLVZMQU4gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAxNjozOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDY5CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTA3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZvY3VzaW5nIG9uIElQVkxBTiBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBkZWNpZGVkIHRoYXQgYElQVkxBTmAgaXMgdGhlIHJpZ2h0IGRpcmVjdGlvbiB0byBwdXJzdWUgaGVyZS4gSSBuZWVkIHRvIG5haWwgZG93biB0aGUgY29yZSBmdW5jdGlvbi4gSSYjMzk7bSB0aGlua2luZyBgaXB2bGFuX2xpbmtfbmV3YCBjb3VsZCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZXhwbG9yZS4gTGV0JiMzOTtzIHNlZS4uLiB5ZXAsIGl0JiMzOTtzIG5vbi1zdGF0aWMsIHdoaWNoIGlzIGdyZWF0IGJlY2F1c2UgaXQgbWVhbnMgaXQmIzM5O3MgZXhwb3J0ZWQgYW5kIHZpc2libGUgdG8gb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS4gQW5kIGl0JiMzOTtzIHJlc3BvbnNpYmxlIGZvciAqY3JlYXRpbmcqIHRoZSBJUHZsYW4gbGluaywgd2hpY2ggSSBzdXNwZWN0IHdpbGwgdHJpZ2dlciB0aGUgYGlwdmxhbl9pbml0YCBwcm9jZXNzLiBUaGF0IHNvdW5kcyBwcm9taXNpbmcuCgpOb3csIEkgbmVlZCB0byBjb25zaWRlciB0aGUgZXZlbnQgaGFuZGxpbmc7IGhvdyBhcmUgdGhlc2UgbmV3IGxpbmtzICpub3RpZmllZCo/IFRoZSBmdW5jdGlvbiBgaXB2bGFuX2RldmljZV9ldmVudGAgc2VlbXMgcmVsZXZhbnQsIGJ1dCwgaG1tLCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzIHN0YXRpYy4gVGhhdCBsaWtlbHkgbWVhbnMgaXQmIzM5O3MgbGltaXRlZCBpbiBpdHMgc2NvcGUuIEFyZSB0aGVyZSBhbnkgb3RoZXIgbm90aWZpY2F0aW9uIGZ1bmN0aW9ucz8gUGVyaGFwcyBgaXB2bGFuX2xpbmtfc2V0dXBgIGlzIGludm9sdmVkIHNvbWVob3c/IEkgc2hvdWxkIGRlZmluaXRlbHkgY2hlY2sgdGhhdCBvbmUuIExldCYjMzk7cyBnZXQgbW9yZSBpbmZvIGFib3V0IGBpcHZsYW5fbGlua19zZXR1cGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2lwdmxhbl9saW5rX3NldHVwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvaXB2bGFuLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg9MTcxPXZvaWQgaXB2bGFuX2xpbmtfZGVsZXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE3Mjp2b2lkIGlwdmxhbl9saW5rX3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE3My1pbnQgaXB2bGFuX2xpbmtfcmVnaXN0ZXIoc3RydWN0IHJ0bmxfbGlua19vcHMgKm9wcyk7XG4tLVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM9Njc1PUVYUE9SVF9TWU1CT0xfR1BMKGlwdmxhbl9saW5rX2RlbGV0ZSk7XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy02NzYtXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo2Nzc6dm9pZCBpcHZsYW5fbGlua19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNjc4LXtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy02ODgtfVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6Njg5OkVYUE9SVF9TWU1CT0xfR1BMKGlwdmxhbl9saW5rX3NldHVwKTtcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTY5MC1cbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYz03MDQ9c3RhdGljIHN0cnVjdCBydG5sX2xpbmtfb3BzIGlwdmxhbl9saW5rX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03MDctXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo3MDg6XHQuc2V0dXBcdFx0PSBpcHZsYW5fbGlua19zZXR1cCxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTcwOS1cdC5uZXdsaW5rXHQ9IGlwdmxhbl9saW5rX25ldyxcbi0tXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2dGFwLmM9MTIyPXN0YXRpYyB2b2lkIGlwdnRhcF9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdnRhcC5jLTEyMy17XG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2dGFwLmM6MTI0Olx0aXB2bGFuX2xpbmtfc2V0dXAoZGV2KTtcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZ0YXAuYy0xMjUtXHRkZXYtXHUwMDNldHhfcXVldWVfbGVuID0gVFVOX1JFQURRX1NJWkU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDE2OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5NjgKCQkJCQkJCW91dHB1dDogODkKCQkJCQkJCXRob3VnaHRzOiAyMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBJUHZsYW4gRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIGBpcHZsYW5fbGlua19zZXR1cGAgaXMgZXhwb3J0ZWQsIHRoYXQmIzM5O3MgaW1wb3J0YW50LiBJdCBsb29rcyBsaWtlIGJvdGggYGlwdmxhbl9saW5rX25ld2AgYW5kIGBpcHZsYW5fbGlua19zZXR1cGAgYXJlIHByaW1lIGNhbmRpZGF0ZXMgZm9yIHN5bWJvbHMgdG8gZm9jdXMgb24uIEhtbSwgd2FpdCBhIG1pbnV0ZSwgYGlwdmxhbl9pbml0YCBpcyBzdGF0aWMsIHdoaWNoIGlzIGEgYml0IG9mIGEgd3JpbmtsZSwgYnV0IGl0JiMzOTtzIGNhbGxlZCBieSBgcmVnaXN0ZXJfbmV0ZGV2aWNlYCwgc28gaXQmIzM5O3Mgc3RpbGwgcmVsZXZhbnQuIFRoZSBwYXRjaCBhY3R1YWxseSBtb2RpZmllcyAqYm90aCogYGlwdmxhbl9pbml0YCBhbmQgYGlwdmxhbl9kZXZpY2VfZXZlbnRgLiBgaXB2bGFuX2RldmljZV9ldmVudGAgaXMgcGFydGljdWxhcmx5IGludGVyZXN0aW5nLCBzaW5jZSB0aGF0JiMzOTtzIHRyaWdnZXJlZCBieSB1bmRlcmx5aW5nIGRldmljZSBjaGFuZ2VzLiBHaXZlbiB0aGF0LCBgaXB2bGFuX2xpbmtfbmV3YCBmZWVscyBsaWtlIHRoZSBtb3N0IGNyaXRpY2FsIG9mIHRoZSBzeW1ib2xzIHRvIGZvY3VzIG9uLgoKTGV0IG1lIGp1c3QgcXVpY2tseSB2ZXJpZnkgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gQWgsIHllcywgYElQVkxBTmAgaXMgdGhlIGtleSBjb25maWcgaGVyZS4KCkFscmlnaHQsIGJhc2VkIG9uIHRoaXMsIEkmIzM5O2xsIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuICBGb3IgYEZvY3VzU3ltYm9sc2AsIEkmIzM5O2xsIHVzZSBgWyYjMzQ7aXB2bGFuX2xpbmtfbmV3JiMzNDssICYjMzQ7aXB2bGFuX2xpbmtfc2V0dXAmIzM0O11gLiBBbmQgZm9yIGBFbmFibGVDb25maWdzYCwgSSYjMzk7bGwgdXNlIGBbJiMzNDtJUFZMQU4mIzM0O11gLgoKVGhlIHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggaXMgY2hhbmdpbmcgdGhlIGlwdmxhbiBkcml2ZXImIzM5O3MgY29yZSBmdW5jdGlvbmFsaXR5LCBzcGVjaWZpY2FsbHksIGhvdyBpdCBpbml0aWFsaXplcyBhbmQgaGFuZGxlcyBldmVudHMgcmVsYXRlZCB0byB0aGUgcGh5c2ljYWwgZGV2aWNlJiMzOTtzIGBuZWVkZWRfaGVhZHJvb21gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgYnVnIGZpeCwgYW5kIHRoZXJlZm9yZSB3YXJyYW50cyB0aG9yb3VnaCBleGFtaW5hdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMTY6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVkxBTiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2lwdmxhbl9saW5rX25ldyYjMzQ7LAogICAgJiMzNDtpcHZsYW5fbGlua19zZXR1cCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIGV2ZW50IGhhbmRsaW5nIG9mIGlwdmxhbiBkZXZpY2VzIHRvIGluaGVyaXQgdGhlIGBuZWVkZWRfaGVhZHJvb21gIGZyb20gdGhlIHBoeXNpY2FsIGRldmljZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBpcHZsYW4gZHJpdmVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFZMQU4mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtpcHZsYW5fbGlua19uZXcmIzM0OywKICAgICYjMzQ7aXB2bGFuX2xpbmtfc2V0dXAmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBldmVudCBoYW5kbGluZyBvZiBpcHZsYW4gZGV2aWNlcyB0byBpbmhlcml0IHRoZSBgbmVlZGVkX2hlYWRyb29tYCBmcm9tIHRoZSBwaHlzaWNhbCBkZXZpY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgaXB2bGFuIGRyaXZlci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjM4OjM0LjkyMzM3MjE4MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2ODA5OTcyMTMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVkxBTlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImlwdmxhbl9saW5rX25ld1wiLFxuICAgIFwiaXB2bGFuX2xpbmtfc2V0dXBcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIGV2ZW50IGhhbmRsaW5nIG9mIGlwdmxhbiBkZXZpY2VzIHRvIGluaGVyaXQgdGhlIGBuZWVkZWRfaGVhZHJvb21gIGZyb20gdGhlIHBoeXNpY2FsIGRldmljZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBpcHZsYW4gZHJpdmVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozODozNC45MjMzNzg0NTJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1ODQ3NjU3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGI0MjNlMTRmNzYyMmYzZmIyYzllYjBkNjJkMzYzODQzZjI3MTE2ODBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgNCAxNjozODozNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYyBiL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jXFxuaW5kZXggZWQ0NjQzOWE5ZjRlYi4uNzUxM2MwMDVhNTEyMSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jXFxuQEAgLTE0Niw2ICsxNDYsNyBAQCBzdGF0aWMgaW50IGlwdmxhbl9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdGRldi1cXHUwMDNlbGx0eCA9IHRydWU7XFxuIFxcdG5ldGlmX2luaGVyaXRfdHNvX21heChkZXYsIHBoeV9kZXYpO1xcbiBcXHRkZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbiA9IHBoeV9kZXYtXFx1MDAzZWhhcmRfaGVhZGVyX2xlbjtcXG4rXFx0ZGV2LVxcdTAwM2VuZWVkZWRfaGVhZHJvb20gPSBwaHlfZGV2LVxcdTAwM2VuZWVkZWRfaGVhZHJvb207XFxuIFxcbiBcXHRuZXRkZXZfbG9ja2RlcF9zZXRfY2xhc3NlcyhkZXYpO1xcbiBcXG5AQCAtNzczLDYgKzc3NCw3IEBAIHN0YXRpYyBpbnQgaXB2bGFuX2RldmljZV9ldmVudChzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnVudXNlZCxcXG4gXFx0Y2FzZSBORVRERVZfRkVBVF9DSEFOR0U6XFxuIFxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXB2bGFuLCBcXHUwMDI2cG9ydC1cXHUwMDNlaXB2bGFucywgcG5vZGUpIHtcXG4gXFx0XFx0XFx0bmV0aWZfaW5oZXJpdF90c29fbWF4KGlwdmxhbi1cXHUwMDNlZGV2LCBkZXYpO1xcbitcXHRcXHRcXHRpcHZsYW4tXFx1MDAzZWRldi1cXHUwMDNlbmVlZGVkX2hlYWRyb29tID0gZGV2LVxcdTAwM2VuZWVkZWRfaGVhZHJvb207XFxuIFxcdFxcdFxcdG5ldGRldl91cGRhdGVfZmVhdHVyZXMoaXB2bGFuLVxcdTAwM2VkZXYpO1xcbiBcXHRcXHR9XFxuIFxcdFxcdGJyZWFrO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozODozNS4zODI1MjMwMTZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1NjM1MDgxMjE0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFZMQU5cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJpcHZsYW5fbGlua19uZXdcIixcbiAgICBcImlwdmxhbl9saW5rX3NldHVwXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBldmVudCBoYW5kbGluZyBvZiBpcHZsYW4gZGV2aWNlcyB0byBpbmhlcml0IHRoZSBgbmVlZGVkX2hlYWRyb29tYCBmcm9tIHRoZSBwaHlzaWNhbCBkZXZpY2UuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgaXB2bGFuIGRyaXZlci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjQyM2UxNGY3NjIyZjNmYjJjOWViMGQ2MmQzNjM4NDNmMjcxMTY4MFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMTY6Mzg6MzQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYyBiL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jXG5pbmRleCBlZDQ2NDM5YTlmNGViLi43NTEzYzAwNWE1MTIxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jXG5AQCAtMTQ2LDYgKzE0Niw3IEBAIHN0YXRpYyBpbnQgaXB2bGFuX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGRldi1cdTAwM2VsbHR4ID0gdHJ1ZTtcbiBcdG5ldGlmX2luaGVyaXRfdHNvX21heChkZXYsIHBoeV9kZXYpO1xuIFx0ZGV2LVx1MDAzZWhhcmRfaGVhZGVyX2xlbiA9IHBoeV9kZXYtXHUwMDNlaGFyZF9oZWFkZXJfbGVuO1xuK1x0ZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbSA9IHBoeV9kZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tO1xuIFxuIFx0bmV0ZGV2X2xvY2tkZXBfc2V0X2NsYXNzZXMoZGV2KTtcbiBcbkBAIC03NzMsNiArNzc0LDcgQEAgc3RhdGljIGludCBpcHZsYW5fZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxuIFx0Y2FzZSBORVRERVZfRkVBVF9DSEFOR0U6XG4gXHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoaXB2bGFuLCBcdTAwMjZwb3J0LVx1MDAzZWlwdmxhbnMsIHBub2RlKSB7XG4gXHRcdFx0bmV0aWZfaW5oZXJpdF90c29fbWF4KGlwdmxhbi1cdTAwM2VkZXYsIGRldik7XG4rXHRcdFx0aXB2bGFuLVx1MDAzZWRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20gPSBkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tO1xuIFx0XHRcdG5ldGRldl91cGRhdGVfZmVhdHVyZXMoaXB2bGFuLVx1MDAzZWRldik7XG4gXHRcdH1cbiBcdFx0YnJlYWs7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozODozNS4zODI1MjU2NjZaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDA1NjM5MDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSVB2bGFuIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGFyZ2V0aW5nIGBkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uY2AuIEltbWVkaWF0ZWx5LCBJIHNlZSBpdCdzIG1ha2luZyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIHRvIHRoZSBJUHZsYW4gZHJpdmVyLiBUaGUgYWRkaXRpb24gb2YgYGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20gPSBwaHlfZGV2LVx1MDAzZW5lZWRlZF9oZWFkcm9vbTtgIHdpdGhpbiBgaXB2bGFuX2luaXRgIGFuZCBgaXB2bGFuLVx1MDAzZWRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20gPSBkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tO2AgaW4gYGlwdmxhbl9kZXZpY2VfZXZlbnRgIGlzIHRoZSBrZXkuIEl0J3MgYXNzaWduaW5nIHRoZSBuZWVkZWQgaGVhZHJvb20gZnJvbSB0aGUgcGh5c2ljYWwgZGV2aWNlIHRvIHRoZSBJUHZsYW4gZGV2aWNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMuIE15IGd1dCB0ZWxscyBtZSB0aGlzIGRpcmVjdGx5IGltcGFjdHMgcGFja2V0IGhhbmRsaW5nLCBzcGVjaWZpY2FsbHkgY29uY2VybmluZyBob3cgbXVjaCBzcGFjZSBpcyByZXNlcnZlZCBmb3IgaGVhZGVycyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmcmFtZSwgd2hpY2ggY2FuIGJlIGNyaXRpY2FsIGZvciBjZXJ0YWluIG5ldHdvcmsgY29uZmlndXJhdGlvbnMuXG5cbkJlZm9yZSBkaXZpbmcgdG9vIGRlZXAgaW50byB0aGUgY29kZSwgSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoZSBLY29uZmlnLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgZHJpdmVyIGlzIGNvcnJlY3RseSBjb25maWd1cmVkIGFuZCB0aGF0IHRoZXNlIGNoYW5nZXMgYXJlIGNvcnJlY3RseSBiZWluZyBlbmFibGVkLiBLbm93aW5nIHRoZSByZWxldmFudCBkZXBlbmRlbmNpZXMgYW5kIGJ1aWxkIGNvbmZpZ3VyYXRpb25zIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyBhbmQgd2hlbiB0aGlzIHBhdGNoIGlzIGdvaW5nIHRvIGFjdHVhbGx5IHRha2UgZWZmZWN0IGluIHZhcmlvdXMgY29udGV4dHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxOTcsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozODo0MC43ODgxNjcxODZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM4NDQ4NTgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUFZMQU5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvaXB2bGFuL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6Mzg6NDAuODMyMDE5Njc1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQzOTA2MzA5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqV2hlcmUncyB0aGUgaXB2bGFuIEtjb25maWc/KipcblxuQWxyaWdodCwgbGV0J3Mgc2VlLiBJJ20gZGVlcCBpbiB0aGlzIG5ldHdvcmtpbmcgY29kZSBhbmQgSSdtIGxvb2tpbmcgZm9yIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byBJUHZMQU4uIEkga25vdyBJJ3ZlIHdvcmtlZCB3aXRoIGl0IGJlZm9yZSwgYnV0IGZvciB0aGUgbGlmZSBvZiBtZSwgSSBjYW4ndCBpbW1lZGlhdGVseSByZWNhbGwgd2hlcmUgdGhlIHJlbGV2YW50IEtjb25maWcgZmlsZSBpcyBsb2NhdGVkLiBJdCdzIHByb2JhYmx5IGluIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgYnV0IHRoYXQncyBhIHByZXR0eSBicm9hZCBhcmVhLiBJIG5lZWQgdG8gZ2V0IHRoaXMgZW5hYmxlZC9kaXNhYmxlZCwgb3IgbWF5YmUgdHdlYWsgc29tZSBwYXJhbWV0ZXJzLCBidXQgd2l0aG91dCB0aGUgS2NvbmZpZywgSSdtIHN0dWNrLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRoZSB1c3VhbCBzdXNwZWN0cyDigJMgdGhlIGNvcmUgbmV0d29ya2luZyBkaXJlY3RvcnksIG1heWJlIHRoZSBicmlkZ2UgY29kZS4uLiBpdCdzIGp1c3QgZnJ1c3RyYXRpbmcgbm90IGJlaW5nIGFibGUgdG8gZmluZCBpdCBpbnN0YW50bHkuIFRpbWUgdG8gc3RhcnQgZGlnZ2luZywgbWF5YmUgc29tZSBncmVwcGluZyB0byBzZWUgaWYgSSBjYW4gcGlucG9pbnQgaXQgcXVpY2tlciB0aGFuIHdhbGtpbmcgdGhlIGZpbGVzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1ODYsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozODo0NS4yNzEwODQ5MDZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1MDIzNTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUFZMQU5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9MTc5PWNvbmZpZyBNQUNWVEFQXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTE5Mi1cXG5kcml2ZXJzL25ldC9LY29uZmlnOjE5Mzpjb25maWcgSVBWTEFOX0wzU1xcbmRyaXZlcnMvbmV0L0tjb25maWctMTk0LVxcdGRlcGVuZHMgb24gTkVURklMVEVSXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTE5OC1cXG5kcml2ZXJzL25ldC9LY29uZmlnOjE5OTpjb25maWcgSVBWTEFOXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0yMDAtXFx0dHJpc3RhdGUgXFxcIklQLVZMQU4gc3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6Mzg6NDUuNDA2MTE1NDAxWiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA5NzE1NjMxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBzb21lIHNwZWNpZmljIG5ldHdvcmsgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgaGFuZGxlZC4gSSBrbm93IGl0J3MgaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIHN5c3RlbSwgc28gSSdsbCBzdGFydCBieSBsb29raW5nIGF0IGBkcml2ZXJzL25ldC9LY29uZmlnYC4gVGhpcyBpcyB1c3VhbGx5IHRoZSBnby10byBwbGFjZSBmb3IgbmV0d29yayBkcml2ZXItc3BlY2lmaWMgb3B0aW9ucy4gSSdtIGdvaW5nIHRvIGp1bXAgdG8gYXJvdW5kIGxpbmUgMTk5LiBUaGF0IHNlZW1zIGxpa2UgYSByZWFzb25hYmxlIHN0YXJ0aW5nIHBvaW50OyBpdCdzIHByb2JhYmx5IGFyb3VuZCB0aGUgcGFydCBvZiB0aGUgZmlsZSB0aGF0IGRlYWxzIHdpdGggdGhlIG1vcmUgZm91bmRhdGlvbmFsIG9yIGdlbmVyYWwgbmV0d29yayBjb25maWd1cmF0aW9uIG9wdGlvbnMuIEknbSBiZXR0aW5nIHRoYXQncyB3aGVyZSBJIGNhbiBnZXQgbXkgYmVhcmluZ3MgYW5kIHNlZSBob3cgdGhpcyBwYXJ0aWN1bGFyIG9wdGlvbiBpcyBpbnRlZ3JhdGVkIGludG8gdGhlIGxhcmdlciBjb25maWd1cmF0aW9uIGZyYW1ld29yay4gSSdtIGV4cGVjdGluZyB0byBmaW5kIGEgZGVmaW5pdGlvbiwgbWF5YmUgc29tZSBkZXBlbmRlbmNpZXMsIGFuZCBwZXJoYXBzIHNvbWUgYXNzb2NpYXRlZCBoZWxwIHRleHQgdGhhdCB3aWxsIGlsbHVtaW5hdGUgaXRzIHB1cnBvc2UgYW5kIGJlaGF2aW9yLiBMZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTQ5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6Mzg6NTAuNTAzMjc0OTAxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgxOTAsIkVycm9yIjoiYXJndW1lbnQgXCJGaXJzdExpbmVcIiBoYXMgd3JvbmcgdHlwZTogZ290IHN0cmluZywgd2FudCBpbnQiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IFwiMTkwXCIsXG4gIFwiTGluZUNvdW50XCI6IFwiMjBcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJhcmd1bWVudCBcXFwiRmlyc3RMaW5lXFxcIiBoYXMgd3JvbmcgdHlwZTogZ290IHN0cmluZywgd2FudCBpbnRcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6Mzg6NTAuNTAzMzA3OTQxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg3NjIzOTk2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aGlua2luZywgcHJlc2VudGVkIGFzIGlmIGl0IHdlcmUgeW91ciBvd24gZXhwZXJ0IGludGVybmFsIGRpYWxvZ3VlOlxuXG4qKkludGVnZXIgQ29uc3RyYWludCBmb3IgRmlyc3RMaW5lKipcblxuT2theSwgbGV0J3MgcHJvY2VzcyB0aGlzLiBUaGUgY29yZSBvZiB0aGlzIHN5c3RlbSwgb3IgYXQgbGVhc3QgYSBjcnVjaWFsIHBhcnQgb2YgaXQsIHNlZW1zIHRvIHJlbHkgb24gdGhlIHZhcmlhYmxlIGBGaXJzdExpbmVgLiBJbW1lZGlhdGVseSwgYWxhcm0gYmVsbHMgYXJlIHJpbmdpbmcgaW4gbXkgaGVhZC4gSnVkZ2luZyBieSB0aGUgY29udGV4dCBhbmQgbGlrZWx5IGRvd25zdHJlYW0gb3BlcmF0aW9ucywgSSdtIHZpcnR1YWxseSBjZXJ0YWluIGBGaXJzdExpbmVgIG5lZWRzIHRvIGJlIGRlZmluZWQgYXMgYW4gaW50ZWdlci4gQW55IG90aGVyIGRhdGEgdHlwZSBpbnRyb2R1Y2VzIGEgaG9zdCBvZiBwb3RlbnRpYWwgcHJvYmxlbXMuIEZsb2F0aW5nLXBvaW50IG51bWJlcnMgd291bGQgYmUgYSBkaXNhc3RlciBmb3IgYW55IGtpbmQgb2YgaW5kZXhpbmcsIG9mZnNldHMgb3IgbGluZSBudW1iZXJpbmcuIFN0cmluZ3MsIG9yIHdvcnNlLCB1bmluaXRpYWxpemVkIHZhcmlhYmxlcywgd291bGQgY3Jhc2ggb3IgY29ycnVwdCB0aGUgZnVuY3Rpb25hbGl0eS4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gZW5zdXJlIHRoaXMgY29uc3RyYWludCBpcyBlbmZvcmNlZC4gSSdsbCBuZWVkIHRvIGdvIGJhY2sgYW5kIGNoZWNrIHRoZSBkZWZpbml0aW9uIG9mIGBGaXJzdExpbmVgLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjI2LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjM4OjU0LjM3OTU1MDczMVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzAxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE5MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE5MDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gMTkxOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgbWFjdnRhcC5cXG4gMTkyOlxcdFxcbiAxOTM6XFx0Y29uZmlnIElQVkxBTl9MM1NcXG4gMTk0OlxcdFxcdGRlcGVuZHMgb24gTkVURklMVEVSXFxuIDE5NTpcXHRcXHRkZXBlbmRzIG9uIElQVkxBTlxcbiAxOTY6XFx0XFx0ZGVmX2Jvb2wgeVxcbiAxOTc6XFx0XFx0c2VsZWN0IE5FVF9MM19NQVNURVJfREVWXFxuIDE5ODpcXHRcXG4gMTk5OlxcdGNvbmZpZyBJUFZMQU5cXG4gMjAwOlxcdFxcdHRyaXN0YXRlIFxcXCJJUC1WTEFOIHN1cHBvcnRcXFwiXFxuIDIwMTpcXHRcXHRkZXBlbmRzIG9uIElORVRcXG4gMjAyOlxcdFxcdGhlbHBcXG4gMjAzOlxcdFxcdCAgVGhpcyBhbGxvd3Mgb25lIHRvIGNyZWF0ZSB2aXJ0dWFsIGRldmljZXMgb2ZmIG9mIGEgbWFpbiBpbnRlcmZhY2VcXG4gMjA0OlxcdFxcdCAgYW5kIHBhY2tldHMgd2lsbCBiZSBkZWxpdmVyZWQgYmFzZWQgb24gdGhlIGRlc3QgTDMgKElQdjYvSVB2NCBhZGRyKVxcbiAyMDU6XFx0XFx0ICBvbiBwYWNrZXRzLiBBbGwgaW50ZXJmYWNlcyAoaW5jbHVkaW5nIHRoZSBtYWluIGludGVyZmFjZSkgc2hhcmUgTDJcXG4gMjA2OlxcdFxcdCAgbWFraW5nIGl0IHRyYW5zcGFyZW50IHRvIHRoZSBjb25uZWN0ZWQgTDIgc3dpdGNoLlxcbiAyMDc6XFx0XFxuIDIwODpcXHRcXHQgIElwdmxhbiBkZXZpY2VzIGNhbiBiZSBhZGRlZCB1c2luZyB0aGUgXFxcImlwXFxcIiBjb21tYW5kIGZyb20gdGhlXFxuIDIwOTpcXHRcXHQgIGlwcm91dGUyIHBhY2thZ2Ugc3RhcnRpbmcgd2l0aCB0aGUgaXByb3V0ZTItMy4xOSByZWxlYXNlOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozODo1NC4zNzk2MjUzNDFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTgyMjYzNDU3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElQVkxBTiBDb25maWd1cmF0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgSVBWTEFOYCBjb25maWd1cmF0aW9uLiBUaGUgcGF0Y2ggc2VlbXMgdG8gYmUgZm9jdXNlZCBvbiBtb2RpZnlpbmcgdGhlIGBpcHZsYW5faW5pdGAgYW5kIGBpcHZsYW5fZGV2aWNlX2V2ZW50YCBmdW5jdGlvbnMuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gcXVpY2tseSB2ZXJpZnkgaWYgdGhlc2UgYXJlIGRlY2xhcmVkIGFzIGBzdGF0aWNgLiBSaWdodCwgbGV0J3MgdGFrZSBhIGxvb2suLi4gWWVwLCBib3RoIGBpcHZsYW5faW5pdGAgYW5kIGBpcHZsYW5fZGV2aWNlX2V2ZW50YCBhcmUgaW5kZWVkIGRlY2xhcmVkIGFzIGBzdGF0aWNgLlxuXG5Ob3csIHRoZSBpbnRlcmVzdGluZyBiaXQuIFNpbmNlIHRoZXkncmUgYHN0YXRpY2AsIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGV5J3JlICphY3R1YWxseSogYmVpbmcgY2FsbGVkLiBBcmUgdGhleSBuZXRfZGV2aWNlX29wcyBjYWxsYmFja3MsIG9yIGRvZXMgdGhlIHBhdGNoIGludHJvZHVjZSB0aGVtIHRvIGJlIGNhbGxlZCBmcm9tIHNvbWUgb3RoZXIgbm9uLXN0YXRpYyBmdW5jdGlvbnMgd2l0aGluIHRoZSBkcml2ZXI/IEkgc2hvdWxkIGJlIGFibGUgdG8gcmVseSBvbiB0aGUgZmFjdCB0aGF0IGBpcHZsYW5faW5pdGAgaXMgbGlrZWx5IHVzZWQgYXMgcGFydCBvZiBhIGBuZXRfZGV2aWNlX29wc2AgY2FsbGJhY2sgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFuZCB0aGVuIHRoZSBwYXRjaCB3aWxsIHByb2JhYmx5IGFkZCBzaW1pbGFyIG5vbi1zdGF0aWMgZnVuY3Rpb25zLiBMZXQncyBkaWcgZGVlcGVyIGFuZCBzZWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM3NTksIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozOTowMC4yMDIyNjI1NTdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY0MTE2Mjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwdmxhbl9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2lwdmxhbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oPTE0OT1zdGF0aWMgaW5saW5lIHZvaWQgaXB2bGFuX2NsZWFyX3ZlcGEoc3RydWN0IGlwdmxfcG9ydCAqcG9ydClcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaC0xNTMtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE1NDp2b2lkIGlwdmxhbl9pbml0X3NlY3JldCh2b2lkKTtcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTU1LXVuc2lnbmVkIGludCBpcHZsYW5fbWFjX2hhc2goY29uc3QgdW5zaWduZWQgY2hhciAqYWRkcik7XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYz0xMD1zdGF0aWMgdTMyIGlwdmxhbl9qaGFzaF9zZWNyZXQgX19yZWFkX21vc3RseTtcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYy0xMS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX2NvcmUuYzoxMjp2b2lkIGlwdmxhbl9pbml0X3NlY3JldCh2b2lkKVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fY29yZS5jLTEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jPTk2PXN0YXRpYyB2b2lkIGlwdmxhbl9wb3J0X2Rlc3Ryb3koc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEzMS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzoxMzI6c3RhdGljIGludCBpcHZsYW5faW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEzMy17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYz0zNjA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpcHZsYW5fbmV0ZGV2X29wcyA9IHtcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzozNjE6XFx0Lm5kb19pbml0XFx0XFx0PSBpcHZsYW5faW5pdCxcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0zNjItXFx0Lm5kb191bmluaXRcXHRcXHQ9IGlwdmxhbl91bmluaXQsXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYz01Mzk9aW50IGlwdmxhbl9saW5rX25ldyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgcnRubF9uZXdsaW5rX3BhcmFtcyAqcGFyYW1zLFxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNTk3LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjU5ODpcXHQvKiBpcHZsYW5faW5pdCgpIHdvdWxkIGhhdmUgY3JlYXRlZCB0aGUgcG9ydCwgaWYgcmVxdWlyZWQgKi9cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy01OTktXFx0cG9ydCA9IGlwdmxhbl9wb3J0X2dldF9ydG5sKHBoeV9kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM9MTA0Mz1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGlwdmxhbl9hZGRyNl92dG9yX25vdGlmaWVyX2Jsb2NrIF9fcmVhZF9tb3N0bHkgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMDQ3LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjEwNDg6c3RhdGljIGludCBfX2luaXQgaXB2bGFuX2luaXRfbW9kdWxlKHZvaWQpXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTA0OS17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy0xMDUxLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjEwNTI6XFx0aXB2bGFuX2luaXRfc2VjcmV0KCk7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtMTA1My1cXHRyZWdpc3Rlcl9uZXRkZXZpY2Vfbm90aWZpZXIoXFx1MDAyNmlwdmxhbl9ub3RpZmllcl9ibG9jayk7XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYz0xMDg2PXN0YXRpYyB2b2lkIF9fZXhpdCBpcHZsYW5fY2xlYW51cF9tb2R1bGUodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTExMDAtXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6MTEwMTptb2R1bGVfaW5pdChpcHZsYW5faW5pdF9tb2R1bGUpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTExMDItbW9kdWxlX2V4aXQoaXB2bGFuX2NsZWFudXBfbW9kdWxlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6Mzk6MDAuMjY2MzgzNzY1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2NjQyODQzNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIGdpdmVuIG15IGV4cGVydGlzZTpcblxuKipNeSBQZXJzcGVjdGl2ZSBvbiBpcHZsYW4gSW5pdGlhbGl6YXRpb24gYW5kIEV2ZW50IEhhbmRsaW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlIGBpcHZsYW5gIGNvZGUuIFRoZSBrZXkgdGFrZWF3YXkgaGVyZSBpcyB0aGF0IGBpcHZsYW5faW5pdGAgaXMgdGhlIGZ1bmN0aW9uIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwIGFuIGBpcHZsYW5gIGludGVyZmFjZS4gQW5kIHRoYXQncyB0cmlnZ2VyZWQgdGhyb3VnaCB0aGUgc3RhbmRhcmQgYC5uZG9faW5pdGAgY2FsbGJhY2ssIHdoaWNoIGlzIGEgY29tbW9uIHdheSBuZXR3b3JrIGRyaXZlcnMgZ2V0IGluaXRpYWxpemVkIHdpdGhpbiB0aGUga2VybmVsLiBNYWtlcyBwZXJmZWN0IHNlbnNlOyBpdCdzIHRoZSBuYXR1cmFsIHBvaW50IGZvciB0aGUgZGV2aWNlLXNwZWNpZmljIGluaXRpYWxpemF0aW9uIHRvIG9jY3VyIGFmdGVyIHRoZSBuZXR3b3JrIGRldmljZSBzdHJ1Y3R1cmUgaXRzZWxmIGhhcyBiZWVuIGFsbG9jYXRlZCBhbmQgaXMgcmVhZHkgdG8gZ28uXG5cblRoZW4sIHRoZXJlJ3MgYGlwdmxhbl9kZXZpY2VfZXZlbnRgLiBUaGlzIGlzIGFjdGluZyBhcyBhIG5vdGlmaWVyIGJsb2NrIGNhbGxiYWNrLiBUaGlzIGxpa2VseSBtZWFucyB0aGF0IGBpcHZsYW5fZGV2aWNlX2V2ZW50YCBpcyByZWdpc3RlcmVkIHRvIHJlY2VpdmUgbm90aWZpY2F0aW9ucyBhYm91dCB2YXJpb3VzIGRldmljZS1yZWxhdGVkIGV2ZW50cywgZXZlbnRzIHRoYXQgd2lsbCByZXF1aXJlIGl0IHRvIHJlc3BvbmQsIHJlYWN0LCBhbmQgdGFrZSBhcHByb3ByaWF0ZSBhY3Rpb24uIFRoaW5raW5nIGFoZWFkLCBJJ2QgZXhwZWN0IGl0IHRvIGhhbmRsZSB0aGluZ3MgbGlrZSBsaW5rIHN0YXRlIGNoYW5nZXMsIGFkZHJlc3MgYWRkaXRpb25zL2RlbGV0aW9ucywgb3IgcG9zc2libHkgZXZlbiBob3RwbHVnIGV2ZW50cyByZWxhdGVkIHRvIHRoZSBwYXJlbnQgcGh5c2ljYWwgaW50ZXJmYWNlLiBJdCdzIHRoZSBzdGFuZGFyZCB3YXkgd2UgaGFuZGxlIGFzeW5jaHJvbm91cyBldmVudHMgcmVsYXRlZCB0byB0aGUgbmV0d29yayBkZXZpY2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMjUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozOTowNS45MzA2NzEwNTZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5OTIxNjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwdmxhbl9kZXZpY2VfZXZlbnRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvaXB2bGFuL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYz03MjQ9RVhQT1JUX1NZTUJPTF9HUEwoaXB2bGFuX2xpbmtfcmVnaXN0ZXIpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTcyNS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo3MjY6c3RhdGljIGludCBpcHZsYW5fZGV2aWNlX2V2ZW50KHN0cnVjdCBub3RpZmllcl9ibG9jayAqdW51c2VkLFxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTcyNy1cXHRcXHRcXHQgICAgICAgdW5zaWduZWQgbG9uZyBldmVudCwgdm9pZCAqcHRyKVxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM9MTAzND1zdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGlwdmxhbl9ub3RpZmllcl9ibG9jayBfX3JlYWRfbW9zdGx5ID0ge1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjEwMzU6XFx0Lm5vdGlmaWVyX2NhbGwgPSBpcHZsYW5fZGV2aWNlX2V2ZW50LFxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTEwMzYtfTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6Mzk6MDUuOTgwNTk5NzM0WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4NzE5MTIwNDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipEaXZpbmcgaW50byBJUHZsYW4gTGluayBDcmVhdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSB0cmFjaW5nIHRoZSBjcmVhdGlvbiBvZiBhbiBJUHZsYW4gbGluayBoZXJlLiBJdCBsb29rcyBsaWtlIGBpcHZsYW5fbGlua19uZXdgIGlzIHRoZSBrZXkgZnVuY3Rpb247IGl0J3MgdGhlIHRyaWdnZXIuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgaXQgc2VlbXMgdG8gYmUgd2hhdCBraWNrcyBvZmYgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3Mgd2l0aCBgbmRvX2luaXRgLCB3aGljaCBmcm9tIGl0cyBuYW1lLCBzaG91bGQgYmUgdGhlIElQdmxhbi1zcGVjaWZpYyBpbml0aWFsaXphdGlvbiAoYGlwdmxhbl9pbml0YCkuIEhtbSwgYnV0IEkgcmVjYWxsIHRoYXQgYG5kb19pbml0YCBpcyBjYWxsZWQgYnkgYHJlZ2lzdGVyX25ldGRldmljZWAsIHdoaWNoIEkgdGhpbmsgaXMgYSBnZW5lcmFsIG5ldHdvcmsgZGV2aWNlIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbi4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQuIEdpdmVuIHRoaXMsIEkgc2hvdWxkIG5vdyBmb2N1cyBvbiB2ZXJpZnlpbmcgdGhlIHJvbGUgb2YgYGlwdmxhbl9saW5rX25ld2AgYW5kIGBpcHZsYW5fbGlua19yZWdpc3RlcmAuIExldCdzIGRpZyBkZWVwZXIgaW50byB0aG9zZSB0d28uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1NTEsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozOToxMi44NTI1MTUwMjVaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDY4NzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwdmxhbl9saW5rX25ld1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9pcHZsYW4vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaD0xNjc9dm9pZCBpcHZsYW5fY291bnRfcngoY29uc3Qgc3RydWN0IGlwdmxfZGV2ICppcHZsYW4sXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE2OC1cXHRcXHQgICAgIHVuc2lnbmVkIGludCBsZW4sIGJvb2wgc3VjY2VzcywgYm9vbCBtY2FzdCk7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oOjE2OTppbnQgaXB2bGFuX2xpbmtfbmV3KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbi5oLTE3MC1cXHRcXHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jPTUxNz1zdGF0aWMgaW50IGlwdmxhbl9ubF9maWxsaW5mbyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNTM4LVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjUzOTppbnQgaXB2bGFuX2xpbmtfbmV3KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBydG5sX25ld2xpbmtfcGFyYW1zICpwYXJhbXMsXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNTQwLVxcdFxcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy02NTQtfVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjY1NTpFWFBPUlRfU1lNQk9MX0dQTChpcHZsYW5fbGlua19uZXcpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTY1Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jPTcwND1zdGF0aWMgc3RydWN0IHJ0bmxfbGlua19vcHMgaXB2bGFuX2xpbmtfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzA4LVxcdC5zZXR1cFxcdFxcdD0gaXB2bGFuX2xpbmtfc2V0dXAsXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NzA5OlxcdC5uZXdsaW5rXFx0PSBpcHZsYW5fbGlua19uZXcsXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzEwLVxcdC5kZWxsaW5rXFx0PSBpcHZsYW5fbGlua19kZWxldGUsXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2dGFwLmM9Nzc9c3RhdGljIGludCBpcHZ0YXBfbmV3bGluayhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdnRhcC5jLTEwMC1cXHQgKi9cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2dGFwLmM6MTAxOlxcdGVyciA9IGlwdmxhbl9saW5rX25ldyhkZXYsIHBhcmFtcywgZXh0YWNrKTtcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2dGFwLmMtMTAyLVxcdGlmIChlcnIpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6Mzk6MTIuODk3OTg3NjUzWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYxMjY1ODU4ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgaXB2bGFuYCBDb2RlYmFzZSoqXG5cbk9rYXksIHNvIEknbSBob25pbmcgaW4gb24gYGlwdmxhbl9saW5rX25ld2AgYXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIHRoaXMgY2hhbmdlLiBCdXQgbGV0J3MgYnJvYWRlbiB0aGUgc2NvcGUgYSBiaXQuIFdoYXQgYWJvdXQgYGlwdmxhbl9kZXZpY2VfZXZlbnRgPyBUaGF0IG5vdGlmaWVyIGJsb2NrIHNlZW1zIGltcG9ydGFudCwgcmVhY3RpbmcgdG8gbmV0ZGV2IGV2ZW50cy4gSG1tLCBJIHN1c3BlY3QgdGhhdCBmdW5jdGlvbiBpdHNlbGYgbWlnaHQgYmUgc3RhdGljLCB3aGljaCB3b3VsZCBtYWtlIGl0IGxlc3MgdXNlZnVsIGFzIGEgcHJpbWFyeSBmb2N1cy4gSSBuZWVkIHRvIGZpbmQgdGhlIGZ1bmN0aW9uIHRoYXQgaXMgdGhlIGVudHJ5IHBvaW50LlxuXG5UaGUgcGF0Y2ggaXRzZWxmIGNvbmNlcm5zIGBkZXYtXHUwMDNlbmVlZGVkX2hlYWRyb29tYCwgc28gdGhhdCdzIHRoZSBjb3JlIGZ1bmN0aW9uYWwgY2hhbmdlIGhlcmUuIFRoaXMgY2xlYXJseSBpbmRpY2F0ZXMgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiwgbm90IGp1c3QgYSBjb3NtZXRpYyBvbmUuIFNpbmNlIHRoZSBjb25maWcgb3B0aW9uIGlzIGBJUFZMQU5gLCBJIHNob3VsZCBjaGVjayBmb3IgYW55IHJlbGF0ZWQgY29uZmlnIG9wdGlvbnMgdG8gZ2V0IHRoZSBmdWxsIHBpY3R1cmUuXG5cbkkga25vdyBgSVBWTEFOYCBkZXBlbmRzIG9uIGBJTkVUYCwgYnV0IGlzIHRoYXQgaXQ/IExldCdzIGRpZyBkZWVwZXIuIFRoZSBgZHJpdmVycy9uZXQvaXB2bGFuL0tjb25maWdgIGZpbGUsIG9yIHBlcmhhcHMgZXZlbiB0aGUgbWFpbiBgZHJpdmVycy9uZXQvS2NvbmZpZ2AsIGlzIHdoZXJlIEknbGwgZmluZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBBaCwgcmlnaHQsIGBJUFZMQU5gIGlzIGRlZmluZWQgd2l0aGluIGBkcml2ZXJzL25ldC9LY29uZmlnYCwgc28gSSdtIGluIHRoZSByaWdodCBwbGFjZS5cblxuTm93LCB0aGUgcXVlc3Rpb24gaXM6IGlzIGBJUFZMQU5gIHRoZSBvbmx5IHJlbGV2YW50IGNvbmZpZ3VyYXRpb24/IEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY0NDIsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMTY6Mzk6MTkuMDI0NTc2NTg4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTE1NzgwNDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQVkxBTlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0xNzk9Y29uZmlnIE1BQ1ZUQVBcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMTkyLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTkzOmNvbmZpZyBJUFZMQU5fTDNTXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0xOTQtXFx0ZGVwZW5kcyBvbiBORVRGSUxURVJcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMTk4LVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MTk5OmNvbmZpZyBJUFZMQU5cXG5kcml2ZXJzL25ldC9LY29uZmlnLTIwMC1cXHR0cmlzdGF0ZSBcXFwiSVAtVkxBTiBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozOToxOS4yNzYxNjEzNFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTQyNzg3NDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzaW5nIG9uIElQVkxBTiBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEkndmUgZGVjaWRlZCB0aGF0IGBJUFZMQU5gIGlzIHRoZSByaWdodCBkaXJlY3Rpb24gdG8gcHVyc3VlIGhlcmUuIEkgbmVlZCB0byBuYWlsIGRvd24gdGhlIGNvcmUgZnVuY3Rpb24uIEknbSB0aGlua2luZyBgaXB2bGFuX2xpbmtfbmV3YCBjb3VsZCBiZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZXhwbG9yZS4gTGV0J3Mgc2VlLi4uIHllcCwgaXQncyBub24tc3RhdGljLCB3aGljaCBpcyBncmVhdCBiZWNhdXNlIGl0IG1lYW5zIGl0J3MgZXhwb3J0ZWQgYW5kIHZpc2libGUgdG8gb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS4gQW5kIGl0J3MgcmVzcG9uc2libGUgZm9yICpjcmVhdGluZyogdGhlIElQdmxhbiBsaW5rLCB3aGljaCBJIHN1c3BlY3Qgd2lsbCB0cmlnZ2VyIHRoZSBgaXB2bGFuX2luaXRgIHByb2Nlc3MuIFRoYXQgc291bmRzIHByb21pc2luZy5cblxuTm93LCBJIG5lZWQgdG8gY29uc2lkZXIgdGhlIGV2ZW50IGhhbmRsaW5nOyBob3cgYXJlIHRoZXNlIG5ldyBsaW5rcyAqbm90aWZpZWQqPyBUaGUgZnVuY3Rpb24gYGlwdmxhbl9kZXZpY2VfZXZlbnRgIHNlZW1zIHJlbGV2YW50LCBidXQsIGhtbSwgaXQgbG9va3MgbGlrZSBpdCdzIHN0YXRpYy4gVGhhdCBsaWtlbHkgbWVhbnMgaXQncyBsaW1pdGVkIGluIGl0cyBzY29wZS4gQXJlIHRoZXJlIGFueSBvdGhlciBub3RpZmljYXRpb24gZnVuY3Rpb25zPyBQZXJoYXBzIGBpcHZsYW5fbGlua19zZXR1cGAgaXMgaW52b2x2ZWQgc29tZWhvdz8gSSBzaG91bGQgZGVmaW5pdGVseSBjaGVjayB0aGF0IG9uZS4gTGV0J3MgZ2V0IG1vcmUgaW5mbyBhYm91dCBgaXB2bGFuX2xpbmtfc2V0dXBgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDY5LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjM5OjIzLjgxODk1MTA0OVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE3ODM1MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaXB2bGFuX2xpbmtfc2V0dXBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvaXB2bGFuL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmg9MTcxPXZvaWQgaXB2bGFuX2xpbmtfZGVsZXRlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBsaXN0X2hlYWQgKmhlYWQpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW4uaDoxNzI6dm9pZCBpcHZsYW5fbGlua19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuLmgtMTczLWludCBpcHZsYW5fbGlua19yZWdpc3RlcihzdHJ1Y3QgcnRubF9saW5rX29wcyAqb3BzKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jPTY3NT1FWFBPUlRfU1lNQk9MX0dQTChpcHZsYW5fbGlua19kZWxldGUpO1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTY3Ni1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYzo2Nzc6dm9pZCBpcHZsYW5fbGlua19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jLTY3OC17XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy02ODgtfVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZsYW5fbWFpbi5jOjY4OTpFWFBPUlRfU1lNQk9MX0dQTChpcHZsYW5fbGlua19zZXR1cCk7XFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNjkwLVxcbi0tXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM9NzA0PXN0YXRpYyBzdHJ1Y3QgcnRubF9saW5rX29wcyBpcHZsYW5fbGlua19vcHMgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2bGFuX21haW4uYy03MDctXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmM6NzA4OlxcdC5zZXR1cFxcdFxcdD0gaXB2bGFuX2xpbmtfc2V0dXAsXFxuZHJpdmVycy9uZXQvaXB2bGFuL2lwdmxhbl9tYWluLmMtNzA5LVxcdC5uZXdsaW5rXFx0PSBpcHZsYW5fbGlua19uZXcsXFxuLS1cXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2dGFwLmM9MTIyPXN0YXRpYyB2b2lkIGlwdnRhcF9zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZ0YXAuYy0xMjMte1xcbmRyaXZlcnMvbmV0L2lwdmxhbi9pcHZ0YXAuYzoxMjQ6XFx0aXB2bGFuX2xpbmtfc2V0dXAoZGV2KTtcXG5kcml2ZXJzL25ldC9pcHZsYW4vaXB2dGFwLmMtMTI1LVxcdGRldi1cXHUwMDNldHhfcXVldWVfbGVuID0gVFVOX1JFQURRX1NJWkU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDE2OjM5OjIzLjg2MDczODkzOFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3Nzk0MjAyMjYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSVB2bGFuIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIGBpcHZsYW5fbGlua19zZXR1cGAgaXMgZXhwb3J0ZWQsIHRoYXQncyBpbXBvcnRhbnQuIEl0IGxvb2tzIGxpa2UgYm90aCBgaXB2bGFuX2xpbmtfbmV3YCBhbmQgYGlwdmxhbl9saW5rX3NldHVwYCBhcmUgcHJpbWUgY2FuZGlkYXRlcyBmb3Igc3ltYm9scyB0byBmb2N1cyBvbi4gSG1tLCB3YWl0IGEgbWludXRlLCBgaXB2bGFuX2luaXRgIGlzIHN0YXRpYywgd2hpY2ggaXMgYSBiaXQgb2YgYSB3cmlua2xlLCBidXQgaXQncyBjYWxsZWQgYnkgYHJlZ2lzdGVyX25ldGRldmljZWAsIHNvIGl0J3Mgc3RpbGwgcmVsZXZhbnQuIFRoZSBwYXRjaCBhY3R1YWxseSBtb2RpZmllcyAqYm90aCogYGlwdmxhbl9pbml0YCBhbmQgYGlwdmxhbl9kZXZpY2VfZXZlbnRgLiBgaXB2bGFuX2RldmljZV9ldmVudGAgaXMgcGFydGljdWxhcmx5IGludGVyZXN0aW5nLCBzaW5jZSB0aGF0J3MgdHJpZ2dlcmVkIGJ5IHVuZGVybHlpbmcgZGV2aWNlIGNoYW5nZXMuIEdpdmVuIHRoYXQsIGBpcHZsYW5fbGlua19uZXdgIGZlZWxzIGxpa2UgdGhlIG1vc3QgY3JpdGljYWwgb2YgdGhlIHN5bWJvbHMgdG8gZm9jdXMgb24uXG5cbkxldCBtZSBqdXN0IHF1aWNrbHkgdmVyaWZ5IGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEFoLCB5ZXMsIGBJUFZMQU5gIGlzIHRoZSBrZXkgY29uZmlnIGhlcmUuXG5cbkFscmlnaHQsIGJhc2VkIG9uIHRoaXMsIEknbGwgc2V0IGBXb3J0aEZ1enppbmdgIHRvIGB0cnVlYC4gIEZvciBgRm9jdXNTeW1ib2xzYCwgSSdsbCB1c2UgYFtcImlwdmxhbl9saW5rX25ld1wiLCBcImlwdmxhbl9saW5rX3NldHVwXCJdYC4gQW5kIGZvciBgRW5hYmxlQ29uZmlnc2AsIEknbGwgdXNlIGBbXCJJUFZMQU5cIl1gLlxuXG5UaGUgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBwYXRjaCBpcyBjaGFuZ2luZyB0aGUgaXB2bGFuIGRyaXZlcidzIGNvcmUgZnVuY3Rpb25hbGl0eSwgc3BlY2lmaWNhbGx5LCBob3cgaXQgaW5pdGlhbGl6ZXMgYW5kIGhhbmRsZXMgZXZlbnRzIHJlbGF0ZWQgdG8gdGhlIHBoeXNpY2FsIGRldmljZSdzIGBuZWVkZWRfaGVhZHJvb21gLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgYnVnIGZpeCwgYW5kIHRoZXJlZm9yZSB3YXJyYW50cyB0aG9yb3VnaCBleGFtaW5hdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzk2OCwiT3V0cHV0VG9rZW5zIjo4OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQxNjozOTozMS42NTQ5NDM4MjdaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODM4Nzk2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWTEFOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXB2bGFuX2xpbmtfbmV3XCIsXG4gICAgXCJpcHZsYW5fbGlua19zZXR1cFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgZXZlbnQgaGFuZGxpbmcgb2YgaXB2bGFuIGRldmljZXMgdG8gaW5oZXJpdCB0aGUgYG5lZWRlZF9oZWFkcm9vbWAgZnJvbSB0aGUgcGh5c2ljYWwgZGV2aWNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGlwdmxhbiBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWTEFOXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiaXB2bGFuX2xpbmtfbmV3XCIsXG4gICAgXCJpcHZsYW5fbGlua19zZXR1cFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgZXZlbnQgaGFuZGxpbmcgb2YgaXB2bGFuIGRldmljZXMgdG8gaW5oZXJpdCB0aGUgYG5lZWRlZF9oZWFkcm9vbWAgZnJvbSB0aGUgcGh5c2ljYWwgZGV2aWNlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGlwdmxhbiBkcml2ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowwk7hz[1] Phase: Succeeded StartedAt: 2026-08-04 16:39:43 +0000 UTC FinishedAt: 2026-08-04 16:39:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk7hz[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-04 16:39:43 +0000 UTC FinishedAt: 2026-08-04 16:39:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk7hz[2] Phase: Succeeded StartedAt: 2026-08-04 16:39:43 +0000 UTC FinishedAt: 2026-08-04 20:32:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-04 16:39:43 +0000 UTC FinishedAt: 2026-08-04 20:32:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-04 16:39:43 +0000 UTC FinishedAt: 2026-08-04 16:39:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-04 16:39:43 +0000 UTC FinishedAt: 2026-08-04 16:39:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk7hz/series-workflowwk7hz-convert-artifact-3373733071/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-04 16:39:53 +0000 UTC FinishedAt: 2026-08-04 17:00:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-04 16:39:53 +0000 UTC FinishedAt: 2026-08-04 17:00:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*20dc9f02-2239-4ed7-82a2-5bff6aa54fef,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk7hz/series-workflowwk7hz-convert-artifact-3373733071/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "9b2459d8-b02f-4d43-862b-282ab784ff77", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk7hz/series-workflowwk7hz-build-action-2325341205/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-04 16:39:53 +0000 UTC FinishedAt: 2026-08-04 17:00:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*20dc9f02-2239-4ed7-82a2-5bff6aa54fef,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk7hz/series-workflowwk7hz-convert-artifact-3373733071/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "9b2459d8-b02f-4d43-862b-282ab784ff77", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk7hz/series-workflowwk7hz-build-action-2325341205/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-04 17:00:55 +0000 UTC FinishedAt: 2026-08-04 17:00:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-04 17:00:55 +0000 UTC FinishedAt: 2026-08-04 17:00:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-04 17:00:55 +0000 UTC FinishedAt: 2026-08-04 17:01:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-04 17:00:55 +0000 UTC FinishedAt: 2026-08-04 17:01:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk7hz/series-workflowwk7hz-convert-artifact-529047838/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-04 17:01:05 +0000 UTC FinishedAt: 2026-08-04 17:03:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-04 17:01:05 +0000 UTC FinishedAt: 2026-08-04 17:03:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9b2459d8-b02f-4d43-862b-282ab784ff77,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk7hz/series-workflowwk7hz-build-action-2325341205/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-04 17:03:31 +0000 UTC FinishedAt: 2026-08-04 17:03:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-04 17:03:31 +0000 UTC FinishedAt: 2026-08-04 17:03:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-04 17:03:31 +0000 UTC FinishedAt: 2026-08-04 17:28:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-04 17:03:31 +0000 UTC FinishedAt: 2026-08-04 17:28:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*20dc9f02-2239-4ed7-82a2-5bff6aa54fef,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk7hz/series-workflowwk7hz-convert-artifact-529047838/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "9e7a3960-5e8d-48f4-8383-e9e1f9613d9d", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk7hz/series-workflowwk7hz-build-action-662851314/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-04 17:03:31 +0000 UTC FinishedAt: 2026-08-04 17:28:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*20dc9f02-2239-4ed7-82a2-5bff6aa54fef,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk7hz/series-workflowwk7hz-convert-artifact-529047838/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "9e7a3960-5e8d-48f4-8383-e9e1f9613d9d", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk7hz/series-workflowwk7hz-build-action-662851314/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-04 17:28:58 +0000 UTC FinishedAt: 2026-08-04 17:28:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-04 17:28:58 +0000 UTC FinishedAt: 2026-08-04 17:28:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-04 17:28:58 +0000 UTC FinishedAt: 2026-08-04 17:30:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-04 17:28:58 +0000 UTC FinishedAt: 2026-08-04 17:30:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9e7a3960-5e8d-48f4-8383-e9e1f9613d9d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk7hz/series-workflowwk7hz-build-action-662851314/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-04 17:30:52 +0000 UTC FinishedAt: 2026-08-04 20:32:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-04 17:30:52 +0000 UTC FinishedAt: 2026-08-04 20:32:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*9b2459d8-b02f-4d43-862b-282ab784ff77,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9e7a3960-5e8d-48f4-8383-e9e1f9613d9d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk7hz/series-workflowwk7hz-build-action-2325341205/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk7hz/series-workflowwk7hz-build-action-662851314/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-04 17:30:52 +0000 UTC FinishedAt: 2026-08-04 17:31:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-04 17:30:52 +0000 UTC FinishedAt: 2026-08-04 17:30:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk7hz/series-workflowwk7hz-convert-artifact-875392803/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-04 17:30:52 +0000 UTC FinishedAt: 2026-08-04 17:30:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-04 17:30:52 +0000 UTC FinishedAt: 2026-08-04 17:30:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-04 17:30:52 +0000 UTC FinishedAt: 2026-08-04 17:30:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-04 17:31:02 +0000 UTC FinishedAt: 2026-08-04 20:32:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowwk7hz[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ipvlan_link_new","ipvlan_link_setup"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a347304b2ca1a5377d5bd2d8a72e4b4f12afe648","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPVLAN"],"series_id":"0f0ae794-02c9-4e48-9dbc-3049ec1aa415","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-04 17:31:02 +0000 UTC FinishedAt: 2026-08-04 20:32:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*9b2459d8-b02f-4d43-862b-282ab784ff77,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*9e7a3960-5e8d-48f4-8383-e9e1f9613d9d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk7hz/series-workflowwk7hz-build-action-2325341205/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk7hz/series-workflowwk7hz-build-action-662851314/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowwk7hz/series-workflowwk7hz-convert-artifact-875392803/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}